Skip to content

Commit 124cd7b

Browse files
committed
feat: document MCP server, expand landing, drop stale new badges
- docs/ai-agents: add MCP server section with Claude/Codex/Amp CLI setup and a manual mcp.json config; remove the caching section - landing: show more components under Motion primitives (10 to 24) - landing card: fix description leaking before hover and clamp breaking on long text (padding/slide moved to the wrapper, clamp element kept clean) - registry: remove "new" badge from shipped components (overflow-actions, not-found, bouncy-accordion, drawer, scroll-animation, file-upload, prediction-market)
1 parent 0893435 commit 124cd7b

4 files changed

Lines changed: 57 additions & 16 deletions

File tree

app/docs/ai-agents/page.tsx

Lines changed: 41 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,12 @@ import { CodeBlock } from "@/components/app/code-block";
66
export const metadata: Metadata = {
77
title: "AI Agents",
88
description:
9-
"Endpoints for coding agents to consume beUI components programmatically: llms.txt, JSON registry, and raw source.",
9+
"Connect the beUI MCP server, or use the agent-friendly endpoints (llms.txt, JSON registry, raw source) to consume components programmatically.",
1010
alternates: { canonical: "/docs/ai-agents" },
1111
openGraph: {
1212
title: "AI Agents · beUI",
1313
description:
14-
"Endpoints for coding agents to consume beUI components programmatically: llms.txt, JSON registry, and raw source.",
14+
"Connect the beUI MCP server, or use the agent-friendly endpoints (llms.txt, JSON registry, raw source) to consume components programmatically.",
1515
url: "/docs/ai-agents",
1616
type: "article",
1717
siteName: "beUI",
@@ -33,6 +33,26 @@ const ENDPOINTS: { label: string; url: string; desc: string }[] = [
3333
{ label: "Raw source", url: "/r/{slug}/raw", desc: "Plain text .tsx ready to drop in." },
3434
];
3535

36+
const MCP_URL = "https://mcp.beui.dev/mcp";
37+
38+
const MCP_CLI_SNIPPET = `# Claude Code
39+
claude mcp add --transport http beui https://mcp.beui.dev/mcp
40+
41+
# Codex
42+
codex mcp add beui --url https://mcp.beui.dev/mcp
43+
44+
# Amp
45+
amp mcp add beui https://mcp.beui.dev/mcp`;
46+
47+
const MCP_MANUAL_SNIPPET = `{
48+
"mcpServers": {
49+
"beui": {
50+
"type": "http",
51+
"url": "https://mcp.beui.dev/mcp"
52+
}
53+
}
54+
}`;
55+
3656
const FETCH_SNIPPET = `// 1. Discover what exists
3757
const idx = await fetch('https://beui.dev/r').then((r) => r.json());
3858
@@ -76,7 +96,25 @@ export default function AIAgentsPage() {
7696
<p className="text-xs font-semibold uppercase tracking-wider text-muted-foreground">Intro</p>
7797
<h1 className="mt-2 text-3xl font-semibold tracking-tight text-foreground">For AI agents</h1>
7898
<p className="mt-3 text-muted-foreground">
79-
beUI exposes a static, agent-friendly surface. Coding agents (Cursor, Claude, GPT, custom MCP) can list components, fetch source with all deps, and drop files into the user&apos;s project with one HTTP call.
99+
beUI exposes a static, agent-friendly surface. Connect the MCP server below, or hit the raw endpoints directly. Coding agents (Claude, Codex, Cursor, Amp) can list components, fetch source with all deps, and drop files into the user&apos;s project.
100+
</p>
101+
102+
<h2 className="mt-10 text-xl font-semibold tracking-tight text-foreground">MCP server</h2>
103+
<p className="mt-2 text-muted-foreground">
104+
The fastest path: connect the beUI MCP server and your agent can list, search and install components directly. Hosted at{" "}
105+
<code className="rounded bg-foreground/5 px-1.5 py-0.5 font-mono text-xs text-foreground">{MCP_URL}</code>.
106+
</p>
107+
<div className="mt-4">
108+
<CodeBlock code={MCP_CLI_SNIPPET} lang="bash" filename="terminal" />
109+
</div>
110+
<p className="mt-4 text-muted-foreground">
111+
Any other client: add it manually to your MCP config.
112+
</p>
113+
<div className="mt-4">
114+
<CodeBlock code={MCP_MANUAL_SNIPPET} lang="json" filename="mcp.json" />
115+
</div>
116+
<p className="mt-4 text-sm text-muted-foreground">
117+
Tools: <code className="rounded bg-foreground/5 px-1.5 py-0.5 font-mono text-xs">list_components</code>, <code className="rounded bg-foreground/5 px-1.5 py-0.5 font-mono text-xs">search_components</code>, <code className="rounded bg-foreground/5 px-1.5 py-0.5 font-mono text-xs">get_component</code>, <code className="rounded bg-foreground/5 px-1.5 py-0.5 font-mono text-xs">get_install_command</code>.
80118
</p>
81119

82120
<h2 className="mt-10 text-xl font-semibold tracking-tight text-foreground">Endpoints</h2>
@@ -127,10 +165,6 @@ export default function AIAgentsPage() {
127165
<CodeBlock code={ENTRY_SHAPE} lang="json" filename="r/swap.json" />
128166
</div>
129167

130-
<h2 className="mt-10 text-xl font-semibold tracking-tight text-foreground">Caching</h2>
131-
<p className="mt-2 text-muted-foreground">
132-
All routes are pre-rendered at build, served with <code className="rounded bg-foreground/5 px-1.5 py-0.5 font-mono text-xs">cache-control: public, max-age=300, s-maxage=3600</code>.
133-
</p>
134168
</div>
135169
);
136170
}

app/page.tsx

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,20 @@ const CURATED: { category: string; slug: string }[] = [
1818
{ category: "blocks", slug: "command-palette" },
1919
{ category: "blocks", slug: "expandable-action-bar" },
2020
{ category: "blocks", slug: "expandable-tabs" },
21+
{ category: "motion", slug: "tilt-card" },
22+
{ category: "motion", slug: "bottom-sheet" },
23+
{ category: "motion", slug: "switch" },
24+
{ category: "motion", slug: "tooltip" },
25+
{ category: "motion", slug: "text-animation" },
26+
{ category: "motion", slug: "number" },
27+
{ category: "motion", slug: "bouncy-accordion" },
28+
{ category: "motion", slug: "range-slider" },
29+
{ category: "motion", slug: "theme-toggle" },
30+
{ category: "motion", slug: "drawer" },
31+
{ category: "blocks", slug: "swap" },
32+
{ category: "blocks", slug: "otp-input" },
33+
{ category: "blocks", slug: "swipeable-list" },
34+
{ category: "blocks", slug: "bloom-menu" },
2135
];
2236

2337
export default function Home() {

components/app/landing-component-card.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,8 @@ export function LandingComponentCard({
3333
</div>
3434

3535
<div className="pointer-events-none absolute inset-0 rounded-3xl bg-transparent backdrop-blur-0 transition-[background-color,backdrop-filter] duration-200 ease-[cubic-bezier(0.23,1,0.32,1)] group-hover/card:bg-card/55 group-hover/card:backdrop-blur-md group-focus-within/card:bg-card/55 group-focus-within/card:backdrop-blur-md">
36-
<div className="absolute inset-x-0 bottom-0 overflow-hidden rounded-b-3xl px-4 py-3">
37-
<p className="line-clamp-2 translate-y-full text-xs leading-relaxed text-muted-foreground transition-transform duration-300 ease-[cubic-bezier(0.23,1,0.32,1)] group-hover/card:translate-y-0 group-focus-within/card:translate-y-0">
36+
<div className="absolute inset-x-0 bottom-0 translate-y-full px-4 py-3 transition-transform duration-300 ease-[cubic-bezier(0.23,1,0.32,1)] group-hover/card:translate-y-0 group-focus-within/card:translate-y-0">
37+
<p className="line-clamp-2 text-xs leading-relaxed text-muted-foreground">
3838
{component.description}
3939
</p>
4040
</div>

lib/registry.ts

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -300,14 +300,12 @@ export const registry: CategoryEntry[] = [
300300
name: "Bouncy Accordion",
301301
description: "Single-open accordion with weighted spring layout, icon rows and reduced-motion-safe content reveals.",
302302
file: "components/motion/bouncy-accordion.tsx",
303-
badge: "new",
304303
},
305304
{
306305
slug: "drawer",
307306
name: "Drawer",
308307
description: "Side panel that slides in from the left or right with a spring, backdrop blur, body scroll lock and esc-to-close.",
309308
file: "components/motion/drawer.tsx",
310-
badge: "new",
311309
},
312310
{
313311
slug: "scroll-animation",
@@ -320,7 +318,6 @@ export const registry: CategoryEntry[] = [
320318
"components/motion/scroll-to.tsx",
321319
"components/motion/scroll-reveal.tsx",
322320
],
323-
badge: "new",
324321
keywords: [
325322
"smooth scroll",
326323
"lenis",
@@ -421,7 +418,6 @@ export const registry: CategoryEntry[] = [
421418
name: "Overflow Actions",
422419
description: "Connected pill rail for primary actions that springs open to reveal extra controls.",
423420
file: "components/motion/overflow-actions.tsx",
424-
badge: "new",
425421
},
426422
{
427423
slug: "expandable-tabs",
@@ -440,14 +436,12 @@ export const registry: CategoryEntry[] = [
440436
name: "File Upload",
441437
description: "Drag-and-drop upload queue with progress rows, retry/remove actions and reduced-motion-safe state changes.",
442438
file: "components/motion/file-upload.tsx",
443-
badge: "new",
444439
},
445440
{
446441
slug: "prediction-market",
447442
name: "Prediction Market",
448443
description: "Prediction market trade ticket with buy/sell modes, outcome prices, rolling amount entry, quick add chips and trade states.",
449444
file: "components/motion/prediction-market.tsx",
450-
badge: "new",
451445
},
452446
{
453447
slug: "otp-input",
@@ -475,7 +469,6 @@ export const registry: CategoryEntry[] = [
475469
"components/motion/not-found/stacked.tsx",
476470
"components/motion/not-found/terminal.tsx",
477471
],
478-
badge: "new",
479472
examples: [
480473
{
481474
slug: "glitch",

0 commit comments

Comments
 (0)