@fiestaboard/ui 5.6.0 → 5.8.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/editor/color-picker-content.d.ts +25 -1
  2. package/dist/components/editor/color-picker-content.js +51 -44
  3. package/dist/components/editor/color-picker-content.js.map +1 -1
  4. package/dist/components/editor/draw-char-picker-content.d.ts +13 -3
  5. package/dist/components/editor/draw-char-picker-content.js +37 -36
  6. package/dist/components/editor/draw-char-picker-content.js.map +1 -1
  7. package/dist/components/editor/formatting-picker-content.js +10 -10
  8. package/dist/components/editor/template-editor-toolbar.d.ts +17 -1
  9. package/dist/components/editor/template-editor-toolbar.js +167 -163
  10. package/dist/components/editor/template-editor-toolbar.js.map +1 -1
  11. package/dist/components/editor/template-editor.d.ts +13 -1
  12. package/dist/components/editor/template-editor.js +132 -131
  13. package/dist/components/editor/template-editor.js.map +1 -1
  14. package/dist/components/feedback/badge.d.ts +23 -3
  15. package/dist/components/feedback/badge.js +29 -12
  16. package/dist/components/feedback/badge.js.map +1 -1
  17. package/dist/components/forms/button.d.ts +1 -1
  18. package/dist/components/forms/combobox.d.ts +161 -0
  19. package/dist/components/forms/combobox.js +153 -0
  20. package/dist/components/forms/combobox.js.map +1 -0
  21. package/dist/components/forms/copy-button.d.ts +74 -0
  22. package/dist/components/forms/copy-button.js +49 -0
  23. package/dist/components/forms/copy-button.js.map +1 -0
  24. package/dist/components/forms/swatch.d.ts +40 -11
  25. package/dist/components/forms/swatch.js +40 -29
  26. package/dist/components/forms/swatch.js.map +1 -1
  27. package/dist/index.d.ts +2 -0
  28. package/dist/index.js +102 -100
  29. package/dist/theme.css +21 -8
  30. package/package.json +1 -1
@@ -0,0 +1,49 @@
1
+ import { cn as e } from "../../lib/utils.js";
2
+ import { Button as t } from "./button.js";
3
+ import { Check as n, Copy as r } from "lucide-react";
4
+ import * as i from "react";
5
+ import { Fragment as a, jsx as o, jsxs as s } from "react/jsx-runtime";
6
+ //#region src/components/forms/copy-button.tsx
7
+ var c = 1500;
8
+ function l({ value: l, children: u, confirmMs: d = c, onCopied: f, onCopyError: p, labels: m, className: h, variant: g = "ghost", size: _, disabled: v, ...y }) {
9
+ let { copy: b = "Copy", copied: x = "Copied", announcement: S } = m ?? {}, [C, w] = i.useState(!1), T = i.useRef(null);
10
+ i.useEffect(() => () => {
11
+ T.current !== null && clearTimeout(T.current);
12
+ }, []);
13
+ async function E() {
14
+ try {
15
+ if (!navigator.clipboard?.writeText) throw Error("Clipboard API unavailable (requires a secure context)");
16
+ await navigator.clipboard.writeText(l);
17
+ } catch (e) {
18
+ p?.(e);
19
+ return;
20
+ }
21
+ w(!0), f?.(l), T.current !== null && clearTimeout(T.current), T.current = setTimeout(() => w(!1), d);
22
+ }
23
+ let D = C ? x : b, O = u != null && u !== !1;
24
+ return /* @__PURE__ */ s(a, { children: [/* @__PURE__ */ s(t, {
25
+ type: "button",
26
+ "data-slot": "copy-button",
27
+ "data-copied": C ? "true" : void 0,
28
+ variant: g,
29
+ size: _ ?? (O ? void 0 : "icon-xs"),
30
+ disabled: v,
31
+ "aria-label": D,
32
+ className: e(h),
33
+ onClick: E,
34
+ ...y,
35
+ children: [C ? /* @__PURE__ */ o(n, {
36
+ "aria-hidden": "true",
37
+ className: "text-success"
38
+ }) : /* @__PURE__ */ o(r, { "aria-hidden": "true" }), O ? C ? x : u : null]
39
+ }), /* @__PURE__ */ o("span", {
40
+ role: "status",
41
+ "aria-live": "polite",
42
+ className: "sr-only",
43
+ children: C ? S ?? x : ""
44
+ })] });
45
+ }
46
+ //#endregion
47
+ export { l as CopyButton };
48
+
49
+ //# sourceMappingURL=copy-button.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"copy-button.js","names":[],"sources":["../../../src/components/forms/copy-button.tsx"],"mappings":";;;;;;AAWA,IAAM,IAAa;AA0EnB,SAAS,EAAW,EAClB,UACA,aACA,eAAY,GACZ,aACA,gBACA,WACA,cACA,aAAU,SACV,SACA,aACA,GAAG,KACe;CAClB,IAAM,EAAE,UAAO,QAAQ,QAAQ,IAAc,UAAU,oBAAiB,KAAU,CAAC,GAE7E,CAAC,GAAQ,KAAa,EAAM,SAAS,EAAK,GAC1C,IAAa,EAAM,OAA6C,IAAI;CAE1E,EAAM,sBACS;EACX,AAAI,EAAW,YAAY,QAAM,aAAa,EAAW,OAAO;CAClE,GACC,CAAC,CAAC;CAEL,eAAe,IAAa;EAC1B,IAAI;GAOF,IAAI,CAAC,UAAU,WAAW,WACxB,MAAU,MAAM,uDAAuD;GAEzE,MAAM,UAAU,UAAU,UAAU,CAAK;EAC3C,SAAS,GAAO;GACd,IAAc,CAAK;GACnB;EACF;EAQA,AAJA,EAAU,EAAI,GACd,IAAW,CAAK,GAEZ,EAAW,YAAY,QAAM,aAAa,EAAW,OAAO,GAChE,EAAW,UAAU,iBAAiB,EAAU,EAAK,GAAG,CAAS;CACnE;CAEA,IAAM,IAAO,IAAS,IAAc,GAC9B,IAAkB,KAAuC,QAAQ,MAAa;CAEpF,OACE,kBAAA,GAAA,EAAA,UAAA,CACE,kBAAC,GAAD;EACE,MAAK;EACL,aAAU;EAGV,eAAa,IAAS,SAAS,KAAA;EACtB;EACT,MAAM,MAAS,IAAkB,KAAA,IAAY;EACnC;EAKV,cAAY;EACZ,WAAW,EAAG,CAAS;EACvB,SAAS;EACT,GAAI;EAhBN,UAAA,CAkBG,IAAS,kBAAC,GAAD;GAAO,eAAY;GAAO,WAAU;EAAgB,CAAA,IAAI,kBAAC,GAAD,EAAM,eAAY,OAAQ,CAAA,GAC3F,IAAmB,IAAS,IAAc,IAAY,IACjD;CAMR,CAAA,GAAA,kBAAC,QAAD;EAAM,MAAK;EAAS,aAAU;EAAS,WAAU;EAC9C,UAAA,IAAU,KAAgB,IAAe;CACtC,CAAA,CACN,EAAA,CAAA;AAEN"}
@@ -10,6 +10,16 @@ declare const swatchVariants: (props?: ({
10
10
  declare const swatchFillVariants: (props?: ({
11
11
  size?: "lg" | "sm" | "md" | null | undefined;
12
12
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
13
+ /**
14
+ * The glyph a content swatch carries, sized to its fill (#261).
15
+ *
16
+ * `leading-none` and the flex centring above are what keep a character with
17
+ * a descender or an unusual metric box — `°` sits high, `♥` sits low —
18
+ * optically centred in the circle rather than sitting on a text baseline.
19
+ */
20
+ declare const swatchGlyphVariants: (props?: ({
21
+ size?: "lg" | "sm" | "md" | null | undefined;
22
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
13
23
  declare const swatchIndicatorVariants: (props?: ({
14
24
  size?: "lg" | "sm" | "md" | null | undefined;
15
25
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
@@ -41,15 +51,7 @@ export type SwatchGroupProps = SelectionGroupBaseProps & SelectionGroupNameProps
41
51
  * only if you are prepared to own that arithmetic.
42
52
  */
43
53
  declare function SwatchGroup({ className, size, wrap, children, ...props }: SwatchGroupProps): React.JSX.Element;
44
- export type SwatchProps = Omit<React.ComponentProps<"button">, "aria-label" | "children" | "color" | "value"> & VariantProps<typeof swatchVariants> & {
45
- /**
46
- * The colour being picked, as ANY CSS colour — a board-surface token
47
- * (`var(--color-board-surface-dark)`), a plugin colour-rule hue, or a
48
- * raw hex. It is applied as an inline `background-color`, which is the
49
- * only way an arbitrary runtime value can reach the DOM; Tailwind cannot
50
- * compile a class for a value it never sees.
51
- */
52
- color: string;
54
+ type SwatchBaseProps = Omit<React.ComponentProps<"button">, "aria-label" | "children" | "color" | "value"> & VariantProps<typeof swatchVariants> & {
53
55
  /**
54
56
  * Localized accessible name — e.g. "Black", "Board white". REQUIRED: the
55
57
  * swatch renders no text, so this is its only name. Name the colour, not
@@ -66,6 +68,33 @@ export type SwatchProps = Omit<React.ComponentProps<"button">, "aria-label" | "c
66
68
  pressed?: boolean;
67
69
  onPressedChange?: (pressed: boolean) => void;
68
70
  };
71
+ /**
72
+ * A swatch carries EITHER a colour or a glyph, and must carry one of them —
73
+ * an empty circle is not an option a user can pick. The union is what makes
74
+ * that a type error rather than a blank render.
75
+ */
76
+ export type SwatchProps = SwatchBaseProps & ({
77
+ /**
78
+ * The colour being picked, as ANY CSS colour — a board-surface token
79
+ * (`var(--color-board-surface-dark)`), a plugin colour-rule hue, or a
80
+ * raw hex. It is applied as an inline `background-color`, which is the
81
+ * only way an arbitrary runtime value can reach the DOM; Tailwind cannot
82
+ * compile a class for a value it never sees.
83
+ */
84
+ color: string;
85
+ /** Optional glyph drawn over the fill. */
86
+ children?: React.ReactNode;
87
+ } | {
88
+ /** Omitted for a glyph swatch: the character is the payload. */
89
+ color?: string;
90
+ /**
91
+ * The character this swatch offers, e.g. `"°"` or `"♥"` (#261).
92
+ * Decorative — the fill is `aria-hidden` and `label` remains the
93
+ * swatch's only accessible name, because a glyph is no more
94
+ * self-naming than a hex value is.
95
+ */
96
+ children: React.ReactNode;
97
+ });
69
98
  /**
70
99
  * One colour circle. Inside a {@link SwatchGroup} it is a `radio`
71
100
  * (`aria-checked`, roving tabindex, arrow keys). On its own with `pressed`
@@ -77,5 +106,5 @@ export type SwatchProps = Omit<React.ComponentProps<"button">, "aria-label" | "c
77
106
  * `--primary` check disc over it — never as a change to the fill, which is
78
107
  * the thing being picked.
79
108
  */
80
- declare function Swatch({ className, size, value, color, label, pressed, onPressedChange, ...props }: SwatchProps): React.JSX.Element;
81
- export { Swatch, swatchFillVariants, SwatchGroup, swatchGroupVariants, swatchIndicatorVariants, swatchVariants };
109
+ declare function Swatch({ className, size, value, color, label, pressed, onPressedChange, children, ...props }: SwatchProps): React.JSX.Element;
110
+ export { Swatch, swatchFillVariants, swatchGlyphVariants, SwatchGroup, swatchGroupVariants, swatchIndicatorVariants, swatchVariants, };
@@ -3,16 +3,16 @@ import { cn as e } from "../../lib/utils.js";
3
3
  import { SelectableItemRoot as t, SelectionGroupRoot as n } from "./selection-group.js";
4
4
  import { Check as r } from "lucide-react";
5
5
  import * as i from "react";
6
- import { jsx as a } from "react/jsx-runtime";
7
- import { cva as o } from "class-variance-authority";
6
+ import { jsx as a, jsxs as o } from "react/jsx-runtime";
7
+ import { cva as s } from "class-variance-authority";
8
8
  //#region src/components/forms/swatch.tsx
9
- var s = o(["flex items-center gap-2"], {
9
+ var c = s(["flex items-center gap-2"], {
10
10
  variants: { wrap: {
11
11
  true: "flex-wrap",
12
12
  false: "flex-nowrap"
13
13
  } },
14
14
  defaultVariants: { wrap: !0 }
15
- }), c = o([
15
+ }), l = s([
16
16
  "group/swatch inline-flex shrink-0 cursor-pointer items-center justify-center rounded-full",
17
17
  "bg-transparent p-1",
18
18
  "focus-ring transition-[box-shadow,opacity] duration-control",
@@ -24,8 +24,8 @@ var s = o(["flex items-center gap-2"], {
24
24
  lg: "size-10"
25
25
  } },
26
26
  defaultVariants: { size: "md" }
27
- }), l = o([
28
- "pointer-events-none flex items-center justify-center rounded-full",
27
+ }), u = s([
28
+ "pointer-events-none relative flex items-center justify-center rounded-full",
29
29
  "border border-input",
30
30
  "ring-offset-2 ring-offset-background transition-[box-shadow] duration-control",
31
31
  "group-data-[checked]/swatch:ring-2 group-data-[checked]/swatch:ring-foreground"
@@ -36,7 +36,14 @@ var s = o(["flex items-center gap-2"], {
36
36
  lg: "size-8"
37
37
  } },
38
38
  defaultVariants: { size: "md" }
39
- }), u = o([
39
+ }), d = s("select-none leading-none", {
40
+ variants: { size: {
41
+ sm: "text-xs",
42
+ md: "text-sm",
43
+ lg: "text-base"
44
+ } },
45
+ defaultVariants: { size: "md" }
46
+ }), f = s([
40
47
  "pointer-events-none flex items-center justify-center rounded-full bg-primary text-primary-foreground",
41
48
  "ring-1 ring-background opacity-0 transition-opacity duration-control",
42
49
  "group-data-[checked]/swatch:opacity-100"
@@ -47,45 +54,49 @@ var s = o(["flex items-center gap-2"], {
47
54
  lg: "size-4 [&_svg]:size-3"
48
55
  } },
49
56
  defaultVariants: { size: "md" }
50
- }), d = i.createContext(null);
51
- function f({ className: t, size: r, wrap: o, children: c, ...l }) {
57
+ }), p = i.createContext(null);
58
+ function m({ className: t, size: r, wrap: o, children: s, ...l }) {
52
59
  let u = i.useMemo(() => ({ size: r }), [r]);
53
- return /* @__PURE__ */ a(d.Provider, {
60
+ return /* @__PURE__ */ a(p.Provider, {
54
61
  value: u,
55
62
  children: /* @__PURE__ */ a(n, {
56
63
  slot: "swatch-group",
57
- className: e(s({ wrap: o }), t),
64
+ className: e(c({ wrap: o }), t),
58
65
  ...l,
59
- children: c
66
+ children: s
60
67
  })
61
68
  });
62
69
  }
63
- function p({ className: n, size: o, value: s, color: f, label: p, pressed: m, onPressedChange: h, ...g }) {
64
- let _ = i.useContext(d), v = o ?? _?.size ?? "md";
70
+ function h({ className: n, size: s, value: c, color: m, label: h, pressed: g, onPressedChange: _, children: v, ...y }) {
71
+ let b = i.useContext(p), x = s ?? b?.size ?? "md", S = v != null && v !== !1;
65
72
  return /* @__PURE__ */ a(t, {
66
- grouped: _ !== null,
67
- value: s,
68
- pressed: m,
69
- onPressedChange: h,
70
- "aria-label": p,
73
+ grouped: b !== null,
74
+ value: c,
75
+ pressed: g,
76
+ onPressedChange: _,
77
+ "aria-label": h,
71
78
  "data-slot": "swatch",
72
- "data-size": v,
73
- className: e(c({ size: v }), n),
74
- ...g,
75
- children: /* @__PURE__ */ a("span", {
79
+ "data-size": x,
80
+ className: e(l({ size: x }), n),
81
+ ...y,
82
+ children: /* @__PURE__ */ o("span", {
76
83
  "data-slot": "swatch-fill",
77
84
  "aria-hidden": "true",
78
- style: { backgroundColor: f },
79
- className: l({ size: v }),
80
- children: /* @__PURE__ */ a("span", {
85
+ style: m ? { backgroundColor: m } : void 0,
86
+ className: e(u({ size: x }), S && !m && "bg-card text-foreground"),
87
+ children: [S ? /* @__PURE__ */ a("span", {
88
+ "data-slot": "swatch-glyph",
89
+ className: d({ size: x }),
90
+ children: v
91
+ }) : null, /* @__PURE__ */ a("span", {
81
92
  "data-slot": "swatch-indicator",
82
- className: u({ size: v }),
93
+ className: e(f({ size: x }), S && "absolute -end-0.5 -bottom-0.5"),
83
94
  children: /* @__PURE__ */ a(r, {})
84
- })
95
+ })]
85
96
  })
86
97
  });
87
98
  }
88
99
  //#endregion
89
- export { p as Swatch, f as SwatchGroup, l as swatchFillVariants, s as swatchGroupVariants, u as swatchIndicatorVariants, c as swatchVariants };
100
+ export { h as Swatch, m as SwatchGroup, u as swatchFillVariants, d as swatchGlyphVariants, c as swatchGroupVariants, f as swatchIndicatorVariants, l as swatchVariants };
90
101
 
91
102
  //# sourceMappingURL=swatch.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"swatch.js","names":[],"sources":["../../../src/components/forms/swatch.tsx"],"mappings":";;;;;;;;AAkGA,IAAM,IAAsB,EAC1B,CAIE,yBACF,GACA;CACE,UAAU,EACR,MAAM;EACJ,MAAM;EACN,OAAO;CACT,EACF;CACA,iBAAiB,EACf,MAAM,GACR;AACF,CACF,GAEM,IAAiB,EACrB;CAIE;CAIA;CAGA;CACA;AACF,GACA;CACE,UAAU,EACR,MAAM;EAEJ,IAAI;EACJ,IAAI;EACJ,IAAI;CACN,EACF;CACA,iBAAiB,EACf,MAAM,KACR;AACF,CACF,GAEM,IAAqB,EACzB;CACE;CAGA;CAGA;CACA;AACF,GACA;CACE,UAAU,EACR,MAAM;EACJ,IAAI;EACJ,IAAI;EACJ,IAAI;CACN,EACF;CACA,iBAAiB,EACf,MAAM,KACR;AACF,CACF,GAEM,IAA0B,EAC9B;CAIE;CACA;CACA;AACF,GACA;CACE,UAAU,EACR,MAAM;EACJ,IAAI;EACJ,IAAI;EACJ,IAAI;CACN,EACF;CACA,iBAAiB,EACf,MAAM,KACR;AACF,CACF,GAQM,IAAqB,EAAM,cAA8C,IAAI;AA+BnF,SAAS,EAAY,EAAE,cAAW,SAAM,SAAM,aAAU,GAAG,KAA2B;CACpF,IAAM,IAAU,EAAM,eAAwC,EAAE,QAAK,IAAI,CAAC,CAAI,CAAC;CAE/E,OACE,kBAAC,EAAmB,UAApB;EAA6B,OAAO;EAClC,UAAA,kBAAC,GAAD;GAAoB,MAAK;GAAe,WAAW,EAAG,EAAoB,EAAE,QAAK,CAAC,GAAG,CAAS;GAAG,GAAI;GAClG;EACiB,CAAA;CACO,CAAA;AAEjC;AAwCA,SAAS,EAAO,EAAE,cAAW,SAAM,UAAO,UAAO,UAAO,YAAS,oBAAiB,GAAG,KAAsB;CACzG,IAAM,IAAQ,EAAM,WAAW,CAAkB,GAC3C,IAAe,KAAQ,GAAO,QAAQ;CAE5C,OACE,kBAAC,GAAD;EACE,SAAS,MAAU;EACZ;EACE;EACQ;EACjB,cAAY;EACZ,aAAU;EACV,aAAW;EACX,WAAW,EAAG,EAAe,EAAE,MAAM,EAAa,CAAC,GAAG,CAAS;EAC/D,GAAI;EAEJ,UAAA,kBAAC,QAAD;GACE,aAAU;GAGV,eAAY;GACZ,OAAO,EAAE,iBAAiB,EAAM;GAChC,WAAW,EAAmB,EAAE,MAAM,EAAa,CAAC;GAEpD,UAAA,kBAAC,QAAD;IAAM,aAAU;IAAmB,WAAW,EAAwB,EAAE,MAAM,EAAa,CAAC;IAC1F,UAAA,kBAAC,GAAD,CAAQ,CAAA;GACJ,CAAA;EACF,CAAA;CACY,CAAA;AAExB"}
1
+ {"version":3,"file":"swatch.js","names":[],"sources":["../../../src/components/forms/swatch.tsx"],"mappings":";;;;;;;;AAuHA,IAAM,IAAsB,EAC1B,CAIE,yBACF,GACA;CACE,UAAU,EACR,MAAM;EACJ,MAAM;EACN,OAAO;CACT,EACF;CACA,iBAAiB,EACf,MAAM,GACR;AACF,CACF,GAEM,IAAiB,EACrB;CAIE;CAIA;CAGA;CACA;AACF,GACA;CACE,UAAU,EACR,MAAM;EAEJ,IAAI;EACJ,IAAI;EACJ,IAAI;CACN,EACF;CACA,iBAAiB,EACf,MAAM,KACR;AACF,CACF,GAEM,IAAqB,EACzB;CAGE;CAGA;CAGA;CACA;AACF,GACA;CACE,UAAU,EACR,MAAM;EACJ,IAAI;EACJ,IAAI;EACJ,IAAI;CACN,EACF;CACA,iBAAiB,EACf,MAAM,KACR;AACF,CACF,GASM,IAAsB,EAAI,4BAA4B;CAC1D,UAAU,EACR,MAAM;EACJ,IAAI;EACJ,IAAI;EACJ,IAAI;CACN,EACF;CACA,iBAAiB,EACf,MAAM,KACR;AACF,CAAC,GAEK,IAA0B,EAC9B;CAIE;CACA;CACA;AACF,GACA;CACE,UAAU,EACR,MAAM;EACJ,IAAI;EACJ,IAAI;EACJ,IAAI;CACN,EACF;CACA,iBAAiB,EACf,MAAM,KACR;AACF,CACF,GAQM,IAAqB,EAAM,cAA8C,IAAI;AA+BnF,SAAS,EAAY,EAAE,cAAW,SAAM,SAAM,aAAU,GAAG,KAA2B;CACpF,IAAM,IAAU,EAAM,eAAwC,EAAE,QAAK,IAAI,CAAC,CAAI,CAAC;CAE/E,OACE,kBAAC,EAAmB,UAApB;EAA6B,OAAO;EAClC,UAAA,kBAAC,GAAD;GAAoB,MAAK;GAAe,WAAW,EAAG,EAAoB,EAAE,QAAK,CAAC,GAAG,CAAS;GAAG,GAAI;GAClG;EACiB,CAAA;CACO,CAAA;AAEjC;AAgEA,SAAS,EAAO,EAAE,cAAW,SAAM,UAAO,UAAO,UAAO,YAAS,oBAAiB,aAAU,GAAG,KAAsB;CACnH,IAAM,IAAQ,EAAM,WAAW,CAAkB,GAC3C,IAAe,KAAQ,GAAO,QAAQ,MACtC,IAAW,KAAuC,QAAQ,MAAa;CAE7E,OACE,kBAAC,GAAD;EACE,SAAS,MAAU;EACZ;EACE;EACQ;EACjB,cAAY;EACZ,aAAU;EACV,aAAW;EACX,WAAW,EAAG,EAAe,EAAE,MAAM,EAAa,CAAC,GAAG,CAAS;EAC/D,GAAI;EAEJ,UAAA,kBAAC,QAAD;GACE,aAAU;GAKV,eAAY;GACZ,OAAO,IAAQ,EAAE,iBAAiB,EAAM,IAAI,KAAA;GAC5C,WAAW,EACT,EAAmB,EAAE,MAAM,EAAa,CAAC,GAKzC,KAAY,CAAC,KAAS,yBACxB;GAfF,UAAA,CAiBG,IACC,kBAAC,QAAD;IAAM,aAAU;IAAe,WAAW,EAAoB,EAAE,MAAM,EAAa,CAAC;IACjF;GACG,CAAA,IACJ,MACJ,kBAAC,QAAD;IACE,aAAU;IACV,WAAW,EACT,EAAwB,EAAE,MAAM,EAAa,CAAC,GAU9C,KAAY,+BACd;IAEA,UAAA,kBAAC,GAAD,CAAQ,CAAA;GACJ,CAAA,CACF;;CACY,CAAA;AAExB"}
package/dist/index.d.ts CHANGED
@@ -18,6 +18,8 @@ export * from "./components/feedback/chip";
18
18
  export * from "./components/feedback/empty-state";
19
19
  export * from "./components/forms/button";
20
20
  export * from "./components/forms/checkbox";
21
+ export * from "./components/forms/combobox";
22
+ export * from "./components/forms/copy-button";
21
23
  export * from "./components/forms/input";
22
24
  export * from "./components/forms/label";
23
25
  export * from "./components/forms/secret-input";
package/dist/index.js CHANGED
@@ -6,104 +6,106 @@ import { IconTile as h, iconTileVariants as g } from "./components/containment/i
6
6
  import { JsonTree as _ } from "./components/containment/json-tree.js";
7
7
  import { MediaFrame as v, MediaFrameBar as y, MediaFrameMedia as b } from "./components/containment/media-frame.js";
8
8
  import { Alert as x, AlertDescription as S, AlertTitle as C, alertVariants as w } from "./components/feedback/alert.js";
9
- import { Badge as T, badgeVariants as E } from "./components/feedback/badge.js";
10
- import { Chip as D, chipVariants as O } from "./components/feedback/chip.js";
11
- import { EmptyState as k } from "./components/feedback/empty-state.js";
12
- import { Spinner as A, spinnerVariants as j } from "./components/feedback/spinner.js";
13
- import { Button as M, buttonVariants as N } from "./components/forms/button.js";
9
+ import { Spinner as T, spinnerVariants as E } from "./components/feedback/spinner.js";
10
+ import { Button as D, buttonVariants as O } from "./components/forms/button.js";
11
+ import { Badge as k, badgeVariants as A } from "./components/feedback/badge.js";
12
+ import { Chip as j, chipVariants as M } from "./components/feedback/chip.js";
13
+ import { EmptyState as N } from "./components/feedback/empty-state.js";
14
14
  import { Checkbox as P } from "./components/forms/checkbox.js";
15
- import { Input as F } from "./components/forms/input.js";
16
- import { Label as I } from "./components/forms/label.js";
17
- import { SecretInput as L } from "./components/forms/secret-input.js";
18
- import { Box as R } from "./components/layout/box.js";
19
- import { Flex as z, flexVariants as B } from "./components/layout/flex.js";
20
- import { Grid as V, gridVariants as H } from "./components/layout/grid.js";
21
- import { AlertDialog as U, AlertDialogAction as W, AlertDialogCancel as G, AlertDialogContent as K, AlertDialogDescription as q, AlertDialogFooter as J, AlertDialogHeader as Y, AlertDialogOverlay as X, AlertDialogPortal as Z, AlertDialogTitle as Q, AlertDialogTrigger as $ } from "./components/overlays/alert-dialog.js";
22
- import { Dialog as ee, DialogClose as te, DialogContent as ne, DialogDescription as re, DialogFooter as ie, DialogHeader as ae, DialogOverlay as oe, DialogPortal as se, DialogTitle as ce, DialogTrigger as le } from "./components/overlays/dialog.js";
23
- import { DropdownMenu as ue, DropdownMenuCheckboxItem as de, DropdownMenuContent as fe, DropdownMenuGroup as pe, DropdownMenuItem as me, DropdownMenuLabel as he, DropdownMenuPortal as ge, DropdownMenuRadioGroup as _e, DropdownMenuRadioItem as ve, DropdownMenuSeparator as ye, DropdownMenuShortcut as be, DropdownMenuSub as xe, DropdownMenuSubContent as Se, DropdownMenuSubTrigger as Ce, DropdownMenuTrigger as we } from "./components/overlays/dropdown-menu.js";
24
- import { Lightbox as Te, LightboxClose as Ee, LightboxContent as De, LightboxFooter as Oe, LightboxOverlay as ke, LightboxPortal as Ae, LightboxTrigger as je } from "./components/overlays/lightbox.js";
25
- import { Popover as Me, PopoverClose as Ne, PopoverContent as Pe, PopoverDescription as Fe, PopoverTitle as Ie, PopoverTrigger as Le, usePopoverClose as Re } from "./components/overlays/popover.js";
26
- import { Code as ze } from "./components/typography/code.js";
27
- import { Heading as Be, headingVariants as Ve } from "./components/typography/heading.js";
28
- import { List as He, ListItem as Ue, listVariants as We } from "./components/typography/list.js";
29
- import { ScrollArea as Ge, ScrollBar as Ke } from "./components/containment/scroll-area.js";
30
- import { Table as qe, TableBody as Je, TableCell as Ye, TableHead as Xe, TableHeader as Ze, TableRow as Qe } from "./components/containment/table.js";
31
- import { Tabs as $e, TabsContent as et, TabsList as tt, TabsTrigger as nt } from "./components/containment/tabs.js";
32
- import rt from "./components/effects/react-bits/fade-content.js";
33
- import { Skeleton as it } from "./components/feedback/skeleton.js";
34
- import { StatusDot as at, statusDotVariants as ot } from "./components/feedback/status-dot.js";
35
- import { Select as st, SelectContent as ct, SelectGroup as lt, SelectItem as ut, SelectLabel as dt, SelectScrollDownButton as ft, SelectScrollUpButton as pt, SelectSeparator as mt, SelectTrigger as ht, SelectValue as gt } from "./components/forms/select.js";
36
- import { Slider as _t } from "./components/forms/slider.js";
37
- import { Swatch as vt, SwatchGroup as yt, swatchFillVariants as bt, swatchGroupVariants as xt, swatchIndicatorVariants as St, swatchVariants as Ct } from "./components/forms/swatch.js";
38
- import { Switch as wt } from "./components/forms/switch.js";
39
- import { Textarea as Tt } from "./components/forms/textarea.js";
40
- import { Text as Et, textVariants as Dt } from "./components/typography/text.js";
41
- import { TimePicker as Ot } from "./components/forms/time-picker.js";
42
- import { TimezonePicker as kt, listTimezones as At } from "./components/forms/timezone-picker.js";
43
- import { Toggle as jt, ToggleGroup as Mt, toggleGroupVariants as Nt, toggleVariants as Pt } from "./components/forms/toggle.js";
44
- import { SegmentedControl as Ft, SegmentedControlItem as It, ToggleCard as Lt, ToggleCardGroup as Rt, segmentedControlItemVariants as zt, segmentedControlVariants as Bt, toggleCardGroupVariants as Vt, toggleCardVariants as Ht } from "./components/forms/toggle-card.js";
45
- import { Stack as Ut, stackVariants as Wt } from "./components/layout/stack.js";
46
- import { Sheet as Gt, SheetClose as Kt, SheetContent as qt, SheetDescription as Jt, SheetFooter as Yt, SheetHeader as Xt, SheetOverlay as Zt, SheetPortal as Qt, SheetTitle as $t, SheetTrigger as en } from "./components/overlays/sheet.js";
47
- import { Tooltip as tn, TooltipContent as nn, TooltipProvider as rn, TooltipTrigger as an } from "./components/overlays/tooltip.js";
48
- import { TextLink as on } from "./components/typography/text-link.js";
49
- import { BoardIcon as sn } from "./components/chrome/board-icon.js";
50
- import { BoardSelector as cn } from "./components/chrome/board-selector.js";
51
- import { Breadcrumb as ln, BreadcrumbEllipsis as un, BreadcrumbItem as dn, BreadcrumbLink as fn, BreadcrumbList as pn, BreadcrumbPage as mn, BreadcrumbSeparator as hn } from "./components/chrome/breadcrumb.js";
52
- import { FIESTA_ICON_DATA_URI as gn, FIESTA_ICON_PALETTE as _n, FIESTA_ICON_SVG as vn, FiestaIcon as yn } from "./components/chrome/fiesta-icon.js";
53
- import { FiestaLogo as bn } from "./components/chrome/fiesta-logo.js";
54
- import { LanguageSelector as xn } from "./components/chrome/language-selector.js";
55
- import { MainContent as Sn } from "./components/chrome/main-content.js";
56
- import { NavList as Cn, NavListItem as wn, NavListLink as Tn, NavListSection as En, NavListSectionContent as Dn, NavListSectionTrigger as On } from "./components/chrome/nav-list.js";
57
- import { PAGE_HUES as kn, PageHeader as An, PageIconGradientDefs as jn, pageHue as Mn } from "./components/chrome/page-header.js";
58
- import { PageInset as Nn } from "./components/chrome/page-inset.js";
59
- import { PageLayout as Pn } from "./components/chrome/page-layout.js";
60
- import { PageToolbar as Fn } from "./components/chrome/page-toolbar.js";
61
- import { Sidebar as In } from "./components/chrome/sidebar.js";
62
- import { SkipToContent as Ln } from "./components/chrome/skip-to-content.js";
63
- import { ThemeToggle as Rn } from "./components/chrome/theme-toggle.js";
64
- import { WizardProgress as zn } from "./components/wizard/wizard-progress.js";
65
- import { ALL_COLOR_CODES as Bn, AVAILABLE_COLORS as Vn, BOARD_COLORS as Hn, COLOR_CODE_MAP as Un, COLOR_DISPLAY as Wn, FIESTABOARD_COLORS as Gn, getBoardColor as Kn, isValidBoardColor as qn, resolveColorCode as Jn } from "./lib/board-colors.js";
66
- import { BOARD_CHARS as Yn, EXTRA_CHARS as Xn, applyCode62Glyph as Zn, getCharFromToken as Qn, getCharIndex as $n, isColorTile as er, messageToGrid as tr, messageToText as nr, parseLine as rr, resolveCode62Glyph as ir, tokensEqual as ar } from "./lib/board-characters.js";
67
- import { BoardTeaser as or } from "./components/board/board-teaser.js";
68
- import { BoardBackdrop as sr } from "./components/board/board-backdrop.js";
69
- import { WizardShell as cr } from "./components/wizard/wizard-shell.js";
70
- import { DEVICE_DIMENSIONS as lr, MAX_NOTES_PER_AXIS as ur, NOTE_COLS as dr, NOTE_ROWS as fr, isNoteArray as pr, noteArrayDimensions as mr, resolveDimensions as hr } from "./lib/board-dimensions.js";
71
- import { BoardDisplay as gr, FLAP_SPEED_PRESETS as _r, deriveFlapTiming as vr, resolveFlapSpeed as yr } from "./components/board/board-display.js";
72
- import { ScaledBoardDisplay as br } from "./components/board/scaled-board-display.js";
73
- import { StaticBoardDisplay as xr } from "./components/board/static-board-display.js";
74
- import { DEFAULT_SHAPE_LABELS as Sr, previewLabel as Cr, previewLabels as wr, previewMessage as Tr } from "./lib/board-previews.js";
75
- import { BarList as Er } from "./components/data/bar-list.js";
76
- import { StatStrip as Dr, StatStripItem as Or } from "./components/data/stat-strip.js";
77
- import { BoardShowcase as kr, DEFAULT_SHOWCASE_LABELS as Ar } from "./components/plugin/board-showcase.js";
78
- import { PLUGIN_CATEGORIES as jr, PluginCategoryBadge as Mr } from "./components/plugin/plugin-category-badge.js";
79
- import { ScaledBoardTeaser as Nr } from "./components/plugin/scaled-board-teaser.js";
80
- import { PluginCard as Pr } from "./components/plugin/plugin-card.js";
81
- import { BOARD_CODE_TO_COLOR as Fr, BOARD_COLOR_CODES as Ir, CURSOR_ANCHOR as Lr, DEFAULT_BOARD_LINES as Rr, DEFAULT_BOARD_WIDTH as zr, FILL_SPACE_REPEAT_VAR as Br, FILL_SPACE_VAR as Vr } from "./components/editor/constants.js";
82
- import { NodeViewInjectionProvider as Hr, useNodeViewInjection as Ur } from "./components/editor/node-views/node-view-context.js";
83
- import { ColorTileNodeView as Wr, DEFAULT_COLOR_TILE_NODE_VIEW_LABELS as Gr } from "./components/editor/node-views/color-tile-node-view.js";
84
- import { ColorTileNode as Kr } from "./components/editor/extensions/color-tile-node.js";
85
- import { DEFAULT_FILL_SPACE_NODE_VIEW_LABELS as qr, FillSpaceNodeView as Jr } from "./components/editor/node-views/fill-space-node-view.js";
86
- import { FillSpaceNode as Yr } from "./components/editor/extensions/fill-space-node.js";
87
- import { DEFAULT_FORMULA_NODE_VIEW_LABELS as Xr, FormulaNodeView as Zr } from "./components/editor/node-views/formula-node-view.js";
88
- import { FormulaNode as Qr } from "./components/editor/extensions/formula-node.js";
89
- import { LineNavigation as $r } from "./components/editor/extensions/line-navigation.js";
90
- import { SingleParagraphDoc as ei } from "./components/editor/extensions/single-paragraph-doc.js";
91
- import { TrailingNewline as ti } from "./components/editor/extensions/trailing-newline.js";
92
- import { DEFAULT_VARIABLE_NODE_VIEW_LABELS as ni, VariableNodeView as ri } from "./components/editor/node-views/variable-node-view.js";
93
- import { VariableNode as ii } from "./components/editor/extensions/variable-node.js";
94
- import { DEFAULT_WRAPPED_TEXT_VIEW_LABELS as ai, WrappedTextView as oi } from "./components/editor/node-views/wrapped-text-view.js";
95
- import { WrappedTextNode as si } from "./components/editor/extensions/wrapped-text-node.js";
96
- import { ColorPickerContent as ci, DEFAULT_COLOR_PICKER_LABELS as li } from "./components/editor/color-picker-content.js";
97
- import { DRAW_CHARS as ui, brushToCell as di, cellsToLine as fi, isPositionalLine as pi, lineToCells as mi, paintLine as hi, renderPositionalLine as gi } from "./components/editor/utils/draw-mode.js";
98
- import { DEFAULT_DRAW_CHAR_PICKER_LABELS as _i, DrawCharPickerContent as vi } from "./components/editor/draw-char-picker-content.js";
99
- import { DEFAULT_FORMATTING_PICKER_LABELS as yi, FormattingPickerContent as bi } from "./components/editor/formatting-picker-content.js";
100
- import { DEFAULT_TOOLBAR_DROPDOWN_LABELS as xi, ToolbarDropdown as Si } from "./components/editor/toolbar-dropdown.js";
101
- import { parseLineContent as Ci, parseTemplateSimple as wi, serializeTemplateSimple as Ti } from "./components/editor/utils/serialization.js";
102
- import { insertTemplateContent as Ei } from "./components/editor/utils/insertion.js";
103
- import { DEFAULT_TEMPLATE_EDITOR_TOOLBAR_LABELS as Di, TemplateEditorToolbar as Oi } from "./components/editor/template-editor-toolbar.js";
104
- import { buildStrokeTransaction as ki, lineRanges as Ai } from "./components/editor/utils/stroke-transaction.js";
105
- import { DEFAULT_TEMPLATE_EDITOR_LABELS as ji, TemplateEditor as Mi } from "./components/editor/template-editor.js";
106
- import { DEFAULT_FILTER_PICKER_LABELS as Ni, FilterPickerContent as Pi } from "./components/editor/filter-picker-content.js";
107
- import { DEFAULT_VARIABLE_PICKER_LABELS as Fi, VariablePickerContent as Ii, createLucideIconResolver as Li, getPluginsWithNestedArrays as Ri } from "./components/editor/variable-picker-content.js";
108
- import { calculateLineLength as zi, getOverflowAmount as Bi, willOverflow as Vi } from "./components/editor/utils/length-calculator.js";
109
- export { Bn as ALL_COLOR_CODES, Vn as AVAILABLE_COLORS, t as Accordion, n as AccordionContent, r as AccordionItem, i as AccordionTrigger, x as Alert, S as AlertDescription, U as AlertDialog, W as AlertDialogAction, G as AlertDialogCancel, K as AlertDialogContent, q as AlertDialogDescription, J as AlertDialogFooter, Y as AlertDialogHeader, X as AlertDialogOverlay, Z as AlertDialogPortal, Q as AlertDialogTitle, $ as AlertDialogTrigger, C as AlertTitle, Yn as BOARD_CHARS, Fr as BOARD_CODE_TO_COLOR, Hn as BOARD_COLORS, Ir as BOARD_COLOR_CODES, T as Badge, Er as BarList, sr as BoardBackdrop, gr as BoardDisplay, sn as BoardIcon, cn as BoardSelector, kr as BoardShowcase, or as BoardTeaser, R as Box, ln as Breadcrumb, un as BreadcrumbEllipsis, dn as BreadcrumbItem, fn as BreadcrumbLink, pn as BreadcrumbList, mn as BreadcrumbPage, hn as BreadcrumbSeparator, M as Button, Un as COLOR_CODE_MAP, Wn as COLOR_DISPLAY, Lr as CURSOR_ANCHOR, a as Card, o as CardAction, s as CardContent, c as CardDescription, l as CardFooter, u as CardHeader, d as CardTitle, P as Checkbox, D as Chip, ze as Code, f as Collapsible, p as CollapsibleContent, m as CollapsibleTrigger, ci as ColorPickerContent, Kr as ColorTileNode, Wr as ColorTileNodeView, Rr as DEFAULT_BOARD_LINES, zr as DEFAULT_BOARD_WIDTH, li as DEFAULT_COLOR_PICKER_LABELS, Gr as DEFAULT_COLOR_TILE_NODE_VIEW_LABELS, _i as DEFAULT_DRAW_CHAR_PICKER_LABELS, qr as DEFAULT_FILL_SPACE_NODE_VIEW_LABELS, Ni as DEFAULT_FILTER_PICKER_LABELS, yi as DEFAULT_FORMATTING_PICKER_LABELS, Xr as DEFAULT_FORMULA_NODE_VIEW_LABELS, Sr as DEFAULT_SHAPE_LABELS, Ar as DEFAULT_SHOWCASE_LABELS, ji as DEFAULT_TEMPLATE_EDITOR_LABELS, Di as DEFAULT_TEMPLATE_EDITOR_TOOLBAR_LABELS, xi as DEFAULT_TOOLBAR_DROPDOWN_LABELS, ni as DEFAULT_VARIABLE_NODE_VIEW_LABELS, Fi as DEFAULT_VARIABLE_PICKER_LABELS, ai as DEFAULT_WRAPPED_TEXT_VIEW_LABELS, lr as DEVICE_DIMENSIONS, ui as DRAW_CHARS, ee as Dialog, te as DialogClose, ne as DialogContent, re as DialogDescription, ie as DialogFooter, ae as DialogHeader, oe as DialogOverlay, se as DialogPortal, ce as DialogTitle, le as DialogTrigger, vi as DrawCharPickerContent, ue as DropdownMenu, de as DropdownMenuCheckboxItem, fe as DropdownMenuContent, pe as DropdownMenuGroup, me as DropdownMenuItem, he as DropdownMenuLabel, ge as DropdownMenuPortal, _e as DropdownMenuRadioGroup, ve as DropdownMenuRadioItem, ye as DropdownMenuSeparator, be as DropdownMenuShortcut, xe as DropdownMenuSub, Se as DropdownMenuSubContent, Ce as DropdownMenuSubTrigger, we as DropdownMenuTrigger, Xn as EXTRA_CHARS, k as EmptyState, Gn as FIESTABOARD_COLORS, gn as FIESTA_ICON_DATA_URI, _n as FIESTA_ICON_PALETTE, vn as FIESTA_ICON_SVG, Br as FILL_SPACE_REPEAT_VAR, Vr as FILL_SPACE_VAR, _r as FLAP_SPEED_PRESETS, rt as FadeContent, yn as FiestaIcon, bn as FiestaLogo, Yr as FillSpaceNode, Jr as FillSpaceNodeView, Pi as FilterPickerContent, z as Flex, bi as FormattingPickerContent, Qr as FormulaNode, Zr as FormulaNodeView, V as Grid, Be as Heading, h as IconTile, F as Input, _ as JsonTree, I as Label, xn as LanguageSelector, Te as Lightbox, Ee as LightboxClose, De as LightboxContent, Oe as LightboxFooter, ke as LightboxOverlay, Ae as LightboxPortal, je as LightboxTrigger, $r as LineNavigation, He as List, Ue as ListItem, ur as MAX_NOTES_PER_AXIS, Sn as MainContent, v as MediaFrame, y as MediaFrameBar, b as MediaFrameMedia, dr as NOTE_COLS, fr as NOTE_ROWS, Cn as NavList, wn as NavListItem, Tn as NavListLink, En as NavListSection, Dn as NavListSectionContent, On as NavListSectionTrigger, Hr as NodeViewInjectionProvider, kn as PAGE_HUES, jr as PLUGIN_CATEGORIES, An as PageHeader, jn as PageIconGradientDefs, Nn as PageInset, Pn as PageLayout, Fn as PageToolbar, Pr as PluginCard, Mr as PluginCategoryBadge, Me as Popover, Ne as PopoverClose, Pe as PopoverContent, Fe as PopoverDescription, Ie as PopoverTitle, Le as PopoverTrigger, br as ScaledBoardDisplay, Nr as ScaledBoardTeaser, Ge as ScrollArea, Ke as ScrollBar, L as SecretInput, Ft as SegmentedControl, It as SegmentedControlItem, st as Select, ct as SelectContent, lt as SelectGroup, ut as SelectItem, dt as SelectLabel, ft as SelectScrollDownButton, pt as SelectScrollUpButton, mt as SelectSeparator, ht as SelectTrigger, gt as SelectValue, Gt as Sheet, Kt as SheetClose, qt as SheetContent, Jt as SheetDescription, Yt as SheetFooter, Xt as SheetHeader, Zt as SheetOverlay, Qt as SheetPortal, $t as SheetTitle, en as SheetTrigger, In as Sidebar, ei as SingleParagraphDoc, it as Skeleton, Ln as SkipToContent, _t as Slider, A as Spinner, Ut as Stack, Dr as StatStrip, Or as StatStripItem, xr as StaticBoardDisplay, at as StatusDot, vt as Swatch, yt as SwatchGroup, wt as Switch, qe as Table, Je as TableBody, Ye as TableCell, Xe as TableHead, Ze as TableHeader, Qe as TableRow, $e as Tabs, et as TabsContent, tt as TabsList, nt as TabsTrigger, Mi as TemplateEditor, Oi as TemplateEditorToolbar, Et as Text, on as TextLink, Tt as Textarea, Rn as ThemeToggle, Ot as TimePicker, kt as TimezonePicker, jt as Toggle, Lt as ToggleCard, Rt as ToggleCardGroup, Mt as ToggleGroup, Si as ToolbarDropdown, tn as Tooltip, nn as TooltipContent, rn as TooltipProvider, an as TooltipTrigger, ti as TrailingNewline, ii as VariableNode, ri as VariableNodeView, Ii as VariablePickerContent, zn as WizardProgress, cr as WizardShell, si as WrappedTextNode, oi as WrappedTextView, w as alertVariants, Zn as applyCode62Glyph, E as badgeVariants, di as brushToCell, ki as buildStrokeTransaction, N as buttonVariants, zi as calculateLineLength, fi as cellsToLine, O as chipVariants, e as cn, Li as createLucideIconResolver, vr as deriveFlapTiming, B as flexVariants, Kn as getBoardColor, Qn as getCharFromToken, $n as getCharIndex, Bi as getOverflowAmount, Ri as getPluginsWithNestedArrays, H as gridVariants, Ve as headingVariants, g as iconTileVariants, Ei as insertTemplateContent, er as isColorTile, pr as isNoteArray, pi as isPositionalLine, qn as isValidBoardColor, Ai as lineRanges, mi as lineToCells, At as listTimezones, We as listVariants, tr as messageToGrid, nr as messageToText, mr as noteArrayDimensions, Mn as pageHue, hi as paintLine, rr as parseLine, Ci as parseLineContent, wi as parseTemplateSimple, Cr as previewLabel, wr as previewLabels, Tr as previewMessage, gi as renderPositionalLine, ir as resolveCode62Glyph, Jn as resolveColorCode, hr as resolveDimensions, yr as resolveFlapSpeed, zt as segmentedControlItemVariants, Bt as segmentedControlVariants, Ti as serializeTemplateSimple, j as spinnerVariants, Wt as stackVariants, ot as statusDotVariants, bt as swatchFillVariants, xt as swatchGroupVariants, St as swatchIndicatorVariants, Ct as swatchVariants, Dt as textVariants, Vt as toggleCardGroupVariants, Ht as toggleCardVariants, Nt as toggleGroupVariants, Pt as toggleVariants, ar as tokensEqual, Ur as useNodeViewInjection, Re as usePopoverClose, Vi as willOverflow };
15
+ import { Combobox as F, DEFAULT_COMBOBOX_LABELS as I, defaultComboboxFilter as L } from "./components/forms/combobox.js";
16
+ import { CopyButton as R } from "./components/forms/copy-button.js";
17
+ import { Input as z } from "./components/forms/input.js";
18
+ import { Label as B } from "./components/forms/label.js";
19
+ import { SecretInput as V } from "./components/forms/secret-input.js";
20
+ import { Box as H } from "./components/layout/box.js";
21
+ import { Flex as U, flexVariants as W } from "./components/layout/flex.js";
22
+ import { Grid as G, gridVariants as K } from "./components/layout/grid.js";
23
+ import { AlertDialog as q, AlertDialogAction as J, AlertDialogCancel as Y, AlertDialogContent as X, AlertDialogDescription as Z, AlertDialogFooter as Q, AlertDialogHeader as $, AlertDialogOverlay as ee, AlertDialogPortal as te, AlertDialogTitle as ne, AlertDialogTrigger as re } from "./components/overlays/alert-dialog.js";
24
+ import { Dialog as ie, DialogClose as ae, DialogContent as oe, DialogDescription as se, DialogFooter as ce, DialogHeader as le, DialogOverlay as ue, DialogPortal as de, DialogTitle as fe, DialogTrigger as pe } from "./components/overlays/dialog.js";
25
+ import { DropdownMenu as me, DropdownMenuCheckboxItem as he, DropdownMenuContent as ge, DropdownMenuGroup as _e, DropdownMenuItem as ve, DropdownMenuLabel as ye, DropdownMenuPortal as be, DropdownMenuRadioGroup as xe, DropdownMenuRadioItem as Se, DropdownMenuSeparator as Ce, DropdownMenuShortcut as we, DropdownMenuSub as Te, DropdownMenuSubContent as Ee, DropdownMenuSubTrigger as De, DropdownMenuTrigger as Oe } from "./components/overlays/dropdown-menu.js";
26
+ import { Lightbox as ke, LightboxClose as Ae, LightboxContent as je, LightboxFooter as Me, LightboxOverlay as Ne, LightboxPortal as Pe, LightboxTrigger as Fe } from "./components/overlays/lightbox.js";
27
+ import { Popover as Ie, PopoverClose as Le, PopoverContent as Re, PopoverDescription as ze, PopoverTitle as Be, PopoverTrigger as Ve, usePopoverClose as He } from "./components/overlays/popover.js";
28
+ import { Code as Ue } from "./components/typography/code.js";
29
+ import { Heading as We, headingVariants as Ge } from "./components/typography/heading.js";
30
+ import { List as Ke, ListItem as qe, listVariants as Je } from "./components/typography/list.js";
31
+ import { ScrollArea as Ye, ScrollBar as Xe } from "./components/containment/scroll-area.js";
32
+ import { Table as Ze, TableBody as Qe, TableCell as $e, TableHead as et, TableHeader as tt, TableRow as nt } from "./components/containment/table.js";
33
+ import { Tabs as rt, TabsContent as it, TabsList as at, TabsTrigger as ot } from "./components/containment/tabs.js";
34
+ import st from "./components/effects/react-bits/fade-content.js";
35
+ import { Skeleton as ct } from "./components/feedback/skeleton.js";
36
+ import { StatusDot as lt, statusDotVariants as ut } from "./components/feedback/status-dot.js";
37
+ import { Select as dt, SelectContent as ft, SelectGroup as pt, SelectItem as mt, SelectLabel as ht, SelectScrollDownButton as gt, SelectScrollUpButton as _t, SelectSeparator as vt, SelectTrigger as yt, SelectValue as bt } from "./components/forms/select.js";
38
+ import { Slider as xt } from "./components/forms/slider.js";
39
+ import { Swatch as St, SwatchGroup as Ct, swatchFillVariants as wt, swatchGlyphVariants as Tt, swatchGroupVariants as Et, swatchIndicatorVariants as Dt, swatchVariants as Ot } from "./components/forms/swatch.js";
40
+ import { Switch as kt } from "./components/forms/switch.js";
41
+ import { Textarea as At } from "./components/forms/textarea.js";
42
+ import { Text as jt, textVariants as Mt } from "./components/typography/text.js";
43
+ import { TimePicker as Nt } from "./components/forms/time-picker.js";
44
+ import { TimezonePicker as Pt, listTimezones as Ft } from "./components/forms/timezone-picker.js";
45
+ import { Toggle as It, ToggleGroup as Lt, toggleGroupVariants as Rt, toggleVariants as zt } from "./components/forms/toggle.js";
46
+ import { SegmentedControl as Bt, SegmentedControlItem as Vt, ToggleCard as Ht, ToggleCardGroup as Ut, segmentedControlItemVariants as Wt, segmentedControlVariants as Gt, toggleCardGroupVariants as Kt, toggleCardVariants as qt } from "./components/forms/toggle-card.js";
47
+ import { Stack as Jt, stackVariants as Yt } from "./components/layout/stack.js";
48
+ import { Sheet as Xt, SheetClose as Zt, SheetContent as Qt, SheetDescription as $t, SheetFooter as en, SheetHeader as tn, SheetOverlay as nn, SheetPortal as rn, SheetTitle as an, SheetTrigger as on } from "./components/overlays/sheet.js";
49
+ import { Tooltip as sn, TooltipContent as cn, TooltipProvider as ln, TooltipTrigger as un } from "./components/overlays/tooltip.js";
50
+ import { TextLink as dn } from "./components/typography/text-link.js";
51
+ import { BoardIcon as fn } from "./components/chrome/board-icon.js";
52
+ import { BoardSelector as pn } from "./components/chrome/board-selector.js";
53
+ import { Breadcrumb as mn, BreadcrumbEllipsis as hn, BreadcrumbItem as gn, BreadcrumbLink as _n, BreadcrumbList as vn, BreadcrumbPage as yn, BreadcrumbSeparator as bn } from "./components/chrome/breadcrumb.js";
54
+ import { FIESTA_ICON_DATA_URI as xn, FIESTA_ICON_PALETTE as Sn, FIESTA_ICON_SVG as Cn, FiestaIcon as wn } from "./components/chrome/fiesta-icon.js";
55
+ import { FiestaLogo as Tn } from "./components/chrome/fiesta-logo.js";
56
+ import { LanguageSelector as En } from "./components/chrome/language-selector.js";
57
+ import { MainContent as Dn } from "./components/chrome/main-content.js";
58
+ import { NavList as On, NavListItem as kn, NavListLink as An, NavListSection as jn, NavListSectionContent as Mn, NavListSectionTrigger as Nn } from "./components/chrome/nav-list.js";
59
+ import { PAGE_HUES as Pn, PageHeader as Fn, PageIconGradientDefs as In, pageHue as Ln } from "./components/chrome/page-header.js";
60
+ import { PageInset as Rn } from "./components/chrome/page-inset.js";
61
+ import { PageLayout as zn } from "./components/chrome/page-layout.js";
62
+ import { PageToolbar as Bn } from "./components/chrome/page-toolbar.js";
63
+ import { Sidebar as Vn } from "./components/chrome/sidebar.js";
64
+ import { SkipToContent as Hn } from "./components/chrome/skip-to-content.js";
65
+ import { ThemeToggle as Un } from "./components/chrome/theme-toggle.js";
66
+ import { WizardProgress as Wn } from "./components/wizard/wizard-progress.js";
67
+ import { ALL_COLOR_CODES as Gn, AVAILABLE_COLORS as Kn, BOARD_COLORS as qn, COLOR_CODE_MAP as Jn, COLOR_DISPLAY as Yn, FIESTABOARD_COLORS as Xn, getBoardColor as Zn, isValidBoardColor as Qn, resolveColorCode as $n } from "./lib/board-colors.js";
68
+ import { BOARD_CHARS as er, EXTRA_CHARS as tr, applyCode62Glyph as nr, getCharFromToken as rr, getCharIndex as ir, isColorTile as ar, messageToGrid as or, messageToText as sr, parseLine as cr, resolveCode62Glyph as lr, tokensEqual as ur } from "./lib/board-characters.js";
69
+ import { BoardTeaser as dr } from "./components/board/board-teaser.js";
70
+ import { BoardBackdrop as fr } from "./components/board/board-backdrop.js";
71
+ import { WizardShell as pr } from "./components/wizard/wizard-shell.js";
72
+ import { DEVICE_DIMENSIONS as mr, MAX_NOTES_PER_AXIS as hr, NOTE_COLS as gr, NOTE_ROWS as _r, isNoteArray as vr, noteArrayDimensions as yr, resolveDimensions as br } from "./lib/board-dimensions.js";
73
+ import { BoardDisplay as xr, FLAP_SPEED_PRESETS as Sr, deriveFlapTiming as Cr, resolveFlapSpeed as wr } from "./components/board/board-display.js";
74
+ import { ScaledBoardDisplay as Tr } from "./components/board/scaled-board-display.js";
75
+ import { StaticBoardDisplay as Er } from "./components/board/static-board-display.js";
76
+ import { DEFAULT_SHAPE_LABELS as Dr, previewLabel as Or, previewLabels as kr, previewMessage as Ar } from "./lib/board-previews.js";
77
+ import { BarList as jr } from "./components/data/bar-list.js";
78
+ import { StatStrip as Mr, StatStripItem as Nr } from "./components/data/stat-strip.js";
79
+ import { BoardShowcase as Pr, DEFAULT_SHOWCASE_LABELS as Fr } from "./components/plugin/board-showcase.js";
80
+ import { PLUGIN_CATEGORIES as Ir, PluginCategoryBadge as Lr } from "./components/plugin/plugin-category-badge.js";
81
+ import { ScaledBoardTeaser as Rr } from "./components/plugin/scaled-board-teaser.js";
82
+ import { PluginCard as zr } from "./components/plugin/plugin-card.js";
83
+ import { BOARD_CODE_TO_COLOR as Br, BOARD_COLOR_CODES as Vr, CURSOR_ANCHOR as Hr, DEFAULT_BOARD_LINES as Ur, DEFAULT_BOARD_WIDTH as Wr, FILL_SPACE_REPEAT_VAR as Gr, FILL_SPACE_VAR as Kr } from "./components/editor/constants.js";
84
+ import { NodeViewInjectionProvider as qr, useNodeViewInjection as Jr } from "./components/editor/node-views/node-view-context.js";
85
+ import { ColorTileNodeView as Yr, DEFAULT_COLOR_TILE_NODE_VIEW_LABELS as Xr } from "./components/editor/node-views/color-tile-node-view.js";
86
+ import { ColorTileNode as Zr } from "./components/editor/extensions/color-tile-node.js";
87
+ import { DEFAULT_FILL_SPACE_NODE_VIEW_LABELS as Qr, FillSpaceNodeView as $r } from "./components/editor/node-views/fill-space-node-view.js";
88
+ import { FillSpaceNode as ei } from "./components/editor/extensions/fill-space-node.js";
89
+ import { DEFAULT_FORMULA_NODE_VIEW_LABELS as ti, FormulaNodeView as ni } from "./components/editor/node-views/formula-node-view.js";
90
+ import { FormulaNode as ri } from "./components/editor/extensions/formula-node.js";
91
+ import { LineNavigation as ii } from "./components/editor/extensions/line-navigation.js";
92
+ import { SingleParagraphDoc as ai } from "./components/editor/extensions/single-paragraph-doc.js";
93
+ import { TrailingNewline as oi } from "./components/editor/extensions/trailing-newline.js";
94
+ import { DEFAULT_VARIABLE_NODE_VIEW_LABELS as si, VariableNodeView as ci } from "./components/editor/node-views/variable-node-view.js";
95
+ import { VariableNode as li } from "./components/editor/extensions/variable-node.js";
96
+ import { DEFAULT_WRAPPED_TEXT_VIEW_LABELS as ui, WrappedTextView as di } from "./components/editor/node-views/wrapped-text-view.js";
97
+ import { WrappedTextNode as fi } from "./components/editor/extensions/wrapped-text-node.js";
98
+ import { ColorPickerContent as pi, DEFAULT_COLOR_PICKER_LABELS as mi } from "./components/editor/color-picker-content.js";
99
+ import { DRAW_CHARS as hi, brushToCell as gi, cellsToLine as _i, isPositionalLine as vi, lineToCells as yi, paintLine as bi, renderPositionalLine as xi } from "./components/editor/utils/draw-mode.js";
100
+ import { DEFAULT_DRAW_CHAR_PICKER_LABELS as Si, DrawCharPickerContent as Ci } from "./components/editor/draw-char-picker-content.js";
101
+ import { DEFAULT_FORMATTING_PICKER_LABELS as wi, FormattingPickerContent as Ti } from "./components/editor/formatting-picker-content.js";
102
+ import { DEFAULT_TOOLBAR_DROPDOWN_LABELS as Ei, ToolbarDropdown as Di } from "./components/editor/toolbar-dropdown.js";
103
+ import { parseLineContent as Oi, parseTemplateSimple as ki, serializeTemplateSimple as Ai } from "./components/editor/utils/serialization.js";
104
+ import { insertTemplateContent as ji } from "./components/editor/utils/insertion.js";
105
+ import { DEFAULT_TEMPLATE_EDITOR_TOOLBAR_LABELS as Mi, TemplateEditorToolbar as Ni } from "./components/editor/template-editor-toolbar.js";
106
+ import { buildStrokeTransaction as Pi, lineRanges as Fi } from "./components/editor/utils/stroke-transaction.js";
107
+ import { DEFAULT_TEMPLATE_EDITOR_LABELS as Ii, TemplateEditor as Li } from "./components/editor/template-editor.js";
108
+ import { DEFAULT_FILTER_PICKER_LABELS as Ri, FilterPickerContent as zi } from "./components/editor/filter-picker-content.js";
109
+ import { DEFAULT_VARIABLE_PICKER_LABELS as Bi, VariablePickerContent as Vi, createLucideIconResolver as Hi, getPluginsWithNestedArrays as Ui } from "./components/editor/variable-picker-content.js";
110
+ import { calculateLineLength as Wi, getOverflowAmount as Gi, willOverflow as Ki } from "./components/editor/utils/length-calculator.js";
111
+ export { Gn as ALL_COLOR_CODES, Kn as AVAILABLE_COLORS, t as Accordion, n as AccordionContent, r as AccordionItem, i as AccordionTrigger, x as Alert, S as AlertDescription, q as AlertDialog, J as AlertDialogAction, Y as AlertDialogCancel, X as AlertDialogContent, Z as AlertDialogDescription, Q as AlertDialogFooter, $ as AlertDialogHeader, ee as AlertDialogOverlay, te as AlertDialogPortal, ne as AlertDialogTitle, re as AlertDialogTrigger, C as AlertTitle, er as BOARD_CHARS, Br as BOARD_CODE_TO_COLOR, qn as BOARD_COLORS, Vr as BOARD_COLOR_CODES, k as Badge, jr as BarList, fr as BoardBackdrop, xr as BoardDisplay, fn as BoardIcon, pn as BoardSelector, Pr as BoardShowcase, dr as BoardTeaser, H as Box, mn as Breadcrumb, hn as BreadcrumbEllipsis, gn as BreadcrumbItem, _n as BreadcrumbLink, vn as BreadcrumbList, yn as BreadcrumbPage, bn as BreadcrumbSeparator, D as Button, Jn as COLOR_CODE_MAP, Yn as COLOR_DISPLAY, Hr as CURSOR_ANCHOR, a as Card, o as CardAction, s as CardContent, c as CardDescription, l as CardFooter, u as CardHeader, d as CardTitle, P as Checkbox, j as Chip, Ue as Code, f as Collapsible, p as CollapsibleContent, m as CollapsibleTrigger, pi as ColorPickerContent, Zr as ColorTileNode, Yr as ColorTileNodeView, F as Combobox, R as CopyButton, Ur as DEFAULT_BOARD_LINES, Wr as DEFAULT_BOARD_WIDTH, mi as DEFAULT_COLOR_PICKER_LABELS, Xr as DEFAULT_COLOR_TILE_NODE_VIEW_LABELS, I as DEFAULT_COMBOBOX_LABELS, Si as DEFAULT_DRAW_CHAR_PICKER_LABELS, Qr as DEFAULT_FILL_SPACE_NODE_VIEW_LABELS, Ri as DEFAULT_FILTER_PICKER_LABELS, wi as DEFAULT_FORMATTING_PICKER_LABELS, ti as DEFAULT_FORMULA_NODE_VIEW_LABELS, Dr as DEFAULT_SHAPE_LABELS, Fr as DEFAULT_SHOWCASE_LABELS, Ii as DEFAULT_TEMPLATE_EDITOR_LABELS, Mi as DEFAULT_TEMPLATE_EDITOR_TOOLBAR_LABELS, Ei as DEFAULT_TOOLBAR_DROPDOWN_LABELS, si as DEFAULT_VARIABLE_NODE_VIEW_LABELS, Bi as DEFAULT_VARIABLE_PICKER_LABELS, ui as DEFAULT_WRAPPED_TEXT_VIEW_LABELS, mr as DEVICE_DIMENSIONS, hi as DRAW_CHARS, ie as Dialog, ae as DialogClose, oe as DialogContent, se as DialogDescription, ce as DialogFooter, le as DialogHeader, ue as DialogOverlay, de as DialogPortal, fe as DialogTitle, pe as DialogTrigger, Ci as DrawCharPickerContent, me as DropdownMenu, he as DropdownMenuCheckboxItem, ge as DropdownMenuContent, _e as DropdownMenuGroup, ve as DropdownMenuItem, ye as DropdownMenuLabel, be as DropdownMenuPortal, xe as DropdownMenuRadioGroup, Se as DropdownMenuRadioItem, Ce as DropdownMenuSeparator, we as DropdownMenuShortcut, Te as DropdownMenuSub, Ee as DropdownMenuSubContent, De as DropdownMenuSubTrigger, Oe as DropdownMenuTrigger, tr as EXTRA_CHARS, N as EmptyState, Xn as FIESTABOARD_COLORS, xn as FIESTA_ICON_DATA_URI, Sn as FIESTA_ICON_PALETTE, Cn as FIESTA_ICON_SVG, Gr as FILL_SPACE_REPEAT_VAR, Kr as FILL_SPACE_VAR, Sr as FLAP_SPEED_PRESETS, st as FadeContent, wn as FiestaIcon, Tn as FiestaLogo, ei as FillSpaceNode, $r as FillSpaceNodeView, zi as FilterPickerContent, U as Flex, Ti as FormattingPickerContent, ri as FormulaNode, ni as FormulaNodeView, G as Grid, We as Heading, h as IconTile, z as Input, _ as JsonTree, B as Label, En as LanguageSelector, ke as Lightbox, Ae as LightboxClose, je as LightboxContent, Me as LightboxFooter, Ne as LightboxOverlay, Pe as LightboxPortal, Fe as LightboxTrigger, ii as LineNavigation, Ke as List, qe as ListItem, hr as MAX_NOTES_PER_AXIS, Dn as MainContent, v as MediaFrame, y as MediaFrameBar, b as MediaFrameMedia, gr as NOTE_COLS, _r as NOTE_ROWS, On as NavList, kn as NavListItem, An as NavListLink, jn as NavListSection, Mn as NavListSectionContent, Nn as NavListSectionTrigger, qr as NodeViewInjectionProvider, Pn as PAGE_HUES, Ir as PLUGIN_CATEGORIES, Fn as PageHeader, In as PageIconGradientDefs, Rn as PageInset, zn as PageLayout, Bn as PageToolbar, zr as PluginCard, Lr as PluginCategoryBadge, Ie as Popover, Le as PopoverClose, Re as PopoverContent, ze as PopoverDescription, Be as PopoverTitle, Ve as PopoverTrigger, Tr as ScaledBoardDisplay, Rr as ScaledBoardTeaser, Ye as ScrollArea, Xe as ScrollBar, V as SecretInput, Bt as SegmentedControl, Vt as SegmentedControlItem, dt as Select, ft as SelectContent, pt as SelectGroup, mt as SelectItem, ht as SelectLabel, gt as SelectScrollDownButton, _t as SelectScrollUpButton, vt as SelectSeparator, yt as SelectTrigger, bt as SelectValue, Xt as Sheet, Zt as SheetClose, Qt as SheetContent, $t as SheetDescription, en as SheetFooter, tn as SheetHeader, nn as SheetOverlay, rn as SheetPortal, an as SheetTitle, on as SheetTrigger, Vn as Sidebar, ai as SingleParagraphDoc, ct as Skeleton, Hn as SkipToContent, xt as Slider, T as Spinner, Jt as Stack, Mr as StatStrip, Nr as StatStripItem, Er as StaticBoardDisplay, lt as StatusDot, St as Swatch, Ct as SwatchGroup, kt as Switch, Ze as Table, Qe as TableBody, $e as TableCell, et as TableHead, tt as TableHeader, nt as TableRow, rt as Tabs, it as TabsContent, at as TabsList, ot as TabsTrigger, Li as TemplateEditor, Ni as TemplateEditorToolbar, jt as Text, dn as TextLink, At as Textarea, Un as ThemeToggle, Nt as TimePicker, Pt as TimezonePicker, It as Toggle, Ht as ToggleCard, Ut as ToggleCardGroup, Lt as ToggleGroup, Di as ToolbarDropdown, sn as Tooltip, cn as TooltipContent, ln as TooltipProvider, un as TooltipTrigger, oi as TrailingNewline, li as VariableNode, ci as VariableNodeView, Vi as VariablePickerContent, Wn as WizardProgress, pr as WizardShell, fi as WrappedTextNode, di as WrappedTextView, w as alertVariants, nr as applyCode62Glyph, A as badgeVariants, gi as brushToCell, Pi as buildStrokeTransaction, O as buttonVariants, Wi as calculateLineLength, _i as cellsToLine, M as chipVariants, e as cn, Hi as createLucideIconResolver, L as defaultComboboxFilter, Cr as deriveFlapTiming, W as flexVariants, Zn as getBoardColor, rr as getCharFromToken, ir as getCharIndex, Gi as getOverflowAmount, Ui as getPluginsWithNestedArrays, K as gridVariants, Ge as headingVariants, g as iconTileVariants, ji as insertTemplateContent, ar as isColorTile, vr as isNoteArray, vi as isPositionalLine, Qn as isValidBoardColor, Fi as lineRanges, yi as lineToCells, Ft as listTimezones, Je as listVariants, or as messageToGrid, sr as messageToText, yr as noteArrayDimensions, Ln as pageHue, bi as paintLine, cr as parseLine, Oi as parseLineContent, ki as parseTemplateSimple, Or as previewLabel, kr as previewLabels, Ar as previewMessage, xi as renderPositionalLine, lr as resolveCode62Glyph, $n as resolveColorCode, br as resolveDimensions, wr as resolveFlapSpeed, Wt as segmentedControlItemVariants, Gt as segmentedControlVariants, Ai as serializeTemplateSimple, E as spinnerVariants, Yt as stackVariants, ut as statusDotVariants, wt as swatchFillVariants, Tt as swatchGlyphVariants, Et as swatchGroupVariants, Dt as swatchIndicatorVariants, Ot as swatchVariants, Mt as textVariants, Kt as toggleCardGroupVariants, qt as toggleCardVariants, Rt as toggleGroupVariants, zt as toggleVariants, ur as tokensEqual, Jr as useNodeViewInjection, He as usePopoverClose, Ki as willOverflow };
package/dist/theme.css CHANGED
@@ -638,18 +638,28 @@
638
638
  --nav-active: var(--foreground);
639
639
  --nav-active-foreground: var(--background);
640
640
  /* Surface-relative, not a white literal (#228). The old `oklch(1 0 0 / 14%)`
641
- was tuned by eye on the DARK rail (3.16:1 there) and was invisible
641
+ was tuned by eye on the DARK rail (1.55:1 there) and was invisible
642
642
  everywhere else: 1.03:1 on the light rail, and 1.015:1 when the class
643
643
  reached the docs site's page surface in 4.0.0 — that site now hand-mixes
644
644
  its own hover to survive us. Mixing the LOCAL foreground instead makes the
645
645
  tint an emphasis of whatever ink the row already carries, so it
646
- self-adapts to any surface: 3.36:1 on a dark page, 1.15:1 on a light one.
646
+ self-adapts to any surface: 1.39:1 on a dark page, 1.35:1 on a light one.
647
+ Those two figures were previously stated as 3.36 and 1.15, computed with
648
+ a LINEAR-space alpha composite. Browsers composite in gamma space, and so
649
+ does this package's own gate (theme-contrast.test.mjs `composite`), which
650
+ is why the numbers disagreed with the thing they described. See
651
+ the nav block in theme-contrast.test.mjs, which now pins all four.
647
652
  Custom properties substitute var() on the element they are DECLARED on,
648
653
  so this :root value is resolved against the PAGE ink before it ever
649
654
  inherits onto the rail — which is why .sidebar-gradient re-declares the
650
- token from --sidebar-foreground (3.07:1 dark rail, within 0.1 of the
651
- literal it replaces; 1.15:1 on the light rail, where hover previously
652
- did not paint at all). */
655
+ token from --sidebar-foreground (1.53:1 dark rail, 1.35:1 light rail,
656
+ where hover previously did not paint at all).
657
+
658
+ Note which numbers moved when the method was corrected: only the ones on
659
+ DARK surfaces. Gamma and linear compositing converge when ink and ground
660
+ are close in luminance (the light rail reads 1.030 vs 1.032) and diverge
661
+ when they are far apart — so the linear method overstated exactly the
662
+ figures that were being used to argue the tint was strong enough. */
653
663
  --nav-active-hover: color-mix(in oklch, var(--foreground) 14%, transparent);
654
664
  /* Fiesta gradient palette — three board hues at ONE lightness (0.46),
655
665
  identical in both themes. Because that surface never changes luminance
@@ -1299,9 +1309,12 @@ html[data-board-switch="backward"]::view-transition-new(board-page) {
1299
1309
  /* Re-declared, not inherited (#228): the :root value already resolved its
1300
1310
  var(--foreground) against the PAGE ink before inheriting here — rebinding
1301
1311
  --foreground above cannot reach inside an inherited color-mix. From the
1302
- rail ink: 3.07:1 on the dark rail (the white literal it replaces was
1303
- 3.16:1) and 1.15:1 on the light rail, where the white-on-near-white
1304
- literal measured 1.03:1 a hover that never painted. */
1312
+ rail ink: 1.53:1 on the dark rail and 1.35:1 on the light rail, where the
1313
+ white-on-near-white literal did not paint at all. (Both were previously
1314
+ stated from a linear composite, as 3.07 and 1.15; the "within 0.1 of the
1315
+ literal it replaces" argument that used to sit here was comparing two
1316
+ numbers that were each measured the wrong way, so it has been dropped
1317
+ rather than restated.) */
1305
1318
  --nav-active-hover: color-mix(in oklch, var(--sidebar-foreground) 14%, transparent);
1306
1319
  }
1307
1320