Website visitors now have a single registration path through the CodeGW sign-up page, while the header no longer presents a separate login action beside registration. Static export output is included so the repository matches the deployed Azure Static Web Apps artifact. Constraint: Website must use the CodeGW sign-up URL and remove the header login button. Rejected: Keeping the separate Agnet login URL | it sends registration traffic to the wrong surface. Confidence: high Scope-risk: narrow Directive: Keep public website registration links pointed at https://code.xinghanlab.com/sign-up unless product routing changes. Tested: pnpm run build; Azure Static Web Apps production deploy; live curl checks for sign-up URL and removed login link. Not-tested: Browser visual pass after deployment. Co-authored-by: OmX <omx@oh-my-codex.dev>
61 lines
2.2 KiB
TypeScript
61 lines
2.2 KiB
TypeScript
import { Button } from "@/components/ui/button";
|
|
import { ArrowRight } from "lucide-react";
|
|
import type { Lang } from "@/app/page";
|
|
|
|
const MANAGER_URL = "https://code.xinghanlab.com/";
|
|
const REGISTER_URL = "https://code.xinghanlab.com/sign-up";
|
|
|
|
const copy = {
|
|
en: {
|
|
title: "Move an idea into a real development flow",
|
|
description:
|
|
"Heicode does more than generate code. It organizes product intent, code, permissions, models, deployment, and maintenance into one auditable software lifecycle.",
|
|
primary: "Enter Heicode",
|
|
secondary: "Register account",
|
|
},
|
|
zh: {
|
|
title: "让想法进入真实开发流程",
|
|
description:
|
|
"不是只生成代码,而是把产品、代码、权限、模型、部署和维护组织成一个可审计的软件生命周期。",
|
|
primary: "进入 Heicode",
|
|
secondary: "注册账号",
|
|
},
|
|
} satisfies Record<Lang, {
|
|
title: string;
|
|
description: string;
|
|
primary: string;
|
|
secondary: string;
|
|
}>;
|
|
|
|
export function CTA({ lang }: { lang: Lang }) {
|
|
const t = copy[lang];
|
|
|
|
return (
|
|
<section className="border-t border-border bg-foreground py-20 text-background sm:py-28">
|
|
<div className="mx-auto max-w-7xl px-4 sm:px-6 lg:px-8">
|
|
<div className="mx-auto max-w-2xl text-center">
|
|
<h2 className="text-3xl font-black tracking-tight sm:text-5xl">
|
|
{t.title}
|
|
</h2>
|
|
<p className="mt-4 text-lg text-background/70">
|
|
{t.description}
|
|
</p>
|
|
<div className="mt-10 flex flex-col items-center justify-center gap-4 sm:flex-row">
|
|
<Button size="lg" className="h-12 rounded-full bg-primary px-7 text-primary-foreground hover:bg-primary/90" asChild>
|
|
<a href={MANAGER_URL} target="_blank" rel="noreferrer">
|
|
{t.primary}
|
|
<ArrowRight className="h-4 w-4" />
|
|
</a>
|
|
</Button>
|
|
<Button variant="outline" size="lg" className="h-12 rounded-full border-background/30 bg-transparent px-7 text-background hover:bg-background hover:text-foreground" asChild>
|
|
<a href={REGISTER_URL} target="_blank" rel="noreferrer">
|
|
{t.secondary}
|
|
</a>
|
|
</Button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
);
|
|
}
|