@servicetitan/anvil2 2.7.0 → 2.8.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 (389) hide show
  1. package/CHANGELOG.md +60 -0
  2. package/dist/{floating-ui.react-C_s3_nEb.js → AiMark-Cwc9KoyE.js} +767 -5
  3. package/dist/AiMark-Cwc9KoyE.js.map +1 -0
  4. package/dist/AiMark.css +260 -0
  5. package/dist/AiMark.d.ts +2 -0
  6. package/dist/AiMark.js +2 -0
  7. package/dist/AiMark.js.map +1 -0
  8. package/dist/{Alert-C_o2f78C.js → Alert-5qhkSUN3.js} +27 -13
  9. package/dist/Alert-5qhkSUN3.js.map +1 -0
  10. package/dist/Alert.css +23 -15
  11. package/dist/Alert.js +1 -1
  12. package/dist/{Announcement-CyrTvgP4.js → Announcement-fQmFNysn.js} +2 -2
  13. package/dist/{Announcement-CyrTvgP4.js.map → Announcement-fQmFNysn.js.map} +1 -1
  14. package/dist/Announcement.js +1 -1
  15. package/dist/{Avatar-CCnbKkCm.js → Avatar-BckUfs1N.js} +48 -46
  16. package/dist/{Avatar-CCnbKkCm.js.map → Avatar-BckUfs1N.js.map} +1 -1
  17. package/dist/Avatar-ChybzixS.js +35 -0
  18. package/dist/Avatar-ChybzixS.js.map +1 -0
  19. package/dist/Avatar.js +2 -2
  20. package/dist/Breadcrumbs-BXo2FO2n.js +107 -0
  21. package/dist/Breadcrumbs-BXo2FO2n.js.map +1 -0
  22. package/dist/Breadcrumbs.js +1 -1
  23. package/dist/Button-a_D7tUgM.js +4517 -0
  24. package/dist/Button-a_D7tUgM.js.map +1 -0
  25. package/dist/Button.js +1 -1
  26. package/dist/{ButtonToggle-DaYJWso_.js → ButtonToggle-CmY77gUp.js} +2 -2
  27. package/dist/{ButtonToggle-DaYJWso_.js.map → ButtonToggle-CmY77gUp.js.map} +1 -1
  28. package/dist/ButtonToggle.js +1 -1
  29. package/dist/{Calendar-SGlTt-bs.js → Calendar-Bd_WELZC.js} +130 -119
  30. package/dist/Calendar-Bd_WELZC.js.map +1 -0
  31. package/dist/{Calendar-C1U2npPP.js → Calendar-d2owsYe9.js} +2 -2
  32. package/dist/{Calendar-C1U2npPP.js.map → Calendar-d2owsYe9.js.map} +1 -1
  33. package/dist/Calendar.css +51 -51
  34. package/dist/Calendar.js +2 -2
  35. package/dist/Card-wz71dEVA.js.map +1 -1
  36. package/dist/{Checkbox-CtKUNeyu.js → Checkbox-BlFc6ZWy.js} +25 -14
  37. package/dist/Checkbox-BlFc6ZWy.js.map +1 -0
  38. package/dist/Checkbox-DbaZrUE2.js +52 -0
  39. package/dist/Checkbox-DbaZrUE2.js.map +1 -0
  40. package/dist/Checkbox.js +1 -1
  41. package/dist/{Chip-DjTAR0va.js → Chip-BnofwIUN.js} +43 -13
  42. package/dist/Chip-BnofwIUN.js.map +1 -0
  43. package/dist/Chip.css +44 -28
  44. package/dist/Chip.js +1 -1
  45. package/dist/{Combobox-By8-34bw.js → Combobox-BOxAzG9v.js} +186 -183
  46. package/dist/{Combobox-By8-34bw.js.map → Combobox-BOxAzG9v.js.map} +1 -1
  47. package/dist/Combobox.js +1 -1
  48. package/dist/{DataTable-BYOS6icI.js → DataTable-DK9xRjnq.js} +762 -651
  49. package/dist/DataTable-DK9xRjnq.js.map +1 -0
  50. package/dist/DataTable.css +84 -74
  51. package/dist/{DateFieldRange-C8Uzrboc.js → DateFieldRange-5Jrz6dLl.js} +20 -6
  52. package/dist/DateFieldRange-5Jrz6dLl.js.map +1 -0
  53. package/dist/DateFieldRange.js +1 -1
  54. package/dist/{DateFieldSingle-DrhLIjlK.js → DateFieldSingle-DWFr6Ew4.js} +8 -8
  55. package/dist/{DateFieldSingle-DrhLIjlK.js.map → DateFieldSingle-DWFr6Ew4.js.map} +1 -1
  56. package/dist/DateFieldSingle.js +1 -1
  57. package/dist/{DateFieldYearless-DbivK4Hm.js → DateFieldYearless-UU22A5-E.js} +22 -6
  58. package/dist/DateFieldYearless-UU22A5-E.js.map +1 -0
  59. package/dist/DateFieldYearless.js +1 -1
  60. package/dist/{DateFieldYearlessRange-BEqJe4Uf.js → DateFieldYearlessRange-BoPLxm6t.js} +3 -3
  61. package/dist/DateFieldYearlessRange-BoPLxm6t.js.map +1 -0
  62. package/dist/DateFieldYearlessRange.js +1 -1
  63. package/dist/{DaysOfTheWeek-BR32AA32.js → DaysOfTheWeek-4cfTmjzm.js} +4 -4
  64. package/dist/{DaysOfTheWeek-BR32AA32.js.map → DaysOfTheWeek-4cfTmjzm.js.map} +1 -1
  65. package/dist/DaysOfTheWeek.js +1 -1
  66. package/dist/{Details-Dxq_v3Qg.js → Details-CZOIpNP_.js} +8 -8
  67. package/dist/Details-CZOIpNP_.js.map +1 -0
  68. package/dist/Details.js +1 -1
  69. package/dist/{Dialog-CGhwkwvq.js → Dialog-Dn836WQM.js} +73 -73
  70. package/dist/Dialog-Dn836WQM.js.map +1 -0
  71. package/dist/Dialog.js +1 -1
  72. package/dist/{DialogCancelButton-DQDMzGeT.js → DialogCancelButton-B-jfihJr.js} +2 -2
  73. package/dist/{DialogCancelButton-DQDMzGeT.js.map → DialogCancelButton-B-jfihJr.js.map} +1 -1
  74. package/dist/{Drawer-DA4iAgt-.js → Drawer-CdDWt_Ba.js} +86 -86
  75. package/dist/Drawer-CdDWt_Ba.js.map +1 -0
  76. package/dist/Drawer.js +1 -1
  77. package/dist/DrillDown.js +1 -1
  78. package/dist/{EditCard-CLN0GBN_.js → EditCard-CZibhEfS.js} +3 -3
  79. package/dist/{EditCard-CLN0GBN_.js.map → EditCard-CZibhEfS.js.map} +1 -1
  80. package/dist/EditCard.js +1 -1
  81. package/dist/FieldLabel-Dr41PRxH.js +180 -0
  82. package/dist/FieldLabel-Dr41PRxH.js.map +1 -0
  83. package/dist/FieldLabel.css +33 -73
  84. package/dist/FieldLabel.js +1 -1
  85. package/dist/Grid-DeYIx5k4.js +149 -0
  86. package/dist/Grid-DeYIx5k4.js.map +1 -0
  87. package/dist/Grid.js +1 -1
  88. package/dist/{InputMask-HjaNCb73.js → InputMask-CcXqzqdx.js} +3 -3
  89. package/dist/{InputMask-HjaNCb73.js.map → InputMask-CcXqzqdx.js.map} +1 -1
  90. package/dist/InputMask.js +1 -1
  91. package/dist/{Layout-VfhlilMG.js → Layout-CISAxILX.js} +34 -33
  92. package/dist/Layout-CISAxILX.js.map +1 -0
  93. package/dist/Layout.js +1 -1
  94. package/dist/List--KhCpjZn.js +103 -0
  95. package/dist/List--KhCpjZn.js.map +1 -0
  96. package/dist/List.js +1 -1
  97. package/dist/{ListView-mujFK6mQ.js → ListView-D9cZUVer.js} +6 -6
  98. package/dist/ListView-D9cZUVer.js.map +1 -0
  99. package/dist/ListView.js +1 -1
  100. package/dist/{Listbox-BtAgBDRS.js → Listbox-CgDwzRfz.js} +6 -5
  101. package/dist/Listbox-CgDwzRfz.js.map +1 -0
  102. package/dist/Listbox.js +1 -1
  103. package/dist/{Menu-BXsmCP20.js → Menu-CPbuIsqC.js} +367 -367
  104. package/dist/Menu-CPbuIsqC.js.map +1 -0
  105. package/dist/Menu.js +1 -1
  106. package/dist/MultiSelectField.js +1 -1
  107. package/dist/{MultiSelectFieldSync-DGpGgu8q.js → MultiSelectFieldSync-Ei7DXzvs.js} +31 -18
  108. package/dist/MultiSelectFieldSync-Ei7DXzvs.js.map +1 -0
  109. package/dist/MultiSelectMenu.js +1 -1
  110. package/dist/{MultiSelectMenuSync-DiLddJDw.js → MultiSelectMenuSync-B_mXpTEe.js} +29 -9
  111. package/dist/MultiSelectMenuSync-B_mXpTEe.js.map +1 -0
  112. package/dist/{NumberField-svhZp1kB.js → NumberField-C5t47Obp.js} +16 -5
  113. package/dist/NumberField-C5t47Obp.js.map +1 -0
  114. package/dist/NumberField.js +1 -1
  115. package/dist/Overflow.css +27 -26
  116. package/dist/Overflow.js +11 -11
  117. package/dist/{Page-Be029Dij.js → Page-2hbQxUj6.js} +223 -207
  118. package/dist/Page-2hbQxUj6.js.map +1 -0
  119. package/dist/Page.css +78 -76
  120. package/dist/Page.js +1 -1
  121. package/dist/{Pagination-BAwqfl_2.js → Pagination-CjGmJ_rU.js} +20 -18
  122. package/dist/Pagination-CjGmJ_rU.js.map +1 -0
  123. package/dist/Pagination.js +1 -1
  124. package/dist/{Popover-D0qSKZ1J.js → Popover-CpU9VAcb.js} +356 -358
  125. package/dist/Popover-CpU9VAcb.js.map +1 -0
  126. package/dist/Popover.js +1 -1
  127. package/dist/{ProgressBar-JpRDW5vG.js → ProgressBar-FMuK8viJ.js} +2 -2
  128. package/dist/{ProgressBar-JpRDW5vG.js.map → ProgressBar-FMuK8viJ.js.map} +1 -1
  129. package/dist/ProgressBar.js +1 -1
  130. package/dist/{Radio-BQg7exDG.js → Radio-CZZd8phn.js} +25 -14
  131. package/dist/Radio-CZZd8phn.js.map +1 -0
  132. package/dist/Radio-DmtVWAmN.js +60 -0
  133. package/dist/Radio-DmtVWAmN.js.map +1 -0
  134. package/dist/Radio.js +1 -1
  135. package/dist/{SegmentedControl-7fDLhgvh.js → SegmentedControl-B9NWUF7s.js} +81 -77
  136. package/dist/{SegmentedControl-7fDLhgvh.js.map → SegmentedControl-B9NWUF7s.js.map} +1 -1
  137. package/dist/SegmentedControl.js +1 -1
  138. package/dist/SelectCard-8OmIDl1m.js +352 -0
  139. package/dist/SelectCard-8OmIDl1m.js.map +1 -0
  140. package/dist/SelectCard.js +1 -1
  141. package/dist/SelectField.js +1 -1
  142. package/dist/{SelectFieldLabel-Dr8HeW3N.js → SelectFieldLabel-C8PrXxDU.js} +5 -4
  143. package/dist/SelectFieldLabel-C8PrXxDU.js.map +1 -0
  144. package/dist/{SelectFieldSync-CJ2Ie_v1.js → SelectFieldSync-DGK8F2G9.js} +13 -13
  145. package/dist/SelectFieldSync-DGK8F2G9.js.map +1 -0
  146. package/dist/SelectMenu.js +1 -1
  147. package/dist/{SelectMenuSync-CJA_coqD.js → SelectMenuSync-CuZp9mnt.js} +29 -9
  148. package/dist/SelectMenuSync-CuZp9mnt.js.map +1 -0
  149. package/dist/{SelectOptions-Bf4xsFek.js → SelectOptions-CmElsiTd.js} +2 -2
  150. package/dist/{SelectOptions-Bf4xsFek.js.map → SelectOptions-CmElsiTd.js.map} +1 -1
  151. package/dist/{SelectTrigger-ObsnAKNp.js → SelectTrigger-KF8w6Ynk.js} +8 -6
  152. package/dist/SelectTrigger-KF8w6Ynk.js.map +1 -0
  153. package/dist/SelectTrigger.js +1 -1
  154. package/dist/{SelectTriggerBase-DKfOL2RJ.js → SelectTriggerBase-Bxmv6oXk.js} +4 -4
  155. package/dist/{SelectTriggerBase-DKfOL2RJ.js.map → SelectTriggerBase-Bxmv6oXk.js.map} +1 -1
  156. package/dist/{SideNav-KksbSQn7.js → SideNav-CrxYExjh.js} +137 -135
  157. package/dist/{SideNav-KksbSQn7.js.map → SideNav-CrxYExjh.js.map} +1 -1
  158. package/dist/SideNav.css +72 -55
  159. package/dist/SideNav.js +1 -1
  160. package/dist/Skeleton.css +18 -12
  161. package/dist/Skeleton.js +24 -11
  162. package/dist/Skeleton.js.map +1 -1
  163. package/dist/{Stepper-Dt8_ImvJ.js → Stepper-_27Lmm2K.js} +158 -158
  164. package/dist/{Stepper-Dt8_ImvJ.js.map → Stepper-_27Lmm2K.js.map} +1 -1
  165. package/dist/Stepper.js +1 -1
  166. package/dist/{Switch-DpPHr3G3.js → Switch-DPGz7wC_.js} +14 -2
  167. package/dist/Switch-DPGz7wC_.js.map +1 -0
  168. package/dist/Switch.js +1 -1
  169. package/dist/{Tab-DO7LaUbw.js → Tab-BZpTCG0i.js} +227 -223
  170. package/dist/Tab-BZpTCG0i.js.map +1 -0
  171. package/dist/Tab.js +1 -1
  172. package/dist/Table.js +1 -1
  173. package/dist/{Text-BJo4oMI2.js → Text-MVxRo6yx.js} +30 -12
  174. package/dist/Text-MVxRo6yx.js.map +1 -0
  175. package/dist/Text.css +37 -20
  176. package/dist/Text.js +1 -1
  177. package/dist/{TextField-DeHpgPag.js → TextField-BpSxZa0z.js} +21 -5
  178. package/dist/TextField-BpSxZa0z.js.map +1 -0
  179. package/dist/{TextField-BW8sJAls.js → TextField-D93iv_pk.js} +2 -2
  180. package/dist/{TextField-BW8sJAls.js.map → TextField-D93iv_pk.js.map} +1 -1
  181. package/dist/TextField.js +1 -1
  182. package/dist/{Textarea-DyqdMTvQ.js → Textarea-1u2fSMTh.js} +21 -5
  183. package/dist/Textarea-1u2fSMTh.js.map +1 -0
  184. package/dist/Textarea.js +1 -1
  185. package/dist/{TimeField-Dc0Y1JD-.js → TimeField-B4gLlBQJ.js} +6 -5
  186. package/dist/{TimeField-Dc0Y1JD-.js.map → TimeField-B4gLlBQJ.js.map} +1 -1
  187. package/dist/TimeField.js +1 -1
  188. package/dist/Toast.js +2 -2
  189. package/dist/{Toaster-b0-Ub3yt.js → Toaster-CSJfSOHx.js} +5 -5
  190. package/dist/Toaster-CSJfSOHx.js.map +1 -0
  191. package/dist/{Toaster-DikGo_hR.js → Toaster-DbWYnF_t.js} +2 -2
  192. package/dist/{Toaster-DikGo_hR.js.map → Toaster-DbWYnF_t.js.map} +1 -1
  193. package/dist/{Toolbar-DAuz4Gs2.js → Toolbar-CWRk523l.js} +150 -149
  194. package/dist/{Toolbar-DAuz4Gs2.js.map → Toolbar-CWRk523l.js.map} +1 -1
  195. package/dist/Toolbar.js +1 -1
  196. package/dist/{Tooltip-Bupqao9B.js → Tooltip-C1PBRnJv.js} +225 -228
  197. package/dist/Tooltip-C1PBRnJv.js.map +1 -0
  198. package/dist/Tooltip.js +1 -1
  199. package/dist/{YearlessDateInputWithPicker-DFi08TLG.js → YearlessDateInputWithPicker-BSl5z2zo.js} +2 -3
  200. package/dist/{YearlessDateInputWithPicker-DFi08TLG.js.map → YearlessDateInputWithPicker-BSl5z2zo.js.map} +1 -1
  201. package/dist/assets/icons/st/ai_mark_gradient.svg +1 -1
  202. package/dist/beta/components/MultiSelectField/internal/MultiSelectFieldComboboxMode.d.ts +1 -1
  203. package/dist/beta/components/MultiSelectField/internal/MultiSelectFieldInput.d.ts +3 -2
  204. package/dist/beta/components/MultiSelectField/internal/MultiSelectFieldSelectMode.d.ts +1 -1
  205. package/dist/beta/components/MultiSelectField/internal/MultiSelectFieldTrigger.d.ts +3 -2
  206. package/dist/beta/components/MultiSelectField/internal/types.d.ts +4 -3
  207. package/dist/beta/components/MultiSelectField/types.d.ts +28 -7
  208. package/dist/beta/components/MultiSelectMenu/types.d.ts +15 -0
  209. package/dist/beta/components/SelectField/internal/SelectFieldComboboxMode.d.ts +1 -1
  210. package/dist/beta/components/SelectField/internal/SelectFieldLabel.d.ts +4 -4
  211. package/dist/beta/components/SelectField/internal/SelectFieldSelectMode.d.ts +1 -1
  212. package/dist/beta/components/SelectField/types.d.ts +5 -5
  213. package/dist/beta/components/SelectMenu/internal/useMenuInteraction.d.ts +3 -1
  214. package/dist/beta/components/SelectMenu/types.d.ts +15 -0
  215. package/dist/beta/components/Table/DataTable/DataTable.d.ts +2 -15
  216. package/dist/beta/components/Table/DataTable/internal/editable-cells/DataTableEditableMultiselectAsyncCell.d.ts +35 -0
  217. package/dist/beta/components/Table/DataTable/internal/editable-cells/DataTableEditableMultiselectCell.d.ts +4 -3
  218. package/dist/beta/components/Table/DataTable/internal/editable-cells/DataTableEditableSelectAsyncCell.d.ts +7 -0
  219. package/dist/beta/components/Table/DataTable/internal/editable-cells/useEditableMenuCell.d.ts +34 -0
  220. package/dist/beta/components/Table/DataTable/internal/usePageDataCache.d.ts +29 -0
  221. package/dist/beta/components/Table/DataTable/internal/util/getTanStackColumnDef.d.ts +2 -4
  222. package/dist/beta/components/Table/DataTable/types.d.ts +48 -1
  223. package/dist/beta/components/Table/createColumnHelper.d.ts +23 -68
  224. package/dist/beta/components/Table/types.d.ts +218 -42
  225. package/dist/beta/components/Toolbar/Toolbar.d.ts +175 -44
  226. package/dist/beta/components/Toolbar/ToolbarSelect.d.ts +5 -3
  227. package/dist/beta.js +9 -9
  228. package/dist/components/AiMark/AiMark.d.ts +87 -0
  229. package/dist/components/AiMark/index.d.ts +1 -0
  230. package/dist/components/AiMark/internal/AiMarkIconAnimated.d.ts +30 -0
  231. package/dist/components/AiMark/internal/AiMarkInteractive.d.ts +10 -0
  232. package/dist/components/AiMark/stories/aiMarkStoryArgTypes.d.ts +16 -0
  233. package/dist/components/Alert/Alert.d.ts +12 -0
  234. package/dist/components/Avatar/Avatar.d.ts +14 -0
  235. package/dist/components/Button/Button.d.ts +14 -6
  236. package/dist/components/Button/internal/buttonAiMarkUtils.d.ts +18 -0
  237. package/dist/components/Button/internal/index.d.ts +1 -0
  238. package/dist/components/Calendar/Calendar.d.ts +84 -26
  239. package/dist/components/Card/Card.d.ts +6 -1
  240. package/dist/components/Checkbox/Checkbox.d.ts +2 -0
  241. package/dist/components/Checkbox/CheckboxGroup.d.ts +27 -6
  242. package/dist/components/Chip/Chip.d.ts +10 -1
  243. package/dist/components/Chip/internal/Chip.d.ts +4 -0
  244. package/dist/components/Combobox/Combobox.d.ts +172 -1
  245. package/dist/components/DateFieldRange/internal/MaskedDateRangeInput.d.ts +1 -1
  246. package/dist/components/DateFieldRange/internal/useDateFieldRangeConversion.d.ts +1 -1
  247. package/dist/components/DateFieldSingle/internal/MaskedDateInput.d.ts +1 -1
  248. package/dist/components/DateFieldYearless/DateFieldYearless.d.ts +8 -1
  249. package/dist/components/DateFieldYearless/internal/YearlessDateInput.d.ts +1 -1
  250. package/dist/components/DateFieldYearless/internal/YearlessDateInputWithPicker.d.ts +1 -1
  251. package/dist/components/DateFieldYearlessRange/DateFieldYearlessRange.d.ts +7 -0
  252. package/dist/components/Dialog/Dialog.d.ts +96 -28
  253. package/dist/components/DrillDown/DrillDown.d.ts +7 -1
  254. package/dist/components/FieldLabel/FieldLabel.d.ts +2 -1
  255. package/dist/components/FieldLabel/internal/FieldLabelButton.d.ts +3 -2
  256. package/dist/components/Layout/Layout.d.ts +52 -44
  257. package/dist/components/ListView/ListView.d.ts +5 -5
  258. package/dist/components/Listbox/Listbox.d.ts +5 -23
  259. package/dist/components/Menu/Menu.d.ts +1 -4
  260. package/dist/components/NumberField/NumberField.d.ts +29 -2
  261. package/dist/components/Radio/Radio.d.ts +2 -0
  262. package/dist/components/Radio/RadioGroup.d.ts +27 -6
  263. package/dist/components/SelectCard/SelectCard.d.ts +1 -1
  264. package/dist/components/SelectCard/SelectCardGroup.d.ts +18 -1
  265. package/dist/components/SelectCard/internal/SelectCardContext.d.ts +11 -0
  266. package/dist/components/SelectCard/internal/SelectCardProvider.d.ts +11 -1
  267. package/dist/components/Skeleton/SkeletonCircle.d.ts +8 -0
  268. package/dist/components/Skeleton/SkeletonPill.d.ts +8 -0
  269. package/dist/components/Skeleton/SkeletonRectangle.d.ts +8 -0
  270. package/dist/components/Skeleton/SkeletonText.d.ts +6 -1
  271. package/dist/components/Skeleton/index.d.ts +3 -0
  272. package/dist/components/Switch/Switch.d.ts +11 -1
  273. package/dist/components/Text/types.d.ts +9 -0
  274. package/dist/components/TextField/internal/TextField.d.ts +11 -0
  275. package/dist/components/Textarea/Textarea.d.ts +9 -2
  276. package/dist/components/Toast/internal/Toast.d.ts +5 -0
  277. package/dist/components/Toast/toast.d.ts +1 -1
  278. package/dist/components/Toolbar/Toolbar.d.ts +8 -4
  279. package/dist/components/Toolbar/ToolbarSelect.d.ts +5 -3
  280. package/dist/components/index.d.ts +1 -0
  281. package/dist/{floating-ui.react-dom-imrk9N49.js → floating-ui.react-dom-CHrYz13o.js} +17 -2
  282. package/dist/floating-ui.react-dom-CHrYz13o.js.map +1 -0
  283. package/dist/hooks/index.d.ts +1 -0
  284. package/dist/hooks/usePrefersReducedMotion/index.d.ts +1 -0
  285. package/dist/hooks/usePrefersReducedMotion/usePrefersReducedMotion.d.ts +15 -0
  286. package/dist/index.js +135 -133
  287. package/dist/index.js.map +1 -1
  288. package/dist/internal/components/InlineMarkdown/InlineMarkdown.d.ts +23 -0
  289. package/dist/internal/components/InlineMarkdown/index.d.ts +1 -0
  290. package/dist/internal/components/Label/Label.d.ts +1 -1
  291. package/dist/internal/components/Popover/Popover.d.ts +3 -1
  292. package/dist/internal/components/index.d.ts +2 -1
  293. package/dist/internal/functions/index.d.ts +2 -0
  294. package/dist/internal/functions/inlineMarkdown.d.ts +20 -0
  295. package/dist/internal/functions/stripInlineMarkdown.d.ts +8 -0
  296. package/dist/internal/types/props.d.ts +2 -1
  297. package/dist/internal/types/selectFieldInternalTypes.d.ts +2 -2
  298. package/dist/internal/utils/index.d.ts +1 -0
  299. package/dist/internal/utils/inlineMarkdownRegex.d.ts +5 -0
  300. package/dist/{proxy-BbFHSE6L.js → proxy-DEehATlA.js} +8 -2
  301. package/dist/{proxy-BbFHSE6L.js.map → proxy-DEehATlA.js.map} +1 -1
  302. package/dist/stripInlineMarkdown-DyqLAQnf.js +25 -0
  303. package/dist/stripInlineMarkdown-DyqLAQnf.js.map +1 -0
  304. package/dist/{syncFilterUtils-vt8ldsES.js → syncFilterUtils-CsbCnI1-.js} +194 -194
  305. package/dist/{syncFilterUtils-vt8ldsES.js.map → syncFilterUtils-CsbCnI1-.js.map} +1 -1
  306. package/dist/types/ai-marks.d.ts +72 -0
  307. package/dist/types/index.d.ts +1 -0
  308. package/dist/{use-reduced-motion-DSpxmqyT.js → use-reduced-motion-CqjZZ5QB.js} +2 -2
  309. package/dist/{use-reduced-motion-DSpxmqyT.js.map → use-reduced-motion-CqjZZ5QB.js.map} +1 -1
  310. package/dist/{useDrilldown-wwXRpNgb.js → useDrilldown-C7eMBl68.js} +43 -41
  311. package/dist/{useDrilldown-wwXRpNgb.js.map → useDrilldown-C7eMBl68.js.map} +1 -1
  312. package/dist/{useInitialFocus-CdoVwSbr.js → useInitialFocus-DbaB-x5T.js} +2 -3
  313. package/dist/{useInitialFocus-CdoVwSbr.js.map → useInitialFocus-DbaB-x5T.js.map} +1 -1
  314. package/dist/{useMenuInteraction-zR_78KQC.js → useMenuInteraction-BwZ2ORo9.js} +8 -3
  315. package/dist/useMenuInteraction-BwZ2ORo9.js.map +1 -0
  316. package/dist/{index.esm-BZV0wNKZ.js → usePopoverTransitionStates-B1opfxxn.js} +88 -2
  317. package/dist/usePopoverTransitionStates-B1opfxxn.js.map +1 -0
  318. package/dist/usePrefersReducedMotion-DR9B_D6w.js +37 -0
  319. package/dist/usePrefersReducedMotion-DR9B_D6w.js.map +1 -0
  320. package/dist/usePrefersReducedMotion.d.ts +2 -0
  321. package/dist/usePrefersReducedMotion.js +2 -0
  322. package/dist/usePrefersReducedMotion.js.map +1 -0
  323. package/dist/{useToggleSelection-BdXW3Zg3.js → useToggleSelection-BM8asdFj.js} +2 -2
  324. package/dist/{useToggleSelection-BdXW3Zg3.js.map → useToggleSelection-BM8asdFj.js.map} +1 -1
  325. package/package.json +4 -2
  326. package/dist/Alert-C_o2f78C.js.map +0 -1
  327. package/dist/Avatar--CnTAnfD.js +0 -35
  328. package/dist/Avatar--CnTAnfD.js.map +0 -1
  329. package/dist/Breadcrumbs-3Y7jnj-F.js +0 -105
  330. package/dist/Breadcrumbs-3Y7jnj-F.js.map +0 -1
  331. package/dist/Button-CVsGhVJz.js +0 -113
  332. package/dist/Button-CVsGhVJz.js.map +0 -1
  333. package/dist/Calendar-SGlTt-bs.js.map +0 -1
  334. package/dist/Checkbox-CjEKa5Iv.js +0 -50
  335. package/dist/Checkbox-CjEKa5Iv.js.map +0 -1
  336. package/dist/Checkbox-CtKUNeyu.js.map +0 -1
  337. package/dist/Chip-DjTAR0va.js.map +0 -1
  338. package/dist/DataTable-BYOS6icI.js.map +0 -1
  339. package/dist/DateFieldRange-C8Uzrboc.js.map +0 -1
  340. package/dist/DateFieldYearless-DbivK4Hm.js.map +0 -1
  341. package/dist/DateFieldYearlessRange-BEqJe4Uf.js.map +0 -1
  342. package/dist/Details-Dxq_v3Qg.js.map +0 -1
  343. package/dist/Dialog-CGhwkwvq.js.map +0 -1
  344. package/dist/Drawer-DA4iAgt-.js.map +0 -1
  345. package/dist/FieldLabel-DbMosKtd.js +0 -125
  346. package/dist/FieldLabel-DbMosKtd.js.map +0 -1
  347. package/dist/Grid-ONcUpb__.js +0 -147
  348. package/dist/Grid-ONcUpb__.js.map +0 -1
  349. package/dist/Layout-VfhlilMG.js.map +0 -1
  350. package/dist/List-CJZjElAQ.js +0 -101
  351. package/dist/List-CJZjElAQ.js.map +0 -1
  352. package/dist/ListView-mujFK6mQ.js.map +0 -1
  353. package/dist/Listbox-BtAgBDRS.js.map +0 -1
  354. package/dist/Menu-BXsmCP20.js.map +0 -1
  355. package/dist/MultiSelectFieldSync-DGpGgu8q.js.map +0 -1
  356. package/dist/MultiSelectMenuSync-DiLddJDw.js.map +0 -1
  357. package/dist/NumberField-svhZp1kB.js.map +0 -1
  358. package/dist/Page-Be029Dij.js.map +0 -1
  359. package/dist/Pagination-BAwqfl_2.js.map +0 -1
  360. package/dist/Popover-D0qSKZ1J.js.map +0 -1
  361. package/dist/Popover-DxZF6lbJ.js +0 -535
  362. package/dist/Popover-DxZF6lbJ.js.map +0 -1
  363. package/dist/Popover2.css +0 -68
  364. package/dist/Radio-BOq9UkpC.js +0 -60
  365. package/dist/Radio-BOq9UkpC.js.map +0 -1
  366. package/dist/Radio-BQg7exDG.js.map +0 -1
  367. package/dist/SelectCard-cu4MBuh8.js +0 -320
  368. package/dist/SelectCard-cu4MBuh8.js.map +0 -1
  369. package/dist/SelectFieldLabel-Dr8HeW3N.js.map +0 -1
  370. package/dist/SelectFieldSync-CJ2Ie_v1.js.map +0 -1
  371. package/dist/SelectMenuSync-CJA_coqD.js.map +0 -1
  372. package/dist/SelectTrigger-ObsnAKNp.js.map +0 -1
  373. package/dist/Switch-DpPHr3G3.js.map +0 -1
  374. package/dist/Tab-DO7LaUbw.js.map +0 -1
  375. package/dist/Text-BJo4oMI2.js.map +0 -1
  376. package/dist/TextField-DeHpgPag.js.map +0 -1
  377. package/dist/Textarea-DyqdMTvQ.js.map +0 -1
  378. package/dist/Toaster-b0-Ub3yt.js.map +0 -1
  379. package/dist/Tooltip-Bupqao9B.js.map +0 -1
  380. package/dist/floating-ui.react-C_s3_nEb.js.map +0 -1
  381. package/dist/floating-ui.react-dom-imrk9N49.js.map +0 -1
  382. package/dist/index.esm-BZV0wNKZ.js.map +0 -1
  383. package/dist/safePopover-BDso-xSH.js +0 -17
  384. package/dist/safePopover-BDso-xSH.js.map +0 -1
  385. package/dist/useMenuInteraction-zR_78KQC.js.map +0 -1
  386. package/dist/useOpenCloseTransitionStates-CiTYrLGi.js +0 -68
  387. package/dist/useOpenCloseTransitionStates-CiTYrLGi.js.map +0 -1
  388. package/dist/usePopoverTransitionStates-CDIoNUuf.js +0 -24
  389. package/dist/usePopoverTransitionStates-CDIoNUuf.js.map +0 -1
@@ -3,15 +3,14 @@ import * as React from 'react';
3
3
  import { createContext, forwardRef, useContext, useId, useRef, useState, useCallback, useLayoutEffect, useEffect, useMemo } from 'react';
4
4
  import { c as cx } from './index-De1g9FRV.js';
5
5
  import { S as SvgArrowDropDown } from './arrow_drop_down-ChAdBDux.js';
6
- import { B as Button } from './Button-CVsGhVJz.js';
6
+ import { B as Button } from './Button-a_D7tUgM.js';
7
7
  import { D as DialogContext } from './DialogContext-DBgtApl9.js';
8
8
  import { I as Icon } from './Icon-DuIlne4x.js';
9
9
  import { u as useMergeRefs } from './useMergeRefs-Dfmtq9cI.js';
10
10
  import { c as childrenToString } from './childrenToString-Bz9MqbHb.js';
11
11
  import { useTrackingId } from './useTrackingId.js';
12
- import { k as computePosition, o as offset, m as flip, s as shift, q as size, p as limitShift, l as autoUpdate } from './floating-ui.react-dom-imrk9N49.js';
12
+ import { c as computePosition, o as offset, f as flip, d as shift, g as size, l as limitShift, a as autoUpdate, s as safeShowPopover, b as safeHidePopover } from './floating-ui.react-dom-CHrYz13o.js';
13
13
  import { g as getActiveElement } from './getActiveElement-BcSyVE7S.js';
14
- import { s as safeShowPopover, a as safeHidePopover } from './safePopover-BDso-xSH.js';
15
14
 
16
15
  import './Menu.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" }));
17
16
 
@@ -428,43 +427,155 @@ const MenuNested = (props) => {
428
427
  ] });
429
428
  };
430
429
 
431
- const MenuElement = (props) => {
432
- const {
433
- children,
434
- placement = "bottom-start",
435
- open,
436
- defaultOpen = false,
437
- disableAutoHeight,
438
- label,
439
- onOutsidePress,
440
- trigger,
441
- contentClassName,
442
- maxHeight,
443
- ...rest
444
- } = props;
445
- const uid = useId();
446
- const [openState, setOpenState] = useState(open ?? defaultOpen);
447
- const [scrollTop, setScrollTop] = useState(0);
448
- const [menuHeight, setMenuHeight] = useState(null);
449
- const [arrowStart, setArrowStart] = useState(false);
450
- const [arrowEnd, setArrowEnd] = useState(false);
451
- const invokerRef = useRef(null);
452
- const menuRef = useRef(null);
453
- const childrenRef = useRef(null);
454
- const [focusItems, setFocusItems] = useState();
455
- const dialogContext = useContext(DialogContext);
456
- const menuContext = useContext(MenuContext);
457
- const fallbackArr = useCallback(() => {
458
- if (placement.startsWith("top")) {
459
- return disableAutoHeight ? [placement] : ["top-start", "top-end", "bottom-start", "bottom-end"];
460
- }
461
- return disableAutoHeight ? [placement] : ["bottom-start", "bottom-end", "top-start", "top-end"];
462
- }, [disableAutoHeight, placement]);
463
- const updatePosition = useCallback(() => {
464
- if (!invokerRef.current || !menuRef.current) return;
465
- const timeoutId = setTimeout(() => {
430
+ const Menu = Object.assign(
431
+ function MenuInner(props) {
432
+ const {
433
+ children,
434
+ placement = "bottom-start",
435
+ open,
436
+ defaultOpen = false,
437
+ disableAutoHeight,
438
+ label,
439
+ onOutsidePress,
440
+ trigger,
441
+ contentClassName,
442
+ maxHeight,
443
+ ...rest
444
+ } = props;
445
+ const uid = useId();
446
+ const [openState, setOpenState] = useState(open ?? defaultOpen);
447
+ const [scrollTop, setScrollTop] = useState(0);
448
+ const [menuHeight, setMenuHeight] = useState(null);
449
+ const [arrowStart, setArrowStart] = useState(false);
450
+ const [arrowEnd, setArrowEnd] = useState(false);
451
+ const invokerRef = useRef(null);
452
+ const menuRef = useRef(null);
453
+ const childrenRef = useRef(null);
454
+ const [focusItems, setFocusItems] = useState();
455
+ const dialogContext = useContext(DialogContext);
456
+ const menuContext = useContext(MenuContext);
457
+ const fallbackArr = useCallback(() => {
458
+ if (placement.startsWith("top")) {
459
+ return disableAutoHeight ? [placement] : ["top-start", "top-end", "bottom-start", "bottom-end"];
460
+ }
461
+ return disableAutoHeight ? [placement] : ["bottom-start", "bottom-end", "top-start", "top-end"];
462
+ }, [disableAutoHeight, placement]);
463
+ const updatePosition = useCallback(() => {
466
464
  if (!invokerRef.current || !menuRef.current) return;
467
- computePosition(invokerRef.current, menuRef.current, {
465
+ const timeoutId = setTimeout(() => {
466
+ if (!invokerRef.current || !menuRef.current) return;
467
+ computePosition(invokerRef.current, menuRef.current, {
468
+ placement,
469
+ middleware: [
470
+ offset({
471
+ mainAxis: 5,
472
+ alignmentAxis: 0
473
+ }),
474
+ flip({
475
+ fallbackStrategy: "bestFit",
476
+ fallbackPlacements: fallbackArr(),
477
+ padding: 50
478
+ // Setting to 50px as it is the size of menu with 1 item in it
479
+ }),
480
+ shift({
481
+ mainAxis: !menuContext?.disableAutoHeight,
482
+ crossAxis: false,
483
+ limiter: limitShift({
484
+ mainAxis: !menuContext?.disableAutoHeight
485
+ })
486
+ }),
487
+ size({
488
+ padding: 8,
489
+ apply({ availableWidth, availableHeight, elements }) {
490
+ if (disableAutoHeight ?? menuContext?.disableAutoHeight) return;
491
+ const newHeight = availableHeight - 16;
492
+ if (Math.abs((menuHeight ?? 0) - newHeight) > 1) {
493
+ setMenuHeight(newHeight);
494
+ Object.assign(elements.floating.style, {
495
+ maxWidth: `${availableWidth - 16}px`,
496
+ maxHeight: maxHeight ? `${Math.min(newHeight, typeof maxHeight === "number" ? maxHeight : parseInt(maxHeight.toString()))}px` : `${newHeight}px`
497
+ });
498
+ }
499
+ }
500
+ })
501
+ ]
502
+ }).then(({ x, y }) => {
503
+ if (!menuRef.current) return;
504
+ Object.assign(menuRef.current.style, {
505
+ left: `${x}px`,
506
+ top: `${y}px`
507
+ });
508
+ menuRef.current.dataset.positioned = "true";
509
+ });
510
+ }, 50);
511
+ return () => clearTimeout(timeoutId);
512
+ }, [
513
+ placement,
514
+ fallbackArr,
515
+ menuContext?.disableAutoHeight,
516
+ disableAutoHeight,
517
+ menuHeight,
518
+ maxHeight
519
+ ]);
520
+ const menuReference = useRef(null);
521
+ useLayoutEffect(() => {
522
+ if (!openState) {
523
+ setMenuHeight(null);
524
+ setScrollTop(0);
525
+ return;
526
+ }
527
+ if (!menuRef.current) return;
528
+ menuReference.current = menuRef.current;
529
+ let resizeTimeout = null;
530
+ ({
531
+ height: menuReference.current.clientHeight,
532
+ scrollHeight: childrenRef.current?.scrollHeight ?? 0
533
+ });
534
+ const updateArrows = (height, scrollHeight) => {
535
+ if (!childrenRef.current) return;
536
+ const isOverflow = scrollHeight > height;
537
+ setArrowStart(isOverflow && childrenRef.current.scrollTop > 0);
538
+ setArrowEnd(isOverflow && scrollHeight - height - scrollTop - 16 > 0);
539
+ };
540
+ const observer = new ResizeObserver(() => {
541
+ if (!childrenRef.current || !menuReference.current) return;
542
+ if (resizeTimeout) {
543
+ window.clearTimeout(resizeTimeout);
544
+ }
545
+ resizeTimeout = window.setTimeout(() => {
546
+ const newHeight = menuReference.current?.clientHeight ?? 0;
547
+ const newScrollHeight = childrenRef.current?.scrollHeight ?? 0;
548
+ if (!newHeight) return;
549
+ updateArrows(newHeight, newScrollHeight);
550
+ }, 150);
551
+ });
552
+ if (menuReference.current) {
553
+ observer.observe(menuReference.current);
554
+ }
555
+ return () => {
556
+ if (resizeTimeout) {
557
+ window.clearTimeout(resizeTimeout);
558
+ }
559
+ if (menuReference.current) {
560
+ observer.unobserve(menuReference.current);
561
+ }
562
+ observer.disconnect();
563
+ };
564
+ }, [openState, scrollTop]);
565
+ useLayoutEffect(() => {
566
+ if (!menuRef.current || !invokerRef.current) return;
567
+ const cleanup = autoUpdate(invokerRef.current, menuRef.current, () => {
568
+ updatePosition();
569
+ });
570
+ return () => {
571
+ cleanup();
572
+ };
573
+ }, [updatePosition]);
574
+ const openMenu = useCallback(async () => {
575
+ if (!menuRef.current || !childrenRef.current) return;
576
+ safeShowPopover(menuRef.current);
577
+ if (!invokerRef.current || !menuRef.current) return;
578
+ await computePosition(invokerRef.current, menuRef.current, {
468
579
  placement,
469
580
  middleware: [
470
581
  offset({
@@ -483,20 +594,6 @@ const MenuElement = (props) => {
483
594
  limiter: limitShift({
484
595
  mainAxis: !menuContext?.disableAutoHeight
485
596
  })
486
- }),
487
- size({
488
- padding: 8,
489
- apply({ availableWidth, availableHeight, elements }) {
490
- if (disableAutoHeight ?? menuContext?.disableAutoHeight) return;
491
- const newHeight = availableHeight - 16;
492
- if (Math.abs((menuHeight ?? 0) - newHeight) > 1) {
493
- setMenuHeight(newHeight);
494
- Object.assign(elements.floating.style, {
495
- maxWidth: `${availableWidth - 16}px`,
496
- maxHeight: maxHeight ? `${Math.min(newHeight, typeof maxHeight === "number" ? maxHeight : parseInt(maxHeight.toString()))}px` : `${newHeight}px`
497
- });
498
- }
499
- }
500
597
  })
501
598
  ]
502
599
  }).then(({ x, y }) => {
@@ -507,337 +604,240 @@ const MenuElement = (props) => {
507
604
  });
508
605
  menuRef.current.dataset.positioned = "true";
509
606
  });
510
- }, 50);
511
- return () => clearTimeout(timeoutId);
512
- }, [
513
- placement,
514
- fallbackArr,
515
- menuContext?.disableAutoHeight,
516
- disableAutoHeight,
517
- menuHeight,
518
- maxHeight
519
- ]);
520
- const menuReference = useRef(null);
521
- useLayoutEffect(() => {
522
- if (!openState) {
523
- setMenuHeight(null);
524
- setScrollTop(0);
525
- return;
526
- }
527
- if (!menuRef.current) return;
528
- menuReference.current = menuRef.current;
529
- let resizeTimeout = null;
530
- ({
531
- height: menuReference.current.clientHeight,
532
- scrollHeight: childrenRef.current?.scrollHeight ?? 0
533
- });
534
- const updateArrows = (height, scrollHeight) => {
535
- if (!childrenRef.current) return;
536
- const isOverflow = scrollHeight > height;
537
- setArrowStart(isOverflow && childrenRef.current.scrollTop > 0);
538
- setArrowEnd(isOverflow && scrollHeight - height - scrollTop - 16 > 0);
539
- };
540
- const observer = new ResizeObserver(() => {
541
- if (!childrenRef.current || !menuReference.current) return;
542
- if (resizeTimeout) {
543
- window.clearTimeout(resizeTimeout);
607
+ setOpenState(true);
608
+ requestAnimationFrame(() => {
609
+ if (!childrenRef.current) return;
610
+ const focusables = Array.from(
611
+ childrenRef.current.querySelectorAll(
612
+ `#scroller-${uid.replace(/:/g, "")} > button, #scroller-${uid.replace(/:/g, "")} > div[data-nested="true"] > button, #scroller-${uid.replace(/:/g, "")} > a[href]`
613
+ )
614
+ );
615
+ setFocusItems(focusables);
616
+ });
617
+ dialogContext?.setHasOpenPopover?.(true);
618
+ }, [
619
+ dialogContext,
620
+ uid,
621
+ placement,
622
+ fallbackArr,
623
+ menuContext?.disableAutoHeight
624
+ ]);
625
+ const closeMenu = useCallback(
626
+ async (fn, options) => {
627
+ if (!menuRef.current || !openState) return;
628
+ fn?.();
629
+ setOpenState(false);
630
+ safeHidePopover(menuRef.current);
631
+ dialogContext?.setHasOpenPopover?.(false);
632
+ if (!options?.skipInvokerRefocus) {
633
+ invokerRef.current?.focus();
634
+ }
635
+ },
636
+ [openState, dialogContext]
637
+ );
638
+ const isControlled = typeof open !== "undefined";
639
+ const initialRender = useRef(true);
640
+ useEffect(() => {
641
+ if (!isControlled) return;
642
+ if (initialRender.current === true) {
643
+ if (open && menuRef.current) {
644
+ openMenu();
645
+ }
646
+ initialRender.current = false;
647
+ return;
544
648
  }
545
- resizeTimeout = window.setTimeout(() => {
546
- const newHeight = menuReference.current?.clientHeight ?? 0;
547
- const newScrollHeight = childrenRef.current?.scrollHeight ?? 0;
548
- if (!newHeight) return;
549
- updateArrows(newHeight, newScrollHeight);
550
- }, 150);
551
- });
552
- if (menuReference.current) {
553
- observer.observe(menuReference.current);
554
- }
555
- return () => {
556
- if (resizeTimeout) {
557
- window.clearTimeout(resizeTimeout);
649
+ if (open) {
650
+ openMenu();
651
+ } else {
652
+ closeMenu(void 0, { skipInvokerRefocus: true });
558
653
  }
559
- if (menuReference.current) {
560
- observer.unobserve(menuReference.current);
654
+ }, [closeMenu, isControlled, open, openMenu, dialogContext]);
655
+ useEffect(() => {
656
+ if (typeof document === "undefined") return;
657
+ let isClosable = false;
658
+ const onMouseDownHandler = (e) => {
659
+ if (!invokerRef.current || !menuRef.current) return;
660
+ const isInvoker = e.composedPath().includes(invokerRef.current);
661
+ const isPopover = e.composedPath().includes(menuRef.current);
662
+ if (!isInvoker && !isPopover && openState) {
663
+ onOutsidePress?.(e);
664
+ isClosable = true;
665
+ }
666
+ };
667
+ const onMouseUpHandler = (e) => {
668
+ if (!invokerRef.current || !menuRef.current) return;
669
+ const isInvoker = e.composedPath().includes(invokerRef.current);
670
+ const isPopover = e.composedPath().includes(menuRef.current);
671
+ if (!isInvoker && !isPopover && openState) {
672
+ if (isControlled || !isClosable || !openState) return;
673
+ closeMenu(void 0, { skipInvokerRefocus: true });
674
+ }
675
+ };
676
+ document.addEventListener("mousedown", onMouseDownHandler);
677
+ document.addEventListener("mouseup", onMouseUpHandler);
678
+ return () => {
679
+ document.removeEventListener("mousedown", onMouseDownHandler);
680
+ document.removeEventListener("mouseup", onMouseUpHandler);
681
+ };
682
+ }, [isControlled, openState, onOutsidePress, closeMenu]);
683
+ const onKeyDownHandler = (e) => {
684
+ if (!openState || !childrenRef.current || menuContext) return;
685
+ if (e.code === "Escape") {
686
+ e.stopPropagation();
687
+ e.preventDefault();
688
+ closeMenu();
561
689
  }
562
- observer.disconnect();
563
- };
564
- }, [openState, scrollTop]);
565
- useLayoutEffect(() => {
566
- if (!menuRef.current || !invokerRef.current) return;
567
- const cleanup = autoUpdate(invokerRef.current, menuRef.current, () => {
568
- updatePosition();
569
- });
570
- return () => {
571
- cleanup();
572
- };
573
- }, [updatePosition]);
574
- const openMenu = useCallback(async () => {
575
- if (!menuRef.current || !childrenRef.current) return;
576
- safeShowPopover(menuRef.current);
577
- if (!invokerRef.current || !menuRef.current) return;
578
- await computePosition(invokerRef.current, menuRef.current, {
579
- placement,
580
- middleware: [
581
- offset({
582
- mainAxis: 5,
583
- alignmentAxis: 0
584
- }),
585
- flip({
586
- fallbackStrategy: "bestFit",
587
- fallbackPlacements: fallbackArr(),
588
- padding: 50
589
- // Setting to 50px as it is the size of menu with 1 item in it
590
- }),
591
- shift({
592
- mainAxis: !menuContext?.disableAutoHeight,
593
- crossAxis: false,
594
- limiter: limitShift({
595
- mainAxis: !menuContext?.disableAutoHeight
596
- })
597
- })
598
- ]
599
- }).then(({ x, y }) => {
600
- if (!menuRef.current) return;
601
- Object.assign(menuRef.current.style, {
602
- left: `${x}px`,
603
- top: `${y}px`
604
- });
605
- menuRef.current.dataset.positioned = "true";
606
- });
607
- setOpenState(true);
608
- requestAnimationFrame(() => {
609
- if (!childrenRef.current) return;
610
- const focusables = Array.from(
611
- childrenRef.current.querySelectorAll(
612
- `#scroller-${uid.replace(/:/g, "")} > button, #scroller-${uid.replace(/:/g, "")} > div[data-nested="true"] > button, #scroller-${uid.replace(/:/g, "")} > a[href]`
613
- )
690
+ const currentActiveIndex = focusItems?.findIndex(
691
+ (item) => item.id === getActiveElement(document)?.id
614
692
  );
615
- setFocusItems(focusables);
616
- });
617
- dialogContext?.setHasOpenPopover?.(true);
618
- }, [
619
- dialogContext,
620
- uid,
621
- placement,
622
- fallbackArr,
623
- menuContext?.disableAutoHeight
624
- ]);
625
- const closeMenu = useCallback(
626
- async (fn, options) => {
627
- if (!menuRef.current || !openState) return;
628
- fn?.();
629
- setOpenState(false);
630
- safeHidePopover(menuRef.current);
631
- dialogContext?.setHasOpenPopover?.(false);
632
- if (!options?.skipInvokerRefocus) {
633
- invokerRef.current?.focus();
634
- }
635
- },
636
- [openState, dialogContext]
637
- );
638
- const isControlled = typeof open !== "undefined";
639
- const initialRender = useRef(true);
640
- useEffect(() => {
641
- if (!isControlled) return;
642
- if (initialRender.current === true) {
643
- if (open && menuRef.current) {
644
- openMenu();
693
+ const firstItem = focusItems?.[0];
694
+ const lastItem = focusItems?.[focusItems.length - 1];
695
+ if (e.code === "ArrowDown") {
696
+ e.stopPropagation();
697
+ e.preventDefault();
698
+ if (currentActiveIndex === (focusItems?.length ?? 0) - 1) {
699
+ firstItem.focus();
700
+ return;
701
+ }
702
+ const nextItem = focusItems?.[(currentActiveIndex ?? 0) + 1];
703
+ nextItem.focus();
704
+ return;
645
705
  }
646
- initialRender.current = false;
647
- return;
648
- }
649
- if (open) {
650
- openMenu();
651
- } else {
652
- closeMenu(void 0, { skipInvokerRefocus: true });
653
- }
654
- }, [closeMenu, isControlled, open, openMenu, dialogContext]);
655
- useEffect(() => {
656
- if (typeof document === "undefined") return;
657
- let isClosable = false;
658
- const onMouseDownHandler = (e) => {
659
- if (!invokerRef.current || !menuRef.current) return;
660
- const isInvoker = e.composedPath().includes(invokerRef.current);
661
- const isPopover = e.composedPath().includes(menuRef.current);
662
- if (!isInvoker && !isPopover && openState) {
663
- onOutsidePress?.(e);
664
- isClosable = true;
706
+ if (e.code === "ArrowUp") {
707
+ e.stopPropagation();
708
+ e.preventDefault();
709
+ if (currentActiveIndex === 0) {
710
+ lastItem.focus();
711
+ return;
712
+ }
713
+ const prevItem = focusItems?.[(currentActiveIndex ?? 0) - 1];
714
+ prevItem.focus();
715
+ return;
665
716
  }
666
717
  };
667
- const onMouseUpHandler = (e) => {
668
- if (!invokerRef.current || !menuRef.current) return;
669
- const isInvoker = e.composedPath().includes(invokerRef.current);
670
- const isPopover = e.composedPath().includes(menuRef.current);
671
- if (!isInvoker && !isPopover && openState) {
672
- if (isControlled || !isClosable || !openState) return;
673
- closeMenu(void 0, { skipInvokerRefocus: true });
718
+ const value = useMemo(() => {
719
+ return {
720
+ disableAutoHeight,
721
+ closeRootMenu: menuContext?.closeRootMenu ?? closeMenu
722
+ };
723
+ }, [disableAutoHeight, menuContext, closeMenu]);
724
+ const MenuButtonOnKeyDownHandler = (e) => {
725
+ if (e.code === "ArrowDown") {
726
+ focusItems?.[0].focus();
727
+ e.stopPropagation();
728
+ e.preventDefault();
674
729
  }
675
730
  };
676
- document.addEventListener("mousedown", onMouseDownHandler);
677
- document.addEventListener("mouseup", onMouseUpHandler);
678
- return () => {
679
- document.removeEventListener("mousedown", onMouseDownHandler);
680
- document.removeEventListener("mouseup", onMouseUpHandler);
681
- };
682
- }, [isControlled, openState, onOutsidePress, closeMenu]);
683
- const onKeyDownHandler = (e) => {
684
- if (!openState || !childrenRef.current || menuContext) return;
685
- if (e.code === "Escape") {
686
- e.stopPropagation();
687
- e.preventDefault();
688
- closeMenu();
689
- }
690
- const currentActiveIndex = focusItems?.findIndex(
691
- (item) => item.id === getActiveElement(document)?.id
692
- );
693
- const firstItem = focusItems?.[0];
694
- const lastItem = focusItems?.[focusItems.length - 1];
695
- if (e.code === "ArrowDown") {
696
- e.stopPropagation();
697
- e.preventDefault();
698
- if (currentActiveIndex === (focusItems?.length ?? 0) - 1) {
699
- firstItem.focus();
700
- return;
701
- }
702
- const nextItem = focusItems?.[(currentActiveIndex ?? 0) + 1];
703
- nextItem.focus();
704
- return;
705
- }
706
- if (e.code === "ArrowUp") {
707
- e.stopPropagation();
708
- e.preventDefault();
709
- if (currentActiveIndex === 0) {
710
- lastItem.focus();
731
+ const MenuButtonOnClick = () => {
732
+ if (isControlled) return;
733
+ if (openState) {
734
+ closeMenu();
711
735
  return;
712
736
  }
713
- const prevItem = focusItems?.[(currentActiveIndex ?? 0) - 1];
714
- prevItem.focus();
715
- return;
716
- }
717
- };
718
- const value = useMemo(() => {
719
- return {
720
- disableAutoHeight,
721
- closeRootMenu: menuContext?.closeRootMenu ?? closeMenu
737
+ openMenu();
722
738
  };
723
- }, [disableAutoHeight, menuContext, closeMenu]);
724
- const MenuButtonOnKeyDownHandler = (e) => {
725
- if (e.code === "ArrowDown") {
726
- focusItems?.[0].focus();
727
- e.stopPropagation();
728
- e.preventDefault();
729
- }
730
- };
731
- const MenuButtonOnClick = () => {
732
- if (isControlled) return;
733
- if (openState) {
734
- closeMenu();
735
- return;
739
+ const data = {
740
+ label: childrenToString(props.label)
741
+ };
742
+ const trackingId = useTrackingId({
743
+ name: "Menu",
744
+ data,
745
+ hasOverride: !!props["data-tracking-id"]
746
+ });
747
+ if (menuContext) {
748
+ return /* @__PURE__ */ jsx(MenuContext.Provider, { value, children: /* @__PURE__ */ jsx(
749
+ MenuNested,
750
+ {
751
+ "data-tracking-id": trackingId,
752
+ open,
753
+ defaultOpen,
754
+ className: props.className,
755
+ icon: props.icon,
756
+ label,
757
+ children
758
+ }
759
+ ) });
736
760
  }
737
- openMenu();
738
- };
739
- const data = {
740
- label: childrenToString(props.label)
741
- };
742
- const trackingId = useTrackingId({
743
- name: "Menu",
744
- data,
745
- hasOverride: !!props["data-tracking-id"]
746
- });
747
- if (menuContext) {
748
- return /* @__PURE__ */ jsx(MenuContext.Provider, { value, children: /* @__PURE__ */ jsx(
749
- MenuNested,
750
- {
751
- "data-tracking-id": trackingId,
752
- open,
753
- defaultOpen,
754
- className: props.className,
755
- icon: props.icon,
756
- label,
757
- children
758
- }
759
- ) });
760
- }
761
- return /* @__PURE__ */ jsxs(MenuContext.Provider, { value, children: [
762
- trigger ? trigger({
763
- ref: invokerRef,
764
- onClick: () => MenuButtonOnClick(),
765
- onKeyDown: MenuButtonOnKeyDownHandler,
766
- "aria-haspopup": true,
767
- "aria-controls": `menu-${uid.replace(/:/g, "")}`,
768
- "aria-expanded": openState,
769
- "data-state": openState ? "open" : "close"
770
- }) : /* @__PURE__ */ jsx(
771
- Button,
772
- {
761
+ return /* @__PURE__ */ jsxs(MenuContext.Provider, { value, children: [
762
+ trigger ? trigger({
773
763
  ref: invokerRef,
774
- onClick: MenuButtonOnClick,
764
+ onClick: () => MenuButtonOnClick(),
775
765
  onKeyDown: MenuButtonOnKeyDownHandler,
776
766
  "aria-haspopup": true,
777
767
  "aria-controls": `menu-${uid.replace(/:/g, "")}`,
778
- "data-state": openState ? "open" : "close",
779
768
  "aria-expanded": openState,
780
- ...rest,
781
- children: label
782
- }
783
- ),
784
- /* @__PURE__ */ jsxs(
785
- "div",
786
- {
787
- popover: "manual",
788
- id: `menu-${uid.replace(/:/g, "")}`,
789
- "data-anv": "menu-content",
790
- className: cx(styles.content, contentClassName),
791
- onKeyDown: onKeyDownHandler,
792
- ref: menuRef,
793
- role: "presentation",
794
- children: [
795
- arrowStart && /* @__PURE__ */ jsx("div", { className: styles["arrow-up"], "aria-hidden": true, children: /* @__PURE__ */ jsx(Icon, { svg: SvgArrowDropUp, size: "xlarge", className: styles["arrow-icon"] }) }),
796
- /* @__PURE__ */ jsx(
797
- "div",
798
- {
799
- className: styles.scroller,
800
- tabIndex: -1,
801
- ref: childrenRef,
802
- style: {
803
- position: "relative",
804
- maxHeight: maxHeight ? `${Math.min(menuHeight ?? Infinity, typeof maxHeight === "number" ? maxHeight : parseInt(maxHeight.toString()))}px` : menuHeight ?? "inherit"
805
- },
806
- onScroll: (e) => setScrollTop(e.currentTarget.scrollTop),
807
- role: "menu",
808
- id: `scroller-${uid.replace(/:/g, "")}`,
809
- children
810
- }
811
- ),
812
- arrowEnd && /* @__PURE__ */ jsx("div", { className: styles["arrow-down"], "aria-hidden": true, children: /* @__PURE__ */ jsx(Icon, { svg: SvgArrowDropDown, size: "xlarge", className: styles["arrow-icon"] }) })
813
- ]
814
- }
815
- )
816
- ] });
817
- };
818
- MenuElement.displayName = "Menu";
819
- const Menu = Object.assign(MenuElement, {
820
- /**
821
- * MenuItem component for individual menu options.
822
- *
823
- * Features:
824
- * - Supports icons and labels
825
- * - Keyboard navigation support
826
- * - Disabled state handling
827
- * - Automatic menu closing on selection
828
- * - Fully accessible with proper ARIA attributes
829
- * - Focus management and tab index handling
830
- * - Click and mouse enter event handling
831
- *
832
- * @example
833
- * <Menu.Item
834
- * label="Edit Profile"
835
- * icon={EditIcon}
836
- * onClick={() => console.log('Edit profile clicked')}
837
- * />
838
- */
839
- Item: MenuItem
840
- });
769
+ "data-state": openState ? "open" : "close"
770
+ }) : /* @__PURE__ */ jsx(
771
+ Button,
772
+ {
773
+ ref: invokerRef,
774
+ onClick: MenuButtonOnClick,
775
+ onKeyDown: MenuButtonOnKeyDownHandler,
776
+ "aria-haspopup": true,
777
+ "aria-controls": `menu-${uid.replace(/:/g, "")}`,
778
+ "data-state": openState ? "open" : "close",
779
+ "aria-expanded": openState,
780
+ ...rest,
781
+ children: label
782
+ }
783
+ ),
784
+ /* @__PURE__ */ jsxs(
785
+ "div",
786
+ {
787
+ popover: "manual",
788
+ id: `menu-${uid.replace(/:/g, "")}`,
789
+ "data-anv": "menu-content",
790
+ className: cx(styles.content, contentClassName),
791
+ onKeyDown: onKeyDownHandler,
792
+ ref: menuRef,
793
+ role: "presentation",
794
+ children: [
795
+ arrowStart && /* @__PURE__ */ jsx("div", { className: styles["arrow-up"], "aria-hidden": true, children: /* @__PURE__ */ jsx(Icon, { svg: SvgArrowDropUp, size: "xlarge", className: styles["arrow-icon"] }) }),
796
+ /* @__PURE__ */ jsx(
797
+ "div",
798
+ {
799
+ className: styles.scroller,
800
+ tabIndex: -1,
801
+ ref: childrenRef,
802
+ style: {
803
+ position: "relative",
804
+ maxHeight: maxHeight ? `${Math.min(menuHeight ?? Infinity, typeof maxHeight === "number" ? maxHeight : parseInt(maxHeight.toString()))}px` : menuHeight ?? "inherit"
805
+ },
806
+ onScroll: (e) => setScrollTop(e.currentTarget.scrollTop),
807
+ role: "menu",
808
+ id: `scroller-${uid.replace(/:/g, "")}`,
809
+ children
810
+ }
811
+ ),
812
+ arrowEnd && /* @__PURE__ */ jsx("div", { className: styles["arrow-down"], "aria-hidden": true, children: /* @__PURE__ */ jsx(Icon, { svg: SvgArrowDropDown, size: "xlarge", className: styles["arrow-icon"] }) })
813
+ ]
814
+ }
815
+ )
816
+ ] });
817
+ },
818
+ {
819
+ /**
820
+ * MenuItem component for individual menu options.
821
+ *
822
+ * Features:
823
+ * - Supports icons and labels
824
+ * - Keyboard navigation support
825
+ * - Disabled state handling
826
+ * - Automatic menu closing on selection
827
+ * - Fully accessible with proper ARIA attributes
828
+ * - Focus management and tab index handling
829
+ * - Click and mouse enter event handling
830
+ *
831
+ * @example
832
+ * <Menu.Item
833
+ * label="Edit Profile"
834
+ * icon={EditIcon}
835
+ * onClick={() => console.log('Edit profile clicked')}
836
+ * />
837
+ */
838
+ Item: MenuItem
839
+ }
840
+ );
841
841
 
842
842
  export { Menu as M };
843
- //# sourceMappingURL=Menu-BXsmCP20.js.map
843
+ //# sourceMappingURL=Menu-CPbuIsqC.js.map