TenantAtlas/apps/website/src/components/pages/PlatformPage.astro
ahmido c261b1c632 feat(website): tighten homepage messaging and trust flow (#398)
## Summary
- tighten homepage messaging, hero support copy, trust teaser flow, and CTA routing for the website public-content rollout
- align shared website copy, smoke expectations, and spec 404 artifacts with the latest messaging pass
- replace the previously closed PR for `404-public-content-messaging`

## Commits
- `44d27395` feat(website): tighten homepage messaging and trust flow
- `1ddbd28b` feat(website): refine public content messaging rollout

## Validation
- `git diff --check`

## Notes
- local Playwright MCP output remains untracked and was not included

Co-authored-by: Ahmed Darrazi <ahmed.darrazi@live.de>
Reviewed-on: #398
2026-05-25 20:35:33 +00:00

125 lines
3.6 KiB
Plaintext

---
import MainLayout from '@/layouts/MainLayout.astro';
import MainSection from '@components/ui/blocks/MainSection.astro';
import LeftSection from '@components/ui/blocks/LeftSection.astro';
import RightSection from '@components/ui/blocks/RightSection.astro';
import FeaturesStats from '@components/sections/features/FeaturesStats.astro';
import dashboard from '@images/tenantial-dashboard.avif';
import evidenceImage from '@images/tenantial-evidence-panel.avif';
import reviewImage from '@images/tenantial-drift-workflow.avif';
import restoreImage from '@images/tenantial-rollout-plan.avif';
import { SITE } from '@data/constants';
import { siteCopy } from '@data/site-copy';
import {
localeHtmlLang,
localizeHref,
localizedPath,
type Locale,
} from '@/i18n';
const { locale } = Astro.props;
interface Props {
locale: Locale;
}
const copy = siteCopy[locale].platform;
const siteDescription = siteCopy[locale].site.description;
const canonicalPath = localizedPath('/platform', locale);
---
<MainLayout
lang={locale}
title={copy.pageTitle}
customDescription={copy.metaDescription}
customOgTitle={copy.pageTitle}
structuredData={{
'@context': 'https://schema.org',
'@type': 'WebPage',
'@id': `${SITE.url}${canonicalPath}`,
url: `${SITE.url}${canonicalPath}`,
name: copy.pageTitle,
description: copy.metaDescription,
isPartOf: {
'@type': 'WebSite',
url: SITE.url,
name: SITE.title,
description: siteDescription,
},
inLanguage: localeHtmlLang[locale],
}}
>
<MainSection
title={copy.heading}
subTitle={copy.subtitle}
btnExists={true}
btnTitle={siteCopy[locale].auth.walkthrough}
btnURL={localizeHref('/contact', locale)}
/>
<section class="mx-auto max-w-[85rem] px-4 py-4 sm:px-6 lg:px-8 lg:py-8 2xl:max-w-full">
<div class="max-w-(--breakpoint-md)">
<h2 class="text-2xl font-bold text-balance text-neutral-800 md:text-3xl dark:text-neutral-200">
{copy.focusTitle}
</h2>
<p class="mt-3 max-w-prose text-pretty text-neutral-600 md:text-lg dark:text-neutral-400">
{copy.focusSubtitle}
</p>
</div>
<div class="mt-8 grid gap-6 md:grid-cols-2">
{
copy.focusCards.map((card: any) => (
<article class="rounded-3xl border border-neutral-300 bg-neutral-100/70 p-6 shadow-xs dark:border-neutral-700 dark:bg-white/[0.04]">
<h3 class="text-lg font-semibold text-neutral-800 dark:text-neutral-200">
{card.title}
</h3>
<p class="mt-3 text-pretty text-neutral-600 dark:text-neutral-400">
{card.content}
</p>
</article>
))
}
</div>
</section>
<RightSection
title={copy.backupTitle}
subTitle={copy.backupSubtitle}
single={false}
imgOne={dashboard}
imgOneAlt={copy.dashboardAlt}
imgTwo={evidenceImage}
imgTwoAlt={copy.evidenceAlt}
/>
<LeftSection
title={copy.driftTitle}
subTitle={copy.driftSubtitle}
img={reviewImage}
imgAlt={copy.driftAlt}
btnExists={true}
btnTitle={copy.trustCta}
btnURL={localizeHref('/trust', locale)}
/>
<RightSection
title={copy.restoreTitle}
subTitle={copy.restoreSubtitle}
single={true}
imgOne={restoreImage}
imgOneAlt={copy.restoreAlt}
btnExists={true}
btnTitle={copy.rolloutCta}
btnURL={localizeHref('/contact', locale)}
/>
<FeaturesStats
title={copy.boundaryTitle}
subTitle={copy.boundarySubtitle}
mainStatTitle={copy.mainStatTitle}
mainStatSubTitle={copy.mainStatSubTitle}
stats={copy.stats}
/>
</MainLayout>