@fiestaboard/ui 1.7.0 → 2.0.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.
@@ -6,7 +6,7 @@ function n({ className: n, ...r }) {
6
6
  return /* @__PURE__ */ t("input", {
7
7
  type: "checkbox",
8
8
  "data-slot": "checkbox",
9
- className: e("h-4 w-4 shrink-0 rounded-sm border border-input accent-brand", "shadow-sm transition-colors cursor-pointer", "outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]", "disabled:cursor-not-allowed disabled:opacity-50", n),
9
+ className: e("relative h-4 w-4 shrink-0 rounded-sm border border-input accent-primary", "shadow-sm transition-[color,background-color,border-color,box-shadow] duration-150 cursor-pointer", "before:absolute before:top-1/2 before:left-1/2 before:size-6 before:-translate-x-1/2 before:-translate-y-1/2 before:content-['']", "enabled:hover:ring-ring/30 enabled:hover:ring-[3px]", "outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]", "aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40", "aria-invalid:ring-[3px] aria-invalid:accent-destructive", "disabled:cursor-not-allowed disabled:opacity-50", n),
10
10
  ...r
11
11
  });
12
12
  }
@@ -1 +1 @@
1
- {"version":3,"file":"checkbox.js","names":[],"sources":["../../../src/components/ui/checkbox.tsx"],"mappings":";;;;AAMA,SAAS,EAAS,EAAE,cAAW,GAAG,KAAwB;CACxD,OACE,kBAAC,SAAD;EACE,MAAK;EACL,aAAU;EACV,WAAW,EACT,gEACA,8CACA,8FACA,mDACA,CACF;EACA,GAAI;CACL,CAAA;AAEL"}
1
+ {"version":3,"file":"checkbox.js","names":[],"sources":["../../../src/components/ui/checkbox.tsx"],"mappings":";;;;AAMA,SAAS,EAAS,EAAE,cAAW,GAAG,KAAwB;CACxD,OACE,kBAAC,SAAD;EACE,MAAK;EACL,aAAU;EACV,WAAW,EAIT,2EACA,qGAIA,oIAIA,uDACA,8FACA,0GACA,2DACA,mDACA,CACF;EACA,GAAI;CACL,CAAA;AAEL"}
@@ -6,7 +6,7 @@ function n({ className: n, type: r, ...i }) {
6
6
  return /* @__PURE__ */ t("input", {
7
7
  type: r,
8
8
  "data-slot": "input",
9
- className: e("flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-sm transition-colors", "file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground", "placeholder:text-muted-foreground", "outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]", "disabled:cursor-not-allowed disabled:opacity-50", n),
9
+ className: e("flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-sm transition-[color,background-color,border-color,box-shadow] duration-150", "file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground", "placeholder:text-muted-foreground", "hover:border-ring/60", "outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]", "aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40", "disabled:cursor-not-allowed disabled:opacity-50", n),
10
10
  ...i
11
11
  });
12
12
  }
@@ -1 +1 @@
1
- {"version":3,"file":"input.js","names":[],"sources":["../../../src/components/ui/input.tsx"],"mappings":";;;;AAMA,SAAS,EAAM,EAAE,cAAW,SAAM,GAAG,KAAqB;CACxD,OACE,kBAAC,SAAD;EACQ;EACN,aAAU;EACV,WAAW,EACT,+GACA,wFACA,qCACA,8FACA,mDACA,CACF;EACA,GAAI;CACL,CAAA;AAEL"}
1
+ {"version":3,"file":"input.js","names":[],"sources":["../../../src/components/ui/input.tsx"],"mappings":";;;;AAMA,SAAS,EAAM,EAAE,cAAW,SAAM,GAAG,KAAqB;CACxD,OACE,kBAAC,SAAD;EACQ;EACN,aAAU;EACV,WAAW,EAGT,sKACA,wFACA,qCACA,wBACA,8FACA,0GACA,mDACA,CACF;EACA,GAAI;CACL,CAAA;AAEL"}
@@ -53,7 +53,7 @@ function p({ placeholder: e, ...t }) {
53
53
  function m({ className: t, children: n, ...i }) {
54
54
  return /* @__PURE__ */ s(c.Trigger, {
55
55
  "data-slot": "select-trigger",
56
- className: e("flex h-9 w-full items-center justify-between rounded-md border border-input bg-background px-3 py-2 text-sm placeholder:text-muted-foreground outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 data-[disabled]:cursor-not-allowed data-[disabled]:opacity-50 [&>span]:line-clamp-1", t),
56
+ className: e("flex h-9 w-full items-center justify-between rounded-md border border-input bg-background px-3 py-2 text-sm transition-[color,background-color,border-color,box-shadow] duration-150 placeholder:text-muted-foreground hover:border-ring/60 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 disabled:cursor-not-allowed disabled:opacity-50 data-[disabled]:cursor-not-allowed data-[disabled]:opacity-50 [&>span]:line-clamp-1", t),
57
57
  ...i,
58
58
  children: [n, /* @__PURE__ */ o(c.Icon, {
59
59
  className: "flex",
@@ -1 +1 @@
1
- {"version":3,"file":"select.js","names":[],"sources":["../../../src/components/ui/select.tsx"],"mappings":"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"}
1
+ {"version":3,"file":"select.js","names":[],"sources":["../../../src/components/ui/select.tsx"],"mappings":"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"}
@@ -4,18 +4,18 @@ import * as t from "react";
4
4
  import { jsx as n, jsxs as r } from "react/jsx-runtime";
5
5
  import { Slider as i } from "@base-ui/react/slider";
6
6
  //#region src/components/ui/slider.tsx
7
- var a = "relative grow overflow-visible rounded-full bg-muted data-[orientation=horizontal]:h-1.5 data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-1.5", o = "absolute rounded-full bg-primary data-[orientation=horizontal]:h-full data-[orientation=vertical]:w-full";
8
- function s({ className: s, defaultValue: c, value: l, min: u = 0, max: d = 100, onValueChange: f, "aria-label": p, ...m }) {
9
- let h = Array.isArray(l) ? l.length : Array.isArray(c) ? c.length : 2, g = t.useCallback(() => p, [p]);
7
+ var a = "relative grow overflow-visible rounded-full bg-muted data-[orientation=horizontal]:h-1.5 data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-1.5", o = "absolute rounded-full bg-primary data-[orientation=horizontal]:h-full data-[orientation=vertical]:w-full", s = "block size-4 shrink-0 rounded-full border border-primary bg-background shadow-sm ring-ring/50 transition-[color,box-shadow] outline-none hover:ring-[3px] focus-visible:ring-[3px] disabled:pointer-events-none disabled:opacity-50 before:absolute before:top-1/2 before:left-1/2 before:size-6 before:-translate-x-1/2 before:-translate-y-1/2 before:content-[''] group-aria-invalid/slider:border-destructive group-aria-invalid/slider:ring-destructive/20 dark:group-aria-invalid/slider:ring-destructive/40";
8
+ function c({ className: c, defaultValue: l, value: u, min: d = 0, max: f = 100, onValueChange: p, "aria-label": m, ...h }) {
9
+ let g = Array.isArray(u) ? u.length : Array.isArray(l) ? l.length : 2, _ = t.useCallback(() => m, [m]);
10
10
  return /* @__PURE__ */ n(i.Root, {
11
11
  "data-slot": "slider",
12
- defaultValue: c,
13
- value: l,
14
- onValueChange: f,
15
- min: u,
16
- max: d,
17
- className: e("relative flex w-full touch-none items-center select-none data-[disabled]:opacity-50 data-[orientation=vertical]:h-full data-[orientation=vertical]:min-h-44 data-[orientation=vertical]:w-auto data-[orientation=vertical]:flex-col", s),
18
- ...m,
12
+ defaultValue: l,
13
+ value: u,
14
+ onValueChange: p,
15
+ min: d,
16
+ max: f,
17
+ className: e("group/slider relative flex w-full touch-none items-center select-none data-[disabled]:opacity-50 data-[orientation=vertical]:h-full data-[orientation=vertical]:min-h-44 data-[orientation=vertical]:w-auto data-[orientation=vertical]:flex-col", c),
18
+ ...h,
19
19
  children: /* @__PURE__ */ n(i.Control, {
20
20
  className: "flex w-full grow items-center data-[orientation=vertical]:h-full data-[orientation=vertical]:flex-col",
21
21
  children: /* @__PURE__ */ r(i.Track, {
@@ -24,16 +24,16 @@ function s({ className: s, defaultValue: c, value: l, min: u = 0, max: d = 100,
24
24
  children: [/* @__PURE__ */ n(i.Indicator, {
25
25
  "data-slot": "slider-range",
26
26
  className: o
27
- }), Array.from({ length: h }, (e, t) => /* @__PURE__ */ n(i.Thumb, {
27
+ }), Array.from({ length: g }, (e, t) => /* @__PURE__ */ n(i.Thumb, {
28
28
  "data-slot": "slider-thumb",
29
- getAriaLabel: p ? g : void 0,
30
- className: "block size-4 shrink-0 rounded-full border border-primary bg-background shadow-sm ring-ring/50 transition-[color,box-shadow] outline-none hover:ring-[3px] focus-visible:ring-[3px] disabled:pointer-events-none disabled:opacity-50"
29
+ getAriaLabel: m ? _ : void 0,
30
+ className: s
31
31
  }, t))]
32
32
  })
33
33
  })
34
34
  });
35
35
  }
36
36
  //#endregion
37
- export { s as Slider };
37
+ export { c as Slider };
38
38
 
39
39
  //# sourceMappingURL=slider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"slider.js","names":[],"sources":["../../../src/components/ui/slider.tsx"],"mappings":";;;;;;AAiBA,IAAM,IACJ,sMAEI,IACJ;AAEF,SAAS,EAAO,EACd,cACA,iBACA,UACA,SAAM,GACN,SAAM,KACN,kBACA,cAAc,GACd,GAAG,KACW;CACd,IAAM,IAAa,MAAM,QAAQ,CAAK,IAAI,EAAM,SAAS,MAAM,QAAQ,CAAY,IAAI,EAAa,SAAS,GAEvG,IAAe,EAAM,kBAAkB,GAAqB,CAAC,CAAS,CAAC;CAE7E,OACE,kBAAC,EAAgB,MAAjB;EACE,aAAU;EACI;EACP;EACQ;EACV;EACA;EACL,WAAW,EACT,uOACA,CACF;EACA,GAAI;EAEJ,UAAA,kBAAC,EAAgB,SAAjB;GAAyB,WAAU;GACjC,UAAA,kBAAC,EAAgB,OAAjB;IAAuB,aAAU;IAAe,WAAW;IAA3D,UAAA,CACE,kBAAC,EAAgB,WAAjB;KAA2B,aAAU;KAAe,WAAW;IAAqB,CAAA,GACnF,MAAM,KAAK,EAAE,QAAQ,EAAW,IAAI,GAAG,MACtC,kBAAC,EAAgB,OAAjB;KACE,aAAU;KAIV,cAAc,IAAY,IAAe,KAAA;KACzC,WAAU;IACX,GALM,CAKN,CACF,CACoB;;EACA,CAAA;CACL,CAAA;AAE1B"}
1
+ {"version":3,"file":"slider.js","names":[],"sources":["../../../src/components/ui/slider.tsx"],"mappings":";;;;;;AAiBA,IAAM,IACJ,sMAEI,IACJ,4GAQI,IACJ;AAEF,SAAS,EAAO,EACd,cACA,iBACA,UACA,SAAM,GACN,SAAM,KACN,kBACA,cAAc,GACd,GAAG,KACW;CACd,IAAM,IAAa,MAAM,QAAQ,CAAK,IAAI,EAAM,SAAS,MAAM,QAAQ,CAAY,IAAI,EAAa,SAAS,GAEvG,IAAe,EAAM,kBAAkB,GAAqB,CAAC,CAAS,CAAC;CAE7E,OACE,kBAAC,EAAgB,MAAjB;EACE,aAAU;EACI;EACP;EACQ;EACV;EACA;EACL,WAAW,EAIT,oPACA,CACF;EACA,GAAI;EAEJ,UAAA,kBAAC,EAAgB,SAAjB;GAAyB,WAAU;GACjC,UAAA,kBAAC,EAAgB,OAAjB;IAAuB,aAAU;IAAe,WAAW;IAA3D,UAAA,CACE,kBAAC,EAAgB,WAAjB;KAA2B,aAAU;KAAe,WAAW;IAAqB,CAAA,GACnF,MAAM,KAAK,EAAE,QAAQ,EAAW,IAAI,GAAG,MACtC,kBAAC,EAAgB,OAAjB;KACE,aAAU;KAIV,cAAc,IAAY,IAAe,KAAA;KACzC,WAAW;IACZ,GALM,CAKN,CACF,CACoB;;EACA,CAAA;CACL,CAAA;AAE1B"}
@@ -4,13 +4,13 @@ import "react";
4
4
  import { jsx as t } from "react/jsx-runtime";
5
5
  import { Switch as n } from "@base-ui/react/switch";
6
6
  //#region src/components/ui/switch.tsx
7
- var r = "bg-background dark:data-[unchecked]:bg-foreground dark:data-[checked]:bg-primary-foreground pointer-events-none block size-4 rounded-full ring-0 transition-transform data-[checked]:translate-x-[calc(100%-2px)] data-[unchecked]:translate-x-0";
7
+ var r = "bg-background dark:bg-foreground pointer-events-none block size-5 rounded-full border border-input ring-0 transition-transform data-[checked]:translate-x-[calc(100%+2px)] data-[unchecked]:translate-x-0";
8
8
  function i({ className: i, ...a }) {
9
9
  return /* @__PURE__ */ t(n.Root, {
10
10
  render: /* @__PURE__ */ t("button", { type: "button" }),
11
11
  nativeButton: !0,
12
12
  "data-slot": "switch",
13
- className: e("peer data-[checked]:bg-primary data-[unchecked]:bg-input focus-visible:border-ring focus-visible:ring-ring/50 dark:data-[unchecked]:bg-input/80 inline-flex h-[1.15rem] w-8 shrink-0 items-center rounded-full border border-transparent shadow-xs transition-[color,background-color,border-color,box-shadow] duration-150 outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50", i),
13
+ className: e("peer data-[checked]:bg-primary data-[unchecked]:bg-muted data-[unchecked]:border-input focus-visible:border-ring focus-visible:ring-ring/50 enabled:hover:ring-ring/30 enabled:hover:ring-[3px] aria-invalid:border-destructive aria-invalid:data-[unchecked]:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 inline-flex h-6 w-11 shrink-0 items-center rounded-full border border-transparent shadow-xs transition-[color,background-color,border-color,box-shadow] duration-150 outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50", i),
14
14
  ...a,
15
15
  children: /* @__PURE__ */ t(n.Thumb, {
16
16
  "data-slot": "switch-thumb",
@@ -1 +1 @@
1
- {"version":3,"file":"switch.js","names":[],"sources":["../../../src/components/ui/switch.tsx"],"mappings":";;;;;;AAUA,IAAM,IACJ;AAEF,SAAS,EAAO,EAAE,cAAW,GAAG,KAA4D;CAC1F,OACE,kBAAC,EAAgB,MAAjB;EAGE,QAAQ,kBAAC,UAAD,EAAQ,MAAK,SAAU,CAAA;EAC/B,cAAA;EACA,aAAU;EACV,WAAW,EACT,qZACA,CACF;EACA,GAAI;EAEJ,UAAA,kBAAC,EAAgB,OAAjB;GAAuB,aAAU;GAAe,WAAW;EAAiB,CAAA;CACxD,CAAA;AAE1B"}
1
+ {"version":3,"file":"switch.js","names":[],"sources":["../../../src/components/ui/switch.tsx"],"mappings":";;;;;;AAoBA,IAAM,IACJ;AAEF,SAAS,EAAO,EAAE,cAAW,GAAG,KAA4D;CAC1F,OACE,kBAAC,EAAgB,MAAjB;EAGE,QAAQ,kBAAC,UAAD,EAAQ,MAAK,SAAU,CAAA;EAC/B,cAAA;EACA,aAAU;EACV,WAAW,EAUT,slBACA,CACF;EACA,GAAI;EAEJ,UAAA,kBAAC,EAAgB,OAAjB;GAAuB,aAAU;GAAe,WAAW;EAAiB,CAAA;CACxD,CAAA;AAE1B"}
@@ -20,7 +20,7 @@ function i({ className: r, ...i }) {
20
20
  function a({ className: r, ...i }) {
21
21
  return /* @__PURE__ */ t(n.Tab, {
22
22
  "data-slot": "tabs-trigger",
23
- className: e("inline-flex items-center justify-center whitespace-nowrap rounded-sm px-3 py-1.5 text-sm font-medium transition-[color,background-color,box-shadow] duration-200 outline-none focus-visible:ring-ring/50 focus-visible:ring-[3px] disabled:pointer-events-none disabled:opacity-50 data-[active]:bg-background data-[active]:text-foreground data-[active]:shadow-sm", r),
23
+ className: e("inline-flex items-center justify-center whitespace-nowrap rounded-sm px-3 py-1.5 text-sm font-medium transition-[color,background-color,box-shadow] duration-200 outline-none not-data-[active]:hover:bg-background/50 not-data-[active]:hover:text-foreground focus-visible:ring-ring/50 focus-visible:ring-[3px] disabled:pointer-events-none disabled:opacity-50 data-[active]:bg-background data-[active]:text-foreground data-[active]:shadow-sm", r),
24
24
  ...i
25
25
  });
26
26
  }
@@ -1 +1 @@
1
- {"version":3,"file":"tabs.js","names":[],"sources":["../../../src/components/ui/tabs.tsx"],"mappings":";;;;;;AAOA,SAAS,EAAK,EAAE,GAAG,KAA0D;CAC3E,OAAO,kBAAC,EAAc,MAAf;EAAoB,aAAU;EAAO,GAAI;CAAQ,CAAA;AAC1D;AAEA,SAAS,EAAS,EAAE,cAAW,GAAG,KAA0D;CAC1F,OACE,kBAAC,EAAc,MAAf;EACE,aAAU;EACV,WAAW,EACT,8FACA,CACF;EACA,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,EAAY,EAAE,cAAW,GAAG,KAAyD;CAC5F,OACE,kBAAC,EAAc,KAAf;EACE,aAAU;EACV,WAAW,EACT,wWACA,CACF;EACA,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,EAAY,EAAE,cAAW,GAAG,KAA2D;CAC9F,OACE,kBAAC,EAAc,OAAf;EACE,aAAU;EACV,WAAW,EAAG,yEAAyE,CAAS;EAChG,GAAI;CACL,CAAA;AAEL"}
1
+ {"version":3,"file":"tabs.js","names":[],"sources":["../../../src/components/ui/tabs.tsx"],"mappings":";;;;;;AAOA,SAAS,EAAK,EAAE,GAAG,KAA0D;CAC3E,OAAO,kBAAC,EAAc,MAAf;EAAoB,aAAU;EAAO,GAAI;CAAQ,CAAA;AAC1D;AAEA,SAAS,EAAS,EAAE,cAAW,GAAG,KAA0D;CAC1F,OACE,kBAAC,EAAc,MAAf;EACE,aAAU;EACV,WAAW,EACT,8FACA,CACF;EACA,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,EAAY,EAAE,cAAW,GAAG,KAAyD;CAC5F,OACE,kBAAC,EAAc,KAAf;EACE,aAAU;EACV,WAAW,EAIT,ybACA,CACF;EACA,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,EAAY,EAAE,cAAW,GAAG,KAA2D;CAC9F,OACE,kBAAC,EAAc,OAAf;EACE,aAAU;EACV,WAAW,EAAG,yEAAyE,CAAS;EAChG,GAAI;CACL,CAAA;AAEL"}
@@ -5,7 +5,7 @@ import { jsx as t } from "react/jsx-runtime";
5
5
  function n({ className: n, ...r }) {
6
6
  return /* @__PURE__ */ t("textarea", {
7
7
  "data-slot": "textarea",
8
- className: e("flex min-h-[60px] w-full rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm transition-colors", "placeholder:text-muted-foreground", "outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]", "disabled:cursor-not-allowed disabled:opacity-50", n),
8
+ className: e("flex min-h-[60px] w-full rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm transition-[color,background-color,border-color,box-shadow] duration-150", "placeholder:text-muted-foreground", "hover:border-ring/60", "outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]", "aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40", "disabled:cursor-not-allowed disabled:opacity-50", n),
9
9
  ...r
10
10
  });
11
11
  }
@@ -1 +1 @@
1
- {"version":3,"file":"textarea.js","names":[],"sources":["../../../src/components/ui/textarea.tsx"],"mappings":";;;;AAIA,SAAS,EAAS,EAAE,cAAW,GAAG,KAA2C;CAC3E,OACE,kBAAC,YAAD;EACE,aAAU;EACV,WAAW,EACT,wHACA,qCACA,8FACA,mDACA,CACF;EACA,GAAI;CACL,CAAA;AAEL"}
1
+ {"version":3,"file":"textarea.js","names":[],"sources":["../../../src/components/ui/textarea.tsx"],"mappings":";;;;AAIA,SAAS,EAAS,EAAE,cAAW,GAAG,KAA2C;CAC3E,OACE,kBAAC,YAAD;EACE,aAAU;EACV,WAAW,EACT,+KACA,qCACA,wBACA,8FACA,0GACA,mDACA,CACF;EACA,GAAI;CACL,CAAA;AAEL"}
package/dist/theme.css CHANGED
@@ -36,15 +36,16 @@
36
36
  --color-sidebar-border: var(--sidebar-border);
37
37
  --color-sidebar-accent-foreground: var(--sidebar-accent-foreground);
38
38
  --color-sidebar-accent: var(--sidebar-accent);
39
- --color-sidebar-primary-foreground: var(--sidebar-primary-foreground);
40
- --color-sidebar-primary: var(--sidebar-primary);
41
39
  --color-sidebar-foreground: var(--sidebar-foreground);
42
40
  --color-sidebar: var(--sidebar);
43
- --color-chart-5: var(--chart-5);
44
- --color-chart-4: var(--chart-4);
45
- --color-chart-3: var(--chart-3);
46
- --color-chart-2: var(--chart-2);
47
- --color-chart-1: var(--chart-1);
41
+ /* NOTE (#173): --chart-1..5 and --sidebar-primary(-foreground) used to be
42
+ exported here. They were stock shadcn leftovers, consumed by nothing in
43
+ this package, and carried 137-157 degree hue shifts between light and
44
+ dark — so a chart adopting them would silently re-encode its series on a
45
+ theme toggle. Deleted rather than redesigned: a design system should not
46
+ ship a palette it has not designed. If a data-viz component ever lands,
47
+ add a hue-STABLE five-series ramp (lightness varies per theme, hue does
48
+ not) plus a story that proves both themes. */
48
49
  --color-ring: var(--ring);
49
50
  --color-input: var(--input);
50
51
  --color-border: var(--border);
@@ -164,6 +165,12 @@
164
165
  owned by the stylesheet, not a build-time JS wrapper. */
165
166
  --font-geist-sans: "Geist Variable", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
166
167
  --font-geist-mono: "Geist Mono Variable", ui-monospace, SFMono-Regular, "SF Mono", Monaco, Menlo, monospace;
168
+ /* Tell the UA which form-control palette to paint (#160). Without this,
169
+ every browser-drawn widget — accent-color'd checkboxes, file/date/number
170
+ chrome, scrollbars, autofill — renders in LIGHT chrome, which on the dark
171
+ default theme makes an unchecked Checkbox read as a filled/checked box.
172
+ Declared next to the palette it belongs to, once per theme. */
173
+ color-scheme: light;
167
174
  --radius: 0.625rem;
168
175
  --background: oklch(0.985 0 0);
169
176
  --foreground: oklch(0.145 0 0);
@@ -171,6 +178,17 @@
171
178
  --card-foreground: oklch(0.145 0 0);
172
179
  --popover: oklch(1 0 0);
173
180
  --popover-foreground: oklch(0.145 0 0);
181
+ /* ============================================================
182
+ * INVARIANT — "one token means 'this control is on'" (#156/#159).
183
+ * --primary is the single pigment that says a control is the primary
184
+ * action / is selected / is focused. --ring and --sidebar-ring are
185
+ * deliberately set to the SAME value in both themes so a focused
186
+ * control and an engaged control read as one idea. They are the only
187
+ * intentional value aliases in this file; do not "de-duplicate" them
188
+ * into separate hues, and do not let --primary drift to a neutral —
189
+ * that is what made the dark theme brandless (see .dark below).
190
+ * --primary carries the FiestaBoard warm orange in BOTH themes.
191
+ * ============================================================ */
174
192
  --primary: oklch(0.52 0.16 60);
175
193
  --primary-foreground: oklch(0.985 0 0);
176
194
  --secondary: oklch(0.96 0 0);
@@ -182,26 +200,48 @@
182
200
  --accent-foreground: oklch(0.205 0 0);
183
201
  --destructive: oklch(0.43 0.245 27.325);
184
202
  --destructive-foreground: oklch(0.985 0 0);
203
+ /* ============================================================
204
+ * --border vs --input: TWO DIFFERENT INTENTS, NOT ONE VALUE (#161).
205
+ *
206
+ * --border is DECORATION: table rules, card edges, dividers, list
207
+ * separators. It separates content that is already legible on its
208
+ * own, so WCAG 2.2 SC 1.4.11 does not apply and it is deliberately
209
+ * allowed to stay whisper-subtle (~1.3:1). Raising it to 3:1 would
210
+ * turn every card and table into a wireframe.
211
+ *
212
+ * --input is the CONTROL BOUNDARY: Input, Textarea, Select trigger and
213
+ * Checkbox are `bg-transparent`, so this 1px edge is the ONLY thing
214
+ * that says "a control lives here". That is exactly the "visual
215
+ * information required to identify a user interface component" of
216
+ * SC 1.4.11, so it MUST clear 3:1 against BOTH --background and
217
+ * --card (a field can sit on either surface).
218
+ *
219
+ * Derived from --foreground as an alpha fraction so the boundary
220
+ * tracks the text color in every theme and season instead of being a
221
+ * hand-tuned grey per palette. Percentages are the smallest that clear
222
+ * 3:1 on both surfaces with headroom (light 48% -> 3.45/3.48,
223
+ * dark 38% -> 3.37/3.44); they differ because contrast ramps faster
224
+ * for light-on-dark than dark-on-light.
225
+ *
226
+ * DO NOT collapse these two tokens into one value in either direction.
227
+ * ============================================================ */
185
228
  --border: oklch(0.905 0 0);
186
- --input: oklch(0.885 0 0);
187
- --ring: oklch(0.52 0.16 60);
188
- --chart-1: oklch(0.646 0.222 41.116);
189
- --chart-2: oklch(0.6 0.118 184.704);
190
- --chart-3: oklch(0.398 0.07 227.392);
191
- --chart-4: oklch(0.65 0.189 84.429);
192
- --chart-5: oklch(0.65 0.188 70.08);
229
+ --input: color-mix(in oklch, var(--foreground) 48%, transparent);
230
+ --ring: oklch(0.52 0.16 60); /* = --primary, see the invariant above */
193
231
  --sidebar: oklch(0.975 0 0);
194
232
  --sidebar-foreground: oklch(0.145 0 0);
195
- --sidebar-primary: oklch(0.52 0.16 60);
196
- --sidebar-primary-foreground: oklch(0.985 0 0);
197
233
  --sidebar-accent: oklch(0.92 0 0);
198
234
  --sidebar-accent-foreground: oklch(0.205 0 0);
199
235
  --sidebar-border: oklch(0.915 0 0);
200
- --sidebar-ring: oklch(0.52 0.16 60);
236
+ --sidebar-ring: oklch(0.52 0.16 60); /* = --primary, see the invariant above */
201
237
  --info: oklch(0.45 0.15 250);
202
238
  --info-foreground: oklch(0.985 0 0);
203
239
  --success: oklch(0.4 0.16 150);
204
240
  --success-foreground: oklch(0.985 0 0);
241
+ /* --warning must never collide with --brand (#157). In light they share a
242
+ near hue (70 vs 75) but are pulled apart by lightness — 1.61:1 between
243
+ them — so caution still reads as caution next to a brand accent. The
244
+ dark pair is separated on hue instead; see .dark. */
205
245
  --warning: oklch(0.45 0.16 70);
206
246
  --warning-foreground: oklch(0.985 0 0);
207
247
  --tag-variable: oklch(0.45 0.2 280);
@@ -379,14 +419,25 @@
379
419
  }
380
420
 
381
421
  .dark {
422
+ color-scheme: dark; /* see the note in :root (#160) */
382
423
  --background: oklch(0.13 0 0);
383
424
  --foreground: oklch(0.985 0 0);
384
425
  --card: oklch(0.16 0 0);
385
426
  --card-foreground: oklch(0.985 0 0);
386
427
  --popover: oklch(0.16 0 0);
387
428
  --popover-foreground: oklch(0.985 0 0);
388
- --primary: oklch(0.922 0 0);
389
- --primary-foreground: oklch(0.205 0 0);
429
+ /* Brand-bearing primary (#156). This used to be oklch(0.922 0 0) — stock
430
+ shadcn's achromatic dark primary, never re-designed when the FiestaBoard
431
+ palette landed. Dark is the DEFAULT theme, so every default Button,
432
+ Badge, Switch track, Slider indicator and focus ring shipped with zero
433
+ brand hue. Same warm orange as :root, lifted in lightness for a dark
434
+ surface (light 0.52 -> dark 0.72) and held on the same hue family.
435
+ Upholds the "one token means 'this control is on'" invariant declared in
436
+ :root: --ring and --sidebar-ring below repeat this exact value. */
437
+ --primary: oklch(0.72 0.15 62);
438
+ /* Near-black on-accent foreground, matching every other dark accent
439
+ foreground in this block (destructive/info/success/warning all 0.15). */
440
+ --primary-foreground: oklch(0.15 0 0);
390
441
  --secondary: oklch(0.215 0 0);
391
442
  --secondary-foreground: oklch(0.985 0 0);
392
443
  --muted: oklch(0.2 0 0);
@@ -395,27 +446,30 @@
395
446
  --accent-foreground: oklch(0.985 0 0);
396
447
  --destructive: oklch(0.8 0.191 22.216);
397
448
  --destructive-foreground: oklch(0.15 0 0);
449
+ /* --border stays decorative-subtle; --input is the 3:1 control boundary.
450
+ Full rationale in the :root block — do not merge the two. */
398
451
  --border: oklch(1 0 0 / 10%);
399
- --input: oklch(1 0 0 / 14%);
400
- --ring: oklch(0.55 0 0);
401
- --chart-1: oklch(0.55 0.243 264.376);
402
- --chart-2: oklch(0.696 0.17 162.48);
403
- --chart-3: oklch(0.769 0.188 70.08);
404
- --chart-4: oklch(0.627 0.265 303.9);
405
- --chart-5: oklch(0.645 0.246 16.439);
452
+ --input: color-mix(in oklch, var(--foreground) 38%, transparent);
453
+ --ring: oklch(0.72 0.15 62); /* = --primary, see the invariant in :root */
406
454
  --sidebar: oklch(0.145 0 0);
407
455
  --sidebar-foreground: oklch(0.985 0 0);
408
- --sidebar-primary: oklch(0.488 0.243 264.376);
409
- --sidebar-primary-foreground: oklch(0.985 0 0);
410
456
  --sidebar-accent: oklch(0.28 0 0);
411
457
  --sidebar-accent-foreground: oklch(0.985 0 0);
412
458
  --sidebar-border: oklch(1 0 0 / 8%);
413
- --sidebar-ring: oklch(0.55 0 0);
459
+ --sidebar-ring: oklch(0.72 0.15 62); /* = --primary, see the invariant in :root */
414
460
  --info: oklch(0.75 0.18 250);
415
461
  --info-foreground: oklch(0.15 0 0);
416
462
  --success: oklch(0.68 0.18 145);
417
463
  --success-foreground: oklch(0.15 0 0);
418
- --warning: oklch(0.78 0.14 75);
464
+ /* Amber caution, deliberately OFF the brand hue (#157). This was
465
+ oklch(0.78 0.14 75) — byte-identical to --brand below, so "this is
466
+ FiestaBoard" and "be careful" rendered as the same pigment and neither
467
+ could be learned. Moved +20deg toward yellow and +0.08 lighter, which
468
+ puts 1.34:1 of luminance and a clear hue break between the two. The
469
+ 22deg drift from the light --warning (hue 70) is intentional and small:
470
+ light must separate warning from brand on LIGHTNESS (it has to stay dark
471
+ enough to be readable text on white), dark separates them on HUE. */
472
+ --warning: oklch(0.86 0.16 95);
419
473
  --warning-foreground: oklch(0.15 0 0);
420
474
  --tag-variable: oklch(0.65 0.15 280);
421
475
  --tag-variable-foreground: oklch(0.85 0.08 280);
@@ -441,8 +495,18 @@
441
495
  --brand: oklch(0.78 0.14 75);
442
496
  --brand-emphasis: oklch(0.55 0.16 60);
443
497
  --brand-foreground: oklch(1 0 0);
444
- /* Navigation active state — indigo palette (lighter for dark mode) */
445
- --nav-active: oklch(0.59 0.19 265); /* indigo-500 */
498
+ /* Navigation active state — indigo palette.
499
+ NOT "lighter for dark mode" (#162): --nav-active is the solid FALLBACK
500
+ fill for the active nav pill, used whenever the frosted-glass treatment
501
+ can't run — no backdrop-filter support, prefers-reduced-transparency, and
502
+ prefers-contrast: more. At the old indigo-500 (0.59) white nav labels sat
503
+ at 4.26:1, i.e. BELOW AA for the 14px/600 labels Sidebar renders, which
504
+ made the explicit high-contrast path less accessible than the default
505
+ one. Darkened to clear AAA (7.47:1) instead. Kept as light as AAA allows
506
+ rather than the 0.42 the audit suggested (8.91:1), because darkening the
507
+ pill trades text contrast against the pill's own separation from the
508
+ surface behind it — see the fallback rules near .nav-active. */
509
+ --nav-active: oklch(0.46 0.19 265);
446
510
  --nav-active-foreground: oklch(1 0 0); /* white */
447
511
  --nav-active-hover: oklch(0.59 0.19 265 / 20%); /* indigo tint hover */
448
512
  /* Fiesta gradient palette — lighter for visibility on dark card backgrounds */
@@ -1072,6 +1136,15 @@ html[data-board-switch="backward"]::view-transition-new(board-page) {
1072
1136
  background: var(--nav-active);
1073
1137
  color: var(--nav-active-foreground);
1074
1138
  }
1139
+ /* The dark --nav-active fill is deliberately dark enough for AAA white labels
1140
+ (#162), which necessarily brings it closer in luminance to the near-black
1141
+ surfaces it sits on. A 1px light inset keeps the pill's OWN boundary
1142
+ identifiable (SC 1.4.11 — "state" of a component) without reintroducing the
1143
+ transparency these fallbacks exist to avoid. Light mode needs no help: its
1144
+ pill already sits 7.6:1 off --sidebar. */
1145
+ .dark .nav-active {
1146
+ box-shadow: inset 0 0 0 1px oklch(1 0 0 / 0.22);
1147
+ }
1075
1148
  .nav-active-hover:hover {
1076
1149
  background: var(--nav-active-hover);
1077
1150
  }
@@ -1116,7 +1189,10 @@ html[data-board-switch="backward"]::view-transition-new(board-page) {
1116
1189
  .sidebar-gradient .nav-active,
1117
1190
  .sidebar-gradient-horizontal .nav-active {
1118
1191
  background: var(--nav-active);
1119
- box-shadow: none;
1192
+ /* Keep the hairline (was `none`): the solid fill is only ~1.2-1.7:1 off
1193
+ the gradient stops behind it in either theme, so the ring is what makes
1194
+ the pill an identifiable shape (#162). */
1195
+ box-shadow: inset 0 0 0 1px oklch(1 0 0 / 0.22);
1120
1196
  backdrop-filter: none;
1121
1197
  -webkit-backdrop-filter: none;
1122
1198
  }
@@ -1132,7 +1208,8 @@ html[data-board-switch="backward"]::view-transition-new(board-page) {
1132
1208
  .sidebar-gradient .nav-active,
1133
1209
  .sidebar-gradient-horizontal .nav-active {
1134
1210
  background: var(--nav-active);
1135
- box-shadow: none;
1211
+ /* Same reasoning as the @supports fallback above (#162). */
1212
+ box-shadow: inset 0 0 0 1px oklch(1 0 0 / 0.22);
1136
1213
  backdrop-filter: none;
1137
1214
  -webkit-backdrop-filter: none;
1138
1215
  }
@@ -1144,6 +1221,10 @@ html[data-board-switch="backward"]::view-transition-new(board-page) {
1144
1221
  }
1145
1222
  }
1146
1223
 
1224
+ /* This branch is where the old fallback was most wrong: users who explicitly
1225
+ asked for MORE contrast got 4.26:1 in dark, below the 4.5:1 the default
1226
+ frosted path achieved. --nav-active now targets AAA (7.47:1) so this path
1227
+ is deliberately the most legible one, not the least (#162). */
1147
1228
  @media (prefers-contrast: more) {
1148
1229
  .sidebar-gradient .nav-active,
1149
1230
  .sidebar-gradient-horizontal .nav-active {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fiestaboard/ui",
3
- "version": "1.7.0",
3
+ "version": "2.0.1",
4
4
  "description": "FiestaUI — the FiestaBoard design system. React components on Base UI with Tailwind v4 design tokens.",
5
5
  "license": "MIT",
6
6
  "repository": {