@pibit.ai/cure-design-system 0.6.22 → 0.6.24

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.
@@ -1,168 +1,203 @@
1
- import { jsxs as A, jsx as r, Fragment as E } from "react/jsx-runtime";
2
- import { useState as $ } from "react";
3
- import { SearchSm as T, ChevronDown as K, ChevronRight as V } from "@untitledui/icons";
4
- import { cn as k } from "../../utils/cn.js";
5
- import { Input as _ } from "../../primitives/input/input.js";
6
- const N = 10;
7
- function C(e, l, s = "") {
1
+ import { jsx as s, jsxs as N, Fragment as D } from "react/jsx-runtime";
2
+ import { useMemo as P, useState as V, useRef as Q, useEffect as U } from "react";
3
+ import { SearchSm as z, ChevronDown as B, ChevronRight as F } from "@untitledui/icons";
4
+ import { cn as H } from "../../utils/cn.js";
5
+ import { IndentedTree as X } from "./indented-tree.js";
6
+ import { Input as Z } from "../../primitives/input/input.js";
7
+ const T = 10;
8
+ function K(e, t) {
9
+ const r = (i, [n, ...a]) => i.map((l, c) => c !== n ? l : a.length ? { ...l, children: r(l.children, a) } : { ...l, isOpen: !l.isOpen });
10
+ return r(e, t.split("-").map(Number));
11
+ }
12
+ function E(e, t, r = "") {
8
13
  const {
9
- labelKey: m,
14
+ labelKey: i,
10
15
  childrenKey: n,
11
- dataKey: f = "metadata",
12
- typeKey: x = "type",
13
- idKey: h,
14
- maxDepth: i,
15
- defaultExpanded: g
16
- } = l, v = s ? s.split(".").length : 0;
17
- return i != null && v >= i ? [] : (Array.isArray(e) ? e : Object.values(e)).map((t, w) => {
18
- const b = h != null ? t[h] : void 0, a = String(b ?? w), d = s ? `${s}.${a}` : a, c = t[n], o = Array.isArray(c) ? c : c != null ? Object.values(c) : [];
16
+ dataKey: a = "metadata",
17
+ typeKey: l = "type",
18
+ idKey: c,
19
+ maxDepth: o,
20
+ defaultExpanded: u,
21
+ expandedIds: f
22
+ } = t, y = r ? r.split(".").length : 0;
23
+ return o != null && y >= o ? [] : (Array.isArray(e) ? e : Object.values(e)).map((h, S) => {
24
+ const b = c != null ? h[c] : void 0, A = String(b ?? S), x = r ? `${r}.${A}` : A, d = h[n], g = Array.isArray(d) ? d : d != null ? Object.values(d) : [];
19
25
  return {
20
- id: d,
21
- label: t[m] ?? "Untitled",
22
- type: t[x] ?? "Untitled",
23
- isOpen: t.isOpen ?? g ?? !1,
24
- children: o.length > 0 ? C(o, l, d) : [],
25
- [f]: t
26
+ id: x,
27
+ label: h[i] ?? "Untitled",
28
+ type: h[l] ?? "Untitled",
29
+ isOpen: h.isOpen ?? (f ? f.has(x) : u) ?? !1,
30
+ children: g.length > 0 ? E(g, t, x) : [],
31
+ [a]: h
26
32
  };
27
33
  });
28
34
  }
29
- function O(e, l) {
30
- const s = e.label ?? "", m = Array.isArray(e.children) ? e.children : [];
31
- return s.toLowerCase().includes(l.toLowerCase()) ? !0 : m.some((n) => O(n, l));
35
+ function I(e, t) {
36
+ const r = e.label ?? "", i = Array.isArray(e.children) ? e.children : [];
37
+ return r.toLowerCase().includes(t.toLowerCase()) ? !0 : i.some((n) => I(n, t));
32
38
  }
33
- const D = () => /* @__PURE__ */ r("div", { className: "flex h-[28px] items-center px-[13px] shrink-0", children: /* @__PURE__ */ r("div", { className: "relative h-full w-0 shrink-0", children: /* @__PURE__ */ r(
39
+ const G = () => /* @__PURE__ */ s("div", { className: "flex h-[28px] items-center px-[13px] shrink-0", children: /* @__PURE__ */ s("div", { className: "relative h-full w-0 shrink-0", children: /* @__PURE__ */ s(
34
40
  "div",
35
41
  {
36
42
  className: "absolute inset-y-0 bg-(--color-border-secondary)",
37
43
  style: { left: "-0.5px", width: 1 }
38
44
  }
39
- ) }) }), I = ({
45
+ ) }) }), J = ({
40
46
  data: e,
41
- config: l,
42
- CustomNode: s,
43
- onNodeClick: m,
44
- selectedNodeId: n,
45
- showSearch: f = !1,
46
- searchPlaceholder: x = "Search...",
47
- searchClassName: h,
48
- searchInputClassName: i,
49
- defaultExpanded: g
47
+ config: t,
48
+ nodes: r,
49
+ CustomNode: i,
50
+ onNodeClick: n,
51
+ selectedNodeId: a,
52
+ showSearch: l = !1,
53
+ searchPlaceholder: c = "Search...",
54
+ searchClassName: o,
55
+ searchInputClassName: u,
56
+ defaultExpanded: f,
57
+ defaultExpandedIds: y,
58
+ syncWithData: p = !1,
59
+ variant: h = "nested",
60
+ isLeafClickable: S,
61
+ keyboardNavigation: b = !1,
62
+ canSelectNode: A,
63
+ "aria-label": x
50
64
  }) => {
51
- const [v, y] = $(
52
- () => C(e, {
53
- ...l,
54
- defaultExpanded: g ?? l.defaultExpanded
55
- })
56
- ), [t, w] = $("");
57
- function b(a, d) {
58
- const c = structuredClone(v), o = d.split("-"), p = Number(o[0]);
59
- o.shift();
60
- let u = c[p];
61
- o.length > 0 && (u = o.reduce((L, j) => L.children[Number(j)], c[p])), u.isOpen = !u.isOpen, y(c);
65
+ const d = P(
66
+ () => y == null ? void 0 : new Set(y),
67
+ [y]
68
+ ), g = () => r ?? E(e, {
69
+ ...t,
70
+ defaultExpanded: f ?? t.defaultExpanded,
71
+ expandedIds: d ?? t.expandedIds
72
+ }), [$, m] = V(g), [w, _] = V(""), j = Q(!1);
73
+ U(() => {
74
+ p && (j.current && m(g()), j.current = !0);
75
+ }, [p, e, t, r, d, f]);
76
+ function L(v, O) {
77
+ m((M) => K(M, O));
62
78
  }
63
- return /* @__PURE__ */ A("div", { className: "min-w-max", children: [
64
- f && /* @__PURE__ */ r("div", { className: k("mb-2", h), children: /* @__PURE__ */ r(
65
- _,
79
+ return h === "indented" ? /* @__PURE__ */ s(
80
+ X,
81
+ {
82
+ tree: $,
83
+ onToggle: (v) => m((O) => K(O, v)),
84
+ CustomNode: i,
85
+ onNodeClick: n,
86
+ selectedNodeId: a,
87
+ keyboardNavigation: b,
88
+ canSelectNode: A,
89
+ "aria-label": x
90
+ }
91
+ ) : /* @__PURE__ */ N("div", { className: "min-w-max", children: [
92
+ l && /* @__PURE__ */ s("div", { className: H("mb-2", o), children: /* @__PURE__ */ s(
93
+ Z,
66
94
  {
67
95
  type: "search",
68
- placeholder: x,
69
- value: t,
70
- onChange: (a) => w(a),
96
+ placeholder: c,
97
+ value: w,
98
+ onChange: (v) => _(v),
71
99
  size: "sm",
72
- className: i,
73
- icon: T
100
+ className: u,
101
+ icon: z
74
102
  }
75
103
  ) }),
76
- /* @__PURE__ */ r("div", { className: "flex flex-col", children: v.map((a, d) => /* @__PURE__ */ r(
77
- S,
104
+ /* @__PURE__ */ s("div", { className: "flex flex-col", children: $.map((v, O) => /* @__PURE__ */ s(
105
+ R,
78
106
  {
79
- node: a,
80
- parentId: String(d),
107
+ node: v,
108
+ parentId: String(O),
81
109
  depth: 0,
82
- handleToggle: b,
83
- onNodeClick: m,
84
- selectedNodeId: n,
85
- CustomNode: s,
86
- query: t
110
+ handleToggle: L,
111
+ onNodeClick: n,
112
+ selectedNodeId: a,
113
+ CustomNode: i,
114
+ query: w,
115
+ isLeafClickable: S
87
116
  },
88
- a.id || d
117
+ v.id || O
89
118
  )) })
90
119
  ] });
91
120
  };
92
- I.displayName = "TreeView";
93
- const S = ({
121
+ J.displayName = "TreeView";
122
+ const R = ({
94
123
  node: e,
95
- parentId: l,
96
- depth: s = 0,
97
- handleToggle: m,
124
+ parentId: t,
125
+ depth: r = 0,
126
+ handleToggle: i,
98
127
  onNodeClick: n,
99
- selectedNodeId: f,
100
- CustomNode: x,
101
- query: h
128
+ selectedNodeId: a,
129
+ CustomNode: l,
130
+ query: c,
131
+ isLeafClickable: o
102
132
  }) => {
103
- const i = h.length > 0, g = Array.isArray(e.children) ? e.children : [], v = e.label ?? "";
104
- if (i && !O(e, h))
133
+ const u = c.length > 0, f = Array.isArray(e.children) ? e.children : [], y = e.label ?? "";
134
+ if (u && !I(e, c))
105
135
  return null;
106
- const y = g.length > 0, t = f != null && e.id === f, w = y && (i || (e.isOpen ?? !1)), b = (p) => {
107
- p.stopPropagation(), y && (i || m(e, l), n == null || n(e));
108
- }, a = s === 0 ? "pl-[6px]" : "", d = s === 0 ? "pl-[2px]" : "pl-[8px]", c = i && v.toLowerCase().includes(h.toLowerCase()), o = i ? !0 : e.isOpen;
109
- return /* @__PURE__ */ A("div", { className: "relative", children: [
110
- /* @__PURE__ */ A(
136
+ const p = f.length > 0, h = a != null && e.id === a, S = p && (u || (e.isOpen ?? !1)), b = !p && !!(o != null && o(e)), A = (m) => {
137
+ if (m.stopPropagation(), b) {
138
+ n == null || n(e);
139
+ return;
140
+ }
141
+ p && (u || i(e, t), n == null || n(e));
142
+ }, x = r === 0 ? "pl-[6px]" : "", d = r === 0 ? "pl-[2px]" : "pl-[8px]", g = u && y.toLowerCase().includes(c.toLowerCase()), $ = u ? !0 : e.isOpen;
143
+ return /* @__PURE__ */ N("div", { className: "relative", children: [
144
+ /* @__PURE__ */ N(
111
145
  "div",
112
146
  {
113
- className: `flex h-[28px] w-full items-center pr-[8px] rounded-sm ${a} ${c ? "bg-(--color-bg-secondary)" : ""} ${y ? "cursor-pointer hover:bg-(--color-bg-secondary)" : ""}`,
114
- onClick: b,
147
+ className: `flex h-[28px] w-full items-center pr-[8px] rounded-sm ${x} ${g ? "bg-(--color-bg-secondary)" : ""} ${p ? "cursor-pointer hover:bg-(--color-bg-secondary)" : ""} ${b ? "cursor-pointer" : ""}`,
148
+ onClick: A,
115
149
  children: [
116
- s > 0 && Array.from({ length: s }).map((p, u) => /* @__PURE__ */ r(D, {}, u)),
117
- y ? /* @__PURE__ */ r(
150
+ r > 0 && Array.from({ length: r }).map((m, w) => /* @__PURE__ */ s(G, {}, w)),
151
+ p ? /* @__PURE__ */ s(
118
152
  "div",
119
153
  {
120
- className: `flex flex-col h-full items-center shrink-0 ${d} ${o ? "justify-end" : "justify-center"}`,
121
- children: o ? /* @__PURE__ */ A(E, { children: [
122
- /* @__PURE__ */ r(
123
- K,
154
+ className: `flex flex-col h-full items-center shrink-0 ${d} ${$ ? "justify-end" : "justify-center"}`,
155
+ children: $ ? /* @__PURE__ */ N(D, { children: [
156
+ /* @__PURE__ */ s(
157
+ B,
124
158
  {
125
159
  className: "shrink-0 text-(--color-gray-400)",
126
- style: { width: N, height: N }
160
+ style: { width: T, height: T }
127
161
  }
128
162
  ),
129
- /* @__PURE__ */ r("div", { className: "relative h-[8px] w-0 shrink-0", children: /* @__PURE__ */ r(
163
+ /* @__PURE__ */ s("div", { className: "relative h-[8px] w-0 shrink-0", children: /* @__PURE__ */ s(
130
164
  "div",
131
165
  {
132
166
  className: "absolute inset-y-0 bg-(--color-border-secondary)",
133
167
  style: { left: "-0.5px", width: 1 }
134
168
  }
135
169
  ) })
136
- ] }) : /* @__PURE__ */ r(
137
- V,
170
+ ] }) : /* @__PURE__ */ s(
171
+ F,
138
172
  {
139
173
  className: "shrink-0 text-(--color-gray-400)",
140
- style: { width: N, height: N }
174
+ style: { width: T, height: T }
141
175
  }
142
176
  )
143
177
  }
144
- ) : s > 0 ? /* @__PURE__ */ r("div", { className: "h-full w-[6px] shrink-0" }) : null,
145
- /* @__PURE__ */ r("div", { className: "flex flex-1 h-full items-center min-w-0 pl-[2px]", children: /* @__PURE__ */ r(x, { node: e, isSelected: t }) })
178
+ ) : r > 0 ? /* @__PURE__ */ s("div", { className: "h-full w-[6px] shrink-0" }) : null,
179
+ /* @__PURE__ */ s("div", { className: "flex flex-1 h-full items-center min-w-0 pl-[2px]", children: /* @__PURE__ */ s(l, { node: e, isSelected: h }) })
146
180
  ]
147
181
  }
148
182
  ),
149
- w && /* @__PURE__ */ r("div", { className: "relative", children: g.map((p, u) => /* @__PURE__ */ r(
150
- S,
183
+ S && /* @__PURE__ */ s("div", { className: "relative", children: f.map((m, w) => /* @__PURE__ */ s(
184
+ R,
151
185
  {
152
- node: p,
153
- parentId: `${l}-${u}`,
154
- depth: s + 1,
155
- handleToggle: m,
186
+ node: m,
187
+ parentId: `${t}-${w}`,
188
+ depth: r + 1,
189
+ handleToggle: i,
156
190
  onNodeClick: n,
157
- selectedNodeId: f,
158
- CustomNode: x,
159
- query: h
191
+ selectedNodeId: a,
192
+ CustomNode: l,
193
+ query: c,
194
+ isLeafClickable: o
160
195
  },
161
- p.id || `${l}-${u}`
196
+ m.id || `${t}-${w}`
162
197
  )) })
163
198
  ] });
164
199
  };
165
200
  export {
166
- I as TreeView,
167
- C as buildTreeViewNodes
201
+ J as TreeView,
202
+ E as buildTreeViewNodes
168
203
  };
@@ -113,7 +113,7 @@ const H = ({
113
113
  root: "gap-2",
114
114
  textWrapper: c,
115
115
  label: e("text-xs font-medium", o),
116
- hint: "text-[11px]"
116
+ hint: "text-2xs"
117
117
  },
118
118
  md: {
119
119
  root: "gap-3",
@@ -1,8 +1,8 @@
1
1
  import { jsx as o } from "react/jsx-runtime";
2
- import { cx as m } from "../../utils/cn.js";
3
- import { Text as s } from "react-aria-components";
2
+ import { cx as s } from "../../utils/cn.js";
3
+ import { Text as m } from "react-aria-components";
4
4
  const i = {
5
- sm: "text-[11px]",
5
+ sm: "text-2xs",
6
6
  md: "text-xs",
7
7
  lg: "text-xs"
8
8
  }, p = ({
@@ -11,11 +11,11 @@ const i = {
11
11
  className: e,
12
12
  ...x
13
13
  }) => /* @__PURE__ */ o(
14
- s,
14
+ m,
15
15
  {
16
16
  ...x,
17
17
  slot: t ? "errorMessage" : "description",
18
- className: m(
18
+ className: s(
19
19
  "text-tertiary",
20
20
  i[r],
21
21
  // Invalid state
@@ -1,6 +1,6 @@
1
1
  import { jsx as s, jsxs as M, Fragment as me } from "react/jsx-runtime";
2
2
  import { useId as ge, useCallback as L, useMemo as B, useRef as G, useState as ue, createContext as we, useContext as H, useLayoutEffect as ye } from "react";
3
- import { useFilter as be, useInteractOutside as xe, FocusScope as ve, useFocusManager as De } from "react-aria";
3
+ import { useFilter as be, useInteractOutside as ve, FocusScope as xe, useFocusManager as De } from "react-aria";
4
4
  import { ChevronDown as Ne, SearchMd as ke } from "@untitledui/icons";
5
5
  import { ComboBox as Te, ListBox as Se, ComboBoxStateContext as Z, ButtonContext as ee, Group as Re, Input as Fe } from "react-aria-components";
6
6
  import { useListData as Ae } from "../../node_modules/react-stately/dist/private/data/useListData.js";
@@ -44,7 +44,7 @@ function $e({
44
44
  popoverRef: y
45
45
  }) {
46
46
  const d = H(Z);
47
- return xe({
47
+ return ve({
48
48
  ref: y,
49
49
  isDisabled: !(d != null && d.isOpen),
50
50
  onInteractOutside: (m) => {
@@ -169,7 +169,7 @@ const Ue = ({
169
169
  ...f
170
170
  }) => {
171
171
  var ae;
172
- const _ = ge(), { contains: V } = be({ sensitivity: "base" }), E = (ae = m == null ? void 0 : m.items) != null && ae.length ? m.items.map((n) => n.id) : [], v = L(
172
+ const _ = ge(), { contains: V } = be({ sensitivity: "base" }), E = (ae = m == null ? void 0 : m.items) != null && ae.length ? m.items.map((n) => n.id) : [], x = L(
173
173
  (n) => E.some((i) => String(i) === String(n)),
174
174
  [E]
175
175
  ), X = L(
@@ -179,9 +179,9 @@ const Ue = ({
179
179
  i,
180
180
  V
181
181
  );
182
- return (R || !v(n.id)) && A;
182
+ return (R || !x(n.id)) && A;
183
183
  },
184
- [V, v, R]
184
+ [V, x, R]
185
185
  ), w = Ae({
186
186
  initialItems: c,
187
187
  filter: X
@@ -190,34 +190,34 @@ const Ue = ({
190
190
  ) : c : [], [c, z, w.filterText, V]), P = B(() => {
191
191
  if (D.length === 0) return "unselected";
192
192
  const n = D.filter(
193
- (i) => v(i.id)
193
+ (i) => x(i.id)
194
194
  ).length;
195
195
  return n === 0 ? "unselected" : n === D.length ? "selected" : "indeterminate";
196
- }, [D, v]), t = G(!1), N = L(() => {
196
+ }, [D, x]), t = G(!1), N = L(() => {
197
197
  t.current = !0, setTimeout(() => {
198
198
  t.current = !1;
199
199
  }, 0);
200
200
  }, []), J = L(() => {
201
201
  N();
202
- const n = P !== "selected", i = D.map((x) => x.id), A = new Set(i.map(String)), K = n ? [.../* @__PURE__ */ new Set([...E, ...i])] : E.filter((x) => !A.has(String(x))), W = D.filter((x) => !v(x.id)), U = D.filter((x) => v(x.id)).map((x) => x.id);
202
+ const n = P !== "selected", i = D.map((v) => v.id), A = new Set(i.map(String)), K = n ? [.../* @__PURE__ */ new Set([...E, ...i])] : E.filter((v) => !A.has(String(v))), W = D.filter((v) => !x(v.id)), U = D.filter((v) => x(v.id)).map((v) => v.id);
203
203
  if (n && W.length > 0 ? m.append(...W) : !n && U.length > 0 && m.remove(...U), T) {
204
204
  T(K);
205
205
  return;
206
206
  }
207
207
  if (n) {
208
- for (const x of D)
209
- v(x.id) || b == null || b(x.id);
208
+ for (const v of D)
209
+ x(v.id) || b == null || b(v.id);
210
210
  return;
211
211
  }
212
- for (const x of D)
213
- v(x.id) && (l == null || l(x.id));
212
+ for (const v of D)
213
+ x(v.id) && (l == null || l(v.id));
214
214
  }, [
215
215
  N,
216
216
  P,
217
217
  D,
218
218
  E,
219
219
  m,
220
- v,
220
+ x,
221
221
  T,
222
222
  b,
223
223
  l
@@ -238,7 +238,7 @@ const Ue = ({
238
238
  }, 0);
239
239
  const A = w.getItem(n) ?? (c == null ? void 0 : c.find((K) => String(K.id) === String(n)));
240
240
  if (A) {
241
- if (v(n)) {
241
+ if (x(n)) {
242
242
  const K = E.find((W) => String(W) === i) ?? n;
243
243
  m.remove(K), l == null || l(K);
244
244
  } else
@@ -313,7 +313,7 @@ const Ue = ({
313
313
  className: k(
314
314
  "text-tertiary",
315
315
  ce[d],
316
- "-mt-0.5 leading-[18px]"
316
+ "-mt-0.5 leading-4.5"
317
317
  ),
318
318
  children: j
319
319
  }
@@ -510,7 +510,7 @@ const Ue = ({
510
510
  e == null || e.close();
511
511
  break;
512
512
  }
513
- }, v = ((z = (w = a == null ? void 0 : a.selectedItems) == null ? void 0 : w.items) == null ? void 0 : z.length) === 0;
513
+ }, x = ((z = (w = a == null ? void 0 : a.selectedItems) == null ? void 0 : w.items) == null ? void 0 : z.length) === 0;
514
514
  return /* @__PURE__ */ M("div", { className: "relative min-w-0 w-full flex-1", children: [
515
515
  /* @__PURE__ */ M(
516
516
  "div",
@@ -525,7 +525,7 @@ const Ue = ({
525
525
  ) : "flex-nowrap items-center overflow-x-auto overflow-y-hidden scrollbar-hide"
526
526
  ),
527
527
  children: [
528
- /* @__PURE__ */ s(ee.Provider, { value: null, children: !v && ((P = (D = a == null ? void 0 : a.selectedItems) == null ? void 0 : D.items) == null ? void 0 : P.map((t) => /* @__PURE__ */ M(
528
+ /* @__PURE__ */ s(ee.Provider, { value: null, children: !x && ((P = (D = a == null ? void 0 : a.selectedItems) == null ? void 0 : D.items) == null ? void 0 : P.map((t) => /* @__PURE__ */ M(
529
529
  "span",
530
530
  {
531
531
  "data-multiselect-chip": !0,
@@ -575,7 +575,7 @@ const Ue = ({
575
575
  className: k(
576
576
  "relative flex flex-1 flex-row items-center",
577
577
  o ? "min-w-[20%]" : "min-w-0",
578
- !v && "ml-0.5",
578
+ !x && "ml-0.5",
579
579
  y && "min-w-[30%]"
580
580
  ),
581
581
  children: [
@@ -583,7 +583,7 @@ const Ue = ({
583
583
  Fe,
584
584
  {
585
585
  ref: T,
586
- placeholder: v ? m : void 0,
586
+ placeholder: x ? m : void 0,
587
587
  onKeyDown: F,
588
588
  onMouseDown: _,
589
589
  onFocus: V,
@@ -692,7 +692,7 @@ const Ue = ({
692
692
  },
693
693
  children: ({ isDisabled: u, isFocusWithin: h }) => /* @__PURE__ */ M(me, { children: [
694
694
  l && /* @__PURE__ */ s(l, { className: "pointer-events-none size-5 shrink-0 text-fg-quaternary" }),
695
- /* @__PURE__ */ s(ve, { contain: !1, autoFocus: !1, restoreFocus: !1, children: /* @__PURE__ */ s("div", { className: "min-w-0 flex-1", children: /* @__PURE__ */ s(
695
+ /* @__PURE__ */ s(xe, { contain: !1, autoFocus: !1, restoreFocus: !1, children: /* @__PURE__ */ s("div", { className: "min-w-0 flex-1", children: /* @__PURE__ */ s(
696
696
  Je,
697
697
  {
698
698
  inputRef: g,