@servicetitan/anvil2 1.40.3 → 1.42.0

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 (200) hide show
  1. package/CHANGELOG.md +55 -0
  2. package/dist/{AnvilProvider-Lh8YtV03.js → AnvilProvider-BLYCqIbb.js} +2 -2
  3. package/dist/{AnvilProvider-Lh8YtV03.js.map → AnvilProvider-BLYCqIbb.js.map} +1 -1
  4. package/dist/AnvilProvider.js +1 -1
  5. package/dist/{Avatar-B20IdOEO-Di14brYV.js → Avatar-C7cbRTCt-DCvzmr2C.js} +14 -12
  6. package/dist/Avatar-C7cbRTCt-DCvzmr2C.js.map +1 -0
  7. package/dist/{Avatar-B20IdOEO.css → Avatar-C7cbRTCt.css} +34 -19
  8. package/dist/{Avatar-hNOToS9S.js → Avatar-DREZJN2K.js} +2 -2
  9. package/dist/Avatar-DREZJN2K.js.map +1 -0
  10. package/dist/Avatar.js +1 -1
  11. package/dist/{Breadcrumbs-D_jgwoN3-Dlw-weD8.js → Breadcrumbs-B5bqrZ5D-BqK-Qfh9.js} +3 -3
  12. package/dist/{Breadcrumbs-D_jgwoN3-Dlw-weD8.js.map → Breadcrumbs-B5bqrZ5D-BqK-Qfh9.js.map} +1 -1
  13. package/dist/{Breadcrumbs-C_gan90a.js → Breadcrumbs-De8uoLi8.js} +2 -2
  14. package/dist/{Breadcrumbs-C_gan90a.js.map → Breadcrumbs-De8uoLi8.js.map} +1 -1
  15. package/dist/Breadcrumbs.js +1 -1
  16. package/dist/{Calendar-2q8zRbMK.js → Calendar-Bgpz99F2.js} +2 -2
  17. package/dist/{Calendar-2q8zRbMK.js.map → Calendar-Bgpz99F2.js.map} +1 -1
  18. package/dist/{Calendar-KVYGk3wS-CEptqxjI.js → Calendar-DD5kmVd3-CBGTR11R.js} +7 -5
  19. package/dist/{Calendar-KVYGk3wS-CEptqxjI.js.map → Calendar-DD5kmVd3-CBGTR11R.js.map} +1 -1
  20. package/dist/Calendar.js +1 -1
  21. package/dist/{Checkbox-Qucv_PK8-Bovwdnlj.js → Checkbox-DyHm7Ntt-DYw5QL3l.js} +2 -2
  22. package/dist/{Checkbox-Qucv_PK8-Bovwdnlj.js.map → Checkbox-DyHm7Ntt-DYw5QL3l.js.map} +1 -1
  23. package/dist/{Checkbox-cfgZP7Z2.js → Checkbox-zg8LVvB6.js} +2 -2
  24. package/dist/{Checkbox-cfgZP7Z2.js.map → Checkbox-zg8LVvB6.js.map} +1 -1
  25. package/dist/Checkbox.js +1 -1
  26. package/dist/Chip-DXQiqF8k.js +34 -0
  27. package/dist/Chip-DXQiqF8k.js.map +1 -0
  28. package/dist/{Chip-_daV8CmM-CTke7zH4.js → Chip-MbBEXeAm-DmAcwPRJ.js} +57 -10
  29. package/dist/Chip-MbBEXeAm-DmAcwPRJ.js.map +1 -0
  30. package/dist/{Chip-_daV8CmM.css → Chip-MbBEXeAm.css} +68 -18
  31. package/dist/Chip.js +1 -1
  32. package/dist/{Combobox-3l2SK47T.js → Combobox-D2aSaDkz.js} +7 -7
  33. package/dist/{Combobox-3l2SK47T.js.map → Combobox-D2aSaDkz.js.map} +1 -1
  34. package/dist/Combobox.js +1 -1
  35. package/dist/{DateField-BQFAvS78.js → DateField-D28_sa7P.js} +8 -8
  36. package/dist/{DateField-BQFAvS78.js.map → DateField-D28_sa7P.js.map} +1 -1
  37. package/dist/DateField.js +1 -1
  38. package/dist/{DateFieldRange-CGA5ZTRa.js → DateFieldRange-CgVqJrVg.js} +2 -2
  39. package/dist/DateFieldRange-CgVqJrVg.js.map +1 -0
  40. package/dist/DateFieldRange.js +1 -1
  41. package/dist/{DateFieldSingle-eP5l_TrQ.js → DateFieldSingle-CLoWDlPO.js} +2 -2
  42. package/dist/DateFieldSingle-CLoWDlPO.js.map +1 -0
  43. package/dist/DateFieldSingle.js +1 -1
  44. package/dist/DateFieldYearless-CXlUH0c7.js +22 -0
  45. package/dist/DateFieldYearless-CXlUH0c7.js.map +1 -0
  46. package/dist/{DateFieldRange-BRjBcR4r-CfuSiOfZ.js → DateFieldYearless-M5KDI_hn-akXtkIZA.js} +881 -579
  47. package/dist/DateFieldYearless-M5KDI_hn-akXtkIZA.js.map +1 -0
  48. package/dist/DateFieldYearless.d.ts +2 -0
  49. package/dist/DateFieldYearless.js +2 -0
  50. package/dist/DateFieldYearless.js.map +1 -0
  51. package/dist/{DaysOfTheWeek-Dl31wkmU.js → DaysOfTheWeek-ImBPjEvl.js} +2 -2
  52. package/dist/{DaysOfTheWeek-Dl31wkmU.js.map → DaysOfTheWeek-ImBPjEvl.js.map} +1 -1
  53. package/dist/DaysOfTheWeek.js +1 -1
  54. package/dist/{Dialog-CJZEBa5r.js → Dialog-BR6f-XRH.js} +10 -6
  55. package/dist/Dialog-BR6f-XRH.js.map +1 -0
  56. package/dist/Dialog.js +1 -1
  57. package/dist/{Drawer-Cj3nJc4k.js → Drawer-0ayAWgAA.js} +2 -2
  58. package/dist/{Drawer-Cj3nJc4k.js.map → Drawer-0ayAWgAA.js.map} +1 -1
  59. package/dist/Drawer.js +1 -1
  60. package/dist/{EditCard-C0hD1VPA.js → EditCard-B_n1uFkv.js} +2 -2
  61. package/dist/{EditCard-C0hD1VPA.js.map → EditCard-B_n1uFkv.js.map} +1 -1
  62. package/dist/EditCard.js +1 -1
  63. package/dist/FieldLabel-DWl5qsRY.js +13 -0
  64. package/dist/FieldLabel-DWl5qsRY.js.map +1 -0
  65. package/dist/FieldLabel.d.ts +6 -0
  66. package/dist/FieldLabel.js +2 -0
  67. package/dist/FieldLabel.js.map +1 -0
  68. package/dist/{HammerProvider-CYP98rq3-Dd9GVIyP.js → HammerProvider-vt3DkcCZ-06BeBrPu.js} +2 -2
  69. package/dist/{HammerProvider-CYP98rq3-Dd9GVIyP.js.map → HammerProvider-vt3DkcCZ-06BeBrPu.js.map} +1 -1
  70. package/dist/{InputMask-Hn-xudp1-BKhtZ7Zk.js → InputMask-CE3pdXwL-B8XVrj36.js} +2 -2
  71. package/dist/{InputMask-Hn-xudp1-BKhtZ7Zk.js.map → InputMask-CE3pdXwL-B8XVrj36.js.map} +1 -1
  72. package/dist/{InputMask-BdLGTTAk.js → InputMask-wUro4G2j.js} +2 -2
  73. package/dist/{InputMask-BdLGTTAk.js.map → InputMask-wUro4G2j.js.map} +1 -1
  74. package/dist/InputMask.js +1 -1
  75. package/dist/{ListView-_YFTewqc.js → ListView-DdHpJHTc.js} +3 -3
  76. package/dist/{ListView-_YFTewqc.js.map → ListView-DdHpJHTc.js.map} +1 -1
  77. package/dist/ListView.js +1 -1
  78. package/dist/{Listbox-BvJLSAVO-Br5k6fmq.js → Listbox-B-WUuj-_-BWWeWtLW.js} +2 -2
  79. package/dist/{Listbox-BvJLSAVO-Br5k6fmq.js.map → Listbox-B-WUuj-_-BWWeWtLW.js.map} +1 -1
  80. package/dist/{Listbox-dVARiucB.js → Listbox-Di6OS1Fk.js} +2 -2
  81. package/dist/{Listbox-dVARiucB.js.map → Listbox-Di6OS1Fk.js.map} +1 -1
  82. package/dist/Listbox.js +1 -1
  83. package/dist/{Menu-1EwVMNIw.js → Menu-DHCOMJx2.js} +2 -2
  84. package/dist/{Menu-1EwVMNIw.js.map → Menu-DHCOMJx2.js.map} +1 -1
  85. package/dist/{Menu-CffX1bPZ-BeEOvryY.js → Menu-TtVJnSrA-yBYichuJ.js} +6 -9
  86. package/dist/Menu-TtVJnSrA-yBYichuJ.js.map +1 -0
  87. package/dist/Menu.js +1 -1
  88. package/dist/{Page-BikjTlTM.js → Page-KN0DLtcf.js} +8 -8
  89. package/dist/{Page-BikjTlTM.js.map → Page-KN0DLtcf.js.map} +1 -1
  90. package/dist/Page.js +1 -1
  91. package/dist/Pagination.js +2 -2
  92. package/dist/Pagination.js.map +1 -1
  93. package/dist/{Popover-rB4BVx-A.js → Popover-B1HaUjGI.js} +2 -2
  94. package/dist/{Popover-rB4BVx-A.js.map → Popover-B1HaUjGI.js.map} +1 -1
  95. package/dist/{Popover-jcmNuir0-DjlCqU1z.js → Popover-CU2cGVD8-FWJOuFRj.js} +78 -15
  96. package/dist/Popover-CU2cGVD8-FWJOuFRj.js.map +1 -0
  97. package/dist/Popover.js +1 -1
  98. package/dist/{ProgressBar-CzXzPpIX-Clg1J71o.js → ProgressBar-BRvB-bD4-DppwBrFg.js} +52 -18
  99. package/dist/ProgressBar-BRvB-bD4-DppwBrFg.js.map +1 -0
  100. package/dist/{ProgressBar-BL34rg_J.js → ProgressBar-lPKNTz6i.js} +2 -2
  101. package/dist/{ProgressBar-BL34rg_J.js.map → ProgressBar-lPKNTz6i.js.map} +1 -1
  102. package/dist/ProgressBar.js +1 -1
  103. package/dist/{Radio-BnOSIK1U-1MmGQFPi.js → Radio-DQ_VQFGZ-SdFBlDnE.js} +3 -3
  104. package/dist/{Radio-BnOSIK1U-1MmGQFPi.js.map → Radio-DQ_VQFGZ-SdFBlDnE.js.map} +1 -1
  105. package/dist/{Radio-BzZUxQa6.js → Radio-DnOuBPi_.js} +2 -2
  106. package/dist/{Radio-BzZUxQa6.js.map → Radio-DnOuBPi_.js.map} +1 -1
  107. package/dist/Radio.js +1 -1
  108. package/dist/{SelectCard-ynL5QcZD-BtBzMtyR.js → SelectCard-DUNwYa5y-BSi21Aba.js} +4 -4
  109. package/dist/{SelectCard-ynL5QcZD-BtBzMtyR.js.map → SelectCard-DUNwYa5y-BSi21Aba.js.map} +1 -1
  110. package/dist/SelectCard.js +1 -1
  111. package/dist/{SelectCardGroup-D6GuJJB2.js → SelectCardGroup-YGYiBv5M.js} +2 -2
  112. package/dist/{SelectCardGroup-D6GuJJB2.js.map → SelectCardGroup-YGYiBv5M.js.map} +1 -1
  113. package/dist/{SelectTrigger-Bo2VPAD0.js → SelectTrigger-Cg-rlFKY.js} +3 -3
  114. package/dist/{SelectTrigger-Bo2VPAD0.js.map → SelectTrigger-Cg-rlFKY.js.map} +1 -1
  115. package/dist/SelectTrigger.js +1 -1
  116. package/dist/{SelectTriggerBase-BGHwx0mN-B3HiW5tQ.js → SelectTriggerBase-C0fhFfuj-DfR6h1Lq.js} +4 -4
  117. package/dist/{SelectTriggerBase-BGHwx0mN-B3HiW5tQ.js.map → SelectTriggerBase-C0fhFfuj-DfR6h1Lq.js.map} +1 -1
  118. package/dist/{SideNav-DEoGpeqJ.js → SideNav-Bh_pVeEw.js} +11 -11
  119. package/dist/{SideNav-DEoGpeqJ.js.map → SideNav-Bh_pVeEw.js.map} +1 -1
  120. package/dist/SideNav.css +70 -52
  121. package/dist/SideNav.js +1 -1
  122. package/dist/{Text-B91g6xKn.js → Text-35Ve4Uq0.js} +2 -2
  123. package/dist/{Text-B91g6xKn.js.map → Text-35Ve4Uq0.js.map} +1 -1
  124. package/dist/{Text-DCvcLCvf-DlmnnjTR.js → Text-CED_yrId-DsRYZw2-.js} +10 -10
  125. package/dist/{Text-DCvcLCvf-DlmnnjTR.js.map → Text-CED_yrId-DsRYZw2-.js.map} +1 -1
  126. package/dist/{Text-DCvcLCvf.css → Text-CED_yrId.css} +35 -17
  127. package/dist/Text.js +1 -1
  128. package/dist/{TextField-BIeCvDD--C7yp05g5.js → TextField-CRTh0gL_-D2CjcYXX.js} +6 -3
  129. package/dist/TextField-CRTh0gL_-D2CjcYXX.js.map +1 -0
  130. package/dist/{TextField-COXABNrR.js → TextField-gYAqTpcX.js} +2 -2
  131. package/dist/{TextField-COXABNrR.js.map → TextField-gYAqTpcX.js.map} +1 -1
  132. package/dist/TextField.js +1 -1
  133. package/dist/{Textarea-D6K3Jc5_.js → Textarea-DohNOiIp.js} +24 -11
  134. package/dist/Textarea-DohNOiIp.js.map +1 -0
  135. package/dist/Textarea.js +1 -1
  136. package/dist/{ThemeProvider-BKave7Ha.js → ThemeProvider-DwJqkbiU.js} +2 -2
  137. package/dist/{ThemeProvider-BKave7Ha.js.map → ThemeProvider-DwJqkbiU.js.map} +1 -1
  138. package/dist/{ThemeProvider-CR67FJg0-DYVRlJRA.js → ThemeProvider-Q3ji6Rpx-DBXlAuQ8.js} +5 -5
  139. package/dist/{ThemeProvider-CR67FJg0-DYVRlJRA.js.map → ThemeProvider-Q3ji6Rpx-DBXlAuQ8.js.map} +1 -1
  140. package/dist/{ThemeProvider-CR67FJg0.css → ThemeProvider-Q3ji6Rpx.css} +106 -4
  141. package/dist/ThemeProvider.js +1 -1
  142. package/dist/Toast.js +1 -1
  143. package/dist/{Toolbar-CLsgDAKk.js → Toolbar-BznMJKGJ.js} +4 -4
  144. package/dist/{Toolbar-CLsgDAKk.js.map → Toolbar-BznMJKGJ.js.map} +1 -1
  145. package/dist/Toolbar.js +1 -1
  146. package/dist/{Tooltip-B_swJyoW.js → Tooltip-C2HQDvYj.js} +2 -2
  147. package/dist/{Tooltip-B_swJyoW.js.map → Tooltip-C2HQDvYj.js.map} +1 -1
  148. package/dist/Tooltip.js +1 -1
  149. package/dist/assets/icons/st/fixed.svg +1 -0
  150. package/dist/assets/icons/st/full_fluid.svg +1 -0
  151. package/dist/assets/icons/st/installed_equipment.svg +1 -0
  152. package/dist/assets/icons/st/unpin.svg +1 -0
  153. package/dist/assets/icons/st.ts +4 -0
  154. package/dist/components/Avatar/Avatar.d.ts +7 -2
  155. package/dist/components/Chip/Chip.d.ts +12 -10
  156. package/dist/components/DateField/DateField.d.ts +1 -0
  157. package/dist/components/DateFieldRange/DateFieldRange.d.ts +4 -1
  158. package/dist/components/DateFieldRange/index.d.ts +1 -2
  159. package/dist/components/DateFieldSingle/DateFieldSingle.d.ts +3 -1
  160. package/dist/components/DateFieldSingle/index.d.ts +1 -2
  161. package/dist/components/DateFieldYearless/DateFieldYearless.d.ts +62 -0
  162. package/dist/components/DateFieldYearless/index.d.ts +1 -0
  163. package/dist/components/Dialog/Dialog.d.ts +1 -1
  164. package/dist/components/Drawer/Drawer.d.ts +1 -1
  165. package/dist/components/FieldLabel/FieldLabel.d.ts +8 -0
  166. package/dist/components/FieldLabel/index.d.ts +2 -0
  167. package/dist/components/index.d.ts +2 -0
  168. package/dist/index.js +34 -32
  169. package/dist/index.js.map +1 -1
  170. package/dist/{toast-CJSBieY0.js → toast-BhV_Ask2.js} +2 -2
  171. package/dist/{toast-CJSBieY0.js.map → toast-BhV_Ask2.js.map} +1 -1
  172. package/dist/token/core/raw.js +85 -0
  173. package/dist/token/core/semantic-variables.scss +102 -0
  174. package/dist/token/core/semantic.js +357 -0
  175. package/dist/token/core/semantic.scss +51 -0
  176. package/dist/token.js +408 -0
  177. package/dist/token.js.map +1 -1
  178. package/package.json +3 -3
  179. package/dist/Avatar-B20IdOEO-Di14brYV.js.map +0 -1
  180. package/dist/Avatar-hNOToS9S.js.map +0 -1
  181. package/dist/Chip-BlLavyIK.js +0 -24
  182. package/dist/Chip-BlLavyIK.js.map +0 -1
  183. package/dist/Chip-_daV8CmM-CTke7zH4.js.map +0 -1
  184. package/dist/DateFieldRange-BRjBcR4r-CfuSiOfZ.js.map +0 -1
  185. package/dist/DateFieldRange-CGA5ZTRa.js.map +0 -1
  186. package/dist/DateFieldSingle-eP5l_TrQ.js.map +0 -1
  187. package/dist/Dialog-CJZEBa5r.js.map +0 -1
  188. package/dist/Menu-CffX1bPZ-BeEOvryY.js.map +0 -1
  189. package/dist/Popover-jcmNuir0-DjlCqU1z.js.map +0 -1
  190. package/dist/ProgressBar-CzXzPpIX-Clg1J71o.js.map +0 -1
  191. package/dist/TextField-BIeCvDD--C7yp05g5.js.map +0 -1
  192. package/dist/Textarea-D6K3Jc5_.js.map +0 -1
  193. /package/dist/{Breadcrumbs-D_jgwoN3.css → Breadcrumbs-B5bqrZ5D.css} +0 -0
  194. /package/dist/{Calendar-KVYGk3wS.css → Calendar-DD5kmVd3.css} +0 -0
  195. /package/dist/{Menu-CffX1bPZ.css → Menu-TtVJnSrA.css} +0 -0
  196. /package/dist/{Popover-jcmNuir0.css → Popover-CU2cGVD8.css} +0 -0
  197. /package/dist/{ProgressBar-CzXzPpIX.css → ProgressBar-BRvB-bD4.css} +0 -0
  198. /package/dist/{Radio-BnOSIK1U.css → Radio-DQ_VQFGZ.css} +0 -0
  199. /package/dist/{SelectCard-ynL5QcZD.css → SelectCard-DUNwYa5y.css} +0 -0
  200. /package/dist/{SelectTriggerBase-BGHwx0mN.css → SelectTriggerBase-C0fhFfuj.css} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"InputMask-BdLGTTAk.js","sources":["../src/components/InputMask/InputMask.tsx"],"sourcesContent":["import {\n InputMaskProps as CoreInputMaskProps,\n InputMask as CoreInputMask,\n childrenToString,\n} from \"@servicetitan/hammer-react\";\nimport { Ref, forwardRef } from \"react\";\nimport { useTrackingId } from \"../../hooks/useTrackingId\";\n\n/**\n * Props for the InputMask component\n * @property {string} mask - The mask pattern to apply to the input (9 for digits, a for letters, * for alphanumeric)\n * @property {string} [defaultMaskCharacter] - Character to display for unfilled mask positions\n * @property {array} [customMaskHandler] - Array of custom mask handlers for advanced transformations\n * @property {object} [inputProps] - Props to pass to the input component\n * @property {ReactElement} [children] - Custom input element to be wrapped with mask functionality\n * @property {string} [data-tracking-id] - Custom tracking ID for analytics\n */\nexport type InputMaskProps = CoreInputMaskProps & {\n [\"data-tracking-id\"]?: string;\n};\n\n/**\n * InputMask component for applying input masks and formatting to text inputs.\n *\n * Features:\n * - Input masking with configurable patterns (9, a, *, fixed characters)\n * - Support for both controlled and uncontrolled inputs\n * - Custom input elements or default TextField integration\n * - Advanced cursor positioning and selection management\n * - Custom mask handlers for complex transformations\n * - Paste and keyboard event handling\n * - Automatic mask character replacement\n * - Focus and blur event management\n * - Accessible with proper ARIA attributes\n * - Support for all standard input element props\n * - Flexible mask pattern configuration\n * - Real-time input validation and formatting\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <InputMask\n * mask=\"99/99/9999\"\n * inputProps={{ label: \"Date\", hint: \"mm/dd/yyyy\" }}\n * />\n *\n * @example\n * <InputMask mask=\"(999) 999-9999\">\n * <TextField label=\"Phone Number\" hint=\"(555) 123-4567\" />\n * </InputMask>\n *\n * @example\n * <InputMask\n * mask=\"99/99/9999\"\n * customMaskHandler={[\n * {\n * match: {\n * matchPattern: /^(\\d)\\//,\n * startPosition: 0,\n * endPosition: 2,\n * },\n * apply: {\n * applyPattern: \"0$1\",\n * caretOffset: 2,\n * },\n * },\n * ]}\n * inputProps={{ label: \"Date with custom handler\" }}\n * />\n */\nexport const InputMask = forwardRef(\n (props: InputMaskProps, ref: Ref<HTMLInputElement>) => {\n const inputProps = props.inputProps ?? {};\n\n const data = {\n label: \"label\" in inputProps ? childrenToString(inputProps.label) : null,\n labelProps: \"labelProps\" in inputProps ? inputProps.labelProps : null,\n prefix: childrenToString(inputProps.prefix),\n hint: \"hint\" in inputProps ? childrenToString(inputProps.hint) : null,\n description:\n \"description\" in inputProps\n ? childrenToString(inputProps.description)\n : null,\n size: inputProps.size,\n type: inputProps.type,\n };\n\n const trackingId = useTrackingId({\n name: \"InputMask\",\n data,\n hasOverride: !!props[\"data-tracking-id\"],\n });\n return <CoreInputMask ref={ref} data-tracking-id={trackingId} {...props} />;\n },\n);\nInputMask.displayName = CoreInputMask.displayName;\n"],"names":["CoreInputMask"],"mappings":";;;;;;AAqEO,MAAM,SAAY,GAAA,UAAA;AAAA,EACvB,CAAC,OAAuB,GAA+B,KAAA;AACrD,IAAM,MAAA,UAAA,GAAa,KAAM,CAAA,UAAA,IAAc,EAAC;AAExC,IAAA,MAAM,IAAO,GAAA;AAAA,MACX,OAAO,OAAW,IAAA,UAAA,GAAa,gBAAiB,CAAA,UAAA,CAAW,KAAK,CAAI,GAAA,IAAA;AAAA,MACpE,UAAY,EAAA,YAAA,IAAgB,UAAa,GAAA,UAAA,CAAW,UAAa,GAAA,IAAA;AAAA,MACjE,MAAA,EAAQ,gBAAiB,CAAA,UAAA,CAAW,MAAM,CAAA;AAAA,MAC1C,MAAM,MAAU,IAAA,UAAA,GAAa,gBAAiB,CAAA,UAAA,CAAW,IAAI,CAAI,GAAA,IAAA;AAAA,MACjE,aACE,aAAiB,IAAA,UAAA,GACb,gBAAiB,CAAA,UAAA,CAAW,WAAW,CACvC,GAAA,IAAA;AAAA,MACN,MAAM,UAAW,CAAA,IAAA;AAAA,MACjB,MAAM,UAAW,CAAA;AAAA,KACnB;AAEA,IAAA,MAAM,aAAa,aAAc,CAAA;AAAA,MAC/B,IAAM,EAAA,WAAA;AAAA,MACN,IAAA;AAAA,MACA,WAAa,EAAA,CAAC,CAAC,KAAA,CAAM,kBAAkB;AAAA,KACxC,CAAA;AACD,IAAA,2BAAQA,WAAc,EAAA,EAAA,GAAA,EAAU,kBAAkB,EAAA,UAAA,EAAa,GAAG,KAAO,EAAA,CAAA;AAAA;AAE7E;AACA,SAAA,CAAU,cAAcA,WAAc,CAAA,WAAA;;;;"}
1
+ {"version":3,"file":"InputMask-wUro4G2j.js","sources":["../src/components/InputMask/InputMask.tsx"],"sourcesContent":["import {\n InputMaskProps as CoreInputMaskProps,\n InputMask as CoreInputMask,\n childrenToString,\n} from \"@servicetitan/hammer-react\";\nimport { Ref, forwardRef } from \"react\";\nimport { useTrackingId } from \"../../hooks/useTrackingId\";\n\n/**\n * Props for the InputMask component\n * @property {string} mask - The mask pattern to apply to the input (9 for digits, a for letters, * for alphanumeric)\n * @property {string} [defaultMaskCharacter] - Character to display for unfilled mask positions\n * @property {array} [customMaskHandler] - Array of custom mask handlers for advanced transformations\n * @property {object} [inputProps] - Props to pass to the input component\n * @property {ReactElement} [children] - Custom input element to be wrapped with mask functionality\n * @property {string} [data-tracking-id] - Custom tracking ID for analytics\n */\nexport type InputMaskProps = CoreInputMaskProps & {\n [\"data-tracking-id\"]?: string;\n};\n\n/**\n * InputMask component for applying input masks and formatting to text inputs.\n *\n * Features:\n * - Input masking with configurable patterns (9, a, *, fixed characters)\n * - Support for both controlled and uncontrolled inputs\n * - Custom input elements or default TextField integration\n * - Advanced cursor positioning and selection management\n * - Custom mask handlers for complex transformations\n * - Paste and keyboard event handling\n * - Automatic mask character replacement\n * - Focus and blur event management\n * - Accessible with proper ARIA attributes\n * - Support for all standard input element props\n * - Flexible mask pattern configuration\n * - Real-time input validation and formatting\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <InputMask\n * mask=\"99/99/9999\"\n * inputProps={{ label: \"Date\", hint: \"mm/dd/yyyy\" }}\n * />\n *\n * @example\n * <InputMask mask=\"(999) 999-9999\">\n * <TextField label=\"Phone Number\" hint=\"(555) 123-4567\" />\n * </InputMask>\n *\n * @example\n * <InputMask\n * mask=\"99/99/9999\"\n * customMaskHandler={[\n * {\n * match: {\n * matchPattern: /^(\\d)\\//,\n * startPosition: 0,\n * endPosition: 2,\n * },\n * apply: {\n * applyPattern: \"0$1\",\n * caretOffset: 2,\n * },\n * },\n * ]}\n * inputProps={{ label: \"Date with custom handler\" }}\n * />\n */\nexport const InputMask = forwardRef(\n (props: InputMaskProps, ref: Ref<HTMLInputElement>) => {\n const inputProps = props.inputProps ?? {};\n\n const data = {\n label: \"label\" in inputProps ? childrenToString(inputProps.label) : null,\n labelProps: \"labelProps\" in inputProps ? inputProps.labelProps : null,\n prefix: childrenToString(inputProps.prefix),\n hint: \"hint\" in inputProps ? childrenToString(inputProps.hint) : null,\n description:\n \"description\" in inputProps\n ? childrenToString(inputProps.description)\n : null,\n size: inputProps.size,\n type: inputProps.type,\n };\n\n const trackingId = useTrackingId({\n name: \"InputMask\",\n data,\n hasOverride: !!props[\"data-tracking-id\"],\n });\n return <CoreInputMask ref={ref} data-tracking-id={trackingId} {...props} />;\n },\n);\nInputMask.displayName = CoreInputMask.displayName;\n"],"names":["CoreInputMask"],"mappings":";;;;;;AAqEO,MAAM,SAAY,GAAA,UAAA;AAAA,EACvB,CAAC,OAAuB,GAA+B,KAAA;AACrD,IAAM,MAAA,UAAA,GAAa,KAAM,CAAA,UAAA,IAAc,EAAC;AAExC,IAAA,MAAM,IAAO,GAAA;AAAA,MACX,OAAO,OAAW,IAAA,UAAA,GAAa,gBAAiB,CAAA,UAAA,CAAW,KAAK,CAAI,GAAA,IAAA;AAAA,MACpE,UAAY,EAAA,YAAA,IAAgB,UAAa,GAAA,UAAA,CAAW,UAAa,GAAA,IAAA;AAAA,MACjE,MAAA,EAAQ,gBAAiB,CAAA,UAAA,CAAW,MAAM,CAAA;AAAA,MAC1C,MAAM,MAAU,IAAA,UAAA,GAAa,gBAAiB,CAAA,UAAA,CAAW,IAAI,CAAI,GAAA,IAAA;AAAA,MACjE,aACE,aAAiB,IAAA,UAAA,GACb,gBAAiB,CAAA,UAAA,CAAW,WAAW,CACvC,GAAA,IAAA;AAAA,MACN,MAAM,UAAW,CAAA,IAAA;AAAA,MACjB,MAAM,UAAW,CAAA;AAAA,KACnB;AAEA,IAAA,MAAM,aAAa,aAAc,CAAA;AAAA,MAC/B,IAAM,EAAA,WAAA;AAAA,MACN,IAAA;AAAA,MACA,WAAa,EAAA,CAAC,CAAC,KAAA,CAAM,kBAAkB;AAAA,KACxC,CAAA;AACD,IAAA,2BAAQA,WAAc,EAAA,EAAA,GAAA,EAAU,kBAAkB,EAAA,UAAA,EAAa,GAAG,KAAO,EAAA,CAAA;AAAA;AAE7E;AACA,SAAA,CAAU,cAAcA,WAAc,CAAA,WAAA;;;;"}
package/dist/InputMask.js CHANGED
@@ -1,2 +1,2 @@
1
- export { I as InputMask, I as default } from './InputMask-BdLGTTAk.js';
1
+ export { I as InputMask, I as default } from './InputMask-wUro4G2j.js';
2
2
  //# sourceMappingURL=InputMask.js.map
@@ -3,8 +3,8 @@ import { forwardRef, useRef, useId, useState, useEffect, useContext, createConte
3
3
  import { useTrackingId } from './useTrackingId.js';
4
4
  import { c as cx } from './index-tZvMCc77.js';
5
5
  import { s as styles } from './ListView.module-MVsNF0X0-MVsNF0X0.js';
6
- import { g as getActiveElement } from './ProgressBar-CzXzPpIX-Clg1J71o.js';
7
- import { a as Checkbox } from './Checkbox-Qucv_PK8-Bovwdnlj.js';
6
+ import { g as getActiveElement } from './ProgressBar-BRvB-bD4-DppwBrFg.js';
7
+ import { a as Checkbox } from './Checkbox-DyHm7Ntt-DYw5QL3l.js';
8
8
  import { u as useMergeRefs } from './useMergeRefs-Bde85AWI-Bde85AWI.js';
9
9
  import { u as useLayoutPropsUtil } from './useLayoutPropsUtil-DWACCL8v-CZNrcQT-.js';
10
10
 
@@ -593,4 +593,4 @@ const ListView = Object.assign(
593
593
  );
594
594
 
595
595
  export { ListView as L, ListViewOption as a, ListViewOptionCell as b };
596
- //# sourceMappingURL=ListView-_YFTewqc.js.map
596
+ //# sourceMappingURL=ListView-DdHpJHTc.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ListView-_YFTewqc.js","sources":["../../hammer-react/dist/ListView-BDC0-UKs.js","../src/components/ListView/ListView.tsx"],"sourcesContent":["import { jsxs, jsx } from 'react/jsx-runtime';\nimport { createContext, useContext, forwardRef, useRef, useId, useState, useEffect } from 'react';\nimport cx from 'classnames';\nimport { s as styles } from './ListView.module-MVsNF0X0.js';\nimport { q as getActiveElement } from './ProgressBar-CzXzPpIX.js';\nimport { C as Checkbox } from './Checkbox-Qucv_PK8.js';\nimport { u as useMergeRefs } from './useMergeRefs-Bde85AWI.js';\nimport { u as useLayoutPropsUtil } from './useLayoutPropsUtil-DWACCL8v.js';\n\nfunction mapOrder(array, order, key) {\n array.sort(function(a, b) {\n const A = a[key], B = b[key];\n if (order.indexOf(A) > order.indexOf(B)) {\n return 1;\n } else {\n return -1;\n }\n });\n return array;\n}\n\nconst listViewKeyboardNavigation = (e, options, focusedItem, setFocusedItem, parent, currentFocusId) => {\n if (!options) return;\n let activeElement;\n switch (e.code) {\n case \"Enter\":\n case \"Space\":\n options[focusedItem.row].focusables[focusedItem.col].click();\n activeElement = getActiveElement(document);\n if (!activeElement) break;\n activeElement.click();\n e.preventDefault();\n break;\n case \"ArrowDown\":\n parent?.focus();\n options[focusedItem.row].focusables[focusedItem.col].removeAttribute(\n \"data-interactive\"\n );\n if (focusedItem.row === options.length - 1) {\n options[0].focusables[focusedItem.col].setAttribute(\n \"data-interactive\",\n \"focus-visible\"\n );\n currentFocusId(options[0].focusables[focusedItem.col].id);\n setFocusedItem((prev) => {\n return { ...prev, row: 0 };\n });\n break;\n }\n options[focusedItem.row + 1].focusables[focusedItem.col].setAttribute(\n \"data-interactive\",\n \"focus-visible\"\n );\n currentFocusId(\n options[focusedItem.row + 1].focusables[focusedItem.col].id\n );\n setFocusedItem((prev) => {\n return { ...prev, row: focusedItem.row + 1 };\n });\n break;\n case \"ArrowUp\":\n parent?.focus();\n options[focusedItem.row].focusables[focusedItem.col].removeAttribute(\n \"data-interactive\"\n );\n if (focusedItem.row === 0) {\n options[options.length - 1].focusables[focusedItem.col].setAttribute(\n \"data-interactive\",\n \"focus-visible\"\n );\n currentFocusId(\n options[options.length - 1].focusables[focusedItem.col].id\n );\n setFocusedItem((prev) => {\n return { ...prev, row: options.length - 1 };\n });\n break;\n }\n options[focusedItem.row - 1].focusables[focusedItem.col].setAttribute(\n \"data-interactive\",\n \"focus-visible\"\n );\n currentFocusId(\n options[focusedItem.row - 1].focusables[focusedItem.col].id\n );\n setFocusedItem((prev) => {\n return { ...prev, row: focusedItem.row - 1 };\n });\n break;\n case \"ArrowRight\":\n parent?.focus();\n options[focusedItem.row].focusables[focusedItem.col].removeAttribute(\n \"data-interactive\"\n );\n if (focusedItem.col === options[focusedItem.row].focusables.length - 1) {\n options[focusedItem.row].focusables[0].setAttribute(\n \"data-interactive\",\n \"focus-visible\"\n );\n currentFocusId(options[focusedItem.row].focusables[0].id);\n setFocusedItem((prev) => {\n return {\n ...prev,\n col: 0\n };\n });\n break;\n }\n options[focusedItem.row].focusables[focusedItem.col + 1].setAttribute(\n \"data-interactive\",\n \"focus-visible\"\n );\n currentFocusId(\n options[focusedItem.row].focusables[focusedItem.col + 1].id\n );\n setFocusedItem((prev) => {\n return { ...prev, col: focusedItem.col + 1 };\n });\n break;\n case \"ArrowLeft\":\n parent?.focus();\n options[focusedItem.row].focusables[focusedItem.col].removeAttribute(\n \"data-interactive\"\n );\n if (focusedItem.col === 0) {\n options[focusedItem.row].focusables[options[focusedItem.row].focusables.length - 1].setAttribute(\"data-interactive\", \"focus-visible\");\n currentFocusId(\n options[focusedItem.row].focusables[options[focusedItem.row].focusables.length - 1].id\n );\n setFocusedItem((prev) => {\n return {\n ...prev,\n col: options[focusedItem.row].focusables.length - 1\n };\n });\n break;\n }\n options[focusedItem.row].focusables[focusedItem.col - 1].setAttribute(\n \"data-interactive\",\n \"focus-visible\"\n );\n currentFocusId(\n options[focusedItem.row].focusables[focusedItem.col - 1].id\n );\n setFocusedItem((prev) => {\n return { ...prev, col: focusedItem.col - 1 };\n });\n break;\n }\n};\n\nconst ListViewContext = createContext(null);\n\nfunction useListView() {\n const context = useContext(ListViewContext);\n if (context == null) {\n throw new Error(\"useListView must be wrapped in <ListView />\");\n }\n return context;\n}\n\nconst ListViewOption = forwardRef(\n (props, ref) => {\n const {\n className,\n children,\n onChange,\n style,\n disabled: disabledProp,\n ...remainingProps\n } = props;\n const optionRef = useRef(null);\n const mergedRef = useMergeRefs([ref, optionRef]);\n const itemRef = useRef();\n const cellRef = useRef(null);\n const rowId = useId();\n const [isSelected, setIsSelected] = useState(false);\n const { selectedItems, setSelectedItems, controlled, onSelectionChange } = useListView();\n const disabled = \"item\" in remainingProps ? disabledProp || remainingProps.item.disabled : disabledProp;\n useEffect(() => {\n const focusables = optionRef.current?.querySelectorAll(\n \"button:not(:disabled):not([aria-disabled='true']), input:not(:disabled):not([aria-disabled='true']), [tabindex='0']:not(:disabled):not([aria-disabled='true'])\"\n );\n focusables?.forEach((item, i) => {\n item.setAttribute(\"tabindex\", \"-1\");\n if (item.hasAttribute(\"id\")) return;\n item.setAttribute(\"id\", `${rowId}-${i}`);\n });\n }, [rowId]);\n useEffect(() => {\n if (\"item\" in remainingProps) {\n const isPartOfSelectedItems = selectedItems.some((item) => {\n return item.label === remainingProps.item.label;\n });\n setIsSelected(isPartOfSelectedItems);\n } else {\n const isPartOfSelectedItems = selectedItems.includes(\n remainingProps.label\n );\n setIsSelected(isPartOfSelectedItems);\n }\n }, [controlled, remainingProps, selectedItems]);\n const onChangeHandler = (e) => {\n onChange?.(e, { checked: isSelected });\n };\n const onClickHandler = () => {\n updateSelectedItems();\n };\n const removeItemFromSelectedItems = (itemToRemove) => {\n return selectedItems.filter((item) => {\n if (typeof itemToRemove === \"string\") {\n return item !== itemToRemove;\n }\n return item?.label !== itemToRemove.label;\n });\n };\n const addItemFromSelectedItems = (itemToAdd) => {\n return [...selectedItems, itemToAdd];\n };\n function updateSelectedItems() {\n const currentItem = \"item\" in remainingProps ? remainingProps.item : remainingProps.label;\n const isPartOfSelectedItems = selectedItems.some((item) => {\n if (typeof currentItem === \"string\") {\n return item === currentItem;\n }\n return item?.label === currentItem.label;\n });\n const newSelectedItems = isPartOfSelectedItems ? removeItemFromSelectedItems(currentItem) : addItemFromSelectedItems(currentItem);\n if (controlled) {\n onSelectionChange?.(newSelectedItems);\n } else {\n setSelectedItems(newSelectedItems);\n setIsSelected(!isPartOfSelectedItems);\n }\n }\n if (\"item\" in remainingProps) {\n itemRef.current = remainingProps.item;\n const { item, ...rest } = remainingProps;\n return /* @__PURE__ */ jsxs(\n \"div\",\n {\n className: cx([styles[\"listview-option\"]], className),\n \"data-anv\": \"listview-option\",\n style,\n ref: mergedRef,\n \"aria-disabled\": disabled,\n \"aria-selected\": isSelected,\n \"aria-label\": item.label,\n role: \"row\",\n ...rest,\n children: [\n /* @__PURE__ */ jsx(\"div\", { className: styles[\"cell\"], ref: cellRef, role: \"gridcell\", children: /* @__PURE__ */ jsx(\n Checkbox,\n {\n disabled,\n checked: isSelected,\n \"aria-label\": item.label,\n onChange: onChangeHandler,\n onClick: onClickHandler\n }\n ) }),\n children\n ]\n }\n );\n }\n return /* @__PURE__ */ jsxs(\n \"div\",\n {\n className: cx([styles[\"listview-option\"]], className),\n \"data-anv\": \"listview-option\",\n style,\n ref: mergedRef,\n \"aria-disabled\": disabled,\n \"aria-selected\": isSelected,\n \"aria-label\": \"label\" in props ? props.label : \"Select\",\n role: \"row\",\n ...remainingProps,\n children: [\n /* @__PURE__ */ jsx(\"div\", { className: styles[\"cell\"], ref: cellRef, role: \"gridcell\", children: /* @__PURE__ */ jsx(\n Checkbox,\n {\n disabled,\n checked: isSelected,\n \"aria-label\": \"label\" in props ? props.label : \"Select\",\n onChange: onChangeHandler,\n onClick: onClickHandler\n }\n ) }),\n children\n ]\n }\n );\n }\n);\nListViewOption.displayName = \"ListViewOption\";\n\nconst ListViewOptionCell = forwardRef((props, ref) => {\n const { ...rest } = props;\n return /* @__PURE__ */ jsx(\"div\", { role: \"gridcell\", \"data-anv\": \"listview-option-cell\", ...rest, ref });\n});\nListViewOptionCell.displayName = \"ListViewOptionCell\";\n\nconst getFocusables = (el) => {\n return el.querySelectorAll(\n \"button:not(:disabled):not([aria-disabled='true']), input:not(:disabled):not([aria-disabled='true']), [tabindex='0']:not(:disabled):not([aria-disabled='true'])\"\n );\n};\nconst ListViewElement = function(props, ref) {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const {\n onSelectionChange,\n className,\n selected,\n defaultSelected,\n style,\n onKeyDown,\n ...remainingProps\n } = componentProps;\n const ListViewRef = useRef(null);\n const isFocusVisible = useRef(true);\n const combinedRef = useMergeRefs([ref, ListViewRef]);\n const [options, setOptions] = useState();\n const [currentActive, setCurrentActive] = useState();\n const [selectedItems, setSelectedItems] = useState(\n selected ?? defaultSelected ?? []\n );\n const [focusedItem, setFocusedItem] = useState({\n row: 0,\n col: 0\n });\n const styleCombined = {\n ...style,\n ...layoutStyles\n };\n const onFocusHandler = () => {\n if (!isFocusVisible.current) return;\n if (!options) return;\n options[focusedItem.row].focusables[focusedItem.col].setAttribute(\n \"data-interactive\",\n \"focus-visible\"\n );\n return;\n };\n const onBlurHandler = () => {\n if (!options) return;\n options[focusedItem.row].focusables[focusedItem.col]?.removeAttribute(\n \"data-interactive\"\n );\n return;\n };\n const onKeyDownHandler = (e) => {\n onKeyDown?.(e);\n if (!options) return;\n isFocusVisible.current = true;\n listViewKeyboardNavigation(\n e,\n options,\n focusedItem,\n setFocusedItem,\n ListViewRef.current,\n (id) => setCurrentActive(id)\n );\n };\n const onMouseDownHandler = (e) => {\n isFocusVisible.current = false;\n if (options && ListViewRef.current) {\n options[focusedItem.row].focusables[focusedItem.col]?.removeAttribute(\n \"data-interactive\"\n );\n const closestFocusable = e.target.closest(\n \"button:not(:disabled):not([aria-disabled='true']), input:not(:disabled):not([aria-disabled='true']), [data-anv='checkbox']\"\n );\n const optionRow = e.target.closest(\n '[data-anv=\"listview-option\"]'\n );\n if (!optionRow || optionRow.ariaDisabled) return;\n const row = options.findIndex((option) => option.node === optionRow);\n if (!closestFocusable) {\n options[row].focusables[0].click();\n return;\n }\n const col = Array.prototype.indexOf.call(\n options[row].focusables,\n closestFocusable?.getAttribute(\"data-anv\") === \"checkbox\" ? closestFocusable.children[0] : closestFocusable\n );\n setFocusedItem({ row, col });\n }\n };\n useEffect(() => {\n if (!ListViewRef.current) return;\n const optionArr = ListViewRef.current.querySelectorAll(\n \"div[data-anv='listview-option']:not([aria-disabled='true'])\"\n );\n const makeTree = Array.from(optionArr).map((option) => {\n const childFocusables = getFocusables(option);\n return {\n node: option,\n focusables: childFocusables\n };\n });\n setOptions(makeTree);\n }, [props.children]);\n const prevSelectedItems = useRef();\n useEffect(() => {\n if (!options) return;\n const compareArr = options.map((option) => option.node.ariaLabel);\n const orderedSelectedItems = mapOrder(selectedItems, compareArr, \"label\");\n if (JSON.stringify(prevSelectedItems.current) === JSON.stringify(orderedSelectedItems))\n return;\n onSelectionChange?.(orderedSelectedItems);\n prevSelectedItems.current = orderedSelectedItems;\n }, [onSelectionChange, options, selectedItems]);\n useEffect(() => {\n if (!selected) return;\n const filterDuplicates = selected.reduce(\n (acc, current) => {\n const isDup = acc.find((item) => item.label === current.label);\n if (!isDup) {\n return acc.concat([current]);\n } else {\n return acc;\n }\n },\n []\n );\n if (!options) return;\n const compareArr = options.map((option) => option.node.ariaLabel);\n const orderedSelected = mapOrder(filterDuplicates, compareArr, \"label\");\n if (JSON.stringify(prevSelectedItems.current) === JSON.stringify(orderedSelected))\n return;\n setSelectedItems(orderedSelected);\n prevSelectedItems.current = orderedSelected;\n }, [onSelectionChange, options, selected]);\n const ListViewClassNames = cx([styles[\"listview\"]], className);\n if (\"items\" in remainingProps) {\n const { children: children2, items, ...rest2 } = remainingProps;\n return /* @__PURE__ */ jsx(\n ListViewContext.Provider,\n {\n value: {\n options,\n onSelectionChange,\n selectedItems,\n setSelectedItems,\n items,\n controlled: !!selected\n },\n children: /* @__PURE__ */ jsx(\n \"div\",\n {\n ref: combinedRef,\n className: ListViewClassNames,\n style: styleCombined,\n \"data-anv\": \"listview\",\n role: \"grid\",\n \"aria-multiselectable\": \"true\",\n onFocus: onFocusHandler,\n onBlur: onBlurHandler,\n onKeyDown: onKeyDownHandler,\n onMouseDown: onMouseDownHandler,\n \"aria-activedescendant\": currentActive,\n tabIndex: 0,\n ...rest2,\n children: children2?.({\n items: items.map((item) => {\n return item;\n })\n })\n }\n )\n }\n );\n }\n const { children, ...rest } = remainingProps;\n return /* @__PURE__ */ jsx(\n ListViewContext.Provider,\n {\n value: {\n options,\n onSelectionChange,\n selectedItems,\n setSelectedItems,\n controlled: !!selected\n },\n children: /* @__PURE__ */ jsx(\n \"div\",\n {\n ref: combinedRef,\n className: ListViewClassNames,\n style: styleCombined,\n \"data-anv\": \"listview\",\n role: \"grid\",\n onFocus: onFocusHandler,\n onBlur: onBlurHandler,\n onKeyDown: onKeyDownHandler,\n onMouseDown: onMouseDownHandler,\n \"aria-activedescendant\": currentActive,\n tabIndex: 0,\n ...rest,\n children\n }\n )\n }\n );\n};\nListViewElement.displayName = \"ListView\";\nconst ListView = Object.assign(\n forwardRef(ListViewElement),\n {\n /**\n * ListViewOption component for individual selectable items within a listview.\n *\n * Features:\n * - Displays selectable options with proper ARIA attributes\n * - Supports disabled state for non-selectable options\n * - Keyboard navigation support\n * - Accessible with screen reader support\n *\n * @example\n * <ListView.Option item={{ label: \"Option 1\" }} />\n */\n Option: ListViewOption,\n /**\n * ListViewOptionCell component for rendering a cell within a listview option.\n *\n * Features:\n * - Renders a grid cell for option content\n * - Supports custom content and layout\n * - Accessible with proper ARIA attributes\n *\n * @example\n * <ListView.OptionCell>Custom cell content</ListView.OptionCell>\n */\n OptionCell: ListViewOptionCell\n }\n);\n\nexport { ListView as L, ListViewOption as a, ListViewOptionCell as b };\n//# sourceMappingURL=ListView-BDC0-UKs.js.map\n","import {\n ListViewProps as CoreListViewProps,\n ListView as CoreListView,\n ListViewOption as CoreListViewOption,\n ListViewOptionCell as CoreListViewOptionCell,\n ListViewOptionProps as CoreListViewOptionProps,\n} from \"@servicetitan/hammer-react\";\nimport { ComponentPropsWithoutRef, ForwardedRef, Ref, forwardRef } from \"react\";\nimport { useTrackingId } from \"../../hooks/useTrackingId\";\nimport { DataTrackingId } from \"../../types/DataTrackingId\";\n\n/**\n * Props for the ListView component\n * @property {function} [onSelectionChange] - Callback when selection changes\n * @property {Array} [selected] - Currently selected items (controlled)\n * @property {Array} [items] - Array of items to render\n * @property {Array} [defaultSelected] - Default selected items (uncontrolled)\n * @property {function} [children] - Optional render function for items\n * @extends LayoutUtilProps\n */\nexport type ListViewProps<T> = CoreListViewProps<T>;\n\n/**\n * Props for the ListViewOption component\n * @property {boolean} [disabled] - Whether the option is disabled\n * @property {function} [onChange] - Callback when the option changes\n * @property {object} [item] - The item object when using items prop\n * @property {string} [label] - The display label for the option\n * @extends ComponentPropsWithoutRef<\"div\">\n */\nexport type ListViewOptionProps = CoreListViewOptionProps & DataTrackingId;\n\nconst ListViewElement = function <T>(\n props: ListViewProps<T>,\n ref: ForwardedRef<HTMLUListElement>,\n) {\n return <CoreListView ref={ref} {...props} />;\n};\n\n/**\n * ListViewOption component for individual selectable items within a listview.\n *\n * Features:\n * - Displays selectable options with proper ARIA attributes\n * - Supports disabled state for non-selectable options\n * - Keyboard navigation support\n * - Accessible with screen reader support\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <ListView.Option item={{ label: \"Option 1\" }} />\n */\nexport const ListViewOption = forwardRef(\n (props: ListViewOptionProps, ref: Ref<HTMLDivElement>) => {\n const data = {\n label: \"item\" in props ? props.item?.label : props.label,\n };\n\n const trackingId = useTrackingId({\n name: \"ListViewOption\",\n data,\n hasOverride: !!props[\"data-tracking-id\"],\n });\n\n return (\n <CoreListViewOption ref={ref} data-tracking-id={trackingId} {...props} />\n );\n },\n);\nListViewOption.displayName = CoreListViewOption.displayName;\n\n/**\n * ListViewOptionCell component for rendering a cell within a listview option.\n *\n * Features:\n * - Renders a grid cell for option content\n * - Supports custom content and layout\n * - Accessible with proper ARIA attributes\n *\n * @example\n * <ListView.OptionCell>Custom cell content</ListView.OptionCell>\n */\nexport const ListViewOptionCell = forwardRef(\n (props: ComponentPropsWithoutRef<\"div\">, ref: Ref<HTMLDivElement>) => {\n return <CoreListViewOptionCell ref={ref} {...props} />;\n },\n);\nListViewOptionCell.displayName = CoreListViewOptionCell.displayName;\n\n/**\n * ListView component for displaying a list of selectable items in a grid layout.\n *\n * Features:\n * - Supports single and multiple selection modes\n * - Keyboard navigation with arrow keys\n * - Customizable item rendering\n * - Controlled and uncontrolled modes\n * - Accessible with proper ARIA attributes\n * - Focus management for interactive elements\n * - Layout utilities for positioning and spacing\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <ListView items={[{ label: \"Item 1\" }, { label: \"Item 2\" }]} onSelectionChange={handleSelection}>\n * {({ items }) => items.map(item => (\n * <ListView.Option key={item.label} item={item} />\n * ))}\n * </ListView>\n */\nexport const ListView = Object.assign(\n forwardRef(ListViewElement) as <T>(\n props: ListViewProps<T> & { ref?: React.ForwardedRef<HTMLUListElement> },\n ) => ReturnType<typeof ListViewElement>,\n {\n /**\n * ListViewOption component for individual selectable items within a listview.\n *\n * Features:\n * - Displays selectable options with proper ARIA attributes\n * - Supports disabled state for non-selectable options\n * - Keyboard navigation support\n * - Accessible with screen reader support\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <ListView.Option item={{ label: \"Option 1\" }} />\n */\n Option: ListViewOption,\n /**\n * ListViewOptionCell component for rendering a cell within a listview option.\n *\n * Features:\n * - Renders a grid cell for option content\n * - Supports custom content and layout\n * - Accessible with proper ARIA attributes\n *\n * @example\n * <ListView.OptionCell>Custom cell content</ListView.OptionCell>\n */\n OptionCell: ListViewOptionCell,\n },\n);\n"],"names":["ListViewOption","ListViewOptionCell","ListViewElement","ListView","CoreListView","CoreListViewOption","CoreListViewOptionCell"],"mappings":"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"}
1
+ {"version":3,"file":"ListView-DdHpJHTc.js","sources":["../../hammer-react/dist/ListView-D2dfWXC-.js","../src/components/ListView/ListView.tsx"],"sourcesContent":["import { jsxs, jsx } from 'react/jsx-runtime';\nimport { createContext, useContext, forwardRef, useRef, useId, useState, useEffect } from 'react';\nimport cx from 'classnames';\nimport { s as styles } from './ListView.module-MVsNF0X0.js';\nimport { q as getActiveElement } from './ProgressBar-BRvB-bD4.js';\nimport { C as Checkbox } from './Checkbox-DyHm7Ntt.js';\nimport { u as useMergeRefs } from './useMergeRefs-Bde85AWI.js';\nimport { u as useLayoutPropsUtil } from './useLayoutPropsUtil-DWACCL8v.js';\n\nfunction mapOrder(array, order, key) {\n array.sort(function(a, b) {\n const A = a[key], B = b[key];\n if (order.indexOf(A) > order.indexOf(B)) {\n return 1;\n } else {\n return -1;\n }\n });\n return array;\n}\n\nconst listViewKeyboardNavigation = (e, options, focusedItem, setFocusedItem, parent, currentFocusId) => {\n if (!options) return;\n let activeElement;\n switch (e.code) {\n case \"Enter\":\n case \"Space\":\n options[focusedItem.row].focusables[focusedItem.col].click();\n activeElement = getActiveElement(document);\n if (!activeElement) break;\n activeElement.click();\n e.preventDefault();\n break;\n case \"ArrowDown\":\n parent?.focus();\n options[focusedItem.row].focusables[focusedItem.col].removeAttribute(\n \"data-interactive\"\n );\n if (focusedItem.row === options.length - 1) {\n options[0].focusables[focusedItem.col].setAttribute(\n \"data-interactive\",\n \"focus-visible\"\n );\n currentFocusId(options[0].focusables[focusedItem.col].id);\n setFocusedItem((prev) => {\n return { ...prev, row: 0 };\n });\n break;\n }\n options[focusedItem.row + 1].focusables[focusedItem.col].setAttribute(\n \"data-interactive\",\n \"focus-visible\"\n );\n currentFocusId(\n options[focusedItem.row + 1].focusables[focusedItem.col].id\n );\n setFocusedItem((prev) => {\n return { ...prev, row: focusedItem.row + 1 };\n });\n break;\n case \"ArrowUp\":\n parent?.focus();\n options[focusedItem.row].focusables[focusedItem.col].removeAttribute(\n \"data-interactive\"\n );\n if (focusedItem.row === 0) {\n options[options.length - 1].focusables[focusedItem.col].setAttribute(\n \"data-interactive\",\n \"focus-visible\"\n );\n currentFocusId(\n options[options.length - 1].focusables[focusedItem.col].id\n );\n setFocusedItem((prev) => {\n return { ...prev, row: options.length - 1 };\n });\n break;\n }\n options[focusedItem.row - 1].focusables[focusedItem.col].setAttribute(\n \"data-interactive\",\n \"focus-visible\"\n );\n currentFocusId(\n options[focusedItem.row - 1].focusables[focusedItem.col].id\n );\n setFocusedItem((prev) => {\n return { ...prev, row: focusedItem.row - 1 };\n });\n break;\n case \"ArrowRight\":\n parent?.focus();\n options[focusedItem.row].focusables[focusedItem.col].removeAttribute(\n \"data-interactive\"\n );\n if (focusedItem.col === options[focusedItem.row].focusables.length - 1) {\n options[focusedItem.row].focusables[0].setAttribute(\n \"data-interactive\",\n \"focus-visible\"\n );\n currentFocusId(options[focusedItem.row].focusables[0].id);\n setFocusedItem((prev) => {\n return {\n ...prev,\n col: 0\n };\n });\n break;\n }\n options[focusedItem.row].focusables[focusedItem.col + 1].setAttribute(\n \"data-interactive\",\n \"focus-visible\"\n );\n currentFocusId(\n options[focusedItem.row].focusables[focusedItem.col + 1].id\n );\n setFocusedItem((prev) => {\n return { ...prev, col: focusedItem.col + 1 };\n });\n break;\n case \"ArrowLeft\":\n parent?.focus();\n options[focusedItem.row].focusables[focusedItem.col].removeAttribute(\n \"data-interactive\"\n );\n if (focusedItem.col === 0) {\n options[focusedItem.row].focusables[options[focusedItem.row].focusables.length - 1].setAttribute(\"data-interactive\", \"focus-visible\");\n currentFocusId(\n options[focusedItem.row].focusables[options[focusedItem.row].focusables.length - 1].id\n );\n setFocusedItem((prev) => {\n return {\n ...prev,\n col: options[focusedItem.row].focusables.length - 1\n };\n });\n break;\n }\n options[focusedItem.row].focusables[focusedItem.col - 1].setAttribute(\n \"data-interactive\",\n \"focus-visible\"\n );\n currentFocusId(\n options[focusedItem.row].focusables[focusedItem.col - 1].id\n );\n setFocusedItem((prev) => {\n return { ...prev, col: focusedItem.col - 1 };\n });\n break;\n }\n};\n\nconst ListViewContext = createContext(null);\n\nfunction useListView() {\n const context = useContext(ListViewContext);\n if (context == null) {\n throw new Error(\"useListView must be wrapped in <ListView />\");\n }\n return context;\n}\n\nconst ListViewOption = forwardRef(\n (props, ref) => {\n const {\n className,\n children,\n onChange,\n style,\n disabled: disabledProp,\n ...remainingProps\n } = props;\n const optionRef = useRef(null);\n const mergedRef = useMergeRefs([ref, optionRef]);\n const itemRef = useRef();\n const cellRef = useRef(null);\n const rowId = useId();\n const [isSelected, setIsSelected] = useState(false);\n const { selectedItems, setSelectedItems, controlled, onSelectionChange } = useListView();\n const disabled = \"item\" in remainingProps ? disabledProp || remainingProps.item.disabled : disabledProp;\n useEffect(() => {\n const focusables = optionRef.current?.querySelectorAll(\n \"button:not(:disabled):not([aria-disabled='true']), input:not(:disabled):not([aria-disabled='true']), [tabindex='0']:not(:disabled):not([aria-disabled='true'])\"\n );\n focusables?.forEach((item, i) => {\n item.setAttribute(\"tabindex\", \"-1\");\n if (item.hasAttribute(\"id\")) return;\n item.setAttribute(\"id\", `${rowId}-${i}`);\n });\n }, [rowId]);\n useEffect(() => {\n if (\"item\" in remainingProps) {\n const isPartOfSelectedItems = selectedItems.some((item) => {\n return item.label === remainingProps.item.label;\n });\n setIsSelected(isPartOfSelectedItems);\n } else {\n const isPartOfSelectedItems = selectedItems.includes(\n remainingProps.label\n );\n setIsSelected(isPartOfSelectedItems);\n }\n }, [controlled, remainingProps, selectedItems]);\n const onChangeHandler = (e) => {\n onChange?.(e, { checked: isSelected });\n };\n const onClickHandler = () => {\n updateSelectedItems();\n };\n const removeItemFromSelectedItems = (itemToRemove) => {\n return selectedItems.filter((item) => {\n if (typeof itemToRemove === \"string\") {\n return item !== itemToRemove;\n }\n return item?.label !== itemToRemove.label;\n });\n };\n const addItemFromSelectedItems = (itemToAdd) => {\n return [...selectedItems, itemToAdd];\n };\n function updateSelectedItems() {\n const currentItem = \"item\" in remainingProps ? remainingProps.item : remainingProps.label;\n const isPartOfSelectedItems = selectedItems.some((item) => {\n if (typeof currentItem === \"string\") {\n return item === currentItem;\n }\n return item?.label === currentItem.label;\n });\n const newSelectedItems = isPartOfSelectedItems ? removeItemFromSelectedItems(currentItem) : addItemFromSelectedItems(currentItem);\n if (controlled) {\n onSelectionChange?.(newSelectedItems);\n } else {\n setSelectedItems(newSelectedItems);\n setIsSelected(!isPartOfSelectedItems);\n }\n }\n if (\"item\" in remainingProps) {\n itemRef.current = remainingProps.item;\n const { item, ...rest } = remainingProps;\n return /* @__PURE__ */ jsxs(\n \"div\",\n {\n className: cx([styles[\"listview-option\"]], className),\n \"data-anv\": \"listview-option\",\n style,\n ref: mergedRef,\n \"aria-disabled\": disabled,\n \"aria-selected\": isSelected,\n \"aria-label\": item.label,\n role: \"row\",\n ...rest,\n children: [\n /* @__PURE__ */ jsx(\"div\", { className: styles[\"cell\"], ref: cellRef, role: \"gridcell\", children: /* @__PURE__ */ jsx(\n Checkbox,\n {\n disabled,\n checked: isSelected,\n \"aria-label\": item.label,\n onChange: onChangeHandler,\n onClick: onClickHandler\n }\n ) }),\n children\n ]\n }\n );\n }\n return /* @__PURE__ */ jsxs(\n \"div\",\n {\n className: cx([styles[\"listview-option\"]], className),\n \"data-anv\": \"listview-option\",\n style,\n ref: mergedRef,\n \"aria-disabled\": disabled,\n \"aria-selected\": isSelected,\n \"aria-label\": \"label\" in props ? props.label : \"Select\",\n role: \"row\",\n ...remainingProps,\n children: [\n /* @__PURE__ */ jsx(\"div\", { className: styles[\"cell\"], ref: cellRef, role: \"gridcell\", children: /* @__PURE__ */ jsx(\n Checkbox,\n {\n disabled,\n checked: isSelected,\n \"aria-label\": \"label\" in props ? props.label : \"Select\",\n onChange: onChangeHandler,\n onClick: onClickHandler\n }\n ) }),\n children\n ]\n }\n );\n }\n);\nListViewOption.displayName = \"ListViewOption\";\n\nconst ListViewOptionCell = forwardRef((props, ref) => {\n const { ...rest } = props;\n return /* @__PURE__ */ jsx(\"div\", { role: \"gridcell\", \"data-anv\": \"listview-option-cell\", ...rest, ref });\n});\nListViewOptionCell.displayName = \"ListViewOptionCell\";\n\nconst getFocusables = (el) => {\n return el.querySelectorAll(\n \"button:not(:disabled):not([aria-disabled='true']), input:not(:disabled):not([aria-disabled='true']), [tabindex='0']:not(:disabled):not([aria-disabled='true'])\"\n );\n};\nconst ListViewElement = function(props, ref) {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const {\n onSelectionChange,\n className,\n selected,\n defaultSelected,\n style,\n onKeyDown,\n ...remainingProps\n } = componentProps;\n const ListViewRef = useRef(null);\n const isFocusVisible = useRef(true);\n const combinedRef = useMergeRefs([ref, ListViewRef]);\n const [options, setOptions] = useState();\n const [currentActive, setCurrentActive] = useState();\n const [selectedItems, setSelectedItems] = useState(\n selected ?? defaultSelected ?? []\n );\n const [focusedItem, setFocusedItem] = useState({\n row: 0,\n col: 0\n });\n const styleCombined = {\n ...style,\n ...layoutStyles\n };\n const onFocusHandler = () => {\n if (!isFocusVisible.current) return;\n if (!options) return;\n options[focusedItem.row].focusables[focusedItem.col].setAttribute(\n \"data-interactive\",\n \"focus-visible\"\n );\n return;\n };\n const onBlurHandler = () => {\n if (!options) return;\n options[focusedItem.row].focusables[focusedItem.col]?.removeAttribute(\n \"data-interactive\"\n );\n return;\n };\n const onKeyDownHandler = (e) => {\n onKeyDown?.(e);\n if (!options) return;\n isFocusVisible.current = true;\n listViewKeyboardNavigation(\n e,\n options,\n focusedItem,\n setFocusedItem,\n ListViewRef.current,\n (id) => setCurrentActive(id)\n );\n };\n const onMouseDownHandler = (e) => {\n isFocusVisible.current = false;\n if (options && ListViewRef.current) {\n options[focusedItem.row].focusables[focusedItem.col]?.removeAttribute(\n \"data-interactive\"\n );\n const closestFocusable = e.target.closest(\n \"button:not(:disabled):not([aria-disabled='true']), input:not(:disabled):not([aria-disabled='true']), [data-anv='checkbox']\"\n );\n const optionRow = e.target.closest(\n '[data-anv=\"listview-option\"]'\n );\n if (!optionRow || optionRow.ariaDisabled) return;\n const row = options.findIndex((option) => option.node === optionRow);\n if (!closestFocusable) {\n options[row].focusables[0].click();\n return;\n }\n const col = Array.prototype.indexOf.call(\n options[row].focusables,\n closestFocusable?.getAttribute(\"data-anv\") === \"checkbox\" ? closestFocusable.children[0] : closestFocusable\n );\n setFocusedItem({ row, col });\n }\n };\n useEffect(() => {\n if (!ListViewRef.current) return;\n const optionArr = ListViewRef.current.querySelectorAll(\n \"div[data-anv='listview-option']:not([aria-disabled='true'])\"\n );\n const makeTree = Array.from(optionArr).map((option) => {\n const childFocusables = getFocusables(option);\n return {\n node: option,\n focusables: childFocusables\n };\n });\n setOptions(makeTree);\n }, [props.children]);\n const prevSelectedItems = useRef();\n useEffect(() => {\n if (!options) return;\n const compareArr = options.map((option) => option.node.ariaLabel);\n const orderedSelectedItems = mapOrder(selectedItems, compareArr, \"label\");\n if (JSON.stringify(prevSelectedItems.current) === JSON.stringify(orderedSelectedItems))\n return;\n onSelectionChange?.(orderedSelectedItems);\n prevSelectedItems.current = orderedSelectedItems;\n }, [onSelectionChange, options, selectedItems]);\n useEffect(() => {\n if (!selected) return;\n const filterDuplicates = selected.reduce(\n (acc, current) => {\n const isDup = acc.find((item) => item.label === current.label);\n if (!isDup) {\n return acc.concat([current]);\n } else {\n return acc;\n }\n },\n []\n );\n if (!options) return;\n const compareArr = options.map((option) => option.node.ariaLabel);\n const orderedSelected = mapOrder(filterDuplicates, compareArr, \"label\");\n if (JSON.stringify(prevSelectedItems.current) === JSON.stringify(orderedSelected))\n return;\n setSelectedItems(orderedSelected);\n prevSelectedItems.current = orderedSelected;\n }, [onSelectionChange, options, selected]);\n const ListViewClassNames = cx([styles[\"listview\"]], className);\n if (\"items\" in remainingProps) {\n const { children: children2, items, ...rest2 } = remainingProps;\n return /* @__PURE__ */ jsx(\n ListViewContext.Provider,\n {\n value: {\n options,\n onSelectionChange,\n selectedItems,\n setSelectedItems,\n items,\n controlled: !!selected\n },\n children: /* @__PURE__ */ jsx(\n \"div\",\n {\n ref: combinedRef,\n className: ListViewClassNames,\n style: styleCombined,\n \"data-anv\": \"listview\",\n role: \"grid\",\n \"aria-multiselectable\": \"true\",\n onFocus: onFocusHandler,\n onBlur: onBlurHandler,\n onKeyDown: onKeyDownHandler,\n onMouseDown: onMouseDownHandler,\n \"aria-activedescendant\": currentActive,\n tabIndex: 0,\n ...rest2,\n children: children2?.({\n items: items.map((item) => {\n return item;\n })\n })\n }\n )\n }\n );\n }\n const { children, ...rest } = remainingProps;\n return /* @__PURE__ */ jsx(\n ListViewContext.Provider,\n {\n value: {\n options,\n onSelectionChange,\n selectedItems,\n setSelectedItems,\n controlled: !!selected\n },\n children: /* @__PURE__ */ jsx(\n \"div\",\n {\n ref: combinedRef,\n className: ListViewClassNames,\n style: styleCombined,\n \"data-anv\": \"listview\",\n role: \"grid\",\n onFocus: onFocusHandler,\n onBlur: onBlurHandler,\n onKeyDown: onKeyDownHandler,\n onMouseDown: onMouseDownHandler,\n \"aria-activedescendant\": currentActive,\n tabIndex: 0,\n ...rest,\n children\n }\n )\n }\n );\n};\nListViewElement.displayName = \"ListView\";\nconst ListView = Object.assign(\n forwardRef(ListViewElement),\n {\n /**\n * ListViewOption component for individual selectable items within a listview.\n *\n * Features:\n * - Displays selectable options with proper ARIA attributes\n * - Supports disabled state for non-selectable options\n * - Keyboard navigation support\n * - Accessible with screen reader support\n *\n * @example\n * <ListView.Option item={{ label: \"Option 1\" }} />\n */\n Option: ListViewOption,\n /**\n * ListViewOptionCell component for rendering a cell within a listview option.\n *\n * Features:\n * - Renders a grid cell for option content\n * - Supports custom content and layout\n * - Accessible with proper ARIA attributes\n *\n * @example\n * <ListView.OptionCell>Custom cell content</ListView.OptionCell>\n */\n OptionCell: ListViewOptionCell\n }\n);\n\nexport { ListView as L, ListViewOption as a, ListViewOptionCell as b };\n//# sourceMappingURL=ListView-D2dfWXC-.js.map\n","import {\n ListViewProps as CoreListViewProps,\n ListView as CoreListView,\n ListViewOption as CoreListViewOption,\n ListViewOptionCell as CoreListViewOptionCell,\n ListViewOptionProps as CoreListViewOptionProps,\n} from \"@servicetitan/hammer-react\";\nimport { ComponentPropsWithoutRef, ForwardedRef, Ref, forwardRef } from \"react\";\nimport { useTrackingId } from \"../../hooks/useTrackingId\";\nimport { DataTrackingId } from \"../../types/DataTrackingId\";\n\n/**\n * Props for the ListView component\n * @property {function} [onSelectionChange] - Callback when selection changes\n * @property {Array} [selected] - Currently selected items (controlled)\n * @property {Array} [items] - Array of items to render\n * @property {Array} [defaultSelected] - Default selected items (uncontrolled)\n * @property {function} [children] - Optional render function for items\n * @extends LayoutUtilProps\n */\nexport type ListViewProps<T> = CoreListViewProps<T>;\n\n/**\n * Props for the ListViewOption component\n * @property {boolean} [disabled] - Whether the option is disabled\n * @property {function} [onChange] - Callback when the option changes\n * @property {object} [item] - The item object when using items prop\n * @property {string} [label] - The display label for the option\n * @extends ComponentPropsWithoutRef<\"div\">\n */\nexport type ListViewOptionProps = CoreListViewOptionProps & DataTrackingId;\n\nconst ListViewElement = function <T>(\n props: ListViewProps<T>,\n ref: ForwardedRef<HTMLUListElement>,\n) {\n return <CoreListView ref={ref} {...props} />;\n};\n\n/**\n * ListViewOption component for individual selectable items within a listview.\n *\n * Features:\n * - Displays selectable options with proper ARIA attributes\n * - Supports disabled state for non-selectable options\n * - Keyboard navigation support\n * - Accessible with screen reader support\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <ListView.Option item={{ label: \"Option 1\" }} />\n */\nexport const ListViewOption = forwardRef(\n (props: ListViewOptionProps, ref: Ref<HTMLDivElement>) => {\n const data = {\n label: \"item\" in props ? props.item?.label : props.label,\n };\n\n const trackingId = useTrackingId({\n name: \"ListViewOption\",\n data,\n hasOverride: !!props[\"data-tracking-id\"],\n });\n\n return (\n <CoreListViewOption ref={ref} data-tracking-id={trackingId} {...props} />\n );\n },\n);\nListViewOption.displayName = CoreListViewOption.displayName;\n\n/**\n * ListViewOptionCell component for rendering a cell within a listview option.\n *\n * Features:\n * - Renders a grid cell for option content\n * - Supports custom content and layout\n * - Accessible with proper ARIA attributes\n *\n * @example\n * <ListView.OptionCell>Custom cell content</ListView.OptionCell>\n */\nexport const ListViewOptionCell = forwardRef(\n (props: ComponentPropsWithoutRef<\"div\">, ref: Ref<HTMLDivElement>) => {\n return <CoreListViewOptionCell ref={ref} {...props} />;\n },\n);\nListViewOptionCell.displayName = CoreListViewOptionCell.displayName;\n\n/**\n * ListView component for displaying a list of selectable items in a grid layout.\n *\n * Features:\n * - Supports single and multiple selection modes\n * - Keyboard navigation with arrow keys\n * - Customizable item rendering\n * - Controlled and uncontrolled modes\n * - Accessible with proper ARIA attributes\n * - Focus management for interactive elements\n * - Layout utilities for positioning and spacing\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <ListView items={[{ label: \"Item 1\" }, { label: \"Item 2\" }]} onSelectionChange={handleSelection}>\n * {({ items }) => items.map(item => (\n * <ListView.Option key={item.label} item={item} />\n * ))}\n * </ListView>\n */\nexport const ListView = Object.assign(\n forwardRef(ListViewElement) as <T>(\n props: ListViewProps<T> & { ref?: React.ForwardedRef<HTMLUListElement> },\n ) => ReturnType<typeof ListViewElement>,\n {\n /**\n * ListViewOption component for individual selectable items within a listview.\n *\n * Features:\n * - Displays selectable options with proper ARIA attributes\n * - Supports disabled state for non-selectable options\n * - Keyboard navigation support\n * - Accessible with screen reader support\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <ListView.Option item={{ label: \"Option 1\" }} />\n */\n Option: ListViewOption,\n /**\n * ListViewOptionCell component for rendering a cell within a listview option.\n *\n * Features:\n * - Renders a grid cell for option content\n * - Supports custom content and layout\n * - Accessible with proper ARIA attributes\n *\n * @example\n * <ListView.OptionCell>Custom cell content</ListView.OptionCell>\n */\n OptionCell: ListViewOptionCell,\n },\n);\n"],"names":["ListViewOption","ListViewOptionCell","ListViewElement","ListView","CoreListView","CoreListViewOption","CoreListViewOptionCell"],"mappings":"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"}
package/dist/ListView.js CHANGED
@@ -1,2 +1,2 @@
1
- export { L as ListView, a as ListViewOption, b as ListViewOptionCell, L as default } from './ListView-_YFTewqc.js';
1
+ export { L as ListView, a as ListViewOption, b as ListViewOptionCell, L as default } from './ListView-DdHpJHTc.js';
2
2
  //# sourceMappingURL=ListView.js.map
@@ -2,7 +2,7 @@ import { jsxs, jsx } from 'react/jsx-runtime';
2
2
  import { useState, useEffect, forwardRef, useContext, createContext, useRef, useMemo } from 'react';
3
3
  import { c as cx } from './index-tZvMCc77.js';
4
4
  import { s as styles } from './Listbox.module-DcBE8Zmo-DcBE8Zmo.js';
5
- import { T as Text } from './Text-DCvcLCvf-DlmnnjTR.js';
5
+ import { T as Text } from './Text-CED_yrId-DsRYZw2-.js';
6
6
  import { u as useLayoutPropsUtil } from './useLayoutPropsUtil-DWACCL8v-CZNrcQT-.js';
7
7
  import { u as useMergeRefs } from './useMergeRefs-Bde85AWI-Bde85AWI.js';
8
8
  import { I as Icon } from './Icon-B6HmlQiR-BxQkO3X5.js';
@@ -578,4 +578,4 @@ const Listbox = Object.assign(
578
578
  );
579
579
 
580
580
  export { ListboxOption as L, ListboxOptionGroup as a, Listbox as b };
581
- //# sourceMappingURL=Listbox-BvJLSAVO-Br5k6fmq.js.map
581
+ //# sourceMappingURL=Listbox-B-WUuj-_-BWWeWtLW.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Listbox-BvJLSAVO-Br5k6fmq.js","sources":["../../hammer-react/dist/useTypeAhead-D_x_x3nw.js","../../hammer-react/dist/Listbox-BvJLSAVO.js"],"sourcesContent":["import { useState, useEffect } from 'react';\n\nconst useTypeAhead = (timeout = 750) => {\n const [typeAhead, setTypeAhead] = useState(\"\");\n useEffect(() => {\n const timer = setTimeout(() => setTypeAhead(\"\"), timeout);\n return () => clearTimeout(timer);\n }, [typeAhead, timeout]);\n const updateTypeAhead = (char) => setTypeAhead((prev) => prev + char);\n return [typeAhead, updateTypeAhead];\n};\n\nexport { useTypeAhead as u };\n//# sourceMappingURL=useTypeAhead-D_x_x3nw.js.map\n","import { jsx, jsxs } from 'react/jsx-runtime';\nimport { forwardRef, createContext, useContext, useRef, useState, useEffect, useMemo } from 'react';\nimport cx from 'classnames';\nimport { s as styles } from './Listbox.module-DcBE8Zmo.js';\nimport { u as useTypeAhead } from './useTypeAhead-D_x_x3nw.js';\nimport { T as Text } from './Text-DCvcLCvf.js';\nimport { u as useLayoutPropsUtil } from './useLayoutPropsUtil-DWACCL8v.js';\nimport { u as useMergeRefs } from './useMergeRefs-Bde85AWI.js';\nimport { I as Icon } from './Icon-B6HmlQiR.js';\nimport { F as Flex } from './Flex-CiK7uNUu.js';\nimport Check from '@servicetitan/hammer-icon/mdi/round/check.svg';\n\nconst ListboxOptionGroupContext = createContext({});\nconst ListboxOptionGroup = forwardRef((props, ref) => {\n const { className, children, disabled, label, ...rest } = props;\n const optionGroupCx = cx(styles[\"option-group\"], className);\n const labelCx = cx(styles[\"label\"], {\n [styles[\"disabled\"]]: disabled\n });\n return /* @__PURE__ */ jsx(ListboxOptionGroupContext.Provider, { value: { disabled }, children: /* @__PURE__ */ jsxs(\n \"div\",\n {\n \"data-anv\": \"listbox-option-group\",\n className: optionGroupCx,\n ref,\n ...rest,\n children: [\n /* @__PURE__ */ jsx(Text, { variant: \"eyebrow\", className: labelCx, children: label }),\n children\n ]\n }\n ) });\n});\nListboxOptionGroup.displayName = \"ListboxOptionGroup\";\n\nconst ListboxOption = forwardRef(\n (props, ref) => {\n const {\n className,\n children,\n disabled: disabledProp,\n onClick,\n label: labelProp,\n item,\n value,\n alignItems,\n justifyItems,\n alignContent,\n justifyContent,\n placeItems,\n placeContent,\n ...rest\n } = props;\n const {\n setCurrentFocus,\n currentFocus,\n selected,\n setSelected,\n selectionMode,\n onSelectionChange,\n controlled\n } = useListbox();\n const ListboxOptionClassNames = cx(styles[\"option\"], className, {});\n const label = labelProp || item?.label || \"\";\n const { disabled: groupDisabled } = useContext(ListboxOptionGroupContext);\n const disabled = groupDisabled || disabledProp || item?.disabled || false;\n const isSelected = () => {\n if (selectionMode === \"single\") {\n if (item) {\n return selected?.label === label;\n }\n return selected === label;\n }\n if (selectionMode === \"multiple\") {\n const selectedItems = Array.isArray(selected) ? selected : selected ? [selected] : [];\n if (item) {\n return selectedItems.some(\n (selectedItem) => selectedItem.label === label\n );\n }\n return selectedItems.includes(label);\n }\n return false;\n };\n const onClickHandler = (e) => {\n if (disabled) return;\n onClick?.(e);\n setCurrentFocus?.(label);\n if (selectionMode === \"single\") {\n if (!item && selected === label || item && selected?.label === label) {\n if (!controlled) {\n setSelected?.(void 0);\n }\n onSelectionChange?.(void 0);\n return;\n }\n if (item) {\n if (!controlled) {\n setSelected?.(item);\n }\n onSelectionChange?.(item);\n return;\n }\n if (!item) {\n if (!controlled) {\n setSelected?.(label);\n }\n onSelectionChange?.(label);\n return;\n }\n }\n if (selectionMode === \"multiple\") {\n const selectedItems = Array.isArray(selected) ? selected : selected ? [selected] : [];\n if (item && selectedItems.some((selectedItem) => selectedItem.label === label)) {\n const selectedItemsWithItemRemoved = selectedItems.filter(\n (selectedItem) => selectedItem.label !== label\n );\n setSelected?.(selectedItemsWithItemRemoved);\n onSelectionChange?.(selectedItemsWithItemRemoved);\n return;\n }\n if (!item && selectedItems.includes(label)) {\n const selectedItemsWithItemRemoved = selectedItems.filter(\n (selectedItem) => selectedItem !== label\n );\n setSelected?.(selectedItemsWithItemRemoved);\n onSelectionChange?.(selectedItemsWithItemRemoved);\n return;\n }\n if (item) {\n const selectedItemsWithItemAdded = [...selectedItems, item];\n setSelected?.(selectedItemsWithItemAdded);\n onSelectionChange?.(selectedItemsWithItemAdded);\n return;\n }\n if (!item) {\n const selectedItemsWithItemAdded = [...selectedItems, label];\n setSelected?.(selectedItemsWithItemAdded);\n onSelectionChange?.(selectedItemsWithItemAdded);\n return;\n }\n }\n };\n return /* @__PURE__ */ jsxs(\n \"li\",\n {\n className: ListboxOptionClassNames,\n \"data-anv\": \"listbox-option\",\n role: \"option\",\n \"aria-disabled\": disabled,\n \"data-focused\": currentFocus === label,\n \"aria-selected\": isSelected(),\n id: label,\n onClick: onClickHandler,\n ref,\n value: value ?? label,\n ...rest,\n children: [\n /* @__PURE__ */ jsx(\n Flex,\n {\n className: styles[\"children\"],\n grow: 1,\n shrink: 1,\n alignItems,\n justifyItems,\n alignContent,\n justifyContent,\n placeItems,\n placeContent,\n children\n }\n ),\n /* @__PURE__ */ jsx(\n Icon,\n {\n \"aria-hidden\": true,\n svg: Check,\n inherit: true,\n className: styles[\"Icon\"],\n style: { opacity: isSelected() ? 1 : 0 }\n }\n )\n ]\n }\n );\n }\n);\nListboxOption.displayName = \"ListboxOption\";\n\nconst scrollToOption = (node) => {\n node?.scrollIntoView({\n block: \"nearest\",\n inline: \"center\"\n });\n};\nconst onListboxKeyDown = (e, context) => {\n const {\n options,\n currentFocus,\n selectionMode,\n onSelectionChange,\n selected,\n setSelected,\n items,\n controlled\n } = context;\n if (!options) return;\n const currentNode = Array.from(options).find(\n (node) => node.id === currentFocus\n );\n const currentIndex = Array.from(options).indexOf(currentNode);\n switch (e.code) {\n case \"ArrowDown\":\n e.preventDefault();\n if (currentIndex === options.length - 1) {\n goTo(options[0], 0, context);\n } else {\n goTo(options[currentIndex + 1], currentIndex + 1, context);\n }\n break;\n case \"ArrowUp\":\n e.preventDefault();\n if (currentIndex === 0) {\n goTo(options[options.length - 1], options.length - 1, context);\n } else {\n goTo(options[currentIndex - 1], currentIndex - 1, context);\n }\n break;\n case \"Home\":\n e.preventDefault();\n goTo(options[0], 0, context);\n break;\n case \"End\":\n e.preventDefault();\n goTo(options[options.length - 1], options.length - 1, context);\n break;\n case \"Enter\":\n case \"Space\":\n e.preventDefault();\n if (!currentFocus) return;\n if (controlled) return;\n if (selectionMode === \"single\") {\n if (typeof selected === \"object\" ? selected.label === currentFocus : selected === currentFocus) {\n setSelected?.(void 0);\n onSelectionChange?.(void 0);\n return;\n }\n if (items) {\n const enabledItems = items.filter((item) => !item?.disabled);\n setSelected?.(enabledItems[currentIndex]);\n onSelectionChange?.(enabledItems[currentIndex]);\n return;\n }\n if (!items) {\n setSelected?.(currentFocus);\n onSelectionChange?.(currentFocus);\n return;\n }\n }\n if (selectionMode === \"multiple\") {\n const selectedItems = Array.isArray(selected) ? selected : [selected];\n if (items) {\n const focusedItem = items.find(\n (item) => item.label === currentFocus\n );\n if (selectedItems.includes(focusedItem)) {\n const selectedItemsWithItemRemoved = selectedItems.filter(\n (selectedItem) => selectedItem !== focusedItem\n );\n setSelected?.(selectedItemsWithItemRemoved);\n onSelectionChange?.(selectedItemsWithItemRemoved);\n return;\n } else {\n const selectedItemsWithItemAdded = [...selectedItems, focusedItem];\n setSelected?.(selectedItemsWithItemAdded);\n onSelectionChange?.(selectedItemsWithItemAdded);\n return;\n }\n }\n if (!items) {\n if (selectedItems.includes(currentFocus)) {\n setSelected?.(\n selectedItems.filter((item) => item !== currentFocus)\n );\n onSelectionChange?.(\n selectedItems.filter((item) => item !== currentFocus)\n );\n return;\n }\n setSelected?.([...selectedItems, currentFocus]);\n onSelectionChange?.([...selectedItems, currentFocus]);\n }\n }\n break;\n }\n};\nconst goTo = (option, index, context) => {\n const {\n setCurrentFocus,\n setSelected,\n selectionMode,\n disableAutoSelectOnFocus,\n onSelectionChange,\n items,\n controlled\n } = context;\n scrollToOption(option);\n if (disableAutoSelectOnFocus || selectionMode === \"multiple\") {\n setCurrentFocus(option?.id);\n return;\n }\n setCurrentFocus(option?.id);\n if (controlled) return;\n if (items) {\n const enabledItems = items.filter((item) => !item?.disabled);\n setSelected(enabledItems[index]);\n onSelectionChange?.(enabledItems[index]);\n } else {\n setSelected(option?.id);\n onSelectionChange?.(option?.id);\n }\n};\n\nconst ListboxContext = createContext(\n null\n);\nconst ListboxElement = function(props, ref) {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const {\n className,\n selectionMode = \"single\",\n items,\n children,\n onKeyDown,\n onFocus,\n onSelectionChange,\n selected: selectedProp,\n defaultSelected,\n disableAutoSelectOnFocus,\n style,\n ...rest\n } = componentProps;\n const listboxRef = useRef(null);\n const [selected, setSelected] = useState(\n selectedProp || defaultSelected\n );\n const [options, setOptions] = useState();\n const [typeAhead, updateTypeAhead] = useTypeAhead();\n const [currentFocus, setCurrentFocus] = useState(\n Array.isArray(selected) ? typeof selected[0] === \"object\" ? selected[0].label : selected[0] : typeof selected === \"object\" ? selected?.label : selected\n );\n const ListboxClassNames = cx(styles[\"listbox\"], className, {});\n const controlled = selectedProp !== void 0;\n useEffect(() => {\n if (listboxRef.current) {\n setOptions(\n listboxRef.current.querySelectorAll(\n \"[role=option]:not([aria-disabled='true'])\"\n )\n );\n }\n }, [items, listboxRef, selectionMode]);\n useEffect(() => {\n if (\"selected\" in componentProps) {\n setSelected(selectedProp);\n }\n }, [selectedProp]);\n useEffect(() => {\n if (!typeAhead.length) {\n return;\n }\n const lowerTypeAhead = typeAhead.toLowerCase();\n const nodes = options && Array.from(options).filter(\n (node2) => node2.innerText.toLowerCase().startsWith(lowerTypeAhead)\n );\n if (!nodes?.length) {\n return;\n }\n let node = nodes[0];\n if (lowerTypeAhead.length === 1 && nodes.length > 1) {\n const focusIndex = currentFocus ? nodes.map((node2) => node2.id).indexOf(currentFocus) : -1;\n if (focusIndex > -1) {\n let nextFocusIndex = focusIndex + 1;\n if (nextFocusIndex === nodes.length) {\n nextFocusIndex = 0;\n }\n node = nodes[nextFocusIndex];\n }\n }\n setCurrentFocus(node.id);\n scrollToOption(node);\n if (controlled) return;\n if (selectionMode === \"single\") {\n if (items) {\n if (disableAutoSelectOnFocus) {\n const focusedItem = items.find(\n (item) => item.label === currentFocus\n );\n setSelected?.(focusedItem);\n onSelectionChange?.(focusedItem);\n }\n return;\n }\n if (!items) {\n if (disableAutoSelectOnFocus) {\n setSelected(node.id);\n onSelectionChange?.(node.id);\n }\n return;\n }\n }\n }, [typeAhead]);\n const onKeyDownHandler = (e) => {\n onKeyDown?.(e);\n if (new RegExp(/^[a-zA-Z0-9]$/i).test(e.key)) {\n e.preventDefault();\n e.stopPropagation();\n updateTypeAhead(e.key);\n return;\n }\n onListboxKeyDown(e, {\n setCurrentFocus,\n currentFocus,\n setSelected,\n selected,\n selectionMode,\n options,\n onSelectionChange,\n disableAutoSelectOnFocus: !!disableAutoSelectOnFocus,\n items\n });\n };\n const onFocusHandler = (e) => {\n onFocus?.(e);\n if (!options) return;\n if (selectionMode === \"single\") {\n const currentFocusExists = Array.from(options).some(\n (item) => item.id === currentFocus\n );\n if (currentFocus && currentFocusExists) return;\n if (!items) {\n if (currentFocusExists) {\n setCurrentFocus(selected);\n return;\n }\n setCurrentFocus(options[0].id);\n return;\n }\n if (currentFocusExists) {\n setCurrentFocus(selected?.label);\n return;\n }\n setCurrentFocus(items?.[0].label);\n return;\n }\n if (selectionMode === \"multiple\") {\n const selectedArr = Array.isArray(selected) ? selected : [selected];\n const currentFocusExists = Array.from(options).some(\n (item) => item.id === currentFocus\n );\n if (currentFocus && currentFocusExists) return;\n if (!items) {\n console.log({ currentFocus, currentFocusExists });\n if (currentFocusExists) {\n setCurrentFocus(selectedArr[0].label);\n return;\n }\n setCurrentFocus(options[0].id);\n return;\n }\n if (currentFocusExists) {\n setCurrentFocus(selectedArr[0]?.label);\n return;\n }\n setCurrentFocus(items?.[0].label);\n return;\n }\n setCurrentFocus(options[0].id);\n };\n const mergeRef = useMergeRefs([ref, listboxRef]);\n const styleCombined = {\n ...style,\n ...layoutStyles\n };\n const value = useMemo(\n () => ({\n setCurrentFocus,\n currentFocus,\n setSelected,\n selected,\n selectionMode,\n items,\n options,\n onSelectionChange,\n disableAutoSelectOnFocus: !!disableAutoSelectOnFocus,\n controlled\n }),\n [\n currentFocus,\n disableAutoSelectOnFocus,\n onSelectionChange,\n options,\n selected,\n selectionMode,\n items,\n controlled\n ]\n );\n return /* @__PURE__ */ jsx(ListboxContext.Provider, { value, children: /* @__PURE__ */ jsx(\n \"ul\",\n {\n tabIndex: 0,\n role: \"listbox\",\n style: styleCombined,\n \"aria-multiselectable\": selectionMode === \"multiple\" ? \"true\" : \"false\",\n \"aria-activedescendant\": currentFocus,\n className: ListboxClassNames,\n \"data-anv\": \"listbox\",\n onKeyDown: onKeyDownHandler,\n onFocus: onFocusHandler,\n ...rest,\n ref: mergeRef,\n children: items ? children?.({ items }) : children\n }\n ) });\n};\nconst useListbox = () => {\n const context = useContext(ListboxContext);\n if (context == null) {\n throw new Error(\"useListbox must be wrapped in <Listbox />\");\n }\n return context;\n};\nListboxElement.displayName = \"Listbox\";\nconst Listbox = Object.assign(\n forwardRef(ListboxElement),\n {\n /**\n * ListboxOption component for individual selectable items within a listbox.\n *\n * Features:\n * - Displays selectable options with proper ARIA attributes\n * - Supports disabled state for non-selectable options\n * - Keyboard navigation support\n * - Accessible with screen reader support\n *\n * @example\n * <Listbox.Option value=\"option1\" label=\"Option 1\" />\n */\n Option: ListboxOption,\n /**\n * ListboxOptionGroup component for grouping related options within a listbox.\n *\n * Features:\n * - Groups related options with a descriptive label\n * - Maintains proper ARIA structure for accessibility\n * - Supports keyboard navigation within groups\n * - Visual separation of option categories\n *\n * @example\n * <Listbox.OptionGroup label=\"Fruits\">\n * <Listbox.Option value=\"apple\">Apple</Listbox.Option>\n * <Listbox.Option value=\"banana\">Banana</Listbox.Option>\n * </Listbox.OptionGroup>\n */\n OptionGroup: ListboxOptionGroup\n }\n);\n\nexport { Listbox as L, ListboxOption as a, ListboxOptionGroup as b };\n//# sourceMappingURL=Listbox-BvJLSAVO.js.map\n"],"names":["Check"],"mappings":"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"}
1
+ {"version":3,"file":"Listbox-B-WUuj-_-BWWeWtLW.js","sources":["../../hammer-react/dist/useTypeAhead-D_x_x3nw.js","../../hammer-react/dist/Listbox-B-WUuj-_.js"],"sourcesContent":["import { useState, useEffect } from 'react';\n\nconst useTypeAhead = (timeout = 750) => {\n const [typeAhead, setTypeAhead] = useState(\"\");\n useEffect(() => {\n const timer = setTimeout(() => setTypeAhead(\"\"), timeout);\n return () => clearTimeout(timer);\n }, [typeAhead, timeout]);\n const updateTypeAhead = (char) => setTypeAhead((prev) => prev + char);\n return [typeAhead, updateTypeAhead];\n};\n\nexport { useTypeAhead as u };\n//# sourceMappingURL=useTypeAhead-D_x_x3nw.js.map\n","import { jsx, jsxs } from 'react/jsx-runtime';\nimport { forwardRef, createContext, useContext, useRef, useState, useEffect, useMemo } from 'react';\nimport cx from 'classnames';\nimport { s as styles } from './Listbox.module-DcBE8Zmo.js';\nimport { u as useTypeAhead } from './useTypeAhead-D_x_x3nw.js';\nimport { T as Text } from './Text-CED_yrId.js';\nimport { u as useLayoutPropsUtil } from './useLayoutPropsUtil-DWACCL8v.js';\nimport { u as useMergeRefs } from './useMergeRefs-Bde85AWI.js';\nimport { I as Icon } from './Icon-B6HmlQiR.js';\nimport { F as Flex } from './Flex-CiK7uNUu.js';\nimport Check from '@servicetitan/hammer-icon/mdi/round/check.svg';\n\nconst ListboxOptionGroupContext = createContext({});\nconst ListboxOptionGroup = forwardRef((props, ref) => {\n const { className, children, disabled, label, ...rest } = props;\n const optionGroupCx = cx(styles[\"option-group\"], className);\n const labelCx = cx(styles[\"label\"], {\n [styles[\"disabled\"]]: disabled\n });\n return /* @__PURE__ */ jsx(ListboxOptionGroupContext.Provider, { value: { disabled }, children: /* @__PURE__ */ jsxs(\n \"div\",\n {\n \"data-anv\": \"listbox-option-group\",\n className: optionGroupCx,\n ref,\n ...rest,\n children: [\n /* @__PURE__ */ jsx(Text, { variant: \"eyebrow\", className: labelCx, children: label }),\n children\n ]\n }\n ) });\n});\nListboxOptionGroup.displayName = \"ListboxOptionGroup\";\n\nconst ListboxOption = forwardRef(\n (props, ref) => {\n const {\n className,\n children,\n disabled: disabledProp,\n onClick,\n label: labelProp,\n item,\n value,\n alignItems,\n justifyItems,\n alignContent,\n justifyContent,\n placeItems,\n placeContent,\n ...rest\n } = props;\n const {\n setCurrentFocus,\n currentFocus,\n selected,\n setSelected,\n selectionMode,\n onSelectionChange,\n controlled\n } = useListbox();\n const ListboxOptionClassNames = cx(styles[\"option\"], className, {});\n const label = labelProp || item?.label || \"\";\n const { disabled: groupDisabled } = useContext(ListboxOptionGroupContext);\n const disabled = groupDisabled || disabledProp || item?.disabled || false;\n const isSelected = () => {\n if (selectionMode === \"single\") {\n if (item) {\n return selected?.label === label;\n }\n return selected === label;\n }\n if (selectionMode === \"multiple\") {\n const selectedItems = Array.isArray(selected) ? selected : selected ? [selected] : [];\n if (item) {\n return selectedItems.some(\n (selectedItem) => selectedItem.label === label\n );\n }\n return selectedItems.includes(label);\n }\n return false;\n };\n const onClickHandler = (e) => {\n if (disabled) return;\n onClick?.(e);\n setCurrentFocus?.(label);\n if (selectionMode === \"single\") {\n if (!item && selected === label || item && selected?.label === label) {\n if (!controlled) {\n setSelected?.(void 0);\n }\n onSelectionChange?.(void 0);\n return;\n }\n if (item) {\n if (!controlled) {\n setSelected?.(item);\n }\n onSelectionChange?.(item);\n return;\n }\n if (!item) {\n if (!controlled) {\n setSelected?.(label);\n }\n onSelectionChange?.(label);\n return;\n }\n }\n if (selectionMode === \"multiple\") {\n const selectedItems = Array.isArray(selected) ? selected : selected ? [selected] : [];\n if (item && selectedItems.some((selectedItem) => selectedItem.label === label)) {\n const selectedItemsWithItemRemoved = selectedItems.filter(\n (selectedItem) => selectedItem.label !== label\n );\n setSelected?.(selectedItemsWithItemRemoved);\n onSelectionChange?.(selectedItemsWithItemRemoved);\n return;\n }\n if (!item && selectedItems.includes(label)) {\n const selectedItemsWithItemRemoved = selectedItems.filter(\n (selectedItem) => selectedItem !== label\n );\n setSelected?.(selectedItemsWithItemRemoved);\n onSelectionChange?.(selectedItemsWithItemRemoved);\n return;\n }\n if (item) {\n const selectedItemsWithItemAdded = [...selectedItems, item];\n setSelected?.(selectedItemsWithItemAdded);\n onSelectionChange?.(selectedItemsWithItemAdded);\n return;\n }\n if (!item) {\n const selectedItemsWithItemAdded = [...selectedItems, label];\n setSelected?.(selectedItemsWithItemAdded);\n onSelectionChange?.(selectedItemsWithItemAdded);\n return;\n }\n }\n };\n return /* @__PURE__ */ jsxs(\n \"li\",\n {\n className: ListboxOptionClassNames,\n \"data-anv\": \"listbox-option\",\n role: \"option\",\n \"aria-disabled\": disabled,\n \"data-focused\": currentFocus === label,\n \"aria-selected\": isSelected(),\n id: label,\n onClick: onClickHandler,\n ref,\n value: value ?? label,\n ...rest,\n children: [\n /* @__PURE__ */ jsx(\n Flex,\n {\n className: styles[\"children\"],\n grow: 1,\n shrink: 1,\n alignItems,\n justifyItems,\n alignContent,\n justifyContent,\n placeItems,\n placeContent,\n children\n }\n ),\n /* @__PURE__ */ jsx(\n Icon,\n {\n \"aria-hidden\": true,\n svg: Check,\n inherit: true,\n className: styles[\"Icon\"],\n style: { opacity: isSelected() ? 1 : 0 }\n }\n )\n ]\n }\n );\n }\n);\nListboxOption.displayName = \"ListboxOption\";\n\nconst scrollToOption = (node) => {\n node?.scrollIntoView({\n block: \"nearest\",\n inline: \"center\"\n });\n};\nconst onListboxKeyDown = (e, context) => {\n const {\n options,\n currentFocus,\n selectionMode,\n onSelectionChange,\n selected,\n setSelected,\n items,\n controlled\n } = context;\n if (!options) return;\n const currentNode = Array.from(options).find(\n (node) => node.id === currentFocus\n );\n const currentIndex = Array.from(options).indexOf(currentNode);\n switch (e.code) {\n case \"ArrowDown\":\n e.preventDefault();\n if (currentIndex === options.length - 1) {\n goTo(options[0], 0, context);\n } else {\n goTo(options[currentIndex + 1], currentIndex + 1, context);\n }\n break;\n case \"ArrowUp\":\n e.preventDefault();\n if (currentIndex === 0) {\n goTo(options[options.length - 1], options.length - 1, context);\n } else {\n goTo(options[currentIndex - 1], currentIndex - 1, context);\n }\n break;\n case \"Home\":\n e.preventDefault();\n goTo(options[0], 0, context);\n break;\n case \"End\":\n e.preventDefault();\n goTo(options[options.length - 1], options.length - 1, context);\n break;\n case \"Enter\":\n case \"Space\":\n e.preventDefault();\n if (!currentFocus) return;\n if (controlled) return;\n if (selectionMode === \"single\") {\n if (typeof selected === \"object\" ? selected.label === currentFocus : selected === currentFocus) {\n setSelected?.(void 0);\n onSelectionChange?.(void 0);\n return;\n }\n if (items) {\n const enabledItems = items.filter((item) => !item?.disabled);\n setSelected?.(enabledItems[currentIndex]);\n onSelectionChange?.(enabledItems[currentIndex]);\n return;\n }\n if (!items) {\n setSelected?.(currentFocus);\n onSelectionChange?.(currentFocus);\n return;\n }\n }\n if (selectionMode === \"multiple\") {\n const selectedItems = Array.isArray(selected) ? selected : [selected];\n if (items) {\n const focusedItem = items.find(\n (item) => item.label === currentFocus\n );\n if (selectedItems.includes(focusedItem)) {\n const selectedItemsWithItemRemoved = selectedItems.filter(\n (selectedItem) => selectedItem !== focusedItem\n );\n setSelected?.(selectedItemsWithItemRemoved);\n onSelectionChange?.(selectedItemsWithItemRemoved);\n return;\n } else {\n const selectedItemsWithItemAdded = [...selectedItems, focusedItem];\n setSelected?.(selectedItemsWithItemAdded);\n onSelectionChange?.(selectedItemsWithItemAdded);\n return;\n }\n }\n if (!items) {\n if (selectedItems.includes(currentFocus)) {\n setSelected?.(\n selectedItems.filter((item) => item !== currentFocus)\n );\n onSelectionChange?.(\n selectedItems.filter((item) => item !== currentFocus)\n );\n return;\n }\n setSelected?.([...selectedItems, currentFocus]);\n onSelectionChange?.([...selectedItems, currentFocus]);\n }\n }\n break;\n }\n};\nconst goTo = (option, index, context) => {\n const {\n setCurrentFocus,\n setSelected,\n selectionMode,\n disableAutoSelectOnFocus,\n onSelectionChange,\n items,\n controlled\n } = context;\n scrollToOption(option);\n if (disableAutoSelectOnFocus || selectionMode === \"multiple\") {\n setCurrentFocus(option?.id);\n return;\n }\n setCurrentFocus(option?.id);\n if (controlled) return;\n if (items) {\n const enabledItems = items.filter((item) => !item?.disabled);\n setSelected(enabledItems[index]);\n onSelectionChange?.(enabledItems[index]);\n } else {\n setSelected(option?.id);\n onSelectionChange?.(option?.id);\n }\n};\n\nconst ListboxContext = createContext(\n null\n);\nconst ListboxElement = function(props, ref) {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const {\n className,\n selectionMode = \"single\",\n items,\n children,\n onKeyDown,\n onFocus,\n onSelectionChange,\n selected: selectedProp,\n defaultSelected,\n disableAutoSelectOnFocus,\n style,\n ...rest\n } = componentProps;\n const listboxRef = useRef(null);\n const [selected, setSelected] = useState(\n selectedProp || defaultSelected\n );\n const [options, setOptions] = useState();\n const [typeAhead, updateTypeAhead] = useTypeAhead();\n const [currentFocus, setCurrentFocus] = useState(\n Array.isArray(selected) ? typeof selected[0] === \"object\" ? selected[0].label : selected[0] : typeof selected === \"object\" ? selected?.label : selected\n );\n const ListboxClassNames = cx(styles[\"listbox\"], className, {});\n const controlled = selectedProp !== void 0;\n useEffect(() => {\n if (listboxRef.current) {\n setOptions(\n listboxRef.current.querySelectorAll(\n \"[role=option]:not([aria-disabled='true'])\"\n )\n );\n }\n }, [items, listboxRef, selectionMode]);\n useEffect(() => {\n if (\"selected\" in componentProps) {\n setSelected(selectedProp);\n }\n }, [selectedProp]);\n useEffect(() => {\n if (!typeAhead.length) {\n return;\n }\n const lowerTypeAhead = typeAhead.toLowerCase();\n const nodes = options && Array.from(options).filter(\n (node2) => node2.innerText.toLowerCase().startsWith(lowerTypeAhead)\n );\n if (!nodes?.length) {\n return;\n }\n let node = nodes[0];\n if (lowerTypeAhead.length === 1 && nodes.length > 1) {\n const focusIndex = currentFocus ? nodes.map((node2) => node2.id).indexOf(currentFocus) : -1;\n if (focusIndex > -1) {\n let nextFocusIndex = focusIndex + 1;\n if (nextFocusIndex === nodes.length) {\n nextFocusIndex = 0;\n }\n node = nodes[nextFocusIndex];\n }\n }\n setCurrentFocus(node.id);\n scrollToOption(node);\n if (controlled) return;\n if (selectionMode === \"single\") {\n if (items) {\n if (disableAutoSelectOnFocus) {\n const focusedItem = items.find(\n (item) => item.label === currentFocus\n );\n setSelected?.(focusedItem);\n onSelectionChange?.(focusedItem);\n }\n return;\n }\n if (!items) {\n if (disableAutoSelectOnFocus) {\n setSelected(node.id);\n onSelectionChange?.(node.id);\n }\n return;\n }\n }\n }, [typeAhead]);\n const onKeyDownHandler = (e) => {\n onKeyDown?.(e);\n if (new RegExp(/^[a-zA-Z0-9]$/i).test(e.key)) {\n e.preventDefault();\n e.stopPropagation();\n updateTypeAhead(e.key);\n return;\n }\n onListboxKeyDown(e, {\n setCurrentFocus,\n currentFocus,\n setSelected,\n selected,\n selectionMode,\n options,\n onSelectionChange,\n disableAutoSelectOnFocus: !!disableAutoSelectOnFocus,\n items\n });\n };\n const onFocusHandler = (e) => {\n onFocus?.(e);\n if (!options) return;\n if (selectionMode === \"single\") {\n const currentFocusExists = Array.from(options).some(\n (item) => item.id === currentFocus\n );\n if (currentFocus && currentFocusExists) return;\n if (!items) {\n if (currentFocusExists) {\n setCurrentFocus(selected);\n return;\n }\n setCurrentFocus(options[0].id);\n return;\n }\n if (currentFocusExists) {\n setCurrentFocus(selected?.label);\n return;\n }\n setCurrentFocus(items?.[0].label);\n return;\n }\n if (selectionMode === \"multiple\") {\n const selectedArr = Array.isArray(selected) ? selected : [selected];\n const currentFocusExists = Array.from(options).some(\n (item) => item.id === currentFocus\n );\n if (currentFocus && currentFocusExists) return;\n if (!items) {\n console.log({ currentFocus, currentFocusExists });\n if (currentFocusExists) {\n setCurrentFocus(selectedArr[0].label);\n return;\n }\n setCurrentFocus(options[0].id);\n return;\n }\n if (currentFocusExists) {\n setCurrentFocus(selectedArr[0]?.label);\n return;\n }\n setCurrentFocus(items?.[0].label);\n return;\n }\n setCurrentFocus(options[0].id);\n };\n const mergeRef = useMergeRefs([ref, listboxRef]);\n const styleCombined = {\n ...style,\n ...layoutStyles\n };\n const value = useMemo(\n () => ({\n setCurrentFocus,\n currentFocus,\n setSelected,\n selected,\n selectionMode,\n items,\n options,\n onSelectionChange,\n disableAutoSelectOnFocus: !!disableAutoSelectOnFocus,\n controlled\n }),\n [\n currentFocus,\n disableAutoSelectOnFocus,\n onSelectionChange,\n options,\n selected,\n selectionMode,\n items,\n controlled\n ]\n );\n return /* @__PURE__ */ jsx(ListboxContext.Provider, { value, children: /* @__PURE__ */ jsx(\n \"ul\",\n {\n tabIndex: 0,\n role: \"listbox\",\n style: styleCombined,\n \"aria-multiselectable\": selectionMode === \"multiple\" ? \"true\" : \"false\",\n \"aria-activedescendant\": currentFocus,\n className: ListboxClassNames,\n \"data-anv\": \"listbox\",\n onKeyDown: onKeyDownHandler,\n onFocus: onFocusHandler,\n ...rest,\n ref: mergeRef,\n children: items ? children?.({ items }) : children\n }\n ) });\n};\nconst useListbox = () => {\n const context = useContext(ListboxContext);\n if (context == null) {\n throw new Error(\"useListbox must be wrapped in <Listbox />\");\n }\n return context;\n};\nListboxElement.displayName = \"Listbox\";\nconst Listbox = Object.assign(\n forwardRef(ListboxElement),\n {\n /**\n * ListboxOption component for individual selectable items within a listbox.\n *\n * Features:\n * - Displays selectable options with proper ARIA attributes\n * - Supports disabled state for non-selectable options\n * - Keyboard navigation support\n * - Accessible with screen reader support\n *\n * @example\n * <Listbox.Option value=\"option1\" label=\"Option 1\" />\n */\n Option: ListboxOption,\n /**\n * ListboxOptionGroup component for grouping related options within a listbox.\n *\n * Features:\n * - Groups related options with a descriptive label\n * - Maintains proper ARIA structure for accessibility\n * - Supports keyboard navigation within groups\n * - Visual separation of option categories\n *\n * @example\n * <Listbox.OptionGroup label=\"Fruits\">\n * <Listbox.Option value=\"apple\">Apple</Listbox.Option>\n * <Listbox.Option value=\"banana\">Banana</Listbox.Option>\n * </Listbox.OptionGroup>\n */\n OptionGroup: ListboxOptionGroup\n }\n);\n\nexport { Listbox as L, ListboxOption as a, ListboxOptionGroup as b };\n//# sourceMappingURL=Listbox-B-WUuj-_.js.map\n"],"names":["Check"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
2
  import { forwardRef } from 'react';
3
3
  import { useTrackingId } from './useTrackingId.js';
4
- import { L as ListboxOption$1, a as ListboxOptionGroup$1, b as Listbox$1 } from './Listbox-BvJLSAVO-Br5k6fmq.js';
4
+ import { L as ListboxOption$1, a as ListboxOptionGroup$1, b as Listbox$1 } from './Listbox-B-WUuj-_-BWWeWtLW.js';
5
5
 
6
6
  const ListboxElement = function(props, ref) {
7
7
  return /* @__PURE__ */ jsx(Listbox$1, { ref, ...props });
@@ -64,4 +64,4 @@ const Listbox = Object.assign(
64
64
  );
65
65
 
66
66
  export { Listbox as L, ListboxOption as a, ListboxOptionGroup as b };
67
- //# sourceMappingURL=Listbox-dVARiucB.js.map
67
+ //# sourceMappingURL=Listbox-Di6OS1Fk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Listbox-dVARiucB.js","sources":["../src/components/Listbox/Listbox.tsx"],"sourcesContent":["import {\n ListboxProps as CoreListboxProps,\n Listbox as CoreListbox,\n ListboxOption as CoreListboxOption,\n ListboxOptionProps as CoreListboxOptionProps,\n ListboxOptionGroup as CoreListboxOptionGroup,\n ListboxOptionGroupProps as CoreListboxOptionGroupProps,\n} from \"@servicetitan/hammer-react\";\nimport { Ref, forwardRef, ForwardedRef } from \"react\";\nimport { useTrackingId } from \"../../hooks/useTrackingId\";\nimport { DataTrackingId } from \"../../types/DataTrackingId\";\n\n/**\n * Props for the Listbox component\n * @property {\"single\" | \"multiple\"} [selectionMode] - Selection mode for the listbox\n * @property {boolean} [disableAutoSelectOnFocus] - Whether to disable automatic selection when focusing on an option\n * @property {string | string[] | ItemType<T> | ItemType<T>[]} [selected] - Currently selected item(s) (controlled)\n * @property {string | string[] | ItemType<T> | ItemType<T>[]} [defaultSelected] - Default selected item(s) (uncontrolled)\n * @property {function} [onSelectionChange] - Callback when selection changes\n * @property {ItemType<T>[]} [items] - Array of items to render (when using items prop)\n * @property {ReactNode | function} [children] - Child elements or render function for items\n * @extends ComponentPropsWithoutRef<\"ul\">\n * @extends LayoutUtilProps\n */\nexport type ListboxProps<T> = CoreListboxProps<T>;\n\n/**\n * Props for the ListboxOption component\n * @property {string} value - The value of the option\n * @property {string} [label] - The display label for the option\n * @property {boolean} [disabled] - Whether the option is disabled\n * @property {ItemType<T>} [item] - The item object when using items prop\n * @extends ComponentPropsWithoutRef<\"li\">\n */\nexport type ListboxOptionProps = CoreListboxOptionProps & DataTrackingId;\n\n/**\n * Props for the ListboxOptionGroup component\n * @property {string} label - The label for the option group\n * @property {ReactNode} children - The options within this group\n * @extends ComponentPropsWithoutRef<\"div\">\n */\nexport type ListboxOptionGroupProps = CoreListboxOptionGroupProps;\n\n/**\n * Listbox component for selecting one or more items from a list\n *\n * Features:\n * - Supports single and multiple selection modes\n * - Keyboard navigation with arrow keys and type-ahead\n * - Optional auto-selection on focus\n * - Controlled and uncontrolled modes\n * - Accessible with proper ARIA attributes\n * - Supports custom item rendering\n * - Option grouping for organization\n * - Layout utilities for positioning and spacing\n * - Automatic tracking ID generation for analytics\n *\n * @template T - The type of additional properties for items\n * @example\n * <Listbox selectionMode=\"single\" onSelectionChange={handleSelection}>\n * <Listbox.Option value=\"option1\">Option 1</Listbox.Option>\n * <Listbox.Option value=\"option2\">Option 2</Listbox.Option>\n * </Listbox>\n */\nconst ListboxElement = function <T>(\n props: ListboxProps<T>,\n ref: ForwardedRef<HTMLUListElement>,\n) {\n return <CoreListbox ref={ref} {...props} />;\n};\n\n/**\n * ListboxOption component for individual selectable items within a listbox\n *\n * Features:\n * - Displays selectable options with proper ARIA attributes\n * - Supports disabled state for non-selectable options\n * - Keyboard navigation support\n * - Automatic tracking ID generation for analytics\n * - Accessible with screen reader support\n *\n * @example\n * <ListboxOption value=\"option1\" label=\"Option 1\" />\n */\nexport const ListboxOption = forwardRef(\n (props: ListboxOptionProps, ref: Ref<HTMLLIElement>) => {\n const data = {\n value: props.value,\n label: \"item\" in props ? props.item?.label : props.label,\n };\n\n const trackingId = useTrackingId({\n name: \"ListboxOption\",\n data,\n hasOverride: !!props[\"data-tracking-id\"],\n });\n\n return (\n <CoreListboxOption ref={ref} data-tracking-id={trackingId} {...props} />\n );\n },\n);\n\nListboxOption.displayName = CoreListboxOption.displayName;\n\n/**\n * ListboxOptionGroup component for grouping related options within a listbox\n *\n * Features:\n * - Groups related options with a descriptive label\n * - Maintains proper ARIA structure for accessibility\n * - Supports keyboard navigation within groups\n * - Visual separation of option categories\n *\n * @example\n * <ListboxOptionGroup label=\"Fruits\">\n * <ListboxOption value=\"apple\">Apple</ListboxOption>\n * <ListboxOption value=\"banana\">Banana</ListboxOption>\n * </ListboxOptionGroup>\n */\nexport const ListboxOptionGroup = forwardRef(\n (props: ListboxOptionGroupProps, ref: Ref<HTMLDivElement>) => {\n return <CoreListboxOptionGroup ref={ref} {...props} />;\n },\n);\nListboxOptionGroup.displayName = CoreListboxOptionGroup.displayName;\n\n/**\n * Listbox component for selecting one or more items from a list\n *\n * Features:\n * - Supports single and multiple selection modes\n * - Keyboard navigation with arrow keys and type-ahead\n * - Optional auto-selection on focus\n * - Controlled and uncontrolled modes\n * - Accessible with proper ARIA attributes\n * - Supports custom item rendering\n * - Option grouping for organization\n * - Layout utilities for positioning and spacing\n * - Automatic tracking ID generation for analytics\n *\n * @template T - The type of additional properties for items\n * @example\n * <Listbox selectionMode=\"single\" onSelectionChange={handleSelection}>\n * <Listbox.Option value=\"option1\">Option 1</Listbox.Option>\n * <Listbox.Option value=\"option2\">Option 2</Listbox.Option>\n * </Listbox>\n */\nexport const Listbox = Object.assign(\n forwardRef(ListboxElement) as <T>(\n props: ListboxProps<T> & { ref?: React.ForwardedRef<HTMLUListElement> },\n ) => ReturnType<typeof ListboxElement>,\n {\n /**\n * ListboxOption component for individual selectable items within a listbox\n *\n * Features:\n * - Displays selectable options with proper ARIA attributes\n * - Supports disabled state for non-selectable options\n * - Keyboard navigation support\n * - Automatic tracking ID generation for analytics\n * - Accessible with screen reader support\n *\n * @example\n * <Listbox.Option value=\"option1\" label=\"Option 1\" />\n */\n Option: ListboxOption,\n /**\n * ListboxOptionGroup component for grouping related options within a listbox\n *\n * Features:\n * - Groups related options with a descriptive label\n * - Maintains proper ARIA structure for accessibility\n * - Supports keyboard navigation within groups\n * - Visual separation of option categories\n *\n * @example\n * <Listbox.OptionGroup label=\"Fruits\">\n * <Listbox.Option value=\"apple\">Apple</Listbox.Option>\n * <Listbox.Option value=\"banana\">Banana</Listbox.Option>\n * </Listbox.OptionGroup>\n */\n OptionGroup: ListboxOptionGroup,\n },\n);\n"],"names":["CoreListbox","CoreListboxOption","CoreListboxOptionGroup"],"mappings":";;;;;AAiEA,MAAM,cAAA,GAAiB,SACrB,KAAA,EACA,GACA,EAAA;AACA,EAAA,uBAAQ,GAAA,CAAAA,SAAA,EAAA,EAAY,GAAW,EAAA,GAAG,KAAO,EAAA,CAAA;AAC3C,CAAA;AAeO,MAAM,aAAgB,GAAA,UAAA;AAAA,EAC3B,CAAC,OAA2B,GAA4B,KAAA;AACtD,IAAA,MAAM,IAAO,GAAA;AAAA,MACX,OAAO,KAAM,CAAA,KAAA;AAAA,MACb,OAAO,MAAU,IAAA,KAAA,GAAQ,KAAM,CAAA,IAAA,EAAM,QAAQ,KAAM,CAAA;AAAA,KACrD;AAEA,IAAA,MAAM,aAAa,aAAc,CAAA;AAAA,MAC/B,IAAM,EAAA,eAAA;AAAA,MACN,IAAA;AAAA,MACA,WAAa,EAAA,CAAC,CAAC,KAAA,CAAM,kBAAkB;AAAA,KACxC,CAAA;AAED,IAAA,2BACGC,eAAkB,EAAA,EAAA,GAAA,EAAU,kBAAkB,EAAA,UAAA,EAAa,GAAG,KAAO,EAAA,CAAA;AAAA;AAG5E;AAEA,aAAA,CAAc,cAAcA,eAAkB,CAAA,WAAA;AAiBvC,MAAM,kBAAqB,GAAA,UAAA;AAAA,EAChC,CAAC,OAAgC,GAA6B,KAAA;AAC5D,IAAA,uBAAQ,GAAA,CAAAC,oBAAA,EAAA,EAAuB,GAAW,EAAA,GAAG,KAAO,EAAA,CAAA;AAAA;AAExD;AACA,kBAAA,CAAmB,cAAcA,oBAAuB,CAAA,WAAA;AAuBjD,MAAM,UAAU,MAAO,CAAA,MAAA;AAAA,EAC5B,WAAW,cAAc,CAAA;AAAA,EAGzB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAcE,MAAQ,EAAA,aAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAgBR,WAAa,EAAA;AAAA;AAEjB;;;;"}
1
+ {"version":3,"file":"Listbox-Di6OS1Fk.js","sources":["../src/components/Listbox/Listbox.tsx"],"sourcesContent":["import {\n ListboxProps as CoreListboxProps,\n Listbox as CoreListbox,\n ListboxOption as CoreListboxOption,\n ListboxOptionProps as CoreListboxOptionProps,\n ListboxOptionGroup as CoreListboxOptionGroup,\n ListboxOptionGroupProps as CoreListboxOptionGroupProps,\n} from \"@servicetitan/hammer-react\";\nimport { Ref, forwardRef, ForwardedRef } from \"react\";\nimport { useTrackingId } from \"../../hooks/useTrackingId\";\nimport { DataTrackingId } from \"../../types/DataTrackingId\";\n\n/**\n * Props for the Listbox component\n * @property {\"single\" | \"multiple\"} [selectionMode] - Selection mode for the listbox\n * @property {boolean} [disableAutoSelectOnFocus] - Whether to disable automatic selection when focusing on an option\n * @property {string | string[] | ItemType<T> | ItemType<T>[]} [selected] - Currently selected item(s) (controlled)\n * @property {string | string[] | ItemType<T> | ItemType<T>[]} [defaultSelected] - Default selected item(s) (uncontrolled)\n * @property {function} [onSelectionChange] - Callback when selection changes\n * @property {ItemType<T>[]} [items] - Array of items to render (when using items prop)\n * @property {ReactNode | function} [children] - Child elements or render function for items\n * @extends ComponentPropsWithoutRef<\"ul\">\n * @extends LayoutUtilProps\n */\nexport type ListboxProps<T> = CoreListboxProps<T>;\n\n/**\n * Props for the ListboxOption component\n * @property {string} value - The value of the option\n * @property {string} [label] - The display label for the option\n * @property {boolean} [disabled] - Whether the option is disabled\n * @property {ItemType<T>} [item] - The item object when using items prop\n * @extends ComponentPropsWithoutRef<\"li\">\n */\nexport type ListboxOptionProps = CoreListboxOptionProps & DataTrackingId;\n\n/**\n * Props for the ListboxOptionGroup component\n * @property {string} label - The label for the option group\n * @property {ReactNode} children - The options within this group\n * @extends ComponentPropsWithoutRef<\"div\">\n */\nexport type ListboxOptionGroupProps = CoreListboxOptionGroupProps;\n\n/**\n * Listbox component for selecting one or more items from a list\n *\n * Features:\n * - Supports single and multiple selection modes\n * - Keyboard navigation with arrow keys and type-ahead\n * - Optional auto-selection on focus\n * - Controlled and uncontrolled modes\n * - Accessible with proper ARIA attributes\n * - Supports custom item rendering\n * - Option grouping for organization\n * - Layout utilities for positioning and spacing\n * - Automatic tracking ID generation for analytics\n *\n * @template T - The type of additional properties for items\n * @example\n * <Listbox selectionMode=\"single\" onSelectionChange={handleSelection}>\n * <Listbox.Option value=\"option1\">Option 1</Listbox.Option>\n * <Listbox.Option value=\"option2\">Option 2</Listbox.Option>\n * </Listbox>\n */\nconst ListboxElement = function <T>(\n props: ListboxProps<T>,\n ref: ForwardedRef<HTMLUListElement>,\n) {\n return <CoreListbox ref={ref} {...props} />;\n};\n\n/**\n * ListboxOption component for individual selectable items within a listbox\n *\n * Features:\n * - Displays selectable options with proper ARIA attributes\n * - Supports disabled state for non-selectable options\n * - Keyboard navigation support\n * - Automatic tracking ID generation for analytics\n * - Accessible with screen reader support\n *\n * @example\n * <ListboxOption value=\"option1\" label=\"Option 1\" />\n */\nexport const ListboxOption = forwardRef(\n (props: ListboxOptionProps, ref: Ref<HTMLLIElement>) => {\n const data = {\n value: props.value,\n label: \"item\" in props ? props.item?.label : props.label,\n };\n\n const trackingId = useTrackingId({\n name: \"ListboxOption\",\n data,\n hasOverride: !!props[\"data-tracking-id\"],\n });\n\n return (\n <CoreListboxOption ref={ref} data-tracking-id={trackingId} {...props} />\n );\n },\n);\n\nListboxOption.displayName = CoreListboxOption.displayName;\n\n/**\n * ListboxOptionGroup component for grouping related options within a listbox\n *\n * Features:\n * - Groups related options with a descriptive label\n * - Maintains proper ARIA structure for accessibility\n * - Supports keyboard navigation within groups\n * - Visual separation of option categories\n *\n * @example\n * <ListboxOptionGroup label=\"Fruits\">\n * <ListboxOption value=\"apple\">Apple</ListboxOption>\n * <ListboxOption value=\"banana\">Banana</ListboxOption>\n * </ListboxOptionGroup>\n */\nexport const ListboxOptionGroup = forwardRef(\n (props: ListboxOptionGroupProps, ref: Ref<HTMLDivElement>) => {\n return <CoreListboxOptionGroup ref={ref} {...props} />;\n },\n);\nListboxOptionGroup.displayName = CoreListboxOptionGroup.displayName;\n\n/**\n * Listbox component for selecting one or more items from a list\n *\n * Features:\n * - Supports single and multiple selection modes\n * - Keyboard navigation with arrow keys and type-ahead\n * - Optional auto-selection on focus\n * - Controlled and uncontrolled modes\n * - Accessible with proper ARIA attributes\n * - Supports custom item rendering\n * - Option grouping for organization\n * - Layout utilities for positioning and spacing\n * - Automatic tracking ID generation for analytics\n *\n * @template T - The type of additional properties for items\n * @example\n * <Listbox selectionMode=\"single\" onSelectionChange={handleSelection}>\n * <Listbox.Option value=\"option1\">Option 1</Listbox.Option>\n * <Listbox.Option value=\"option2\">Option 2</Listbox.Option>\n * </Listbox>\n */\nexport const Listbox = Object.assign(\n forwardRef(ListboxElement) as <T>(\n props: ListboxProps<T> & { ref?: React.ForwardedRef<HTMLUListElement> },\n ) => ReturnType<typeof ListboxElement>,\n {\n /**\n * ListboxOption component for individual selectable items within a listbox\n *\n * Features:\n * - Displays selectable options with proper ARIA attributes\n * - Supports disabled state for non-selectable options\n * - Keyboard navigation support\n * - Automatic tracking ID generation for analytics\n * - Accessible with screen reader support\n *\n * @example\n * <Listbox.Option value=\"option1\" label=\"Option 1\" />\n */\n Option: ListboxOption,\n /**\n * ListboxOptionGroup component for grouping related options within a listbox\n *\n * Features:\n * - Groups related options with a descriptive label\n * - Maintains proper ARIA structure for accessibility\n * - Supports keyboard navigation within groups\n * - Visual separation of option categories\n *\n * @example\n * <Listbox.OptionGroup label=\"Fruits\">\n * <Listbox.Option value=\"apple\">Apple</Listbox.Option>\n * <Listbox.Option value=\"banana\">Banana</Listbox.Option>\n * </Listbox.OptionGroup>\n */\n OptionGroup: ListboxOptionGroup,\n },\n);\n"],"names":["CoreListbox","CoreListboxOption","CoreListboxOptionGroup"],"mappings":";;;;;AAiEA,MAAM,cAAA,GAAiB,SACrB,KAAA,EACA,GACA,EAAA;AACA,EAAA,uBAAQ,GAAA,CAAAA,SAAA,EAAA,EAAY,GAAW,EAAA,GAAG,KAAO,EAAA,CAAA;AAC3C,CAAA;AAeO,MAAM,aAAgB,GAAA,UAAA;AAAA,EAC3B,CAAC,OAA2B,GAA4B,KAAA;AACtD,IAAA,MAAM,IAAO,GAAA;AAAA,MACX,OAAO,KAAM,CAAA,KAAA;AAAA,MACb,OAAO,MAAU,IAAA,KAAA,GAAQ,KAAM,CAAA,IAAA,EAAM,QAAQ,KAAM,CAAA;AAAA,KACrD;AAEA,IAAA,MAAM,aAAa,aAAc,CAAA;AAAA,MAC/B,IAAM,EAAA,eAAA;AAAA,MACN,IAAA;AAAA,MACA,WAAa,EAAA,CAAC,CAAC,KAAA,CAAM,kBAAkB;AAAA,KACxC,CAAA;AAED,IAAA,2BACGC,eAAkB,EAAA,EAAA,GAAA,EAAU,kBAAkB,EAAA,UAAA,EAAa,GAAG,KAAO,EAAA,CAAA;AAAA;AAG5E;AAEA,aAAA,CAAc,cAAcA,eAAkB,CAAA,WAAA;AAiBvC,MAAM,kBAAqB,GAAA,UAAA;AAAA,EAChC,CAAC,OAAgC,GAA6B,KAAA;AAC5D,IAAA,uBAAQ,GAAA,CAAAC,oBAAA,EAAA,EAAuB,GAAW,EAAA,GAAG,KAAO,EAAA,CAAA;AAAA;AAExD;AACA,kBAAA,CAAmB,cAAcA,oBAAuB,CAAA,WAAA;AAuBjD,MAAM,UAAU,MAAO,CAAA,MAAA;AAAA,EAC5B,WAAW,cAAc,CAAA;AAAA,EAGzB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAcE,MAAQ,EAAA,aAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAgBR,WAAa,EAAA;AAAA;AAEjB;;;;"}
package/dist/Listbox.js CHANGED
@@ -1,2 +1,2 @@
1
- export { L as Listbox, a as ListboxOption, b as ListboxOptionGroup, L as default } from './Listbox-dVARiucB.js';
1
+ export { L as Listbox, a as ListboxOption, b as ListboxOptionGroup, L as default } from './Listbox-Di6OS1Fk.js';
2
2
  //# sourceMappingURL=Listbox.js.map
@@ -2,7 +2,7 @@ import { jsx } from 'react/jsx-runtime';
2
2
  import { forwardRef } from 'react';
3
3
  import { useTrackingId } from './useTrackingId.js';
4
4
  import { c as childrenToString } from './childrenToString-Bz9MqbHb-Bz9MqbHb.js';
5
- import { M as MenuItem$1, a as Menu$1 } from './Menu-CffX1bPZ-BeEOvryY.js';
5
+ import { M as MenuItem$1, a as Menu$1 } from './Menu-TtVJnSrA-yBYichuJ.js';
6
6
 
7
7
  const MenuElement = (props) => {
8
8
  const data = {
@@ -57,4 +57,4 @@ const Menu = Object.assign(MenuElement, {
57
57
  });
58
58
 
59
59
  export { Menu as M, MenuItem as a };
60
- //# sourceMappingURL=Menu-1EwVMNIw.js.map
60
+ //# sourceMappingURL=Menu-DHCOMJx2.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Menu-1EwVMNIw.js","sources":["../src/components/Menu/Menu.tsx"],"sourcesContent":["import {\n MenuProps as CoreMenuProps,\n Menu as CoreMenu,\n MenuItemProps as CoreMenuItemProps,\n MenuItem as CoreMenuItem,\n childrenToString,\n} from \"@servicetitan/hammer-react\";\nimport { Ref, forwardRef } from \"react\";\nimport { useTrackingId } from \"../../hooks/useTrackingId\";\nimport { DataTrackingId } from \"../../types/DataTrackingId\";\n\n/**\n * Props for the Menu component\n * @property {string} [value] - The value associated with the menu for tracking\n * @property {string} [aria-label] - Accessible label for the menu\n */\nexport type MenuProps = CoreMenuProps & DataTrackingId;\n\n/**\n * Props for the MenuItem component\n * @property {string} [label] - The label text for the menu item\n */\nexport type MenuItemProps = CoreMenuItemProps & DataTrackingId;\n\n// TODO: Figure out why MenuProps breaks here\nconst MenuElement = (props: MenuProps) => {\n const data = {\n value: props.value,\n ariaLabel: props[\"aria-label\"],\n };\n\n const trackingId = useTrackingId({\n name: \"Menu\",\n data,\n hasOverride: !!props[\"data-tracking-id\"],\n });\n\n return <CoreMenu data-tracking-id={trackingId} {...props} />;\n};\nMenuElement.displayName = CoreMenu.displayName;\n\n/**\n * MenuItem component for individual menu options within a Menu.\n *\n * Features:\n * - Supports icons and labels\n * - Keyboard navigation support\n * - Disabled state handling\n * - Automatic menu closing on selection\n * - Fully accessible with proper ARIA attributes\n * - Focus management and tab index handling\n * - Click and mouse enter event handling\n * - Legacy popover support with fallback\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <MenuItem\n * label=\"Edit Profile\"\n * icon={EditIcon}\n * onClick={() => console.log('Edit profile clicked')}\n * />\n */\nexport const MenuItem = forwardRef(\n (props: MenuItemProps, ref: Ref<HTMLButtonElement>) => {\n const data = {\n label: childrenToString(props.label),\n };\n\n const trackingId = useTrackingId({\n name: \"MenuItem\",\n data,\n hasOverride: !!props[\"data-tracking-id\"],\n });\n\n return <CoreMenuItem ref={ref} data-tracking-id={trackingId} {...props} />;\n },\n);\nMenuItem.displayName = CoreMenuItem.displayName;\n\n/**\n * Menu component for displaying dropdown menus with navigation and actions.\n *\n * Features:\n * - Supports both controlled and uncontrolled modes\n * - Automatic positioning with fallback strategies\n * - Keyboard navigation with arrow keys and escape\n * - Custom trigger elements\n * - Nested menu support\n * - Automatic height adjustment\n * - Scroll indicators for overflow content\n * - Fully accessible with proper ARIA attributes\n * - Popover API support with legacy fallback\n * - Outside click detection and handling\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <Menu label=\"Edit\">\n * <Menu.Item label=\"Cut\" onClick={() => console.log('Cut clicked')} />\n * <Menu.Item label=\"Copy\" onClick={() => console.log('Copy clicked')} />\n * <Menu label=\"Copy as\">\n * <Menu.Item label=\"Text\" onClick={() => console.log('Copy as Text')} />\n * <Menu.Item label=\"Video\" onClick={() => console.log('Copy as Video')} />\n * <Menu label=\"Image\">\n * <Menu.Item label=\".png\" onClick={() => console.log('Copy as PNG')} />\n * <Menu.Item label=\".jpg\" onClick={() => console.log('Copy as JPG')} />\n * </Menu>\n * </Menu>\n * </Menu>\n */\nexport const Menu = Object.assign(MenuElement, {\n /**\n * MenuItem component for individual menu options.\n *\n * Features:\n * - Supports icons and labels\n * - Keyboard navigation support\n * - Disabled state handling\n * - Automatic menu closing on selection\n * - Fully accessible with proper ARIA attributes\n * - Focus management and tab index handling\n * - Click and mouse enter event handling\n * - Legacy popover support with fallback\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <Menu.Item\n * label=\"Edit Profile\"\n * icon={EditIcon}\n * onClick={() => console.log('Edit profile clicked')}\n * />\n */\n Item: MenuItem,\n});\n"],"names":["CoreMenu","CoreMenuItem"],"mappings":";;;;;;AAyBA,MAAM,WAAA,GAAc,CAAC,KAAqB,KAAA;AACxC,EAAA,MAAM,IAAO,GAAA;AAAA,IACX,OAAO,KAAM,CAAA,KAAA;AAAA,IACb,SAAA,EAAW,MAAM,YAAY;AAAA,GAC/B;AAEA,EAAA,MAAM,aAAa,aAAc,CAAA;AAAA,IAC/B,IAAM,EAAA,MAAA;AAAA,IACN,IAAA;AAAA,IACA,WAAa,EAAA,CAAC,CAAC,KAAA,CAAM,kBAAkB;AAAA,GACxC,CAAA;AAED,EAAA,uBAAQ,GAAA,CAAAA,MAAA,EAAA,EAAS,kBAAkB,EAAA,UAAA,EAAa,GAAG,KAAO,EAAA,CAAA;AAC5D,CAAA;AACA,WAAA,CAAY,cAAcA,MAAS,CAAA,WAAA;AAuB5B,MAAM,QAAW,GAAA,UAAA;AAAA,EACtB,CAAC,OAAsB,GAAgC,KAAA;AACrD,IAAA,MAAM,IAAO,GAAA;AAAA,MACX,KAAA,EAAO,gBAAiB,CAAA,KAAA,CAAM,KAAK;AAAA,KACrC;AAEA,IAAA,MAAM,aAAa,aAAc,CAAA;AAAA,MAC/B,IAAM,EAAA,UAAA;AAAA,MACN,IAAA;AAAA,MACA,WAAa,EAAA,CAAC,CAAC,KAAA,CAAM,kBAAkB;AAAA,KACxC,CAAA;AAED,IAAA,2BAAQC,UAAa,EAAA,EAAA,GAAA,EAAU,kBAAkB,EAAA,UAAA,EAAa,GAAG,KAAO,EAAA,CAAA;AAAA;AAE5E;AACA,QAAA,CAAS,cAAcA,UAAa,CAAA,WAAA;AAgCvB,MAAA,IAAA,GAAO,MAAO,CAAA,MAAA,CAAO,WAAa,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAsB7C,IAAM,EAAA;AACR,CAAC;;;;"}
1
+ {"version":3,"file":"Menu-DHCOMJx2.js","sources":["../src/components/Menu/Menu.tsx"],"sourcesContent":["import {\n MenuProps as CoreMenuProps,\n Menu as CoreMenu,\n MenuItemProps as CoreMenuItemProps,\n MenuItem as CoreMenuItem,\n childrenToString,\n} from \"@servicetitan/hammer-react\";\nimport { Ref, forwardRef } from \"react\";\nimport { useTrackingId } from \"../../hooks/useTrackingId\";\nimport { DataTrackingId } from \"../../types/DataTrackingId\";\n\n/**\n * Props for the Menu component\n * @property {string} [value] - The value associated with the menu for tracking\n * @property {string} [aria-label] - Accessible label for the menu\n */\nexport type MenuProps = CoreMenuProps & DataTrackingId;\n\n/**\n * Props for the MenuItem component\n * @property {string} [label] - The label text for the menu item\n */\nexport type MenuItemProps = CoreMenuItemProps & DataTrackingId;\n\n// TODO: Figure out why MenuProps breaks here\nconst MenuElement = (props: MenuProps) => {\n const data = {\n value: props.value,\n ariaLabel: props[\"aria-label\"],\n };\n\n const trackingId = useTrackingId({\n name: \"Menu\",\n data,\n hasOverride: !!props[\"data-tracking-id\"],\n });\n\n return <CoreMenu data-tracking-id={trackingId} {...props} />;\n};\nMenuElement.displayName = CoreMenu.displayName;\n\n/**\n * MenuItem component for individual menu options within a Menu.\n *\n * Features:\n * - Supports icons and labels\n * - Keyboard navigation support\n * - Disabled state handling\n * - Automatic menu closing on selection\n * - Fully accessible with proper ARIA attributes\n * - Focus management and tab index handling\n * - Click and mouse enter event handling\n * - Legacy popover support with fallback\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <MenuItem\n * label=\"Edit Profile\"\n * icon={EditIcon}\n * onClick={() => console.log('Edit profile clicked')}\n * />\n */\nexport const MenuItem = forwardRef(\n (props: MenuItemProps, ref: Ref<HTMLButtonElement>) => {\n const data = {\n label: childrenToString(props.label),\n };\n\n const trackingId = useTrackingId({\n name: \"MenuItem\",\n data,\n hasOverride: !!props[\"data-tracking-id\"],\n });\n\n return <CoreMenuItem ref={ref} data-tracking-id={trackingId} {...props} />;\n },\n);\nMenuItem.displayName = CoreMenuItem.displayName;\n\n/**\n * Menu component for displaying dropdown menus with navigation and actions.\n *\n * Features:\n * - Supports both controlled and uncontrolled modes\n * - Automatic positioning with fallback strategies\n * - Keyboard navigation with arrow keys and escape\n * - Custom trigger elements\n * - Nested menu support\n * - Automatic height adjustment\n * - Scroll indicators for overflow content\n * - Fully accessible with proper ARIA attributes\n * - Popover API support with legacy fallback\n * - Outside click detection and handling\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <Menu label=\"Edit\">\n * <Menu.Item label=\"Cut\" onClick={() => console.log('Cut clicked')} />\n * <Menu.Item label=\"Copy\" onClick={() => console.log('Copy clicked')} />\n * <Menu label=\"Copy as\">\n * <Menu.Item label=\"Text\" onClick={() => console.log('Copy as Text')} />\n * <Menu.Item label=\"Video\" onClick={() => console.log('Copy as Video')} />\n * <Menu label=\"Image\">\n * <Menu.Item label=\".png\" onClick={() => console.log('Copy as PNG')} />\n * <Menu.Item label=\".jpg\" onClick={() => console.log('Copy as JPG')} />\n * </Menu>\n * </Menu>\n * </Menu>\n */\nexport const Menu = Object.assign(MenuElement, {\n /**\n * MenuItem component for individual menu options.\n *\n * Features:\n * - Supports icons and labels\n * - Keyboard navigation support\n * - Disabled state handling\n * - Automatic menu closing on selection\n * - Fully accessible with proper ARIA attributes\n * - Focus management and tab index handling\n * - Click and mouse enter event handling\n * - Legacy popover support with fallback\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <Menu.Item\n * label=\"Edit Profile\"\n * icon={EditIcon}\n * onClick={() => console.log('Edit profile clicked')}\n * />\n */\n Item: MenuItem,\n});\n"],"names":["CoreMenu","CoreMenuItem"],"mappings":";;;;;;AAyBA,MAAM,WAAA,GAAc,CAAC,KAAqB,KAAA;AACxC,EAAA,MAAM,IAAO,GAAA;AAAA,IACX,OAAO,KAAM,CAAA,KAAA;AAAA,IACb,SAAA,EAAW,MAAM,YAAY;AAAA,GAC/B;AAEA,EAAA,MAAM,aAAa,aAAc,CAAA;AAAA,IAC/B,IAAM,EAAA,MAAA;AAAA,IACN,IAAA;AAAA,IACA,WAAa,EAAA,CAAC,CAAC,KAAA,CAAM,kBAAkB;AAAA,GACxC,CAAA;AAED,EAAA,uBAAQ,GAAA,CAAAA,MAAA,EAAA,EAAS,kBAAkB,EAAA,UAAA,EAAa,GAAG,KAAO,EAAA,CAAA;AAC5D,CAAA;AACA,WAAA,CAAY,cAAcA,MAAS,CAAA,WAAA;AAuB5B,MAAM,QAAW,GAAA,UAAA;AAAA,EACtB,CAAC,OAAsB,GAAgC,KAAA;AACrD,IAAA,MAAM,IAAO,GAAA;AAAA,MACX,KAAA,EAAO,gBAAiB,CAAA,KAAA,CAAM,KAAK;AAAA,KACrC;AAEA,IAAA,MAAM,aAAa,aAAc,CAAA;AAAA,MAC/B,IAAM,EAAA,UAAA;AAAA,MACN,IAAA;AAAA,MACA,WAAa,EAAA,CAAC,CAAC,KAAA,CAAM,kBAAkB;AAAA,KACxC,CAAA;AAED,IAAA,2BAAQC,UAAa,EAAA,EAAA,GAAA,EAAU,kBAAkB,EAAA,UAAA,EAAa,GAAG,KAAO,EAAA,CAAA;AAAA;AAE5E;AACA,QAAA,CAAS,cAAcA,UAAa,CAAA,WAAA;AAgCvB,MAAA,IAAA,GAAO,MAAO,CAAA,MAAA,CAAO,WAAa,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAsB7C,IAAM,EAAA;AACR,CAAC;;;;"}
@@ -2,17 +2,17 @@ import { jsxs, jsx } from 'react/jsx-runtime';
2
2
  import { c as cx } from './index-tZvMCc77.js';
3
3
  import * as React from 'react';
4
4
  import { forwardRef, useContext, createContext, useState, useRef, useEffect, useMemo, useId, useCallback, useLayoutEffect } from 'react';
5
- import { i as DialogContext, p as DrawerContext, s as supportsPopover, q as safeShowPopover, r as safeHidePopover, g as getActiveElement } from './ProgressBar-CzXzPpIX-Clg1J71o.js';
5
+ import { i as DialogContext, p as DrawerContext, s as supportsPopover, q as safeShowPopover, r as safeHidePopover, g as getActiveElement } from './ProgressBar-BRvB-bD4-DppwBrFg.js';
6
6
  import { B as Button } from './Button-BaHFf1AT-BQy-PFB5.js';
7
7
  import { S as SvgArrowDropDown } from './arrow_drop_down-ChAdBDux.js';
8
8
  import { I as Icon } from './Icon-B6HmlQiR-BxQkO3X5.js';
9
9
  import { q as useListItem, r as useFloatingTree, t as useFloatingNodeId, v as useFloatingParentNodeId, c as useFloating, o as offset, f as flip, d as shift, s as size, l as limitShift, h as useHover, i as safePolygon, g as useClick, k as useRole, j as useDismiss, w as useListNavigation, x as useTypeahead, m as useInteractions, y as FloatingNode, z as FloatingList, F as FloatingPortal, a as FloatingFocusManager, n as autoUpdate, A as FloatingTree, p as computePosition } from './floating-ui.react-BFNinq1w.js';
10
10
  import { a as PortalProviderContext } from './PortalProvider-9lXkQ0xY-BKoGegS1.js';
11
- import { a as ThemeProviderContext, T as ThemeProvider } from './ThemeProvider-CR67FJg0-DYVRlJRA.js';
11
+ import { a as ThemeProviderContext, T as ThemeProvider } from './ThemeProvider-Q3ji6Rpx-DBXlAuQ8.js';
12
12
  import { u as useMergeRefs } from './useMergeRefs-Bde85AWI-Bde85AWI.js';
13
13
  import { c as childrenToString } from './childrenToString-Bz9MqbHb-Bz9MqbHb.js';
14
14
 
15
- import './Menu-CffX1bPZ.css';const SvgArrowDropUp = (props) => /* @__PURE__ */ React.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", width: "1em", height: "1em", viewBox: "0 0 24 24", ...props }, /* @__PURE__ */ React.createElement("path", { d: "M8.71 12.29 11.3 9.7a.996.996 0 0 1 1.41 0l2.59 2.59c.63.63.18 1.71-.71 1.71H9.41c-.89 0-1.33-1.08-.7-1.71z" }));
15
+ import './Menu-TtVJnSrA.css';const SvgArrowDropUp = (props) => /* @__PURE__ */ React.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", width: "1em", height: "1em", viewBox: "0 0 24 24", ...props }, /* @__PURE__ */ React.createElement("path", { d: "M8.71 12.29 11.3 9.7a.996.996 0 0 1 1.41 0l2.59 2.59c.63.63.18 1.71-.71 1.71H9.41c-.89 0-1.33-1.08-.7-1.71z" }));
16
16
 
17
17
  const SvgNavigateNext = (props) => /* @__PURE__ */ React.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", width: "1em", height: "1em", viewBox: "0 0 24 24", ...props }, /* @__PURE__ */ React.createElement("path", { d: "M9.31 6.71a.996.996 0 0 0 0 1.41L13.19 12l-3.88 3.88a.996.996 0 1 0 1.41 1.41l4.59-4.59a.996.996 0 0 0 0-1.41L10.72 6.7c-.38-.38-1.02-.38-1.41.01z" }));
18
18
 
@@ -1039,9 +1039,6 @@ const MenuElement = forwardRef(
1039
1039
  document.removeEventListener("mouseup", onMouseUpHandler);
1040
1040
  };
1041
1041
  }, [isControlled, openState, onOutsidePress, closeMenu]);
1042
- const closeRootMenu = useCallback(() => {
1043
- closeMenu();
1044
- }, [closeMenu]);
1045
1042
  const onKeyDownHandler = (e) => {
1046
1043
  if (!openState || !childrenRef.current || menuContext) return;
1047
1044
  if (e.code === "Escape") {
@@ -1080,9 +1077,9 @@ const MenuElement = forwardRef(
1080
1077
  const value = useMemo(() => {
1081
1078
  return {
1082
1079
  disableAutoHeight,
1083
- closeRootMenu
1080
+ closeRootMenu: menuContext?.closeRootMenu ?? closeMenu
1084
1081
  };
1085
- }, [disableAutoHeight, closeRootMenu]);
1082
+ }, [disableAutoHeight, menuContext, closeMenu]);
1086
1083
  const MenuButtonOnKeyDownHandler = (e) => {
1087
1084
  if (e.code === "ArrowDown") {
1088
1085
  focusItems?.[0].focus();
@@ -1195,4 +1192,4 @@ const Menu = Object.assign(MenuElement, {
1195
1192
  });
1196
1193
 
1197
1194
  export { MenuItem as M, Menu as a };
1198
- //# sourceMappingURL=Menu-CffX1bPZ-BeEOvryY.js.map
1195
+ //# sourceMappingURL=Menu-TtVJnSrA-yBYichuJ.js.map