import { useState, useEffect } from 'react'; import { Outlet, Link, useLocation } from 'react-router-dom'; import { LayoutDashboard, Users, BarChart3, ChevronLeft, ChevronRight, Package, Loader2, LogOut } from 'lucide-react'; import type { DateRange, OrderData } from '../types'; import { fetchData, logout } from '../dataService'; const Layout = () => { const location = useLocation(); const [isSidebarCollapsed, setIsSidebarCollapsed] = useState(() => { return localStorage.getItem('graph_sidebar_collapsed') === 'true'; }); const [dateRange, setDateRange] = useState(() => { const saved = localStorage.getItem('nexstar_date_range'); if (saved) { try { const parsed = JSON.parse(saved); return { start: new Date(parsed.start), end: new Date(parsed.end) }; } catch (e) { console.error(e); } } const end = new Date(); const start = new Date(); start.setMonth(start.getMonth() - 1); return { start, end }; }); const [ordersData, setOrdersData] = useState([]); const [isLoading, setIsLoading] = useState(true); const [refreshInterval, setRefreshInterval] = useState(() => { const saved = localStorage.getItem('nexstar_refresh_interval'); return saved ? Number(saved) : 0; }); const loadData = async (showLoading = false) => { if (showLoading) setIsLoading(true); const data = await fetchData(); setOrdersData(data); if (showLoading) setIsLoading(false); }; useEffect(() => { loadData(true); }, []); useEffect(() => { if (refreshInterval === 0) return; const intervalId = setInterval(() => { loadData(false); }, refreshInterval); return () => clearInterval(intervalId); }, [refreshInterval]); useEffect(() => { localStorage.setItem('nexstar_refresh_interval', refreshInterval.toString()); }, [refreshInterval]); useEffect(() => { localStorage.setItem('nexstar_date_range', JSON.stringify({ start: dateRange.start.toISOString(), end: dateRange.end.toISOString() })); }, [dateRange]); const toggleSidebar = () => { const newState = !isSidebarCollapsed; setIsSidebarCollapsed(newState); localStorage.setItem('graph_sidebar_collapsed', String(newState)); }; const navigation = [ { name: 'Dashboard', href: '/graph', icon: LayoutDashboard }, { name: 'Produtos', href: '/products', icon: Package }, { name: 'Clientes', href: '/clients', icon: Users }, ]; return (
{/* Sidebar */} {/* Main Content */}
{/* Header */}

Painel de AnĂ¡lise

{/* Content Area */}
{isLoading ? (
) : ( )}
); }; export default Layout;