feat(website): 独立注册页 /register(邮箱/邀请码预填+验证码注册+平台匹配下载)+ 主页/落地页跳转接入 + 登录态隐藏注册入口
ci-pangolin / Lint — shellcheck (pull_request) Successful in 13s
ci-pangolin / Redline Scan — 脱敏 (UI 文案) (pull_request) Successful in 25s
ci-pangolin / Cleartext Scan — Android 禁明文 (pull_request) Successful in 23s
ci-pangolin / OpenAPI Sync Check (pull_request) Successful in 34s
ci-pangolin / Portable SQL — 可移植性 (mysql/sqlite) (pull_request) Successful in 21s
ci-pangolin / Flutter — analyze + test (pull_request) Successful in 34s
ci-pangolin / Codegen Drift — token 生成物未漂移 (pull_request) Successful in 8s
ci-pangolin / DS-flow — 原型/跨端同源/代码色单源闸 (pull_request) Successful in 8s
ci-pangolin / Go — build + test (pull_request) Failing after 13s
ci-pangolin / E2E Smoke — L4 进程级端到端 (pull_request) Failing after 10s
ci-pangolin / Go — integration (mysql/redis testcontainers) (pull_request) Failing after 4m34s
ci-pangolin / Golden — 视觉回归 (全量:components/auth/desktop/tablet) (pull_request) Failing after 19s

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01P9G7E3wmAYL9KeYCVZVsqu
This commit is contained in:
wangjia
2026-07-13 12:20:32 +08:00
parent 254db4f40d
commit 65ce2664ee
12 changed files with 789 additions and 43 deletions
+70
View File
@@ -0,0 +1,70 @@
---
/**
* register.astro — 独立注册页 `/register`(产出 dist/register/index.html)。
*
* 两处入口跳转到这里:① 首页 hero 免费注册表单(?email= 预填,见 SignupForm.jsx);
* ② 邀请落地页 /i/<code> 的「注册领取 3 天」CTA?invite= 预填,见 InviteCard.jsx)。
* 二者共用同一套「验证码 + 设密码」注册流程(RegisterCard.jsx)。
*
* 页面骨架复用全站 Header/Footer + tokens/website/site-extra 样式,与 i.astro 同一路数;
* Header/Footer 走全站 i18n 惯例整页单显中文,正文卡片(RegisterCard.jsx)另有独立的
* zh/en 运行时切换,理由见该组件顶部注释。
*/
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 } from '../i18n/strings';
import Header from '../components/Header.jsx';
import Footer from '../components/Footer.astro';
import RegisterCard from '../components/RegisterCard.jsx';
const t = createT('zh');
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'),
center: t('nav.center'),
brand: t('nav.brand'),
mcenter: t('menu.center'),
mswitch: t('menu.switch'),
mlogout: t('menu.logout'),
get: t('nav.get'),
suBtn: t('su.btn'),
};
---
<!doctype html>
<html lang="zh-CN">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>注册 · {t('nav.brand')}</title>
<meta name="description" content="创建你的穿山甲账户:一个邮箱即可开始,免费注册,无需任何付款信息。" />
<meta name="robots" content="noindex,follow" />
<meta name="theme-color" content="#B96A3D" />
</head>
<body>
<Header client:load lang="zh" t={headerT} />
<main>
<RegisterCard client:load />
</main>
<Footer t={t} />
</body>
</html>