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.
70 lines
2.4 KiB
TypeScript
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 },
|
|
],
|
|
},
|
|
]
|