import React, { useState } from 'react'; import { Link, useLocation, useNavigate } from 'react-router-dom'; import { HomeIcon, MapIcon, WrenchScrewdriverIcon, BeakerIcon, CalendarDaysIcon, ClockIcon, CloudIcon, UserIcon, Cog6ToothIcon, ArrowRightOnRectangleIcon, Bars3Icon, XMarkIcon, BellIcon, } from '@heroicons/react/24/outline'; import { HomeIcon as HomeIconSolid, MapIcon as MapIconSolid, WrenchScrewdriverIcon as WrenchIconSolid, BeakerIcon as BeakerIconSolid, CalendarDaysIcon as CalendarIconSolid, ClockIcon as ClockIconSolid, CloudIcon as CloudIconSolid, } from '@heroicons/react/24/solid'; import { GrassIconOutline, GrassIconSolid } from '../Icons/GrassIcon'; import { useAuth } from '../../hooks/useAuth'; import LoadingSpinner from '../UI/LoadingSpinner'; const Layout = ({ children }) => { const [sidebarOpen, setSidebarOpen] = useState(false); const { user, logout, isAdmin } = useAuth(); const location = useLocation(); const navigate = useNavigate(); const navigation = [ { name: 'Dashboard', href: '/dashboard', icon: HomeIcon, iconSolid: HomeIconSolid, }, { name: 'Properties', href: '/properties', icon: MapIcon, iconSolid: MapIconSolid, }, { name: 'Equipment', href: '/equipment', icon: WrenchScrewdriverIcon, iconSolid: WrenchIconSolid, }, { name: 'Products', href: '/products', icon: BeakerIcon, iconSolid: BeakerIconSolid, }, { name: 'Applications', href: '/applications', icon: CalendarDaysIcon, iconSolid: CalendarIconSolid, }, { name: 'Watering', href: '/watering', icon: CloudIcon, iconSolid: CloudIconSolid, }, { name: 'Mowing', href: '/mowing', icon: GrassIconOutline, iconSolid: GrassIconSolid, }, { name: 'History', href: '/history', icon: ClockIcon, iconSolid: ClockIconSolid, }, { name: 'Weather', href: '/weather', icon: CloudIcon, iconSolid: CloudIconSolid, }, { name: 'Watering', href: '/watering', icon: CloudIcon, iconSolid: CloudIconSolid, }, ]; const adminNavigation = [ { name: 'Admin Dashboard', href: '/admin', icon: Cog6ToothIcon, }, { name: 'Manage Users', href: '/admin/users', icon: UserIcon, }, { name: 'Manage Products', href: '/admin/products', icon: BeakerIcon, }, { name: 'Manage Equipment', href: '/admin/equipment', icon: WrenchScrewdriverIcon, }, { name: 'Manage Properties', href: '/admin/properties', icon: MapIcon, }, ]; const handleLogout = () => { logout(); navigate('/login'); }; if (!user) { return (
); } return (
{/* Mobile sidebar */}
{sidebarOpen && ( <>
setSidebarOpen(false)} />

TurfTracker

{user.firstName?.[0]}{user.lastName?.[0]}

{user.firstName} {user.lastName}

{user.email}

setSidebarOpen(false)} > Profile
)}
{/* Desktop sidebar */}

TurfTracker

{user.firstName?.[0]}{user.lastName?.[0]}

{user.firstName} {user.lastName}

{user.email}

Profile
{/* Main content */}
{/* Top bar */}

TurfTracker

{user.firstName?.[0]}
{/* Page content */}
{children}
); }; export default Layout;