@solibo/solibo-ui 1.0.4 → 1.0.6

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 (105) 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/index17.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/index39.css +1 -1
  15. package/dist/assets/index4.css +1 -1
  16. package/dist/assets/index41.css +1 -1
  17. package/dist/assets/index42.css +1 -1
  18. package/dist/assets/index47.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.js +10 -10
  28. package/dist/components/card/index.cjs +1 -1
  29. package/dist/components/card/index.cjs.map +1 -1
  30. package/dist/components/card/index.js +44 -34
  31. package/dist/components/card/index.js.map +1 -1
  32. package/dist/components/checkbox/index.cjs +1 -1
  33. package/dist/components/checkbox/index.js +1 -1
  34. package/dist/components/dropdown/index.cjs +1 -1
  35. package/dist/components/dropdown/index.js +101 -101
  36. package/dist/components/editor/index.cjs +21 -21
  37. package/dist/components/editor/index.cjs.map +1 -1
  38. package/dist/components/editor/index.js +1646 -1636
  39. package/dist/components/editor/index.js.map +1 -1
  40. package/dist/components/header/index.cjs +1 -1
  41. package/dist/components/header/index.js +10 -10
  42. package/dist/components/icon/index.cjs +1 -1
  43. package/dist/components/icon/index.js +1 -1
  44. package/dist/components/input/index.cjs +1 -1
  45. package/dist/components/input/index.js +2 -2
  46. package/dist/components/menu/index.cjs +1 -1
  47. package/dist/components/menu/index.cjs.map +1 -1
  48. package/dist/components/menu/index.js +14 -13
  49. package/dist/components/menu/index.js.map +1 -1
  50. package/dist/components/message/index.cjs +1 -1
  51. package/dist/components/message/index.cjs.map +1 -1
  52. package/dist/components/message/index.js +22 -21
  53. package/dist/components/message/index.js.map +1 -1
  54. package/dist/components/messages/index.cjs +1 -1
  55. package/dist/components/messages/index.cjs.map +1 -1
  56. package/dist/components/messages/index.js +34 -31
  57. package/dist/components/messages/index.js.map +1 -1
  58. package/dist/components/nav/index.cjs +1 -1
  59. package/dist/components/nav/index.cjs.map +1 -1
  60. package/dist/components/nav/index.js +34 -29
  61. package/dist/components/nav/index.js.map +1 -1
  62. package/dist/components/object/index.cjs +1 -1
  63. package/dist/components/object/index.js +1 -1
  64. package/dist/components/popover/index.cjs +1 -1
  65. package/dist/components/popover/index.cjs.map +1 -1
  66. package/dist/components/popover/index.js +83 -39
  67. package/dist/components/popover/index.js.map +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.js +37 -37
  72. package/dist/components/select/index.cjs +1 -1
  73. package/dist/components/select/index.js +2 -2
  74. package/dist/components/sortable/index.cjs +1 -1
  75. package/dist/components/sortable/index.js +1 -1
  76. package/dist/components/table/index.cjs +1 -1
  77. package/dist/components/table/index.js +1 -1
  78. package/dist/components/textarea/index.cjs +1 -1
  79. package/dist/components/textarea/index.js +1 -1
  80. package/dist/components/toast/index.cjs +1 -1
  81. package/dist/components/toast/index.js +1 -1
  82. package/dist/components/toasts/index.cjs +1 -1
  83. package/dist/components/toasts/index.js +1 -1
  84. package/dist/components/toggle/index.cjs +1 -1
  85. package/dist/components/toggle/index.js +1 -1
  86. package/dist/components/tooltip/index.cjs +1 -1
  87. package/dist/components/tooltip/index.js +6 -6
  88. package/dist/{icons-DYCSlAoX.cjs → icons-BoBeAmLe.cjs} +2 -2
  89. package/dist/{icons-DYCSlAoX.cjs.map → icons-BoBeAmLe.cjs.map} +1 -1
  90. package/dist/{icons-CKzd_L4D.js → icons-Dhj9mAkR.js} +9 -2
  91. package/dist/{icons-CKzd_L4D.js.map → icons-Dhj9mAkR.js.map} +1 -1
  92. package/dist/{index-N4IMha5Q.cjs → index-Ct0mJ-KK.cjs} +2 -2
  93. package/dist/{index-N4IMha5Q.cjs.map → index-Ct0mJ-KK.cjs.map} +1 -1
  94. package/dist/{index-DFXqYJat.js → index-D4LZQ-JF.js} +2 -2
  95. package/dist/{index-DFXqYJat.js.map → index-D4LZQ-JF.js.map} +1 -1
  96. package/dist/{index-CP5A_BGJ.cjs → index-D9Hq7ewF.cjs} +2 -2
  97. package/dist/{index-CP5A_BGJ.cjs.map → index-D9Hq7ewF.cjs.map} +1 -1
  98. package/dist/{index-B9xtLe2w.js → index-uQRsVtP-.js} +2 -2
  99. package/dist/{index-B9xtLe2w.js.map → index-uQRsVtP-.js.map} +1 -1
  100. package/dist/index.cjs +1 -1
  101. package/dist/index.d.ts +37 -11
  102. package/dist/index.js +39 -38
  103. package/dist/tokens.css +7 -2
  104. package/dist/tokens.json +105 -33
  105. package/package.json +1 -1
@@ -1,38 +1,43 @@
1
- import { jsx as _ } from "react/jsx-runtime";
2
- import { t as f } from "../../classix-DG18itHa.js";
3
- import { useState as m } from "react";
4
- import { i as u } from "../../icons-CKzd_L4D.js";
5
- import '../../assets/index13.css';const b = "_nav_1s9ne_3", v = "_horizontal_1s9ne_9", h = "_sidebar_1s9ne_19", w = "_tabs_1s9ne_60", z = "_pills_1s9ne_80", t = {
6
- nav: b,
1
+ import { jsx as i } from "react/jsx-runtime";
2
+ import { t as r } from "../../classix-DG18itHa.js";
3
+ import { useState as b } from "react";
4
+ import { i as f } from "../../icons-Dhj9mAkR.js";
5
+ import '../../assets/index12.css';const h = "_nav_mhwz8_3", u = "_label_mhwz8_9", v = "_horizontal_mhwz8_17", w = "_sidebar_mhwz8_27", z = "_tabs_mhwz8_73", N = "_pills_mhwz8_93", a = {
6
+ nav: h,
7
+ label: u,
7
8
  horizontal: v,
8
- sidebar: h,
9
- tabs: w,
10
- pills: z
9
+ sidebar: w,
10
+ tabs: z,
11
+ pills: N
11
12
  }, g = {
12
- default: t.default,
13
- pills: t.pills,
14
- sidebar: t.sidebar,
15
- tabs: t.tabs
16
- }, S = ({
17
- animation: o,
18
- children: i,
19
- className: r,
20
- horizontal: a = !1,
21
- variant: s = "default",
22
- ...l
13
+ default: a.default,
14
+ pills: a.pills,
15
+ sidebar: a.sidebar,
16
+ tabs: a.tabs
17
+ }, T = ({
18
+ className: n,
19
+ ...s
20
+ }) => /* @__PURE__ */ i("span", { className: r(n, a.label), ...s, "data-component": "navlabel" }), V = ({
21
+ animation: n,
22
+ children: s,
23
+ className: c,
24
+ horizontal: e = !1,
25
+ variant: o = "default",
26
+ ...m
23
27
  }) => {
24
- const [c, e] = m(!1), d = {
25
- "--icon-svg": u("chevron")
28
+ const [p, l] = b(!1), d = {
29
+ "--icon-svg": f("chevron")
26
30
  };
27
- return /* @__PURE__ */ _("nav", { className: f(r, a && t.horizontal, t.nav, g[s]), "data-animation": o, "data-open": c ? "true" : "false", "data-orientation": a ? "horizontal" : "vertical", onBlurCapture: (n) => {
28
- if (s !== "pills" || window.innerWidth > 960) return;
29
- const p = n.relatedTarget;
30
- n.currentTarget.contains(p) || e(!1);
31
+ return /* @__PURE__ */ i("nav", { className: r(c, e && a.horizontal, a.nav, g[o]), "data-animation": n, "data-open": p ? "true" : "false", "data-orientation": e ? "horizontal" : "vertical", onBlurCapture: (t) => {
32
+ if (o !== "pills" || window.innerWidth > 960) return;
33
+ const _ = t.relatedTarget;
34
+ t.currentTarget.contains(_) || l(!1);
31
35
  }, onClick: () => {
32
- s !== "pills" || window.innerWidth > 960 || e((n) => !n);
33
- }, style: d, ...l, "data-component": "nav", children: i });
36
+ o !== "pills" || window.innerWidth > 960 || l((t) => !t);
37
+ }, style: d, ...m, "data-component": "nav", children: s });
34
38
  };
35
39
  export {
36
- S as Nav
40
+ V as Nav,
41
+ T as NavLabel
37
42
  };
38
43
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/components/nav/index.tsx"],"sourcesContent":["import cx from 'classix';\nimport { useState } from 'react';\n\nimport { iconSVG } from '@/components/icon/icons.ts';\n\nimport styles from './styles.module.css';\n\nconst variants = {\n default: styles.default,\n pills: styles.pills,\n sidebar: styles.sidebar,\n tabs: styles.tabs,\n};\n\nexport type NavProps = React.HTMLAttributes<HTMLElement> & {\n animation?: string;\n children?: React.ReactNode;\n className?: string;\n horizontal?: boolean;\n variant?: keyof typeof variants;\n};\n\nexport const Nav = ({\n animation,\n children,\n className,\n horizontal = false,\n variant = 'default',\n ...props\n}: NavProps) => {\n const [open, setOpen] = useState(false);\n\n type withVars = React.CSSProperties & {\n '--icon-svg'?: string;\n };\n const withVars: withVars = {\n '--icon-svg': iconSVG('chevron'),\n };\n\n return (\n <nav\n className={cx(className, horizontal && styles.horizontal, styles.nav, variants[variant])}\n data-animation={animation}\n data-open={open ? 'true' : 'false'}\n data-orientation={horizontal ? 'horizontal' : 'vertical'}\n onBlurCapture={(e) => {\n if (variant !== 'pills' || window.innerWidth > 960) return;\n\n const next = e.relatedTarget as Node | null;\n if (!e.currentTarget.contains(next)) {\n setOpen(false);\n }\n }}\n onClick={() => {\n if (variant !== 'pills' || window.innerWidth > 960) return;\n\n setOpen((v) => !v);\n }}\n style={withVars}\n {...props}\n >\n {children}\n </nav>\n );\n};\n"],"names":["variants","default","styles","pills","sidebar","tabs","Nav","animation","children","className","horizontal","variant","props","open","setOpen","useState","withVars","iconSVG","jsx","cx","nav","e","window","innerWidth","next","relatedTarget","currentTarget","contains","v"],"mappings":";;;;;;;;;;GAOMA,IAAW;AAAA,EACfC,SAASC,EAAOD;AAAAA,EAChBE,OAAOD,EAAOC;AAAAA,EACdC,SAASF,EAAOE;AAAAA,EAChBC,MAAMH,EAAOG;AACf,GAUaC,IAAMA,CAAC;AAAA,EAClBC,WAAAA;AAAAA,EACAC,UAAAA;AAAAA,EACAC,WAAAA;AAAAA,EACAC,YAAAA,IAAa;AAAA,EACbC,SAAAA,IAAU;AAAA,EACV,GAAGC;AACK,MAAM;AACd,QAAM,CAACC,GAAMC,CAAO,IAAIC,EAAS,EAAK,GAKhCC,IAAqB;AAAA,IACzB,cAAcC,EAAQ,SAAS;AAAA,EAAA;AAGjC,SACE,gBAAAC,EAAC,OAAA,EACC,WAAWC,EAAGV,GAAWC,KAAcR,EAAOQ,YAAYR,EAAOkB,KAAKpB,EAASW,CAAO,CAAC,GACvF,kBAAgBJ,GAChB,aAAWM,IAAO,SAAS,SAC3B,oBAAkBH,IAAa,eAAe,YAC9C,eAAgBW,CAAAA,MAAM;AACpB,QAAIV,MAAY,WAAWW,OAAOC,aAAa,IAAK;AAEpD,UAAMC,IAAOH,EAAEI;AACf,IAAKJ,EAAEK,cAAcC,SAASH,CAAI,KAChCV,EAAQ,EAAK;AAAA,EAEjB,GACA,SAAS,MAAM;AACb,IAAIH,MAAY,WAAWW,OAAOC,aAAa,OAE/CT,EAASc,CAAAA,MAAM,CAACA,CAAC;AAAA,EACnB,GACA,OAAOZ,GACP,GAAIJ,GAAM,kBAAA,OAETJ,UAAAA,GACH;AAEJ;"}
1
+ {"version":3,"file":"index.js","sources":["../../../src/components/nav/index.tsx"],"sourcesContent":["import cx from 'classix';\nimport { useState } from 'react';\n\nimport { iconSVG } from '@/components/icon/icons.ts';\n\nimport styles from './styles.module.css';\n\nconst variants = {\n default: styles.default,\n pills: styles.pills,\n sidebar: styles.sidebar,\n tabs: styles.tabs,\n};\n\nexport type NavProps = React.HTMLAttributes<HTMLElement> & {\n animation?: string;\n children?: React.ReactNode;\n className?: string;\n horizontal?: boolean;\n variant?: keyof typeof variants;\n};\n\nexport type NavLabelProps = React.HTMLAttributes<HTMLSpanElement>;\n\nexport const NavLabel = ({ className, ...props }: NavLabelProps) => (\n <span\n className={cx(className, styles.label)}\n {...props}\n />\n);\n\nexport const Nav = ({\n animation,\n children,\n className,\n horizontal = false,\n variant = 'default',\n ...props\n}: NavProps) => {\n const [open, setOpen] = useState(false);\n\n type withVars = React.CSSProperties & {\n '--icon-svg'?: string;\n };\n const withVars: withVars = {\n '--icon-svg': iconSVG('chevron'),\n };\n\n return (\n <nav\n className={cx(className, horizontal && styles.horizontal, styles.nav, variants[variant])}\n data-animation={animation}\n data-open={open ? 'true' : 'false'}\n data-orientation={horizontal ? 'horizontal' : 'vertical'}\n onBlurCapture={(e) => {\n if (variant !== 'pills' || window.innerWidth > 960) return;\n\n const next = e.relatedTarget as Node | null;\n if (!e.currentTarget.contains(next)) {\n setOpen(false);\n }\n }}\n onClick={() => {\n if (variant !== 'pills' || window.innerWidth > 960) return;\n\n setOpen((v) => !v);\n }}\n style={withVars}\n {...props}\n >\n {children}\n </nav>\n );\n};\n"],"names":["variants","default","styles","pills","sidebar","tabs","NavLabel","className","props","jsx","cx","label","Nav","animation","children","horizontal","variant","open","setOpen","useState","withVars","iconSVG","nav","e","window","innerWidth","next","relatedTarget","currentTarget","contains","v"],"mappings":";;;;;;;;;;;GAOMA,IAAW;AAAA,EACfC,SAASC,EAAOD;AAAAA,EAChBE,OAAOD,EAAOC;AAAAA,EACdC,SAASF,EAAOE;AAAAA,EAChBC,MAAMH,EAAOG;AACf,GAYaC,IAAWA,CAAC;AAAA,EAAEC,WAAAA;AAAAA,EAAW,GAAGC;AAAqB,MAC5D,gBAAAC,EAAC,QAAA,EACC,WAAWC,EAAGH,GAAWL,EAAOS,KAAK,GACrC,GAAIH,GAAM,kBAAA,WAAA,CAAA,GAIDI,IAAMA,CAAC;AAAA,EAClBC,WAAAA;AAAAA,EACAC,UAAAA;AAAAA,EACAP,WAAAA;AAAAA,EACAQ,YAAAA,IAAa;AAAA,EACbC,SAAAA,IAAU;AAAA,EACV,GAAGR;AACK,MAAM;AACd,QAAM,CAACS,GAAMC,CAAO,IAAIC,EAAS,EAAK,GAKhCC,IAAqB;AAAA,IACzB,cAAcC,EAAQ,SAAS;AAAA,EAAA;AAGjC,SACE,gBAAAZ,EAAC,OAAA,EACC,WAAWC,EAAGH,GAAWQ,KAAcb,EAAOa,YAAYb,EAAOoB,KAAKtB,EAASgB,CAAO,CAAC,GACvF,kBAAgBH,GAChB,aAAWI,IAAO,SAAS,SAC3B,oBAAkBF,IAAa,eAAe,YAC9C,eAAgBQ,CAAAA,MAAM;AACpB,QAAIP,MAAY,WAAWQ,OAAOC,aAAa,IAAK;AAEpD,UAAMC,IAAOH,EAAEI;AACf,IAAKJ,EAAEK,cAAcC,SAASH,CAAI,KAChCR,EAAQ,EAAK;AAAA,EAEjB,GACA,SAAS,MAAM;AACb,IAAIF,MAAY,WAAWQ,OAAOC,aAAa,OAE/CP,EAASY,CAAAA,MAAM,CAACA,CAAC;AAAA,EACnB,GACA,OAAOV,GACP,GAAIZ,GAAM,kBAAA,OAETM,UAAAA,GACH;AAEJ;"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require('../../assets/index12.css');const e=require("react/jsx-runtime"),n="_object_xxgm1_1",s={object:n},a=({accessibleLabel:c,url:t,...o})=>e.jsx("object",{"aria-label":c,className:s.object,data:t,type:"application/pdf",...o,"data-component":"objectcomponent",children:t&&e.jsxs(e.Fragment,{children:["We cannot show this file. You can try accessing it directly:",e.jsx("br",{}),e.jsx("a",{href:t,children:t})]})});exports.Object=a;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require('../../assets/index11.css');const e=require("react/jsx-runtime"),n="_object_xxgm1_1",s={object:n},a=({accessibleLabel:c,url:t,...o})=>e.jsx("object",{"aria-label":c,className:s.object,data:t,type:"application/pdf",...o,"data-component":"objectcomponent",children:t&&e.jsxs(e.Fragment,{children:["We cannot show this file. You can try accessing it directly:",e.jsx("br",{}),e.jsx("a",{href:t,children:t})]})});exports.Object=a;
2
2
  //# sourceMappingURL=index.cjs.map
@@ -1,5 +1,5 @@
1
1
  import { jsx as e, jsxs as n, Fragment as a } from "react/jsx-runtime";
2
- import '../../assets/index12.css';const s = "_object_xxgm1_1", i = {
2
+ import '../../assets/index11.css';const s = "_object_xxgm1_1", i = {
3
3
  object: s
4
4
  }, b = ({
5
5
  accessibleLabel: c,
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require('../../assets/index17.css');const a=require("react/jsx-runtime"),g=require("../../classix-5H4IWnMA.cjs"),o=require("react"),R=require("../button/index.cjs"),x="_popover_ttn4t_1",P="_left_ttn4t_23",k="_right_ttn4t_28",F="_trigger_ttn4t_33",s={popover:x,"popover-panel":"_popover-panel_ttn4t_6",left:P,right:k,trigger:F},b=({children:i,position:_="left",triggerAccessibleLabel:m,triggerAriaHasPopup:y,triggerButtonContent:w})=>{const u=o.useRef(null),l=o.useRef(void 0),p=o.useId(),f=o.useRef(null),[t,d]=o.useState(!1),c=({initialFocus:e}={})=>{l.current=e,d(!0)},n=o.useCallback(({restoreFocus:e=!0}={})=>{var r;d(!1),e&&((r=f.current)==null||r.focus())},[]),h=e=>{t&&e.key==="Escape"&&n()},D=e=>{if(!t){if(e.key==="ArrowDown"){e.preventDefault(),c({initialFocus:"first"});return}e.key==="ArrowUp"&&(e.preventDefault(),c({initialFocus:"last"}))}};return o.useEffect(()=>{if(!t)return;const e=r=>{var v;(v=u.current)!=null&&v.contains(r.target)||n({restoreFocus:!1})};return document.addEventListener("mousedown",e),()=>{document.removeEventListener("mousedown",e)}},[n,t]),a.jsxs("div",{className:s.popover,onKeyDown:h,onClick:e=>e.stopPropagation(),ref:u,"data-component":"popover",children:[a.jsx(R.Button,{"aria-controls":t?p:void 0,"aria-expanded":t,"aria-haspopup":y,"aria-label":m,className:g.t(s.trigger),onKeyDown:D,onClick:()=>t?n({restoreFocus:!1}):c(),ref:f,variant:"secondary",children:w}),t&&a.jsx("div",{className:g.t(s["popover-panel"],s[_]),id:p,children:typeof i=="function"?i({close:n,initialFocus:l.current,isOpen:t}):i})]})};exports.Popover=b;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require('../../assets/index17.css');const w=require("react/jsx-runtime"),C=require("../../classix-5H4IWnMA.cjs"),o=require("react"),K=require("react-dom"),O=require("../button/index.cjs"),H="_popover_1szho_1",N="_inline_1szho_6",W="_below_1szho_38",M="_above_1szho_43",U="_left_1szho_53",X="_right_1szho_58",Y="_trigger_1szho_63",s={popover:H,inline:N,"popover-panel":"_popover-panel_1szho_21",below:W,above:M,"inline-panel":"_inline-panel_1szho_48",left:U,right:X,trigger:Y,"inline-trigger":"_inline-trigger_1szho_77"},G=({children:m,inline:n=!1,position:p="left",triggerAccessibleLabel:L,triggerAriaHasPopup:F,triggerButtonContent:z})=>{var T;const P=o.useRef(null),R=o.useRef(void 0),b=o.useRef(null),D=o.useId(),l=o.useRef(null),[t,x]=o.useState(!1),[d,k]=o.useState(!1),g=p==="auto"?"right":p,[v,E]=o.useState(g),h=({initialFocus:e}={})=>{R.current=e,k(!1),E(g),x(!0)},c=o.useCallback(({restoreFocus:e=!0}={})=>{var a;x(!1),e&&((a=l.current)==null||a.focus())},[]),q=e=>{t&&e.key==="Escape"&&c()},A=e=>{if(!t){if(n&&(e.key==="Enter"||e.key===" ")){e.preventDefault(),h();return}if(e.key==="ArrowDown"){e.preventDefault(),h({initialFocus:"first"});return}e.key==="ArrowUp"&&(e.preventDefault(),h({initialFocus:"last"}))}};o.useEffect(()=>{if(!t)return;const e=a=>{var r,_;const f=a.target;(r=P.current)!=null&&r.contains(f)||(_=b.current)!=null&&_.contains(f)||c({restoreFocus:!1})};return document.addEventListener("mousedown",e),()=>{document.removeEventListener("mousedown",e)}},[c,t]);const i=o.useCallback(()=>{const e=b.current,a=l.current;if(!e||!a)return;const f=e.getBoundingClientRect(),r=a.getBoundingClientRect(),_=r.top,j=window.innerHeight-r.bottom;k(f.height>j&&_>j),E(p==="auto"&&f.width>window.innerWidth-r.left&&r.right>window.innerWidth-r.left?"left":g)},[p,g]);o.useLayoutEffect(()=>{if(t)return i(),window.addEventListener("resize",i),window.addEventListener("scroll",i,!0),()=>{window.removeEventListener("resize",i),window.removeEventListener("scroll",i,!0)}},[t,i]);const S=e=>{n&&e.preventDefault(),e.stopPropagation(),t?c({restoreFocus:!1}):h()},B={"aria-controls":t?D:void 0,"aria-expanded":t,"aria-haspopup":F,"aria-label":L,className:n?s["inline-trigger"]:s.trigger,onClick:S,onKeyDown:A},u=n?(T=l.current)==null?void 0:T.getBoundingClientRect():void 0,I=[v==="left"?"translateX(-100%)":"",d?"translateY(calc(-100% - var(--shape-spacing-2xs)))":""].filter(Boolean).join(" "),y=t?w.jsx("div",{className:C.t(s["popover-panel"],s[d?"above":"below"],n&&s["inline-panel"],!n&&s[v]),"data-horizontal-placement":v,"data-placement":d?"above":"below",id:D,ref:b,style:u?{left:v==="left"?u.right:u.left,position:"fixed",top:d?u.top:u.bottom,transform:I||void 0}:void 0,children:typeof m=="function"?m({close:c,initialFocus:R.current,isOpen:t}):m}):null;return w.jsxs("div",{className:C.t(s.popover,n&&s.inline),"data-open":t,onKeyDown:q,onClick:e=>{n&&e.preventDefault(),e.stopPropagation()},ref:P,"data-component":"popover",children:[n?w.jsx("span",{...B,ref:l,role:"button",tabIndex:0,children:z}):w.jsx(O.Button,{...B,ref:l,variant:"secondary",children:z}),n&&y&&typeof document<"u"?K.createPortal(y,document.body):y]})};exports.Popover=G;
2
2
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../../../src/components/popover/index.tsx"],"sourcesContent":["import cx from 'classix';\nimport {\n type AriaAttributes,\n type ReactNode,\n useCallback,\n useEffect,\n useId,\n useRef,\n useState,\n} from 'react';\n\nimport { Button } from '@/components/button';\n\nimport styles from './styles.module.css';\n\nexport type PopoverCloseOptions = {\n restoreFocus?: boolean;\n};\n\nexport type PopoverInitialFocus = 'first' | 'last';\n\nexport type PopoverRenderProps = {\n close: (options?: PopoverCloseOptions) => void;\n initialFocus?: PopoverInitialFocus;\n isOpen: boolean;\n};\n\ntype PopoverOpenOptions = {\n initialFocus?: PopoverInitialFocus;\n};\n\nexport type PopoverProps = {\n children: ReactNode | ((props: PopoverRenderProps) => ReactNode);\n position?: 'left' | 'right';\n triggerAccessibleLabel?: string;\n triggerAriaHasPopup?: AriaAttributes['aria-haspopup'];\n triggerButtonContent: ReactNode;\n};\n\nexport const Popover = ({\n children,\n position = 'left',\n triggerAccessibleLabel,\n triggerAriaHasPopup,\n triggerButtonContent,\n}: PopoverProps) => {\n const containerRef = useRef<HTMLDivElement>(null);\n const initialFocusRef = useRef<PopoverInitialFocus | undefined>(undefined);\n const panelId = useId();\n const triggerRef = useRef<HTMLButtonElement>(null);\n const [isOpen, setIsOpen] = useState(false);\n\n const openPopover = ({ initialFocus }: PopoverOpenOptions = {}) => {\n initialFocusRef.current = initialFocus;\n setIsOpen(true);\n };\n\n const closePopover = useCallback(({ restoreFocus = true }: PopoverCloseOptions = {}) => {\n setIsOpen(false);\n\n if (restoreFocus) {\n triggerRef.current?.focus();\n }\n }, []);\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (isOpen && event.key === 'Escape') {\n closePopover();\n }\n };\n\n const handleTriggerKeyDown = (event: React.KeyboardEvent<HTMLButtonElement>) => {\n if (isOpen) {\n return;\n }\n\n if (event.key === 'ArrowDown') {\n event.preventDefault();\n openPopover({ initialFocus: 'first' });\n return;\n }\n\n if (event.key === 'ArrowUp') {\n event.preventDefault();\n openPopover({ initialFocus: 'last' });\n }\n };\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 closePopover({ restoreFocus: false });\n }\n };\n\n document.addEventListener('mousedown', handlePointerDown);\n\n return () => {\n document.removeEventListener('mousedown', handlePointerDown);\n };\n }, [closePopover, isOpen]);\n\n return (\n <div\n className={styles.popover}\n onKeyDown={handleKeyDown}\n onClick={(e) => e.stopPropagation()}\n ref={containerRef}\n >\n <Button\n aria-controls={isOpen ? panelId : undefined}\n aria-expanded={isOpen}\n aria-haspopup={triggerAriaHasPopup}\n aria-label={triggerAccessibleLabel}\n className={cx(styles.trigger)}\n onKeyDown={handleTriggerKeyDown}\n onClick={() => (isOpen ? closePopover({ restoreFocus: false }) : openPopover())}\n ref={triggerRef}\n variant='secondary'\n >\n {triggerButtonContent}\n </Button>\n {isOpen && (\n <div\n className={cx(styles['popover-panel'], styles[position])}\n id={panelId}\n >\n {typeof children === 'function'\n ? children({ close: closePopover, initialFocus: initialFocusRef.current, isOpen })\n : children}\n </div>\n )}\n </div>\n );\n};\n"],"names":["Popover","children","position","triggerAccessibleLabel","triggerAriaHasPopup","triggerButtonContent","containerRef","useRef","initialFocusRef","undefined","panelId","useId","triggerRef","isOpen","setIsOpen","useState","openPopover","initialFocus","current","closePopover","useCallback","restoreFocus","focus","handleKeyDown","event","key","handleTriggerKeyDown","preventDefault","useEffect","handlePointerDown","contains","target","document","addEventListener","removeEventListener","jsxs","styles","popover","e","stopPropagation","jsx","Button","cx","trigger","close"],"mappings":"mXAuCaA,EAAUA,CAAC,CACtBC,SAAAA,EACAC,SAAAA,EAAW,OACXC,uBAAAA,EACAC,oBAAAA,EACAC,qBAAAA,CACY,IAAM,CAClB,MAAMC,EAAeC,EAAAA,OAAuB,IAAI,EAC1CC,EAAkBD,EAAAA,OAAwCE,MAAS,EACnEC,EAAUC,EAAAA,MAAAA,EACVC,EAAaL,EAAAA,OAA0B,IAAI,EAC3C,CAACM,EAAQC,CAAS,EAAIC,EAAAA,SAAS,EAAK,EAEpCC,EAAcA,CAAC,CAAEC,aAAAA,CAAAA,EAAqC,KAAO,CACjET,EAAgBU,QAAUD,EAC1BH,EAAU,EAAI,CAChB,EAEMK,EAAeC,EAAAA,YAAY,CAAC,CAAEC,aAAAA,EAAe,EAAA,EAA8B,KAAO,OACtFP,EAAU,EAAK,EAEXO,KACFT,EAAAA,EAAWM,UAAXN,MAAAA,EAAoBU,QAExB,EAAG,CAAA,CAAE,EAECC,EAAiBC,GAA+C,CAChEX,GAAUW,EAAMC,MAAQ,UAC1BN,EAAAA,CAEJ,EAEMO,EAAwBF,GAAkD,CAC9E,GAAIX,CAAAA,EAIJ,IAAIW,EAAMC,MAAQ,YAAa,CAC7BD,EAAMG,eAAAA,EACNX,EAAY,CAAEC,aAAc,OAAA,CAAS,EACrC,MACF,CAEIO,EAAMC,MAAQ,YAChBD,EAAMG,eAAAA,EACNX,EAAY,CAAEC,aAAc,MAAA,CAAQ,GAExC,EAEAW,OAAAA,EAAAA,UAAU,IAAM,CACd,GAAI,CAACf,EACH,OAGF,MAAMgB,EAAqBL,GAAsB,QAC1ClB,EAAAA,EAAaY,UAAbZ,MAAAA,EAAsBwB,SAASN,EAAMO,SACxCZ,EAAa,CAAEE,aAAc,EAAA,CAAO,CAExC,EAEAW,gBAASC,iBAAiB,YAAaJ,CAAiB,EAEjD,IAAM,CACXG,SAASE,oBAAoB,YAAaL,CAAiB,CAC7D,CACF,EAAG,CAACV,EAAcN,CAAM,CAAC,EAGvBsB,EAAAA,KAAC,MAAA,CACC,UAAWC,EAAOC,QAClB,UAAWd,EACX,QAAUe,GAAMA,EAAEC,kBAClB,IAAKjC,EAAa,iBAAA,UAElB,SAAA,CAAAkC,EAAAA,IAACC,EAAAA,OAAA,CACC,gBAAe5B,EAASH,EAAUD,OAClC,gBAAeI,EACf,gBAAeT,EACf,aAAYD,EACZ,UAAWuC,EAAAA,EAAGN,EAAOO,OAAO,EAC5B,UAAWjB,EACX,QAAS,IAAOb,EAASM,EAAa,CAAEE,aAAc,EAAA,CAAO,EAAIL,EAAAA,EACjE,IAAKJ,EACL,QAAQ,YAEPP,SAAAA,EACH,EACCQ,GACC2B,EAAAA,IAAC,MAAA,CACC,UAAWE,IAAGN,EAAO,eAAe,EAAGA,EAAOlC,CAAQ,CAAC,EACvD,GAAIQ,EAEH,SAAA,OAAOT,GAAa,WACjBA,EAAS,CAAE2C,MAAOzB,EAAcF,aAAcT,EAAgBU,QAASL,OAAAA,CAAAA,CAAQ,EAC/EZ,CAAAA,CACN,CAAA,EAEJ,CAEJ"}
1
+ {"version":3,"file":"index.cjs","sources":["../../../src/components/popover/index.tsx"],"sourcesContent":["import cx from 'classix';\nimport {\n type AriaAttributes,\n type ReactNode,\n useCallback,\n useEffect,\n useId,\n useLayoutEffect,\n useRef,\n useState,\n} from 'react';\nimport { createPortal } from 'react-dom';\n\nimport { Button } from '@/components/button';\n\nimport styles from './styles.module.css';\n\nexport type PopoverCloseOptions = {\n restoreFocus?: boolean;\n};\n\nexport type PopoverInitialFocus = 'first' | 'last';\n\nexport type PopoverRenderProps = {\n close: (options?: PopoverCloseOptions) => void;\n initialFocus?: PopoverInitialFocus;\n isOpen: boolean;\n};\n\ntype PopoverOpenOptions = {\n initialFocus?: PopoverInitialFocus;\n};\n\nexport type PopoverProps = {\n children: ReactNode | ((props: PopoverRenderProps) => ReactNode);\n inline?: boolean;\n position?: 'auto' | 'left' | 'right';\n triggerAccessibleLabel?: string;\n triggerAriaHasPopup?: AriaAttributes['aria-haspopup'];\n triggerButtonContent: ReactNode;\n};\n\nexport const Popover = ({\n children,\n inline = false,\n position = 'left',\n triggerAccessibleLabel,\n triggerAriaHasPopup,\n triggerButtonContent,\n}: PopoverProps) => {\n const containerRef = useRef<HTMLDivElement>(null);\n const initialFocusRef = useRef<PopoverInitialFocus | undefined>(undefined);\n const panelRef = useRef<HTMLDivElement>(null);\n const panelId = useId();\n const triggerRef = useRef<HTMLButtonElement | HTMLSpanElement>(null);\n const [isOpen, setIsOpen] = useState(false);\n const [opensAbove, setOpensAbove] = useState(false);\n const preferredHorizontalPlacement = position === 'auto' ? 'right' : position;\n const [horizontalPlacement, setHorizontalPlacement] = useState<'left' | 'right'>(\n preferredHorizontalPlacement\n );\n\n const openPopover = ({ initialFocus }: PopoverOpenOptions = {}) => {\n initialFocusRef.current = initialFocus;\n setOpensAbove(false);\n setHorizontalPlacement(preferredHorizontalPlacement);\n setIsOpen(true);\n };\n\n const closePopover = useCallback(({ restoreFocus = true }: PopoverCloseOptions = {}) => {\n setIsOpen(false);\n\n if (restoreFocus) {\n triggerRef.current?.focus();\n }\n }, []);\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (isOpen && event.key === 'Escape') {\n closePopover();\n }\n };\n\n const handleTriggerKeyDown = (event: React.KeyboardEvent<HTMLElement>) => {\n if (isOpen) {\n return;\n }\n\n if (inline && (event.key === 'Enter' || event.key === ' ')) {\n event.preventDefault();\n openPopover();\n return;\n }\n\n if (event.key === 'ArrowDown') {\n event.preventDefault();\n openPopover({ initialFocus: 'first' });\n return;\n }\n\n if (event.key === 'ArrowUp') {\n event.preventDefault();\n openPopover({ initialFocus: 'last' });\n }\n };\n\n useEffect(() => {\n if (!isOpen) {\n return;\n }\n\n const handlePointerDown = (event: MouseEvent) => {\n const target = event.target as Node;\n if (containerRef.current?.contains(target) || panelRef.current?.contains(target)) return;\n\n closePopover({ restoreFocus: false });\n };\n\n document.addEventListener('mousedown', handlePointerDown);\n\n return () => {\n document.removeEventListener('mousedown', handlePointerDown);\n };\n }, [closePopover, isOpen]);\n\n const updatePosition = useCallback(() => {\n const panel = panelRef.current;\n const trigger = triggerRef.current;\n if (!panel || !trigger) return;\n\n const panelBounds = panel.getBoundingClientRect();\n const triggerBounds = trigger.getBoundingClientRect();\n const spaceAbove = triggerBounds.top;\n const spaceBelow = window.innerHeight - triggerBounds.bottom;\n\n setOpensAbove(panelBounds.height > spaceBelow && spaceAbove > spaceBelow);\n setHorizontalPlacement(\n position === 'auto' &&\n panelBounds.width > window.innerWidth - triggerBounds.left &&\n triggerBounds.right > window.innerWidth - triggerBounds.left\n ? 'left'\n : preferredHorizontalPlacement\n );\n }, [position, preferredHorizontalPlacement]);\n\n useLayoutEffect(() => {\n if (!isOpen) return undefined;\n\n updatePosition();\n window.addEventListener('resize', updatePosition);\n window.addEventListener('scroll', updatePosition, true);\n\n return () => {\n window.removeEventListener('resize', updatePosition);\n window.removeEventListener('scroll', updatePosition, true);\n };\n }, [isOpen, updatePosition]);\n\n const handleTriggerClick = (event: React.MouseEvent<HTMLElement>) => {\n if (inline) event.preventDefault();\n event.stopPropagation();\n if (isOpen) {\n closePopover({ restoreFocus: false });\n } else {\n openPopover();\n }\n };\n\n const triggerProps = {\n 'aria-controls': isOpen ? panelId : undefined,\n 'aria-expanded': isOpen,\n 'aria-haspopup': triggerAriaHasPopup,\n 'aria-label': triggerAccessibleLabel,\n className: inline ? styles['inline-trigger'] : styles.trigger,\n onClick: handleTriggerClick,\n onKeyDown: handleTriggerKeyDown,\n };\n\n const triggerBounds = inline ? triggerRef.current?.getBoundingClientRect() : undefined;\n const horizontalTransform = horizontalPlacement === 'left' ? 'translateX(-100%)' : '';\n const verticalTransform = opensAbove ? 'translateY(calc(-100% - var(--shape-spacing-2xs)))' : '';\n const inlineTransform = [horizontalTransform, verticalTransform].filter(Boolean).join(' ');\n const panel = isOpen ? (\n <div\n className={cx(\n styles['popover-panel'],\n styles[opensAbove ? 'above' : 'below'],\n inline && styles['inline-panel'],\n !inline && styles[horizontalPlacement]\n )}\n data-horizontal-placement={horizontalPlacement}\n data-placement={opensAbove ? 'above' : 'below'}\n id={panelId}\n ref={panelRef}\n style={\n triggerBounds\n ? {\n left: horizontalPlacement === 'left' ? triggerBounds.right : triggerBounds.left,\n position: 'fixed',\n top: opensAbove ? triggerBounds.top : triggerBounds.bottom,\n transform: inlineTransform || undefined,\n }\n : undefined\n }\n >\n {typeof children === 'function'\n ? children({ close: closePopover, initialFocus: initialFocusRef.current, isOpen })\n : children}\n </div>\n ) : null;\n\n return (\n <div\n className={cx(styles.popover, inline && styles.inline)}\n data-open={isOpen}\n onKeyDown={handleKeyDown}\n onClick={(event) => {\n if (inline) event.preventDefault();\n event.stopPropagation();\n }}\n ref={containerRef}\n >\n {inline ? (\n <span\n {...triggerProps}\n ref={triggerRef}\n role='button'\n tabIndex={0}\n >\n {triggerButtonContent}\n </span>\n ) : (\n <Button\n {...triggerProps}\n ref={triggerRef as React.Ref<HTMLButtonElement>}\n variant='secondary'\n >\n {triggerButtonContent}\n </Button>\n )}\n {inline && panel && typeof document !== 'undefined'\n ? createPortal(panel, document.body)\n : panel}\n </div>\n );\n};\n"],"names":["Popover","children","inline","position","triggerAccessibleLabel","triggerAriaHasPopup","triggerButtonContent","containerRef","useRef","initialFocusRef","undefined","panelRef","panelId","useId","triggerRef","isOpen","setIsOpen","useState","opensAbove","setOpensAbove","preferredHorizontalPlacement","horizontalPlacement","setHorizontalPlacement","openPopover","initialFocus","current","closePopover","useCallback","restoreFocus","focus","handleKeyDown","event","key","handleTriggerKeyDown","preventDefault","useEffect","handlePointerDown","target","contains","document","addEventListener","removeEventListener","updatePosition","panel","trigger","panelBounds","getBoundingClientRect","triggerBounds","spaceAbove","top","spaceBelow","window","innerHeight","bottom","height","width","innerWidth","left","right","useLayoutEffect","handleTriggerClick","stopPropagation","triggerProps","className","styles","onClick","onKeyDown","inlineTransform","filter","Boolean","join","jsx","cx","transform","close","jsxs","popover","Button","createPortal","body"],"mappings":"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"}
@@ -1,68 +1,112 @@
1
- import { jsxs as k, jsx as v } from "react/jsx-runtime";
2
- import { t as g } from "../../classix-DG18itHa.js";
3
- import { useRef as a, useId as F, useState as P, useCallback as x, useEffect as E } from "react";
4
- import { Button as K } from "../button/index.js";
5
- import '../../assets/index17.css';const R = "_popover_ttn4t_1", C = "_left_ttn4t_23", I = "_right_ttn4t_28", N = "_trigger_ttn4t_33", n = {
6
- popover: R,
7
- "popover-panel": "_popover-panel_ttn4t_6",
8
- left: C,
9
- right: I,
10
- trigger: N
11
- }, O = ({
12
- children: s,
13
- position: m = "left",
14
- triggerAccessibleLabel: _,
15
- triggerAriaHasPopup: w,
16
- triggerButtonContent: y
1
+ import { jsx as z, jsxs as W } from "react/jsx-runtime";
2
+ import { t as F } from "../../classix-DG18itHa.js";
3
+ import { useRef as h, useId as S, useState as y, useCallback as A, useEffect as U, useLayoutEffect as X } from "react";
4
+ import { createPortal as Y } from "react-dom";
5
+ import { Button as q } from "../button/index.js";
6
+ import '../../assets/index17.css';const G = "_popover_1szho_1", J = "_inline_1szho_6", M = "_below_1szho_38", Q = "_above_1szho_43", V = "_left_1szho_53", Z = "_right_1szho_58", $ = "_trigger_1szho_63", r = {
7
+ popover: G,
8
+ inline: J,
9
+ "popover-panel": "_popover-panel_1szho_21",
10
+ below: M,
11
+ above: Q,
12
+ "inline-panel": "_inline-panel_1szho_48",
13
+ left: V,
14
+ right: Z,
15
+ trigger: $,
16
+ "inline-trigger": "_inline-trigger_1szho_77"
17
+ }, ae = ({
18
+ children: w,
19
+ inline: t = !1,
20
+ position: f = "left",
21
+ triggerAccessibleLabel: I,
22
+ triggerAriaHasPopup: K,
23
+ triggerButtonContent: P
17
24
  }) => {
18
- const c = a(null), p = a(void 0), l = F(), u = a(null), [o, f] = P(!1), i = ({
25
+ var T;
26
+ const D = h(null), E = h(void 0), _ = h(null), k = S(), a = h(null), [o, B] = y(!1), [u, R] = y(!1), d = f === "auto" ? "right" : f, [g, x] = y(d), v = ({
19
27
  initialFocus: e
20
28
  } = {}) => {
21
- p.current = e, f(!0);
22
- }, t = x(({
29
+ E.current = e, R(!1), x(d), B(!0);
30
+ }, l = A(({
23
31
  restoreFocus: e = !0
24
32
  } = {}) => {
25
- var r;
26
- f(!1), e && ((r = u.current) == null || r.focus());
27
- }, []), h = (e) => {
28
- o && e.key === "Escape" && t();
29
- }, D = (e) => {
33
+ var s;
34
+ B(!1), e && ((s = a.current) == null || s.focus());
35
+ }, []), j = (e) => {
36
+ o && e.key === "Escape" && l();
37
+ }, H = (e) => {
30
38
  if (!o) {
39
+ if (t && (e.key === "Enter" || e.key === " ")) {
40
+ e.preventDefault(), v();
41
+ return;
42
+ }
31
43
  if (e.key === "ArrowDown") {
32
- e.preventDefault(), i({
44
+ e.preventDefault(), v({
33
45
  initialFocus: "first"
34
46
  });
35
47
  return;
36
48
  }
37
- e.key === "ArrowUp" && (e.preventDefault(), i({
49
+ e.key === "ArrowUp" && (e.preventDefault(), v({
38
50
  initialFocus: "last"
39
51
  }));
40
52
  }
41
53
  };
42
- return E(() => {
54
+ U(() => {
43
55
  if (!o)
44
56
  return;
45
- const e = (r) => {
46
- var d;
47
- (d = c.current) != null && d.contains(r.target) || t({
57
+ const e = (s) => {
58
+ var n, m;
59
+ const p = s.target;
60
+ (n = D.current) != null && n.contains(p) || (m = _.current) != null && m.contains(p) || l({
48
61
  restoreFocus: !1
49
62
  });
50
63
  };
51
64
  return document.addEventListener("mousedown", e), () => {
52
65
  document.removeEventListener("mousedown", e);
53
66
  };
54
- }, [t, o]), /* @__PURE__ */ k("div", { className: n.popover, onKeyDown: h, onClick: (e) => e.stopPropagation(), ref: c, "data-component": "popover", children: [
55
- /* @__PURE__ */ v(K, { "aria-controls": o ? l : void 0, "aria-expanded": o, "aria-haspopup": w, "aria-label": _, className: g(n.trigger), onKeyDown: D, onClick: () => o ? t({
67
+ }, [l, o]);
68
+ const i = A(() => {
69
+ const e = _.current, s = a.current;
70
+ if (!e || !s) return;
71
+ const p = e.getBoundingClientRect(), n = s.getBoundingClientRect(), m = n.top, C = window.innerHeight - n.bottom;
72
+ R(p.height > C && m > C), x(f === "auto" && p.width > window.innerWidth - n.left && n.right > window.innerWidth - n.left ? "left" : d);
73
+ }, [f, d]);
74
+ X(() => {
75
+ if (o)
76
+ return i(), window.addEventListener("resize", i), window.addEventListener("scroll", i, !0), () => {
77
+ window.removeEventListener("resize", i), window.removeEventListener("scroll", i, !0);
78
+ };
79
+ }, [o, i]);
80
+ const N = (e) => {
81
+ t && e.preventDefault(), e.stopPropagation(), o ? l({
56
82
  restoreFocus: !1
57
- }) : i(), ref: u, variant: "secondary", children: y }),
58
- o && /* @__PURE__ */ v("div", { className: g(n["popover-panel"], n[m]), id: l, children: typeof s == "function" ? s({
59
- close: t,
60
- initialFocus: p.current,
61
- isOpen: o
62
- }) : s })
83
+ }) : v();
84
+ }, L = {
85
+ "aria-controls": o ? k : void 0,
86
+ "aria-expanded": o,
87
+ "aria-haspopup": K,
88
+ "aria-label": I,
89
+ className: t ? r["inline-trigger"] : r.trigger,
90
+ onClick: N,
91
+ onKeyDown: H
92
+ }, c = t ? (T = a.current) == null ? void 0 : T.getBoundingClientRect() : void 0, O = [g === "left" ? "translateX(-100%)" : "", u ? "translateY(calc(-100% - var(--shape-spacing-2xs)))" : ""].filter(Boolean).join(" "), b = o ? /* @__PURE__ */ z("div", { className: F(r["popover-panel"], r[u ? "above" : "below"], t && r["inline-panel"], !t && r[g]), "data-horizontal-placement": g, "data-placement": u ? "above" : "below", id: k, ref: _, style: c ? {
93
+ left: g === "left" ? c.right : c.left,
94
+ position: "fixed",
95
+ top: u ? c.top : c.bottom,
96
+ transform: O || void 0
97
+ } : void 0, children: typeof w == "function" ? w({
98
+ close: l,
99
+ initialFocus: E.current,
100
+ isOpen: o
101
+ }) : w }) : null;
102
+ return /* @__PURE__ */ W("div", { className: F(r.popover, t && r.inline), "data-open": o, onKeyDown: j, onClick: (e) => {
103
+ t && e.preventDefault(), e.stopPropagation();
104
+ }, ref: D, "data-component": "popover", children: [
105
+ t ? /* @__PURE__ */ z("span", { ...L, ref: a, role: "button", tabIndex: 0, children: P }) : /* @__PURE__ */ z(q, { ...L, ref: a, variant: "secondary", children: P }),
106
+ t && b && typeof document < "u" ? Y(b, document.body) : b
63
107
  ] });
64
108
  };
65
109
  export {
66
- O as Popover
110
+ ae as Popover
67
111
  };
68
112
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/components/popover/index.tsx"],"sourcesContent":["import cx from 'classix';\nimport {\n type AriaAttributes,\n type ReactNode,\n useCallback,\n useEffect,\n useId,\n useRef,\n useState,\n} from 'react';\n\nimport { Button } from '@/components/button';\n\nimport styles from './styles.module.css';\n\nexport type PopoverCloseOptions = {\n restoreFocus?: boolean;\n};\n\nexport type PopoverInitialFocus = 'first' | 'last';\n\nexport type PopoverRenderProps = {\n close: (options?: PopoverCloseOptions) => void;\n initialFocus?: PopoverInitialFocus;\n isOpen: boolean;\n};\n\ntype PopoverOpenOptions = {\n initialFocus?: PopoverInitialFocus;\n};\n\nexport type PopoverProps = {\n children: ReactNode | ((props: PopoverRenderProps) => ReactNode);\n position?: 'left' | 'right';\n triggerAccessibleLabel?: string;\n triggerAriaHasPopup?: AriaAttributes['aria-haspopup'];\n triggerButtonContent: ReactNode;\n};\n\nexport const Popover = ({\n children,\n position = 'left',\n triggerAccessibleLabel,\n triggerAriaHasPopup,\n triggerButtonContent,\n}: PopoverProps) => {\n const containerRef = useRef<HTMLDivElement>(null);\n const initialFocusRef = useRef<PopoverInitialFocus | undefined>(undefined);\n const panelId = useId();\n const triggerRef = useRef<HTMLButtonElement>(null);\n const [isOpen, setIsOpen] = useState(false);\n\n const openPopover = ({ initialFocus }: PopoverOpenOptions = {}) => {\n initialFocusRef.current = initialFocus;\n setIsOpen(true);\n };\n\n const closePopover = useCallback(({ restoreFocus = true }: PopoverCloseOptions = {}) => {\n setIsOpen(false);\n\n if (restoreFocus) {\n triggerRef.current?.focus();\n }\n }, []);\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (isOpen && event.key === 'Escape') {\n closePopover();\n }\n };\n\n const handleTriggerKeyDown = (event: React.KeyboardEvent<HTMLButtonElement>) => {\n if (isOpen) {\n return;\n }\n\n if (event.key === 'ArrowDown') {\n event.preventDefault();\n openPopover({ initialFocus: 'first' });\n return;\n }\n\n if (event.key === 'ArrowUp') {\n event.preventDefault();\n openPopover({ initialFocus: 'last' });\n }\n };\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 closePopover({ restoreFocus: false });\n }\n };\n\n document.addEventListener('mousedown', handlePointerDown);\n\n return () => {\n document.removeEventListener('mousedown', handlePointerDown);\n };\n }, [closePopover, isOpen]);\n\n return (\n <div\n className={styles.popover}\n onKeyDown={handleKeyDown}\n onClick={(e) => e.stopPropagation()}\n ref={containerRef}\n >\n <Button\n aria-controls={isOpen ? panelId : undefined}\n aria-expanded={isOpen}\n aria-haspopup={triggerAriaHasPopup}\n aria-label={triggerAccessibleLabel}\n className={cx(styles.trigger)}\n onKeyDown={handleTriggerKeyDown}\n onClick={() => (isOpen ? closePopover({ restoreFocus: false }) : openPopover())}\n ref={triggerRef}\n variant='secondary'\n >\n {triggerButtonContent}\n </Button>\n {isOpen && (\n <div\n className={cx(styles['popover-panel'], styles[position])}\n id={panelId}\n >\n {typeof children === 'function'\n ? children({ close: closePopover, initialFocus: initialFocusRef.current, isOpen })\n : children}\n </div>\n )}\n </div>\n );\n};\n"],"names":["Popover","children","position","triggerAccessibleLabel","triggerAriaHasPopup","triggerButtonContent","containerRef","useRef","initialFocusRef","undefined","panelId","useId","triggerRef","isOpen","setIsOpen","useState","openPopover","initialFocus","current","closePopover","useCallback","restoreFocus","focus","handleKeyDown","event","key","handleTriggerKeyDown","preventDefault","useEffect","handlePointerDown","contains","target","document","addEventListener","removeEventListener","jsxs","styles","popover","e","stopPropagation","jsx","Button","cx","trigger","close"],"mappings":";;;;;;;;;;GAuCaA,IAAUA,CAAC;AAAA,EACtBC,UAAAA;AAAAA,EACAC,UAAAA,IAAW;AAAA,EACXC,wBAAAA;AAAAA,EACAC,qBAAAA;AAAAA,EACAC,sBAAAA;AACY,MAAM;AAClB,QAAMC,IAAeC,EAAuB,IAAI,GAC1CC,IAAkBD,EAAwCE,MAAS,GACnEC,IAAUC,EAAAA,GACVC,IAAaL,EAA0B,IAAI,GAC3C,CAACM,GAAQC,CAAS,IAAIC,EAAS,EAAK,GAEpCC,IAAcA,CAAC;AAAA,IAAEC,cAAAA;AAAAA,EAAAA,IAAqC,OAAO;AACjET,IAAAA,EAAgBU,UAAUD,GAC1BH,EAAU,EAAI;AAAA,EAChB,GAEMK,IAAeC,EAAY,CAAC;AAAA,IAAEC,cAAAA,IAAe;AAAA,EAAA,IAA8B,OAAO;;AACtFP,IAAAA,EAAU,EAAK,GAEXO,OACFT,IAAAA,EAAWM,YAAXN,QAAAA,EAAoBU;AAAAA,EAExB,GAAG,CAAA,CAAE,GAECC,IAAgBA,CAACC,MAA+C;AACpE,IAAIX,KAAUW,EAAMC,QAAQ,YAC1BN,EAAAA;AAAAA,EAEJ,GAEMO,IAAuBA,CAACF,MAAkD;AAC9E,QAAIX,CAAAA,GAIJ;AAAA,UAAIW,EAAMC,QAAQ,aAAa;AAC7BD,QAAAA,EAAMG,eAAAA,GACNX,EAAY;AAAA,UAAEC,cAAc;AAAA,QAAA,CAAS;AACrC;AAAA,MACF;AAEA,MAAIO,EAAMC,QAAQ,cAChBD,EAAMG,eAAAA,GACNX,EAAY;AAAA,QAAEC,cAAc;AAAA,MAAA,CAAQ;AAAA;AAAA,EAExC;AAEAW,SAAAA,EAAU,MAAM;AACd,QAAI,CAACf;AACH;AAGF,UAAMgB,IAAoBA,CAACL,MAAsB;;AAC/C,OAAKlB,IAAAA,EAAaY,YAAbZ,QAAAA,EAAsBwB,SAASN,EAAMO,WACxCZ,EAAa;AAAA,QAAEE,cAAc;AAAA,MAAA,CAAO;AAAA,IAExC;AAEAW,oBAASC,iBAAiB,aAAaJ,CAAiB,GAEjD,MAAM;AACXG,eAASE,oBAAoB,aAAaL,CAAiB;AAAA,IAC7D;AAAA,EACF,GAAG,CAACV,GAAcN,CAAM,CAAC,GAGvB,gBAAAsB,EAAC,OAAA,EACC,WAAWC,EAAOC,SAClB,WAAWd,GACX,SAAUe,CAAAA,MAAMA,EAAEC,mBAClB,KAAKjC,GAAa,kBAAA,WAElB,UAAA;AAAA,IAAA,gBAAAkC,EAACC,GAAA,EACC,iBAAe5B,IAASH,IAAUD,QAClC,iBAAeI,GACf,iBAAeT,GACf,cAAYD,GACZ,WAAWuC,EAAGN,EAAOO,OAAO,GAC5B,WAAWjB,GACX,SAAS,MAAOb,IAASM,EAAa;AAAA,MAAEE,cAAc;AAAA,IAAA,CAAO,IAAIL,EAAAA,GACjE,KAAKJ,GACL,SAAQ,aAEPP,UAAAA,GACH;AAAA,IACCQ,KACC,gBAAA2B,EAAC,OAAA,EACC,WAAWE,EAAGN,EAAO,eAAe,GAAGA,EAAOlC,CAAQ,CAAC,GACvD,IAAIQ,GAEH,UAAA,OAAOT,KAAa,aACjBA,EAAS;AAAA,MAAE2C,OAAOzB;AAAAA,MAAcF,cAAcT,EAAgBU;AAAAA,MAASL,QAAAA;AAAAA,IAAAA,CAAQ,IAC/EZ,EAAAA,CACN;AAAA,EAAA,GAEJ;AAEJ;"}
1
+ {"version":3,"file":"index.js","sources":["../../../src/components/popover/index.tsx"],"sourcesContent":["import cx from 'classix';\nimport {\n type AriaAttributes,\n type ReactNode,\n useCallback,\n useEffect,\n useId,\n useLayoutEffect,\n useRef,\n useState,\n} from 'react';\nimport { createPortal } from 'react-dom';\n\nimport { Button } from '@/components/button';\n\nimport styles from './styles.module.css';\n\nexport type PopoverCloseOptions = {\n restoreFocus?: boolean;\n};\n\nexport type PopoverInitialFocus = 'first' | 'last';\n\nexport type PopoverRenderProps = {\n close: (options?: PopoverCloseOptions) => void;\n initialFocus?: PopoverInitialFocus;\n isOpen: boolean;\n};\n\ntype PopoverOpenOptions = {\n initialFocus?: PopoverInitialFocus;\n};\n\nexport type PopoverProps = {\n children: ReactNode | ((props: PopoverRenderProps) => ReactNode);\n inline?: boolean;\n position?: 'auto' | 'left' | 'right';\n triggerAccessibleLabel?: string;\n triggerAriaHasPopup?: AriaAttributes['aria-haspopup'];\n triggerButtonContent: ReactNode;\n};\n\nexport const Popover = ({\n children,\n inline = false,\n position = 'left',\n triggerAccessibleLabel,\n triggerAriaHasPopup,\n triggerButtonContent,\n}: PopoverProps) => {\n const containerRef = useRef<HTMLDivElement>(null);\n const initialFocusRef = useRef<PopoverInitialFocus | undefined>(undefined);\n const panelRef = useRef<HTMLDivElement>(null);\n const panelId = useId();\n const triggerRef = useRef<HTMLButtonElement | HTMLSpanElement>(null);\n const [isOpen, setIsOpen] = useState(false);\n const [opensAbove, setOpensAbove] = useState(false);\n const preferredHorizontalPlacement = position === 'auto' ? 'right' : position;\n const [horizontalPlacement, setHorizontalPlacement] = useState<'left' | 'right'>(\n preferredHorizontalPlacement\n );\n\n const openPopover = ({ initialFocus }: PopoverOpenOptions = {}) => {\n initialFocusRef.current = initialFocus;\n setOpensAbove(false);\n setHorizontalPlacement(preferredHorizontalPlacement);\n setIsOpen(true);\n };\n\n const closePopover = useCallback(({ restoreFocus = true }: PopoverCloseOptions = {}) => {\n setIsOpen(false);\n\n if (restoreFocus) {\n triggerRef.current?.focus();\n }\n }, []);\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (isOpen && event.key === 'Escape') {\n closePopover();\n }\n };\n\n const handleTriggerKeyDown = (event: React.KeyboardEvent<HTMLElement>) => {\n if (isOpen) {\n return;\n }\n\n if (inline && (event.key === 'Enter' || event.key === ' ')) {\n event.preventDefault();\n openPopover();\n return;\n }\n\n if (event.key === 'ArrowDown') {\n event.preventDefault();\n openPopover({ initialFocus: 'first' });\n return;\n }\n\n if (event.key === 'ArrowUp') {\n event.preventDefault();\n openPopover({ initialFocus: 'last' });\n }\n };\n\n useEffect(() => {\n if (!isOpen) {\n return;\n }\n\n const handlePointerDown = (event: MouseEvent) => {\n const target = event.target as Node;\n if (containerRef.current?.contains(target) || panelRef.current?.contains(target)) return;\n\n closePopover({ restoreFocus: false });\n };\n\n document.addEventListener('mousedown', handlePointerDown);\n\n return () => {\n document.removeEventListener('mousedown', handlePointerDown);\n };\n }, [closePopover, isOpen]);\n\n const updatePosition = useCallback(() => {\n const panel = panelRef.current;\n const trigger = triggerRef.current;\n if (!panel || !trigger) return;\n\n const panelBounds = panel.getBoundingClientRect();\n const triggerBounds = trigger.getBoundingClientRect();\n const spaceAbove = triggerBounds.top;\n const spaceBelow = window.innerHeight - triggerBounds.bottom;\n\n setOpensAbove(panelBounds.height > spaceBelow && spaceAbove > spaceBelow);\n setHorizontalPlacement(\n position === 'auto' &&\n panelBounds.width > window.innerWidth - triggerBounds.left &&\n triggerBounds.right > window.innerWidth - triggerBounds.left\n ? 'left'\n : preferredHorizontalPlacement\n );\n }, [position, preferredHorizontalPlacement]);\n\n useLayoutEffect(() => {\n if (!isOpen) return undefined;\n\n updatePosition();\n window.addEventListener('resize', updatePosition);\n window.addEventListener('scroll', updatePosition, true);\n\n return () => {\n window.removeEventListener('resize', updatePosition);\n window.removeEventListener('scroll', updatePosition, true);\n };\n }, [isOpen, updatePosition]);\n\n const handleTriggerClick = (event: React.MouseEvent<HTMLElement>) => {\n if (inline) event.preventDefault();\n event.stopPropagation();\n if (isOpen) {\n closePopover({ restoreFocus: false });\n } else {\n openPopover();\n }\n };\n\n const triggerProps = {\n 'aria-controls': isOpen ? panelId : undefined,\n 'aria-expanded': isOpen,\n 'aria-haspopup': triggerAriaHasPopup,\n 'aria-label': triggerAccessibleLabel,\n className: inline ? styles['inline-trigger'] : styles.trigger,\n onClick: handleTriggerClick,\n onKeyDown: handleTriggerKeyDown,\n };\n\n const triggerBounds = inline ? triggerRef.current?.getBoundingClientRect() : undefined;\n const horizontalTransform = horizontalPlacement === 'left' ? 'translateX(-100%)' : '';\n const verticalTransform = opensAbove ? 'translateY(calc(-100% - var(--shape-spacing-2xs)))' : '';\n const inlineTransform = [horizontalTransform, verticalTransform].filter(Boolean).join(' ');\n const panel = isOpen ? (\n <div\n className={cx(\n styles['popover-panel'],\n styles[opensAbove ? 'above' : 'below'],\n inline && styles['inline-panel'],\n !inline && styles[horizontalPlacement]\n )}\n data-horizontal-placement={horizontalPlacement}\n data-placement={opensAbove ? 'above' : 'below'}\n id={panelId}\n ref={panelRef}\n style={\n triggerBounds\n ? {\n left: horizontalPlacement === 'left' ? triggerBounds.right : triggerBounds.left,\n position: 'fixed',\n top: opensAbove ? triggerBounds.top : triggerBounds.bottom,\n transform: inlineTransform || undefined,\n }\n : undefined\n }\n >\n {typeof children === 'function'\n ? children({ close: closePopover, initialFocus: initialFocusRef.current, isOpen })\n : children}\n </div>\n ) : null;\n\n return (\n <div\n className={cx(styles.popover, inline && styles.inline)}\n data-open={isOpen}\n onKeyDown={handleKeyDown}\n onClick={(event) => {\n if (inline) event.preventDefault();\n event.stopPropagation();\n }}\n ref={containerRef}\n >\n {inline ? (\n <span\n {...triggerProps}\n ref={triggerRef}\n role='button'\n tabIndex={0}\n >\n {triggerButtonContent}\n </span>\n ) : (\n <Button\n {...triggerProps}\n ref={triggerRef as React.Ref<HTMLButtonElement>}\n variant='secondary'\n >\n {triggerButtonContent}\n </Button>\n )}\n {inline && panel && typeof document !== 'undefined'\n ? createPortal(panel, document.body)\n : panel}\n </div>\n );\n};\n"],"names":["Popover","children","inline","position","triggerAccessibleLabel","triggerAriaHasPopup","triggerButtonContent","containerRef","useRef","initialFocusRef","undefined","panelRef","panelId","useId","triggerRef","isOpen","setIsOpen","useState","opensAbove","setOpensAbove","preferredHorizontalPlacement","horizontalPlacement","setHorizontalPlacement","openPopover","initialFocus","current","closePopover","useCallback","restoreFocus","focus","handleKeyDown","event","key","handleTriggerKeyDown","preventDefault","useEffect","handlePointerDown","target","contains","document","addEventListener","removeEventListener","updatePosition","panel","trigger","panelBounds","getBoundingClientRect","triggerBounds","spaceAbove","top","spaceBelow","window","innerHeight","bottom","height","width","innerWidth","left","right","useLayoutEffect","handleTriggerClick","stopPropagation","triggerProps","className","styles","onClick","onKeyDown","inlineTransform","filter","Boolean","join","jsx","cx","transform","close","jsxs","popover","Button","createPortal","body"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require('../../assets/index11.css');const e=require("react/jsx-runtime"),r=require("../../classix-5H4IWnMA.cjs"),c=require("../button/index.cjs"),a=require("../icon/index.cjs"),u=require("../aside/index.cjs"),l=require("../branding/index.cjs"),_=require("../figure/index.cjs"),d=require("../nav/index.cjs"),g="_portal_1uuei_39",p="_content_1uuei_266",x="_toggle_1uuei_273",m="_open_1uuei_337",n={portal:g,content:p,toggle:x,open:m},j=({children:t,portals:o,open:s,setOpen:i})=>e.jsxs(u.Aside,{className:r.t(n.portal,s&&n.open),sticky:!0,"data-component":"portal",children:[e.jsx(c.Button,{className:n.toggle,onClick:()=>i(!s),variant:"tertiary",children:e.jsx(a.Icon,{name:"sidebar"})}),e.jsx(_.Figure,{children:e.jsx(l.Branding,{name:"logo",size:48,variant:"white"})}),e.jsxs("div",{className:n.content,children:[o&&e.jsx(d.Nav,{horizontal:!0,children:o}),t&&t]})]});exports.Portal=j;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require('../../assets/index10.css');const e=require("react/jsx-runtime"),i=require("../../classix-5H4IWnMA.cjs"),c=require("../button/index.cjs"),a=require("../icon/index.cjs"),l=require("../aside/index.cjs"),_=require("../branding/index.cjs"),d=require("../figure/index.cjs"),m=require("../nav/index.cjs"),u="_portal_115mr_39",g="_content_115mr_267",p="_toggle_115mr_274",x="_open_115mr_338",n={portal:u,content:g,toggle:p,open:x},j=({children:t,portals:o,open:r,setOpen:s})=>e.jsxs(l.Aside,{className:i.t(n.portal,r&&n.open),sticky:!0,"data-component":"portal",children:[e.jsx(c.Button,{className:n.toggle,onClick:()=>s(!r),variant:"tertiary",children:e.jsx(a.Icon,{name:"sidebar"})}),e.jsx(d.Figure,{children:e.jsx(_.Branding,{name:"logo",size:48,variant:"white"})}),e.jsxs("div",{className:n.content,children:[o&&e.jsx(m.Nav,{horizontal:!0,children:o}),t&&t]})]});exports.Portal=j;
2
2
  //# sourceMappingURL=index.cjs.map
@@ -1,26 +1,26 @@
1
- import { jsxs as i, jsx as o } from "react/jsx-runtime";
2
- import { t as m } from "../../classix-DG18itHa.js";
1
+ import { jsxs as m, jsx as o } from "react/jsx-runtime";
2
+ import { t as a } from "../../classix-DG18itHa.js";
3
3
  import { Button as c } from "../button/index.js";
4
4
  import { Icon as l } from "../icon/index.js";
5
5
  import { Aside as s } from "../aside/index.js";
6
6
  import { Branding as p } from "../branding/index.js";
7
- import { Figure as u } from "../figure/index.js";
8
- import { Nav as _ } from "../nav/index.js";
9
- import '../../assets/index11.css';const g = "_portal_1uuei_39", d = "_content_1uuei_266", f = "_toggle_1uuei_273", h = "_open_1uuei_337", t = {
10
- portal: g,
11
- content: d,
12
- toggle: f,
13
- open: h
7
+ import { Figure as _ } from "../figure/index.js";
8
+ import { Nav as g } from "../nav/index.js";
9
+ import '../../assets/index10.css';const d = "_portal_115mr_39", f = "_content_115mr_267", h = "_toggle_115mr_274", u = "_open_115mr_338", t = {
10
+ portal: d,
11
+ content: f,
12
+ toggle: h,
13
+ open: u
14
14
  }, b = ({
15
15
  children: r,
16
- portals: e,
17
- open: n,
18
- setOpen: a
19
- }) => /* @__PURE__ */ i(s, { className: m(t.portal, n && t.open), sticky: !0, "data-component": "portal", children: [
20
- /* @__PURE__ */ o(c, { className: t.toggle, onClick: () => a(!n), variant: "tertiary", children: /* @__PURE__ */ o(l, { name: "sidebar" }) }),
21
- /* @__PURE__ */ o(u, { children: /* @__PURE__ */ o(p, { name: "logo", size: 48, variant: "white" }) }),
22
- /* @__PURE__ */ i("div", { className: t.content, children: [
23
- e && /* @__PURE__ */ o(_, { horizontal: !0, children: e }),
16
+ portals: n,
17
+ open: e,
18
+ setOpen: i
19
+ }) => /* @__PURE__ */ m(s, { className: a(t.portal, e && t.open), sticky: !0, "data-component": "portal", children: [
20
+ /* @__PURE__ */ o(c, { className: t.toggle, onClick: () => i(!e), variant: "tertiary", children: /* @__PURE__ */ o(l, { name: "sidebar" }) }),
21
+ /* @__PURE__ */ o(_, { children: /* @__PURE__ */ o(p, { name: "logo", size: 48, variant: "white" }) }),
22
+ /* @__PURE__ */ m("div", { className: t.content, children: [
23
+ n && /* @__PURE__ */ o(g, { horizontal: !0, children: n }),
24
24
  r && r
25
25
  ] })
26
26
  ] });
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require('../../assets/index10.css');const n=require("react/jsx-runtime"),u=require("react"),p=require("../button/index.cjs"),N=require("../checkbox/index.cjs"),M=require("../chip/index.cjs"),w=require("../controls/index.cjs"),C=require("../dialog/index.cjs"),I=require("../../index-CP5A_BGJ.cjs"),O="_search_cnh59_3",R="_controls_cnh59_15",B="_chips_cnh59_29",c={search:O,controls:R,chips:B,"dialog-content":"_dialog-content_cnh59_36","filter-groups":"_filter-groups_cnh59_45","filter-group":"_filter-group_cnh59_45"},S=({closeLabel:m="Close",filterButtonLabel:_="Filters",filterDialogTitle:b="Filters",filterGroups:l=[],onChange:g,onSelectedFiltersChange:o,removeFilterLabel:j=i=>`Remove ${i.label} filter`,resetLabel:v="Reset",searchLabel:y="Search",searchPlaceholder:f="Search",selectedFilters:t=[],value:k=""})=>{const i=u.useId(),[x,r]=u.useState(!1),q=u.useMemo(()=>new Map(l.flatMap(e=>e.options).map(e=>[e.value,e])),[l]),h=t.flatMap(e=>{const s=q.get(e);return s?[s]:[]}),d=(e,s)=>{o&&o(s?[...new Set([...t,e])]:t.filter(a=>a!==e))};return n.jsxs("div",{className:c.search,"data-component":"search",children:[n.jsxs("div",{className:c.controls,children:[n.jsx(I.Input,{"aria-label":y,icon:"search",onChange:e=>g(e.target.value),placeholder:f,type:"search",value:k}),l.length>0&&n.jsx(p.Button,{"aria-expanded":x,"aria-haspopup":"dialog",badge:h.length,icon:"funnel",onClick:()=>r(!0),variant:"tertiary",children:_})]}),h.length>0&&n.jsxs("div",{"aria-label":_,className:c.chips,children:[h.map(e=>n.jsx(M.Chip,{accessibleLabel:j(e),label:e.label,onClick:()=>d(e.value,!1),onKeyDown:s=>{(s.key==="Enter"||s.key===" ")&&(s.preventDefault(),d(e.value,!1))},role:"button"},e.value)),n.jsx(p.Button,{onClick:()=>o==null?void 0:o([]),variant:"tertiary",children:v})]}),x&&n.jsx(C.Dialog,{"aria-labelledby":i,onKeyDown:e=>{e.key==="Escape"&&r(!1)},open:!0,setOpen:r,children:n.jsxs("div",{className:c["dialog-content"],children:[n.jsx("h2",{id:i,children:b}),n.jsx("div",{className:c["filter-groups"],children:l.map((e,s)=>n.jsxs("fieldset",{className:c["filter-group"],children:[e.label&&n.jsx("legend",{children:e.label}),e.options.map(a=>n.jsx(N.Checkbox,{checked:t.includes(a.value),label:a.label,onChange:D=>d(a.value,D.target.checked)},a.value))]},e.label??s))}),n.jsx(w.Controls,{children:n.jsx(p.Button,{onClick:()=>r(!1),children:m})})]})})]})};exports.Search=S;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require('../../assets/index9.css');const n=require("react/jsx-runtime"),p=require("react"),h=require("../button/index.cjs"),N=require("../checkbox/index.cjs"),M=require("../chip/index.cjs"),w=require("../controls/index.cjs"),C=require("../dialog/index.cjs"),I=require("../../index-D9Hq7ewF.cjs"),O="_search_1tuej_3",R="_controls_1tuej_15",B="_chips_1tuej_29",t={search:O,controls:R,chips:B,"dialog-content":"_dialog-content_1tuej_36","filter-groups":"_filter-groups_1tuej_45","filter-group":"_filter-group_1tuej_45"},S=({closeLabel:j="Close",filterButtonLabel:_="Filters",filterDialogTitle:m="Filters",filterGroups:c=[],onChange:b,onSelectedFiltersChange:o,removeFilterLabel:g=i=>`Remove ${i.label} filter`,resetLabel:v="Reset",searchLabel:y="Search",searchPlaceholder:f="Search",selectedFilters:l=[],value:k=""})=>{const i=p.useId(),[x,r]=p.useState(!1),q=p.useMemo(()=>new Map(c.flatMap(e=>e.options).map(e=>[e.value,e])),[c]),u=l.flatMap(e=>{const s=q.get(e);return s?[s]:[]}),d=(e,s)=>{o&&o(s?[...new Set([...l,e])]:l.filter(a=>a!==e))};return n.jsxs("div",{className:t.search,"data-component":"search",children:[n.jsxs("div",{className:t.controls,children:[n.jsx(I.Input,{"aria-label":y,icon:"search",onChange:e=>b(e.target.value),placeholder:f,type:"search",value:k}),c.length>0&&n.jsx(h.Button,{"aria-expanded":x,"aria-haspopup":"dialog",badge:u.length,icon:"funnel",onClick:()=>r(!0),variant:"tertiary",children:_})]}),u.length>0&&n.jsxs("div",{"aria-label":_,className:t.chips,children:[u.map(e=>n.jsx(M.Chip,{accessibleLabel:g(e),label:e.label,onClick:()=>d(e.value,!1),onKeyDown:s=>{(s.key==="Enter"||s.key===" ")&&(s.preventDefault(),d(e.value,!1))},role:"button"},e.value)),n.jsx(h.Button,{onClick:()=>o==null?void 0:o([]),variant:"tertiary",children:v})]}),x&&n.jsx(C.Dialog,{"aria-labelledby":i,onKeyDown:e=>{e.key==="Escape"&&r(!1)},open:!0,setOpen:r,children:n.jsxs("div",{className:t["dialog-content"],children:[n.jsx("h2",{id:i,children:m}),n.jsx("div",{className:t["filter-groups"],children:c.map((e,s)=>n.jsxs("fieldset",{className:t["filter-group"],children:[e.label&&n.jsx("legend",{children:e.label}),e.options.map(a=>n.jsx(N.Checkbox,{checked:l.includes(a.value),label:a.label,onChange:D=>d(a.value,D.target.checked)},a.value))]},e.label??s))}),n.jsx(w.Controls,{children:n.jsx(h.Button,{onClick:()=>r(!1),children:j})})]})})]})};exports.Search=S;
2
2
  //# sourceMappingURL=index.cjs.map
@@ -1,58 +1,58 @@
1
- import { jsxs as r, jsx as e } from "react/jsx-runtime";
2
- import { useId as w, useState as C, useMemo as M } from "react";
1
+ import { jsxs as n, jsx as a } from "react/jsx-runtime";
2
+ import { useId as I, useState as w, useMemo as C } from "react";
3
3
  import { Button as m } from "../button/index.js";
4
- import { Checkbox as O } from "../checkbox/index.js";
5
- import { Chip as j } from "../chip/index.js";
4
+ import { Checkbox as M } from "../checkbox/index.js";
5
+ import { Chip as O } from "../chip/index.js";
6
6
  import { Controls as E } from "../controls/index.js";
7
7
  import { Dialog as K } from "../dialog/index.js";
8
- import { I as R } from "../../index-DFXqYJat.js";
9
- import '../../assets/index10.css';const B = "_search_cnh59_3", T = "_controls_cnh59_15", $ = "_chips_cnh59_29", n = {
8
+ import { I as R } from "../../index-D4LZQ-JF.js";
9
+ import '../../assets/index9.css';const B = "_search_1tuej_3", T = "_controls_1tuej_15", $ = "_chips_1tuej_29", r = {
10
10
  search: B,
11
11
  controls: T,
12
12
  chips: $,
13
- "dialog-content": "_dialog-content_cnh59_36",
14
- "filter-groups": "_filter-groups_cnh59_45",
15
- "filter-group": "_filter-group_cnh59_45"
13
+ "dialog-content": "_dialog-content_1tuej_36",
14
+ "filter-groups": "_filter-groups_1tuej_45",
15
+ "filter-group": "_filter-group_1tuej_45"
16
16
  }, S = ({
17
17
  closeLabel: _ = "Close",
18
18
  filterButtonLabel: u = "Filters",
19
19
  filterDialogTitle: b = "Filters",
20
- filterGroups: i = [],
20
+ filterGroups: c = [],
21
21
  onChange: v,
22
- onSelectedFiltersChange: c,
23
- removeFilterLabel: g = (t) => `Remove ${t.label} filter`,
22
+ onSelectedFiltersChange: t,
23
+ removeFilterLabel: g = (s) => `Remove ${s.label} filter`,
24
24
  resetLabel: y = "Reset",
25
25
  searchLabel: k = "Search",
26
- searchPlaceholder: D = "Search",
27
- selectedFilters: s = [],
28
- value: N = ""
26
+ searchPlaceholder: j = "Search",
27
+ selectedFilters: i = [],
28
+ value: D = ""
29
29
  }) => {
30
- const t = w(), [f, h] = C(!1), x = M(() => new Map(i.flatMap((a) => a.options).map((a) => [a.value, a])), [i]), p = s.flatMap((a) => {
31
- const l = x.get(a);
30
+ const s = I(), [f, p] = w(!1), N = C(() => new Map(c.flatMap((e) => e.options).map((e) => [e.value, e])), [c]), h = i.flatMap((e) => {
31
+ const l = N.get(e);
32
32
  return l ? [l] : [];
33
- }), d = (a, l) => {
34
- c && c(l ? [.../* @__PURE__ */ new Set([...s, a])] : s.filter((o) => o !== a));
33
+ }), d = (e, l) => {
34
+ t && t(l ? [.../* @__PURE__ */ new Set([...i, e])] : i.filter((o) => o !== e));
35
35
  };
36
- return /* @__PURE__ */ r("div", { className: n.search, "data-component": "search", children: [
37
- /* @__PURE__ */ r("div", { className: n.controls, children: [
38
- /* @__PURE__ */ e(R, { "aria-label": k, icon: "search", onChange: (a) => v(a.target.value), placeholder: D, type: "search", value: N }),
39
- i.length > 0 && /* @__PURE__ */ e(m, { "aria-expanded": f, "aria-haspopup": "dialog", badge: p.length, icon: "funnel", onClick: () => h(!0), variant: "tertiary", children: u })
36
+ return /* @__PURE__ */ n("div", { className: r.search, "data-component": "search", children: [
37
+ /* @__PURE__ */ n("div", { className: r.controls, children: [
38
+ /* @__PURE__ */ a(R, { "aria-label": k, icon: "search", onChange: (e) => v(e.target.value), placeholder: j, type: "search", value: D }),
39
+ c.length > 0 && /* @__PURE__ */ a(m, { "aria-expanded": f, "aria-haspopup": "dialog", badge: h.length, icon: "funnel", onClick: () => p(!0), variant: "tertiary", children: u })
40
40
  ] }),
41
- p.length > 0 && /* @__PURE__ */ r("div", { "aria-label": u, className: n.chips, children: [
42
- p.map((a) => /* @__PURE__ */ e(j, { accessibleLabel: g(a), label: a.label, onClick: () => d(a.value, !1), onKeyDown: (l) => {
43
- (l.key === "Enter" || l.key === " ") && (l.preventDefault(), d(a.value, !1));
44
- }, role: "button" }, a.value)),
45
- /* @__PURE__ */ e(m, { onClick: () => c == null ? void 0 : c([]), variant: "tertiary", children: y })
41
+ h.length > 0 && /* @__PURE__ */ n("div", { "aria-label": u, className: r.chips, children: [
42
+ h.map((e) => /* @__PURE__ */ a(O, { accessibleLabel: g(e), label: e.label, onClick: () => d(e.value, !1), onKeyDown: (l) => {
43
+ (l.key === "Enter" || l.key === " ") && (l.preventDefault(), d(e.value, !1));
44
+ }, role: "button" }, e.value)),
45
+ /* @__PURE__ */ a(m, { onClick: () => t == null ? void 0 : t([]), variant: "tertiary", children: y })
46
46
  ] }),
47
- f && /* @__PURE__ */ e(K, { "aria-labelledby": t, onKeyDown: (a) => {
48
- a.key === "Escape" && h(!1);
49
- }, open: !0, setOpen: h, children: /* @__PURE__ */ r("div", { className: n["dialog-content"], children: [
50
- /* @__PURE__ */ e("h2", { id: t, children: b }),
51
- /* @__PURE__ */ e("div", { className: n["filter-groups"], children: i.map((a, l) => /* @__PURE__ */ r("fieldset", { className: n["filter-group"], children: [
52
- a.label && /* @__PURE__ */ e("legend", { children: a.label }),
53
- a.options.map((o) => /* @__PURE__ */ e(O, { checked: s.includes(o.value), label: o.label, onChange: (I) => d(o.value, I.target.checked) }, o.value))
54
- ] }, a.label ?? l)) }),
55
- /* @__PURE__ */ e(E, { children: /* @__PURE__ */ e(m, { onClick: () => h(!1), children: _ }) })
47
+ f && /* @__PURE__ */ a(K, { "aria-labelledby": s, onKeyDown: (e) => {
48
+ e.key === "Escape" && p(!1);
49
+ }, open: !0, setOpen: p, children: /* @__PURE__ */ n("div", { className: r["dialog-content"], children: [
50
+ /* @__PURE__ */ a("h2", { id: s, children: b }),
51
+ /* @__PURE__ */ a("div", { className: r["filter-groups"], children: c.map((e, l) => /* @__PURE__ */ n("fieldset", { className: r["filter-group"], children: [
52
+ e.label && /* @__PURE__ */ a("legend", { children: e.label }),
53
+ e.options.map((o) => /* @__PURE__ */ a(M, { checked: i.includes(o.value), label: o.label, onChange: (x) => d(o.value, x.target.checked) }, o.value))
54
+ ] }, e.label ?? l)) }),
55
+ /* @__PURE__ */ a(E, { children: /* @__PURE__ */ a(m, { onClick: () => p(!1), children: _ }) })
56
56
  ] }) })
57
57
  ] });
58
58
  };
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("react/jsx-runtime");require("../../classix-5H4IWnMA.cjs");require("../../icons-DYCSlAoX.cjs");const e=require("../../index-N4IMha5Q.cjs");require("../../use-touched-D_TJ8wDc.cjs");exports.Select=e.Select;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("react/jsx-runtime");require("../../classix-5H4IWnMA.cjs");require("../../icons-BoBeAmLe.cjs");const e=require("../../index-Ct0mJ-KK.cjs");require("../../use-touched-D_TJ8wDc.cjs");exports.Select=e.Select;
2
2
  //# sourceMappingURL=index.cjs.map
@@ -1,7 +1,7 @@
1
1
  import "react/jsx-runtime";
2
2
  import "../../classix-DG18itHa.js";
3
- import "../../icons-CKzd_L4D.js";
4
- import { S as e } from "../../index-B9xtLe2w.js";
3
+ import "../../icons-Dhj9mAkR.js";
4
+ import { S as e } from "../../index-uQRsVtP-.js";
5
5
  import "../../use-touched-DXIJVVzz.js";
6
6
  export {
7
7
  e as Select