@cascivo/react 0.8.0 → 0.9.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.
package/README.md CHANGED
@@ -36,6 +36,11 @@ supplies the tokens and themes the components read.
36
36
  Charts live in a separate package — add [`@cascivo/charts`](https://github.com/cascivo/cascivo/tree/main/packages/charts)
37
37
  for `LineChart`, `AreaChart`, `BarChart`, `Sparkline`, and more.
38
38
 
39
+ > **Types are the reference.** The shipped `dist/index.d.ts` is a self-contained, flat
40
+ > rollup — every component's `…Props` interface is real, documentation-grade API. Reading
41
+ > it (or the per-component [`/llms/<name>.md`](https://cascivo.com/llms.txt)) is the fastest
42
+ > way to learn a component's props with no web access.
43
+
39
44
  ### Framework setup (Next.js App Router)
40
45
 
41
46
  In a Server Component file (e.g. `app/layout.tsx`), import the themes once:
@@ -58,12 +63,20 @@ RSC without any extra wrapper.
58
63
  > only if you prefer one explicit stylesheet over per-component tree-shaking, or
59
64
  > for Vite SSR (below), where it is required.
60
65
 
61
- > **Vite SSR / TanStack Start / Remix / workerd?** Those per-component `.css`
62
- > imports need a bundler to resolve them; a bare server-side ESM loader throws
63
- > `Unknown file extension ".css"`. Add `ssr: { noExternal: [/^@cascivo\//] }` (or
64
- > the `cascivoSsr()` plugin from `@cascivo/vite-plugin`) and import
65
- > `@cascivo/react/styles.css` once in your root entry. Full recipe:
66
- > [USING-WITH-VITE-SSR.md](https://github.com/cascivo/cascivo/blob/main/docs/USING-WITH-VITE-SSR.md).
66
+ > **Vite SSR / TanStack Start / Remix / workerd?** The 4-line SSR checklist (full
67
+ > recipe: [USING-WITH-VITE-SSR.md](https://github.com/cascivo/cascivo/blob/main/docs/USING-WITH-VITE-SSR.md)):
68
+ >
69
+ > 1. **`ssr: { noExternal: [/^@cascivo\//] }`** in `vite.config` (or the
70
+ > `cascivoSsr()` plugin from `@cascivo/vite-plugin`). Without it a bare
71
+ > server-side ESM loader can't resolve the per-component `.css` side-effect
72
+ > imports and throws `Unknown file extension ".css"`.
73
+ > 2. **`@preact/signals-react` 3.x** — on React 19 the 2.x line fails to load. The
74
+ > peer range enforces `>=3`.
75
+ > 3. **Import the CSS once** in your root entry: `@cascivo/react/styles.css` +
76
+ > `@cascivo/themes/all` (+ `@cascivo/charts/styles.css` if you use charts).
77
+ > 4. **Theme without a mismatch:** inline `themePreloadScript()` in `<head>` and add
78
+ > `suppressHydrationWarning` to `<html>`, or hard-code `data-theme` for a fixed theme.
79
+ >
67
80
  > Next.js App Router needs none of this.
68
81
 
69
82
  ## Use
@@ -13,149 +13,149 @@ var p = n({
13
13
  open: { on: { CLOSE: "closed" } }
14
14
  }
15
15
  });
16
- function m({ options: n, value: m, defaultValue: h, onChange: g, clearable: _ = !1, searchable: v = !0, label: y, hint: b, error: x, size: S = "md", disabled: C = !1, labels: w, className: T, id: E }) {
16
+ function m({ options: n, value: m, defaultValue: h, onValueChange: g, onChange: _, clearable: v = !1, searchable: y = !0, label: b, hint: x, error: S, size: C = "md", disabled: w = !1, labels: T, className: E, id: D }) {
17
17
  o();
18
- let [D, O] = r(p), k = d(), A = E ?? `cascade-combobox-${k}`, j = `${k}-listbox`, M = f(null), N = w?.placeholder ?? c(s.combobox.placeholder), P = w?.empty ?? c(s.combobox.empty), F = w?.clear ?? c(s.combobox.clear), I = w?.search ?? c(s.combobox.search), L = i(m ?? h);
19
- m !== void 0 && (L.value = m);
20
- let R = i(""), z = i(0), B = D.value === "open", V = n.filter((e) => !v || !R.value ? !0 : e.label.toLowerCase().includes(R.value.toLowerCase())), H = n.find((e) => e.value === L.value);
18
+ let [O, k] = r(p), A = d(), j = D ?? `cascade-combobox-${A}`, M = `${A}-listbox`, N = f(null), P = T?.placeholder ?? c(s.combobox.placeholder), F = T?.empty ?? c(s.combobox.empty), I = T?.clear ?? c(s.combobox.clear), L = T?.search ?? c(s.combobox.search), R = i(m ?? h);
19
+ m !== void 0 && (R.value = m);
20
+ let z = i(""), B = i(0), V = O.value === "open", H = n.filter((e) => !y || !z.value ? !0 : e.label.toLowerCase().includes(z.value.toLowerCase())), U = n.find((e) => e.value === R.value);
21
21
  a(() => {
22
- if (!B) return;
22
+ if (!V) return;
23
23
  let e = (e) => {
24
- let t = document.getElementById(`${k}-root`);
25
- t && !t.contains(e.target) && O("CLOSE");
24
+ let t = document.getElementById(`${A}-root`);
25
+ t && !t.contains(e.target) && k("CLOSE");
26
26
  };
27
27
  return document.addEventListener("mousedown", e), () => document.removeEventListener("mousedown", e);
28
28
  });
29
- let U = () => {
30
- C || (R.value = "", z.value = 0, O("OPEN"), setTimeout(() => M.current?.focus(), 0));
31
- }, W = () => {
32
- O("CLOSE"), R.value = "";
33
- }, G = (e) => {
34
- m === void 0 && (L.value = e), g?.(e), W();
35
- }, K = () => {
36
- m === void 0 && (L.value = void 0), g?.(void 0);
37
- }, q = V.flatMap((e, t) => e.disabled ? [] : [t]), J = (e) => {
38
- if (q.length === 0) return;
39
- let t = q[(q.indexOf(z.value) + e + q.length) % q.length];
40
- t !== void 0 && (z.value = t);
41
- }, Y = (e) => {
42
- (e.key === "Enter" || e.key === " " || e.key === "ArrowDown") && (e.preventDefault(), U());
43
- }, X = (e) => {
29
+ let W = () => {
30
+ w || (z.value = "", B.value = 0, k("OPEN"), setTimeout(() => N.current?.focus(), 0));
31
+ }, G = () => {
32
+ k("CLOSE"), z.value = "";
33
+ }, K = g ?? _, q = (e) => {
34
+ m === void 0 && (R.value = e), K?.(e), G();
35
+ }, J = () => {
36
+ m === void 0 && (R.value = void 0), K?.(void 0);
37
+ }, Y = H.flatMap((e, t) => e.disabled ? [] : [t]), X = (e) => {
38
+ if (Y.length === 0) return;
39
+ let t = Y[(Y.indexOf(B.value) + e + Y.length) % Y.length];
40
+ t !== void 0 && (B.value = t);
41
+ }, Z = (e) => {
42
+ (e.key === "Enter" || e.key === " " || e.key === "ArrowDown") && (e.preventDefault(), W());
43
+ }, Q = (e) => {
44
44
  switch (e.key) {
45
45
  case "ArrowDown":
46
- e.preventDefault(), J(1);
46
+ e.preventDefault(), X(1);
47
47
  break;
48
48
  case "ArrowUp":
49
- e.preventDefault(), J(-1);
49
+ e.preventDefault(), X(-1);
50
50
  break;
51
51
  case "Enter": {
52
52
  e.preventDefault();
53
- let t = V[z.value];
54
- t && !t.disabled && G(t.value);
53
+ let t = H[B.value];
54
+ t && !t.disabled && q(t.value);
55
55
  break;
56
56
  }
57
57
  case "Escape":
58
- e.preventDefault(), W();
58
+ e.preventDefault(), G();
59
59
  break;
60
60
  case "Tab":
61
- W();
61
+ G();
62
62
  break;
63
63
  }
64
- }, Z = (e) => `${k}-option-${e}`;
64
+ }, $ = (e) => `${A}-option-${e}`;
65
65
  return /* @__PURE__ */ u("div", {
66
- id: `${k}-root`,
67
- className: t(e.wrapper, T),
68
- "data-state": x ? "error" : D.value,
69
- "data-size": S,
66
+ id: `${A}-root`,
67
+ className: t(e.wrapper, E),
68
+ "data-state": S ? "error" : O.value,
69
+ "data-size": C,
70
70
  children: [
71
- y && /* @__PURE__ */ l("label", {
71
+ b && /* @__PURE__ */ l("label", {
72
72
  className: e.label,
73
- htmlFor: A,
74
- children: y
73
+ htmlFor: j,
74
+ children: b
75
75
  }),
76
76
  /* @__PURE__ */ u("div", {
77
77
  className: e.field,
78
78
  children: [/* @__PURE__ */ u("button", {
79
- id: A,
79
+ id: j,
80
80
  type: "button",
81
81
  role: "combobox",
82
- "aria-expanded": B,
83
- "aria-controls": j,
82
+ "aria-expanded": V,
83
+ "aria-controls": M,
84
84
  "aria-haspopup": "listbox",
85
- "aria-activedescendant": B && z.value >= 0 ? Z(z.value) : void 0,
86
- "aria-invalid": x ? !0 : void 0,
87
- "aria-describedby": x ? `${k}-error` : b ? `${k}-hint` : void 0,
85
+ "aria-activedescendant": V && B.value >= 0 ? $(B.value) : void 0,
86
+ "aria-invalid": S ? !0 : void 0,
87
+ "aria-describedby": S ? `${A}-error` : x ? `${A}-hint` : void 0,
88
88
  className: e.trigger,
89
- disabled: C,
90
- onKeyDown: Y,
91
- onClick: B ? W : U,
89
+ disabled: w,
90
+ onKeyDown: Z,
91
+ onClick: V ? G : W,
92
92
  children: [/* @__PURE__ */ l("span", {
93
- className: t(e.value, H ? void 0 : e.placeholder),
94
- children: H?.label ?? N
93
+ className: t(e.value, U ? void 0 : e.placeholder),
94
+ children: U?.label ?? P
95
95
  }), /* @__PURE__ */ l("span", {
96
96
  className: e.chevron,
97
97
  "aria-hidden": "true"
98
98
  })]
99
- }), _ && L.value !== void 0 && /* @__PURE__ */ l("button", {
99
+ }), v && R.value !== void 0 && /* @__PURE__ */ l("button", {
100
100
  type: "button",
101
101
  className: e.clear,
102
- "aria-label": F,
102
+ "aria-label": I,
103
103
  onClick: (e) => {
104
- e.stopPropagation(), K();
104
+ e.stopPropagation(), J();
105
105
  },
106
106
  children: "✕"
107
107
  })]
108
108
  }),
109
109
  /* @__PURE__ */ u("div", {
110
110
  role: "listbox",
111
- id: j,
111
+ id: M,
112
112
  className: e.listbox,
113
- "data-state": B ? "open" : "closed",
114
- "aria-label": y,
115
- children: [v && B && /* @__PURE__ */ l("div", {
113
+ "data-state": V ? "open" : "closed",
114
+ "aria-label": b,
115
+ children: [y && V && /* @__PURE__ */ l("div", {
116
116
  className: e.searchWrapper,
117
117
  children: /* @__PURE__ */ l("input", {
118
- ref: M,
118
+ ref: N,
119
119
  type: "text",
120
120
  className: e.search,
121
- value: R.value,
121
+ value: z.value,
122
122
  onChange: (e) => {
123
- R.value = e.target.value, z.value = 0;
123
+ z.value = e.target.value, B.value = 0;
124
124
  },
125
- onKeyDown: X,
126
- "aria-label": I,
125
+ onKeyDown: Q,
126
+ "aria-label": L,
127
127
  autoComplete: "off"
128
128
  })
129
- }), V.length === 0 ? /* @__PURE__ */ l("div", {
129
+ }), H.length === 0 ? /* @__PURE__ */ l("div", {
130
130
  className: e.empty,
131
- children: P
132
- }) : V.map((t, n) => /* @__PURE__ */ l("div", {
133
- id: Z(n),
131
+ children: F
132
+ }) : H.map((t, n) => /* @__PURE__ */ l("div", {
133
+ id: $(n),
134
134
  role: "option",
135
- "aria-selected": t.value === L.value,
135
+ "aria-selected": t.value === R.value,
136
136
  "aria-disabled": t.disabled || void 0,
137
- "data-state": n === z.value ? "active" : void 0,
137
+ "data-state": n === B.value ? "active" : void 0,
138
138
  "data-disabled": t.disabled || void 0,
139
139
  className: e.option,
140
140
  onMouseEnter: () => {
141
- t.disabled || (z.value = n);
141
+ t.disabled || (B.value = n);
142
142
  },
143
143
  onClick: () => {
144
- t.disabled || G(t.value);
144
+ t.disabled || q(t.value);
145
145
  },
146
146
  children: t.label
147
147
  }, t.value))]
148
148
  }),
149
- x && /* @__PURE__ */ l("span", {
150
- id: `${k}-error`,
149
+ S && /* @__PURE__ */ l("span", {
150
+ id: `${A}-error`,
151
151
  className: e.error,
152
152
  role: "alert",
153
- children: x
153
+ children: S
154
154
  }),
155
- !x && b && /* @__PURE__ */ l("span", {
156
- id: `${k}-hint`,
155
+ !S && x && /* @__PURE__ */ l("span", {
156
+ id: `${A}-hint`,
157
157
  className: e.hint,
158
- children: b
158
+ children: x
159
159
  })
160
160
  ]
161
161
  });
@@ -2,25 +2,25 @@
2
2
 
3
3
  import e from "./date-picker.module.js";
4
4
  import { batch as t, cn as n, createMachine as r, useMachine as i, useSignal as a, useSignalEffect as o, useSignals as s } from "@cascivo/core";
5
- import { builtin as c, currentLocale as l, t as u } from "@cascivo/i18n";
6
- import { jsx as d, jsxs as f } from "react/jsx-runtime";
7
- import { useId as p, useRef as m } from "react";
5
+ import { builtin as c, currentLocale as ee, t as l } from "@cascivo/i18n";
6
+ import { jsx as u, jsxs as d } from "react/jsx-runtime";
7
+ import { useId as f, useRef as te } from "react";
8
8
  //#region ../components/src/date-picker/date-picker.tsx
9
- var h = r({
9
+ var p = r({
10
10
  initial: "closed",
11
11
  states: {
12
12
  closed: { on: { OPEN: "open" } },
13
13
  open: { on: { CLOSE: "closed" } }
14
14
  }
15
15
  });
16
- function ee(e) {
16
+ function ne(e) {
17
17
  try {
18
18
  let t = new Intl.Locale(e).weekInfo;
19
19
  if (t) return t.firstDay % 7;
20
20
  } catch {}
21
21
  return 1;
22
22
  }
23
- function g(e, t, n) {
23
+ function m(e, t, n) {
24
24
  let r = new Date(Date.UTC(e, t, 1)), i = new Date(Date.UTC(e, t + 1, 0)), a = (r.getUTCDay() - n + 7) % 7, o = [];
25
25
  for (let e = 0; e < a; e++) o.push(null);
26
26
  for (let n = 1; n <= i.getUTCDate(); n++) o.push(new Date(Date.UTC(e, t, n)));
@@ -29,170 +29,170 @@ function g(e, t, n) {
29
29
  for (let e = 0; e < o.length; e += 7) s.push(o.slice(e, e + 7));
30
30
  return s;
31
31
  }
32
- function _(e, t) {
32
+ function h(e, t) {
33
33
  return new Intl.DateTimeFormat(t).format(e);
34
34
  }
35
- function v(e) {
35
+ function g(e) {
36
36
  return e.toISOString().slice(0, 10);
37
37
  }
38
- function y(e) {
38
+ function _(e) {
39
39
  let [t, n, r] = e.split("-").map(Number);
40
40
  return new Date(Date.UTC(t, n - 1, r));
41
41
  }
42
- function b({ value: r, defaultValue: b, onChange: x, min: S, max: C, clearable: w = !1, label: T, hint: E, error: D, size: O = "md", disabled: k = !1, labels: A, className: j, id: M }) {
42
+ function v({ value: r, defaultValue: v, onValueChange: y, onChange: b, min: x, max: S, clearable: C = !1, label: w, hint: T, error: E, size: D = "md", disabled: O = !1, labels: k, className: re, id: A }) {
43
43
  s();
44
- let [N, P] = i(h), F = p(), I = M ?? `cascade-date-picker-${F}`, L = `${F}-grid`, R = l(), z = A?.placeholder ?? u(c.datePicker.placeholder), te = A?.previousMonth ?? u(c.datePicker.previousMonth), ne = A?.nextMonth ?? u(c.datePicker.nextMonth), B = A?.clear ?? u(c.datePicker.clear), V = /* @__PURE__ */ new Date(), H = v(V), U = a(r ?? b);
45
- r !== void 0 && (U.value = r);
46
- let W = a(U.value ? y(U.value).getUTCFullYear() : V.getUTCFullYear()), G = a(U.value ? y(U.value).getUTCMonth() : V.getUTCMonth()), K = a(U.value), q = m(null);
44
+ let [j, M] = i(p), N = f(), P = A ?? `cascade-date-picker-${N}`, F = `${N}-grid`, I = ee(), ie = k?.placeholder ?? l(c.datePicker.placeholder), ae = k?.previousMonth ?? l(c.datePicker.previousMonth), L = k?.nextMonth ?? l(c.datePicker.nextMonth), R = k?.clear ?? l(c.datePicker.clear), z = /* @__PURE__ */ new Date(), B = g(z), V = a(r ?? v);
45
+ r !== void 0 && (V.value = r);
46
+ let H = a(V.value ? _(V.value).getUTCFullYear() : z.getUTCFullYear()), U = a(V.value ? _(V.value).getUTCMonth() : z.getUTCMonth()), W = a(V.value), G = te(null);
47
47
  o(() => {
48
- if (N.value !== "open") return;
48
+ if (j.value !== "open") return;
49
49
  let e = (e) => {
50
- q.current && !q.current.contains(e.target) && P("CLOSE");
50
+ G.current && !G.current.contains(e.target) && M("CLOSE");
51
51
  };
52
52
  return document.addEventListener("mousedown", e), () => document.removeEventListener("mousedown", e);
53
53
  });
54
- let J = () => {
55
- k || P("OPEN");
56
- }, Y = () => P("CLOSE"), X = (e) => {
57
- S && e < S || C && e > C || (r === void 0 && (U.value = e), x?.(e), Y());
58
- }, re = (e) => {
59
- e.stopPropagation(), r === void 0 && (U.value = void 0), x?.(void 0);
60
- }, ie = () => {
61
- G.value === 0 ? t(() => {
62
- W.value--, G.value = 11;
63
- }) : G.value--;
64
- }, ae = () => {
65
- G.value === 11 ? t(() => {
66
- W.value++, G.value = 0;
67
- }) : G.value++;
68
- }, Z = ee(R), oe = g(W.value, G.value, Z), se = new Intl.DateTimeFormat(R, { weekday: "short" }), ce = Array.from({ length: 7 }, (e, t) => {
69
- let n = new Date(Date.UTC(2024, 0, 7 + Z + t));
70
- return se.format(n);
71
- }), Q = new Intl.DateTimeFormat(R, {
54
+ let K = () => {
55
+ O || M("OPEN");
56
+ }, q = () => M("CLOSE"), J = y ?? b, Y = (e) => {
57
+ x && e < x || S && e > S || (r === void 0 && (V.value = e), J?.(e), q());
58
+ }, oe = (e) => {
59
+ e.stopPropagation(), r === void 0 && (V.value = void 0), J?.(void 0);
60
+ }, se = () => {
61
+ U.value === 0 ? t(() => {
62
+ H.value--, U.value = 11;
63
+ }) : U.value--;
64
+ }, ce = () => {
65
+ U.value === 11 ? t(() => {
66
+ H.value++, U.value = 0;
67
+ }) : U.value++;
68
+ }, X = ne(I), Z = m(H.value, U.value, X), le = new Intl.DateTimeFormat(I, { weekday: "short" }), ue = Array.from({ length: 7 }, (e, t) => {
69
+ let n = new Date(Date.UTC(2024, 0, 7 + X + t));
70
+ return le.format(n);
71
+ }), Q = new Intl.DateTimeFormat(I, {
72
72
  month: "long",
73
73
  year: "numeric"
74
- }).format(new Date(Date.UTC(W.value, G.value, 1))), le = (e) => {
75
- let n = K.value;
74
+ }).format(new Date(Date.UTC(H.value, U.value, 1))), de = (e) => {
75
+ let n = W.value;
76
76
  if (!n) return;
77
- let r = y(n), i;
77
+ let r = _(n), i;
78
78
  if (e.key === "ArrowRight") i = new Date(Date.UTC(r.getUTCFullYear(), r.getUTCMonth(), r.getUTCDate() + 1));
79
79
  else if (e.key === "ArrowLeft") i = new Date(Date.UTC(r.getUTCFullYear(), r.getUTCMonth(), r.getUTCDate() - 1));
80
80
  else if (e.key === "ArrowDown") i = new Date(Date.UTC(r.getUTCFullYear(), r.getUTCMonth(), r.getUTCDate() + 7));
81
81
  else if (e.key === "ArrowUp") i = new Date(Date.UTC(r.getUTCFullYear(), r.getUTCMonth(), r.getUTCDate() - 7));
82
82
  else if (e.key === "Enter" || e.key === " ") {
83
- e.preventDefault(), X(n);
83
+ e.preventDefault(), Y(n);
84
84
  return;
85
85
  } else if (e.key === "Escape") {
86
- Y();
86
+ q();
87
87
  return;
88
88
  } else return;
89
89
  if (e.preventDefault(), i) {
90
- let e = v(i);
91
- if (S && e < S || C && e > C) return;
92
- K.value = e, t(() => {
93
- W.value = i.getUTCFullYear(), G.value = i.getUTCMonth();
90
+ let e = g(i);
91
+ if (x && e < x || S && e > S) return;
92
+ W.value = e, t(() => {
93
+ H.value = i.getUTCFullYear(), U.value = i.getUTCMonth();
94
94
  });
95
95
  }
96
- }, $ = U.value ? _(y(U.value), R) : "";
97
- return /* @__PURE__ */ f("div", {
98
- ref: q,
99
- className: n(e.wrapper, j),
100
- "data-state": D ? "error" : N.value,
101
- "data-size": O,
96
+ }, $ = V.value ? h(_(V.value), I) : "";
97
+ return /* @__PURE__ */ d("div", {
98
+ ref: G,
99
+ className: n(e.wrapper, re),
100
+ "data-state": E ? "error" : j.value,
101
+ "data-size": D,
102
102
  children: [
103
- T && /* @__PURE__ */ d("label", {
103
+ w && /* @__PURE__ */ u("label", {
104
104
  className: e.label,
105
- htmlFor: I,
106
- children: T
105
+ htmlFor: P,
106
+ children: w
107
107
  }),
108
- /* @__PURE__ */ f("div", {
108
+ /* @__PURE__ */ d("div", {
109
109
  className: e.field,
110
- children: [/* @__PURE__ */ f("button", {
111
- id: I,
110
+ children: [/* @__PURE__ */ d("button", {
111
+ id: P,
112
112
  type: "button",
113
113
  role: "combobox",
114
- "aria-expanded": N.value === "open",
115
- "aria-controls": L,
114
+ "aria-expanded": j.value === "open",
115
+ "aria-controls": F,
116
116
  "aria-haspopup": "dialog",
117
- "aria-invalid": D ? !0 : void 0,
118
- "aria-describedby": D ? `${F}-error` : E ? `${F}-hint` : void 0,
117
+ "aria-invalid": E ? !0 : void 0,
118
+ "aria-describedby": E ? `${N}-error` : T ? `${N}-hint` : void 0,
119
119
  className: e.trigger,
120
- disabled: k,
121
- onClick: N.value === "open" ? Y : J,
122
- children: [/* @__PURE__ */ d("span", {
120
+ disabled: O,
121
+ onClick: j.value === "open" ? q : K,
122
+ children: [/* @__PURE__ */ u("span", {
123
123
  className: n(e.value, $ ? void 0 : e.placeholder),
124
- children: $ || z
125
- }), /* @__PURE__ */ d("span", {
124
+ children: $ || ie
125
+ }), /* @__PURE__ */ u("span", {
126
126
  className: e.icon,
127
127
  "aria-hidden": "true",
128
128
  children: "📅"
129
129
  })]
130
- }), w && U.value !== void 0 && /* @__PURE__ */ d("button", {
130
+ }), C && V.value !== void 0 && /* @__PURE__ */ u("button", {
131
131
  type: "button",
132
132
  className: e.clear,
133
- "aria-label": B,
134
- onClick: re,
133
+ "aria-label": R,
134
+ onClick: oe,
135
135
  children: "✕"
136
136
  })]
137
137
  }),
138
- /* @__PURE__ */ f("div", {
139
- id: L,
138
+ /* @__PURE__ */ d("div", {
139
+ id: F,
140
140
  role: "dialog",
141
141
  "aria-label": Q,
142
142
  className: e.calendar,
143
- "data-state": N.value,
144
- onKeyDown: le,
145
- children: [/* @__PURE__ */ f("div", {
143
+ "data-state": j.value,
144
+ onKeyDown: de,
145
+ children: [/* @__PURE__ */ d("div", {
146
146
  className: e.header,
147
147
  children: [
148
- /* @__PURE__ */ d("button", {
148
+ /* @__PURE__ */ u("button", {
149
149
  type: "button",
150
150
  className: e.navButton,
151
- "aria-label": te,
152
- onClick: ie,
151
+ "aria-label": ae,
152
+ onClick: se,
153
153
  children: "‹"
154
154
  }),
155
- /* @__PURE__ */ d("span", {
155
+ /* @__PURE__ */ u("span", {
156
156
  className: e.monthLabel,
157
157
  "aria-live": "polite",
158
158
  children: Q
159
159
  }),
160
- /* @__PURE__ */ d("button", {
160
+ /* @__PURE__ */ u("button", {
161
161
  type: "button",
162
162
  className: e.navButton,
163
- "aria-label": ne,
164
- onClick: ae,
163
+ "aria-label": L,
164
+ onClick: ce,
165
165
  children: "›"
166
166
  })
167
167
  ]
168
- }), /* @__PURE__ */ f("table", {
168
+ }), /* @__PURE__ */ d("table", {
169
169
  role: "grid",
170
170
  className: e.grid,
171
- children: [/* @__PURE__ */ d("thead", { children: /* @__PURE__ */ d("tr", { children: ce.map((t) => /* @__PURE__ */ d("th", {
171
+ children: [/* @__PURE__ */ u("thead", { children: /* @__PURE__ */ u("tr", { children: ue.map((t) => /* @__PURE__ */ u("th", {
172
172
  className: e.weekday,
173
173
  abbr: t,
174
174
  scope: "col",
175
175
  children: t
176
- }, t)) }) }), /* @__PURE__ */ d("tbody", { children: oe.map((t, n) => /* @__PURE__ */ d("tr", { children: t.map((t, n) => {
177
- if (!t) return /* @__PURE__ */ d("td", { className: e.empty }, n);
178
- let r = v(t), i = r === U.value, a = r === H, o = r === K.value, s = S !== void 0 && r < S || C !== void 0 && r > C;
179
- return /* @__PURE__ */ d("td", {
176
+ }, t)) }) }), /* @__PURE__ */ u("tbody", { children: Z.map((t, n) => /* @__PURE__ */ u("tr", { children: t.map((t, n) => {
177
+ if (!t) return /* @__PURE__ */ u("td", { className: e.empty }, n);
178
+ let r = g(t), i = r === V.value, a = r === B, o = r === W.value, s = x !== void 0 && r < x || S !== void 0 && r > S;
179
+ return /* @__PURE__ */ u("td", {
180
180
  className: e.cell,
181
- children: /* @__PURE__ */ d("button", {
181
+ children: /* @__PURE__ */ u("button", {
182
182
  type: "button",
183
183
  className: e.day,
184
184
  tabIndex: o ? 0 : -1,
185
185
  "aria-pressed": i,
186
- "aria-label": _(t, R),
186
+ "aria-label": h(t, I),
187
187
  "aria-current": a ? "date" : void 0,
188
188
  "aria-disabled": s || void 0,
189
189
  "data-selected": i || void 0,
190
190
  "data-today": a || void 0,
191
191
  onClick: () => {
192
- s || X(r);
192
+ s || Y(r);
193
193
  },
194
194
  onFocus: () => {
195
- K.value = r;
195
+ W.value = r;
196
196
  },
197
197
  children: t.getUTCDate()
198
198
  })
@@ -200,19 +200,19 @@ function b({ value: r, defaultValue: b, onChange: x, min: S, max: C, clearable:
200
200
  }) }, n)) })]
201
201
  })]
202
202
  }),
203
- D && /* @__PURE__ */ d("span", {
204
- id: `${F}-error`,
203
+ E && /* @__PURE__ */ u("span", {
204
+ id: `${N}-error`,
205
205
  className: e.error,
206
206
  role: "alert",
207
- children: D
207
+ children: E
208
208
  }),
209
- !D && E && /* @__PURE__ */ d("span", {
210
- id: `${F}-hint`,
209
+ !E && T && /* @__PURE__ */ u("span", {
210
+ id: `${N}-hint`,
211
211
  className: e.hint,
212
- children: E
212
+ children: T
213
213
  })
214
214
  ]
215
215
  });
216
216
  }
217
217
  //#endregion
218
- export { b as DatePicker };
218
+ export { v as DatePicker };
@@ -4,28 +4,28 @@ import e from "./filter.module.js";
4
4
  import { useControllableSignal as t, useSignals as n } from "@cascivo/core";
5
5
  import { jsx as r } from "react/jsx-runtime";
6
6
  //#region ../components/src/filter/filter.tsx
7
- function i({ options: i, value: a, defaultValue: o = [], onChange: s, multi: c = !1, variant: l = "pill", className: u, ...d }) {
7
+ function i({ options: i, value: a, defaultValue: o = [], onValueChange: s, onChange: c, multi: l = !1, variant: u = "pill", className: d, ...f }) {
8
8
  n();
9
- let [f, p] = t({
9
+ let [p, m] = t({
10
10
  value: a,
11
11
  defaultValue: o,
12
- onChange: s
12
+ onChange: s ?? c
13
13
  });
14
- function m(e) {
15
- let t = f.value, n;
16
- n = c ? t.includes(e) ? t.filter((t) => t !== e) : [...t, e] : t.includes(e) ? [] : [e], p(n);
14
+ function h(e) {
15
+ let t = p.value, n;
16
+ n = l ? t.includes(e) ? t.filter((t) => t !== e) : [...t, e] : t.includes(e) ? [] : [e], m(n);
17
17
  }
18
18
  return /* @__PURE__ */ r("div", {
19
19
  role: "group",
20
- className: [e.filter, u].filter(Boolean).join(" "),
21
- "data-variant": l,
22
- ...d,
20
+ className: [e.filter, d].filter(Boolean).join(" "),
21
+ "data-variant": u,
22
+ ...f,
23
23
  children: i.map((t) => /* @__PURE__ */ r("button", {
24
24
  type: "button",
25
25
  className: e.item,
26
- "data-selected": f.value.includes(t.value) || void 0,
27
- onClick: () => m(t.value),
28
- "aria-pressed": f.value.includes(t.value),
26
+ "data-selected": p.value.includes(t.value) || void 0,
27
+ onClick: () => h(t.value),
28
+ "aria-pressed": p.value.includes(t.value),
29
29
  children: t.label
30
30
  }, t.value))
31
31
  });