'use client'; import Link from 'next/link'; import { usePathname } from 'next/navigation'; import { Anchor, LayoutDashboard, Menu, Search, Users } from 'lucide-react'; import { cn } from '@/lib/utils'; type TabSpec = { label: string; icon: typeof LayoutDashboard; segment: string; // route segment after /[portSlug]/ }; // Left-of-center: Dashboard, Clients. Right-of-center: Berths, More. // Search occupies the center slot. Documents demoted to the MoreSheet — // reps reach docs less often than berths during a walking inventory check, // and pinned-to-client documents are accessed via the client detail anyway. const TABS_LEFT: TabSpec[] = [ { label: 'Dashboard', icon: LayoutDashboard, segment: 'dashboard' }, { label: 'Clients', icon: Users, segment: 'clients' }, ]; const TABS_RIGHT: TabSpec[] = [ { label: 'Berths', icon: Anchor, segment: 'berths' }, ]; interface MobileBottomTabsProps { onMoreClick: () => void; onSearchClick: () => void; } export function MobileBottomTabs({ onMoreClick, onSearchClick }: MobileBottomTabsProps) { const pathname = usePathname(); const portSlug = pathname.split('/').filter(Boolean)[0] ?? 'port-nimara'; function isActive(segment: string): boolean { return pathname.startsWith(`/${portSlug}/${segment}`); } return ( ); } function NavTab({ tab, portSlug, active, }: { tab: TabSpec; portSlug: string; active: boolean; }) { const Icon = tab.icon; return ( {/* iOS-native active indicator: a 2px accent bar at the top of the active tab. Cleaner than a colored pill — relies on the icon + label color change (text-primary above) to do the primary signaling, with this bar adding just enough visual anchor to read as "selected". */} {tab.label} ); }