import type { IconSvgElement } from '@hugeicons/react' import { DashboardSquare01Icon, Location01Icon, Route01Icon, Car01Icon, Building02Icon, Package01Icon, CatalogueIcon, BarCode01Icon, Layers01Icon, Discount01Icon, DiscountTag01Icon, UserGroupIcon, Store01Icon, UserShield01Icon, ShieldUserIcon, LicenseDraftIcon, LicenseIcon, ShoppingCart01Icon, PackageReceiveIcon, TruckIcon, DeliveryBox01Icon, DeliveryTruck01Icon, DollarSquareIcon, ClipboardListIcon, BankIcon, PackageMoving01Icon, } from '@hugeicons/core-free-icons' export interface NavItem { title: string href: string icon: IconSvgElement description?: string permission?: string } export interface NavGroup { title: string icon: IconSvgElement items: NavItem[] } // Standalone item rendered at top — not inside any collapsible group export const DASHBOARD_ITEM: NavItem = { title: 'Dashboard', href: '/', icon: DashboardSquare01Icon, } export const NAV_GROUPS: NavGroup[] = [ { title: 'Operations', icon: TruckIcon, items: [ { title: 'Rides', href: '/operations/rides', icon: TruckIcon, description: 'Delivery/Sales runs assigned to a driver and vehicle', permission: 'rides.view' }, { title: 'Loading Sheets', href: '/operations/loading', icon: DeliveryBox01Icon, description: 'Track goods loaded onto a vehicle before dispatch', permission: 'loading.view' }, { title: 'Delivery Tasks', href: '/operations/deliveries', icon: DeliveryTruck01Icon, description: 'Individual store drop-offs within a ride', permission: 'rides.view' }, ], }, { title: 'Sales & Orders', icon: DollarSquareIcon, items: [ { title: 'Sales', href: '/sales', icon: DollarSquareIcon, description: 'Sales transactions recorded against stores', permission: 'orders.view' }, { title: 'Orders', href: '/sales/orders', icon: ClipboardListIcon, description: 'Fulfillment status of store orders', permission: 'orders.view' }, { title: 'Payments', href: '/sales/payments', icon: BankIcon, description: 'Cash and credit payments collected from stores', permission: 'orders.view' }, ], }, { title: 'Stores', icon: Store01Icon, items: [ { title: 'Stores', href: '/stores', icon: Store01Icon, description: 'Retail store accounts, credit limits, and KYC status', permission: 'stores.view' }, { title: 'Sales Visits', href: '/sales-visits', icon: Location01Icon, description: 'Check in and out of scheduled store visits', permission: 'sales_visits.checkin' }, ], }, { title: 'Catalogue', icon: CatalogueIcon, items: [ { title: 'Items', href: '/catalogue/items', icon: Package01Icon, description: 'Products available for sale and distribution', permission: 'items.view' }, { title: 'Categories', href: '/catalogue/categories', icon: CatalogueIcon, description: 'Product groupings and sub-categories', permission: 'categories.view' }, { title: 'Brands', href: '/catalogue/brands', icon: BarCode01Icon, description: 'Brands associated with catalogue items', permission: 'categories.view' }, { title: 'UOMs', href: '/catalogue/uoms', icon: Layers01Icon, description: 'Units of measure and conversion factors between units', permission: 'categories.view' }, ], }, { title: 'Stock', icon: PackageMoving01Icon, items: [ { title: 'Stock Balances', href: '/stock', icon: Package01Icon, description: 'Current quantity of each item across warehouses and vehicles', permission: 'warehouses.view' }, { title: 'Stock Movements', href: '/stock/movements', icon: PackageMoving01Icon, description: 'Full history of stock in and out across all locations', permission: 'warehouses.view' }, ], }, { title: 'Procurement', icon: ShoppingCart01Icon, items: [ { title: 'Purchase Orders', href: '/procurement/orders', icon: ShoppingCart01Icon, description: 'Orders placed with suppliers to restock inventory', permission: 'purchase_orders.view' }, { title: 'Goods Receipt', href: '/procurement/grn', icon: PackageReceiveIcon, description: 'Record stock received into a warehouse against a purchase order', permission: 'purchase_orders.view' }, ], }, { title: 'Pricing', icon: Discount01Icon, items: [ { title: 'Price Lists', href: '/pricing/price-lists', icon: Discount01Icon, description: 'Item prices scoped by region and active date range', permission: 'pricelists.view' }, { title: 'Schemes', href: '/pricing/schemes', icon: DiscountTag01Icon, description: 'Promotions, bundle deals, and slab discounts applied at sale', permission: 'schemes.view' }, ], }, { title: 'Suppliers', icon: UserGroupIcon, items: [ { title: 'Suppliers', href: '/suppliers', icon: UserGroupIcon, description: 'Supplier accounts used for raising purchase orders', permission: 'suppliers.view' }, ], }, { title: 'Drivers', icon: LicenseDraftIcon, items: [ { title: 'Driver Profiles', href: '/drivers', icon: LicenseDraftIcon, description: 'Driver records including license and medical clearance dates', permission: 'driver_profiles.view' }, { title: 'Compliance', href: '/drivers/compliance', icon: LicenseIcon, description: 'Rules that enforce license and medical clearance before a ride starts', permission: 'compliance.manage' }, ], }, { title: 'Users & Access', icon: UserShield01Icon, items: [ { title: 'Users', href: '/users', icon: UserShield01Icon, description: 'Staff accounts and their role assignments', permission: 'users.view' }, { title: 'Roles', href: '/users/roles', icon: ShieldUserIcon, description: 'Permission sets that control what each role can see and do', permission: 'roles.view' }, ], }, { title: 'Network', icon: Building02Icon, items: [ { title: 'Regions', href: '/network/regions', icon: Location01Icon, description: 'Geographic territories the distribution network operates in', permission: 'regions.view' }, { title: 'Routes', href: '/network/routes', icon: Route01Icon, description: 'Delivery paths within a region that rides are assigned to', permission: 'routes.view' }, { title: 'Vehicles', href: '/network/vehicles', icon: Car01Icon, description: 'Fleet vehicles available for delivery rides', permission: 'vehicles.view' }, { title: 'Warehouses', href: '/network/warehouses', icon: Building02Icon, description: 'Storage locations where stock is held and loaded from', permission: 'warehouses.view' }, ], }, ] // Ordered candidates for mobile bottom nav — first 5 visible are shown export const BOTTOM_NAV_CANDIDATES: NavItem[] = [ { title: 'Home', href: '/', icon: DashboardSquare01Icon }, { title: 'Stores', href: '/stores', icon: Store01Icon, permission: 'stores.view' }, { title: 'Rides', href: '/operations/rides', icon: TruckIcon, permission: 'rides.view' }, { title: 'Loading', href: '/operations/loading', icon: DeliveryBox01Icon, permission: 'loading.view' }, { title: 'Sales', href: '/sales', icon: DollarSquareIcon, permission: 'orders.view' }, { title: 'Items', href: '/catalogue/items', icon: Package01Icon, permission: 'items.view' }, ]