@servicetitan/anvil2 3.0.1 → 3.0.2

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 (263) hide show
  1. package/CHANGELOG.md +33 -0
  2. package/README.md +8 -6
  3. package/dist/{AiMark-B1-M3ZgP.js → AiMark-DiMotaq3.js} +3 -3
  4. package/dist/{AiMark-B1-M3ZgP.js.map → AiMark-DiMotaq3.js.map} +1 -1
  5. package/dist/AiMark.js +1 -1
  6. package/dist/{Alert-C04WIw7A.js → Alert-DhhVURcl.js} +2 -2
  7. package/dist/{Alert-C04WIw7A.js.map → Alert-DhhVURcl.js.map} +1 -1
  8. package/dist/Alert.js +1 -1
  9. package/dist/{Breadcrumbs-CAJMeA1D.js → Breadcrumbs-vvKOtFwN.js} +2 -2
  10. package/dist/{Breadcrumbs-CAJMeA1D.js.map → Breadcrumbs-vvKOtFwN.js.map} +1 -1
  11. package/dist/Breadcrumbs.js +1 -1
  12. package/dist/{Calendar-BAbAagIx.js → Calendar-BLvBN8Ou.js} +2 -2
  13. package/dist/{Calendar-BAbAagIx.js.map → Calendar-BLvBN8Ou.js.map} +1 -1
  14. package/dist/{Calendar-CaCMa_jq.js → Calendar-Dtn07sfJ.js} +2 -2
  15. package/dist/{Calendar-CaCMa_jq.js.map → Calendar-Dtn07sfJ.js.map} +1 -1
  16. package/dist/Calendar.js +2 -2
  17. package/dist/{Checkbox-BSAS8-DM.js → Checkbox-BngBrjEV.js} +3 -3
  18. package/dist/{Checkbox-BSAS8-DM.js.map → Checkbox-BngBrjEV.js.map} +1 -1
  19. package/dist/{Checkbox-Ckl8EFpF.js → Checkbox-lSwl_u26.js} +2 -2
  20. package/dist/{Checkbox-Ckl8EFpF.js.map → Checkbox-lSwl_u26.js.map} +1 -1
  21. package/dist/Checkbox.js +1 -1
  22. package/dist/{Chip-Da8c7tKP.js → Chip-DBn3KRak.js} +2 -2
  23. package/dist/{Chip-Da8c7tKP.js.map → Chip-DBn3KRak.js.map} +1 -1
  24. package/dist/Chip.js +1 -1
  25. package/dist/{Combobox-CBLaT1lU.js → Combobox-BqhvHG9H.js} +4 -4
  26. package/dist/{Combobox-CBLaT1lU.js.map → Combobox-BqhvHG9H.js.map} +1 -1
  27. package/dist/Combobox.js +1 -1
  28. package/dist/{DataTable-BDXdCF7J.js → DataTable-CB-exG-7.js} +1172 -141
  29. package/dist/DataTable-CB-exG-7.js.map +1 -0
  30. package/dist/DataTable.css +259 -103
  31. package/dist/{DateFieldRange-DPTC3EZz.js → DateFieldRange-Ci-OHK6g.js} +4 -4
  32. package/dist/{DateFieldRange-DPTC3EZz.js.map → DateFieldRange-Ci-OHK6g.js.map} +1 -1
  33. package/dist/DateFieldRange.js +1 -1
  34. package/dist/{DateFieldSingle-w1G-zd9G.js → DateFieldSingle-JOEy4kSL.js} +4 -4
  35. package/dist/{DateFieldSingle-w1G-zd9G.js.map → DateFieldSingle-JOEy4kSL.js.map} +1 -1
  36. package/dist/DateFieldSingle.js +1 -1
  37. package/dist/{DateFieldYearless-DHNVc7Sd.js → DateFieldYearless-CIqPup6O.js} +4 -4
  38. package/dist/{DateFieldYearless-DHNVc7Sd.js.map → DateFieldYearless-CIqPup6O.js.map} +1 -1
  39. package/dist/DateFieldYearless.js +1 -1
  40. package/dist/{DateFieldYearlessRange-C5ktVUgG.js → DateFieldYearlessRange-Cf11uZhk.js} +3 -3
  41. package/dist/{DateFieldYearlessRange-C5ktVUgG.js.map → DateFieldYearlessRange-Cf11uZhk.js.map} +1 -1
  42. package/dist/DateFieldYearlessRange.js +1 -1
  43. package/dist/{DaysOfTheWeek-BubWkBZ0.js → DaysOfTheWeek-R2-y7cqh.js} +3 -3
  44. package/dist/{DaysOfTheWeek-BubWkBZ0.js.map → DaysOfTheWeek-R2-y7cqh.js.map} +1 -1
  45. package/dist/DaysOfTheWeek.js +1 -1
  46. package/dist/{Dialog-ByTyuybu.js → Dialog-C3yST7Ly.js} +4 -4
  47. package/dist/{Dialog-ByTyuybu.js.map → Dialog-C3yST7Ly.js.map} +1 -1
  48. package/dist/Dialog.js +1 -1
  49. package/dist/Dnd.js +2 -1
  50. package/dist/Dnd.js.map +1 -1
  51. package/dist/DndHandleButton-Dgt9G-dF.js +43 -0
  52. package/dist/DndHandleButton-Dgt9G-dF.js.map +1 -0
  53. package/dist/DndHandleButton.css +22 -0
  54. package/dist/DndSort.js +2 -1
  55. package/dist/DndSort.js.map +1 -1
  56. package/dist/{Drawer-CwyfBcwt.js → Drawer-CouIrQ8u.js} +4 -4
  57. package/dist/{Drawer-CwyfBcwt.js.map → Drawer-CouIrQ8u.js.map} +1 -1
  58. package/dist/Drawer.js +1 -1
  59. package/dist/DrillDown.js +1 -1
  60. package/dist/{EditCard-DqLSnkih.js → EditCard-DFBjxF9l.js} +2 -2
  61. package/dist/{EditCard-DqLSnkih.js.map → EditCard-DFBjxF9l.js.map} +1 -1
  62. package/dist/EditCard.js +1 -1
  63. package/dist/{FieldLabel-DZWu5dMp.js → FieldLabel-rHPbiyR3.js} +3 -3
  64. package/dist/{FieldLabel-DZWu5dMp.js.map → FieldLabel-rHPbiyR3.js.map} +1 -1
  65. package/dist/FieldLabel.js +1 -1
  66. package/dist/{FilterBar-BU8StPPd.js → FilterBar-kVue-bVK.js} +13 -13
  67. package/dist/{FilterBar-BU8StPPd.js.map → FilterBar-kVue-bVK.js.map} +1 -1
  68. package/dist/FilterBar.js +1 -1
  69. package/dist/{InputMask-EwEJlW-t.js → InputMask-DxbFpzo7.js} +3 -3
  70. package/dist/{InputMask-EwEJlW-t.js.map → InputMask-DxbFpzo7.js.map} +1 -1
  71. package/dist/InputMask.js +1 -1
  72. package/dist/InteractiveCard-KGs2b_al.js +119 -0
  73. package/dist/InteractiveCard-KGs2b_al.js.map +1 -0
  74. package/dist/InteractiveCard.css +21 -28
  75. package/dist/InteractiveCard.js +1 -1
  76. package/dist/{ListView-DBO9Bl1H.js → ListView-CYkuvkAy.js} +2 -2
  77. package/dist/{ListView-DBO9Bl1H.js.map → ListView-CYkuvkAy.js.map} +1 -1
  78. package/dist/ListView.js +1 -1
  79. package/dist/{Listbox-C0tjQFDF.js → Listbox-BBrsMfO3.js} +2 -2
  80. package/dist/{Listbox-C0tjQFDF.js.map → Listbox-BBrsMfO3.js.map} +1 -1
  81. package/dist/Listbox.js +1 -1
  82. package/dist/MultiSelectField.js +1 -1
  83. package/dist/{MultiSelectFieldSync-ueey5UBM.js → MultiSelectFieldSync-BWZQ4MFC.js} +5 -5
  84. package/dist/{MultiSelectFieldSync-ueey5UBM.js.map → MultiSelectFieldSync-BWZQ4MFC.js.map} +1 -1
  85. package/dist/MultiSelectMenu.js +1 -1
  86. package/dist/{MultiSelectMenuSync-D7hqugcQ.js → MultiSelectMenuSync-Bl4ty0je.js} +3 -3
  87. package/dist/{MultiSelectMenuSync-D7hqugcQ.js.map → MultiSelectMenuSync-Bl4ty0je.js.map} +1 -1
  88. package/dist/{NumberField-DJbdyatF.js → NumberField-DMHJ2Cyi.js} +4 -5
  89. package/dist/NumberField-DMHJ2Cyi.js.map +1 -0
  90. package/dist/NumberField.js +1 -1
  91. package/dist/Overflow.js +1 -1
  92. package/dist/{Page-DbK-JKyB.js → Page-Blw4TE5J.js} +9 -9
  93. package/dist/{Page-DbK-JKyB.js.map → Page-Blw4TE5J.js.map} +1 -1
  94. package/dist/Page.js +1 -1
  95. package/dist/{Pagination-Bg5Nsdik.js → Pagination-DYNH3WeU.js} +2 -2
  96. package/dist/{Pagination-Bg5Nsdik.js.map → Pagination-DYNH3WeU.js.map} +1 -1
  97. package/dist/Pagination.js +1 -1
  98. package/dist/{Popover-CyB7yzSf.js → Popover-C_XdNvAZ.js} +2 -2
  99. package/dist/{Popover-CyB7yzSf.js.map → Popover-C_XdNvAZ.js.map} +1 -1
  100. package/dist/Popover.js +1 -1
  101. package/dist/{ProgressBar-DSrjgLTx.js → ProgressBar-BwHaAD25.js} +2 -2
  102. package/dist/{ProgressBar-DSrjgLTx.js.map → ProgressBar-BwHaAD25.js.map} +1 -1
  103. package/dist/ProgressBar.js +1 -1
  104. package/dist/{Radio-CQaXJ72d.js → Radio-DJ6KgfcS.js} +2 -2
  105. package/dist/{Radio-CQaXJ72d.js.map → Radio-DJ6KgfcS.js.map} +1 -1
  106. package/dist/{Radio-DO4UhbBE.js → Radio-IksHWkBl.js} +3 -3
  107. package/dist/{Radio-DO4UhbBE.js.map → Radio-IksHWkBl.js.map} +1 -1
  108. package/dist/Radio.js +1 -1
  109. package/dist/RichTextEditor-C_Boj8QP.js +30852 -0
  110. package/dist/RichTextEditor-C_Boj8QP.js.map +1 -0
  111. package/dist/RichTextEditor.css +178 -0
  112. package/dist/RichTextEditor.d.ts +2 -0
  113. package/dist/RichTextEditor.js +2 -0
  114. package/dist/RichTextEditor.js.map +1 -0
  115. package/dist/{SelectCard-CtXwY8FZ.js → SelectCard-E-13CjHS.js} +3 -3
  116. package/dist/{SelectCard-CtXwY8FZ.js.map → SelectCard-E-13CjHS.js.map} +1 -1
  117. package/dist/SelectCard.js +1 -1
  118. package/dist/SelectField.js +1 -1
  119. package/dist/{SelectFieldLabel-DLT5dKbx.js → SelectFieldLabel-C-MrQm-n.js} +2 -2
  120. package/dist/{SelectFieldLabel-DLT5dKbx.js.map → SelectFieldLabel-C-MrQm-n.js.map} +1 -1
  121. package/dist/{SelectFieldSync-W_-jTf7z.js → SelectFieldSync-BbJFd_bV.js} +4 -4
  122. package/dist/{SelectFieldSync-W_-jTf7z.js.map → SelectFieldSync-BbJFd_bV.js.map} +1 -1
  123. package/dist/SelectMenu.js +1 -1
  124. package/dist/{SelectMenuSync-QcjbQtCO.js → SelectMenuSync-CBMdmGTU.js} +3 -3
  125. package/dist/{SelectMenuSync-QcjbQtCO.js.map → SelectMenuSync-CBMdmGTU.js.map} +1 -1
  126. package/dist/{SelectOptions-BsX0f22q.js → SelectOptions-BT9OCfPh.js} +2 -2
  127. package/dist/{SelectOptions-BsX0f22q.js.map → SelectOptions-BT9OCfPh.js.map} +1 -1
  128. package/dist/{SelectTrigger-BaDvF9JD.js → SelectTrigger-DtyxYDzP.js} +2 -2
  129. package/dist/{SelectTrigger-BaDvF9JD.js.map → SelectTrigger-DtyxYDzP.js.map} +1 -1
  130. package/dist/SelectTrigger.js +1 -1
  131. package/dist/{SelectTriggerBase-kMRqbXwu.js → SelectTriggerBase-Xwq929Wr.js} +3 -3
  132. package/dist/{SelectTriggerBase-kMRqbXwu.js.map → SelectTriggerBase-Xwq929Wr.js.map} +1 -1
  133. package/dist/{Switch-DeBu4Ucg.js → Switch-CElshQ9N.js} +2 -2
  134. package/dist/{Switch-DeBu4Ucg.js.map → Switch-CElshQ9N.js.map} +1 -1
  135. package/dist/Switch.js +1 -1
  136. package/dist/Table.js +1 -1
  137. package/dist/{Text-BH8gglCL.js → Text-C0F8AkvH.js} +2 -2
  138. package/dist/{Text-BH8gglCL.js.map → Text-C0F8AkvH.js.map} +1 -1
  139. package/dist/Text.js +1 -1
  140. package/dist/{TextField-CRDTnuUN.js → TextField-CLZEj0aI.js} +3 -3
  141. package/dist/{TextField-CRDTnuUN.js.map → TextField-CLZEj0aI.js.map} +1 -1
  142. package/dist/{TextField-YlMkDHp-.js → TextField-yL52fx5R.js} +2 -2
  143. package/dist/{TextField-YlMkDHp-.js.map → TextField-yL52fx5R.js.map} +1 -1
  144. package/dist/TextField.js +1 -1
  145. package/dist/{Textarea-CxXmr_Gx.js → Textarea-CGgyvnM8.js} +3 -3
  146. package/dist/{Textarea-CxXmr_Gx.js.map → Textarea-CGgyvnM8.js.map} +1 -1
  147. package/dist/Textarea.js +1 -1
  148. package/dist/{TimeField-Cz4tMYb3.js → TimeField-BEvxjjFp.js} +4 -4
  149. package/dist/{TimeField-Cz4tMYb3.js.map → TimeField-BEvxjjFp.js.map} +1 -1
  150. package/dist/TimeField.js +1 -1
  151. package/dist/Toast.js +2 -2
  152. package/dist/{Toaster-BV8RjmIN.js → Toaster-DllJAOK8.js} +3 -3
  153. package/dist/{Toaster-BV8RjmIN.js.map → Toaster-DllJAOK8.js.map} +1 -1
  154. package/dist/{Toaster-DYGDohJT.js → Toaster-DuadB8pq.js} +2 -2
  155. package/dist/{Toaster-DYGDohJT.js.map → Toaster-DuadB8pq.js.map} +1 -1
  156. package/dist/{Toolbar-Dzj2KMEy.js → Toolbar-J5cakHba.js} +5 -5
  157. package/dist/{Toolbar-Dzj2KMEy.js.map → Toolbar-J5cakHba.js.map} +1 -1
  158. package/dist/Toolbar-QYRQv45Y.js +780 -0
  159. package/dist/Toolbar-QYRQv45Y.js.map +1 -0
  160. package/dist/Toolbar.js +2 -2
  161. package/dist/{ToolbarButtonToggle--2Ka05N8.js → ToolbarButtonToggle-Ch0SH4oH.js} +5 -4
  162. package/dist/ToolbarButtonToggle-Ch0SH4oH.js.map +1 -0
  163. package/dist/{Tooltip-BlStOXN3.js → Tooltip-lBmgi5ZB.js} +7 -6
  164. package/dist/Tooltip-lBmgi5ZB.js.map +1 -0
  165. package/dist/Tooltip.css +7 -6
  166. package/dist/Tooltip.js +1 -1
  167. package/dist/{YearlessDateInputWithPicker-DyytWt0x.js → YearlessDateInputWithPicker-DryLX8sA.js} +2 -2
  168. package/dist/{YearlessDateInputWithPicker-DyytWt0x.js.map → YearlessDateInputWithPicker-DryLX8sA.js.map} +1 -1
  169. package/dist/add-BcQkAUip.js +6 -0
  170. package/dist/add-BcQkAUip.js.map +1 -0
  171. package/dist/assets/css-utils/a2-border.css +23 -53
  172. package/dist/assets/css-utils/a2-color.css +221 -449
  173. package/dist/assets/css-utils/a2-font.css +21 -47
  174. package/dist/assets/css-utils/a2-spacing.css +238 -481
  175. package/dist/assets/css-utils/a2-utils.css +497 -1002
  176. package/dist/assets/css-utils/border.css +23 -53
  177. package/dist/assets/css-utils/color.css +221 -449
  178. package/dist/assets/css-utils/font.css +21 -47
  179. package/dist/assets/css-utils/spacing.css +238 -481
  180. package/dist/assets/css-utils/utils.css +497 -1002
  181. package/dist/beta/components/InteractiveCard/InteractiveCard.d.ts +3 -1
  182. package/dist/beta/components/RichTextEditor/RichTextEditor.d.ts +27 -0
  183. package/dist/beta/components/RichTextEditor/index.d.ts +2 -0
  184. package/dist/beta/components/RichTextEditor/internal/LinkPopover.d.ts +14 -0
  185. package/dist/beta/components/RichTextEditor/internal/MentionList.d.ts +14 -0
  186. package/dist/beta/components/RichTextEditor/internal/MentionNodeView.d.ts +11 -0
  187. package/dist/beta/components/RichTextEditor/internal/MentionPopover.d.ts +16 -0
  188. package/dist/beta/components/RichTextEditor/internal/RichTextEditorContext.d.ts +57 -0
  189. package/dist/beta/components/RichTextEditor/internal/RichTextEditorDragHandle.d.ts +6 -0
  190. package/dist/beta/components/RichTextEditor/internal/RichTextEditorMockData.d.ts +8 -0
  191. package/dist/beta/components/RichTextEditor/internal/RichTextEditorProvider.d.ts +8 -0
  192. package/dist/beta/components/RichTextEditor/internal/RichTextEditorToolbar.d.ts +1 -0
  193. package/dist/beta/components/RichTextEditor/internal/YouTubeEmbedPrompt.d.ts +11 -0
  194. package/dist/beta/components/RichTextEditor/internal/YouTubePopover.d.ts +11 -0
  195. package/dist/beta/components/RichTextEditor/internal/extensions/ImageUploadExtension.d.ts +3 -0
  196. package/dist/beta/components/RichTextEditor/internal/extensions/LinkKeyboardShortcutExtension.d.ts +8 -0
  197. package/dist/beta/components/RichTextEditor/internal/extensions/MentionExtension.d.ts +18 -0
  198. package/dist/beta/components/RichTextEditor/internal/extensions/YoutubeExtension.d.ts +8 -0
  199. package/dist/beta/components/RichTextEditor/internal/useRichTextEditor.d.ts +32 -0
  200. package/dist/beta/components/RichTextEditor/types.d.ts +103 -0
  201. package/dist/beta/components/Table/DataTable/DataTable.d.ts +40 -1
  202. package/dist/beta/components/Table/DataTable/internal/DataTableBody.d.ts +22 -0
  203. package/dist/beta/components/Table/DataTable/internal/DataTableBodyRow.d.ts +18 -1
  204. package/dist/beta/components/Table/DataTable/internal/cells/CellFocusContext.d.ts +16 -0
  205. package/dist/beta/components/Table/DataTable/internal/editable-cells/DataTableEditableCustomCell.d.ts +8 -0
  206. package/dist/beta/components/Table/DataTable/internal/editable-cells/useCustomEditHelpers.d.ts +49 -0
  207. package/dist/beta/components/Table/DataTable/internal/useDataTableVirtualizer.d.ts +9 -5
  208. package/dist/beta/components/Table/DataTable/internal/util/cellTypeHelpers.d.ts +3 -0
  209. package/dist/beta/components/Table/DataTable/internal/util/getTanStackColumnDef.d.ts +13 -1
  210. package/dist/beta/components/Table/createColumnHelper.d.ts +48 -22
  211. package/dist/beta/components/Table/internal/getCommonPinningClasses.d.ts +1 -1
  212. package/dist/beta/components/Table/types.d.ts +311 -7
  213. package/dist/beta/components/index.d.ts +1 -0
  214. package/dist/beta.js +13 -12
  215. package/dist/beta.js.map +1 -1
  216. package/dist/components/Toolbar/internal/utils/accessibility.d.ts +5 -0
  217. package/dist/getKeyboardFocusableElements-B_U9rt6y.js +11 -0
  218. package/dist/getKeyboardFocusableElements-B_U9rt6y.js.map +1 -0
  219. package/dist/index-DUzqzmOX.js +17044 -0
  220. package/dist/index-DUzqzmOX.js.map +1 -0
  221. package/dist/index-DtsM4pjR.js +71 -0
  222. package/dist/index-DtsM4pjR.js.map +1 -0
  223. package/dist/index.css +1 -22
  224. package/dist/index.js +46 -810
  225. package/dist/index.js.map +1 -1
  226. package/dist/internal/components/Surface/Surface.d.ts +141 -0
  227. package/dist/internal/components/Surface/index.d.ts +1 -0
  228. package/dist/internal/components/index.d.ts +1 -0
  229. package/dist/internal/functions/getKeyboardFocusableElements.d.ts +11 -0
  230. package/dist/{stripInlineMarkdown-BWbMy7r_.js → stripInlineMarkdown-BOi-eJO3.js} +2 -2
  231. package/dist/{stripInlineMarkdown-BWbMy7r_.js.map → stripInlineMarkdown-BOi-eJO3.js.map} +1 -1
  232. package/dist/{syncFilterUtils-nJS_tCsu.js → syncFilterUtils-Gvm81gyv.js} +4 -4
  233. package/dist/{syncFilterUtils-nJS_tCsu.js.map → syncFilterUtils-Gvm81gyv.js.map} +1 -1
  234. package/dist/token/core/css-utils/a2-border.css +0 -30
  235. package/dist/token/core/css-utils/a2-color.css +0 -228
  236. package/dist/token/core/css-utils/a2-font.css +1 -27
  237. package/dist/token/core/css-utils/a2-spacing.css +1 -244
  238. package/dist/token/core/css-utils/a2-utils.css +0 -505
  239. package/dist/token/core/css-utils/border.css +0 -30
  240. package/dist/token/core/css-utils/color.css +0 -228
  241. package/dist/token/core/css-utils/font.css +1 -27
  242. package/dist/token/core/css-utils/spacing.css +1 -244
  243. package/dist/token/core/css-utils/utils.css +0 -505
  244. package/dist/{useDrilldown-DwzT0Fse.js → useDrilldown-6SfknQ2s.js} +3 -3
  245. package/dist/{useDrilldown-DwzT0Fse.js.map → useDrilldown-6SfknQ2s.js.map} +1 -1
  246. package/dist/{useInitialFocus-BUxEDMEG.js → useInitialFocus-BIvXK1Rp.js} +2 -2
  247. package/dist/{useInitialFocus-BUxEDMEG.js.map → useInitialFocus-BIvXK1Rp.js.map} +1 -1
  248. package/dist/{usePopoverTransitionStates-CDXCdyKa.js → usePopoverTransitionStates-B1opfxxn.js} +1 -2
  249. package/dist/{usePopoverTransitionStates-CDXCdyKa.js.map → usePopoverTransitionStates-B1opfxxn.js.map} +1 -1
  250. package/dist/{useToggleSelection-CAwGOeXk.js → useToggleSelection-odFvSS5t.js} +2 -2
  251. package/dist/{useToggleSelection-CAwGOeXk.js.map → useToggleSelection-odFvSS5t.js.map} +1 -1
  252. package/package.json +18 -3
  253. package/dist/DataTable-BDXdCF7J.js.map +0 -1
  254. package/dist/InteractiveCard-CnW0m_F-.js +0 -87
  255. package/dist/InteractiveCard-CnW0m_F-.js.map +0 -1
  256. package/dist/NumberField-DJbdyatF.js.map +0 -1
  257. package/dist/ToolbarButtonToggle--2Ka05N8.js.map +0 -1
  258. package/dist/Tooltip-BlStOXN3.js.map +0 -1
  259. package/dist/getKeyboardFocusableElements-QqcABz0D.js +0 -12
  260. package/dist/getKeyboardFocusableElements-QqcABz0D.js.map +0 -1
  261. package/dist/index-ByMdotWU.js +0 -107
  262. package/dist/index-ByMdotWU.js.map +0 -1
  263. /package/dist/{index2.css → Toolbar2.css} +0 -0
@@ -0,0 +1,780 @@
1
+ import { jsx, jsxs } from 'react/jsx-runtime';
2
+ import { createContext, useContext, useId, useRef, useCallback, useEffect, forwardRef, useState, useMemo } from 'react';
3
+ import { B as Button } from './Button-Bnt8XUI7.js';
4
+ import { T as Tooltip } from './Tooltip-lBmgi5ZB.js';
5
+ import { g as getKeyboardFocusableElements } from './getKeyboardFocusableElements-B_U9rt6y.js';
6
+ import { u as useIntersectionObserver } from './useIntersectionObserver-BEmMDO3P.js';
7
+ import { c as cx } from './index-De1g9FRV.js';
8
+ import { useTrackingId } from './useTrackingId.js';
9
+ import { B as ButtonToggle } from './ButtonToggle-Ct9_5bhC.js';
10
+ import { B as ButtonLink } from './ButtonLink-j3h_wRNi.js';
11
+ import { S as SvgArrowDropDown } from './arrow_drop_down-ChAdBDux.js';
12
+ import { L as Listbox } from './Listbox-BBrsMfO3.js';
13
+ import { P as Popover } from './AiMark-DiMotaq3.js';
14
+ import { F as Flex } from './Flex-DOUtHiPi.js';
15
+ import { S as SvgMoreHoriz } from './more_horiz-DJgdQiy0.js';
16
+ import { S as SvgMoreVert } from './more_vert-C_lJSyxt.js';
17
+ import { u as useLayoutPropsUtil } from './useLayoutPropsUtil-CB_zHDbW.js';
18
+ import { u as useMergeRefs } from './useMergeRefs-Dfmtq9cI.js';
19
+
20
+ import './Toolbar2.css';const OverflowItemContext = createContext({
21
+ isInOverflowMenu: false
22
+ });
23
+ const useOverFlowItemContext = () => useContext(OverflowItemContext);
24
+
25
+ const ToolbarContext = createContext({
26
+ overflowItems: [],
27
+ addItem: () => {
28
+ return;
29
+ },
30
+ removeItem: () => {
31
+ return;
32
+ },
33
+ toolbarRef: { current: null },
34
+ orderedIds: [],
35
+ overflow: "wrap",
36
+ size: "xsmall"
37
+ });
38
+ const useToolbarSize = () => useContext(ToolbarContext).size;
39
+
40
+ function getToolbarElements(toolbarElement) {
41
+ const toolbarContent = toolbarElement.querySelector(
42
+ '[data-anv="toolbar-content"]'
43
+ );
44
+ const mainItems = getKeyboardFocusableElements(toolbarContent).filter(
45
+ (item) => {
46
+ const isVisible = !item.closest('[aria-hidden="true"]');
47
+ const isNotInMenuContent = !item.closest('[data-anv="menu-content"]');
48
+ const isNotInPopoverContent = !item.closest(
49
+ '[data-anv="popover-content"]'
50
+ );
51
+ return isVisible && isNotInMenuContent && isNotInPopoverContent;
52
+ }
53
+ );
54
+ const overflowTrigger = toolbarElement.querySelector(
55
+ '[data-anv="toolbar-overflow-trigger"]'
56
+ );
57
+ return overflowTrigger ? [...mainItems, overflowTrigger] : mainItems;
58
+ }
59
+ function updateToolbarItemsTabIndex(toolbarElement, activeItem) {
60
+ if (!toolbarElement) return;
61
+ const items = getToolbarElements(toolbarElement);
62
+ if (!items.length) return;
63
+ let activeIndex = 0;
64
+ if (typeof activeItem === "number") {
65
+ activeIndex = Math.max(0, Math.min(activeItem, items.length - 1));
66
+ } else if (activeItem instanceof Element) {
67
+ const foundIndex = items.indexOf(activeItem);
68
+ if (foundIndex !== -1) {
69
+ activeIndex = foundIndex;
70
+ }
71
+ }
72
+ items.forEach((item, index) => {
73
+ item.setAttribute("tabindex", index === activeIndex ? "0" : "-1");
74
+ });
75
+ return items[activeIndex];
76
+ }
77
+ function handleToolbarKeyDown(event, toolbarElement) {
78
+ if (!toolbarElement || event.altKey || event.ctrlKey || event.metaKey) return;
79
+ const items = getToolbarElements(toolbarElement);
80
+ if (!items.length) return;
81
+ const activeElement = event.target;
82
+ if (!toolbarElement.contains(activeElement)) return;
83
+ const activeItem = items.find(
84
+ (item) => item === activeElement || Array.from(item.children).some((child) => child === activeElement)
85
+ );
86
+ const activeIndex = activeItem ? items.indexOf(activeItem) : -1;
87
+ if (activeIndex === -1) return;
88
+ let nextIndex = activeIndex;
89
+ const isVertical = toolbarElement.getAttribute("aria-orientation") === "vertical";
90
+ switch (event.key) {
91
+ case "ArrowLeft":
92
+ case "ArrowUp":
93
+ event.preventDefault();
94
+ if (isVertical && event.key === "ArrowUp" || !isVertical && event.key === "ArrowLeft") {
95
+ nextIndex = activeIndex <= 0 ? items.length - 1 : activeIndex - 1;
96
+ }
97
+ break;
98
+ case "ArrowRight":
99
+ case "ArrowDown":
100
+ event.preventDefault();
101
+ if (isVertical && event.key === "ArrowDown" || !isVertical && event.key === "ArrowRight") {
102
+ nextIndex = activeIndex >= items.length - 1 ? 0 : activeIndex + 1;
103
+ }
104
+ break;
105
+ case "Home":
106
+ event.preventDefault();
107
+ nextIndex = 0;
108
+ break;
109
+ case "End":
110
+ event.preventDefault();
111
+ nextIndex = items.length - 1;
112
+ break;
113
+ default:
114
+ return;
115
+ }
116
+ updateToolbarItemsTabIndex(toolbarElement, nextIndex);
117
+ items[nextIndex]?.focus();
118
+ }
119
+ const handleMenuKeyboardNavigation = (event) => {
120
+ const menuItems = Array.from(
121
+ event.currentTarget.querySelectorAll('[role="menuitem"]')
122
+ ).map((menuItem) => {
123
+ return getKeyboardFocusableElements(menuItem)[0] || menuItem;
124
+ });
125
+ if (!menuItems.length) return;
126
+ const currentIndex = menuItems.indexOf(document.activeElement);
127
+ if (currentIndex === -1) return;
128
+ let nextIndex = currentIndex;
129
+ const isModifierKey = event.altKey || event.ctrlKey || event.metaKey;
130
+ if (isModifierKey) return;
131
+ switch (event.key) {
132
+ case "ArrowDown":
133
+ case "ArrowUp": {
134
+ event.preventDefault();
135
+ const direction = event.key === "ArrowDown" ? 1 : -1;
136
+ nextIndex = (currentIndex + direction + menuItems.length) % menuItems.length;
137
+ break;
138
+ }
139
+ case "Home":
140
+ event.preventDefault();
141
+ nextIndex = 0;
142
+ break;
143
+ case "End":
144
+ event.preventDefault();
145
+ nextIndex = menuItems.length - 1;
146
+ break;
147
+ default:
148
+ return;
149
+ }
150
+ menuItems[nextIndex]?.focus();
151
+ };
152
+
153
+ const toolbar = "_toolbar_8m7of_1";
154
+ const styles = {
155
+ toolbar: toolbar,
156
+ "toolbar-content": "_toolbar-content_8m7of_5",
157
+ "toolbar-overflow-content": "_toolbar-overflow-content_8m7of_9",
158
+ "toolbar-button-item": "_toolbar-button-item_8m7of_17",
159
+ "toolbar-button-toggle-item": "_toolbar-button-toggle-item_8m7of_26",
160
+ "toolbar-overflow-trigger": "_toolbar-overflow-trigger_8m7of_49",
161
+ "toolbar-item": "_toolbar-item_8m7of_60",
162
+ "overflow-collapse": "_overflow-collapse_8m7of_66"
163
+ };
164
+
165
+ const ToolbarItemWrapper = ({
166
+ item,
167
+ children
168
+ }) => {
169
+ const { addItem, removeItem, toolbarRef, overflow } = useContext(ToolbarContext);
170
+ const itemId = useId();
171
+ const elementRef = useRef(null);
172
+ const prevIntersectingRef = useRef(true);
173
+ const isCollapseMode = overflow === "collapse";
174
+ const handleVisibilityChange = useCallback(
175
+ (isVisible) => {
176
+ if (!isCollapseMode || prevIntersectingRef.current === isVisible) return;
177
+ const itemWithId = { ...item, id: itemId };
178
+ if (isVisible) {
179
+ removeItem(itemWithId);
180
+ } else {
181
+ addItem(itemWithId);
182
+ }
183
+ prevIntersectingRef.current = isVisible;
184
+ },
185
+ [isCollapseMode, item, itemId, addItem, removeItem]
186
+ );
187
+ const { isIntersecting, ref } = useIntersectionObserver({
188
+ root: isCollapseMode ? toolbarRef.current : null,
189
+ threshold: 1,
190
+ initialIsIntersecting: false,
191
+ onChange: handleVisibilityChange
192
+ });
193
+ const setRefCallback = useCallback(
194
+ (node) => {
195
+ elementRef.current = node;
196
+ if (isCollapseMode) {
197
+ ref(node);
198
+ }
199
+ },
200
+ [ref, isCollapseMode]
201
+ );
202
+ const handleFocusOrClick = useCallback(() => {
203
+ if (!toolbarRef.current || !elementRef.current) return;
204
+ const currentElement = elementRef.current.querySelector("button, a, input");
205
+ if (!currentElement) return;
206
+ updateToolbarItemsTabIndex(toolbarRef.current, currentElement);
207
+ }, [toolbarRef]);
208
+ useEffect(() => {
209
+ const interactiveEl = elementRef.current?.querySelector("button, a, input");
210
+ if (!interactiveEl) return;
211
+ interactiveEl.addEventListener("focus", handleFocusOrClick);
212
+ interactiveEl.addEventListener("click", handleFocusOrClick);
213
+ return () => {
214
+ interactiveEl.removeEventListener("focus", handleFocusOrClick);
215
+ interactiveEl.removeEventListener("click", handleFocusOrClick);
216
+ };
217
+ }, [handleFocusOrClick]);
218
+ useEffect(() => {
219
+ if (isCollapseMode) {
220
+ prevIntersectingRef.current = true;
221
+ }
222
+ }, [isCollapseMode]);
223
+ const isHidden = isCollapseMode && !isIntersecting;
224
+ return /* @__PURE__ */ jsx(
225
+ "div",
226
+ {
227
+ ref: setRefCallback,
228
+ className: styles["toolbar-item"],
229
+ style: { visibility: isHidden ? "hidden" : "visible" },
230
+ "aria-hidden": isHidden,
231
+ ...{ inert: isHidden ? "" : void 0 },
232
+ "data-id": itemId,
233
+ "data-anv": "toolbar-item",
234
+ children
235
+ }
236
+ );
237
+ };
238
+
239
+ const ToolbarButton = forwardRef(
240
+ (props, ref) => {
241
+ const { appearance = "ghost", className, children, ...rest } = props;
242
+ const { isInOverflowMenu = false } = useOverFlowItemContext?.() || {};
243
+ const size = useToolbarSize();
244
+ const trackingId = useTrackingId({
245
+ name: "ToolbarButton",
246
+ data: {
247
+ disabled: props.disabled,
248
+ "aria-label": props["aria-label"],
249
+ children: props.children
250
+ },
251
+ hasOverride: !!props["data-tracking-id"]
252
+ });
253
+ const buttonClassNames = cx(className, styles["toolbar-button-item"]);
254
+ const item = children ? /* @__PURE__ */ jsx(
255
+ Button,
256
+ {
257
+ ref,
258
+ "data-tracking-id": trackingId,
259
+ appearance,
260
+ size,
261
+ "data-anv": "toolbar-button",
262
+ className: buttonClassNames,
263
+ ...rest,
264
+ children
265
+ }
266
+ ) : /* @__PURE__ */ jsxs(Tooltip, { children: [
267
+ /* @__PURE__ */ jsx(Tooltip.Trigger, { children: /* @__PURE__ */ jsx(
268
+ Button,
269
+ {
270
+ ref,
271
+ "data-tracking-id": trackingId,
272
+ appearance,
273
+ size,
274
+ "data-anv": "toolbar-button",
275
+ className: buttonClassNames,
276
+ ...rest
277
+ }
278
+ ) }),
279
+ /* @__PURE__ */ jsx(Tooltip.Content, { children: rest["aria-label"] })
280
+ ] });
281
+ if (isInOverflowMenu) {
282
+ return item;
283
+ }
284
+ return /* @__PURE__ */ jsx(ToolbarItemWrapper, { item: { itemProps: props, itemType: "button" }, children: item });
285
+ }
286
+ );
287
+ ToolbarButton.displayName = "ToolbarButton";
288
+
289
+ const ToolbarButtonToggle = forwardRef((props, _ref) => {
290
+ const { className, children, ...rest } = props;
291
+ const { isInOverflowMenu = false } = useOverFlowItemContext?.() || {};
292
+ const size = useToolbarSize();
293
+ const trackingId = useTrackingId({
294
+ name: "ToolbarButtonToggle",
295
+ data: {
296
+ checked: props.checked,
297
+ disabled: props.disabled,
298
+ "aria-label": props["aria-label"],
299
+ children: props.children
300
+ },
301
+ hasOverride: !!props["data-tracking-id"]
302
+ });
303
+ const buttonToggleClassNames = cx(
304
+ className,
305
+ styles["toolbar-button-item"],
306
+ styles["toolbar-button-toggle-item"]
307
+ );
308
+ const item = children ? /* @__PURE__ */ jsx(
309
+ ButtonToggle,
310
+ {
311
+ "data-tracking-id": trackingId,
312
+ size,
313
+ "data-anv": "toolbar-button-toggle",
314
+ className: buttonToggleClassNames,
315
+ ...rest,
316
+ children
317
+ }
318
+ ) : /* @__PURE__ */ jsxs(Tooltip, { children: [
319
+ /* @__PURE__ */ jsx(Tooltip.Trigger, { children: /* @__PURE__ */ jsx(
320
+ ButtonToggle,
321
+ {
322
+ "data-tracking-id": trackingId,
323
+ size,
324
+ "data-anv": "toolbar-button-toggle",
325
+ className: buttonToggleClassNames,
326
+ ...rest
327
+ }
328
+ ) }),
329
+ /* @__PURE__ */ jsx(Tooltip.Content, { children: rest["aria-label"] })
330
+ ] });
331
+ if (isInOverflowMenu) {
332
+ return item;
333
+ }
334
+ return /* @__PURE__ */ jsx(ToolbarItemWrapper, { item: { itemProps: props, itemType: "buttonToggle" }, children: item });
335
+ });
336
+ ToolbarButtonToggle.displayName = "ToolbarButtonToggle";
337
+
338
+ const ToolbarButtonLink = forwardRef((props, _ref) => {
339
+ const { appearance = "ghost", className, children, icon, ...rest } = props;
340
+ const { isInOverflowMenu = false } = useOverFlowItemContext?.() || {};
341
+ const size = useToolbarSize();
342
+ const trackingId = useTrackingId({
343
+ name: "ToolbarButtonLink",
344
+ data: {
345
+ href: props.href,
346
+ disabled: props.disabled,
347
+ "aria-label": props["aria-label"],
348
+ children: props.children,
349
+ target: props.target
350
+ },
351
+ hasOverride: !!props["data-tracking-id"]
352
+ });
353
+ const buttonLinkClassNames = cx(className, styles["toolbar-button-item"]);
354
+ const item = children ? /* @__PURE__ */ jsx(
355
+ ButtonLink,
356
+ {
357
+ "data-tracking-id": trackingId,
358
+ appearance,
359
+ size,
360
+ icon,
361
+ "data-anv": "toolbar-button-link",
362
+ className: buttonLinkClassNames,
363
+ ...rest,
364
+ children
365
+ }
366
+ ) : /* @__PURE__ */ jsxs(Tooltip, { children: [
367
+ /* @__PURE__ */ jsx(Tooltip.Trigger, { children: /* @__PURE__ */ jsx(
368
+ ButtonLink,
369
+ {
370
+ "data-tracking-id": trackingId,
371
+ appearance,
372
+ size,
373
+ icon,
374
+ "data-anv": "toolbar-button-link",
375
+ className: buttonLinkClassNames,
376
+ ...rest,
377
+ children
378
+ }
379
+ ) }),
380
+ /* @__PURE__ */ jsx(Tooltip.Content, { children: rest["aria-label"] })
381
+ ] });
382
+ if (isInOverflowMenu) {
383
+ return item;
384
+ }
385
+ return /* @__PURE__ */ jsx(ToolbarItemWrapper, { item: { itemProps: props, itemType: "buttonLink" }, children: item });
386
+ });
387
+ ToolbarButtonLink.displayName = "ToolbarButtonLink";
388
+
389
+ const ToolbarSelect = forwardRef(
390
+ (props, _ref) => {
391
+ const {
392
+ appearance = "ghost",
393
+ onChange,
394
+ selected: selectedItemId,
395
+ accessibleLabel,
396
+ className,
397
+ items,
398
+ ...rest
399
+ } = props;
400
+ const selectId = useId();
401
+ const [isPopoverOpen, setIsPopoverOpen] = useState(false);
402
+ const defaultId = items.length > 0 ? items[0].id : "";
403
+ const [internalSelectedId, setInternalSelectedId] = useState(defaultId);
404
+ const selectedId = selectedItemId ?? internalSelectedId;
405
+ const selectedItem = items.find((item2) => item2.id === selectedId) || items.find((item2) => item2.id === defaultId);
406
+ useEffect(() => {
407
+ if (!selectedItemId && items.length > 0 && !items.some((item2) => item2.id === internalSelectedId)) {
408
+ setInternalSelectedId(items[0].id);
409
+ }
410
+ }, [items, selectedItemId, internalSelectedId]);
411
+ const handleSelectionChange = (selected) => {
412
+ if (selected?.id) {
413
+ if (selectedItemId === void 0) {
414
+ setInternalSelectedId(selected.id);
415
+ }
416
+ onChange?.(selected.id);
417
+ setIsPopoverOpen(false);
418
+ }
419
+ };
420
+ const { isInOverflowMenu = false } = useOverFlowItemContext?.() || {};
421
+ const toolbarSize = useToolbarSize();
422
+ const trackingId = useTrackingId({
423
+ name: "ToolbarSelect",
424
+ data: {
425
+ selected: props.selected,
426
+ disabled: props.disabled,
427
+ "aria-label": props["aria-label"],
428
+ items: props.items
429
+ },
430
+ hasOverride: !!props["data-tracking-id"]
431
+ });
432
+ const buttonClassNames = cx(className, styles["toolbar-button-item"]);
433
+ const item = /* @__PURE__ */ jsxs(
434
+ Popover,
435
+ {
436
+ noPadding: true,
437
+ open: isPopoverOpen,
438
+ onClickOutside: () => {
439
+ setIsPopoverOpen(false);
440
+ },
441
+ onClose: () => {
442
+ setIsPopoverOpen(false);
443
+ },
444
+ children: [
445
+ /* @__PURE__ */ jsx(
446
+ Popover.Button,
447
+ {
448
+ "data-tracking-id": trackingId,
449
+ appearance,
450
+ size: toolbarSize,
451
+ icon: { after: SvgArrowDropDown },
452
+ className: buttonClassNames,
453
+ id: selectId,
454
+ "data-anv": "toolbar-select",
455
+ onClick: () => {
456
+ setIsPopoverOpen(!isPopoverOpen);
457
+ },
458
+ ...rest,
459
+ children: selectedItem?.label
460
+ }
461
+ ),
462
+ /* @__PURE__ */ jsx(
463
+ Popover.Content,
464
+ {
465
+ className: styles["toolbar-select-content"],
466
+ "aria-label": accessibleLabel,
467
+ children: /* @__PURE__ */ jsx(
468
+ Listbox,
469
+ {
470
+ selected: selectedItem,
471
+ onSelectionChange: handleSelectionChange,
472
+ items,
473
+ "aria-labelledby": selectId,
474
+ disableAutoSelectOnFocus: true,
475
+ children: ({ items: items2 }) => items2.map((item2) => /* @__PURE__ */ jsx(Listbox.Option, { item: item2, children: item2.label }, item2.label))
476
+ }
477
+ )
478
+ }
479
+ )
480
+ ]
481
+ }
482
+ );
483
+ if (isInOverflowMenu) {
484
+ return item;
485
+ }
486
+ return /* @__PURE__ */ jsx(ToolbarItemWrapper, { item: { itemProps: props, itemType: "select" }, children: item });
487
+ }
488
+ );
489
+ ToolbarSelect.displayName = "ToolbarSelect";
490
+
491
+ const OverflowItem = ({ itemType, itemProps }) => {
492
+ switch (itemType) {
493
+ case "button":
494
+ return /* @__PURE__ */ jsx(ToolbarButton, { ...itemProps });
495
+ case "buttonToggle":
496
+ return /* @__PURE__ */ jsx(ToolbarButtonToggle, { ...itemProps });
497
+ case "buttonLink":
498
+ return /* @__PURE__ */ jsx(ToolbarButtonLink, { ...itemProps });
499
+ case "select":
500
+ return /* @__PURE__ */ jsx(ToolbarSelect, { ...itemProps });
501
+ default:
502
+ return null;
503
+ }
504
+ };
505
+ const ToolbarOverflowMenu = ({
506
+ additionalItems,
507
+ direction
508
+ }) => {
509
+ const { overflowItems, orderedIds } = useContext(ToolbarContext);
510
+ const menuTriggerId = useId();
511
+ const size = useToolbarSize();
512
+ const orderedItems = useMemo(() => {
513
+ const allElements = orderedIds?.map((id) => {
514
+ return overflowItems.find((item) => item.id === id);
515
+ });
516
+ return allElements?.filter((item) => item !== void 0) || [];
517
+ }, [orderedIds, overflowItems]);
518
+ const popoverButtonClassNames = cx(
519
+ styles["toolbar-button-item"],
520
+ styles["toolbar-overflow-trigger"]
521
+ );
522
+ const overflowIcon = direction === "horizontal" ? SvgMoreHoriz : SvgMoreVert;
523
+ return /* @__PURE__ */ jsxs(Popover, { noPadding: true, children: [
524
+ /* @__PURE__ */ jsx(
525
+ Popover.Button,
526
+ {
527
+ size,
528
+ appearance: "ghost",
529
+ id: menuTriggerId,
530
+ className: popoverButtonClassNames,
531
+ "data-anv": "toolbar-overflow-trigger",
532
+ "aria-label": "Additional toolbar options",
533
+ icon: overflowIcon
534
+ }
535
+ ),
536
+ /* @__PURE__ */ jsx(Popover.Content, { children: /* @__PURE__ */ jsx(OverflowItemContext.Provider, { value: { isInOverflowMenu: true }, children: /* @__PURE__ */ jsxs(
537
+ "ul",
538
+ {
539
+ role: "menu",
540
+ className: styles["toolbar-overflow-content"],
541
+ "data-anv": "toolbar-overflow-menu",
542
+ "aria-labelledby": menuTriggerId,
543
+ onKeyDown: handleMenuKeyboardNavigation,
544
+ children: [
545
+ orderedItems.map((item) => {
546
+ const { itemType, itemProps, id } = item;
547
+ return /* @__PURE__ */ jsx(
548
+ "li",
549
+ {
550
+ role: "menuitem",
551
+ "data-anv": "toolbar-overflow-item",
552
+ children: /* @__PURE__ */ jsx(
553
+ OverflowItem,
554
+ {
555
+ itemType,
556
+ itemProps,
557
+ id
558
+ }
559
+ )
560
+ },
561
+ `${itemType}-${id}`
562
+ );
563
+ }),
564
+ additionalItems?.map((item, index) => /* @__PURE__ */ jsx(
565
+ "li",
566
+ {
567
+ role: "menuitem",
568
+ "data-anv": "toolbar-overflow-item",
569
+ children: item
570
+ },
571
+ `additional-item-${index}`
572
+ ))
573
+ ]
574
+ }
575
+ ) }) })
576
+ ] });
577
+ };
578
+
579
+ const Toolbar = Object.assign(
580
+ forwardRef(function ToolbarInner(props, ref) {
581
+ const { layoutStyles, componentProps } = useLayoutPropsUtil(props);
582
+ const {
583
+ associatedContent,
584
+ className,
585
+ children,
586
+ style,
587
+ direction = "horizontal",
588
+ overflow = "wrap",
589
+ onKeyDown,
590
+ additionalItems,
591
+ size = "xsmall",
592
+ ...rest
593
+ } = componentProps;
594
+ const [overflowItems, setOverflowItems] = useState([]);
595
+ const toolbarItemsRef = useRef(null);
596
+ const toolbarRef = useRef(null);
597
+ const [orderedIds, setOrderedIds] = useState([]);
598
+ useEffect(() => {
599
+ const newOrderedIds = Array.from(
600
+ toolbarItemsRef.current?.querySelectorAll("[data-id]") || []
601
+ ).map((el) => {
602
+ return el.getAttribute("data-id");
603
+ });
604
+ setOrderedIds(newOrderedIds);
605
+ }, [children]);
606
+ const addItem = useCallback((item) => {
607
+ setOverflowItems((prev) => [...prev, item]);
608
+ }, []);
609
+ const removeItem = useCallback((item) => {
610
+ setOverflowItems(
611
+ (prev) => prev.filter((component) => component.id !== item.id)
612
+ );
613
+ }, []);
614
+ useEffect(() => {
615
+ if (toolbarRef.current) {
616
+ updateToolbarItemsTabIndex(toolbarRef.current);
617
+ }
618
+ }, [children]);
619
+ const handleKeyDown = useCallback(
620
+ (event) => {
621
+ if (toolbarRef.current) {
622
+ handleToolbarKeyDown(event, toolbarRef.current);
623
+ }
624
+ onKeyDown?.(event);
625
+ },
626
+ [onKeyDown]
627
+ );
628
+ const showOverflowMenu = overflow === "collapse" && overflowItems.length > 0 || !!additionalItems;
629
+ const value = useMemo(
630
+ () => ({
631
+ overflowItems,
632
+ addItem,
633
+ removeItem,
634
+ toolbarRef,
635
+ orderedIds,
636
+ overflow,
637
+ size
638
+ }),
639
+ [
640
+ overflowItems,
641
+ addItem,
642
+ removeItem,
643
+ toolbarRef,
644
+ orderedIds,
645
+ overflow,
646
+ size
647
+ ]
648
+ );
649
+ const styleCombined = {
650
+ ...style,
651
+ ...layoutStyles
652
+ };
653
+ const toolbarClassNames = cx(styles["toolbar"], className);
654
+ const toolbarContentClassNames = cx(styles["toolbar-content"], {
655
+ [styles[`overflow-${overflow}`]]: overflow
656
+ });
657
+ return /* @__PURE__ */ jsx(ToolbarContext.Provider, { value, children: /* @__PURE__ */ jsxs(
658
+ Flex,
659
+ {
660
+ direction: direction === "horizontal" ? "row" : "column",
661
+ wrap: overflow === "wrap" ? "wrap" : "nowrap",
662
+ alignItems: "center",
663
+ className: toolbarClassNames,
664
+ style: styleCombined,
665
+ ref: useMergeRefs([toolbarRef, ref]),
666
+ role: "toolbar",
667
+ "data-anv": "toolbar",
668
+ "aria-orientation": direction,
669
+ "aria-label": `Toolbar for ${associatedContent}. Use arrow keys to navigate through toolbar controls.`,
670
+ onKeyDown: handleKeyDown,
671
+ ...rest,
672
+ children: [
673
+ /* @__PURE__ */ jsx(
674
+ Flex,
675
+ {
676
+ ref: useMergeRefs([toolbarItemsRef, ref]),
677
+ className: toolbarContentClassNames,
678
+ direction: direction === "horizontal" ? "row" : "column",
679
+ wrap: overflow === "wrap" ? "wrap" : "nowrap",
680
+ alignItems: "center",
681
+ grow: 1,
682
+ "data-anv": "toolbar-content",
683
+ children
684
+ }
685
+ ),
686
+ showOverflowMenu && /* @__PURE__ */ jsx(
687
+ ToolbarOverflowMenu,
688
+ {
689
+ direction,
690
+ additionalItems
691
+ }
692
+ )
693
+ ]
694
+ }
695
+ ) });
696
+ }),
697
+ {
698
+ /**
699
+ * ToolbarButton component for standard clickable actions within a toolbar with anvil2 tracking.
700
+ *
701
+ * Features:
702
+ * - Designed specifically for toolbar integration
703
+ * - Consistent styling with other toolbar items
704
+ * - Automatic tooltip for icon-only buttons
705
+ * - Overflow menu support
706
+ * - Accessibility enforcement for aria-labels
707
+ * - Ghost and primary appearance options
708
+ * - Automatic tracking ID generation for analytics
709
+ *
710
+ * @example
711
+ * <Toolbar.Button icon={BoldIcon} aria-label="Bold text" />
712
+ *
713
+ * @example
714
+ * <Toolbar.Button appearance="primary">
715
+ * Save
716
+ * </Toolbar.Button>
717
+ */
718
+ Button: ToolbarButton,
719
+ /**
720
+ * ToolbarButtonToggle component for toggleable actions within a toolbar with anvil2 tracking.
721
+ *
722
+ * Features:
723
+ * - Toggle state management
724
+ * - Designed specifically for toolbar integration
725
+ * - Consistent styling with other toolbar items
726
+ * - Overflow menu support
727
+ * - Accessibility enforcement for aria-labels
728
+ * - Ghost and primary appearance options
729
+ * - Automatic tracking ID generation for analytics
730
+ *
731
+ * @example
732
+ * <Toolbar.ButtonToggle icon={BoldIcon} aria-label="Bold" checked={isBold} />
733
+ */
734
+ ButtonToggle: ToolbarButtonToggle,
735
+ /**
736
+ * ToolbarButtonLink component for link actions within a toolbar with anvil2 tracking.
737
+ *
738
+ * Features:
739
+ * - Link functionality with href support
740
+ * - Designed specifically for toolbar integration
741
+ * - Consistent styling with other toolbar items
742
+ * - Overflow menu support
743
+ * - Accessibility enforcement for aria-labels
744
+ * - Ghost and primary appearance options
745
+ * - Automatic tracking ID generation for analytics
746
+ *
747
+ * @example
748
+ * <Toolbar.ButtonLink href="/help">
749
+ * Help
750
+ * </Toolbar.ButtonLink>
751
+ */
752
+ ButtonLink: ToolbarButtonLink,
753
+ /**
754
+ * ToolbarSelect component provides a dropdown selector within a toolbar with anvil2 tracking.
755
+ *
756
+ * Features:
757
+ * - Dropdown menu with selectable options
758
+ * - Controlled and uncontrolled usage patterns
759
+ * - Automatic overflow menu integration
760
+ * - Accessibility support with proper ARIA labels
761
+ * - Ghost and primary appearance options
762
+ * - Dropdown arrow icon indicator
763
+ * - Listbox integration for keyboard navigation
764
+ * - Automatic tracking ID generation for analytics
765
+ *
766
+ * @example
767
+ * <Toolbar.Select
768
+ * items={fontOptions}
769
+ * selected="arial"
770
+ * accessibleLabel="Font family"
771
+ * onChange={(id) => setFont(id)}
772
+ * />
773
+ */
774
+ Select: ToolbarSelect
775
+ }
776
+ );
777
+ Toolbar.displayName = "Toolbar";
778
+
779
+ export { Toolbar as T };
780
+ //# sourceMappingURL=Toolbar-QYRQv45Y.js.map