Этап 1b: сайт
- Страницы обоих брендов из блоков Payload (D-029): главная, цены, локации, поддержка, 4 юридические, 404 и 500. Коллекции pages (черновики и версии) и faq с местами показа, 12 типов блоков; поля sites — почта и Telegram поддержки, часы работы, SEO по умолчанию. - Карта и глобус рисуются на сервере (d3-geo), контуры во внешнем SVG через <use>; выбор локации синхронизирован между картой и сеткой. - Тексты сайта и юридические черновики на 5 языках: de, fr, es — перевод с глоссарием; seed создаёт страницы и FAQ, только если их нет, SEED_CONTENT=reset пересоздаёт. - SEO: title и описания, canonical, hreflang с x-default, sitemap.xml и robots.txt на каждый домен, картинки для соцсетей. - Статическая сборка и пересборка через revalidatePath из хуков Payload (D-030); /svc/internal/revalidate для проверки. - 404 — статичная страница со статусом 404 через proxy; на сайте только опубликованные страницы. - Производительность: Client Hints темы Payload только в админке, предзагрузка 2 файлов шрифтов вместо 6; Lighthouse mobile 97–99. - Контраст --ink-3 по WCAG AA, радиокнопки вместо div role=button. - Документация: итоги 1b, глоссарий de/fr/es, трактовки юридических черновиков подтверждены, переносимые вопросы — в этапах 3e–3h. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
515acfb69d
commit
20491d1ba4
134 files changed
+11232
-212
No files matched your search
@@ -0,0 +1,30 @@
|
||||
import type { CrossLinkBlock } from '@/payload-types'
|
||||
|
||||
import { type BlockContext, fill } from './context'
|
||||
|
||||
/** «Нужен адрес, закреплённый только за вами» (MassMain): ссылка на сайт другого бренда */
|
||||
export function CrossLink({ block, context }: { block: CrossLinkBlock; context: BlockContext }) {
|
||||
const href = context.otherBrand[block.target]
|
||||
return (
|
||||
<section className="pt-6">
|
||||
<div className="flex flex-wrap items-center justify-between gap-[18px] rounded-[22px] border border-border bg-surface-2 p-[clamp(20px,5vw,32px)]">
|
||||
<div>
|
||||
<h3 className="mb-2 text-[20px] font-semibold tracking-[-0.025em]">{block.title}</h3>
|
||||
{block.text && (
|
||||
<p className="max-w-[46em] text-[15px] leading-[1.55] font-light text-ink-2">
|
||||
{fill(context, block.text)}
|
||||
</p>
|
||||
)}
|
||||
</div>
|
||||
{href && (
|
||||
<a
|
||||
href={href}
|
||||
className="flex h-12 items-center justify-center rounded-xl border border-accent px-[22px] text-[15px] font-medium whitespace-nowrap text-accent hover:bg-accent-soft hover:text-accent"
|
||||
>
|
||||
{block.buttonLabel}
|
||||
</a>
|
||||
)}
|
||||
</div>
|
||||
</section>
|
||||
)
|
||||
}
|
||||
Reference in new issue
Block a user