@solibo/solibo-ui 0.3.39 → 0.3.41

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 (57) hide show
  1. package/dist/assets/index.css +1 -1
  2. package/dist/assets/index20.css +1 -1
  3. package/dist/assets/index22.css +1 -1
  4. package/dist/assets/index41.css +1 -1
  5. package/dist/components/_collapsible/index.cjs +1 -1
  6. package/dist/components/_collapsible/index.cjs.map +1 -1
  7. package/dist/components/_collapsible/index.js +19 -15
  8. package/dist/components/_collapsible/index.js.map +1 -1
  9. package/dist/components/_dropdown/index.cjs +1 -1
  10. package/dist/components/_dropdown/index.cjs.map +1 -1
  11. package/dist/components/_dropdown/index.js +149 -136
  12. package/dist/components/_dropdown/index.js.map +1 -1
  13. package/dist/components/button/index.cjs +1 -1
  14. package/dist/components/button/index.cjs.map +1 -1
  15. package/dist/components/button/index.js +13 -13
  16. package/dist/components/button/index.js.map +1 -1
  17. package/dist/components/checkbox/index.cjs +1 -1
  18. package/dist/components/checkbox/index.js +1 -1
  19. package/dist/components/icon/index.cjs +1 -1
  20. package/dist/components/icon/index.js +1 -1
  21. package/dist/components/input/index.cjs +1 -1
  22. package/dist/components/input/index.cjs.map +1 -1
  23. package/dist/components/input/index.js +13 -13
  24. package/dist/components/input/index.js.map +1 -1
  25. package/dist/components/nav/index.cjs +1 -1
  26. package/dist/components/nav/index.js +1 -1
  27. package/dist/components/select/index.cjs +1 -1
  28. package/dist/components/select/index.js +3 -2
  29. package/dist/components/select/index.js.map +1 -1
  30. package/dist/components/table/index.cjs +1 -1
  31. package/dist/components/table/index.cjs.map +1 -1
  32. package/dist/components/table/index.js +10 -10
  33. package/dist/components/table/index.js.map +1 -1
  34. package/dist/components/textarea/index.cjs +1 -1
  35. package/dist/components/textarea/index.js +1 -1
  36. package/dist/{icons-CMoejLkL.cjs → icons-C_cX1FYp.cjs} +2 -2
  37. package/dist/{icons-CMoejLkL.cjs.map → icons-C_cX1FYp.cjs.map} +1 -1
  38. package/dist/{icons-BqQRUUWn.js → icons-DfmpRbxE.js} +2 -2
  39. package/dist/{icons-BqQRUUWn.js.map → icons-DfmpRbxE.js.map} +1 -1
  40. package/dist/{index-xRmXVWAN.js → index-C_OgUYu-.js} +25 -18
  41. package/dist/index-C_OgUYu-.js.map +1 -0
  42. package/dist/index-CfK1ATlt.cjs +2 -0
  43. package/dist/index-CfK1ATlt.cjs.map +1 -0
  44. package/dist/index.cjs +1 -1
  45. package/dist/index.js +1 -1
  46. package/dist/utils-BFlnRYx7.js +34 -0
  47. package/dist/utils-BFlnRYx7.js.map +1 -0
  48. package/dist/utils-DqVa4K58.cjs +2 -0
  49. package/dist/utils-DqVa4K58.cjs.map +1 -0
  50. package/package.json +1 -1
  51. package/dist/index-HNd9cEc6.cjs +0 -2
  52. package/dist/index-HNd9cEc6.cjs.map +0 -1
  53. package/dist/index-xRmXVWAN.js.map +0 -1
  54. package/dist/utils-DXIJVVzz.js +0 -14
  55. package/dist/utils-DXIJVVzz.js.map +0 -1
  56. package/dist/utils-D_TJ8wDc.cjs +0 -2
  57. package/dist/utils-D_TJ8wDc.cjs.map +0 -1
@@ -1,175 +1,188 @@
1
- import { jsxs as w, jsx as a, Fragment as X } from "react/jsx-runtime";
2
- import { t as B } from "../../classix-DG18itHa.js";
3
- import Y, { useRef as S, useMemo as g, useState as C, useEffect as L, Children as Z, isValidElement as v } from "react";
4
- import { Button as T } from "../button/index.js";
5
- import { i as ee } from "../../icons-BqQRUUWn.js";
6
- import { Input as te } from "../input/index.js";
7
- import { i as ne } from "../../styles.module-C_Z8FrR5.js";
8
- import { List as re } from "../list/index.js";
9
- import { s as le, S as oe } from "../../index-xRmXVWAN.js";
10
- import '../../assets/index22.css';const se = "_dropdown_ztht0_1", ie = "_empty_ztht0_4", ae = "_group_ztht0_5", ce = "_placeholder_ztht0_6", pe = "_filter_ztht0_14", ue = "_native_ztht0_25", de = "_option_ztht0_35", fe = "_options_ztht0_57", me = "_panel_ztht0_64", he = "_selected_ztht0_85", _e = "_text_ztht0_89", ge = "_trigger_ztht0_97", ve = "_minimal_ztht0_111", o = {
11
- dropdown: se,
12
- empty: ie,
13
- group: ae,
14
- placeholder: ce,
15
- filter: pe,
16
- native: ue,
17
- option: de,
18
- options: fe,
19
- panel: me,
20
- selected: he,
21
- text: _e,
22
- trigger: ge,
23
- minimal: ve
1
+ import { jsxs as w, jsx as i, Fragment as Z } from "react/jsx-runtime";
2
+ import { t as C } from "../../classix-DG18itHa.js";
3
+ import ee, { useRef as _, useState as V, useEffect as O, Children as te, isValidElement as g } from "react";
4
+ import { Button as A } from "../button/index.js";
5
+ import { i as re } from "../../icons-DfmpRbxE.js";
6
+ import { Input as ne } from "../input/index.js";
7
+ import { i as oe } from "../../styles.module-C_Z8FrR5.js";
8
+ import { List as le } from "../list/index.js";
9
+ import { s as se, S as ie } from "../../index-C_OgUYu-.js";
10
+ import { r as G } from "../../utils-BFlnRYx7.js";
11
+ import '../../assets/index22.css';const ae = "_dropdown_k2w7p_1", ce = "_empty_k2w7p_4", pe = "_group_k2w7p_5", ue = "_placeholder_k2w7p_6", de = "_filter_k2w7p_14", fe = "_native_k2w7p_25", me = "_option_k2w7p_35", he = "_options_k2w7p_57", ge = "_panel_k2w7p_64", _e = "_selected_k2w7p_85", we = "_text_k2w7p_89", ve = "_trigger_k2w7p_97", ye = "_minimal_k2w7p_113", s = {
12
+ dropdown: ae,
13
+ empty: ce,
14
+ group: pe,
15
+ placeholder: ue,
16
+ filter: de,
17
+ native: fe,
18
+ option: me,
19
+ options: he,
20
+ panel: ge,
21
+ selected: _e,
22
+ text: we,
23
+ trigger: ve,
24
+ minimal: ye
24
25
  };
25
- function R(t) {
26
- return typeof t == "string" || typeof t == "number" ? String(t) : Array.isArray(t) ? t.map(R).join(" ") : v(t) ? R(t.props.children) : "";
26
+ function K(e, n) {
27
+ return {
28
+ "--icon-svg": re(e).replace("currentColor", n)
29
+ };
27
30
  }
28
- function be(t) {
29
- return v(t) && t.type === "option";
31
+ function P(e) {
32
+ return typeof e == "string" || typeof e == "number" ? String(e) : Array.isArray(e) ? e.map(P).join(" ") : g(e) ? P(e.props.children) : "";
30
33
  }
31
- function ye(t) {
32
- return v(t) && t.type === "optgroup";
34
+ function be(e) {
35
+ return g(e) && e.type === "option";
33
36
  }
34
- function Se(t) {
35
- return v(t) && t.type === Y.Fragment;
37
+ function Se(e) {
38
+ return g(e) && e.type === "optgroup";
36
39
  }
37
- function we(t) {
38
- return v(t) && t.type === oe;
40
+ function xe(e) {
41
+ return g(e) && e.type === ee.Fragment;
39
42
  }
40
- function V(t, l, i = !1) {
41
- const s = [];
42
- return Z.forEach(t, (n) => {
43
- if (Se(n)) {
44
- s.push(...V(n.props.children, l, i));
43
+ function ke(e) {
44
+ return g(e) && e.type === ie;
45
+ }
46
+ function $(e, n, o = !1) {
47
+ const l = [];
48
+ return te.forEach(e, (t) => {
49
+ if (xe(t)) {
50
+ l.push(...$(t.props.children, n, o));
45
51
  return;
46
52
  }
47
- if (be(n)) {
48
- const d = R(n.props.children).trim(), p = n.props.value != null ? String(n.props.value) : d;
49
- s.push({
50
- disabled: i || !!n.props.disabled,
51
- groupLabel: l,
52
- hidden: !!n.props.hidden,
53
- isPlaceholder: !!(n.props.hidden && p === ""),
54
- label: n.props.children,
55
- selected: !!n.props.selected,
56
- text: d,
57
- value: p
53
+ if (be(t)) {
54
+ const p = P(t.props.children).trim(), u = t.props.value != null ? String(t.props.value) : p;
55
+ l.push({
56
+ disabled: o || !!t.props.disabled,
57
+ groupLabel: n,
58
+ hidden: !!t.props.hidden,
59
+ isPlaceholder: !!(t.props.hidden && u === ""),
60
+ label: t.props.children,
61
+ selected: !!t.props.selected,
62
+ text: p,
63
+ value: u
58
64
  });
59
65
  return;
60
66
  }
61
- ye(n) && s.push(...V(n.props.children, n.props.label, i || !!n.props.disabled));
62
- }), s;
67
+ Se(t) && l.push(...$(t.props.children, t.props.label, o || !!t.props.disabled));
68
+ }), l;
63
69
  }
64
- function xe(t) {
65
- const l = t.trim();
66
- if (!l)
70
+ function Ne(e) {
71
+ const n = e.trim();
72
+ if (!n)
67
73
  return null;
68
- const s = [.../[*?]/.test(l) ? l : `*${l}*`].map((n) => n === "*" ? ".*" : n === "?" ? "." : n.replace(/[|\\{}()[\]^$+.,]/g, "\\$&")).join("");
69
- return new RegExp(`^${s}$`, "i");
74
+ const l = [.../[*?]/.test(n) ? n : `*${n}*`].map((t) => t === "*" ? ".*" : t === "?" ? "." : t.replace(/[|\\{}()[\]^$+.,]/g, "\\$&")).join("");
75
+ return new RegExp(`^${l}$`, "i");
76
+ }
77
+ function Ee(e, n) {
78
+ const o = Ne(n), l = e.filter((t) => !t.hidden && !t.isPlaceholder);
79
+ return o ? l.filter((t) => o.test([t.groupLabel, t.text, t.value].filter(Boolean).join(" "))) : l;
70
80
  }
71
- function ze(t, l, i) {
72
- var n;
73
- if (l != null)
74
- return String(l);
75
- if (i != null)
76
- return String(i);
77
- const s = t.find((d) => d.selected);
78
- return s ? s.value : ((n = t[0]) == null ? void 0 : n.value) ?? "";
81
+ function Ce(e, n) {
82
+ return e.find((o) => o.value === n) ?? e.find((o) => o.isPlaceholder) ?? e[0];
79
83
  }
80
- function Ne(t) {
81
- if (we(t)) {
84
+ function Ve(e, n, o) {
85
+ var t;
86
+ if (n != null)
87
+ return String(n);
88
+ if (o != null)
89
+ return String(o);
90
+ const l = e.find((p) => p.selected);
91
+ return l ? l.value : ((t = e[0]) == null ? void 0 : t.value) ?? "";
92
+ }
93
+ function Oe(e) {
94
+ if (ke(e)) {
82
95
  const {
83
- children: l,
84
- placeholder: i,
85
- ...s
86
- } = t.props;
96
+ children: n,
97
+ placeholder: o,
98
+ ...l
99
+ } = e.props;
87
100
  return {
88
- children: /* @__PURE__ */ w(X, { children: [
89
- i && /* @__PURE__ */ a("option", { hidden: !0, value: "", children: i }),
90
- l
101
+ children: /* @__PURE__ */ w(Z, { children: [
102
+ o && /* @__PURE__ */ i("option", { hidden: !0, value: "", children: o }),
103
+ n
91
104
  ] }),
92
- props: s
105
+ props: l
93
106
  };
94
107
  }
95
108
  return {
96
- children: t.props.children,
97
- props: t.props
109
+ children: e.props.children,
110
+ props: e.props
98
111
  };
99
112
  }
100
- const Fe = ({
101
- children: t,
102
- className: l,
103
- emptyLabel: i = "No matches found",
104
- searchPlaceholder: s = "Filter",
105
- variant: n = "default",
106
- ...d
113
+ const Qe = ({
114
+ children: e,
115
+ className: n,
116
+ emptyLabel: o = "No matches found",
117
+ searchPlaceholder: l = "Filter",
118
+ variant: t = "default",
119
+ ...p
107
120
  }) => {
108
- const p = Ne(t), {
109
- defaultValue: j,
110
- onChange: x,
111
- value: b,
112
- ...W
113
- } = p.props, F = le(W), y = S(null), I = S(null), D = S(null), Q = S(null), c = g(() => V(p.children), [p.children]), h = b != null, z = g(() => ze(c, b, j), [j, c, b]), [N, E] = C(() => z), [u, _] = C(!1), [O, k] = C(""), P = h ? String(b) : N, f = c.find((e) => e.value === P) ?? c.find((e) => e.isPlaceholder) ?? c[0], q = g(() => ({
114
- "--icon-svg": ee("search").replace("currentColor", n === "minimal" ? "rgb(255 255 255)" : "rgb(0 0 0)")
115
- }), [n]), $ = g(() => xe(O), [O]), M = g(() => {
116
- const e = c.filter((r) => !r.hidden && !r.isPlaceholder);
117
- return $ ? e.filter((r) => $.test([r.groupLabel, r.text, r.value].filter(Boolean).join(" "))) : e;
118
- }, [$, c]);
119
- L(() => {
120
- !h && !c.some((e) => e.value === N) && E(z);
121
- }, [z, N, h, c]), L(() => {
122
- var e;
123
- if (!u) {
124
- k("");
121
+ const u = Oe(e), {
122
+ defaultValue: T,
123
+ onChange: v,
124
+ value: y,
125
+ ...q
126
+ } = u.props, B = se(q), I = _(null), L = _(null), R = _(null), j = _(null), m = $(u.children), h = y != null, b = Ve(m, y, T), [S, x] = V(() => b), [c, k] = V(!1), [D, F] = V(""), N = h ? String(y) : S, W = {
127
+ default: G("--color-icon"),
128
+ white: G("--color-white", "white")
129
+ }, Q = t === "minimal" ? W.white : W.default, d = Ce(m, N), H = K("chevron", Q), J = K("search", Q), z = Ee(m, D);
130
+ O(() => {
131
+ !h && !m.some((r) => r.value === S) && x(b);
132
+ }, [b, S, h, m]), O(() => {
133
+ var r;
134
+ if (!c) {
135
+ F("");
125
136
  return;
126
137
  }
127
- (e = Q.current) == null || e.focus();
128
- }, [u]), L(() => {
129
- if (!u)
138
+ (r = j.current) == null || r.focus();
139
+ }, [c]), O(() => {
140
+ if (!c)
130
141
  return;
131
- const e = (r) => {
132
- var m;
133
- (m = I.current) != null && m.contains(r.target) || _(!1);
142
+ const r = (a) => {
143
+ var f;
144
+ (f = L.current) != null && f.contains(a.target) || k(!1);
134
145
  };
135
- return document.addEventListener("mousedown", e), () => {
136
- document.removeEventListener("mousedown", e);
146
+ return document.addEventListener("mousedown", r), () => {
147
+ document.removeEventListener("mousedown", r);
137
148
  };
138
- }, [u]);
139
- const H = (e) => {
140
- h || E(e.target.value), x == null || x(e);
141
- }, J = (e) => {
142
- var A, G, K;
143
- h || E(e);
144
- const r = D.current;
145
- if (!r) {
146
- _(!1), (A = y.current) == null || A.focus();
149
+ }, [c]);
150
+ const U = (r) => {
151
+ h || x(r.target.value), v == null || v(r);
152
+ }, E = () => {
153
+ var r;
154
+ k(!1), (r = I.current) == null || r.focus();
155
+ }, X = (r) => {
156
+ var M;
157
+ h || x(r);
158
+ const a = R.current;
159
+ if (!a) {
160
+ E();
147
161
  return;
148
162
  }
149
- const m = (G = Object.getOwnPropertyDescriptor(HTMLSelectElement.prototype, "value")) == null ? void 0 : G.set;
150
- m == null || m.call(r, e), r.dispatchEvent(new Event("change", {
163
+ const f = (M = Object.getOwnPropertyDescriptor(HTMLSelectElement.prototype, "value")) == null ? void 0 : M.set;
164
+ f == null || f.call(a, r), a.dispatchEvent(new Event("change", {
151
165
  bubbles: !0
152
- })), _(!1), (K = y.current) == null || K.focus();
153
- }, U = (e) => {
154
- var r;
155
- e.key === "Escape" && (_(!1), (r = y.current) == null || r.focus());
166
+ })), E();
167
+ }, Y = (r) => {
168
+ r.key === "Escape" && E();
156
169
  };
157
- return /* @__PURE__ */ w("div", { className: B(o.dropdown, n === "minimal" && o.minimal, l), onKeyDown: U, ref: I, ...d, "data-component": "dropdown", children: [
158
- /* @__PURE__ */ a("select", { ...F, "aria-hidden": "true", className: o.native, onChange: H, ref: D, tabIndex: -1, value: P, children: p.children }),
159
- /* @__PURE__ */ a(T, { "aria-expanded": u, "aria-haspopup": "dialog", className: B(n === "default" && ne.input, o.trigger, (f == null ? void 0 : f.isPlaceholder) && o.placeholder), "data-open": u ? "true" : void 0, disabled: F.disabled, onClick: () => _((e) => !e), ref: y, variant: "minimal", children: /* @__PURE__ */ a("span", { className: o.text, children: (f == null ? void 0 : f.label) ?? "Select an option" }) }),
160
- u && /* @__PURE__ */ w("div", { className: o.panel, children: [
161
- /* @__PURE__ */ a(te, { "aria-label": "Filter", className: o.filter, icon: "search", onChange: (e) => k(e.target.value), placeholder: s, ref: Q, style: q, type: "search", value: O }),
162
- /* @__PURE__ */ a(re, { "aria-label": "Dropdown", className: o.options, children: M.length > 0 ? M.map((e) => {
163
- const r = e.value === P;
164
- return /* @__PURE__ */ a("li", { "data-component": "dropdown", children: /* @__PURE__ */ w(T, { "aria-label": r ? `${e.text}, selected` : e.text, className: B(o.option, r && o.selected), disabled: e.disabled, onClick: () => J(e.value), variant: "minimal", children: [
165
- /* @__PURE__ */ a("span", { className: o.text, children: e.label }),
166
- e.groupLabel && /* @__PURE__ */ a("small", { className: o.group, children: e.groupLabel })
167
- ] }) }, `${e.groupLabel ?? "root"}-${e.value}`);
168
- }) : /* @__PURE__ */ a("li", { className: o.empty, children: i }) })
170
+ return /* @__PURE__ */ w("div", { className: C(s.dropdown, t === "minimal" && s.minimal, n), onKeyDown: Y, ref: L, ...p, "data-component": "dropdown", children: [
171
+ /* @__PURE__ */ i("select", { ...B, "aria-hidden": "true", className: s.native, onChange: U, ref: R, tabIndex: -1, value: N, children: u.children }),
172
+ /* @__PURE__ */ i(A, { "aria-expanded": c, "aria-haspopup": "dialog", className: C(t === "default" && oe.input, s.trigger, (d == null ? void 0 : d.isPlaceholder) && s.placeholder), "data-open": c ? "true" : void 0, disabled: B.disabled, onClick: () => k((r) => !r), ref: I, style: H, variant: "minimal", children: /* @__PURE__ */ i("span", { className: s.text, children: (d == null ? void 0 : d.label) ?? "Select an option" }) }),
173
+ c && /* @__PURE__ */ w("div", { className: s.panel, children: [
174
+ /* @__PURE__ */ i(ne, { "aria-label": "Filter", className: s.filter, icon: "search", onChange: (r) => F(r.target.value), placeholder: l, ref: j, style: J, type: "search", value: D }),
175
+ /* @__PURE__ */ i(le, { "aria-label": "Dropdown", className: s.options, children: z.length > 0 ? z.map((r) => {
176
+ const a = r.value === N;
177
+ return /* @__PURE__ */ i("li", { "data-component": "dropdown", children: /* @__PURE__ */ w(A, { "aria-label": a ? `${r.text}, selected` : r.text, className: C(s.option, a && s.selected), disabled: r.disabled, onClick: () => X(r.value), variant: "minimal", children: [
178
+ /* @__PURE__ */ i("span", { className: s.text, children: r.label }),
179
+ r.groupLabel && /* @__PURE__ */ i("small", { className: s.group, children: r.groupLabel })
180
+ ] }) }, `${r.groupLabel ?? "root"}-${r.value}`);
181
+ }) : /* @__PURE__ */ i("li", { className: s.empty, children: o }) })
169
182
  ] })
170
183
  ] });
171
184
  };
172
185
  export {
173
- Fe as Dropdown
186
+ Qe as Dropdown
174
187
  };
175
188
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/components/_dropdown/index.tsx"],"sourcesContent":["import cx from 'classix';\nimport React, { Children, isValidElement, useEffect, useMemo, useRef, useState } from 'react';\n\nimport { Button } from '@/components/button';\nimport { iconSVG } from '@/components/icon/icons';\nimport { Input } from '@/components/input';\nimport inputStyles from '@/components/input/styles.module.css';\nimport { List } from '@/components/list';\nimport { Select, type SelectProps } from '@/components/select';\nimport { sanitizeSelectProps } from '@/components/select/sanitizeSelectProps';\n\nimport styles from './styles.module.css';\n\ntype NativeSelectProps = Omit<React.ComponentPropsWithoutRef<'select'>, 'children' | 'multiple'> & {\n children: React.ReactNode;\n multiple?: false;\n};\n\ntype NativeSelectElement = React.ReactElement<NativeSelectProps, 'select'>;\ntype WrappedSelectElement = React.ReactElement<SelectProps, typeof Select>;\ntype DropdownSelectElement = NativeSelectElement | WrappedSelectElement;\n\ntype DropdownOption = {\n disabled: boolean;\n groupLabel?: string;\n hidden: boolean;\n isPlaceholder: boolean;\n label: React.ReactNode;\n selected: boolean;\n text: string;\n value: string;\n};\n\nexport type DropdownProps = Omit<React.ComponentPropsWithoutRef<'div'>, 'children'> & {\n children: DropdownSelectElement;\n emptyLabel?: string;\n searchPlaceholder?: string;\n variant?: 'default' | 'minimal';\n};\n\nfunction getNodeText(node: React.ReactNode): string {\n if (typeof node === 'string' || typeof node === 'number') {\n return String(node);\n }\n\n if (Array.isArray(node)) {\n return node.map(getNodeText).join(' ');\n }\n\n if (isValidElement<{ children?: React.ReactNode }>(node)) {\n return getNodeText(node.props.children);\n }\n\n return '';\n}\n\nfunction isOptionElement(\n node: React.ReactNode\n): node is React.ReactElement<React.ComponentPropsWithoutRef<'option'>, 'option'> {\n return isValidElement(node) && node.type === 'option';\n}\n\nfunction isOptGroupElement(\n node: React.ReactNode\n): node is React.ReactElement<React.ComponentPropsWithoutRef<'optgroup'>, 'optgroup'> {\n return isValidElement(node) && node.type === 'optgroup';\n}\n\nfunction isFragmentElement(\n node: React.ReactNode\n): node is React.ReactElement<{ children?: React.ReactNode }, typeof React.Fragment> {\n return isValidElement(node) && node.type === React.Fragment;\n}\n\nfunction isWrappedSelectElement(node: React.ReactNode): node is WrappedSelectElement {\n return isValidElement(node) && node.type === Select;\n}\n\nfunction extractOptions(\n children: React.ReactNode,\n groupLabel?: string,\n groupDisabled = false\n): DropdownOption[] {\n const options: DropdownOption[] = [];\n\n Children.forEach(children, (child) => {\n if (isFragmentElement(child)) {\n options.push(...extractOptions(child.props.children, groupLabel, groupDisabled));\n return;\n }\n\n if (isOptionElement(child)) {\n const text = getNodeText(child.props.children).trim();\n const value = child.props.value != null ? String(child.props.value) : text;\n\n options.push({\n disabled: groupDisabled || Boolean(child.props.disabled),\n groupLabel,\n hidden: Boolean(child.props.hidden),\n isPlaceholder: Boolean(child.props.hidden && value === ''),\n label: child.props.children,\n selected: Boolean(child.props.selected),\n text,\n value,\n });\n\n return;\n }\n\n if (isOptGroupElement(child)) {\n options.push(\n ...extractOptions(\n child.props.children,\n child.props.label,\n groupDisabled || Boolean(child.props.disabled)\n )\n );\n }\n });\n\n return options;\n}\n\nfunction buildWildcardMatcher(query: string) {\n const trimmedQuery = query.trim();\n\n if (!trimmedQuery) {\n return null;\n }\n\n const wildcardQuery = /[*?]/.test(trimmedQuery) ? trimmedQuery : `*${trimmedQuery}*`;\n const expression = [...wildcardQuery]\n .map((character) => {\n if (character === '*') {\n return '.*';\n }\n\n if (character === '?') {\n return '.';\n }\n\n return character.replace(/[|\\\\{}()[\\]^$+.,]/g, '\\\\$&');\n })\n .join('');\n\n return new RegExp(`^${expression}$`, 'i');\n}\n\nfunction getInitialValue(\n options: DropdownOption[],\n value?: NativeSelectProps['value'],\n defaultValue?: NativeSelectProps['defaultValue']\n) {\n if (value != null) {\n return String(value);\n }\n\n if (defaultValue != null) {\n return String(defaultValue);\n }\n\n const selectedOption = options.find((option) => option.selected);\n\n if (selectedOption) {\n return selectedOption.value;\n }\n\n return options[0]?.value ?? '';\n}\n\nfunction normalizeSelectElement(selectElement: DropdownSelectElement) {\n if (isWrappedSelectElement(selectElement)) {\n const { children, placeholder, ...props } = selectElement.props;\n\n return {\n children: (\n <>\n {placeholder && (\n <option\n hidden\n value=''\n >\n {placeholder}\n </option>\n )}\n {children}\n </>\n ),\n props,\n };\n }\n\n return {\n children: selectElement.props.children,\n props: selectElement.props,\n };\n}\n\nexport const Dropdown = ({\n children: selectElement,\n className,\n emptyLabel = 'No matches found',\n searchPlaceholder = 'Filter',\n variant = 'default',\n ...props\n}: DropdownProps) => {\n const normalizedSelect = normalizeSelectElement(selectElement);\n const { defaultValue, onChange, value, ...restSelectProps } = normalizedSelect.props;\n const selectProps = sanitizeSelectProps(restSelectProps);\n const buttonRef = useRef<HTMLButtonElement>(null);\n const containerRef = useRef<HTMLDivElement>(null);\n const nativeSelectRef = useRef<HTMLSelectElement>(null);\n const searchRef = useRef<HTMLInputElement>(null);\n const options = useMemo(\n () => extractOptions(normalizedSelect.children),\n [normalizedSelect.children]\n );\n const isControlled = value != null;\n const initialValue = useMemo(\n () => getInitialValue(options, value, defaultValue),\n [defaultValue, options, value]\n );\n const [internalValue, setInternalValue] = useState(() => initialValue);\n const [isOpen, setIsOpen] = useState(false);\n const [query, setQuery] = useState('');\n const selectedValue = isControlled ? String(value) : internalValue;\n\n const selectedOption = options.find((option) => option.value === selectedValue);\n const displayOption =\n selectedOption ?? options.find((option) => option.isPlaceholder) ?? options[0];\n const filterStyle = useMemo(\n () =>\n ({\n '--icon-svg': iconSVG('search').replace(\n 'currentColor',\n variant === 'minimal' ? 'rgb(255 255 255)' : 'rgb(0 0 0)'\n ),\n }) as React.CSSProperties,\n [variant]\n );\n const matcher = useMemo(() => buildWildcardMatcher(query), [query]);\n\n const filteredOptions = useMemo(() => {\n const selectableOptions = options.filter((option) => !option.hidden && !option.isPlaceholder);\n\n if (!matcher) {\n return selectableOptions;\n }\n\n return selectableOptions.filter((option) =>\n matcher.test([option.groupLabel, option.text, option.value].filter(Boolean).join(' '))\n );\n }, [matcher, options]);\n\n useEffect(() => {\n if (!isControlled && !options.some((option) => option.value === internalValue)) {\n setInternalValue(initialValue);\n }\n }, [initialValue, internalValue, isControlled, options]);\n\n useEffect(() => {\n if (!isOpen) {\n setQuery('');\n return;\n }\n\n searchRef.current?.focus();\n }, [isOpen]);\n\n useEffect(() => {\n if (!isOpen) {\n return;\n }\n\n const handlePointerDown = (event: MouseEvent) => {\n if (!containerRef.current?.contains(event.target as Node)) {\n setIsOpen(false);\n }\n };\n\n document.addEventListener('mousedown', handlePointerDown);\n\n return () => {\n document.removeEventListener('mousedown', handlePointerDown);\n };\n }, [isOpen]);\n\n const handleNativeChange = (event: React.ChangeEvent<HTMLSelectElement>) => {\n if (!isControlled) {\n setInternalValue(event.target.value);\n }\n\n onChange?.(event);\n };\n\n const commitValue = (nextValue: string) => {\n if (!isControlled) {\n setInternalValue(nextValue);\n }\n\n const nativeSelect = nativeSelectRef.current;\n\n if (!nativeSelect) {\n setIsOpen(false);\n buttonRef.current?.focus();\n return;\n }\n\n const valueSetter = Object.getOwnPropertyDescriptor(HTMLSelectElement.prototype, 'value')?.set;\n\n valueSetter?.call(nativeSelect, nextValue);\n nativeSelect.dispatchEvent(new Event('change', { bubbles: true }));\n setIsOpen(false);\n buttonRef.current?.focus();\n };\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (event.key === 'Escape') {\n setIsOpen(false);\n buttonRef.current?.focus();\n }\n };\n\n return (\n <div\n className={cx(styles.dropdown, variant === 'minimal' && styles.minimal, className)}\n onKeyDown={handleKeyDown}\n ref={containerRef}\n {...props}\n >\n <select\n {...selectProps}\n aria-hidden='true'\n className={styles.native}\n onChange={handleNativeChange}\n ref={nativeSelectRef}\n tabIndex={-1}\n value={selectedValue}\n >\n {normalizedSelect.children}\n </select>\n <Button\n aria-expanded={isOpen}\n aria-haspopup='dialog'\n className={cx(\n variant === 'default' && inputStyles.input,\n styles.trigger,\n displayOption?.isPlaceholder && styles.placeholder\n )}\n data-open={isOpen ? 'true' : undefined}\n disabled={selectProps.disabled}\n onClick={() => setIsOpen((currentValue) => !currentValue)}\n ref={buttonRef}\n variant='minimal'\n >\n <span className={styles.text}>{displayOption?.label ?? 'Select an option'}</span>\n </Button>\n {isOpen && (\n <div className={styles.panel}>\n <Input\n aria-label='Filter'\n className={styles.filter}\n icon='search'\n onChange={(event) => setQuery(event.target.value)}\n placeholder={searchPlaceholder}\n ref={searchRef}\n style={filterStyle}\n type='search'\n value={query}\n />\n <List\n aria-label='Dropdown'\n className={styles.options}\n >\n {filteredOptions.length > 0 ? (\n filteredOptions.map((option) => {\n const isSelected = option.value === selectedValue;\n\n return (\n <li key={`${option.groupLabel ?? 'root'}-${option.value}`}>\n <Button\n aria-label={isSelected ? `${option.text}, selected` : option.text}\n className={cx(styles.option, isSelected && styles.selected)}\n disabled={option.disabled}\n onClick={() => commitValue(option.value)}\n variant='minimal'\n >\n <span className={styles.text}>{option.label}</span>\n {option.groupLabel && (\n <small className={styles.group}>{option.groupLabel}</small>\n )}\n </Button>\n </li>\n );\n })\n ) : (\n <li className={styles.empty}>{emptyLabel}</li>\n )}\n </List>\n </div>\n )}\n </div>\n );\n};\n"],"names":["getNodeText","node","String","Array","isArray","map","join","isValidElement","props","children","isOptionElement","type","isOptGroupElement","isFragmentElement","React","Fragment","isWrappedSelectElement","Select","extractOptions","groupLabel","groupDisabled","options","Children","forEach","child","push","text","trim","value","disabled","Boolean","hidden","isPlaceholder","label","selected","buildWildcardMatcher","query","trimmedQuery","expression","test","character","replace","RegExp","getInitialValue","defaultValue","selectedOption","find","option","normalizeSelectElement","selectElement","placeholder","jsxs","Dropdown","className","emptyLabel","searchPlaceholder","variant","normalizedSelect","onChange","restSelectProps","selectProps","sanitizeSelectProps","buttonRef","useRef","containerRef","nativeSelectRef","searchRef","useMemo","isControlled","initialValue","internalValue","setInternalValue","useState","isOpen","setIsOpen","setQuery","selectedValue","displayOption","filterStyle","iconSVG","matcher","filteredOptions","selectableOptions","filter","useEffect","some","current","focus","handlePointerDown","event","contains","target","document","addEventListener","removeEventListener","handleNativeChange","commitValue","nextValue","nativeSelect","valueSetter","Object","getOwnPropertyDescriptor","HTMLSelectElement","prototype","set","call","dispatchEvent","Event","bubbles","handleKeyDown","key","cx","styles","dropdown","minimal","jsx","native","Button","inputStyles","input","trigger","undefined","currentValue","panel","Input","List","length","isSelected","group","empty"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../src/components/_dropdown/index.tsx"],"sourcesContent":["import cx from 'classix';\nimport React, { Children, isValidElement, useEffect, useRef, useState } from 'react';\n\nimport { Button } from '@/components/button';\nimport { type IconName, iconSVG } from '@/components/icon/icons';\nimport { Input } from '@/components/input';\nimport inputStyles from '@/components/input/styles.module.css';\nimport { List } from '@/components/list';\nimport { Select, type SelectProps } from '@/components/select';\nimport { sanitizeSelectProps } from '@/components/select/sanitizeSelectProps';\nimport { resolveColor } from '@/utils';\n\nimport styles from './styles.module.css';\n\ntype NativeSelectProps = Omit<React.ComponentPropsWithoutRef<'select'>, 'children' | 'multiple'> & {\n children: React.ReactNode;\n multiple?: false;\n};\n\ntype NativeSelectElement = React.ReactElement<NativeSelectProps, 'select'>;\ntype WrappedSelectElement = React.ReactElement<SelectProps, typeof Select>;\ntype DropdownSelectElement = NativeSelectElement | WrappedSelectElement;\n\ntype DropdownOption = {\n disabled: boolean;\n groupLabel?: string;\n hidden: boolean;\n isPlaceholder: boolean;\n label: React.ReactNode;\n selected: boolean;\n text: string;\n value: string;\n};\n\nexport type DropdownProps = Omit<React.ComponentPropsWithoutRef<'div'>, 'children'> & {\n children: DropdownSelectElement;\n emptyLabel?: string;\n searchPlaceholder?: string;\n variant?: 'default' | 'minimal';\n};\n\ntype withVars = React.CSSProperties & {\n '--icon-svg'?: string;\n};\n\nfunction getIconWithVars(icon: IconName, color: string): withVars {\n return {\n '--icon-svg': iconSVG(icon).replace('currentColor', color),\n };\n}\n\nfunction getNodeText(node: React.ReactNode): string {\n if (typeof node === 'string' || typeof node === 'number') {\n return String(node);\n }\n\n if (Array.isArray(node)) {\n return node.map(getNodeText).join(' ');\n }\n\n if (isValidElement<{ children?: React.ReactNode }>(node)) {\n return getNodeText(node.props.children);\n }\n\n return '';\n}\n\nfunction isOptionElement(\n node: React.ReactNode\n): node is React.ReactElement<React.ComponentPropsWithoutRef<'option'>, 'option'> {\n return isValidElement(node) && node.type === 'option';\n}\n\nfunction isOptGroupElement(\n node: React.ReactNode\n): node is React.ReactElement<React.ComponentPropsWithoutRef<'optgroup'>, 'optgroup'> {\n return isValidElement(node) && node.type === 'optgroup';\n}\n\nfunction isFragmentElement(\n node: React.ReactNode\n): node is React.ReactElement<{ children?: React.ReactNode }, typeof React.Fragment> {\n return isValidElement(node) && node.type === React.Fragment;\n}\n\nfunction isWrappedSelectElement(node: React.ReactNode): node is WrappedSelectElement {\n return isValidElement(node) && node.type === Select;\n}\n\nfunction extractOptions(\n children: React.ReactNode,\n groupLabel?: string,\n groupDisabled = false\n): DropdownOption[] {\n const options: DropdownOption[] = [];\n\n Children.forEach(children, (child) => {\n if (isFragmentElement(child)) {\n options.push(...extractOptions(child.props.children, groupLabel, groupDisabled));\n return;\n }\n\n if (isOptionElement(child)) {\n const text = getNodeText(child.props.children).trim();\n const value = child.props.value != null ? String(child.props.value) : text;\n\n options.push({\n disabled: groupDisabled || Boolean(child.props.disabled),\n groupLabel,\n hidden: Boolean(child.props.hidden),\n isPlaceholder: Boolean(child.props.hidden && value === ''),\n label: child.props.children,\n selected: Boolean(child.props.selected),\n text,\n value,\n });\n\n return;\n }\n\n if (isOptGroupElement(child)) {\n options.push(\n ...extractOptions(\n child.props.children,\n child.props.label,\n groupDisabled || Boolean(child.props.disabled)\n )\n );\n }\n });\n\n return options;\n}\n\nfunction buildWildcardMatcher(query: string) {\n const trimmedQuery = query.trim();\n\n if (!trimmedQuery) {\n return null;\n }\n\n const wildcardQuery = /[*?]/.test(trimmedQuery) ? trimmedQuery : `*${trimmedQuery}*`;\n const expression = [...wildcardQuery]\n .map((character) => {\n if (character === '*') {\n return '.*';\n }\n\n if (character === '?') {\n return '.';\n }\n\n return character.replace(/[|\\\\{}()[\\]^$+.,]/g, '\\\\$&');\n })\n .join('');\n\n return new RegExp(`^${expression}$`, 'i');\n}\n\nfunction filterOptions(options: DropdownOption[], query: string) {\n const matcher = buildWildcardMatcher(query);\n const selectableOptions = options.filter((option) => !option.hidden && !option.isPlaceholder);\n\n if (!matcher) {\n return selectableOptions;\n }\n\n return selectableOptions.filter((option) =>\n matcher.test([option.groupLabel, option.text, option.value].filter(Boolean).join(' '))\n );\n}\n\nfunction getDisplayOption(options: DropdownOption[], selectedValue: string) {\n return (\n options.find((option) => option.value === selectedValue) ??\n options.find((option) => option.isPlaceholder) ??\n options[0]\n );\n}\n\nfunction getInitialValue(\n options: DropdownOption[],\n value?: NativeSelectProps['value'],\n defaultValue?: NativeSelectProps['defaultValue']\n) {\n if (value != null) {\n return String(value);\n }\n\n if (defaultValue != null) {\n return String(defaultValue);\n }\n\n const selectedOption = options.find((option) => option.selected);\n\n if (selectedOption) {\n return selectedOption.value;\n }\n\n return options[0]?.value ?? '';\n}\n\nfunction normalizeSelectElement(selectElement: DropdownSelectElement) {\n if (isWrappedSelectElement(selectElement)) {\n const { children, placeholder, ...props } = selectElement.props;\n\n return {\n children: (\n <>\n {placeholder && (\n <option\n hidden\n value=''\n >\n {placeholder}\n </option>\n )}\n {children}\n </>\n ),\n props,\n };\n }\n\n return {\n children: selectElement.props.children,\n props: selectElement.props,\n };\n}\n\nexport const Dropdown = ({\n children: selectElement,\n className,\n emptyLabel = 'No matches found',\n searchPlaceholder = 'Filter',\n variant = 'default',\n ...props\n}: DropdownProps) => {\n const normalizedSelect = normalizeSelectElement(selectElement);\n const { defaultValue, onChange, value, ...restSelectProps } = normalizedSelect.props;\n const selectProps = sanitizeSelectProps(restSelectProps);\n const buttonRef = useRef<HTMLButtonElement>(null);\n const containerRef = useRef<HTMLDivElement>(null);\n const nativeSelectRef = useRef<HTMLSelectElement>(null);\n const searchRef = useRef<HTMLInputElement>(null);\n const options = extractOptions(normalizedSelect.children);\n const isControlled = value != null;\n const initialValue = getInitialValue(options, value, defaultValue);\n const [internalValue, setInternalValue] = useState(() => initialValue);\n const [isOpen, setIsOpen] = useState(false);\n const [query, setQuery] = useState('');\n const selectedValue = isControlled ? String(value) : internalValue;\n const iconColors = {\n default: resolveColor('--color-icon'),\n white: resolveColor('--color-white', 'white'),\n };\n const dropdownIconColor = variant === 'minimal' ? iconColors.white : iconColors.default;\n const displayOption = getDisplayOption(options, selectedValue);\n const triggerWithVars = getIconWithVars('chevron', dropdownIconColor);\n const filterWithVars = getIconWithVars('search', dropdownIconColor);\n const filteredOptions = filterOptions(options, query);\n\n useEffect(() => {\n if (!isControlled && !options.some((option) => option.value === internalValue)) {\n setInternalValue(initialValue);\n }\n }, [initialValue, internalValue, isControlled, options]);\n\n useEffect(() => {\n if (!isOpen) {\n setQuery('');\n return;\n }\n\n searchRef.current?.focus();\n }, [isOpen]);\n\n useEffect(() => {\n if (!isOpen) {\n return;\n }\n\n const handlePointerDown = (event: MouseEvent) => {\n if (!containerRef.current?.contains(event.target as Node)) {\n setIsOpen(false);\n }\n };\n\n document.addEventListener('mousedown', handlePointerDown);\n\n return () => {\n document.removeEventListener('mousedown', handlePointerDown);\n };\n }, [isOpen]);\n\n const handleNativeChange = (event: React.ChangeEvent<HTMLSelectElement>) => {\n if (!isControlled) {\n setInternalValue(event.target.value);\n }\n\n onChange?.(event);\n };\n\n const closeMenu = () => {\n setIsOpen(false);\n buttonRef.current?.focus();\n };\n\n const commitValue = (nextValue: string) => {\n if (!isControlled) {\n setInternalValue(nextValue);\n }\n\n const nativeSelect = nativeSelectRef.current;\n\n if (!nativeSelect) {\n closeMenu();\n return;\n }\n\n const valueSetter = Object.getOwnPropertyDescriptor(HTMLSelectElement.prototype, 'value')?.set;\n\n valueSetter?.call(nativeSelect, nextValue);\n nativeSelect.dispatchEvent(new Event('change', { bubbles: true }));\n closeMenu();\n };\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (event.key === 'Escape') {\n closeMenu();\n }\n };\n\n return (\n <div\n className={cx(styles.dropdown, variant === 'minimal' && styles.minimal, className)}\n onKeyDown={handleKeyDown}\n ref={containerRef}\n {...props}\n >\n <select\n {...selectProps}\n aria-hidden='true'\n className={styles.native}\n onChange={handleNativeChange}\n ref={nativeSelectRef}\n tabIndex={-1}\n value={selectedValue}\n >\n {normalizedSelect.children}\n </select>\n <Button\n aria-expanded={isOpen}\n aria-haspopup='dialog'\n className={cx(\n variant === 'default' && inputStyles.input,\n styles.trigger,\n displayOption?.isPlaceholder && styles.placeholder\n )}\n data-open={isOpen ? 'true' : undefined}\n disabled={selectProps.disabled}\n onClick={() => setIsOpen((currentValue) => !currentValue)}\n ref={buttonRef}\n style={triggerWithVars}\n variant='minimal'\n >\n <span className={styles.text}>{displayOption?.label ?? 'Select an option'}</span>\n </Button>\n {isOpen && (\n <div className={styles.panel}>\n <Input\n aria-label='Filter'\n className={styles.filter}\n icon='search'\n onChange={(event) => setQuery(event.target.value)}\n placeholder={searchPlaceholder}\n ref={searchRef}\n style={filterWithVars}\n type='search'\n value={query}\n />\n <List\n aria-label='Dropdown'\n className={styles.options}\n >\n {filteredOptions.length > 0 ? (\n filteredOptions.map((option) => {\n const isSelected = option.value === selectedValue;\n\n return (\n <li key={`${option.groupLabel ?? 'root'}-${option.value}`}>\n <Button\n aria-label={isSelected ? `${option.text}, selected` : option.text}\n className={cx(styles.option, isSelected && styles.selected)}\n disabled={option.disabled}\n onClick={() => commitValue(option.value)}\n variant='minimal'\n >\n <span className={styles.text}>{option.label}</span>\n {option.groupLabel && (\n <small className={styles.group}>{option.groupLabel}</small>\n )}\n </Button>\n </li>\n );\n })\n ) : (\n <li className={styles.empty}>{emptyLabel}</li>\n )}\n </List>\n </div>\n )}\n </div>\n );\n};\n"],"names":["getIconWithVars","icon","color","iconSVG","replace","getNodeText","node","String","Array","isArray","map","join","isValidElement","props","children","isOptionElement","type","isOptGroupElement","isFragmentElement","React","Fragment","isWrappedSelectElement","Select","extractOptions","groupLabel","groupDisabled","options","Children","forEach","child","push","text","trim","value","disabled","Boolean","hidden","isPlaceholder","label","selected","buildWildcardMatcher","query","trimmedQuery","expression","test","character","RegExp","filterOptions","matcher","selectableOptions","filter","option","getDisplayOption","selectedValue","find","getInitialValue","defaultValue","selectedOption","normalizeSelectElement","selectElement","placeholder","jsxs","Dropdown","className","emptyLabel","searchPlaceholder","variant","normalizedSelect","onChange","restSelectProps","selectProps","sanitizeSelectProps","buttonRef","useRef","containerRef","nativeSelectRef","searchRef","isControlled","initialValue","internalValue","setInternalValue","useState","isOpen","setIsOpen","setQuery","iconColors","default","resolveColor","white","dropdownIconColor","displayOption","triggerWithVars","filterWithVars","filteredOptions","useEffect","some","current","focus","handlePointerDown","event","contains","target","document","addEventListener","removeEventListener","handleNativeChange","closeMenu","commitValue","nextValue","nativeSelect","valueSetter","Object","getOwnPropertyDescriptor","HTMLSelectElement","prototype","set","call","dispatchEvent","Event","bubbles","handleKeyDown","key","cx","styles","dropdown","minimal","jsx","native","Button","inputStyles","input","trigger","undefined","currentValue","panel","Input","List","length","isSelected","group","empty"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require('../../assets/index33.css');const r=require("react/jsx-runtime"),u=require("../../classix-5H4IWnMA.cjs"),l=require("react"),d=require("../icon/index.cjs"),_="_button_1cw1v_1",g="_danger_1cw1v_19",p="_minimal_1cw1v_32",y="_primary_1cw1v_39",t={button:_,danger:g,minimal:p,primary:y},b={danger:t.danger,default:t.default,minimal:t.minimal,primary:t.primary},f=l.forwardRef(({children:a,className:i,disabled:s=!1,icon:n,onClick:o,variant:e="default",...c},m)=>r.jsxs("button",{className:u.t(t.button,b[e],i),disabled:s,onClick:o,ref:m,type:"button",...c,children:[n&&r.jsx(d.Icon,{gap:"right",name:n,size:"small",variant:e==="minimal"?"default":"white"}),a]}));exports.Button=f;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require('../../assets/index33.css');const a=require("react/jsx-runtime"),u=require("../../classix-5H4IWnMA.cjs"),l=require("react"),d=require("../icon/index.cjs"),_="_button_1cw1v_1",p="_danger_1cw1v_19",b="_minimal_1cw1v_32",g="_primary_1cw1v_39",t={button:_,danger:p,minimal:b,primary:g},y={danger:t.danger,default:t.default,minimal:t.minimal,primary:t.primary},f=l.forwardRef(({children:r,className:i,disabled:o=!1,icon:n,onClick:s,variant:e="default",...c},m)=>a.jsxs("button",{className:u.t(t.button,y[e],i),disabled:o,onClick:s,ref:m,type:"button",...c,"data-component":"button",children:[n&&a.jsx(d.Icon,{gap:"right",name:n,size:"small",variant:e==="minimal"?"default":"white"}),r]}));exports.Button=f;
2
2
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../../../src/components/button/index.tsx"],"sourcesContent":["import cx from 'classix';\nimport { forwardRef } from 'react';\n\nimport { Icon } from '../icon';\nimport { IconName } from '../icon/icons';\nimport styles from './styles.module.css';\n\nconst variants = {\n danger: styles.danger,\n default: styles.default,\n minimal: styles.minimal,\n primary: styles.primary,\n};\n\nexport type ButtonProps = React.ButtonHTMLAttributes<HTMLButtonElement> & {\n children: React.ReactNode;\n className?: string;\n disabled?: boolean;\n icon?: IconName;\n onClick?: React.MouseEventHandler<HTMLButtonElement>;\n variant?: keyof typeof variants;\n};\n\nexport const Button = forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n children,\n className,\n disabled = false,\n icon,\n onClick,\n variant = 'default',\n ...props\n },\n ref\n ) => {\n return (\n <button\n className={cx(styles.button, variants[variant], className)}\n disabled={disabled}\n onClick={onClick}\n ref={ref}\n type='button'\n {...props}\n >\n {icon && (\n <Icon\n gap='right'\n name={icon}\n size='small'\n variant={variant === 'minimal' ? 'default' : 'white'}\n />\n )}\n {children}\n </button>\n );\n }\n);\n"],"names":["variants","danger","styles","default","minimal","primary","Button","forwardRef","children","className","disabled","icon","onClick","variant","props","ref","cx","button","jsx","Icon"],"mappings":"8UAOMA,EAAW,CACfC,OAAQC,EAAOD,OACfE,QAASD,EAAOC,QAChBC,QAASF,EAAOE,QAChBC,QAASH,EAAOG,OAClB,EAWaC,EAASC,EAAAA,WACpB,CACE,CACEC,SAAAA,EACAC,UAAAA,EACAC,SAAAA,EAAW,GACXC,KAAAA,EACAC,QAAAA,EACAC,QAAAA,EAAU,UACV,GAAGC,CACL,EACAC,WAGG,SAAA,CACC,UAAWC,EAAAA,EAAGd,EAAOe,OAAQjB,EAASa,CAAO,EAAGJ,CAAS,EACzD,SAAAC,EACA,QAAAE,EACA,IAAAG,EACA,KAAK,SACL,GAAID,EAEHH,SAAAA,CAAAA,GACCO,EAAAA,IAACC,EAAAA,KAAA,CACC,IAAI,QACJ,KAAMR,EACN,KAAK,QACL,QAASE,IAAY,UAAY,UAAY,QAAQ,EAGxDL,CAAAA,EACH,CAGN"}
1
+ {"version":3,"file":"index.cjs","sources":["../../../src/components/button/index.tsx"],"sourcesContent":["import cx from 'classix';\nimport { forwardRef } from 'react';\n\nimport { Icon } from '../icon';\nimport { IconName } from '../icon/icons';\nimport styles from './styles.module.css';\n\nconst variants = {\n danger: styles.danger,\n default: styles.default,\n minimal: styles.minimal,\n primary: styles.primary,\n};\n\nexport type ButtonProps = React.ButtonHTMLAttributes<HTMLButtonElement> & {\n children: React.ReactNode;\n className?: string;\n disabled?: boolean;\n icon?: IconName;\n onClick?: React.MouseEventHandler<HTMLButtonElement>;\n variant?: keyof typeof variants;\n};\n\nexport const Button = forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n children,\n className,\n disabled = false,\n icon,\n onClick,\n variant = 'default',\n ...props\n },\n ref\n ) => {\n return (\n <button\n className={cx(styles.button, variants[variant], className)}\n disabled={disabled}\n onClick={onClick}\n ref={ref}\n type='button'\n {...props}\n >\n {icon && (\n <Icon\n gap='right'\n name={icon}\n size='small'\n variant={variant === 'minimal' ? 'default' : 'white'}\n />\n )}\n {children}\n </button>\n );\n }\n);\n"],"names":["variants","danger","styles","default","minimal","primary","Button","forwardRef","children","className","disabled","icon","onClick","variant","props","ref","cx","button","jsx","Icon"],"mappings":"8UAOMA,EAAW,CACfC,OAAQC,EAAOD,OACfE,QAASD,EAAOC,QAChBC,QAASF,EAAOE,QAChBC,QAASH,EAAOG,OAClB,EAWaC,EAASC,EAAAA,WACpB,CACE,CACEC,SAAAA,EACAC,UAAAA,EACAC,SAAAA,EAAW,GACXC,KAAAA,EACAC,QAAAA,EACAC,QAAAA,EAAU,UACV,GAAGC,CACL,EACAC,WAGG,SAAA,CACC,UAAWC,EAAAA,EAAGd,EAAOe,OAAQjB,EAASa,CAAO,EAAGJ,CAAS,EACzD,SAAAC,EACA,QAAAE,EACA,IAAAG,EACA,KAAK,SACL,GAAID,EAAM,iBAAA,SAETH,SAAAA,CAAAA,GACCO,EAAAA,IAACC,EAAAA,KAAA,CACC,IAAI,QACJ,KAAMR,EACN,KAAK,QACL,QAASE,IAAY,UAAY,UAAY,QAAQ,EAGxDL,CAAAA,EACH,CAGN"}
@@ -1,28 +1,28 @@
1
1
  import { jsxs as l, jsx as c } from "react/jsx-runtime";
2
2
  import { t as p } from "../../classix-DG18itHa.js";
3
3
  import { forwardRef as u } from "react";
4
- import { Icon as _ } from "../icon/index.js";
5
- import '../../assets/index33.css';const d = "_button_1cw1v_1", f = "_danger_1cw1v_19", g = "_minimal_1cw1v_32", y = "_primary_1cw1v_39", t = {
6
- button: d,
4
+ import { Icon as d } from "../icon/index.js";
5
+ import '../../assets/index33.css';const _ = "_button_1cw1v_1", f = "_danger_1cw1v_19", b = "_minimal_1cw1v_32", g = "_primary_1cw1v_39", t = {
6
+ button: _,
7
7
  danger: f,
8
- minimal: g,
9
- primary: y
10
- }, b = {
8
+ minimal: b,
9
+ primary: g
10
+ }, y = {
11
11
  danger: t.danger,
12
12
  default: t.default,
13
13
  minimal: t.minimal,
14
14
  primary: t.primary
15
15
  }, j = u(({
16
- children: n,
16
+ children: r,
17
17
  className: m,
18
- disabled: i = !1,
19
- icon: r,
20
- onClick: o,
18
+ disabled: o = !1,
19
+ icon: n,
20
+ onClick: i,
21
21
  variant: a = "default",
22
22
  ...e
23
- }, s) => /* @__PURE__ */ l("button", { className: p(t.button, b[a], m), disabled: i, onClick: o, ref: s, type: "button", ...e, children: [
24
- r && /* @__PURE__ */ c(_, { gap: "right", name: r, size: "small", variant: a === "minimal" ? "default" : "white" }),
25
- n
23
+ }, s) => /* @__PURE__ */ l("button", { className: p(t.button, y[a], m), disabled: o, onClick: i, ref: s, type: "button", ...e, "data-component": "button", children: [
24
+ n && /* @__PURE__ */ c(d, { gap: "right", name: n, size: "small", variant: a === "minimal" ? "default" : "white" }),
25
+ r
26
26
  ] }));
27
27
  export {
28
28
  j as Button
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/components/button/index.tsx"],"sourcesContent":["import cx from 'classix';\nimport { forwardRef } from 'react';\n\nimport { Icon } from '../icon';\nimport { IconName } from '../icon/icons';\nimport styles from './styles.module.css';\n\nconst variants = {\n danger: styles.danger,\n default: styles.default,\n minimal: styles.minimal,\n primary: styles.primary,\n};\n\nexport type ButtonProps = React.ButtonHTMLAttributes<HTMLButtonElement> & {\n children: React.ReactNode;\n className?: string;\n disabled?: boolean;\n icon?: IconName;\n onClick?: React.MouseEventHandler<HTMLButtonElement>;\n variant?: keyof typeof variants;\n};\n\nexport const Button = forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n children,\n className,\n disabled = false,\n icon,\n onClick,\n variant = 'default',\n ...props\n },\n ref\n ) => {\n return (\n <button\n className={cx(styles.button, variants[variant], className)}\n disabled={disabled}\n onClick={onClick}\n ref={ref}\n type='button'\n {...props}\n >\n {icon && (\n <Icon\n gap='right'\n name={icon}\n size='small'\n variant={variant === 'minimal' ? 'default' : 'white'}\n />\n )}\n {children}\n </button>\n );\n }\n);\n"],"names":["variants","danger","styles","default","minimal","primary","Button","forwardRef","children","className","disabled","icon","onClick","variant","props","ref","cx","button","jsx","Icon"],"mappings":";;;;;;;;;GAOMA,IAAW;AAAA,EACfC,QAAQC,EAAOD;AAAAA,EACfE,SAASD,EAAOC;AAAAA,EAChBC,SAASF,EAAOE;AAAAA,EAChBC,SAASH,EAAOG;AAClB,GAWaC,IAASC,EACpB,CACE;AAAA,EACEC,UAAAA;AAAAA,EACAC,WAAAA;AAAAA,EACAC,UAAAA,IAAW;AAAA,EACXC,MAAAA;AAAAA,EACAC,SAAAA;AAAAA,EACAC,SAAAA,IAAU;AAAA,EACV,GAAGC;AACL,GACAC,wBAGG,UAAA,EACC,WAAWC,EAAGd,EAAOe,QAAQjB,EAASa,CAAO,GAAGJ,CAAS,GACzD,UAAAC,GACA,SAAAE,GACA,KAAAG,GACA,MAAK,UACL,GAAID,GAEHH,UAAAA;AAAAA,EAAAA,KACC,gBAAAO,EAACC,GAAA,EACC,KAAI,SACJ,MAAMR,GACN,MAAK,SACL,SAASE,MAAY,YAAY,YAAY,SAAQ;AAAA,EAGxDL;AAAAA,GACH,CAGN;"}
1
+ {"version":3,"file":"index.js","sources":["../../../src/components/button/index.tsx"],"sourcesContent":["import cx from 'classix';\nimport { forwardRef } from 'react';\n\nimport { Icon } from '../icon';\nimport { IconName } from '../icon/icons';\nimport styles from './styles.module.css';\n\nconst variants = {\n danger: styles.danger,\n default: styles.default,\n minimal: styles.minimal,\n primary: styles.primary,\n};\n\nexport type ButtonProps = React.ButtonHTMLAttributes<HTMLButtonElement> & {\n children: React.ReactNode;\n className?: string;\n disabled?: boolean;\n icon?: IconName;\n onClick?: React.MouseEventHandler<HTMLButtonElement>;\n variant?: keyof typeof variants;\n};\n\nexport const Button = forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n children,\n className,\n disabled = false,\n icon,\n onClick,\n variant = 'default',\n ...props\n },\n ref\n ) => {\n return (\n <button\n className={cx(styles.button, variants[variant], className)}\n disabled={disabled}\n onClick={onClick}\n ref={ref}\n type='button'\n {...props}\n >\n {icon && (\n <Icon\n gap='right'\n name={icon}\n size='small'\n variant={variant === 'minimal' ? 'default' : 'white'}\n />\n )}\n {children}\n </button>\n );\n }\n);\n"],"names":["variants","danger","styles","default","minimal","primary","Button","forwardRef","children","className","disabled","icon","onClick","variant","props","ref","cx","button","jsx","Icon"],"mappings":";;;;;;;;;GAOMA,IAAW;AAAA,EACfC,QAAQC,EAAOD;AAAAA,EACfE,SAASD,EAAOC;AAAAA,EAChBC,SAASF,EAAOE;AAAAA,EAChBC,SAASH,EAAOG;AAClB,GAWaC,IAASC,EACpB,CACE;AAAA,EACEC,UAAAA;AAAAA,EACAC,WAAAA;AAAAA,EACAC,UAAAA,IAAW;AAAA,EACXC,MAAAA;AAAAA,EACAC,SAAAA;AAAAA,EACAC,SAAAA,IAAU;AAAA,EACV,GAAGC;AACL,GACAC,wBAGG,UAAA,EACC,WAAWC,EAAGd,EAAOe,QAAQjB,EAASa,CAAO,GAAGJ,CAAS,GACzD,UAAAC,GACA,SAAAE,GACA,KAAAG,GACA,MAAK,UACL,GAAID,GAAM,kBAAA,UAETH,UAAAA;AAAAA,EAAAA,KACC,gBAAAO,EAACC,GAAA,EACC,KAAI,SACJ,MAAMR,GACN,MAAK,SACL,SAASE,MAAY,YAAY,YAAY,SAAQ;AAAA,EAGxDL;AAAAA,GACH,CAGN;"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require('../../assets/index13.css');const e=require("react/jsx-runtime"),x=require("../../icons-CMoejLkL.cjs"),b=require("../loading/index.cjs"),h="_checkbox_16skt_1",k={checkbox:h},u=({checked:s,disabled:t,isLoading:c,label:o,onChange:n,...i})=>{const r={"--icon-svg":x.iconSVG("check")};return e.jsxs("label",{className:k.checkbox,"data-component":"checkbox",children:[c&&e.jsx(b.Loading,{size:24,sticky:!0}),e.jsx("input",{checked:s,disabled:t||c,onChange:n,type:"checkbox",style:r,...i}),o&&o]})};exports.Checkbox=u;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require('../../assets/index13.css');const e=require("react/jsx-runtime"),x=require("../../icons-C_cX1FYp.cjs"),b=require("../loading/index.cjs"),h="_checkbox_16skt_1",k={checkbox:h},u=({checked:s,disabled:t,isLoading:c,label:o,onChange:n,...i})=>{const r={"--icon-svg":x.iconSVG("check")};return e.jsxs("label",{className:k.checkbox,"data-component":"checkbox",children:[c&&e.jsx(b.Loading,{size:24,sticky:!0}),e.jsx("input",{checked:s,disabled:t||c,onChange:n,type:"checkbox",style:r,...i}),o&&o]})};exports.Checkbox=u;
2
2
  //# sourceMappingURL=index.cjs.map
@@ -1,5 +1,5 @@
1
1
  import { jsxs as h, jsx as e } from "react/jsx-runtime";
2
- import { i as k } from "../../icons-BqQRUUWn.js";
2
+ import { i as k } from "../../icons-DfmpRbxE.js";
3
3
  import { Loading as x } from "../loading/index.js";
4
4
  import '../../assets/index13.css';const b = "_checkbox_16skt_1", m = {
5
5
  checkbox: b
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require('../../assets/index36.css');const r=require("react/jsx-runtime"),l=require("../../classix-5H4IWnMA.cjs"),i=require("../../icons-CMoejLkL.cjs"),_="_icon_wciqx_1",m="_small_wciqx_9",u="_medium_wciqx_14",d="_large_wciqx_19",g="_danger_wciqx_24",w="_primary_wciqx_32",q="_white_wciqx_36",e={icon:_,small:m,medium:u,large:d,danger:g,default:"_default_wciqx_28",primary:w,white:q,"gap-right":"_gap-right_wciqx_40","gap-left":"_gap-left_wciqx_44"},x={large:e.large,medium:e.medium,small:e.small},p={danger:e.danger,default:e.default,primary:e.primary,white:e.white},y=({fill:n,gap:t="none",name:c,size:a="medium",variant:s="default"})=>{const o={maskImage:i.iconSVG(c,n??!1)};return r.jsx("span",{className:l.t(t!=="none"&&e[`gap-${t}`],x[a],e.icon,p[s]),style:o,"data-component":"icon"})},f=()=>Object.keys(i.iconPaths);exports.Icon=y;exports.Icons=f;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require('../../assets/index36.css');const r=require("react/jsx-runtime"),l=require("../../classix-5H4IWnMA.cjs"),i=require("../../icons-C_cX1FYp.cjs"),_="_icon_wciqx_1",m="_small_wciqx_9",u="_medium_wciqx_14",d="_large_wciqx_19",g="_danger_wciqx_24",w="_primary_wciqx_32",q="_white_wciqx_36",e={icon:_,small:m,medium:u,large:d,danger:g,default:"_default_wciqx_28",primary:w,white:q,"gap-right":"_gap-right_wciqx_40","gap-left":"_gap-left_wciqx_44"},x={large:e.large,medium:e.medium,small:e.small},p={danger:e.danger,default:e.default,primary:e.primary,white:e.white},y=({fill:n,gap:t="none",name:c,size:a="medium",variant:s="default"})=>{const o={maskImage:i.iconSVG(c,n??!1)};return r.jsx("span",{className:l.t(t!=="none"&&e[`gap-${t}`],x[a],e.icon,p[s]),style:o,"data-component":"icon"})},f=()=>Object.keys(i.iconPaths);exports.Icon=y;exports.Icons=f;
2
2
  //# sourceMappingURL=index.cjs.map
@@ -1,6 +1,6 @@
1
1
  import { jsx as o } from "react/jsx-runtime";
2
2
  import { t as r } from "../../classix-DG18itHa.js";
3
- import { i as m, a as _ } from "../../icons-BqQRUUWn.js";
3
+ import { i as m, a as _ } from "../../icons-DfmpRbxE.js";
4
4
  import '../../assets/index36.css';const l = "_icon_wciqx_1", d = "_small_wciqx_9", g = "_medium_wciqx_14", p = "_large_wciqx_19", w = "_danger_wciqx_24", u = "_primary_wciqx_32", x = "_white_wciqx_36", a = {
5
5
  icon: l,
6
6
  small: d,
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("react/jsx-runtime"),c=require("../../classix-5H4IWnMA.cjs"),s=require("react"),I=require("../../icons-CMoejLkL.cjs"),P=require("../../utils-D_TJ8wDc.cjs"),a=require("../../styles.module-CwroCNAt.cjs"),R=s.forwardRef(({className:y,defaultCountryCode:d="+47",disabled:i=!1,icon:o,label:h,placeholder:m,type:t="text",...e},v)=>{const[l,g]=s.useState(""),[r,x]=s.useState(""),{onChange:N,value:j,...C}=e,{touched:f,onBlur:S}=P.useTouched(j===""),q=o&&t!=="radio"&&t!=="datetime-local"?{"--icon-svg":I.iconSVG(o,!0)}:void 0;s.useEffect(()=>{if(typeof e.onChange=="function"&&t==="tel"){const u={name:e.name,value:r?(l||d).split(" ").join("")+r.split(" ").join(""):void 0};e.onChange({target:u,currentTarget:u})}},[l,r]),s.useEffect(()=>{t==="tel"&&!e.value&&(x(""),g(""))},[e.value,t]);const p=n.jsxs(n.Fragment,{children:[n.jsx("input",{disabled:i,hidden:!0,onChange:N,pattern:void 0,placeholder:m,ref:v,type:t,value:j}),n.jsx("input",{type:"text",className:a.inputStyles.input,disabled:i,maxLength:5,onChange:u=>g(u.target.value),placeholder:d,value:l}),n.jsx("input",{type:"tel",className:c.t(a.inputStyles.input,f&&"touched"),"data-icon":o?"true":void 0,disabled:i,maxLength:14,name:void 0,onChange:u=>x(u.target.value),onBlur:S,pattern:e.pattern,style:q,value:r,...C})]});return n.jsxs("label",{className:a.inputStyles.label,children:[h&&n.jsx("span",{className:c.t(e.required&&a.inputStyles.required),children:h}),t==="tel"?p:n.jsx("input",{ref:v,className:c.t(a.inputStyles.input,y,f&&"touched"),"data-icon":o?"true":void 0,disabled:i,onBlur:S,placeholder:m,style:q,type:t,...e})]})});exports.Input=R;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("react/jsx-runtime"),l=require("../../classix-5H4IWnMA.cjs"),s=require("react"),I=require("../../icons-C_cX1FYp.cjs"),P=require("../../utils-DqVa4K58.cjs"),a=require("../../styles.module-CwroCNAt.cjs"),R=s.forwardRef(({className:p,defaultCountryCode:d="+47",disabled:i=!1,icon:o,label:h,placeholder:m,type:t="text",...e},v)=>{const[c,g]=s.useState(""),[r,x]=s.useState(""),{onChange:y,value:j,...N}=e,{touched:f,onBlur:S}=P.useTouched(j===""),q=o&&t!=="radio"&&t!=="datetime-local"?{"--icon-svg":I.iconSVG(o,!0)}:void 0;s.useEffect(()=>{if(typeof e.onChange=="function"&&t==="tel"){const u={name:e.name,value:r?(c||d).split(" ").join("")+r.split(" ").join(""):void 0};e.onChange({target:u,currentTarget:u})}},[c,r]),s.useEffect(()=>{t==="tel"&&!e.value&&(x(""),g(""))},[e.value,t]);const C=n.jsxs(n.Fragment,{children:[n.jsx("input",{disabled:i,hidden:!0,onChange:y,pattern:void 0,placeholder:m,ref:v,type:t,value:j}),n.jsx("input",{type:"text",className:a.inputStyles.input,disabled:i,maxLength:5,onChange:u=>g(u.target.value),placeholder:d,value:c}),n.jsx("input",{type:"tel",className:l.t(a.inputStyles.input,f&&"touched"),"data-icon":o?"true":void 0,disabled:i,maxLength:14,name:void 0,onChange:u=>x(u.target.value),onBlur:S,pattern:e.pattern,style:q,value:r,...N})]});return n.jsxs("label",{className:a.inputStyles.label,"data-component":"input",children:[h&&n.jsx("span",{className:l.t(e.required&&a.inputStyles.required),children:h}),t==="tel"?C:n.jsx("input",{ref:v,className:l.t(a.inputStyles.input,p,f&&"touched"),"data-icon":o?"true":void 0,disabled:i,onBlur:S,placeholder:m,style:q,type:t,...e})]})});exports.Input=R;
2
2
  //# sourceMappingURL=index.cjs.map