import { useQuery } from '@tanstack/react-query'; import { CATEGORY_ICON, Card, Chip, Icon, Spinner, type CategoryCode } from '@barev/ui'; import { navigate, useI18n, useTRPC } from '@barev/web'; import { LEVEL_NAME, LevelBadge, levelDiscount, OrderRow, toneClass, type Level } from '../lib.tsx'; /** Главная для тех, кто уже живёт в Армении: заказы, быстрые кнопки, направления со скидкой по уровню */ export function Home() { const { t, dt } = useI18n(); const trpc = useTRPC(); const me = useQuery(trpc.client.me.queryOptions()); const orders = useQuery({ ...trpc.client.orders.list.queryOptions(), refetchInterval: 20_000 }); const catalog = useQuery(trpc.client.catalog.queryOptions()); const level = (me.data?.membership.level ?? 'BAREV') as Level; const plus = level !== 'BAREV'; const lastDone = orders.data?.history.find((o) => o.status !== 'CANCELLED'); return (
{t('client.home.hello')}

{me.data?.firstName ?? t('client.home.guest')}

{plus && me.data?.membership.endsAt && (
{t('client.home.levelUntil', { plan: LEVEL_NAME[level], date: dt(me.data.membership.endsAt, { day: 'numeric', month: 'long' }) })}
)} {!plus && ( {t('client.home.upsellTitle', { pct: me.data?.plans.eliteMaxPct ?? 0 })} {t('client.home.upsellText')} )}

{t('client.home.myOrders')}

{t('client.home.allOrders')}
{orders.isPending ? ( ) : orders.data && orders.data.active.length > 0 ? (
{orders.data.active.slice(0, 4).map((o) => ( ))}
) : (

{t('client.home.noOrders')}

)}
navigate('/order/cleaning')}> {t('services.cleaning.name')} {lastDone && ( navigate(`/order/${lastDone.serviceCode}?repeat=${lastDone.id}`)}> {t('client.home.repeatLast')} )} {!me.data?.agencyName && ( navigate('/profile?code=1')}> {t('client.home.enterCode')} )}
{(catalog.data?.categories ?? []).map((c) => (
{t(`categories.${c.code}.name`)}
{levelDiscount(level, c) > 0 ? t('client.services.yourDiscount', { pct: levelDiscount(level, c) }) : t(`categories.${c.code}.short`)}
))}
); }