diff --git a/packages/admin/src/routes/_authenticated.tsx b/packages/admin/src/routes/_authenticated.tsx index 8f4f00d..20948a0 100644 --- a/packages/admin/src/routes/_authenticated.tsx +++ b/packages/admin/src/routes/_authenticated.tsx @@ -8,7 +8,7 @@ import { myPermissionsOptions } from '@/api/rbac' import { moduleListOptions } from '@/api/modules' import { Avatar } from '@/components/shared/avatar-upload' import { Button } from '@/components/ui/button' -import { Users, UserRound, HelpCircle, Shield, UserCog, LogOut, User, Wrench, Package, ClipboardList, FolderOpen, KeyRound, Settings } from 'lucide-react' +import { Users, UserRound, HelpCircle, Shield, UserCog, LogOut, User, Wrench, Package, ClipboardList, FolderOpen, KeyRound, Settings, PanelLeftClose, PanelLeft } from 'lucide-react' export const Route = createFileRoute('/_authenticated')({ beforeLoad: () => { @@ -60,23 +60,50 @@ function StoreLogo() { return {storeData?.name } - return

{storeData?.name ?? 'Forte'}

+ return

{storeData?.name ?? 'LunarFront'}

} -function NavLink({ to, icon, label }: { to: string; icon: React.ReactNode; label: string }) { +function NavLink({ to, icon, label, collapsed }: { to: string; icon: React.ReactNode; label: string; collapsed?: boolean }) { return ( {icon} - {label} + {!collapsed && label} ) } +function NavGroup({ label, children, collapsed }: { label: string; children: React.ReactNode; collapsed?: boolean }) { + const [open, setOpen] = useState(true) + + if (collapsed) return
{children}
+ return ( +
+ + {open &&
{children}
} +
+ ) +} + function AuthenticatedLayout() { const router = useRouter() const user = useAuthStore((s) => s.user) @@ -117,76 +144,92 @@ function AuthenticatedLayout() { const canViewRepairs = !permissionsLoaded || hasPermission('repairs.view') const canViewUsers = !permissionsLoaded || hasPermission('users.view') + const [collapsed, setCollapsed] = useState(false) + return (
-