/* @component-map * App — Main container, layout and header * JokeCard — Displays joke setup/punchline with reveal button * GroanMeter — Visual groan level indicator * BottomControls — Generate button and joke counter * FloatingEmoji — Animated emoji that floats up * @end-component-map */ import { JokeCard } from './components/JokeCard.jsx'; import { GroanMeter } from './components/GroanMeter.jsx'; import { BottomControls } from './components/BottomControls.jsx'; function App() { const [joke, setJoke] = useState(null); const [groanLevel, setGroanLevel] = useState(0); const [jokeCount, setJokeCount] = useState(0); const [generating, setGenerating] = useState(false); const [error, setError] = useState(false); const handleNewJoke = (newJoke) => { setJoke(newJoke); setGroanLevel(Math.min(10, Math.max(1, newJoke.groan_level || 5))); setJokeCount((c) => c + 1); setError(false); }; const handleError = () => { setJoke(null); setError(true); }; return (
AI-Powered

Dad Joke Generator

Freshly baked groaners, courtesy of artificial intelligence

); } ReactDOM.createRoot(document.getElementById("root")).render();