// frontend/src/components/Layout/Layout.tsx import React, { useEffect, useState } from 'react'; import { Outlet } from 'react-router-dom'; import { getToken } from '../../services/api'; import ThemeButton from "../UI/ThemeButton"; import Navbar from './Navbar'; interface LayoutProps { darkMode: boolean; setDarkMode: (value: boolean) => void; } export interface OutletContextType { setNavTitle: React.Dispatch>; setNavSubtitle: React.Dispatch>; isAdmin: boolean; showSettings: boolean; setShowSettings: React.Dispatch>; } export default function Layout({ darkMode, setDarkMode }: LayoutProps) { const [isAdmin, setIsAdmin] = useState(!!getToken()); const [navTitle, setNavTitle] = useState(''); const [navSubtitle, setNavSubtitle] = useState(''); const [showSettings, setShowSettings] = useState(false); useEffect(() => { if (navTitle) { document.title = `${navTitle} | VolleyManager`; } else { document.title = 'VolleyManager'; } }, [navTitle]); const handleLogout = () => { localStorage.removeItem('volleyToken'); window.location.reload(); }; const contextValue: OutletContextType = { setNavTitle, setNavSubtitle, isAdmin, showSettings, setShowSettings }; return (
); }