import type { ComponentType, SVGProps } from "react"; import { useTranslation } from "react-i18next"; import { Browser } from "@wailsio/runtime"; import { BookOpen, MessageSquareText, MessagesSquare } from "lucide-react"; import netbirdFull from "@/assets/logos/netbird-full.svg"; // Brand glyphs from simpleicons.org (lucide deprecated its brand icons). const GithubIcon = (props: SVGProps) => ( ); const SlackIcon = (props: SVGProps) => ( ); import { useSettings } from "@/contexts/SettingsContext.tsx"; import { useStatus } from "@/contexts/StatusContext.tsx"; import { UpdateVersionCard } from "@/modules/auto-update/UpdateVersionCard"; import { useAccentTrigger } from "@/modules/settings/SettingsAccent"; function openUrl(url: string) { Browser.OpenURL(url).catch(() => { window.open(url, "_blank"); }); } export function SettingsAbout() { const { t } = useTranslation(); const { status } = useStatus(); const { guiVersion } = useSettings(); const daemonVersion = status?.daemonVersion ?? "—"; const handleVersionClick = useAccentTrigger(); const COMMUNITY_LINKS: { label: string; url: string; Icon: ComponentType>; iconClassName?: string; }[] = [ { label: t("settings.about.community.github"), url: "https://github.com/netbirdio/netbird", Icon: GithubIcon, iconClassName: "h-3 w-3", }, { label: t("settings.about.community.slack"), url: "https://docs.netbird.io/slack-url", Icon: SlackIcon, iconClassName: "h-3 w-3", }, { label: t("settings.about.community.forum"), url: "https://forum.netbird.io", Icon: MessagesSquare, }, { label: t("settings.about.community.documentation"), url: "https://docs.netbird.io", Icon: BookOpen, }, { label: t("settings.about.community.feedback"), url: "https://forms.gle/TeLw2zrXEdw6RcQ36", Icon: MessageSquareText, }, ]; const LEGAL_LINKS: { label: string; url: string }[] = [ { label: t("settings.about.links.imprint"), url: "https://netbird.io/imprint" }, { label: t("settings.about.links.privacy"), url: "https://netbird.io/privacy" }, { label: t("settings.about.links.cla"), url: "https://netbird.io/cla" }, { label: t("settings.about.links.terms"), url: "https://netbird.io/terms" }, ]; return (
{t("common.netbird")}

{guiVersion === "development" ? ( {t("settings.about.guiName")}{" "} {t("settings.about.development")} ) : ( t("settings.about.gui", { version: guiVersion }) )}

{t("settings.about.copyright", { year: new Date().getFullYear() })}

{COMMUNITY_LINKS.map(({ label, url, Icon, iconClassName }) => ( ))}
{LEGAL_LINKS.map((link) => ( ))}
); }