@fiestaboard/ui 5.1.0 → 5.3.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 (30) hide show
  1. package/dist/components/board/board-display.d.ts +13 -1
  2. package/dist/components/board/board-display.js +103 -101
  3. package/dist/components/board/board-display.js.map +1 -1
  4. package/dist/components/board/static-board-display.d.ts +6 -1
  5. package/dist/components/board/static-board-display.js +36 -34
  6. package/dist/components/board/static-board-display.js.map +1 -1
  7. package/dist/components/chrome/breadcrumb.d.ts +43 -0
  8. package/dist/components/chrome/breadcrumb.js +76 -0
  9. package/dist/components/chrome/breadcrumb.js.map +1 -0
  10. package/dist/components/containment/media-frame.d.ts +28 -0
  11. package/dist/components/containment/media-frame.js +40 -0
  12. package/dist/components/containment/media-frame.js.map +1 -0
  13. package/dist/components/data/bar-list.d.ts +81 -0
  14. package/dist/components/data/bar-list.js +54 -0
  15. package/dist/components/data/bar-list.js.map +1 -0
  16. package/dist/components/feedback/chip.d.ts +28 -0
  17. package/dist/components/feedback/chip.js +29 -0
  18. package/dist/components/feedback/chip.js.map +1 -0
  19. package/dist/components/forms/toggle.d.ts +56 -0
  20. package/dist/components/forms/toggle.js +97 -0
  21. package/dist/components/forms/toggle.js.map +1 -0
  22. package/dist/components/overlays/lightbox.d.ts +37 -0
  23. package/dist/components/overlays/lightbox.js +54 -0
  24. package/dist/components/overlays/lightbox.js.map +1 -0
  25. package/dist/index.d.ts +6 -0
  26. package/dist/index.js +99 -93
  27. package/dist/lib/board-characters.d.ts +33 -7
  28. package/dist/lib/board-characters.js +14 -11
  29. package/dist/lib/board-characters.js.map +1 -1
  30. package/package.json +1 -1
@@ -7,61 +7,63 @@ import { isNoteArray as d, resolveDimensions as f } from "../../lib/board-dimens
7
7
  import { memo as p, useMemo as m } from "react";
8
8
  import { jsx as h, jsxs as g } from "react/jsx-runtime";
9
9
  //#region src/components/board/static-board-display.tsx
10
- var _ = (e) => `Board preview: ${e}`, v = "Board preview", y = p(function({ message: p, size: y = "sm", boardType: b = "black", deviceType: x = "flagship", className: S = "", notesWide: C = 1, notesTall: w = 1, previewLabel: T, messageLabel: E = _, emptyLabel: D = "Empty board display" }) {
11
- let O = f(x, C, w), k = d(x), A = b === "white", j = A ? "var(--color-board-surface-light)" : "var(--color-board-surface-dark)", M = A ? "var(--color-board-text-on-light)" : "var(--color-board-text-on-dark)", N = m(() => t(p ?? "", O.rows, O.cols, x), [
10
+ var _ = (e) => `Board preview: ${e}`, v = "Board preview", y = p(function({ message: p, size: y = "sm", boardType: b = "black", deviceType: x = "flagship", code62Glyph: S, className: C = "", notesWide: w = 1, notesTall: T = 1, previewLabel: E, messageLabel: D = _, emptyLabel: O = "Empty board display" }) {
11
+ let k = f(x, w, T), A = d(x), j = b === "white", M = j ? "var(--color-board-surface-light)" : "var(--color-board-surface-dark)", N = j ? "var(--color-board-text-on-light)" : "var(--color-board-text-on-dark)", P = m(() => t(p ?? "", k.rows, k.cols, x, S), [
12
12
  p,
13
- O.rows,
14
- O.cols,
15
- x
16
- ]), P = m(() => {
17
- if (!p) return D;
18
- if (T !== void 0) return T;
19
- let e = n(p, x);
20
- return e ? E(e) : v;
13
+ k.rows,
14
+ k.cols,
15
+ x,
16
+ S
17
+ ]), F = m(() => {
18
+ if (!p) return O;
19
+ if (E !== void 0) return E;
20
+ let e = n(p, x, S);
21
+ return e ? D(e) : v;
21
22
  }, [
22
23
  p,
23
24
  x,
24
- T,
25
+ S,
25
26
  E,
26
- D
27
- ]), F = y === "sm" ? "6px" : y === "md" ? "8px" : "10px", I = A ? "var(--color-board-bezel-light)" : "var(--color-board-bezel-dark)", L = A ? "var(--color-board-bezel-border-light)" : "var(--color-board-bezel-border-dark)", R = y === "sm" ? A ? "0 2px 8px rgba(0,0,0,0.1), inset 0 1px 2px rgba(255,255,255,0.9)" : "0 2px 8px rgba(0,0,0,0.4), inset 0 1px 1px rgba(255,255,255,0.06)" : A ? "0 8px 32px rgba(0,0,0,0.12), 0 4px 16px rgba(0,0,0,0.08), inset 0 1px 2px rgba(255,255,255,0.9), inset 0 0 0 1px rgba(255,255,255,0.5)" : "0 8px 32px rgba(0,0,0,0.6), 0 4px 16px rgba(0,0,0,0.4), inset 0 1px 1px rgba(255,255,255,0.08), inset 0 0 0 1px rgba(255,255,255,0.03)", z = y === "sm" ? A ? "0 1px 2px rgba(0,0,0,0.15)" : "0 1px 2px rgba(0,0,0,0.4)" : A ? "0 2px 4px rgba(0,0,0,0.2), inset 0 1px 2px rgba(0,0,0,0.1), inset 0 -1px 2px rgba(255,255,255,0.5), inset 1px 0 1px rgba(0,0,0,0.08), inset -1px 0 1px rgba(255,255,255,0.4)" : "0 2px 4px rgba(0,0,0,0.5), inset 0 1px 2px rgba(0,0,0,0.8), inset 0 -1px 1px rgba(255,255,255,0.08), inset 1px 0 1px rgba(0,0,0,0.5), inset -1px 0 1px rgba(255,255,255,0.05)";
27
+ D,
28
+ O
29
+ ]), I = y === "sm" ? "6px" : y === "md" ? "8px" : "10px", L = j ? "var(--color-board-bezel-light)" : "var(--color-board-bezel-dark)", R = j ? "var(--color-board-bezel-border-light)" : "var(--color-board-bezel-border-dark)", z = y === "sm" ? j ? "0 2px 8px rgba(0,0,0,0.1), inset 0 1px 2px rgba(255,255,255,0.9)" : "0 2px 8px rgba(0,0,0,0.4), inset 0 1px 1px rgba(255,255,255,0.06)" : j ? "0 8px 32px rgba(0,0,0,0.12), 0 4px 16px rgba(0,0,0,0.08), inset 0 1px 2px rgba(255,255,255,0.9), inset 0 0 0 1px rgba(255,255,255,0.5)" : "0 8px 32px rgba(0,0,0,0.6), 0 4px 16px rgba(0,0,0,0.4), inset 0 1px 1px rgba(255,255,255,0.08), inset 0 0 0 1px rgba(255,255,255,0.03)", B = y === "sm" ? j ? "0 1px 2px rgba(0,0,0,0.15)" : "0 1px 2px rgba(0,0,0,0.4)" : j ? "0 2px 4px rgba(0,0,0,0.2), inset 0 1px 2px rgba(0,0,0,0.1), inset 0 -1px 2px rgba(255,255,255,0.5), inset 1px 0 1px rgba(0,0,0,0.08), inset -1px 0 1px rgba(255,255,255,0.4)" : "0 2px 4px rgba(0,0,0,0.5), inset 0 1px 2px rgba(0,0,0,0.8), inset 0 -1px 1px rgba(255,255,255,0.08), inset 1px 0 1px rgba(0,0,0,0.5), inset -1px 0 1px rgba(255,255,255,0.05)";
28
30
  return /* @__PURE__ */ h("div", {
29
31
  className: "w-full flex justify-center",
30
32
  children: /* @__PURE__ */ h("div", {
31
33
  role: "img",
32
- "aria-label": P,
34
+ "aria-label": F,
33
35
  "data-slot": "static-board-display",
34
- className: `${y === "sm" ? "rounded-lg border-[3px]" : "rounded-lg sm:rounded-xl border-[3px] sm:border-[4px] lg:border-[5px]"} ${S}`,
36
+ className: `${y === "sm" ? "rounded-lg border-[3px]" : "rounded-lg sm:rounded-xl border-[3px] sm:border-[4px] lg:border-[5px]"} ${C}`,
35
37
  style: {
36
- backgroundColor: I,
37
- borderColor: L,
38
- boxShadow: R,
38
+ backgroundColor: L,
39
+ borderColor: R,
40
+ boxShadow: z,
39
41
  width: "fit-content"
40
42
  },
41
43
  children: /* @__PURE__ */ h("div", {
42
44
  className: `${i[y]} relative`,
43
45
  "aria-hidden": "true",
44
- style: { background: A ? "linear-gradient(135deg, var(--color-board-surface-light) 0%, var(--color-board-bezel-border-light) 100%)" : "linear-gradient(135deg, var(--color-board-surface-dark) 0%, var(--color-board-black) 100%)" },
46
+ style: { background: j ? "linear-gradient(135deg, var(--color-board-surface-light) 0%, var(--color-board-bezel-border-light) 100%)" : "linear-gradient(135deg, var(--color-board-surface-dark) 0%, var(--color-board-black) 100%)" },
45
47
  children: /* @__PURE__ */ h("div", {
46
48
  className: `flex flex-col ${r[y]}`,
47
- children: N.map((t, n) => {
48
- let i = k && n > 0 && n % 3 == 0;
49
+ children: P.map((t, n) => {
50
+ let i = A && n > 0 && n % 3 == 0;
49
51
  return /* @__PURE__ */ h("div", {
50
52
  "data-note-row": "",
51
53
  ...i ? { "data-note-row-seam": "true" } : {},
52
54
  className: `flex ${r[y]} justify-center`,
53
- style: i ? { marginTop: F } : void 0,
55
+ style: i ? { marginTop: I } : void 0,
54
56
  children: t.map((t, n) => {
55
- let r = k && n > 0 && n % 15 == 0, i = r ? { marginLeft: F } : void 0, d = r ? { "data-note-col-seam": "true" } : {};
57
+ let r = A && n > 0 && n % 15 == 0, i = r ? { marginLeft: I } : void 0, d = r ? { "data-note-col-seam": "true" } : {};
56
58
  if (t.type === "color") {
57
- let r = e(t.code, A);
59
+ let r = e(t.code, j);
58
60
  return y === "sm" ? /* @__PURE__ */ h("div", {
59
61
  "data-note-tile": "",
60
62
  ...d,
61
63
  className: `${o[y]} ${a[y]} shrink-0`,
62
64
  style: {
63
65
  backgroundColor: r,
64
- boxShadow: z,
66
+ boxShadow: B,
65
67
  contain: "layout style paint",
66
68
  ...i
67
69
  }
@@ -70,8 +72,8 @@ var _ = (e) => `Board preview: ${e}`, v = "Board preview", y = p(function({ mess
70
72
  ...d,
71
73
  className: `relative ${o[y]} ${a[y]} shrink-0 overflow-hidden`,
72
74
  style: {
73
- backgroundColor: j,
74
- boxShadow: z,
75
+ backgroundColor: M,
76
+ boxShadow: B,
75
77
  contain: "layout style paint",
76
78
  ...i
77
79
  },
@@ -98,14 +100,14 @@ var _ = (e) => `Board preview: ${e}`, v = "Board preview", y = p(function({ mess
98
100
  ...d,
99
101
  className: `${o[y]} ${a[y]} flex shrink-0 items-center justify-center`,
100
102
  style: {
101
- backgroundColor: j,
102
- boxShadow: z,
103
+ backgroundColor: M,
104
+ boxShadow: B,
103
105
  contain: "layout style paint",
104
106
  ...i
105
107
  },
106
108
  children: f !== " " && /* @__PURE__ */ h("span", {
107
109
  className: `${s[y]} font-mono font-semibold select-none leading-none`,
108
- style: { color: p ? "#eb4034" : M },
110
+ style: { color: p ? "#eb4034" : N },
109
111
  children: f
110
112
  })
111
113
  }, n) : /* @__PURE__ */ g("div", {
@@ -113,8 +115,8 @@ var _ = (e) => `Board preview: ${e}`, v = "Board preview", y = p(function({ mess
113
115
  ...d,
114
116
  className: `relative ${o[y]} ${a[y]} shrink-0 overflow-hidden`,
115
117
  style: {
116
- backgroundColor: j,
117
- boxShadow: z,
118
+ backgroundColor: M,
119
+ boxShadow: B,
118
120
  contain: "layout style paint",
119
121
  ...i
120
122
  },
@@ -127,7 +129,7 @@ var _ = (e) => `Board preview: ${e}`, v = "Board preview", y = p(function({ mess
127
129
  },
128
130
  children: f !== " " && /* @__PURE__ */ h("span", {
129
131
  className: `${s[y]} font-mono font-semibold select-none leading-none`,
130
- style: { color: p ? "#eb4034" : M },
132
+ style: { color: p ? "#eb4034" : N },
131
133
  children: f
132
134
  })
133
135
  }),
@@ -139,7 +141,7 @@ var _ = (e) => `Board preview: ${e}`, v = "Board preview", y = p(function({ mess
139
141
  className: "absolute inset-0 pointer-events-none",
140
142
  style: {
141
143
  zIndex: 1,
142
- background: A ? "linear-gradient(180deg, rgba(255,255,255,0.3) 0%, transparent 50%, rgba(0,0,0,0.05) 100%)" : "linear-gradient(180deg, rgba(255,255,255,0.05) 0%, transparent 50%, rgba(0,0,0,0.2) 100%)"
144
+ background: j ? "linear-gradient(180deg, rgba(255,255,255,0.3) 0%, transparent 50%, rgba(0,0,0,0.05) 100%)" : "linear-gradient(180deg, rgba(255,255,255,0.05) 0%, transparent 50%, rgba(0,0,0,0.2) 100%)"
143
145
  }
144
146
  })
145
147
  ]
@@ -1 +1 @@
1
- {"version":3,"file":"static-board-display.js","names":[],"sources":["../../../src/components/board/static-board-display.tsx"],"mappings":"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"}
1
+ {"version":3,"file":"static-board-display.js","names":[],"sources":["../../../src/components/board/static-board-display.tsx"],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ import * as React from "react";
2
+ declare function Breadcrumb({ className, ...props }: Omit<React.ComponentProps<"nav">, "aria-label"> & {
3
+ /**
4
+ * Localized accessible name for the landmark (e.g. "Breadcrumb"). Required:
5
+ * an unnamed nav is indistinguishable from the site nav in a landmark list,
6
+ * and the repo does not ship English defaults for consumers to forget.
7
+ */
8
+ "aria-label": string;
9
+ }): React.JSX.Element;
10
+ declare function BreadcrumbList({ className, ...props }: React.ComponentProps<"ol">): React.JSX.Element;
11
+ declare function BreadcrumbItem({ className, ...props }: React.ComponentProps<"li">): React.JSX.Element;
12
+ /**
13
+ * A crumb that navigates. `asChild` (same useRender mechanics as Badge) lets
14
+ * the docs site pass Docusaurus's `<Link>` — router-aware prefetch and
15
+ * base-path handling — while this component keeps owning the look.
16
+ */
17
+ declare function BreadcrumbLink({ className, asChild, children, ref, ...props }: React.ComponentProps<"a"> & {
18
+ asChild?: boolean;
19
+ }): React.ReactElement<unknown, string | React.JSXElementConstructor<any>>;
20
+ /** The trail's final entry: where you are, so it announces but never navigates. */
21
+ declare function BreadcrumbPage({ className, ...props }: React.ComponentProps<"span">): React.JSX.Element;
22
+ /**
23
+ * Visual divider between crumbs. Children override the glyph (the docs site
24
+ * may want `/`); the default chevron reads as "descends into" in LTR.
25
+ */
26
+ declare function BreadcrumbSeparator({ children, className, ...props }: React.ComponentProps<"li">): React.JSX.Element;
27
+ /**
28
+ * Collapsed-middle marker for deep trails. Static by design: expand/collapse
29
+ * behaviour belongs to the consumer (wrap it in a DropdownMenu trigger via
30
+ * that component's own mechanics); baking a disclosure in here would force a
31
+ * hook — and "use client" — onto every static docs page for a control most
32
+ * trails never show.
33
+ */
34
+ declare function BreadcrumbEllipsis({ label, className, ...props }: Omit<React.ComponentProps<"span">, "children"> & {
35
+ /**
36
+ * Localized sr-only announcement (e.g. "More pages"). Required, and NOT
37
+ * `aria-hidden` on the wrapper like shadcn's version — hiding the whole
38
+ * span silences the sr-only text inside it, leaving AT users with no hint
39
+ * that levels were elided. Only the glyph is hidden.
40
+ */
41
+ label: string;
42
+ }): React.JSX.Element;
43
+ export { Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, };
@@ -0,0 +1,76 @@
1
+ import { cn as e } from "../../lib/utils.js";
2
+ import { ChevronRight as t, MoreHorizontal as n } from "lucide-react";
3
+ import * as r from "react";
4
+ import { jsx as i, jsxs as a } from "react/jsx-runtime";
5
+ import { useRender as o } from "@base-ui/react/use-render";
6
+ //#region src/components/chrome/breadcrumb.tsx
7
+ function s({ className: e, ...t }) {
8
+ return /* @__PURE__ */ i("nav", {
9
+ "data-slot": "breadcrumb",
10
+ className: e,
11
+ ...t
12
+ });
13
+ }
14
+ function c({ className: t, ...n }) {
15
+ return /* @__PURE__ */ i("ol", {
16
+ "data-slot": "breadcrumb-list",
17
+ className: e("text-muted-foreground flex flex-wrap items-center gap-1.5 text-sm break-words sm:gap-2.5", t),
18
+ ...n
19
+ });
20
+ }
21
+ function l({ className: t, ...n }) {
22
+ return /* @__PURE__ */ i("li", {
23
+ "data-slot": "breadcrumb-item",
24
+ className: e("inline-flex items-center gap-1.5", t),
25
+ ...n
26
+ });
27
+ }
28
+ function u({ className: t, asChild: n = !1, children: i, ref: a, ...s }) {
29
+ return o({
30
+ defaultTagName: "a",
31
+ ref: a,
32
+ render: n ? r.Children.only(i) : void 0,
33
+ props: {
34
+ "data-slot": "breadcrumb-link",
35
+ className: e("focus-ring rounded-sm transition-colors hover:text-foreground", t),
36
+ ...n ? {} : { children: i },
37
+ ...s
38
+ }
39
+ });
40
+ }
41
+ function d({ className: t, ...n }) {
42
+ return /* @__PURE__ */ i("span", {
43
+ "data-slot": "breadcrumb-page",
44
+ "aria-current": "page",
45
+ className: e("text-foreground font-normal", t),
46
+ ...n
47
+ });
48
+ }
49
+ function f({ children: n, className: r, ...a }) {
50
+ return /* @__PURE__ */ i("li", {
51
+ "data-slot": "breadcrumb-separator",
52
+ role: "presentation",
53
+ "aria-hidden": "true",
54
+ className: e("[&>svg]:size-3.5", r),
55
+ ...a,
56
+ children: n ?? /* @__PURE__ */ i(t, {})
57
+ });
58
+ }
59
+ function p({ label: t, className: r, ...o }) {
60
+ return /* @__PURE__ */ a("span", {
61
+ "data-slot": "breadcrumb-ellipsis",
62
+ className: e("flex items-center justify-center", r),
63
+ ...o,
64
+ children: [/* @__PURE__ */ i(n, {
65
+ className: "size-4",
66
+ "aria-hidden": "true"
67
+ }), /* @__PURE__ */ i("span", {
68
+ className: "sr-only",
69
+ children: t
70
+ })]
71
+ });
72
+ }
73
+ //#endregion
74
+ export { s as Breadcrumb, p as BreadcrumbEllipsis, l as BreadcrumbItem, u as BreadcrumbLink, c as BreadcrumbList, d as BreadcrumbPage, f as BreadcrumbSeparator };
75
+
76
+ //# sourceMappingURL=breadcrumb.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"breadcrumb.js","names":[],"sources":["../../../src/components/chrome/breadcrumb.tsx"],"mappings":";;;;;;AAoCA,SAAS,EAAW,EAClB,cACA,GAAG,KAQF;CACD,OAAO,kBAAC,OAAD;EAAK,aAAU;EAAwB;EAAW,GAAI;CAAQ,CAAA;AACvE;AAEA,SAAS,EAAe,EAAE,cAAW,GAAG,KAAqC;CAC3E,OACE,kBAAC,MAAD;EACE,aAAU;EACV,WAAW,EAGT,4FACA,CACF;EACA,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,EAAe,EAAE,cAAW,GAAG,KAAqC;CAC3E,OAAO,kBAAC,MAAD;EAAI,aAAU;EAAkB,WAAW,EAAG,oCAAoC,CAAS;EAAG,GAAI;CAAQ,CAAA;AACnH;AAOA,SAAS,EAAe,EACtB,cACA,aAAU,IACV,aACA,QACA,GAAG,KACiD;CACpD,OAAO,EAAU;EACf,gBAAgB;EACX;EACL,QAAQ,IAAW,EAAM,SAAS,KAAK,CAAQ,IAA2B,KAAA;EAC1E,OAAO;GACL,aAAa;GAOb,WAAW,EAAG,iEAAiE,CAAS;GACxF,GAAI,IAAU,CAAC,IAAI,EAAE,YAAS;GAC9B,GAAG;EACL;CACF,CAAC;AACH;AAGA,SAAS,EAAe,EAAE,cAAW,GAAG,KAAuC;CAC7E,OACE,kBAAC,QAAD;EACE,aAAU;EACV,gBAAa;EACb,WAAW,EAAG,+BAA+B,CAAS;EACtD,GAAI;CACL,CAAA;AAEL;AAMA,SAAS,EAAoB,EAAE,aAAU,cAAW,GAAG,KAAqC;CAC1F,OAKE,kBAAC,MAAD;EACE,aAAU;EACV,MAAK;EACL,eAAY;EACZ,WAAW,EAAG,oBAAoB,CAAS;EAC3C,GAAI;EAEH,UAAA,KAAY,kBAAC,GAAD,CAAe,CAAA;CAC1B,CAAA;AAER;AASA,SAAS,EAAmB,EAC1B,UACA,cACA,GAAG,KASF;CACD,OACE,kBAAC,QAAD;EAAM,aAAU;EAAsB,WAAW,EAAG,oCAAoC,CAAS;EAAG,GAAI;EAAxG,UAAA,CACE,kBAAC,GAAD;GAAgB,WAAU;GAAS,eAAY;EAAQ,CAAA,GACvD,kBAAC,QAAD;GAAM,WAAU;GAAW,UAAA;EAAY,CAAA,CACnC;;AAEV"}
@@ -0,0 +1,28 @@
1
+ import * as React from "react";
2
+ /**
3
+ * MediaFrame — a framed figure for screenshots and other media.
4
+ *
5
+ * Promoted from the docs site's BoardScreenshot/ThemedScreenshot pair
6
+ * (issue #229 item 4), which shipped two structurally identical CSS modules.
7
+ * The frame is the shared shell: media on a card surface with a hairline
8
+ * border, plus an optional bar for a caption or a toolbar (the docs put a
9
+ * black/white toggle there). The bar renders whatever the consumer passes —
10
+ * the toggle itself belongs to ToggleGroup (#218), not here.
11
+ *
12
+ * Zooming is composition, not a built-in: wrap `MediaFrameMedia` in a
13
+ * `LightboxTrigger asChild` (see overlays/lightbox.tsx), or pass `onZoom`
14
+ * for a hand-rolled handler. Either way the media becomes a real `<button>`,
15
+ * so the affordance is keyboard-operable for free.
16
+ */
17
+ declare function MediaFrame({ className, ...props }: React.ComponentProps<"figure">): React.JSX.Element;
18
+ interface MediaFrameMediaProps extends React.ComponentProps<"button"> {
19
+ /**
20
+ * Zoom-affordance handler. Setting it (or `onClick`, which a
21
+ * `LightboxTrigger asChild` injects) switches the media well from a plain
22
+ * `<div>` to a `<button>` with a zoom cursor and focus ring.
23
+ */
24
+ onZoom?: React.MouseEventHandler<HTMLButtonElement>;
25
+ }
26
+ declare function MediaFrameMedia({ className, onZoom, onClick, type, children, ...props }: MediaFrameMediaProps): React.JSX.Element;
27
+ declare function MediaFrameBar({ className, ...props }: React.ComponentProps<"figcaption">): React.JSX.Element;
28
+ export { MediaFrame, MediaFrameBar, MediaFrameMedia };
@@ -0,0 +1,40 @@
1
+ import { cn as e } from "../../lib/utils.js";
2
+ import "react";
3
+ import { jsx as t } from "react/jsx-runtime";
4
+ //#region src/components/containment/media-frame.tsx
5
+ function n({ className: n, ...r }) {
6
+ return /* @__PURE__ */ t("figure", {
7
+ "data-slot": "media-frame",
8
+ className: e("flex flex-col overflow-hidden rounded-xl border bg-card text-card-foreground shadow-card", n),
9
+ ...r
10
+ });
11
+ }
12
+ var r = "block w-full [&_img]:block [&_img]:h-auto [&_img]:w-full [&_video]:block [&_video]:h-auto [&_video]:w-full";
13
+ function i({ className: n, onZoom: i, onClick: a, type: o, children: s, ...c }) {
14
+ return i == null && a == null ? /* @__PURE__ */ t("div", {
15
+ "data-slot": "media-frame-media",
16
+ className: e(r, n),
17
+ ...c,
18
+ children: s
19
+ }) : /* @__PURE__ */ t("button", {
20
+ type: o ?? "button",
21
+ "data-slot": "media-frame-media",
22
+ className: e(r, "cursor-zoom-in outline-none focus-visible:ring-[3px] focus-visible:ring-inset focus-visible:ring-ring/50", n),
23
+ onClick: (e) => {
24
+ a?.(e), i?.(e);
25
+ },
26
+ ...c,
27
+ children: s
28
+ });
29
+ }
30
+ function a({ className: n, ...r }) {
31
+ return /* @__PURE__ */ t("figcaption", {
32
+ "data-slot": "media-frame-bar",
33
+ className: e("flex flex-wrap items-center justify-center gap-2 border-t px-3 py-2 text-sm text-muted-foreground", n),
34
+ ...r
35
+ });
36
+ }
37
+ //#endregion
38
+ export { n as MediaFrame, a as MediaFrameBar, i as MediaFrameMedia };
39
+
40
+ //# sourceMappingURL=media-frame.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"media-frame.js","names":[],"sources":["../../../src/components/containment/media-frame.tsx"],"mappings":";;;;AAoBA,SAAS,EAAW,EAAE,cAAW,GAAG,KAAyC;CAC3E,OACE,kBAAC,UAAD;EACE,aAAU;EAKV,WAAW,EACT,4FACA,CACF;EACA,GAAI;CACL,CAAA;AAEL;AAMA,IAAM,IACJ;AAWF,SAAS,EAAgB,EAAE,cAAW,WAAQ,YAAS,SAAM,aAAU,GAAG,KAA+B;CA8BvG,OAtBoB,KAAU,QAAQ,KAAW,OAI7C,kBAAC,OAAD;EACE,aAAU;EACV,WAAW,EAAG,GAAkB,CAAS;EACzC,GAAK;EAEJ;CACE,CAAA,IAaP,kBAAC,UAAD;EAEE,MAAM,KAAQ;EACd,aAAU;EAIV,WAAW,EACT,GACA,4GACA,CACF;EACA,UArB6D,MAAU;GAKzE,AADA,IAAU,CAAK,GACf,IAAS,CAAK;EAChB;EAgBI,GAAI;EAEH;CACK,CAAA;AAEZ;AAEA,SAAS,EAAc,EAAE,cAAW,GAAG,KAA6C;CAClF,OACE,kBAAC,cAAD;EACE,aAAU;EAMV,WAAW,EACT,qGACA,CACF;EACA,GAAI;CACL,CAAA;AAEL"}
@@ -0,0 +1,81 @@
1
+ import type * as React from "react";
2
+ /**
3
+ * Ranked horizontal bar list — label / track / fill / value rows. A thin
4
+ * cousin of a meter, not a chart library: no axes, no legend, no scales,
5
+ * just rows sorted by whoever calls it. Promoted from the docs site's
6
+ * "Popularity ranking" (issue #229), which hand-mixed a brand fill on an
7
+ * emphasis track once per page.
8
+ *
9
+ * This starts the `data` family: quantitative READOUTS (BarList, StatStrip).
10
+ * They are not `feedback` (no system status), not `containment` (no
11
+ * surface/box), not `typography` (the number is the point, not the prose) —
12
+ * they exist to show measured values, which no existing family owns.
13
+ *
14
+ * FILL COLOR — measured, not inherited (SC 1.4.11 wants 3:1 for meaningful
15
+ * graphics). The docs site used its brand orange; in this palette that forks
16
+ * into two tokens and only one of them survives measurement:
17
+ *
18
+ * vs light bg vs light muted vs dark bg vs dark muted
19
+ * --brand (hue-orange) 5.09:1 4.65:1 9.63:1 8.11:1
20
+ * --primary (#f5a623 tile) 1.83:1 1.67:1 9.77:1 8.23:1
21
+ *
22
+ * --primary is the literal tile and theme.css already rules it "legal as a
23
+ * field, illegal as a link" at 1.83:1 on a light page — a fill whose painted
24
+ * edge IS the datum is closer to a link than to a button face, so the tile
25
+ * fails here. --brand is the same hue at the ink plateau and clears 3:1
26
+ * against both the track and every surface in both themes, so a bar stays
27
+ * meaningful even before the reader finds the number. Strictly the value
28
+ * text makes the graphic redundant (see below) and 1.4.11 would exempt it,
29
+ * but passing outright beats litigating the exemption.
30
+ *
31
+ * The TRACK is --muted (1.09:1 light / 1.19:1 dark vs the page) — that low
32
+ * ratio is deliberate and mirrors the --border rationale in theme.css: the
33
+ * track is decoration marking where 100% would land, the fill and the text
34
+ * carry the information, so 1.4.11 does not apply to it.
35
+ *
36
+ * SEMANTICS — a plain list, no role="meter". Each row already renders its
37
+ * value as literal text beside the bar, so assistive tech hears
38
+ * "label, 943" with zero extra wiring; a meter role would announce the same
39
+ * number a second time and demand aria-valuemin/max/now plumbing to say
40
+ * nothing new. The track and fill are aria-hidden because they are that
41
+ * redundant graphic. role="list" is set explicitly: `list-none` (needed
42
+ * because rows are grid cells, not bullets) makes Safari/VoiceOver drop the
43
+ * implicit list role.
44
+ */
45
+ export interface BarListItem {
46
+ key: string;
47
+ /** Row label. Any ReactNode — pass an anchor/Link element directly, or use `renderLabel`. */
48
+ label: React.ReactNode;
49
+ value: number;
50
+ /**
51
+ * Renders the label cell — inject your router's Link here, same contract
52
+ * as PluginCard's `renderLink`/Sidebar's `renderLink` (the house pattern
53
+ * for router-agnostic links). `className` carries the truncation and type
54
+ * styles and MUST land on the returned element, so the ellipsis clips the
55
+ * link itself rather than a wrapper. There is deliberately no `href`
56
+ * shortcut: a bare string href renders a plain <a> that full-page-reloads
57
+ * inside SPA consumers, which is exactly the trap `renderLink` exists to
58
+ * avoid — same reasoning as PluginCard.
59
+ */
60
+ renderLabel?: (props: {
61
+ className: string;
62
+ children: React.ReactNode;
63
+ }) => React.ReactNode;
64
+ }
65
+ export interface BarListProps extends React.ComponentProps<"ul"> {
66
+ items: BarListItem[];
67
+ /**
68
+ * The value that fills the track completely. Defaults to the largest item
69
+ * value — the natural scale for a ranking, where the leader spans full
70
+ * width. Pass explicitly when rows share an external scale (a total, a
71
+ * quota) so bars stay comparable across lists.
72
+ */
73
+ max?: number;
74
+ /**
75
+ * Formats the visible value. Defaults to `toLocaleString()` — what the
76
+ * docs ranking shipped — so thousands read as "5,612" not "5612".
77
+ */
78
+ formatValue?: (value: number) => string;
79
+ }
80
+ declare function BarList({ items, max, formatValue, className, ...props }: BarListProps): React.JSX.Element;
81
+ export { BarList };
@@ -0,0 +1,54 @@
1
+ import { cn as e } from "../../lib/utils.js";
2
+ import { jsx as t, jsxs as n } from "react/jsx-runtime";
3
+ //#region src/components/data/bar-list.tsx
4
+ var r = "min-w-0 truncate text-sm";
5
+ function i(e, t) {
6
+ return t <= 0 ? 0 : Math.min(100, Math.max(0, e / t * 100));
7
+ }
8
+ function a({ items: a, max: o, formatValue: s = (e) => e.toLocaleString(), className: c, ...l }) {
9
+ let u = o ?? Math.max(0, ...a.map((e) => e.value));
10
+ return /* @__PURE__ */ t("ul", {
11
+ role: "list",
12
+ "data-slot": "bar-list",
13
+ className: e("grid w-full list-none grid-cols-[fit-content(40%)_minmax(0,1fr)_max-content] items-center gap-x-3 gap-y-2 p-0", c),
14
+ ...l,
15
+ children: a.map((e) => {
16
+ let a = i(e.value, u);
17
+ return /* @__PURE__ */ n("li", {
18
+ "data-slot": "bar-list-item",
19
+ className: "col-span-3 grid grid-cols-subgrid items-center",
20
+ children: [
21
+ e.renderLabel ? e.renderLabel({
22
+ className: r,
23
+ children: e.label
24
+ }) : /* @__PURE__ */ t("span", {
25
+ className: r,
26
+ children: e.label
27
+ }),
28
+ /* @__PURE__ */ t("div", {
29
+ "data-slot": "bar-list-track",
30
+ "aria-hidden": "true",
31
+ className: "h-4.5 overflow-hidden rounded-sm bg-muted",
32
+ children: /* @__PURE__ */ t("div", {
33
+ "data-slot": "bar-list-fill",
34
+ className: "h-full rounded-sm bg-brand",
35
+ style: a > 0 ? {
36
+ width: `${a}%`,
37
+ minWidth: "2px"
38
+ } : { width: 0 }
39
+ })
40
+ }),
41
+ /* @__PURE__ */ t("span", {
42
+ "data-slot": "bar-list-value",
43
+ className: "text-right text-sm tabular-nums text-muted-foreground",
44
+ children: s(e.value)
45
+ })
46
+ ]
47
+ }, e.key);
48
+ })
49
+ });
50
+ }
51
+ //#endregion
52
+ export { a as BarList };
53
+
54
+ //# sourceMappingURL=bar-list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bar-list.js","names":[],"sources":["../../../src/components/data/bar-list.tsx"],"mappings":";;;AAkFA,IAAM,IAAc;AASpB,SAAS,EAAY,GAAe,GAAqB;CAEvD,OADI,KAAO,IAAU,IACd,KAAK,IAAI,KAAK,KAAK,IAAI,GAAI,IAAQ,IAAO,GAAG,CAAC;AACvD;AAEA,SAAS,EAAQ,EAAE,UAAO,QAAK,kBAAe,MAAM,EAAE,eAAe,GAAG,cAAW,GAAG,KAAuB;CAG3G,IAAM,IAAQ,KAAO,KAAK,IAAI,GAAG,GAAG,EAAM,KAAK,MAAS,EAAK,KAAK,CAAC;CACnE,OAeE,kBAAC,MAAD;EACE,MAAK;EACL,aAAU;EACV,WAAW,EACT,iHACA,CACF;EACA,GAAI;EAEH,UAAA,EAAM,KAAK,MAAS;GACnB,IAAM,IAAM,EAAY,EAAK,OAAO,CAAK;GACzC,OACE,kBAAC,MAAD;IAAmB,aAAU;IAAgB,WAAU;IAAvD,UAAA;KACG,EAAK,cACJ,EAAK,YAAY;MAAE,WAAW;MAAa,UAAU,EAAK;KAAM,CAAC,IAEjE,kBAAC,QAAD;MAAM,WAAW;MAAc,UAAA,EAAK;KAAY,CAAA;KAElD,kBAAC,OAAD;MAAK,aAAU;MAAiB,eAAY;MAAO,WAAU;MAC3D,UAAA,kBAAC,OAAD;OACE,aAAU;OACV,WAAU;OAIV,OAAO,IAAM,IAAI;QAAE,OAAO,GAAG,EAAI;QAAI,UAAU;OAAM,IAAI,EAAE,OAAO,EAAE;MACrE,CAAA;KACE,CAAA;KACL,kBAAC,QAAD;MAAM,aAAU;MAAiB,WAAU;MACxC,UAAA,EAAY,EAAK,KAAK;KACnB,CAAA;IACJ;GAnBK,GAAA,EAAK,GAmBV;EAER,CAAC;CACC,CAAA;AAER"}
@@ -0,0 +1,28 @@
1
+ import { type VariantProps } from "class-variance-authority";
2
+ import * as React from "react";
3
+ /**
4
+ * Chip — the OPERABLE counterpart to {@link Badge} (#229).
5
+ *
6
+ * Badge is deliberately non-interactive content, which is why its comments
7
+ * wave off SC 1.4.11. Chip is a link or button wearing the same outline
8
+ * vocabulary, so 1.4.11 (3:1 non-text contrast for component/state visuals)
9
+ * DOES reach it, and every state below is measured. Selection is explicitly
10
+ * out of scope — a Chip never carries `aria-pressed`; that job belongs to
11
+ * ToggleGroup (#218).
12
+ */
13
+ declare const chipVariants: (props?: ({
14
+ mono?: boolean | null | undefined;
15
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
16
+ /**
17
+ * A link/button-shaped tag: archived-version links, blog tags.
18
+ *
19
+ * The primary usage is `asChild` around a real anchor —
20
+ * `<Chip asChild><a href=…>5.11</a></Chip>` — so navigation keeps native
21
+ * link semantics. Without `asChild` it renders a real `<button>`, never a
22
+ * styled span: a Chip is operable by definition, and a span default would
23
+ * hand every bare `<Chip onClick>` call site a focus/keyboard/AT bug.
24
+ */
25
+ declare function Chip({ className, mono, asChild, children, ref, ...props }: React.ComponentProps<"button"> & VariantProps<typeof chipVariants> & {
26
+ asChild?: boolean;
27
+ }): React.ReactElement<unknown, string | React.JSXElementConstructor<any>>;
28
+ export { Chip, chipVariants };
@@ -0,0 +1,29 @@
1
+ import { cn as e } from "../../lib/utils.js";
2
+ import * as t from "react";
3
+ import { cva as n } from "class-variance-authority";
4
+ import { useRender as r } from "@base-ui/react/use-render";
5
+ //#region src/components/feedback/chip.tsx
6
+ var i = n("inline-flex items-center justify-center rounded-full border px-2.5 py-1 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none text-foreground no-underline hover:bg-accent hover:text-accent-foreground hover:border-brand active:bg-secondary focus-ring transition-[color,background-color,border-color,box-shadow] duration-control disabled:pointer-events-none disabled:opacity-50", {
7
+ variants: { mono: {
8
+ true: "font-mono",
9
+ false: ""
10
+ } },
11
+ defaultVariants: { mono: !1 }
12
+ });
13
+ function a({ className: n, mono: a, asChild: o = !1, children: s, ref: c, ...l }) {
14
+ return r({
15
+ defaultTagName: "button",
16
+ ref: c,
17
+ render: o ? t.Children.only(s) : void 0,
18
+ props: {
19
+ "data-slot": "chip",
20
+ className: e(i({ mono: a }), n),
21
+ ...o ? {} : { children: s },
22
+ ...l
23
+ }
24
+ });
25
+ }
26
+ //#endregion
27
+ export { a as Chip, i as chipVariants };
28
+
29
+ //# sourceMappingURL=chip.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chip.js","names":[],"sources":["../../../src/components/feedback/chip.tsx"],"mappings":";;;;;AAgBA,IAAM,IAAe,EA0CnB,2aACA;CACE,UAAU,EAMR,MAAM;EACJ,MAAM;EACN,OAAO;CACT,EACF;CACA,iBAAiB,EACf,MAAM,GACR;AACF,CACF;AAWA,SAAS,EAAK,EACZ,cACA,SACA,aAAU,IACV,aACA,QACA,GAAG,KAC0F;CAC7F,OAAO,EAAU;EACf,gBAAgB;EACX;EACL,QAAQ,IAAW,EAAM,SAAS,KAAK,CAAQ,IAA2B,KAAA;EAC1E,OAAO;GACL,aAAa;GACb,WAAW,EAAG,EAAa,EAAE,QAAK,CAAC,GAAG,CAAS;GAC/C,GAAI,IAAU,CAAC,IAAI,EAAE,YAAS;GAC9B,GAAG;EACL;CACF,CAAC;AACH"}
@@ -0,0 +1,56 @@
1
+ import { Toggle as TogglePrimitive } from "@base-ui/react/toggle";
2
+ import { ToggleGroup as ToggleGroupPrimitive } from "@base-ui/react/toggle-group";
3
+ import { type VariantProps } from "class-variance-authority";
4
+ import * as React from "react";
5
+ import type { SelectionGroupNameProps } from "./toggle-card";
6
+ declare const toggleVariants: (props?: ({
7
+ variant?: "default" | "outline" | null | undefined;
8
+ size?: "default" | "icon" | "sm" | "lg" | "icon-sm" | null | undefined;
9
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
10
+ export type ToggleProps = Omit<React.ComponentProps<typeof TogglePrimitive>, "onPressedChange"> & VariantProps<typeof toggleVariants> & {
11
+ /**
12
+ * Fired with the next pressed state. Base UI passes `(pressed,
13
+ * eventDetails)`; the extra argument is dropped here for the same
14
+ * reason toggle-card.tsx drops it — it leaks into
15
+ * `onPressedChange={setState}` call sites.
16
+ */
17
+ onPressedChange?: (pressed: boolean) => void;
18
+ };
19
+ /**
20
+ * A two-state button — `aria-pressed`, pressed fill and focus ring included,
21
+ * so none of them can be forgotten at a call site (#218).
22
+ *
23
+ * Standalone it owns its pressed state (`pressed`/`defaultPressed`); inside a
24
+ * {@link ToggleGroup} it is driven by the group's `value` and MUST carry a
25
+ * `value` prop of its own (Base UI warns in dev if it doesn't).
26
+ */
27
+ declare function Toggle({ className, variant, size, onPressedChange, ...props }: ToggleProps): React.JSX.Element;
28
+ declare const toggleGroupVariants: (props?: ({
29
+ segmented?: boolean | null | undefined;
30
+ orientation?: "horizontal" | "vertical" | null | undefined;
31
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
32
+ export type ToggleGroupProps = Omit<React.ComponentProps<typeof ToggleGroupPrimitive>, "onValueChange"> & SelectionGroupNameProps & VariantProps<typeof toggleGroupVariants> & {
33
+ /** Fired with the values of all pressed items (eventDetails dropped). */
34
+ onValueChange?: (groupValue: string[]) => void;
35
+ /**
36
+ * Joined toolbar look: one shared border, hairline dividers, items
37
+ * stripped of their own chrome. Off, items sit loose with a small gap.
38
+ */
39
+ segmented?: boolean;
40
+ };
41
+ /**
42
+ * Shared state for a set of {@link Toggle}s — one tab stop, roving focus.
43
+ *
44
+ * The value model is Base UI's: always an array of the pressed items'
45
+ * values, single-select by default (`multiple` opts into any-of-N). The
46
+ * issue sketched Radix's `type="single" | "multiple"` with a
47
+ * `string | string[]` value instead; that union forks every controlled call
48
+ * site into runtime narrowing, and the empty single-selection ("none of
49
+ * these") falls out of the array shape for free, so Base UI's model stands.
50
+ *
51
+ * Single-select here CAN be emptied by pressing the pressed item again. If
52
+ * your group must always have a selection, that is a radiogroup — use
53
+ * SegmentedControl (toggle-card.tsx).
54
+ */
55
+ declare function ToggleGroup({ className, segmented, orientation, onValueChange, ...props }: ToggleGroupProps): React.JSX.Element;
56
+ export { Toggle, ToggleGroup, toggleGroupVariants, toggleVariants };