'use client'; import Link from 'next/link'; import { usePathname } from 'next/navigation'; import { Icon } from '@/components/ui/Icon'; import type { IconName } from '@/components/ui/Icon'; import { Avatar } from '@/components/ui/Avatar'; import { useApi } from '@/lib/useApi'; interface NavItem { id: string; label: string; href: string; icon: IconName; section?: string; badge?: number; } const NAV: NavItem[] = [ { id: 'dashboard', label: 'Dashboard', href: '/dashboard', icon: 'dashboard' }, { id: 'cabinet', label: 'Cabinet', href: '/medicines/cabinet', icon: 'cabinet', section: 'Medicines', }, { id: 'schedule', label: 'Schedule & Log', href: '/medicines/schedule', icon: 'clock', section: 'Medicines', }, { id: 'regimens', label: 'Regimens', href: '/medicines/regimens', icon: 'list', section: 'Medicines', }, { id: 'organizer', label: 'Pill Organizer', href: '/medicines/organizer', icon: 'calendar', section: 'Medicines', }, { id: 'library', label: 'Library', href: '/medicines/library', icon: 'pill', section: 'Medicines', }, { id: 'refills', label: 'Shopping list', href: '/refills', icon: 'refresh', section: 'Medicines', }, { id: 'purchases', label: 'Purchases', href: '/purchases', icon: 'truck', section: 'Medicines' }, { id: 'prices', label: 'Prices', href: '/medicine-prices', icon: 'tag', section: 'Medicines' }, { id: 'stores', label: 'Stores', href: '/stores', icon: 'store', section: 'Medicines' }, { id: 'activity', label: 'Activity & Spend', href: '/medicines/activity', icon: 'trend', section: 'Medicines', }, { id: 'settings', label: 'Settings', href: '/settings', icon: 'settings' }, ]; function groupNav(items: NavItem[]): [string, NavItem[]][] { const map = new Map(); for (const item of items) { const key = item.section ?? '__root__'; if (!map.has(key)) map.set(key, []); map.get(key)!.push(item); } return Array.from(map.entries()); } export function Sidebar() { const pathname = usePathname(); const { profile } = useApi(); const displayName = profile?.displayName ?? 'User'; const groups = groupNav(NAV); return ( ); }