import { useNavigate, useSearch } from '@tanstack/react-router' import { useTranslation } from 'react-i18next' import { Skeleton } from '@/components/ui/skeleton' import { PublicLayout } from '@/components/layout' import { PageTransition } from '@/components/page-transition' import { MarketShareSection, ModelsSection, PulseSection, RankingsHero, } from './components' import { useRankings } from './hooks/use-rankings' import type { RankingPeriod } from './types' const VALID_PERIODS: RankingPeriod[] = ['today', 'week', 'month', 'year', 'all'] export function Rankings() { const { t } = useTranslation() const search = useSearch({ from: '/rankings/' }) const navigate = useNavigate() const period: RankingPeriod = VALID_PERIODS.includes( search.period as RankingPeriod ) ? (search.period as RankingPeriod) : 'week' const rankingsQuery = useRankings(period) const snapshot = rankingsQuery.data?.data const handlePeriodChange = (next: RankingPeriod) => { navigate({ to: '/rankings', search: (prev) => ({ ...prev, period: next }), }) } return (
{rankingsQuery.isLoading ? ( ) : !snapshot ? ( ) : ( <> )}
) } function RankingsLoading() { return (
) } function RankingsError(props: { message: string }) { const { t } = useTranslation() return (

{t('Unable to load rankings')}

{props.message}

) }