import { useGameStore } from '@/store'; import { formatMoney, formatNumber, formatPercent } from '@ai-tycoon/shared'; import { Share2, Copy, Check } from 'lucide-react'; import { useState } from 'react'; import { ACHIEVEMENT_DEFINITIONS } from '@ai-tycoon/game-engine'; export function CompanyStatsCard({ onClose }: { onClose: () => void }) { const [copied, setCopied] = useState(false); const companyName = useGameStore((s) => s.meta.companyName); const era = useGameStore((s) => s.meta.currentEra); const totalPlayTime = useGameStore((s) => s.meta.totalPlayTime); const money = useGameStore((s) => s.economy.money); const totalRevenue = useGameStore((s) => s.economy.totalRevenue); const valuation = useGameStore((s) => s.economy.funding.valuation); const subscribers = useGameStore((s) => s.market.consumerTiers.totalUsers); const models = useGameStore((s) => s.models.baseModels.length); const bestModel = useGameStore((s) => s.models.bestDeployedModelScore); const reputation = useGameStore((s) => s.reputation.score); const achievements = useGameStore((s) => s.achievements.unlocked.length); const dataCenters = useGameStore((s) => s.infrastructure.totalDataCenterCount); const totalRacks = useGameStore((s) => s.infrastructure.totalRackCount); const eraLabel = era === 'startup' ? 'Startup' : era === 'scaleup' ? 'Scale-up' : era === 'bigtech' ? 'Big Tech' : 'AGI'; const hours = Math.floor(totalPlayTime / 3600); const minutes = Math.floor((totalPlayTime % 3600) / 60); const statsText = [ `${companyName} — AI Tycoon`, `Era: ${eraLabel} | Playtime: ${hours}h ${minutes}m`, `Cash: ${formatMoney(money)} | Revenue: ${formatMoney(totalRevenue)}`, `Valuation: ${formatMoney(valuation)}`, `Subscribers: ${formatNumber(subscribers)} | Models: ${models}`, `Best Model: ${bestModel.toFixed(1)}/100 | Reputation: ${reputation}/100`, `Data Centers: ${dataCenters} | Racks: ${totalRacks} | Achievements: ${achievements}/${ACHIEVEMENT_DEFINITIONS.length}`, ].join('\n'); const handleCopy = () => { navigator.clipboard.writeText(statsText); setCopied(true); setTimeout(() => setCopied(false), 2000); }; return (