feat(marketing): new hero copy + single CTA
ci / gates (push) Has been cancelled
ci / rust (push) Has been cancelled
ci / sandbox-k8s (push) Has been cancelled
ci / frontend (push) Has been cancelled
ci / e2e (push) Has been cancelled

- Headline → "Scale your Large World" (coral on "Large World").
- Subtext → "Building safe and scalable systems of claws for any domain of work."
- Drop the "Get started for free" hero button; keep "Book a demo".
- Remove the three hero trust pills (free credits / no card / self-hostable).
- Point the p7 hero CTA assertion at "Book a demo"; refresh the @visual baseline.

Co-Authored-By: Claude Opus 4.8 <[email protected]>
This commit is contained in:
Omar Sobh
2026-06-15 14:30:05 -07:00
co-authored by Claude Opus 4.8
parent c7c1ff5d23
commit 4b55c4d81e
2 changed files with 4 additions and 37 deletions
+3 -36
View File
@@ -37,9 +37,9 @@ export function Hero() {
letterSpacing: "-0.04em", letterSpacing: "-0.04em",
}} }}
> >
<span className="text-marketing-coral-strong">The AI crew</span> Scale your
<br /> <br />
for your team <span className="text-marketing-coral-strong">Large World</span>
</h1> </h1>
<p <p
className="m-0 font-medium" className="m-0 font-medium"
@@ -51,22 +51,13 @@ export function Hero() {
maxWidth: 659, maxWidth: 659,
}} }}
> >
Built for collaboration and safe for your whole team. Building safe and scalable systems of claws for any domain of work.
<br className="hidden sm:inline" /> The open Claw runtime for actual
work.
</p> </p>
</div> </div>
<div <div
className="flex w-full flex-col items-stretch justify-center px-4 sm:flex-row sm:items-start sm:px-0" className="flex w-full flex-col items-stretch justify-center px-4 sm:flex-row sm:items-start sm:px-0"
style={{ gap: 16, maxWidth: 538 }} style={{ gap: 16, maxWidth: 538 }}
> >
<Link
href="/login"
className={`${ctaCoral} h-14 px-10 text-base sm:h-16`}
style={{ filter: "drop-shadow(0 4px 12px rgba(22,29,39,0.08))" }}
>
Get started for free
</Link>
<a <a
href="mailto:[email protected]" href="mailto:[email protected]"
className={`${ctaGhost} h-14 border border-[#e2e8f0] px-10 text-base sm:h-16`} className={`${ctaGhost} h-14 border border-[#e2e8f0] px-10 text-base sm:h-16`}
@@ -75,30 +66,6 @@ export function Hero() {
Book a demo Book a demo
</a> </a>
</div> </div>
<ul
className="m-0 flex list-none flex-wrap items-start justify-center p-0"
style={{ gap: 8 }}
>
{[
{ src: "/images/marketing/icon-credits.svg", label: "$100 in free credits" },
{ src: "/images/marketing/icon-no-card.svg", label: "No credit card required" },
{ src: "/images/marketing/icon-soc2-pill.svg", label: "Self-hostable & air-gapped" },
].map((t) => (
<li
key={t.label}
className="inline-flex items-center justify-center rounded-full"
style={{ gap: 12, height: 36, padding: "0 16px" }}
>
<img src={t.src} alt="" aria-hidden className="size-5 shrink-0" />
<span
className="font-semibold whitespace-nowrap"
style={{ color: "#475569", fontSize: 14 }}
>
{t.label}
</span>
</li>
))}
</ul>
</div> </div>
{/* Soft fade into the white section below. */} {/* Soft fade into the white section below. */}
<div <div
+1 -1
View File
@@ -15,7 +15,7 @@ test("the marketing landing renders for logged-out visitors @marketing", async (
page.getByRole("heading", { name: /AI coworkers/ }), page.getByRole("heading", { name: /AI coworkers/ }),
).toBeVisible(); ).toBeVisible();
await expect( await expect(
page.getByRole("link", { name: "Get started for free" }).first(), page.getByRole("link", { name: "Book a demo" }).first(),
).toBeVisible(); ).toBeVisible();
// FAQ accordion: the first item is open by default; expand another. // FAQ accordion: the first item is open by default; expand another.
await expect(page.getByText(/A claw is an AI coworker/)).toBeVisible(); await expect(page.getByText(/A claw is an AI coworker/)).toBeVisible();