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:
@@ -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>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user