---
/**
* Site.astro — 官网整页布局(构建期单显一种语言)。
* 两条路由复用:/ → lang="zh",/en/ → lang="en"(铁律 6 单显不并排)。
*
* 样式来源顺序(全部自托管,无第三方 CDN):
* @fontsource/* → 自托管字体 @font-face(替代原型的 Google Fonts CDN)
* tokens.gen.css → 由 design/colors_and_type.css 生成(唯一令牌真相源)
* website.css → 逐字迁自 ui_kits/website
* site-extra.css → 仅承载「原型内联 style= → class」的等价工具类
*/
import '@fontsource/sora/500.css';
import '@fontsource/sora/600.css';
import '@fontsource/sora/700.css';
import '@fontsource/manrope/400.css';
import '@fontsource/manrope/500.css';
import '@fontsource/manrope/600.css';
import '@fontsource/manrope/700.css';
import '@fontsource/noto-sans-sc/400.css';
import '@fontsource/noto-sans-sc/500.css';
import '@fontsource/noto-sans-sc/700.css';
import '@fontsource/jetbrains-mono/400.css';
import '@fontsource/jetbrains-mono/500.css';
import '../styles/tokens.gen.css';
import '../styles/website.css';
import '../styles/site-extra.css';
import { createT, type Lang } from '../i18n/strings';
import Header from '../components/Header.jsx';
import AnnouncementBar from '../components/AnnouncementBar.jsx';
import Hero from '../components/Hero.astro';
import Features from '../components/Features.astro';
import WhySignup from '../components/WhySignup.astro';
import Pricing from '../components/Pricing.astro';
import Download from '../components/Download.astro';
import Docs from '../components/Docs.astro';
// Blog 区暂隐藏(占位内容未就绪);有真实文章后恢复 import + + 导航/页脚链接。
import CtaBand from '../components/CtaBand.astro';
import Footer from '../components/Footer.astro';
interface Props { lang: Lang }
const { lang } = Astro.props;
const t = createT(lang);
// 语言 → / og:locale / 路由前缀(默认 en = /,其余 //)。
const HTML_LANG: Record = { zh: 'zh-CN', en: 'en', ja: 'ja', ko: 'ko', ru: 'ru', es: 'es' };
const OG_LOCALE: Record = { zh: 'zh_CN', en: 'en_US', ja: 'ja_JP', ko: 'ko_KR', ru: 'ru_RU', es: 'es_ES' };
const ALL_LANGS: Lang[] = ['en', 'zh', 'ja', 'ko', 'ru', 'es'];
const langPath = (l: Lang) => (l === 'en' ? '/' : `/${l}/`);
const headerT = {
product: t('nav.product'),
pricing: t('nav.pricing'),
download: t('nav.download'),
docs: t('nav.docs'),
blog: t('nav.blog'),
login: t('nav.login'),
get: t('nav.get'),
suBtn: t('su.btn'),
};
---
{t('meta.title')}
{ALL_LANGS.map((l) => (
))}