import { createFileRoute } from '@tanstack/react-router' import { useQuery } from '@tanstack/react-query' import { useTranslation } from 'react-i18next' import { useRequireAuth } from '@/features/auth/guards' import { ActivationGate } from '@/features/activation/ActivationGate' import { ConfigCard } from '@/features/configs/ConfigCard' import { CreateConfigDialog } from '@/features/configs/CreateConfigDialog' import { SubscriptionCard } from '@/features/configs/SubscriptionCard' import { getMyConfigs, listAvailableInbounds } from '@/features/configs/api' export const Route = createFileRoute('/dashboard')({ component: DashboardPage }) function DashboardPage() { const { isReady } = useRequireAuth() if (!isReady) return null return ( ) } function ConfigsList() { const { t } = useTranslation() const { data, isLoading } = useQuery({ queryKey: ['my-configs'], queryFn: getMyConfigs }) const inboundsQuery = useQuery({ queryKey: ['available-inbounds'], queryFn: listAvailableInbounds }) return (

{t('configs.title')}

{data && (

{data.maxConfigs < 0 ? t('configs.quotaUnlimited', { used: data.configs.length }) : t('configs.quota', { used: data.configs.length, max: data.maxConfigs })}

)}
{inboundsQuery.data?.length === 0 ? (

{t('configs.noInboundsNotice')}

) : ( inboundsQuery.data && )}
{!isLoading && data && data.configs.length > 0 && } {isLoading &&

} {!isLoading && data && data.configs.length === 0 && (

{t('configs.empty')}

)}
{data?.configs.map((config) => )}
) }