import { useEffect, useState } from 'react'; import { NavLink, Navigate, Outlet, useNavigate } from 'react-router-dom'; import { LogOut, Sun, Moon } from 'lucide-react'; import { cn } from '../lib/cn'; import { useAuth } from '../auth/context'; import { onAuthErrorAll, orderBookingClient } from '../api/clients'; import { APP_ID } from '../api/config'; import { SCREENS } from './tabs'; /** Auth-guarded shell: slim navy top bar + fixed bottom tab nav + routed . */ export function ConsoleLayout() { const { authed, logout } = useAuth(); const navigate = useNavigate(); const user = orderBookingClient.currentUser(); const [isDark, setIsDark] = useState(() => document.documentElement.classList.contains('dark')); useEffect(() => { const saved = localStorage.getItem('theme'); const prefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches; if (saved === 'dark' || (!saved && prefersDark)) { document.documentElement.classList.add('dark'); setIsDark(true); } else { document.documentElement.classList.remove('dark'); setIsDark(false); } }, []); const toggleTheme = () => { if (isDark) { document.documentElement.classList.remove('dark'); localStorage.setItem('theme', 'light'); setIsDark(false); } else { document.documentElement.classList.add('dark'); localStorage.setItem('theme', 'dark'); setIsDark(true); } }; // A 401 from any workflow client bounces back to login. useEffect(() => { onAuthErrorAll(() => { logout(); navigate('/login', { replace: true }); }); }, [logout, navigate]); if (!authed) return ; return (
Krishna Sales Sandbox {APP_ID}{user?.name ? ` ยท ${user.name}` : ''}
); }