import { useState, useEffect } from 'react'; import { Cookie, Zap, TrendingUp, Award } from 'lucide-react'; interface Upgrade { id: string; name: string; cost: number; cps: number; // cookies per second owned: number; icon: string; } export function CookieClicker() { const [cookies, setCookies] = useState(0); const [totalCookies, setTotalCookies] = useState(0); const [cps, setCps] = useState(0); const [clickPower, setClickPower] = useState(1); const [upgrades, setUpgrades] = useState([ { id: 'cursor', name: 'Cursor', cost: 15, cps: 0.1, owned: 0, icon: '👆' }, { id: 'grandma', name: 'Grandma', cost: 100, cps: 1, owned: 0, icon: '👵' }, { id: 'farm', name: 'Cookie Farm', cost: 500, cps: 8, owned: 0, icon: '🌾' }, { id: 'factory', name: 'Factory', cost: 3000, cps: 47, owned: 0, icon: '🏭' }, { id: 'mine', name: 'Cookie Mine', cost: 10000, cps: 260, owned: 0, icon: '⛏️' }, { id: 'quantum', name: 'Quantum Oven', cost: 50000, cps: 1400, owned: 0, icon: '🔬' }, ]); // Auto-generate cookies useEffect(() => { if (cps > 0) { const interval = setInterval(() => { setCookies(prev => prev + cps / 10); setTotalCookies(prev => prev + cps / 10); }, 100); return () => clearInterval(interval); } }, [cps]); const handleClick = () => { setCookies(prev => prev + clickPower); setTotalCookies(prev => prev + clickPower); }; const buyUpgrade = (upgrade: Upgrade) => { if (cookies >= upgrade.cost) { setCookies(prev => prev - upgrade.cost); setUpgrades(prev => prev.map(u => { if (u.id === upgrade.id) { return { ...u, owned: u.owned + 1, cost: Math.floor(u.cost * 1.15) }; } return u; })); setCps(prev => prev + upgrade.cps); } }; const buyClickUpgrade = () => { const cost = clickPower * 10; if (cookies >= cost) { setCookies(prev => prev - cost); setClickPower(prev => prev + 1); } }; const formatNumber = (num: number) => { if (num >= 1000000) return `${(num / 1000000).toFixed(2)}M`; if (num >= 1000) return `${(num / 1000).toFixed(1)}K`; return Math.floor(num).toString(); }; const getMilestone = () => { if (totalCookies >= 1000000) return '🏆 Cookie Tycoon'; if (totalCookies >= 100000) return '⭐ Cookie Master'; if (totalCookies >= 10000) return '🎖️ Cookie Expert'; if (totalCookies >= 1000) return '🥈 Cookie Baker'; if (totalCookies >= 100) return '🥉 Cookie Novice'; return '🍪 Cookie Beginner'; }; return (
{/* Header Stats */}
{formatNumber(cookies)} cookies
{cps.toFixed(1)}/s
{getMilestone()}
Total: {formatNumber(totalCookies)} cookies baked
{/* Cookie Clicker Area */}
+{clickPower} per click
{/* Upgrades Shop */}

Cookie Producers

{upgrades.map(upgrade => { const canAfford = cookies >= upgrade.cost; return ( ); })}
); }