You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
sims-hq/apps/hq-web/src/nav.ts

70 lines
2.4 KiB
TypeScript

import {
BarChart3, BellRing, Boxes, CalendarClock, Files, Filter, Gauge, LayoutDashboard, LayoutGrid,
KeyRound, ListChecks, MessageSquare, ScrollText, Settings as SettingsIcon, Table2, Upload, UserCog, Users, Wrench,
type LucideIcon,
} from 'lucide-react'
export interface NavItem {
to: string; label: string; icon: LucideIcon; ownerOnly?: boolean
/** Match this route exactly (for parents like /documents whose children have their own items). */
end?: boolean
}
export interface NavGroup { label: string; items: NavItem[] }
/**
* Grouped sidebar. Six intent-based groups (D30): Overview (Home hub + My Day),
* Work (daily queues), Clients & billing (the book), Catalog, Insight, Admin.
* "New document" is an action (Home card / Documents "+ New" / Ctrl-K), not a nav row.
*/
export const NAV_GROUPS: NavGroup[] = [
{
label: 'Overview',
items: [
{ to: '/home', label: 'Home', icon: LayoutGrid },
{ to: '/', label: 'Dashboard', icon: LayoutDashboard },
],
},
{
label: 'Work',
items: [
{ to: '/pipeline', label: 'Pipeline', icon: Filter },
{ to: '/reminders', label: 'Reminders', icon: BellRing },
{ to: '/tickets', label: 'Tickets', icon: Wrench },
{ to: '/projects', label: 'Onboarding', icon: ListChecks },
],
},
{
label: 'Clients & billing',
items: [
{ to: '/clients', label: 'Clients', icon: Users },
{ to: '/documents', label: 'Documents', icon: Files, end: true },
{ to: '/renewals', label: 'Renewals', icon: CalendarClock },
{ to: '/sms-balances', label: 'SMS credits', icon: MessageSquare },
],
},
{
label: 'Catalog',
items: [
{ to: '/modules', label: 'Modules', icon: Boxes },
{ to: '/module-data', label: 'Module data', icon: Table2 },
{ to: '/portals', label: 'Portals', icon: KeyRound },
],
},
{
label: 'Insight',
items: [
{ to: '/mis', label: 'MIS cockpit', icon: Gauge, ownerOnly: true },
{ to: '/reports', label: 'Reports', icon: BarChart3 },
],
},
{
label: 'Admin',
items: [
{ to: '/employees', label: 'Employees', icon: UserCog, ownerOnly: true },
{ to: '/import', label: 'APEX import', icon: Upload, ownerOnly: true },
{ to: '/audit', label: 'Audit log', icon: ScrollText, ownerOnly: true },
{ to: '/settings', label: 'Settings', icon: SettingsIcon },
],
},
]