@orangecheck/app-design 1.4.1 → 1.6.0

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.
Files changed (45) hide show
  1. package/dist/chrome.d.mts +2 -2
  2. package/dist/chrome.d.ts +2 -2
  3. package/dist/chrome.js +162 -35
  4. package/dist/chrome.js.map +1 -1
  5. package/dist/chrome.mjs +163 -36
  6. package/dist/chrome.mjs.map +1 -1
  7. package/dist/components.d.mts +99 -6
  8. package/dist/components.d.ts +99 -6
  9. package/dist/components.js +546 -26
  10. package/dist/components.js.map +1 -1
  11. package/dist/components.mjs +535 -28
  12. package/dist/components.mjs.map +1 -1
  13. package/dist/index.d.mts +4 -4
  14. package/dist/index.d.ts +4 -4
  15. package/dist/index.js +737 -82
  16. package/dist/index.js.map +1 -1
  17. package/dist/index.mjs +727 -84
  18. package/dist/index.mjs.map +1 -1
  19. package/dist/mdx.js.map +1 -1
  20. package/dist/mdx.mjs.map +1 -1
  21. package/dist/primitives.d.mts +1 -0
  22. package/dist/primitives.d.ts +1 -0
  23. package/dist/primitives.js +27 -0
  24. package/dist/primitives.js.map +1 -1
  25. package/dist/primitives.mjs +27 -0
  26. package/dist/primitives.mjs.map +1 -1
  27. package/dist/session.d.mts +3 -3
  28. package/dist/session.d.ts +3 -3
  29. package/dist/session.js.map +1 -1
  30. package/dist/session.mjs.map +1 -1
  31. package/dist/styles/chart.css +76 -0
  32. package/dist/styles/theme.css +7 -0
  33. package/dist/styles/tokens.css +18 -0
  34. package/dist/styles.css +1 -0
  35. package/dist/tokens.d.mts +314 -21
  36. package/dist/tokens.d.ts +314 -21
  37. package/dist/tokens.js +166 -26
  38. package/dist/tokens.js.map +1 -1
  39. package/dist/tokens.mjs +165 -27
  40. package/dist/tokens.mjs.map +1 -1
  41. package/dist/{tool-shell-D8Q8XX11.d.mts → tool-shell-CQZNRUgH.d.mts} +8 -4
  42. package/dist/{tool-shell-gmlj47Ie.d.ts → tool-shell-CRmceGrV.d.ts} +8 -4
  43. package/dist/{tools-DFIxIj5p.d.mts → tools-Bg1gi2HO.d.mts} +1 -1
  44. package/dist/{tools-BggNN5DV.d.ts → tools-Bw7RhO92.d.ts} +1 -1
  45. package/package.json +2 -2
@@ -1,22 +1,25 @@
1
- import { forwardRef, createContext, useContext, useState, useEffect, createElement, useRef, Children, isValidElement, cloneElement, useCallback, useMemo, Component, useId, useSyncExternalStore, Fragment as Fragment$1 } from 'react';
1
+ import { forwardRef, createContext, useContext, useState, useEffect, createElement, useRef, Children, isValidElement, cloneElement, useCallback, useMemo, Component, useSyncExternalStore, useId, Fragment as Fragment$1 } from 'react';
2
2
  import { clsx } from 'clsx';
3
3
  import { extendTailwindMerge } from 'tailwind-merge';
4
4
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
5
5
  import { cva } from 'class-variance-authority';
6
6
  import * as TabsPrimitive from '@radix-ui/react-tabs';
7
- import { ChevronDown, Check, Search, Copy, ArrowUpRight, ArrowRight, ChevronRight, CornerDownLeft, Download, FileText, Upload, ArrowLeft, Lock, CircleDashed, CircleMinus, CircleSlash, Clock, CircleX, CircleCheck } from 'lucide-react';
7
+ import { X, ChevronDown, Check, Search, Copy, Lock, Info, ArrowUpRight, ArrowRight, ChevronRight, CornerDownLeft, Download, FileText, Upload, ArrowLeft, Maximize2, CircleDashed, CircleMinus, CircleSlash, Clock, CircleX, CircleCheck } from 'lucide-react';
8
8
  import { Slot } from '@radix-ui/react-slot';
9
9
  import * as SeparatorPrimitive from '@radix-ui/react-separator';
10
10
  import 'next-themes';
11
11
  import 'sonner';
12
12
  import Link from 'next/link';
13
+ import * as DialogPrimitive from '@radix-ui/react-dialog';
14
+ import * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';
15
+ import * as PopoverPrimitive from '@radix-ui/react-popover';
16
+ import * as TooltipPrimitive from '@radix-ui/react-tooltip';
13
17
  import { useRouter } from 'next/compat/router';
14
18
  import * as CheckboxPrimitive from '@radix-ui/react-checkbox';
15
19
  import * as LabelPrimitive from '@radix-ui/react-label';
16
20
  import * as RadioGroupPrimitive from '@radix-ui/react-radio-group';
17
21
  import * as SelectPrimitive from '@radix-ui/react-select';
18
22
  import * as SwitchPrimitive from '@radix-ui/react-switch';
19
- import * as DialogPrimitive from '@radix-ui/react-dialog';
20
23
 
21
24
  var merge = extendTailwindMerge({
22
25
  extend: {
@@ -532,7 +535,7 @@ var JS_TAG = /<\/?(?=[A-Za-z])/y;
532
535
  var JS_TAG_NAME = /[A-Za-z][\w$.:-]*/y;
533
536
  var JS_PUNCT = /=>|\.\.\.|[{}()[\];,.<>=+\-*/%!?:&|^~#]/y;
534
537
  var JSX_BEFORE = /* @__PURE__ */ new Set(["(", ",", "=", "?", ":", "{", "[", ";", ">", "&&", "||", "=>", "return"]);
535
- function scanJs(src, emit, jsx35) {
538
+ function scanJs(src, emit, jsx38) {
536
539
  let i = 0;
537
540
  let prev = "";
538
541
  let tagDepth = 0;
@@ -558,7 +561,7 @@ function scanJs(src, emit, jsx35) {
558
561
  sig('"');
559
562
  continue;
560
563
  }
561
- if (jsx35 && tagDepth === 0 && (m = at(JS_TAG, src, i)) && (prev === "" || JSX_BEFORE.has(prev))) {
564
+ if (jsx38 && tagDepth === 0 && (m = at(JS_TAG, src, i)) && (prev === "" || JSX_BEFORE.has(prev))) {
562
565
  const name = at(JS_TAG_NAME, src, i + m.length);
563
566
  if (name) {
564
567
  emit(m);
@@ -570,7 +573,7 @@ function scanJs(src, emit, jsx35) {
570
573
  continue;
571
574
  }
572
575
  }
573
- if (jsx35 && tagDepth > 0 && braceInTag === 0) {
576
+ if (jsx38 && tagDepth > 0 && braceInTag === 0) {
574
577
  if (src.startsWith("/>", i) || src[i] === ">") {
575
578
  const close = src[i] === ">" ? ">" : "/>";
576
579
  emit(close);
@@ -590,7 +593,7 @@ function scanJs(src, emit, jsx35) {
590
593
  continue;
591
594
  }
592
595
  if (src[i] === "{") braceInTag = 1;
593
- } else if (jsx35 && tagDepth > 0 && braceInTag > 0) {
596
+ } else if (jsx38 && tagDepth > 0 && braceInTag > 0) {
594
597
  if (src[i] === "{") braceInTag++;
595
598
  else if (src[i] === "}") braceInTag--;
596
599
  }
@@ -1175,7 +1178,22 @@ function PageHeader({
1175
1178
  ] });
1176
1179
  }
1177
1180
  var InStatGrid = createContext(false);
1178
- function StatCard({ label, value, hint, size, className }) {
1181
+ function Delta({ value, suffix = "", good = "up", label }) {
1182
+ const dir = value > 0 ? "up" : value < 0 ? "down" : "flat";
1183
+ const tone = dir === "flat" ? "text-muted-foreground" : dir === good ? "text-success" : "text-destructive";
1184
+ const sign = value > 0 ? "+" : value < 0 ? "\u2212" : "";
1185
+ return /* @__PURE__ */ jsxs("span", { className: cn("inline-flex items-baseline gap-1 text-[0.8125rem] font-normal tracking-normal oca-tabular", tone), children: [
1186
+ /* @__PURE__ */ jsx("span", { "aria-hidden": true, children: dir === "up" ? "\u2191" : dir === "down" ? "\u2193" : "\xB7" }),
1187
+ sign,
1188
+ Math.abs(value).toLocaleString("en-US", { maximumFractionDigits: 2 }),
1189
+ suffix,
1190
+ label ? /* @__PURE__ */ jsxs("span", { className: "text-muted-foreground", children: [
1191
+ " ",
1192
+ label
1193
+ ] }) : null
1194
+ ] });
1195
+ }
1196
+ function StatCard({ label, value, hint, size, delta, className }) {
1179
1197
  const inGrid = useContext(InStatGrid);
1180
1198
  const density = useDensity();
1181
1199
  const sm = (size ?? (density === "compact" ? "sm" : "md")) === "sm";
@@ -1193,15 +1211,19 @@ function StatCard({ label, value, hint, size, className }) {
1193
1211
  ),
1194
1212
  children: [
1195
1213
  /* @__PURE__ */ jsx("span", { className: cn("leading-snug text-muted-foreground", sm ? "text-[0.8125rem]" : "text-[0.875rem]"), children: label }),
1196
- /* @__PURE__ */ jsx(
1214
+ /* @__PURE__ */ jsxs(
1197
1215
  "span",
1198
1216
  {
1199
1217
  className: cn(
1200
1218
  "break-words oca-tabular leading-tight tracking-[-0.02em]",
1201
1219
  sm ? "text-[1.25rem]" : "text-[1.5rem] md:text-[1.75rem]",
1202
- inGrid && "self-end"
1220
+ inGrid && "self-end",
1221
+ delta && "flex flex-wrap items-baseline gap-x-2"
1203
1222
  ),
1204
- children: value
1223
+ children: [
1224
+ value,
1225
+ delta ? /* @__PURE__ */ jsx(Delta, { ...delta }) : null
1226
+ ]
1205
1227
  }
1206
1228
  ),
1207
1229
  hint ? /* @__PURE__ */ jsx("span", { className: "text-[0.8125rem] leading-snug text-muted-foreground", children: hint }) : inGrid ? /* @__PURE__ */ jsx("span", { "aria-hidden": true }) : null
@@ -1290,6 +1312,13 @@ function StatGrid({ columns, empty, isEmpty, className, children, ...props }) {
1290
1312
  }
1291
1313
  ) });
1292
1314
  }
1315
+ var TONE_TEXT = {
1316
+ good: "text-success",
1317
+ caution: "text-warning",
1318
+ bad: "text-destructive",
1319
+ brand: "text-oca-accent-ink",
1320
+ muted: "text-muted-foreground"
1321
+ };
1293
1322
  function KeyValueList({
1294
1323
  items,
1295
1324
  dense,
@@ -1308,15 +1337,19 @@ function KeyValueList({
1308
1337
  ),
1309
1338
  children: [
1310
1339
  /* @__PURE__ */ jsx("dt", { className: cn("shrink-0 text-muted-foreground", tight ? "text-[0.8125rem] @md:w-36" : "text-[0.875rem] @md:w-48"), children: it.label }),
1311
- /* @__PURE__ */ jsx(
1340
+ /* @__PURE__ */ jsxs(
1312
1341
  "dd",
1313
1342
  {
1314
1343
  className: cn(
1315
1344
  "min-w-0 break-words",
1316
1345
  tight ? "text-[0.875rem]" : "text-[0.9375rem]",
1317
- it.mono && (tight ? "font-mono text-[0.8125rem]" : "font-mono text-[0.875rem]")
1346
+ it.mono && (tight ? "font-mono text-[0.8125rem]" : "font-mono text-[0.875rem]"),
1347
+ it.tone && !it.note && TONE_TEXT[it.tone]
1318
1348
  ),
1319
- children: it.value
1349
+ children: [
1350
+ it.value,
1351
+ it.note ? /* @__PURE__ */ jsx("span", { className: cn("ml-2 font-sans text-[0.8125rem]", TONE_TEXT[it.tone ?? "muted"]), children: it.note }) : null
1352
+ ]
1320
1353
  }
1321
1354
  )
1322
1355
  ]
@@ -2474,6 +2507,460 @@ function ErrorPage({
2474
2507
  art !== null ? /* @__PURE__ */ jsx("div", { "aria-hidden": true, className: "oca-enter hidden justify-center md:col-span-5 md:flex [--enter-delay:120ms]", children: art ?? /* @__PURE__ */ jsx(MarkOutline, { className: "w-full max-w-[20rem] text-oca-hairline-strong" }) }) : null
2475
2508
  ] }) });
2476
2509
  }
2510
+ function onSecond(tick) {
2511
+ const id = setInterval(tick, 1e3);
2512
+ return () => clearInterval(id);
2513
+ }
2514
+ var nowSeconds = () => Math.floor(Date.now() / 1e3);
2515
+ function CountdownRing({
2516
+ period,
2517
+ remaining,
2518
+ warnAt = 5,
2519
+ size = 18,
2520
+ showSeconds = true,
2521
+ className
2522
+ }) {
2523
+ const now = useSyncExternalStore(onSecond, nowSeconds, () => null);
2524
+ const left = remaining ?? (now === null ? null : period - now % period);
2525
+ const share = left === null ? 1 : Math.max(0, Math.min(1, left / period));
2526
+ const warn = left !== null && left <= warnAt;
2527
+ const r = size / 2 - 1.5;
2528
+ const c = 2 * Math.PI * r;
2529
+ return /* @__PURE__ */ jsxs(
2530
+ "span",
2531
+ {
2532
+ role: "timer",
2533
+ "aria-label": left === null ? void 0 : `${left} second${left === 1 ? "" : "s"} left`,
2534
+ className: cn("inline-flex items-center gap-1.5", warn ? "text-destructive" : "text-muted-foreground", className),
2535
+ children: [
2536
+ /* @__PURE__ */ jsxs("svg", { "aria-hidden": true, width: size, height: size, viewBox: `0 0 ${size} ${size}`, className: "-rotate-90", children: [
2537
+ /* @__PURE__ */ jsx("circle", { cx: size / 2, cy: size / 2, r, fill: "none", stroke: "var(--border)", strokeWidth: 2 }),
2538
+ /* @__PURE__ */ jsx(
2539
+ "circle",
2540
+ {
2541
+ cx: size / 2,
2542
+ cy: size / 2,
2543
+ r,
2544
+ fill: "none",
2545
+ stroke: "currentColor",
2546
+ strokeWidth: 2,
2547
+ strokeLinecap: "round",
2548
+ strokeDasharray: c,
2549
+ strokeDashoffset: c * (1 - share),
2550
+ className: cn(left !== null && left < period && "transition-[stroke-dashoffset] duration-1000 ease-linear motion-reduce:transition-none")
2551
+ }
2552
+ )
2553
+ ] }),
2554
+ showSeconds && left !== null ? /* @__PURE__ */ jsxs("span", { className: "text-[0.8125rem] oca-tabular", children: [
2555
+ left,
2556
+ "s"
2557
+ ] }) : null
2558
+ ]
2559
+ }
2560
+ );
2561
+ }
2562
+ function PlanCard({
2563
+ name,
2564
+ subtitle,
2565
+ price,
2566
+ period,
2567
+ footnote,
2568
+ features = [],
2569
+ action,
2570
+ badge,
2571
+ badgeTone = "neutral",
2572
+ highlight: highlight2 = false,
2573
+ className
2574
+ }) {
2575
+ return /* @__PURE__ */ jsxs(
2576
+ "section",
2577
+ {
2578
+ className: cn(
2579
+ "flex h-full flex-col gap-5 rounded-[1.25rem] border bg-card p-6",
2580
+ highlight2 ? "border-foreground shadow-sm ring-1 ring-foreground" : "border-border",
2581
+ className
2582
+ ),
2583
+ children: [
2584
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-1.5", children: [
2585
+ /* @__PURE__ */ jsxs("div", { className: "flex items-start justify-between gap-3", children: [
2586
+ /* @__PURE__ */ jsx("h3", { className: "text-[1.0625rem] font-medium leading-snug", children: name }),
2587
+ badge ? /* @__PURE__ */ jsx(Badge, { tone: badgeTone, children: badge }) : null
2588
+ ] }),
2589
+ subtitle ? /* @__PURE__ */ jsx("p", { className: "text-[0.875rem] leading-snug text-muted-foreground", children: subtitle }) : null
2590
+ ] }),
2591
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-1", children: [
2592
+ /* @__PURE__ */ jsxs("p", { className: "flex flex-wrap items-baseline gap-x-1.5", children: [
2593
+ /* @__PURE__ */ jsx("span", { className: "oca-display-3 oca-tabular", children: price }),
2594
+ period ? /* @__PURE__ */ jsx("span", { className: "text-[0.9375rem] text-muted-foreground", children: period }) : null
2595
+ ] }),
2596
+ footnote ? /* @__PURE__ */ jsx("p", { className: "text-[0.8125rem] text-muted-foreground", children: footnote }) : null
2597
+ ] }),
2598
+ features.length > 0 ? /* @__PURE__ */ jsx("ul", { className: "flex flex-col gap-2.5 text-[0.9375rem]", children: features.map((f, i) => /* @__PURE__ */ jsxs("li", { className: "flex items-start gap-2.5", children: [
2599
+ /* @__PURE__ */ jsx(Check, { "aria-hidden": true, className: "mt-1 size-4 shrink-0 text-muted-foreground" }),
2600
+ /* @__PURE__ */ jsx("span", { className: "min-w-0", children: f })
2601
+ ] }, i)) }) : null,
2602
+ action ? /* @__PURE__ */ jsx("div", { className: "mt-auto flex flex-col pt-1 [&>*]:w-full", children: action }) : null
2603
+ ]
2604
+ }
2605
+ );
2606
+ }
2607
+ function LockedPreview({
2608
+ title,
2609
+ description,
2610
+ action,
2611
+ children,
2612
+ className
2613
+ }) {
2614
+ return /* @__PURE__ */ jsxs("div", { className: cn("relative", className), children: [
2615
+ children ? /* @__PURE__ */ jsx(
2616
+ "div",
2617
+ {
2618
+ inert: true,
2619
+ "aria-hidden": true,
2620
+ "data-oca-locked": "",
2621
+ className: "pointer-events-none max-h-[28rem] select-none overflow-hidden [mask-image:linear-gradient(to_bottom,#000_25%,transparent_85%)]",
2622
+ children
2623
+ }
2624
+ ) : null,
2625
+ /* @__PURE__ */ jsxs("div", { className: cn("relative mx-auto flex max-w-md flex-col items-center gap-4 rounded-[1.25rem] border border-border bg-card px-6 py-7 text-center shadow-sm", children && "-mt-40"), children: [
2626
+ /* @__PURE__ */ jsx("span", { "aria-hidden": true, className: "flex size-10 items-center justify-center rounded-full bg-muted text-foreground", children: /* @__PURE__ */ jsx(Lock, { className: "size-[1.125rem]" }) }),
2627
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-1.5", children: [
2628
+ /* @__PURE__ */ jsx("p", { className: "text-[1.0625rem] font-medium leading-snug", children: title }),
2629
+ description ? /* @__PURE__ */ jsx("p", { className: "text-[0.9375rem] leading-snug text-muted-foreground", children: description }) : null
2630
+ ] }),
2631
+ /* @__PURE__ */ jsx("div", { className: "flex flex-wrap justify-center gap-2", children: action })
2632
+ ] })
2633
+ ] });
2634
+ }
2635
+ var Dialog = DialogPrimitive.Root;
2636
+ var overlayClass = "oca-animate-fade fixed inset-0 z-50 bg-[rgb(10_10_10/0.38)] backdrop-blur-[2px] data-[state=closed]:opacity-0";
2637
+ var DialogContent = forwardRef(function DialogContent2({ className, children, hideClose, ...props }, ref) {
2638
+ return /* @__PURE__ */ jsxs(DialogPrimitive.Portal, { children: [
2639
+ /* @__PURE__ */ jsx(DialogPrimitive.Overlay, { className: overlayClass }),
2640
+ /* @__PURE__ */ jsxs(
2641
+ DialogPrimitive.Content,
2642
+ {
2643
+ ref,
2644
+ className: cn(
2645
+ "oca-animate-rise fixed left-1/2 top-1/2 z-50 w-[min(92vw,34rem)] -translate-x-1/2 -translate-y-1/2",
2646
+ "max-h-[88vh] overflow-y-auto rounded-[1.5rem] border border-border bg-popover p-6 text-popover-foreground shadow-xl md:p-8",
2647
+ "outline-none",
2648
+ className
2649
+ ),
2650
+ ...props,
2651
+ children: [
2652
+ children,
2653
+ hideClose ? null : /* @__PURE__ */ jsx(
2654
+ DialogPrimitive.Close,
2655
+ {
2656
+ className: "absolute right-4 top-4 inline-flex size-9 items-center justify-center rounded-full text-muted-foreground transition-colors hover:bg-accent hover:text-foreground",
2657
+ "aria-label": "Close",
2658
+ children: /* @__PURE__ */ jsx(X, { className: "size-4" })
2659
+ }
2660
+ )
2661
+ ]
2662
+ }
2663
+ )
2664
+ ] });
2665
+ });
2666
+ var DialogTitle = forwardRef(function DialogTitle2({ className, ...props }, ref) {
2667
+ return /* @__PURE__ */ jsx(
2668
+ DialogPrimitive.Title,
2669
+ {
2670
+ ref,
2671
+ className: cn("text-[1.5rem] font-normal leading-tight tracking-[-0.02em]", className),
2672
+ ...props
2673
+ }
2674
+ );
2675
+ });
2676
+ var DialogDescription = forwardRef(function DialogDescription2({ className, ...props }, ref) {
2677
+ return /* @__PURE__ */ jsx(DialogPrimitive.Description, { ref, className: cn("oca-body", className), ...props });
2678
+ });
2679
+ var sheetSide = {
2680
+ right: "inset-y-0 right-0 h-full w-[min(88vw,24rem)] border-l",
2681
+ left: "inset-y-0 left-0 h-full w-[min(88vw,24rem)] border-r",
2682
+ bottom: "inset-x-0 bottom-0 max-h-[88vh] rounded-t-[1.5rem] border-t"
2683
+ };
2684
+ forwardRef(function SheetContent2({ className, children, side = "right", ...props }, ref) {
2685
+ return /* @__PURE__ */ jsxs(DialogPrimitive.Portal, { children: [
2686
+ /* @__PURE__ */ jsx(DialogPrimitive.Overlay, { className: overlayClass }),
2687
+ /* @__PURE__ */ jsxs(
2688
+ DialogPrimitive.Content,
2689
+ {
2690
+ ref,
2691
+ className: cn(
2692
+ "oca-animate-fade fixed z-50 flex flex-col gap-4 overflow-y-auto border-border bg-popover p-6 text-popover-foreground shadow-xl outline-none",
2693
+ sheetSide[side],
2694
+ className
2695
+ ),
2696
+ ...props,
2697
+ children: [
2698
+ children,
2699
+ /* @__PURE__ */ jsx(
2700
+ DialogPrimitive.Close,
2701
+ {
2702
+ className: "absolute right-4 top-4 inline-flex size-9 items-center justify-center rounded-full text-muted-foreground hover:bg-accent hover:text-foreground",
2703
+ "aria-label": "Close",
2704
+ children: /* @__PURE__ */ jsx(X, { className: "size-4" })
2705
+ }
2706
+ )
2707
+ ]
2708
+ }
2709
+ )
2710
+ ] });
2711
+ });
2712
+ var Popover = PopoverPrimitive.Root;
2713
+ var PopoverTrigger = PopoverPrimitive.Trigger;
2714
+ var PopoverContent = forwardRef(function PopoverContent2({ className, align = "center", sideOffset = 8, ...props }, ref) {
2715
+ return /* @__PURE__ */ jsx(PopoverPrimitive.Portal, { children: /* @__PURE__ */ jsx(
2716
+ PopoverPrimitive.Content,
2717
+ {
2718
+ ref,
2719
+ align,
2720
+ sideOffset,
2721
+ className: cn(
2722
+ "oca-animate-fade z-50 w-72 rounded-2xl border border-border bg-popover p-4 text-popover-foreground shadow-lg outline-none",
2723
+ className
2724
+ ),
2725
+ ...props
2726
+ }
2727
+ ) });
2728
+ });
2729
+ forwardRef(function TooltipContent2({ className, sideOffset = 6, ...props }, ref) {
2730
+ return /* @__PURE__ */ jsx(TooltipPrimitive.Portal, { children: /* @__PURE__ */ jsx(
2731
+ TooltipPrimitive.Content,
2732
+ {
2733
+ ref,
2734
+ sideOffset,
2735
+ className: cn(
2736
+ "oca-animate-fade z-50 max-w-xs rounded-lg bg-oca-ink px-2.5 py-1.5 text-[0.8125rem] leading-snug text-oca-ink-foreground",
2737
+ className
2738
+ ),
2739
+ ...props
2740
+ }
2741
+ ) });
2742
+ });
2743
+ forwardRef(function DropdownMenuContent2({ className, sideOffset = 8, ...props }, ref) {
2744
+ return /* @__PURE__ */ jsx(DropdownMenuPrimitive.Portal, { children: /* @__PURE__ */ jsx(
2745
+ DropdownMenuPrimitive.Content,
2746
+ {
2747
+ ref,
2748
+ sideOffset,
2749
+ className: cn(
2750
+ "oca-animate-fade z-50 min-w-56 overflow-hidden rounded-2xl border border-border bg-popover p-1.5 text-popover-foreground shadow-lg",
2751
+ className
2752
+ ),
2753
+ ...props
2754
+ }
2755
+ ) });
2756
+ });
2757
+ forwardRef(function DropdownMenuItem2({ className, destructive, ...props }, ref) {
2758
+ return /* @__PURE__ */ jsx(
2759
+ DropdownMenuPrimitive.Item,
2760
+ {
2761
+ ref,
2762
+ className: cn(
2763
+ "flex h-10 cursor-default select-none items-center gap-2.5 rounded-xl px-3 text-[0.9375rem] outline-none",
2764
+ "data-[highlighted]:bg-accent data-[disabled]:opacity-50 [&_svg]:size-4 [&_svg]:text-muted-foreground",
2765
+ destructive && "text-destructive [&_svg]:text-destructive",
2766
+ className
2767
+ ),
2768
+ ...props
2769
+ }
2770
+ );
2771
+ });
2772
+ forwardRef(function DropdownMenuLabel2({ className, ...props }, ref) {
2773
+ return /* @__PURE__ */ jsx(
2774
+ DropdownMenuPrimitive.Label,
2775
+ {
2776
+ ref,
2777
+ className: cn("px-3 pb-1.5 pt-2 text-[0.8125rem] text-muted-foreground", className),
2778
+ ...props
2779
+ }
2780
+ );
2781
+ });
2782
+ forwardRef(function DropdownMenuSeparator2({ className, ...props }, ref) {
2783
+ return /* @__PURE__ */ jsx(DropdownMenuPrimitive.Separator, { ref, className: cn("my-1.5 h-px bg-border", className), ...props });
2784
+ });
2785
+ function chartColor(series) {
2786
+ if (typeof series === "string") return `var(--oca-chart-${series})`;
2787
+ const n = series >= 1 && series <= 4 && Number.isInteger(series) ? series : (series % 4 + 4) % 4 + 1;
2788
+ return `var(--oca-chart-${n})`;
2789
+ }
2790
+ function ChartFrame({
2791
+ legend,
2792
+ caption,
2793
+ children,
2794
+ className
2795
+ }) {
2796
+ return /* @__PURE__ */ jsxs("figure", { className: cn("oca-chart flex min-w-0 flex-col gap-3", className), children: [
2797
+ legend && legend.length > 0 ? /* @__PURE__ */ jsx("ul", { className: "oca-chart-legend", "aria-label": "Legend", children: legend.map((l, i) => {
2798
+ const c = typeof l.color === "number" || ["neutral", "up", "down"].includes(String(l.color)) ? chartColor(l.color) : String(l.color);
2799
+ return /* @__PURE__ */ jsxs("li", { children: [
2800
+ /* @__PURE__ */ jsx("span", { "aria-hidden": true, "data-swatch": l.dashed ? "dashed" : "", style: { "--swatch": c } }),
2801
+ l.label
2802
+ ] }, i);
2803
+ }) }) : null,
2804
+ /* @__PURE__ */ jsx("div", { className: "relative min-w-0", children }),
2805
+ caption ? /* @__PURE__ */ jsx("figcaption", { className: "text-[0.8125rem] leading-snug text-muted-foreground", children: caption }) : null
2806
+ ] });
2807
+ }
2808
+ function Sparkline({
2809
+ values,
2810
+ label,
2811
+ tone = "ink",
2812
+ area = false,
2813
+ width = 96,
2814
+ height = 24,
2815
+ className
2816
+ }) {
2817
+ const gradient = useId().replace(/[^a-zA-Z0-9]/g, "");
2818
+ const pts = values.filter((v) => Number.isFinite(v));
2819
+ const lo = Math.min(...pts);
2820
+ const hi = Math.max(...pts);
2821
+ const span = hi - lo || 1;
2822
+ const pad3 = 1.5;
2823
+ const x = (i) => pts.length < 2 ? width / 2 : i / (pts.length - 1) * width;
2824
+ const y = (v) => pad3 + (1 - (v - lo) / span) * (height - pad3 * 2);
2825
+ const line = pts.map((v, i) => `${i === 0 ? "M" : "L"}${x(i).toFixed(2)},${y(v).toFixed(2)}`).join(" ");
2826
+ const color = tone === "ink" ? "var(--foreground)" : tone === "muted" ? "var(--muted-foreground)" : tone === "trend" ? chartColor(pts.length > 1 && pts[pts.length - 1] < pts[0] ? "down" : "up") : chartColor(tone);
2827
+ return /* @__PURE__ */ jsx(
2828
+ "svg",
2829
+ {
2830
+ role: "img",
2831
+ "aria-label": label,
2832
+ viewBox: `0 0 ${width} ${height}`,
2833
+ preserveAspectRatio: "none",
2834
+ width,
2835
+ height,
2836
+ className: cn("block overflow-visible", className),
2837
+ style: { color },
2838
+ children: pts.length > 0 ? /* @__PURE__ */ jsxs(Fragment, { children: [
2839
+ area ? /* @__PURE__ */ jsxs(Fragment, { children: [
2840
+ /* @__PURE__ */ jsx("defs", { children: /* @__PURE__ */ jsxs("linearGradient", { id: gradient, x1: "0", y1: "0", x2: "0", y2: "1", children: [
2841
+ /* @__PURE__ */ jsx("stop", { offset: "0", stopColor: "currentColor", stopOpacity: 0.22 }),
2842
+ /* @__PURE__ */ jsx("stop", { offset: "1", stopColor: "currentColor", stopOpacity: 0 })
2843
+ ] }) }),
2844
+ /* @__PURE__ */ jsx("path", { d: `${line} L${x(pts.length - 1).toFixed(2)},${height} L${x(0).toFixed(2)},${height} Z`, fill: `url(#${gradient})` })
2845
+ ] }) : null,
2846
+ /* @__PURE__ */ jsx("path", { d: line, fill: "none", stroke: "currentColor", strokeWidth: 1.5, strokeLinejoin: "round", strokeLinecap: "round", vectorEffect: "non-scaling-stroke" })
2847
+ ] }) : null
2848
+ }
2849
+ );
2850
+ }
2851
+ function SourceNote({ source, href, detail, updated, variant = "popover", className }) {
2852
+ const name = href ? /* @__PURE__ */ jsxs("a", { href, className: "text-foreground underline decoration-foreground/35 underline-offset-4 hover:decoration-foreground", rel: "noreferrer", target: "_blank", children: [
2853
+ source,
2854
+ /* @__PURE__ */ jsx("span", { className: "sr-only", children: " (opens in a new tab)" })
2855
+ ] }) : /* @__PURE__ */ jsx("span", { className: "text-foreground", children: source });
2856
+ if (variant === "line") {
2857
+ return /* @__PURE__ */ jsxs("p", { className: cn("text-[0.75rem] leading-snug text-muted-foreground", className), children: [
2858
+ "Source: ",
2859
+ name,
2860
+ updated ? /* @__PURE__ */ jsxs(Fragment, { children: [
2861
+ " \xB7 ",
2862
+ updated
2863
+ ] }) : null
2864
+ ] });
2865
+ }
2866
+ return /* @__PURE__ */ jsxs(Popover, { children: [
2867
+ /* @__PURE__ */ jsxs(
2868
+ PopoverTrigger,
2869
+ {
2870
+ className: cn(
2871
+ "inline-flex h-7 items-center gap-1 rounded-full px-2 text-[0.75rem] text-muted-foreground transition-colors hover:bg-accent hover:text-foreground",
2872
+ className
2873
+ ),
2874
+ children: [
2875
+ /* @__PURE__ */ jsx(Info, { "aria-hidden": true, className: "size-3.5" }),
2876
+ "Source"
2877
+ ]
2878
+ }
2879
+ ),
2880
+ /* @__PURE__ */ jsxs(PopoverContent, { align: "start", className: "flex w-[min(calc(100vw-2rem),20rem)] flex-col gap-2 p-4 text-[0.875rem]", children: [
2881
+ /* @__PURE__ */ jsx("p", { className: "text-[0.75rem] text-muted-foreground", children: "Where this number comes from" }),
2882
+ /* @__PURE__ */ jsx("p", { className: "font-medium", children: name }),
2883
+ detail ? /* @__PURE__ */ jsx("div", { className: "text-[0.8125rem] leading-snug text-muted-foreground [&_code]:font-mono", children: detail }) : null,
2884
+ updated ? /* @__PURE__ */ jsx("p", { className: "text-[0.8125rem] text-muted-foreground", children: updated }) : null
2885
+ ] })
2886
+ ] });
2887
+ }
2888
+ function Panel({
2889
+ title,
2890
+ description,
2891
+ actions,
2892
+ source,
2893
+ expandable = false,
2894
+ children,
2895
+ className
2896
+ }) {
2897
+ const [open, setOpen] = useState(false);
2898
+ const body = (expanded) => typeof children === "function" ? children(expanded) : children;
2899
+ const head = (expanded) => /* @__PURE__ */ jsxs("header", { className: "flex flex-wrap items-start justify-between gap-x-4 gap-y-2", children: [
2900
+ /* @__PURE__ */ jsxs("div", { className: "flex min-w-0 flex-col gap-1", children: [
2901
+ expanded ? /* @__PURE__ */ jsx(DialogTitle, { className: "text-[1.0625rem] font-medium leading-snug", children: title }) : /* @__PURE__ */ jsx("h3", { className: "text-[1rem] font-medium leading-snug", children: title }),
2902
+ description ? expanded ? /* @__PURE__ */ jsx(DialogDescription, { className: "text-[0.875rem] leading-snug text-muted-foreground", children: description }) : /* @__PURE__ */ jsx("p", { className: "text-[0.875rem] leading-snug text-muted-foreground", children: description }) : null
2903
+ ] }),
2904
+ /* @__PURE__ */ jsxs("div", { className: "flex shrink-0 items-center gap-1", children: [
2905
+ actions,
2906
+ expandable && !expanded ? /* @__PURE__ */ jsx(
2907
+ "button",
2908
+ {
2909
+ type: "button",
2910
+ onClick: () => setOpen(true),
2911
+ "aria-label": "Open full screen",
2912
+ className: "inline-flex size-8 items-center justify-center rounded-full text-muted-foreground transition-colors hover:bg-accent hover:text-foreground",
2913
+ children: /* @__PURE__ */ jsx(Maximize2, { "aria-hidden": true, className: "size-4" })
2914
+ }
2915
+ ) : null
2916
+ ] })
2917
+ ] });
2918
+ return /* @__PURE__ */ jsxs("section", { className: cn("flex min-w-0 flex-col gap-4 rounded-[1.25rem] border border-border bg-card p-5 md:p-6", className), children: [
2919
+ head(false),
2920
+ /* @__PURE__ */ jsx("div", { className: "min-w-0", children: body(false) }),
2921
+ source ? /* @__PURE__ */ jsx("div", { className: "-mb-1 border-t border-border pt-3", children: source }) : null,
2922
+ expandable ? /* @__PURE__ */ jsx(Dialog, { open, onOpenChange: setOpen, children: /* @__PURE__ */ jsxs(
2923
+ DialogContent,
2924
+ {
2925
+ ...description ? {} : { "aria-describedby": void 0 },
2926
+ className: "flex h-[min(92dvh,56rem)] w-[min(96vw,80rem)] max-w-none flex-col gap-4 overflow-y-auto",
2927
+ children: [
2928
+ head(true),
2929
+ /* @__PURE__ */ jsx("div", { className: "min-h-0 min-w-0 flex-1", children: open ? body(true) : null }),
2930
+ source ? /* @__PURE__ */ jsx("div", { className: "border-t border-border pt-3", children: source }) : null
2931
+ ]
2932
+ }
2933
+ ) }) : null
2934
+ ] });
2935
+ }
2936
+ function HudCard({
2937
+ eyebrow,
2938
+ live = false,
2939
+ title,
2940
+ children,
2941
+ footer,
2942
+ className
2943
+ }) {
2944
+ return /* @__PURE__ */ jsxs(
2945
+ "div",
2946
+ {
2947
+ "data-oca-hud": "",
2948
+ className: cn(
2949
+ "flex w-60 max-w-[calc(100vw-2rem)] flex-col gap-2 rounded-xl border border-border bg-background/85 p-3 text-[0.8125rem] shadow-sm backdrop-blur-md",
2950
+ className
2951
+ ),
2952
+ children: [
2953
+ eyebrow ? /* @__PURE__ */ jsxs("p", { className: "flex items-center gap-1.5 text-[0.75rem] text-muted-foreground", children: [
2954
+ live ? /* @__PURE__ */ jsx("span", { "aria-hidden": true, className: "size-1.5 rounded-full bg-oca-orange-deep motion-safe:animate-pulse" }) : null,
2955
+ eyebrow
2956
+ ] }) : null,
2957
+ title ? /* @__PURE__ */ jsx("p", { className: "text-[1.125rem] font-medium leading-tight oca-tabular", children: title }) : null,
2958
+ children,
2959
+ footer ? /* @__PURE__ */ jsx("div", { className: "border-t border-border pt-2", children: footer }) : null
2960
+ ]
2961
+ }
2962
+ );
2963
+ }
2477
2964
  function IsoCheck({ size = 360, settle = false, shadow = true, tilt = false, title, className }) {
2478
2965
  const ref = useRef(null);
2479
2966
  useEffect(() => {
@@ -2962,7 +3449,7 @@ var Textarea = forwardRef(
2962
3449
  );
2963
3450
  }
2964
3451
  );
2965
- var Label = forwardRef(function Label2({ className, ...props }, ref) {
3452
+ var Label2 = forwardRef(function Label3({ className, ...props }, ref) {
2966
3453
  return /* @__PURE__ */ jsx(
2967
3454
  LabelPrimitive.Root,
2968
3455
  {
@@ -2985,7 +3472,7 @@ function Field({ label, hint, optional, error, children, id: fixedId, className,
2985
3472
  const control = typeof children === "function" ? children(wiring) : isValidElement(children) ? cloneElement(children, { ...wiring }) : children;
2986
3473
  const hintNode = hint ? /* @__PURE__ */ jsx("p", { id: hintId, className: "text-[0.8125rem] leading-snug text-muted-foreground", children: hint }) : null;
2987
3474
  return /* @__PURE__ */ jsxs("div", { className: cn("flex flex-col gap-2", className), children: [
2988
- /* @__PURE__ */ jsxs(Label, { htmlFor: id, className: hideLabel ? "sr-only" : "flex items-baseline gap-2", children: [
3475
+ /* @__PURE__ */ jsxs(Label2, { htmlFor: id, className: hideLabel ? "sr-only" : "flex items-baseline gap-2", children: [
2989
3476
  label,
2990
3477
  optional ? /* @__PURE__ */ jsx("span", { className: "text-[0.8125rem] font-normal text-muted-foreground", children: "Optional" }) : null
2991
3478
  ] }),
@@ -3934,6 +4421,7 @@ function SearchDialog({
3934
4421
  idle,
3935
4422
  defaultQuery = "",
3936
4423
  debounceMs = 120,
4424
+ browse = false,
3937
4425
  className
3938
4426
  }) {
3939
4427
  const [own, setOwn] = useState(false);
@@ -3970,7 +4458,7 @@ function SearchDialog({
3970
4458
  }, [hotkey]);
3971
4459
  useEffect(() => {
3972
4460
  const q = query.trim();
3973
- if (!q) {
4461
+ if (!q && !(browse && open)) {
3974
4462
  setGroups([]);
3975
4463
  setState("idle");
3976
4464
  return;
@@ -3992,14 +4480,15 @@ function SearchDialog({
3992
4480
  clearTimeout(t);
3993
4481
  ctl.abort();
3994
4482
  };
3995
- }, [query, debounceMs]);
4483
+ }, [query, debounceMs, browse, open]);
3996
4484
  useEffect(() => {
3997
4485
  listRef.current?.querySelector('[aria-selected="true"]')?.scrollIntoView({ block: "nearest" });
3998
4486
  }, [active]);
3999
4487
  const choose = (r) => {
4000
4488
  setOpen(false);
4001
- if (onSelect) onSelect(r);
4002
- else window.location.assign(r.href);
4489
+ if (r.run) r.run();
4490
+ else if (onSelect) onSelect(r);
4491
+ else if (r.href) window.location.assign(r.href);
4003
4492
  };
4004
4493
  const optionId = (i) => `${listId}-o${i}`;
4005
4494
  const showList = state === "done" && flat.length > 0;
@@ -4070,25 +4559,28 @@ function SearchDialog({
4070
4559
  index++;
4071
4560
  const i = index;
4072
4561
  const on = i === active;
4562
+ const Option = r.href ? "a" : "div";
4073
4563
  return /* @__PURE__ */ jsxs(
4074
- "a",
4564
+ Option,
4075
4565
  {
4076
4566
  id: optionId(i),
4077
- href: r.href,
4567
+ ...r.href ? { href: r.href } : {},
4078
4568
  role: "option",
4079
4569
  "aria-selected": on,
4080
4570
  tabIndex: -1,
4081
4571
  onMouseMove: () => setActive(i),
4082
4572
  onClick: (e) => {
4083
- if (e.metaKey || e.ctrlKey || e.shiftKey) return;
4573
+ if (r.href && (e.metaKey || e.ctrlKey || e.shiftKey)) return;
4084
4574
  e.preventDefault();
4085
4575
  choose(r);
4086
4576
  },
4087
4577
  className: cn(
4088
4578
  "flex items-start gap-3 rounded-xl px-3 py-2.5 transition-colors",
4089
- on ? "bg-accent" : "hover:bg-accent"
4579
+ on ? "bg-accent" : "hover:bg-accent",
4580
+ !r.href && "cursor-pointer"
4090
4581
  ),
4091
4582
  children: [
4583
+ r.icon ? /* @__PURE__ */ jsx("span", { "aria-hidden": true, className: "mt-0.5 flex size-5 shrink-0 items-center justify-center text-muted-foreground [&_svg]:size-[1.0625rem]", children: r.icon }) : null,
4092
4584
  /* @__PURE__ */ jsxs("span", { className: "flex min-w-0 flex-1 flex-col gap-0.5", children: [
4093
4585
  /* @__PURE__ */ jsx("span", { className: "truncate text-[0.9375rem] font-medium text-foreground", children: r.title }),
4094
4586
  r.section ? /* @__PURE__ */ jsx("span", { className: "truncate text-[0.8125rem] text-muted-foreground", children: r.section }) : null,
@@ -4100,6 +4592,7 @@ function SearchDialog({
4100
4592
  }
4101
4593
  ) : r.excerpt ? /* @__PURE__ */ jsx("span", { className: "line-clamp-2 text-[0.875rem] leading-snug text-muted-foreground", children: r.excerpt }) : null
4102
4594
  ] }),
4595
+ r.meta ? /* @__PURE__ */ jsx("span", { className: "mt-0.5 shrink-0 text-[0.8125rem] text-muted-foreground", children: r.meta }) : null,
4103
4596
  /* @__PURE__ */ jsx(CornerDownLeft, { "aria-hidden": true, className: cn("mt-1 size-4 shrink-0 text-muted-foreground", !on && "invisible") })
4104
4597
  ]
4105
4598
  },
@@ -4108,11 +4601,11 @@ function SearchDialog({
4108
4601
  })
4109
4602
  ] }, gi)) }),
4110
4603
  state === "idle" ? /* @__PURE__ */ jsx("div", { className: "px-3 py-6 text-[0.9375rem] text-muted-foreground", children: idle ?? "Type a word: a protocol, a function, an error." }) : null,
4111
- state === "done" && flat.length === 0 ? /* @__PURE__ */ jsxs("p", { role: "status", className: "px-3 py-6 text-[0.9375rem] text-muted-foreground", children: [
4604
+ state === "done" && flat.length === 0 ? /* @__PURE__ */ jsx("p", { role: "status", className: "px-3 py-6 text-[0.9375rem] text-muted-foreground", children: query.trim() ? /* @__PURE__ */ jsxs(Fragment, { children: [
4112
4605
  "No results for \u201C",
4113
4606
  query.trim(),
4114
4607
  "\u201D."
4115
- ] }) : null,
4608
+ ] }) : "Nothing here yet." }) : null,
4116
4609
  state === "error" ? /* @__PURE__ */ jsx("p", { role: "status", className: "px-3 py-6 text-[0.9375rem] text-muted-foreground", children: "Search is not available right now. Try again in a moment." }) : null
4117
4610
  ] }),
4118
4611
  /* @__PURE__ */ jsxs("div", { "aria-hidden": true, className: "hidden shrink-0 items-center gap-4 border-t border-border px-5 py-2.5 text-[0.75rem] text-muted-foreground sm:flex", children: [
@@ -4137,6 +4630,13 @@ function SearchDialog({
4137
4630
  ] }) })
4138
4631
  ] });
4139
4632
  }
4633
+ function CommandDialog({
4634
+ label = "Commands",
4635
+ placeholder = "Search, or run a command",
4636
+ ...props
4637
+ }) {
4638
+ return /* @__PURE__ */ jsx(SearchDialog, { ...props, label, placeholder, button: false, browse: true });
4639
+ }
4140
4640
  function pretty(content) {
4141
4641
  try {
4142
4642
  return JSON.stringify(JSON.parse(content), null, 2);
@@ -4565,6 +5065,13 @@ function BlockCountdown({
4565
5065
  ] }) : null
4566
5066
  ] });
4567
5067
  }
5068
+ var METER_FILL = {
5069
+ ink: "bg-foreground",
5070
+ brand: "bg-oca-orange-deep",
5071
+ good: "bg-success",
5072
+ caution: "bg-warning",
5073
+ bad: "bg-destructive"
5074
+ };
4568
5075
  function Meter({
4569
5076
  value,
4570
5077
  max,
@@ -4599,7 +5106,7 @@ function Meter({
4599
5106
  /* @__PURE__ */ jsx(
4600
5107
  "div",
4601
5108
  {
4602
- className: cn("h-full shrink-0 rounded-full", tone === "brand" ? "bg-oca-orange-deep" : "bg-foreground"),
5109
+ className: cn("h-full shrink-0 rounded-full", METER_FILL[tone]),
4603
5110
  style: { width: `${v * 100}%` }
4604
5111
  }
4605
5112
  ),
@@ -4713,6 +5220,6 @@ function ToolGrid({
4713
5220
  );
4714
5221
  }
4715
5222
 
4716
- export { Accent, ActivityList, AnchorStatus, ApiTable, AppCard, AppGrid, ArtifactView, BlockCountdown, BlockHeight, Breadcrumbs, BrowserFrame, Callout, CardGrid, Closing, CodeBlock, CodeTabs, ComparisonTable, Container, CopyButton, DataTable, Diagram, Display, DocHeader, DocLayout, DocsHeading, DocsPager, DropZone, EmptyLine, EmptyState, EndpointList, ErrorBoundary, ErrorPage, Eyebrow, FactBlock, FactRows, Faq, FilterChips, FloatChip, Footnote, FormSection, HashChip, InstallTabs, KeyValueList, Lead, LegalDocument, LinkCard, LoadingBlock, MdxTable, Meter, Monogram, Notice, OnThisPage, PackageCard, PageHeader, PageHero, PhoneFrame, ProgressSteps, ProofStrip, Prose, ProtocolGrid, ProtocolHero, ProtocolNav, Reveal, Sats, SatsFigure, ScrollStory, SearchButton, SearchDialog, Section, SectionHeading, SectionIntro, SignMessage, SpecCard, SplitBar, StatCard, StatGrid, StateBadge, Step, StepGrid, Steps, TextLink, Ticker, ToolGrid, TruthTable, UsdApprox, VerifyBox, VerifyReport, createStateBadge, languageName, monogramGround, monogramLetter, satsText, sectionVariants, useActiveHeading, useCopy, useHeadings, useInView };
5223
+ export { Accent, ActivityList, AnchorStatus, ApiTable, AppCard, AppGrid, ArtifactView, BlockCountdown, BlockHeight, Breadcrumbs, BrowserFrame, Callout, CardGrid, ChartFrame, Closing, CodeBlock, CodeTabs, CommandDialog, ComparisonTable, Container, CopyButton, CountdownRing, DataTable, Diagram, Display, DocHeader, DocLayout, DocsHeading, DocsPager, DropZone, EmptyLine, EmptyState, EndpointList, ErrorBoundary, ErrorPage, Eyebrow, FactBlock, FactRows, Faq, FilterChips, FloatChip, Footnote, FormSection, HashChip, HudCard, InstallTabs, KeyValueList, Lead, LegalDocument, LinkCard, LoadingBlock, LockedPreview, MdxTable, Meter, Monogram, Notice, OnThisPage, PackageCard, PageHeader, PageHero, Panel, PhoneFrame, PlanCard, ProgressSteps, ProofStrip, Prose, ProtocolGrid, ProtocolHero, ProtocolNav, Reveal, Sats, SatsFigure, ScrollStory, SearchButton, SearchDialog, Section, SectionHeading, SectionIntro, SignMessage, SourceNote, Sparkline, SpecCard, SplitBar, StatCard, StatGrid, StateBadge, Step, StepGrid, Steps, TextLink, Ticker, ToolGrid, TruthTable, UsdApprox, VerifyBox, VerifyReport, chartColor, createStateBadge, languageName, monogramGround, monogramLetter, satsText, sectionVariants, useActiveHeading, useCopy, useHeadings, useInView };
4717
5224
  //# sourceMappingURL=components.mjs.map
4718
5225
  //# sourceMappingURL=components.mjs.map