'use client'; import Link from 'next/link'; import { memo, useMemo } from 'react'; import { usePathname } from 'next/navigation'; import { LayoutDashboard, Users, Calendar, UserCog, FlaskConical, FileText, CreditCard, } from 'lucide-react'; import { useAuth } from '@/lib/hooks/useAuth'; import { canViewTab } from '@/shared/permissions'; const menu = [ { name: 'Today', path: '/today', icon: LayoutDashboard, read: 'TAB_TODAY_READ' as const }, { name: 'Staff', path: '/staff', icon: UserCog, read: 'TAB_STAFF_READ' as const }, { name: 'Patients', path: '/patients', icon: Users, read: 'TAB_PATIENTS_READ' as const }, { name: 'Appointment', path: '/appointments', icon: Calendar, read: 'TAB_APPOINTMENTS_READ' as const }, { name: 'Treatment', path: '/treatment', icon: FlaskConical, read: 'TAB_TREATMENT_READ' as const }, { name: 'Billing', path: '/billing', icon: CreditCard, read: 'TAB_BILLING_READ' as const }, { name: 'Reports', path: '/reports', icon: FileText, read: 'TAB_REPORTS_READ' as const }, ]; function Sidebar() { const pathname = usePathname(); const { currentOrganization } = useAuth(); const counterpartLabel = currentOrganization?.type === 'LAB' ? 'Clinics' : 'Labs'; const visibleMenu = useMemo( () => { const withCounterpartTab = [ menu[0], menu[1], { name: counterpartLabel, path: '/lab', icon: FlaskConical, read: 'TAB_LAB_READ' as const }, menu[2], menu[3], menu[4], menu[5], menu[6], ]; return withCounterpartTab.filter((item) => canViewTab(currentOrganization, item.read)); }, [counterpartLabel, currentOrganization], ); return ( ); } export default memo(Sidebar);