@pibit.ai/cure-design-system 0.3.21 → 0.3.23

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 (38) hide show
  1. package/dist/index.d.ts +1 -0
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +92 -88
  4. package/dist/patterns/table/TableWrapper.d.ts.map +1 -1
  5. package/dist/patterns/table/TableWrapper.js +291 -287
  6. package/dist/patterns/table/index.d.ts +1 -1
  7. package/dist/patterns/table/index.d.ts.map +1 -1
  8. package/dist/patterns/table/storyHelpers/useMockTableState.d.ts.map +1 -1
  9. package/dist/patterns/table/toolbar/AlignDropdown.d.ts.map +1 -1
  10. package/dist/patterns/table/toolbar/AlignDropdown.js +5 -11
  11. package/dist/patterns/table/toolbar/GroupByDropdown.d.ts.map +1 -1
  12. package/dist/patterns/table/toolbar/GroupByDropdown.js +48 -43
  13. package/dist/patterns/table/toolbar/TableToolbar.d.ts +2 -0
  14. package/dist/patterns/table/toolbar/TableToolbar.d.ts.map +1 -1
  15. package/dist/patterns/table/toolbar/TableToolbar.js +2 -1
  16. package/dist/patterns/table/toolbar/index.d.ts +1 -1
  17. package/dist/patterns/table/toolbar/index.d.ts.map +1 -1
  18. package/dist/patterns/table/toolbar/tableToolbarHelpers.d.ts +10 -1
  19. package/dist/patterns/table/toolbar/tableToolbarHelpers.d.ts.map +1 -1
  20. package/dist/patterns/table/toolbar/tableToolbarHelpers.js +116 -116
  21. package/dist/patterns/table/types.d.ts +1 -0
  22. package/dist/patterns/table/types.d.ts.map +1 -1
  23. package/dist/primitives/multi-chips-select/MultiChipsSelect.d.ts +20 -0
  24. package/dist/primitives/multi-chips-select/MultiChipsSelect.d.ts.map +1 -0
  25. package/dist/primitives/multi-chips-select/MultiChipsSelect.js +233 -0
  26. package/dist/primitives/multi-chips-select/index.d.ts +3 -0
  27. package/dist/primitives/multi-chips-select/index.d.ts.map +1 -0
  28. package/dist/primitives/multi-chips-select/tagKeyFromLabel.d.ts +3 -0
  29. package/dist/primitives/multi-chips-select/tagKeyFromLabel.d.ts.map +1 -0
  30. package/dist/primitives/multi-chips-select/tagKeyFromLabel.js +6 -0
  31. package/dist/primitives/select/ExpandableSearchInput.d.ts +3 -1
  32. package/dist/primitives/select/ExpandableSearchInput.d.ts.map +1 -1
  33. package/dist/primitives/select/ExpandableSearchInput.js +100 -78
  34. package/dist/primitives/select/SearchInput.d.ts +5 -1
  35. package/dist/primitives/select/SearchInput.d.ts.map +1 -1
  36. package/dist/primitives/select/SearchInput.js +94 -74
  37. package/dist/styles/components.css +1 -1
  38. package/package.json +1 -1
@@ -4,63 +4,63 @@ const T = {
4
4
  large: "h-11!",
5
5
  xl: "h-16!"
6
6
  };
7
- function m(e) {
7
+ function g(e) {
8
8
  return typeof e == "object" && e !== null;
9
9
  }
10
- function g(e, n) {
11
- var i;
12
- if (!((i = n == null ? void 0 : n.trim) != null && i.call(n)) || e === null || e === void 0) return;
13
- const a = n.split(".").filter((r) => r.length > 0);
14
- let t = e;
15
- for (const r of a) {
16
- if (t == null) return;
17
- if (m(t) && r in t) {
18
- t = t[r];
10
+ function y(e, r) {
11
+ var c;
12
+ if (!((c = r == null ? void 0 : r.trim) != null && c.call(r)) || e === null || e === void 0) return;
13
+ const i = r.split(".").filter((a) => a.length > 0);
14
+ let n = e;
15
+ for (const a of i) {
16
+ if (n == null) return;
17
+ if (g(n) && a in n) {
18
+ n = n[a];
19
19
  continue;
20
20
  }
21
- if (Array.isArray(t)) {
22
- const u = t.find((s) => m(s) ? s.field_identifier === r || s.id === r || s.key === r : !1);
23
- if (u !== void 0) {
24
- t = u;
21
+ if (Array.isArray(n)) {
22
+ const t = n.find((u) => g(u) ? u.field_identifier === a || u.id === a || u.key === a : !1);
23
+ if (t !== void 0) {
24
+ n = t;
25
25
  continue;
26
26
  }
27
27
  }
28
28
  return;
29
29
  }
30
- return t;
30
+ return n;
31
31
  }
32
- function y(e, n) {
33
- return !n || !e ? null : n.split(".").reduce((a, t) => {
34
- if (!a || typeof a != "object") return null;
35
- if (t.includes("[") && t.includes("]")) {
36
- const r = t.substring(0, t.indexOf("[")), u = parseInt(t.substring(t.indexOf("[") + 1, t.indexOf("]")), 10), s = a;
37
- return r && Array.isArray(s[r]) ? s[r][u] : null;
32
+ function p(e, r) {
33
+ return !r || !e ? null : r.split(".").reduce((i, n) => {
34
+ if (!i || typeof i != "object") return null;
35
+ if (n.includes("[") && n.includes("]")) {
36
+ const a = n.substring(0, n.indexOf("[")), t = parseInt(n.substring(n.indexOf("[") + 1, n.indexOf("]")), 10), u = i;
37
+ return a && Array.isArray(u[a]) ? u[a][t] : null;
38
38
  }
39
- const i = a;
40
- return i[t] !== void 0 ? i[t] : null;
39
+ const c = i;
40
+ return c[n] !== void 0 ? c[n] : null;
41
41
  }, e);
42
42
  }
43
- function E(e, n) {
43
+ function v(e, r) {
44
44
  if (e.label) return e.label;
45
- if (n && typeof n == "object" && Object.keys(n).length > 0) {
46
- const a = g(n, e.header);
47
- if (a && typeof a.label == "string") return a.label;
45
+ if (r && typeof r == "object" && Object.keys(r).length > 0) {
46
+ const i = y(r, e.header);
47
+ if (i && typeof i.label == "string") return i.label;
48
48
  }
49
49
  return e.header;
50
50
  }
51
- function v(e, n, a) {
51
+ function R(e, r, i) {
52
52
  if (!e.length) return [];
53
- const t = new Map(e.map((u) => [u.value, u])), i = [];
54
- for (const u of a) {
55
- const s = t.get(u);
56
- s && !n.has(u) && i.push(s);
53
+ const n = new Map(e.map((t) => [t.value, t])), c = [];
54
+ for (const t of i) {
55
+ const u = n.get(t);
56
+ u && !r.has(t) && c.push(u);
57
57
  }
58
- const r = new Set(a);
59
- for (const u of e)
60
- !r.has(u.value) && !n.has(u.value) && i.push(u);
61
- return i;
58
+ const a = new Set(i);
59
+ for (const t of e)
60
+ !a.has(t.value) && !r.has(t.value) && c.push(t);
61
+ return c;
62
62
  }
63
- function p(e) {
63
+ function N(e) {
64
64
  switch (e) {
65
65
  case "number":
66
66
  case "currency":
@@ -71,10 +71,10 @@ function p(e) {
71
71
  return "left";
72
72
  }
73
73
  }
74
- function x(e, n) {
75
- return n.get(e.value) ?? p(e.value_type);
74
+ function L(e, r) {
75
+ return r.get(e.value) ?? N(e.value_type);
76
76
  }
77
- function S(e) {
77
+ function w(e) {
78
78
  return e === "right" ? "text-right" : e === "center" ? "text-center" : "text-left";
79
79
  }
80
80
  const A = {
@@ -87,7 +87,7 @@ const A = {
87
87
  max: "Max",
88
88
  range: "Range",
89
89
  totalItems: "Total Items"
90
- }, R = {
90
+ }, O = {
91
91
  none: "-None-",
92
92
  count: "Count",
93
93
  sum: "Sum",
@@ -118,11 +118,11 @@ function b(e) {
118
118
  return "string";
119
119
  }
120
120
  }
121
- function N(e) {
122
- const { value_type: n, data_type: a } = e;
123
- if (n === "number" || n === "currency" || n === "percentage" || n === "decimal_percentage" || n === "date" || n === "array" || n === "link")
124
- return n;
125
- switch (a) {
121
+ function _(e) {
122
+ const { value_type: r, data_type: i } = e;
123
+ if (r === "number" || r === "currency" || r === "percentage" || r === "decimal_percentage" || r === "date" || r === "array" || r === "link")
124
+ return r;
125
+ switch (i) {
126
126
  case "number":
127
127
  return "number";
128
128
  case "currency":
@@ -136,124 +136,124 @@ function N(e) {
136
136
  case "link":
137
137
  return "link";
138
138
  default:
139
- return n;
139
+ return r;
140
140
  }
141
141
  }
142
- function w(e, n) {
143
- return n && Object.prototype.hasOwnProperty.call(n, e.value) ? b(n[e.value]) : N(e);
142
+ function F(e, r) {
143
+ return r && Object.prototype.hasOwnProperty.call(r, e.value) ? b(r[e.value]) : _(e);
144
144
  }
145
- function O(e) {
146
- const n = (a) => a.map((t) => ({ id: t, label: A[t] }));
145
+ function C(e) {
146
+ const r = (i) => i.map((n) => ({ id: n, label: A[n] }));
147
147
  switch (e) {
148
148
  case "number":
149
149
  case "currency":
150
150
  case "percentage":
151
151
  case "decimal_percentage":
152
- return n(["none", "count", "sum", "average", "median", "min", "max"]);
152
+ return r(["none", "count", "sum", "average", "median", "min", "max"]);
153
153
  case "date":
154
- return n(["none", "count", "min", "max", "range"]);
154
+ return r(["none", "count", "min", "max", "range"]);
155
155
  case "array":
156
- return n(["none", "count", "totalItems"]);
156
+ return r(["none", "count", "totalItems"]);
157
157
  case "string":
158
158
  case "link":
159
159
  default:
160
- return n(["none", "count"]);
160
+ return r(["none", "count"]);
161
161
  }
162
162
  }
163
- const _ = (e) => e == null ? !0 : typeof e == "string" ? e.trim() === "" : Array.isArray(e) ? e.length === 0 : !1, h = (e) => {
163
+ const h = (e) => e == null ? !0 : typeof e == "string" ? e.trim() === "" : Array.isArray(e) ? e.length === 0 : !1, I = (e) => {
164
164
  if (e == null || e === "") return null;
165
165
  if (typeof e == "number") return Number.isFinite(e) ? e : null;
166
166
  if (typeof e == "string") {
167
- const n = e.replace(/[^0-9.-]/g, "");
168
- if (n === "" || n === "-" || n === ".") return null;
169
- const a = Number(n);
170
- return Number.isFinite(a) ? a : null;
167
+ const r = e.replace(/[^0-9.-]/g, "");
168
+ if (r === "" || r === "-" || r === ".") return null;
169
+ const i = Number(r);
170
+ return Number.isFinite(i) ? i : null;
171
171
  }
172
172
  return null;
173
- }, I = (e) => {
173
+ }, S = (e) => {
174
174
  if (e == null || e === "") return null;
175
175
  if (e instanceof Date) return Number.isNaN(e.getTime()) ? null : e;
176
- const n = new Date(String(e));
177
- return Number.isNaN(n.getTime()) ? null : n;
178
- }, c = (e) => Number.isFinite(e) ? Number.isInteger(e) ? e.toLocaleString() : e.toLocaleString(void 0, { maximumFractionDigits: 2 }) : "—";
179
- function d(e, n) {
180
- return Object.prototype.hasOwnProperty.call(e, n) ? e[n] : y(e, n);
176
+ const r = new Date(String(e));
177
+ return Number.isNaN(r.getTime()) ? null : r;
178
+ }, x = (e) => Number.isFinite(e) ? Number.isInteger(e) ? e.toLocaleString() : e.toLocaleString(void 0, { maximumFractionDigits: 2 }) : "—", E = (e, r) => Number.isFinite(e) ? r === "currency" ? e.toLocaleString(void 0, { style: "currency", currency: "USD" }) : r === "percentage" ? `${e.toLocaleString(void 0, { maximumFractionDigits: 2 })}%` : r === "decimal_percentage" ? `${(e * 100).toLocaleString(void 0, { maximumFractionDigits: 2 })}%` : x(e) : "—";
179
+ function d(e, r) {
180
+ return Object.prototype.hasOwnProperty.call(e, r) ? e[r] : p(e, r);
181
181
  }
182
- function L(e, n, a) {
183
- if (a === "none") return "";
184
- const t = e.map((i) => d(i, n));
185
- switch (a) {
182
+ function M(e, r, i, n) {
183
+ if (i === "none") return "";
184
+ const c = e.map((t) => d(t, r)), a = (t) => E(t, n);
185
+ switch (i) {
186
186
  case "count":
187
- return String(t.length);
187
+ return String(c.length);
188
188
  case "sum":
189
189
  case "average":
190
190
  case "median":
191
191
  case "min":
192
192
  case "max": {
193
- const i = [];
194
- for (const r of t) {
195
- const u = h(r);
196
- u !== null && i.push(u);
193
+ const t = [];
194
+ for (const u of c) {
195
+ const o = I(u);
196
+ o !== null && t.push(o);
197
197
  }
198
- if (i.length === 0) return "—";
199
- if (a === "sum") return c(i.reduce((r, u) => r + u, 0));
200
- if (a === "average") return c(i.reduce((r, u) => r + u, 0) / i.length);
201
- if (a === "median") {
202
- const r = [...i].sort((f, o) => f - o), u = Math.floor(r.length / 2), s = r.length % 2 === 0 ? (r[u - 1] + r[u]) / 2 : r[u];
203
- return c(s);
198
+ if (t.length === 0) return "—";
199
+ if (i === "sum") return a(t.reduce((u, o) => u + o, 0));
200
+ if (i === "average") return a(t.reduce((u, o) => u + o, 0) / t.length);
201
+ if (i === "median") {
202
+ const u = [...t].sort((m, l) => m - l), o = Math.floor(u.length / 2), s = u.length % 2 === 0 ? (u[o - 1] + u[o]) / 2 : u[o];
203
+ return a(s);
204
204
  }
205
- return c(a === "min" ? i.reduce((r, u) => u < r ? u : r) : i.reduce((r, u) => u > r ? u : r));
205
+ return a(i === "min" ? t.reduce((u, o) => o < u ? o : u) : t.reduce((u, o) => o > u ? o : u));
206
206
  }
207
207
  case "range": {
208
- let i = Number.POSITIVE_INFINITY, r = Number.NEGATIVE_INFINITY, u = !1;
209
- for (const f of t) {
210
- const o = I(f);
211
- if (!o) continue;
212
- u = !0;
213
- const l = o.getTime();
214
- l < i && (i = l), l > r && (r = l);
208
+ let t = Number.POSITIVE_INFINITY, u = Number.NEGATIVE_INFINITY, o = !1;
209
+ for (const m of c) {
210
+ const l = S(m);
211
+ if (!l) continue;
212
+ o = !0;
213
+ const f = l.getTime();
214
+ f < t && (t = f), f > u && (u = f);
215
215
  }
216
- if (!u) return "—";
217
- const s = Math.round((r - i) / 864e5);
216
+ if (!o) return "—";
217
+ const s = Math.round((u - t) / 864e5);
218
218
  return `${s} day${s === 1 ? "" : "s"}`;
219
219
  }
220
220
  case "totalItems": {
221
- let i = 0;
222
- for (const r of t) Array.isArray(r) && (i += r.length);
223
- return String(i);
221
+ let t = 0;
222
+ for (const u of c) Array.isArray(u) && (t += u.length);
223
+ return String(t);
224
224
  }
225
225
  default:
226
226
  return "";
227
227
  }
228
228
  }
229
- function C(e, n) {
230
- if (!n) return [{ key: "__all__", label: "", rows: e }];
231
- const a = /* @__PURE__ */ new Map();
232
- for (const t of e) {
233
- const i = d(t, n), r = _(i) ? "__empty__" : String(i), u = a.get(r);
234
- u ? u.push(t) : a.set(r, [t]);
229
+ function G(e, r) {
230
+ if (!r) return [{ key: "__all__", label: "", rows: e }];
231
+ const i = /* @__PURE__ */ new Map();
232
+ for (const n of e) {
233
+ const c = d(n, r), a = h(c) ? "__empty__" : String(c), t = i.get(a);
234
+ t ? t.push(n) : i.set(a, [n]);
235
235
  }
236
- return Array.from(a.entries()).map(([t, i]) => ({
237
- key: t,
238
- label: t === "__empty__" ? "(Empty)" : t,
239
- rows: i
236
+ return Array.from(i.entries()).map(([n, c]) => ({
237
+ key: n,
238
+ label: n === "__empty__" ? "(Empty)" : n,
239
+ rows: c
240
240
  }));
241
241
  }
242
242
  export {
243
- R as AGGREGATION_CELL_LABELS,
243
+ O as AGGREGATION_CELL_LABELS,
244
244
  A as AGGREGATION_LABELS,
245
245
  T as ROW_HEIGHT_CLASS,
246
- S as alignmentClass,
247
- v as applyHideAndReorder,
248
- L as computeAggregation,
249
- O as getAggregationsForType,
250
- p as getDefaultAlignmentForType,
251
- x as getEffectiveAlignment,
252
- y as getNestedValue,
253
- g as getObjectLabelByPath,
246
+ w as alignmentClass,
247
+ R as applyHideAndReorder,
248
+ M as computeAggregation,
249
+ C as getAggregationsForType,
250
+ N as getDefaultAlignmentForType,
251
+ L as getEffectiveAlignment,
252
+ p as getNestedValue,
253
+ y as getObjectLabelByPath,
254
254
  d as getRowColumnValue,
255
- C as groupRows,
255
+ G as groupRows,
256
256
  b as mapOmDataTypeToAggregationValueType,
257
- w as resolveAggregationValueType,
258
- E as resolveColumnLabel
257
+ F as resolveAggregationValueType,
258
+ v as resolveColumnLabel
259
259
  };
@@ -79,6 +79,7 @@ export type TableWrapperProps = {
79
79
  columns: ColumnConfig[];
80
80
  renderRowCell: (key: string, val: any, item: any) => ReactNode;
81
81
  onRowClick?: (item: any) => void;
82
+ onRowHover?: (item: any, isHovered: boolean) => void;
82
83
  arialabel?: string;
83
84
  size?: "sm" | "md" | "xs";
84
85
  allowDefaultRowClass?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/patterns/table/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/patterns/table/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import { Dispatch, SetStateAction } from 'react';
2
+ export interface SelectOption {
3
+ id: string;
4
+ label: string;
5
+ }
6
+ export interface MultiChipsSelectProps {
7
+ loading?: boolean;
8
+ options: SelectOption[];
9
+ selectedValues: SelectOption[];
10
+ onChange: Dispatch<SetStateAction<SelectOption[]>>;
11
+ /** Renders above the control (e.g. "Add document tags"). */
12
+ fieldLabel?: string;
13
+ placeholder?: string;
14
+ /** Invoked when the user chooses **Create "…"**; parent decides persistence / options refresh. */
15
+ onAddOption?: (label: string, key: string) => Promise<void>;
16
+ isDisabled?: boolean;
17
+ isSearchable?: boolean;
18
+ }
19
+ export declare function MultiChipsSelect({ loading, options, selectedValues, onChange, fieldLabel, placeholder, onAddOption, isDisabled, isSearchable, }: MultiChipsSelectProps): import("react/jsx-runtime").JSX.Element;
20
+ //# sourceMappingURL=MultiChipsSelect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MultiChipsSelect.d.ts","sourceRoot":"","sources":["../../../src/primitives/multi-chips-select/MultiChipsSelect.tsx"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,QAAQ,EAGb,KAAK,cAAc,EACpB,MAAM,OAAO,CAAC;AAMf,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,cAAc,EAAE,YAAY,EAAE,CAAC;IAC/B,QAAQ,EAAE,QAAQ,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;IACnD,4DAA4D;IAC5D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kGAAkG;IAClG,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5D,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAoBD,wBAAgB,gBAAgB,CAAC,EAC/B,OAAe,EACf,OAAO,EACP,cAAc,EACd,QAAQ,EACR,UAAU,EACV,WAAmC,EACnC,WAAW,EACX,UAAkB,EAClB,YAAmB,GACpB,EAAE,qBAAqB,2CAoSvB"}
@@ -0,0 +1,233 @@
1
+ import { jsxs as m, jsx as o, Fragment as X } from "react/jsx-runtime";
2
+ import { useState as E, useRef as z, useMemo as I, useCallback as $, useEffect as q } from "react";
3
+ import { XClose as G, ChevronDown as H } from "@untitledui/icons";
4
+ import { LoadingIndicator as J } from "../../applications/loading-indicator/loading-indicator.js";
5
+ import { cx as F } from "../../utils/cn.js";
6
+ import { tagKeyFromLabel as K } from "./tagKeyFromLabel.js";
7
+ function _(f, l) {
8
+ const n = l.trim().toLowerCase();
9
+ return n ? f.some((d) => d.label.trim().toLowerCase() === n) : !1;
10
+ }
11
+ function A(f, l) {
12
+ const n = l.trim().toLowerCase();
13
+ if (!n) return !1;
14
+ const d = K(l);
15
+ return f.some(
16
+ (g) => g.label.trim().toLowerCase() === n || g.id === d
17
+ );
18
+ }
19
+ function re({
20
+ loading: f = !1,
21
+ options: l,
22
+ selectedValues: n,
23
+ onChange: d,
24
+ fieldLabel: g,
25
+ placeholder: O = "Search or add tags…",
26
+ onAddOption: w,
27
+ isDisabled: t = !1,
28
+ isSearchable: Q = !0
29
+ }) {
30
+ const [x, s] = E(!1), [N, S] = E(""), [i, p] = E(0), C = z(null), h = z(null), c = N.trim(), v = c.toLowerCase(), k = I(() => {
31
+ const e = new Set(n.map((r) => r.id));
32
+ return l.filter((r) => !e.has(r.id));
33
+ }, [l, n]), a = I(() => v ? k.filter(
34
+ (e) => e.label.toLowerCase().includes(v)
35
+ ) : k, [k, v]), y = I(() => !(!c || t || _(l, c) || A(n, c)), [c, l, n, t]), L = $(() => {
36
+ s(!1);
37
+ }, []), b = a.length + (y ? 1 : 0);
38
+ q(() => {
39
+ p(0);
40
+ }, [v, a.length, y]), q(() => {
41
+ x || p(0);
42
+ }, [x]), q(() => {
43
+ const e = (r) => {
44
+ C.current && !C.current.contains(r.target) && L();
45
+ };
46
+ return document.addEventListener("mousedown", e), () => document.removeEventListener("mousedown", e);
47
+ }, [L]);
48
+ const M = (e) => {
49
+ n.some((r) => r.id === e.id) || (d((r) => [...r, e]), S(""), s(!0), p(0));
50
+ }, R = async () => {
51
+ if (!c || t || f) return;
52
+ const e = K(c), r = c.replace(/\s+/g, " ").trim();
53
+ _(l, r) || A(n, r) || (await (w == null ? void 0 : w(r, e)), M({ id: e, label: r }));
54
+ }, T = (e) => {
55
+ d(n.filter((r) => r.id !== e));
56
+ }, B = () => {
57
+ t || (s(!0), requestAnimationFrame(() => {
58
+ var e;
59
+ return (e = h.current) == null ? void 0 : e.focus();
60
+ }));
61
+ }, P = (e) => {
62
+ if (t) return;
63
+ const r = e.target;
64
+ if (!r.closest("button[data-chip-remove]")) {
65
+ if (h.current && (r === h.current || h.current.contains(r))) {
66
+ x || s(!0);
67
+ return;
68
+ }
69
+ e.preventDefault(), B();
70
+ }
71
+ }, U = (e) => {
72
+ var r;
73
+ if (e.key === "Escape") {
74
+ L(), (r = h.current) == null || r.blur();
75
+ return;
76
+ }
77
+ if (e.key === "ArrowDown" && !t && b > 0) {
78
+ e.preventDefault(), s(!0), p((u) => u < 0 ? 0 : u < b - 1 ? u + 1 : u);
79
+ return;
80
+ }
81
+ if (e.key === "ArrowUp" && !t && b > 0) {
82
+ e.preventDefault(), s(!0), p((u) => u <= 0 ? 0 : u - 1);
83
+ return;
84
+ }
85
+ if (e.key === "Enter") {
86
+ x && !t && i >= 0 && i < b && (e.preventDefault(), y && i === a.length ? R() : i < a.length && M(a[i]));
87
+ return;
88
+ }
89
+ e.key === "Backspace" && !N && n.length > 0 && (e.preventDefault(), d(n.slice(0, -1)));
90
+ }, j = x && !t && (a.length > 0 || y);
91
+ return /* @__PURE__ */ m("div", { ref: C, className: "relative w-full", children: [
92
+ g ? /* @__PURE__ */ o("span", { className: "mb-1.5 block text-xs font-medium text-secondary", children: g }) : null,
93
+ /* @__PURE__ */ m(
94
+ "div",
95
+ {
96
+ role: "combobox",
97
+ "aria-expanded": j,
98
+ "aria-haspopup": "listbox",
99
+ "aria-disabled": t,
100
+ onMouseDown: P,
101
+ className: F(
102
+ "flex min-h-9 w-full flex-wrap items-center gap-1 rounded-md border border-secondary bg-primary px-2 py-1 text-xs transition-all",
103
+ !t && "cursor-text",
104
+ t && "cursor-not-allowed opacity-60",
105
+ x && !t && "ring-1 ring-brand border-brand"
106
+ ),
107
+ children: [
108
+ n.map((e) => /* @__PURE__ */ m(
109
+ "span",
110
+ {
111
+ className: "flex max-w-full items-center gap-0.5 rounded py-px pl-1 pr-0.5 ring-1 ring-[var(--color-gray-200)]",
112
+ children: [
113
+ /* @__PURE__ */ o("span", { className: "max-w-[200px] truncate font-medium text-secondary", children: e.label }),
114
+ /* @__PURE__ */ o(
115
+ "button",
116
+ {
117
+ type: "button",
118
+ "data-chip-remove": !0,
119
+ disabled: t,
120
+ onClick: (r) => {
121
+ r.stopPropagation(), t || T(e.id);
122
+ },
123
+ className: "flex shrink-0 items-center justify-center rounded-sm text-fg-quaternary hover:text-error-600 disabled:pointer-events-none",
124
+ "aria-label": `Remove ${e.label}`,
125
+ children: /* @__PURE__ */ o(G, { size: 12 })
126
+ }
127
+ )
128
+ ]
129
+ },
130
+ e.id
131
+ )),
132
+ /* @__PURE__ */ o(
133
+ "input",
134
+ {
135
+ ref: h,
136
+ type: "text",
137
+ disabled: t,
138
+ className: "min-w-[4ch] flex-1 border-0 bg-transparent py-0.5 text-xs outline-none ring-0 focus:ring-0 disabled:cursor-not-allowed",
139
+ placeholder: n.length === 0 ? O : void 0,
140
+ value: N,
141
+ onChange: (e) => {
142
+ S(e.target.value), t || s(!0);
143
+ },
144
+ onFocus: () => {
145
+ t || s(!0);
146
+ },
147
+ onKeyDown: U,
148
+ readOnly: !Q
149
+ }
150
+ ),
151
+ /* @__PURE__ */ o(
152
+ "button",
153
+ {
154
+ type: "button",
155
+ tabIndex: -1,
156
+ disabled: t,
157
+ className: "ml-auto flex shrink-0 items-center text-fg-quaternary",
158
+ "aria-label": "Toggle tag list",
159
+ onMouseDown: (e) => {
160
+ e.preventDefault(), !t && (s((r) => !r), requestAnimationFrame(() => {
161
+ var r;
162
+ return (r = h.current) == null ? void 0 : r.focus();
163
+ }));
164
+ },
165
+ children: /* @__PURE__ */ o(H, { size: 14 })
166
+ }
167
+ )
168
+ ]
169
+ }
170
+ ),
171
+ j ? /* @__PURE__ */ m(
172
+ "div",
173
+ {
174
+ className: "absolute z-50 mt-1 w-full overflow-hidden rounded-lg border border-secondary bg-white shadow-lg",
175
+ role: "listbox",
176
+ children: [
177
+ /* @__PURE__ */ o("div", { className: "max-h-60 overflow-y-auto py-1", children: a.map((e, r) => /* @__PURE__ */ o(
178
+ "div",
179
+ {
180
+ role: "option",
181
+ "aria-selected": i === r,
182
+ onMouseEnter: () => p(r),
183
+ onMouseDown: (u) => {
184
+ u.preventDefault(), M(e);
185
+ },
186
+ className: F(
187
+ "cursor-pointer px-3 py-2 text-xs font-medium text-primary transition-colors hover:bg-primary_hover",
188
+ i === r && "bg-primary_hover"
189
+ ),
190
+ children: e.label
191
+ },
192
+ e.id
193
+ )) }),
194
+ y && w ? /* @__PURE__ */ m(X, { children: [
195
+ /* @__PURE__ */ o("div", { className: "border-t border-secondary" }),
196
+ /* @__PURE__ */ m(
197
+ "button",
198
+ {
199
+ type: "button",
200
+ disabled: f,
201
+ "aria-selected": i === a.length,
202
+ onMouseEnter: () => p(a.length),
203
+ className: F(
204
+ "flex w-full items-center justify-between cursor-pointer px-3 py-2.5 text-left text-xs transition-colors hover:bg-primary_hover",
205
+ i === a.length && "bg-primary_hover",
206
+ f && "cursor-not-allowed opacity-60"
207
+ ),
208
+ onMouseDown: (e) => {
209
+ e.preventDefault(), R();
210
+ },
211
+ children: [
212
+ /* @__PURE__ */ m("div", { className: "flex items-center gap-2", children: [
213
+ /* @__PURE__ */ o("span", { className: "text-tertiary", children: "Create " }),
214
+ /* @__PURE__ */ m("span", { className: "font-medium text-primary", children: [
215
+ '"',
216
+ c,
217
+ '"'
218
+ ] })
219
+ ] }),
220
+ f ? /* @__PURE__ */ o(J, { size: "xs" }) : null
221
+ ]
222
+ }
223
+ )
224
+ ] }) : null,
225
+ a.length === 0 && !y ? /* @__PURE__ */ o("div", { className: "px-3 py-4 text-center text-xs text-tertiary", children: "No matching tags" }) : null
226
+ ]
227
+ }
228
+ ) : null
229
+ ] });
230
+ }
231
+ export {
232
+ re as MultiChipsSelect
233
+ };
@@ -0,0 +1,3 @@
1
+ export { MultiChipsSelect, type MultiChipsSelectProps, type SelectOption, } from './MultiChipsSelect';
2
+ export { tagKeyFromLabel } from './tagKeyFromLabel';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/primitives/multi-chips-select/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,KAAK,qBAAqB,EAC1B,KAAK,YAAY,GAClB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,3 @@
1
+ /** Lowercase label and collapse whitespace to single underscores (other characters unchanged). */
2
+ export declare function tagKeyFromLabel(label: string): string;
3
+ //# sourceMappingURL=tagKeyFromLabel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tagKeyFromLabel.d.ts","sourceRoot":"","sources":["../../../src/primitives/multi-chips-select/tagKeyFromLabel.ts"],"names":[],"mappings":"AAAA,kGAAkG;AAClG,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAErD"}