import { useMemo } from 'react'; import { useQuery } from '@tanstack/react-query'; import { useTranslation } from 'react-i18next'; import type { SalesStatsParams } from '../../api/adminSalesStats'; import { salesStatsApi } from '../../api/adminSalesStats'; import { SALES_STATS } from '../../constants/salesStats'; import { useCurrency } from '../../hooks/useCurrency'; import { StatCard } from '../stats'; import { DualAreaChart } from './DualAreaChart'; import { SimpleBarChart } from './SimpleBarChart'; interface AddonsTabProps { params: SalesStatsParams; } export function AddonsTab({ params }: AddonsTabProps) { const { t } = useTranslation(); const { formatWithCurrency } = useCurrency(); const { data, isLoading, isError } = useQuery({ queryKey: ['sales-stats', 'addons', params], queryFn: () => salesStatsApi.getAddons(params), staleTime: SALES_STATS.STALE_TIME, }); const dailyChartData = useMemo(() => { if (!data) return []; const trafficByDate = new Map(data.daily.map((d) => [d.date, d.count])); const deviceByDate = new Map(data.daily_devices.map((d) => [d.date, d.count])); const allDates = Array.from(new Set([...trafficByDate.keys(), ...deviceByDate.keys()])).sort(); return allDates.map((date) => ({ date, series1: trafficByDate.get(date) ?? 0, series2: deviceByDate.get(date) ?? 0, })); }, [data]); if (isLoading) { return (