import { createFileRoute, Link, useNavigate } from "@tanstack/react-router" import { useTranslation } from "react-i18next" import { ArrowLeft, ChevronRight, Download, Globe, Key, LogOut, ShieldBan, Sparkles, User, } from "lucide-react" import { useAuth, useIsAdmin } from "@/components/auth-provider" export const Route = createFileRoute("/_app/settings/")({ component: SettingsPage, }) type SettingsItem = { label: string description?: string to: string icon: React.ReactNode } function SettingsPage() { const { t } = useTranslation() const { logout } = useAuth() const isAdmin = useIsAdmin() const navigate = useNavigate() const account: SettingsItem[] = [ { label: t("settings.editProfile"), description: t("settings.editProfileDesc"), to: "/settings/edit-profile", icon: , }, ] const data: SettingsItem[] = [ { label: t("settings.import"), description: t("settings.importDesc"), to: "/settings/import", icon: , }, { label: t("settings.yearWrapUp"), description: t("settings.yearWrapUpDesc"), to: "/settings/wrapup", icon: , }, ] const integrations: SettingsItem[] = [ { label: t("settings.webhookTokens"), description: t("settings.webhookTokensDesc"), to: "/settings/webhooks", icon: , }, ] const social: SettingsItem[] = [ { label: t("settings.blockedUsers"), description: isAdmin ? t("settings.blockedUsersDescAdmin") : t("settings.blockedUsersDesc"), to: "/settings/blocked", icon: , }, ] if (isAdmin) { social.push({ label: t("settings.blockedDomains"), description: t("settings.blockedDomainsDesc"), to: "/settings/blocked", icon: , }) } const handleLogout = () => { logout() navigate({ to: "/login" }) } return (

{t("settings.title")}

) } function SettingsGroup({ label, items, }: { label: string items: SettingsItem[] }) { return (

{label}

{items.map((item) => ( {item.icon}

{item.label}

{item.description && (

{item.description}

)}
))}
) }