import { useState, useEffect } from 'react'; import { Link, useSearchParams } from 'react-router-dom'; export default function Layout({ children, showFavorites = false }) { const [darkMode, setDarkMode] = useState(true); const [selectedDate, setSelectedDate] = useState(new Date().toISOString().split('T')[0]); const [favorites, setFavorites] = useState([]); const [showFavList, setShowFavList] = useState(false); const [searchParams] = useSearchParams(); const returnDate = searchParams.get('date'); const isCurrentDay = selectedDate === new Date().toISOString().split('T')[0]; useEffect(() => { setDarkMode(document.documentElement.classList.contains('dark')); }, []); useEffect(() => { if (darkMode) { document.documentElement.classList.add('dark'); } else { document.documentElement.classList.remove('dark'); } }, [darkMode]); useEffect(() => { fetch('/api/favorites') .then(res => res.json()) .then(data => setFavorites(data)) .catch(console.error); }, [showFavList]); function handleDateChange(e) { setSelectedDate(e.target.value); } function goToToday() { setSelectedDate(new Date().toISOString().split('T')[0]); } // Build query string for adding a favorite function buildFavoriteUrl(fav) { const params = new URLSearchParams(); params.set('name', fav.name); if (fav.description) params.set('description', fav.description); if (fav.calories) params.set('calories', fav.calories); if (fav.protein) params.set('protein', fav.protein); if (fav.carbs) params.set('carbs', fav.carbs); if (fav.fat) params.set('fat', fav.fat); if (fav.notes) params.set('notes', fav.notes); return '/add?' + params.toString(); } const bgMain = darkMode ? 'bg-gray-900' : 'bg-gray-100'; const bgCard = darkMode ? 'bg-gray-800' : 'bg-white'; const textMain = darkMode ? 'text-white' : 'text-gray-900'; const textMuted = darkMode ? 'text-gray-400' : 'text-gray-500'; const inputBg = darkMode ? 'bg-gray-700 border-gray-600 text-white' : 'bg-white border-gray-300 text-gray-900'; return (
{/* Persistent Header */}
🍽️ {!isCurrentDay && ( )}
{/* Favorites Dropdown */} {showFavList && (
Add from Favorites
{favorites.length === 0 ? (

No favorites yet

) : (
{favorites.map(fav => ( setShowFavList(false)} className={"block p-2 rounded hover:bg-gray-700 " + textMuted} > {fav.name} • {fav.calories} cal ))}
)}
)}
{children}
); }