diff --git a/web/src/routes/admin/route.tsx b/web/src/routes/admin/route.tsx index 2c7a889..c56f0ff 100644 --- a/web/src/routes/admin/route.tsx +++ b/web/src/routes/admin/route.tsx @@ -6,6 +6,7 @@ import { Package } from "@phosphor-icons/react/Package"; import { Receipt } from "@phosphor-icons/react/Receipt"; import { SignOut } from "@phosphor-icons/react/SignOut"; import { SquaresFour } from "@phosphor-icons/react/SquaresFour"; +import { User } from "@phosphor-icons/react/User"; import { UsersThree } from "@phosphor-icons/react/UsersThree"; import { meQuery } from "@/api/auth/me"; @@ -25,21 +26,23 @@ export const Route = createFileRoute("/admin")({ component: AdminLayout, }); -const NAV_ITEMS = [ - { label: "Overview", to: "/admin", icon: SquaresFour }, - { label: "Clients", to: "/admin/clients", icon: UsersThree, permission: Permission.ClientsView }, - { label: "Products", to: "/admin/products", icon: Package, permission: Permission.ProductsManage }, - { label: "Services", to: "/admin/services", icon: HardDrives, permission: Permission.ServicesManage }, - { label: "Invoices", to: "/admin/invoices", icon: Receipt, permission: Permission.InvoicesManage }, - { label: "Refunds", to: "/admin/refunds", icon: ArrowUUpLeft, permission: Permission.PaymentsRefund }, - { label: "Settings", to: "/admin/settings", icon: GearSix, permission: Permission.SettingsManage }, +const NAV_GROUPS = [ + [ + { label: "Overview", to: "/admin", icon: SquaresFour }, + { label: "Clients", to: "/admin/clients", icon: UsersThree, permission: Permission.ClientsView }, + { label: "Products", to: "/admin/products", icon: Package, permission: Permission.ProductsManage }, + { label: "Services", to: "/admin/services", icon: HardDrives, permission: Permission.ServicesManage }, + { label: "Invoices", to: "/admin/invoices", icon: Receipt, permission: Permission.InvoicesManage }, + { label: "Refunds", to: "/admin/refunds", icon: ArrowUUpLeft, permission: Permission.PaymentsRefund }, + { label: "Settings", to: "/admin/settings", icon: GearSix, permission: Permission.SettingsManage }, + ], + [{ label: "Client area", to: "/client", icon: User }], ] as const; function AdminLayout() { const { user } = Route.useRouteContext(); const name = [user.given_name, user.family_name].filter(Boolean).join(" "); const initials = (user.given_name.charAt(0) + user.family_name.charAt(0)).toUpperCase(); - const items = NAV_ITEMS.filter((item) => !("permission" in item) || user.permissions.includes(item.permission)); return (
{name}
{user.email}
@@ -77,23 +74,30 @@ function AdminLayout() {