import { createT, formatAmd, isLocale, LOCALES, type Locale } from '@barev/i18n'; import { CATEGORY_ICON, Flower, Icon, Logo, type CategoryCode } from '@barev/ui'; import { notFound } from 'next/navigation'; import { BotLink, BotLinkProvider, LangSwitch } from '../../../components/client'; import { getCatalog } from '../../../lib/data'; export const revalidate = 300; export const dynamicParams = false; export function generateStaticParams() { return LOCALES.map((locale) => ({ locale })); } /** Прежняя главная (до октября 2026) — сохранена для сравнения, в поиск не попадает */ export const metadata = { robots: { index: false, follow: true } }; const TONE: Record = { HOME: { bg: 'var(--bc-home)', ink: 'var(--bc-home-ink)' }, DOCS: { bg: 'var(--bc-docs)', ink: 'var(--bc-docs-ink)' }, LEARNING: { bg: 'var(--bc-learn)', ink: 'var(--bc-learn-ink)' }, PERKS: { bg: 'var(--bc-perks)', ink: 'var(--bc-perks-ink)' }, }; /** Прежняя главная: лендинг v2 · плотный (LND-1) */ export default async function Landing({ 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 cat = (code: CategoryCode) => catalog.categories.find((c) => c.code === code); const cleaningFrom = cat('HOME')?.services.find((s) => s.code === 'cleaning')?.fromPrice ?? 0; const maxDiscount = Math.max(0, ...catalog.categories.map((c) => c.barevPlusDiscountPct)); const discounts = catalog.categories.filter((c) => c.barevPlusDiscountPct > 0); const preview = [ { tone: 'var(--bc-blue)', ink: 'var(--bc-blue-ink)', title: t('landing.preview.cleaningRegular'), meta: t('landing.preview.cleaningRegularMeta'), badge: t('status.CLEANING.EN_ROUTE') }, { tone: 'var(--bc-home)', ink: 'var(--bc-home-ink)', title: t('landing.preview.cleaning'), meta: t('landing.preview.cleaningMeta'), badge: t('status.CLEANING.ASSIGNED') }, { tone: 'var(--bc-docs)', ink: 'var(--bc-docs-ink)', title: t('services.social_card.name'), meta: t('status.DOCUMENTS.DOCS_REVIEW'), badge: t('landing.preview.inWork') }, { tone: 'var(--bc-learn)', ink: 'var(--bc-learn-ink)', title: t('landing.preview.lesson'), meta: t('landing.preview.lessonMeta'), badge: t('landing.preview.today') }, ]; const faq = ['install', 'languages', 'plus', 'gift'] as const; const check = (color: string) => ; return (
{t('landing.openTelegram')}
{t('landing.hero.tag')}

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

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

{t('landing.hero.cta')} {t('landing.hero.services')}
{/* сейчас заказать можно уборку — короткий путь на форму /clean */} {t('landing.hero.cleanTitle', { price: amd(cleaningFrom) })} {t('landing.hero.cleanText')} {t('landing.hero.cleanCta')}
{t('landing.preview.title')}
{t('landing.preview.inApp')}
{preview.map((p) => (
{p.title}
{p.meta}
{p.badge}
))}
5
{t('landing.languages')} RU EN 中文 HY ES
{t('landing.noInstall')}
{t('landing.noInstallSub')}
{(['HOME', 'DOCS', 'LEARNING'] as const).map((code) => (

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

{(cat(code)?.services ?? []).map((s) => s.code === 'cleaning' && s.active ? ( {t(`services.${s.code}.name`)} {t('common.from', { price: amd(s.fromPrice) })} ) : (
{t(`services.${s.code}.name`)} {s.active ? t('common.from', { price: amd(s.fromPrice) }) : t('common.soon')}
), )}
{t(`landing.dir.${code}`)}
{code === 'HOME' ? ( {t('landing.hero.cleanCta')} → ) : ( {(cat(code)?.services ?? []).some((s) => s.active) ? t(`landing.dir.${code}_cta`) : t('landing.dir.soonCta')} → )}
))}

{t('categories.PERKS.name')}

{t('landing.perks.upTo', { pct: maxDiscount })}
{(['cafes', 'restaurants', 'gifts'] as const).map((k) => ( {t(`landing.perks.${k}`)} ))}
{t('landing.perks.text')}
{t('landing.perks.cta')} →

{t('landing.how.titleBold')} {t('landing.how.titleItalic')}

{[ { bg: 'var(--bc-pink)', ink: 'var(--bc-plum)' }, { bg: 'var(--bc-perks)', ink: 'var(--bc-plum)' }, { bg: 'var(--bc-home)', ink: 'var(--bc-home-ink)' }, { bg: 'var(--bc-blue)', ink: 'var(--bc-blue-ink)' }, ].map((c, i) => (
{i + 1}
{t(`landing.how.step${i + 1}`)}
{t(`landing.how.step${i + 1}_sub`)}
))}
{t('landing.agency.title')}
{t('landing.agency.text')}
{t('landing.agency.gift')}
{t('landing.agency.giftSub')}
Barev
{amd(0)}
{check('var(--bc-ok)')} {t('plans.free.perks')}
{check('var(--bc-ok)')} {t('plans.free.prices')}
{check('var(--bc-ok)')} {t('plans.free.status')}
{t('landing.hero.cta')}
Barev+
{t('plans.plus.price', { price: amd(catalog.barevPlus.monthlyPrice) })}
{check('var(--bc-accent)')} {t('plans.plus.all')}
{discounts.map((c) => (
{check('var(--bc-accent)')} {t('plans.plus.discount', { pct: c.barevPlusDiscountPct, category: t(`categories.${c.code}.name`) })}
))}
{t('landing.plans.tryPlus')}

{t('landing.nav.faq')}

{faq.map((k, i) => (
{t(`landing.faq.${k}.q`)}

{t(`landing.faq.${k}.a`, { pct: maxDiscount, days: catalog.barevPlus.giftDays })}

))}
); }