feat(slice-3): Landing re-skinned to the Claude Design export (§5.1)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-06-10 22:39:57 -07:00
parent ef1498ba08
commit 0b302ea1e1
+46 -12
View File
@@ -1,27 +1,61 @@
// Landing (SD-0001 §5.1) — a Visitor learns what ecomm is and picks a door. Honest voice, // Landing (SD-0001 §5.1) — a Visitor learns what ecomm is and picks a door. Honest voice,
// no trial/pricing/fee (corpus 14.01.0011). Both doors open the same sign-in flow (§5.2); // no trial/pricing/fee (corpus 14.01.0011). Both doors open the same sign-in flow (§5.2);
// they differ only in framing. // they differ only in framing. Visuals per the ui/designs export (hf-landing, Direction A).
import { Eyebrow, Footer, PrimaryButton, Screen, TopBar, Wordmark } from "../ui/kit";
interface Props { interface Props {
onGetStarted: () => void; onGetStarted: () => void;
onLogIn: () => void; onLogIn: () => void;
} }
const PROMISES: Array<[string, string]> = [
["No trial clock", "Your storefront never expires or locks."],
["No plan wall", "We take only what it takes to run."],
["Your data, yours", "Nothing collected you didn't agree to give."],
];
export default function Landing({ onGetStarted, onLogIn }: Props) { export default function Landing({ onGetStarted, onLogIn }: Props) {
return ( return (
<main> <Screen horizon>
<header> <TopBar
<strong>ecomm</strong> left={<Wordmark />}
<button type="button" onClick={onLogIn}> right={
<button type="button" className="lk lk--nav" onClick={onLogIn}>
Log in Log in
</button> </button>
</header> }
<section> />
<h1>Honest commerce. Your storefront is yours.</h1> <main className="screen__main">
<p>Sell online on a platform that treats you straight no dark patterns, no lock-in.</p> <div className="hero">
<button type="button" onClick={onGetStarted}> <Eyebrow>One storefront, fully yours</Eyebrow>
Create your storefront <h1>
Sell online,
<br />
<em>honestly.</em>
</h1>
<p className="hero__lead">
Claim the one storefront that's yours on a platform that takes only what it takes
to run — no trial countdown, no plan wall, no data you didn't agree to give.
</p>
<div className="hero__actions">
<PrimaryButton type="button" onClick={onGetStarted}>
Create your storefront
</PrimaryButton>
<button type="button" className="lk lk--mute" onClick={onLogIn}>
Already selling with us? <span style={{ color: "var(--wv-lilac)" }}>Log in</span>
</button> </button>
</section> </div>
<div className="promises">
{PROMISES.map(([title, copy]) => (
<div key={title}>
<div className="promises__title">{title}</div>
<p>{copy}</p>
</div>
))}
</div>
</div>
</main> </main>
<Footer />
</Screen>
); );
} }