@servicetitan/anvil2 3.17.0 → 3.18.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 (302) hide show
  1. package/CHANGELOG.md +51 -0
  2. package/dist/{AiMark-CYXbKuCA.js → AiMark-Ca7WmL-9.js} +113 -32
  3. package/dist/AiMark-Ca7WmL-9.js.map +1 -0
  4. package/dist/AiMark.js +1 -1
  5. package/dist/{Alert-CYpl0czJ.js → Alert-BOqBFMUV.js} +2 -2
  6. package/dist/{Alert-CYpl0czJ.js.map → Alert-BOqBFMUV.js.map} +1 -1
  7. package/dist/Alert.js +1 -1
  8. package/dist/{AnvilProvider-DagOuc9c.js → AnvilProvider-BVTxXzoS.js} +3 -3
  9. package/dist/{AnvilProvider-DagOuc9c.js.map → AnvilProvider-BVTxXzoS.js.map} +1 -1
  10. package/dist/AnvilProvider.js +1 -1
  11. package/dist/{Breadcrumbs-C0CXs9Ma.js → Breadcrumbs-1MCqy-gU.js} +2 -2
  12. package/dist/{Breadcrumbs-C0CXs9Ma.js.map → Breadcrumbs-1MCqy-gU.js.map} +1 -1
  13. package/dist/Breadcrumbs.js +1 -1
  14. package/dist/{Calendar-BAIyDHX9.js → Calendar-BcsuV4Xv.js} +2 -2
  15. package/dist/{Calendar-BAIyDHX9.js.map → Calendar-BcsuV4Xv.js.map} +1 -1
  16. package/dist/{Calendar-C_NPqjx3.js → Calendar-oBRbQqnG.js} +2 -2
  17. package/dist/{Calendar-C_NPqjx3.js.map → Calendar-oBRbQqnG.js.map} +1 -1
  18. package/dist/Calendar.js +2 -2
  19. package/dist/{Checkbox-4Ow8rCbD.js → Checkbox-BCaUzwF_.js} +2 -2
  20. package/dist/{Checkbox-4Ow8rCbD.js.map → Checkbox-BCaUzwF_.js.map} +1 -1
  21. package/dist/{Checkbox-f1vutjn0.js → Checkbox-BocPrjKC.js} +4 -4
  22. package/dist/{Checkbox-f1vutjn0.js.map → Checkbox-BocPrjKC.js.map} +1 -1
  23. package/dist/Checkbox.js +1 -1
  24. package/dist/{Chip-AIF0WiNS.js → Chip-BWqgUX71.js} +11 -24
  25. package/dist/Chip-BWqgUX71.js.map +1 -0
  26. package/dist/Chip.js +1 -1
  27. package/dist/Combobox.js +1 -1
  28. package/dist/{DataTableEditColumnsDrawer-DRgJgso9.js → DataTableEditColumnsDrawer-C7OHRsJU.js} +101 -42
  29. package/dist/DataTableEditColumnsDrawer-C7OHRsJU.js.map +1 -0
  30. package/dist/DataTableEditColumnsDrawer.css +49 -33
  31. package/dist/{DateFieldRange-D9PA985Z.js → DateFieldRange-BPcsS6TW.js} +5 -5
  32. package/dist/{DateFieldRange-D9PA985Z.js.map → DateFieldRange-BPcsS6TW.js.map} +1 -1
  33. package/dist/DateFieldRange.js +1 -1
  34. package/dist/{DateFieldSingle-CMLojOb3.js → DateFieldSingle-BRMhe0OM.js} +5 -5
  35. package/dist/{DateFieldSingle-CMLojOb3.js.map → DateFieldSingle-BRMhe0OM.js.map} +1 -1
  36. package/dist/DateFieldSingle.js +1 -1
  37. package/dist/{DateFieldYearless-B5IyR75v.js → DateFieldYearless-NOgDKzrJ.js} +6 -6
  38. package/dist/{DateFieldYearless-B5IyR75v.js.map → DateFieldYearless-NOgDKzrJ.js.map} +1 -1
  39. package/dist/DateFieldYearless.js +1 -1
  40. package/dist/{DateFieldYearlessRange-8yXILjx7.js → DateFieldYearlessRange-ChvypgXC.js} +5 -5
  41. package/dist/{DateFieldYearlessRange-8yXILjx7.js.map → DateFieldYearlessRange-ChvypgXC.js.map} +1 -1
  42. package/dist/DateFieldYearlessRange.js +1 -1
  43. package/dist/{DaysOfTheWeek-Cxp5VdYK.js → DaysOfTheWeek-nYitIKnQ.js} +3 -3
  44. package/dist/{DaysOfTheWeek-Cxp5VdYK.js.map → DaysOfTheWeek-nYitIKnQ.js.map} +1 -1
  45. package/dist/DaysOfTheWeek.js +1 -1
  46. package/dist/Details-B2F3auTX.js +216 -0
  47. package/dist/Details-B2F3auTX.js.map +1 -0
  48. package/dist/{Details-BxqP-5vp.js → Details-DQ-_Mg4o.js} +3 -3
  49. package/dist/{Details-BxqP-5vp.js.map → Details-DQ-_Mg4o.js.map} +1 -1
  50. package/dist/Details.css +92 -68
  51. package/dist/Details.js +1 -1
  52. package/dist/Details2.css +137 -0
  53. package/dist/{Dialog-KDAJphrA.js → Dialog-BgWoV2on.js} +6 -4
  54. package/dist/Dialog-BgWoV2on.js.map +1 -0
  55. package/dist/Dialog.js +1 -1
  56. package/dist/{Drawer-C7E2NNnH.js → Drawer-BVBLtGn_.js} +7 -5
  57. package/dist/Drawer-BVBLtGn_.js.map +1 -0
  58. package/dist/Drawer.js +1 -1
  59. package/dist/DrillDown.js +1 -1
  60. package/dist/{EditCard-CutlsXfK.js → EditCard-hivZDPZh.js} +2 -2
  61. package/dist/{EditCard-CutlsXfK.js.map → EditCard-hivZDPZh.js.map} +1 -1
  62. package/dist/EditCard.js +1 -1
  63. package/dist/{FieldLabel-DYcUS3A4.js → FieldLabel-Cn559Brf.js} +8 -58
  64. package/dist/FieldLabel-Cn559Brf.js.map +1 -0
  65. package/dist/FieldLabel.css +1 -12
  66. package/dist/FieldLabel.js +1 -1
  67. package/dist/FieldMessage.js +1 -1
  68. package/dist/{FilterBar-DbDfZph-.js → FilterBar-COd38Ent.js} +5 -5
  69. package/dist/{FilterBar-DbDfZph-.js.map → FilterBar-COd38Ent.js.map} +1 -1
  70. package/dist/FilterBar.js +1 -1
  71. package/dist/InlineMarkdown-CL1tKR01.js +87 -0
  72. package/dist/InlineMarkdown-CL1tKR01.js.map +1 -0
  73. package/dist/InlineMarkdown.css +12 -0
  74. package/dist/{InputMask-BxdQc1ld.js → InputMask-DICWdeiF.js} +3 -3
  75. package/dist/{InputMask-BxdQc1ld.js.map → InputMask-DICWdeiF.js.map} +1 -1
  76. package/dist/InputMask.js +1 -1
  77. package/dist/{ListView-BVanVvBk.js → ListView-BeGBn5Vk.js} +2 -2
  78. package/dist/{ListView-BVanVvBk.js.map → ListView-BeGBn5Vk.js.map} +1 -1
  79. package/dist/ListView.js +1 -1
  80. package/dist/{Listbox-BR0YQIee.js → Listbox-n1CmJ2gh.js} +2 -2
  81. package/dist/{Listbox-BR0YQIee.js.map → Listbox-n1CmJ2gh.js.map} +1 -1
  82. package/dist/Listbox.js +1 -1
  83. package/dist/MultiSelectField.js +1 -1
  84. package/dist/{MultiSelectFieldSync-9253tott.js → MultiSelectFieldSync-CWsOdu-o.js} +44 -62
  85. package/dist/MultiSelectFieldSync-CWsOdu-o.js.map +1 -0
  86. package/dist/MultiSelectFieldSync.css +107 -69
  87. package/dist/MultiSelectMenu.js +1 -1
  88. package/dist/{MultiSelectMenuSync-BUJbWN2I.js → MultiSelectMenuSync-AVcf8ZUZ.js} +16 -29
  89. package/dist/MultiSelectMenuSync-AVcf8ZUZ.js.map +1 -0
  90. package/dist/{NumberField-DhxywJVp.js → NumberField-DjOvcCa1.js} +5 -5
  91. package/dist/{NumberField-DhxywJVp.js.map → NumberField-DjOvcCa1.js.map} +1 -1
  92. package/dist/NumberField.js +1 -1
  93. package/dist/{Page-D_KL2tdK.js → Page-_dh-JesM.js} +128 -80
  94. package/dist/Page-_dh-JesM.js.map +1 -0
  95. package/dist/Page.css +85 -80
  96. package/dist/Page.js +1 -1
  97. package/dist/{Pagination-DYpUtMha.js → Pagination-CsSpaTCs.js} +2 -2
  98. package/dist/{Pagination-DYpUtMha.js.map → Pagination-CsSpaTCs.js.map} +1 -1
  99. package/dist/Pagination.js +1 -1
  100. package/dist/{Popover-B2ix8Ji4.js → Popover-CEKl0WY3.js} +3 -3
  101. package/dist/{Popover-B2ix8Ji4.js.map → Popover-CEKl0WY3.js.map} +1 -1
  102. package/dist/Popover.js +1 -1
  103. package/dist/{ProgressBar-CjoOuJCi.js → ProgressBar-ubCKKewC.js} +3 -3
  104. package/dist/{ProgressBar-CjoOuJCi.js.map → ProgressBar-ubCKKewC.js.map} +1 -1
  105. package/dist/ProgressBar.js +1 -1
  106. package/dist/{Radio-Bz36_d0V.js → Radio-DkB6zFsS.js} +2 -2
  107. package/dist/{Radio-Bz36_d0V.js.map → Radio-DkB6zFsS.js.map} +1 -1
  108. package/dist/{Radio-DOD1d9Vw.js → Radio-q1Vp_ZQG.js} +4 -4
  109. package/dist/{Radio-DOD1d9Vw.js.map → Radio-q1Vp_ZQG.js.map} +1 -1
  110. package/dist/Radio.js +1 -1
  111. package/dist/{RichTextEditor-BORVXVDw.js → RichTextEditor-BHt6sWMA.js} +8 -8
  112. package/dist/{RichTextEditor-BORVXVDw.js.map → RichTextEditor-BHt6sWMA.js.map} +1 -1
  113. package/dist/RichTextEditor.js +1 -1
  114. package/dist/{SavedFiltersButton-vq_Kt4Qc.js → SavedFiltersButton-Cl58iHZe.js} +9 -9
  115. package/dist/{SavedFiltersButton-vq_Kt4Qc.js.map → SavedFiltersButton-Cl58iHZe.js.map} +1 -1
  116. package/dist/SavedFiltersButton.js +1 -1
  117. package/dist/{SearchField-ChoNtw8w.js → SearchField-Bk-Ltu4v.js} +2 -2
  118. package/dist/{SearchField-ChoNtw8w.js.map → SearchField-Bk-Ltu4v.js.map} +1 -1
  119. package/dist/{SearchField-DX8hZyo2.js → SearchField-INVftpNM.js} +2 -2
  120. package/dist/{SearchField-DX8hZyo2.js.map → SearchField-INVftpNM.js.map} +1 -1
  121. package/dist/SearchField.js +1 -1
  122. package/dist/{SelectCard-CJwetC1k.js → SelectCard-DeAUW1bL.js} +3 -3
  123. package/dist/{SelectCard-CJwetC1k.js.map → SelectCard-DeAUW1bL.js.map} +1 -1
  124. package/dist/SelectCard.js +1 -1
  125. package/dist/SelectField.js +1 -1
  126. package/dist/{SelectFieldLabel-BTKqybZm.js → SelectFieldLabel-DaXwIFZj.js} +2 -2
  127. package/dist/{SelectFieldLabel-BTKqybZm.js.map → SelectFieldLabel-DaXwIFZj.js.map} +1 -1
  128. package/dist/{SelectFieldSync-CoUi-BYw.js → SelectFieldSync-DpZL4wDo.js} +47 -68
  129. package/dist/SelectFieldSync-DpZL4wDo.js.map +1 -0
  130. package/dist/SelectMenu.js +1 -1
  131. package/dist/{SelectMenuSync-CvXx-6uU.js → SelectMenuSync-Klna2oqs.js} +16 -35
  132. package/dist/SelectMenuSync-Klna2oqs.js.map +1 -0
  133. package/dist/{SelectOptions-CGRUCyf4.js → SelectOptions-DGYYFU8i.js} +2 -2
  134. package/dist/{SelectOptions-CGRUCyf4.js.map → SelectOptions-DGYYFU8i.js.map} +1 -1
  135. package/dist/{SelectTrigger-CRbl804u.js → SelectTrigger-DKY7rpZn.js} +2 -2
  136. package/dist/{SelectTrigger-CRbl804u.js.map → SelectTrigger-DKY7rpZn.js.map} +1 -1
  137. package/dist/SelectTrigger.js +1 -1
  138. package/dist/{SelectTriggerBase-BRUW_Zgc.js → SelectTriggerBase-DUYq_L-6.js} +5 -5
  139. package/dist/{SelectTriggerBase-BRUW_Zgc.js.map → SelectTriggerBase-DUYq_L-6.js.map} +1 -1
  140. package/dist/SelectTriggerBase.css +94 -56
  141. package/dist/SelectTriggerBase.module-C-NmZbg4.js +41 -0
  142. package/dist/SelectTriggerBase.module-C-NmZbg4.js.map +1 -0
  143. package/dist/{Switch-rPPL4yEa.js → Switch-C9yQgF4w.js} +2 -2
  144. package/dist/{Switch-rPPL4yEa.js.map → Switch-C9yQgF4w.js.map} +1 -1
  145. package/dist/Switch.js +1 -1
  146. package/dist/Table.js +1 -1
  147. package/dist/{Text-BRbkPr5s.js → Text-D4SWT4u-.js} +2 -2
  148. package/dist/{Text-BRbkPr5s.js.map → Text-D4SWT4u-.js.map} +1 -1
  149. package/dist/Text.js +1 -1
  150. package/dist/{TextField-B9hivHsD.js → TextField-CKXSxube.js} +5 -5
  151. package/dist/{TextField-B9hivHsD.js.map → TextField-CKXSxube.js.map} +1 -1
  152. package/dist/{TextField-DGRVg_Cw.js → TextField-DmdT2k0w.js} +2 -2
  153. package/dist/{TextField-DGRVg_Cw.js.map → TextField-DmdT2k0w.js.map} +1 -1
  154. package/dist/TextField.css +38 -23
  155. package/dist/TextField.js +1 -1
  156. package/dist/TextField.module-B3y6caP9.js +25 -0
  157. package/dist/TextField.module-B3y6caP9.js.map +1 -0
  158. package/dist/{Textarea-DNqfV8rJ.js → Textarea-Dv__veBJ.js} +11 -11
  159. package/dist/{Textarea-DNqfV8rJ.js.map → Textarea-Dv__veBJ.js.map} +1 -1
  160. package/dist/Textarea.css +26 -11
  161. package/dist/Textarea.js +1 -1
  162. package/dist/{ThemeProvider-DW-Mflv6.js → ThemeProvider-DS2aL89d.js} +2 -2
  163. package/dist/{ThemeProvider-DW-Mflv6.js.map → ThemeProvider-DS2aL89d.js.map} +1 -1
  164. package/dist/ThemeProvider.css +6 -4
  165. package/dist/ThemeProvider.js +1 -1
  166. package/dist/ThemeProvider.module-BkKwAw2f.js +8 -0
  167. package/dist/ThemeProvider.module-BkKwAw2f.js.map +1 -0
  168. package/dist/{TimeField-DldMBNAj.js → TimeField-De9qBimk.js} +48 -10
  169. package/dist/TimeField-De9qBimk.js.map +1 -0
  170. package/dist/TimeField.js +1 -1
  171. package/dist/{TimezoneMessage-CgVNxYpM.js → TimezoneMessage-DEJX87S3.js} +2 -2
  172. package/dist/{TimezoneMessage-CgVNxYpM.js.map → TimezoneMessage-DEJX87S3.js.map} +1 -1
  173. package/dist/Toast.js +2 -2
  174. package/dist/{Toaster-Bcy9XN3c.js → Toaster-BlwTxTLf.js} +2 -2
  175. package/dist/{Toaster-Bcy9XN3c.js.map → Toaster-BlwTxTLf.js.map} +1 -1
  176. package/dist/{Toaster-C66ra4BK.js → Toaster-sO16N9b5.js} +23 -9
  177. package/dist/Toaster-sO16N9b5.js.map +1 -0
  178. package/dist/{Toolbar-DgPah7M3.js → Toolbar-BhrHuIN7.js} +6 -6
  179. package/dist/{Toolbar-DgPah7M3.js.map → Toolbar-BhrHuIN7.js.map} +1 -1
  180. package/dist/{Toolbar-Br-5yBxq.js → Toolbar-Buq2zze0.js} +4 -4
  181. package/dist/{Toolbar-Br-5yBxq.js.map → Toolbar-Buq2zze0.js.map} +1 -1
  182. package/dist/Toolbar.js +2 -2
  183. package/dist/{ToolbarButtonToggle-BDfoHeie.js → ToolbarButtonToggle-CNIaqVWl.js} +2 -2
  184. package/dist/{ToolbarButtonToggle-BDfoHeie.js.map → ToolbarButtonToggle-CNIaqVWl.js.map} +1 -1
  185. package/dist/{Tooltip-C_VcYS9P.js → Tooltip-CsTkZqMg.js} +3 -3
  186. package/dist/{Tooltip-C_VcYS9P.js.map → Tooltip-CsTkZqMg.js.map} +1 -1
  187. package/dist/Tooltip.js +1 -1
  188. package/dist/TreeSelectField.js +1 -1
  189. package/dist/{TreeSelectFieldSync-1psUeqtG.js → TreeSelectFieldSync-B7w31kbz.js} +22 -22
  190. package/dist/{TreeSelectFieldSync-1psUeqtG.js.map → TreeSelectFieldSync-B7w31kbz.js.map} +1 -1
  191. package/dist/TreeSelectFieldSync.css +57 -34
  192. package/dist/TreeSelectMenu.js +1 -1
  193. package/dist/{TreeSelectMenuSync-DIPSYUnE.js → TreeSelectMenuSync-EjxlvDZp.js} +4 -4
  194. package/dist/{TreeSelectMenuSync-DIPSYUnE.js.map → TreeSelectMenuSync-EjxlvDZp.js.map} +1 -1
  195. package/dist/{TypeaheadTextField-Di9ulOBl.js → TypeaheadTextField-DTOkaJda.js} +3 -3
  196. package/dist/{TypeaheadTextField-Di9ulOBl.js.map → TypeaheadTextField-DTOkaJda.js.map} +1 -1
  197. package/dist/TypeaheadTextField.js +1 -1
  198. package/dist/{YearlessDateInputWithPicker-CQ2-6Uj4.js → YearlessDateInputWithPicker-DJUQypnF.js} +3 -3
  199. package/dist/{YearlessDateInputWithPicker-CQ2-6Uj4.js.map → YearlessDateInputWithPicker-DJUQypnF.js.map} +1 -1
  200. package/dist/beta.js +19 -18
  201. package/dist/beta.js.map +1 -1
  202. package/dist/{bulkActionTypes-B71ZHjVu.js → bulkActionTypes-bznuvizE.js} +2 -2
  203. package/dist/{bulkActionTypes-B71ZHjVu.js.map → bulkActionTypes-bznuvizE.js.map} +1 -1
  204. package/dist/{filter-state-Lw9qL0zP.js → filter-state-DxwL15y1.js} +23 -23
  205. package/dist/{filter-state-Lw9qL0zP.js.map → filter-state-DxwL15y1.js.map} +1 -1
  206. package/dist/{index-B3WhDZeI.js → index-Bn56UnMm.js} +2 -2
  207. package/dist/{index-B3WhDZeI.js.map → index-Bn56UnMm.js.map} +1 -1
  208. package/dist/index.js +157 -115
  209. package/dist/index.js.map +1 -1
  210. package/dist/index2.css +78 -73
  211. package/dist/{portalScopeClassNames-DA28LrXe.js → portalScopeClassNames-CMdDYHE0.js} +2 -2
  212. package/dist/{portalScopeClassNames-DA28LrXe.js.map → portalScopeClassNames-CMdDYHE0.js.map} +1 -1
  213. package/dist/src/beta/components/Details/Details.d.ts +25 -0
  214. package/dist/src/beta/components/Details/DetailsSummary.d.ts +121 -0
  215. package/dist/src/beta/components/Details/index.d.ts +4 -0
  216. package/dist/src/beta/components/Details/internal/DetailsArrow.d.ts +11 -0
  217. package/dist/src/beta/components/Details/internal/DetailsSummaryCells.d.ts +5 -0
  218. package/dist/src/beta/components/Page/Page.d.ts +1 -0
  219. package/dist/src/beta/components/Page/PageSidebar.d.ts +12 -0
  220. package/dist/src/beta/components/Table/DataTable/internal/DataTablePagination.d.ts +3 -3
  221. package/dist/src/beta/components/Table/DataTable/internal/context/tabbables/CellTabbablesQueue.d.ts +23 -0
  222. package/dist/src/beta/components/Table/DataTable/types.d.ts +11 -0
  223. package/dist/src/beta/components/deprecatedReexports/MultiSelectField.d.ts +4 -4
  224. package/dist/src/beta/components/deprecatedReexports/MultiSelectMenu.d.ts +4 -4
  225. package/dist/src/beta/components/deprecatedReexports/SelectField.d.ts +4 -4
  226. package/dist/src/beta/components/deprecatedReexports/SelectMenu.d.ts +4 -4
  227. package/dist/src/beta/components/index.d.ts +1 -0
  228. package/dist/src/components/MultiSelectField/internal/MultiSelectFieldComboboxMode.d.ts +1 -1
  229. package/dist/src/components/MultiSelectField/internal/MultiSelectFieldSelectMode.d.ts +1 -1
  230. package/dist/src/components/MultiSelectField/internal/types.d.ts +0 -1
  231. package/dist/src/components/Page/Page.d.ts +1 -0
  232. package/dist/src/components/Page/PageSidebar.d.ts +12 -0
  233. package/dist/src/components/SelectField/internal/SelectFieldComboboxMode.d.ts +1 -1
  234. package/dist/src/components/SelectField/internal/SelectFieldSelectMode.d.ts +1 -1
  235. package/dist/src/internal/components/InlineMarkdown/InlineMarkdown.d.ts +8 -1
  236. package/dist/src/internal/components/InlineMarkdown/index.d.ts +1 -1
  237. package/dist/src/internal/components/Popover/Popover.d.ts +10 -5
  238. package/dist/src/internal/components/Popover/internal/verticalPlacement.d.ts +9 -0
  239. package/dist/src/internal/contexts/DisableConditionalUnmountWarningContext.d.ts +6 -0
  240. package/dist/src/internal/contexts/SuppressPanelSwapWarningContext.d.ts +13 -0
  241. package/dist/src/internal/functions/inlineMarkdown.d.ts +5 -2
  242. package/dist/src/internal/functions/stripInlineMarkdown.d.ts +4 -2
  243. package/dist/src/internal/hooks/index.d.ts +1 -0
  244. package/dist/src/internal/hooks/useSelectFieldLoading/useSelectFieldLoading.d.ts +9 -1
  245. package/dist/src/internal/hooks/useSelectOrchestration.d.ts +0 -1
  246. package/dist/src/internal/hooks/useWarnOnConditionalUnmount/index.d.ts +1 -0
  247. package/dist/src/internal/hooks/useWarnOnConditionalUnmount/useWarnOnConditionalUnmount.d.ts +1 -0
  248. package/dist/src/internal/testing/keepMutationObserversAlive.d.ts +9 -0
  249. package/dist/src/internal/types/selectFieldInternalTypes.d.ts +0 -1
  250. package/dist/src/internal/utils/inlineMarkdownRegex.d.ts +5 -0
  251. package/dist/stripInlineMarkdown-BV12XXzl.js +35 -0
  252. package/dist/stripInlineMarkdown-BV12XXzl.js.map +1 -0
  253. package/dist/{syncFilterUtils-DnhuqY1S.js → syncFilterUtils-BNbAB0jz.js} +109 -38
  254. package/dist/syncFilterUtils-BNbAB0jz.js.map +1 -0
  255. package/dist/token/core/component-variables.scss +3 -0
  256. package/dist/token/core/component.d.ts +2 -0
  257. package/dist/token/core/component.js +17 -0
  258. package/dist/token/core/component.scss +2 -0
  259. package/dist/token/core/semantic-variables.scss +2 -0
  260. package/dist/token/core/semantic.d.ts +1 -0
  261. package/dist/token/core/semantic.js +13 -0
  262. package/dist/token/core/semantic.scss +1 -0
  263. package/dist/token.js +33 -0
  264. package/dist/token.js.map +1 -1
  265. package/dist/{treeSync-BDwht_1r.js → treeSync-BELsX1gY.js} +3 -3
  266. package/dist/{treeSync-BDwht_1r.js.map → treeSync-BELsX1gY.js.map} +1 -1
  267. package/dist/{useDrilldown-CGdhHs8L.js → useDrilldown-B8pIhfWa.js} +3 -3
  268. package/dist/{useDrilldown-CGdhHs8L.js.map → useDrilldown-B8pIhfWa.js.map} +1 -1
  269. package/dist/{useInfiniteCombobox-Db0kaxCj.js → useInfiniteCombobox-ZZalag0-.js} +4 -4
  270. package/dist/{useInfiniteCombobox-Db0kaxCj.js.map → useInfiniteCombobox-ZZalag0-.js.map} +1 -1
  271. package/dist/{useInitialFocus-fBiTU9l8.js → useInitialFocus-KdirjHEb.js} +45 -13
  272. package/dist/useInitialFocus-KdirjHEb.js.map +1 -0
  273. package/dist/{useInvalidateOnOptionsChange-PweyDORd.js → useInvalidateOnOptionsChange-ChrPmbtS.js} +5 -5
  274. package/dist/{useInvalidateOnOptionsChange-PweyDORd.js.map → useInvalidateOnOptionsChange-ChrPmbtS.js.map} +1 -1
  275. package/dist/{usePopoverTransitionStates-CDXCdyKa.js → usePopoverTransitionStates-B1opfxxn.js} +1 -2
  276. package/dist/{usePopoverTransitionStates-CDXCdyKa.js.map → usePopoverTransitionStates-B1opfxxn.js.map} +1 -1
  277. package/dist/{utils-CM48ODEJ.js → utils-DwLrXpmt.js} +2 -2
  278. package/dist/{utils-CM48ODEJ.js.map → utils-DwLrXpmt.js.map} +1 -1
  279. package/package.json +3 -3
  280. package/dist/AiMark-CYXbKuCA.js.map +0 -1
  281. package/dist/Chip-AIF0WiNS.js.map +0 -1
  282. package/dist/DataTableEditColumnsDrawer-DRgJgso9.js.map +0 -1
  283. package/dist/Dialog-KDAJphrA.js.map +0 -1
  284. package/dist/Drawer-C7E2NNnH.js.map +0 -1
  285. package/dist/FieldLabel-DYcUS3A4.js.map +0 -1
  286. package/dist/MultiSelectFieldSync-9253tott.js.map +0 -1
  287. package/dist/MultiSelectMenuSync-BUJbWN2I.js.map +0 -1
  288. package/dist/Page-D_KL2tdK.js.map +0 -1
  289. package/dist/SelectFieldSync-CoUi-BYw.js.map +0 -1
  290. package/dist/SelectMenuSync-CvXx-6uU.js.map +0 -1
  291. package/dist/SelectTriggerBase.module-Dt4-6YvC.js +0 -40
  292. package/dist/SelectTriggerBase.module-Dt4-6YvC.js.map +0 -1
  293. package/dist/TextField.module-DklyLNKz.js +0 -25
  294. package/dist/TextField.module-DklyLNKz.js.map +0 -1
  295. package/dist/ThemeProvider.module-B9qgsQ8S.js +0 -8
  296. package/dist/ThemeProvider.module-B9qgsQ8S.js.map +0 -1
  297. package/dist/TimeField-DldMBNAj.js.map +0 -1
  298. package/dist/Toaster-C66ra4BK.js.map +0 -1
  299. package/dist/stripInlineMarkdown-B6lAJb4-.js +0 -25
  300. package/dist/stripInlineMarkdown-B6lAJb4-.js.map +0 -1
  301. package/dist/syncFilterUtils-DnhuqY1S.js.map +0 -1
  302. package/dist/useInitialFocus-fBiTU9l8.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"Toaster-Bcy9XN3c.js","sources":["../src/components/Toast/Toaster.tsx"],"sourcesContent":["import {\n type Ref,\n forwardRef,\n useCallback,\n useEffect,\n useRef,\n useState,\n} from \"react\";\n\nimport { useMergeRefs } from \"../../hooks\";\n\nimport {\n type ToasterProps as BaseToasterProps,\n Toaster as BaseToaster,\n} from \"./internal/Toaster\";\n\nconst SHADOW_HOST_DATA_ATTRS = \"[data-mfe-portal-name], [data-mfe-name]\";\n\nconst isSameElementList = (a: Element[], b: Element[]) =>\n a.length === b.length && a.every((element, index) => element === b[index]);\n\nexport type ToasterProps = Omit<\n BaseToasterProps,\n \"disableEvents\" | \"onToastCountChange\"\n>;\n\n/**\n * Displays notifications dispatched through {@link toast}. The first toaster\n * in each document or shadow root handles shared toast events.\n */\nexport const Toaster = forwardRef(\n (\n props: Omit<BaseToasterProps, \"onToastCountChange\">,\n ref: Ref<HTMLDivElement>,\n ) => {\n const { id } = props;\n\n const toasterRef = useRef<HTMLDivElement>(null);\n const mergedToasterRef = useMergeRefs([toasterRef, ref]);\n\n const [shouldDisableEvents, setShouldDisableEvents] =\n useState<boolean>(false);\n\n useEffect(() => {\n const toasters = document.querySelectorAll(\"[data-anv='toaster']\");\n const shadowToasters =\n (\n toasterRef.current?.getRootNode() as Document | ShadowRoot\n )?.querySelectorAll(\"[data-anv='toaster']\") || [];\n\n if (\n toasters.length &&\n id !== toasters[0].getAttribute(\"data-toaster-id\")\n ) {\n setShouldDisableEvents(true);\n } else if (\n shadowToasters.length &&\n id !== shadowToasters[0].getAttribute(\"data-toaster-id\")\n ) {\n setShouldDisableEvents(true);\n }\n }, [id]);\n\n const a1ToastGroupObserver = useRef<MutationObserver | null>(null);\n const a1ToastGroupObserverConnected = useRef<boolean>(false);\n const a1ToastGroupRescan = useRef<\n ReturnType<typeof setTimeout> | undefined\n >(undefined);\n const [a1ToastGroups, setA1ToastGroups] = useState<Element[]>([]);\n const [toastCount, setToastCount] = useState<number>(0);\n\n const collectA1ToastGroups = useCallback(() => {\n const groups: Element[] = [\n ...document.getElementsByClassName(\"ToastGroup\"),\n ];\n let hasPendingShadowRoot = false;\n\n document.querySelectorAll(SHADOW_HOST_DATA_ATTRS).forEach((host) => {\n if (host.shadowRoot) {\n groups.push(...host.shadowRoot.querySelectorAll(\".ToastGroup\"));\n } else {\n hasPendingShadowRoot = true;\n }\n });\n\n setA1ToastGroups((previous) =>\n isSameElementList(previous, groups) ? previous : groups,\n );\n\n return hasPendingShadowRoot;\n }, []);\n\n const updateA1ToastGroups = useCallback(() => {\n // A shadow host can be in the DOM before it attaches its shadow root, so\n // re-scan on the next task — once per burst, not once per host.\n if (collectA1ToastGroups() && a1ToastGroupRescan.current === undefined) {\n a1ToastGroupRescan.current = setTimeout(() => {\n a1ToastGroupRescan.current = undefined;\n collectA1ToastGroups();\n });\n }\n }, [collectA1ToastGroups]);\n\n useEffect(() => {\n const observer = new MutationObserver(updateA1ToastGroups);\n a1ToastGroupObserver.current = observer;\n\n return () => {\n observer.disconnect();\n a1ToastGroupObserverConnected.current = false;\n clearTimeout(a1ToastGroupRescan.current);\n a1ToastGroupRescan.current = undefined;\n };\n }, [updateA1ToastGroups]);\n\n useEffect(() => {\n if (a1ToastGroupObserver.current !== null) {\n if (toastCount > 0 && a1ToastGroupObserverConnected.current === false) {\n a1ToastGroupObserver.current.observe(document.body, {\n childList: true,\n subtree: true,\n });\n a1ToastGroupObserverConnected.current = true;\n\n // Existing A1 groups also need to move above this stack.\n updateA1ToastGroups();\n } else if (\n toastCount === 0 &&\n a1ToastGroupObserverConnected.current === true\n ) {\n a1ToastGroupObserver.current.disconnect();\n a1ToastGroupObserverConnected.current = false;\n // A re-scan queued by the last batch would otherwise still walk the\n // document and set state after every toast is gone.\n clearTimeout(a1ToastGroupRescan.current);\n a1ToastGroupRescan.current = undefined;\n }\n }\n }, [toastCount, updateA1ToastGroups]);\n\n useEffect(() => {\n if (a1ToastGroups && a1ToastGroups.length > 0) {\n const toasterHeight =\n toasterRef.current?.firstElementChild?.getBoundingClientRect()\n .height as number;\n a1ToastGroups.forEach((group) => {\n (group as HTMLDivElement).style.top =\n toastCount === 0 ? \"16px\" : `calc(${toasterHeight}px + 2.5rem)`;\n });\n }\n }, [a1ToastGroups, toastCount]);\n\n return (\n <BaseToaster\n {...props}\n onToastCountChange={setToastCount}\n disableEvents={shouldDisableEvents}\n ref={mergedToasterRef}\n />\n );\n },\n);\n\nToaster.displayName = \"Toaster\";\n"],"names":["BaseToaster"],"mappings":"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"}
1
+ {"version":3,"file":"Toaster-BlwTxTLf.js","sources":["../src/components/Toast/Toaster.tsx"],"sourcesContent":["import {\n type Ref,\n forwardRef,\n useCallback,\n useEffect,\n useRef,\n useState,\n} from \"react\";\n\nimport { useMergeRefs } from \"../../hooks\";\n\nimport {\n type ToasterProps as BaseToasterProps,\n Toaster as BaseToaster,\n} from \"./internal/Toaster\";\n\nconst SHADOW_HOST_DATA_ATTRS = \"[data-mfe-portal-name], [data-mfe-name]\";\n\nconst isSameElementList = (a: Element[], b: Element[]) =>\n a.length === b.length && a.every((element, index) => element === b[index]);\n\nexport type ToasterProps = Omit<\n BaseToasterProps,\n \"disableEvents\" | \"onToastCountChange\"\n>;\n\n/**\n * Displays notifications dispatched through {@link toast}. The first toaster\n * in each document or shadow root handles shared toast events.\n */\nexport const Toaster = forwardRef(\n (\n props: Omit<BaseToasterProps, \"onToastCountChange\">,\n ref: Ref<HTMLDivElement>,\n ) => {\n const { id } = props;\n\n const toasterRef = useRef<HTMLDivElement>(null);\n const mergedToasterRef = useMergeRefs([toasterRef, ref]);\n\n const [shouldDisableEvents, setShouldDisableEvents] =\n useState<boolean>(false);\n\n useEffect(() => {\n const toasters = document.querySelectorAll(\"[data-anv='toaster']\");\n const shadowToasters =\n (\n toasterRef.current?.getRootNode() as Document | ShadowRoot\n )?.querySelectorAll(\"[data-anv='toaster']\") || [];\n\n if (\n toasters.length &&\n id !== toasters[0].getAttribute(\"data-toaster-id\")\n ) {\n setShouldDisableEvents(true);\n } else if (\n shadowToasters.length &&\n id !== shadowToasters[0].getAttribute(\"data-toaster-id\")\n ) {\n setShouldDisableEvents(true);\n }\n }, [id]);\n\n const a1ToastGroupObserver = useRef<MutationObserver | null>(null);\n const a1ToastGroupObserverConnected = useRef<boolean>(false);\n const a1ToastGroupRescan = useRef<\n ReturnType<typeof setTimeout> | undefined\n >(undefined);\n const [a1ToastGroups, setA1ToastGroups] = useState<Element[]>([]);\n const [toastCount, setToastCount] = useState<number>(0);\n\n const collectA1ToastGroups = useCallback(() => {\n const groups: Element[] = [\n ...document.getElementsByClassName(\"ToastGroup\"),\n ];\n let hasPendingShadowRoot = false;\n\n document.querySelectorAll(SHADOW_HOST_DATA_ATTRS).forEach((host) => {\n if (host.shadowRoot) {\n groups.push(...host.shadowRoot.querySelectorAll(\".ToastGroup\"));\n } else {\n hasPendingShadowRoot = true;\n }\n });\n\n setA1ToastGroups((previous) =>\n isSameElementList(previous, groups) ? previous : groups,\n );\n\n return hasPendingShadowRoot;\n }, []);\n\n const updateA1ToastGroups = useCallback(() => {\n // A shadow host can be in the DOM before it attaches its shadow root, so\n // re-scan on the next task — once per burst, not once per host.\n if (collectA1ToastGroups() && a1ToastGroupRescan.current === undefined) {\n a1ToastGroupRescan.current = setTimeout(() => {\n a1ToastGroupRescan.current = undefined;\n collectA1ToastGroups();\n });\n }\n }, [collectA1ToastGroups]);\n\n useEffect(() => {\n const observer = new MutationObserver(updateA1ToastGroups);\n a1ToastGroupObserver.current = observer;\n\n return () => {\n observer.disconnect();\n a1ToastGroupObserverConnected.current = false;\n clearTimeout(a1ToastGroupRescan.current);\n a1ToastGroupRescan.current = undefined;\n };\n }, [updateA1ToastGroups]);\n\n useEffect(() => {\n if (a1ToastGroupObserver.current !== null) {\n if (toastCount > 0 && a1ToastGroupObserverConnected.current === false) {\n a1ToastGroupObserver.current.observe(document.body, {\n childList: true,\n subtree: true,\n });\n a1ToastGroupObserverConnected.current = true;\n\n // Existing A1 groups also need to move above this stack.\n updateA1ToastGroups();\n } else if (\n toastCount === 0 &&\n a1ToastGroupObserverConnected.current === true\n ) {\n a1ToastGroupObserver.current.disconnect();\n a1ToastGroupObserverConnected.current = false;\n // A re-scan queued by the last batch would otherwise still walk the\n // document and set state after every toast is gone.\n clearTimeout(a1ToastGroupRescan.current);\n a1ToastGroupRescan.current = undefined;\n }\n }\n }, [toastCount, updateA1ToastGroups]);\n\n useEffect(() => {\n if (a1ToastGroups && a1ToastGroups.length > 0) {\n const toasterHeight =\n toasterRef.current?.firstElementChild?.getBoundingClientRect()\n .height as number;\n a1ToastGroups.forEach((group) => {\n (group as HTMLDivElement).style.top =\n toastCount === 0 ? \"16px\" : `calc(${toasterHeight}px + 2.5rem)`;\n });\n }\n }, [a1ToastGroups, toastCount]);\n\n return (\n <BaseToaster\n {...props}\n onToastCountChange={setToastCount}\n disableEvents={shouldDisableEvents}\n ref={mergedToasterRef}\n />\n );\n },\n);\n\nToaster.displayName = \"Toaster\";\n"],"names":["BaseToaster"],"mappings":"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"}
@@ -1,15 +1,15 @@
1
1
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
2
2
  import { c as cx } from './index-De1g9FRV.js';
3
- import { useState, useEffect, useMemo, useCallback, createContext, useContext, forwardRef, useRef, useId } from 'react';
3
+ import { useState, useEffect, useRef, useMemo, useCallback, createContext, useContext, forwardRef, useId } from 'react';
4
4
  import { B as Button } from './Button-B_E6ybA-.js';
5
5
  import { S as SrOnly } from './SrOnly-pnf8ajnh.js';
6
- import { A as Alert } from './Alert-CYpl0czJ.js';
7
- import { P as ProgressBar } from './ProgressBar-CjoOuJCi.js';
6
+ import { A as Alert } from './Alert-BOqBFMUV.js';
7
+ import { P as ProgressBar } from './ProgressBar-ubCKKewC.js';
8
8
  import { p as prefersReducedMotion } from './usePrefersReducedMotion-BLoVFiJL.js';
9
9
  import { u as useSwipe } from './useSwipe-Cp-CJxLU.js';
10
10
  import { g as getActiveElement } from './getActiveElement-BcSyVE7S.js';
11
11
  import { u as useMergeRefs } from './useMergeRefs-Dfmtq9cI.js';
12
- import { u as usePortalScopeStyle, p as portalScopeClassNames } from './portalScopeClassNames-DA28LrXe.js';
12
+ import { u as usePortalScopeStyle, p as portalScopeClassNames } from './portalScopeClassNames-CMdDYHE0.js';
13
13
  import { b as safeHidePopover, s as safeShowPopover } from './floating-ui.react-dom-BIKT960u.js';
14
14
 
15
15
  import './Toaster.css';const ToastProviderContext = createContext({
@@ -54,6 +54,23 @@ const ToastProvider = ({
54
54
  setToasts(uniqueToasts);
55
55
  }
56
56
  }, [toasts]);
57
+ const previousToastsRef = useRef([]);
58
+ useEffect(() => {
59
+ const previousToasts = previousToastsRef.current;
60
+ previousToastsRef.current = toasts;
61
+ if (previousToasts === toasts) {
62
+ return;
63
+ }
64
+ const nextIds = new Set(toasts.map((toast) => toast.id));
65
+ const dismissedIds = /* @__PURE__ */ new Set();
66
+ for (const toast of previousToasts) {
67
+ if (nextIds.has(toast.id) || dismissedIds.has(toast.id)) {
68
+ continue;
69
+ }
70
+ dismissedIds.add(toast.id);
71
+ toast.onDismiss?.();
72
+ }
73
+ }, [toasts]);
57
74
  useEffect(() => {
58
75
  setIsDialogToaster(isDialogToasterProp);
59
76
  }, [isDialogToasterProp]);
@@ -477,7 +494,7 @@ const Toast = forwardRef(
477
494
  isStacked,
478
495
  message,
479
496
  onClose,
480
- onDismiss,
497
+ onDismiss: _onDismiss,
481
498
  pausedStatus,
482
499
  progress,
483
500
  toastClassName,
@@ -509,9 +526,6 @@ const Toast = forwardRef(
509
526
  }, ANIMATION_DURATION);
510
527
  setToastOpened(true);
511
528
  }
512
- return () => {
513
- onDismiss?.();
514
- };
515
529
  }, []);
516
530
  useEffect(() => {
517
531
  if (toastWrapperRef.current && toastOpened && !isStacked) {
@@ -1245,4 +1259,4 @@ Toaster.displayName = "Toaster";
1245
1259
  ToasterContent.displayName = "ToasterContent";
1246
1260
 
1247
1261
  export { Toaster as T, ToastProvider as a, ToasterPopover as b, ToasterContent as c, toast as t };
1248
- //# sourceMappingURL=Toaster-C66ra4BK.js.map
1262
+ //# sourceMappingURL=Toaster-sO16N9b5.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Toaster-sO16N9b5.js","sources":["../src/components/Toast/internal/ToastProvider.tsx","../src/components/Toast/internal/useToasts.ts","../src/components/Toast/internal/ToasterPopover.tsx","../src/components/Toast/internal/constants.ts","../src/components/Toast/internal/addOrUpdateToastHeight.ts","../../../node_modules/.pnpm/uuid@14.0.0/node_modules/uuid/dist/stringify.js","../../../node_modules/.pnpm/uuid@14.0.0/node_modules/uuid/dist/rng.js","../../../node_modules/.pnpm/uuid@14.0.0/node_modules/uuid/dist/v4.js","../src/components/Toast/toast.ts","../src/components/Toast/internal/useCloseToast.tsx","../src/components/Toast/internal/useToastPositionStyles.ts","../src/components/Toast/internal/Toast.tsx","../src/components/Toast/internal/useHotkeyFocus.tsx","../src/components/Toast/internal/useShowMoreButtonPositionStyles.ts","../src/components/Toast/internal/ToastStack.tsx","../src/components/Toast/internal/Toaster.tsx"],"sourcesContent":["/* eslint-disable react-refresh/only-export-components */\nimport {\n createContext,\n type Dispatch,\n type FC,\n type PropsWithChildren,\n type SetStateAction,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport type { ToastProps } from \"./Toast\";\n\nexport type ToastProviderProps = PropsWithChildren<{\n /** Coordinates top-layer ordering for a toaster inside a dialog. Defaults to `false`. */\n isDialogToaster?: boolean;\n}>;\n\nexport type ToastProviderContextProps = {\n toasts: ToastProps[];\n setToasts: Dispatch<SetStateAction<ToastProps[]>>;\n toastHeights: { id: string; height: number }[];\n setToastHeights: Dispatch<\n SetStateAction<ToastProviderContextProps[\"toastHeights\"]>\n >;\n getToastStackHeight: (index?: number) => number;\n toastsBeforeStack: number;\n setToastsBeforeStack: Dispatch<SetStateAction<number>>;\n extraToastsVisible: boolean;\n setExtraToastsVisible: Dispatch<SetStateAction<boolean>>;\n isDialogToaster: boolean;\n};\n\nexport const ToastProviderContext = createContext<ToastProviderContextProps>({\n toasts: [],\n setToasts: () => [],\n toastHeights: [],\n setToastHeights: () => [],\n getToastStackHeight: () => 0,\n toastsBeforeStack: 3,\n setToastsBeforeStack: () => [],\n extraToastsVisible: false,\n setExtraToastsVisible: () => [],\n isDialogToaster: false,\n});\n\nexport const getSetToasts: {\n setToasts: ToastProviderContextProps[\"setToasts\"];\n setToastHeights: ToastProviderContextProps[\"setToastHeights\"];\n} = {\n setToasts: () => [],\n setToastHeights: () => [],\n};\n\n/** Owns notification state and measurements for one toaster. */\nexport const ToastProvider: FC<ToastProviderProps> = ({\n children,\n isDialogToaster: isDialogToasterProp = false,\n}) => {\n const [toasts, setToasts] = useState<ToastProps[]>([]);\n const [toastHeights, setToastHeights] = useState<\n ToastProviderContextProps[\"toastHeights\"]\n >([]);\n const [toastsBeforeStack, setToastsBeforeStack] = useState<number>(3);\n const [extraToastsVisible, setExtraToastsVisible] = useState<boolean>(false);\n getSetToasts.setToasts = setToasts;\n getSetToasts.setToastHeights = setToastHeights;\n const [isDialogToaster, setIsDialogToaster] =\n useState<boolean>(isDialogToasterProp);\n\n const removeDuplicateToasts = (toasts: ToastProps[]) => {\n const toastIds = new Set<ToastProps[\"id\"]>();\n const uniqueToasts = toasts.filter((toast) => {\n if (toastIds.has(toast.id)) {\n console.error(\n `Encountered toast with duplicate id ${toast.id}. Each toast id needs to be unique.`,\n );\n return false;\n } else {\n toastIds.add(toast.id);\n return true;\n }\n });\n return uniqueToasts;\n };\n\n useEffect(() => {\n const uniqueToasts = removeDuplicateToasts(toasts);\n if (toasts.length !== uniqueToasts.length) {\n setToasts(uniqueToasts);\n }\n }, [toasts]);\n\n // An id leaving this list is a dismiss. Unmount cleanup also runs in Strict Mode.\n const previousToastsRef = useRef<ToastProps[]>([]);\n useEffect(() => {\n const previousToasts = previousToastsRef.current;\n previousToastsRef.current = toasts;\n if (previousToasts === toasts) {\n return;\n }\n\n const nextIds = new Set(toasts.map((toast) => toast.id));\n const dismissedIds = new Set<string>();\n for (const toast of previousToasts) {\n if (nextIds.has(toast.id) || dismissedIds.has(toast.id)) {\n continue;\n }\n dismissedIds.add(toast.id);\n toast.onDismiss?.();\n }\n }, [toasts]);\n\n useEffect(() => {\n setIsDialogToaster(isDialogToasterProp);\n }, [isDialogToasterProp]);\n\n // Memoize the ID→height map once per toastHeights change, so\n // getToastStackHeight (called once per toast) doesn't rebuild it each time.\n const heightMap = useMemo(\n () => new Map(toastHeights.map((t) => [t.id, t.height])),\n [toastHeights],\n );\n\n const getToastStackHeight = useCallback(\n (index?: number) => {\n const relevantToasts =\n index !== undefined ? toasts.slice(index + 1) : toasts;\n\n const heights = relevantToasts\n .map((t) => heightMap.get(t.id))\n .filter((h): h is number => h !== undefined);\n\n if (heights.length > 0) {\n if (extraToastsVisible) {\n return heights.reduce((total, current) => total + current);\n }\n return heights\n .slice(-toastsBeforeStack)\n .reduce((total, current) => total + current);\n }\n return 0;\n },\n [toasts, heightMap, extraToastsVisible, toastsBeforeStack],\n );\n\n const value = useMemo(\n () => ({\n toasts,\n setToasts,\n toastHeights,\n setToastHeights,\n getToastStackHeight,\n toastsBeforeStack,\n setToastsBeforeStack,\n extraToastsVisible,\n setExtraToastsVisible,\n isDialogToaster,\n }),\n [\n extraToastsVisible,\n getToastStackHeight,\n toastHeights,\n toasts,\n toastsBeforeStack,\n isDialogToaster,\n ],\n );\n\n return (\n <ToastProviderContext.Provider value={value}>\n {children}\n </ToastProviderContext.Provider>\n );\n};\n","import { useContext } from \"react\";\nimport { ToastProviderContext } from \"./ToastProvider\";\n\n/** Returns the nearest toast provider state; throws outside `ToastProvider`. */\nexport const useToasts = () => {\n const context = useContext(ToastProviderContext);\n\n if (context == null) {\n throw new Error(\"useToasts must be wrapped in <ToastProvider />\");\n }\n\n return context;\n};\n","import {\n forwardRef,\n type PropsWithChildren,\n useEffect,\n useMemo,\n useRef,\n} from \"react\";\n\nimport { useMergeRefs } from \"../../../hooks\";\nimport { safeHidePopover, safeShowPopover } from \"../../../internal/functions\";\n\nimport { useToasts } from \"./useToasts\";\n\nimport {\n portalScopeClassNames,\n usePortalScopeStyle,\n} from \"../../../internal/functions/portalScopeClassNames\";\n\ntype ToasterPopoverProps = PropsWithChildren;\n\n/**\n * Native `[popover]` UA styles (`inset: 0`, `margin: auto`, `border: solid`)\n * collapse this wrapper to a centered box when the inner toaster is\n * `position: fixed`. Inline so the reset is not nested under PostCSS's\n * `.anvil2` descendant wrapper — this node self-applies `.anvil2` and often\n * has no ancestor scope.\n */\nconst toasterPopoverUaReset = {\n background: \"none\",\n border: \"none\",\n inset: \"auto\",\n margin: 0,\n padding: 0,\n right: 0,\n top: 0,\n} as const;\n\n/** Keeps active notifications in the browser's top layer. */\nexport const ToasterPopover = forwardRef<HTMLDivElement, ToasterPopoverProps>(\n (props, ref) => {\n const { isDialogToaster } = useToasts();\n const popoverRef = useRef<HTMLDivElement>(null);\n const combinedRef = useMergeRefs([popoverRef, ref]);\n\n const { toasts } = useToasts();\n const toastCount = useMemo(() => toasts.length, [toasts]);\n\n useEffect(() => {\n if (!popoverRef.current) return;\n const currentPopover = popoverRef.current;\n let timeout: NodeJS.Timeout | undefined;\n\n if (toastCount > 0) {\n if (isDialogToaster) {\n // Reopening puts a pre-existing popover above the newly opened dialog.\n timeout = setTimeout(() => {\n safeHidePopover(currentPopover);\n safeShowPopover(currentPopover);\n });\n } else {\n safeShowPopover(currentPopover);\n }\n } else {\n safeHidePopover(currentPopover);\n }\n\n return () => {\n if (timeout) clearTimeout(timeout);\n if (toastCount === 0) {\n safeHidePopover(currentPopover);\n }\n };\n }, [toastCount, isDialogToaster]);\n\n const portalStyle = usePortalScopeStyle(toasterPopoverUaReset);\n\n return (\n <div\n ref={combinedRef}\n // The toaster renders in a native `popover` (top layer), escaping any\n // ancestor `AnvilProvider`'s `.anvil2` scope; self-apply it so portaled\n // toasts still receive the `--a2-*` tokens and scoped component rules.\n className={portalScopeClassNames}\n data-anv=\"toaster-popover\"\n popover=\"manual\"\n style={portalStyle}\n >\n {props.children}\n </div>\n );\n },\n);\n\nToasterPopover.displayName = \"ToasterPopover\";\n","export const ANIMATION_DURATION = 300;\n\nexport const TOAST_STACK_PADDING = 48;\n\nexport const EXPAND_BUTTON_HEIGHT_WITH_PADDING = 64;\n\nexport const SCROLL_THRESHOLD = 64;\n\nexport const EVENT_THROTTLE_MS = 16;\n","import type { ToastProviderContextProps } from \"./ToastProvider\";\n\n/** Records the latest measured height for a toast. */\nexport const addOrUpdateToastHeight = (\n toastId: string,\n toastHeight: number,\n setToastHeights: ToastProviderContextProps[\"setToastHeights\"],\n) => {\n setToastHeights((prev) => {\n if (prev.find((t) => t.id === toastId)) {\n return prev.map((t) => {\n if (t.id === toastId) {\n return { ...t, height: toastHeight };\n }\n return t;\n });\n }\n return [\n ...prev,\n {\n id: toastId,\n height: toastHeight,\n },\n ];\n });\n};\n","import validate from './validate.js';\nconst byteToHex = [];\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\nexport function unsafeStringify(arr, offset = 0) {\n return (byteToHex[arr[offset + 0]] +\n byteToHex[arr[offset + 1]] +\n byteToHex[arr[offset + 2]] +\n byteToHex[arr[offset + 3]] +\n '-' +\n byteToHex[arr[offset + 4]] +\n byteToHex[arr[offset + 5]] +\n '-' +\n byteToHex[arr[offset + 6]] +\n byteToHex[arr[offset + 7]] +\n '-' +\n byteToHex[arr[offset + 8]] +\n byteToHex[arr[offset + 9]] +\n '-' +\n byteToHex[arr[offset + 10]] +\n byteToHex[arr[offset + 11]] +\n byteToHex[arr[offset + 12]] +\n byteToHex[arr[offset + 13]] +\n byteToHex[arr[offset + 14]] +\n byteToHex[arr[offset + 15]]).toLowerCase();\n}\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset);\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n return uuid;\n}\nexport default stringify;\n","const rnds8 = new Uint8Array(16);\nexport default function rng() {\n return crypto.getRandomValues(rnds8);\n}\n","import rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\nfunction v4(options, buf, offset) {\n if (!buf && !options && crypto.randomUUID) {\n return crypto.randomUUID();\n }\n return _v4(options, buf, offset);\n}\nfunction _v4(options, buf, offset) {\n options = options || {};\n const rnds = options.random ?? options.rng?.() ?? rng();\n if (rnds.length < 16) {\n throw new Error('Random bytes length must be >= 16');\n }\n rnds[6] = (rnds[6] & 0x0f) | 0x40;\n rnds[8] = (rnds[8] & 0x3f) | 0x80;\n if (buf) {\n offset = offset || 0;\n if (offset < 0 || offset + 16 > buf.length) {\n throw new RangeError(`UUID byte range ${offset}:${offset + 15} is out of buffer bounds`);\n }\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n return buf;\n }\n return unsafeStringify(rnds);\n}\nexport default v4;\n","import type { MouseEvent } from \"react\";\nimport { v4 as uuid } from \"uuid\";\n\nimport type { Status } from \"../../types\";\nimport type {\n ToastCustomEventDetail,\n ToastUpdateProps,\n} from \"./internal/types\";\nimport type { ToastProps } from \"./internal/Toast\";\n\n/** Content and behavior shared by the status-specific toast methods. */\nexport type toastProps = Pick<\n ToastProps,\n | \"actions\"\n | \"aiMark\"\n | \"containerClassName\"\n | \"duration\"\n | \"message\"\n | \"onClose\"\n | \"onDismiss\"\n | \"progress\"\n | \"title\"\n | \"toastClassName\"\n>;\n\n/**\n * Imperative methods for adding, updating, and dismissing notifications in a\n * mounted {@link Toaster}.\n */\nexport const toast = () => {\n const toastMethods = [\n \"info\",\n \"success\",\n \"warning\",\n \"danger\",\n \"promise\",\n \"update\",\n \"dismiss\",\n ];\n console.error(\n \"Please use one of the following toast methods:\\n\",\n ...toastMethods.map((m) => `\\ttoast.${m}()\\n`),\n );\n};\ntype ToastCustomEvent = CustomEvent<ToastCustomEventDetail>;\n\nconst TOAST_EVENT_NAME = \"hammer-toast\";\n\nconst TOAST_TYPES: readonly Status[] = [\"info\", \"success\", \"warning\", \"danger\"];\n\nconst methods: Record<string, (props: toastProps) => string> = {};\n\nTOAST_TYPES.forEach((type) => {\n methods[type] = (props: toastProps) => {\n const uniqueId = uuid();\n\n const ToastAddEvent: ToastCustomEvent =\n new CustomEvent<ToastCustomEventDetail>(TOAST_EVENT_NAME, {\n composed: true,\n detail: {\n id: uniqueId,\n eventType: \"add\",\n status: type,\n createdAt: Date.now(),\n ...props,\n },\n });\n dispatchEvent(ToastAddEvent);\n return uniqueId;\n };\n});\n\nconst update = (id: string, props: Omit<ToastUpdateProps, \"id\">) => {\n const ToastEvent: ToastCustomEvent = new CustomEvent<ToastCustomEventDetail>(\n TOAST_EVENT_NAME,\n {\n composed: true,\n detail: {\n eventType: \"update\",\n id,\n ...props,\n },\n },\n );\n dispatchEvent(ToastEvent);\n};\n\nconst dismiss = (id?: string) => {\n const ToastEvent: ToastCustomEvent = new CustomEvent<ToastCustomEventDetail>(\n TOAST_EVENT_NAME,\n {\n composed: true,\n detail: {\n eventType: \"dismiss\",\n id,\n },\n },\n );\n dispatchEvent(ToastEvent);\n};\n\nconst promise = async (\n promise: Promise<string>,\n toastConfig: {\n /** Content shown while the promise is pending. */\n loading: toastProps;\n /** Maps the resolved value to the result toast. */\n success: (data: string) => Omit<toastProps, \"id\">;\n /** Maps the rejection value to the result toast. */\n error: (error: string) => Omit<toastProps, \"id\">;\n },\n): Promise<string> => {\n const { onClose, ...loadingToastConfig } = toastConfig.loading;\n let closedWhileLoading = false;\n\n const onCloseWhileLoading: toastProps[\"onClose\"] = (\n e: MouseEvent<HTMLButtonElement>,\n ) => {\n toastConfig.loading.onClose?.(e);\n closedWhileLoading = true;\n };\n\n const id = toast.info({\n ...loadingToastConfig,\n onClose: onCloseWhileLoading,\n duration: false,\n });\n await Promise.resolve(promise)\n .then((res) => {\n if (closedWhileLoading) {\n toast.success({\n ...toastConfig.success(res),\n });\n } else {\n toast.update(id, {\n ...toastConfig.success(res),\n status: \"success\",\n });\n }\n })\n .catch((err) => {\n if (closedWhileLoading) {\n toast.danger({\n ...toastConfig.error(err),\n });\n } else {\n toast.update(id, {\n ...toastConfig.error(err),\n status: \"danger\",\n });\n }\n });\n return id;\n};\n\n/**\n * Adds an informational toast and returns its generated ID.\n */\ntoast.info = methods.info;\n/**\n * Adds a success toast and returns its generated ID.\n */\ntoast.success = methods.success;\n/**\n * Adds a warning toast and returns its generated ID.\n */\ntoast.warning = methods.warning;\n/**\n * Adds a danger toast and returns its generated ID.\n */\ntoast.danger = methods.danger;\n/**\n * Updates the toast with the matching ID.\n */\ntoast.update = update;\n/**\n * Dismisses the matching toast, or every toast when no ID is provided.\n */\ntoast.dismiss = dismiss;\n/**\n * Shows a non-expiring loading toast, then replaces it with the resolved or\n * rejected configuration. Closing it while pending creates a new result toast.\n *\n * @example\n * ```ts\n * import { toast } from \"@servicetitan/anvil2\";\n * toast.promise(\n * new Promise((resolve, reject) => {\n * setTimeout(() => {\n * resolve(\"This is a success toast\");\n * }, 2000);\n * }),\n * {\n * loading: {\n * message: \"This is a loading toast\",\n * title: \"Loading\",\n * },\n * success: (data) => ({\n * message: data,\n * title: \"Success\",\n * }),\n * error: (error) => ({\n * message: error,\n * title: \"Error\",\n * }),\n * },\n * );\n * ```\n */\ntoast.promise = promise;\n","import { prefersReducedMotion } from \"../../../hooks\";\nimport type { ToastProps } from \"./Toast\";\nimport { useToasts } from \"./useToasts\";\nimport { ANIMATION_DURATION } from \"./constants\";\nimport type { ToastProviderContextProps } from \"./ToastProvider\";\n\n/**\n * Removes one toast by id, or every toast when no id is given. Returns the\n * previous array unchanged when there is nothing to remove, so React can bail\n * out of re-rendering every toast context consumer.\n */\nconst withoutToast = <T extends { id: string }>(prev: T[], id?: string) => {\n if (prev.length === 0) {\n return prev;\n }\n if (!id) {\n return [];\n }\n const next = prev.filter((t) => t.id !== id);\n return next.length === prev.length ? prev : next;\n};\n\nconst setToastsAfterClose = (\n setToasts: ToastProviderContextProps[\"setToasts\"],\n setToastHeights: ToastProviderContextProps[\"setToastHeights\"],\n id?: string,\n) => {\n setToasts((prev) => withoutToast(prev, id));\n setToastHeights((prev) => withoutToast(prev, id));\n};\n\nconst closeToast = (\n setToasts: ToastProviderContextProps[\"setToasts\"],\n setToastHeights: ToastProviderContextProps[\"setToastHeights\"],\n closingToastClassName: ToastProps[\"toastClassName\"],\n id?: string,\n) => {\n if (prefersReducedMotion()) {\n setToastsAfterClose(setToasts, setToastHeights, id);\n } else {\n setToasts((prev) => {\n let hasClosingToast = false;\n const next = prev.map((t) => {\n if (!id || t.id === id) {\n hasClosingToast = true;\n return {\n ...t,\n toastClassName: closingToastClassName,\n };\n }\n return t;\n });\n return hasClosingToast ? next : prev;\n });\n // Keep the entry mounted until its closing animation finishes.\n setTimeout(() => {\n setToastsAfterClose(setToasts, setToastHeights, id);\n }, ANIMATION_DURATION - 10);\n }\n};\n\n/** Returns a callback that closes one toast, or every toast when passed no ID. */\nexport const useCloseToast = (\n closingToastClassName: ToastProps[\"toastClassName\"],\n) => {\n const { setToasts, setToastHeights } = useToasts();\n return (id?: string) => {\n closeToast(setToasts, setToastHeights, closingToastClassName, id);\n };\n};\n","import { type CSSProperties, useMemo } from \"react\";\nimport { useToasts } from \"./useToasts\";\n\nconst STACKED_TOAST_HEIGHT = \"5.3125rem\";\nconst STACKED_TOAST_PEEK_HEIGHT = \"1rem\";\n\n/** Positions one toast within the visible or collapsed stack. */\nexport const useToastPositionStyles = (\n index: number,\n): CSSProperties | undefined => {\n const {\n toasts,\n toastHeights,\n getToastStackHeight,\n toastsBeforeStack,\n extraToastsVisible,\n } = useToasts();\n const toastCount = toasts.length;\n const toasterHeight = getToastStackHeight(index);\n\n return useMemo(() => {\n if (index === toastCount - 1) {\n return {\n top: 0,\n zIndex: 3,\n };\n } else if (\n extraToastsVisible ||\n (!extraToastsVisible &&\n (toastCount <= toastsBeforeStack ||\n (toastCount > toastsBeforeStack &&\n index >= toastCount - toastsBeforeStack)))\n ) {\n return {\n top: toasterHeight,\n };\n } else {\n if (toastCount > toastsBeforeStack) {\n if (index === toastCount - toastsBeforeStack - 1) {\n return {\n top: `calc(${toasterHeight || 0}px - ${STACKED_TOAST_HEIGHT} +\n ${STACKED_TOAST_PEEK_HEIGHT})`,\n zIndex: 1,\n };\n } else if (index <= toastCount - toastsBeforeStack - 2) {\n return {\n top: `calc(${toasterHeight || 0}px -\n ${STACKED_TOAST_HEIGHT} \n + ${STACKED_TOAST_PEEK_HEIGHT} * 2)`,\n zIndex: 0,\n };\n }\n }\n }\n return undefined;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [toastHeights]);\n};\n","import cx from \"classnames\";\nimport { forwardRef, useEffect, useRef, useState } from \"react\";\n\nimport { Alert, type AlertProps } from \"../../Alert\";\nimport { Button, type ButtonProps } from \"../../Button\";\nimport { ProgressBar, type ProgressBarProps } from \"../../ProgressBar\";\nimport { useSwipe, type UseSwipeFn } from \"../../../hooks\";\n\nimport { ANIMATION_DURATION } from \"./constants\";\nimport { addOrUpdateToastHeight } from \"./addOrUpdateToastHeight\";\nimport { toast } from \"../toast\";\nimport { useCloseToast } from \"./useCloseToast\";\nimport { useToastPositionStyles } from \"./useToastPositionStyles\";\nimport { useToasts } from \"./useToasts\";\n\nimport styles from \"./Toaster.module.scss\";\n\ntype ToastAction = Pick<ButtonProps, \"appearance\" | \"onClick\"> & {\n /** Visible button text. */\n label: string;\n};\n\nexport type ToastProps = {\n /** One required and one optional action; providing actions disables auto-dismiss. */\n actions?: { primary: ToastAction; secondary?: ToastAction };\n /** Extra classes on the positioning wrapper, not the alert. */\n containerClassName?: string;\n /** Overrides the toaster timeout; `false` keeps the toast open. */\n duration?: number | false;\n /** Optional detail rendered below the title. */\n message?: string;\n /** Runs whenever the toast is removed, regardless of the dismissal path. */\n onDismiss?: () => void;\n /** Shows determinate progress or an indeterminate loading bar. */\n progress?: ProgressBarProps[\"value\"] | \"indeterminate\";\n /** Extra classes on the alert, not the positioning wrapper. */\n toastClassName?: string;\n\n /**\n * When set, displays the AI mark inline after the toast title.\n * Use `true` for the sparkle only, or pass tooltip/popover configuration.\n */\n aiMark?: AlertProps[\"aiMark\"];\n /** Generated by status-specific toast methods and used for updates or dismissal. */\n id: string;\n /**\n * Runs only from the close button. Use `onDismiss` to observe every removal\n * path.\n */\n onClose?: AlertProps[\"onClose\"];\n /** Determines the alert treatment and status icon. */\n status: AlertProps[\"status\"];\n /** Rendered as the notification heading. */\n title: string;\n\n createdAt?: number;\n index?: number;\n isBelowStackIndex?: boolean;\n isStacked?: boolean;\n pausedStatus?: number | \"resumed\";\n};\n\n/** Renders one alert within a toast stack. */\nexport const Toast = forwardRef<HTMLDivElement, ToastProps>(\n (\n {\n actions,\n containerClassName,\n createdAt,\n duration: durationProp,\n index = 0,\n isBelowStackIndex,\n isStacked,\n message,\n onClose,\n onDismiss: _onDismiss,\n pausedStatus,\n progress,\n toastClassName,\n ...alertProps\n },\n ref,\n ) => {\n const { setToastHeights, extraToastsVisible, isDialogToaster } =\n useToasts();\n const closeToast = useCloseToast(styles.close);\n const toastPositionStyles = useToastPositionStyles(index);\n\n const toastWrapperRef = useRef<HTMLDivElement>(null);\n const timerRef = useRef<NodeJS.Timeout | undefined>();\n const pausedAtRef = useRef<number>(0);\n const createdAtRef = useRef<number>(createdAt ?? 0);\n const hasBeenStackedRef = useRef<boolean>(false);\n\n const [transitionClass, setTransitionClass] = useState<string | undefined>(\n styles.hidden,\n );\n const [toastOpened, setToastOpened] = useState<boolean>(false);\n\n const duration = actions ? false : durationProp;\n\n const alertClasses = cx(\n styles[\"toast-alert\"],\n toastClassName,\n transitionClass,\n );\n\n useEffect(() => {\n if (!toastOpened) {\n setTransitionClass(styles.open);\n\n setTimeout(() => {\n setTransitionClass(undefined);\n }, ANIMATION_DURATION);\n\n // Reduced motion may suppress the animation event.\n setToastOpened(true);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n if (toastWrapperRef.current && toastOpened && !isStacked) {\n if ((isBelowStackIndex && extraToastsVisible) || isDialogToaster) {\n const delay = isDialogToaster ? 0 : ANIMATION_DURATION;\n\n setTimeout(() => {\n const height = toastWrapperRef.current?.clientHeight;\n addOrUpdateToastHeight(alertProps.id, height ?? 0, setToastHeights);\n }, delay); // Wait for the width transition before measuring.\n } else {\n const height = toastWrapperRef.current.clientHeight;\n addOrUpdateToastHeight(alertProps.id, height, setToastHeights);\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n toastOpened,\n isStacked,\n extraToastsVisible,\n isDialogToaster,\n actions,\n message,\n alertProps.title,\n ]);\n\n useEffect(() => {\n if (duration && !isStacked) {\n if (!pausedStatus) {\n timerRef.current = setTimeout(\n () => closeToast(alertProps.id),\n duration,\n );\n return () => clearTimeout(timerRef.current);\n } else if (typeof pausedStatus === \"number\") {\n clearTimeout(timerRef.current);\n pausedAtRef.current = pausedStatus;\n } else if (pausedStatus === \"resumed\") {\n const remainingDuration =\n pausedAtRef.current === 0\n ? duration\n : duration + (createdAtRef.current || 0) - pausedAtRef.current;\n\n timerRef.current = setTimeout(() => {\n closeToast(alertProps.id);\n pausedAtRef.current = 0;\n }, remainingDuration);\n\n return () => clearTimeout(timerRef.current);\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [createdAtRef.current, duration, pausedStatus]);\n\n useEffect(() => {\n if (duration) {\n if (isStacked) {\n clearTimeout(timerRef.current);\n hasBeenStackedRef.current = true;\n } else if (\n !isStacked &&\n hasBeenStackedRef.current &&\n !(typeof pausedStatus === \"number\")\n ) {\n createdAtRef.current = Date.now();\n\n timerRef.current = setTimeout(() => {\n closeToast(alertProps.id);\n hasBeenStackedRef.current = false;\n }, duration);\n\n return () => clearTimeout(timerRef.current);\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isStacked, duration]);\n\n const onSwipe = (dir: UseSwipeFn[\"direction\"]) => {\n if (dir === \"right\") {\n toast.dismiss(alertProps.id);\n return;\n }\n };\n\n const { direction, ...touchProps } = useSwipe(onSwipe);\n\n const alertCloseProps:\n | {\n onClose: AlertProps[\"onClose\"];\n }\n | Record<string, never> =\n isStacked && !extraToastsVisible\n ? {}\n : {\n onClose,\n };\n\n const hasMessage = message && message !== \"\";\n const hasProgress = progress != null;\n\n return (\n <div\n data-anv=\"toast\"\n className={containerClassName}\n style={toastPositionStyles ?? { top: \"1.5rem\" }}\n ref={toastWrapperRef}\n onAnimationStart={() => setToastOpened(true)}\n role={isStacked ? \"presentation\" : undefined}\n {...touchProps}\n >\n <Alert\n className={alertClasses}\n {...alertProps}\n {...alertCloseProps}\n ref={ref}\n tabIndex={isStacked && !extraToastsVisible ? -1 : 0}\n >\n {hasMessage || hasProgress || actions ? (\n <>\n {hasMessage ? (\n <div\n className={styles[\"message-container\"]}\n id={`toast-message-${alertProps.id}`}\n >\n {message}\n </div>\n ) : null}\n\n {hasProgress ? (\n <>\n {progress === \"indeterminate\" ? (\n <ProgressBar\n aria-labelledby={`toast-message-${alertProps.id}`}\n indeterminate\n />\n ) : (\n <ProgressBar\n aria-labelledby={`toast-message-${alertProps.id}`}\n value={progress}\n />\n )}\n </>\n ) : null}\n\n {actions ? (\n <div className={styles[\"alert-action\"]}>\n <Button\n appearance={actions.primary.appearance}\n onClick={actions.primary.onClick}\n size=\"small\"\n >\n {actions.primary.label}\n </Button>\n\n {actions.secondary && (\n <Button\n appearance={actions.secondary.appearance}\n onClick={actions.secondary.onClick}\n size=\"small\"\n >\n {actions.secondary.label}\n </Button>\n )}\n </div>\n ) : null}\n </>\n ) : null}\n </Alert>\n </div>\n );\n },\n);\n\nToast.displayName = \"Toast\";\n","import { type MutableRefObject, useEffect, useRef, useState } from \"react\";\nimport { getActiveElement } from \"../../../internal/functions\";\n\ntype HotkeyFocusParams = {\n disabled: boolean;\n hotkey: string;\n onHotkeyIn?: () => void | Promise<void>;\n onHotkeyOut?: () => void | Promise<void>;\n refToFocus: MutableRefObject<HTMLElement>;\n rootRef: MutableRefObject<HTMLElement>;\n};\n\n/**\n * Moves focus into a region on a hotkey and restores the previous target on\n * Escape.\n */\nexport const useHotkeyFocus = ({\n disabled,\n hotkey,\n onHotkeyIn,\n onHotkeyOut,\n refToFocus,\n rootRef,\n}: HotkeyFocusParams) => {\n const [shouldEscapeRefocus, setShouldEscapeRefocus] = useState(false);\n const previousFocusElement = useRef<HTMLElement | null>(null);\n\n useEffect(() => {\n if (disabled || typeof document === \"undefined\") return;\n const rootElement = rootRef.current;\n\n const blurHandler = (e: FocusEvent) => {\n if (e.relatedTarget && rootElement.contains(e.relatedTarget as Node)) {\n return;\n }\n // Manual focus departure cancels Escape restoration.\n setShouldEscapeRefocus(false);\n };\n\n const keyDownHandler = async (e: KeyboardEvent) => {\n const activeElement = getActiveElement(document);\n\n if (\n activeElement?.tagName.toLowerCase() !== \"input\" &&\n activeElement?.tagName.toLowerCase() !== \"textarea\" &&\n activeElement?.tagName.toLowerCase() !== \"pre\" &&\n e.key === hotkey\n ) {\n e.preventDefault();\n previousFocusElement.current = activeElement as HTMLElement | null;\n await onHotkeyIn?.();\n\n if (refToFocus.current) {\n refToFocus.current.focus();\n setShouldEscapeRefocus(true);\n if (refToFocus.current.scrollTo) {\n refToFocus.current.scrollTo();\n }\n }\n } else if (e.code === \"Escape\" && shouldEscapeRefocus) {\n onHotkeyOut?.();\n if (\n previousFocusElement.current &&\n previousFocusElement.current.tagName.toLowerCase() !== \"body\"\n ) {\n (previousFocusElement.current as HTMLElement).focus();\n } else {\n (activeElement as HTMLElement).blur();\n }\n }\n };\n\n document.addEventListener(\"keydown\", keyDownHandler);\n rootElement.addEventListener(\"focusout\", blurHandler);\n\n return () => {\n document.removeEventListener(\"keydown\", keyDownHandler);\n rootElement.removeEventListener(\"focusout\", blurHandler);\n };\n }, [\n hotkey,\n disabled,\n rootRef,\n shouldEscapeRefocus,\n onHotkeyIn,\n refToFocus,\n onHotkeyOut,\n ]);\n\n return { returnFocusRef: previousFocusElement };\n};\n","import { type CSSProperties, useMemo } from \"react\";\nimport { useToasts } from \"./useToasts\";\n\n/** Positions the expand button after the visible toast heights. */\nexport const useShowMoreButtonPositionStyles = (): CSSProperties => {\n const { toasts, toastHeights, toastsBeforeStack } = useToasts();\n const totalToasts = toasts.length;\n const extraSpace = totalToasts > toastsBeforeStack + 1 ? \"2rem\" : \"1rem\";\n const top = useMemo(() => {\n if (totalToasts > toastsBeforeStack) {\n const heightMap = new Map(toastHeights.map((t) => [t.id, t.height]));\n\n return toasts\n .slice(-toastsBeforeStack)\n .map((t) => heightMap.get(t.id))\n .filter((h): h is number => h !== undefined)\n .reduce((t, c) => t + c, 0);\n }\n return \"unset\";\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [toasts, toastHeights, toastsBeforeStack]);\n\n return {\n // Compensate for rem-to-pixel rounding at non-default root sizes.\n top: `calc(${top}px + ${extraSpace} - 0.75px)`,\n position: \"absolute\",\n display: totalToasts > toastsBeforeStack ? undefined : \"none\",\n transition: \"top var(--a2-toaster-animation-duration) ease-in\",\n };\n};\n","import {\n type ComponentPropsWithoutRef,\n forwardRef,\n useEffect,\n useRef,\n useCallback,\n useState,\n useMemo,\n type CSSProperties,\n} from \"react\";\nimport cx from \"classnames\";\n\nimport { Button } from \"../../Button\";\nimport { useMergeRefs } from \"../../../hooks\";\nimport { SrOnly } from \"../../SrOnly\";\n\nimport {\n ANIMATION_DURATION,\n TOAST_STACK_PADDING,\n EXPAND_BUTTON_HEIGHT_WITH_PADDING,\n SCROLL_THRESHOLD,\n EVENT_THROTTLE_MS,\n} from \"./constants\";\nimport { Toast, type ToastProps } from \"./Toast\";\nimport { toast } from \"../toast\";\nimport { useHotkeyFocus } from \"./useHotkeyFocus\";\nimport { useShowMoreButtonPositionStyles } from \"./useShowMoreButtonPositionStyles\";\nimport { useToasts } from \"./useToasts\";\n\nimport styles from \"./Toaster.module.scss\";\n\nexport type ToastStackProps = Omit<\n ComponentPropsWithoutRef<\"div\">,\n \"children\"\n> & {\n /**\n * Auto-dismiss timeout shared by the stack. Actionable toasts ignore it.\n * Defaults to `false`.\n */\n duration?: number | false;\n /**\n * Shortcut that expands the stack, focuses its first toast, and is named in\n * the live region. Defaults to `\"t\"`.\n */\n focusKey?: string;\n /** Number of newest toasts shown before older ones stack. Defaults to `3`. */\n toastsBeforeStack?: number;\n /** Ordered toast entries managed by the provider. */\n toasts: ToastProps[];\n};\n\n/** Positions, collapses, and manages focus for the active notifications. */\nexport const ToastStack = forwardRef<HTMLDivElement, ToastStackProps>(\n (\n {\n className,\n duration = false,\n focusKey = \"t\",\n toasts,\n toastsBeforeStack = 3,\n ...props\n },\n ref,\n ) => {\n const toastStackRef = useRef<HTMLDivElement>(null);\n const firstToastRef = useRef<HTMLDivElement | null>(null);\n const mergedToastStackRef = useMergeRefs([toastStackRef, ref]);\n const {\n setToastsBeforeStack,\n extraToastsVisible,\n setExtraToastsVisible,\n getToastStackHeight,\n isDialogToaster,\n } = useToasts();\n const toastCount = toasts.length;\n const isToastStackEmpty = toastCount === 0;\n\n const lastToastCount = useRef<number>(0);\n const resizeThrottleRef = useRef(false);\n const resizeTimerRef = useRef<ReturnType<typeof setTimeout>>();\n const scrollThrottleRef = useRef(false);\n const scrollTimerRef = useRef<ReturnType<typeof setTimeout>>();\n\n const [toastStackHeight, setToastStackHeight] = useState<number>(0);\n const [disableAnimations, setDisableAnimations] = useState(false);\n const [toastPausedStatus, setToastPausedStatus] =\n useState<ToastProps[\"pausedStatus\"]>(undefined);\n const [showTopGradient, setShowTopGradient] = useState(false);\n const [showBottomGradient, setShowBottomGradient] = useState(true);\n // Avoid reading `window` during SSR.\n const [viewportHeight, setViewportHeight] = useState<number>(0);\n\n const isOverflowing =\n toastStackHeight + EXPAND_BUTTON_HEIGHT_WITH_PADDING > viewportHeight;\n\n useEffect(() => {\n setViewportHeight(window.innerHeight - TOAST_STACK_PADDING);\n\n const handleResize = () => {\n if (resizeThrottleRef.current) return;\n\n resizeThrottleRef.current = true;\n resizeTimerRef.current = setTimeout(() => {\n setViewportHeight(window.innerHeight - TOAST_STACK_PADDING);\n resizeThrottleRef.current = false;\n }, EVENT_THROTTLE_MS);\n };\n\n window.addEventListener(\"resize\", handleResize);\n return () => {\n clearTimeout(resizeTimerRef.current);\n window.removeEventListener(\"resize\", handleResize);\n };\n }, []);\n\n useEffect(() => {\n if (toastCount === 0) {\n setToastPausedStatus(undefined);\n }\n }, [toastCount]);\n\n useEffect(() => {\n const toastStackElement = toastStackRef.current;\n\n if (!extraToastsVisible) {\n setShowTopGradient(false);\n setShowBottomGradient(isOverflowing);\n return;\n }\n\n if (!toastStackElement) {\n setShowTopGradient(false);\n setShowBottomGradient(true);\n return;\n }\n\n const updateGradients = () => {\n const { scrollTop, scrollHeight, clientHeight } = toastStackElement;\n const distanceFromBottom = scrollHeight - scrollTop - clientHeight;\n\n setShowTopGradient(scrollTop > 0);\n setShowBottomGradient(distanceFromBottom > SCROLL_THRESHOLD);\n };\n\n const handleScroll = () => {\n if (scrollThrottleRef.current) return;\n\n scrollThrottleRef.current = true;\n scrollTimerRef.current = setTimeout(() => {\n updateGradients();\n scrollThrottleRef.current = false;\n }, EVENT_THROTTLE_MS);\n };\n\n updateGradients();\n\n toastStackElement.addEventListener(\"scroll\", handleScroll, {\n passive: true,\n });\n return () => {\n clearTimeout(scrollTimerRef.current);\n toastStackElement.removeEventListener(\"scroll\", handleScroll);\n };\n }, [extraToastsVisible, isOverflowing]);\n\n useEffect(() => {\n const scrollListener = (e: WheelEvent) => {\n e.preventDefault();\n e.stopPropagation();\n toastStackRef.current?.scrollTo({\n top: toastStackRef.current.scrollTop + e.deltaY,\n });\n };\n\n if (isDialogToaster) {\n // Opening a dialog would otherwise replay existing toast animations.\n setDisableAnimations(isDialogToaster);\n const animationTimer = setTimeout(() => {\n setDisableAnimations(false);\n }, 500);\n\n // Keep wheel scrolling inside the top-layer toast stack.\n const toastStackRefCurrent = toastStackRef.current;\n toastStackRefCurrent?.addEventListener(\"wheel\", scrollListener, {\n passive: false,\n });\n\n return () => {\n clearTimeout(animationTimer);\n toastStackRefCurrent?.removeEventListener(\"wheel\", scrollListener);\n };\n }\n }, [isDialogToaster]);\n\n useEffect(() => {\n let timer: NodeJS.Timeout;\n if (\n toastCount > lastToastCount.current ||\n isDialogToaster ||\n extraToastsVisible\n ) {\n setToastStackHeight(getToastStackHeight());\n } else {\n // Preserve the old height until the closing animation finishes.\n timer = setTimeout(\n () => setToastStackHeight(getToastStackHeight()),\n ANIMATION_DURATION - 10,\n );\n }\n lastToastCount.current = toastCount;\n return () => {\n clearTimeout(timer);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [getToastStackHeight, isDialogToaster, extraToastsVisible]);\n\n useEffect(() => {\n setToastsBeforeStack(toastsBeforeStack);\n }, [setToastsBeforeStack, toastsBeforeStack]);\n\n const handleCollapseStack = useCallback(() => {\n setExtraToastsVisible(false);\n setToastPausedStatus(\"resumed\");\n\n if (toastStackRef.current?.scrollTo) {\n toastStackRef.current?.scrollTo(0, 0);\n }\n }, [setExtraToastsVisible]);\n\n const handleResumeToastTimers = useCallback(() => {\n setToastPausedStatus(\"resumed\");\n }, []);\n\n const { returnFocusRef } = useHotkeyFocus({\n disabled: isToastStackEmpty,\n hotkey: focusKey,\n onHotkeyIn: async () => {\n setExtraToastsVisible(true);\n return new Promise((resolve) => {\n // Focus waits until expansion renders the hidden toast.\n setTimeout(() => {\n resolve();\n }, 100);\n });\n },\n onHotkeyOut: () => {\n handleResumeToastTimers();\n },\n refToFocus: firstToastRef as React.MutableRefObject<HTMLElement>,\n rootRef: toastStackRef as React.MutableRefObject<HTMLElement>,\n });\n\n const showMoreButtonPositionStyles = useShowMoreButtonPositionStyles();\n\n const showExpandCollapseButton = toastCount > toastsBeforeStack;\n const expandCollapseButtonText = extraToastsVisible\n ? \"Collapse all\"\n : \"Expand all\";\n\n // Expansion needs the latest measured height before state catches up.\n const currentStackHeight = useMemo(\n () => getToastStackHeight(),\n [getToastStackHeight],\n );\n\n // Reserve the button's space when deciding whether it remains in view.\n const hasOverflow =\n currentStackHeight + EXPAND_BUTTON_HEIGHT_WITH_PADDING > viewportHeight;\n\n const expandCollapseButtonTop: CSSProperties[\"top\"] = hasOverflow\n ? `calc(100dvh - 4.5rem)`\n : extraToastsVisible\n ? `calc(${currentStackHeight}px - 1rem)`\n : showMoreButtonPositionStyles.top;\n\n const toastStackClasses = cx(styles[\"toast-stack\"], className, {\n [styles[\"show-more-button\"]]:\n showExpandCollapseButton && !extraToastsVisible,\n [styles[\"show-extra-toast\"]]: extraToastsVisible,\n [styles[\"disable-animations\"]]: disableAnimations,\n [styles[\"has-overflow\"]]: hasOverflow,\n });\n\n const handleToastStackFocusHover = () => {\n if (toastPausedStatus === \"resumed\" || toastPausedStatus === undefined) {\n setToastPausedStatus(Date.now());\n }\n };\n\n const handleToastStackOnBlur = () => {\n if (!toastStackRef.current?.matches(\":focus-within\")) {\n handleResumeToastTimers();\n }\n };\n\n const handleExpandCollapseClick = () => {\n if (extraToastsVisible) {\n handleCollapseStack();\n } else {\n setExtraToastsVisible(true);\n }\n };\n\n let toastStackHeightStyle: CSSProperties[\"height\"] = 0;\n\n if (extraToastsVisible) {\n // The stack uses content-box, so its padding is outside this height.\n toastStackHeightStyle =\n \"calc(100vh - var(--a2-mod-toaster-stack-padding) * 2)\";\n } else if (toastCount > toastsBeforeStack) {\n toastStackHeightStyle = `calc(${toastStackHeight}px + 3rem + var(--a2-mod-toaster-stack-padding))`;\n } else {\n toastStackHeightStyle = toastStackHeight;\n }\n\n return (\n <>\n <div\n data-anv=\"ToastStack\"\n className={toastStackClasses}\n ref={mergedToastStackRef}\n onMouseOver={handleToastStackFocusHover}\n onMouseLeave={handleResumeToastTimers}\n onFocus={handleToastStackFocusHover}\n onBlur={handleToastStackOnBlur}\n style={{\n height: toastStackHeightStyle,\n }}\n {...props}\n >\n {toasts.map(({ toastClassName, onClose, ...toastProps }, index) => {\n const isStacked =\n !extraToastsVisible && index < toastCount - toastsBeforeStack;\n\n const isLastToastDisplayed =\n index === toastCount - toastsBeforeStack;\n\n const isHidden = index < toastCount - toastsBeforeStack - 2;\n\n const toastClasses = cx(styles.toast, toastClassName);\n const toastContainerClasses = cx(styles[\"toast-wrapper\"], {\n [styles.stacked]: isStacked || isLastToastDisplayed,\n [styles[\"stack-one\"]]:\n isStacked && index === toastCount - toastsBeforeStack - 1,\n [styles[\"stack-two\"]]:\n isStacked && index === toastCount - toastsBeforeStack - 2,\n [styles[\"stacked-extra\"]]: isHidden,\n [styles[\"stacked-show-extra\"]]: extraToastsVisible,\n });\n\n const handleOnClose = (\n e: React.MouseEvent<HTMLButtonElement, MouseEvent>,\n ) => {\n onClose?.(e);\n returnFocusRef.current?.focus();\n toast.dismiss(toastProps.id);\n };\n\n return (\n <Toast\n containerClassName={toastContainerClasses}\n duration={duration}\n index={index}\n isStacked={isStacked}\n isBelowStackIndex={index < toastCount - toastsBeforeStack}\n key={toastProps.id}\n onClose={handleOnClose}\n pausedStatus={toastPausedStatus}\n toastClassName={toastClasses}\n ref={index === 0 ? firstToastRef : undefined}\n {...toastProps}\n />\n );\n })}\n {showExpandCollapseButton && (\n <div\n className={cx(styles[\"show-more-button-container\"], {\n [styles[\"fixed-position\"]]: hasOverflow,\n })}\n style={{ top: expandCollapseButtonTop }}\n >\n <Button\n className={styles[\"show-collapse-button\"]}\n onClick={handleExpandCollapseClick}\n appearance=\"secondary\"\n >\n {expandCollapseButtonText}\n </Button>\n </div>\n )}\n {/* Keeps the last toast scrollable above the fixed button. */}\n {extraToastsVisible && hasOverflow && (\n <div\n className={styles[\"toast-stack-spacer\"]}\n style={{ top: `calc(${currentStackHeight}px + 2rem)` }}\n aria-hidden=\"true\"\n />\n )}\n <SrOnly aria-live=\"polite\">\n New toast message appeared. Press the {focusKey} key to focus on the\n toast messages. Press escape to return focus to previous position.\n </SrOnly>\n </div>\n {hasOverflow && (\n <>\n <div\n className={cx(styles[\"toast-stack-gradient-top\"], {\n [styles[\"toast-stack-gradient-visible\"]]: showTopGradient,\n })}\n aria-hidden=\"true\"\n />\n <div\n className={cx(styles[\"toast-stack-gradient-bottom\"], {\n [styles[\"toast-stack-gradient-visible\"]]: showBottomGradient,\n })}\n aria-hidden=\"true\"\n />\n </>\n )}\n </>\n );\n },\n);\n\nToastStack.displayName = \"ToastStack\";\n","import cx from \"classnames\";\nimport {\n type ComponentPropsWithoutRef,\n forwardRef,\n useEffect,\n useCallback,\n useId,\n useRef,\n useState,\n} from \"react\";\n\nimport { ANIMATION_DURATION } from \"./constants\";\nimport { ToastProvider } from \"./ToastProvider\";\nimport type {\n ToastCustomEventDetail,\n ToastCustomEventDetailAdd,\n ToastCustomEventDetailUpdate,\n ToastUpdateProps,\n} from \"./types\";\nimport type { ToastProps } from \"./Toast\";\nimport { ToastStack, type ToastStackProps } from \"./ToastStack\";\nimport { ToasterPopover } from \"./ToasterPopover\";\nimport { useCloseToast } from \"./useCloseToast\";\nimport { useMergeRefs } from \"../../../hooks\";\nimport { useToasts } from \"./useToasts\";\n\nimport styles from \"./Toaster.module.scss\";\n\nexport type ToastEventType = {\n /** Lifecycle operation reported by the toaster. */\n eventType: \"add\" | \"update\" | \"dismiss\" | \"dismiss-all\";\n /** Number of toasts remaining when the callback runs. */\n toastCount: number;\n /** Toast affected by the operation. Omitted for `dismiss-all`. */\n id?: string;\n /** Toaster that handled the operation. */\n toasterId?: string;\n /** Values used to add or update the toast. */\n toastProps?: ToastProps | ToastUpdateProps;\n};\n\nexport type ToasterProps = ComponentPropsWithoutRef<\"div\"> &\n Omit<ToastStackProps, \"toasts\"> & {\n /**\n * Prevents this instance from handling shared toast events. Defaults to\n * `false`.\n */\n disableEvents?: boolean;\n /** Identifies this toaster in lifecycle callbacks and targeted add events. */\n id: string;\n /** Runs after a shared toast event is handled. */\n onToastEvent?: (toastEvent: ToastEventType) => void;\n /**\n * Callback function that is called with the number of toasts this toaster is\n * rendering, whenever that number changes. Unlike `onToastEvent` it also\n * reports dismissals that dispatch no event, such as an elapsed `duration`,\n * so it is safe to gate work on.\n */\n onToastCountChange?: (toastCount: number) => void;\n };\n\nconst DIALOG_TOASTER_STORAGE_KEY = \"dialog-toasters\";\n\n/**\n * The instance token distinguishes dialog toasters that share an ID, while\n * bare IDs remain readable for compatibility with older bundles.\n */\nconst toasterIdFromEntry = (entry: string) => {\n const separator = entry.lastIndexOf(\"#\");\n return separator === -1 ? entry : entry.slice(0, separator);\n};\n\ntype DialogToasterCustomEventDetail = {\n eventType: \"dialog-toaster\";\n};\ntype DialogToasterCustomEvent = CustomEvent<DialogToasterCustomEventDetail>;\n\n/** Event-driven toaster content shared by page and dialog hosts. */\nexport const ToasterContent = forwardRef<HTMLDivElement, ToasterProps>(\n (\n {\n className,\n disableEvents = false,\n id,\n onToastEvent,\n onToastCountChange,\n\n duration,\n focusKey,\n toastsBeforeStack,\n ...props\n },\n ref,\n ) => {\n const toasterRef = useRef<HTMLDivElement>(null);\n const mergedToasterRef = useMergeRefs([toasterRef, ref]);\n\n const { toasts, setToasts, isDialogToaster } = useToasts();\n\n // Event listeners stay mounted while these values change.\n const disableEventsRef = useRef<boolean>(disableEvents);\n const toastCountRef = useRef<number>(0);\n const isDialogToasterRef = useRef<boolean>(isDialogToaster);\n const isRegisteredDialogToasterRef = useRef<boolean>(false);\n const instanceToken = useId();\n const dialogToasterEntry = `${id}#${instanceToken}`;\n const onToastCountChangeRef = useRef(onToastCountChange);\n\n const [shouldHideToaster, setShouldHideToaster] = useState(false);\n\n /** Persists each instance so dialogs sharing an ID unregister independently. */\n const updateDialogToasterStorage = useCallback(\n (isDialogToaster: boolean) => {\n if (isDialogToaster === isRegisteredDialogToasterRef.current) {\n return;\n }\n isRegisteredDialogToasterRef.current = isDialogToaster;\n\n const dialogToasters: string[] = JSON.parse(\n window?.sessionStorage.getItem(DIALOG_TOASTER_STORAGE_KEY) ?? \"[]\",\n );\n\n if (isDialogToaster) {\n dialogToasters.push(dialogToasterEntry);\n } else {\n const index = dialogToasters.indexOf(dialogToasterEntry);\n if (index === -1) {\n return;\n }\n dialogToasters.splice(index, 1);\n }\n\n window?.sessionStorage.setItem(\n DIALOG_TOASTER_STORAGE_KEY,\n JSON.stringify(dialogToasters),\n );\n },\n [dialogToasterEntry],\n );\n\n useEffect(() => {\n disableEventsRef.current = disableEvents;\n }, [disableEvents]);\n\n useEffect(() => {\n onToastCountChangeRef.current = onToastCountChange;\n }, [onToastCountChange]);\n\n useEffect(() => {\n toastCountRef.current = toasts.length;\n onToastCountChangeRef.current?.(toasts.length);\n }, [toasts.length]);\n\n useEffect(() => {\n updateDialogToasterStorage(isDialogToaster);\n isDialogToasterRef.current = isDialogToaster;\n\n const DialogToasterEvent: DialogToasterCustomEvent =\n new CustomEvent<DialogToasterCustomEventDetail>(\"dialog-toaster\", {\n composed: true,\n detail: {\n eventType: \"dialog-toaster\",\n },\n });\n dispatchEvent(DialogToasterEvent);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isDialogToaster]);\n\n const closeToast = useCloseToast(styles.close);\n\n useEffect(() => {\n let timeout: NodeJS.Timeout | undefined;\n updateDialogToasterStorage(isDialogToaster);\n\n const toastEventListener = (e: Event) => {\n if (disableEventsRef.current) {\n return;\n }\n\n const { eventType, ...toastProps } = (\n e as CustomEvent<ToastCustomEventDetail>\n ).detail;\n\n if (eventType === \"add\") {\n const toastAddProps = toastProps as ToastCustomEventDetailAdd;\n\n if (!toastAddProps.toasterId || toastAddProps.toasterId === id) {\n setToasts((prev) => [...prev, toastProps as ToastProps]);\n }\n\n // allow for state change to finish before calling onToastEvent()\n timeout = setTimeout(() => {\n onToastEvent?.({\n eventType: \"add\",\n toastCount: toastCountRef.current,\n id: toastAddProps.id,\n toasterId: id,\n toastProps: toastAddProps,\n });\n });\n } else if (eventType === \"update\") {\n const toastUpdateProps = toastProps as ToastCustomEventDetailUpdate;\n\n setToasts((prev) => {\n return prev.map((t) => {\n if (t.id === toastUpdateProps.id) {\n return {\n ...t,\n ...toastUpdateProps,\n };\n } else {\n return t;\n }\n });\n });\n\n onToastEvent?.({\n eventType: \"update\",\n toastCount: toastCountRef.current,\n id: toastUpdateProps.id,\n toasterId: id,\n toastProps: toastUpdateProps,\n });\n } else if (eventType === \"dismiss\") {\n if (toastProps.id) {\n closeToast(toastProps.id);\n\n // allow for animation to finish before calling onToastEvent()\n timeout = setTimeout(() => {\n onToastEvent?.({\n eventType: \"dismiss\",\n toastCount: toastCountRef.current,\n id: toastProps.id,\n toasterId: id,\n });\n }, ANIMATION_DURATION);\n } else {\n closeToast();\n\n onToastEvent?.({\n eventType: \"dismiss-all\",\n toastCount: 0,\n toasterId: id,\n });\n }\n }\n };\n\n const dialogToasterEventListener = (e: Event) => {\n const { eventType } = (e as CustomEvent<DialogToasterCustomEventDetail>)\n .detail;\n if (eventType === \"dialog-toaster\") {\n const dialogToasters: string[] = JSON.parse(\n window?.sessionStorage.getItem(DIALOG_TOASTER_STORAGE_KEY) ?? \"[]\",\n );\n if (dialogToasters.length > 0) {\n if (\n isDialogToasterRef.current &&\n toasterIdFromEntry(dialogToasters[dialogToasters.length - 1]) ===\n id\n ) {\n setShouldHideToaster(false);\n } else {\n setShouldHideToaster(true);\n }\n } else {\n setShouldHideToaster(false);\n }\n }\n };\n\n const onPageRefreshListener = () => {\n window?.sessionStorage.removeItem(DIALOG_TOASTER_STORAGE_KEY);\n };\n\n window?.addEventListener(\"hammer-toast\", toastEventListener);\n window?.addEventListener(\"dialog-toaster\", dialogToasterEventListener);\n window?.addEventListener(\"beforeunload\", onPageRefreshListener);\n\n return () => {\n window?.removeEventListener(\"hammer-toast\", toastEventListener);\n window?.removeEventListener(\n \"dialog-toaster\",\n dialogToasterEventListener,\n );\n window?.removeEventListener(\"beforeunload\", onPageRefreshListener);\n\n clearTimeout(timeout);\n updateDialogToasterStorage(false);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const toasterClasses = cx(styles.toaster, {\n [styles[\"hidden\"]]: shouldHideToaster,\n [`${className}`]: className != null,\n });\n\n return (\n <div\n data-anv=\"toaster\"\n data-toaster-id={id}\n aria-hidden={shouldHideToaster}\n className={toasterClasses}\n ref={mergedToasterRef}\n {...props}\n >\n <ToastStack\n toasts={toasts}\n duration={duration}\n focusKey={focusKey}\n toastsBeforeStack={toastsBeforeStack}\n />\n </div>\n );\n },\n);\n\nexport const Toaster = forwardRef<HTMLDivElement, ToasterProps>(\n (props, ref) => {\n return (\n <ToastProvider>\n <ToasterPopover>\n <ToasterContent {...props} ref={ref} />\n </ToasterPopover>\n </ToastProvider>\n );\n },\n);\n\nToaster.displayName = \"Toaster\";\nToasterContent.displayName = \"ToasterContent\";\n"],"names":["toasts","uuid","promise","isDialogToaster"],"mappings":"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","x_google_ignoreList":[5,6,7]}
@@ -2,19 +2,19 @@ import { jsx, jsxs } from 'react/jsx-runtime';
2
2
  import { forwardRef, useId, useState, useEffect, useContext, useMemo, useRef, useCallback } from 'react';
3
3
  import { B as Button } from './Button-B_E6ybA-.js';
4
4
  import { A as ANV_PART_ATTR } from './anvParts-DFVq7-Cm.js';
5
- import { c as useOverFlowItemContext, u as useToolbarSize, s as styles$2, P as PARTS, d as ToolbarItemWrapper, b as ToolbarContext, O as OverflowItemContext, e as handleMenuKeyboardNavigation, T as ToolbarButtonToggle, a as updateToolbarItemsTabIndex, h as handleToolbarKeyDown } from './ToolbarButtonToggle-BDfoHeie.js';
6
- import { T as Tooltip } from './Tooltip-C_VcYS9P.js';
5
+ import { c as useOverFlowItemContext, u as useToolbarSize, s as styles$2, P as PARTS, d as ToolbarItemWrapper, b as ToolbarContext, O as OverflowItemContext, e as handleMenuKeyboardNavigation, T as ToolbarButtonToggle, a as updateToolbarItemsTabIndex, h as handleToolbarKeyDown } from './ToolbarButtonToggle-CNIaqVWl.js';
6
+ import { T as Tooltip } from './Tooltip-CsTkZqMg.js';
7
7
  import { c as cx } from './index-De1g9FRV.js';
8
8
  import { useTrackingId } from './useTrackingId.js';
9
9
  import { B as ButtonLink } from './ButtonLink-DOFAxNvC.js';
10
10
  import { S as SvgArrowDropDown } from './arrow_drop_down-ChAdBDux.js';
11
- import { L as Listbox } from './Listbox-BR0YQIee.js';
12
- import { P as Popover } from './AiMark-CYXbKuCA.js';
11
+ import { L as Listbox } from './Listbox-n1CmJ2gh.js';
12
+ import { P as Popover } from './AiMark-Ca7WmL-9.js';
13
13
  import { F as Flex } from './Flex-CRF7gj0_.js';
14
14
  import { S as SvgMoreHoriz } from './more_horiz-DJgdQiy0.js';
15
15
  import { S as SvgMoreVert } from './more_vert-C_lJSyxt.js';
16
16
  import { I as Icon } from './Icon-B5zwN7GD.js';
17
- import { S as SearchField } from './SearchField-DX8hZyo2.js';
17
+ import { S as SearchField } from './SearchField-INVftpNM.js';
18
18
  import { u as useLayoutPropsUtil } from './useLayoutPropsUtil-DjqeAJZ9.js';
19
19
  import { u as useMergeRefs } from './useMergeRefs-Dfmtq9cI.js';
20
20
 
@@ -501,4 +501,4 @@ Toolbar.displayName = "Toolbar";
501
501
  const ToolbarElement = Toolbar;
502
502
 
503
503
  export { Toolbar as T, ToolbarButton as a, ToolbarButtonLink as b, ToolbarSelect as c, ToolbarControlGroup as d, ToolbarSearchField as e, ToolbarElement as f };
504
- //# sourceMappingURL=Toolbar-DgPah7M3.js.map
504
+ //# sourceMappingURL=Toolbar-BhrHuIN7.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Toolbar-DgPah7M3.js","sources":["../src/beta/components/Toolbar/ToolbarButton.tsx","../src/beta/components/Toolbar/ToolbarButtonLink.tsx","../src/beta/components/Toolbar/ToolbarSelect.tsx","../src/beta/components/Toolbar/internal/ToolbarOverflowMenu.tsx","../src/beta/components/Toolbar/ToolbarControlGroup.tsx","../src/beta/components/Toolbar/ToolbarSearchField.tsx","../src/beta/components/Toolbar/Toolbar.tsx"],"sourcesContent":["import { forwardRef } from \"react\";\nimport Button, { type ButtonProps } from \"../../../components/Button\";\nimport type { ToolbarItemAppearance, WithAriaLabelEnforcement } from \"./types\";\nimport type { DataTrackingId } from \"../../../types\";\nimport { ANV_PART_ATTR } from \"../../../internal/constants/anvParts\";\nimport { useOverFlowItemContext } from \"./internal/ToolbarItemOverflowContext\";\nimport Tooltip from \"../../../components/Tooltip\";\nimport { ToolbarItemWrapper } from \"./internal/ToolbarItemWrapper\";\nimport { useTrackingId } from \"../../../hooks\";\nimport { useToolbarSize } from \"./internal/ToolbarContext\";\nimport { PARTS } from \"./parts\";\n\nimport cx from \"classnames\";\nimport styles from \"./Toolbar.module.scss\";\n\n/** @extends Omit<ButtonProps, \"appearance\" | \"aria-label\" | \"children\"> */\ntype ToolbarButtonBaseProps = Omit<\n ButtonProps,\n \"appearance\" | \"aria-label\" | \"children\"\n> & {\n /** Visual emphasis within the toolbar. Defaults to `ghost`. */\n appearance?: ToolbarItemAppearance;\n};\n\n/** @extends WithAriaLabelEnforcement<ToolbarButtonBaseProps> */\nexport type ToolbarButtonProps =\n WithAriaLabelEnforcement<ToolbarButtonBaseProps> & DataTrackingId;\n\n/**\n * Toolbar action that inherits its size and participates in roving focus and\n * collapse overflow. Icon-only actions show their `aria-label` in a tooltip.\n *\n * @example\n * <ToolbarButton icon={BoldIcon} aria-label=\"Bold text\" />\n */\nexport const ToolbarButton = forwardRef<HTMLButtonElement, ToolbarButtonProps>(\n (props, _ref) => {\n const { appearance = \"ghost\", className, children, ...rest } = props;\n\n const { isInOverflowMenu = false } = useOverFlowItemContext?.() || {};\n const size = useToolbarSize();\n\n const trackingId = useTrackingId({\n name: \"ToolbarButton\",\n data: {\n disabled: props.disabled,\n \"aria-label\": props[\"aria-label\"],\n children: props.children,\n },\n hasOverride: !!props[\"data-tracking-id\"],\n });\n\n const buttonClassNames = cx(className, styles[\"toolbar-button-item\"]);\n\n // Default PARTS.item before {...rest} so callers (e.g. FilterBar) can override.\n const item = children ? (\n <Button\n data-tracking-id={trackingId}\n appearance={appearance}\n size={size}\n data-anv=\"toolbar-button\"\n className={buttonClassNames}\n {...{ [ANV_PART_ATTR]: PARTS.item }}\n {...rest}\n >\n {children}\n </Button>\n ) : (\n <Tooltip>\n <Tooltip.Trigger>\n <Button\n data-tracking-id={trackingId}\n appearance={appearance}\n size={size}\n data-anv=\"toolbar-button\"\n className={buttonClassNames}\n {...{ [ANV_PART_ATTR]: PARTS.item }}\n {...rest}\n />\n </Tooltip.Trigger>\n <Tooltip.Content>{rest[\"aria-label\"]}</Tooltip.Content>\n </Tooltip>\n );\n\n if (isInOverflowMenu) {\n return item;\n }\n\n return (\n <ToolbarItemWrapper item={{ itemProps: props, itemType: \"button\" }}>\n {item}\n </ToolbarItemWrapper>\n );\n },\n);\n\nToolbarButton.displayName = \"ToolbarButton\";\n","import { forwardRef } from \"react\";\nimport ButtonLink, {\n type ButtonLinkProps,\n} from \"../../../components/ButtonLink\";\nimport type { ToolbarItemAppearance, WithAriaLabelEnforcement } from \"./types\";\nimport type { DataTrackingId } from \"../../../types\";\nimport { useOverFlowItemContext } from \"./internal/ToolbarItemOverflowContext\";\nimport Tooltip from \"../../../components/Tooltip\";\nimport { ToolbarItemWrapper } from \"./internal/ToolbarItemWrapper\";\nimport { useTrackingId } from \"../../../hooks\";\nimport { useToolbarSize } from \"./internal/ToolbarContext\";\n\nimport cx from \"classnames\";\nimport styles from \"./Toolbar.module.scss\";\n\n/** @extends Omit<ButtonLinkProps, \"appearance\" | \"aria-label\" | \"children\"> */\ntype ToolbarButtonLinkBaseProps = Omit<\n ButtonLinkProps,\n \"appearance\" | \"aria-label\" | \"children\"\n> & {\n /** Visual emphasis within the toolbar. Defaults to `ghost`. */\n appearance?: ToolbarItemAppearance;\n};\n\n/** @extends WithAriaLabelEnforcement<ToolbarButtonLinkBaseProps> */\nexport type ToolbarButtonLinkProps =\n WithAriaLabelEnforcement<ToolbarButtonLinkBaseProps> & DataTrackingId;\n\n/**\n * Toolbar link that inherits its size and participates in roving focus and\n * collapse overflow. Icon-only links show their `aria-label` in a tooltip.\n *\n * @example\n * <ToolbarButtonLink icon={ExternalLinkIcon} href=\"/docs\" aria-label=\"Documentation\" />\n */\nexport const ToolbarButtonLink = forwardRef<\n HTMLAnchorElement,\n ToolbarButtonLinkProps\n>((props, _ref) => {\n const { appearance = \"ghost\", className, children, ...rest } = props;\n\n const { isInOverflowMenu = false } = useOverFlowItemContext?.() || {};\n const size = useToolbarSize();\n\n const trackingId = useTrackingId({\n name: \"ToolbarButtonLink\",\n data: {\n href: props.href,\n disabled: props.disabled,\n \"aria-label\": props[\"aria-label\"],\n children: props.children,\n target: props.target,\n },\n hasOverride: !!props[\"data-tracking-id\"],\n });\n\n const buttonLinkClassNames = cx(className, styles[\"toolbar-button-item\"]);\n\n const item = children ? (\n <ButtonLink\n data-tracking-id={trackingId}\n appearance={appearance}\n size={size}\n data-anv=\"toolbar-button-link\"\n className={buttonLinkClassNames}\n {...rest}\n >\n {children}\n </ButtonLink>\n ) : (\n <Tooltip>\n <Tooltip.Trigger>\n <ButtonLink\n data-tracking-id={trackingId}\n appearance={appearance}\n size={size}\n data-anv=\"toolbar-button-link\"\n className={buttonLinkClassNames}\n {...rest}\n />\n </Tooltip.Trigger>\n <Tooltip.Content>{rest[\"aria-label\"]}</Tooltip.Content>\n </Tooltip>\n );\n\n if (isInOverflowMenu) {\n return item;\n }\n\n return (\n <ToolbarItemWrapper item={{ itemProps: props, itemType: \"buttonLink\" }}>\n {item}\n </ToolbarItemWrapper>\n );\n});\n\nToolbarButtonLink.displayName = \"ToolbarButtonLink\";\n","import { forwardRef, useEffect, useId, useState } from \"react\";\nimport ArrowDropDown from \"@servicetitan/hammer-icon/mdi/round/arrow_drop_down.svg\";\nimport Listbox, { type ListboxItemType } from \"../../../components/Listbox\";\nimport Popover from \"../../../internal/components/Popover\";\nimport type { ToolbarItemAppearance } from \"./types\";\nimport type { DataTrackingId } from \"../../../types\";\nimport { useOverFlowItemContext } from \"./internal/ToolbarItemOverflowContext\";\nimport { ToolbarItemWrapper } from \"./internal/ToolbarItemWrapper\";\nimport { useTrackingId } from \"../../../hooks\";\nimport { useToolbarSize } from \"./internal/ToolbarContext\";\n\nimport cx from \"classnames\";\nimport styles from \"./Toolbar.module.scss\";\n\ntype ToolbarSelectItem<T = Record<string, unknown>> = ListboxItemType<\n T & {\n id: string;\n }\n>;\n\n/** @extends Omit<React.ComponentPropsWithoutRef<typeof Popover.Button>, \"appearance\" | \"onChange\"> */\nexport type ToolbarSelectProps<T = Record<string, unknown>> = Omit<\n React.ComponentPropsWithoutRef<typeof Popover.Button>,\n \"appearance\" | \"onChange\"\n> & {\n /** Visual emphasis within the toolbar. Defaults to `ghost`. */\n appearance?: ToolbarItemAppearance;\n /** Called with the selected item's ID. */\n onChange?: (optionId: string) => void;\n /** Controlled selected ID. Omit to select and manage the first item internally. */\n selected?: string;\n /** Options displayed in the listbox; the first is the uncontrolled default. */\n items: ToolbarSelectItem<T>[];\n /** Accessible name for the options popover, such as \"Status options\". */\n accessibleLabel: string;\n} & DataTrackingId;\n\n/**\n * Single-select toolbar control that inherits its size and participates in\n * roving focus and collapse overflow.\n */\nexport const ToolbarSelect = forwardRef<HTMLButtonElement, ToolbarSelectProps>(\n (props, _ref) => {\n const {\n appearance = \"ghost\",\n onChange,\n selected: selectedItemId,\n accessibleLabel,\n className,\n items,\n ...rest\n } = props;\n const selectId = useId();\n\n const [isPopoverOpen, setIsPopoverOpen] = useState(false);\n\n const defaultId = items.length > 0 ? items[0].id : \"\";\n const [internalSelectedId, setInternalSelectedId] = useState(defaultId);\n\n const selectedId = selectedItemId ?? internalSelectedId;\n\n const selectedItem =\n items.find((item) => item.id === selectedId) ||\n items.find((item) => item.id === defaultId);\n\n useEffect(() => {\n if (\n !selectedItemId &&\n items.length > 0 &&\n !items.some((item) => item.id === internalSelectedId)\n ) {\n setInternalSelectedId(items[0].id);\n }\n }, [items, selectedItemId, internalSelectedId]);\n\n const handleSelectionChange = (\n selected: ToolbarSelectItem<Record<string, unknown>> | undefined,\n ) => {\n if (selected?.id) {\n if (selectedItemId === undefined) {\n setInternalSelectedId(selected.id);\n }\n\n onChange?.(selected.id);\n\n setIsPopoverOpen(false);\n }\n };\n\n const { isInOverflowMenu = false } = useOverFlowItemContext?.() || {};\n const toolbarSize = useToolbarSize();\n\n const trackingId = useTrackingId({\n name: \"ToolbarSelect\",\n data: {\n selected: props.selected,\n disabled: props.disabled,\n \"aria-label\": props[\"aria-label\"],\n items: props.items,\n },\n hasOverride: !!props[\"data-tracking-id\"],\n });\n\n const buttonClassNames = cx(className, styles[\"toolbar-button-item\"]);\n\n const item = (\n <Popover\n noPadding\n open={isPopoverOpen}\n onClickOutside={() => {\n setIsPopoverOpen(false);\n }}\n onClose={() => {\n setIsPopoverOpen(false);\n }}\n >\n <Popover.Button\n data-tracking-id={trackingId}\n appearance={appearance}\n size={toolbarSize}\n icon={{ after: ArrowDropDown }}\n className={buttonClassNames}\n id={selectId}\n data-anv=\"toolbar-select\"\n onClick={() => {\n setIsPopoverOpen(!isPopoverOpen);\n }}\n {...rest}\n >\n {selectedItem?.label}\n </Popover.Button>\n <Popover.Content\n className={styles[\"toolbar-select-content\"]}\n aria-label={accessibleLabel}\n >\n <Listbox\n selected={selectedItem}\n onSelectionChange={handleSelectionChange}\n items={items}\n aria-labelledby={selectId}\n disableAutoSelectOnFocus={true}\n >\n {({ items }) =>\n items.map((item) => (\n <Listbox.Option key={item.label} item={item}>\n {item.label}\n </Listbox.Option>\n ))\n }\n </Listbox>\n </Popover.Content>\n </Popover>\n );\n\n if (isInOverflowMenu) {\n return item;\n }\n\n return (\n <ToolbarItemWrapper item={{ itemProps: props, itemType: \"select\" }}>\n {item}\n </ToolbarItemWrapper>\n );\n },\n);\n\nToolbarSelect.displayName = \"ToolbarSelect\";\n","import { type ReactElement, useContext, useId, useMemo } from \"react\";\nimport MoreHoriz from \"@servicetitan/hammer-icon/mdi/round/more_horiz.svg\";\nimport MoreVert from \"@servicetitan/hammer-icon/mdi/round//more_vert.svg\";\nimport type { ToolbarItemProps } from \"../types\";\nimport { ToolbarButton, type ToolbarButtonProps } from \"../ToolbarButton\";\nimport {\n ToolbarButtonToggle,\n type ToolbarButtonToggleProps,\n} from \"../ToolbarButtonToggle\";\nimport {\n ToolbarButtonLink,\n type ToolbarButtonLinkProps,\n} from \"../ToolbarButtonLink\";\nimport { ToolbarSelect, type ToolbarSelectProps } from \"../ToolbarSelect\";\nimport { ToolbarContext, useToolbarSize } from \"./ToolbarContext\";\nimport Popover from \"../../../../internal/components/Popover\";\nimport Icon from \"../../../../components/Icon\";\nimport { OverflowItemContext } from \"./ToolbarItemOverflowContext\";\nimport { handleMenuKeyboardNavigation } from \"./utils/accessibility\";\nimport { ANV_PART_ATTR } from \"../../../../internal/constants/anvParts\";\nimport { PARTS } from \"../parts\";\n\nimport cx from \"classnames\";\nimport styles from \"../Toolbar.module.scss\";\n\nconst OverflowItem = ({ itemType, itemProps }: ToolbarItemProps) => {\n switch (itemType) {\n case \"button\":\n return <ToolbarButton {...(itemProps as ToolbarButtonProps)} />;\n\n case \"buttonToggle\":\n return (\n <ToolbarButtonToggle {...(itemProps as ToolbarButtonToggleProps)} />\n );\n\n case \"buttonLink\":\n return <ToolbarButtonLink {...(itemProps as ToolbarButtonLinkProps)} />;\n\n case \"select\":\n return <ToolbarSelect {...(itemProps as ToolbarSelectProps)} />;\n\n default:\n return null;\n }\n};\n\nexport type ToolbarOverflowMenuProps = {\n /** Items appended after controls collapsed from the toolbar. */\n additionalItems?: ReactElement[];\n /** Parent orientation used to choose the overflow icon. */\n direction?: \"vertical\" | \"horizontal\";\n};\n\n/**\n * Recreates clipped controls in their original order, followed by any\n * consumer-supplied overflow items.\n */\nexport const ToolbarOverflowMenu = ({\n additionalItems,\n direction,\n}: ToolbarOverflowMenuProps) => {\n const { overflowItems, orderedIds } = useContext(ToolbarContext);\n const menuTriggerId = useId();\n const size = useToolbarSize();\n\n const orderedItems = useMemo(() => {\n const allElements = orderedIds?.map((id) => {\n return overflowItems.find((item) => item.id === id);\n });\n\n return allElements?.filter((item) => item !== undefined) || [];\n }, [orderedIds, overflowItems]);\n\n const popoverButtonClassNames = cx(\n styles[\"toolbar-button-item\"],\n styles[\"toolbar-overflow-trigger\"],\n );\n\n const overflowIcon = direction === \"horizontal\" ? MoreHoriz : MoreVert;\n\n return (\n <Popover noPadding>\n <Popover.Button\n size={size}\n appearance=\"ghost\"\n id={menuTriggerId}\n className={popoverButtonClassNames}\n data-anv=\"toolbar-overflow-trigger\"\n aria-label=\"Additional toolbar options\"\n {...{ [ANV_PART_ATTR]: PARTS.trigger }}\n >\n <Icon svg={overflowIcon} size={size === \"xsmall\" ? \"small\" : size} />\n </Popover.Button>\n <Popover.Content>\n <OverflowItemContext.Provider value={{ isInOverflowMenu: true }}>\n <ul\n role=\"menu\"\n className={styles[\"toolbar-overflow-content\"]}\n data-anv=\"toolbar-overflow-menu\"\n aria-labelledby={menuTriggerId}\n onKeyDown={handleMenuKeyboardNavigation}\n {...{ [ANV_PART_ATTR]: PARTS.menu }}\n >\n {orderedItems.map((item) => {\n const { itemType, itemProps, id } = item;\n return (\n <li\n key={`${itemType}-${id}`}\n role=\"menuitem\"\n data-anv=\"toolbar-overflow-item\"\n data-id={id}\n {...{ [ANV_PART_ATTR]: PARTS.overflowItem }}\n >\n <OverflowItem\n itemType={itemType}\n itemProps={itemProps}\n id={id}\n />\n </li>\n );\n })}\n\n {additionalItems?.map((item, index) => (\n <li\n key={`additional-item-${index}`}\n role=\"menuitem\"\n data-anv=\"toolbar-overflow-item\"\n {...{ [ANV_PART_ATTR]: PARTS.overflowItem }}\n >\n {item}\n </li>\n ))}\n </ul>\n </OverflowItemContext.Provider>\n </Popover.Content>\n </Popover>\n );\n};\n","import { type ComponentPropsWithoutRef, forwardRef, useContext } from \"react\";\nimport type { LayoutUtilProps } from \"../../../types\";\nimport { Flex } from \"../../../components/Flex\";\nimport { ToolbarContext } from \"./internal/ToolbarContext\";\n\nimport styles from \"./ToolbarControlGroup.module.scss\";\n\n/**\n * @extends ComponentPropsWithoutRef<'div'>\n * @extends LayoutUtilProps\n */\nexport type ToolbarControlGroupProps = ComponentPropsWithoutRef<\"div\"> &\n LayoutUtilProps & {\n /** Accessible group name. Defaults to `Toolbar controls`. */\n \"aria-label\"?: string;\n };\n\nconst ToolbarControlGroupElement = forwardRef<\n HTMLDivElement,\n ToolbarControlGroupProps\n>((props, ref) => {\n const { children, \"aria-label\": ariaLabel, ...rest } = props;\n const { overflow } = useContext(ToolbarContext);\n\n return (\n <Flex\n ref={ref}\n alignItems=\"center\"\n gap={1}\n wrap={overflow === \"collapse\" ? \"nowrap\" : \"wrap\"}\n data-anv=\"toolbar-control-group\"\n role=\"group\"\n aria-label={ariaLabel ? ariaLabel : \"Toolbar controls\"}\n className={styles[\"toolbar-control-group\"]}\n {...rest}\n >\n {children}\n </Flex>\n );\n});\n\nToolbarControlGroupElement.displayName = \"ToolbarControlGroup\";\n\n/**\n * Semantically groups related toolbar controls. The group wraps with the\n * toolbar unless collapse overflow is active.\n */\nexport const ToolbarControlGroup = ToolbarControlGroupElement;\n","import { forwardRef, type Ref } from \"react\";\nimport {\n type SearchFieldProps,\n SearchField,\n} from \"../../../components/SearchField/internal/SearchField\";\n\nimport { useToolbarSize } from \"./internal/ToolbarContext\";\nimport { ANV_PART_ATTR } from \"../../../internal/constants/anvParts\";\nimport { PARTS } from \"./parts\";\n\nimport cx from \"classnames\";\nimport styles from \"./ToolbarSearchField.module.scss\";\n\n/** @extends Omit<SearchFieldProps, \"size\"> */\nexport type ToolbarSearchFieldProps = Omit<SearchFieldProps, \"size\">;\n\n/**\n * Search field styled for toolbar layouts. Its size is inherited from the\n * surrounding toolbar rather than set directly.\n */\nexport const ToolbarSearchField = forwardRef(\n (props: ToolbarSearchFieldProps, ref: Ref<HTMLInputElement>) => {\n const { className, ...rest } = props;\n const size = useToolbarSize();\n\n const searchFieldStyles = cx(styles[\"toolbar-search-field\"], className);\n\n return (\n <div className={styles[\"toolbar-search-field-container\"]}>\n <SearchField\n ref={ref}\n className={searchFieldStyles}\n size={size}\n data-anv=\"toolbar-search-field\"\n {...rest}\n {...{ [ANV_PART_ATTR]: PARTS.input }}\n />\n </div>\n );\n },\n);\n\nToolbarSearchField.displayName = \"ToolbarSearchField\";\n","import { ToolbarButton } from \"./ToolbarButton\";\nimport { ToolbarButtonToggle } from \"./ToolbarButtonToggle\";\nimport { ToolbarButtonLink } from \"./ToolbarButtonLink\";\nimport { ToolbarSelect } from \"./ToolbarSelect\";\nimport type {\n ToolbarItemProps,\n ToolbarOverflowTypes,\n ToolbarSize,\n} from \"./types\";\nimport {\n type ComponentPropsWithoutRef,\n forwardRef,\n type ReactElement,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport type { DataAttributes, LayoutUtilProps } from \"../../../types\";\nimport { useLayoutPropsUtil } from \"../../../internal/hooks\";\nimport {\n handleToolbarKeyDown,\n updateToolbarItemsTabIndex,\n} from \"./internal/utils/accessibility\";\nimport { ToolbarContext } from \"./internal/ToolbarContext\";\nimport Flex from \"../../../components/Flex\";\nimport { useMergeRefs } from \"../../../hooks\";\nimport { ToolbarOverflowMenu } from \"./internal/ToolbarOverflowMenu\";\nimport { ToolbarControlGroup } from \"./ToolbarControlGroup\";\nimport { ToolbarSearchField } from \"./ToolbarSearchField\";\n\nimport cx from \"classnames\";\nimport styles from \"./Toolbar.module.scss\";\n\n/**\n * @extends ComponentPropsWithoutRef<\"div\">\n * @extends LayoutUtilProps\n */\nexport type ToolbarProps = ComponentPropsWithoutRef<\"div\"> &\n LayoutUtilProps &\n DataAttributes & {\n /** Names the content controlled by the toolbar in its accessible label. */\n associatedContent: string;\n /**\n * Sets both the control layout and arrow-key navigation axis.\n * @default \"horizontal\"\n */\n direction?: \"vertical\" | \"horizontal\";\n /**\n * Wraps controls or moves controls that no longer fit into an overflow menu.\n * @default \"wrap\"\n */\n overflow?: ToolbarOverflowTypes;\n /** Items appended to the overflow menu, whether or not controls have collapsed. */\n additionalItems?: ReactElement[];\n /** Size inherited by the toolbar's controls. Defaults to `xsmall`. */\n size?: ToolbarSize;\n };\n\n/**\n * Groups related controls with roving focus and orientation-aware arrow-key\n * navigation. In collapse mode, controls that no longer fit move into an overflow menu.\n */\nexport const Toolbar = Object.assign(\n forwardRef<HTMLDivElement, ToolbarProps>(function ToolbarInner(props, ref) {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const {\n associatedContent,\n className,\n children,\n style,\n direction = \"horizontal\",\n overflow = \"wrap\",\n onKeyDown,\n additionalItems,\n size = \"xsmall\",\n ...rest\n } = componentProps;\n\n const [overflowItems, setOverflowItems] = useState<ToolbarItemProps[]>([]);\n const toolbarItemsRef = useRef<HTMLDivElement>(null);\n const toolbarRef = useRef<HTMLDivElement>(null);\n\n const [orderedIds, setOrderedIds] = useState<string[]>([]);\n\n useEffect(() => {\n const newOrderedIds = Array.from(\n toolbarItemsRef.current?.querySelectorAll(\"[data-id]\") || [],\n ).map((el) => {\n return el.getAttribute(\"data-id\") as string;\n });\n\n setOrderedIds(newOrderedIds);\n }, [children]);\n\n const addItem = useCallback((item: ToolbarItemProps) => {\n setOverflowItems((prev) => [...prev, item]);\n }, []);\n\n const removeItem = useCallback((item: ToolbarItemProps) => {\n setOverflowItems((prev) =>\n prev.filter((component) => component.id !== item.id),\n );\n }, []);\n\n useEffect(() => {\n if (toolbarRef.current) {\n updateToolbarItemsTabIndex(toolbarRef.current);\n }\n }, [children]);\n\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (toolbarRef.current) {\n handleToolbarKeyDown(event, toolbarRef.current);\n }\n\n onKeyDown?.(event);\n },\n [onKeyDown],\n );\n\n const showOverflowMenu =\n (overflow === \"collapse\" && overflowItems.length > 0) ||\n !!additionalItems;\n\n const value = useMemo(\n () => ({\n overflowItems,\n addItem,\n removeItem,\n toolbarRef,\n orderedIds,\n overflow,\n size,\n }),\n [\n overflowItems,\n addItem,\n removeItem,\n toolbarRef,\n orderedIds,\n overflow,\n size,\n ],\n );\n\n const styleCombined = {\n ...style,\n ...layoutStyles,\n };\n\n const toolbarClassNames = cx(styles[\"toolbar\"], className);\n\n const toolbarContentClassNames = cx(styles[\"toolbar-content\"], {\n [styles[`overflow-${overflow}`]]: overflow,\n });\n\n return (\n <ToolbarContext.Provider value={value}>\n <Flex\n direction={direction === \"horizontal\" ? \"row\" : \"column\"}\n wrap={overflow === \"wrap\" ? \"wrap\" : \"nowrap\"}\n alignItems=\"center\"\n className={toolbarClassNames}\n style={styleCombined}\n ref={useMergeRefs([toolbarRef, ref])}\n role=\"toolbar\"\n data-anv=\"toolbar\"\n aria-orientation={direction}\n aria-label={`Toolbar for ${associatedContent}. Use arrow keys to navigate through toolbar controls.`}\n tabIndex={-1}\n onKeyDown={handleKeyDown}\n {...rest}\n >\n <Flex\n ref={useMergeRefs([toolbarItemsRef, ref])}\n className={toolbarContentClassNames}\n direction={direction === \"horizontal\" ? \"row\" : \"column\"}\n wrap={overflow === \"wrap\" ? \"wrap\" : \"nowrap\"}\n alignItems=\"center\"\n grow={1}\n data-anv=\"toolbar-content\"\n data-overflow={overflow}\n >\n {children}\n </Flex>\n\n {showOverflowMenu && (\n <ToolbarOverflowMenu\n direction={direction}\n additionalItems={additionalItems}\n />\n )}\n </Flex>\n </ToolbarContext.Provider>\n );\n }),\n {\n /** Action button that participates in toolbar focus and overflow behavior. */\n Button: ToolbarButton,\n /** Toggle button that participates in toolbar focus and overflow behavior. */\n ButtonToggle: ToolbarButtonToggle,\n /** Link-styled action that participates in toolbar focus and overflow behavior. */\n ButtonLink: ToolbarButtonLink,\n /** Single-select control that participates in toolbar focus and overflow behavior. */\n Select: ToolbarSelect,\n /** Groups related controls within the toolbar. */\n ControlGroup: ToolbarControlGroup,\n /** Search field that inherits the toolbar's control size. */\n Search: ToolbarSearchField,\n },\n);\nToolbar.displayName = \"Toolbar\";\nexport const ToolbarElement = Toolbar;\n"],"names":["styles","item","ArrowDropDown","items","MoreHoriz","MoreVert"],"mappings":"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"}
1
+ {"version":3,"file":"Toolbar-BhrHuIN7.js","sources":["../src/beta/components/Toolbar/ToolbarButton.tsx","../src/beta/components/Toolbar/ToolbarButtonLink.tsx","../src/beta/components/Toolbar/ToolbarSelect.tsx","../src/beta/components/Toolbar/internal/ToolbarOverflowMenu.tsx","../src/beta/components/Toolbar/ToolbarControlGroup.tsx","../src/beta/components/Toolbar/ToolbarSearchField.tsx","../src/beta/components/Toolbar/Toolbar.tsx"],"sourcesContent":["import { forwardRef } from \"react\";\nimport Button, { type ButtonProps } from \"../../../components/Button\";\nimport type { ToolbarItemAppearance, WithAriaLabelEnforcement } from \"./types\";\nimport type { DataTrackingId } from \"../../../types\";\nimport { ANV_PART_ATTR } from \"../../../internal/constants/anvParts\";\nimport { useOverFlowItemContext } from \"./internal/ToolbarItemOverflowContext\";\nimport Tooltip from \"../../../components/Tooltip\";\nimport { ToolbarItemWrapper } from \"./internal/ToolbarItemWrapper\";\nimport { useTrackingId } from \"../../../hooks\";\nimport { useToolbarSize } from \"./internal/ToolbarContext\";\nimport { PARTS } from \"./parts\";\n\nimport cx from \"classnames\";\nimport styles from \"./Toolbar.module.scss\";\n\n/** @extends Omit<ButtonProps, \"appearance\" | \"aria-label\" | \"children\"> */\ntype ToolbarButtonBaseProps = Omit<\n ButtonProps,\n \"appearance\" | \"aria-label\" | \"children\"\n> & {\n /** Visual emphasis within the toolbar. Defaults to `ghost`. */\n appearance?: ToolbarItemAppearance;\n};\n\n/** @extends WithAriaLabelEnforcement<ToolbarButtonBaseProps> */\nexport type ToolbarButtonProps =\n WithAriaLabelEnforcement<ToolbarButtonBaseProps> & DataTrackingId;\n\n/**\n * Toolbar action that inherits its size and participates in roving focus and\n * collapse overflow. Icon-only actions show their `aria-label` in a tooltip.\n *\n * @example\n * <ToolbarButton icon={BoldIcon} aria-label=\"Bold text\" />\n */\nexport const ToolbarButton = forwardRef<HTMLButtonElement, ToolbarButtonProps>(\n (props, _ref) => {\n const { appearance = \"ghost\", className, children, ...rest } = props;\n\n const { isInOverflowMenu = false } = useOverFlowItemContext?.() || {};\n const size = useToolbarSize();\n\n const trackingId = useTrackingId({\n name: \"ToolbarButton\",\n data: {\n disabled: props.disabled,\n \"aria-label\": props[\"aria-label\"],\n children: props.children,\n },\n hasOverride: !!props[\"data-tracking-id\"],\n });\n\n const buttonClassNames = cx(className, styles[\"toolbar-button-item\"]);\n\n // Default PARTS.item before {...rest} so callers (e.g. FilterBar) can override.\n const item = children ? (\n <Button\n data-tracking-id={trackingId}\n appearance={appearance}\n size={size}\n data-anv=\"toolbar-button\"\n className={buttonClassNames}\n {...{ [ANV_PART_ATTR]: PARTS.item }}\n {...rest}\n >\n {children}\n </Button>\n ) : (\n <Tooltip>\n <Tooltip.Trigger>\n <Button\n data-tracking-id={trackingId}\n appearance={appearance}\n size={size}\n data-anv=\"toolbar-button\"\n className={buttonClassNames}\n {...{ [ANV_PART_ATTR]: PARTS.item }}\n {...rest}\n />\n </Tooltip.Trigger>\n <Tooltip.Content>{rest[\"aria-label\"]}</Tooltip.Content>\n </Tooltip>\n );\n\n if (isInOverflowMenu) {\n return item;\n }\n\n return (\n <ToolbarItemWrapper item={{ itemProps: props, itemType: \"button\" }}>\n {item}\n </ToolbarItemWrapper>\n );\n },\n);\n\nToolbarButton.displayName = \"ToolbarButton\";\n","import { forwardRef } from \"react\";\nimport ButtonLink, {\n type ButtonLinkProps,\n} from \"../../../components/ButtonLink\";\nimport type { ToolbarItemAppearance, WithAriaLabelEnforcement } from \"./types\";\nimport type { DataTrackingId } from \"../../../types\";\nimport { useOverFlowItemContext } from \"./internal/ToolbarItemOverflowContext\";\nimport Tooltip from \"../../../components/Tooltip\";\nimport { ToolbarItemWrapper } from \"./internal/ToolbarItemWrapper\";\nimport { useTrackingId } from \"../../../hooks\";\nimport { useToolbarSize } from \"./internal/ToolbarContext\";\n\nimport cx from \"classnames\";\nimport styles from \"./Toolbar.module.scss\";\n\n/** @extends Omit<ButtonLinkProps, \"appearance\" | \"aria-label\" | \"children\"> */\ntype ToolbarButtonLinkBaseProps = Omit<\n ButtonLinkProps,\n \"appearance\" | \"aria-label\" | \"children\"\n> & {\n /** Visual emphasis within the toolbar. Defaults to `ghost`. */\n appearance?: ToolbarItemAppearance;\n};\n\n/** @extends WithAriaLabelEnforcement<ToolbarButtonLinkBaseProps> */\nexport type ToolbarButtonLinkProps =\n WithAriaLabelEnforcement<ToolbarButtonLinkBaseProps> & DataTrackingId;\n\n/**\n * Toolbar link that inherits its size and participates in roving focus and\n * collapse overflow. Icon-only links show their `aria-label` in a tooltip.\n *\n * @example\n * <ToolbarButtonLink icon={ExternalLinkIcon} href=\"/docs\" aria-label=\"Documentation\" />\n */\nexport const ToolbarButtonLink = forwardRef<\n HTMLAnchorElement,\n ToolbarButtonLinkProps\n>((props, _ref) => {\n const { appearance = \"ghost\", className, children, ...rest } = props;\n\n const { isInOverflowMenu = false } = useOverFlowItemContext?.() || {};\n const size = useToolbarSize();\n\n const trackingId = useTrackingId({\n name: \"ToolbarButtonLink\",\n data: {\n href: props.href,\n disabled: props.disabled,\n \"aria-label\": props[\"aria-label\"],\n children: props.children,\n target: props.target,\n },\n hasOverride: !!props[\"data-tracking-id\"],\n });\n\n const buttonLinkClassNames = cx(className, styles[\"toolbar-button-item\"]);\n\n const item = children ? (\n <ButtonLink\n data-tracking-id={trackingId}\n appearance={appearance}\n size={size}\n data-anv=\"toolbar-button-link\"\n className={buttonLinkClassNames}\n {...rest}\n >\n {children}\n </ButtonLink>\n ) : (\n <Tooltip>\n <Tooltip.Trigger>\n <ButtonLink\n data-tracking-id={trackingId}\n appearance={appearance}\n size={size}\n data-anv=\"toolbar-button-link\"\n className={buttonLinkClassNames}\n {...rest}\n />\n </Tooltip.Trigger>\n <Tooltip.Content>{rest[\"aria-label\"]}</Tooltip.Content>\n </Tooltip>\n );\n\n if (isInOverflowMenu) {\n return item;\n }\n\n return (\n <ToolbarItemWrapper item={{ itemProps: props, itemType: \"buttonLink\" }}>\n {item}\n </ToolbarItemWrapper>\n );\n});\n\nToolbarButtonLink.displayName = \"ToolbarButtonLink\";\n","import { forwardRef, useEffect, useId, useState } from \"react\";\nimport ArrowDropDown from \"@servicetitan/hammer-icon/mdi/round/arrow_drop_down.svg\";\nimport Listbox, { type ListboxItemType } from \"../../../components/Listbox\";\nimport Popover from \"../../../internal/components/Popover\";\nimport type { ToolbarItemAppearance } from \"./types\";\nimport type { DataTrackingId } from \"../../../types\";\nimport { useOverFlowItemContext } from \"./internal/ToolbarItemOverflowContext\";\nimport { ToolbarItemWrapper } from \"./internal/ToolbarItemWrapper\";\nimport { useTrackingId } from \"../../../hooks\";\nimport { useToolbarSize } from \"./internal/ToolbarContext\";\n\nimport cx from \"classnames\";\nimport styles from \"./Toolbar.module.scss\";\n\ntype ToolbarSelectItem<T = Record<string, unknown>> = ListboxItemType<\n T & {\n id: string;\n }\n>;\n\n/** @extends Omit<React.ComponentPropsWithoutRef<typeof Popover.Button>, \"appearance\" | \"onChange\"> */\nexport type ToolbarSelectProps<T = Record<string, unknown>> = Omit<\n React.ComponentPropsWithoutRef<typeof Popover.Button>,\n \"appearance\" | \"onChange\"\n> & {\n /** Visual emphasis within the toolbar. Defaults to `ghost`. */\n appearance?: ToolbarItemAppearance;\n /** Called with the selected item's ID. */\n onChange?: (optionId: string) => void;\n /** Controlled selected ID. Omit to select and manage the first item internally. */\n selected?: string;\n /** Options displayed in the listbox; the first is the uncontrolled default. */\n items: ToolbarSelectItem<T>[];\n /** Accessible name for the options popover, such as \"Status options\". */\n accessibleLabel: string;\n} & DataTrackingId;\n\n/**\n * Single-select toolbar control that inherits its size and participates in\n * roving focus and collapse overflow.\n */\nexport const ToolbarSelect = forwardRef<HTMLButtonElement, ToolbarSelectProps>(\n (props, _ref) => {\n const {\n appearance = \"ghost\",\n onChange,\n selected: selectedItemId,\n accessibleLabel,\n className,\n items,\n ...rest\n } = props;\n const selectId = useId();\n\n const [isPopoverOpen, setIsPopoverOpen] = useState(false);\n\n const defaultId = items.length > 0 ? items[0].id : \"\";\n const [internalSelectedId, setInternalSelectedId] = useState(defaultId);\n\n const selectedId = selectedItemId ?? internalSelectedId;\n\n const selectedItem =\n items.find((item) => item.id === selectedId) ||\n items.find((item) => item.id === defaultId);\n\n useEffect(() => {\n if (\n !selectedItemId &&\n items.length > 0 &&\n !items.some((item) => item.id === internalSelectedId)\n ) {\n setInternalSelectedId(items[0].id);\n }\n }, [items, selectedItemId, internalSelectedId]);\n\n const handleSelectionChange = (\n selected: ToolbarSelectItem<Record<string, unknown>> | undefined,\n ) => {\n if (selected?.id) {\n if (selectedItemId === undefined) {\n setInternalSelectedId(selected.id);\n }\n\n onChange?.(selected.id);\n\n setIsPopoverOpen(false);\n }\n };\n\n const { isInOverflowMenu = false } = useOverFlowItemContext?.() || {};\n const toolbarSize = useToolbarSize();\n\n const trackingId = useTrackingId({\n name: \"ToolbarSelect\",\n data: {\n selected: props.selected,\n disabled: props.disabled,\n \"aria-label\": props[\"aria-label\"],\n items: props.items,\n },\n hasOverride: !!props[\"data-tracking-id\"],\n });\n\n const buttonClassNames = cx(className, styles[\"toolbar-button-item\"]);\n\n const item = (\n <Popover\n noPadding\n open={isPopoverOpen}\n onClickOutside={() => {\n setIsPopoverOpen(false);\n }}\n onClose={() => {\n setIsPopoverOpen(false);\n }}\n >\n <Popover.Button\n data-tracking-id={trackingId}\n appearance={appearance}\n size={toolbarSize}\n icon={{ after: ArrowDropDown }}\n className={buttonClassNames}\n id={selectId}\n data-anv=\"toolbar-select\"\n onClick={() => {\n setIsPopoverOpen(!isPopoverOpen);\n }}\n {...rest}\n >\n {selectedItem?.label}\n </Popover.Button>\n <Popover.Content\n className={styles[\"toolbar-select-content\"]}\n aria-label={accessibleLabel}\n >\n <Listbox\n selected={selectedItem}\n onSelectionChange={handleSelectionChange}\n items={items}\n aria-labelledby={selectId}\n disableAutoSelectOnFocus={true}\n >\n {({ items }) =>\n items.map((item) => (\n <Listbox.Option key={item.label} item={item}>\n {item.label}\n </Listbox.Option>\n ))\n }\n </Listbox>\n </Popover.Content>\n </Popover>\n );\n\n if (isInOverflowMenu) {\n return item;\n }\n\n return (\n <ToolbarItemWrapper item={{ itemProps: props, itemType: \"select\" }}>\n {item}\n </ToolbarItemWrapper>\n );\n },\n);\n\nToolbarSelect.displayName = \"ToolbarSelect\";\n","import { type ReactElement, useContext, useId, useMemo } from \"react\";\nimport MoreHoriz from \"@servicetitan/hammer-icon/mdi/round/more_horiz.svg\";\nimport MoreVert from \"@servicetitan/hammer-icon/mdi/round//more_vert.svg\";\nimport type { ToolbarItemProps } from \"../types\";\nimport { ToolbarButton, type ToolbarButtonProps } from \"../ToolbarButton\";\nimport {\n ToolbarButtonToggle,\n type ToolbarButtonToggleProps,\n} from \"../ToolbarButtonToggle\";\nimport {\n ToolbarButtonLink,\n type ToolbarButtonLinkProps,\n} from \"../ToolbarButtonLink\";\nimport { ToolbarSelect, type ToolbarSelectProps } from \"../ToolbarSelect\";\nimport { ToolbarContext, useToolbarSize } from \"./ToolbarContext\";\nimport Popover from \"../../../../internal/components/Popover\";\nimport Icon from \"../../../../components/Icon\";\nimport { OverflowItemContext } from \"./ToolbarItemOverflowContext\";\nimport { handleMenuKeyboardNavigation } from \"./utils/accessibility\";\nimport { ANV_PART_ATTR } from \"../../../../internal/constants/anvParts\";\nimport { PARTS } from \"../parts\";\n\nimport cx from \"classnames\";\nimport styles from \"../Toolbar.module.scss\";\n\nconst OverflowItem = ({ itemType, itemProps }: ToolbarItemProps) => {\n switch (itemType) {\n case \"button\":\n return <ToolbarButton {...(itemProps as ToolbarButtonProps)} />;\n\n case \"buttonToggle\":\n return (\n <ToolbarButtonToggle {...(itemProps as ToolbarButtonToggleProps)} />\n );\n\n case \"buttonLink\":\n return <ToolbarButtonLink {...(itemProps as ToolbarButtonLinkProps)} />;\n\n case \"select\":\n return <ToolbarSelect {...(itemProps as ToolbarSelectProps)} />;\n\n default:\n return null;\n }\n};\n\nexport type ToolbarOverflowMenuProps = {\n /** Items appended after controls collapsed from the toolbar. */\n additionalItems?: ReactElement[];\n /** Parent orientation used to choose the overflow icon. */\n direction?: \"vertical\" | \"horizontal\";\n};\n\n/**\n * Recreates clipped controls in their original order, followed by any\n * consumer-supplied overflow items.\n */\nexport const ToolbarOverflowMenu = ({\n additionalItems,\n direction,\n}: ToolbarOverflowMenuProps) => {\n const { overflowItems, orderedIds } = useContext(ToolbarContext);\n const menuTriggerId = useId();\n const size = useToolbarSize();\n\n const orderedItems = useMemo(() => {\n const allElements = orderedIds?.map((id) => {\n return overflowItems.find((item) => item.id === id);\n });\n\n return allElements?.filter((item) => item !== undefined) || [];\n }, [orderedIds, overflowItems]);\n\n const popoverButtonClassNames = cx(\n styles[\"toolbar-button-item\"],\n styles[\"toolbar-overflow-trigger\"],\n );\n\n const overflowIcon = direction === \"horizontal\" ? MoreHoriz : MoreVert;\n\n return (\n <Popover noPadding>\n <Popover.Button\n size={size}\n appearance=\"ghost\"\n id={menuTriggerId}\n className={popoverButtonClassNames}\n data-anv=\"toolbar-overflow-trigger\"\n aria-label=\"Additional toolbar options\"\n {...{ [ANV_PART_ATTR]: PARTS.trigger }}\n >\n <Icon svg={overflowIcon} size={size === \"xsmall\" ? \"small\" : size} />\n </Popover.Button>\n <Popover.Content>\n <OverflowItemContext.Provider value={{ isInOverflowMenu: true }}>\n <ul\n role=\"menu\"\n className={styles[\"toolbar-overflow-content\"]}\n data-anv=\"toolbar-overflow-menu\"\n aria-labelledby={menuTriggerId}\n onKeyDown={handleMenuKeyboardNavigation}\n {...{ [ANV_PART_ATTR]: PARTS.menu }}\n >\n {orderedItems.map((item) => {\n const { itemType, itemProps, id } = item;\n return (\n <li\n key={`${itemType}-${id}`}\n role=\"menuitem\"\n data-anv=\"toolbar-overflow-item\"\n data-id={id}\n {...{ [ANV_PART_ATTR]: PARTS.overflowItem }}\n >\n <OverflowItem\n itemType={itemType}\n itemProps={itemProps}\n id={id}\n />\n </li>\n );\n })}\n\n {additionalItems?.map((item, index) => (\n <li\n key={`additional-item-${index}`}\n role=\"menuitem\"\n data-anv=\"toolbar-overflow-item\"\n {...{ [ANV_PART_ATTR]: PARTS.overflowItem }}\n >\n {item}\n </li>\n ))}\n </ul>\n </OverflowItemContext.Provider>\n </Popover.Content>\n </Popover>\n );\n};\n","import { type ComponentPropsWithoutRef, forwardRef, useContext } from \"react\";\nimport type { LayoutUtilProps } from \"../../../types\";\nimport { Flex } from \"../../../components/Flex\";\nimport { ToolbarContext } from \"./internal/ToolbarContext\";\n\nimport styles from \"./ToolbarControlGroup.module.scss\";\n\n/**\n * @extends ComponentPropsWithoutRef<'div'>\n * @extends LayoutUtilProps\n */\nexport type ToolbarControlGroupProps = ComponentPropsWithoutRef<\"div\"> &\n LayoutUtilProps & {\n /** Accessible group name. Defaults to `Toolbar controls`. */\n \"aria-label\"?: string;\n };\n\nconst ToolbarControlGroupElement = forwardRef<\n HTMLDivElement,\n ToolbarControlGroupProps\n>((props, ref) => {\n const { children, \"aria-label\": ariaLabel, ...rest } = props;\n const { overflow } = useContext(ToolbarContext);\n\n return (\n <Flex\n ref={ref}\n alignItems=\"center\"\n gap={1}\n wrap={overflow === \"collapse\" ? \"nowrap\" : \"wrap\"}\n data-anv=\"toolbar-control-group\"\n role=\"group\"\n aria-label={ariaLabel ? ariaLabel : \"Toolbar controls\"}\n className={styles[\"toolbar-control-group\"]}\n {...rest}\n >\n {children}\n </Flex>\n );\n});\n\nToolbarControlGroupElement.displayName = \"ToolbarControlGroup\";\n\n/**\n * Semantically groups related toolbar controls. The group wraps with the\n * toolbar unless collapse overflow is active.\n */\nexport const ToolbarControlGroup = ToolbarControlGroupElement;\n","import { forwardRef, type Ref } from \"react\";\nimport {\n type SearchFieldProps,\n SearchField,\n} from \"../../../components/SearchField/internal/SearchField\";\n\nimport { useToolbarSize } from \"./internal/ToolbarContext\";\nimport { ANV_PART_ATTR } from \"../../../internal/constants/anvParts\";\nimport { PARTS } from \"./parts\";\n\nimport cx from \"classnames\";\nimport styles from \"./ToolbarSearchField.module.scss\";\n\n/** @extends Omit<SearchFieldProps, \"size\"> */\nexport type ToolbarSearchFieldProps = Omit<SearchFieldProps, \"size\">;\n\n/**\n * Search field styled for toolbar layouts. Its size is inherited from the\n * surrounding toolbar rather than set directly.\n */\nexport const ToolbarSearchField = forwardRef(\n (props: ToolbarSearchFieldProps, ref: Ref<HTMLInputElement>) => {\n const { className, ...rest } = props;\n const size = useToolbarSize();\n\n const searchFieldStyles = cx(styles[\"toolbar-search-field\"], className);\n\n return (\n <div className={styles[\"toolbar-search-field-container\"]}>\n <SearchField\n ref={ref}\n className={searchFieldStyles}\n size={size}\n data-anv=\"toolbar-search-field\"\n {...rest}\n {...{ [ANV_PART_ATTR]: PARTS.input }}\n />\n </div>\n );\n },\n);\n\nToolbarSearchField.displayName = \"ToolbarSearchField\";\n","import { ToolbarButton } from \"./ToolbarButton\";\nimport { ToolbarButtonToggle } from \"./ToolbarButtonToggle\";\nimport { ToolbarButtonLink } from \"./ToolbarButtonLink\";\nimport { ToolbarSelect } from \"./ToolbarSelect\";\nimport type {\n ToolbarItemProps,\n ToolbarOverflowTypes,\n ToolbarSize,\n} from \"./types\";\nimport {\n type ComponentPropsWithoutRef,\n forwardRef,\n type ReactElement,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport type { DataAttributes, LayoutUtilProps } from \"../../../types\";\nimport { useLayoutPropsUtil } from \"../../../internal/hooks\";\nimport {\n handleToolbarKeyDown,\n updateToolbarItemsTabIndex,\n} from \"./internal/utils/accessibility\";\nimport { ToolbarContext } from \"./internal/ToolbarContext\";\nimport Flex from \"../../../components/Flex\";\nimport { useMergeRefs } from \"../../../hooks\";\nimport { ToolbarOverflowMenu } from \"./internal/ToolbarOverflowMenu\";\nimport { ToolbarControlGroup } from \"./ToolbarControlGroup\";\nimport { ToolbarSearchField } from \"./ToolbarSearchField\";\n\nimport cx from \"classnames\";\nimport styles from \"./Toolbar.module.scss\";\n\n/**\n * @extends ComponentPropsWithoutRef<\"div\">\n * @extends LayoutUtilProps\n */\nexport type ToolbarProps = ComponentPropsWithoutRef<\"div\"> &\n LayoutUtilProps &\n DataAttributes & {\n /** Names the content controlled by the toolbar in its accessible label. */\n associatedContent: string;\n /**\n * Sets both the control layout and arrow-key navigation axis.\n * @default \"horizontal\"\n */\n direction?: \"vertical\" | \"horizontal\";\n /**\n * Wraps controls or moves controls that no longer fit into an overflow menu.\n * @default \"wrap\"\n */\n overflow?: ToolbarOverflowTypes;\n /** Items appended to the overflow menu, whether or not controls have collapsed. */\n additionalItems?: ReactElement[];\n /** Size inherited by the toolbar's controls. Defaults to `xsmall`. */\n size?: ToolbarSize;\n };\n\n/**\n * Groups related controls with roving focus and orientation-aware arrow-key\n * navigation. In collapse mode, controls that no longer fit move into an overflow menu.\n */\nexport const Toolbar = Object.assign(\n forwardRef<HTMLDivElement, ToolbarProps>(function ToolbarInner(props, ref) {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const {\n associatedContent,\n className,\n children,\n style,\n direction = \"horizontal\",\n overflow = \"wrap\",\n onKeyDown,\n additionalItems,\n size = \"xsmall\",\n ...rest\n } = componentProps;\n\n const [overflowItems, setOverflowItems] = useState<ToolbarItemProps[]>([]);\n const toolbarItemsRef = useRef<HTMLDivElement>(null);\n const toolbarRef = useRef<HTMLDivElement>(null);\n\n const [orderedIds, setOrderedIds] = useState<string[]>([]);\n\n useEffect(() => {\n const newOrderedIds = Array.from(\n toolbarItemsRef.current?.querySelectorAll(\"[data-id]\") || [],\n ).map((el) => {\n return el.getAttribute(\"data-id\") as string;\n });\n\n setOrderedIds(newOrderedIds);\n }, [children]);\n\n const addItem = useCallback((item: ToolbarItemProps) => {\n setOverflowItems((prev) => [...prev, item]);\n }, []);\n\n const removeItem = useCallback((item: ToolbarItemProps) => {\n setOverflowItems((prev) =>\n prev.filter((component) => component.id !== item.id),\n );\n }, []);\n\n useEffect(() => {\n if (toolbarRef.current) {\n updateToolbarItemsTabIndex(toolbarRef.current);\n }\n }, [children]);\n\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (toolbarRef.current) {\n handleToolbarKeyDown(event, toolbarRef.current);\n }\n\n onKeyDown?.(event);\n },\n [onKeyDown],\n );\n\n const showOverflowMenu =\n (overflow === \"collapse\" && overflowItems.length > 0) ||\n !!additionalItems;\n\n const value = useMemo(\n () => ({\n overflowItems,\n addItem,\n removeItem,\n toolbarRef,\n orderedIds,\n overflow,\n size,\n }),\n [\n overflowItems,\n addItem,\n removeItem,\n toolbarRef,\n orderedIds,\n overflow,\n size,\n ],\n );\n\n const styleCombined = {\n ...style,\n ...layoutStyles,\n };\n\n const toolbarClassNames = cx(styles[\"toolbar\"], className);\n\n const toolbarContentClassNames = cx(styles[\"toolbar-content\"], {\n [styles[`overflow-${overflow}`]]: overflow,\n });\n\n return (\n <ToolbarContext.Provider value={value}>\n <Flex\n direction={direction === \"horizontal\" ? \"row\" : \"column\"}\n wrap={overflow === \"wrap\" ? \"wrap\" : \"nowrap\"}\n alignItems=\"center\"\n className={toolbarClassNames}\n style={styleCombined}\n ref={useMergeRefs([toolbarRef, ref])}\n role=\"toolbar\"\n data-anv=\"toolbar\"\n aria-orientation={direction}\n aria-label={`Toolbar for ${associatedContent}. Use arrow keys to navigate through toolbar controls.`}\n tabIndex={-1}\n onKeyDown={handleKeyDown}\n {...rest}\n >\n <Flex\n ref={useMergeRefs([toolbarItemsRef, ref])}\n className={toolbarContentClassNames}\n direction={direction === \"horizontal\" ? \"row\" : \"column\"}\n wrap={overflow === \"wrap\" ? \"wrap\" : \"nowrap\"}\n alignItems=\"center\"\n grow={1}\n data-anv=\"toolbar-content\"\n data-overflow={overflow}\n >\n {children}\n </Flex>\n\n {showOverflowMenu && (\n <ToolbarOverflowMenu\n direction={direction}\n additionalItems={additionalItems}\n />\n )}\n </Flex>\n </ToolbarContext.Provider>\n );\n }),\n {\n /** Action button that participates in toolbar focus and overflow behavior. */\n Button: ToolbarButton,\n /** Toggle button that participates in toolbar focus and overflow behavior. */\n ButtonToggle: ToolbarButtonToggle,\n /** Link-styled action that participates in toolbar focus and overflow behavior. */\n ButtonLink: ToolbarButtonLink,\n /** Single-select control that participates in toolbar focus and overflow behavior. */\n Select: ToolbarSelect,\n /** Groups related controls within the toolbar. */\n ControlGroup: ToolbarControlGroup,\n /** Search field that inherits the toolbar's control size. */\n Search: ToolbarSearchField,\n },\n);\nToolbar.displayName = \"Toolbar\";\nexport const ToolbarElement = Toolbar;\n"],"names":["styles","item","ArrowDropDown","items","MoreHoriz","MoreVert"],"mappings":"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"}