import React from 'react'; import { Outlet, Link, useLocation } from 'react-router-dom'; import { useAuth } from '../context/AuthContext'; import ThemeToggle from './ThemeToggle'; import { CommandPalette } from './ui/CommandPalette'; import { SessionTimeoutWarning } from './ui/SessionTimeoutWarning'; import { PageTitleUpdater } from '../hooks/usePageTitle'; import AnnouncementBanner from './AnnouncementBanner'; import { LayoutDashboard, CheckSquare, Home, Sprout, Clock, LogOut, Menu, X, User, ChevronDown, Package, CalendarDays, Shield, Settings, Fingerprint, BarChart3, Thermometer, DollarSign, Brain, Users } from 'lucide-react'; export default function Layout() { const { user, logout } = useAuth(); const location = useLocation(); const [mobileMenuOpen, setMobileMenuOpen] = React.useState(false); const [userMenuOpen, setUserMenuOpen] = React.useState(false); const navItems = [ { label: 'Dashboard', path: '/', icon: LayoutDashboard }, { label: 'Walkthrough', path: '/walkthrough', icon: CheckSquare }, { label: 'IPM', path: '/ipm', icon: Shield }, { label: 'Tasks', path: '/tasks', icon: CalendarDays }, { label: 'Reports', path: '/reports', icon: BarChart3 }, { label: 'Inventory', path: '/supplies', icon: Package }, // Secondary items available in sidebar/more menu { label: 'Time', path: '/timeclock', icon: Clock }, { label: 'Rooms', path: '/rooms', icon: Home }, { label: 'Batches', path: '/batches', icon: Sprout }, { label: 'Quick Actions', path: '/touch-points', icon: Fingerprint }, { label: 'Layout', path: '/layout-designer', icon: LayoutDashboard }, { label: 'Visitors', path: '/visitors', icon: Users }, { label: 'Environment', path: '/environment', icon: Thermometer }, { label: 'Financial', path: '/financial', icon: DollarSign }, { label: 'AI Insights', path: '/insights', icon: Brain }, { label: 'Roles', path: '/roles', icon: Shield }, { label: 'Settings', path: '/settings', icon: Settings }, ]; return (
{/* Skip to main content link (accessibility) */} Skip to main content {/* Mobile Top Bar */}
777 Wolfpack

777 WOLFPACK

{user?.name || user?.email}

{/* Mobile Menu Overlay */} {mobileMenuOpen && (
setMobileMenuOpen(false)}>

Navigation

{navItems.map((item) => { const Icon = item.icon; const isActive = location.pathname === item.path; return ( setMobileMenuOpen(false)} className={`flex items-center gap-2 p-2 rounded-lg text-sm ${isActive ? 'bg-emerald-50 text-emerald-700 dark:bg-emerald-900/20 dark:text-emerald-400 font-medium' : 'text-slate-600 dark:text-slate-300'}`} > {item.label} ); })}
)}
{/* Desktop Sidebar */}
777 Wolfpack

777 WOLFPACK

Grow Ops Manager

{navItems.map((item) => { const Icon = item.icon; const isActive = location.pathname === item.path; return ( {item.label} {isActive && (
)} ); })}
{/* User Menu (Desktop) */}
{/* Dropdown Menu */} {userMenuOpen && (
)}
{/* Main Content */}
{/* Mobile Bottom Navigation */}
{/* Visual Hint: Gradient Masks to indicate scrolling */}
{navItems.map((item) => { const Icon = item.icon; const isActive = location.pathname === item.path; return ( {item.label.replace('Walkthrough', 'Daily').replace('Quick Actions', 'Quick')} ); })}
{/* Command Palette */} {/* Session Timeout Warning */}
); }