import { useState } from 'react';
import { useGameState } from './hooks/useGameState';
import { ClickButton } from './components/ClickButton';
import { UpgradePanel } from './components/UpgradePanel';
import { StatsPanel } from './components/StatsPanel';
import { AchievementsPanel } from './components/AchievementsPanel';
import { formatNumber } from './utils/formatNumber';
export function App() {
const {
gameState,
floatingNumbers,
handleClick,
buyUpgrade,
getUpgradeCost,
resetGame
} = useGameState();
const [showResetConfirm, setShowResetConfirm] = useState(false);
const [activeTab, setActiveTab] = useState<'upgrades' | 'achievements'>('upgrades');
return (
{/* Animated background */}
{/* Main content */}
{/* Header */}
Generic Clicker 2.0
The ultimate clicking experience™
{/* Points display */}
{formatNumber(gameState.points)}
+{formatNumber(gameState.pointsPerSecond * gameState.multiplier)}/sec
{/* Reset button */}
{/* Game area */}
{/* Left panel - Stats */}
{/* Mobile tabs */}
{/* Center - Click button */}
{/* Right panel - Upgrades/Achievements */}
{/* Desktop: show both */}
{/* Mobile: tabbed */}
{activeTab === 'upgrades' ? (
) : (
)}
{/* Desktop achievements - below main area */}
{/* Footer */}
{/* Reset confirmation modal */}
{showResetConfirm && (
Reset Game?
This will delete all your progress. Are you sure?
)}
{/* Custom styles for floating animation */}
);
}