Files
claudemesh/apps/web/src/modules/marketing/home/meets-you.tsx
Alejandro Gutiérrez 231618c595
Some checks failed
CI / Typecheck (push) Has been cancelled
CI / Lint (push) Has been cancelled
CI / Broker tests (Postgres) (push) Has been cancelled
CI / Docker build (linux/amd64) (push) Has been cancelled
fix(web): replace 9 placeholder # links + 2 jargon phrases
Surgical fixes on shipped marketing sections. All changes are link
targets (9) or two-word replacements (2) — no structural edits.

Links:
- "Read the docs" / "documentation" (hero, cta, features) → point
  to the public CLI repo README (canonical docs until /docs exists)
- "Pair your machines" (laptop-to-laptop) → /auth/register
- "Open the dashboard" (surfaces, meets-you) → /dashboard
- "Install" (meets-you) → CLI repo README install section
- "VS Code" / "JetBrains" (meets-you) → CLI repo README (MCP setup)

Copy:
- "self-nominates" → "volunteers"
- "surfaces the history" → "shares the history"

Additive polish per the v0.1.0 web prototyping rule.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-05 23:27:36 +01:00

143 lines
5.4 KiB
TypeScript

import Link from "next/link";
import { Reveal, SectionIcon } from "./_reveal";
const CARDS = [
{
accent: "clay",
title: "Start in your terminal",
body: "Drop the broker next to Claude Code. One env var. Your session joins the mesh.",
cta: { label: "Install", href: "https://github.com/alezmad/claudemesh-cli#install" },
mock: (
<div
className="rounded-[8px] bg-[#D97757] p-6 font-mono text-[11px] leading-[1.6] text-[#141413]"
style={{ fontFamily: "var(--cm-font-mono)" }}
>
<div className="mb-2 opacity-70">$ claudemesh join</div>
<div> connected to mesh.team.local</div>
<div> announced: alex · api-gateway · working</div>
<div> 5 peers online</div>
<div className="mt-3 opacity-70">
ready. messages route to your Claude Code.
</div>
</div>
),
},
{
accent: "oat",
title: "Bridge to your editor",
body: "VS Code, Cursor, JetBrains — the mesh exposes an MCP server your editor's agent can call.",
cta: { label: "VS Code", href: "https://github.com/alezmad/claudemesh-cli#readme" },
cta2: { label: "JetBrains", href: "https://github.com/alezmad/claudemesh-cli#readme" },
mock: (
<div
className="rounded-[8px] border border-[var(--cm-border)] bg-[var(--cm-bg)] p-4"
style={{ fontFamily: "var(--cm-font-mono)" }}
>
<div className="text-[10px] text-[var(--cm-fg-tertiary)]">
.claude/mcp.json
</div>
<pre className="mt-2 text-[11px] leading-[1.6] text-[var(--cm-fg)]">
{`{
"servers": {
"mesh": {
"url": "ws://mesh.team:7899"
}
}
}`}
</pre>
</div>
),
},
{
accent: "cactus",
title: "Reach across machines",
body: "Tailscale, WireGuard, or plain WS over your LAN. The broker is one binary, anywhere.",
cta: { label: "Open the dashboard", href: "/dashboard" },
mock: (
<div
className="rounded-[8px] border border-[var(--cm-border)] bg-[var(--cm-bg)] p-4"
style={{ fontFamily: "var(--cm-font-sans)" }}
>
<div className="mb-3 text-[10px] uppercase tracking-wider text-[var(--cm-fg-tertiary)]">
Peers on mesh
</div>
{[
["alex", "macOS · working"],
["jordan", "linux · idle"],
["mo", "macOS · dnd"],
].map(([n, s]) => (
<div
key={n}
className="flex items-center justify-between border-b border-[var(--cm-border)] py-1.5 text-[12px] last:border-b-0"
>
<span className="text-[var(--cm-fg)]">{n}</span>
<span className="text-[var(--cm-fg-tertiary)]">{s}</span>
</div>
))}
</div>
),
},
];
export const MeetsYou = () => {
return (
<section className="border-b border-[var(--cm-border)] bg-[var(--cm-bg)] px-6 py-24 md:px-12 md:py-32">
<div className="mx-auto max-w-[var(--cm-max-w)]">
<Reveal className="mb-6 flex justify-center">
<SectionIcon glyph="terminal" />
</Reveal>
<Reveal delay={1}>
<h2
className="mx-auto max-w-4xl text-center text-[clamp(2rem,4.5vw,3.25rem)] font-medium leading-[1.1] text-[var(--cm-fg)]"
style={{ fontFamily: "var(--cm-font-serif)" }}
>
Meets every agent where it runs
</h2>
</Reveal>
<Reveal delay={2}>
<div className="mt-16 grid gap-6 md:grid-cols-3">
{CARDS.map((c) => (
<article
key={c.title}
className="flex flex-col overflow-hidden rounded-[var(--cm-radius-md)] border border-[var(--cm-border)] bg-[var(--cm-bg-elevated)] p-6"
>
<div className="mb-6">{c.mock}</div>
<h3
className="mb-2 text-xl font-medium leading-snug text-[var(--cm-fg)]"
style={{ fontFamily: "var(--cm-font-serif)" }}
>
{c.title}
</h3>
<p
className="mb-6 text-[14px] leading-[1.6] text-[var(--cm-fg-secondary)]"
style={{ fontFamily: "var(--cm-font-serif)" }}
>
{c.body}
</p>
<div className="mt-auto flex flex-wrap gap-2">
<Link
href={c.cta.href}
className="inline-flex items-center gap-2 rounded-[var(--cm-radius-xs)] border border-[var(--cm-fg-tertiary)] px-4 py-2 text-[13px] font-medium text-[var(--cm-fg)] transition-colors hover:border-[var(--cm-fg)] hover:bg-[var(--cm-bg)]"
style={{ fontFamily: "var(--cm-font-sans)" }}
>
{c.cta.label}
</Link>
{c.cta2 && (
<Link
href={c.cta2.href}
className="inline-flex items-center gap-2 rounded-[var(--cm-radius-xs)] border border-[var(--cm-border)] px-4 py-2 text-[13px] font-medium text-[var(--cm-fg-secondary)] transition-colors hover:border-[var(--cm-fg-tertiary)] hover:text-[var(--cm-fg)]"
style={{ fontFamily: "var(--cm-font-sans)" }}
>
{c.cta2.label}
</Link>
)}
</div>
</article>
))}
</div>
</Reveal>
</div>
</section>
);
};