import type { MessageDescriptor } from "@lingui/core"; import { msg } from "@lingui/core/macro"; import { useLingui } from "@lingui/react"; import { Trans } from "@lingui/react/macro"; import { BrainIcon, ChatCircleDotsIcon, GearSixIcon, KeyIcon, MagnifyingGlassIcon, ReadCvLogoIcon, ShieldCheckIcon, UserCircleIcon, WarningIcon, } from "@phosphor-icons/react"; import { Link } from "@tanstack/react-router"; import { AnimatePresence, m } from "motion/react"; import { Avatar, AvatarFallback, AvatarImage } from "@reactive-resume/ui/components/avatar"; import { BrandIcon } from "@reactive-resume/ui/components/brand-icon"; import { Kbd } from "@reactive-resume/ui/components/kbd"; import { Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarMenu, SidebarMenuButton, SidebarMenuItem, SidebarRail, SidebarSeparator, useSidebarState, } from "@reactive-resume/ui/components/sidebar"; import { getInitials } from "@reactive-resume/utils/string"; import { Copyright } from "@/components/ui/copyright"; import { useCommandPaletteStore } from "@/features/command-palette/store"; import { UserDropdownMenu } from "@/features/user/dropdown-menu"; type SidebarItem = { icon: React.ReactNode; label: MessageDescriptor; href: React.ComponentProps["to"]; }; const appSidebarItems = [ { icon: , label: msg`Resumes`, href: "/dashboard/resumes", }, { icon: , label: msg`Agents`, href: "/agent", }, ] as const satisfies SidebarItem[]; const settingsSidebarItems = [ { icon: , label: msg`Profile`, href: "/dashboard/settings/profile", }, { icon: , label: msg`Preferences`, href: "/dashboard/settings/preferences", }, { icon: , label: msg`Authentication`, href: "/dashboard/settings/authentication", }, { icon: , label: msg`API Keys`, href: "/dashboard/settings/api-keys", }, { icon: , label: msg`Integrations`, href: "/dashboard/settings/integrations", }, { icon: , label: msg`Danger Zone`, href: "/dashboard/settings/danger-zone", }, ] as const satisfies SidebarItem[]; type SidebarItemListProps = { items: readonly SidebarItem[]; }; function SidebarItemList({ items }: SidebarItemListProps) { const { i18n } = useLingui(); return ( {items.map((item) => ( {item.icon} {i18n.t(item.label)} } /> ))} ); } function SidebarSearchButton() { const { i18n } = useLingui(); const setOpen = useCommandPaletteStore((state) => state.setOpen); const label = i18n.t(msg`Search`); return ( setOpen(true)}> {label} ⌘K ); } export function DashboardSidebar() { const { i18n } = useLingui(); const { state } = useSidebarState(); return (

Reactive Resume

} />
App Settings {({ session }) => ( {getInitials(session.user.name)}

{session.user.name}

{session.user.email}

)}
{state === "expanded" && ( )}
); }