@solibo/solibo-ui 1.0.15 → 1.0.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (120) hide show
  1. package/dist/assets/index.css +1 -1
  2. package/dist/assets/index10.css +1 -1
  3. package/dist/assets/index12.css +1 -1
  4. package/dist/assets/index13.css +1 -1
  5. package/dist/assets/index14.css +1 -1
  6. package/dist/assets/index15.css +1 -1
  7. package/dist/assets/index18.css +1 -1
  8. package/dist/assets/index23.css +1 -1
  9. package/dist/assets/index24.css +1 -1
  10. package/dist/assets/index25.css +1 -1
  11. package/dist/assets/index26.css +1 -1
  12. package/dist/assets/index27.css +1 -1
  13. package/dist/assets/index29.css +1 -1
  14. package/dist/assets/index3.css +1 -1
  15. package/dist/assets/index30.css +1 -1
  16. package/dist/assets/index31.css +1 -1
  17. package/dist/assets/index33.css +1 -1
  18. package/dist/assets/index34.css +1 -1
  19. package/dist/assets/index35.css +1 -1
  20. package/dist/assets/index36.css +1 -1
  21. package/dist/assets/index37.css +1 -1
  22. package/dist/assets/index39.css +1 -1
  23. package/dist/assets/index4.css +1 -1
  24. package/dist/assets/index43.css +1 -1
  25. package/dist/assets/index44.css +1 -1
  26. package/dist/assets/index45.css +1 -1
  27. package/dist/assets/index47.css +1 -1
  28. package/dist/assets/index48.css +1 -1
  29. package/dist/assets/index49.css +1 -1
  30. package/dist/assets/index6.css +1 -1
  31. package/dist/assets/index8.css +1 -1
  32. package/dist/assets/index9.css +1 -1
  33. package/dist/assets/menu-popover.css +1 -1
  34. package/dist/components/app-link/index.cjs +1 -1
  35. package/dist/components/app-link/index.js +8 -8
  36. package/dist/components/aside/index.cjs +1 -1
  37. package/dist/components/aside/index.js +11 -11
  38. package/dist/components/avatar/index.cjs +1 -1
  39. package/dist/components/avatar/index.cjs.map +1 -1
  40. package/dist/components/avatar/index.js +58 -58
  41. package/dist/components/badge/index.cjs +1 -1
  42. package/dist/components/badge/index.js +27 -27
  43. package/dist/components/banner/index.cjs +1 -1
  44. package/dist/components/banner/index.js +14 -14
  45. package/dist/components/button/index.cjs +1 -1
  46. package/dist/components/button/index.js +18 -18
  47. package/dist/components/card/index.cjs +1 -1
  48. package/dist/components/card/index.js +46 -46
  49. package/dist/components/checkbox/index.cjs +1 -1
  50. package/dist/components/checkbox/index.js +7 -7
  51. package/dist/components/collapsible/index.cjs +1 -1
  52. package/dist/components/collapsible/index.cjs.map +1 -1
  53. package/dist/components/collapsible/index.js +18 -37
  54. package/dist/components/collapsible/index.js.map +1 -1
  55. package/dist/components/controls/index.cjs +1 -1
  56. package/dist/components/controls/index.cjs.map +1 -1
  57. package/dist/components/controls/index.js +110 -90
  58. package/dist/components/controls/index.js.map +1 -1
  59. package/dist/components/croppable/index.cjs +1 -1
  60. package/dist/components/croppable/index.js +181 -181
  61. package/dist/components/dialog/index.cjs +1 -1
  62. package/dist/components/dialog/index.js +31 -31
  63. package/dist/components/dropdown/index.cjs +1 -1
  64. package/dist/components/dropdown/index.js +80 -80
  65. package/dist/components/editor/index.cjs +16 -16
  66. package/dist/components/editor/index.cjs.map +1 -1
  67. package/dist/components/editor/index.js +196 -196
  68. package/dist/components/file/index.cjs +1 -1
  69. package/dist/components/file/index.js +24 -24
  70. package/dist/components/header/index.cjs +1 -1
  71. package/dist/components/header/index.cjs.map +1 -1
  72. package/dist/components/header/index.js +14 -14
  73. package/dist/components/icon/index.cjs +1 -1
  74. package/dist/components/icon/index.js +20 -20
  75. package/dist/components/input/index.cjs +1 -1
  76. package/dist/components/input/index.js +1 -1
  77. package/dist/components/list/index.cjs +1 -1
  78. package/dist/components/list/index.js +24 -24
  79. package/dist/components/loading/index.cjs +1 -1
  80. package/dist/components/loading/index.js +11 -11
  81. package/dist/components/menu/index.cjs +1 -1
  82. package/dist/components/menu/index.js +1 -1
  83. package/dist/components/message/index.cjs +1 -1
  84. package/dist/components/message/index.cjs.map +1 -1
  85. package/dist/components/message/index.js +26 -26
  86. package/dist/components/messages/index.cjs +1 -1
  87. package/dist/components/messages/index.js +20 -20
  88. package/dist/components/nav/index.cjs +1 -1
  89. package/dist/components/nav/index.js +12 -12
  90. package/dist/components/popover/index.cjs +1 -1
  91. package/dist/components/popover/index.js +38 -38
  92. package/dist/components/portal/index.cjs +1 -1
  93. package/dist/components/portal/index.js +7 -7
  94. package/dist/components/search/index.cjs +1 -1
  95. package/dist/components/search/index.cjs.map +1 -1
  96. package/dist/components/search/index.js +36 -36
  97. package/dist/components/sortable/index.cjs +1 -1
  98. package/dist/components/sortable/index.js +74 -74
  99. package/dist/components/textarea/index.cjs +1 -1
  100. package/dist/components/textarea/index.js +15 -15
  101. package/dist/components/toasts/index.cjs +1 -1
  102. package/dist/components/toasts/index.js +4 -4
  103. package/dist/components/toggle/index.cjs +1 -1
  104. package/dist/components/toggle/index.js +6 -6
  105. package/dist/components/tooltip/index.cjs +1 -1
  106. package/dist/components/tooltip/index.js +1 -1
  107. package/dist/{index-DE2nzqL5.js → index-BIV5OwVJ.js} +23 -23
  108. package/dist/{index-DE2nzqL5.js.map → index-BIV5OwVJ.js.map} +1 -1
  109. package/dist/index-CQNlYa2P.cjs +2 -0
  110. package/dist/{index-DF8JisYI.cjs.map → index-CQNlYa2P.cjs.map} +1 -1
  111. package/dist/index.cjs +1 -1
  112. package/dist/index.d.ts +3 -1
  113. package/dist/index.js +1 -1
  114. package/dist/{menu-popover-jTTxzTGZ.cjs → menu-popover-D1ALaiV5.cjs} +2 -2
  115. package/dist/{menu-popover-jTTxzTGZ.cjs.map → menu-popover-D1ALaiV5.cjs.map} +1 -1
  116. package/dist/{menu-popover-SiOOwab-.js → menu-popover-DQHDIw-8.js} +12 -12
  117. package/dist/{menu-popover-SiOOwab-.js.map → menu-popover-DQHDIw-8.js.map} +1 -1
  118. package/dist/tokens.json +1 -1
  119. package/package.json +1 -1
  120. package/dist/index-DF8JisYI.cjs +0 -2
package/dist/index.d.ts CHANGED
@@ -134,10 +134,11 @@ export declare type CollapsibleProps = {
134
134
  summary: ReactNode;
135
135
  };
136
136
 
137
- export declare const Controls: ({ children, className, overflow, overflowAccessibleLabel, variant, ...props }: ControlsProps) => JSX.Element | null;
137
+ export declare const Controls: ({ children, className, maxVisibleButtons, overflow, overflowAccessibleLabel, variant, ...props }: ControlsProps) => JSX.Element | null;
138
138
 
139
139
  export declare type ControlsProps = React.HTMLAttributes<HTMLDivElement> & {
140
140
  children?: React.ReactNode;
141
+ maxVisibleButtons?: number;
141
142
  overflow?: 'menu';
142
143
  overflowAccessibleLabel?: string;
143
144
  variant?: keyof typeof variants_6;
@@ -904,6 +905,7 @@ declare const variants_5: {
904
905
 
905
906
  declare const variants_6: {
906
907
  default: string;
908
+ embedded: string;
907
909
  fixed: string;
908
910
  inline: string;
909
911
  };
package/dist/index.js CHANGED
@@ -27,7 +27,7 @@ import { Header as _ } from "./components/header/index.js";
27
27
  import { Icon as oo } from "./components/icon/index.js";
28
28
  import { Iframe as eo } from "./components/iframe/index.js";
29
29
  import { Image as po } from "./components/image/index.js";
30
- import { I as xo } from "./index-DE2nzqL5.js";
30
+ import { I as xo } from "./index-BIV5OwVJ.js";
31
31
  import { Link as ao } from "./components/link/index.js";
32
32
  import { List as io } from "./components/list/index.js";
33
33
  import { Loading as no } from "./components/loading/index.js";
@@ -1,2 +1,2 @@
1
- "use strict";require('./assets/menu-popover.css');const i=require("react/jsx-runtime"),w=require("./classix-5H4IWnMA.cjs"),c=require("react"),y=require("./components/list/index.cjs"),q=require("./components/icon/index.cjs"),j=require("./components/popover/index.cjs"),A="_list_z7awx_3",k="_item_z7awx_15",z="_active_z7awx_38",I="_danger_z7awx_47",a={list:A,item:k,active:z,danger:I},C=o=>Array.from((o==null?void 0:o.querySelectorAll('[role="menuitem"]'))??[]).filter(s=>!s.disabled);function D({actions:o,initialFocus:s,menuAccessibleLabel:l,onSelect:m,usesMenuSemantics:t=!1}){const d=c.useRef(null),u=c.useCallback(e=>{const n=C(d.current);if(n.length===0)return;if(e==="first"||e==="last"){n[e==="first"?0:n.length-1].focus();return}const r=n.indexOf(document.activeElement),p=e==="next"?(r+1)%n.length:(r-1+n.length)%n.length;n[p].focus()},[]);c.useEffect(()=>{t&&u(s??"first")},[u,s,t]);const g=e=>{if(!t)return;const r={ArrowDown:"next",ArrowUp:"previous",End:"last",Home:"first"}[e.key];r&&(e.preventDefault(),u(r))};return i.jsx(y.List,{"aria-label":l,className:a.list,onKeyDown:g,ref:d,role:t?"menu":void 0,"data-component":"menuactionlist",children:o.map(({button:e,id:n,isActive:r,isDanger:p,value:v},h)=>i.jsx("li",{role:t?"none":void 0,children:c.cloneElement(e,{"aria-current":r?"true":e.props["aria-current"],className:w.t(e.props.className,a.item,r&&a.active,p&&a.danger),onClick:f=>{var x,_;(_=(x=e.props).onClick)==null||_.call(x,f),m(v,f)},role:t?"menuitem":e.props.role,variant:"tertiary"})},n??e.key??h))})}const E=({children:o,inline:s,triggerAccessibleLabel:l,triggerIcon:m="dots",triggerLabel:t})=>i.jsx(j.Popover,{inline:s,triggerAccessibleLabel:l,triggerAriaHasPopup:"menu",triggerButtonContent:i.jsxs(i.Fragment,{children:[t,i.jsx(q.Icon,{gap:t?"left":"none",name:m,size:"medium"})]}),"data-component":"menupopover",children:o});exports.MenuActionList=D;exports.MenuPopover=E;
2
- //# sourceMappingURL=menu-popover-jTTxzTGZ.cjs.map
1
+ "use strict";require('./assets/menu-popover.css');const i=require("react/jsx-runtime"),h=require("./classix-5H4IWnMA.cjs"),c=require("react"),k=require("./components/list/index.cjs"),y=require("./components/icon/index.cjs"),j=require("./components/popover/index.cjs"),A="_list_25aqk_3",w="_item_25aqk_15",I="_active_25aqk_38",C="_danger_25aqk_47",a={list:A,item:w,active:I,danger:C},D=o=>Array.from((o==null?void 0:o.querySelectorAll('[role="menuitem"]'))??[]).filter(s=>!s.disabled);function E({actions:o,initialFocus:s,menuAccessibleLabel:l,onSelect:m,usesMenuSemantics:t=!1}){const d=c.useRef(null),u=c.useCallback(e=>{const n=D(d.current);if(n.length===0)return;if(e==="first"||e==="last"){n[e==="first"?0:n.length-1].focus();return}const r=n.indexOf(document.activeElement),p=e==="next"?(r+1)%n.length:(r-1+n.length)%n.length;n[p].focus()},[]);c.useEffect(()=>{t&&u(s??"first")},[u,s,t]);const g=e=>{if(!t)return;const r={ArrowDown:"next",ArrowUp:"previous",End:"last",Home:"first"}[e.key];r&&(e.preventDefault(),u(r))};return i.jsx(k.List,{"aria-label":l,className:a.list,onKeyDown:g,ref:d,role:t?"menu":void 0,"data-component":"menuactionlist",children:o.map(({button:e,id:n,isActive:r,isDanger:p,value:v},q)=>i.jsx("li",{role:t?"none":void 0,children:c.cloneElement(e,{"aria-current":r?"true":e.props["aria-current"],className:h.t(e.props.className,a.item,r&&a.active,p&&a.danger),onClick:f=>{var _,x;(x=(_=e.props).onClick)==null||x.call(_,f),m(v,f)},role:t?"menuitem":e.props.role,variant:"tertiary"})},n??e.key??q))})}const P=({children:o,inline:s,triggerAccessibleLabel:l,triggerIcon:m="dots",triggerLabel:t})=>i.jsx(j.Popover,{inline:s,triggerAccessibleLabel:l,triggerAriaHasPopup:"menu",triggerButtonContent:i.jsxs(i.Fragment,{children:[t,i.jsx(y.Icon,{gap:t?"left":"none",name:m,size:"medium"})]}),"data-component":"menupopover",children:o});exports.MenuActionList=E;exports.MenuPopover=P;
2
+ //# sourceMappingURL=menu-popover-D1ALaiV5.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"menu-popover-jTTxzTGZ.cjs","sources":["../src/components/menu/action-list.tsx","../src/components/menu/menu-popover.tsx"],"sourcesContent":["import cx from 'classix';\nimport { cloneElement, useCallback, useEffect, useRef } from 'react';\n\nimport { type ButtonProps } from '../button';\nimport { List } from '../list';\nimport { type PopoverInitialFocus } from '../popover';\nimport styles from './styles.module.css';\n\nexport type MenuAction<T> = {\n button: React.ReactElement<ButtonProps>;\n id?: React.Key;\n isActive?: boolean;\n isDanger?: boolean;\n value: T;\n};\n\ntype MenuFocusTarget = 'first' | 'last' | 'next' | 'previous';\n\nconst getFocusableItems = (list: HTMLUListElement | HTMLOListElement | null) =>\n Array.from(list?.querySelectorAll<HTMLButtonElement>('[role=\"menuitem\"]') ?? []).filter(\n (item) => !item.disabled\n );\n\nexport function MenuActionList<T>({\n actions,\n initialFocus,\n menuAccessibleLabel,\n onSelect,\n usesMenuSemantics = false,\n}: {\n actions: MenuAction<T>[];\n initialFocus?: PopoverInitialFocus;\n menuAccessibleLabel?: string;\n onSelect: (value: T, event: React.MouseEvent<HTMLButtonElement>) => void;\n usesMenuSemantics?: boolean;\n}) {\n const listRef = useRef<HTMLUListElement | HTMLOListElement>(null);\n\n const focusItem = useCallback((target: MenuFocusTarget) => {\n const items = getFocusableItems(listRef.current);\n if (items.length === 0) return;\n\n if (target === 'first' || target === 'last') {\n items[target === 'first' ? 0 : items.length - 1].focus();\n return;\n }\n\n const currentIndex = items.indexOf(document.activeElement as HTMLButtonElement);\n const nextIndex =\n target === 'next'\n ? (currentIndex + 1) % items.length\n : (currentIndex - 1 + items.length) % items.length;\n items[nextIndex].focus();\n }, []);\n\n useEffect(() => {\n if (usesMenuSemantics) focusItem(initialFocus ?? 'first');\n }, [focusItem, initialFocus, usesMenuSemantics]);\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLUListElement>) => {\n if (!usesMenuSemantics) return;\n\n const targets = {\n ArrowDown: 'next',\n ArrowUp: 'previous',\n End: 'last',\n Home: 'first',\n } as const;\n const target = targets[event.key as keyof typeof targets];\n if (!target) return;\n\n event.preventDefault();\n focusItem(target);\n };\n\n return (\n <List\n aria-label={menuAccessibleLabel}\n className={styles.list}\n onKeyDown={handleKeyDown}\n ref={listRef}\n role={usesMenuSemantics ? 'menu' : undefined}\n >\n {actions.map(({ button, id, isActive, isDanger, value }, index) => (\n <li\n key={id ?? button.key ?? index}\n role={usesMenuSemantics ? 'none' : undefined}\n >\n {cloneElement(button, {\n 'aria-current': isActive ? 'true' : button.props['aria-current'],\n className: cx(\n button.props.className,\n styles.item,\n isActive && styles.active,\n isDanger && styles.danger\n ),\n onClick: (event: React.MouseEvent<HTMLButtonElement>) => {\n button.props.onClick?.(event);\n onSelect(value, event);\n },\n role: usesMenuSemantics ? 'menuitem' : button.props.role,\n variant: 'tertiary',\n })}\n </li>\n ))}\n </List>\n );\n}\n","import { Icon } from '../icon';\nimport { type IconName } from '../icon/icons';\nimport { Popover, type PopoverProps } from '../popover';\n\nexport const MenuPopover = ({\n children,\n inline,\n triggerAccessibleLabel,\n triggerIcon = 'dots',\n triggerLabel,\n}: Pick<PopoverProps, 'children' | 'inline' | 'triggerAccessibleLabel'> & {\n triggerIcon?: IconName;\n triggerLabel?: React.ReactNode;\n}) => (\n <Popover\n inline={inline}\n triggerAccessibleLabel={triggerAccessibleLabel}\n triggerAriaHasPopup='menu'\n triggerButtonContent={\n <>\n {triggerLabel}\n <Icon\n gap={triggerLabel ? 'left' : 'none'}\n name={triggerIcon}\n size='medium'\n />\n </>\n }\n >\n {children}\n </Popover>\n);\n"],"names":["getFocusableItems","list","Array","from","querySelectorAll","filter","item","disabled","MenuActionList","actions","initialFocus","menuAccessibleLabel","onSelect","usesMenuSemantics","listRef","useRef","focusItem","useCallback","target","items","current","length","focus","currentIndex","indexOf","document","activeElement","nextIndex","useEffect","handleKeyDown","event","ArrowDown","ArrowUp","End","Home","key","preventDefault","List","styles","undefined","map","button","id","isActive","isDanger","value","index","jsx","cloneElement","props","className","cx","active","danger","onClick","role","variant","MenuPopover","children","inline","triggerAccessibleLabel","triggerIcon","triggerLabel","Popover","jsxs","Fragment","Icon"],"mappings":"0VAkBMA,EAAqBC,GACzBC,MAAMC,MAAKF,GAAAA,YAAAA,EAAMG,iBAAoC,uBAAwB,CAAA,CAAE,EAAEC,OAC9EC,GAAS,CAACA,EAAKC,QAClB,EAEK,SAASC,EAAkB,CAChCC,QAAAA,EACAC,aAAAA,EACAC,oBAAAA,EACAC,SAAAA,EACAC,kBAAAA,EAAoB,EAOtB,EAAG,CACD,MAAMC,EAAUC,EAAAA,OAA4C,IAAI,EAE1DC,EAAYC,cAAaC,GAA4B,CACzD,MAAMC,EAAQnB,EAAkBc,EAAQM,OAAO,EAC/C,GAAID,EAAME,SAAW,EAAG,OAExB,GAAIH,IAAW,SAAWA,IAAW,OAAQ,CAC3CC,EAAMD,IAAW,QAAU,EAAIC,EAAME,OAAS,CAAC,EAAEC,MAAAA,EACjD,MACF,CAEA,MAAMC,EAAeJ,EAAMK,QAAQC,SAASC,aAAkC,EACxEC,EACJT,IAAW,QACNK,EAAe,GAAKJ,EAAME,QAC1BE,EAAe,EAAIJ,EAAME,QAAUF,EAAME,OAChDF,EAAMQ,CAAS,EAAEL,MAAAA,CACnB,EAAG,CAAA,CAAE,EAELM,EAAAA,UAAU,IAAM,CACVf,GAAmBG,EAAUN,GAAgB,OAAO,CAC1D,EAAG,CAACM,EAAWN,EAAcG,CAAiB,CAAC,EAE/C,MAAMgB,EAAiBC,GAAiD,CACtE,GAAI,CAACjB,EAAmB,OAQxB,MAAMK,EANU,CACda,UAAW,OACXC,QAAS,WACTC,IAAK,OACLC,KAAM,OAAA,EAEeJ,EAAMK,GAA2B,EACnDjB,IAELY,EAAMM,eAAAA,EACNpB,EAAUE,CAAM,EAClB,EAEA,aACGmB,OAAA,CACC,aAAY1B,EACZ,UAAW2B,EAAOrC,KAClB,UAAW4B,EACX,IAAKf,EACL,KAAMD,EAAoB,OAAS0B,OAAU,iBAAA,iBAE5C9B,SAAAA,EAAQ+B,IAAI,CAAC,CAAEC,OAAAA,EAAQC,GAAAA,EAAIC,SAAAA,EAAUC,SAAAA,EAAUC,MAAAA,CAAAA,EAASC,IACvDC,EAAAA,IAAC,KAAA,CAEC,KAAMlC,EAAoB,OAAS0B,OAElCS,SAAAA,EAAAA,aAAaP,EAAQ,CACpB,eAAgBE,EAAW,OAASF,EAAOQ,MAAM,cAAc,EAC/DC,UAAWC,EAAAA,EACTV,EAAOQ,MAAMC,UACbZ,EAAOhC,KACPqC,GAAYL,EAAOc,OACnBR,GAAYN,EAAOe,MACrB,EACAC,QAAUxB,GAA+C,UACvDW,GAAAA,EAAAA,EAAOQ,OAAMK,UAAbb,MAAAA,EAAAA,KAAAA,EAAuBX,GACvBlB,EAASiC,EAAOf,CAAK,CACvB,EACAyB,KAAM1C,EAAoB,WAAa4B,EAAOQ,MAAMM,KACpDC,QAAS,UAAA,CACV,CAAA,EAjBId,GAAMD,EAAON,KAAOW,CAkB3B,CACD,EACH,CAEJ,CCvGO,MAAMW,EAAcA,CAAC,CAC1BC,SAAAA,EACAC,OAAAA,EACAC,uBAAAA,EACAC,YAAAA,EAAc,OACdC,aAAAA,CAIF,UACGC,EAAAA,QAAA,CACC,OAAAJ,EACA,uBAAAC,EACA,oBAAoB,OACpB,qBACEI,EAAAA,KAAAC,EAAAA,SAAA,CACGH,SAAAA,CAAAA,EACDf,EAAAA,IAACmB,EAAAA,MACC,IAAKJ,EAAe,OAAS,OAC7B,KAAMD,EACN,KAAK,QAAA,CAAQ,CAAA,CAAA,CAEjB,EACD,iBAAA,cAEAH,SAAAA,CAAAA,CACH"}
1
+ {"version":3,"file":"menu-popover-D1ALaiV5.cjs","sources":["../src/components/menu/action-list.tsx","../src/components/menu/menu-popover.tsx"],"sourcesContent":["import cx from 'classix';\nimport { cloneElement, useCallback, useEffect, useRef } from 'react';\n\nimport { type ButtonProps } from '../button';\nimport { List } from '../list';\nimport { type PopoverInitialFocus } from '../popover';\nimport styles from './styles.module.css';\n\nexport type MenuAction<T> = {\n button: React.ReactElement<ButtonProps>;\n id?: React.Key;\n isActive?: boolean;\n isDanger?: boolean;\n value: T;\n};\n\ntype MenuFocusTarget = 'first' | 'last' | 'next' | 'previous';\n\nconst getFocusableItems = (list: HTMLUListElement | HTMLOListElement | null) =>\n Array.from(list?.querySelectorAll<HTMLButtonElement>('[role=\"menuitem\"]') ?? []).filter(\n (item) => !item.disabled\n );\n\nexport function MenuActionList<T>({\n actions,\n initialFocus,\n menuAccessibleLabel,\n onSelect,\n usesMenuSemantics = false,\n}: {\n actions: MenuAction<T>[];\n initialFocus?: PopoverInitialFocus;\n menuAccessibleLabel?: string;\n onSelect: (value: T, event: React.MouseEvent<HTMLButtonElement>) => void;\n usesMenuSemantics?: boolean;\n}) {\n const listRef = useRef<HTMLUListElement | HTMLOListElement>(null);\n\n const focusItem = useCallback((target: MenuFocusTarget) => {\n const items = getFocusableItems(listRef.current);\n if (items.length === 0) return;\n\n if (target === 'first' || target === 'last') {\n items[target === 'first' ? 0 : items.length - 1].focus();\n return;\n }\n\n const currentIndex = items.indexOf(document.activeElement as HTMLButtonElement);\n const nextIndex =\n target === 'next'\n ? (currentIndex + 1) % items.length\n : (currentIndex - 1 + items.length) % items.length;\n items[nextIndex].focus();\n }, []);\n\n useEffect(() => {\n if (usesMenuSemantics) focusItem(initialFocus ?? 'first');\n }, [focusItem, initialFocus, usesMenuSemantics]);\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLUListElement>) => {\n if (!usesMenuSemantics) return;\n\n const targets = {\n ArrowDown: 'next',\n ArrowUp: 'previous',\n End: 'last',\n Home: 'first',\n } as const;\n const target = targets[event.key as keyof typeof targets];\n if (!target) return;\n\n event.preventDefault();\n focusItem(target);\n };\n\n return (\n <List\n aria-label={menuAccessibleLabel}\n className={styles.list}\n onKeyDown={handleKeyDown}\n ref={listRef}\n role={usesMenuSemantics ? 'menu' : undefined}\n >\n {actions.map(({ button, id, isActive, isDanger, value }, index) => (\n <li\n key={id ?? button.key ?? index}\n role={usesMenuSemantics ? 'none' : undefined}\n >\n {cloneElement(button, {\n 'aria-current': isActive ? 'true' : button.props['aria-current'],\n className: cx(\n button.props.className,\n styles.item,\n isActive && styles.active,\n isDanger && styles.danger\n ),\n onClick: (event: React.MouseEvent<HTMLButtonElement>) => {\n button.props.onClick?.(event);\n onSelect(value, event);\n },\n role: usesMenuSemantics ? 'menuitem' : button.props.role,\n variant: 'tertiary',\n })}\n </li>\n ))}\n </List>\n );\n}\n","import { Icon } from '../icon';\nimport { type IconName } from '../icon/icons';\nimport { Popover, type PopoverProps } from '../popover';\n\nexport const MenuPopover = ({\n children,\n inline,\n triggerAccessibleLabel,\n triggerIcon = 'dots',\n triggerLabel,\n}: Pick<PopoverProps, 'children' | 'inline' | 'triggerAccessibleLabel'> & {\n triggerIcon?: IconName;\n triggerLabel?: React.ReactNode;\n}) => (\n <Popover\n inline={inline}\n triggerAccessibleLabel={triggerAccessibleLabel}\n triggerAriaHasPopup='menu'\n triggerButtonContent={\n <>\n {triggerLabel}\n <Icon\n gap={triggerLabel ? 'left' : 'none'}\n name={triggerIcon}\n size='medium'\n />\n </>\n }\n >\n {children}\n </Popover>\n);\n"],"names":["getFocusableItems","list","Array","from","querySelectorAll","filter","item","disabled","MenuActionList","actions","initialFocus","menuAccessibleLabel","onSelect","usesMenuSemantics","listRef","useRef","focusItem","useCallback","target","items","current","length","focus","currentIndex","indexOf","document","activeElement","nextIndex","useEffect","handleKeyDown","event","ArrowDown","ArrowUp","End","Home","key","preventDefault","List","styles","undefined","map","button","id","isActive","isDanger","value","index","jsx","cloneElement","props","className","cx","active","danger","onClick","role","variant","MenuPopover","children","inline","triggerAccessibleLabel","triggerIcon","triggerLabel","Popover","jsxs","Fragment","Icon"],"mappings":"0VAkBMA,EAAqBC,GACzBC,MAAMC,MAAKF,GAAAA,YAAAA,EAAMG,iBAAoC,uBAAwB,CAAA,CAAE,EAAEC,OAC9EC,GAAS,CAACA,EAAKC,QAClB,EAEK,SAASC,EAAkB,CAChCC,QAAAA,EACAC,aAAAA,EACAC,oBAAAA,EACAC,SAAAA,EACAC,kBAAAA,EAAoB,EAOtB,EAAG,CACD,MAAMC,EAAUC,EAAAA,OAA4C,IAAI,EAE1DC,EAAYC,cAAaC,GAA4B,CACzD,MAAMC,EAAQnB,EAAkBc,EAAQM,OAAO,EAC/C,GAAID,EAAME,SAAW,EAAG,OAExB,GAAIH,IAAW,SAAWA,IAAW,OAAQ,CAC3CC,EAAMD,IAAW,QAAU,EAAIC,EAAME,OAAS,CAAC,EAAEC,MAAAA,EACjD,MACF,CAEA,MAAMC,EAAeJ,EAAMK,QAAQC,SAASC,aAAkC,EACxEC,EACJT,IAAW,QACNK,EAAe,GAAKJ,EAAME,QAC1BE,EAAe,EAAIJ,EAAME,QAAUF,EAAME,OAChDF,EAAMQ,CAAS,EAAEL,MAAAA,CACnB,EAAG,CAAA,CAAE,EAELM,EAAAA,UAAU,IAAM,CACVf,GAAmBG,EAAUN,GAAgB,OAAO,CAC1D,EAAG,CAACM,EAAWN,EAAcG,CAAiB,CAAC,EAE/C,MAAMgB,EAAiBC,GAAiD,CACtE,GAAI,CAACjB,EAAmB,OAQxB,MAAMK,EANU,CACda,UAAW,OACXC,QAAS,WACTC,IAAK,OACLC,KAAM,OAAA,EAEeJ,EAAMK,GAA2B,EACnDjB,IAELY,EAAMM,eAAAA,EACNpB,EAAUE,CAAM,EAClB,EAEA,aACGmB,OAAA,CACC,aAAY1B,EACZ,UAAW2B,EAAOrC,KAClB,UAAW4B,EACX,IAAKf,EACL,KAAMD,EAAoB,OAAS0B,OAAU,iBAAA,iBAE5C9B,SAAAA,EAAQ+B,IAAI,CAAC,CAAEC,OAAAA,EAAQC,GAAAA,EAAIC,SAAAA,EAAUC,SAAAA,EAAUC,MAAAA,CAAAA,EAASC,IACvDC,EAAAA,IAAC,KAAA,CAEC,KAAMlC,EAAoB,OAAS0B,OAElCS,SAAAA,EAAAA,aAAaP,EAAQ,CACpB,eAAgBE,EAAW,OAASF,EAAOQ,MAAM,cAAc,EAC/DC,UAAWC,EAAAA,EACTV,EAAOQ,MAAMC,UACbZ,EAAOhC,KACPqC,GAAYL,EAAOc,OACnBR,GAAYN,EAAOe,MACrB,EACAC,QAAUxB,GAA+C,UACvDW,GAAAA,EAAAA,EAAOQ,OAAMK,UAAbb,MAAAA,EAAAA,KAAAA,EAAuBX,GACvBlB,EAASiC,EAAOf,CAAK,CACvB,EACAyB,KAAM1C,EAAoB,WAAa4B,EAAOQ,MAAMM,KACpDC,QAAS,UAAA,CACV,CAAA,EAjBId,GAAMD,EAAON,KAAOW,CAkB3B,CACD,EACH,CAEJ,CCvGO,MAAMW,EAAcA,CAAC,CAC1BC,SAAAA,EACAC,OAAAA,EACAC,uBAAAA,EACAC,YAAAA,EAAc,OACdC,aAAAA,CAIF,UACGC,EAAAA,QAAA,CACC,OAAAJ,EACA,uBAAAC,EACA,oBAAoB,OACpB,qBACEI,EAAAA,KAAAC,EAAAA,SAAA,CACGH,SAAAA,CAAAA,EACDf,EAAAA,IAACmB,EAAAA,MACC,IAAKJ,EAAe,OAAS,OAC7B,KAAMD,EACN,KAAK,QAAA,CAAQ,CAAA,CAAA,CAEjB,EACD,iBAAA,cAEAH,SAAAA,CAAAA,CACH"}
@@ -1,10 +1,10 @@
1
- import { jsx as s, jsxs as h, Fragment as w } from "react/jsx-runtime";
1
+ import { jsx as s, jsxs as k, Fragment as x } from "react/jsx-runtime";
2
2
  import { t as y } from "./classix-DG18itHa.js";
3
- import { useRef as k, useCallback as z, useEffect as A, cloneElement as I } from "react";
3
+ import { useRef as q, useCallback as w, useEffect as A, cloneElement as I } from "react";
4
4
  import { List as C } from "./components/list/index.js";
5
5
  import { Icon as D } from "./components/icon/index.js";
6
6
  import { Popover as E } from "./components/popover/index.js";
7
- import './assets/menu-popover.css';const N = "_list_z7awx_3", P = "_item_z7awx_15", j = "_active_z7awx_38", H = "_danger_z7awx_47", i = {
7
+ import './assets/menu-popover.css';const N = "_list_25aqk_3", P = "_item_25aqk_15", j = "_active_25aqk_38", H = "_danger_25aqk_47", i = {
8
8
  list: N,
9
9
  item: P,
10
10
  active: j,
@@ -17,7 +17,7 @@ function U({
17
17
  onSelect: c,
18
18
  usesMenuSemantics: t = !1
19
19
  }) {
20
- const p = k(null), m = z((e) => {
20
+ const p = q(null), m = w((e) => {
21
21
  const r = K(p.current);
22
22
  if (r.length === 0) return;
23
23
  if (e === "first" || e === "last") {
@@ -30,7 +30,7 @@ function U({
30
30
  A(() => {
31
31
  t && m(a ?? "first");
32
32
  }, [m, a, t]);
33
- const x = (e) => {
33
+ const _ = (e) => {
34
34
  if (!t) return;
35
35
  const o = {
36
36
  ArrowDown: "next",
@@ -40,22 +40,22 @@ function U({
40
40
  }[e.key];
41
41
  o && (e.preventDefault(), m(o));
42
42
  };
43
- return /* @__PURE__ */ s(C, { "aria-label": l, className: i.list, onKeyDown: x, ref: p, role: t ? "menu" : void 0, "data-component": "menuactionlist", children: n.map(({
43
+ return /* @__PURE__ */ s(C, { "aria-label": l, className: i.list, onKeyDown: _, ref: p, role: t ? "menu" : void 0, "data-component": "menuactionlist", children: n.map(({
44
44
  button: e,
45
45
  id: r,
46
46
  isActive: o,
47
47
  isDanger: f,
48
- value: _
49
- }, v) => /* @__PURE__ */ s("li", { role: t ? "none" : void 0, children: I(e, {
48
+ value: v
49
+ }, h) => /* @__PURE__ */ s("li", { role: t ? "none" : void 0, children: I(e, {
50
50
  "aria-current": o ? "true" : e.props["aria-current"],
51
51
  className: y(e.props.className, i.item, o && i.active, f && i.danger),
52
52
  onClick: (d) => {
53
53
  var u, g;
54
- (g = (u = e.props).onClick) == null || g.call(u, d), c(_, d);
54
+ (g = (u = e.props).onClick) == null || g.call(u, d), c(v, d);
55
55
  },
56
56
  role: t ? "menuitem" : e.props.role,
57
57
  variant: "tertiary"
58
- }) }, r ?? e.key ?? v)) });
58
+ }) }, r ?? e.key ?? h)) });
59
59
  }
60
60
  const G = ({
61
61
  children: n,
@@ -63,7 +63,7 @@ const G = ({
63
63
  triggerAccessibleLabel: l,
64
64
  triggerIcon: c = "dots",
65
65
  triggerLabel: t
66
- }) => /* @__PURE__ */ s(E, { inline: a, triggerAccessibleLabel: l, triggerAriaHasPopup: "menu", triggerButtonContent: /* @__PURE__ */ h(w, { children: [
66
+ }) => /* @__PURE__ */ s(E, { inline: a, triggerAccessibleLabel: l, triggerAriaHasPopup: "menu", triggerButtonContent: /* @__PURE__ */ k(x, { children: [
67
67
  t,
68
68
  /* @__PURE__ */ s(D, { gap: t ? "left" : "none", name: c, size: "medium" })
69
69
  ] }), "data-component": "menupopover", children: n });
@@ -71,4 +71,4 @@ export {
71
71
  U as M,
72
72
  G as a
73
73
  };
74
- //# sourceMappingURL=menu-popover-SiOOwab-.js.map
74
+ //# sourceMappingURL=menu-popover-DQHDIw-8.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"menu-popover-SiOOwab-.js","sources":["../src/components/menu/action-list.tsx","../src/components/menu/menu-popover.tsx"],"sourcesContent":["import cx from 'classix';\nimport { cloneElement, useCallback, useEffect, useRef } from 'react';\n\nimport { type ButtonProps } from '../button';\nimport { List } from '../list';\nimport { type PopoverInitialFocus } from '../popover';\nimport styles from './styles.module.css';\n\nexport type MenuAction<T> = {\n button: React.ReactElement<ButtonProps>;\n id?: React.Key;\n isActive?: boolean;\n isDanger?: boolean;\n value: T;\n};\n\ntype MenuFocusTarget = 'first' | 'last' | 'next' | 'previous';\n\nconst getFocusableItems = (list: HTMLUListElement | HTMLOListElement | null) =>\n Array.from(list?.querySelectorAll<HTMLButtonElement>('[role=\"menuitem\"]') ?? []).filter(\n (item) => !item.disabled\n );\n\nexport function MenuActionList<T>({\n actions,\n initialFocus,\n menuAccessibleLabel,\n onSelect,\n usesMenuSemantics = false,\n}: {\n actions: MenuAction<T>[];\n initialFocus?: PopoverInitialFocus;\n menuAccessibleLabel?: string;\n onSelect: (value: T, event: React.MouseEvent<HTMLButtonElement>) => void;\n usesMenuSemantics?: boolean;\n}) {\n const listRef = useRef<HTMLUListElement | HTMLOListElement>(null);\n\n const focusItem = useCallback((target: MenuFocusTarget) => {\n const items = getFocusableItems(listRef.current);\n if (items.length === 0) return;\n\n if (target === 'first' || target === 'last') {\n items[target === 'first' ? 0 : items.length - 1].focus();\n return;\n }\n\n const currentIndex = items.indexOf(document.activeElement as HTMLButtonElement);\n const nextIndex =\n target === 'next'\n ? (currentIndex + 1) % items.length\n : (currentIndex - 1 + items.length) % items.length;\n items[nextIndex].focus();\n }, []);\n\n useEffect(() => {\n if (usesMenuSemantics) focusItem(initialFocus ?? 'first');\n }, [focusItem, initialFocus, usesMenuSemantics]);\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLUListElement>) => {\n if (!usesMenuSemantics) return;\n\n const targets = {\n ArrowDown: 'next',\n ArrowUp: 'previous',\n End: 'last',\n Home: 'first',\n } as const;\n const target = targets[event.key as keyof typeof targets];\n if (!target) return;\n\n event.preventDefault();\n focusItem(target);\n };\n\n return (\n <List\n aria-label={menuAccessibleLabel}\n className={styles.list}\n onKeyDown={handleKeyDown}\n ref={listRef}\n role={usesMenuSemantics ? 'menu' : undefined}\n >\n {actions.map(({ button, id, isActive, isDanger, value }, index) => (\n <li\n key={id ?? button.key ?? index}\n role={usesMenuSemantics ? 'none' : undefined}\n >\n {cloneElement(button, {\n 'aria-current': isActive ? 'true' : button.props['aria-current'],\n className: cx(\n button.props.className,\n styles.item,\n isActive && styles.active,\n isDanger && styles.danger\n ),\n onClick: (event: React.MouseEvent<HTMLButtonElement>) => {\n button.props.onClick?.(event);\n onSelect(value, event);\n },\n role: usesMenuSemantics ? 'menuitem' : button.props.role,\n variant: 'tertiary',\n })}\n </li>\n ))}\n </List>\n );\n}\n","import { Icon } from '../icon';\nimport { type IconName } from '../icon/icons';\nimport { Popover, type PopoverProps } from '../popover';\n\nexport const MenuPopover = ({\n children,\n inline,\n triggerAccessibleLabel,\n triggerIcon = 'dots',\n triggerLabel,\n}: Pick<PopoverProps, 'children' | 'inline' | 'triggerAccessibleLabel'> & {\n triggerIcon?: IconName;\n triggerLabel?: React.ReactNode;\n}) => (\n <Popover\n inline={inline}\n triggerAccessibleLabel={triggerAccessibleLabel}\n triggerAriaHasPopup='menu'\n triggerButtonContent={\n <>\n {triggerLabel}\n <Icon\n gap={triggerLabel ? 'left' : 'none'}\n name={triggerIcon}\n size='medium'\n />\n </>\n }\n >\n {children}\n </Popover>\n);\n"],"names":["getFocusableItems","list","Array","from","querySelectorAll","filter","item","disabled","MenuActionList","actions","initialFocus","menuAccessibleLabel","onSelect","usesMenuSemantics","listRef","useRef","focusItem","useCallback","target","items","current","length","focus","currentIndex","indexOf","document","activeElement","nextIndex","useEffect","handleKeyDown","event","ArrowDown","ArrowUp","End","Home","key","preventDefault","List","styles","undefined","map","button","id","isActive","isDanger","value","index","jsx","cloneElement","props","className","cx","active","danger","onClick","role","variant","MenuPopover","children","inline","triggerAccessibleLabel","triggerIcon","triggerLabel","Popover","jsxs","Fragment","Icon"],"mappings":"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"}
1
+ {"version":3,"file":"menu-popover-DQHDIw-8.js","sources":["../src/components/menu/action-list.tsx","../src/components/menu/menu-popover.tsx"],"sourcesContent":["import cx from 'classix';\nimport { cloneElement, useCallback, useEffect, useRef } from 'react';\n\nimport { type ButtonProps } from '../button';\nimport { List } from '../list';\nimport { type PopoverInitialFocus } from '../popover';\nimport styles from './styles.module.css';\n\nexport type MenuAction<T> = {\n button: React.ReactElement<ButtonProps>;\n id?: React.Key;\n isActive?: boolean;\n isDanger?: boolean;\n value: T;\n};\n\ntype MenuFocusTarget = 'first' | 'last' | 'next' | 'previous';\n\nconst getFocusableItems = (list: HTMLUListElement | HTMLOListElement | null) =>\n Array.from(list?.querySelectorAll<HTMLButtonElement>('[role=\"menuitem\"]') ?? []).filter(\n (item) => !item.disabled\n );\n\nexport function MenuActionList<T>({\n actions,\n initialFocus,\n menuAccessibleLabel,\n onSelect,\n usesMenuSemantics = false,\n}: {\n actions: MenuAction<T>[];\n initialFocus?: PopoverInitialFocus;\n menuAccessibleLabel?: string;\n onSelect: (value: T, event: React.MouseEvent<HTMLButtonElement>) => void;\n usesMenuSemantics?: boolean;\n}) {\n const listRef = useRef<HTMLUListElement | HTMLOListElement>(null);\n\n const focusItem = useCallback((target: MenuFocusTarget) => {\n const items = getFocusableItems(listRef.current);\n if (items.length === 0) return;\n\n if (target === 'first' || target === 'last') {\n items[target === 'first' ? 0 : items.length - 1].focus();\n return;\n }\n\n const currentIndex = items.indexOf(document.activeElement as HTMLButtonElement);\n const nextIndex =\n target === 'next'\n ? (currentIndex + 1) % items.length\n : (currentIndex - 1 + items.length) % items.length;\n items[nextIndex].focus();\n }, []);\n\n useEffect(() => {\n if (usesMenuSemantics) focusItem(initialFocus ?? 'first');\n }, [focusItem, initialFocus, usesMenuSemantics]);\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLUListElement>) => {\n if (!usesMenuSemantics) return;\n\n const targets = {\n ArrowDown: 'next',\n ArrowUp: 'previous',\n End: 'last',\n Home: 'first',\n } as const;\n const target = targets[event.key as keyof typeof targets];\n if (!target) return;\n\n event.preventDefault();\n focusItem(target);\n };\n\n return (\n <List\n aria-label={menuAccessibleLabel}\n className={styles.list}\n onKeyDown={handleKeyDown}\n ref={listRef}\n role={usesMenuSemantics ? 'menu' : undefined}\n >\n {actions.map(({ button, id, isActive, isDanger, value }, index) => (\n <li\n key={id ?? button.key ?? index}\n role={usesMenuSemantics ? 'none' : undefined}\n >\n {cloneElement(button, {\n 'aria-current': isActive ? 'true' : button.props['aria-current'],\n className: cx(\n button.props.className,\n styles.item,\n isActive && styles.active,\n isDanger && styles.danger\n ),\n onClick: (event: React.MouseEvent<HTMLButtonElement>) => {\n button.props.onClick?.(event);\n onSelect(value, event);\n },\n role: usesMenuSemantics ? 'menuitem' : button.props.role,\n variant: 'tertiary',\n })}\n </li>\n ))}\n </List>\n );\n}\n","import { Icon } from '../icon';\nimport { type IconName } from '../icon/icons';\nimport { Popover, type PopoverProps } from '../popover';\n\nexport const MenuPopover = ({\n children,\n inline,\n triggerAccessibleLabel,\n triggerIcon = 'dots',\n triggerLabel,\n}: Pick<PopoverProps, 'children' | 'inline' | 'triggerAccessibleLabel'> & {\n triggerIcon?: IconName;\n triggerLabel?: React.ReactNode;\n}) => (\n <Popover\n inline={inline}\n triggerAccessibleLabel={triggerAccessibleLabel}\n triggerAriaHasPopup='menu'\n triggerButtonContent={\n <>\n {triggerLabel}\n <Icon\n gap={triggerLabel ? 'left' : 'none'}\n name={triggerIcon}\n size='medium'\n />\n </>\n }\n >\n {children}\n </Popover>\n);\n"],"names":["getFocusableItems","list","Array","from","querySelectorAll","filter","item","disabled","MenuActionList","actions","initialFocus","menuAccessibleLabel","onSelect","usesMenuSemantics","listRef","useRef","focusItem","useCallback","target","items","current","length","focus","currentIndex","indexOf","document","activeElement","nextIndex","useEffect","handleKeyDown","event","ArrowDown","ArrowUp","End","Home","key","preventDefault","List","styles","undefined","map","button","id","isActive","isDanger","value","index","jsx","cloneElement","props","className","cx","active","danger","onClick","role","variant","MenuPopover","children","inline","triggerAccessibleLabel","triggerIcon","triggerLabel","Popover","jsxs","Fragment","Icon"],"mappings":"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"}
package/dist/tokens.json CHANGED
@@ -365,7 +365,7 @@
365
365
  },
366
366
  "com.solibo": {
367
367
  "packageName": "@solibo/solibo-ui",
368
- "packageVersion": "1.0.15"
368
+ "packageVersion": "1.0.16"
369
369
  }
370
370
  },
371
371
  "$name": "Solibo UI Tokens",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@solibo/solibo-ui",
3
- "version": "1.0.15",
3
+ "version": "1.0.16",
4
4
  "type": "module",
5
5
  "scripts": {
6
6
  "dev": "pnpm run tokens:build && vite build --watch",
@@ -1,2 +0,0 @@
1
- "use strict";require('./assets/index45.css');const o=require("react/jsx-runtime"),d=require("./classix-5H4IWnMA.cjs"),h=require("react"),w=require("./icons-DaZGJzI0.cjs"),S=require("./use-touched-Bq5Gjbpz.cjs");function z(t){return t&&`${t[0].toLocaleUpperCase()}${t.slice(1)}`}function T(t){const n=z(t);return n&&!n.endsWith(":")?`${n}:`:n}const G="_input_151j9_3",H="_touched_151j9_43",U="_label_151j9_48",W="_inline_151j9_57",k="_code_151j9_86",s={input:G,touched:H,label:U,inline:W,code:k};function A({className:t,defaultCountryCode:n="+47",disabled:c=!1,icon:_,label:p,onBlur:$,placeholder:x,ref:g,required:m,style:v,type:e="text",variant:f="default",...L}){const[j,b]=h.useState(""),[u,I]=h.useState(""),{name:B,onChange:a,pattern:F,value:l,...P}=L,{touched:N,onBlur:R}=S.useTouched(l===""),r=_&&e!=="radio"&&e!=="datetime-local"?_:void 0,q=p&&f==="inline"?T(p):p,C=r?{...v,"--icon-svg":w.iconSVG(r,!0)}:v,E=S.composeEventHandlers(R,$);h.useEffect(()=>{if(a&&e==="tel"){const i={name:B,value:u?(j||n).split(" ").join("")+u.split(" ").join(""):void 0};a({target:i,currentTarget:i})}},[j,n,B,a,u,e]),h.useEffect(()=>{e==="tel"&&!l&&(I(""),b(""))},[e,l]);const V=o.jsxs(o.Fragment,{children:[o.jsx("input",{disabled:c,hidden:!0,onChange:a,pattern:void 0,placeholder:x,ref:g,type:e,value:l}),o.jsx("input",{type:"text",className:d.t(s.code,s.input),disabled:c,maxLength:5,onChange:i=>b(i.target.value),placeholder:n,value:j}),o.jsx("input",{...P,type:"tel",className:d.t(s.input,t,N&&s.touched),"data-icon":r?"true":void 0,disabled:c,maxLength:14,name:void 0,onChange:i=>I(i.target.value),onBlur:E,pattern:F,required:m,style:C,value:u})]});return o.jsxs("label",{className:d.t(s.label,f==="inline"&&s.inline),"data-component":"input",children:[q&&o.jsx("span",{"data-required":m||void 0,children:q}),e==="tel"?V:o.jsx("input",{...L,ref:g,className:d.t(s.input,t,N&&s.touched),"data-icon":r?"true":void 0,disabled:c,onBlur:E,placeholder:x,required:m,style:C,type:e})]})}exports.Input=A;exports.formatInlineLabel=T;
2
- //# sourceMappingURL=index-DF8JisYI.cjs.map