@orangecheck/app-design 0.2.0 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -227,11 +227,11 @@ function SplitBar({
227
227
  "div",
228
228
  {
229
229
  className: cn(
230
- "flex min-w-0 items-end rounded-[1rem] px-4 pb-3",
230
+ "flex min-w-[4.25rem] items-end rounded-[1rem] px-3 pb-2.5 md:px-4 md:pb-3",
231
231
  s.tone === "card" ? "bg-white text-oca-ink" : "bg-oca-ink text-white"
232
232
  ),
233
233
  style: { flexBasis: `${s.pct}%` },
234
- children: /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "oca-tabular text-[1.5rem] leading-none tracking-[-0.02em] md:text-[1.875rem]", children: [
234
+ children: /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "oca-tabular text-[1.25rem] leading-none tracking-[-0.02em] md:text-[1.875rem]", children: [
235
235
  s.pct,
236
236
  "%"
237
237
  ] })
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/lib/cn.ts","../src/components/typography.tsx","../src/components/section.tsx","../src/primitives/badge.tsx","../src/primitives/card.tsx","../src/components/steps.tsx","../src/components/code-card.tsx","../src/components/split-bar.tsx","../src/components/truth-table.tsx","../src/components/money.tsx","../src/brand/mark.tsx","../src/components/data.tsx"],"names":["extendTailwindMerge","clsx","jsx","createElement","cva","forwardRef","Card","jsxs","Fragment","useState","useRef","useEffect","useCallback","Check","Copy"],"mappings":"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","file":"components.js","sourcesContent":["import { clsx, type ClassValue } from 'clsx';\nimport { extendTailwindMerge } from 'tailwind-merge';\n\n// tailwind-merge would treat `oca-display-1` and `text-foreground` as the same\n// group and drop one; teach it the package's own type utilities.\nconst merge = extendTailwindMerge<'oca-type'>({\n extend: {\n classGroups: {\n 'oca-type': [\n 'oca-display-1',\n 'oca-display-2',\n 'oca-display-3',\n 'oca-title',\n 'oca-title-sm',\n 'oca-eyebrow',\n 'oca-lead',\n 'oca-body',\n 'oca-numeral',\n ],\n },\n },\n});\n\nexport function cn(...inputs: ClassValue[]): string {\n return merge(clsx(inputs));\n}\n","import { createElement, type HTMLAttributes, type ReactNode } from 'react';\n\nimport { cn } from '../lib/cn';\n\n/** The small orange line above a heading (\"How it works\", \"The honest version\"). */\nexport function Eyebrow({ className, onInk, ...props }: HTMLAttributes<HTMLParagraphElement> & { onInk?: boolean }) {\n return <p className={cn('oca-eyebrow', onInk && 'text-oca-ink-eyebrow', className)} {...props} />;\n}\n\ntype DisplayLevel = 1 | 2 | 3;\n\nexport interface DisplayProps extends HTMLAttributes<HTMLHeadingElement> {\n /** Visual size. The element follows unless `as` says otherwise. */\n level?: DisplayLevel;\n as?: 'h1' | 'h2' | 'h3' | 'p';\n}\n\n/** Headlines: regular weight, tight, balanced. */\nexport function Display({ level = 2, as, className, ...props }: DisplayProps) {\n const tag = as ?? (`h${level}` as const);\n return createElement(tag, { className: cn(`oca-display-${level}`, className), ...props });\n}\n\n/** The one orange word (\"cost something *real*.\"). Display sizes only: as small\n * text this orange would fail contrast. */\nexport function Accent({ children, className }: { children: ReactNode; className?: string }) {\n return <span className={cn('text-oca-accent-display', className)}>{children}</span>;\n}\n\nexport function Lead({ className, ...props }: HTMLAttributes<HTMLParagraphElement>) {\n return <p className={cn('oca-lead max-w-[40rem]', className)} {...props} />;\n}\n\n/** Fine print under a section (\"Who holds what today: …\"). */\nexport function Footnote({ className, ...props }: HTMLAttributes<HTMLParagraphElement>) {\n return <p className={cn('text-[0.9375rem] text-muted-foreground', className)} {...props} />;\n}\n\n/** Body copy for long-form pages: measured line length, calm rhythm. */\nexport function Prose({ className, ...props }: HTMLAttributes<HTMLDivElement>) {\n return (\n <div\n className={cn(\n 'max-w-[42rem] text-[1.0625rem] leading-[1.7] text-muted-foreground',\n '[&_h2]:oca-display-3 [&_h2]:mb-4 [&_h2]:mt-14 [&_h2]:text-foreground',\n '[&_h3]:oca-title [&_h3]:mb-3 [&_h3]:mt-10 [&_h3]:text-foreground',\n '[&_p]:my-4 [&_strong]:font-medium [&_strong]:text-foreground',\n '[&_a]:text-foreground [&_a]:underline [&_a]:decoration-border [&_a]:underline-offset-4 hover:[&_a]:decoration-foreground',\n '[&_ul]:my-4 [&_ul]:list-disc [&_ul]:pl-5 [&_li]:my-1.5 [&_code]:text-foreground',\n className\n )}\n {...props}\n />\n );\n}\n","import { cva, type VariantProps } from 'class-variance-authority';\nimport type { HTMLAttributes } from 'react';\n\nimport { cn } from '../lib/cn';\n\n/*\n * The deck alternates three grounds: the light canvas, the ink band and the\n * orange band. A section owns its ground edge to edge and its content sits in\n * the container. On the orange band text is ink, never white (2.9:1).\n */\n// overflow-x: clip, not hidden: decoration may not widen the page, and a sticky\n// child still sticks.\nexport const sectionVariants = cva('relative w-full overflow-x-clip', {\n variants: {\n tone: {\n canvas: 'bg-background text-foreground',\n card: 'bg-card text-card-foreground',\n ink: 'bg-oca-ink text-oca-ink-foreground',\n brand: 'bg-brand text-brand-foreground',\n },\n space: {\n none: '',\n sm: 'py-12 md:py-16',\n md: 'oca-section',\n lg: 'py-24 md:py-40',\n },\n },\n defaultVariants: { tone: 'canvas', space: 'md' },\n});\n\nexport interface SectionProps extends HTMLAttributes<HTMLElement>, VariantProps<typeof sectionVariants> {\n /** Put children in the standard container. Default true. */\n contained?: boolean;\n}\n\nexport function Section({ tone, space, contained = true, className, children, ...props }: SectionProps) {\n return (\n <section className={cn(sectionVariants({ tone, space }), className)} {...props}>\n {contained ? <div className=\"oca-container\">{children}</div> : children}\n </section>\n );\n}\n\nexport function Container({ className, ...props }: HTMLAttributes<HTMLDivElement>) {\n return <div className={cn('oca-container', className)} {...props} />;\n}\n\n/** Eyebrow + headline + lead, the opening of every deck slide. */\nexport function SectionIntro({\n className,\n align = 'start',\n ...props\n}: HTMLAttributes<HTMLDivElement> & { align?: 'start' | 'center' }) {\n return (\n <div\n className={cn(\n 'flex flex-col gap-4 md:gap-5',\n align === 'center' && 'mx-auto items-center text-center',\n className\n )}\n {...props}\n />\n );\n}\n","import { cva, type VariantProps } from 'class-variance-authority';\nimport type { HTMLAttributes } from 'react';\n\nimport { cn } from '../lib/cn';\n\n/*\n * The small white pill from the deck (\"in testing\", \"on the path\"), plus soft\n * status tints. Text stays on the token that clears 4.5:1 against its tint.\n */\nexport const badgeVariants = cva(\n 'inline-flex h-6 shrink-0 items-center gap-1.5 whitespace-nowrap rounded-full border px-2.5 text-[0.8125rem] font-medium leading-none',\n {\n variants: {\n tone: {\n neutral: 'border-border bg-card text-foreground',\n muted: 'border-transparent bg-muted text-muted-foreground',\n brand: 'border-transparent bg-[color-mix(in_oklab,var(--oca-orange)_12%,var(--card))] text-oca-accent-ink',\n success: 'border-transparent bg-[color-mix(in_oklab,var(--success)_12%,var(--card))] text-success',\n warning: 'border-transparent bg-[color-mix(in_oklab,var(--warning)_14%,var(--card))] text-warning',\n danger: 'border-transparent bg-[color-mix(in_oklab,var(--destructive)_12%,var(--card))] text-destructive',\n info: 'border-transparent bg-[color-mix(in_oklab,var(--info)_12%,var(--card))] text-info',\n ink: 'border-transparent bg-oca-ink text-oca-ink-foreground',\n onInk: 'border-white/15 bg-white/5 text-white/90',\n },\n },\n defaultVariants: { tone: 'neutral' },\n }\n);\n\nexport interface BadgeProps extends HTMLAttributes<HTMLSpanElement>, VariantProps<typeof badgeVariants> {}\n\nexport function Badge({ className, tone, ...props }: BadgeProps) {\n return <span data-ui=\"badge\" className={cn(badgeVariants({ tone }), className)} {...props} />;\n}\n\n/** A pill with a live dot: where something stands right now (\"In testing · payouts start after\"). */\nexport function StatusPill({\n className,\n children,\n pulse = true,\n ...props\n}: HTMLAttributes<HTMLSpanElement> & { pulse?: boolean }) {\n return (\n <span\n data-ui=\"status-pill\"\n className={cn(\n 'inline-flex min-h-8 w-fit items-center gap-2.5 rounded-full border border-border bg-card py-1 pl-3 pr-3.5 text-[0.875rem] leading-snug text-foreground',\n className\n )}\n {...props}\n >\n <span aria-hidden className=\"relative flex size-2 shrink-0\">\n {pulse ? (\n <span className=\"absolute inset-0 rounded-full bg-oca-orange opacity-50 motion-safe:animate-ping\" />\n ) : null}\n <span className=\"relative size-2 rounded-full bg-oca-orange\" />\n </span>\n {children}\n </span>\n );\n}\n","import { cva, type VariantProps } from 'class-variance-authority';\nimport { forwardRef, type HTMLAttributes } from 'react';\n\nimport { cn } from '../lib/cn';\n\n/*\n * White on the canvas with one hairline and a generous radius; no shadow. The\n * `ink` card is the deck's #1E1E1E panel, dark in both modes.\n */\nexport const cardVariants = cva('relative rounded-[1.25rem] border', {\n variants: {\n tone: {\n default: 'border-border bg-card text-card-foreground',\n sunken: 'border-transparent bg-muted text-foreground',\n ink: 'border-oca-ink-line bg-oca-ink-card text-oca-ink-foreground',\n outline: 'border-border bg-transparent text-foreground',\n },\n padding: {\n none: '',\n sm: 'p-5',\n md: 'p-6 md:p-8',\n lg: 'p-8 md:p-10',\n },\n interactive: {\n true: 'transition-colors hover:border-oca-hairline-strong focus-within:border-oca-hairline-strong',\n false: '',\n },\n },\n defaultVariants: { tone: 'default', padding: 'md', interactive: false },\n});\n\nexport interface CardProps extends HTMLAttributes<HTMLDivElement>, VariantProps<typeof cardVariants> {}\n\nexport const Card = forwardRef<HTMLDivElement, CardProps>(function Card(\n { className, tone, padding, interactive, ...props },\n ref\n) {\n return (\n <div ref={ref} data-ui=\"card\" className={cn(cardVariants({ tone, padding, interactive }), className)} {...props} />\n );\n});\n\nexport function CardHeader({ className, ...props }: HTMLAttributes<HTMLDivElement>) {\n return <div className={cn('flex flex-col gap-2', className)} {...props} />;\n}\n\n/** The small \"01\" above a card title. */\nexport function CardNumeral({ className, ...props }: HTMLAttributes<HTMLSpanElement>) {\n return <span className={cn('oca-numeral block', className)} {...props} />;\n}\n\nexport function CardTitle({ className, ...props }: HTMLAttributes<HTMLHeadingElement>) {\n return <h3 className={cn('oca-title flex flex-wrap items-center gap-2.5', className)} {...props} />;\n}\n\nexport function CardDescription({ className, ...props }: HTMLAttributes<HTMLParagraphElement>) {\n return <p className={cn('oca-body', className)} {...props} />;\n}\n\nexport function CardContent({ className, ...props }: HTMLAttributes<HTMLDivElement>) {\n return <div className={cn('mt-5', className)} {...props} />;\n}\n\nexport function CardFooter({ className, ...props }: HTMLAttributes<HTMLDivElement>) {\n return <div className={cn('mt-6 flex flex-wrap items-center gap-3', className)} {...props} />;\n}\n","import type { ReactNode } from 'react';\n\nimport { cn } from '../lib/cn';\nimport { Badge } from '../primitives/badge';\nimport { Card, CardNumeral, CardTitle } from '../primitives/card';\n\nexport interface StepItem {\n title: ReactNode;\n body: ReactNode;\n /** A small pill beside the title (\"in testing\", \"on the path\"). */\n badge?: ReactNode;\n /** Overrides the automatic 01, 02, 03. */\n numeral?: ReactNode;\n}\n\nexport interface StepGridProps {\n items: StepItem[];\n /**\n * `cards` (white cards, \"Sign in. Earn. Own.\"), `plain` (open columns,\n * \"Ask for something a bot can't fake cheaply.\") or `ink` (dark cards,\n * \"Why partner now\"). Numerals are dropped on `ink`, as the deck does.\n */\n look?: 'cards' | 'plain' | 'ink';\n className?: string;\n}\n\nconst pad = (n: number) => String(n + 1).padStart(2, '0');\n\nexport function StepGrid({ items, look = 'cards', className }: StepGridProps) {\n const cols = items.length >= 3 ? 'md:grid-cols-3' : items.length === 2 ? 'md:grid-cols-2' : '';\n return (\n <ol className={cn('grid gap-4 md:gap-5', cols, className)}>\n {items.map((it, i) =>\n look === 'plain' ? (\n <li key={i} className=\"flex flex-col gap-3 pr-4\">\n <CardNumeral>{it.numeral ?? pad(i)}</CardNumeral>\n <CardTitle className=\"oca-title-sm\">\n {it.title}\n {it.badge ? <Badge>{it.badge}</Badge> : null}\n </CardTitle>\n <div className=\"oca-body text-[0.9375rem]\">{it.body}</div>\n </li>\n ) : look === 'ink' ? (\n <li key={i}>\n <Card tone=\"ink\" padding=\"md\" className=\"h-full\">\n <CardTitle className=\"text-oca-ink-title\">\n {it.title}\n {it.badge ? <Badge tone=\"onInk\">{it.badge}</Badge> : null}\n </CardTitle>\n <div className=\"mt-3 text-[1rem] leading-relaxed text-oca-ink-muted\">{it.body}</div>\n </Card>\n </li>\n ) : (\n <li key={i}>\n <Card padding=\"md\" className=\"flex h-full flex-col gap-3\">\n <CardNumeral>{it.numeral ?? pad(i)}</CardNumeral>\n <CardTitle>\n {it.title}\n {it.badge ? <Badge>{it.badge}</Badge> : null}\n </CardTitle>\n <div className=\"oca-body\">{it.body}</div>\n </Card>\n </li>\n )\n )}\n </ol>\n );\n}\n","import type { ReactNode } from 'react';\n\nimport { cn } from '../lib/cn';\n\n/*\n * The deck's \"What you get\" panel: a dark card of packages, each a peach title,\n * a coloured identifier and a // comment. The identifier's colour says what it\n * is, the way an editor would: a package, a component tag, a licence link.\n */\nexport interface PackageItem {\n title: ReactNode;\n /** The thing itself: an npm name, a JSX tag, a licence line. */\n code: ReactNode;\n kind?: 'package' | 'tag' | 'link';\n /** Rendered after `// `. */\n note?: ReactNode;\n href?: string;\n}\n\nconst KIND = {\n package: 'text-oca-code-package',\n tag: 'text-oca-code-tag',\n link: 'text-oca-code-link',\n} as const;\n\nexport function PackageCard({ items, className }: { items: PackageItem[]; className?: string }) {\n return (\n <div\n className={cn(\n 'grid gap-x-10 gap-y-7 rounded-[1.25rem] border border-oca-ink-line bg-oca-ink-card p-6 text-oca-ink-foreground md:grid-cols-2 md:p-9',\n className\n )}\n >\n {items.map((it, i) => {\n // Sou sets identifiers in the text face, not mono: they read as names here.\n const code = <span className={cn('text-[0.9375rem]', KIND[it.kind ?? 'package'])}>{it.code}</span>;\n return (\n <div key={i} className=\"flex min-w-0 flex-col gap-1.5\">\n <h3 className=\"text-[1.125rem] font-semibold tracking-[-0.01em] text-oca-ink-title\">{it.title}</h3>\n {it.href ? (\n <a href={it.href} className=\"w-fit underline decoration-transparent underline-offset-4 hover:decoration-current\">\n {code}\n </a>\n ) : (\n code\n )}\n {it.note ? (\n <p className=\"text-[0.9375rem] leading-relaxed text-oca-ink-subtle\">\n <span aria-hidden>{'// '}</span>\n {it.note}\n </p>\n ) : null}\n </div>\n );\n })}\n </div>\n );\n}\n\n/** A dark block of code with an optional caption, for snippets. */\nexport function CodeBlock({\n code,\n caption,\n className,\n}: {\n code: string;\n caption?: ReactNode;\n className?: string;\n}) {\n return (\n <figure className={cn('overflow-hidden rounded-[1.25rem] border border-oca-ink-line bg-oca-ink-card', className)}>\n {caption ? (\n <figcaption className=\"border-b border-oca-ink-line px-5 py-3 text-[0.8125rem] text-oca-ink-subtle\">\n {caption}\n </figcaption>\n ) : null}\n <pre className=\"overflow-x-auto p-5 font-mono text-[0.875rem] leading-relaxed text-oca-ink-muted\">\n <code>{code}</code>\n </pre>\n </figure>\n );\n}\n","import type { ReactNode } from 'react';\n\nimport { cn } from '../lib/cn';\n\n/*\n * Where a payment goes, as one bar: each segment's width is its share. Made for\n * the orange band (\"What it costs\"), where ink and white both clear contrast.\n */\nexport interface SplitSegment {\n pct: number;\n label: ReactNode;\n tone?: 'ink' | 'card';\n}\n\nexport function SplitBar({\n segments,\n caption,\n className,\n}: {\n segments: SplitSegment[];\n caption?: ReactNode;\n className?: string;\n}) {\n return (\n <figure className={cn('flex flex-col gap-5', className)}>\n {caption ? <figcaption className=\"text-[0.9375rem]\">{caption}</figcaption> : null}\n <div className=\"flex h-16 w-full gap-1.5 overflow-hidden rounded-[1.25rem] md:h-20\">\n {segments.map((s, i) => (\n <div\n key={i}\n className={cn(\n 'flex min-w-0 items-end rounded-[1rem] px-4 pb-3',\n s.tone === 'card' ? 'bg-white text-oca-ink' : 'bg-oca-ink text-white'\n )}\n style={{ flexBasis: `${s.pct}%` }}\n >\n <span className=\"oca-tabular text-[1.5rem] leading-none tracking-[-0.02em] md:text-[1.875rem]\">\n {s.pct}%\n </span>\n </div>\n ))}\n </div>\n <dl className=\"grid gap-x-8 gap-y-2 sm:grid-cols-2\">\n {segments.map((s, i) => (\n <div key={i} className=\"flex items-baseline gap-2.5\">\n <dt className=\"sr-only\">{s.pct}%</dt>\n <span\n aria-hidden\n className={cn(\n 'inline-block size-2.5 shrink-0 translate-y-[-1px] rounded-full',\n s.tone === 'card' ? 'bg-white' : 'bg-oca-ink'\n )}\n />\n <dd className=\"text-[0.9375rem] leading-snug\">{s.label}</dd>\n </div>\n ))}\n </dl>\n </figure>\n );\n}\n","import type { ReactNode } from 'react';\n\nimport { cn } from '../lib/cn';\n\n/*\n * \"What's true today.\" A two-column table: a status and what it covers. Sou's\n * note on the slide is the brief for this component: say it plainly; being\n * clear about what isn't done yet is part of the pitch. So the statuses are\n * fixed words, never icons, and a row cannot be written without one.\n */\nexport type TruthStatus = 'yes' | 'testing' | 'not-yet' | 'no';\n\nconst LABEL: Record<TruthStatus, string> = {\n yes: 'Yes',\n testing: 'In testing',\n 'not-yet': 'Not yet',\n no: 'No',\n};\n\nconst TONE: Record<TruthStatus, string> = {\n yes: 'text-oca-accent-ink',\n testing: 'text-foreground',\n 'not-yet': 'text-muted-foreground',\n no: 'text-muted-foreground',\n};\n\nexport interface TruthRow {\n status: TruthStatus;\n what: ReactNode;\n}\n\nexport function TruthTable({\n rows,\n statusHeading = 'Status',\n whatHeading = 'What',\n className,\n}: {\n rows: TruthRow[];\n statusHeading?: string;\n whatHeading?: string;\n className?: string;\n}) {\n return (\n <div className={cn('overflow-hidden rounded-xl border border-oca-hairline-strong', className)}>\n <table className=\"w-full border-collapse text-left text-[0.9375rem] md:text-[1rem]\">\n <thead className=\"bg-oca-table-head\">\n <tr>\n <th scope=\"col\" className=\"w-[30%] border-b border-oca-hairline-strong px-4 py-3 font-semibold md:w-[22%]\">\n {statusHeading}\n </th>\n <th scope=\"col\" className=\"border-b border-l border-oca-hairline-strong px-4 py-3 font-semibold\">\n {whatHeading}\n </th>\n </tr>\n </thead>\n <tbody className=\"bg-card\">\n {rows.map((r, i) => (\n <tr key={i} className=\"align-top\">\n <td\n className={cn(\n 'border-t border-oca-hairline-strong px-4 py-3 font-medium',\n i === 0 && 'border-t-0',\n TONE[r.status]\n )}\n >\n {LABEL[r.status]}\n </td>\n <td\n className={cn(\n 'border-l border-t border-oca-hairline-strong px-4 py-3 leading-relaxed',\n i === 0 && 'border-t-0'\n )}\n >\n {r.what}\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n );\n}\n","import type { HTMLAttributes } from 'react';\n\nimport { cn } from '../lib/cn';\n\n/*\n * Sats, always as whole integers with tabular figures. An amount nobody has\n * measured renders as \"—\" with \"unknown\" for screen readers, never as 0: a\n * missing balance shown as zero is a false statement about someone's money.\n */\n\nconst INT = new Intl.NumberFormat('en-US', { maximumFractionDigits: 0 });\nconst COMPACT = new Intl.NumberFormat('en-US', { notation: 'compact', maximumFractionDigits: 1 });\n\nexport interface SatsTextOptions {\n /** Append \" sats\" (default) or nothing. */\n unit?: 'sats' | 'none';\n /** 1.2K, 3.4M. For dense tables and charts only. */\n compact?: boolean;\n /** Prefix + for positive amounts (credits). */\n signed?: boolean;\n}\n\n/** A sats amount as text. Returns null for an unknown amount. */\nexport function satsText(value: number | null | undefined, opts: SatsTextOptions = {}): string | null {\n if (value == null || !Number.isFinite(value)) return null;\n const whole = Math.trunc(value);\n const body = (opts.compact ? COMPACT : INT).format(Math.abs(whole));\n const sign = whole < 0 ? '−' : opts.signed && whole > 0 ? '+' : '';\n const unit = opts.unit === 'none' ? '' : whole === 1 || whole === -1 ? ' sat' : ' sats';\n return `${sign}${body}${unit}`;\n}\n\nexport interface SatsProps extends Omit<HTMLAttributes<HTMLSpanElement>, 'children'>, SatsTextOptions {\n value: number | null | undefined;\n /** What to show for an unknown amount. */\n unknown?: string;\n}\n\nexport function Sats({ value, unit, compact, signed, unknown = '—', className, ...props }: SatsProps) {\n const text = satsText(value, { unit, compact, signed });\n if (text === null) {\n return (\n <span className={cn('oca-tabular text-muted-foreground', className)} {...props}>\n <span aria-hidden>{unknown}</span>\n <span className=\"sr-only\">unknown</span>\n </span>\n );\n }\n return (\n <span className={cn('oca-tabular whitespace-nowrap', className)} {...props}>\n {text}\n </span>\n );\n}\n\n/** \"≈ $12.34\" beside an amount, when a price is known. Renders nothing otherwise. */\nexport function UsdApprox({\n sats,\n usdPerBtc,\n className,\n}: {\n sats: number | null | undefined;\n usdPerBtc: number | null | undefined;\n className?: string;\n}) {\n if (sats == null || usdPerBtc == null || !Number.isFinite(sats) || !Number.isFinite(usdPerBtc)) return null;\n const usd = (sats / 1e8) * usdPerBtc;\n const text = new Intl.NumberFormat('en-US', {\n style: 'currency',\n currency: 'USD',\n maximumFractionDigits: usd < 1 ? 4 : 2,\n }).format(usd);\n return <span className={cn('oca-tabular text-muted-foreground', className)}>≈ {text}</span>;\n}\n\n/** A large figure with its label: balances, totals. */\nexport function SatsFigure({\n label,\n value,\n hint,\n className,\n}: {\n label: string;\n value: number | null | undefined;\n hint?: React.ReactNode;\n className?: string;\n}) {\n return (\n <div className={cn('flex flex-col gap-1.5', className)}>\n <span className=\"text-[0.9375rem] text-muted-foreground\">{label}</span>\n <span className=\"oca-display-3 oca-tabular\">\n <Sats value={value} unit=\"none\" />\n <span className=\"ml-2 text-[0.5em] tracking-normal text-muted-foreground\">sats</span>\n </span>\n {hint ? <span className=\"text-[0.875rem] text-muted-foreground\">{hint}</span> : null}\n </div>\n );\n}\n","import type { SVGProps } from 'react';\n\nimport { cn } from '../lib/cn';\n\n/*\n * The isometric check, measured from Sou's deck (slide 9) onto a 16×8 grid:\n * a chevron with a 3-unit short arm and a 5-unit long arm, one unit thick,\n * extruded two units. Three faces, three oranges.\n */\n\nconst TOP = '0,3 2,2 6,4 14,0 16,1 6,6';\nconst LEFT = '0,3 6,6 6,8 0,5';\nconst RIGHT = '6,6 16,1 16,3 6,8';\n\nexport const MARK_FACES = { top: '#FED8AB', left: '#FB933C', right: '#EA580B' } as const;\n\nexport interface MarkProps extends Omit<SVGProps<SVGSVGElement>, 'children'> {\n /** Accessible name. Omit to render the mark as decoration. */\n title?: string;\n /** Rendered width in px; height follows the 2:1 grid. */\n size?: number;\n}\n\nexport function Mark({ title, size, className, ...rest }: MarkProps) {\n return (\n <svg\n viewBox=\"0 0 16 8\"\n width={size}\n height={size ? size / 2 : undefined}\n role={title ? 'img' : undefined}\n aria-hidden={title ? undefined : true}\n className={cn('shrink-0', className)}\n {...rest}\n >\n {title ? <title>{title}</title> : null}\n <polygon points={LEFT} fill={MARK_FACES.left} />\n <polygon points={RIGHT} fill={MARK_FACES.right} />\n <polygon points={TOP} fill={MARK_FACES.top} />\n </svg>\n );\n}\n\nexport interface AppIconProps extends Omit<SVGProps<SVGSVGElement>, 'children'> {\n title?: string;\n size?: number;\n}\n\n/** The app icon: the mark on an ink squircle, as in the deck's lockup. */\nexport function AppIcon({ title, size = 32, className, ...rest }: AppIconProps) {\n return (\n <svg\n viewBox=\"0 0 24 24\"\n width={size}\n height={size}\n role={title ? 'img' : undefined}\n aria-hidden={title ? undefined : true}\n className={cn('shrink-0', className)}\n {...rest}\n >\n {title ? <title>{title}</title> : null}\n <rect\n width=\"24\"\n height=\"24\"\n rx=\"6.25\"\n style={{ fill: 'var(--oca-icon-tile, #0A0A0A)', stroke: 'var(--oca-icon-ring, transparent)' }}\n strokeWidth=\"0.5\"\n />\n <g transform=\"translate(4.25 8.1) scale(0.97)\">\n <polygon points={LEFT} fill={MARK_FACES.left} />\n <polygon points={RIGHT} fill={MARK_FACES.right} />\n <polygon points={TOP} fill={MARK_FACES.top} />\n </g>\n </svg>\n );\n}\n\nexport interface LockupProps {\n /** The word beside the icon. */\n name?: string;\n /** Icon size in px; the word scales with it. */\n size?: number;\n className?: string;\n}\n\n/** Icon and wordmark, lowercase, as the deck sets it. */\nexport function Lockup({ name = 'orangecheck', size = 28, className }: LockupProps) {\n return (\n <span\n className={cn('inline-flex items-center font-medium tracking-[-0.01em]', className)}\n style={{ gap: size * 0.32, fontSize: size * 0.56 }}\n >\n <AppIcon size={size} />\n <span>{name}</span>\n </span>\n );\n}\n","import { Check, Copy } from 'lucide-react';\nimport { useCallback, useEffect, useRef, useState, type HTMLAttributes, type ReactNode } from 'react';\n\nimport { cn } from '../lib/cn';\nimport { Mark } from '../brand/mark';\n\n/* ── Page header ─────────────────────────────────────────────────────── */\n\nexport function PageHeader({\n eyebrow,\n title,\n description,\n actions,\n className,\n}: {\n eyebrow?: ReactNode;\n title: ReactNode;\n description?: ReactNode;\n actions?: ReactNode;\n className?: string;\n}) {\n return (\n <header className={cn('flex flex-col gap-5 md:flex-row md:items-end md:justify-between', className)}>\n <div className=\"flex max-w-[44rem] flex-col gap-3\">\n {eyebrow ? <p className=\"oca-eyebrow\">{eyebrow}</p> : null}\n <h1 className=\"oca-display-3\">{title}</h1>\n {description ? <p className=\"oca-body text-[1.0625rem]\">{description}</p> : null}\n </div>\n {actions ? <div className=\"flex shrink-0 flex-wrap items-center gap-3\">{actions}</div> : null}\n </header>\n );\n}\n\n/* ── Stats ───────────────────────────────────────────────────────────── */\n\nexport function StatCard({\n label,\n value,\n hint,\n className,\n}: {\n label: ReactNode;\n value: ReactNode;\n hint?: ReactNode;\n className?: string;\n}) {\n return (\n <div className={cn('flex flex-col gap-2 rounded-[1.25rem] border border-border bg-card p-5 md:p-6', className)}>\n <span className=\"text-[0.875rem] text-muted-foreground\">{label}</span>\n <span className=\"oca-tabular text-[1.75rem] leading-tight tracking-[-0.02em]\">{value}</span>\n {hint ? <span className=\"text-[0.8125rem] leading-snug text-muted-foreground\">{hint}</span> : null}\n </div>\n );\n}\n\nexport function StatGrid({ className, ...props }: HTMLAttributes<HTMLDivElement>) {\n return <div className={cn('grid grid-cols-2 gap-3 md:grid-cols-4 md:gap-4', className)} {...props} />;\n}\n\n/* ── Key / value ─────────────────────────────────────────────────────── */\n\nexport interface KeyValueItem {\n label: ReactNode;\n value: ReactNode;\n mono?: boolean;\n}\n\nexport function KeyValueList({ items, className }: { items: KeyValueItem[]; className?: string }) {\n return (\n <dl className={cn('divide-y divide-border rounded-[1.25rem] border border-border bg-card', className)}>\n {items.map((it, i) => (\n <div key={i} className=\"flex flex-col gap-1 px-5 py-3.5 sm:flex-row sm:items-baseline sm:gap-6\">\n <dt className=\"shrink-0 text-[0.875rem] text-muted-foreground sm:w-48\">{it.label}</dt>\n <dd className={cn('min-w-0 break-words text-[0.9375rem]', it.mono && 'font-mono text-[0.875rem]')}>\n {it.value}\n </dd>\n </div>\n ))}\n </dl>\n );\n}\n\n/* ── Table ───────────────────────────────────────────────────────────── */\n\nexport interface Column<T> {\n key: string;\n header: ReactNode;\n cell: (row: T) => ReactNode;\n align?: 'start' | 'end';\n /** Hide below md. */\n wide?: boolean;\n}\n\nexport function DataTable<T>({\n columns,\n rows,\n rowKey,\n empty,\n caption,\n className,\n}: {\n columns: Column<T>[];\n rows: T[];\n rowKey: (row: T, i: number) => string;\n empty?: ReactNode;\n caption?: string;\n className?: string;\n}) {\n if (rows.length === 0 && empty) return <>{empty}</>;\n return (\n <div className={cn('overflow-x-auto rounded-[1.25rem] border border-border bg-card', className)}>\n <table className=\"w-full border-collapse text-left text-[0.9375rem]\">\n {caption ? <caption className=\"sr-only\">{caption}</caption> : null}\n <thead>\n <tr className=\"border-b border-border\">\n {columns.map((c) => (\n <th\n key={c.key}\n scope=\"col\"\n className={cn(\n 'whitespace-nowrap px-5 py-3 text-[0.8125rem] font-medium text-muted-foreground',\n c.align === 'end' && 'text-right',\n c.wide && 'hidden md:table-cell'\n )}\n >\n {c.header}\n </th>\n ))}\n </tr>\n </thead>\n <tbody className=\"divide-y divide-border\">\n {rows.map((r, i) => (\n <tr key={rowKey(r, i)} className=\"transition-colors hover:bg-accent/60\">\n {columns.map((c) => (\n <td\n key={c.key}\n className={cn(\n 'px-5 py-3.5 align-middle',\n c.align === 'end' && 'text-right',\n c.wide && 'hidden md:table-cell'\n )}\n >\n {c.cell(r)}\n </td>\n ))}\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n );\n}\n\n/* ── Empty, notice ───────────────────────────────────────────────────── */\n\nexport function EmptyState({\n title,\n children,\n action,\n className,\n}: {\n title: ReactNode;\n children?: ReactNode;\n action?: ReactNode;\n className?: string;\n}) {\n return (\n <div\n className={cn(\n 'flex flex-col items-center gap-4 rounded-[1.25rem] border border-dashed border-oca-hairline-strong px-6 py-12 text-center',\n className\n )}\n >\n <Mark size={56} />\n <h3 className=\"oca-title-sm\">{title}</h3>\n {children ? <div className=\"oca-body max-w-md text-[0.9375rem]\">{children}</div> : null}\n {action ? <div className=\"mt-1 flex flex-wrap justify-center gap-3\">{action}</div> : null}\n </div>\n );\n}\n\ntype NoticeTone = 'neutral' | 'info' | 'success' | 'warning' | 'danger' | 'brand';\n\nconst NOTICE: Record<NoticeTone, string> = {\n neutral: 'border-border bg-card',\n info: 'border-[color-mix(in_oklab,var(--info)_30%,var(--border))] bg-[color-mix(in_oklab,var(--info)_6%,var(--card))]',\n success:\n 'border-[color-mix(in_oklab,var(--success)_30%,var(--border))] bg-[color-mix(in_oklab,var(--success)_6%,var(--card))]',\n warning:\n 'border-[color-mix(in_oklab,var(--warning)_35%,var(--border))] bg-[color-mix(in_oklab,var(--warning)_7%,var(--card))]',\n danger:\n 'border-[color-mix(in_oklab,var(--destructive)_32%,var(--border))] bg-[color-mix(in_oklab,var(--destructive)_6%,var(--card))]',\n brand: 'border-[color-mix(in_oklab,var(--oca-orange)_35%,var(--border))] bg-[color-mix(in_oklab,var(--oca-orange)_7%,var(--card))]',\n};\n\nconst NOTICE_TITLE: Record<NoticeTone, string> = {\n neutral: 'text-foreground',\n info: 'text-info',\n success: 'text-success',\n warning: 'text-warning',\n danger: 'text-destructive',\n brand: 'text-oca-accent-ink',\n};\n\nexport function Notice({\n tone = 'neutral',\n title,\n children,\n action,\n className,\n}: {\n tone?: NoticeTone;\n title?: ReactNode;\n children?: ReactNode;\n action?: ReactNode;\n className?: string;\n}) {\n return (\n <div\n role={tone === 'danger' || tone === 'warning' ? 'alert' : 'note'}\n className={cn(\n 'flex flex-col gap-3 rounded-2xl border px-5 py-4 sm:flex-row sm:items-start sm:justify-between',\n NOTICE[tone],\n className\n )}\n >\n <div className=\"flex min-w-0 flex-col gap-1\">\n {title ? <p className={cn('text-[0.9375rem] font-medium', NOTICE_TITLE[tone])}>{title}</p> : null}\n {children ? <div className=\"text-[0.9375rem] leading-relaxed text-foreground/85\">{children}</div> : null}\n </div>\n {action ? <div className=\"shrink-0\">{action}</div> : null}\n </div>\n );\n}\n\n/* ── Hashes, addresses, ids ──────────────────────────────────────────── */\n\nfunction middle(v: string, head: number, tail: number) {\n return v.length <= head + tail + 1 ? v : `${v.slice(0, head)}…${v.slice(-tail)}`;\n}\n\nexport function useCopy(timeoutMs = 1600) {\n const [copied, setCopied] = useState(false);\n const t = useRef<ReturnType<typeof setTimeout> | null>(null);\n useEffect(() => () => {\n if (t.current) clearTimeout(t.current);\n }, []);\n const copy = useCallback(\n async (text: string) => {\n try {\n await navigator.clipboard.writeText(text);\n setCopied(true);\n if (t.current) clearTimeout(t.current);\n t.current = setTimeout(() => setCopied(false), timeoutMs);\n } catch {\n setCopied(false);\n }\n },\n [timeoutMs]\n );\n return { copied, copy };\n}\n\nexport function CopyButton({ value, label = 'Copy', className }: { value: string; label?: string; className?: string }) {\n const { copied, copy } = useCopy();\n return (\n <button\n type=\"button\"\n onClick={() => void copy(value)}\n aria-label={copied ? 'Copied' : label}\n className={cn(\n 'inline-flex size-8 shrink-0 items-center justify-center rounded-full text-muted-foreground transition-colors hover:bg-accent hover:text-foreground',\n className\n )}\n >\n {copied ? <Check className=\"size-4 text-success\" /> : <Copy className=\"size-4\" />}\n <span aria-live=\"polite\" className=\"sr-only\">\n {copied ? 'Copied' : ''}\n </span>\n </button>\n );\n}\n\n/** A long identifier shown as head…tail in mono, with copy. The full value is\n * the title and the copied text, never lost to the truncation. */\nexport function HashChip({\n value,\n head = 8,\n tail = 6,\n copy = true,\n href,\n className,\n}: {\n value: string;\n head?: number;\n tail?: number;\n copy?: boolean;\n href?: string;\n className?: string;\n}) {\n const shown = middle(value, head, tail);\n const text = (\n <span title={value} className=\"font-mono text-[0.875rem]\">\n {shown}\n </span>\n );\n return (\n <span className={cn('inline-flex max-w-full items-center gap-1', className)}>\n {href ? (\n <a href={href} className=\"underline decoration-border underline-offset-4 hover:decoration-foreground\">\n {text}\n </a>\n ) : (\n text\n )}\n {copy ? <CopyButton value={value} label=\"Copy full value\" /> : null}\n </span>\n );\n}\n\n/* ── Progress ────────────────────────────────────────────────────────── */\n\nexport type StepState = 'done' | 'current' | 'upcoming' | 'blocked';\n\nexport interface ProgressStep {\n label: ReactNode;\n hint?: ReactNode;\n state: StepState;\n}\n\nexport function ProgressSteps({ steps, className }: { steps: ProgressStep[]; className?: string }) {\n return (\n <ol className={cn('flex flex-col gap-0', className)}>\n {steps.map((s, i) => {\n const last = i === steps.length - 1;\n return (\n <li key={i} className=\"relative flex gap-4 pb-6 last:pb-0\" aria-current={s.state === 'current' ? 'step' : undefined}>\n {!last ? (\n <span\n aria-hidden\n className={cn(\n 'absolute left-[11px] top-7 h-[calc(100%-1.5rem)] w-px',\n s.state === 'done' ? 'bg-foreground/30' : 'bg-border'\n )}\n />\n ) : null}\n <span\n className={cn(\n 'relative z-10 mt-0.5 flex size-6 shrink-0 items-center justify-center rounded-full border text-[0.75rem] oca-tabular',\n s.state === 'done' && 'border-primary bg-primary text-primary-foreground',\n s.state === 'current' && 'border-brand bg-card text-oca-accent-ink',\n s.state === 'upcoming' && 'border-border bg-card text-muted-foreground',\n s.state === 'blocked' && 'border-destructive bg-card text-destructive'\n )}\n >\n {s.state === 'done' ? <Check className=\"size-3.5\" strokeWidth={3} /> : String(i + 1).padStart(2, '0')}\n </span>\n <div className=\"flex min-w-0 flex-col gap-1\">\n <span className={cn('text-[0.9375rem]', s.state === 'upcoming' ? 'text-muted-foreground' : 'font-medium')}>\n {s.label}\n </span>\n {s.hint ? <span className=\"text-[0.875rem] leading-snug text-muted-foreground\">{s.hint}</span> : null}\n </div>\n </li>\n );\n })}\n </ol>\n );\n}\n\n/* ── Activity ────────────────────────────────────────────────────────── */\n\nexport interface ActivityItem {\n id: string;\n title: ReactNode;\n meta?: ReactNode;\n trailing?: ReactNode;\n href?: string;\n}\n\nexport function ActivityList({ items, empty, className }: { items: ActivityItem[]; empty?: ReactNode; className?: string }) {\n if (items.length === 0 && empty) return <>{empty}</>;\n return (\n <ul className={cn('divide-y divide-border rounded-[1.25rem] border border-border bg-card', className)}>\n {items.map((it) => {\n const body = (\n <div className=\"flex items-center justify-between gap-4 px-5 py-4\">\n <div className=\"flex min-w-0 flex-col gap-0.5\">\n <span className=\"truncate text-[0.9375rem]\">{it.title}</span>\n {it.meta ? <span className=\"truncate text-[0.8125rem] text-muted-foreground\">{it.meta}</span> : null}\n </div>\n {it.trailing ? <div className=\"shrink-0 text-right\">{it.trailing}</div> : null}\n </div>\n );\n return (\n <li key={it.id}>\n {it.href ? (\n <a href={it.href} className=\"block transition-colors hover:bg-accent/60\">\n {body}\n </a>\n ) : (\n body\n )}\n </li>\n );\n })}\n </ul>\n );\n}\n"]}
1
+ {"version":3,"sources":["../src/lib/cn.ts","../src/components/typography.tsx","../src/components/section.tsx","../src/primitives/badge.tsx","../src/primitives/card.tsx","../src/components/steps.tsx","../src/components/code-card.tsx","../src/components/split-bar.tsx","../src/components/truth-table.tsx","../src/components/money.tsx","../src/brand/mark.tsx","../src/components/data.tsx"],"names":["extendTailwindMerge","clsx","jsx","createElement","cva","forwardRef","Card","jsxs","Fragment","useState","useRef","useEffect","useCallback","Check","Copy"],"mappings":"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","file":"components.js","sourcesContent":["import { clsx, type ClassValue } from 'clsx';\nimport { extendTailwindMerge } from 'tailwind-merge';\n\n// tailwind-merge would treat `oca-display-1` and `text-foreground` as the same\n// group and drop one; teach it the package's own type utilities.\nconst merge = extendTailwindMerge<'oca-type'>({\n extend: {\n classGroups: {\n 'oca-type': [\n 'oca-display-1',\n 'oca-display-2',\n 'oca-display-3',\n 'oca-title',\n 'oca-title-sm',\n 'oca-eyebrow',\n 'oca-lead',\n 'oca-body',\n 'oca-numeral',\n ],\n },\n },\n});\n\nexport function cn(...inputs: ClassValue[]): string {\n return merge(clsx(inputs));\n}\n","import { createElement, type HTMLAttributes, type ReactNode } from 'react';\n\nimport { cn } from '../lib/cn';\n\n/** The small orange line above a heading (\"How it works\", \"The honest version\"). */\nexport function Eyebrow({ className, onInk, ...props }: HTMLAttributes<HTMLParagraphElement> & { onInk?: boolean }) {\n return <p className={cn('oca-eyebrow', onInk && 'text-oca-ink-eyebrow', className)} {...props} />;\n}\n\ntype DisplayLevel = 1 | 2 | 3;\n\nexport interface DisplayProps extends HTMLAttributes<HTMLHeadingElement> {\n /** Visual size. The element follows unless `as` says otherwise. */\n level?: DisplayLevel;\n as?: 'h1' | 'h2' | 'h3' | 'p';\n}\n\n/** Headlines: regular weight, tight, balanced. */\nexport function Display({ level = 2, as, className, ...props }: DisplayProps) {\n const tag = as ?? (`h${level}` as const);\n return createElement(tag, { className: cn(`oca-display-${level}`, className), ...props });\n}\n\n/** The one orange word (\"cost something *real*.\"). Display sizes only: as small\n * text this orange would fail contrast. */\nexport function Accent({ children, className }: { children: ReactNode; className?: string }) {\n return <span className={cn('text-oca-accent-display', className)}>{children}</span>;\n}\n\nexport function Lead({ className, ...props }: HTMLAttributes<HTMLParagraphElement>) {\n return <p className={cn('oca-lead max-w-[40rem]', className)} {...props} />;\n}\n\n/** Fine print under a section (\"Who holds what today: …\"). */\nexport function Footnote({ className, ...props }: HTMLAttributes<HTMLParagraphElement>) {\n return <p className={cn('text-[0.9375rem] text-muted-foreground', className)} {...props} />;\n}\n\n/** Body copy for long-form pages: measured line length, calm rhythm. */\nexport function Prose({ className, ...props }: HTMLAttributes<HTMLDivElement>) {\n return (\n <div\n className={cn(\n 'max-w-[42rem] text-[1.0625rem] leading-[1.7] text-muted-foreground',\n '[&_h2]:oca-display-3 [&_h2]:mb-4 [&_h2]:mt-14 [&_h2]:text-foreground',\n '[&_h3]:oca-title [&_h3]:mb-3 [&_h3]:mt-10 [&_h3]:text-foreground',\n '[&_p]:my-4 [&_strong]:font-medium [&_strong]:text-foreground',\n '[&_a]:text-foreground [&_a]:underline [&_a]:decoration-border [&_a]:underline-offset-4 hover:[&_a]:decoration-foreground',\n '[&_ul]:my-4 [&_ul]:list-disc [&_ul]:pl-5 [&_li]:my-1.5 [&_code]:text-foreground',\n className\n )}\n {...props}\n />\n );\n}\n","import { cva, type VariantProps } from 'class-variance-authority';\nimport type { HTMLAttributes } from 'react';\n\nimport { cn } from '../lib/cn';\n\n/*\n * The deck alternates three grounds: the light canvas, the ink band and the\n * orange band. A section owns its ground edge to edge and its content sits in\n * the container. On the orange band text is ink, never white (2.9:1).\n */\n// overflow-x: clip, not hidden: decoration may not widen the page, and a sticky\n// child still sticks.\nexport const sectionVariants = cva('relative w-full overflow-x-clip', {\n variants: {\n tone: {\n canvas: 'bg-background text-foreground',\n card: 'bg-card text-card-foreground',\n ink: 'bg-oca-ink text-oca-ink-foreground',\n brand: 'bg-brand text-brand-foreground',\n },\n space: {\n none: '',\n sm: 'py-12 md:py-16',\n md: 'oca-section',\n lg: 'py-24 md:py-40',\n },\n },\n defaultVariants: { tone: 'canvas', space: 'md' },\n});\n\nexport interface SectionProps extends HTMLAttributes<HTMLElement>, VariantProps<typeof sectionVariants> {\n /** Put children in the standard container. Default true. */\n contained?: boolean;\n}\n\nexport function Section({ tone, space, contained = true, className, children, ...props }: SectionProps) {\n return (\n <section className={cn(sectionVariants({ tone, space }), className)} {...props}>\n {contained ? <div className=\"oca-container\">{children}</div> : children}\n </section>\n );\n}\n\nexport function Container({ className, ...props }: HTMLAttributes<HTMLDivElement>) {\n return <div className={cn('oca-container', className)} {...props} />;\n}\n\n/** Eyebrow + headline + lead, the opening of every deck slide. */\nexport function SectionIntro({\n className,\n align = 'start',\n ...props\n}: HTMLAttributes<HTMLDivElement> & { align?: 'start' | 'center' }) {\n return (\n <div\n className={cn(\n 'flex flex-col gap-4 md:gap-5',\n align === 'center' && 'mx-auto items-center text-center',\n className\n )}\n {...props}\n />\n );\n}\n","import { cva, type VariantProps } from 'class-variance-authority';\nimport type { HTMLAttributes } from 'react';\n\nimport { cn } from '../lib/cn';\n\n/*\n * The small white pill from the deck (\"in testing\", \"on the path\"), plus soft\n * status tints. Text stays on the token that clears 4.5:1 against its tint.\n */\nexport const badgeVariants = cva(\n 'inline-flex h-6 shrink-0 items-center gap-1.5 whitespace-nowrap rounded-full border px-2.5 text-[0.8125rem] font-medium leading-none',\n {\n variants: {\n tone: {\n neutral: 'border-border bg-card text-foreground',\n muted: 'border-transparent bg-muted text-muted-foreground',\n brand: 'border-transparent bg-[color-mix(in_oklab,var(--oca-orange)_12%,var(--card))] text-oca-accent-ink',\n success: 'border-transparent bg-[color-mix(in_oklab,var(--success)_12%,var(--card))] text-success',\n warning: 'border-transparent bg-[color-mix(in_oklab,var(--warning)_14%,var(--card))] text-warning',\n danger: 'border-transparent bg-[color-mix(in_oklab,var(--destructive)_12%,var(--card))] text-destructive',\n info: 'border-transparent bg-[color-mix(in_oklab,var(--info)_12%,var(--card))] text-info',\n ink: 'border-transparent bg-oca-ink text-oca-ink-foreground',\n onInk: 'border-white/15 bg-white/5 text-white/90',\n },\n },\n defaultVariants: { tone: 'neutral' },\n }\n);\n\nexport interface BadgeProps extends HTMLAttributes<HTMLSpanElement>, VariantProps<typeof badgeVariants> {}\n\nexport function Badge({ className, tone, ...props }: BadgeProps) {\n return <span data-ui=\"badge\" className={cn(badgeVariants({ tone }), className)} {...props} />;\n}\n\n/** A pill with a live dot: where something stands right now (\"In testing · payouts start after\"). */\nexport function StatusPill({\n className,\n children,\n pulse = true,\n ...props\n}: HTMLAttributes<HTMLSpanElement> & { pulse?: boolean }) {\n return (\n <span\n data-ui=\"status-pill\"\n className={cn(\n 'inline-flex min-h-8 w-fit items-center gap-2.5 rounded-full border border-border bg-card py-1 pl-3 pr-3.5 text-[0.875rem] leading-snug text-foreground',\n className\n )}\n {...props}\n >\n <span aria-hidden className=\"relative flex size-2 shrink-0\">\n {pulse ? (\n <span className=\"absolute inset-0 rounded-full bg-oca-orange opacity-50 motion-safe:animate-ping\" />\n ) : null}\n <span className=\"relative size-2 rounded-full bg-oca-orange\" />\n </span>\n {children}\n </span>\n );\n}\n","import { cva, type VariantProps } from 'class-variance-authority';\nimport { forwardRef, type HTMLAttributes } from 'react';\n\nimport { cn } from '../lib/cn';\n\n/*\n * White on the canvas with one hairline and a generous radius; no shadow. The\n * `ink` card is the deck's #1E1E1E panel, dark in both modes.\n */\nexport const cardVariants = cva('relative rounded-[1.25rem] border', {\n variants: {\n tone: {\n default: 'border-border bg-card text-card-foreground',\n sunken: 'border-transparent bg-muted text-foreground',\n ink: 'border-oca-ink-line bg-oca-ink-card text-oca-ink-foreground',\n outline: 'border-border bg-transparent text-foreground',\n },\n padding: {\n none: '',\n sm: 'p-5',\n md: 'p-6 md:p-8',\n lg: 'p-8 md:p-10',\n },\n interactive: {\n true: 'transition-colors hover:border-oca-hairline-strong focus-within:border-oca-hairline-strong',\n false: '',\n },\n },\n defaultVariants: { tone: 'default', padding: 'md', interactive: false },\n});\n\nexport interface CardProps extends HTMLAttributes<HTMLDivElement>, VariantProps<typeof cardVariants> {}\n\nexport const Card = forwardRef<HTMLDivElement, CardProps>(function Card(\n { className, tone, padding, interactive, ...props },\n ref\n) {\n return (\n <div ref={ref} data-ui=\"card\" className={cn(cardVariants({ tone, padding, interactive }), className)} {...props} />\n );\n});\n\nexport function CardHeader({ className, ...props }: HTMLAttributes<HTMLDivElement>) {\n return <div className={cn('flex flex-col gap-2', className)} {...props} />;\n}\n\n/** The small \"01\" above a card title. */\nexport function CardNumeral({ className, ...props }: HTMLAttributes<HTMLSpanElement>) {\n return <span className={cn('oca-numeral block', className)} {...props} />;\n}\n\nexport function CardTitle({ className, ...props }: HTMLAttributes<HTMLHeadingElement>) {\n return <h3 className={cn('oca-title flex flex-wrap items-center gap-2.5', className)} {...props} />;\n}\n\nexport function CardDescription({ className, ...props }: HTMLAttributes<HTMLParagraphElement>) {\n return <p className={cn('oca-body', className)} {...props} />;\n}\n\nexport function CardContent({ className, ...props }: HTMLAttributes<HTMLDivElement>) {\n return <div className={cn('mt-5', className)} {...props} />;\n}\n\nexport function CardFooter({ className, ...props }: HTMLAttributes<HTMLDivElement>) {\n return <div className={cn('mt-6 flex flex-wrap items-center gap-3', className)} {...props} />;\n}\n","import type { ReactNode } from 'react';\n\nimport { cn } from '../lib/cn';\nimport { Badge } from '../primitives/badge';\nimport { Card, CardNumeral, CardTitle } from '../primitives/card';\n\nexport interface StepItem {\n title: ReactNode;\n body: ReactNode;\n /** A small pill beside the title (\"in testing\", \"on the path\"). */\n badge?: ReactNode;\n /** Overrides the automatic 01, 02, 03. */\n numeral?: ReactNode;\n}\n\nexport interface StepGridProps {\n items: StepItem[];\n /**\n * `cards` (white cards, \"Sign in. Earn. Own.\"), `plain` (open columns,\n * \"Ask for something a bot can't fake cheaply.\") or `ink` (dark cards,\n * \"Why partner now\"). Numerals are dropped on `ink`, as the deck does.\n */\n look?: 'cards' | 'plain' | 'ink';\n className?: string;\n}\n\nconst pad = (n: number) => String(n + 1).padStart(2, '0');\n\nexport function StepGrid({ items, look = 'cards', className }: StepGridProps) {\n const cols = items.length >= 3 ? 'md:grid-cols-3' : items.length === 2 ? 'md:grid-cols-2' : '';\n return (\n <ol className={cn('grid gap-4 md:gap-5', cols, className)}>\n {items.map((it, i) =>\n look === 'plain' ? (\n <li key={i} className=\"flex flex-col gap-3 pr-4\">\n <CardNumeral>{it.numeral ?? pad(i)}</CardNumeral>\n <CardTitle className=\"oca-title-sm\">\n {it.title}\n {it.badge ? <Badge>{it.badge}</Badge> : null}\n </CardTitle>\n <div className=\"oca-body text-[0.9375rem]\">{it.body}</div>\n </li>\n ) : look === 'ink' ? (\n <li key={i}>\n <Card tone=\"ink\" padding=\"md\" className=\"h-full\">\n <CardTitle className=\"text-oca-ink-title\">\n {it.title}\n {it.badge ? <Badge tone=\"onInk\">{it.badge}</Badge> : null}\n </CardTitle>\n <div className=\"mt-3 text-[1rem] leading-relaxed text-oca-ink-muted\">{it.body}</div>\n </Card>\n </li>\n ) : (\n <li key={i}>\n <Card padding=\"md\" className=\"flex h-full flex-col gap-3\">\n <CardNumeral>{it.numeral ?? pad(i)}</CardNumeral>\n <CardTitle>\n {it.title}\n {it.badge ? <Badge>{it.badge}</Badge> : null}\n </CardTitle>\n <div className=\"oca-body\">{it.body}</div>\n </Card>\n </li>\n )\n )}\n </ol>\n );\n}\n","import type { ReactNode } from 'react';\n\nimport { cn } from '../lib/cn';\n\n/*\n * The deck's \"What you get\" panel: a dark card of packages, each a peach title,\n * a coloured identifier and a // comment. The identifier's colour says what it\n * is, the way an editor would: a package, a component tag, a licence link.\n */\nexport interface PackageItem {\n title: ReactNode;\n /** The thing itself: an npm name, a JSX tag, a licence line. */\n code: ReactNode;\n kind?: 'package' | 'tag' | 'link';\n /** Rendered after `// `. */\n note?: ReactNode;\n href?: string;\n}\n\nconst KIND = {\n package: 'text-oca-code-package',\n tag: 'text-oca-code-tag',\n link: 'text-oca-code-link',\n} as const;\n\nexport function PackageCard({ items, className }: { items: PackageItem[]; className?: string }) {\n return (\n <div\n className={cn(\n 'grid gap-x-10 gap-y-7 rounded-[1.25rem] border border-oca-ink-line bg-oca-ink-card p-6 text-oca-ink-foreground md:grid-cols-2 md:p-9',\n className\n )}\n >\n {items.map((it, i) => {\n // Sou sets identifiers in the text face, not mono: they read as names here.\n const code = <span className={cn('text-[0.9375rem]', KIND[it.kind ?? 'package'])}>{it.code}</span>;\n return (\n <div key={i} className=\"flex min-w-0 flex-col gap-1.5\">\n <h3 className=\"text-[1.125rem] font-semibold tracking-[-0.01em] text-oca-ink-title\">{it.title}</h3>\n {it.href ? (\n <a href={it.href} className=\"w-fit underline decoration-transparent underline-offset-4 hover:decoration-current\">\n {code}\n </a>\n ) : (\n code\n )}\n {it.note ? (\n <p className=\"text-[0.9375rem] leading-relaxed text-oca-ink-subtle\">\n <span aria-hidden>{'// '}</span>\n {it.note}\n </p>\n ) : null}\n </div>\n );\n })}\n </div>\n );\n}\n\n/** A dark block of code with an optional caption, for snippets. */\nexport function CodeBlock({\n code,\n caption,\n className,\n}: {\n code: string;\n caption?: ReactNode;\n className?: string;\n}) {\n return (\n <figure className={cn('overflow-hidden rounded-[1.25rem] border border-oca-ink-line bg-oca-ink-card', className)}>\n {caption ? (\n <figcaption className=\"border-b border-oca-ink-line px-5 py-3 text-[0.8125rem] text-oca-ink-subtle\">\n {caption}\n </figcaption>\n ) : null}\n <pre className=\"overflow-x-auto p-5 font-mono text-[0.875rem] leading-relaxed text-oca-ink-muted\">\n <code>{code}</code>\n </pre>\n </figure>\n );\n}\n","import type { ReactNode } from 'react';\n\nimport { cn } from '../lib/cn';\n\n/*\n * Where a payment goes, as one bar: each segment's width is its share. Made for\n * the orange band (\"What it costs\"), where ink and white both clear contrast.\n */\nexport interface SplitSegment {\n pct: number;\n label: ReactNode;\n tone?: 'ink' | 'card';\n}\n\nexport function SplitBar({\n segments,\n caption,\n className,\n}: {\n segments: SplitSegment[];\n caption?: ReactNode;\n className?: string;\n}) {\n return (\n <figure className={cn('flex flex-col gap-5', className)}>\n {caption ? <figcaption className=\"text-[0.9375rem]\">{caption}</figcaption> : null}\n <div className=\"flex h-16 w-full gap-1.5 overflow-hidden rounded-[1.25rem] md:h-20\">\n {segments.map((s, i) => (\n <div\n key={i}\n className={cn(\n 'flex min-w-[4.25rem] items-end rounded-[1rem] px-3 pb-2.5 md:px-4 md:pb-3',\n s.tone === 'card' ? 'bg-white text-oca-ink' : 'bg-oca-ink text-white'\n )}\n style={{ flexBasis: `${s.pct}%` }}\n >\n <span className=\"oca-tabular text-[1.25rem] leading-none tracking-[-0.02em] md:text-[1.875rem]\">\n {s.pct}%\n </span>\n </div>\n ))}\n </div>\n <dl className=\"grid gap-x-8 gap-y-2 sm:grid-cols-2\">\n {segments.map((s, i) => (\n <div key={i} className=\"flex items-baseline gap-2.5\">\n <dt className=\"sr-only\">{s.pct}%</dt>\n <span\n aria-hidden\n className={cn(\n 'inline-block size-2.5 shrink-0 translate-y-[-1px] rounded-full',\n s.tone === 'card' ? 'bg-white' : 'bg-oca-ink'\n )}\n />\n <dd className=\"text-[0.9375rem] leading-snug\">{s.label}</dd>\n </div>\n ))}\n </dl>\n </figure>\n );\n}\n","import type { ReactNode } from 'react';\n\nimport { cn } from '../lib/cn';\n\n/*\n * \"What's true today.\" A two-column table: a status and what it covers. Sou's\n * note on the slide is the brief for this component: say it plainly; being\n * clear about what isn't done yet is part of the pitch. So the statuses are\n * fixed words, never icons, and a row cannot be written without one.\n */\nexport type TruthStatus = 'yes' | 'testing' | 'not-yet' | 'no';\n\nconst LABEL: Record<TruthStatus, string> = {\n yes: 'Yes',\n testing: 'In testing',\n 'not-yet': 'Not yet',\n no: 'No',\n};\n\nconst TONE: Record<TruthStatus, string> = {\n yes: 'text-oca-accent-ink',\n testing: 'text-foreground',\n 'not-yet': 'text-muted-foreground',\n no: 'text-muted-foreground',\n};\n\nexport interface TruthRow {\n status: TruthStatus;\n what: ReactNode;\n}\n\nexport function TruthTable({\n rows,\n statusHeading = 'Status',\n whatHeading = 'What',\n className,\n}: {\n rows: TruthRow[];\n statusHeading?: string;\n whatHeading?: string;\n className?: string;\n}) {\n return (\n <div className={cn('overflow-hidden rounded-xl border border-oca-hairline-strong', className)}>\n <table className=\"w-full border-collapse text-left text-[0.9375rem] md:text-[1rem]\">\n <thead className=\"bg-oca-table-head\">\n <tr>\n <th scope=\"col\" className=\"w-[30%] border-b border-oca-hairline-strong px-4 py-3 font-semibold md:w-[22%]\">\n {statusHeading}\n </th>\n <th scope=\"col\" className=\"border-b border-l border-oca-hairline-strong px-4 py-3 font-semibold\">\n {whatHeading}\n </th>\n </tr>\n </thead>\n <tbody className=\"bg-card\">\n {rows.map((r, i) => (\n <tr key={i} className=\"align-top\">\n <td\n className={cn(\n 'border-t border-oca-hairline-strong px-4 py-3 font-medium',\n i === 0 && 'border-t-0',\n TONE[r.status]\n )}\n >\n {LABEL[r.status]}\n </td>\n <td\n className={cn(\n 'border-l border-t border-oca-hairline-strong px-4 py-3 leading-relaxed',\n i === 0 && 'border-t-0'\n )}\n >\n {r.what}\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n );\n}\n","import type { HTMLAttributes } from 'react';\n\nimport { cn } from '../lib/cn';\n\n/*\n * Sats, always as whole integers with tabular figures. An amount nobody has\n * measured renders as \"—\" with \"unknown\" for screen readers, never as 0: a\n * missing balance shown as zero is a false statement about someone's money.\n */\n\nconst INT = new Intl.NumberFormat('en-US', { maximumFractionDigits: 0 });\nconst COMPACT = new Intl.NumberFormat('en-US', { notation: 'compact', maximumFractionDigits: 1 });\n\nexport interface SatsTextOptions {\n /** Append \" sats\" (default) or nothing. */\n unit?: 'sats' | 'none';\n /** 1.2K, 3.4M. For dense tables and charts only. */\n compact?: boolean;\n /** Prefix + for positive amounts (credits). */\n signed?: boolean;\n}\n\n/** A sats amount as text. Returns null for an unknown amount. */\nexport function satsText(value: number | null | undefined, opts: SatsTextOptions = {}): string | null {\n if (value == null || !Number.isFinite(value)) return null;\n const whole = Math.trunc(value);\n const body = (opts.compact ? COMPACT : INT).format(Math.abs(whole));\n const sign = whole < 0 ? '−' : opts.signed && whole > 0 ? '+' : '';\n const unit = opts.unit === 'none' ? '' : whole === 1 || whole === -1 ? ' sat' : ' sats';\n return `${sign}${body}${unit}`;\n}\n\nexport interface SatsProps extends Omit<HTMLAttributes<HTMLSpanElement>, 'children'>, SatsTextOptions {\n value: number | null | undefined;\n /** What to show for an unknown amount. */\n unknown?: string;\n}\n\nexport function Sats({ value, unit, compact, signed, unknown = '—', className, ...props }: SatsProps) {\n const text = satsText(value, { unit, compact, signed });\n if (text === null) {\n return (\n <span className={cn('oca-tabular text-muted-foreground', className)} {...props}>\n <span aria-hidden>{unknown}</span>\n <span className=\"sr-only\">unknown</span>\n </span>\n );\n }\n return (\n <span className={cn('oca-tabular whitespace-nowrap', className)} {...props}>\n {text}\n </span>\n );\n}\n\n/** \"≈ $12.34\" beside an amount, when a price is known. Renders nothing otherwise. */\nexport function UsdApprox({\n sats,\n usdPerBtc,\n className,\n}: {\n sats: number | null | undefined;\n usdPerBtc: number | null | undefined;\n className?: string;\n}) {\n if (sats == null || usdPerBtc == null || !Number.isFinite(sats) || !Number.isFinite(usdPerBtc)) return null;\n const usd = (sats / 1e8) * usdPerBtc;\n const text = new Intl.NumberFormat('en-US', {\n style: 'currency',\n currency: 'USD',\n maximumFractionDigits: usd < 1 ? 4 : 2,\n }).format(usd);\n return <span className={cn('oca-tabular text-muted-foreground', className)}>≈ {text}</span>;\n}\n\n/** A large figure with its label: balances, totals. */\nexport function SatsFigure({\n label,\n value,\n hint,\n className,\n}: {\n label: string;\n value: number | null | undefined;\n hint?: React.ReactNode;\n className?: string;\n}) {\n return (\n <div className={cn('flex flex-col gap-1.5', className)}>\n <span className=\"text-[0.9375rem] text-muted-foreground\">{label}</span>\n <span className=\"oca-display-3 oca-tabular\">\n <Sats value={value} unit=\"none\" />\n <span className=\"ml-2 text-[0.5em] tracking-normal text-muted-foreground\">sats</span>\n </span>\n {hint ? <span className=\"text-[0.875rem] text-muted-foreground\">{hint}</span> : null}\n </div>\n );\n}\n","import type { SVGProps } from 'react';\n\nimport { cn } from '../lib/cn';\n\n/*\n * The isometric check, measured from Sou's deck (slide 9) onto a 16×8 grid:\n * a chevron with a 3-unit short arm and a 5-unit long arm, one unit thick,\n * extruded two units. Three faces, three oranges.\n */\n\nconst TOP = '0,3 2,2 6,4 14,0 16,1 6,6';\nconst LEFT = '0,3 6,6 6,8 0,5';\nconst RIGHT = '6,6 16,1 16,3 6,8';\n\nexport const MARK_FACES = { top: '#FED8AB', left: '#FB933C', right: '#EA580B' } as const;\n\nexport interface MarkProps extends Omit<SVGProps<SVGSVGElement>, 'children'> {\n /** Accessible name. Omit to render the mark as decoration. */\n title?: string;\n /** Rendered width in px; height follows the 2:1 grid. */\n size?: number;\n}\n\nexport function Mark({ title, size, className, ...rest }: MarkProps) {\n return (\n <svg\n viewBox=\"0 0 16 8\"\n width={size}\n height={size ? size / 2 : undefined}\n role={title ? 'img' : undefined}\n aria-hidden={title ? undefined : true}\n className={cn('shrink-0', className)}\n {...rest}\n >\n {title ? <title>{title}</title> : null}\n <polygon points={LEFT} fill={MARK_FACES.left} />\n <polygon points={RIGHT} fill={MARK_FACES.right} />\n <polygon points={TOP} fill={MARK_FACES.top} />\n </svg>\n );\n}\n\nexport interface AppIconProps extends Omit<SVGProps<SVGSVGElement>, 'children'> {\n title?: string;\n size?: number;\n}\n\n/** The app icon: the mark on an ink squircle, as in the deck's lockup. */\nexport function AppIcon({ title, size = 32, className, ...rest }: AppIconProps) {\n return (\n <svg\n viewBox=\"0 0 24 24\"\n width={size}\n height={size}\n role={title ? 'img' : undefined}\n aria-hidden={title ? undefined : true}\n className={cn('shrink-0', className)}\n {...rest}\n >\n {title ? <title>{title}</title> : null}\n <rect\n width=\"24\"\n height=\"24\"\n rx=\"6.25\"\n style={{ fill: 'var(--oca-icon-tile, #0A0A0A)', stroke: 'var(--oca-icon-ring, transparent)' }}\n strokeWidth=\"0.5\"\n />\n <g transform=\"translate(4.25 8.1) scale(0.97)\">\n <polygon points={LEFT} fill={MARK_FACES.left} />\n <polygon points={RIGHT} fill={MARK_FACES.right} />\n <polygon points={TOP} fill={MARK_FACES.top} />\n </g>\n </svg>\n );\n}\n\nexport interface LockupProps {\n /** The word beside the icon. */\n name?: string;\n /** Icon size in px; the word scales with it. */\n size?: number;\n className?: string;\n}\n\n/** Icon and wordmark, lowercase, as the deck sets it. */\nexport function Lockup({ name = 'orangecheck', size = 28, className }: LockupProps) {\n return (\n <span\n className={cn('inline-flex items-center font-medium tracking-[-0.01em]', className)}\n style={{ gap: size * 0.32, fontSize: size * 0.56 }}\n >\n <AppIcon size={size} />\n <span>{name}</span>\n </span>\n );\n}\n","import { Check, Copy } from 'lucide-react';\nimport { useCallback, useEffect, useRef, useState, type HTMLAttributes, type ReactNode } from 'react';\n\nimport { cn } from '../lib/cn';\nimport { Mark } from '../brand/mark';\n\n/* ── Page header ─────────────────────────────────────────────────────── */\n\nexport function PageHeader({\n eyebrow,\n title,\n description,\n actions,\n className,\n}: {\n eyebrow?: ReactNode;\n title: ReactNode;\n description?: ReactNode;\n actions?: ReactNode;\n className?: string;\n}) {\n return (\n <header className={cn('flex flex-col gap-5 md:flex-row md:items-end md:justify-between', className)}>\n <div className=\"flex max-w-[44rem] flex-col gap-3\">\n {eyebrow ? <p className=\"oca-eyebrow\">{eyebrow}</p> : null}\n <h1 className=\"oca-display-3\">{title}</h1>\n {description ? <p className=\"oca-body text-[1.0625rem]\">{description}</p> : null}\n </div>\n {actions ? <div className=\"flex shrink-0 flex-wrap items-center gap-3\">{actions}</div> : null}\n </header>\n );\n}\n\n/* ── Stats ───────────────────────────────────────────────────────────── */\n\nexport function StatCard({\n label,\n value,\n hint,\n className,\n}: {\n label: ReactNode;\n value: ReactNode;\n hint?: ReactNode;\n className?: string;\n}) {\n return (\n <div className={cn('flex flex-col gap-2 rounded-[1.25rem] border border-border bg-card p-5 md:p-6', className)}>\n <span className=\"text-[0.875rem] text-muted-foreground\">{label}</span>\n <span className=\"oca-tabular text-[1.75rem] leading-tight tracking-[-0.02em]\">{value}</span>\n {hint ? <span className=\"text-[0.8125rem] leading-snug text-muted-foreground\">{hint}</span> : null}\n </div>\n );\n}\n\nexport function StatGrid({ className, ...props }: HTMLAttributes<HTMLDivElement>) {\n return <div className={cn('grid grid-cols-2 gap-3 md:grid-cols-4 md:gap-4', className)} {...props} />;\n}\n\n/* ── Key / value ─────────────────────────────────────────────────────── */\n\nexport interface KeyValueItem {\n label: ReactNode;\n value: ReactNode;\n mono?: boolean;\n}\n\nexport function KeyValueList({ items, className }: { items: KeyValueItem[]; className?: string }) {\n return (\n <dl className={cn('divide-y divide-border rounded-[1.25rem] border border-border bg-card', className)}>\n {items.map((it, i) => (\n <div key={i} className=\"flex flex-col gap-1 px-5 py-3.5 sm:flex-row sm:items-baseline sm:gap-6\">\n <dt className=\"shrink-0 text-[0.875rem] text-muted-foreground sm:w-48\">{it.label}</dt>\n <dd className={cn('min-w-0 break-words text-[0.9375rem]', it.mono && 'font-mono text-[0.875rem]')}>\n {it.value}\n </dd>\n </div>\n ))}\n </dl>\n );\n}\n\n/* ── Table ───────────────────────────────────────────────────────────── */\n\nexport interface Column<T> {\n key: string;\n header: ReactNode;\n cell: (row: T) => ReactNode;\n align?: 'start' | 'end';\n /** Hide below md. */\n wide?: boolean;\n}\n\nexport function DataTable<T>({\n columns,\n rows,\n rowKey,\n empty,\n caption,\n className,\n}: {\n columns: Column<T>[];\n rows: T[];\n rowKey: (row: T, i: number) => string;\n empty?: ReactNode;\n caption?: string;\n className?: string;\n}) {\n if (rows.length === 0 && empty) return <>{empty}</>;\n return (\n <div className={cn('overflow-x-auto rounded-[1.25rem] border border-border bg-card', className)}>\n <table className=\"w-full border-collapse text-left text-[0.9375rem]\">\n {caption ? <caption className=\"sr-only\">{caption}</caption> : null}\n <thead>\n <tr className=\"border-b border-border\">\n {columns.map((c) => (\n <th\n key={c.key}\n scope=\"col\"\n className={cn(\n 'whitespace-nowrap px-5 py-3 text-[0.8125rem] font-medium text-muted-foreground',\n c.align === 'end' && 'text-right',\n c.wide && 'hidden md:table-cell'\n )}\n >\n {c.header}\n </th>\n ))}\n </tr>\n </thead>\n <tbody className=\"divide-y divide-border\">\n {rows.map((r, i) => (\n <tr key={rowKey(r, i)} className=\"transition-colors hover:bg-accent/60\">\n {columns.map((c) => (\n <td\n key={c.key}\n className={cn(\n 'px-5 py-3.5 align-middle',\n c.align === 'end' && 'text-right',\n c.wide && 'hidden md:table-cell'\n )}\n >\n {c.cell(r)}\n </td>\n ))}\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n );\n}\n\n/* ── Empty, notice ───────────────────────────────────────────────────── */\n\nexport function EmptyState({\n title,\n children,\n action,\n className,\n}: {\n title: ReactNode;\n children?: ReactNode;\n action?: ReactNode;\n className?: string;\n}) {\n return (\n <div\n className={cn(\n 'flex flex-col items-center gap-4 rounded-[1.25rem] border border-dashed border-oca-hairline-strong px-6 py-12 text-center',\n className\n )}\n >\n <Mark size={56} />\n <h3 className=\"oca-title-sm\">{title}</h3>\n {children ? <div className=\"oca-body max-w-md text-[0.9375rem]\">{children}</div> : null}\n {action ? <div className=\"mt-1 flex flex-wrap justify-center gap-3\">{action}</div> : null}\n </div>\n );\n}\n\ntype NoticeTone = 'neutral' | 'info' | 'success' | 'warning' | 'danger' | 'brand';\n\nconst NOTICE: Record<NoticeTone, string> = {\n neutral: 'border-border bg-card',\n info: 'border-[color-mix(in_oklab,var(--info)_30%,var(--border))] bg-[color-mix(in_oklab,var(--info)_6%,var(--card))]',\n success:\n 'border-[color-mix(in_oklab,var(--success)_30%,var(--border))] bg-[color-mix(in_oklab,var(--success)_6%,var(--card))]',\n warning:\n 'border-[color-mix(in_oklab,var(--warning)_35%,var(--border))] bg-[color-mix(in_oklab,var(--warning)_7%,var(--card))]',\n danger:\n 'border-[color-mix(in_oklab,var(--destructive)_32%,var(--border))] bg-[color-mix(in_oklab,var(--destructive)_6%,var(--card))]',\n brand: 'border-[color-mix(in_oklab,var(--oca-orange)_35%,var(--border))] bg-[color-mix(in_oklab,var(--oca-orange)_7%,var(--card))]',\n};\n\nconst NOTICE_TITLE: Record<NoticeTone, string> = {\n neutral: 'text-foreground',\n info: 'text-info',\n success: 'text-success',\n warning: 'text-warning',\n danger: 'text-destructive',\n brand: 'text-oca-accent-ink',\n};\n\nexport function Notice({\n tone = 'neutral',\n title,\n children,\n action,\n className,\n}: {\n tone?: NoticeTone;\n title?: ReactNode;\n children?: ReactNode;\n action?: ReactNode;\n className?: string;\n}) {\n return (\n <div\n role={tone === 'danger' || tone === 'warning' ? 'alert' : 'note'}\n className={cn(\n 'flex flex-col gap-3 rounded-2xl border px-5 py-4 sm:flex-row sm:items-start sm:justify-between',\n NOTICE[tone],\n className\n )}\n >\n <div className=\"flex min-w-0 flex-col gap-1\">\n {title ? <p className={cn('text-[0.9375rem] font-medium', NOTICE_TITLE[tone])}>{title}</p> : null}\n {children ? <div className=\"text-[0.9375rem] leading-relaxed text-foreground/85\">{children}</div> : null}\n </div>\n {action ? <div className=\"shrink-0\">{action}</div> : null}\n </div>\n );\n}\n\n/* ── Hashes, addresses, ids ──────────────────────────────────────────── */\n\nfunction middle(v: string, head: number, tail: number) {\n return v.length <= head + tail + 1 ? v : `${v.slice(0, head)}…${v.slice(-tail)}`;\n}\n\nexport function useCopy(timeoutMs = 1600) {\n const [copied, setCopied] = useState(false);\n const t = useRef<ReturnType<typeof setTimeout> | null>(null);\n useEffect(() => () => {\n if (t.current) clearTimeout(t.current);\n }, []);\n const copy = useCallback(\n async (text: string) => {\n try {\n await navigator.clipboard.writeText(text);\n setCopied(true);\n if (t.current) clearTimeout(t.current);\n t.current = setTimeout(() => setCopied(false), timeoutMs);\n } catch {\n setCopied(false);\n }\n },\n [timeoutMs]\n );\n return { copied, copy };\n}\n\nexport function CopyButton({ value, label = 'Copy', className }: { value: string; label?: string; className?: string }) {\n const { copied, copy } = useCopy();\n return (\n <button\n type=\"button\"\n onClick={() => void copy(value)}\n aria-label={copied ? 'Copied' : label}\n className={cn(\n 'inline-flex size-8 shrink-0 items-center justify-center rounded-full text-muted-foreground transition-colors hover:bg-accent hover:text-foreground',\n className\n )}\n >\n {copied ? <Check className=\"size-4 text-success\" /> : <Copy className=\"size-4\" />}\n <span aria-live=\"polite\" className=\"sr-only\">\n {copied ? 'Copied' : ''}\n </span>\n </button>\n );\n}\n\n/** A long identifier shown as head…tail in mono, with copy. The full value is\n * the title and the copied text, never lost to the truncation. */\nexport function HashChip({\n value,\n head = 8,\n tail = 6,\n copy = true,\n href,\n className,\n}: {\n value: string;\n head?: number;\n tail?: number;\n copy?: boolean;\n href?: string;\n className?: string;\n}) {\n const shown = middle(value, head, tail);\n const text = (\n <span title={value} className=\"font-mono text-[0.875rem]\">\n {shown}\n </span>\n );\n return (\n <span className={cn('inline-flex max-w-full items-center gap-1', className)}>\n {href ? (\n <a href={href} className=\"underline decoration-border underline-offset-4 hover:decoration-foreground\">\n {text}\n </a>\n ) : (\n text\n )}\n {copy ? <CopyButton value={value} label=\"Copy full value\" /> : null}\n </span>\n );\n}\n\n/* ── Progress ────────────────────────────────────────────────────────── */\n\nexport type StepState = 'done' | 'current' | 'upcoming' | 'blocked';\n\nexport interface ProgressStep {\n label: ReactNode;\n hint?: ReactNode;\n state: StepState;\n}\n\nexport function ProgressSteps({ steps, className }: { steps: ProgressStep[]; className?: string }) {\n return (\n <ol className={cn('flex flex-col gap-0', className)}>\n {steps.map((s, i) => {\n const last = i === steps.length - 1;\n return (\n <li key={i} className=\"relative flex gap-4 pb-6 last:pb-0\" aria-current={s.state === 'current' ? 'step' : undefined}>\n {!last ? (\n <span\n aria-hidden\n className={cn(\n 'absolute left-[11px] top-7 h-[calc(100%-1.5rem)] w-px',\n s.state === 'done' ? 'bg-foreground/30' : 'bg-border'\n )}\n />\n ) : null}\n <span\n className={cn(\n 'relative z-10 mt-0.5 flex size-6 shrink-0 items-center justify-center rounded-full border text-[0.75rem] oca-tabular',\n s.state === 'done' && 'border-primary bg-primary text-primary-foreground',\n s.state === 'current' && 'border-brand bg-card text-oca-accent-ink',\n s.state === 'upcoming' && 'border-border bg-card text-muted-foreground',\n s.state === 'blocked' && 'border-destructive bg-card text-destructive'\n )}\n >\n {s.state === 'done' ? <Check className=\"size-3.5\" strokeWidth={3} /> : String(i + 1).padStart(2, '0')}\n </span>\n <div className=\"flex min-w-0 flex-col gap-1\">\n <span className={cn('text-[0.9375rem]', s.state === 'upcoming' ? 'text-muted-foreground' : 'font-medium')}>\n {s.label}\n </span>\n {s.hint ? <span className=\"text-[0.875rem] leading-snug text-muted-foreground\">{s.hint}</span> : null}\n </div>\n </li>\n );\n })}\n </ol>\n );\n}\n\n/* ── Activity ────────────────────────────────────────────────────────── */\n\nexport interface ActivityItem {\n id: string;\n title: ReactNode;\n meta?: ReactNode;\n trailing?: ReactNode;\n href?: string;\n}\n\nexport function ActivityList({ items, empty, className }: { items: ActivityItem[]; empty?: ReactNode; className?: string }) {\n if (items.length === 0 && empty) return <>{empty}</>;\n return (\n <ul className={cn('divide-y divide-border rounded-[1.25rem] border border-border bg-card', className)}>\n {items.map((it) => {\n const body = (\n <div className=\"flex items-center justify-between gap-4 px-5 py-4\">\n <div className=\"flex min-w-0 flex-col gap-0.5\">\n <span className=\"truncate text-[0.9375rem]\">{it.title}</span>\n {it.meta ? <span className=\"truncate text-[0.8125rem] text-muted-foreground\">{it.meta}</span> : null}\n </div>\n {it.trailing ? <div className=\"shrink-0 text-right\">{it.trailing}</div> : null}\n </div>\n );\n return (\n <li key={it.id}>\n {it.href ? (\n <a href={it.href} className=\"block transition-colors hover:bg-accent/60\">\n {body}\n </a>\n ) : (\n body\n )}\n </li>\n );\n })}\n </ul>\n );\n}\n"]}
@@ -225,11 +225,11 @@ function SplitBar({
225
225
  "div",
226
226
  {
227
227
  className: cn(
228
- "flex min-w-0 items-end rounded-[1rem] px-4 pb-3",
228
+ "flex min-w-[4.25rem] items-end rounded-[1rem] px-3 pb-2.5 md:px-4 md:pb-3",
229
229
  s.tone === "card" ? "bg-white text-oca-ink" : "bg-oca-ink text-white"
230
230
  ),
231
231
  style: { flexBasis: `${s.pct}%` },
232
- children: /* @__PURE__ */ jsxs("span", { className: "oca-tabular text-[1.5rem] leading-none tracking-[-0.02em] md:text-[1.875rem]", children: [
232
+ children: /* @__PURE__ */ jsxs("span", { className: "oca-tabular text-[1.25rem] leading-none tracking-[-0.02em] md:text-[1.875rem]", children: [
233
233
  s.pct,
234
234
  "%"
235
235
  ] })