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 { TREND_STYLES } from '../stats/constants'; import { SimpleAreaChart } from './SimpleAreaChart'; interface RenewalsTabProps { params: SalesStatsParams; } export function RenewalsTab({ params }: RenewalsTabProps) { const { t } = useTranslation(); const { formatWithCurrency } = useCurrency(); const { data, isLoading, isError } = useQuery({ queryKey: ['sales-stats', 'renewals', params], queryFn: () => salesStatsApi.getRenewals(params), staleTime: SALES_STATS.STALE_TIME, }); if (isLoading) { return (
{Array.from({ length: 3 }, (_, i) => (
))}
); } if (isError || !data) { return
{t('admin.salesStats.loadError')}
; } const dailyData = data.daily.map((item) => ({ date: item.date, value: item.count, })); const trendStyle = TREND_STYLES[data.change.trend] ?? TREND_STYLES.stable; return (

{t('admin.salesStats.renewals.comparison')}

{t('admin.salesStats.renewals.currentPeriod')}
{data.current_period.count} {trendStyle.arrow} {Math.abs(data.change.percent)}%
{t('admin.salesStats.renewals.previousPeriod')}
{data.previous_period.count}
); }