import { useState, useRef, useEffect } from 'react'; import { useAuth } from '../contexts/AuthContext.jsx'; import Avatar from './Avatar.jsx'; function useTheme() { const [dark, setDark] = useState(() => localStorage.getItem('rosterchirp-theme') === 'dark'); useEffect(() => { document.documentElement.setAttribute('data-theme', dark ? 'dark' : 'light'); localStorage.setItem('rosterchirp-theme', dark ? 'dark' : 'light'); }, [dark]); return [dark, setDark]; } export default function UserFooter({ onProfile, onHelp, onAbout, mobileCompact=false }) { const { user, logout } = useAuth(); const [showMenu, setShowMenu] = useState(false); const [dark, setDark] = useTheme(); const menuRef = useRef(null); const btnRef = useRef(null); useEffect(() => { if (!showMenu) return; const handler = (e) => { if (menuRef.current && !menuRef.current.contains(e.target) && btnRef.current && !btnRef.current.contains(e.target)) { setShowMenu(false); } }; document.addEventListener('mousedown', handler); return () => document.removeEventListener('mousedown', handler); }, [showMenu]); const handleLogout = async () => { await logout(); }; if (mobileCompact) return (