import '../variants.css'; import '../home.css'; import { createT, formatAmd, isLocale, LOCALES, pickMessages, type Locale } from '@barev/i18n'; import type { Viewport } from 'next'; import { notFound } from 'next/navigation'; import { BotLink, BotLinkProvider } from '../../components/client'; import { AudienceSwitch, ClubPlans, HomeFooter, homeMetadata } from '../../components/home'; import { QuizButton, QuizProvider } from '../../components/quiz'; import { ClubJsonLd } from '../../components/seo'; import { VariantHeader } from '../../components/variant'; import { getCatalog } from '../../lib/data'; export const revalidate = 300; export const dynamicParams = false; export function generateStaticParams() { return LOCALES.map((locale) => ({ locale })); } export function generateMetadata({ params }: { params: Promise<{ locale: string }> }) { return homeMetadata(params, ''); } export const viewport: Viewport = { themeColor: '#4A1028' }; /** Шаги переезда: когда, что делаем и короткий факт (цена или срок) справа */ const STEPS = ['airport', 'flat', 'docs', 'permit', 'perks', 'chat'] as const; const WHEN: Record<(typeof STEPS)[number], string> = { airport: 'whenArrive', flat: 'whenFirst', docs: 'whenSettled', permit: 'whenLater', perks: 'whenDaily', chat: 'whenAnytime', }; /** Шаги таймлайна со своей страницей услуги — заголовок шага ведёт на неё */ const LINKS: Partial> = { airport: '/airport', docs: '/social-card', permit: '/residence-permit' }; /** * Главная «Переезжаю»: огромное «Barev», таймлайн от аэропорта до ВНЖ, тарифы клуба и квиз-подбор. * Версия для тех, кто уже живёт в Армении, — /live. */ export default async function Home({ params }: { params: Promise<{ locale: string }> }) { const { locale: raw } = await params; if (!isLocale(raw)) notFound(); const locale: Locale = raw; const t = createT(locale); const amd = (n: number) => formatAmd(locale, n); const catalog = await getCatalog(); const messages = pickMessages(locale, ['landing.quiz.', 'errors.']); const meta = (key: (typeof STEPS)[number]) => { switch (key) { case 'airport': return null; case 'flat': return null; case 'docs': return null; case 'permit': return null; case 'perks': // скидки партнёров ещё не запущены — вместо ссылки плашка «Скоро» в стиле «Подробнее» return ( {t('landing.home.perksSoon')} ); case 'chat': return {t('landing.home.chatCta')}; } }; return (

{t('landing.home.title')}

{t('landing.home.sub')}

{t('landing.home.cta')} {t('landing.home.ctaChat')}
    {STEPS.map((key) => { // квартиры (/apartments) пока есть только на русском const link = key === 'flat' ? (locale === 'ru' ? '/apartments' : undefined) : LINKS[key]; return (
  1. {t(`landing.home.${WHEN[key]}`)}

    {link ? {t(`landing.home.${key}Title`)} : t(`landing.home.${key}Title`)}

    {t(`landing.home.${key}Text`)}

    {meta(key)} {link && ( {t('landing.home.more')} → )}
  2. ); })}

{t('landing.home.finalTitle')}

{t('landing.home.finalText')}

{t('landing.home.cta')}
); }