import '../../variants.css'; import { createT, formatAmd, isLocale, LOCALES, type Locale } from '@barev/i18n'; import { notFound } from 'next/navigation'; import { BotLink, BotLinkProvider } from '../../../components/client'; import { VariantHeader, variantMetadata } 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 variantMetadata(params, '/land4', 'landing.v4.title'); } /** Текст табло: каждая буква — отдельная перекидная пластинка, при загрузке они один раз «перещёлкиваются» по очереди */ function Flaps({ text, start = 0 }: { text: string; start?: number }) { return ( {Array.from(text).map((ch, i) => ch === ' ' ? ( ) : ( {ch} ), )} ); } /** Версия 4 «Табло прилёта»: для тех, кто только прилетел. Услуги клуба — как рейсы на табло, CTA — посадочный талон */ export default async function Land4({ 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 rows = catalog.categories .filter((c) => c.code !== 'PERKS') .flatMap((c) => c.services) .sort((a, b) => Number(b.active) - Number(a.active)); return ( {t('landing.v4.title')} {t('landing.v4.sub')} {t('landing.v4.board')} {t('landing.v4.city')} EVN {t('landing.v4.colFlight')} {t('landing.v4.colService')} {t('landing.v4.colPrice')} {t('landing.v4.colStatus')} {rows.map((s, i) => ( BC {String(i + 1).padStart(3, '0')} {s.code === 'cleaning' && s.active ? ( ) : ( )} {s.active ? t('common.from', { price: amd(s.fromPrice) }) : '—'} {s.active ? t('landing.v4.live') : t('landing.v4.soon')} ))} {/* посадочный талон: корешок отрывается по пунктиру, кнопка — посадка в бота */} {t('landing.v4.passTitle')} {t('landing.v4.passenger')} {t('landing.v4.passengerValue')} {t('landing.v4.from')} {t('landing.v4.fromValue')} {t('landing.v4.to')} {t('landing.v4.toValue')} {t('landing.v4.gate')} {t('landing.v4.gateValue')} {t('landing.v4.cta')} {t('landing.v4.clean')} ); }
{t('landing.v4.sub')}