@krosoft/react 0.0.293 → 0.0.294

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 (29) hide show
  1. package/dist/{GenericForm-BdKwapAz.js → GenericForm-D7ni-5-4.js} +1 -1
  2. package/dist/MultiSelect-CZ4hye2w.js +147 -0
  3. package/dist/SearchInput-nr0CrMLK.js +316 -0
  4. package/dist/components/core/dialogs/index.js +1 -1
  5. package/dist/components/core/filters/FilterField.d.ts.map +1 -1
  6. package/dist/components/core/filters/FilterPills.d.ts +1 -1
  7. package/dist/components/core/filters/TableFilter.d.ts.map +1 -1
  8. package/dist/components/core/filters/index.d.ts +0 -1
  9. package/dist/components/core/filters/index.d.ts.map +1 -1
  10. package/dist/components/core/filters/index.js +138 -255
  11. package/dist/components/core/forms/index.js +1 -1
  12. package/dist/components/core/index.js +15 -15
  13. package/dist/components/core/inputs/MultiSelect.d.ts +15 -7
  14. package/dist/components/core/inputs/MultiSelect.d.ts.map +1 -1
  15. package/dist/components/core/inputs/SingleSelect.d.ts +30 -0
  16. package/dist/components/core/inputs/SingleSelect.d.ts.map +1 -0
  17. package/dist/components/core/inputs/index.d.ts +2 -2
  18. package/dist/components/core/inputs/index.d.ts.map +1 -1
  19. package/dist/components/core/inputs/index.js +4 -4
  20. package/dist/components/index.js +15 -15
  21. package/dist/{dialogs-BxyPBIc6.js → dialogs-BjqvZvax.js} +1 -1
  22. package/dist/{inputs-CUNf48Vk.js → inputs-BMCt-VqZ.js} +2 -2
  23. package/package.json +1 -1
  24. package/dist/MultiSelect-O4JP5fRO.js +0 -129
  25. package/dist/SearchInput-BSIjKB_9.js +0 -259
  26. package/dist/components/core/filters/SearchableFilterPill.d.ts +0 -17
  27. package/dist/components/core/filters/SearchableFilterPill.d.ts.map +0 -1
  28. package/dist/components/core/inputs/SearchableSelect.d.ts +0 -28
  29. package/dist/components/core/inputs/SearchableSelect.d.ts.map +0 -1
@@ -1,70 +1,69 @@
1
1
  import { t as e } from "../../../tailwind.helper-CJaRYBmL.js";
2
2
  import { t } from "../../../i18n-d2p0RJo9.js";
3
- import { At as n, Pn as r, bn as i } from "../../../ui-D8Pg34YW.js";
4
- import { a, s as o } from "../../../tooltip-BmZ9Bfou.js";
5
- import { a as s, g as c, h as l, l as u, m as d, o as f, p, r as m, t as h, u as g } from "../../../sheet-DQTOen4V.js";
6
- import { i as _, l as v, n as y, t as b, u as x } from "../../../select-DmLScQKX.js";
7
- import { t as S } from "../../../MultiSelect-O4JP5fRO.js";
8
- import { i as C, n as w, r as T, t as E } from "../../../SearchInput-BSIjKB_9.js";
9
- import { useEffect as D, useMemo as O, useState as k } from "react";
10
- import { jsx as A, jsxs as j } from "react/jsx-runtime";
11
- import { getLocale as M } from "@krosoft/core/helpers";
12
- import { ChevronDown as N, Filter as P, Search as F, XIcon as I } from "lucide-react";
3
+ import { At as n, Pn as r } from "../../../ui-D8Pg34YW.js";
4
+ import { s as i } from "../../../tooltip-BmZ9Bfou.js";
5
+ import { a, g as o, l as s, o as c, r as l, t as u, u as d } from "../../../sheet-DQTOen4V.js";
6
+ import { t as f } from "../../../MultiSelect-CZ4hye2w.js";
7
+ import { i as p, n as m, r as h, t as g } from "../../../SearchInput-nr0CrMLK.js";
8
+ import { useEffect as _, useMemo as v, useState as y } from "react";
9
+ import { jsx as b, jsxs as x } from "react/jsx-runtime";
10
+ import { getLocale as S } from "@krosoft/core/helpers";
11
+ import { Filter as C, XIcon as w } from "lucide-react";
13
12
  //#region src/components/core/filters/ActiveFilters.tsx
14
- var L = (e, t, n, r = {}) => {
15
- if (t instanceof Date) return t.toLocaleDateString(M());
13
+ var T = (e, t, n, r = {}) => {
14
+ if (t instanceof Date) return t.toLocaleDateString(S());
16
15
  let i = String(t), a = r[`${e}_${i}`];
17
16
  return a === void 0 ? e.includes("ok") || t === "true" || t === "false" ? n(t === "true" ? "filters.yes" : "filters.no") : i : a;
18
17
  };
19
- function R({ filters: e, onRemoveFilter: n, onClearAll: i, filterLabelKeys: a = {}, optionLabels: o = {} }) {
18
+ function E({ filters: e, onRemoveFilter: n, onClearAll: i, filterLabelKeys: a = {}, optionLabels: o = {} }) {
20
19
  let { t: s } = t(), c = Object.entries(e).filter(([e, t]) => !(t == null || t === "" || Array.isArray(t) && t.length === 0));
21
- return c.length === 0 ? null : /* @__PURE__ */ j("div", {
20
+ return c.length === 0 ? null : /* @__PURE__ */ x("div", {
22
21
  className: "flex flex-wrap items-center gap-2 mb-4",
23
22
  children: [
24
- /* @__PURE__ */ A("span", {
23
+ /* @__PURE__ */ b("span", {
25
24
  className: "text-sm text-muted-foreground font-medium",
26
25
  children: s("filters.active")
27
26
  }),
28
27
  c.flatMap(([e, t]) => {
29
28
  let i = a[e], c = i === void 0 ? e : s(i);
30
29
  if (Array.isArray(t)) return t.map((t) => {
31
- let i = L(e, t, s, o);
32
- return /* @__PURE__ */ j(r, {
30
+ let i = T(e, t, s, o);
31
+ return /* @__PURE__ */ x(r, {
33
32
  variant: "secondary",
34
33
  className: "flex items-center gap-1 px-3 py-1 bg-primary/10 text-primary border border-primary/20 hover:bg-primary/20",
35
34
  children: [
36
35
  c,
37
36
  ": ",
38
37
  i,
39
- /* @__PURE__ */ A("button", {
38
+ /* @__PURE__ */ b("button", {
40
39
  onClick: () => {
41
40
  n(e, t);
42
41
  },
43
42
  className: "ml-1 hover:bg-primary/20 rounded-full p-0.5",
44
- children: /* @__PURE__ */ A(I, { className: "size-4" })
43
+ children: /* @__PURE__ */ b(w, { className: "size-4" })
45
44
  })
46
45
  ]
47
46
  }, `${e}_${String(t)}`);
48
47
  });
49
- let l = L(e, t, s, o);
50
- return /* @__PURE__ */ j(r, {
48
+ let l = T(e, t, s, o);
49
+ return /* @__PURE__ */ x(r, {
51
50
  variant: "secondary",
52
51
  className: "flex items-center gap-1 px-3 py-1 bg-primary/10 text-primary border border-primary/20 hover:bg-primary/20",
53
52
  children: [
54
53
  c,
55
54
  ": ",
56
55
  l,
57
- /* @__PURE__ */ A("button", {
56
+ /* @__PURE__ */ b("button", {
58
57
  onClick: () => {
59
58
  n(e);
60
59
  },
61
60
  className: "ml-1 hover:bg-primary/20 rounded-full p-0.5",
62
- children: /* @__PURE__ */ A(I, { className: "size-4" })
61
+ children: /* @__PURE__ */ b(w, { className: "size-4" })
63
62
  })
64
63
  ]
65
64
  }, e);
66
65
  }),
67
- c.length > 0 && /* @__PURE__ */ A("button", {
66
+ c.length > 0 && /* @__PURE__ */ b("button", {
68
67
  onClick: i,
69
68
  className: "text-xs text-destructive hover:text-destructive/80 transition-colors font-medium ml-auto",
70
69
  children: s("filters.clearAll")
@@ -74,153 +73,144 @@ function R({ filters: e, onRemoveFilter: n, onClearAll: i, filterLabelKeys: a =
74
73
  }
75
74
  //#endregion
76
75
  //#region src/components/core/filters/FilterField.tsx
77
- var z = ({ field: n, value: r, onChange: i, onToggleMultiSelect: a }) => {
78
- let { t: o } = t();
79
- switch (n.type) {
80
- case "text": return /* @__PURE__ */ A(c, {
81
- placeholder: n.placeholder,
82
- value: r ?? "",
76
+ var D = ({ field: e, value: n, onChange: r, onToggleMultiSelect: i }) => {
77
+ let { t: a } = t();
78
+ switch (e.type) {
79
+ case "text": return /* @__PURE__ */ b(o, {
80
+ placeholder: e.placeholder,
81
+ value: n ?? "",
83
82
  onChange: (e) => {
84
- i(e.target.value);
83
+ r(e.target.value);
85
84
  }
86
85
  });
87
- case "number": return /* @__PURE__ */ A(c, {
86
+ case "number": return /* @__PURE__ */ b(o, {
88
87
  type: "number",
89
- placeholder: n.placeholder,
90
- value: r ?? "",
88
+ placeholder: e.placeholder,
89
+ value: n ?? "",
91
90
  onChange: (e) => {
92
- i(e.target.value);
91
+ r(e.target.value);
93
92
  },
94
- min: n.min,
95
- max: n.max
93
+ min: e.min,
94
+ max: e.max
96
95
  });
97
- case "select": return n.searchable === !0 ? /* @__PURE__ */ A(w, {
98
- options: n.options ?? [],
99
- value: r,
100
- onChange: i,
101
- placeholder: n.placeholder,
102
- searchPlaceholder: n.searchPlaceholder
103
- }) : /* @__PURE__ */ j(b, {
104
- value: r ?? "",
105
- onValueChange: i,
106
- children: [/* @__PURE__ */ A(v, {
107
- className: e((r === void 0 || r === "") && "text-muted-foreground"),
108
- children: /* @__PURE__ */ A(x, { placeholder: n.placeholder })
109
- }), /* @__PURE__ */ A(y, { children: n.options?.map((e) => /* @__PURE__ */ A(_, {
110
- value: e.value,
111
- children: e.label
112
- }, e.value)) })]
96
+ case "select": return /* @__PURE__ */ b(m, {
97
+ options: e.options ?? [],
98
+ value: n,
99
+ onChange: r,
100
+ searchable: e.searchable === !0,
101
+ placeholder: e.placeholder,
102
+ searchPlaceholder: e.searchPlaceholder
113
103
  });
114
- case "date": return /* @__PURE__ */ A(C, {
115
- date: r,
116
- onDateChange: i,
117
- placeholder: n.placeholder ?? o("date.pickDate")
104
+ case "date": return /* @__PURE__ */ b(p, {
105
+ date: n,
106
+ onDateChange: r,
107
+ placeholder: e.placeholder ?? a("date.pickDate")
118
108
  });
119
- case "date-range": return /* @__PURE__ */ A(T, {
120
- value: r,
121
- onChange: i,
122
- placeholder: n.placeholder
109
+ case "date-range": return /* @__PURE__ */ b(h, {
110
+ value: n,
111
+ onChange: r,
112
+ placeholder: e.placeholder
123
113
  });
124
- case "multi-select": return /* @__PURE__ */ A(S, {
125
- options: n.options ?? [],
126
- selected: r ?? [],
127
- onToggle: a,
114
+ case "multi-select": return /* @__PURE__ */ b(f, {
115
+ options: e.options ?? [],
116
+ selected: n ?? [],
117
+ onToggle: i,
128
118
  onClear: () => {
129
- i([]);
119
+ r([]);
130
120
  },
131
- onSelectAll: i,
132
- placeholder: n.placeholder,
133
- searchable: n.searchable,
134
- searchPlaceholder: n.searchPlaceholder
121
+ onSelectAll: r,
122
+ placeholder: e.placeholder,
123
+ searchable: e.searchable,
124
+ searchPlaceholder: e.searchPlaceholder
135
125
  });
136
126
  default: return null;
137
127
  }
138
- }, B = (e) => !(e == null || e === "" || Array.isArray(e) && e.length === 0);
139
- function V({ sections: e, filters: r, onFiltersChange: i, buttonText: a, sheetTitle: c }) {
140
- let { t: l } = t(), [d, p] = k(!1), [_, v] = k(r);
141
- D(() => {
142
- v(r);
143
- }, [r, d]);
144
- let y = (e, t) => {
145
- v((n) => ({
128
+ }, O = (e) => !(e == null || e === "" || Array.isArray(e) && e.length === 0);
129
+ function k({ sections: e, filters: r, onFiltersChange: o, buttonText: f, sheetTitle: p }) {
130
+ let { t: m } = t(), [h, g] = y(!1), [S, w] = y(r);
131
+ _(() => {
132
+ w(r);
133
+ }, [r, h]);
134
+ let T = (e, t) => {
135
+ w((n) => ({
146
136
  ...n,
147
137
  [e]: t
148
138
  }));
149
- }, b = (e, t) => {
150
- let n = _[e], r = Array.isArray(n) ? n : [], i = r.includes(t) ? r.filter((e) => e !== t) : [...r, t];
151
- y(e, i);
152
- }, x = () => {
153
- i(_), p(!1);
154
- }, S = () => {
155
- v({}), i({}), p(!1);
156
- }, C = O(() => {
139
+ }, E = (e, t) => {
140
+ let n = S[e], r = Array.isArray(n) ? n : [], i = r.includes(t) ? r.filter((e) => e !== t) : [...r, t];
141
+ T(e, i);
142
+ }, k = () => {
143
+ o(S), g(!1);
144
+ }, A = () => {
145
+ w({}), o({}), g(!1);
146
+ }, j = v(() => {
157
147
  let t = new Set(e.flatMap((e) => e.filters.map((e) => e.key)));
158
- return Object.entries(r).filter(([e, n]) => t.has(e) && B(n)).length;
148
+ return Object.entries(r).filter(([e, n]) => t.has(e) && O(n)).length;
159
149
  }, [e, r]);
160
- return /* @__PURE__ */ j(h, {
161
- open: d,
162
- onOpenChange: p,
163
- children: [/* @__PURE__ */ A(g, {
150
+ return /* @__PURE__ */ x(u, {
151
+ open: h,
152
+ onOpenChange: g,
153
+ children: [/* @__PURE__ */ b(d, {
164
154
  asChild: !0,
165
- children: /* @__PURE__ */ j(o, {
155
+ children: /* @__PURE__ */ x(i, {
166
156
  variant: "outline",
167
157
  className: "gap-2",
168
158
  children: [
169
- /* @__PURE__ */ A(P, { className: "size-4 shrink-0" }),
170
- a ?? l("filters.more"),
171
- C > 0 && /* @__PURE__ */ A("span", {
159
+ /* @__PURE__ */ b(C, { className: "size-4 shrink-0" }),
160
+ f ?? m("filters.more"),
161
+ j > 0 && /* @__PURE__ */ b("span", {
172
162
  className: "ml-1 flex h-5 min-w-5 items-center justify-center rounded-full bg-primary px-1.5 text-xs font-semibold text-primary-foreground",
173
- children: C
163
+ children: j
174
164
  })
175
165
  ]
176
166
  })
177
- }), /* @__PURE__ */ j(m, {
167
+ }), /* @__PURE__ */ x(l, {
178
168
  side: "right",
179
169
  className: "w-[400px] sm:w-[500px] flex flex-col p-0",
180
170
  children: [
181
- /* @__PURE__ */ A(f, {
171
+ /* @__PURE__ */ b(c, {
182
172
  className: "p-6 pb-0",
183
- children: /* @__PURE__ */ A(u, { children: c ?? l("filters.advanced") })
173
+ children: /* @__PURE__ */ b(s, { children: p ?? m("filters.advanced") })
184
174
  }),
185
- /* @__PURE__ */ A("div", {
175
+ /* @__PURE__ */ b("div", {
186
176
  className: "flex-1 overflow-y-auto p-6 pt-6",
187
- children: /* @__PURE__ */ A("div", {
177
+ children: /* @__PURE__ */ b("div", {
188
178
  className: "space-y-6",
189
- children: e.map((e, t) => /* @__PURE__ */ j("div", {
179
+ children: e.map((e, t) => /* @__PURE__ */ x("div", {
190
180
  className: "space-y-4",
191
- children: [/* @__PURE__ */ A("h3", {
181
+ children: [/* @__PURE__ */ b("h3", {
192
182
  className: "font-semibold text-sm text-foreground border-b pb-2",
193
- children: l(e.titleKey)
194
- }), e.filters.map((e) => /* @__PURE__ */ j("div", {
183
+ children: m(e.titleKey)
184
+ }), e.filters.map((e) => /* @__PURE__ */ x("div", {
195
185
  className: "space-y-2",
196
- children: [/* @__PURE__ */ A(n, {
186
+ children: [/* @__PURE__ */ b(n, {
197
187
  htmlFor: e.key,
198
- children: l(e.labelKey)
199
- }), /* @__PURE__ */ A(z, {
188
+ children: m(e.labelKey)
189
+ }), /* @__PURE__ */ b(D, {
200
190
  field: e,
201
- value: _[e.key],
191
+ value: S[e.key],
202
192
  onChange: (t) => {
203
- y(e.key, t);
193
+ T(e.key, t);
204
194
  },
205
195
  onToggleMultiSelect: (t) => {
206
- b(e.key, t);
196
+ E(e.key, t);
207
197
  }
208
198
  })]
209
199
  }, e.key))]
210
200
  }, t))
211
201
  })
212
202
  }),
213
- /* @__PURE__ */ j(s, {
203
+ /* @__PURE__ */ x(a, {
214
204
  className: "gap-2 p-6 border-t bg-background",
215
- children: [/* @__PURE__ */ A(o, {
205
+ children: [/* @__PURE__ */ b(i, {
216
206
  variant: "outline",
217
207
  className: "flex-1",
218
- onClick: S,
219
- children: l("filters.clear")
220
- }), /* @__PURE__ */ A(o, {
208
+ onClick: A,
209
+ children: m("filters.clear")
210
+ }), /* @__PURE__ */ b(i, {
221
211
  className: "flex-1",
222
- onClick: x,
223
- children: l("filters.apply")
212
+ onClick: k,
213
+ children: m("filters.apply")
224
214
  })]
225
215
  })
226
216
  ]
@@ -229,28 +219,28 @@ function V({ sections: e, filters: r, onFiltersChange: i, buttonText: a, sheetTi
229
219
  }
230
220
  //#endregion
231
221
  //#region src/components/core/filters/FilterPillsGroup.tsx
232
- var H = {
222
+ var A = {
233
223
  solid: "border-foreground bg-foreground text-background",
234
224
  outline: "border-primary bg-primary/10 text-primary font-medium"
235
225
  };
236
- function U(t, n, r) {
237
- return r === void 0 ? t ? H[n] : "border-border bg-background text-muted-foreground hover:text-foreground hover:border-foreground/40" : e(r, t ? "font-semibold" : "opacity-60 hover:opacity-100");
226
+ function j(t, n, r) {
227
+ return r === void 0 ? t ? A[n] : "border-border bg-background text-muted-foreground hover:text-foreground hover:border-foreground/40" : e(r, t ? "font-semibold" : "opacity-60 hover:opacity-100");
238
228
  }
239
- function W({ options: t, values: n, onToggle: r, variant: i = "solid" }) {
240
- return /* @__PURE__ */ A("div", {
229
+ function M({ options: t, values: n, onToggle: r, variant: i = "solid" }) {
230
+ return /* @__PURE__ */ b("div", {
241
231
  className: "flex flex-wrap gap-1.5",
242
232
  children: t.map(({ value: t, label: a, count: o, icon: s, className: c }) => {
243
- let l = U(n.includes(t), i, c);
244
- return /* @__PURE__ */ j("button", {
233
+ let l = j(n.includes(t), i, c);
234
+ return /* @__PURE__ */ x("button", {
245
235
  onClick: () => {
246
236
  r(t);
247
237
  },
248
238
  className: e("inline-flex items-center gap-1 text-xs px-2.5 py-1 rounded-control border transition-colors", l),
249
239
  children: [
250
- s && /* @__PURE__ */ A(s, { className: "size-3 shrink-0" }),
240
+ s && /* @__PURE__ */ b(s, { className: "size-3 shrink-0" }),
251
241
  a,
252
242
  " ",
253
- o !== void 0 && /* @__PURE__ */ j("span", {
243
+ o !== void 0 && /* @__PURE__ */ x("span", {
254
244
  className: "opacity-60",
255
245
  children: [
256
246
  "(",
@@ -265,8 +255,8 @@ function W({ options: t, values: n, onToggle: r, variant: i = "solid" }) {
265
255
  }
266
256
  //#endregion
267
257
  //#region src/components/core/filters/FilterPills.tsx
268
- function G({ options: e, value: t, onChange: n, variant: r = "solid" }) {
269
- return /* @__PURE__ */ A(W, {
258
+ function N({ options: e, value: t, onChange: n, variant: r = "solid" }) {
259
+ return /* @__PURE__ */ b(M, {
270
260
  options: e,
271
261
  values: [t],
272
262
  onToggle: n,
@@ -274,128 +264,20 @@ function G({ options: e, value: t, onChange: n, variant: r = "solid" }) {
274
264
  });
275
265
  }
276
266
  //#endregion
277
- //#region src/components/core/filters/SearchableFilterPill.tsx
278
- function K({ labelKey: n, options: r, selected: o, onToggle: s, onClear: c, onSelectAll: u, searchable: f = !1, searchPlaceholder: m, className: h = "w-full md:w-[180px]" }) {
279
- let { t: g } = t(), [_, v] = k(""), y = o.length > 0, b = O(() => _ === "" ? r : r.filter((e) => e.label.toLowerCase().includes(_.toLowerCase())), [r, _]), x = O(() => b.length !== 0 && b.every((e) => o.includes(e.value)), [b, o]);
280
- return /* @__PURE__ */ j(p, {
281
- onOpenChange: () => {
282
- v("");
283
- },
284
- children: [/* @__PURE__ */ A(l, {
285
- asChild: !0,
286
- children: /* @__PURE__ */ j("button", {
287
- className: e(a, "inline-flex items-center justify-between gap-1.5 whitespace-nowrap transition-colors", y ? "border-primary bg-primary/10 text-primary font-medium" : "hover:bg-muted", h),
288
- children: [/* @__PURE__ */ A("span", {
289
- className: "truncate",
290
- children: g(n)
291
- }), /* @__PURE__ */ j("div", {
292
- className: "flex shrink-0 items-center gap-1.5",
293
- children: [o.length > 0 && /* @__PURE__ */ A("span", {
294
- className: "flex h-4 min-w-[16px] items-center justify-center rounded-full bg-primary px-1 text-[10px] font-bold text-primary-foreground",
295
- children: o.length
296
- }), /* @__PURE__ */ A(N, { className: "size-3.5 opacity-60" })]
297
- })]
298
- })
299
- }), /* @__PURE__ */ j(d, {
300
- className: "w-72 max-w-[var(--radix-popover-content-available-width)] p-0",
301
- align: "start",
302
- children: [
303
- f ? /* @__PURE__ */ A("div", {
304
- className: "border-b border-border p-2",
305
- children: /* @__PURE__ */ j("div", {
306
- className: "relative",
307
- children: [/* @__PURE__ */ A(F, { className: "absolute left-2 top-1/2 h-3.5 w-3.5 -translate-y-1/2 text-muted-foreground" }), /* @__PURE__ */ A("input", {
308
- className: "w-full rounded-control bg-muted/50 py-1.5 pl-7 pr-2 text-sm text-foreground placeholder:text-muted-foreground outline-none focus:ring-1 focus:ring-ring",
309
- placeholder: m ?? g("search.placeholder"),
310
- value: _,
311
- onChange: (e) => {
312
- v(e.target.value);
313
- },
314
- autoFocus: !0
315
- })]
316
- })
317
- }) : null,
318
- /* @__PURE__ */ j("div", {
319
- className: "flex flex-col gap-0.5 max-h-56 overflow-y-auto overflow-x-hidden p-1.5",
320
- children: [b.length === 0 && /* @__PURE__ */ A("p", {
321
- className: "px-2 py-3 text-center text-xs text-muted-foreground",
322
- children: g("states.noResult")
323
- }), b.map((e) => /* @__PURE__ */ j("label", {
324
- className: "flex min-w-0 items-center gap-2.5 rounded-md px-2 py-2 text-sm hover:bg-muted cursor-pointer transition-colors",
325
- children: [
326
- /* @__PURE__ */ A("span", {
327
- className: "shrink-0",
328
- children: /* @__PURE__ */ A(i, {
329
- checked: o.includes(e.value),
330
- onCheckedChange: () => {
331
- s(e.value);
332
- }
333
- })
334
- }),
335
- e.color && /* @__PURE__ */ A("span", {
336
- className: "size-2.5 shrink-0 rounded-full",
337
- style: { backgroundColor: e.color }
338
- }),
339
- /* @__PURE__ */ A("span", {
340
- className: "min-w-0 flex-1 truncate",
341
- title: e.label,
342
- children: e.label
343
- })
344
- ]
345
- }, e.value))]
346
- }),
347
- b.length > 0 && /* @__PURE__ */ A("div", {
348
- className: "border-t border-border p-1.5",
349
- children: x ? /* @__PURE__ */ A("button", {
350
- onClick: () => {
351
- c === void 0 ? o.forEach((e) => {
352
- s(e);
353
- }) : c();
354
- },
355
- className: "w-full rounded-md px-2 py-1.5 text-xs text-muted-foreground hover:text-foreground hover:bg-muted transition-colors text-center",
356
- children: g("filters.deselectAll")
357
- }) : /* @__PURE__ */ A("button", {
358
- type: "button",
359
- onClick: () => {
360
- if (x) {
361
- if (u !== void 0) {
362
- let e = b.map((e) => e.value);
363
- u(o.filter((t) => !e.includes(t)));
364
- } else c === void 0 ? o.forEach((e) => {
365
- s(e);
366
- }) : c();
367
- } else if (u !== void 0) {
368
- let e = [...o];
369
- b.forEach((t) => {
370
- e.includes(t.value) || e.push(t.value);
371
- }), u(e);
372
- } else b.forEach((e) => {
373
- o.includes(e.value) || s(e.value);
374
- });
375
- },
376
- className: "w-full rounded-md px-2 py-1.5 text-xs text-muted-foreground hover:text-foreground hover:bg-muted transition-colors text-center",
377
- children: g("filters.selectAll")
378
- })
379
- })
380
- ]
381
- })]
382
- });
383
- }
384
- //#endregion
385
267
  //#region src/components/core/filters/TableFilter.tsx
386
- function q({ searchQuery: e, onSearchChange: n, searchPlaceholder: r, filters: i, onFiltersChange: a, sections: o, advancedButtonText: s, sheetTitle: c }) {
268
+ function P({ searchQuery: e, onSearchChange: n, searchPlaceholder: r, filters: i, onFiltersChange: a, sections: o, advancedButtonText: s, sheetTitle: c }) {
387
269
  let { t: l } = t(), u = (e, t) => {
388
270
  let n = i[e], r = Array.isArray(n) ? n : [], o = r.includes(t) ? r.filter((e) => e !== t) : [...r, t], s = { ...i };
389
271
  o.length === 0 ? delete s[e] : s[e] = o, a(s);
390
272
  }, d = (e) => {
391
273
  let t = { ...i };
392
274
  delete t[e], a(t);
393
- }, f = () => {
275
+ }, p = () => {
394
276
  a({});
395
- }, p = (e, t) => {
277
+ }, m = (e, t) => {
396
278
  let n = { ...i }, r = n[e];
397
279
  Array.isArray(r) ? t === void 0 ? delete n[e] : (n[e] = r.filter((e) => e !== t), Array.isArray(n[e]) && n[e].length === 0 && delete n[e]) : delete n[e], a(n);
398
- }, m = O(() => {
280
+ }, h = v(() => {
399
281
  let e = [];
400
282
  return o.forEach((t) => {
401
283
  t.filters.forEach((t) => {
@@ -408,14 +290,14 @@ function q({ searchQuery: e, onSearchChange: n, searchPlaceholder: r, filters: i
408
290
  });
409
291
  });
410
292
  }), e;
411
- }, [o]), h = O(() => {
293
+ }, [o]), _ = v(() => {
412
294
  let e = {};
413
295
  return o.forEach((t) => {
414
296
  t.filters.forEach((t) => {
415
297
  e[t.key] = t.badgeLabelKey ?? t.labelKey;
416
298
  });
417
299
  }), e;
418
- }, [o]), g = O(() => {
300
+ }, [o]), y = v(() => {
419
301
  let e = {};
420
302
  return o.forEach((t) => {
421
303
  t.filters.forEach((t) => {
@@ -425,20 +307,21 @@ function q({ searchQuery: e, onSearchChange: n, searchPlaceholder: r, filters: i
425
307
  });
426
308
  }), e;
427
309
  }, [o]);
428
- return /* @__PURE__ */ j("div", {
310
+ return /* @__PURE__ */ x("div", {
429
311
  className: "space-y-4 w-full",
430
- children: [/* @__PURE__ */ j("div", {
312
+ children: [/* @__PURE__ */ x("div", {
431
313
  className: "flex flex-wrap items-center gap-2 justify-between",
432
- children: [/* @__PURE__ */ j("div", {
314
+ children: [/* @__PURE__ */ x("div", {
433
315
  className: "flex flex-wrap items-center gap-2",
434
- children: [n === void 0 ? null : /* @__PURE__ */ A(E, {
316
+ children: [n === void 0 ? null : /* @__PURE__ */ b(g, {
435
317
  searchQuery: e,
436
318
  onSearch: n,
437
319
  onClear: () => {
438
320
  n("");
439
321
  },
440
322
  placeholder: r ?? l("search.placeholder")
441
- }), m.map((e) => /* @__PURE__ */ A(K, {
323
+ }), h.map((e) => /* @__PURE__ */ b(f, {
324
+ variant: "pill",
442
325
  labelKey: e.labelKey,
443
326
  options: e.options,
444
327
  selected: Array.isArray(i[e.key]) ? i[e.key] : [],
@@ -457,21 +340,21 @@ function q({ searchQuery: e, onSearchChange: n, searchPlaceholder: r, filters: i
457
340
  searchable: e.searchable,
458
341
  searchPlaceholder: e.searchPlaceholder
459
342
  }, e.key))]
460
- }), o.length > 0 && /* @__PURE__ */ A(V, {
343
+ }), o.length > 0 && /* @__PURE__ */ b(k, {
461
344
  sections: o,
462
345
  filters: i,
463
346
  onFiltersChange: a,
464
347
  buttonText: s,
465
348
  sheetTitle: c
466
349
  })]
467
- }), /* @__PURE__ */ A(R, {
350
+ }), /* @__PURE__ */ b(E, {
468
351
  filters: i,
469
- onRemoveFilter: p,
470
- onClearAll: f,
471
- filterLabelKeys: h,
472
- optionLabels: g
352
+ onRemoveFilter: m,
353
+ onClearAll: p,
354
+ filterLabelKeys: _,
355
+ optionLabels: y
473
356
  })]
474
357
  });
475
358
  }
476
359
  //#endregion
477
- export { R as ActiveFilters, V as AdvancedFilters, z as FilterField, G as FilterPills, W as FilterPillsGroup, K as SearchableFilterPill, q as TableFilter };
360
+ export { E as ActiveFilters, k as AdvancedFilters, D as FilterField, N as FilterPills, M as FilterPillsGroup, P as TableFilter };
@@ -1,2 +1,2 @@
1
- import { t as e } from "../../../GenericForm-BdKwapAz.js";
1
+ import { t as e } from "../../../GenericForm-D7ni-5-4.js";
2
2
  export { e as GenericForm };
@@ -2,23 +2,23 @@ import { a as e, i as t, n, o as r, r as i, t as a } from "../../cards-BBgGXmYa.
2
2
  import { I as o } from "../../ui-D8Pg34YW.js";
3
3
  import { A as s, D as c, E as l, F as u, M as d, N as f, O as p, P as m, j as h, k as g } from "../../sheet-DQTOen4V.js";
4
4
  import { a as _, c as v, i as y, n as b, o as x, r as S, s as C, t as w } from "../../charts-C7MWuqi9.js";
5
- import { n as T, r as E, t as D } from "../../dialogs-BxyPBIc6.js";
5
+ import { n as T, r as E, t as D } from "../../dialogs-BjqvZvax.js";
6
6
  import { t as O } from "../../ImageInput-BPNEywyf.js";
7
7
  import { t as k } from "../../AppActions-CpbkO_3O.js";
8
8
  import { t as A } from "../../AppSubTitle-BOVTZlUB.js";
9
- import { t as j } from "../../MultiSelect-O4JP5fRO.js";
10
- import { t as M } from "../../GenericForm-BdKwapAz.js";
9
+ import { t as j } from "../../MultiSelect-CZ4hye2w.js";
10
+ import { t as M } from "../../GenericForm-D7ni-5-4.js";
11
11
  import { t as N } from "../../ErrorAlert-L2s8Dd1_.js";
12
- import { i as P, n as F, r as I, t as L } from "../../SearchInput-BSIjKB_9.js";
13
- import { ActiveFilters as R, AdvancedFilters as z, FilterField as B, FilterPills as V, FilterPillsGroup as H, SearchableFilterPill as U, TableFilter as W } from "./filters/index.js";
12
+ import { i as P, n as F, r as I, t as L } from "../../SearchInput-nr0CrMLK.js";
13
+ import { ActiveFilters as R, AdvancedFilters as z, FilterField as B, FilterPills as V, FilterPillsGroup as H, TableFilter as U } from "./filters/index.js";
14
14
  import "./forms/index.js";
15
- import { t as G } from "../../inputs-CUNf48Vk.js";
16
- import { t as K } from "../../language-DOGOdjzx.js";
17
- import { t as q } from "../../AppTitle-BZ5jQWbs.js";
18
- import { n as J, t as Y } from "../../states-BQK9jqS4.js";
19
- import { AppPageHeader as X, KpiCardsLayout as Z } from "./layouts/index.js";
20
- import { a as Q, i as $, n as ee, o as te, r as ne, t as re } from "../../navbar-CCHGdEzE.js";
21
- import { DataTable as ie, JsonTableOutput as ae, TableActions as oe, TableBody as se, TableBulkActions as ce, TableHeader as le, TablePagination as ue, TableSettings as de } from "./table/index.js";
22
- import { AppTabContainer as fe, AppTabHeader as pe, AppTabs as me, AppVerticalTabs as he } from "./tabs/index.js";
23
- import { t as ge } from "../../theme-q2uzluEd.js";
24
- export { R as ActiveFilters, z as AdvancedFilters, k as AppActions, E as AppDialog, X as AppPageHeader, A as AppSubTitle, fe as AppTabContainer, pe as AppTabHeader, me as AppTabs, q as AppTitle, he as AppVerticalTabs, v as BarChartHorizontal, C as BarChartVertical, _ as CHART_COLORS, y as ChartCard, S as CircularGauge, D as ConfirmationDialog, r as DashboardCard, ie as DataTable, P as DatePicker, I as DateRangePicker, l as Dialog, c as DialogClose, p as DialogContent, g as DialogDescription, s as DialogFooter, h as DialogHeader, d as DialogOverlay, f as DialogPortal, m as DialogTitle, u as DialogTrigger, N as ErrorAlert, J as ErrorState, B as FilterField, V as FilterPills, H as FilterPillsGroup, T as FormDialog, M as GenericForm, te as GlobalSearch, O as ImageInput, ae as JsonTableOutput, e as KpiCard, t as KpiCards, Z as KpiCardsLayout, K as LanguageSelector, b as LineChart, Y as LoadingState, i as MetricCard, j as MultiSelect, Q as NotificationsBell, w as PieChart, o as Progress, G as RatingInput, L as SearchInput, U as SearchableFilterPill, F as SearchableSelect, ne as Sidebar, ee as SidebarHeader, $ as SidebarNavItem, n as SkeletonCard, a as SkeletonCards, oe as TableActions, se as TableBody, ce as TableBulkActions, W as TableFilter, le as TableHeader, ue as TablePagination, de as TableSettings, ge as ThemeSelector, re as Topbar, x as getChartColor };
15
+ import { t as W } from "../../inputs-BMCt-VqZ.js";
16
+ import { t as G } from "../../language-DOGOdjzx.js";
17
+ import { t as K } from "../../AppTitle-BZ5jQWbs.js";
18
+ import { n as q, t as J } from "../../states-BQK9jqS4.js";
19
+ import { AppPageHeader as Y, KpiCardsLayout as X } from "./layouts/index.js";
20
+ import { a as Z, i as Q, n as $, o as ee, r as te, t as ne } from "../../navbar-CCHGdEzE.js";
21
+ import { DataTable as re, JsonTableOutput as ie, TableActions as ae, TableBody as oe, TableBulkActions as se, TableHeader as ce, TablePagination as le, TableSettings as ue } from "./table/index.js";
22
+ import { AppTabContainer as de, AppTabHeader as fe, AppTabs as pe, AppVerticalTabs as me } from "./tabs/index.js";
23
+ import { t as he } from "../../theme-q2uzluEd.js";
24
+ export { R as ActiveFilters, z as AdvancedFilters, k as AppActions, E as AppDialog, Y as AppPageHeader, A as AppSubTitle, de as AppTabContainer, fe as AppTabHeader, pe as AppTabs, K as AppTitle, me as AppVerticalTabs, v as BarChartHorizontal, C as BarChartVertical, _ as CHART_COLORS, y as ChartCard, S as CircularGauge, D as ConfirmationDialog, r as DashboardCard, re as DataTable, P as DatePicker, I as DateRangePicker, l as Dialog, c as DialogClose, p as DialogContent, g as DialogDescription, s as DialogFooter, h as DialogHeader, d as DialogOverlay, f as DialogPortal, m as DialogTitle, u as DialogTrigger, N as ErrorAlert, q as ErrorState, B as FilterField, V as FilterPills, H as FilterPillsGroup, T as FormDialog, M as GenericForm, ee as GlobalSearch, O as ImageInput, ie as JsonTableOutput, e as KpiCard, t as KpiCards, X as KpiCardsLayout, G as LanguageSelector, b as LineChart, J as LoadingState, i as MetricCard, j as MultiSelect, Z as NotificationsBell, w as PieChart, o as Progress, W as RatingInput, L as SearchInput, te as Sidebar, $ as SidebarHeader, Q as SidebarNavItem, F as SingleSelect, n as SkeletonCard, a as SkeletonCards, ae as TableActions, oe as TableBody, se as TableBulkActions, U as TableFilter, ce as TableHeader, le as TablePagination, ue as TableSettings, he as ThemeSelector, ne as Topbar, x as getChartColor };