@solibo/solibo-ui 1.0.5 → 1.0.7

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 (110) hide show
  1. package/dist/assets/index.css +1 -1
  2. package/dist/assets/index10.css +1 -1
  3. package/dist/assets/index11.css +1 -1
  4. package/dist/assets/index12.css +1 -1
  5. package/dist/assets/index13.css +1 -1
  6. package/dist/assets/index14.css +1 -1
  7. package/dist/assets/index15.css +1 -1
  8. package/dist/assets/index19.css +1 -1
  9. package/dist/assets/index20.css +1 -1
  10. package/dist/assets/index26.css +1 -1
  11. package/dist/assets/index3.css +1 -1
  12. package/dist/assets/index31.css +1 -1
  13. package/dist/assets/index32.css +1 -1
  14. package/dist/assets/index36.css +1 -1
  15. package/dist/assets/index38.css +1 -1
  16. package/dist/assets/index39.css +1 -1
  17. package/dist/assets/index4.css +1 -1
  18. package/dist/assets/index42.css +1 -1
  19. package/dist/assets/index5.css +1 -1
  20. package/dist/assets/index6.css +1 -1
  21. package/dist/assets/index7.css +1 -1
  22. package/dist/assets/index8.css +1 -1
  23. package/dist/assets/index9.css +1 -1
  24. package/dist/components/aside/index.cjs +1 -1
  25. package/dist/components/aside/index.js +15 -15
  26. package/dist/components/button/index.cjs +1 -1
  27. package/dist/components/button/index.cjs.map +1 -1
  28. package/dist/components/button/index.js +25 -22
  29. package/dist/components/button/index.js.map +1 -1
  30. package/dist/components/card/index.cjs +1 -1
  31. package/dist/components/card/index.js +38 -38
  32. package/dist/components/checkbox/index.cjs +1 -1
  33. package/dist/components/checkbox/index.js +1 -1
  34. package/dist/components/controls/index.cjs +1 -1
  35. package/dist/components/controls/index.cjs.map +1 -1
  36. package/dist/components/controls/index.js +15 -14
  37. package/dist/components/controls/index.js.map +1 -1
  38. package/dist/components/dialog/index.cjs +1 -1
  39. package/dist/components/dialog/index.cjs.map +1 -1
  40. package/dist/components/dialog/index.js +56 -24
  41. package/dist/components/dialog/index.js.map +1 -1
  42. package/dist/components/dropdown/index.cjs +1 -1
  43. package/dist/components/dropdown/index.js +101 -101
  44. package/dist/components/editor/index.cjs +1 -1
  45. package/dist/components/editor/index.js +1 -1
  46. package/dist/components/header/index.cjs +1 -1
  47. package/dist/components/header/index.js +10 -10
  48. package/dist/components/icon/index.cjs +1 -1
  49. package/dist/components/icon/index.js +1 -1
  50. package/dist/components/iframe/index.cjs +1 -1
  51. package/dist/components/iframe/index.cjs.map +1 -1
  52. package/dist/components/iframe/index.js +56 -58
  53. package/dist/components/iframe/index.js.map +1 -1
  54. package/dist/components/input/index.cjs +1 -1
  55. package/dist/components/input/index.js +2 -2
  56. package/dist/components/message/index.cjs +1 -1
  57. package/dist/components/message/index.cjs.map +1 -1
  58. package/dist/components/message/index.js +31 -30
  59. package/dist/components/message/index.js.map +1 -1
  60. package/dist/components/messages/index.cjs +1 -1
  61. package/dist/components/messages/index.cjs.map +1 -1
  62. package/dist/components/messages/index.js +34 -31
  63. package/dist/components/messages/index.js.map +1 -1
  64. package/dist/components/nav/index.cjs +1 -1
  65. package/dist/components/nav/index.js +22 -22
  66. package/dist/components/object/index.cjs +1 -1
  67. package/dist/components/object/index.js +1 -1
  68. package/dist/components/portal/index.cjs +1 -1
  69. package/dist/components/portal/index.js +17 -17
  70. package/dist/components/search/index.cjs +1 -1
  71. package/dist/components/search/index.cjs.map +1 -1
  72. package/dist/components/search/index.js +44 -50
  73. package/dist/components/search/index.js.map +1 -1
  74. package/dist/components/select/index.cjs +1 -1
  75. package/dist/components/select/index.js +2 -2
  76. package/dist/components/sortable/index.cjs +1 -1
  77. package/dist/components/sortable/index.js +1 -1
  78. package/dist/components/table/index.cjs +1 -1
  79. package/dist/components/table/index.js +1 -1
  80. package/dist/components/textarea/index.cjs +1 -1
  81. package/dist/components/textarea/index.js +1 -1
  82. package/dist/components/toast/index.cjs +1 -1
  83. package/dist/components/toast/index.js +1 -1
  84. package/dist/components/toasts/index.cjs +1 -1
  85. package/dist/components/toasts/index.js +1 -1
  86. package/dist/components/toggle/index.cjs +1 -1
  87. package/dist/components/toggle/index.js +1 -1
  88. package/dist/components/tooltip/index.cjs +1 -1
  89. package/dist/components/tooltip/index.js +6 -6
  90. package/dist/{icons-CH48JQqt.js → icons-BFgf_lJN.js} +13 -1
  91. package/dist/icons-BFgf_lJN.js.map +1 -0
  92. package/dist/icons-Dx0NQYLH.cjs +2 -0
  93. package/dist/icons-Dx0NQYLH.cjs.map +1 -0
  94. package/dist/{index-BrGCs_7h.js → index-BHgGZxsR.js} +2 -2
  95. package/dist/{index-BrGCs_7h.js.map → index-BHgGZxsR.js.map} +1 -1
  96. package/dist/{index-CIugi8vq.cjs → index-CEzqxRIu.cjs} +2 -2
  97. package/dist/{index-CIugi8vq.cjs.map → index-CEzqxRIu.cjs.map} +1 -1
  98. package/dist/{index-CRAuAHow.js → index-CMfR_USP.js} +2 -2
  99. package/dist/{index-CRAuAHow.js.map → index-CMfR_USP.js.map} +1 -1
  100. package/dist/{index-CSYOtiWJ.cjs → index-oL8GYbhj.cjs} +2 -2
  101. package/dist/{index-CSYOtiWJ.cjs.map → index-oL8GYbhj.cjs.map} +1 -1
  102. package/dist/index.cjs +1 -1
  103. package/dist/index.d.ts +20 -3
  104. package/dist/index.js +2 -2
  105. package/dist/tokens.css +7 -2
  106. package/dist/tokens.json +105 -33
  107. package/package.json +1 -1
  108. package/dist/icons-BROXUtPz.cjs +0 -2
  109. package/dist/icons-BROXUtPz.cjs.map +0 -1
  110. package/dist/icons-CH48JQqt.js.map +0 -1
@@ -1,52 +1,52 @@
1
1
  import { jsxs as d, jsx as r } from "react/jsx-runtime";
2
2
  import { t as s } from "../../classix-DG18itHa.js";
3
- import { Badge as v } from "../badge/index.js";
4
- import { Checkbox as N } from "../checkbox/index.js";
5
- import { Figure as f } from "../figure/index.js";
6
- import { Icon as h } from "../icon/index.js";
7
- import '../../assets/index32.css';const y = "_card_r2a1i_1", j = "_head_r2a1i_27", D = "_center_r2a1i_39", E = "_content_r2a1i_51", I = "_preview_r2a1i_57", T = "_margin_r2a1i_97", $ = "_clickable_r2a1i_133", k = "_muted_r2a1i_148", z = "_selected_r2a1i_153", e = {
8
- card: y,
9
- head: j,
10
- center: D,
11
- content: E,
12
- preview: I,
13
- "preview-leading": "_preview-leading_r2a1i_68",
14
- "preview-trailing": "_preview-trailing_r2a1i_69",
15
- "preview-content": "_preview-content_r2a1i_89",
16
- margin: T,
17
- clickable: $,
18
- muted: k,
19
- selected: z,
20
- "image-top": "_image-top_r2a1i_158",
21
- "image-left": "_image-left_r2a1i_169"
3
+ import { Badge as z } from "../badge/index.js";
4
+ import { Checkbox as w } from "../checkbox/index.js";
5
+ import { Figure as u } from "../figure/index.js";
6
+ import { Icon as v } from "../icon/index.js";
7
+ import '../../assets/index32.css';const N = "_card_zhirg_1", y = "_head_zhirg_27", j = "_center_zhirg_39", D = "_content_zhirg_51", E = "_preview_zhirg_57", I = "_margin_zhirg_97", T = "_clickable_zhirg_142", $ = "_muted_zhirg_157", k = "_selected_zhirg_162", e = {
8
+ card: N,
9
+ head: y,
10
+ center: j,
11
+ content: D,
12
+ preview: E,
13
+ "preview-leading": "_preview-leading_zhirg_68",
14
+ "preview-trailing": "_preview-trailing_zhirg_69",
15
+ "preview-content": "_preview-content_zhirg_89",
16
+ margin: I,
17
+ clickable: T,
18
+ muted: $,
19
+ selected: k,
20
+ "image-top": "_image-top_zhirg_167",
21
+ "image-left": "_image-left_zhirg_178"
22
22
  }, G = ({
23
- actions: w,
24
- badge: o,
25
- checkbox: t,
26
- children: p,
27
- emphasis: g = "default",
23
+ actions: f,
24
+ badge: g,
25
+ checkbox: n,
26
+ children: o,
27
+ emphasis: p = "default",
28
28
  header: _,
29
- icon: u,
30
- image: n,
29
+ icon: h,
30
+ image: a,
31
31
  imagePosition: c = "top",
32
32
  onClick: l,
33
33
  preview: m,
34
- variant: i = "default"
35
- }) => /* @__PURE__ */ d("article", { className: s(e.card, g === "muted" && e.muted, l && e.clickable, (t == null ? void 0 : t.checked) && e.selected), "data-emphasis": g, "data-minimal": i === "minimal", onClick: l, onKeyDown: (a) => {
36
- l && a.currentTarget === document.activeElement && (a.key === "Enter" || a.key === " ") && (a.preventDefault(), a.currentTarget.click());
34
+ variant: t = "default"
35
+ }) => /* @__PURE__ */ d("article", { className: s(e.card, p === "muted" && e.muted, l && e.clickable, (n == null ? void 0 : n.checked) && e.selected), "data-emphasis": p, "data-minimal": t === "minimal", onClick: l, onKeyDown: (i) => {
36
+ l && i.currentTarget === document.activeElement && (i.key === "Enter" || i.key === " ") && (i.preventDefault(), i.currentTarget.click());
37
37
  }, tabIndex: l ? 0 : -1, "data-component": "card", children: [
38
- n && i !== "minimal" && c === "top" && /* @__PURE__ */ r(f, { className: e[`image-${c}`], children: n }),
38
+ a && t !== "minimal" && c === "top" && /* @__PURE__ */ r(u, { className: e[`image-${c}`], children: a }),
39
39
  /* @__PURE__ */ d("section", { children: [
40
- /* @__PURE__ */ d("div", { className: s(e.head, i === "minimal" && e.center), children: [
41
- t && /* @__PURE__ */ r("span", { onClick: (a) => a.stopPropagation(), children: /* @__PURE__ */ r(N, { ...t }) }),
42
- n && i !== "minimal" && c === "left" && /* @__PURE__ */ r(f, { className: e[`image-${c}`], children: n }),
40
+ /* @__PURE__ */ d("div", { className: s(e.head, t === "minimal" && e.center), children: [
41
+ n && /* @__PURE__ */ r("span", { onClick: (i) => i.stopPropagation(), children: /* @__PURE__ */ r(w, { ...n }) }),
42
+ a && t !== "minimal" && c === "left" && /* @__PURE__ */ r(u, { className: e[`image-${c}`], children: a }),
43
43
  _,
44
- o && /* @__PURE__ */ r(v, { ...o }),
45
- u && /* @__PURE__ */ r(h, { name: u, size: "medium" }),
46
- w
44
+ g && /* @__PURE__ */ r(z, { ...g }),
45
+ h && /* @__PURE__ */ r(v, { name: h, size: "medium" }),
46
+ f
47
47
  ] }),
48
- p && i !== "minimal" && /* @__PURE__ */ r("div", { className: s(e.content, !!_ && e.margin), children: p }),
49
- m && i !== "minimal" && /* @__PURE__ */ d("div", { className: s(e.preview, !!_ && e.margin), children: [
48
+ o && t !== "minimal" && /* @__PURE__ */ r("div", { className: s(e.content, !!_ && e.margin), children: o }),
49
+ m && t !== "minimal" && /* @__PURE__ */ d("div", { className: s(e.preview, !!_ && e.margin), children: [
50
50
  /* @__PURE__ */ r("span", { className: e["preview-leading"], children: m.leading }),
51
51
  /* @__PURE__ */ r("span", { className: e["preview-content"], children: m.children }),
52
52
  /* @__PURE__ */ r("span", { className: e["preview-trailing"], children: m.trailing })
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require('../../assets/index33.css');const e=require("react/jsx-runtime"),x=require("../../icons-BROXUtPz.cjs"),b=require("../loading/index.cjs"),h="_checkbox_1glqu_3",u={checkbox:h},k=({checked:s,disabled:t,isLoading:c,label:o,onChange:n,...i})=>{const r={"--icon-svg":x.iconSVG("check")};return e.jsxs("label",{className:u.checkbox,"data-component":"checkbox",children:[e.jsx("input",{checked:s,disabled:t||c,onChange:n,type:"checkbox",style:r,...i}),c&&e.jsx(b.Loading,{size:16,sticky:!0}),o&&o]})};exports.Checkbox=k;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require('../../assets/index33.css');const e=require("react/jsx-runtime"),x=require("../../icons-Dx0NQYLH.cjs"),b=require("../loading/index.cjs"),h="_checkbox_1glqu_3",u={checkbox:h},k=({checked:s,disabled:t,isLoading:c,label:o,onChange:n,...i})=>{const r={"--icon-svg":x.iconSVG("check")};return e.jsxs("label",{className:u.checkbox,"data-component":"checkbox",children:[e.jsx("input",{checked:s,disabled:t||c,onChange:n,type:"checkbox",style:r,...i}),c&&e.jsx(b.Loading,{size:16,sticky:!0}),o&&o]})};exports.Checkbox=k;
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 x } from "../../icons-CH48JQqt.js";
2
+ import { i as x } from "../../icons-BFgf_lJN.js";
3
3
  import { Loading as k } from "../loading/index.js";
4
4
  import '../../assets/index33.css';const b = "_checkbox_1glqu_3", m = {
5
5
  checkbox: b
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require('../../assets/index36.css');const c=require("react/jsx-runtime"),f=require("../../classix-5H4IWnMA.cjs"),r=require("react"),_=require("../button/index.cjs"),x="_controls_nwzp9_13",y="_inline_nwzp9_34",m="_fixed_nwzp9_39",e={controls:x,default:"_default_nwzp9_20",inline:y,fixed:m},k={primary:3,danger:2,secondary:1,tertiary:0},g={default:e.default,fixed:e.fixed,inline:e.inline},h=o=>k[o.props.variant??"secondary"],j=({children:o,className:l,variant:d="default",...u})=>{const i=r.Children.toArray(o),a=[],s=[];i.forEach(n=>{r.isValidElement(n)&&n.type===_.Button?a.push(n):s.push(n)});const p=a.map((n,t)=>({button:n,index:t,rank:h(n)})).sort((n,t)=>n.rank-t.rank||n.index-t.index).map(({button:n,index:t})=>r.cloneElement(n,{key:n.key??t}));return i.length===0?null:c.jsxs("div",{className:f.t(e.controls,g[d],l),...u,"data-component":"controls",children:[s&&c.jsx("span",{children:s}),p]})};exports.Controls=j;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require('../../assets/index36.css');const l=require("react/jsx-runtime"),f=require("../../classix-5H4IWnMA.cjs"),r=require("react"),_=require("../button/index.cjs"),x="_controls_1p251_13",y="_inline_1p251_35",m="_fixed_1p251_40",e={controls:x,default:"_default_1p251_20",inline:y,fixed:m},k={primary:3,danger:2,secondary:1,tertiary:0,simple:0},g={default:e.default,fixed:e.fixed,inline:e.inline},h=o=>k[o.props.variant??"secondary"],j=({children:o,className:c,variant:d="default",...u})=>{const i=r.Children.toArray(o),a=[],s=[];i.forEach(n=>{r.isValidElement(n)&&n.type===_.Button?a.push(n):s.push(n)});const p=a.map((n,t)=>({button:n,index:t,rank:h(n)})).sort((n,t)=>n.rank-t.rank||n.index-t.index).map(({button:n,index:t})=>r.cloneElement(n,{key:n.key??t}));return i.length===0?null:l.jsxs("div",{className:f.t(e.controls,g[d],c),...u,"data-component":"controls",children:[s&&l.jsx("span",{children:s}),p]})};exports.Controls=j;
2
2
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../../../src/components/controls/index.tsx"],"sourcesContent":["import cx from 'classix';\nimport { Children, cloneElement, isValidElement } from 'react';\n\nimport { Button, type ButtonProps } from '../button';\nimport styles from './styles.module.css';\n\nconst buttonVariantOrder = {\n primary: 3,\n danger: 2,\n secondary: 1,\n tertiary: 0,\n} satisfies Record<NonNullable<ButtonProps['variant']>, number>;\n\nconst variants = {\n default: styles.default,\n fixed: styles.fixed,\n inline: styles.inline,\n};\n\nexport type ControlsProps = React.HTMLAttributes<HTMLDivElement> & {\n children?: React.ReactNode;\n variant?: keyof typeof variants;\n};\n\nconst getButtonRank = (button: React.ReactElement<ButtonProps>) =>\n buttonVariantOrder[button.props.variant ?? 'secondary'];\n\nexport const Controls = ({ children, className, variant = 'default', ...props }: ControlsProps) => {\n const childArray = Children.toArray(children);\n const buttons: React.ReactElement<ButtonProps>[] = [];\n const nonButtons: React.ReactNode[] = [];\n\n childArray.forEach((child) => {\n if (isValidElement<ButtonProps>(child) && child.type === Button) {\n buttons.push(child);\n } else {\n nonButtons.push(child);\n }\n });\n\n const sortedButtons = buttons\n .map((button, index) => ({ button, index, rank: getButtonRank(button) }))\n .sort((a, b) => a.rank - b.rank || a.index - b.index)\n .map(({ button, index }) =>\n cloneElement(button, {\n key: button.key ?? index,\n })\n );\n\n if (childArray.length === 0) {\n return null;\n }\n\n return (\n <div\n className={cx(styles.controls, variants[variant], className)}\n {...props}\n >\n {nonButtons && <span>{nonButtons}</span>}\n {sortedButtons}\n </div>\n );\n};\n"],"names":["buttonVariantOrder","primary","danger","secondary","tertiary","variants","default","styles","fixed","inline","getButtonRank","button","props","variant","Controls","children","className","childArray","Children","toArray","buttons","nonButtons","forEach","child","isValidElement","type","Button","push","sortedButtons","map","index","rank","sort","a","b","cloneElement","key","length","jsxs","cx","controls","jsx"],"mappings":"6UAMMA,EAAqB,CACzBC,QAAS,EACTC,OAAQ,EACRC,UAAW,EACXC,SAAU,CACZ,EAEMC,EAAW,CACfC,QAASC,EAAOD,QAChBE,MAAOD,EAAOC,MACdC,OAAQF,EAAOE,MACjB,EAOMC,EAAiBC,GACrBX,EAAmBW,EAAOC,MAAMC,SAAW,WAAW,EAE3CC,EAAWA,CAAC,CAAEC,SAAAA,EAAUC,UAAAA,EAAWH,QAAAA,EAAU,UAAW,GAAGD,CAAqB,IAAM,CACjG,MAAMK,EAAaC,EAAAA,SAASC,QAAQJ,CAAQ,EACtCK,EAA6C,CAAA,EAC7CC,EAAgC,CAAA,EAEtCJ,EAAWK,QAASC,GAAU,CACxBC,EAAAA,eAA4BD,CAAK,GAAKA,EAAME,OAASC,EAAAA,OACvDN,EAAQO,KAAKJ,CAAK,EAElBF,EAAWM,KAAKJ,CAAK,CAEzB,CAAC,EAED,MAAMK,EAAgBR,EACnBS,IAAI,CAAClB,EAAQmB,KAAW,CAAEnB,OAAAA,EAAQmB,MAAAA,EAAOC,KAAMrB,EAAcC,CAAM,CAAA,EAAI,EACvEqB,KAAK,CAACC,EAAGC,IAAMD,EAAEF,KAAOG,EAAEH,MAAQE,EAAEH,MAAQI,EAAEJ,KAAK,EACnDD,IAAI,CAAC,CAAElB,OAAAA,EAAQmB,MAAAA,CAAAA,IACdK,EAAAA,aAAaxB,EAAQ,CACnByB,IAAKzB,EAAOyB,KAAON,CAAAA,CACpB,CACH,EAEF,OAAIb,EAAWoB,SAAW,EACjB,KAIPC,EAAAA,KAAC,MAAA,CACC,UAAWC,EAAAA,EAAGhC,EAAOiC,SAAUnC,EAASQ,CAAO,EAAGG,CAAS,EAC3D,GAAIJ,EAAM,iBAAA,WAETS,SAAAA,CAAAA,GAAcoB,EAAAA,IAAC,QAAMpB,SAAAA,CAAAA,CAAW,EAChCO,CAAAA,EACH,CAEJ"}
1
+ {"version":3,"file":"index.cjs","sources":["../../../src/components/controls/index.tsx"],"sourcesContent":["import cx from 'classix';\nimport { Children, cloneElement, isValidElement } from 'react';\n\nimport { Button, type ButtonProps } from '../button';\nimport styles from './styles.module.css';\n\nconst buttonVariantOrder = {\n primary: 3,\n danger: 2,\n secondary: 1,\n tertiary: 0,\n simple: 0,\n} satisfies Record<NonNullable<ButtonProps['variant']>, number>;\n\nconst variants = {\n default: styles.default,\n fixed: styles.fixed,\n inline: styles.inline,\n};\n\nexport type ControlsProps = React.HTMLAttributes<HTMLDivElement> & {\n children?: React.ReactNode;\n variant?: keyof typeof variants;\n};\n\nconst getButtonRank = (button: React.ReactElement<ButtonProps>) =>\n buttonVariantOrder[button.props.variant ?? 'secondary'];\n\nexport const Controls = ({ children, className, variant = 'default', ...props }: ControlsProps) => {\n const childArray = Children.toArray(children);\n const buttons: React.ReactElement<ButtonProps>[] = [];\n const nonButtons: React.ReactNode[] = [];\n\n childArray.forEach((child) => {\n if (isValidElement<ButtonProps>(child) && child.type === Button) {\n buttons.push(child);\n } else {\n nonButtons.push(child);\n }\n });\n\n const sortedButtons = buttons\n .map((button, index) => ({ button, index, rank: getButtonRank(button) }))\n .sort((a, b) => a.rank - b.rank || a.index - b.index)\n .map(({ button, index }) =>\n cloneElement(button, {\n key: button.key ?? index,\n })\n );\n\n if (childArray.length === 0) {\n return null;\n }\n\n return (\n <div\n className={cx(styles.controls, variants[variant], className)}\n {...props}\n >\n {nonButtons && <span>{nonButtons}</span>}\n {sortedButtons}\n </div>\n );\n};\n"],"names":["buttonVariantOrder","primary","danger","secondary","tertiary","simple","variants","default","styles","fixed","inline","getButtonRank","button","props","variant","Controls","children","className","childArray","Children","toArray","buttons","nonButtons","forEach","child","isValidElement","type","Button","push","sortedButtons","map","index","rank","sort","a","b","cloneElement","key","length","jsxs","cx","controls","jsx"],"mappings":"6UAMMA,EAAqB,CACzBC,QAAS,EACTC,OAAQ,EACRC,UAAW,EACXC,SAAU,EACVC,OAAQ,CACV,EAEMC,EAAW,CACfC,QAASC,EAAOD,QAChBE,MAAOD,EAAOC,MACdC,OAAQF,EAAOE,MACjB,EAOMC,EAAiBC,GACrBZ,EAAmBY,EAAOC,MAAMC,SAAW,WAAW,EAE3CC,EAAWA,CAAC,CAAEC,SAAAA,EAAUC,UAAAA,EAAWH,QAAAA,EAAU,UAAW,GAAGD,CAAqB,IAAM,CACjG,MAAMK,EAAaC,EAAAA,SAASC,QAAQJ,CAAQ,EACtCK,EAA6C,CAAA,EAC7CC,EAAgC,CAAA,EAEtCJ,EAAWK,QAASC,GAAU,CACxBC,EAAAA,eAA4BD,CAAK,GAAKA,EAAME,OAASC,EAAAA,OACvDN,EAAQO,KAAKJ,CAAK,EAElBF,EAAWM,KAAKJ,CAAK,CAEzB,CAAC,EAED,MAAMK,EAAgBR,EACnBS,IAAI,CAAClB,EAAQmB,KAAW,CAAEnB,OAAAA,EAAQmB,MAAAA,EAAOC,KAAMrB,EAAcC,CAAM,CAAA,EAAI,EACvEqB,KAAK,CAACC,EAAGC,IAAMD,EAAEF,KAAOG,EAAEH,MAAQE,EAAEH,MAAQI,EAAEJ,KAAK,EACnDD,IAAI,CAAC,CAAElB,OAAAA,EAAQmB,MAAAA,CAAAA,IACdK,EAAAA,aAAaxB,EAAQ,CACnByB,IAAKzB,EAAOyB,KAAON,CAAAA,CACpB,CACH,EAEF,OAAIb,EAAWoB,SAAW,EACjB,KAIPC,EAAAA,KAAC,MAAA,CACC,UAAWC,EAAAA,EAAGhC,EAAOiC,SAAUnC,EAASQ,CAAO,EAAGG,CAAS,EAC3D,GAAIJ,EAAM,iBAAA,WAETS,SAAAA,CAAAA,GAAcoB,EAAAA,IAAC,QAAMpB,SAAAA,CAAAA,CAAW,EAChCO,CAAAA,EACH,CAEJ"}
@@ -2,46 +2,47 @@ import { jsxs as p, jsx as f } from "react/jsx-runtime";
2
2
  import { t as m } from "../../classix-DG18itHa.js";
3
3
  import { Children as u, isValidElement as _, cloneElement as x } from "react";
4
4
  import { Button as y } from "../button/index.js";
5
- import '../../assets/index36.css';const k = "_controls_nwzp9_13", h = "_inline_nwzp9_34", w = "_fixed_nwzp9_39", o = {
5
+ import '../../assets/index36.css';const k = "_controls_1p251_13", h = "_inline_1p251_35", B = "_fixed_1p251_40", o = {
6
6
  controls: k,
7
- default: "_default_nwzp9_20",
7
+ default: "_default_1p251_20",
8
8
  inline: h,
9
- fixed: w
10
- }, z = {
9
+ fixed: B
10
+ }, g = {
11
11
  primary: 3,
12
12
  danger: 2,
13
13
  secondary: 1,
14
- tertiary: 0
15
- }, B = {
14
+ tertiary: 0,
15
+ simple: 0
16
+ }, v = {
16
17
  default: o.default,
17
18
  fixed: o.fixed,
18
19
  inline: o.inline
19
- }, g = (r) => z[r.props.variant ?? "secondary"], C = ({
20
- children: r,
20
+ }, E = (e) => g[e.props.variant ?? "secondary"], N = ({
21
+ children: e,
21
22
  className: a,
22
23
  variant: l = "default",
23
24
  ...c
24
25
  }) => {
25
- const s = u.toArray(r), i = [], e = [];
26
+ const s = u.toArray(e), i = [], r = [];
26
27
  s.forEach((n) => {
27
- _(n) && n.type === y ? i.push(n) : e.push(n);
28
+ _(n) && n.type === y ? i.push(n) : r.push(n);
28
29
  });
29
30
  const d = i.map((n, t) => ({
30
31
  button: n,
31
32
  index: t,
32
- rank: g(n)
33
+ rank: E(n)
33
34
  })).sort((n, t) => n.rank - t.rank || n.index - t.index).map(({
34
35
  button: n,
35
36
  index: t
36
37
  }) => x(n, {
37
38
  key: n.key ?? t
38
39
  }));
39
- return s.length === 0 ? null : /* @__PURE__ */ p("div", { className: m(o.controls, B[l], a), ...c, "data-component": "controls", children: [
40
- e && /* @__PURE__ */ f("span", { children: e }),
40
+ return s.length === 0 ? null : /* @__PURE__ */ p("div", { className: m(o.controls, v[l], a), ...c, "data-component": "controls", children: [
41
+ r && /* @__PURE__ */ f("span", { children: r }),
41
42
  d
42
43
  ] });
43
44
  };
44
45
  export {
45
- C as Controls
46
+ N as Controls
46
47
  };
47
48
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/components/controls/index.tsx"],"sourcesContent":["import cx from 'classix';\nimport { Children, cloneElement, isValidElement } from 'react';\n\nimport { Button, type ButtonProps } from '../button';\nimport styles from './styles.module.css';\n\nconst buttonVariantOrder = {\n primary: 3,\n danger: 2,\n secondary: 1,\n tertiary: 0,\n} satisfies Record<NonNullable<ButtonProps['variant']>, number>;\n\nconst variants = {\n default: styles.default,\n fixed: styles.fixed,\n inline: styles.inline,\n};\n\nexport type ControlsProps = React.HTMLAttributes<HTMLDivElement> & {\n children?: React.ReactNode;\n variant?: keyof typeof variants;\n};\n\nconst getButtonRank = (button: React.ReactElement<ButtonProps>) =>\n buttonVariantOrder[button.props.variant ?? 'secondary'];\n\nexport const Controls = ({ children, className, variant = 'default', ...props }: ControlsProps) => {\n const childArray = Children.toArray(children);\n const buttons: React.ReactElement<ButtonProps>[] = [];\n const nonButtons: React.ReactNode[] = [];\n\n childArray.forEach((child) => {\n if (isValidElement<ButtonProps>(child) && child.type === Button) {\n buttons.push(child);\n } else {\n nonButtons.push(child);\n }\n });\n\n const sortedButtons = buttons\n .map((button, index) => ({ button, index, rank: getButtonRank(button) }))\n .sort((a, b) => a.rank - b.rank || a.index - b.index)\n .map(({ button, index }) =>\n cloneElement(button, {\n key: button.key ?? index,\n })\n );\n\n if (childArray.length === 0) {\n return null;\n }\n\n return (\n <div\n className={cx(styles.controls, variants[variant], className)}\n {...props}\n >\n {nonButtons && <span>{nonButtons}</span>}\n {sortedButtons}\n </div>\n );\n};\n"],"names":["buttonVariantOrder","primary","danger","secondary","tertiary","variants","default","styles","fixed","inline","getButtonRank","button","props","variant","Controls","children","className","childArray","Children","toArray","buttons","nonButtons","forEach","child","isValidElement","type","Button","push","sortedButtons","map","index","rank","sort","a","b","cloneElement","key","length","jsxs","cx","controls","jsx"],"mappings":";;;;;;;;;GAMMA,IAAqB;AAAA,EACzBC,SAAS;AAAA,EACTC,QAAQ;AAAA,EACRC,WAAW;AAAA,EACXC,UAAU;AACZ,GAEMC,IAAW;AAAA,EACfC,SAASC,EAAOD;AAAAA,EAChBE,OAAOD,EAAOC;AAAAA,EACdC,QAAQF,EAAOE;AACjB,GAOMC,IAAgBA,CAACC,MACrBX,EAAmBW,EAAOC,MAAMC,WAAW,WAAW,GAE3CC,IAAWA,CAAC;AAAA,EAAEC,UAAAA;AAAAA,EAAUC,WAAAA;AAAAA,EAAWH,SAAAA,IAAU;AAAA,EAAW,GAAGD;AAAqB,MAAM;AACjG,QAAMK,IAAaC,EAASC,QAAQJ,CAAQ,GACtCK,IAA6C,CAAA,GAC7CC,IAAgC,CAAA;AAEtCJ,EAAAA,EAAWK,QAASC,CAAAA,MAAU;AAC5B,IAAIC,EAA4BD,CAAK,KAAKA,EAAME,SAASC,IACvDN,EAAQO,KAAKJ,CAAK,IAElBF,EAAWM,KAAKJ,CAAK;AAAA,EAEzB,CAAC;AAED,QAAMK,IAAgBR,EACnBS,IAAI,CAAClB,GAAQmB,OAAW;AAAA,IAAEnB,QAAAA;AAAAA,IAAQmB,OAAAA;AAAAA,IAAOC,MAAMrB,EAAcC,CAAM;AAAA,EAAA,EAAI,EACvEqB,KAAK,CAACC,GAAGC,MAAMD,EAAEF,OAAOG,EAAEH,QAAQE,EAAEH,QAAQI,EAAEJ,KAAK,EACnDD,IAAI,CAAC;AAAA,IAAElB,QAAAA;AAAAA,IAAQmB,OAAAA;AAAAA,EAAAA,MACdK,EAAaxB,GAAQ;AAAA,IACnByB,KAAKzB,EAAOyB,OAAON;AAAAA,EAAAA,CACpB,CACH;AAEF,SAAIb,EAAWoB,WAAW,IACjB,OAIP,gBAAAC,EAAC,OAAA,EACC,WAAWC,EAAGhC,EAAOiC,UAAUnC,EAASQ,CAAO,GAAGG,CAAS,GAC3D,GAAIJ,GAAM,kBAAA,YAETS,UAAAA;AAAAA,IAAAA,KAAc,gBAAAoB,EAAC,UAAMpB,UAAAA,EAAAA,CAAW;AAAA,IAChCO;AAAAA,EAAAA,GACH;AAEJ;"}
1
+ {"version":3,"file":"index.js","sources":["../../../src/components/controls/index.tsx"],"sourcesContent":["import cx from 'classix';\nimport { Children, cloneElement, isValidElement } from 'react';\n\nimport { Button, type ButtonProps } from '../button';\nimport styles from './styles.module.css';\n\nconst buttonVariantOrder = {\n primary: 3,\n danger: 2,\n secondary: 1,\n tertiary: 0,\n simple: 0,\n} satisfies Record<NonNullable<ButtonProps['variant']>, number>;\n\nconst variants = {\n default: styles.default,\n fixed: styles.fixed,\n inline: styles.inline,\n};\n\nexport type ControlsProps = React.HTMLAttributes<HTMLDivElement> & {\n children?: React.ReactNode;\n variant?: keyof typeof variants;\n};\n\nconst getButtonRank = (button: React.ReactElement<ButtonProps>) =>\n buttonVariantOrder[button.props.variant ?? 'secondary'];\n\nexport const Controls = ({ children, className, variant = 'default', ...props }: ControlsProps) => {\n const childArray = Children.toArray(children);\n const buttons: React.ReactElement<ButtonProps>[] = [];\n const nonButtons: React.ReactNode[] = [];\n\n childArray.forEach((child) => {\n if (isValidElement<ButtonProps>(child) && child.type === Button) {\n buttons.push(child);\n } else {\n nonButtons.push(child);\n }\n });\n\n const sortedButtons = buttons\n .map((button, index) => ({ button, index, rank: getButtonRank(button) }))\n .sort((a, b) => a.rank - b.rank || a.index - b.index)\n .map(({ button, index }) =>\n cloneElement(button, {\n key: button.key ?? index,\n })\n );\n\n if (childArray.length === 0) {\n return null;\n }\n\n return (\n <div\n className={cx(styles.controls, variants[variant], className)}\n {...props}\n >\n {nonButtons && <span>{nonButtons}</span>}\n {sortedButtons}\n </div>\n );\n};\n"],"names":["buttonVariantOrder","primary","danger","secondary","tertiary","simple","variants","default","styles","fixed","inline","getButtonRank","button","props","variant","Controls","children","className","childArray","Children","toArray","buttons","nonButtons","forEach","child","isValidElement","type","Button","push","sortedButtons","map","index","rank","sort","a","b","cloneElement","key","length","jsxs","cx","controls","jsx"],"mappings":";;;;;;;;;GAMMA,IAAqB;AAAA,EACzBC,SAAS;AAAA,EACTC,QAAQ;AAAA,EACRC,WAAW;AAAA,EACXC,UAAU;AAAA,EACVC,QAAQ;AACV,GAEMC,IAAW;AAAA,EACfC,SAASC,EAAOD;AAAAA,EAChBE,OAAOD,EAAOC;AAAAA,EACdC,QAAQF,EAAOE;AACjB,GAOMC,IAAgBA,CAACC,MACrBZ,EAAmBY,EAAOC,MAAMC,WAAW,WAAW,GAE3CC,IAAWA,CAAC;AAAA,EAAEC,UAAAA;AAAAA,EAAUC,WAAAA;AAAAA,EAAWH,SAAAA,IAAU;AAAA,EAAW,GAAGD;AAAqB,MAAM;AACjG,QAAMK,IAAaC,EAASC,QAAQJ,CAAQ,GACtCK,IAA6C,CAAA,GAC7CC,IAAgC,CAAA;AAEtCJ,EAAAA,EAAWK,QAASC,CAAAA,MAAU;AAC5B,IAAIC,EAA4BD,CAAK,KAAKA,EAAME,SAASC,IACvDN,EAAQO,KAAKJ,CAAK,IAElBF,EAAWM,KAAKJ,CAAK;AAAA,EAEzB,CAAC;AAED,QAAMK,IAAgBR,EACnBS,IAAI,CAAClB,GAAQmB,OAAW;AAAA,IAAEnB,QAAAA;AAAAA,IAAQmB,OAAAA;AAAAA,IAAOC,MAAMrB,EAAcC,CAAM;AAAA,EAAA,EAAI,EACvEqB,KAAK,CAACC,GAAGC,MAAMD,EAAEF,OAAOG,EAAEH,QAAQE,EAAEH,QAAQI,EAAEJ,KAAK,EACnDD,IAAI,CAAC;AAAA,IAAElB,QAAAA;AAAAA,IAAQmB,OAAAA;AAAAA,EAAAA,MACdK,EAAaxB,GAAQ;AAAA,IACnByB,KAAKzB,EAAOyB,OAAON;AAAAA,EAAAA,CACpB,CACH;AAEF,SAAIb,EAAWoB,WAAW,IACjB,OAIP,gBAAAC,EAAC,OAAA,EACC,WAAWC,EAAGhC,EAAOiC,UAAUnC,EAASQ,CAAO,GAAGG,CAAS,GAC3D,GAAIJ,GAAM,kBAAA,YAETS,UAAAA;AAAAA,IAAAA,KAAc,gBAAAoB,EAAC,UAAMpB,UAAAA,EAAAA,CAAW;AAAA,IAChCO;AAAAA,EAAAA,GACH;AAEJ;"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require('../../assets/index38.css');const a=require("react/jsx-runtime"),c=require("../../classix-5H4IWnMA.cjs"),s=require("react"),d=require("../button/index.cjs"),u=require("../icon/index.cjs"),g="_dialog_mvo05_1",w="_wrapper_mvo05_38",i={dialog:g,wrapper:w},m=({children:n,className:t,setOpen:o,...l})=>(s.useEffect(()=>{if(!o)return;const e=r=>{r.key==="Escape"&&(r.preventDefault(),o(!1))};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[o]),a.jsx("div",{className:i.wrapper,"data-wrapper":!0,onClick:()=>o==null?void 0:o(!1),"data-component":"dialog",children:a.jsxs("dialog",{className:c.t(i.dialog,t),onClick:e=>e.stopPropagation(),...l,children:[o&&a.jsx(d.Button,{"aria-label":"Close dialog","data-tag":"close-dialog",onClick:()=>o(!1),variant:"tertiary",children:a.jsx(u.Icon,{name:"x"})}),n]})}));exports.Dialog=m;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require('../../assets/index38.css');const e=require("react/jsx-runtime"),k=require("../../classix-5H4IWnMA.cjs"),a=require("react"),x=require("../button/index.cjs"),p=require("../icon/index.cjs"),P="_dialog_7bzcy_1",T="_close_7bzcy_21",E="_structured_7bzcy_29",F="_header_7bzcy_35",M="_content_7bzcy_46",S="_controls_7bzcy_52",s={dialog:P,close:T,structured:E,header:F,content:M,controls:S},b=o=>a.Children.toArray(o).some(c=>a.isValidElement(c)?c.type===x.Button&&c.props.variant==="danger"?!0:b(c.props.children):!1),X=({children:o,className:c,controls:l,header:f,onCancel:i,onClick:u,onClose:d,open:n=!1,setOpen:r,...y})=>{const g=a.useRef(null),_=b(l),m=f!=null||l!=null;a.useEffect(()=>{const t=g.current;t&&(n&&!t.open?t.showModal():!n&&t.open&&t.close())},[n]);const j=t=>{i==null||i(t),!(t.defaultPrevented||!r)&&(t.preventDefault(),r(!1))},z=t=>{if(u==null||u(t),_||t.defaultPrevented||t.target!==t.currentTarget||!r)return;const{bottom:q,left:N,right:R,top:D}=t.currentTarget.getBoundingClientRect();(t.clientX<N||t.clientX>R||t.clientY<D||t.clientY>q)&&r(!1)},B=t=>{d==null||d(t),n&&(r==null||r(!1))},h=r&&!_?e.jsx(x.Button,{"aria-label":"Close dialog",className:s.close,onClick:()=>r(!1),variant:"simple",children:e.jsx(p.Icon,{name:"x"})}):null;return e.jsx("dialog",{className:k.t(s.dialog,m&&s.structured,c),onCancel:j,onClick:z,onClose:B,ref:g,...y,"data-component":"dialog",children:m?e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:s.header,children:[f,h]}),e.jsx("div",{className:s.content,children:o}),l!=null&&e.jsx("div",{className:s.controls,children:l})]}):e.jsxs(e.Fragment,{children:[h,o]})})};exports.Dialog=X;
2
2
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../../../src/components/dialog/index.tsx"],"sourcesContent":["import cx from 'classix';\nimport React, { useEffect } from 'react';\n\nimport { Button } from '@/components/button';\nimport { Icon } from '@/components/icon';\n\nimport styles from './styles.module.css';\n\nexport type DialogProps = React.DialogHTMLAttributes<HTMLDialogElement> & {\n children: React.ReactNode;\n setOpen?: React.Dispatch<React.SetStateAction<boolean>>;\n};\n\nexport const Dialog = ({ children, className, setOpen, ...props }: DialogProps) => {\n useEffect(() => {\n if (!setOpen) return undefined;\n\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key !== 'Escape') return;\n\n event.preventDefault();\n setOpen(false);\n };\n\n window.addEventListener('keydown', handleKeyDown);\n\n return () => window.removeEventListener('keydown', handleKeyDown);\n }, [setOpen]);\n\n return (\n <div\n className={styles.wrapper}\n data-wrapper\n onClick={() => setOpen?.(false)}\n >\n <dialog\n className={cx(styles.dialog, className)}\n onClick={(e) => e.stopPropagation()}\n {...props}\n >\n {setOpen && (\n <Button\n aria-label='Close dialog'\n data-tag='close-dialog'\n onClick={() => setOpen(false)}\n variant='tertiary'\n >\n <Icon name='x' />\n </Button>\n )}\n {children}\n </dialog>\n </div>\n );\n};\n"],"names":["Dialog","children","className","setOpen","props","useEffect","handleKeyDown","event","key","preventDefault","window","addEventListener","removeEventListener","jsx","styles","wrapper","jsxs","cx","dialog","e","stopPropagation","Button","Icon"],"mappings":"iTAaaA,EAASA,CAAC,CAAEC,SAAAA,EAAUC,UAAAA,EAAWC,QAAAA,EAAS,GAAGC,CAAmB,KAC3EC,EAAAA,UAAU,IAAM,CACd,GAAI,CAACF,EAAS,OAEd,MAAMG,EAAiBC,GAAyB,CAC1CA,EAAMC,MAAQ,WAElBD,EAAME,eAAAA,EACNN,EAAQ,EAAK,EACf,EAEAO,cAAOC,iBAAiB,UAAWL,CAAa,EAEzC,IAAMI,OAAOE,oBAAoB,UAAWN,CAAa,CAClE,EAAG,CAACH,CAAO,CAAC,EAGVU,EAAAA,IAAC,MAAA,CACC,UAAWC,EAAOC,QAClB,eAAY,GACZ,QAAS,IAAMZ,GAAAA,YAAAA,EAAU,IAAO,iBAAA,SAEhC,SAAAa,EAAAA,KAAC,SAAA,CACC,UAAWC,EAAAA,EAAGH,EAAOI,OAAQhB,CAAS,EACtC,QAAUiB,GAAMA,EAAEC,gBAAAA,EAClB,GAAIhB,EAEHD,SAAAA,CAAAA,SACEkB,EAAAA,OAAA,CACC,aAAW,eACX,WAAS,eACT,QAAS,IAAMlB,EAAQ,EAAK,EAC5B,QAAQ,WAER,eAACmB,EAAAA,KAAA,CAAK,KAAK,IAAG,EAChB,EAEDrB,CAAAA,CAAAA,CACH,CAAA,CACF"}
1
+ {"version":3,"file":"index.cjs","sources":["../../../src/components/dialog/index.tsx"],"sourcesContent":["import cx from 'classix';\nimport React, { useEffect, useRef } from 'react';\n\nimport { Button, type ButtonProps } from '@/components/button';\nimport { Icon } from '@/components/icon';\n\nimport styles from './styles.module.css';\n\ntype ControlElementProps = {\n children?: React.ReactNode;\n variant?: ButtonProps['variant'];\n};\n\nconst hasDangerControl = (node: React.ReactNode): boolean =>\n React.Children.toArray(node).some((child) => {\n if (!React.isValidElement<ControlElementProps>(child)) return false;\n if (child.type === Button && child.props.variant === 'danger') return true;\n\n return hasDangerControl(child.props.children);\n });\n\nexport type DialogProps = React.DialogHTMLAttributes<HTMLDialogElement> & {\n children: React.ReactNode;\n controls?: React.ReactNode;\n header?: React.ReactNode;\n setOpen?: React.Dispatch<React.SetStateAction<boolean>>;\n};\n\nexport const Dialog = ({\n children,\n className,\n controls,\n header,\n onCancel,\n onClick,\n onClose,\n open = false,\n setOpen,\n ...props\n}: DialogProps) => {\n const dialogRef = useRef<HTMLDialogElement>(null);\n const destructive = hasDangerControl(controls);\n const structured = header != null || controls != null;\n\n useEffect(() => {\n const dialog = dialogRef.current;\n if (!dialog) return;\n\n if (open && !dialog.open) {\n dialog.showModal();\n } else if (!open && dialog.open) {\n dialog.close();\n }\n }, [open]);\n\n const handleCancel = (event: React.SyntheticEvent<HTMLDialogElement>) => {\n onCancel?.(event);\n if (event.defaultPrevented || !setOpen) return;\n\n event.preventDefault();\n setOpen(false);\n };\n\n const handleClick = (event: React.MouseEvent<HTMLDialogElement>) => {\n onClick?.(event);\n if (\n destructive ||\n event.defaultPrevented ||\n event.target !== event.currentTarget ||\n !setOpen\n )\n return;\n\n const { bottom, left, right, top } = event.currentTarget.getBoundingClientRect();\n const clickedBackdrop =\n event.clientX < left ||\n event.clientX > right ||\n event.clientY < top ||\n event.clientY > bottom;\n\n if (clickedBackdrop) {\n setOpen(false);\n }\n };\n\n const handleClose = (event: React.SyntheticEvent<HTMLDialogElement>) => {\n onClose?.(event);\n if (open) setOpen?.(false);\n };\n\n const closeButton = setOpen && !destructive ? (\n <Button\n aria-label='Close dialog'\n className={styles.close}\n onClick={() => setOpen(false)}\n variant='simple'\n >\n <Icon name='x' />\n </Button>\n ) : null;\n\n return (\n <dialog\n className={cx(styles.dialog, structured && styles.structured, className)}\n onCancel={handleCancel}\n onClick={handleClick}\n onClose={handleClose}\n ref={dialogRef}\n {...props}\n >\n {structured ? (\n <>\n <div className={styles.header}>\n {header}\n {closeButton}\n </div>\n <div className={styles.content}>{children}</div>\n {controls != null && <div className={styles.controls}>{controls}</div>}\n </>\n ) : (\n <>\n {closeButton}\n {children}\n </>\n )}\n </dialog>\n );\n};\n"],"names":["hasDangerControl","node","React","Children","toArray","some","child","isValidElement","type","Button","props","variant","children","Dialog","className","controls","header","onCancel","onClick","onClose","open","setOpen","dialogRef","useRef","destructive","structured","useEffect","dialog","current","showModal","close","handleCancel","event","defaultPrevented","preventDefault","handleClick","target","currentTarget","bottom","left","right","top","getBoundingClientRect","clientX","clientY","handleClose","closeButton","styles","Icon","jsx","cx","jsxs","Fragment","content"],"mappings":"mbAaMA,EAAoBC,GACxBC,EAAMC,SAASC,QAAQH,CAAI,EAAEI,KAAMC,GAC5BJ,EAAMK,eAAoCD,CAAK,EAChDA,EAAME,OAASC,UAAUH,EAAMI,MAAMC,UAAY,SAAiB,GAE/DX,EAAiBM,EAAMI,MAAME,QAAQ,EAHkB,EAI/D,EASUC,EAASA,CAAC,CACrBD,SAAAA,EACAE,UAAAA,EACAC,SAAAA,EACAC,OAAAA,EACAC,SAAAA,EACAC,QAAAA,EACAC,QAAAA,EACAC,KAAAA,EAAO,GACPC,QAAAA,EACA,GAAGX,CACQ,IAAM,CACjB,MAAMY,EAAYC,EAAAA,OAA0B,IAAI,EAC1CC,EAAcxB,EAAiBe,CAAQ,EACvCU,EAAaT,GAAU,MAAQD,GAAY,KAEjDW,EAAAA,UAAU,IAAM,CACd,MAAMC,EAASL,EAAUM,QACpBD,IAEDP,GAAQ,CAACO,EAAOP,KAClBO,EAAOE,UAAAA,EACE,CAACT,GAAQO,EAAOP,MACzBO,EAAOG,MAAAA,EAEX,EAAG,CAACV,CAAI,CAAC,EAET,MAAMW,EAAgBC,GAAmD,CACvEf,GAAAA,MAAAA,EAAWe,GACPA,EAAAA,EAAMC,kBAAoB,CAACZ,KAE/BW,EAAME,eAAAA,EACNb,EAAQ,EAAK,EACf,EAEMc,EAAeH,GAA+C,CAElE,GADAd,GAAAA,MAAAA,EAAUc,GAERR,GACAQ,EAAMC,kBACND,EAAMI,SAAWJ,EAAMK,eACvB,CAAChB,EAED,OAEF,KAAM,CAAEiB,OAAAA,EAAQC,KAAAA,EAAMC,MAAAA,EAAOC,IAAAA,CAAAA,EAAQT,EAAMK,cAAcK,sBAAAA,GAEvDV,EAAMW,QAAUJ,GAChBP,EAAMW,QAAUH,GAChBR,EAAMY,QAAUH,GAChBT,EAAMY,QAAUN,IAGhBjB,EAAQ,EAAK,CAEjB,EAEMwB,EAAeb,GAAmD,CACtEb,GAAAA,MAAAA,EAAUa,GACNZ,eAAgB,IACtB,EAEM0B,EAAczB,GAAW,CAACG,QAC7Bf,EAAAA,OAAA,CACC,aAAW,eACX,UAAWsC,EAAOjB,MAClB,QAAS,IAAMT,EAAQ,EAAK,EAC5B,QAAQ,SAER,eAAC2B,EAAAA,KAAA,CAAK,KAAK,IAAG,CAAA,CAChB,EACE,KAEJ,OACEC,EAAAA,IAAC,SAAA,CACC,UAAWC,EAAAA,EAAGH,EAAOpB,OAAQF,GAAcsB,EAAOtB,WAAYX,CAAS,EACvE,SAAUiB,EACV,QAASI,EACT,QAASU,EACT,IAAKvB,EACL,GAAIZ,EAAM,iBAAA,SAETe,SAAAA,EACC0B,EAAAA,KAAAC,EAAAA,SAAA,CACE,SAAA,CAAAD,EAAAA,KAAC,MAAA,CAAI,UAAWJ,EAAO/B,OACpBA,SAAAA,CAAAA,EACA8B,CAAAA,EACH,EACAG,EAAAA,IAAC,MAAA,CAAI,UAAWF,EAAOM,QAAUzC,SAAAA,EAAS,EACzCG,GAAY,MAAQkC,EAAAA,IAAC,OAAI,UAAWF,EAAOhC,SAAWA,SAAAA,CAAAA,CAAS,CAAA,CAAA,CAClE,EAEAoC,EAAAA,KAAAC,EAAAA,SAAA,CACGN,SAAAA,CAAAA,EACAlC,CAAAA,CAAAA,CACH,CAAA,CAEJ,CAEJ"}
@@ -1,27 +1,59 @@
1
- import { jsx as a, jsxs as n } from "react/jsx-runtime";
2
- import { t as c } from "../../classix-DG18itHa.js";
3
- import { useEffect as m } from "react";
4
- import { Button as s } from "../button/index.js";
5
- import { Icon as f } from "../icon/index.js";
6
- import '../../assets/index38.css';const p = "_dialog_mvo05_1", w = "_wrapper_mvo05_38", l = {
7
- dialog: p,
8
- wrapper: w
9
- }, _ = ({
10
- children: t,
11
- className: e,
12
- setOpen: o,
13
- ...d
14
- }) => (m(() => {
15
- if (!o) return;
16
- const r = (i) => {
17
- i.key === "Escape" && (i.preventDefault(), o(!1));
18
- };
19
- return window.addEventListener("keydown", r), () => window.removeEventListener("keydown", r);
20
- }, [o]), /* @__PURE__ */ a("div", { className: l.wrapper, "data-wrapper": !0, onClick: () => o == null ? void 0 : o(!1), "data-component": "dialog", children: /* @__PURE__ */ n("dialog", { className: c(l.dialog, e), onClick: (r) => r.stopPropagation(), ...d, children: [
21
- o && /* @__PURE__ */ a(s, { "aria-label": "Close dialog", "data-tag": "close-dialog", onClick: () => o(!1), variant: "tertiary", children: /* @__PURE__ */ a(f, { name: "x" }) }),
22
- t
23
- ] }) }));
1
+ import { jsx as o, jsxs as u, Fragment as y } from "react/jsx-runtime";
2
+ import { t as P } from "../../classix-DG18itHa.js";
3
+ import b, { useRef as T, useEffect as X } from "react";
4
+ import { Button as p } from "../button/index.js";
5
+ import { Icon as Y } from "../icon/index.js";
6
+ import '../../assets/index38.css';const w = "_dialog_7bzcy_1", A = "_close_7bzcy_21", F = "_structured_7bzcy_29", I = "_header_7bzcy_35", M = "_content_7bzcy_46", V = "_controls_7bzcy_52", l = {
7
+ dialog: w,
8
+ close: A,
9
+ structured: F,
10
+ header: I,
11
+ content: M,
12
+ controls: V
13
+ }, z = (e) => b.Children.toArray(e).some((c) => b.isValidElement(c) ? c.type === p && c.props.variant === "danger" ? !0 : z(c.props.children) : !1), Q = ({
14
+ children: e,
15
+ className: c,
16
+ controls: a,
17
+ header: f,
18
+ onCancel: i,
19
+ onClick: n,
20
+ onClose: d,
21
+ open: s = !1,
22
+ setOpen: r,
23
+ ...B
24
+ }) => {
25
+ const m = T(null), _ = z(a), g = f != null || a != null;
26
+ X(() => {
27
+ const t = m.current;
28
+ t && (s && !t.open ? t.showModal() : !s && t.open && t.close());
29
+ }, [s]);
30
+ const N = (t) => {
31
+ i == null || i(t), !(t.defaultPrevented || !r) && (t.preventDefault(), r(!1));
32
+ }, x = (t) => {
33
+ if (n == null || n(t), _ || t.defaultPrevented || t.target !== t.currentTarget || !r) return;
34
+ const {
35
+ bottom: k,
36
+ left: D,
37
+ right: j,
38
+ top: E
39
+ } = t.currentTarget.getBoundingClientRect();
40
+ (t.clientX < D || t.clientX > j || t.clientY < E || t.clientY > k) && r(!1);
41
+ }, R = (t) => {
42
+ d == null || d(t), s && (r == null || r(!1));
43
+ }, h = r && !_ ? /* @__PURE__ */ o(p, { "aria-label": "Close dialog", className: l.close, onClick: () => r(!1), variant: "simple", children: /* @__PURE__ */ o(Y, { name: "x" }) }) : null;
44
+ return /* @__PURE__ */ o("dialog", { className: P(l.dialog, g && l.structured, c), onCancel: N, onClick: x, onClose: R, ref: m, ...B, "data-component": "dialog", children: g ? /* @__PURE__ */ u(y, { children: [
45
+ /* @__PURE__ */ u("div", { className: l.header, children: [
46
+ f,
47
+ h
48
+ ] }),
49
+ /* @__PURE__ */ o("div", { className: l.content, children: e }),
50
+ a != null && /* @__PURE__ */ o("div", { className: l.controls, children: a })
51
+ ] }) : /* @__PURE__ */ u(y, { children: [
52
+ h,
53
+ e
54
+ ] }) });
55
+ };
24
56
  export {
25
- _ as Dialog
57
+ Q as Dialog
26
58
  };
27
59
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/components/dialog/index.tsx"],"sourcesContent":["import cx from 'classix';\nimport React, { useEffect } from 'react';\n\nimport { Button } from '@/components/button';\nimport { Icon } from '@/components/icon';\n\nimport styles from './styles.module.css';\n\nexport type DialogProps = React.DialogHTMLAttributes<HTMLDialogElement> & {\n children: React.ReactNode;\n setOpen?: React.Dispatch<React.SetStateAction<boolean>>;\n};\n\nexport const Dialog = ({ children, className, setOpen, ...props }: DialogProps) => {\n useEffect(() => {\n if (!setOpen) return undefined;\n\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key !== 'Escape') return;\n\n event.preventDefault();\n setOpen(false);\n };\n\n window.addEventListener('keydown', handleKeyDown);\n\n return () => window.removeEventListener('keydown', handleKeyDown);\n }, [setOpen]);\n\n return (\n <div\n className={styles.wrapper}\n data-wrapper\n onClick={() => setOpen?.(false)}\n >\n <dialog\n className={cx(styles.dialog, className)}\n onClick={(e) => e.stopPropagation()}\n {...props}\n >\n {setOpen && (\n <Button\n aria-label='Close dialog'\n data-tag='close-dialog'\n onClick={() => setOpen(false)}\n variant='tertiary'\n >\n <Icon name='x' />\n </Button>\n )}\n {children}\n </dialog>\n </div>\n );\n};\n"],"names":["Dialog","children","className","setOpen","props","useEffect","handleKeyDown","event","key","preventDefault","window","addEventListener","removeEventListener","jsx","styles","wrapper","jsxs","cx","dialog","e","stopPropagation","Button","Icon"],"mappings":";;;;;;;;GAaaA,IAASA,CAAC;AAAA,EAAEC,UAAAA;AAAAA,EAAUC,WAAAA;AAAAA,EAAWC,SAAAA;AAAAA,EAAS,GAAGC;AAAmB,OAC3EC,EAAU,MAAM;AACd,MAAI,CAACF,EAAS;AAEd,QAAMG,IAAgBA,CAACC,MAAyB;AAC9C,IAAIA,EAAMC,QAAQ,aAElBD,EAAME,eAAAA,GACNN,EAAQ,EAAK;AAAA,EACf;AAEAO,gBAAOC,iBAAiB,WAAWL,CAAa,GAEzC,MAAMI,OAAOE,oBAAoB,WAAWN,CAAa;AAClE,GAAG,CAACH,CAAO,CAAC,GAGV,gBAAAU,EAAC,OAAA,EACC,WAAWC,EAAOC,SAClB,gBAAY,IACZ,SAAS,MAAMZ,KAAAA,gBAAAA,EAAU,KAAO,kBAAA,UAEhC,UAAA,gBAAAa,EAAC,UAAA,EACC,WAAWC,EAAGH,EAAOI,QAAQhB,CAAS,GACtC,SAAUiB,CAAAA,MAAMA,EAAEC,gBAAAA,GAClB,GAAIhB,GAEHD,UAAAA;AAAAA,EAAAA,uBACEkB,GAAA,EACC,cAAW,gBACX,YAAS,gBACT,SAAS,MAAMlB,EAAQ,EAAK,GAC5B,SAAQ,YAER,4BAACmB,GAAA,EAAK,MAAK,KAAG,GAChB;AAAA,EAEDrB;AAAAA,EAAAA,CACH,EAAA,CACF;"}
1
+ {"version":3,"file":"index.js","sources":["../../../src/components/dialog/index.tsx"],"sourcesContent":["import cx from 'classix';\nimport React, { useEffect, useRef } from 'react';\n\nimport { Button, type ButtonProps } from '@/components/button';\nimport { Icon } from '@/components/icon';\n\nimport styles from './styles.module.css';\n\ntype ControlElementProps = {\n children?: React.ReactNode;\n variant?: ButtonProps['variant'];\n};\n\nconst hasDangerControl = (node: React.ReactNode): boolean =>\n React.Children.toArray(node).some((child) => {\n if (!React.isValidElement<ControlElementProps>(child)) return false;\n if (child.type === Button && child.props.variant === 'danger') return true;\n\n return hasDangerControl(child.props.children);\n });\n\nexport type DialogProps = React.DialogHTMLAttributes<HTMLDialogElement> & {\n children: React.ReactNode;\n controls?: React.ReactNode;\n header?: React.ReactNode;\n setOpen?: React.Dispatch<React.SetStateAction<boolean>>;\n};\n\nexport const Dialog = ({\n children,\n className,\n controls,\n header,\n onCancel,\n onClick,\n onClose,\n open = false,\n setOpen,\n ...props\n}: DialogProps) => {\n const dialogRef = useRef<HTMLDialogElement>(null);\n const destructive = hasDangerControl(controls);\n const structured = header != null || controls != null;\n\n useEffect(() => {\n const dialog = dialogRef.current;\n if (!dialog) return;\n\n if (open && !dialog.open) {\n dialog.showModal();\n } else if (!open && dialog.open) {\n dialog.close();\n }\n }, [open]);\n\n const handleCancel = (event: React.SyntheticEvent<HTMLDialogElement>) => {\n onCancel?.(event);\n if (event.defaultPrevented || !setOpen) return;\n\n event.preventDefault();\n setOpen(false);\n };\n\n const handleClick = (event: React.MouseEvent<HTMLDialogElement>) => {\n onClick?.(event);\n if (\n destructive ||\n event.defaultPrevented ||\n event.target !== event.currentTarget ||\n !setOpen\n )\n return;\n\n const { bottom, left, right, top } = event.currentTarget.getBoundingClientRect();\n const clickedBackdrop =\n event.clientX < left ||\n event.clientX > right ||\n event.clientY < top ||\n event.clientY > bottom;\n\n if (clickedBackdrop) {\n setOpen(false);\n }\n };\n\n const handleClose = (event: React.SyntheticEvent<HTMLDialogElement>) => {\n onClose?.(event);\n if (open) setOpen?.(false);\n };\n\n const closeButton = setOpen && !destructive ? (\n <Button\n aria-label='Close dialog'\n className={styles.close}\n onClick={() => setOpen(false)}\n variant='simple'\n >\n <Icon name='x' />\n </Button>\n ) : null;\n\n return (\n <dialog\n className={cx(styles.dialog, structured && styles.structured, className)}\n onCancel={handleCancel}\n onClick={handleClick}\n onClose={handleClose}\n ref={dialogRef}\n {...props}\n >\n {structured ? (\n <>\n <div className={styles.header}>\n {header}\n {closeButton}\n </div>\n <div className={styles.content}>{children}</div>\n {controls != null && <div className={styles.controls}>{controls}</div>}\n </>\n ) : (\n <>\n {closeButton}\n {children}\n </>\n )}\n </dialog>\n );\n};\n"],"names":["hasDangerControl","node","React","Children","toArray","some","child","isValidElement","type","Button","props","variant","children","Dialog","className","controls","header","onCancel","onClick","onClose","open","setOpen","dialogRef","useRef","destructive","structured","useEffect","dialog","current","showModal","close","handleCancel","event","defaultPrevented","preventDefault","handleClick","target","currentTarget","bottom","left","right","top","getBoundingClientRect","clientX","clientY","handleClose","closeButton","styles","Icon","jsx","cx","jsxs","Fragment","content"],"mappings":";;;;;;;;;;;;GAaMA,IAAmBA,CAACC,MACxBC,EAAMC,SAASC,QAAQH,CAAI,EAAEI,KAAMC,CAAAA,MAC5BJ,EAAMK,eAAoCD,CAAK,IAChDA,EAAME,SAASC,KAAUH,EAAMI,MAAMC,YAAY,WAAiB,KAE/DX,EAAiBM,EAAMI,MAAME,QAAQ,IAHkB,EAI/D,GASUC,IAASA,CAAC;AAAA,EACrBD,UAAAA;AAAAA,EACAE,WAAAA;AAAAA,EACAC,UAAAA;AAAAA,EACAC,QAAAA;AAAAA,EACAC,UAAAA;AAAAA,EACAC,SAAAA;AAAAA,EACAC,SAAAA;AAAAA,EACAC,MAAAA,IAAO;AAAA,EACPC,SAAAA;AAAAA,EACA,GAAGX;AACQ,MAAM;AACjB,QAAMY,IAAYC,EAA0B,IAAI,GAC1CC,IAAcxB,EAAiBe,CAAQ,GACvCU,IAAaT,KAAU,QAAQD,KAAY;AAEjDW,EAAAA,EAAU,MAAM;AACd,UAAMC,IAASL,EAAUM;AACzB,IAAKD,MAEDP,KAAQ,CAACO,EAAOP,OAClBO,EAAOE,UAAAA,IACE,CAACT,KAAQO,EAAOP,QACzBO,EAAOG,MAAAA;AAAAA,EAEX,GAAG,CAACV,CAAI,CAAC;AAET,QAAMW,IAAeA,CAACC,MAAmD;AAEvE,IADAf,KAAAA,QAAAA,EAAWe,IACPA,EAAAA,EAAMC,oBAAoB,CAACZ,OAE/BW,EAAME,eAAAA,GACNb,EAAQ,EAAK;AAAA,EACf,GAEMc,IAAcA,CAACH,MAA+C;AAElE,QADAd,KAAAA,QAAAA,EAAUc,IAERR,KACAQ,EAAMC,oBACND,EAAMI,WAAWJ,EAAMK,iBACvB,CAAChB,EAED;AAEF,UAAM;AAAA,MAAEiB,QAAAA;AAAAA,MAAQC,MAAAA;AAAAA,MAAMC,OAAAA;AAAAA,MAAOC,KAAAA;AAAAA,IAAAA,IAAQT,EAAMK,cAAcK,sBAAAA;AAOzD,KALEV,EAAMW,UAAUJ,KAChBP,EAAMW,UAAUH,KAChBR,EAAMY,UAAUH,KAChBT,EAAMY,UAAUN,MAGhBjB,EAAQ,EAAK;AAAA,EAEjB,GAEMwB,IAAcA,CAACb,MAAmD;AACtEb,IAAAA,KAAAA,QAAAA,EAAUa,IACNZ,qBAAgB;AAAA,EACtB,GAEM0B,IAAczB,KAAW,CAACG,sBAC7Bf,GAAA,EACC,cAAW,gBACX,WAAWsC,EAAOjB,OAClB,SAAS,MAAMT,EAAQ,EAAK,GAC5B,SAAQ,UAER,4BAAC2B,GAAA,EAAK,MAAK,KAAG,EAAA,CAChB,IACE;AAEJ,SACE,gBAAAC,EAAC,UAAA,EACC,WAAWC,EAAGH,EAAOpB,QAAQF,KAAcsB,EAAOtB,YAAYX,CAAS,GACvE,UAAUiB,GACV,SAASI,GACT,SAASU,GACT,KAAKvB,GACL,GAAIZ,GAAM,kBAAA,UAETe,UAAAA,IACC,gBAAA0B,EAAAC,GAAA,EACE,UAAA;AAAA,IAAA,gBAAAD,EAAC,OAAA,EAAI,WAAWJ,EAAO/B,QACpBA,UAAAA;AAAAA,MAAAA;AAAAA,MACA8B;AAAAA,IAAAA,GACH;AAAA,IACA,gBAAAG,EAAC,OAAA,EAAI,WAAWF,EAAOM,SAAUzC,UAAAA,GAAS;AAAA,IACzCG,KAAY,QAAQ,gBAAAkC,EAAC,SAAI,WAAWF,EAAOhC,UAAWA,UAAAA,EAAAA,CAAS;AAAA,EAAA,EAAA,CAClE,IAEA,gBAAAoC,EAAAC,GAAA,EACGN,UAAAA;AAAAA,IAAAA;AAAAA,IACAlC;AAAAA,EAAAA,EAAAA,CACH,EAAA,CAEJ;AAEJ;"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require('../../assets/index39.css');const r=require("react/jsx-runtime"),E=require("../../classix-5H4IWnMA.cjs"),a=require("react"),F=require("../button/index.cjs"),ce=require("../../icons-BROXUtPz.cjs"),X=require("../../index-CIugi8vq.cjs"),ue=require("../list/index.cjs"),N=require("../../index-CSYOtiWJ.cjs");function V(t){return typeof t=="string"||typeof t=="number"?String(t):Array.isArray(t)?t.map(V).join(" "):a.isValidElement(t)?V(t.props.children):""}function de(t){return a.isValidElement(t)&&t.type==="option"}function pe(t){return a.isValidElement(t)&&t.type==="optgroup"}function fe(t){return a.isValidElement(t)&&t.type===a.Fragment}function me(t){return a.isValidElement(t)&&t.type===N.Select}function W(t,i,l=!1){const s=[];return a.Children.forEach(t,n=>{if(fe(n))s.push(...W(n.props.children,i,l));else if(de(n)){const c=V(n.props.children).trim(),f=n.props.value!=null?String(n.props.value):c;s.push({disabled:l||!!n.props.disabled,groupLabel:i,hidden:!!n.props.hidden,isPlaceholder:!!(n.props.hidden&&f===""),label:n.props.children,selected:!!n.props.selected,text:c,value:f})}else pe(n)&&s.push(...W(n.props.children,n.props.label,l||!!n.props.disabled))}),s}function _e(t){const i=t.trim();if(!i)return null;const s=[.../[*?]/.test(i)?i:`*${i}*`].map(n=>n==="*"?".*":n==="?"?".":n.replace(/[|\\{}()[\]^$+.,]/g,"\\$&")).join("");return new RegExp(`^${s}$`,"i")}function he(t,i){const l=_e(i),s=t.filter(n=>!n.hidden&&!n.isPlaceholder);return l?s.filter(n=>l.test([n.groupLabel,n.text,n.value].filter(Boolean).join(" "))):s}function ye(t,i){return t.find(l=>l.value===i)??t.find(l=>l.isPlaceholder)??t[0]}function xe(t,i,l){var s,n;return i!=null?String(i):l!=null?String(l):((s=t.find(c=>c.selected))==null?void 0:s.value)??((n=t[0])==null?void 0:n.value)??""}function be(t){if(me(t)){const{children:i,placeholder:l,...s}=t.props;return{children:r.jsxs(r.Fragment,{children:[l&&r.jsx("option",{hidden:!0,value:"",children:l}),i]}),props:s}}return{children:t.props.children,props:t.props}}const ge="_combobox_qsl6y_3",ve="_dropdown_qsl6y_27",je="_empty_qsl6y_30",qe="_group_qsl6y_31",we="_placeholder_qsl6y_32",Se="_filter_qsl6y_40",Ce="_native_qsl6y_52",Ee="_option_qsl6y_62",Ne="_options_qsl6y_84",Ve="_panel_qsl6y_108",Le="_selected_qsl6y_131",Re="_text_qsl6y_135",$e="_trigger_qsl6y_145",Be="_minimal_qsl6y_164",Ie="_inline_qsl6y_221",De="_label_qsl6y_253",o={combobox:ge,"combobox-input":"_combobox-input_qsl6y_12",dropdown:ve,empty:je,group:qe,placeholder:we,filter:Se,native:Ce,option:Ee,options:Ne,panel:Ve,selected:Le,text:Re,trigger:$e,minimal:Be,inline:Ie,label:De,"inline-field":"_inline-field_qsl6y_259"};function Y(t,i){return{"--icon-svg":ce.iconSVG(t).replace("currentColor",i)}}const Pe=({children:t,className:i,combobox:l=!1,createOption:s,emptyLabel:n="No matches found",label:c,renderOption:f,searchPlaceholder:L="Filter",selectedItems:Z,variant:y="default",...ee})=>{const R=be(t),{defaultValue:te,onChange:$,value:B,...ne}=R.props,g=N.sanitizeSelectProps(ne),M=a.useRef(null),Q=a.useRef(null),v=a.useId(),z=a.useRef(null),m=a.useRef(null),x=W(R.children),b=B!=null,I=xe(x,B,te),[D,P]=a.useState(()=>I),[u,p]=a.useState(!1),[j,q]=a.useState(""),w=b?String(B):D,O={default:N.resolveColor("--colors-semantic-content-secondary"),white:N.resolveColor("--color-white","white")},T=y==="minimal"?O.white:O.default,S=ye(x,w),le=Y("chevron",T),se=Y("search",T),A=he(x,j),_=j.trim(),C=!!(l&&s&&_&&s.isValid(_)),re=c&&y==="inline"?X.formatInlineLabel(c):c,G=e=>e?(f==null?void 0:f({groupLabel:e.groupLabel,isSelected:e.value===w,label:e.label,text:e.text,value:e.value}))??e.label:"Select an option";a.useEffect(()=>{!b&&!x.some(e=>e.value===D)&&P(I)},[I,D,b,x]),a.useEffect(()=>{var e;if(!u){q("");return}(e=m.current)==null||e.focus()},[u]),a.useEffect(()=>{if(!u)return;const e=d=>{var h;(h=Q.current)!=null&&h.contains(d.target)||p(!1)};return document.addEventListener("mousedown",e),()=>{document.removeEventListener("mousedown",e)}},[u]);const oe=e=>{b||P(e.target.value),$==null||$(e)},k=()=>{var e;p(!1),l||(e=M.current)==null||e.focus()},K=()=>{var e;q(""),p(!0),(e=m.current)==null||e.focus()},H=()=>{!s||!C||(s.onCreate(_),K())},ie=e=>{var U;b||P(e);const d=z.current;if(!d){k();return}const h=(U=Object.getOwnPropertyDescriptor(HTMLSelectElement.prototype,"value"))==null?void 0:U.set;h==null||h.call(d,e),d.dispatchEvent(new Event("change",{bubbles:!0})),l?K():k()},ae=e=>{e.key==="Escape"&&k(),e.key==="Enter"&&e.target===m.current&&C&&(e.preventDefault(),H())},J=r.jsxs("div",{className:E.t(o.dropdown,y==="inline"&&o.inline,y==="minimal"&&o.minimal,i),onKeyDown:ae,ref:Q,...ee,children:[r.jsx("select",{...g,"aria-hidden":"true",className:o.native,onChange:oe,ref:z,tabIndex:-1,value:w,children:R.children}),l?r.jsxs("div",{className:o.combobox,onClick:()=>{var e;return(e=m.current)==null?void 0:e.focus()},children:[Z,r.jsx("input",{"aria-autocomplete":"list","aria-expanded":u,"aria-label":g["aria-label"]??c??L,className:o["combobox-input"],disabled:g.disabled,onChange:e=>{q(e.target.value),p(!0)},onClick:()=>p(!0),onFocus:()=>p(!0),placeholder:L||void 0,ref:m,role:"combobox",type:"text",value:j})]}):r.jsx(F.Button,{"aria-expanded":u,"aria-haspopup":"dialog","aria-labelledby":c?`${v} ${v}-value`:void 0,className:E.t(o.trigger,(S==null?void 0:S.isPlaceholder)&&o.placeholder),"data-open":u?"true":void 0,disabled:g.disabled,onClick:()=>p(e=>!e),ref:M,style:le,variant:"tertiary",children:r.jsx("span",{className:o.text,id:`${v}-value`,children:G(S)})}),u&&r.jsxs("div",{className:o.panel,children:[!l&&r.jsx(X.Input,{"aria-label":"Filter",className:o.filter,icon:"search",onChange:e=>q(e.target.value),placeholder:L,ref:m,style:se,type:"search",value:j}),r.jsxs(ue.List,{"aria-label":"Dropdown",className:o.options,children:[A.map(e=>{const d=e.value===w;return r.jsx("li",{"data-component":"dropdown",children:r.jsxs(F.Button,{"aria-label":d?`${e.text}, selected`:e.text,className:E.t(o.option,d&&o.selected),disabled:e.disabled,onClick:()=>ie(e.value),variant:"tertiary",children:[r.jsx("span",{className:o.text,children:G(e)}),e.groupLabel&&r.jsx("small",{className:o.group,children:e.groupLabel})]})},`${e.groupLabel??"root"}-${e.value}`)}),C&&s&&r.jsx("li",{children:r.jsx(F.Button,{"aria-label":V(s.render(_))||_,className:o.option,onClick:H,variant:"tertiary",children:r.jsx("span",{className:o.text,children:s.render(_)})})}),A.length===0&&!C&&r.jsx("li",{className:o.empty,children:n})]})]})]});return c?r.jsxs("div",{className:E.t(o.label,y==="inline"&&o["inline-field"]),"data-component":"dropdown",children:[r.jsx("span",{id:v,children:re}),J]}):J};exports.Dropdown=Pe;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require('../../assets/index39.css');const s=require("react/jsx-runtime"),N=require("../../classix-5H4IWnMA.cjs"),a=require("react"),F=require("../button/index.cjs"),ce=require("../../icons-Dx0NQYLH.cjs"),X=require("../../index-CEzqxRIu.cjs"),ue=require("../list/index.cjs"),V=require("../../index-oL8GYbhj.cjs");function L(t){return typeof t=="string"||typeof t=="number"?String(t):Array.isArray(t)?t.map(L).join(" "):a.isValidElement(t)?L(t.props.children):""}function de(t){return a.isValidElement(t)&&t.type==="option"}function pe(t){return a.isValidElement(t)&&t.type==="optgroup"}function fe(t){return a.isValidElement(t)&&t.type===a.Fragment}function me(t){return a.isValidElement(t)&&t.type===V.Select}function W(t,i,r=!1){const l=[];return a.Children.forEach(t,n=>{if(fe(n))l.push(...W(n.props.children,i,r));else if(de(n)){const c=L(n.props.children).trim(),f=n.props.value!=null?String(n.props.value):c;l.push({disabled:r||!!n.props.disabled,groupLabel:i,hidden:!!n.props.hidden,isPlaceholder:!!(n.props.hidden&&f===""),label:n.props.children,selected:!!n.props.selected,text:c,value:f})}else pe(n)&&l.push(...W(n.props.children,n.props.label,r||!!n.props.disabled))}),l}function xe(t){const i=t.trim();if(!i)return null;const l=[.../[*?]/.test(i)?i:`*${i}*`].map(n=>n==="*"?".*":n==="?"?".":n.replace(/[|\\{}()[\]^$+.,]/g,"\\$&")).join("");return new RegExp(`^${l}$`,"i")}function ge(t,i){const r=xe(i),l=t.filter(n=>!n.hidden&&!n.isPlaceholder);return r?l.filter(n=>r.test([n.groupLabel,n.text,n.value].filter(Boolean).join(" "))):l}function _e(t,i){return t.find(r=>r.value===i)??t.find(r=>r.isPlaceholder)??t[0]}function he(t,i,r){var l,n;return i!=null?String(i):r!=null?String(r):((l=t.find(c=>c.selected))==null?void 0:l.value)??((n=t[0])==null?void 0:n.value)??""}function be(t){if(me(t)){const{children:i,placeholder:r,...l}=t.props;return{children:s.jsxs(s.Fragment,{children:[r&&s.jsx("option",{hidden:!0,value:"",children:r}),i]}),props:l}}return{children:t.props.children,props:t.props}}const ve="_combobox_1x1gr_3",ye="_dropdown_1x1gr_27",je="_empty_1x1gr_30",we="_group_1x1gr_31",Se="_placeholder_1x1gr_32",Ce="_filter_1x1gr_40",Ee="_native_1x1gr_52",Ne="_option_1x1gr_62",Ve="_options_1x1gr_84",Le="_panel_1x1gr_108",Re="_selected_1x1gr_132",$e="_text_1x1gr_136",Be="_trigger_1x1gr_145",Ie="_minimal_1x1gr_164",qe="_inline_1x1gr_219",De="_label_1x1gr_251",o={combobox:ve,"combobox-input":"_combobox-input_1x1gr_12",dropdown:ye,empty:je,group:we,placeholder:Se,filter:Ce,native:Ee,option:Ne,options:Ve,panel:Le,selected:Re,text:$e,trigger:Be,minimal:Ie,inline:qe,label:De,"inline-field":"_inline-field_1x1gr_257"};function Y(t,i){return{"--icon-svg":ce.iconSVG(t).replace("currentColor",i)}}const Pe=({children:t,className:i,combobox:r=!1,createOption:l,emptyLabel:n="No matches found",label:c,renderOption:f,searchPlaceholder:R="Filter",selectedItems:Z,variant:_="default",...ee})=>{const $=be(t),{defaultValue:te,onChange:B,value:I,...ne}=$.props,v=V.sanitizeSelectProps(ne),M=a.useRef(null),Q=a.useRef(null),y=a.useId(),z=a.useRef(null),m=a.useRef(null),h=W($.children),b=I!=null,q=he(h,I,te),[D,P]=a.useState(()=>q),[u,p]=a.useState(!1),[j,w]=a.useState(""),S=b?String(I):D,O={default:V.resolveColor("--colors-semantic-content-secondary"),white:V.resolveColor("--color-white","white")},T=_==="minimal"?O.white:O.default,C=_e(h,S),re=Y("chevron",T),le=Y("search",T),A=ge(h,j),x=j.trim(),E=!!(r&&l&&x&&l.isValid(x)),se=c&&_==="inline"?X.formatInlineLabel(c):c,G=e=>e?(f==null?void 0:f({groupLabel:e.groupLabel,isSelected:e.value===S,label:e.label,text:e.text,value:e.value}))??e.label:"Select an option";a.useEffect(()=>{!b&&!h.some(e=>e.value===D)&&P(q)},[q,D,b,h]),a.useEffect(()=>{var e;if(!u){w("");return}(e=m.current)==null||e.focus()},[u]),a.useEffect(()=>{if(!u)return;const e=d=>{var g;(g=Q.current)!=null&&g.contains(d.target)||p(!1)};return document.addEventListener("mousedown",e),()=>{document.removeEventListener("mousedown",e)}},[u]);const oe=e=>{b||P(e.target.value),B==null||B(e)},k=()=>{var e;p(!1),r||(e=M.current)==null||e.focus()},K=()=>{var e;w(""),p(!0),(e=m.current)==null||e.focus()},H=()=>{!l||!E||(l.onCreate(x),K())},ie=e=>{var U;b||P(e);const d=z.current;if(!d){k();return}const g=(U=Object.getOwnPropertyDescriptor(HTMLSelectElement.prototype,"value"))==null?void 0:U.set;g==null||g.call(d,e),d.dispatchEvent(new Event("change",{bubbles:!0})),r?K():k()},ae=e=>{e.key==="Escape"&&k(),e.key==="Enter"&&e.target===m.current&&E&&(e.preventDefault(),H())},J=s.jsxs("div",{className:N.t(o.dropdown,_==="inline"&&o.inline,_==="minimal"&&o.minimal,i),onKeyDown:ae,ref:Q,...ee,children:[s.jsx("select",{...v,"aria-hidden":"true",className:o.native,onChange:oe,ref:z,tabIndex:-1,value:S,children:$.children}),r?s.jsxs("div",{className:o.combobox,onClick:()=>{var e;return(e=m.current)==null?void 0:e.focus()},children:[Z,s.jsx("input",{"aria-autocomplete":"list","aria-expanded":u,"aria-label":v["aria-label"]??c??R,className:o["combobox-input"],disabled:v.disabled,onChange:e=>{w(e.target.value),p(!0)},onClick:()=>p(!0),onFocus:()=>p(!0),placeholder:R||void 0,ref:m,role:"combobox",type:"text",value:j})]}):s.jsx(F.Button,{"aria-expanded":u,"aria-haspopup":"dialog","aria-labelledby":c?`${y} ${y}-value`:void 0,className:N.t(o.trigger,(C==null?void 0:C.isPlaceholder)&&o.placeholder),"data-open":u?"true":void 0,disabled:v.disabled,onClick:()=>p(e=>!e),ref:M,style:re,variant:"tertiary",children:s.jsx("span",{className:o.text,id:`${y}-value`,children:G(C)})}),u&&s.jsxs("div",{className:o.panel,children:[!r&&s.jsx(X.Input,{"aria-label":"Filter",className:o.filter,icon:"search",onChange:e=>w(e.target.value),placeholder:R,ref:m,style:le,type:"search",value:j}),s.jsxs(ue.List,{"aria-label":"Dropdown",className:o.options,children:[A.map(e=>{const d=e.value===S;return s.jsx("li",{"data-component":"dropdown",children:s.jsxs(F.Button,{"aria-label":d?`${e.text}, selected`:e.text,className:N.t(o.option,d&&o.selected),disabled:e.disabled,onClick:()=>ie(e.value),variant:"tertiary",children:[s.jsx("span",{className:o.text,children:G(e)}),e.groupLabel&&s.jsx("small",{className:o.group,children:e.groupLabel})]})},`${e.groupLabel??"root"}-${e.value}`)}),E&&l&&s.jsx("li",{children:s.jsx(F.Button,{"aria-label":L(l.render(x))||x,className:o.option,onClick:H,variant:"tertiary",children:s.jsx("span",{className:o.text,children:l.render(x)})})}),A.length===0&&!E&&s.jsx("li",{className:o.empty,children:n})]})]})]});return c?s.jsxs("div",{className:N.t(o.label,_==="inline"&&o["inline-field"]),"data-component":"dropdown",children:[s.jsx("span",{id:y,children:se}),J]}):J};exports.Dropdown=Pe;
2
2
  //# sourceMappingURL=index.cjs.map