@solibo/solibo-ui 1.0.14 → 1.0.16

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 (206) hide show
  1. package/dist/assets/index.css +1 -1
  2. package/dist/assets/index10.css +1 -1
  3. package/dist/assets/index12.css +1 -1
  4. package/dist/assets/index13.css +1 -1
  5. package/dist/assets/index14.css +1 -1
  6. package/dist/assets/index15.css +1 -1
  7. package/dist/assets/index16.css +1 -1
  8. package/dist/assets/index17.css +1 -1
  9. package/dist/assets/index18.css +1 -1
  10. package/dist/assets/index19.css +0 -1
  11. package/dist/assets/index20.css +1 -1
  12. package/dist/assets/index21.css +1 -0
  13. package/dist/assets/index22.css +1 -1
  14. package/dist/assets/index23.css +1 -1
  15. package/dist/assets/index24.css +1 -1
  16. package/dist/assets/index25.css +1 -1
  17. package/dist/assets/index26.css +1 -1
  18. package/dist/assets/index27.css +1 -1
  19. package/dist/assets/index28.css +1 -1
  20. package/dist/assets/index29.css +1 -1
  21. package/dist/assets/index3.css +1 -1
  22. package/dist/assets/index30.css +1 -1
  23. package/dist/assets/index31.css +1 -1
  24. package/dist/assets/index32.css +1 -1
  25. package/dist/assets/index33.css +1 -1
  26. package/dist/assets/index34.css +1 -1
  27. package/dist/assets/index35.css +1 -1
  28. package/dist/assets/index36.css +1 -1
  29. package/dist/assets/index37.css +1 -1
  30. package/dist/assets/index38.css +1 -1
  31. package/dist/assets/index39.css +1 -1
  32. package/dist/assets/index4.css +1 -1
  33. package/dist/assets/index40.css +1 -1
  34. package/dist/assets/index41.css +1 -1
  35. package/dist/assets/index42.css +1 -1
  36. package/dist/assets/index43.css +1 -1
  37. package/dist/assets/index44.css +1 -1
  38. package/dist/assets/index45.css +1 -1
  39. package/dist/assets/index46.css +1 -1
  40. package/dist/assets/index47.css +1 -1
  41. package/dist/assets/index48.css +1 -1
  42. package/dist/assets/index49.css +1 -1
  43. package/dist/assets/index50.css +1 -1
  44. package/dist/assets/index51.css +1 -1
  45. package/dist/assets/index6.css +1 -1
  46. package/dist/assets/index8.css +1 -1
  47. package/dist/assets/index9.css +1 -1
  48. package/dist/assets/menu-popover.css +1 -0
  49. package/dist/components/app-link/index.cjs +1 -1
  50. package/dist/components/app-link/index.js +8 -8
  51. package/dist/components/aside/index.cjs +1 -1
  52. package/dist/components/aside/index.js +11 -11
  53. package/dist/components/avatar/index.cjs +1 -1
  54. package/dist/components/avatar/index.cjs.map +1 -1
  55. package/dist/components/avatar/index.js +58 -58
  56. package/dist/components/badge/index.cjs +1 -1
  57. package/dist/components/badge/index.js +27 -27
  58. package/dist/components/banner/index.cjs +1 -1
  59. package/dist/components/banner/index.js +14 -14
  60. package/dist/components/branding/index.cjs +1 -1
  61. package/dist/components/branding/index.js +1 -1
  62. package/dist/components/button/index.cjs +1 -1
  63. package/dist/components/button/index.js +18 -18
  64. package/dist/components/card/index.cjs +1 -1
  65. package/dist/components/card/index.js +46 -46
  66. package/dist/components/checkbox/index.cjs +1 -1
  67. package/dist/components/checkbox/index.js +7 -7
  68. package/dist/components/chip/index.cjs +1 -1
  69. package/dist/components/chip/index.cjs.map +1 -1
  70. package/dist/components/chip/index.js +27 -26
  71. package/dist/components/chip/index.js.map +1 -1
  72. package/dist/components/collapsible/index.cjs +1 -1
  73. package/dist/components/collapsible/index.cjs.map +1 -1
  74. package/dist/components/collapsible/index.js +18 -37
  75. package/dist/components/collapsible/index.js.map +1 -1
  76. package/dist/components/controls/index.cjs +1 -1
  77. package/dist/components/controls/index.cjs.map +1 -1
  78. package/dist/components/controls/index.js +128 -36
  79. package/dist/components/controls/index.js.map +1 -1
  80. package/dist/components/croppable/index.cjs +1 -1
  81. package/dist/components/croppable/index.js +181 -181
  82. package/dist/components/dialog/index.cjs +1 -1
  83. package/dist/components/dialog/index.js +31 -31
  84. package/dist/components/dropdown/index.cjs +1 -1
  85. package/dist/components/dropdown/index.cjs.map +1 -1
  86. package/dist/components/dropdown/index.js +113 -110
  87. package/dist/components/dropdown/index.js.map +1 -1
  88. package/dist/components/dropzone/index.cjs +1 -1
  89. package/dist/components/dropzone/index.js +1 -1
  90. package/dist/components/editor/index.cjs +16 -16
  91. package/dist/components/editor/index.cjs.map +1 -1
  92. package/dist/components/editor/index.js +197 -197
  93. package/dist/components/empty-state/index.cjs +1 -1
  94. package/dist/components/empty-state/index.js +1 -1
  95. package/dist/components/fieldset/index.cjs +1 -1
  96. package/dist/components/fieldset/index.js +1 -1
  97. package/dist/components/figure/index.cjs +1 -1
  98. package/dist/components/figure/index.js +1 -1
  99. package/dist/components/file/index.cjs +1 -1
  100. package/dist/components/file/index.cjs.map +1 -1
  101. package/dist/components/file/index.js +38 -34
  102. package/dist/components/file/index.js.map +1 -1
  103. package/dist/components/footer/index.cjs +1 -1
  104. package/dist/components/footer/index.js +1 -1
  105. package/dist/components/form/index.cjs +1 -1
  106. package/dist/components/form/index.js +1 -1
  107. package/dist/components/graph/index.cjs +1 -1
  108. package/dist/components/graph/index.js +1 -1
  109. package/dist/components/group/index.cjs +1 -1
  110. package/dist/components/group/index.js +1 -1
  111. package/dist/components/header/index.cjs +1 -1
  112. package/dist/components/header/index.cjs.map +1 -1
  113. package/dist/components/header/index.js +14 -14
  114. package/dist/components/icon/index.cjs +1 -1
  115. package/dist/components/icon/index.js +20 -20
  116. package/dist/components/iframe/index.cjs +1 -1
  117. package/dist/components/iframe/index.js +1 -1
  118. package/dist/components/image/index.cjs +1 -1
  119. package/dist/components/image/index.js +1 -1
  120. package/dist/components/input/index.cjs +1 -1
  121. package/dist/components/input/index.js +3 -3
  122. package/dist/components/link/index.cjs +1 -1
  123. package/dist/components/link/index.js +1 -1
  124. package/dist/components/list/index.cjs +1 -1
  125. package/dist/components/list/index.cjs.map +1 -1
  126. package/dist/components/list/index.js +39 -36
  127. package/dist/components/list/index.js.map +1 -1
  128. package/dist/components/loading/index.cjs +1 -1
  129. package/dist/components/loading/index.js +11 -11
  130. package/dist/components/menu/index.cjs +1 -1
  131. package/dist/components/menu/index.cjs.map +1 -1
  132. package/dist/components/menu/index.js +37 -87
  133. package/dist/components/menu/index.js.map +1 -1
  134. package/dist/components/message/index.cjs +1 -1
  135. package/dist/components/message/index.cjs.map +1 -1
  136. package/dist/components/message/index.js +26 -26
  137. package/dist/components/messages/index.cjs +1 -1
  138. package/dist/components/messages/index.js +20 -20
  139. package/dist/components/nav/index.cjs +1 -1
  140. package/dist/components/nav/index.js +25 -25
  141. package/dist/components/popover/index.cjs +1 -1
  142. package/dist/components/popover/index.cjs.map +1 -1
  143. package/dist/components/popover/index.js +56 -60
  144. package/dist/components/popover/index.js.map +1 -1
  145. package/dist/components/portal/index.cjs +1 -1
  146. package/dist/components/portal/index.js +7 -7
  147. package/dist/components/search/index.cjs +1 -1
  148. package/dist/components/search/index.cjs.map +1 -1
  149. package/dist/components/search/index.js +43 -45
  150. package/dist/components/search/index.js.map +1 -1
  151. package/dist/components/select/index.cjs +1 -1
  152. package/dist/components/select/index.js +3 -3
  153. package/dist/components/sortable/index.cjs +1 -1
  154. package/dist/components/sortable/index.js +74 -74
  155. package/dist/components/textarea/index.cjs +1 -1
  156. package/dist/components/textarea/index.cjs.map +1 -1
  157. package/dist/components/textarea/index.js +24 -20
  158. package/dist/components/textarea/index.js.map +1 -1
  159. package/dist/components/toasts/index.cjs +1 -1
  160. package/dist/components/toasts/index.js +4 -4
  161. package/dist/components/toggle/index.cjs +1 -1
  162. package/dist/components/toggle/index.js +6 -6
  163. package/dist/components/toolbar/index.cjs +1 -1
  164. package/dist/components/toolbar/index.js +1 -1
  165. package/dist/components/tooltip/index.cjs +1 -1
  166. package/dist/components/tooltip/index.js +1 -1
  167. package/dist/icons-DaZGJzI0.cjs +2 -0
  168. package/dist/icons-DaZGJzI0.cjs.map +1 -0
  169. package/dist/{icons-Bq3diTRm.js → icons-Dj0vEOCB.js} +2 -1
  170. package/dist/icons-Dj0vEOCB.js.map +1 -0
  171. package/dist/index-BIV5OwVJ.js +76 -0
  172. package/dist/index-BIV5OwVJ.js.map +1 -0
  173. package/dist/index-CQNlYa2P.cjs +2 -0
  174. package/dist/index-CQNlYa2P.cjs.map +1 -0
  175. package/dist/{index-DwzLUapm.js → index-CgA0NUMD.js} +35 -33
  176. package/dist/index-CgA0NUMD.js.map +1 -0
  177. package/dist/index-Dn1v0qm6.cjs +2 -0
  178. package/dist/index-Dn1v0qm6.cjs.map +1 -0
  179. package/dist/index.cjs +1 -1
  180. package/dist/index.d.ts +32 -9
  181. package/dist/index.js +2 -2
  182. package/dist/menu-popover-D1ALaiV5.cjs +2 -0
  183. package/dist/menu-popover-D1ALaiV5.cjs.map +1 -0
  184. package/dist/menu-popover-DQHDIw-8.js +74 -0
  185. package/dist/menu-popover-DQHDIw-8.js.map +1 -0
  186. package/dist/tokens.json +1 -1
  187. package/dist/use-touched-B999bBr8.js +20 -0
  188. package/dist/use-touched-B999bBr8.js.map +1 -0
  189. package/dist/use-touched-Bq5Gjbpz.cjs +2 -0
  190. package/dist/use-touched-Bq5Gjbpz.cjs.map +1 -0
  191. package/package.json +1 -1
  192. package/dist/assets/index52.css +0 -1
  193. package/dist/icons-Bq3diTRm.js.map +0 -1
  194. package/dist/icons-ovA21Oao.cjs +0 -2
  195. package/dist/icons-ovA21Oao.cjs.map +0 -1
  196. package/dist/index-BcY9DZZ8.cjs +0 -2
  197. package/dist/index-BcY9DZZ8.cjs.map +0 -1
  198. package/dist/index-CjI8oRpS.cjs +0 -2
  199. package/dist/index-CjI8oRpS.cjs.map +0 -1
  200. package/dist/index-ClZkChEh.js +0 -73
  201. package/dist/index-ClZkChEh.js.map +0 -1
  202. package/dist/index-DwzLUapm.js.map +0 -1
  203. package/dist/use-touched-DXIJVVzz.js +0 -14
  204. package/dist/use-touched-DXIJVVzz.js.map +0 -1
  205. package/dist/use-touched-D_TJ8wDc.cjs +0 -2
  206. package/dist/use-touched-D_TJ8wDc.cjs.map +0 -1
@@ -1,86 +1,84 @@
1
1
  import { jsxs as c, jsx as i } from "react/jsx-runtime";
2
- import { useId as B, useState as E, useMemo as H } from "react";
3
- import { Button as f } from "../button/index.js";
4
- import { Checkbox as K } from "../checkbox/index.js";
5
- import { Chip as S } from "../chip/index.js";
6
- import { Collapsible as T } from "../collapsible/index.js";
7
- import { Controls as q } from "../controls/index.js";
8
- import { Dialog as z } from "../dialog/index.js";
9
- import { Header as A } from "../header/index.js";
10
- import { I as J } from "../../index-ClZkChEh.js";
11
- import '../../assets/index9.css';const L = "_search_bp8f4_3", P = "_controls_bp8f4_15", Q = "_chips_bp8f4_29", U = "_radio_bp8f4_84", o = {
12
- search: L,
13
- controls: P,
14
- chips: Q,
15
- "filter-dialog": "_filter-dialog_bp8f4_36",
16
- "filter-groups": "_filter-groups_bp8f4_41",
17
- "filter-group": "_filter-group_bp8f4_41",
18
- "filter-option": "_filter-option_bp8f4_66",
19
- "option-copy": "_option-copy_bp8f4_72",
20
- radio: U,
21
- "collapsible-options": "_collapsible-options_bp8f4_111"
22
- }, ea = ({
23
- closeLabel: D = "Close",
24
- filterButtonLabel: _ = "Filters",
25
- filterDialogColumns: M = 1,
26
- filterDialogTitle: w = "Filters",
2
+ import { useId as H, useState as S, useMemo as T } from "react";
3
+ import { Button as _ } from "../button/index.js";
4
+ import { Checkbox as q } from "../checkbox/index.js";
5
+ import { Chip as z } from "../chip/index.js";
6
+ import { Collapsible as A } from "../collapsible/index.js";
7
+ import { Controls as E } from "../controls/index.js";
8
+ import { Dialog as J } from "../dialog/index.js";
9
+ import { Header as K } from "../header/index.js";
10
+ import { I as L } from "../../index-BIV5OwVJ.js";
11
+ import '../../assets/index9.css';const P = "_search_1rde5_3", Q = "_controls_1rde5_15", U = "_chips_1rde5_35", V = "_radio_1rde5_101", o = {
12
+ search: P,
13
+ controls: Q,
14
+ chips: U,
15
+ "filter-dialog": "_filter-dialog_1rde5_42",
16
+ "filter-groups": "_filter-groups_1rde5_47",
17
+ "filter-group": "_filter-group_1rde5_47",
18
+ "filter-option": "_filter-option_1rde5_83",
19
+ "option-copy": "_option-copy_1rde5_89",
20
+ radio: V,
21
+ "collapsible-options": "_collapsible-options_1rde5_128"
22
+ }, la = ({
23
+ closeLabel: M = "Close",
24
+ filterButtonLabel: v = "Filters",
25
+ filterDialogColumns: C = 1,
26
+ filterDialogTitle: D = "Filters",
27
27
  filterGroups: d = [],
28
- onChange: C,
28
+ onChange: O,
29
29
  onSelectedFiltersChange: t,
30
- removeFilterLabel: O = (n) => `Remove ${n.label} filter`,
30
+ removeFilterLabel: w = (s) => `Remove ${s.label} filter`,
31
31
  resetLabel: x = "Reset",
32
32
  searchLabel: I = "Search",
33
33
  searchPlaceholder: j = "Search",
34
34
  selectedFilters: r = [],
35
- value: u = ""
35
+ value: R = ""
36
36
  }) => {
37
- const n = B(), [v, m] = E(!1), R = H(() => new Map(d.flatMap((a) => {
37
+ const s = H(), [f, m] = S(!1), B = T(() => new Map(d.flatMap((a) => {
38
38
  var l;
39
39
  return [...a.options, ...((l = a.collapsible) == null ? void 0 : l.options) ?? []];
40
40
  }).map((a) => [a.value, a])), [d]), h = r.flatMap((a) => {
41
- const l = R.get(a);
41
+ const l = B.get(a);
42
42
  return l ? [l] : [];
43
43
  }), p = (a, l, e) => {
44
44
  var $;
45
45
  if (!t) return;
46
- const b = /* @__PURE__ */ new Set([...(e == null ? void 0 : e.options.map((s) => s.value)) ?? [], ...(($ = e == null ? void 0 : e.collapsible) == null ? void 0 : $.options.map((s) => s.value)) ?? []]), k = r.filter((s) => !b.has(s));
46
+ const b = /* @__PURE__ */ new Set([...(e == null ? void 0 : e.options.map((n) => n.value)) ?? [], ...(($ = e == null ? void 0 : e.collapsible) == null ? void 0 : $.options.map((n) => n.value)) ?? []]), k = r.filter((n) => !b.has(n));
47
47
  if (l && (e == null ? void 0 : e.defaultValue) === a) {
48
48
  t(k);
49
49
  return;
50
50
  }
51
- t(l ? (e == null ? void 0 : e.control) === "radio" || (e == null ? void 0 : e.selectionMode) === "single" ? [...k, a] : [.../* @__PURE__ */ new Set([...r, a])] : r.filter((s) => s !== a));
51
+ t(l ? (e == null ? void 0 : e.control) === "radio" || (e == null ? void 0 : e.selectionMode) === "single" ? [...k, a] : [.../* @__PURE__ */ new Set([...r, a])] : r.filter((n) => n !== a));
52
52
  }, y = (a, l) => {
53
53
  var e;
54
54
  return r.includes(a) || l.defaultValue === a && ![...l.options, ...((e = l.collapsible) == null ? void 0 : e.options) ?? []].some((b) => r.includes(b.value));
55
55
  }, N = (a, l) => /* @__PURE__ */ i("div", { className: o["filter-option"], "data-component": "renderfilter", children: l.control === "radio" ? /* @__PURE__ */ c("label", { className: o.radio, children: [
56
- /* @__PURE__ */ i("input", { checked: y(a.value, l), name: `${n}-filter-${l.label ?? "group"}`, onChange: (e) => p(a.value, e.target.checked, l), type: "radio" }),
56
+ /* @__PURE__ */ i("input", { checked: y(a.value, l), name: `${s}-filter-${l.label ?? "group"}`, onChange: (e) => p(a.value, e.target.checked, l), type: "radio" }),
57
57
  /* @__PURE__ */ c("span", { className: o["option-copy"], children: [
58
58
  a.label,
59
59
  a.description && /* @__PURE__ */ i("sub", { children: a.description })
60
60
  ] })
61
- ] }) : /* @__PURE__ */ i(K, { checked: y(a.value, l), label: /* @__PURE__ */ c("span", { className: o["option-copy"], children: [
61
+ ] }) : /* @__PURE__ */ i(q, { checked: y(a.value, l), label: /* @__PURE__ */ c("span", { className: o["option-copy"], children: [
62
62
  a.label,
63
63
  a.description && /* @__PURE__ */ i("sub", { children: a.description })
64
64
  ] }), onChange: (e) => p(a.value, e.target.checked, l) }) }, a.value);
65
65
  return /* @__PURE__ */ c("div", { className: o.search, "data-component": "search", children: [
66
66
  /* @__PURE__ */ c("div", { className: o.controls, children: [
67
- /* @__PURE__ */ i(J, { "aria-label": I, icon: "search", onChange: (a) => C(a.target.value), placeholder: j, type: "search", value: u }),
68
- d.length > 0 && /* @__PURE__ */ i(f, { "aria-expanded": v, "aria-haspopup": "dialog", badge: h.length, icon: "funnel", onClick: () => m(!0), variant: "tertiary", children: _ })
67
+ /* @__PURE__ */ i(L, { "aria-label": I, icon: "search", onChange: (a) => O(a.target.value), placeholder: j, type: "search", value: R }),
68
+ d.length > 0 && /* @__PURE__ */ i(_, { "aria-expanded": f, "aria-haspopup": "dialog", badge: h.length, icon: "funnel", onClick: () => m(!0), variant: "tertiary", children: v })
69
69
  ] }),
70
- h.length > 0 && /* @__PURE__ */ c("div", { "aria-label": _, className: o.chips, children: [
71
- h.map((a) => /* @__PURE__ */ i(S, { accessibleLabel: O(a), label: a.label, onDelete: () => p(a.value, !1), onKeyDown: (l) => {
72
- (l.key === "Enter" || l.key === " ") && (l.preventDefault(), p(a.value, !1));
73
- }, role: "button" }, a.value)),
74
- /* @__PURE__ */ i(f, { onClick: () => t == null ? void 0 : t([]), variant: "tertiary", children: x })
70
+ h.length > 0 && /* @__PURE__ */ c("div", { "aria-label": v, className: o.chips, children: [
71
+ h.map((a) => /* @__PURE__ */ i(z, { accessibleLabel: w(a), label: a.label, onDelete: () => p(a.value, !1) }, a.value)),
72
+ /* @__PURE__ */ i(_, { onClick: () => t == null ? void 0 : t([]), variant: "tertiary", children: x })
75
73
  ] }),
76
- v && /* @__PURE__ */ i(z, { "aria-labelledby": n, className: o["filter-dialog"], controls: /* @__PURE__ */ i(q, { children: /* @__PURE__ */ i(f, { onClick: () => m(!1), children: D }) }), header: /* @__PURE__ */ i(A, { children: /* @__PURE__ */ i("h2", { id: n, children: w }) }), open: !0, setOpen: m, children: /* @__PURE__ */ i("div", { className: o["filter-groups"], "data-columns": M, children: d.map((a, l) => /* @__PURE__ */ c("section", { "aria-labelledby": a.label ? `${n}-${l}` : void 0, className: o["filter-group"], "data-column-span": a.columnSpan ?? 1, role: a.control === "radio" ? "radiogroup" : "group", children: [
77
- a.label && /* @__PURE__ */ i("h3", { id: `${n}-${l}`, children: a.label }),
74
+ f && /* @__PURE__ */ i(J, { "aria-labelledby": s, className: o["filter-dialog"], controls: /* @__PURE__ */ i(E, { children: /* @__PURE__ */ i(_, { onClick: () => m(!1), children: M }) }), header: /* @__PURE__ */ i(K, { children: /* @__PURE__ */ i("h2", { id: s, children: D }) }), open: !0, setOpen: m, children: /* @__PURE__ */ i("div", { className: o["filter-groups"], "data-columns": C, children: d.map((a, l) => /* @__PURE__ */ c("section", { "aria-labelledby": a.label ? `${s}-${l}` : void 0, className: o["filter-group"], "data-column-span": a.columnSpan ?? 1, role: a.control === "radio" ? "radiogroup" : "group", children: [
75
+ a.label && /* @__PURE__ */ i("h3", { id: `${s}-${l}`, children: a.label }),
78
76
  a.options.map((e) => N(e, a)),
79
- a.collapsible && /* @__PURE__ */ i(T, { summary: a.collapsible.label, children: /* @__PURE__ */ i("div", { className: o["collapsible-options"], children: a.collapsible.options.map((e) => N(e, a)) }) })
77
+ a.collapsible && /* @__PURE__ */ i(A, { summary: a.collapsible.label, children: /* @__PURE__ */ i("div", { className: o["collapsible-options"], children: a.collapsible.options.map((e) => N(e, a)) }) })
80
78
  ] }, a.label ?? l)) }) })
81
79
  ] });
82
80
  };
83
81
  export {
84
- ea as Search
82
+ la as Search
85
83
  };
86
84
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/components/search/index.tsx"],"sourcesContent":["import { useId, useMemo, useState } from 'react';\n\nimport { Button } from '../button';\nimport { Checkbox } from '../checkbox';\nimport { Chip } from '../chip';\nimport { Collapsible } from '../collapsible';\nimport { Controls } from '../controls';\nimport { Dialog } from '../dialog';\nimport { Header } from '../header';\nimport { Input } from '../input';\nimport styles from './styles.module.css';\n\nexport type SearchFilter = {\n description?: string;\n label: string;\n value: string;\n};\n\nexport type SearchFilterGroup = {\n collapsible?: {\n label: string;\n options: readonly SearchFilter[];\n };\n columnSpan?: 1 | 2;\n control?: 'checkbox' | 'radio';\n defaultValue?: string;\n label?: string;\n options: readonly SearchFilter[];\n selectionMode?: 'multiple' | 'single';\n};\n\nexport type SearchProps = {\n closeLabel?: string;\n filterButtonLabel?: string;\n filterDialogColumns?: 1 | 2;\n filterDialogTitle?: string;\n filterGroups?: readonly SearchFilterGroup[];\n onChange: (value: string) => void;\n onSelectedFiltersChange?: (selectedFilters: string[]) => void;\n removeFilterLabel?: (filter: SearchFilter) => string;\n resetLabel?: string;\n searchLabel?: string;\n searchPlaceholder?: string;\n selectedFilters?: readonly string[];\n value?: string;\n};\n\nexport const Search = ({\n closeLabel = 'Close',\n filterButtonLabel = 'Filters',\n filterDialogColumns = 1,\n filterDialogTitle = 'Filters',\n filterGroups = [],\n onChange,\n onSelectedFiltersChange,\n removeFilterLabel = (filter) => `Remove ${filter.label} filter`,\n resetLabel = 'Reset',\n searchLabel = 'Search',\n searchPlaceholder = 'Search',\n selectedFilters = [],\n value = '',\n}: SearchProps) => {\n const dialogTitleId = useId();\n const [isFilterDialogOpen, setIsFilterDialogOpen] = useState(false);\n const filtersByValue = useMemo(\n () =>\n new Map(\n filterGroups\n .flatMap((group) => [...group.options, ...(group.collapsible?.options ?? [])])\n .map((filter) => [filter.value, filter])\n ),\n [filterGroups]\n );\n const activeFilters = selectedFilters.flatMap((selectedFilter) => {\n const filter = filtersByValue.get(selectedFilter);\n\n return filter ? [filter] : [];\n });\n\n const setFilterSelected = (\n filterValue: string,\n isSelected: boolean,\n group?: SearchFilterGroup\n ) => {\n if (!onSelectedFiltersChange) return;\n\n const groupValues = new Set([\n ...(group?.options.map((filter) => filter.value) ?? []),\n ...(group?.collapsible?.options.map((filter) => filter.value) ?? []),\n ]);\n const filtersOutsideGroup = selectedFilters.filter(\n (selectedFilter) => !groupValues.has(selectedFilter)\n );\n\n if (isSelected && group?.defaultValue === filterValue) {\n onSelectedFiltersChange(filtersOutsideGroup);\n return;\n }\n\n onSelectedFiltersChange(\n isSelected\n ? group?.control === 'radio' || group?.selectionMode === 'single'\n ? [...filtersOutsideGroup, filterValue]\n : [...new Set([...selectedFilters, filterValue])]\n : selectedFilters.filter((selectedFilter) => selectedFilter !== filterValue)\n );\n };\n\n const isFilterSelected = (filterValue: string, group: SearchFilterGroup) =>\n selectedFilters.includes(filterValue) ||\n (group.defaultValue === filterValue &&\n ![...group.options, ...(group.collapsible?.options ?? [])].some((filter) =>\n selectedFilters.includes(filter.value)\n ));\n\n const renderFilter = (filter: SearchFilter, group: SearchFilterGroup) => (\n <div\n className={styles['filter-option']}\n key={filter.value}\n >\n {group.control === 'radio' ? (\n <label className={styles.radio}>\n <input\n checked={isFilterSelected(filter.value, group)}\n name={`${dialogTitleId}-filter-${group.label ?? 'group'}`}\n onChange={(event) => setFilterSelected(filter.value, event.target.checked, group)}\n type='radio'\n />\n <span className={styles['option-copy']}>\n {filter.label}\n {filter.description && <sub>{filter.description}</sub>}\n </span>\n </label>\n ) : (\n <Checkbox\n checked={isFilterSelected(filter.value, group)}\n label={\n <span className={styles['option-copy']}>\n {filter.label}\n {filter.description && <sub>{filter.description}</sub>}\n </span>\n }\n onChange={(event) => setFilterSelected(filter.value, event.target.checked, group)}\n />\n )}\n </div>\n );\n\n return (\n <div\n className={styles.search}\n data-component='search'\n >\n <div className={styles.controls}>\n <Input\n aria-label={searchLabel}\n icon='search'\n onChange={(event) => onChange(event.target.value)}\n placeholder={searchPlaceholder}\n type='search'\n value={value}\n />\n {filterGroups.length > 0 && (\n <Button\n aria-expanded={isFilterDialogOpen}\n aria-haspopup='dialog'\n badge={activeFilters.length}\n icon='funnel'\n onClick={() => setIsFilterDialogOpen(true)}\n variant='tertiary'\n >\n {filterButtonLabel}\n </Button>\n )}\n </div>\n {activeFilters.length > 0 && (\n <div\n aria-label={filterButtonLabel}\n className={styles.chips}\n >\n {activeFilters.map((filter) => (\n <Chip\n accessibleLabel={removeFilterLabel(filter)}\n key={filter.value}\n label={filter.label}\n onDelete={() => setFilterSelected(filter.value, false)}\n onKeyDown={(event) => {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n setFilterSelected(filter.value, false);\n }\n }}\n role='button'\n />\n ))}\n <Button\n onClick={() => onSelectedFiltersChange?.([])}\n variant='tertiary'\n >\n {resetLabel}\n </Button>\n </div>\n )}\n {isFilterDialogOpen && (\n <Dialog\n aria-labelledby={dialogTitleId}\n className={styles['filter-dialog']}\n controls={\n <Controls>\n <Button onClick={() => setIsFilterDialogOpen(false)}>{closeLabel}</Button>\n </Controls>\n }\n header={\n <Header>\n <h2 id={dialogTitleId}>{filterDialogTitle}</h2>\n </Header>\n }\n open\n setOpen={setIsFilterDialogOpen}\n >\n <div\n className={styles['filter-groups']}\n data-columns={filterDialogColumns}\n >\n {filterGroups.map((group, groupIndex) => (\n <section\n aria-labelledby={group.label ? `${dialogTitleId}-${groupIndex}` : undefined}\n className={styles['filter-group']}\n data-column-span={group.columnSpan ?? 1}\n key={group.label ?? groupIndex}\n role={group.control === 'radio' ? 'radiogroup' : 'group'}\n >\n {group.label && <h3 id={`${dialogTitleId}-${groupIndex}`}>{group.label}</h3>}\n {group.options.map((filter) => renderFilter(filter, group))}\n {group.collapsible && (\n <Collapsible summary={group.collapsible.label}>\n <div className={styles['collapsible-options']}>\n {group.collapsible.options.map((filter) => renderFilter(filter, group))}\n </div>\n </Collapsible>\n )}\n </section>\n ))}\n </div>\n </Dialog>\n )}\n </div>\n );\n};\n"],"names":["Search","closeLabel","filterButtonLabel","filterDialogColumns","filterDialogTitle","filterGroups","onChange","onSelectedFiltersChange","removeFilterLabel","filter","label","resetLabel","searchLabel","searchPlaceholder","selectedFilters","value","dialogTitleId","useId","isFilterDialogOpen","setIsFilterDialogOpen","useState","filtersByValue","useMemo","Map","flatMap","group","options","collapsible","map","activeFilters","selectedFilter","get","setFilterSelected","filterValue","isSelected","groupValues","Set","filtersOutsideGroup","has","defaultValue","control","selectionMode","isFilterSelected","includes","some","renderFilter","jsx","styles","radio","event","target","checked","jsxs","description","Checkbox","search","controls","Input","length","Button","chips","Chip","key","preventDefault","Dialog","Controls","Header","groupIndex","undefined","columnSpan","Collapsible"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../src/components/search/index.tsx"],"sourcesContent":["import { useId, useMemo, useState } from 'react';\n\nimport { Button } from '../button';\nimport { Checkbox } from '../checkbox';\nimport { Chip } from '../chip';\nimport { Collapsible } from '../collapsible';\nimport { Controls } from '../controls';\nimport { Dialog } from '../dialog';\nimport { Header } from '../header';\nimport { Input } from '../input';\nimport styles from './styles.module.css';\n\nexport type SearchFilter = {\n description?: string;\n label: string;\n value: string;\n};\n\nexport type SearchFilterGroup = {\n collapsible?: {\n label: string;\n options: readonly SearchFilter[];\n };\n columnSpan?: 1 | 2;\n control?: 'checkbox' | 'radio';\n defaultValue?: string;\n label?: string;\n options: readonly SearchFilter[];\n selectionMode?: 'multiple' | 'single';\n};\n\nexport type SearchProps = {\n closeLabel?: string;\n filterButtonLabel?: string;\n filterDialogColumns?: 1 | 2;\n filterDialogTitle?: string;\n filterGroups?: readonly SearchFilterGroup[];\n onChange: (value: string) => void;\n onSelectedFiltersChange?: (selectedFilters: string[]) => void;\n removeFilterLabel?: (filter: SearchFilter) => string;\n resetLabel?: string;\n searchLabel?: string;\n searchPlaceholder?: string;\n selectedFilters?: readonly string[];\n value?: string;\n};\n\nexport const Search = ({\n closeLabel = 'Close',\n filterButtonLabel = 'Filters',\n filterDialogColumns = 1,\n filterDialogTitle = 'Filters',\n filterGroups = [],\n onChange,\n onSelectedFiltersChange,\n removeFilterLabel = (filter) => `Remove ${filter.label} filter`,\n resetLabel = 'Reset',\n searchLabel = 'Search',\n searchPlaceholder = 'Search',\n selectedFilters = [],\n value = '',\n}: SearchProps) => {\n const dialogTitleId = useId();\n const [isFilterDialogOpen, setIsFilterDialogOpen] = useState(false);\n const filtersByValue = useMemo(\n () =>\n new Map(\n filterGroups\n .flatMap((group) => [...group.options, ...(group.collapsible?.options ?? [])])\n .map((filter) => [filter.value, filter])\n ),\n [filterGroups]\n );\n const activeFilters = selectedFilters.flatMap((selectedFilter) => {\n const filter = filtersByValue.get(selectedFilter);\n\n return filter ? [filter] : [];\n });\n\n const setFilterSelected = (\n filterValue: string,\n isSelected: boolean,\n group?: SearchFilterGroup\n ) => {\n if (!onSelectedFiltersChange) return;\n\n const groupValues = new Set([\n ...(group?.options.map((filter) => filter.value) ?? []),\n ...(group?.collapsible?.options.map((filter) => filter.value) ?? []),\n ]);\n const filtersOutsideGroup = selectedFilters.filter(\n (selectedFilter) => !groupValues.has(selectedFilter)\n );\n\n if (isSelected && group?.defaultValue === filterValue) {\n onSelectedFiltersChange(filtersOutsideGroup);\n return;\n }\n\n onSelectedFiltersChange(\n isSelected\n ? group?.control === 'radio' || group?.selectionMode === 'single'\n ? [...filtersOutsideGroup, filterValue]\n : [...new Set([...selectedFilters, filterValue])]\n : selectedFilters.filter((selectedFilter) => selectedFilter !== filterValue)\n );\n };\n\n const isFilterSelected = (filterValue: string, group: SearchFilterGroup) =>\n selectedFilters.includes(filterValue) ||\n (group.defaultValue === filterValue &&\n ![...group.options, ...(group.collapsible?.options ?? [])].some((filter) =>\n selectedFilters.includes(filter.value)\n ));\n\n const renderFilter = (filter: SearchFilter, group: SearchFilterGroup) => (\n <div\n className={styles['filter-option']}\n key={filter.value}\n >\n {group.control === 'radio' ? (\n <label className={styles.radio}>\n <input\n checked={isFilterSelected(filter.value, group)}\n name={`${dialogTitleId}-filter-${group.label ?? 'group'}`}\n onChange={(event) => setFilterSelected(filter.value, event.target.checked, group)}\n type='radio'\n />\n <span className={styles['option-copy']}>\n {filter.label}\n {filter.description && <sub>{filter.description}</sub>}\n </span>\n </label>\n ) : (\n <Checkbox\n checked={isFilterSelected(filter.value, group)}\n label={\n <span className={styles['option-copy']}>\n {filter.label}\n {filter.description && <sub>{filter.description}</sub>}\n </span>\n }\n onChange={(event) => setFilterSelected(filter.value, event.target.checked, group)}\n />\n )}\n </div>\n );\n\n return (\n <div\n className={styles.search}\n data-component='search'\n >\n <div className={styles.controls}>\n <Input\n aria-label={searchLabel}\n icon='search'\n onChange={(event) => onChange(event.target.value)}\n placeholder={searchPlaceholder}\n type='search'\n value={value}\n />\n {filterGroups.length > 0 && (\n <Button\n aria-expanded={isFilterDialogOpen}\n aria-haspopup='dialog'\n badge={activeFilters.length}\n icon='funnel'\n onClick={() => setIsFilterDialogOpen(true)}\n variant='tertiary'\n >\n {filterButtonLabel}\n </Button>\n )}\n </div>\n {activeFilters.length > 0 && (\n <div\n aria-label={filterButtonLabel}\n className={styles.chips}\n >\n {activeFilters.map((filter) => (\n <Chip\n accessibleLabel={removeFilterLabel(filter)}\n key={filter.value}\n label={filter.label}\n onDelete={() => setFilterSelected(filter.value, false)}\n />\n ))}\n <Button\n onClick={() => onSelectedFiltersChange?.([])}\n variant='tertiary'\n >\n {resetLabel}\n </Button>\n </div>\n )}\n {isFilterDialogOpen && (\n <Dialog\n aria-labelledby={dialogTitleId}\n className={styles['filter-dialog']}\n controls={\n <Controls>\n <Button onClick={() => setIsFilterDialogOpen(false)}>{closeLabel}</Button>\n </Controls>\n }\n header={\n <Header>\n <h2 id={dialogTitleId}>{filterDialogTitle}</h2>\n </Header>\n }\n open\n setOpen={setIsFilterDialogOpen}\n >\n <div\n className={styles['filter-groups']}\n data-columns={filterDialogColumns}\n >\n {filterGroups.map((group, groupIndex) => (\n <section\n aria-labelledby={group.label ? `${dialogTitleId}-${groupIndex}` : undefined}\n className={styles['filter-group']}\n data-column-span={group.columnSpan ?? 1}\n key={group.label ?? groupIndex}\n role={group.control === 'radio' ? 'radiogroup' : 'group'}\n >\n {group.label && <h3 id={`${dialogTitleId}-${groupIndex}`}>{group.label}</h3>}\n {group.options.map((filter) => renderFilter(filter, group))}\n {group.collapsible && (\n <Collapsible summary={group.collapsible.label}>\n <div className={styles['collapsible-options']}>\n {group.collapsible.options.map((filter) => renderFilter(filter, group))}\n </div>\n </Collapsible>\n )}\n </section>\n ))}\n </div>\n </Dialog>\n )}\n </div>\n );\n};\n"],"names":["Search","closeLabel","filterButtonLabel","filterDialogColumns","filterDialogTitle","filterGroups","onChange","onSelectedFiltersChange","removeFilterLabel","filter","label","resetLabel","searchLabel","searchPlaceholder","selectedFilters","value","dialogTitleId","useId","isFilterDialogOpen","setIsFilterDialogOpen","useState","filtersByValue","useMemo","Map","flatMap","group","options","collapsible","map","activeFilters","selectedFilter","get","setFilterSelected","filterValue","isSelected","groupValues","Set","filtersOutsideGroup","has","defaultValue","control","selectionMode","isFilterSelected","includes","some","renderFilter","jsx","styles","radio","event","target","checked","jsxs","description","Checkbox","search","controls","Input","length","Button","chips","Chip","Dialog","Controls","Header","groupIndex","undefined","columnSpan","Collapsible"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("react/jsx-runtime");require("../../classix-5H4IWnMA.cjs");require("../../icons-ovA21Oao.cjs");const e=require("../../index-CjI8oRpS.cjs");require("../../use-touched-D_TJ8wDc.cjs");exports.Select=e.Select;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("react/jsx-runtime");require("../../classix-5H4IWnMA.cjs");require("../../icons-DaZGJzI0.cjs");const e=require("../../index-Dn1v0qm6.cjs");require("../../use-touched-Bq5Gjbpz.cjs");exports.Select=e.Select;
2
2
  //# sourceMappingURL=index.cjs.map
@@ -1,8 +1,8 @@
1
1
  import "react/jsx-runtime";
2
2
  import "../../classix-DG18itHa.js";
3
- import "../../icons-Bq3diTRm.js";
4
- import { S as e } from "../../index-DwzLUapm.js";
5
- import "../../use-touched-DXIJVVzz.js";
3
+ import "../../icons-Dj0vEOCB.js";
4
+ import { S as e } from "../../index-CgA0NUMD.js";
5
+ import "../../use-touched-B999bBr8.js";
6
6
  export {
7
7
  e as Select
8
8
  };
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require('../../assets/index8.css');const q=require("react/jsx-runtime"),X=require("../../classix-5H4IWnMA.cjs"),s=require("react"),Z=require("../list/index.cjs"),G="_sortable_iw0r0_1",J="_dragging_iw0r0_13",K="_columns_iw0r0_38",Q="_pseudo_iw0r0_47",b={sortable:G,dragging:J,columns:K,pseudo:Q,"target-above":"_target-above_iw0r0_62","target-below":"_target-below_iw0r0_63"},k=s.createContext(null);function tt(){return s.useContext(k)}const h=a=>Number.parseFloat(a)||0,et=a=>{const w=a.firstElementChild,i=a.getBoundingClientRect();if(w){const y=w.getBoundingClientRect();return{borderRadius:window.getComputedStyle(w).borderRadius,height:y.height,width:y.width,wrapperHeight:i.height}}const u=window.getComputedStyle(a),A=h(u.borderLeftWidth)+h(u.borderRightWidth)+h(u.paddingLeft)+h(u.paddingRight),T=h(u.borderBottomWidth)+h(u.borderTopWidth)+h(u.paddingBottom)+h(u.paddingTop);return{borderRadius:u.borderRadius,height:Math.max(0,i.height-T),width:Math.max(0,i.width-A),wrapperHeight:i.height}};function nt({children:a,className:w,columns:i=1,isRearranging:u=!1,onChangeOrder:A,...T}){const y=Number.isFinite(i)?Math.max(1,Math.floor(i)):1,R=s.useMemo(()=>s.Children.toArray(a),[a]),l=s.useRef(-1),L=s.useMemo(()=>typeof window<"u"&&(navigator.maxTouchPoints>0||window.matchMedia("(pointer: coarse)").matches),[]),p=s.useRef(!1),_=s.useRef(null),v=s.useRef(null),x=s.useRef(null),I=s.useRef(0),C=s.useRef(null),g=s.useRef(null),E=s.useRef(o=>o.preventDefault()).current,[M,O]=s.useState({borderRadius:"0px",height:0,width:0,wrapperHeight:0}),[m,S]=s.useState(null),W={...T.style,"--sortable-placeholder-height":`${M.height}px`,"--sortable-placeholder-radius":M.borderRadius,"--sortable-placeholder-width":`${M.width}px`},H=(o,t)=>{if(t<0||t>=R.length||o===t)return;const c=R.slice(),[e]=c.splice(o,1);c.splice(t,0,e),A(c.map((n,r)=>({id:String(s.isValidElement(n)?n.props["data-id"]??`idx-${r}`:`idx-${r}`),weight:c.length-1-r})))},D=()=>{v.current!==null&&(clearTimeout(v.current),v.current=null)},B=()=>{g.current!==null&&(cancelAnimationFrame(g.current),g.current=null)},$=o=>{let t=(o==null?void 0:o.parentElement)??null;for(;t;){const{overflowY:c}=window.getComputedStyle(t);if(/(auto|scroll|overlay)/.test(c)&&t.scrollHeight>t.clientHeight)return t;t=t.parentElement}return document.scrollingElement instanceof HTMLElement?document.scrollingElement:null},P=(o=!1)=>{D(),B(),window.removeEventListener("touchmove",E),C.current=null,p.current=!1,_.current=null,x.current=null,I.current=o?Date.now()+500:0,l.current=-1,S(null)},N=(o,t)=>{l.current=o,O(et(t)),S(o)},U=o=>o instanceof Element&&!!o.closest('button, a, input, textarea, select, option, [role="button"], [contenteditable="true"]'),Y=(o,t,c)=>{const e=l.current;if(!Number.isInteger(t)||e<0||t===e)return null;const n=o.getBoundingClientRect(),r=t===e+1?M.wrapperHeight:n.height,d=c>n.top+r/2?t+1:t;return d>e?d-1:d},j=(o,t)=>{var n;const c=(n=document.elementFromPoint(o,t))==null?void 0:n.closest("[data-sortable-index]");if(!c)return;const e=Y(c,Number(c.dataset.sortableIndex),t);e!==null&&(_.current=e,S(e))},V=o=>{const t=$(o);if(!t)return;const c=72,e=18,n=()=>{if(!p.current){g.current=null;return}const r=C.current;if(!r){g.current=requestAnimationFrame(n);return}const f=t===document.scrollingElement?{top:0,bottom:window.innerHeight}:t.getBoundingClientRect();let d=0;if(r.y<f.top+c){const F=Math.max(0,r.y-f.top);d=-e*(1-F/c)}else if(r.y>f.bottom-c){const F=Math.max(0,f.bottom-r.y);d=e*(1-F/c)}d!==0&&(t.scrollBy({top:d,behavior:"auto"}),j(r.x,r.y)),g.current=requestAnimationFrame(n)};B(),g.current=requestAnimationFrame(n)},z=()=>{l.current=-1,S(null)};return s.useEffect(()=>()=>{D(),B(),window.removeEventListener("touchmove",E)},[E]),q.jsx(Z.List,{className:X.t(w,b.sortable,y>1&&b.columns),columns:i,ordered:!0,style:W,...T,"data-component":"sortable",children:R.map((o,t)=>{const c=s.isValidElement(o)?o.key:null;return q.jsx("li",{"data-sortable-index":t,onClickCapture:e=>{I.current<=Date.now()||(e.preventDefault(),e.stopPropagation(),I.current=0)},className:X.t(m!==null&&m>t-10&&m<t+10&&b.pseudo,m===t&&l.current<t&&b["target-below"],m===t&&l.current>t&&b["target-above"],l.current===t&&b.dragging),onContextMenu:e=>{(p.current||v.current!==null)&&e.preventDefault()},onTouchStart:e=>{if(u||U(e.target))return;I.current=0;const n=e.touches[0];if(!n)return;const r=e.currentTarget;x.current={x:n.clientX,y:n.clientY},D(),v.current=setTimeout(()=>{N(t,r),p.current=!0,_.current=t,C.current={x:n.clientX,y:n.clientY},window.addEventListener("touchmove",E,{passive:!1}),V(r)},350)},onTouchMove:e=>{const n=e.touches[0];if(n){if(C.current={x:n.clientX,y:n.clientY},!p.current){const r=x.current;if(!r)return;Math.hypot(n.clientX-r.x,n.clientY-r.y)>8&&(D(),x.current=null);return}j(n.clientX,n.clientY)}},onTouchEnd:e=>{if(D(),!p.current){x.current=null;return}e.preventDefault();const n=l.current,r=_.current;n>=0&&r!==null&&n!==r&&H(n,r),P(!0)},onTouchCancel:()=>P(),draggable:!u&&!L,onDragEnd:()=>z(),onDragOver:e=>{e.preventDefault(),e.dataTransfer.dropEffect="move";const n=Y(e.currentTarget,t,e.clientY);n!==null&&S(n)},onDragStart:e=>{if(L){e.preventDefault();return}N(t,e.currentTarget),e.dataTransfer.setData("text/plain",""),e.dataTransfer.effectAllowed="move"},onDrop:e=>{e.preventDefault();const n=l.current,r=m;n<0||r===null||n===r||(H(n,r),z())},"data-component":"sortable",children:q.jsx(k.Provider,{value:{canMoveDown:t<R.length-1,canMoveUp:t>0,index:t,moveDown:()=>H(t,t+1),moveUp:()=>H(t,t-1)},children:o})},c??t)})})}exports.Sortable=nt;exports.useOptionalSortableItem=tt;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require('../../assets/index8.css');const F=require("react/jsx-runtime"),X=require("../../classix-5H4IWnMA.cjs"),s=require("react"),Z=require("../list/index.cjs"),G="_sortable_5vbjc_1",J="_dragging_5vbjc_13",K="_columns_5vbjc_38",Q="_pseudo_5vbjc_47",b={sortable:G,dragging:J,columns:K,pseudo:Q,"target-above":"_target-above_5vbjc_62","target-below":"_target-below_5vbjc_63"},k=s.createContext(null);function tt(){return s.useContext(k)}const h=a=>Number.parseFloat(a)||0,et=a=>{const v=a.firstElementChild,i=a.getBoundingClientRect();if(v){const y=v.getBoundingClientRect();return{borderRadius:window.getComputedStyle(v).borderRadius,height:y.height,width:y.width,wrapperHeight:i.height}}const u=window.getComputedStyle(a),j=h(u.borderLeftWidth)+h(u.borderRightWidth)+h(u.paddingLeft)+h(u.paddingRight),T=h(u.borderBottomWidth)+h(u.borderTopWidth)+h(u.paddingBottom)+h(u.paddingTop);return{borderRadius:u.borderRadius,height:Math.max(0,i.height-T),width:Math.max(0,i.width-j),wrapperHeight:i.height}};function nt({children:a,className:v,columns:i=1,isRearranging:u=!1,onChangeOrder:j,...T}){const y=Number.isFinite(i)?Math.max(1,Math.floor(i)):1,R=s.useMemo(()=>s.Children.toArray(a),[a]),l=s.useRef(-1),q=s.useMemo(()=>typeof window<"u"&&(navigator.maxTouchPoints>0||window.matchMedia("(pointer: coarse)").matches),[]),p=s.useRef(!1),_=s.useRef(null),w=s.useRef(null),x=s.useRef(null),I=s.useRef(0),C=s.useRef(null),g=s.useRef(null),E=s.useRef(o=>o.preventDefault()).current,[M,O]=s.useState({borderRadius:"0px",height:0,width:0,wrapperHeight:0}),[m,S]=s.useState(null),W={...T.style,"--sortable-placeholder-height":`${M.height}px`,"--sortable-placeholder-radius":M.borderRadius,"--sortable-placeholder-width":`${M.width}px`},H=(o,t)=>{if(t<0||t>=R.length||o===t)return;const c=R.slice(),[e]=c.splice(o,1);c.splice(t,0,e),j(c.map((n,r)=>({id:String(s.isValidElement(n)?n.props["data-id"]??`idx-${r}`:`idx-${r}`),weight:c.length-1-r})))},D=()=>{w.current!==null&&(clearTimeout(w.current),w.current=null)},A=()=>{g.current!==null&&(cancelAnimationFrame(g.current),g.current=null)},$=o=>{let t=(o==null?void 0:o.parentElement)??null;for(;t;){const{overflowY:c}=window.getComputedStyle(t);if(/(auto|scroll|overlay)/.test(c)&&t.scrollHeight>t.clientHeight)return t;t=t.parentElement}return document.scrollingElement instanceof HTMLElement?document.scrollingElement:null},L=(o=!1)=>{D(),A(),window.removeEventListener("touchmove",E),C.current=null,p.current=!1,_.current=null,x.current=null,I.current=o?Date.now()+500:0,l.current=-1,S(null)},P=(o,t)=>{l.current=o,O(et(t)),S(o)},U=o=>o instanceof Element&&!!o.closest('button, a, input, textarea, select, option, [role="button"], [contenteditable="true"]'),N=(o,t,c)=>{const e=l.current;if(!Number.isInteger(t)||e<0||t===e)return null;const n=o.getBoundingClientRect(),r=t===e+1?M.wrapperHeight:n.height,d=c>n.top+r/2?t+1:t;return d>e?d-1:d},Y=(o,t)=>{var n;const c=(n=document.elementFromPoint(o,t))==null?void 0:n.closest("[data-sortable-index]");if(!c)return;const e=N(c,Number(c.dataset.sortableIndex),t);e!==null&&(_.current=e,S(e))},V=o=>{const t=$(o);if(!t)return;const c=72,e=18,n=()=>{if(!p.current){g.current=null;return}const r=C.current;if(!r){g.current=requestAnimationFrame(n);return}const f=t===document.scrollingElement?{top:0,bottom:window.innerHeight}:t.getBoundingClientRect();let d=0;if(r.y<f.top+c){const B=Math.max(0,r.y-f.top);d=-e*(1-B/c)}else if(r.y>f.bottom-c){const B=Math.max(0,f.bottom-r.y);d=e*(1-B/c)}d!==0&&(t.scrollBy({top:d,behavior:"auto"}),Y(r.x,r.y)),g.current=requestAnimationFrame(n)};A(),g.current=requestAnimationFrame(n)},z=()=>{l.current=-1,S(null)};return s.useEffect(()=>()=>{D(),A(),window.removeEventListener("touchmove",E)},[E]),F.jsx(Z.List,{className:X.t(v,b.sortable,y>1&&b.columns),columns:i,ordered:!0,style:W,...T,"data-component":"sortable",children:R.map((o,t)=>{const c=s.isValidElement(o)?o.key:null;return F.jsx("li",{"data-sortable-index":t,onClickCapture:e=>{I.current<=Date.now()||(e.preventDefault(),e.stopPropagation(),I.current=0)},className:X.t(m!==null&&m>t-10&&m<t+10&&b.pseudo,m===t&&l.current<t&&b["target-below"],m===t&&l.current>t&&b["target-above"],l.current===t&&b.dragging),onContextMenu:e=>{(p.current||w.current!==null)&&e.preventDefault()},onTouchStart:e=>{if(u||U(e.target))return;I.current=0;const n=e.touches[0];if(!n)return;const r=e.currentTarget;x.current={x:n.clientX,y:n.clientY},D(),w.current=setTimeout(()=>{P(t,r),p.current=!0,_.current=t,C.current={x:n.clientX,y:n.clientY},window.addEventListener("touchmove",E,{passive:!1}),V(r)},350)},onTouchMove:e=>{const n=e.touches[0];if(n){if(C.current={x:n.clientX,y:n.clientY},!p.current){const r=x.current;if(!r)return;Math.hypot(n.clientX-r.x,n.clientY-r.y)>8&&(D(),x.current=null);return}Y(n.clientX,n.clientY)}},onTouchEnd:e=>{if(D(),!p.current){x.current=null;return}e.preventDefault();const n=l.current,r=_.current;n>=0&&r!==null&&n!==r&&H(n,r),L(!0)},onTouchCancel:()=>L(),draggable:!u&&!q,onDragEnd:()=>z(),onDragOver:e=>{e.preventDefault(),e.dataTransfer.dropEffect="move";const n=N(e.currentTarget,t,e.clientY);n!==null&&S(n)},onDragStart:e=>{if(q){e.preventDefault();return}P(t,e.currentTarget),e.dataTransfer.setData("text/plain",""),e.dataTransfer.effectAllowed="move"},onDrop:e=>{e.preventDefault();const n=l.current,r=m;n<0||r===null||n===r||(H(n,r),z())},"data-component":"sortable",children:F.jsx(k.Provider,{value:{canMoveDown:t<R.length-1,canMoveUp:t>0,index:t,moveDown:()=>H(t,t+1),moveUp:()=>H(t,t-1)},children:o})},c??t)})})}exports.Sortable=nt;exports.useOptionalSortableItem=tt;
2
2
  //# sourceMappingURL=index.cjs.map
@@ -1,24 +1,24 @@
1
- import { jsx as L } from "react/jsx-runtime";
2
- import { t as $ } from "../../classix-DG18itHa.js";
3
- import N, { createContext as K, useMemo as q, useRef as u, useState as U, useEffect as Q, useContext as tt } from "react";
1
+ import { jsx as j } from "react/jsx-runtime";
2
+ import { t as W } from "../../classix-DG18itHa.js";
3
+ import L, { createContext as K, useMemo as $, useRef as u, useState as q, useEffect as Q, useContext as tt } from "react";
4
4
  import { List as et } from "../list/index.js";
5
- import '../../assets/index8.css';const rt = "_sortable_iw0r0_1", nt = "_dragging_iw0r0_13", ot = "_columns_iw0r0_38", ct = "_pseudo_iw0r0_47", w = {
6
- sortable: rt,
7
- dragging: nt,
5
+ import '../../assets/index8.css';const nt = "_sortable_5vbjc_1", rt = "_dragging_5vbjc_13", ot = "_columns_5vbjc_38", ct = "_pseudo_5vbjc_47", b = {
6
+ sortable: nt,
7
+ dragging: rt,
8
8
  columns: ot,
9
9
  pseudo: ct,
10
- "target-above": "_target-above_iw0r0_62",
11
- "target-below": "_target-below_iw0r0_63"
12
- }, V = K(null);
10
+ "target-above": "_target-above_5vbjc_62",
11
+ "target-below": "_target-below_5vbjc_63"
12
+ }, U = K(null);
13
13
  function dt() {
14
- return tt(V);
14
+ return tt(U);
15
15
  }
16
16
  const h = (s) => Number.parseFloat(s) || 0, lt = (s) => {
17
- const b = s.firstElementChild, i = s.getBoundingClientRect();
18
- if (b) {
19
- const y = b.getBoundingClientRect();
17
+ const v = s.firstElementChild, i = s.getBoundingClientRect();
18
+ if (v) {
19
+ const y = v.getBoundingClientRect();
20
20
  return {
21
- borderRadius: window.getComputedStyle(b).borderRadius,
21
+ borderRadius: window.getComputedStyle(v).borderRadius,
22
22
  height: y.height,
23
23
  width: y.width,
24
24
  wrapperHeight: i.height
@@ -34,18 +34,18 @@ const h = (s) => Number.parseFloat(s) || 0, lt = (s) => {
34
34
  };
35
35
  function ht({
36
36
  children: s,
37
- className: b,
37
+ className: v,
38
38
  columns: i = 1,
39
39
  isRearranging: l = !1,
40
40
  onChangeOrder: A,
41
41
  ...S
42
42
  }) {
43
- const y = Number.isFinite(i) ? Math.max(1, Math.floor(i)) : 1, _ = q(() => N.Children.toArray(s), [s]), a = u(-1), P = q(() => typeof window < "u" && (navigator.maxTouchPoints > 0 || window.matchMedia("(pointer: coarse)").matches), []), p = u(!1), C = u(null), v = u(null), x = u(null), I = u(0), E = u(null), m = u(null), M = u((o) => o.preventDefault()).current, [R, O] = U({
43
+ const y = Number.isFinite(i) ? Math.max(1, Math.floor(i)) : 1, _ = $(() => L.Children.toArray(s), [s]), a = u(-1), N = $(() => typeof window < "u" && (navigator.maxTouchPoints > 0 || window.matchMedia("(pointer: coarse)").matches), []), p = u(!1), C = u(null), w = u(null), x = u(null), I = u(0), E = u(null), m = u(null), M = u((o) => o.preventDefault()).current, [R, V] = q({
44
44
  borderRadius: "0px",
45
45
  height: 0,
46
46
  width: 0,
47
47
  wrapperHeight: 0
48
- }), [g, D] = U(null), j = {
48
+ }), [g, D] = q(null), O = {
49
49
  ...S.style,
50
50
  "--sortable-placeholder-height": `${R.height}px`,
51
51
  "--sortable-placeholder-radius": R.borderRadius,
@@ -53,12 +53,12 @@ function ht({
53
53
  }, H = (o, t) => {
54
54
  if (t < 0 || t >= _.length || o === t) return;
55
55
  const c = _.slice(), [e] = c.splice(o, 1);
56
- c.splice(t, 0, e), A(c.map((r, n) => ({
57
- id: String(N.isValidElement(r) ? r.props["data-id"] ?? `idx-${n}` : `idx-${n}`),
58
- weight: c.length - 1 - n
56
+ c.splice(t, 0, e), A(c.map((n, r) => ({
57
+ id: String(L.isValidElement(n) ? n.props["data-id"] ?? `idx-${r}` : `idx-${r}`),
58
+ weight: c.length - 1 - r
59
59
  })));
60
60
  }, T = () => {
61
- v.current !== null && (clearTimeout(v.current), v.current = null);
61
+ w.current !== null && (clearTimeout(w.current), w.current = null);
62
62
  }, B = () => {
63
63
  m.current !== null && (cancelAnimationFrame(m.current), m.current = null);
64
64
  }, Z = (o) => {
@@ -71,32 +71,32 @@ function ht({
71
71
  t = t.parentElement;
72
72
  }
73
73
  return document.scrollingElement instanceof HTMLElement ? document.scrollingElement : null;
74
- }, Y = (o = !1) => {
74
+ }, P = (o = !1) => {
75
75
  T(), B(), window.removeEventListener("touchmove", M), E.current = null, p.current = !1, C.current = null, x.current = null, I.current = o ? Date.now() + 500 : 0, a.current = -1, D(null);
76
- }, z = (o, t) => {
77
- a.current = o, O(lt(t)), D(o);
78
- }, G = (o) => o instanceof Element && !!o.closest('button, a, input, textarea, select, option, [role="button"], [contenteditable="true"]'), X = (o, t, c) => {
76
+ }, Y = (o, t) => {
77
+ a.current = o, V(lt(t)), D(o);
78
+ }, G = (o) => o instanceof Element && !!o.closest('button, a, input, textarea, select, option, [role="button"], [contenteditable="true"]'), z = (o, t, c) => {
79
79
  const e = a.current;
80
80
  if (!Number.isInteger(t) || e < 0 || t === e) return null;
81
- const r = o.getBoundingClientRect(), n = t === e + 1 ? R.wrapperHeight : r.height, d = c > r.top + n / 2 ? t + 1 : t;
81
+ const n = o.getBoundingClientRect(), r = t === e + 1 ? R.wrapperHeight : n.height, d = c > n.top + r / 2 ? t + 1 : t;
82
82
  return d > e ? d - 1 : d;
83
- }, k = (o, t) => {
84
- var r;
85
- const c = (r = document.elementFromPoint(o, t)) == null ? void 0 : r.closest("[data-sortable-index]");
83
+ }, X = (o, t) => {
84
+ var n;
85
+ const c = (n = document.elementFromPoint(o, t)) == null ? void 0 : n.closest("[data-sortable-index]");
86
86
  if (!c) return;
87
- const e = X(c, Number(c.dataset.sortableIndex), t);
87
+ const e = z(c, Number(c.dataset.sortableIndex), t);
88
88
  e !== null && (C.current = e, D(e));
89
89
  }, J = (o) => {
90
90
  const t = Z(o);
91
91
  if (!t) return;
92
- const c = 72, e = 18, r = () => {
92
+ const c = 72, e = 18, n = () => {
93
93
  if (!p.current) {
94
94
  m.current = null;
95
95
  return;
96
96
  }
97
- const n = E.current;
98
- if (!n) {
99
- m.current = requestAnimationFrame(r);
97
+ const r = E.current;
98
+ if (!r) {
99
+ m.current = requestAnimationFrame(n);
100
100
  return;
101
101
  }
102
102
  const f = t === document.scrollingElement ? {
@@ -104,60 +104,60 @@ function ht({
104
104
  bottom: window.innerHeight
105
105
  } : t.getBoundingClientRect();
106
106
  let d = 0;
107
- if (n.y < f.top + c) {
108
- const F = Math.max(0, n.y - f.top);
107
+ if (r.y < f.top + c) {
108
+ const F = Math.max(0, r.y - f.top);
109
109
  d = -e * (1 - F / c);
110
- } else if (n.y > f.bottom - c) {
111
- const F = Math.max(0, f.bottom - n.y);
110
+ } else if (r.y > f.bottom - c) {
111
+ const F = Math.max(0, f.bottom - r.y);
112
112
  d = e * (1 - F / c);
113
113
  }
114
114
  d !== 0 && (t.scrollBy({
115
115
  top: d,
116
116
  behavior: "auto"
117
- }), k(n.x, n.y)), m.current = requestAnimationFrame(r);
117
+ }), X(r.x, r.y)), m.current = requestAnimationFrame(n);
118
118
  };
119
- B(), m.current = requestAnimationFrame(r);
120
- }, W = () => {
119
+ B(), m.current = requestAnimationFrame(n);
120
+ }, k = () => {
121
121
  a.current = -1, D(null);
122
122
  };
123
123
  return Q(() => () => {
124
124
  T(), B(), window.removeEventListener("touchmove", M);
125
- }, [M]), /* @__PURE__ */ L(et, { className: $(b, w.sortable, y > 1 && w.columns), columns: i, ordered: !0, style: j, ...S, "data-component": "sortable", children: _.map((o, t) => {
126
- const c = N.isValidElement(o) ? o.key : null;
127
- return /* @__PURE__ */ L("li", { "data-sortable-index": t, onClickCapture: (e) => {
125
+ }, [M]), /* @__PURE__ */ j(et, { className: W(v, b.sortable, y > 1 && b.columns), columns: i, ordered: !0, style: O, ...S, "data-component": "sortable", children: _.map((o, t) => {
126
+ const c = L.isValidElement(o) ? o.key : null;
127
+ return /* @__PURE__ */ j("li", { "data-sortable-index": t, onClickCapture: (e) => {
128
128
  I.current <= Date.now() || (e.preventDefault(), e.stopPropagation(), I.current = 0);
129
- }, className: $(g !== null && g > t - 10 && g < t + 10 && w.pseudo, g === t && a.current < t && w["target-below"], g === t && a.current > t && w["target-above"], a.current === t && w.dragging), onContextMenu: (e) => {
130
- (p.current || v.current !== null) && e.preventDefault();
129
+ }, className: W(g !== null && g > t - 10 && g < t + 10 && b.pseudo, g === t && a.current < t && b["target-below"], g === t && a.current > t && b["target-above"], a.current === t && b.dragging), onContextMenu: (e) => {
130
+ (p.current || w.current !== null) && e.preventDefault();
131
131
  }, onTouchStart: (e) => {
132
132
  if (l || G(e.target)) return;
133
133
  I.current = 0;
134
- const r = e.touches[0];
135
- if (!r) return;
136
- const n = e.currentTarget;
134
+ const n = e.touches[0];
135
+ if (!n) return;
136
+ const r = e.currentTarget;
137
137
  x.current = {
138
- x: r.clientX,
139
- y: r.clientY
140
- }, T(), v.current = setTimeout(() => {
141
- z(t, n), p.current = !0, C.current = t, E.current = {
142
- x: r.clientX,
143
- y: r.clientY
138
+ x: n.clientX,
139
+ y: n.clientY
140
+ }, T(), w.current = setTimeout(() => {
141
+ Y(t, r), p.current = !0, C.current = t, E.current = {
142
+ x: n.clientX,
143
+ y: n.clientY
144
144
  }, window.addEventListener("touchmove", M, {
145
145
  passive: !1
146
- }), J(n);
146
+ }), J(r);
147
147
  }, 350);
148
148
  }, onTouchMove: (e) => {
149
- const r = e.touches[0];
150
- if (r) {
149
+ const n = e.touches[0];
150
+ if (n) {
151
151
  if (E.current = {
152
- x: r.clientX,
153
- y: r.clientY
152
+ x: n.clientX,
153
+ y: n.clientY
154
154
  }, !p.current) {
155
- const n = x.current;
156
- if (!n) return;
157
- Math.hypot(r.clientX - n.x, r.clientY - n.y) > 8 && (T(), x.current = null);
155
+ const r = x.current;
156
+ if (!r) return;
157
+ Math.hypot(n.clientX - r.x, n.clientY - r.y) > 8 && (T(), x.current = null);
158
158
  return;
159
159
  }
160
- k(r.clientX, r.clientY);
160
+ X(n.clientX, n.clientY);
161
161
  }
162
162
  }, onTouchEnd: (e) => {
163
163
  if (T(), !p.current) {
@@ -165,23 +165,23 @@ function ht({
165
165
  return;
166
166
  }
167
167
  e.preventDefault();
168
- const r = a.current, n = C.current;
169
- r >= 0 && n !== null && r !== n && H(r, n), Y(!0);
170
- }, onTouchCancel: () => Y(), draggable: !l && !P, onDragEnd: () => W(), onDragOver: (e) => {
168
+ const n = a.current, r = C.current;
169
+ n >= 0 && r !== null && n !== r && H(n, r), P(!0);
170
+ }, onTouchCancel: () => P(), draggable: !l && !N, onDragEnd: () => k(), onDragOver: (e) => {
171
171
  e.preventDefault(), e.dataTransfer.dropEffect = "move";
172
- const r = X(e.currentTarget, t, e.clientY);
173
- r !== null && D(r);
172
+ const n = z(e.currentTarget, t, e.clientY);
173
+ n !== null && D(n);
174
174
  }, onDragStart: (e) => {
175
- if (P) {
175
+ if (N) {
176
176
  e.preventDefault();
177
177
  return;
178
178
  }
179
- z(t, e.currentTarget), e.dataTransfer.setData("text/plain", ""), e.dataTransfer.effectAllowed = "move";
179
+ Y(t, e.currentTarget), e.dataTransfer.setData("text/plain", ""), e.dataTransfer.effectAllowed = "move";
180
180
  }, onDrop: (e) => {
181
181
  e.preventDefault();
182
- const r = a.current, n = g;
183
- r < 0 || n === null || r === n || (H(r, n), W());
184
- }, "data-component": "sortable", children: /* @__PURE__ */ L(V.Provider, { value: {
182
+ const n = a.current, r = g;
183
+ n < 0 || r === null || n === r || (H(n, r), k());
184
+ }, "data-component": "sortable", children: /* @__PURE__ */ j(U.Provider, { value: {
185
185
  canMoveDown: t < _.length - 1,
186
186
  canMoveUp: t > 0,
187
187
  index: t,
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require('../../assets/index6.css');const e=require("react/jsx-runtime"),d=require("../../classix-5H4IWnMA.cjs"),x=require("../../use-touched-D_TJ8wDc.cjs"),h="_label_ah8yz_3",i="_textarea_ah8yz_11",_="_touched_ah8yz_30",t={label:h,textarea:i,touched:_},m=({label:a,maxRows:r=12,minRows:c=3,required:s,value:o,...n})=>{const{touched:l,onBlur:u}=x.useTouched(o==="");return e.jsxs("label",{className:t.label,"data-component":"textarea",children:[a&&e.jsx("span",{"data-required":s||void 0,children:a}),e.jsx("textarea",{className:d.t(t.textarea,l&&t.touched),onBlur:u,...n,required:s,style:{"--min-rows":c,"--max-rows":r},value:o})]})};exports.Textarea=m;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require('../../assets/index6.css');const e=require("react/jsx-runtime"),_=require("../../classix-5H4IWnMA.cjs"),r=require("../../use-touched-Bq5Gjbpz.cjs"),m="_label_123ts_3",b="_textarea_123ts_11",j="_touched_123ts_30",t={label:m,textarea:b,touched:j},T=({className:c,label:s,maxRows:n=12,minRows:l=3,onBlur:u,required:a,style:d,value:o,...x})=>{const{touched:i,onBlur:h}=r.useTouched(o==="");return e.jsxs("label",{className:t.label,"data-component":"textarea",children:[s&&e.jsx("span",{"data-required":a||void 0,children:s}),e.jsx("textarea",{...x,className:_.t(t.textarea,c,i&&t.touched),onBlur:r.composeEventHandlers(h,u),required:a,style:{...d,"--min-rows":l,"--max-rows":n},value:o})]})};exports.Textarea=T;
2
2
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../../../src/components/textarea/index.tsx"],"sourcesContent":["import cx from 'classix';\n\nimport { useTouched } from '@/lib/use-touched';\n\nimport styles from './styles.module.css';\n\nexport type TextareaProps = Omit<React.ComponentPropsWithoutRef<'textarea'>, 'children'> & {\n label?: string;\n maxRows?: number;\n minRows?: number;\n};\n\nexport const Textarea = ({\n label,\n maxRows = 12,\n minRows = 3,\n required,\n value,\n ...props\n}: TextareaProps) => {\n const { touched, onBlur } = useTouched(value === '');\n\n return (\n <label className={styles.label}>\n {label && <span data-required={required || undefined}>{label}</span>}\n <textarea\n className={cx(styles.textarea, touched && styles.touched)}\n onBlur={onBlur}\n {...props}\n required={required}\n style={\n {\n '--min-rows': minRows,\n '--max-rows': maxRows,\n } as React.CSSProperties\n }\n value={value}\n />\n </label>\n );\n};\n"],"names":["Textarea","label","maxRows","minRows","required","value","props","touched","onBlur","useTouched","styles","jsx","undefined","cx","textarea"],"mappings":"0SAYaA,EAAWA,CAAC,CACvBC,MAAAA,EACAC,QAAAA,EAAU,GACVC,QAAAA,EAAU,EACVC,SAAAA,EACAC,MAAAA,EACA,GAAGC,CACU,IAAM,CACnB,KAAM,CAAEC,QAAAA,EAASC,OAAAA,CAAAA,EAAWC,EAAAA,WAAWJ,IAAU,EAAE,EAEnD,cACG,QAAA,CAAM,UAAWK,EAAOT,MAAM,iBAAA,WAC5BA,SAAAA,CAAAA,GAASU,EAAAA,IAAC,OAAA,CAAK,gBAAeP,GAAYQ,OAAYX,SAAAA,EAAM,EAC7DU,EAAAA,IAAC,WAAA,CACC,UAAWE,EAAAA,EAAGH,EAAOI,SAAUP,GAAWG,EAAOH,OAAO,EACxD,OAAAC,KACIF,EACJ,SAAAF,EACA,MACE,CACE,aAAcD,EACd,aAAcD,CAAAA,EAGlB,MAAAG,CAAA,CAAa,CAAA,EAEjB,CAEJ"}
1
+ {"version":3,"file":"index.cjs","sources":["../../../src/components/textarea/index.tsx"],"sourcesContent":["import cx from 'classix';\n\nimport { composeEventHandlers } from '@/lib/compose-event-handlers';\nimport { useTouched } from '@/lib/use-touched';\n\nimport styles from './styles.module.css';\n\nexport type TextareaProps = Omit<React.ComponentPropsWithoutRef<'textarea'>, 'children'> & {\n label?: string;\n maxRows?: number;\n minRows?: number;\n};\n\nexport const Textarea = ({\n className,\n label,\n maxRows = 12,\n minRows = 3,\n onBlur: onBlurProp,\n required,\n style,\n value,\n ...props\n}: TextareaProps) => {\n const { touched, onBlur } = useTouched(value === '');\n\n return (\n <label className={styles.label}>\n {label && <span data-required={required || undefined}>{label}</span>}\n <textarea\n {...props}\n className={cx(styles.textarea, className, touched && styles.touched)}\n onBlur={composeEventHandlers(onBlur, onBlurProp)}\n required={required}\n style={\n {\n ...style,\n '--min-rows': minRows,\n '--max-rows': maxRows,\n } as React.CSSProperties\n }\n value={value}\n />\n </label>\n );\n};\n"],"names":["Textarea","className","label","maxRows","minRows","onBlur","onBlurProp","required","style","value","props","touched","useTouched","styles","jsx","undefined","cx","textarea","composeEventHandlers"],"mappings":"0SAaaA,EAAWA,CAAC,CACvBC,UAAAA,EACAC,MAAAA,EACAC,QAAAA,EAAU,GACVC,QAAAA,EAAU,EACVC,OAAQC,EACRC,SAAAA,EACAC,MAAAA,EACAC,MAAAA,EACA,GAAGC,CACU,IAAM,CACnB,KAAM,CAAEC,QAAAA,EAASN,OAAAA,CAAAA,EAAWO,EAAAA,WAAWH,IAAU,EAAE,EAEnD,cACG,QAAA,CAAM,UAAWI,EAAOX,MAAM,iBAAA,WAC5BA,SAAAA,CAAAA,GAASY,EAAAA,IAAC,OAAA,CAAK,gBAAeP,GAAYQ,OAAYb,SAAAA,EAAM,QAC5D,WAAA,CACC,GAAIQ,EACJ,UAAWM,IAAGH,EAAOI,SAAUhB,EAAWU,GAAWE,EAAOF,OAAO,EACnE,OAAQO,EAAAA,qBAAqBb,EAAQC,CAAU,EAC/C,SAAAC,EACA,MACE,CACE,GAAGC,EACH,aAAcJ,EACd,aAAcD,CAAAA,EAGlB,MAAAM,CAAA,CAAa,CAAA,EAEjB,CAEJ"}
@@ -1,31 +1,35 @@
1
- import { jsxs as h, jsx as r } from "react/jsx-runtime";
2
- import { t as m } from "../../classix-DG18itHa.js";
3
- import { u as x } from "../../use-touched-DXIJVVzz.js";
4
- import '../../assets/index6.css';const u = "_label_ah8yz_3", _ = "_textarea_ah8yz_11", i = "_touched_ah8yz_30", t = {
5
- label: u,
6
- textarea: _,
7
- touched: i
8
- }, f = ({
1
+ import { jsxs as _, jsx as s } from "react/jsx-runtime";
2
+ import { t as h } from "../../classix-DG18itHa.js";
3
+ import { u as i, c as p } from "../../use-touched-B999bBr8.js";
4
+ import '../../assets/index6.css';const b = "_label_123ts_3", f = "_textarea_123ts_11", B = "_touched_123ts_30", t = {
5
+ label: b,
6
+ textarea: f,
7
+ touched: B
8
+ }, N = ({
9
+ className: r,
9
10
  label: e,
10
- maxRows: s = 12,
11
- minRows: c = 3,
11
+ maxRows: c = 12,
12
+ minRows: n = 3,
13
+ onBlur: l,
12
14
  required: a,
15
+ style: d,
13
16
  value: o,
14
- ...l
17
+ ...m
15
18
  }) => {
16
19
  const {
17
- touched: n,
18
- onBlur: d
19
- } = x(o === "");
20
- return /* @__PURE__ */ h("label", { className: t.label, "data-component": "textarea", children: [
21
- e && /* @__PURE__ */ r("span", { "data-required": a || void 0, children: e }),
22
- /* @__PURE__ */ r("textarea", { className: m(t.textarea, n && t.touched), onBlur: d, ...l, required: a, style: {
23
- "--min-rows": c,
24
- "--max-rows": s
20
+ touched: u,
21
+ onBlur: x
22
+ } = i(o === "");
23
+ return /* @__PURE__ */ _("label", { className: t.label, "data-component": "textarea", children: [
24
+ e && /* @__PURE__ */ s("span", { "data-required": a || void 0, children: e }),
25
+ /* @__PURE__ */ s("textarea", { ...m, className: h(t.textarea, r, u && t.touched), onBlur: p(x, l), required: a, style: {
26
+ ...d,
27
+ "--min-rows": n,
28
+ "--max-rows": c
25
29
  }, value: o })
26
30
  ] });
27
31
  };
28
32
  export {
29
- f as Textarea
33
+ N as Textarea
30
34
  };
31
35
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/components/textarea/index.tsx"],"sourcesContent":["import cx from 'classix';\n\nimport { useTouched } from '@/lib/use-touched';\n\nimport styles from './styles.module.css';\n\nexport type TextareaProps = Omit<React.ComponentPropsWithoutRef<'textarea'>, 'children'> & {\n label?: string;\n maxRows?: number;\n minRows?: number;\n};\n\nexport const Textarea = ({\n label,\n maxRows = 12,\n minRows = 3,\n required,\n value,\n ...props\n}: TextareaProps) => {\n const { touched, onBlur } = useTouched(value === '');\n\n return (\n <label className={styles.label}>\n {label && <span data-required={required || undefined}>{label}</span>}\n <textarea\n className={cx(styles.textarea, touched && styles.touched)}\n onBlur={onBlur}\n {...props}\n required={required}\n style={\n {\n '--min-rows': minRows,\n '--max-rows': maxRows,\n } as React.CSSProperties\n }\n value={value}\n />\n </label>\n );\n};\n"],"names":["Textarea","label","maxRows","minRows","required","value","props","touched","onBlur","useTouched","styles","jsx","undefined","cx","textarea"],"mappings":";;;;;;;GAYaA,IAAWA,CAAC;AAAA,EACvBC,OAAAA;AAAAA,EACAC,SAAAA,IAAU;AAAA,EACVC,SAAAA,IAAU;AAAA,EACVC,UAAAA;AAAAA,EACAC,OAAAA;AAAAA,EACA,GAAGC;AACU,MAAM;AACnB,QAAM;AAAA,IAAEC,SAAAA;AAAAA,IAASC,QAAAA;AAAAA,EAAAA,IAAWC,EAAWJ,MAAU,EAAE;AAEnD,2BACG,SAAA,EAAM,WAAWK,EAAOT,OAAM,kBAAA,YAC5BA,UAAAA;AAAAA,IAAAA,KAAS,gBAAAU,EAAC,QAAA,EAAK,iBAAeP,KAAYQ,QAAYX,UAAAA,GAAM;AAAA,IAC7D,gBAAAU,EAAC,YAAA,EACC,WAAWE,EAAGH,EAAOI,UAAUP,KAAWG,EAAOH,OAAO,GACxD,QAAAC,MACIF,GACJ,UAAAF,GACA,OACE;AAAA,MACE,cAAcD;AAAAA,MACd,cAAcD;AAAAA,IAAAA,GAGlB,OAAAG,EAAA,CAAa;AAAA,EAAA,GAEjB;AAEJ;"}
1
+ {"version":3,"file":"index.js","sources":["../../../src/components/textarea/index.tsx"],"sourcesContent":["import cx from 'classix';\n\nimport { composeEventHandlers } from '@/lib/compose-event-handlers';\nimport { useTouched } from '@/lib/use-touched';\n\nimport styles from './styles.module.css';\n\nexport type TextareaProps = Omit<React.ComponentPropsWithoutRef<'textarea'>, 'children'> & {\n label?: string;\n maxRows?: number;\n minRows?: number;\n};\n\nexport const Textarea = ({\n className,\n label,\n maxRows = 12,\n minRows = 3,\n onBlur: onBlurProp,\n required,\n style,\n value,\n ...props\n}: TextareaProps) => {\n const { touched, onBlur } = useTouched(value === '');\n\n return (\n <label className={styles.label}>\n {label && <span data-required={required || undefined}>{label}</span>}\n <textarea\n {...props}\n className={cx(styles.textarea, className, touched && styles.touched)}\n onBlur={composeEventHandlers(onBlur, onBlurProp)}\n required={required}\n style={\n {\n ...style,\n '--min-rows': minRows,\n '--max-rows': maxRows,\n } as React.CSSProperties\n }\n value={value}\n />\n </label>\n );\n};\n"],"names":["Textarea","className","label","maxRows","minRows","onBlur","onBlurProp","required","style","value","props","touched","useTouched","styles","jsx","undefined","cx","textarea","composeEventHandlers"],"mappings":";;;;;;;GAaaA,IAAWA,CAAC;AAAA,EACvBC,WAAAA;AAAAA,EACAC,OAAAA;AAAAA,EACAC,SAAAA,IAAU;AAAA,EACVC,SAAAA,IAAU;AAAA,EACVC,QAAQC;AAAAA,EACRC,UAAAA;AAAAA,EACAC,OAAAA;AAAAA,EACAC,OAAAA;AAAAA,EACA,GAAGC;AACU,MAAM;AACnB,QAAM;AAAA,IAAEC,SAAAA;AAAAA,IAASN,QAAAA;AAAAA,EAAAA,IAAWO,EAAWH,MAAU,EAAE;AAEnD,2BACG,SAAA,EAAM,WAAWI,EAAOX,OAAM,kBAAA,YAC5BA,UAAAA;AAAAA,IAAAA,KAAS,gBAAAY,EAAC,QAAA,EAAK,iBAAeP,KAAYQ,QAAYb,UAAAA,GAAM;AAAA,sBAC5D,YAAA,EACC,GAAIQ,GACJ,WAAWM,EAAGH,EAAOI,UAAUhB,GAAWU,KAAWE,EAAOF,OAAO,GACnE,QAAQO,EAAqBb,GAAQC,CAAU,GAC/C,UAAAC,GACA,OACE;AAAA,MACE,GAAGC;AAAAA,MACH,cAAcJ;AAAAA,MACd,cAAcD;AAAAA,IAAAA,GAGlB,OAAAM,EAAA,CAAa;AAAA,EAAA,GAEjB;AAEJ;"}