/* @component-map * App — Main container, handles tab navigation and toast notifications * SignupBoard — Shows dish cards for claiming, attendee count * LineupView — Full lineup with stats and category grouping * AddDishForm — Form to add new dishes with photo upload * ClaimModal — Modal for claiming/unclaiming dishes * NotificationPanel — Notification bell and dropdown panel * @end-component-map */ import { SignupBoard } from './components/SignupBoard.jsx'; import { LineupView } from './components/LineupView.jsx'; import { AddDishForm } from './components/AddDishForm.jsx'; import { useCallback, useState } from 'react'; import { NotificationPanel } from './components/NotificationPanel.jsx'; function App() { const [activeTab, setActiveTab] = useState('signup'); const [toast, setToast] = useState(null); const showToast = useCallback((message) => { setToast(message); setTimeout(() => setToast(null), 3000); }, []); const switchTab = useCallback((tab) => { setActiveTab(tab); }, []); return (
🏈

Game Day Potluck

Bring your A-game & your best dish!

{activeTab === 'signup' && } {activeTab === 'lineup' && } {activeTab === 'add' && } {toast &&
{toast}
}
); } ReactDOM.createRoot(document.getElementById("root")).render();