@fiestaboard/ui 5.3.0 → 5.4.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.
Files changed (69) hide show
  1. package/README.md +18 -0
  2. package/dist/components/board/board-teaser.d.ts +9 -1
  3. package/dist/components/board/board-teaser.js +56 -52
  4. package/dist/components/board/board-teaser.js.map +1 -1
  5. package/dist/components/chrome/nav-list.d.ts +53 -0
  6. package/dist/components/chrome/nav-list.js +84 -0
  7. package/dist/components/chrome/nav-list.js.map +1 -0
  8. package/dist/components/containment/icon-tile.d.ts +67 -0
  9. package/dist/components/containment/icon-tile.js +44 -0
  10. package/dist/components/containment/icon-tile.js.map +1 -0
  11. package/dist/components/containment/json-tree.js +1 -1
  12. package/dist/components/containment/json-tree.js.map +1 -1
  13. package/dist/components/containment/scroll-area.d.ts +17 -0
  14. package/dist/components/containment/scroll-area.js +2 -2
  15. package/dist/components/containment/scroll-area.js.map +1 -1
  16. package/dist/components/containment/tabs.js +2 -2
  17. package/dist/components/containment/tabs.js.map +1 -1
  18. package/dist/components/editor/formula/formula-editor-panel.js +2 -2
  19. package/dist/components/editor/formula/formula-editor-panel.js.map +1 -1
  20. package/dist/components/editor/template-editor-toolbar.d.ts +27 -3
  21. package/dist/components/editor/template-editor-toolbar.js +99 -96
  22. package/dist/components/editor/template-editor-toolbar.js.map +1 -1
  23. package/dist/components/forms/button.d.ts +1 -1
  24. package/dist/components/forms/button.js +2 -0
  25. package/dist/components/forms/button.js.map +1 -1
  26. package/dist/components/forms/selection-group.d.ts +82 -0
  27. package/dist/components/forms/selection-group.js +51 -0
  28. package/dist/components/forms/selection-group.js.map +1 -0
  29. package/dist/components/forms/swatch.d.ts +81 -0
  30. package/dist/components/forms/swatch.js +91 -0
  31. package/dist/components/forms/swatch.js.map +1 -0
  32. package/dist/components/forms/timezone-picker.d.ts +163 -0
  33. package/dist/components/forms/timezone-picker.js +158 -0
  34. package/dist/components/forms/timezone-picker.js.map +1 -0
  35. package/dist/components/forms/toggle-card.d.ts +45 -35
  36. package/dist/components/forms/toggle-card.js +187 -122
  37. package/dist/components/forms/toggle-card.js.map +1 -1
  38. package/dist/components/forms/toggle.d.ts +1 -1
  39. package/dist/components/layout/flex.d.ts +1 -1
  40. package/dist/components/layout/grid.d.ts +1 -1
  41. package/dist/components/layout/stack.d.ts +1 -1
  42. package/dist/components/overlays/lightbox.js +1 -1
  43. package/dist/components/overlays/lightbox.js.map +1 -1
  44. package/dist/components/overlays/overlay-close.js +1 -1
  45. package/dist/components/overlays/overlay-close.js.map +1 -1
  46. package/dist/components/plugin/board-showcase.d.ts +8 -1
  47. package/dist/components/plugin/board-showcase.js +18 -17
  48. package/dist/components/plugin/board-showcase.js.map +1 -1
  49. package/dist/components/plugin/plugin-card.d.ts +8 -1
  50. package/dist/components/plugin/plugin-card.js +8 -7
  51. package/dist/components/plugin/plugin-card.js.map +1 -1
  52. package/dist/components/plugin/scaled-board-teaser.d.ts +4 -1
  53. package/dist/components/plugin/scaled-board-teaser.js +12 -11
  54. package/dist/components/plugin/scaled-board-teaser.js.map +1 -1
  55. package/dist/components/typography/heading.d.ts +1 -1
  56. package/dist/components/typography/text-link.d.ts +27 -3
  57. package/dist/components/typography/text-link.js +1 -1
  58. package/dist/components/typography/text-link.js.map +1 -1
  59. package/dist/components/typography/text.d.ts +1 -1
  60. package/dist/components/wizard/wizard-shell.d.ts +6 -1
  61. package/dist/components/wizard/wizard-shell.js +38 -35
  62. package/dist/components/wizard/wizard-shell.js.map +1 -1
  63. package/dist/index.d.ts +4 -0
  64. package/dist/index.js +104 -100
  65. package/dist/lib/board-characters.d.ts +13 -0
  66. package/dist/lib/board-characters.js +1 -1
  67. package/dist/lib/board-characters.js.map +1 -1
  68. package/dist/theme.css +85 -4
  69. package/package.json +9 -2
@@ -13,26 +13,26 @@ var f = {
13
13
  blackBoard: "Black Board",
14
14
  whiteBoard: "White Board"
15
15
  }, p = "rounded-full border px-4 py-1.5 text-xs font-medium transition-colors data-[active]:border-primary data-[active]:bg-primary data-[active]:text-primary-foreground data-[active]:font-semibold hover:border-brand hover:text-brand data-[active]:hover:text-primary-foreground";
16
- function m({ previews: o, previewLabel: m, size: h = "md", boardType: g, defaultBoardType: _ = "black", onBoardTypeChange: v, labels: y, className: b }) {
17
- let x = {
16
+ function m({ previews: o, previewLabel: m, size: h = "md", boardType: g, code62Glyph: _, defaultBoardType: v = "black", onBoardTypeChange: y, labels: b, className: x }) {
17
+ let S = {
18
18
  ...f,
19
- ...y
20
- }, [S, C] = l(_), w = g ?? S;
21
- function T(e) {
22
- g === void 0 && C(e), v?.(e);
19
+ ...b
20
+ }, [C, w] = l(v), T = g ?? C;
21
+ function E(e) {
22
+ g === void 0 && w(e), y?.(e);
23
23
  }
24
24
  if (o.length === 0) return null;
25
- let E = s(o, x);
25
+ let D = s(o, S);
26
26
  return /* @__PURE__ */ d("div", {
27
27
  "data-slot": "board-showcase",
28
- className: e("flex flex-col items-center gap-4", b),
28
+ className: e("flex flex-col items-center gap-4", x),
29
29
  children: [/* @__PURE__ */ d(t, {
30
30
  defaultValue: 0,
31
31
  className: "flex w-full flex-col items-center gap-4",
32
32
  children: [o.length > 1 && /* @__PURE__ */ u(r, {
33
- "aria-label": x.boardShape,
33
+ "aria-label": S.boardShape,
34
34
  className: "h-auto gap-2 rounded-full bg-transparent p-0",
35
- children: E.map((e, t) => /* @__PURE__ */ u(i, {
35
+ children: D.map((e, t) => /* @__PURE__ */ u(i, {
36
36
  value: t,
37
37
  className: p,
38
38
  children: e
@@ -43,25 +43,26 @@ function m({ previews: o, previewLabel: m, size: h = "md", boardType: g, default
43
43
  children: /* @__PURE__ */ u(a, {
44
44
  message: c(e),
45
45
  size: h,
46
- boardType: w,
46
+ boardType: T,
47
47
  deviceType: e.device_type ?? "flagship",
48
+ code62Glyph: _,
48
49
  notesWide: e.notes_wide ?? 1,
49
50
  notesTall: e.notes_tall ?? 1,
50
51
  previewLabel: m
51
52
  })
52
- }, E[t]))]
53
+ }, D[t]))]
53
54
  }), /* @__PURE__ */ u("div", {
54
55
  role: "group",
55
- "aria-label": x.boardColor,
56
+ "aria-label": S.boardColor,
56
57
  className: "flex",
57
58
  children: ["black", "white"].map((t) => {
58
- let n = w === t;
59
+ let n = T === t;
59
60
  return /* @__PURE__ */ u("button", {
60
61
  type: "button",
61
62
  "aria-pressed": n,
62
- onClick: () => T(t),
63
- className: e("border px-4 py-1.5 text-xs font-medium transition-colors", "first:rounded-l-full last:rounded-r-full [&:not(:last-child)]:border-r-0", "outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50", n ? "border-primary bg-primary font-semibold text-primary-foreground" : "text-muted-foreground hover:border-brand hover:text-brand"),
64
- children: t === "black" ? x.blackBoard : x.whiteBoard
63
+ onClick: () => E(t),
64
+ className: e("border px-4 py-1.5 text-xs font-medium transition-colors", "first:rounded-l-full last:rounded-r-full [&:not(:last-child)]:border-r-0", "focus-ring", n ? "border-primary bg-primary font-semibold text-primary-foreground" : "text-muted-foreground hover:border-brand hover:text-brand"),
65
+ children: t === "black" ? S.blackBoard : S.whiteBoard
65
66
  }, t);
66
67
  })
67
68
  })]
@@ -1 +1 @@
1
- {"version":3,"file":"board-showcase.js","names":[],"sources":["../../../src/components/plugin/board-showcase.tsx"],"mappings":";;;;;;;;AAiCA,IAAa,IAA+C;CAC1D,GAAG;CACH,YAAY;CACZ,YAAY;CACZ,YAAY;CACZ,YAAY;AACd,GAsBM,IACJ;AAIF,SAAgB,EAAc,EAC5B,aACA,iBACA,UAAO,MACP,cACA,sBAAmB,SACnB,sBACA,WACA,gBACqB;CACrB,IAAM,IAAI;EAAE,GAAG;EAAyB,GAAG;CAAO,GAC5C,CAAC,GAAuB,KAA4B,EAA4B,CAAgB,GAChG,IAAkB,KAAa;CAErC,SAAS,EAAgB,GAAyB;EAEhD,AADI,MAAc,KAAA,KAAW,EAAyB,CAAI,GAC1D,IAAoB,CAAI;CAC1B;CAEA,IAAI,EAAS,WAAW,GAAG,OAAO;CAElC,IAAM,IAAY,EAAc,GAAU,CAAC;CAE3C,OACE,kBAAC,OAAD;EAAK,aAAU;EAAiB,WAAW,EAAG,oCAAoC,CAAS;EAA3F,UAAA,CACE,kBAAC,GAAD;GAAM,cAAc;GAAG,WAAU;GAAjC,UAAA,CACG,EAAS,SAAS,KACjB,kBAAC,GAAD;IAAU,cAAY,EAAE;IAAY,WAAU;IAC3C,UAAA,EAAU,KAAK,GAAO,MACrB,kBAAC,GAAD;KAAyB,OAAO;KAAO,WAAW;KAC/C,UAAA;IACU,GAFK,CAEL,CACd;GACO,CAAA,GAGX,EAAS,KAAK,GAAS,MACtB,kBAAC,GAAD;IAEE,OAAO;IACP,WAAU;IAEV,UAAA,kBAAC,GAAD;KACE,SAAS,EAAe,CAAO;KACzB;KACN,WAAW;KACX,YAAY,EAAQ,eAAe;KACnC,WAAW,EAAQ,cAAc;KACjC,WAAW,EAAQ,cAAc;KACnB;IACf,CAAA;GACU,GAbN,EAAU,EAaJ,CACd,CACG;EAEN,CAAA,GAAA,kBAAC,OAAD;GAAK,MAAK;GAAQ,cAAY,EAAE;GAAY,WAAU;GAClD,UAAA,CAAC,SAAS,OAAO,CAAC,CAAW,KAAK,MAAU;IAC5C,IAAM,IAAS,MAAoB;IACnC,OACE,kBAAC,UAAD;KAEE,MAAK;KACL,gBAAc;KACd,eAAe,EAAgB,CAAK;KACpC,WAAW,EACT,4DACA,4EACA,oEACA,IACI,oEACA,2DACN;KAEC,UAAA,MAAU,UAAU,EAAE,aAAa,EAAE;IAChC,GAdD,CAcC;GAEZ,CAAC;EACE,CAAA,CACF;;AAET"}
1
+ {"version":3,"file":"board-showcase.js","names":[],"sources":["../../../src/components/plugin/board-showcase.tsx"],"mappings":";;;;;;;;AAkCA,IAAa,IAA+C;CAC1D,GAAG;CACH,YAAY;CACZ,YAAY;CACZ,YAAY;CACZ,YAAY;AACd,GA4BM,IACJ;AAIF,SAAgB,EAAc,EAC5B,aACA,iBACA,UAAO,MACP,cACA,gBACA,sBAAmB,SACnB,sBACA,WACA,gBACqB;CACrB,IAAM,IAAI;EAAE,GAAG;EAAyB,GAAG;CAAO,GAC5C,CAAC,GAAuB,KAA4B,EAA4B,CAAgB,GAChG,IAAkB,KAAa;CAErC,SAAS,EAAgB,GAAyB;EAEhD,AADI,MAAc,KAAA,KAAW,EAAyB,CAAI,GAC1D,IAAoB,CAAI;CAC1B;CAEA,IAAI,EAAS,WAAW,GAAG,OAAO;CAElC,IAAM,IAAY,EAAc,GAAU,CAAC;CAE3C,OACE,kBAAC,OAAD;EAAK,aAAU;EAAiB,WAAW,EAAG,oCAAoC,CAAS;EAA3F,UAAA,CACE,kBAAC,GAAD;GAAM,cAAc;GAAG,WAAU;GAAjC,UAAA,CACG,EAAS,SAAS,KACjB,kBAAC,GAAD;IAAU,cAAY,EAAE;IAAY,WAAU;IAC3C,UAAA,EAAU,KAAK,GAAO,MACrB,kBAAC,GAAD;KAAyB,OAAO;KAAO,WAAW;KAC/C,UAAA;IACU,GAFK,CAEL,CACd;GACO,CAAA,GAGX,EAAS,KAAK,GAAS,MACtB,kBAAC,GAAD;IAEE,OAAO;IACP,WAAU;IAEV,UAAA,kBAAC,GAAD;KACE,SAAS,EAAe,CAAO;KACzB;KACN,WAAW;KACX,YAAY,EAAQ,eAAe;KACtB;KACb,WAAW,EAAQ,cAAc;KACjC,WAAW,EAAQ,cAAc;KACnB;IACf,CAAA;GACU,GAdN,EAAU,EAcJ,CACd,CACG;EAEN,CAAA,GAAA,kBAAC,OAAD;GAAK,MAAK;GAAQ,cAAY,EAAE;GAAY,WAAU;GAClD,UAAA,CAAC,SAAS,OAAO,CAAC,CAAW,KAAK,MAAU;IAC5C,IAAM,IAAS,MAAoB;IACnC,OACE,kBAAC,UAAD;KAEE,MAAK;KACL,gBAAc;KACd,eAAe,EAAgB,CAAK;KACpC,WAAW,EACT,4DACA,4EACA,cACA,IACI,oEACA,2DACN;KAEC,UAAA,MAAU,UAAU,EAAE,aAAa,EAAE;IAChC,GAdD,CAcC;GAEZ,CAAC;EACE,CAAA,CACF;;AAET"}
@@ -9,6 +9,7 @@
9
9
  * without nesting one interactive element inside another.
10
10
  */
11
11
  import type { CSSProperties, ReactNode } from "react";
12
+ import type { Code62Glyph } from "../../lib/board-characters";
12
13
  export interface PluginCardProps {
13
14
  name: string;
14
15
  description?: ReactNode;
@@ -24,6 +25,12 @@ export interface PluginCardProps {
24
25
  /** Literal board line, at most 15 tiles. Omit to hide the teaser footer. */
25
26
  teaser?: string;
26
27
  boardType?: "black" | "white";
28
+ /**
29
+ * Which glyph the viewer's board draws for code 62 — a teaser carrying a
30
+ * temperature is `°` on an older Flagship and `♥` on one built from 2026
31
+ * (FiestaBoard#1666). Defaults to `"degree"`.
32
+ */
33
+ code62Glyph?: Code62Glyph;
27
34
  /**
28
35
  * Renders the card's primary link. Receives the class that stretches it over
29
36
  * the card, and the card title as children.
@@ -37,4 +44,4 @@ export interface PluginCardProps {
37
44
  className?: string;
38
45
  style?: CSSProperties;
39
46
  }
40
- export declare function PluginCard({ name, description, authorLabel, category, categoryLabel, teaser, boardType, renderLink, action, className, style, }: PluginCardProps): import("react").JSX.Element;
47
+ export declare function PluginCard({ name, description, authorLabel, category, categoryLabel, teaser, boardType, code62Glyph, renderLink, action, className, style, }: PluginCardProps): import("react").JSX.Element;
@@ -7,11 +7,11 @@ import { ScaledBoardTeaser as i } from "./scaled-board-teaser.js";
7
7
  import { jsx as a, jsxs as o } from "react/jsx-runtime";
8
8
  //#region src/components/plugin/plugin-card.tsx
9
9
  var s = "after:absolute after:inset-0 after:rounded-xl after:content-[''] outline-none focus-visible:after:ring-[3px] focus-visible:after:ring-ring/50 text-foreground no-underline hover:no-underline hover:text-foreground";
10
- function c({ name: c, description: l, authorLabel: u, category: d, categoryLabel: f, teaser: p, boardType: m = "black", renderLink: h, action: g, className: _, style: v }) {
10
+ function c({ name: c, description: l, authorLabel: u, category: d, categoryLabel: f, teaser: p, boardType: m = "black", code62Glyph: h, renderLink: g, action: _, className: v, style: y }) {
11
11
  return /* @__PURE__ */ o("div", {
12
12
  "data-slot": "plugin-card",
13
- style: v,
14
- className: e("group relative flex h-full flex-col overflow-hidden rounded-xl border bg-card text-card-foreground", "shadow-card transition-[transform,box-shadow] duration-base hover:-translate-y-1 hover:shadow-lg", "motion-reduce:transition-none motion-reduce:hover:translate-y-0", _),
13
+ style: y,
14
+ className: e("group relative flex h-full flex-col overflow-hidden rounded-xl border bg-card text-card-foreground", "shadow-card transition-[transform,box-shadow] duration-base hover:-translate-y-1 hover:shadow-lg", "motion-reduce:transition-none motion-reduce:hover:translate-y-0", v),
15
15
  children: [/* @__PURE__ */ o("div", {
16
16
  className: "flex flex-1 flex-col gap-2 p-4",
17
17
  children: [
@@ -20,7 +20,7 @@ function c({ name: c, description: l, authorLabel: u, category: d, categoryLabel
20
20
  children: [/* @__PURE__ */ a(t, {
21
21
  level: 3,
22
22
  className: "min-w-0 text-base",
23
- children: h({
23
+ children: g({
24
24
  className: s,
25
25
  children: c
26
26
  })
@@ -44,9 +44,9 @@ function c({ name: c, description: l, authorLabel: u, category: d, categoryLabel
44
44
  size: "xs",
45
45
  className: "truncate",
46
46
  children: u
47
- }) : /* @__PURE__ */ a("span", {}), g && /* @__PURE__ */ a("div", {
47
+ }) : /* @__PURE__ */ a("span", {}), _ && /* @__PURE__ */ a("div", {
48
48
  className: "relative z-10 shrink-0",
49
- children: g
49
+ children: _
50
50
  })]
51
51
  })
52
52
  ]
@@ -54,7 +54,8 @@ function c({ name: c, description: l, authorLabel: u, category: d, categoryLabel
54
54
  className: "border-t bg-muted/30 px-3 py-4",
55
55
  children: /* @__PURE__ */ a(i, {
56
56
  teaser: p,
57
- boardType: m
57
+ boardType: m,
58
+ code62Glyph: h
58
59
  })
59
60
  })]
60
61
  });
@@ -1 +1 @@
1
- {"version":3,"file":"plugin-card.js","names":[],"sources":["../../../src/components/plugin/plugin-card.tsx"],"mappings":";;;;;;;;AAsBA,IAAM,IACJ;AA8BF,SAAgB,EAAW,EACzB,SACA,gBACA,gBACA,aACA,kBACA,WACA,eAAY,SACZ,eACA,WACA,cACA,YACkB;CAClB,OACE,kBAAC,OAAD;EACE,aAAU;EACH;EACP,WAAW,EACT,sGACA,oGACA,mEACA,CACF;EARF,UAAA,CAUE,kBAAC,OAAD;GAAK,WAAU;GAAf,UAAA;IACE,kBAAC,OAAD;KAAK,WAAU;KAAf,UAAA,CACE,kBAAC,GAAD;MAAS,OAAO;MAAG,WAAU;MAC1B,UAAA,EAAW;OAAE,WAAW;OAAsB,UAAU;MAAK,CAAC;KACxD,CAAA,GACR,KAAY,kBAAC,GAAD;MAA+B;MAAU,OAAO;MAAe,WAAU;KAAW,CAAA,CAC9F;;IAEJ,KACC,kBAAC,GAAD;KAAM,MAAK;KAAQ,MAAK;KAAK,WAAU;KACpC,UAAA;IACG,CAAA;IAGR,kBAAC,OAAD;KAAK,WAAU;KAAf,UAAA,CACG,IACC,kBAAC,GAAD;MAAM,IAAG;MAAO,MAAK;MAAQ,MAAK;MAAK,WAAU;MAC9C,UAAA;KACG,CAAA,IAEN,kBAAC,QAAD,CAAO,CAAA,GAER,KAAU,kBAAC,OAAD;MAAK,WAAU;MAA0B,UAAA;KAAY,CAAA,CAC7D;;GACF;EAEJ,CAAA,GAAA,KACC,kBAAC,OAAD;GAAK,WAAU;GACb,UAAA,kBAAC,GAAD;IAA2B;IAAmB;GAAY,CAAA;EACvD,CAAA,CAEJ;;AAET"}
1
+ {"version":3,"file":"plugin-card.js","names":[],"sources":["../../../src/components/plugin/plugin-card.tsx"],"mappings":";;;;;;;;AAuBA,IAAM,IACJ;AAoCF,SAAgB,EAAW,EACzB,SACA,gBACA,gBACA,aACA,kBACA,WACA,eAAY,SACZ,gBACA,eACA,WACA,cACA,YACkB;CAClB,OACE,kBAAC,OAAD;EACE,aAAU;EACH;EACP,WAAW,EACT,sGACA,oGACA,mEACA,CACF;EARF,UAAA,CAUE,kBAAC,OAAD;GAAK,WAAU;GAAf,UAAA;IACE,kBAAC,OAAD;KAAK,WAAU;KAAf,UAAA,CACE,kBAAC,GAAD;MAAS,OAAO;MAAG,WAAU;MAC1B,UAAA,EAAW;OAAE,WAAW;OAAsB,UAAU;MAAK,CAAC;KACxD,CAAA,GACR,KAAY,kBAAC,GAAD;MAA+B;MAAU,OAAO;MAAe,WAAU;KAAW,CAAA,CAC9F;;IAEJ,KACC,kBAAC,GAAD;KAAM,MAAK;KAAQ,MAAK;KAAK,WAAU;KACpC,UAAA;IACG,CAAA;IAGR,kBAAC,OAAD;KAAK,WAAU;KAAf,UAAA,CACG,IACC,kBAAC,GAAD;MAAM,IAAG;MAAO,MAAK;MAAQ,MAAK;MAAK,WAAU;MAC9C,UAAA;KACG,CAAA,IAEN,kBAAC,QAAD,CAAO,CAAA,GAER,KAAU,kBAAC,OAAD;MAAK,WAAU;MAA0B,UAAA;KAAY,CAAA,CAC7D;;GACF;EAEJ,CAAA,GAAA,KACC,kBAAC,OAAD;GAAK,WAAU;GACb,UAAA,kBAAC,GAAD;IAA2B;IAAmB;IAAwB;GAAc,CAAA;EACjF,CAAA,CAEJ;;AAET"}
@@ -1,11 +1,14 @@
1
+ import type { Code62Glyph } from "../../lib/board-characters";
1
2
  export interface ScaledBoardTeaserProps {
2
3
  /** Literal board line, e.g. `"{66}AQI 45 CLEAR"`. */
3
4
  teaser: string;
4
5
  boardType?: "black" | "white";
6
+ /** Which glyph the board draws for code 62; see `BoardTeaser`. */
7
+ code62Glyph?: Code62Glyph;
5
8
  /** Strip width in tiles. */
6
9
  tiles?: number;
7
10
  minScale?: number;
8
11
  maxScale?: number;
9
12
  className?: string;
10
13
  }
11
- export declare function ScaledBoardTeaser({ teaser, boardType, tiles, minScale, maxScale, className, }: ScaledBoardTeaserProps): import("react").JSX.Element;
14
+ export declare function ScaledBoardTeaser({ teaser, boardType, code62Glyph, tiles, minScale, maxScale, className, }: ScaledBoardTeaserProps): import("react").JSX.Element;
@@ -5,31 +5,32 @@ import { useEffect as n, useRef as r, useState as i } from "react";
5
5
  import { jsx as a } from "react/jsx-runtime";
6
6
  //#region src/components/plugin/scaled-board-teaser.tsx
7
7
  var o = 18;
8
- function s({ teaser: s, boardType: c = "black", tiles: l = 15, minScale: u = .85, maxScale: d = 1.5, className: f }) {
9
- let p = r(null), [m, h] = i(1);
8
+ function s({ teaser: s, boardType: c = "black", code62Glyph: l, tiles: u = 15, minScale: d = .85, maxScale: f = 1.5, className: p }) {
9
+ let m = r(null), [h, g] = i(1);
10
10
  return n(() => {
11
- let e = p.current, t = e?.firstElementChild;
11
+ let e = m.current, t = e?.firstElementChild;
12
12
  if (!e || !t) return;
13
13
  let n = () => {
14
- t.offsetWidth > 0 && h(Math.min(d, Math.max(u, e.clientWidth / t.offsetWidth)));
14
+ t.offsetWidth > 0 && g(Math.min(f, Math.max(d, e.clientWidth / t.offsetWidth)));
15
15
  };
16
16
  n();
17
17
  let r = new ResizeObserver(n);
18
18
  return r.observe(e), () => r.disconnect();
19
- }, [u, d]), /* @__PURE__ */ a("div", {
20
- ref: p,
19
+ }, [d, f]), /* @__PURE__ */ a("div", {
20
+ ref: m,
21
21
  "data-slot": "scaled-board-teaser",
22
- className: e("flex justify-center overflow-hidden", f),
23
- style: { height: `${o * m}px` },
22
+ className: e("flex justify-center overflow-hidden", p),
23
+ style: { height: `${o * h}px` },
24
24
  children: /* @__PURE__ */ a("div", {
25
25
  style: {
26
- transform: `scale(${m})`,
26
+ transform: `scale(${h})`,
27
27
  transformOrigin: "top center"
28
28
  },
29
29
  children: /* @__PURE__ */ a(t, {
30
30
  teaser: s,
31
- tiles: l,
32
- boardType: c
31
+ tiles: u,
32
+ boardType: c,
33
+ code62Glyph: l
33
34
  })
34
35
  })
35
36
  });
@@ -1 +1 @@
1
- {"version":3,"file":"scaled-board-teaser.js","names":[],"sources":["../../../src/components/plugin/scaled-board-teaser.tsx"],"mappings":";;;;;;AAgBA,IAAM,IAAe;AAarB,SAAgB,EAAkB,EAChC,WACA,eAAY,SACZ,WAAQ,IACR,cAAW,KACX,cAAW,KACX,gBACyB;CACzB,IAAM,IAAe,EAAuB,IAAI,GAC1C,CAAC,GAAO,KAAY,EAAS,CAAC;CAkBpC,OAhBA,QAAgB;EACd,IAAM,IAAY,EAAa,SACzB,IAAQ,GAAW;EACzB,IAAI,CAAC,KAAa,CAAC,GAAO;EAC1B,IAAM,UAAgB;GAEpB,AAAI,EAAM,cAAc,KACtB,EAAS,KAAK,IAAI,GAAU,KAAK,IAAI,GAAU,EAAU,cAAc,EAAM,WAAW,CAAC,CAAC;EAE9F;EACA,EAAQ;EACR,IAAM,IAAW,IAAI,eAAe,CAAO;EAE3C,OADA,EAAS,QAAQ,CAAS,SACb,EAAS,WAAW;CACnC,GAAG,CAAC,GAAU,CAAQ,CAAC,GAGrB,kBAAC,OAAD;EACE,KAAK;EACL,aAAU;EACV,WAAW,EAAG,uCAAuC,CAAS;EAC9D,OAAO,EAAE,QAAQ,GAAG,IAAe,EAAM,IAAI;EAE7C,UAAA,kBAAC,OAAD;GAAK,OAAO;IAAE,WAAW,SAAS,EAAM;IAAI,iBAAiB;GAAa;GACxE,UAAA,kBAAC,GAAD;IAAqB;IAAe;IAAkB;GAAY,CAAA;EAC/D,CAAA;CACF,CAAA;AAET"}
1
+ {"version":3,"file":"scaled-board-teaser.js","names":[],"sources":["../../../src/components/plugin/scaled-board-teaser.tsx"],"mappings":";;;;;;AAiBA,IAAM,IAAe;AAerB,SAAgB,EAAkB,EAChC,WACA,eAAY,SACZ,gBACA,WAAQ,IACR,cAAW,KACX,cAAW,KACX,gBACyB;CACzB,IAAM,IAAe,EAAuB,IAAI,GAC1C,CAAC,GAAO,KAAY,EAAS,CAAC;CAkBpC,OAhBA,QAAgB;EACd,IAAM,IAAY,EAAa,SACzB,IAAQ,GAAW;EACzB,IAAI,CAAC,KAAa,CAAC,GAAO;EAC1B,IAAM,UAAgB;GAEpB,AAAI,EAAM,cAAc,KACtB,EAAS,KAAK,IAAI,GAAU,KAAK,IAAI,GAAU,EAAU,cAAc,EAAM,WAAW,CAAC,CAAC;EAE9F;EACA,EAAQ;EACR,IAAM,IAAW,IAAI,eAAe,CAAO;EAE3C,OADA,EAAS,QAAQ,CAAS,SACb,EAAS,WAAW;CACnC,GAAG,CAAC,GAAU,CAAQ,CAAC,GAGrB,kBAAC,OAAD;EACE,KAAK;EACL,aAAU;EACV,WAAW,EAAG,uCAAuC,CAAS;EAC9D,OAAO,EAAE,QAAQ,GAAG,IAAe,EAAM,IAAI;EAE7C,UAAA,kBAAC,OAAD;GAAK,OAAO;IAAE,WAAW,SAAS,EAAM;IAAI,iBAAiB;GAAa;GACxE,UAAA,kBAAC,GAAD;IAAqB;IAAe;IAAkB;IAAwB;GAAc,CAAA;EACzF,CAAA;CACF,CAAA;AAET"}
@@ -1,7 +1,7 @@
1
1
  import { type VariantProps } from "class-variance-authority";
2
2
  import * as React from "react";
3
3
  declare const headingVariants: (props?: ({
4
- tone?: "default" | "destructive" | "muted" | null | undefined;
4
+ tone?: "muted" | "default" | "destructive" | null | undefined;
5
5
  size?: "base" | "sm" | "lg" | "xl" | null | undefined;
6
6
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
7
7
  interface HeadingProps extends React.HTMLAttributes<HTMLHeadingElement>, VariantProps<typeof headingVariants> {
@@ -1,9 +1,33 @@
1
1
  import * as React from "react";
2
2
  /**
3
- * Inline text anchor with the canonical link treatment, always underlined at
4
- * rest (satisfies WCAG 1.4.1 / axe link-in-text-block), and the unified 3px
5
- * soft focus ring. For router navigation, keep using the router's `Link`
3
+ * Inline text anchor with the canonical link treatment: always underlined at
4
+ * rest (WCAG 1.4.1 / axe `link-in-text-block`), brand pigment, and the shared
5
+ * two-tone focus ring. For router navigation, keep using the router's `Link`
6
6
  * component; this primitive is for plain anchors.
7
+ *
8
+ * ## Pigment: `text-brand`, never `text-primary` (#238)
9
+ *
10
+ * `--primary` is the literal #f5a623 tile. It measures **1.83:1** on a light
11
+ * page — legal as a button field with board ink on it, illegal as a sentence.
12
+ * `--brand` is the same hue at the ink plateau: **5.09:1** light, **9.63:1**
13
+ * dark on `--background`. This is the pigment `Button`'s `link` variant
14
+ * already uses, and the two are deliberately the same so a link does not
15
+ * change colour depending on which component drew it.
16
+ *
17
+ * The underline is permanent rather than on hover because colour alone cannot
18
+ * distinguish a link from body copy: `--brand` against `--foreground` is
19
+ * 1.86:1 in dark, under G183's 3:1.
20
+ *
21
+ * ## Focus: the shared `focus-ring` class (#238)
22
+ *
23
+ * The previous recipe was `outline-none focus-visible:ring-[3px]
24
+ * focus-visible:ring-ring/50`, which is now a two-part failure. `--ring`
25
+ * follows `--primary`, so since 4.0.0 the band is the tile; composited in
26
+ * gamma space a 50% band of it measures **1.36:1** against a light page,
27
+ * against SC 2.4.11's 3:1. And `outline-none` suppressed the UA outline that
28
+ * would otherwise have covered for it, so the link had no visible focus
29
+ * indicator at all. `focus-ring` bounds the orange band with board-ink
30
+ * hairlines (16:1 on light surfaces) — see the recipe in theme.css.
7
31
  */
8
32
  declare function TextLink({ className, ...props }: React.ComponentProps<"a">): React.JSX.Element;
9
33
  export { TextLink };
@@ -5,7 +5,7 @@ import { jsx as t } from "react/jsx-runtime";
5
5
  function n({ className: n, ...r }) {
6
6
  return /* @__PURE__ */ t("a", {
7
7
  "data-slot": "text-link",
8
- className: e("rounded-sm text-primary underline underline-offset-4 outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50", n),
8
+ className: e("focus-ring rounded-sm text-brand underline underline-offset-4", n),
9
9
  ...r
10
10
  });
11
11
  }
@@ -1 +1 @@
1
- {"version":3,"file":"text-link.js","names":[],"sources":["../../../src/components/typography/text-link.tsx"],"mappings":";;;;AAUA,SAAS,EAAS,EAAE,cAAW,GAAG,KAAoC;CACpE,OACE,kBAAC,KAAD;EACE,aAAU;EACV,WAAW,EACT,yHACA,CACF;EACA,GAAI;CACL,CAAA;AAEL"}
1
+ {"version":3,"file":"text-link.js","names":[],"sources":["../../../src/components/typography/text-link.tsx"],"mappings":";;;;AAkCA,SAAS,EAAS,EAAE,cAAW,GAAG,KAAoC;CACpE,OACE,kBAAC,KAAD;EACE,aAAU;EACV,WAAW,EAAG,iEAAiE,CAAS;EACxF,GAAI;CACL,CAAA;AAEL"}
@@ -2,7 +2,7 @@ import { type VariantProps } from "class-variance-authority";
2
2
  import * as React from "react";
3
3
  declare const textVariants: (props?: ({
4
4
  size?: "base" | "sm" | "lg" | "xs" | null | undefined;
5
- tone?: "default" | "destructive" | "info" | "success" | "warning" | "muted" | null | undefined;
5
+ tone?: "muted" | "default" | "destructive" | "info" | "success" | "warning" | null | undefined;
6
6
  weight?: "normal" | "medium" | "semibold" | null | undefined;
7
7
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
8
8
  interface TextProps extends React.HTMLAttributes<HTMLElement>, VariantProps<typeof textVariants> {
@@ -1,5 +1,10 @@
1
1
  export interface WizardShellProps {
2
- /** Brand mark for the header medallion — an <img>, an inline SVG, anything. */
2
+ /**
3
+ * Brand mark for the header medallion — an <img>, an inline SVG, anything.
4
+ * Rendered inside a decorative {@link IconTile}, so it is hidden from
5
+ * assistive technology: the `wordmark` beside it is the lockup's name and
6
+ * announcing both would say the product twice.
7
+ */
3
8
  icon?: React.ReactNode;
4
9
  /**
5
10
  * Wordmark rendered beside the mark. Together they are the product lockup —
@@ -1,62 +1,65 @@
1
1
  import { cn as e } from "../../lib/utils.js";
2
- import { WizardProgress as t } from "./wizard-progress.js";
3
- import { BoardBackdrop as n } from "../board/board-backdrop.js";
4
- import { jsx as r, jsxs as i } from "react/jsx-runtime";
2
+ import { IconTile as t } from "../containment/icon-tile.js";
3
+ import { WizardProgress as n } from "./wizard-progress.js";
4
+ import { BoardBackdrop as r } from "../board/board-backdrop.js";
5
+ import { jsx as i, jsxs as a } from "react/jsx-runtime";
5
6
  //#region src/components/wizard/wizard-shell.tsx
6
- function a({ icon: a, wordmark: o, title: s, description: c, aside: l, steps: u, current: d, progressLabel: f, stepTitle: p, stepDescription: m, children: h, footer: g, backdropPhrases: _, className: v }) {
7
- return /* @__PURE__ */ i("div", {
8
- className: e("bg-background fixed inset-0 z-50 overflow-y-auto", v),
9
- children: [_?.length ? /* @__PURE__ */ r(n, {
10
- phrases: _,
7
+ function o({ icon: o, wordmark: s, title: c, description: l, aside: u, steps: d, current: f, progressLabel: p, stepTitle: m, stepDescription: h, children: g, footer: _, backdropPhrases: v, className: y }) {
8
+ return /* @__PURE__ */ a("div", {
9
+ className: e("bg-background fixed inset-0 z-50 overflow-y-auto", y),
10
+ children: [v?.length ? /* @__PURE__ */ i(r, {
11
+ phrases: v,
11
12
  fixed: !0
12
- }) : null, /* @__PURE__ */ r("div", {
13
+ }) : null, /* @__PURE__ */ i("div", {
13
14
  className: "relative flex min-h-full items-start justify-center px-4 py-6 sm:px-6 sm:py-10",
14
- children: /* @__PURE__ */ i("div", {
15
+ children: /* @__PURE__ */ a("div", {
15
16
  className: e("bg-card border-border w-full max-w-lg rounded-2xl border p-6 sm:p-8", "shadow-[var(--elevation-modal)]"),
16
17
  children: [
17
- /* @__PURE__ */ i("header", {
18
+ /* @__PURE__ */ a("header", {
18
19
  className: "pb-6",
19
20
  children: [
20
- /* @__PURE__ */ i("div", {
21
+ /* @__PURE__ */ a("div", {
21
22
  className: "flex items-center justify-between gap-4",
22
- children: [/* @__PURE__ */ i("span", {
23
+ children: [/* @__PURE__ */ a("span", {
23
24
  className: "flex min-w-0 items-center gap-3",
24
- children: [a ? /* @__PURE__ */ r("span", {
25
- className: "bg-board-surface-dark flex size-12 shrink-0 items-center justify-center overflow-hidden rounded-xl ring-1 ring-white/10 sm:size-14",
26
- children: a
27
- }) : null, o]
28
- }), l]
25
+ children: [o ? /* @__PURE__ */ i(t, {
26
+ size: "lg",
27
+ tone: "board",
28
+ className: "sm:size-14",
29
+ children: o
30
+ }) : null, s]
31
+ }), u]
29
32
  }),
30
- /* @__PURE__ */ r("h1", {
33
+ /* @__PURE__ */ i("h1", {
31
34
  className: "mt-5 text-2xl font-semibold tracking-tight text-balance sm:text-3xl",
32
- children: s
35
+ children: c
33
36
  }),
34
- c ? /* @__PURE__ */ r("p", {
37
+ l ? /* @__PURE__ */ i("p", {
35
38
  className: "text-muted-foreground mt-2 text-sm sm:text-base",
36
- children: c
39
+ children: l
37
40
  }) : null
38
41
  ]
39
42
  }),
40
- /* @__PURE__ */ r(t, {
41
- steps: u,
42
- current: d,
43
- label: f,
43
+ /* @__PURE__ */ i(n, {
44
+ steps: d,
45
+ current: f,
46
+ label: p,
44
47
  className: "pb-7"
45
48
  }),
46
- /* @__PURE__ */ i("div", {
49
+ /* @__PURE__ */ a("div", {
47
50
  className: "mb-6",
48
- children: [/* @__PURE__ */ r("h2", {
51
+ children: [/* @__PURE__ */ i("h2", {
49
52
  className: "text-xl font-semibold tracking-tight sm:text-2xl",
50
- children: p
51
- }), m ? /* @__PURE__ */ r("p", {
52
- className: "text-muted-foreground mt-1",
53
53
  children: m
54
+ }), h ? /* @__PURE__ */ i("p", {
55
+ className: "text-muted-foreground mt-1",
56
+ children: h
54
57
  }) : null]
55
58
  }),
56
- h,
57
- g ? /* @__PURE__ */ r("div", {
59
+ g,
60
+ _ ? /* @__PURE__ */ i("div", {
58
61
  className: "border-border mt-8 flex items-center justify-between border-t pt-6",
59
- children: g
62
+ children: _
60
63
  }) : null
61
64
  ]
62
65
  })
@@ -64,6 +67,6 @@ function a({ icon: a, wordmark: o, title: s, description: c, aside: l, steps: u,
64
67
  });
65
68
  }
66
69
  //#endregion
67
- export { a as WizardShell };
70
+ export { o as WizardShell };
68
71
 
69
72
  //# sourceMappingURL=wizard-shell.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"wizard-shell.js","names":[],"sources":["../../../src/components/wizard/wizard-shell.tsx"],"mappings":";;;;;AAsEA,SAAgB,EAAY,EAC1B,SACA,aACA,UACA,gBACA,UACA,UACA,YACA,kBACA,cACA,oBACA,aACA,WACA,oBACA,gBACmB;CACnB,OACE,kBAAC,OAAD;EAAK,WAAW,EAAG,oDAAoD,CAAS;EAAhF,UAAA,CAGG,GAAiB,SAAS,kBAAC,GAAD;GAAe,SAAS;GAAiB,OAAA;EAAO,CAAA,IAAI,MAC/E,kBAAC,OAAD;GAAK,WAAU;GACb,UAAA,kBAAC,OAAD;IACE,WAAW,EACT,uEACA,iCACF;IAJF,UAAA;KAME,kBAAC,UAAD;MAAQ,WAAU;MAAlB,UAAA;OAYE,kBAAC,OAAD;QAAK,WAAU;QAAf,UAAA,CACE,kBAAC,QAAD;SAAM,WAAU;SAAhB,UAAA,CACG,IACC,kBAAC,QAAD;UAAM,WAAU;UACb,UAAA;SACG,CAAA,IACJ,MACH,CACG;QACL,CAAA,GAAA,CACE;;OACL,kBAAC,MAAD;QAAI,WAAU;QAAuE,UAAA;OAAU,CAAA;OAC9F,IAAc,kBAAC,KAAD;QAAG,WAAU;QAAmD,UAAA;OAAe,CAAA,IAAI;MAC5F;;KAER,kBAAC,GAAD;MAAuB;MAAgB;MAAS,OAAO;MAAe,WAAU;KAAQ,CAAA;KAExF,kBAAC,OAAD;MAAK,WAAU;MAAf,UAAA,CACE,kBAAC,MAAD;OAAI,WAAU;OAAoD,UAAA;MAAc,CAAA,GAC/E,IAAkB,kBAAC,KAAD;OAAG,WAAU;OAA8B,UAAA;MAAmB,CAAA,IAAI,IAClF;;KAEJ;KAEA,IACC,kBAAC,OAAD;MAAK,WAAU;MAAsE,UAAA;KAAY,CAAA,IAC/F;IACD;;EACF,CAAA,CACF;;AAET"}
1
+ {"version":3,"file":"wizard-shell.js","names":[],"sources":["../../../src/components/wizard/wizard-shell.tsx"],"mappings":";;;;;;AA4EA,SAAgB,EAAY,EAC1B,SACA,aACA,UACA,gBACA,UACA,UACA,YACA,kBACA,cACA,oBACA,aACA,WACA,oBACA,gBACmB;CACnB,OACE,kBAAC,OAAD;EAAK,WAAW,EAAG,oDAAoD,CAAS;EAAhF,UAAA,CAGG,GAAiB,SAAS,kBAAC,GAAD;GAAe,SAAS;GAAiB,OAAA;EAAO,CAAA,IAAI,MAC/E,kBAAC,OAAD;GAAK,WAAU;GACb,UAAA,kBAAC,OAAD;IACE,WAAW,EACT,uEACA,iCACF;IAJF,UAAA;KAME,kBAAC,UAAD;MAAQ,WAAU;MAAlB,UAAA;OAcE,kBAAC,OAAD;QAAK,WAAU;QAAf,UAAA,CACE,kBAAC,QAAD;SAAM,WAAU;SAAhB,UAAA,CACG,IAIC,kBAAC,GAAD;UAAU,MAAK;UAAK,MAAK;UAAQ,WAAU;UACxC,UAAA;SACO,CAAA,IACR,MACH,CACG;QACL,CAAA,GAAA,CACE;;OACL,kBAAC,MAAD;QAAI,WAAU;QAAuE,UAAA;OAAU,CAAA;OAC9F,IAAc,kBAAC,KAAD;QAAG,WAAU;QAAmD,UAAA;OAAe,CAAA,IAAI;MAC5F;;KAER,kBAAC,GAAD;MAAuB;MAAgB;MAAS,OAAO;MAAe,WAAU;KAAQ,CAAA;KAExF,kBAAC,OAAD;MAAK,WAAU;MAAf,UAAA,CACE,kBAAC,MAAD;OAAI,WAAU;OAAoD,UAAA;MAAc,CAAA,GAC/E,IAAkB,kBAAC,KAAD;OAAG,WAAU;OAA8B,UAAA;MAAmB,CAAA,IAAI,IAClF;;KAEJ;KAEA,IACC,kBAAC,OAAD;MAAK,WAAU;MAAsE,UAAA;KAAY,CAAA,IAC/F;IACD;;EACF,CAAA,CACF;;AAET"}
package/dist/index.d.ts CHANGED
@@ -9,6 +9,7 @@
9
9
  export * from "./components/containment/accordion";
10
10
  export * from "./components/containment/card";
11
11
  export * from "./components/containment/collapsible";
12
+ export * from "./components/containment/icon-tile";
12
13
  export * from "./components/containment/json-tree";
13
14
  export * from "./components/containment/media-frame";
14
15
  export * from "./components/feedback/alert";
@@ -40,9 +41,11 @@ export * from "./components/feedback/spinner";
40
41
  export * from "./components/feedback/status-dot";
41
42
  export * from "./components/forms/select";
42
43
  export * from "./components/forms/slider";
44
+ export * from "./components/forms/swatch";
43
45
  export * from "./components/forms/switch";
44
46
  export * from "./components/forms/textarea";
45
47
  export * from "./components/forms/time-picker";
48
+ export * from "./components/forms/timezone-picker";
46
49
  export * from "./components/forms/toggle";
47
50
  export * from "./components/forms/toggle-card";
48
51
  export * from "./components/layout/stack";
@@ -57,6 +60,7 @@ export * from "./components/chrome/fiesta-icon";
57
60
  export * from "./components/chrome/fiesta-logo";
58
61
  export * from "./components/chrome/language-selector";
59
62
  export * from "./components/chrome/main-content";
63
+ export * from "./components/chrome/nav-list";
60
64
  export * from "./components/chrome/page-header";
61
65
  export * from "./components/chrome/page-layout";
62
66
  export * from "./components/chrome/page-toolbar";