import { useTranslation } from 'react-i18next'; import { Link } from 'react-router'; import { useCurrency } from '../../hooks/useCurrency'; import { useTheme } from '../../hooks/useTheme'; import { getGlassColors } from '../../utils/glassTheme'; interface StatsGridProps { balanceRubles: number; referralCount: number; earningsRubles: number; refLoading: boolean; } const ChevronIcon = ({ color }: { color: string }) => ( ); export default function StatsGrid({ balanceRubles, referralCount, earningsRubles, refLoading, }: StatsGridProps) { const { t } = useTranslation(); const { formatAmount, currencySymbol } = useCurrency(); const { isDark } = useTheme(); const g = getGlassColors(isDark); const accentColor = 'rgb(var(--color-accent-400))'; const accentBg = 'rgba(var(--color-accent-400), 0.07)'; const cards = [ { label: t('dashboard.stats.balance'), value: `${formatAmount(balanceRubles)} ${currencySymbol}`, valueColor: accentColor, to: '/balance', icon: (color: string) => ( ), iconBg: accentBg, iconColor: accentColor, loading: false, onboarding: 'balance', }, { label: t('dashboard.stats.referrals'), value: `${referralCount}`, valueColor: g.text, subtitle: `+${formatAmount(earningsRubles)} ${currencySymbol}`, subtitleColor: accentColor, to: '/referral', icon: (color: string) => ( ), iconBg: g.trackBg, iconColor: g.textSecondary, loading: refLoading, }, ]; return (
{cards.map((card, i) => ( {/* Top row: icon + label + arrow */}
{card.icon(card.iconColor)}
{card.label}
{/* Value */} {card.loading ? (
) : ( <>
{card.value}
{card.subtitle && (
{card.subtitle}
)} )} ))}
); }