import { useQuery } from '@tanstack/react-query'; import { CATEGORY_ICON, Center, Icon, Spinner, type CategoryCode } from '@barev/ui'; import { useI18n, useLocation, useTRPC } from '@barev/web'; import { useEffect } from 'react'; import { levelDiscount, toneClass, type Level } from '../lib.tsx'; /** Каталог: направления со скидкой по уровню клиента; услуги без онлайн-записи — заявка «перезвоните» */ export function Services() { const { t, amd } = useI18n(); const trpc = useTRPC(); const { query } = useLocation(); const focus = query.get('c'); const catalog = useQuery(trpc.client.catalog.queryOptions()); useEffect(() => { if (focus && catalog.data) document.getElementById(`cat-${focus}`)?.scrollIntoView({ behavior: 'smooth', block: 'start' }); }, [focus, catalog.data]); if (!catalog.data) return (
); const level = catalog.data.level as Level; return (

{t('client.services.title')}

{catalog.data.categories .filter((c) => c.code !== 'PERKS') .map((c) => (

{t(`categories.${c.code}.name`)}

{c.services.map((s) => s.active ? ( {t(`services.${s.code}.name`)} {t('common.from', { price: amd(s.fromPrice) })} ) : ( {t(`services.${s.code}.name`)} {t('client.services.callback')} ), )}
{levelDiscount(level, c) > 0 ? (
{t('client.services.yourDiscount', { pct: levelDiscount(level, c) })}
) : ( c.eliteDiscountPct > 0 && ( {t('client.services.withElite', { pct: c.eliteDiscountPct })} ) )}
))}
); }