@servicetitan/anvil2 3.15.0 → 3.15.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (414) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/dist/{AiMark-D57s1e0T.js → AiMark-N8UfGfcV.js} +2 -2
  3. package/dist/{AiMark-D57s1e0T.js.map → AiMark-N8UfGfcV.js.map} +1 -1
  4. package/dist/AiMark.js +1 -1
  5. package/dist/{Alert-DExHiAbM.js → Alert-DTKIlitZ.js} +3 -3
  6. package/dist/{Alert-DExHiAbM.js.map → Alert-DTKIlitZ.js.map} +1 -1
  7. package/dist/Alert.js +1 -1
  8. package/dist/{Announcement-CGTv6M31.js → Announcement-Cnz80WGx.js} +2 -2
  9. package/dist/{Announcement-CGTv6M31.js.map → Announcement-Cnz80WGx.js.map} +1 -1
  10. package/dist/Announcement.js +1 -1
  11. package/dist/{Breadcrumbs-DtLSS0PJ.js → Breadcrumbs-B8UGx4Mq.js} +2 -2
  12. package/dist/{Breadcrumbs-DtLSS0PJ.js.map → Breadcrumbs-B8UGx4Mq.js.map} +1 -1
  13. package/dist/Breadcrumbs.js +1 -1
  14. package/dist/{Button-Dwh_Nd4l.js → Button-Dn6-01xl.js} +230 -67
  15. package/dist/Button-Dn6-01xl.js.map +1 -0
  16. package/dist/Button.js +1 -1
  17. package/dist/{ButtonToggle-DKDBD1g3.js → ButtonToggle-BSU8GBxr.js} +2 -2
  18. package/dist/{ButtonToggle-DKDBD1g3.js.map → ButtonToggle-BSU8GBxr.js.map} +1 -1
  19. package/dist/ButtonToggle.js +1 -1
  20. package/dist/{Calendar-CEf7ke8X.js → Calendar-CpmaI3b6.js} +3 -3
  21. package/dist/Calendar-CpmaI3b6.js.map +1 -0
  22. package/dist/{Calendar-BUFPc5UN.js → Calendar-Cv07q_tE.js} +2 -2
  23. package/dist/Calendar-Cv07q_tE.js.map +1 -0
  24. package/dist/Calendar.js +2 -2
  25. package/dist/{Checkbox-DVy-QESI.js → Checkbox-cB0D9W0a.js} +3 -3
  26. package/dist/{Checkbox-DVy-QESI.js.map → Checkbox-cB0D9W0a.js.map} +1 -1
  27. package/dist/{Checkbox-DBE35nMv.js → Checkbox-jomKCuAj.js} +2 -2
  28. package/dist/{Checkbox-DBE35nMv.js.map → Checkbox-jomKCuAj.js.map} +1 -1
  29. package/dist/Checkbox.js +1 -1
  30. package/dist/{Chip-B4G4zaP-.js → Chip-DivZ3OuB.js} +2 -2
  31. package/dist/{Chip-B4G4zaP-.js.map → Chip-DivZ3OuB.js.map} +1 -1
  32. package/dist/Chip.js +1 -1
  33. package/dist/Combobox.js +1 -1
  34. package/dist/{DataTable-DbuXfDNJ.js → DataTable-_XXxSbvH.js} +16 -41
  35. package/dist/DataTable-_XXxSbvH.js.map +1 -0
  36. package/dist/{DateFieldRange-nyj8mtUP.js → DateFieldRange-31zIfcR2.js} +4 -4
  37. package/dist/{DateFieldRange-nyj8mtUP.js.map → DateFieldRange-31zIfcR2.js.map} +1 -1
  38. package/dist/DateFieldRange.js +1 -1
  39. package/dist/{DateFieldSingle-BmCghXba.js → DateFieldSingle-DDFe1inZ.js} +4 -4
  40. package/dist/{DateFieldSingle-BmCghXba.js.map → DateFieldSingle-DDFe1inZ.js.map} +1 -1
  41. package/dist/DateFieldSingle.js +1 -1
  42. package/dist/{DateFieldYearless-Df7fA85i.js → DateFieldYearless-Cv34myLZ.js} +4 -4
  43. package/dist/{DateFieldYearless-Df7fA85i.js.map → DateFieldYearless-Cv34myLZ.js.map} +1 -1
  44. package/dist/DateFieldYearless.js +1 -1
  45. package/dist/{DateFieldYearlessRange-DYpY4K1c.js → DateFieldYearlessRange-D_ftkt3w.js} +3 -3
  46. package/dist/{DateFieldYearlessRange-DYpY4K1c.js.map → DateFieldYearlessRange-D_ftkt3w.js.map} +1 -1
  47. package/dist/DateFieldYearlessRange.js +1 -1
  48. package/dist/{DaysOfTheWeek-CyWGRqFG.js → DaysOfTheWeek-D4tUHUay.js} +3 -3
  49. package/dist/{DaysOfTheWeek-CyWGRqFG.js.map → DaysOfTheWeek-D4tUHUay.js.map} +1 -1
  50. package/dist/DaysOfTheWeek.js +1 -1
  51. package/dist/{Details-oM-nR4ju.js → Details-BxqP-5vp.js} +11 -9
  52. package/dist/Details-BxqP-5vp.js.map +1 -0
  53. package/dist/Details.css +18 -14
  54. package/dist/Details.js +1 -1
  55. package/dist/{Dialog-vSiZAR1y.js → Dialog-B2QAFibn.js} +4 -4
  56. package/dist/{Dialog-vSiZAR1y.js.map → Dialog-B2QAFibn.js.map} +1 -1
  57. package/dist/Dialog.js +1 -1
  58. package/dist/{DialogCancelButton-DBL0aKTK.js → DialogCancelButton-C0r8hJ8Z.js} +2 -2
  59. package/dist/{DialogCancelButton-DBL0aKTK.js.map → DialogCancelButton-C0r8hJ8Z.js.map} +1 -1
  60. package/dist/{Drawer-B4pxj_2P.js → Drawer-CBIOWwh3.js} +5 -5
  61. package/dist/{Drawer-B4pxj_2P.js.map → Drawer-CBIOWwh3.js.map} +1 -1
  62. package/dist/Drawer.js +1 -1
  63. package/dist/DrillDown.js +1 -1
  64. package/dist/{EditCard-CX1G7G2Q.js → EditCard-Q6WlsM4O.js} +3 -3
  65. package/dist/{EditCard-CX1G7G2Q.js.map → EditCard-Q6WlsM4O.js.map} +1 -1
  66. package/dist/EditCard.js +1 -1
  67. package/dist/{FieldLabel-CAusaqUY.js → FieldLabel-FsNIjn8T.js} +2 -2
  68. package/dist/{FieldLabel-CAusaqUY.js.map → FieldLabel-FsNIjn8T.js.map} +1 -1
  69. package/dist/FieldLabel.js +1 -1
  70. package/dist/{FilterBar-CKYf-1oU.js → FilterBar-PXv7_svO.js} +7 -7
  71. package/dist/FilterBar-PXv7_svO.js.map +1 -0
  72. package/dist/FilterBar.js +1 -1
  73. package/dist/{InputMask-xMpquXPU.js → InputMask-BgZX650-.js} +3 -3
  74. package/dist/{InputMask-xMpquXPU.js.map → InputMask-BgZX650-.js.map} +1 -1
  75. package/dist/InputMask.js +1 -1
  76. package/dist/{InteractiveCard-C0g5PxB6.js → InteractiveCard-C2CYRtgQ.js} +3 -3
  77. package/dist/InteractiveCard-C2CYRtgQ.js.map +1 -0
  78. package/dist/InteractiveCard.js +1 -1
  79. package/dist/{ListView-D6l1KY92.js → ListView-aRwUEGI3.js} +2 -2
  80. package/dist/{ListView-D6l1KY92.js.map → ListView-aRwUEGI3.js.map} +1 -1
  81. package/dist/ListView.js +1 -1
  82. package/dist/{Listbox-Dep1eJ3u.js → Listbox-BCszel4v.js} +2 -2
  83. package/dist/{Listbox-Dep1eJ3u.js.map → Listbox-BCszel4v.js.map} +1 -1
  84. package/dist/Listbox.js +1 -1
  85. package/dist/{Menu-eLxQwmZk.js → Menu-Da2OEN0o.js} +2 -2
  86. package/dist/{Menu-eLxQwmZk.js.map → Menu-Da2OEN0o.js.map} +1 -1
  87. package/dist/Menu.js +1 -1
  88. package/dist/{MenuFooter-fGSZYh8e.js → MenuFooter-D__gg92C.js} +2 -2
  89. package/dist/{MenuFooter-fGSZYh8e.js.map → MenuFooter-D__gg92C.js.map} +1 -1
  90. package/dist/MultiSelectField.js +1 -1
  91. package/dist/{MultiSelectFieldSync-ZNoNOm6d.js → MultiSelectFieldSync-DY5wr7cT.js} +7 -7
  92. package/dist/{MultiSelectFieldSync-ZNoNOm6d.js.map → MultiSelectFieldSync-DY5wr7cT.js.map} +1 -1
  93. package/dist/MultiSelectMenu.js +1 -1
  94. package/dist/{MultiSelectMenuSync-DrgqaUJj.js → MultiSelectMenuSync-D3sfHivW.js} +5 -5
  95. package/dist/{MultiSelectMenuSync-DrgqaUJj.js.map → MultiSelectMenuSync-D3sfHivW.js.map} +1 -1
  96. package/dist/{NumberField-D5ZzEHg1.js → NumberField-CrvEEy_h.js} +4 -4
  97. package/dist/{NumberField-D5ZzEHg1.js.map → NumberField-CrvEEy_h.js.map} +1 -1
  98. package/dist/NumberField.js +1 -1
  99. package/dist/{Page-B2HZzNGP.js → Page-CS6x6C7Y.js} +18 -187
  100. package/dist/Page-CS6x6C7Y.js.map +1 -0
  101. package/dist/Page.js +1 -1
  102. package/dist/{Pagination-CAgXtt9t.js → Pagination-DianLtHs.js} +5 -5
  103. package/dist/{Pagination-CAgXtt9t.js.map → Pagination-DianLtHs.js.map} +1 -1
  104. package/dist/Pagination.js +1 -1
  105. package/dist/{Popover-CjL2ixjB.js → Popover-BsEwcuu4.js} +2 -2
  106. package/dist/{Popover-CjL2ixjB.js.map → Popover-BsEwcuu4.js.map} +1 -1
  107. package/dist/Popover.js +1 -1
  108. package/dist/{ProgressBar-ClKcOcXq.js → ProgressBar-0pebwBJ0.js} +2 -2
  109. package/dist/{ProgressBar-ClKcOcXq.js.map → ProgressBar-0pebwBJ0.js.map} +1 -1
  110. package/dist/ProgressBar.js +1 -1
  111. package/dist/{Radio-_ftIQSru.js → Radio-BxXN612_.js} +3 -3
  112. package/dist/{Radio-_ftIQSru.js.map → Radio-BxXN612_.js.map} +1 -1
  113. package/dist/{Radio-C2BJqWlV.js → Radio-CU2--1uW.js} +2 -2
  114. package/dist/{Radio-C2BJqWlV.js.map → Radio-CU2--1uW.js.map} +1 -1
  115. package/dist/Radio.js +1 -1
  116. package/dist/{RichTextEditor-TcZUnqcp.js → RichTextEditor-Dnc7vOjq.js} +18831 -20238
  117. package/dist/RichTextEditor-Dnc7vOjq.js.map +1 -0
  118. package/dist/RichTextEditor.js +1 -1
  119. package/dist/{SavedFiltersButton-B8lf3L2T.js → SavedFiltersButton-BWlE7UnI.js} +10 -24
  120. package/dist/SavedFiltersButton-BWlE7UnI.js.map +1 -0
  121. package/dist/SavedFiltersButton.js +1 -1
  122. package/dist/{SegmentedControl-CtKoYHoO.js → SegmentedControl-BHVJmmTH.js} +3 -3
  123. package/dist/{SegmentedControl-CtKoYHoO.js.map → SegmentedControl-BHVJmmTH.js.map} +1 -1
  124. package/dist/SegmentedControl.js +1 -1
  125. package/dist/{SelectCard-BwIbfore.js → SelectCard-D2PAyR7T.js} +3 -3
  126. package/dist/{SelectCard-BwIbfore.js.map → SelectCard-D2PAyR7T.js.map} +1 -1
  127. package/dist/SelectCard.js +1 -1
  128. package/dist/SelectField.js +1 -1
  129. package/dist/{SelectFieldLabel-7VTZ83QJ.js → SelectFieldLabel-BXJJQ0zt.js} +2 -2
  130. package/dist/{SelectFieldLabel-7VTZ83QJ.js.map → SelectFieldLabel-BXJJQ0zt.js.map} +1 -1
  131. package/dist/{SelectFieldSync-CB75kkka.js → SelectFieldSync-CkWoMhrv.js} +6 -6
  132. package/dist/{SelectFieldSync-CB75kkka.js.map → SelectFieldSync-CkWoMhrv.js.map} +1 -1
  133. package/dist/SelectMenu.js +1 -1
  134. package/dist/{SelectMenuSync-DIMfovCI.js → SelectMenuSync-C-6mULc_.js} +5 -5
  135. package/dist/{SelectMenuSync-DIMfovCI.js.map → SelectMenuSync-C-6mULc_.js.map} +1 -1
  136. package/dist/{SelectOptions-si_rVLEZ.js → SelectOptions-pAkVhulQ.js} +2 -2
  137. package/dist/{SelectOptions-si_rVLEZ.js.map → SelectOptions-pAkVhulQ.js.map} +1 -1
  138. package/dist/{SelectTrigger-C3-Cne3D.js → SelectTrigger-B9WUUdIu.js} +2 -2
  139. package/dist/{SelectTrigger-C3-Cne3D.js.map → SelectTrigger-B9WUUdIu.js.map} +1 -1
  140. package/dist/SelectTrigger.js +1 -1
  141. package/dist/{SelectTriggerBase-BnsTYWVb.js → SelectTriggerBase-Dq7QDlPS.js} +4 -4
  142. package/dist/{SelectTriggerBase-BnsTYWVb.js.map → SelectTriggerBase-Dq7QDlPS.js.map} +1 -1
  143. package/dist/{Stepper-C-QC9QHx.js → Stepper-l_P6VPOv.js} +3 -3
  144. package/dist/{Stepper-C-QC9QHx.js.map → Stepper-l_P6VPOv.js.map} +1 -1
  145. package/dist/Stepper.js +1 -1
  146. package/dist/{Switch-DWq4QI8M.js → Switch-BS4bw5KF.js} +2 -2
  147. package/dist/{Switch-DWq4QI8M.js.map → Switch-BS4bw5KF.js.map} +1 -1
  148. package/dist/Switch.js +1 -1
  149. package/dist/{Tab-mXEQ0ifM.js → Tab-DR5YYXkq.js} +124 -19
  150. package/dist/Tab-DR5YYXkq.js.map +1 -0
  151. package/dist/Tab.js +1 -1
  152. package/dist/Table.js +1 -1
  153. package/dist/{Text-dONmlARH.js → Text-B_-Ldn9K.js} +2 -2
  154. package/dist/{Text-dONmlARH.js.map → Text-B_-Ldn9K.js.map} +1 -1
  155. package/dist/Text.js +1 -1
  156. package/dist/{TextField-CtXjbtqa.js → TextField-B6tVKoxq.js} +2 -2
  157. package/dist/{TextField-CtXjbtqa.js.map → TextField-B6tVKoxq.js.map} +1 -1
  158. package/dist/{TextField-CQ7e3mC4.js → TextField-DxQ6-IhP.js} +3 -3
  159. package/dist/{TextField-CQ7e3mC4.js.map → TextField-DxQ6-IhP.js.map} +1 -1
  160. package/dist/TextField.js +1 -1
  161. package/dist/{Textarea-DGVHQktZ.js → Textarea-oChzBuWz.js} +3 -3
  162. package/dist/{Textarea-DGVHQktZ.js.map → Textarea-oChzBuWz.js.map} +1 -1
  163. package/dist/Textarea.js +1 -1
  164. package/dist/{TimeField-AttXPsQw.js → TimeField-Dq7l8xNU.js} +4 -4
  165. package/dist/{TimeField-AttXPsQw.js.map → TimeField-Dq7l8xNU.js.map} +1 -1
  166. package/dist/TimeField.js +1 -1
  167. package/dist/Toast.js +2 -2
  168. package/dist/{Toaster-DYO8NLTo.js → Toaster-CsZkAOVn.js} +2 -2
  169. package/dist/{Toaster-DYO8NLTo.js.map → Toaster-CsZkAOVn.js.map} +1 -1
  170. package/dist/{Toaster-CNtAl-tF.js → Toaster-oK4dSBPK.js} +4 -4
  171. package/dist/{Toaster-CNtAl-tF.js.map → Toaster-oK4dSBPK.js.map} +1 -1
  172. package/dist/{Toolbar-BIbbaCxh.js → Toolbar-Bp-A2P4L.js} +5 -5
  173. package/dist/{Toolbar-BIbbaCxh.js.map → Toolbar-Bp-A2P4L.js.map} +1 -1
  174. package/dist/{Toolbar-B_lHD0c2.js → Toolbar-Do8KEjJJ.js} +11 -105
  175. package/dist/Toolbar-Do8KEjJJ.js.map +1 -0
  176. package/dist/Toolbar.js +2 -2
  177. package/dist/{ToolbarButtonToggle-BMBmBdw1.js → ToolbarButtonToggle-T8YnSJ5x.js} +2 -3
  178. package/dist/ToolbarButtonToggle-T8YnSJ5x.js.map +1 -0
  179. package/dist/TreeSelectField.js +1 -1
  180. package/dist/{TreeSelectFieldSync-CKnFwROC.js → TreeSelectFieldSync-BXfLbDBM.js} +7 -7
  181. package/dist/TreeSelectFieldSync-BXfLbDBM.js.map +1 -0
  182. package/dist/TreeSelectMenu.js +1 -1
  183. package/dist/{TreeSelectMenuSync-CK-x2_ne.js → TreeSelectMenuSync-D7fQIyHr.js} +4 -4
  184. package/dist/TreeSelectMenuSync-D7fQIyHr.js.map +1 -0
  185. package/dist/{TypeaheadTextField-DqnUGXj0.js → TypeaheadTextField-Dkh84OCF.js} +10 -19
  186. package/dist/TypeaheadTextField-Dkh84OCF.js.map +1 -0
  187. package/dist/TypeaheadTextField.js +1 -1
  188. package/dist/{YearlessDateInputWithPicker-aI4UIyMD.js → YearlessDateInputWithPicker-7y8xhacx.js} +2 -2
  189. package/dist/{YearlessDateInputWithPicker-aI4UIyMD.js.map → YearlessDateInputWithPicker-7y8xhacx.js.map} +1 -1
  190. package/dist/assets/icons/material.ts +184 -184
  191. package/dist/assets/icons/st.ts +9 -9
  192. package/dist/beta.js +18 -18
  193. package/dist/{bulkActionTypes-sbwWLsDi.js → bulkActionTypes-BVJZ01mE.js} +2 -2
  194. package/dist/{bulkActionTypes-sbwWLsDi.js.map → bulkActionTypes-BVJZ01mE.js.map} +1 -1
  195. package/dist/{filter-state-DW8YmRHb.js → filter-state-CPCn-owS.js} +55 -37
  196. package/dist/filter-state-CPCn-owS.js.map +1 -0
  197. package/dist/{index-Cw2HFh0a.js → index-D1WfdON1.js} +1549 -1582
  198. package/dist/index-D1WfdON1.js.map +1 -0
  199. package/dist/index.js +48 -48
  200. package/dist/{proxy-DEehATlA.js → react-ORV84FjM.js} +6862 -5814
  201. package/dist/react-ORV84FjM.js.map +1 -0
  202. package/dist/src/beta/components/Calendar/Calendar.d.ts +8 -17
  203. package/dist/src/beta/components/Calendar/CalendarBetaPropsContext.d.ts +1 -0
  204. package/dist/src/beta/components/Calendar/useCalendarBetaProps.d.ts +1 -0
  205. package/dist/src/beta/components/FilterBar/FilterBar.d.ts +12 -53
  206. package/dist/src/beta/components/FilterBar/FilterDateList.d.ts +8 -0
  207. package/dist/src/beta/components/FilterBar/FilterDateRange.d.ts +15 -9
  208. package/dist/src/beta/components/FilterBar/FilterDateSingle.d.ts +15 -9
  209. package/dist/src/beta/components/FilterBar/FilterDrawer.d.ts +1 -14
  210. package/dist/src/beta/components/FilterBar/FilterItemWrapper.d.ts +0 -7
  211. package/dist/src/beta/components/FilterBar/FilterNumericRange.d.ts +4 -13
  212. package/dist/src/beta/components/FilterBar/FilterPopoverButton.d.ts +6 -8
  213. package/dist/src/beta/components/FilterBar/FilterSearchField.d.ts +3 -6
  214. package/dist/src/beta/components/FilterBar/FilterTextInput.d.ts +4 -13
  215. package/dist/src/beta/components/FilterBar/FilterToggleButton.d.ts +3 -14
  216. package/dist/src/beta/components/FilterBar/FilterTriggerButton.d.ts +3 -3
  217. package/dist/src/beta/components/FilterBar/internal/FilterGroupContext.d.ts +6 -20
  218. package/dist/src/beta/components/FilterBar/internal/adapters/index.d.ts +3 -8
  219. package/dist/src/beta/components/FilterBar/internal/adapters/types.d.ts +7 -19
  220. package/dist/src/beta/components/FilterBar/internal/types.d.ts +48 -57
  221. package/dist/src/beta/components/FilterBar/internal/utils/dateConstraints.d.ts +3 -3
  222. package/dist/src/beta/components/FilterBar/internal/utils/dateListLibraryOptions.d.ts +4 -7
  223. package/dist/src/beta/components/FilterBar/internal/utils/filter-state.d.ts +3 -24
  224. package/dist/src/beta/components/InteractiveCard/InteractiveCard.d.ts +2 -47
  225. package/dist/src/beta/components/InteractiveCard/types.d.ts +13 -71
  226. package/dist/src/beta/components/Page/Page.d.ts +8 -166
  227. package/dist/src/beta/components/Page/PageContent.d.ts +3 -17
  228. package/dist/src/beta/components/Page/PageContext.d.ts +9 -0
  229. package/dist/src/beta/components/Page/PageFooter.d.ts +2 -15
  230. package/dist/src/beta/components/Page/PageHeader.d.ts +38 -91
  231. package/dist/src/beta/components/Page/PagePanel.d.ts +17 -115
  232. package/dist/src/beta/components/Page/PagePanelContent.d.ts +5 -37
  233. package/dist/src/beta/components/Page/PagePanelFooter.d.ts +4 -27
  234. package/dist/src/beta/components/Page/PagePanelHeader.d.ts +3 -16
  235. package/dist/src/beta/components/Page/PageSidebar.d.ts +8 -41
  236. package/dist/src/beta/components/Page/PageSidebarHeader.d.ts +2 -20
  237. package/dist/src/beta/components/Page/internal/PagePanelContext.d.ts +1 -6
  238. package/dist/src/beta/components/Page/pageBreakpoint.d.ts +5 -18
  239. package/dist/src/beta/components/RichTextEditor/RichTextEditor.d.ts +2 -25
  240. package/dist/src/beta/components/RichTextEditor/internal/LinkPopover.d.ts +1 -0
  241. package/dist/src/beta/components/RichTextEditor/internal/MentionList.d.ts +1 -0
  242. package/dist/src/beta/components/RichTextEditor/internal/MentionPopover.d.ts +1 -0
  243. package/dist/src/beta/components/RichTextEditor/internal/RichTextEditorToolbar.d.ts +1 -0
  244. package/dist/src/beta/components/RichTextEditor/internal/YouTubeEmbedPrompt.d.ts +1 -0
  245. package/dist/src/beta/components/RichTextEditor/internal/YouTubePopover.d.ts +1 -0
  246. package/dist/src/beta/components/RichTextEditor/internal/extensions/ImageUploadExtension.d.ts +1 -0
  247. package/dist/src/beta/components/RichTextEditor/internal/extensions/LinkKeyboardShortcutExtension.d.ts +1 -0
  248. package/dist/src/beta/components/RichTextEditor/internal/extensions/MentionExtension.d.ts +5 -0
  249. package/dist/src/beta/components/RichTextEditor/internal/extensions/SafeImageExtension.d.ts +3 -10
  250. package/dist/src/beta/components/RichTextEditor/internal/extensions/YoutubeExtension.d.ts +4 -0
  251. package/dist/src/beta/components/RichTextEditor/internal/useRichTextEditor.d.ts +3 -17
  252. package/dist/src/beta/components/RichTextEditor/types.d.ts +46 -71
  253. package/dist/src/beta/components/SavedFiltersButton/SavedFiltersButton.d.ts +2 -33
  254. package/dist/src/beta/components/SavedFiltersButton/internal/AddSavedFilterDrawer.d.ts +2 -12
  255. package/dist/src/beta/components/SavedFiltersButton/internal/EditSavedFiltersDrawer.d.ts +2 -20
  256. package/dist/src/beta/components/SavedFiltersButton/parts.d.ts +0 -23
  257. package/dist/src/beta/components/SavedFiltersButton/types.d.ts +36 -85
  258. package/dist/src/beta/components/Table/DataTable/DataTable.d.ts +34 -84
  259. package/dist/src/beta/components/Table/DataTable/internal/DataTableBody.d.ts +15 -22
  260. package/dist/src/beta/components/Table/DataTable/internal/DataTableBodyRow.d.ts +47 -18
  261. package/dist/src/beta/components/Table/DataTable/internal/DataTableCellAffordance.d.ts +8 -0
  262. package/dist/src/beta/components/Table/DataTable/internal/DataTableFooter.d.ts +17 -23
  263. package/dist/src/beta/components/Table/DataTable/internal/DataTableHeader.d.ts +6 -9
  264. package/dist/src/beta/components/Table/DataTable/internal/DataTablePagination.d.ts +16 -0
  265. package/dist/src/beta/components/Table/DataTable/internal/cells/CellFocusContext.d.ts +2 -11
  266. package/dist/src/beta/components/Table/DataTable/internal/cells/CellStatus.d.ts +7 -5
  267. package/dist/src/beta/components/Table/DataTable/internal/cells/DataTableBodyCell.d.ts +4 -8
  268. package/dist/src/beta/components/Table/DataTable/internal/cells/DataTableBodyImmutableCell.d.ts +4 -17
  269. package/dist/src/beta/components/Table/DataTable/internal/cells/DataTableBodyMutableCell.d.ts +4 -18
  270. package/dist/src/beta/components/Table/DataTable/internal/cells/DataTableFooterCell.d.ts +3 -10
  271. package/dist/src/beta/components/Table/DataTable/internal/cells/DataTableHeaderCell.d.ts +3 -15
  272. package/dist/src/beta/components/Table/DataTable/internal/cells/DataTableOverflowCell.d.ts +4 -0
  273. package/dist/src/beta/components/Table/DataTable/internal/cells/useCellFocusListener.d.ts +2 -6
  274. package/dist/src/beta/components/Table/DataTable/internal/constants.d.ts +13 -30
  275. package/dist/src/beta/components/Table/DataTable/internal/context/focus/DTFocusContext.d.ts +1 -6
  276. package/dist/src/beta/components/Table/DataTable/internal/context/focus/DTFocusProvider.d.ts +3 -0
  277. package/dist/src/beta/components/Table/DataTable/internal/context/focus/useDTFocusDispatchContext.d.ts +1 -0
  278. package/dist/src/beta/components/Table/DataTable/internal/context/focus/useDTFocusStateContext.d.ts +1 -0
  279. package/dist/src/beta/components/Table/DataTable/internal/context/rowClick/DataTableRowClickContext.d.ts +2 -5
  280. package/dist/src/beta/components/Table/DataTable/internal/context/rowClick/DataTableRowClickProvider.d.ts +2 -5
  281. package/dist/src/beta/components/Table/DataTable/internal/context/rowClick/useDataTableRowClick.d.ts +1 -0
  282. package/dist/src/beta/components/Table/DataTable/internal/context/surface/DataTableSurfaceCoordinatorContext.d.ts +4 -0
  283. package/dist/src/beta/components/Table/DataTable/internal/context/surface/DataTableSurfaceCoordinatorProvider.d.ts +1 -0
  284. package/dist/src/beta/components/Table/DataTable/internal/context/surface/useDataTableSurfaceCoordinator.d.ts +1 -0
  285. package/dist/src/beta/components/Table/DataTable/internal/dataTableCellAffordanceHostClassName.d.ts +1 -0
  286. package/dist/src/beta/components/Table/DataTable/internal/editable-cells/DataTableEditableBooleanCell.d.ts +6 -0
  287. package/dist/src/beta/components/Table/DataTable/internal/editable-cells/DataTableEditableCellEditIcon.d.ts +1 -4
  288. package/dist/src/beta/components/Table/DataTable/internal/editable-cells/DataTableEditableCustomCell.d.ts +4 -0
  289. package/dist/src/beta/components/Table/DataTable/internal/editable-cells/DataTableEditableMultiselectAsyncCell.d.ts +5 -25
  290. package/dist/src/beta/components/Table/DataTable/internal/editable-cells/DataTableEditableMultiselectCell.d.ts +3 -13
  291. package/dist/src/beta/components/Table/DataTable/internal/editable-cells/DataTableEditableNumberCell.d.ts +4 -0
  292. package/dist/src/beta/components/Table/DataTable/internal/editable-cells/DataTableEditableSelectAsyncCell.d.ts +5 -0
  293. package/dist/src/beta/components/Table/DataTable/internal/editable-cells/DataTableEditableSelectCell.d.ts +4 -0
  294. package/dist/src/beta/components/Table/DataTable/internal/editable-cells/DataTableEditableTextCell.d.ts +4 -0
  295. package/dist/src/beta/components/Table/DataTable/internal/editable-cells/types.d.ts +7 -20
  296. package/dist/src/beta/components/Table/DataTable/internal/editable-cells/useCustomEditHelpers.d.ts +13 -26
  297. package/dist/src/beta/components/Table/DataTable/internal/editable-cells/useEditableMenuCell.d.ts +2 -10
  298. package/dist/src/beta/components/Table/DataTable/internal/useAsyncData.d.ts +8 -0
  299. package/dist/src/beta/components/Table/DataTable/internal/useColumnOrder.d.ts +2 -2
  300. package/dist/src/beta/components/Table/DataTable/internal/useDataTableVirtualizer.d.ts +7 -18
  301. package/dist/src/beta/components/Table/DataTable/internal/usePageDataCache.d.ts +6 -10
  302. package/dist/src/beta/components/Table/DataTable/internal/util/cellPositionHelpers.d.ts +0 -3
  303. package/dist/src/beta/components/Table/DataTable/internal/util/cellTypeHelpers.d.ts +7 -24
  304. package/dist/src/beta/components/Table/DataTable/internal/util/getCellInteractives.d.ts +4 -17
  305. package/dist/src/beta/components/Table/DataTable/internal/util/getTanStackColumnDef.d.ts +5 -29
  306. package/dist/src/beta/components/Table/DataTable/internal/util/shallowSortingEqual.d.ts +1 -0
  307. package/dist/src/beta/components/Table/DataTable/parts.d.ts +3 -17
  308. package/dist/src/beta/components/Table/DataTable/types.d.ts +41 -64
  309. package/dist/src/beta/components/Table/base/TableBase.d.ts +8 -26
  310. package/dist/src/beta/components/Table/base/TableBody.d.ts +5 -14
  311. package/dist/src/beta/components/Table/base/TableContainer.d.ts +1 -11
  312. package/dist/src/beta/components/Table/base/TableFooter.d.ts +5 -14
  313. package/dist/src/beta/components/Table/base/TableHeader.d.ts +5 -14
  314. package/dist/src/beta/components/Table/base/cells/TableBodyCell.d.ts +4 -13
  315. package/dist/src/beta/components/Table/base/cells/TableEmptyCellContent.d.ts +1 -1
  316. package/dist/src/beta/components/Table/base/cells/TableFooterCell.d.ts +5 -13
  317. package/dist/src/beta/components/Table/base/cells/TableHeaderCell.d.ts +8 -25
  318. package/dist/src/beta/components/Table/base/cells/types.d.ts +2 -6
  319. package/dist/src/beta/components/Table/columnTypeDefaults.d.ts +7 -36
  320. package/dist/src/beta/components/Table/createColumnHelper.d.ts +38 -153
  321. package/dist/src/beta/components/Table/formatters/booleanFormatter.d.ts +4 -15
  322. package/dist/src/beta/components/Table/formatters/chipsFormatter.d.ts +7 -9
  323. package/dist/src/beta/components/Table/formatters/currencyFormatter.d.ts +3 -15
  324. package/dist/src/beta/components/Table/formatters/dateFormatter.d.ts +10 -23
  325. package/dist/src/beta/components/Table/formatters/dateTimeFormatter.d.ts +23 -46
  326. package/dist/src/beta/components/Table/formatters/htmlFormatter.d.ts +2 -11
  327. package/dist/src/beta/components/Table/formatters/htmlToMarkdown.d.ts +5 -10
  328. package/dist/src/beta/components/Table/formatters/markdownFormatter.d.ts +3 -8
  329. package/dist/src/beta/components/Table/formatters/numberFormatter.d.ts +8 -27
  330. package/dist/src/beta/components/Table/formatters/percentFormatter.d.ts +4 -15
  331. package/dist/src/beta/components/Table/formatters/presets.d.ts +4 -12
  332. package/dist/src/beta/components/Table/formatters/timeFormatter.d.ts +7 -17
  333. package/dist/src/beta/components/Table/formatters/yearlessDateFormatter.d.ts +9 -21
  334. package/dist/src/beta/components/Table/internal/ResizeHandle.d.ts +5 -9
  335. package/dist/src/beta/components/Table/internal/TruncateChips.d.ts +2 -11
  336. package/dist/src/beta/components/Table/internal/getCommonPinningClasses.d.ts +2 -1
  337. package/dist/src/beta/components/Table/internal/getCommonPinningStyles.d.ts +6 -2
  338. package/dist/src/beta/components/Table/internal/scrollCellIntoView.d.ts +3 -7
  339. package/dist/src/beta/components/Table/internal/types.d.ts +2 -7
  340. package/dist/src/beta/components/Table/types.d.ts +183 -462
  341. package/dist/src/beta/components/Toolbar/Toolbar.d.ts +35 -267
  342. package/dist/src/beta/components/Toolbar/ToolbarButton.d.ts +5 -26
  343. package/dist/src/beta/components/Toolbar/ToolbarButtonLink.d.ts +5 -28
  344. package/dist/src/beta/components/Toolbar/ToolbarButtonToggle.d.ts +5 -27
  345. package/dist/src/beta/components/Toolbar/ToolbarControlGroup.d.ts +6 -8
  346. package/dist/src/beta/components/Toolbar/ToolbarSearchField.d.ts +3 -14
  347. package/dist/src/beta/components/Toolbar/ToolbarSelect.d.ts +13 -65
  348. package/dist/src/beta/components/Toolbar/internal/ToolbarContext.d.ts +0 -32
  349. package/dist/src/beta/components/Toolbar/internal/ToolbarItemOverflowContext.d.ts +0 -13
  350. package/dist/src/beta/components/Toolbar/internal/ToolbarItemWrapper.d.ts +2 -28
  351. package/dist/src/beta/components/Toolbar/internal/ToolbarOverflowMenu.d.ts +4 -21
  352. package/dist/src/beta/components/Toolbar/internal/utils/accessibility.d.ts +7 -15
  353. package/dist/src/beta/components/Toolbar/types.d.ts +7 -26
  354. package/dist/src/beta/components/TreeSelectField/TreeSelectField.d.ts +2 -23
  355. package/dist/src/beta/components/TreeSelectField/TreeSelectFieldSync.d.ts +10 -46
  356. package/dist/src/beta/components/TreeSelectField/internal/TreeContent.d.ts +5 -21
  357. package/dist/src/beta/components/TreeSelectField/internal/TreePanel.d.ts +1 -38
  358. package/dist/src/beta/components/TreeSelectField/internal/TreeRow.d.ts +6 -38
  359. package/dist/src/beta/components/TreeSelectField/internal/TreeSelectFieldInput.d.ts +2 -50
  360. package/dist/src/beta/components/TreeSelectField/internal/VirtualizedTreePanel.d.ts +2 -39
  361. package/dist/src/beta/components/TreeSelectField/internal/treeSync.d.ts +6 -21
  362. package/dist/src/beta/components/TreeSelectField/internal/treeUtils.d.ts +3 -19
  363. package/dist/src/beta/components/TreeSelectField/internal/useTree.d.ts +9 -50
  364. package/dist/src/beta/components/TreeSelectField/internal/useTreeCascade.d.ts +8 -79
  365. package/dist/src/beta/components/TreeSelectField/internal/useTreeKeyboard.d.ts +3 -29
  366. package/dist/src/beta/components/TreeSelectField/internal/useTreeLazyCascade.d.ts +8 -36
  367. package/dist/src/beta/components/TreeSelectField/internal/useTreeLoader.d.ts +10 -34
  368. package/dist/src/beta/components/TreeSelectField/parts.d.ts +3 -9
  369. package/dist/src/beta/components/TreeSelectField/types.d.ts +82 -68
  370. package/dist/src/beta/components/TreeSelectMenu/TreeSelectMenu.d.ts +4 -18
  371. package/dist/src/beta/components/TreeSelectMenu/TreeSelectMenuSync.d.ts +9 -47
  372. package/dist/src/beta/components/TreeSelectMenu/parts.d.ts +4 -4
  373. package/dist/src/beta/components/TreeSelectMenu/types.d.ts +44 -54
  374. package/dist/src/beta/components/TypeaheadTextField/TypeaheadTextField.d.ts +15 -43
  375. package/dist/src/beta/components/TypeaheadTextField/internal/SuggestionItem.d.ts +1 -18
  376. package/dist/src/beta/hooks/useAdaptiveView/useAdaptiveView.d.ts +6 -41
  377. package/dist/src/integration-testing/stepper-panel-flicker.spec.d.ts +1 -0
  378. package/dist/{stripInlineMarkdown-DmU2adBb.js → stripInlineMarkdown-CcwDEdw0.js} +2 -2
  379. package/dist/{stripInlineMarkdown-DmU2adBb.js.map → stripInlineMarkdown-CcwDEdw0.js.map} +1 -1
  380. package/dist/{syncFilterUtils-CP4dhWVs.js → syncFilterUtils-ubEYuRGQ.js} +4 -4
  381. package/dist/{syncFilterUtils-CP4dhWVs.js.map → syncFilterUtils-ubEYuRGQ.js.map} +1 -1
  382. package/dist/{treeSync-CDrgjuw8.js → treeSync-CkjyJSVq.js} +5 -11
  383. package/dist/treeSync-CkjyJSVq.js.map +1 -0
  384. package/dist/{use-reduced-motion-CqjZZ5QB.js → use-reduced-motion-yYB9Tb0D.js} +2 -2
  385. package/dist/use-reduced-motion-yYB9Tb0D.js.map +1 -0
  386. package/dist/{useDrilldown-DV4qyVOI.js → useDrilldown-DOXav1An.js} +3 -3
  387. package/dist/{useDrilldown-DV4qyVOI.js.map → useDrilldown-DOXav1An.js.map} +1 -1
  388. package/dist/{useInfiniteCombobox-DvyQpdwv.js → useInfiniteCombobox-15_SoeWw.js} +4 -4
  389. package/dist/{useInfiniteCombobox-DvyQpdwv.js.map → useInfiniteCombobox-15_SoeWw.js.map} +1 -1
  390. package/dist/{useInvalidateOnOptionsChange-D3KWg4qK.js → useInvalidateOnOptionsChange-DiRbyJFp.js} +4 -4
  391. package/dist/useInvalidateOnOptionsChange-DiRbyJFp.js.map +1 -0
  392. package/package.json +22 -20
  393. package/dist/Button-Dwh_Nd4l.js.map +0 -1
  394. package/dist/Calendar-BUFPc5UN.js.map +0 -1
  395. package/dist/Calendar-CEf7ke8X.js.map +0 -1
  396. package/dist/DataTable-DbuXfDNJ.js.map +0 -1
  397. package/dist/Details-oM-nR4ju.js.map +0 -1
  398. package/dist/FilterBar-CKYf-1oU.js.map +0 -1
  399. package/dist/InteractiveCard-C0g5PxB6.js.map +0 -1
  400. package/dist/Page-B2HZzNGP.js.map +0 -1
  401. package/dist/RichTextEditor-TcZUnqcp.js.map +0 -1
  402. package/dist/SavedFiltersButton-B8lf3L2T.js.map +0 -1
  403. package/dist/Tab-mXEQ0ifM.js.map +0 -1
  404. package/dist/Toolbar-B_lHD0c2.js.map +0 -1
  405. package/dist/ToolbarButtonToggle-BMBmBdw1.js.map +0 -1
  406. package/dist/TreeSelectFieldSync-CKnFwROC.js.map +0 -1
  407. package/dist/TreeSelectMenuSync-CK-x2_ne.js.map +0 -1
  408. package/dist/TypeaheadTextField-DqnUGXj0.js.map +0 -1
  409. package/dist/filter-state-DW8YmRHb.js.map +0 -1
  410. package/dist/index-Cw2HFh0a.js.map +0 -1
  411. package/dist/proxy-DEehATlA.js.map +0 -1
  412. package/dist/treeSync-CDrgjuw8.js.map +0 -1
  413. package/dist/use-reduced-motion-CqjZZ5QB.js.map +0 -1
  414. package/dist/useInvalidateOnOptionsChange-D3KWg4qK.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"SelectTrigger-C3-Cne3D.js","sources":["../src/components/SelectTrigger/SelectTrigger.tsx"],"sourcesContent":["import type { Dispatch, SetStateAction } from \"react\";\nimport type {\n UseComboboxProps as UseDownshiftComboboxProps,\n UseMultipleSelectionProps as UseDownshiftMultipleSelectionProps,\n} from \"downshift\";\n\nimport { Avatar, type AvatarProps } from \"../Avatar\";\nimport { childrenToString } from \"../../internal/functions\";\nimport type { DataTrackingId, DistributiveOmit } from \"../../types\";\nimport type { FieldLabelProps } from \"../FieldLabel\";\nimport { Icon, type IconProps } from \"../Icon\";\nimport { useLayoutPropsUtil } from \"../../internal/hooks\";\nimport { useTrackingId } from \"../../hooks\";\n\nimport {\n SelectTriggerBase,\n type SelectTriggerBaseProps,\n} from \"./internal/SelectTriggerBase\";\nimport {\n defaultItemToKey,\n defaultItemToString,\n} from \"../Combobox/internal/ComboboxUtils\";\n\n/**\n * Discriminated by `multiple`. Omit it and pass `selectedItem`; set\n * `multiple` and pass `selectedItems`. `itemToString` and `itemToKey`\n * default to Combobox's item helpers.\n */\nexport type SelectTriggerProps<Item> = DistributiveOmit<\n SelectTriggerBaseProps<Item>,\n \"prefix\" | \"selectedItem\" | \"selectedItems\" | \"onChange\"\n> &\n Pick<FieldLabelProps, \"required\" | \"moreInfo\"> &\n Pick<UseDownshiftComboboxProps<Item>, \"itemToString\" | \"itemToKey\"> &\n DataTrackingId & {\n /**\n * Content before the value. A string is text; `{ icon }` / `{ avatar }`\n * render those components. Avatar size follows the trigger (`small` or\n * `medium`).\n */\n prefix?:\n | string\n | { icon: DistributiveOmit<IconProps, \"size\"> }\n | { avatar: DistributiveOmit<AvatarProps, \"size\"> };\n } & (\n | {\n /** Omit for single selection. */\n multiple?: never;\n /** Called with the next item, or `null` when the selection is cleared. */\n onChange?:\n | Dispatch<SetStateAction<Item | null>>\n | ((arg: Item | null) => void);\n /** Shown in the value area. Use `null` for an empty field. */\n selectedItem: UseDownshiftComboboxProps<Item>[\"selectedItem\"];\n selectedItems?: never;\n }\n | {\n /** Switches the trigger to chip-based multi-select. */\n multiple: true;\n /** Called with the next items. Clearing the field passes `[]`. */\n onChange?:\n | Dispatch<SetStateAction<Item[] | null>>\n | ((arg: Item[] | null) => void);\n selectedItem?: never;\n /** Shown as chips. Use an empty array for an empty field. */\n selectedItems: UseDownshiftMultipleSelectionProps<Item>[\"selectedItems\"];\n }\n );\n\n/**\n * Field-styled button that opens a custom select-like menu. Pair with a\n * popover or similar; use `SelectMenu` when its built-in trigger is enough.\n *\n * @example\n * <SelectTrigger\n * label=\"Assignee\"\n * selectedItem={selected}\n * prefix={{ avatar: { name: \"Ada\" } }}\n * />\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any -- TODO: look into unknown\nexport const SelectTrigger = <Item = any>(props: SelectTriggerProps<Item>) => {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n\n const {\n className,\n style,\n label,\n size,\n error,\n hint,\n description,\n required,\n moreInfo,\n prefix: prefixProp,\n suffix,\n maxRows,\n selectedItemProps = () => ({}),\n id,\n placeholder,\n disabled: isDisabled,\n readOnly: isReadOnly,\n onClick,\n multiple,\n onChange,\n disableClearSelection,\n itemToString: itemToStringProp,\n itemToKey: itemToKeyProp,\n selectedItem = null,\n selectedItems = [],\n ...rest\n } = componentProps;\n\n const itemToString = itemToStringProp ?? defaultItemToString<Item>;\n const itemToKey = itemToKeyProp ?? defaultItemToKey<Item>;\n\n function removeSelectedItem(item: Item) {\n if (multiple) {\n onChange?.(\n selectedItems.filter(\n (selectedItem: Item) => itemToKey(selectedItem) !== itemToKey(item),\n ),\n );\n } else if (itemToKey(selectedItem) === itemToKey(item)) {\n onChange?.(null);\n }\n }\n\n function reset() {\n if (multiple) {\n onChange?.([]);\n } else {\n onChange?.(null);\n }\n }\n\n const noClearButton = isDisabled || isReadOnly || disableClearSelection;\n\n const styleCombined = {\n ...style,\n ...layoutStyles,\n };\n\n const { aiMark, ...labelPropsWithoutAiMark } = props.labelProps || {};\n\n const data = {\n label: childrenToString(props.label),\n size: props.size,\n required: props.required,\n moreInfo: props.moreInfo,\n description: childrenToString(props.description),\n hint: props.hint,\n labelProps: labelPropsWithoutAiMark,\n };\n\n const trackingId = useTrackingId({\n name: \"ComboboxSearchField\",\n data,\n hasOverride: !!props[\"data-tracking-id\"],\n });\n\n const prefix =\n prefixProp == null || typeof prefixProp === \"string\" ? (\n prefixProp\n ) : \"icon\" in prefixProp ? (\n <Icon {...prefixProp.icon} />\n ) : \"avatar\" in prefixProp ? (\n <Avatar\n {...prefixProp.avatar}\n size={props.size === \"small\" ? \"small\" : \"medium\"}\n />\n ) : (\n prefixProp\n );\n\n return (\n <SelectTriggerBase\n data-anv=\"select-trigger\"\n data-tracking-id={trackingId}\n className={className}\n style={styleCombined}\n label={label}\n size={size}\n error={error}\n hint={hint}\n description={description}\n labelProps={{\n aiMark,\n moreInfo,\n required,\n }}\n prefix={prefix}\n suffix={suffix}\n maxRows={maxRows}\n selectedItemProps={selectedItemProps}\n id={id}\n placeholder={placeholder}\n disabled={isDisabled}\n readOnly={isReadOnly}\n itemToString={itemToString}\n removeSelectedItem={removeSelectedItem}\n disableClearSelection={noClearButton}\n selectedItem={selectedItem}\n selectedItems={selectedItems}\n onClearButtonClick={reset}\n inputWrapperProps={{ onClick }}\n inputProps={rest}\n />\n );\n};\n"],"names":["selectedItem"],"mappings":"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"}
1
+ {"version":3,"file":"SelectTrigger-B9WUUdIu.js","sources":["../src/components/SelectTrigger/SelectTrigger.tsx"],"sourcesContent":["import type { Dispatch, SetStateAction } from \"react\";\nimport type {\n UseComboboxProps as UseDownshiftComboboxProps,\n UseMultipleSelectionProps as UseDownshiftMultipleSelectionProps,\n} from \"downshift\";\n\nimport { Avatar, type AvatarProps } from \"../Avatar\";\nimport { childrenToString } from \"../../internal/functions\";\nimport type { DataTrackingId, DistributiveOmit } from \"../../types\";\nimport type { FieldLabelProps } from \"../FieldLabel\";\nimport { Icon, type IconProps } from \"../Icon\";\nimport { useLayoutPropsUtil } from \"../../internal/hooks\";\nimport { useTrackingId } from \"../../hooks\";\n\nimport {\n SelectTriggerBase,\n type SelectTriggerBaseProps,\n} from \"./internal/SelectTriggerBase\";\nimport {\n defaultItemToKey,\n defaultItemToString,\n} from \"../Combobox/internal/ComboboxUtils\";\n\n/**\n * Discriminated by `multiple`. Omit it and pass `selectedItem`; set\n * `multiple` and pass `selectedItems`. `itemToString` and `itemToKey`\n * default to Combobox's item helpers.\n */\nexport type SelectTriggerProps<Item> = DistributiveOmit<\n SelectTriggerBaseProps<Item>,\n \"prefix\" | \"selectedItem\" | \"selectedItems\" | \"onChange\"\n> &\n Pick<FieldLabelProps, \"required\" | \"moreInfo\"> &\n Pick<UseDownshiftComboboxProps<Item>, \"itemToString\" | \"itemToKey\"> &\n DataTrackingId & {\n /**\n * Content before the value. A string is text; `{ icon }` / `{ avatar }`\n * render those components. Avatar size follows the trigger (`small` or\n * `medium`).\n */\n prefix?:\n | string\n | { icon: DistributiveOmit<IconProps, \"size\"> }\n | { avatar: DistributiveOmit<AvatarProps, \"size\"> };\n } & (\n | {\n /** Omit for single selection. */\n multiple?: never;\n /** Called with the next item, or `null` when the selection is cleared. */\n onChange?:\n | Dispatch<SetStateAction<Item | null>>\n | ((arg: Item | null) => void);\n /** Shown in the value area. Use `null` for an empty field. */\n selectedItem: UseDownshiftComboboxProps<Item>[\"selectedItem\"];\n selectedItems?: never;\n }\n | {\n /** Switches the trigger to chip-based multi-select. */\n multiple: true;\n /** Called with the next items. Clearing the field passes `[]`. */\n onChange?:\n | Dispatch<SetStateAction<Item[] | null>>\n | ((arg: Item[] | null) => void);\n selectedItem?: never;\n /** Shown as chips. Use an empty array for an empty field. */\n selectedItems: UseDownshiftMultipleSelectionProps<Item>[\"selectedItems\"];\n }\n );\n\n/**\n * Field-styled button that opens a custom select-like menu. Pair with a\n * popover or similar; use `SelectMenu` when its built-in trigger is enough.\n *\n * @example\n * <SelectTrigger\n * label=\"Assignee\"\n * selectedItem={selected}\n * prefix={{ avatar: { name: \"Ada\" } }}\n * />\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any -- TODO: look into unknown\nexport const SelectTrigger = <Item = any>(props: SelectTriggerProps<Item>) => {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n\n const {\n className,\n style,\n label,\n size,\n error,\n hint,\n description,\n required,\n moreInfo,\n prefix: prefixProp,\n suffix,\n maxRows,\n selectedItemProps = () => ({}),\n id,\n placeholder,\n disabled: isDisabled,\n readOnly: isReadOnly,\n onClick,\n multiple,\n onChange,\n disableClearSelection,\n itemToString: itemToStringProp,\n itemToKey: itemToKeyProp,\n selectedItem = null,\n selectedItems = [],\n ...rest\n } = componentProps;\n\n const itemToString = itemToStringProp ?? defaultItemToString<Item>;\n const itemToKey = itemToKeyProp ?? defaultItemToKey<Item>;\n\n function removeSelectedItem(item: Item) {\n if (multiple) {\n onChange?.(\n selectedItems.filter(\n (selectedItem: Item) => itemToKey(selectedItem) !== itemToKey(item),\n ),\n );\n } else if (itemToKey(selectedItem) === itemToKey(item)) {\n onChange?.(null);\n }\n }\n\n function reset() {\n if (multiple) {\n onChange?.([]);\n } else {\n onChange?.(null);\n }\n }\n\n const noClearButton = isDisabled || isReadOnly || disableClearSelection;\n\n const styleCombined = {\n ...style,\n ...layoutStyles,\n };\n\n const { aiMark, ...labelPropsWithoutAiMark } = props.labelProps || {};\n\n const data = {\n label: childrenToString(props.label),\n size: props.size,\n required: props.required,\n moreInfo: props.moreInfo,\n description: childrenToString(props.description),\n hint: props.hint,\n labelProps: labelPropsWithoutAiMark,\n };\n\n const trackingId = useTrackingId({\n name: \"ComboboxSearchField\",\n data,\n hasOverride: !!props[\"data-tracking-id\"],\n });\n\n const prefix =\n prefixProp == null || typeof prefixProp === \"string\" ? (\n prefixProp\n ) : \"icon\" in prefixProp ? (\n <Icon {...prefixProp.icon} />\n ) : \"avatar\" in prefixProp ? (\n <Avatar\n {...prefixProp.avatar}\n size={props.size === \"small\" ? \"small\" : \"medium\"}\n />\n ) : (\n prefixProp\n );\n\n return (\n <SelectTriggerBase\n data-anv=\"select-trigger\"\n data-tracking-id={trackingId}\n className={className}\n style={styleCombined}\n label={label}\n size={size}\n error={error}\n hint={hint}\n description={description}\n labelProps={{\n aiMark,\n moreInfo,\n required,\n }}\n prefix={prefix}\n suffix={suffix}\n maxRows={maxRows}\n selectedItemProps={selectedItemProps}\n id={id}\n placeholder={placeholder}\n disabled={isDisabled}\n readOnly={isReadOnly}\n itemToString={itemToString}\n removeSelectedItem={removeSelectedItem}\n disableClearSelection={noClearButton}\n selectedItem={selectedItem}\n selectedItems={selectedItems}\n onClearButtonClick={reset}\n inputWrapperProps={{ onClick }}\n inputProps={rest}\n />\n );\n};\n"],"names":["selectedItem"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- export { S as SelectTrigger, S as default } from './SelectTrigger-C3-Cne3D.js';
1
+ export { S as SelectTrigger, S as default } from './SelectTrigger-B9WUUdIu.js';
2
2
  //# sourceMappingURL=SelectTrigger.js.map
@@ -3,10 +3,10 @@ import { useId, useRef, useMemo, useState, useLayoutEffect, isValidElement } fro
3
3
  import { c as cx } from './index-De1g9FRV.js';
4
4
  import { S as SvgClose } from './close-DZj38AEh.js';
5
5
  import { S as SvgChevronRight } from './chevron_right-BdpsxX7x.js';
6
- import { B as Button } from './Button-Dwh_Nd4l.js';
7
- import { C as Chip } from './Chip-B4G4zaP-.js';
6
+ import { B as Button } from './Button-Dn6-01xl.js';
7
+ import { C as Chip } from './Chip-DivZ3OuB.js';
8
8
  import { F as Flex } from './Flex-CRF7gj0_.js';
9
- import { F as FieldLabel } from './FieldLabel-CAusaqUY.js';
9
+ import { F as FieldLabel } from './FieldLabel-FsNIjn8T.js';
10
10
  import { w as warnDeprecatedErrorUsage } from './utils-CM48ODEJ.js';
11
11
  import { s as styles } from './SelectTriggerBase.module-mYOfdBGA.js';
12
12
  import { H as Helper } from './Helper-BHpOgh7k.js';
@@ -409,4 +409,4 @@ const SelectTriggerBase = ({
409
409
  };
410
410
 
411
411
  export { ADD_NEW as A, SelectTriggerBase as S, defaultItemToKey as a, SELECT_ALL as b, defaultItemToString as d, getScrollParent as g, isMultiple as i };
412
- //# sourceMappingURL=SelectTriggerBase-BnsTYWVb.js.map
412
+ //# sourceMappingURL=SelectTriggerBase-Dq7QDlPS.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SelectTriggerBase-BnsTYWVb.js","sources":["../src/components/Combobox/internal/ComboboxUtils.ts","../src/components/SelectTrigger/internal/SelectTriggerBase.tsx"],"sourcesContent":["import type {\n ComboboxMultipleProps,\n ComboboxProps,\n ComboboxSelectProps,\n SelectMultipleProps,\n} from \"../ComboboxTypes\";\n\nexport const ADD_NEW = Symbol.for(\"add-new\");\nexport const SELECT_ALL = Symbol.for(\"select-all\");\n\n/**\n * Default function to convert an item to a string representation\n * @template Item - The type of the item\n * @param item - The item to convert to string\n * @returns String representation of the item or empty string if null/undefined\n */\nexport const defaultItemToString = <Item>(item: Item | null) =>\n item != null ? String(item) : \"\";\n\n/**\n * Default function to generate a unique key for an item\n * @template Item - The type of the item\n * @param item - The item to generate a key for\n * @returns The item itself as the key\n */\nexport const defaultItemToKey = <Item>(item: Item | null) => item;\n\nexport function isMultiple<Item>(\n props: ComboboxProps<Item> | ComboboxSelectProps<Item>,\n): props is ComboboxMultipleProps<Item> | SelectMultipleProps<Item> {\n return Object.hasOwn(props, \"multiple\") && props.multiple === true;\n}\n\nexport function getScrollParent(node: HTMLElement | null) {\n if (node == null) {\n return null;\n }\n\n if (node.scrollHeight > node.clientHeight) {\n return node;\n } else {\n if (node.parentNode instanceof HTMLElement) {\n return getScrollParent(node.parentNode);\n }\n return null;\n }\n}\n","import {\n useState,\n useId,\n useRef,\n useLayoutEffect,\n useMemo,\n isValidElement,\n type ComponentPropsWithoutRef,\n type MouseEvent,\n type MutableRefObject,\n type MouseEventHandler,\n type ReactNode,\n} from \"react\";\nimport cx from \"classnames\";\nimport Close from \"@servicetitan/hammer-icon/mdi/round/close.svg\";\nimport Chevron_Right from \"@servicetitan/hammer-icon/mdi/round/chevron_right.svg\";\n\nimport { Button } from \"../../Button\";\nimport { Chip, type ChipProps } from \"../../Chip\";\nimport { Flex } from \"../../Flex\";\nimport { FieldLabel, type FieldLabelProps } from \"../../FieldLabel\";\nimport { Helper } from \"../../../internal/components\";\nimport { warnDeprecatedErrorUsage } from \"../../FieldMessage\";\nimport type { TextFieldProps } from \"../../TextField\";\n\nimport styles from \"./SelectTriggerBase.module.scss\";\nimport type { DataAttributes, DistributiveOmit } from \"../../../types\";\nimport { defaultItemToString } from \"../../Combobox/internal/ComboboxUtils\";\n\ntype PartialChipProps = Partial<Omit<ChipProps, \"icon\" | \"avatar\">> &\n DataAttributes &\n (\n | { icon?: ChipProps[\"icon\"]; avatar?: never }\n | { icon?: never; avatar?: ChipProps[\"avatar\"] }\n );\n\ntype CollapseSearchStatus = \"done\" | \"measuring\" | \"searching\";\n\ntype CollapseSearchState = {\n status: CollapseSearchStatus;\n key: string | null;\n collapsedChips: boolean;\n visibleChipsCount: number | null;\n low: number;\n high: number;\n candidate: number | null;\n bestFit: number | null;\n iterations: number;\n};\n\nconst COLLAPSE_SEARCH_ITERATION_MARGIN = 4;\n\nfunction getDoneCollapseSearchState(\n key: string | null,\n collapsedChips = false,\n visibleChipsCount: number | null = null,\n): CollapseSearchState {\n return {\n status: \"done\",\n key,\n collapsedChips,\n visibleChipsCount,\n low: 0,\n high: 0,\n candidate: null,\n bestFit: visibleChipsCount,\n iterations: 0,\n };\n}\n\nfunction getMaxCollapseSearchIterations(selectedItemsCount: number): number {\n // Allows one full binary-search pass plus a small buffer for measurement rerenders.\n return (\n Math.ceil(Math.log2(Math.max(selectedItemsCount, 2))) +\n COLLAPSE_SEARCH_ITERATION_MARGIN\n );\n}\n\nconst FNV_1A_OFFSET_BASIS = 0x811c9dc5;\nconst FNV_1A_PRIME = 0x01000193;\n\nfunction addByteToCollapseHash(hash: number, byte: number): number {\n return Math.imul(hash ^ byte, FNV_1A_PRIME) >>> 0;\n}\n\nfunction addNumberToCollapseHash(hash: number, value: number): number {\n let nextHash = hash;\n\n nextHash = addByteToCollapseHash(nextHash, value & 0xff);\n nextHash = addByteToCollapseHash(nextHash, (value >>> 8) & 0xff);\n nextHash = addByteToCollapseHash(nextHash, (value >>> 16) & 0xff);\n nextHash = addByteToCollapseHash(nextHash, (value >>> 24) & 0xff);\n\n return nextHash;\n}\n\nfunction addLabelToCollapseHash(hash: number, label: string): number {\n let nextHash = addNumberToCollapseHash(hash, label.length);\n\n for (let index = 0; index < label.length; index += 1) {\n const codeUnit = label.charCodeAt(index);\n\n nextHash = addByteToCollapseHash(nextHash, codeUnit & 0xff);\n nextHash = addByteToCollapseHash(nextHash, codeUnit >>> 8);\n }\n\n return nextHash;\n}\n\nfunction getCollapseKey<Item>(\n maxRows: number | undefined,\n selectedItems: Item[],\n itemToString: (item: Item) => string,\n): string | null {\n if (maxRows === undefined) return null;\n\n let selectedItemsHash = FNV_1A_OFFSET_BASIS;\n\n for (const item of selectedItems) {\n selectedItemsHash = addLabelToCollapseHash(\n selectedItemsHash,\n itemToString(item),\n );\n }\n\n return `${maxRows}:${selectedItems.length}:${selectedItemsHash.toString(36)}`;\n}\n\nfunction getCollapseSearchCandidate(low: number, high: number): number {\n return Math.floor((low + high) / 2);\n}\n\nfunction mergeChipProps(\n ...propSets: (PartialChipProps | Partial<ChipProps>)[]\n): ChipProps {\n const merged = propSets.reduce(\n (acc, props) => ({ ...acc, ...props }),\n {} as Record<string, unknown>,\n );\n\n return merged as ChipProps;\n}\n\nexport type SelectTriggerBaseProps<Item = unknown> = DistributiveOmit<\n TextFieldProps,\n \"showCounter\" | \"prefix\"\n> & {\n /**\n * Caps visible selected chips to this many rows and collapses the rest\n * into a +N chip. Omit to show every chip. Must be a positive integer.\n */\n maxRows?: number;\n\n /** Extra Chip props per selected item; merged after `chipProps`. */\n selectedItemProps?: (item: Item, index: number) => PartialChipProps;\n} & {\n /** Chip and single-value labels. Defaults to Combobox's `defaultItemToString`. */\n itemToString?: (item: Item) => string;\n /** Called when a chip's close control is activated. */\n removeSelectedItem?: (item: Item) => void;\n /**\n * Hides the clear control. Also hidden when `disabled` or `readOnly`.\n * Defaults to `false`.\n */\n disableClearSelection?: boolean;\n selectedItem: Item | null;\n selectedItems: Item[];\n\n /** Combobox typed query shown in the input. */\n inputValue?: string;\n /** Floating-ui reference element for the composed menu. */\n referenceRef?: MutableRefObject<HTMLDivElement | null>;\n} & {\n /**\n * `select` renders a button-like value area; `combobox` renders a text\n * input. Defaults to `select`.\n */\n variant?: \"select\" | \"combobox\";\n /** Fired after the clear control stops the wrapper click. */\n onClearButtonClick?: MouseEventHandler<HTMLButtonElement>;\n labelProps?: Partial<FieldLabelProps>;\n inputWrapperProps?: ComponentPropsWithoutRef<\"div\">;\n toggleButtonProps?: ComponentPropsWithoutRef<\"button\"> & DataAttributes;\n clearButtonProps?: ComponentPropsWithoutRef<\"button\"> & DataAttributes;\n /** Extra Chip props per selected item; merged before `selectedItemProps`. */\n chipProps?: (item: Item, index: number) => PartialChipProps;\n inputProps?: ComponentPropsWithoutRef<\"input\" | \"div\"> & DataAttributes;\n /** Hides the trailing chevron. Defaults to `false`. */\n disableToggleButton?: boolean;\n} & {\n prefix?: string | ReactNode;\n};\n\nexport const SelectTriggerBase = <Item,>({\n className,\n label,\n size,\n error,\n hint,\n description,\n prefix,\n suffix,\n maxRows,\n selectedItemProps = (_item: Item, _index: number): PartialChipProps => ({}),\n disabled,\n readOnly,\n disableClearSelection,\n itemToString: itemToStringProp,\n selectedItem,\n selectedItems,\n removeSelectedItem,\n inputValue,\n referenceRef,\n variant = \"select\",\n onClearButtonClick,\n labelProps,\n inputWrapperProps = {},\n toggleButtonProps = {},\n clearButtonProps = {},\n inputProps = {},\n chipProps = (_item: Item, _index: number): PartialChipProps => ({}),\n disableToggleButton = false,\n warning,\n placeholder,\n ...rest\n}: SelectTriggerBaseProps<Item>) => {\n const itemToString = itemToStringProp ?? defaultItemToString<Item>;\n\n const ComboboxTriggerClassNames = cx(styles[\"search-field\"], {\n [styles[\"select\"]]: variant === \"select\",\n });\n\n const noClearButton = disabled || readOnly || disableClearSelection;\n\n const ComboboxInputWrapperClassNames = cx(\n styles[\"input-wrapper\"],\n className\n ? {\n [className]: variant === \"select\",\n }\n : {},\n {\n [styles[\"small\"]]: size === \"small\",\n [styles[\"large\"]]: size === \"large\",\n [styles[\"no-clear-button\"]]: noClearButton,\n [styles[\"no-toggle-button\"]]: disableToggleButton,\n [styles[\"is-disabled\"]]: disabled,\n },\n );\n\n const ComboboxInputClassNames = cx(\n styles[\"input\"],\n className\n ? {\n [className]: variant === \"combobox\",\n }\n : {},\n {\n [styles[\"error\"]]: error,\n },\n );\n\n const helperUid = \"helper\" + useId();\n const placeholderUid = \"placeholder\" + useId();\n const ariaDescribedBy = `${helperUid} ${placeholderUid}`;\n\n warnDeprecatedErrorUsage(\"SelectTrigger\", error);\n\n const errorMessages =\n typeof error === \"boolean\" || error === undefined ? undefined : error;\n\n const rowsRef = useRef<HTMLDivElement>(null);\n const collapseKey = useMemo(\n () => getCollapseKey(maxRows, selectedItems, itemToString),\n [maxRows, selectedItems, itemToString],\n );\n const [collapseSearch, setCollapseSearch] = useState<CollapseSearchState>(\n () => getDoneCollapseSearchState(null),\n );\n const stillCalculating = collapseSearch.status !== \"done\";\n\n useLayoutEffect(() => {\n if (maxRows === undefined) {\n if (\n collapseSearch.status !== \"done\" ||\n collapseSearch.collapsedChips ||\n collapseSearch.visibleChipsCount !== null ||\n collapseSearch.key !== null\n ) {\n setCollapseSearch(getDoneCollapseSearchState(null));\n }\n\n return;\n }\n\n if (collapseSearch.key !== collapseKey) {\n setCollapseSearch({\n status: \"measuring\",\n key: collapseKey,\n collapsedChips: false,\n visibleChipsCount: null,\n low: 0,\n high: Math.max(selectedItems.length - 1, 0),\n candidate: null,\n bestFit: null,\n iterations: 0,\n });\n\n return;\n }\n\n if (collapseSearch.status === \"done\") return;\n\n if (rowsRef?.current?.children) {\n const children = rowsRef?.current?.children;\n\n // Exclude the input-flex element from row counting so the algorithm\n // only considers chip elements when deciding whether to collapse.\n // The input will naturally fit alongside chips thanks to its\n // reduced min-width.\n const chipChildren = Array.from(children).filter(\n (child) =>\n !(child as HTMLElement).classList?.contains(styles[\"input-flex\"]),\n );\n\n const rowData = chipChildren.reduce(\n (acc, child) => {\n const top = child.getBoundingClientRect().top;\n\n if (!acc.length) {\n return [{ count: 1, top }];\n } else if (acc[acc.length - 1].top === top) {\n return [\n ...acc.slice(0, -1),\n { count: acc[acc.length - 1].count + 1, top },\n ];\n } else if (acc[acc.length - 1].top !== top) {\n return [...acc, { count: 1, top }];\n } else {\n return acc;\n }\n },\n [] as { count: number; top: number }[],\n );\n\n const fitsWithinMaxRows = !rowData[maxRows];\n\n // A single chip is never collapsed, even when it overflows `maxRows`.\n if (collapseSearch.status === \"measuring\") {\n if (fitsWithinMaxRows || selectedItems.length === 1) {\n setCollapseSearch(getDoneCollapseSearchState(collapseKey));\n\n return;\n }\n\n const quickGuess = Math.max(\n rowData.slice(0, maxRows).reduce((sum, row) => sum + row.count, -1),\n 0,\n );\n\n setCollapseSearch({\n status: \"searching\",\n key: collapseKey,\n collapsedChips: true,\n visibleChipsCount: quickGuess,\n low: 0,\n high: Math.max(selectedItems.length - 1, 0),\n candidate: quickGuess,\n bestFit: null,\n iterations: 0,\n });\n\n return;\n }\n\n if (collapseSearch.candidate === null) return;\n\n const iterations = collapseSearch.iterations + 1;\n const bestFit = fitsWithinMaxRows\n ? collapseSearch.candidate\n : collapseSearch.bestFit;\n const low = fitsWithinMaxRows\n ? collapseSearch.candidate + 1\n : collapseSearch.low;\n const high = fitsWithinMaxRows\n ? collapseSearch.high\n : collapseSearch.candidate - 1;\n const maxIterations = getMaxCollapseSearchIterations(\n selectedItems.length,\n );\n\n if (low > high || iterations >= maxIterations) {\n setCollapseSearch(\n getDoneCollapseSearchState(collapseKey, true, bestFit ?? 0),\n );\n\n return;\n }\n\n const candidate = getCollapseSearchCandidate(low, high);\n\n setCollapseSearch({\n status: \"searching\",\n key: collapseKey,\n collapsedChips: true,\n visibleChipsCount: candidate,\n low,\n high,\n candidate,\n bestFit,\n iterations,\n });\n }\n }, [collapseKey, collapseSearch, maxRows, selectedItems.length]);\n\n const selectedItemsDisplayCount =\n collapseSearch.collapsedChips &&\n maxRows != null &&\n collapseSearch.visibleChipsCount !== null\n ? collapseSearch.visibleChipsCount\n : selectedItems.length;\n\n // TODO: Update this to use a TextField component once we can pass props\n // directly to both the label and the text input\n return (\n <div {...rest} className={ComboboxTriggerClassNames} ref={referenceRef}>\n {label ? (\n <FieldLabel\n {...labelProps}\n className={cx(styles[\"label\"], labelProps?.className)}\n >\n {label}\n </FieldLabel>\n ) : null}\n\n <div\n {...inputWrapperProps}\n className={ComboboxInputWrapperClassNames}\n aria-disabled={disabled || undefined}\n onClick={disabled ? undefined : inputWrapperProps.onClick}\n {...(variant === \"select\"\n ? {\n \"aria-describedby\": ariaDescribedBy,\n \"aria-labelledby\": labelProps?.id,\n }\n : {})}\n >\n <div className={styles[\"buttons-wrapper\"]}>\n {(inputValue || selectedItem || selectedItems.length) &&\n !noClearButton ? (\n <div className={styles[\"close-button-wrapper\"]}>\n <Button\n {...clearButtonProps}\n aria-label=\"clear selection\"\n appearance=\"ghost\"\n size=\"small\"\n icon={Close}\n className={styles[\"close-button\"]}\n onClick={(e: MouseEvent<HTMLButtonElement>) => {\n e.stopPropagation();\n onClearButtonClick?.(e);\n }}\n tabIndex={-1}\n />\n </div>\n ) : null}\n\n {disableToggleButton ? null : (\n <div className={styles[\"toggle-button-wrapper\"]}>\n <Button\n {...toggleButtonProps}\n {...(variant === \"select\"\n ? { tabIndex: -1, inert: \"true\" }\n : {})}\n className={styles[\"toggle-button\"]}\n aria-label=\"toggle menu\"\n icon={Chevron_Right}\n appearance=\"ghost\"\n size=\"small\"\n disabled={disabled}\n />\n </div>\n )}\n </div>\n\n <div className={styles[\"prefix-wrapper\"]}>\n {prefix ? <div className={styles[\"prefix\"]}>{prefix}</div> : null}\n </div>\n\n <div\n className={cx(styles[\"rows-wrapper\"], {\n [styles[\"max-rows\"]]: maxRows !== undefined,\n [styles[\"single-row\"]]: maxRows === 1 && !stillCalculating,\n })}\n ref={rowsRef}\n >\n {selectedItems.length && removeSelectedItem != null\n ? selectedItems\n .slice(0, selectedItemsDisplayCount)\n .map((item, index) => {\n return (\n <div\n key={`selected-item-${index}`}\n className={styles[\"chip-wrapper\"]}\n >\n <Chip\n {...mergeChipProps(\n chipProps(item, index),\n selectedItemProps(item, index),\n {\n label: itemToString(item),\n onClose:\n disabled || readOnly\n ? undefined\n : (_e) => {\n removeSelectedItem(item);\n },\n className: styles[\"chip\"],\n title: itemToString(item),\n },\n )}\n />\n </div>\n );\n })\n : null}\n\n {collapseSearch.collapsedChips && maxRows != null ? (\n <div className={styles[\"chip-wrapper\"]}>\n <Chip\n label={`+${selectedItems.length - selectedItemsDisplayCount}`}\n className={styles[\"chip\"]}\n title={selectedItems\n .slice(selectedItemsDisplayCount)\n .map((item) => itemToString(item))\n .join(\", \")}\n />\n </div>\n ) : null}\n\n <Flex className={styles[\"input-flex\"]} alignItems=\"center\">\n {variant === \"select\" ? (\n <div\n {...inputProps}\n className={cx(ComboboxInputClassNames, inputProps.className)}\n >\n {selectedItems.length ? null : selectedItem ? (\n itemToString(selectedItem)\n ) : (\n <span\n className={styles[\"fake-placeholder\"]}\n id={placeholderUid}\n >\n {placeholder}\n </span>\n )}\n </div>\n ) : (\n <input\n type=\"text\"\n {...inputProps}\n placeholder={placeholder}\n className={cx(ComboboxInputClassNames, inputProps.className)}\n {...(inputProps[\"aria-expanded\"] != null &&\n inputProps[\"aria-controls\"] != null\n ? {\n role: \"combobox\",\n }\n : {})}\n />\n )}\n\n {suffix ? <div className={styles[\"suffix\"]}>{suffix}</div> : null}\n </Flex>\n </div>\n </div>\n\n {hint || errorMessages || warning || description ? (\n <Helper\n id={helperUid}\n error={\n typeof errorMessages === \"string\" || Array.isArray(errorMessages)\n ? errorMessages\n : undefined\n }\n warning={warning}\n errorMessage={\n isValidElement(errorMessages) ? errorMessages : undefined\n }\n hint={hint}\n description={description}\n />\n ) : null}\n </div>\n );\n};\n"],"names":["Close","Chevron_Right"],"mappings":"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"}
1
+ {"version":3,"file":"SelectTriggerBase-Dq7QDlPS.js","sources":["../src/components/Combobox/internal/ComboboxUtils.ts","../src/components/SelectTrigger/internal/SelectTriggerBase.tsx"],"sourcesContent":["import type {\n ComboboxMultipleProps,\n ComboboxProps,\n ComboboxSelectProps,\n SelectMultipleProps,\n} from \"../ComboboxTypes\";\n\nexport const ADD_NEW = Symbol.for(\"add-new\");\nexport const SELECT_ALL = Symbol.for(\"select-all\");\n\n/**\n * Default function to convert an item to a string representation\n * @template Item - The type of the item\n * @param item - The item to convert to string\n * @returns String representation of the item or empty string if null/undefined\n */\nexport const defaultItemToString = <Item>(item: Item | null) =>\n item != null ? String(item) : \"\";\n\n/**\n * Default function to generate a unique key for an item\n * @template Item - The type of the item\n * @param item - The item to generate a key for\n * @returns The item itself as the key\n */\nexport const defaultItemToKey = <Item>(item: Item | null) => item;\n\nexport function isMultiple<Item>(\n props: ComboboxProps<Item> | ComboboxSelectProps<Item>,\n): props is ComboboxMultipleProps<Item> | SelectMultipleProps<Item> {\n return Object.hasOwn(props, \"multiple\") && props.multiple === true;\n}\n\nexport function getScrollParent(node: HTMLElement | null) {\n if (node == null) {\n return null;\n }\n\n if (node.scrollHeight > node.clientHeight) {\n return node;\n } else {\n if (node.parentNode instanceof HTMLElement) {\n return getScrollParent(node.parentNode);\n }\n return null;\n }\n}\n","import {\n useState,\n useId,\n useRef,\n useLayoutEffect,\n useMemo,\n isValidElement,\n type ComponentPropsWithoutRef,\n type MouseEvent,\n type MutableRefObject,\n type MouseEventHandler,\n type ReactNode,\n} from \"react\";\nimport cx from \"classnames\";\nimport Close from \"@servicetitan/hammer-icon/mdi/round/close.svg\";\nimport Chevron_Right from \"@servicetitan/hammer-icon/mdi/round/chevron_right.svg\";\n\nimport { Button } from \"../../Button\";\nimport { Chip, type ChipProps } from \"../../Chip\";\nimport { Flex } from \"../../Flex\";\nimport { FieldLabel, type FieldLabelProps } from \"../../FieldLabel\";\nimport { Helper } from \"../../../internal/components\";\nimport { warnDeprecatedErrorUsage } from \"../../FieldMessage\";\nimport type { TextFieldProps } from \"../../TextField\";\n\nimport styles from \"./SelectTriggerBase.module.scss\";\nimport type { DataAttributes, DistributiveOmit } from \"../../../types\";\nimport { defaultItemToString } from \"../../Combobox/internal/ComboboxUtils\";\n\ntype PartialChipProps = Partial<Omit<ChipProps, \"icon\" | \"avatar\">> &\n DataAttributes &\n (\n | { icon?: ChipProps[\"icon\"]; avatar?: never }\n | { icon?: never; avatar?: ChipProps[\"avatar\"] }\n );\n\ntype CollapseSearchStatus = \"done\" | \"measuring\" | \"searching\";\n\ntype CollapseSearchState = {\n status: CollapseSearchStatus;\n key: string | null;\n collapsedChips: boolean;\n visibleChipsCount: number | null;\n low: number;\n high: number;\n candidate: number | null;\n bestFit: number | null;\n iterations: number;\n};\n\nconst COLLAPSE_SEARCH_ITERATION_MARGIN = 4;\n\nfunction getDoneCollapseSearchState(\n key: string | null,\n collapsedChips = false,\n visibleChipsCount: number | null = null,\n): CollapseSearchState {\n return {\n status: \"done\",\n key,\n collapsedChips,\n visibleChipsCount,\n low: 0,\n high: 0,\n candidate: null,\n bestFit: visibleChipsCount,\n iterations: 0,\n };\n}\n\nfunction getMaxCollapseSearchIterations(selectedItemsCount: number): number {\n // Allows one full binary-search pass plus a small buffer for measurement rerenders.\n return (\n Math.ceil(Math.log2(Math.max(selectedItemsCount, 2))) +\n COLLAPSE_SEARCH_ITERATION_MARGIN\n );\n}\n\nconst FNV_1A_OFFSET_BASIS = 0x811c9dc5;\nconst FNV_1A_PRIME = 0x01000193;\n\nfunction addByteToCollapseHash(hash: number, byte: number): number {\n return Math.imul(hash ^ byte, FNV_1A_PRIME) >>> 0;\n}\n\nfunction addNumberToCollapseHash(hash: number, value: number): number {\n let nextHash = hash;\n\n nextHash = addByteToCollapseHash(nextHash, value & 0xff);\n nextHash = addByteToCollapseHash(nextHash, (value >>> 8) & 0xff);\n nextHash = addByteToCollapseHash(nextHash, (value >>> 16) & 0xff);\n nextHash = addByteToCollapseHash(nextHash, (value >>> 24) & 0xff);\n\n return nextHash;\n}\n\nfunction addLabelToCollapseHash(hash: number, label: string): number {\n let nextHash = addNumberToCollapseHash(hash, label.length);\n\n for (let index = 0; index < label.length; index += 1) {\n const codeUnit = label.charCodeAt(index);\n\n nextHash = addByteToCollapseHash(nextHash, codeUnit & 0xff);\n nextHash = addByteToCollapseHash(nextHash, codeUnit >>> 8);\n }\n\n return nextHash;\n}\n\nfunction getCollapseKey<Item>(\n maxRows: number | undefined,\n selectedItems: Item[],\n itemToString: (item: Item) => string,\n): string | null {\n if (maxRows === undefined) return null;\n\n let selectedItemsHash = FNV_1A_OFFSET_BASIS;\n\n for (const item of selectedItems) {\n selectedItemsHash = addLabelToCollapseHash(\n selectedItemsHash,\n itemToString(item),\n );\n }\n\n return `${maxRows}:${selectedItems.length}:${selectedItemsHash.toString(36)}`;\n}\n\nfunction getCollapseSearchCandidate(low: number, high: number): number {\n return Math.floor((low + high) / 2);\n}\n\nfunction mergeChipProps(\n ...propSets: (PartialChipProps | Partial<ChipProps>)[]\n): ChipProps {\n const merged = propSets.reduce(\n (acc, props) => ({ ...acc, ...props }),\n {} as Record<string, unknown>,\n );\n\n return merged as ChipProps;\n}\n\nexport type SelectTriggerBaseProps<Item = unknown> = DistributiveOmit<\n TextFieldProps,\n \"showCounter\" | \"prefix\"\n> & {\n /**\n * Caps visible selected chips to this many rows and collapses the rest\n * into a +N chip. Omit to show every chip. Must be a positive integer.\n */\n maxRows?: number;\n\n /** Extra Chip props per selected item; merged after `chipProps`. */\n selectedItemProps?: (item: Item, index: number) => PartialChipProps;\n} & {\n /** Chip and single-value labels. Defaults to Combobox's `defaultItemToString`. */\n itemToString?: (item: Item) => string;\n /** Called when a chip's close control is activated. */\n removeSelectedItem?: (item: Item) => void;\n /**\n * Hides the clear control. Also hidden when `disabled` or `readOnly`.\n * Defaults to `false`.\n */\n disableClearSelection?: boolean;\n selectedItem: Item | null;\n selectedItems: Item[];\n\n /** Combobox typed query shown in the input. */\n inputValue?: string;\n /** Floating-ui reference element for the composed menu. */\n referenceRef?: MutableRefObject<HTMLDivElement | null>;\n} & {\n /**\n * `select` renders a button-like value area; `combobox` renders a text\n * input. Defaults to `select`.\n */\n variant?: \"select\" | \"combobox\";\n /** Fired after the clear control stops the wrapper click. */\n onClearButtonClick?: MouseEventHandler<HTMLButtonElement>;\n labelProps?: Partial<FieldLabelProps>;\n inputWrapperProps?: ComponentPropsWithoutRef<\"div\">;\n toggleButtonProps?: ComponentPropsWithoutRef<\"button\"> & DataAttributes;\n clearButtonProps?: ComponentPropsWithoutRef<\"button\"> & DataAttributes;\n /** Extra Chip props per selected item; merged before `selectedItemProps`. */\n chipProps?: (item: Item, index: number) => PartialChipProps;\n inputProps?: ComponentPropsWithoutRef<\"input\" | \"div\"> & DataAttributes;\n /** Hides the trailing chevron. Defaults to `false`. */\n disableToggleButton?: boolean;\n} & {\n prefix?: string | ReactNode;\n};\n\nexport const SelectTriggerBase = <Item,>({\n className,\n label,\n size,\n error,\n hint,\n description,\n prefix,\n suffix,\n maxRows,\n selectedItemProps = (_item: Item, _index: number): PartialChipProps => ({}),\n disabled,\n readOnly,\n disableClearSelection,\n itemToString: itemToStringProp,\n selectedItem,\n selectedItems,\n removeSelectedItem,\n inputValue,\n referenceRef,\n variant = \"select\",\n onClearButtonClick,\n labelProps,\n inputWrapperProps = {},\n toggleButtonProps = {},\n clearButtonProps = {},\n inputProps = {},\n chipProps = (_item: Item, _index: number): PartialChipProps => ({}),\n disableToggleButton = false,\n warning,\n placeholder,\n ...rest\n}: SelectTriggerBaseProps<Item>) => {\n const itemToString = itemToStringProp ?? defaultItemToString<Item>;\n\n const ComboboxTriggerClassNames = cx(styles[\"search-field\"], {\n [styles[\"select\"]]: variant === \"select\",\n });\n\n const noClearButton = disabled || readOnly || disableClearSelection;\n\n const ComboboxInputWrapperClassNames = cx(\n styles[\"input-wrapper\"],\n className\n ? {\n [className]: variant === \"select\",\n }\n : {},\n {\n [styles[\"small\"]]: size === \"small\",\n [styles[\"large\"]]: size === \"large\",\n [styles[\"no-clear-button\"]]: noClearButton,\n [styles[\"no-toggle-button\"]]: disableToggleButton,\n [styles[\"is-disabled\"]]: disabled,\n },\n );\n\n const ComboboxInputClassNames = cx(\n styles[\"input\"],\n className\n ? {\n [className]: variant === \"combobox\",\n }\n : {},\n {\n [styles[\"error\"]]: error,\n },\n );\n\n const helperUid = \"helper\" + useId();\n const placeholderUid = \"placeholder\" + useId();\n const ariaDescribedBy = `${helperUid} ${placeholderUid}`;\n\n warnDeprecatedErrorUsage(\"SelectTrigger\", error);\n\n const errorMessages =\n typeof error === \"boolean\" || error === undefined ? undefined : error;\n\n const rowsRef = useRef<HTMLDivElement>(null);\n const collapseKey = useMemo(\n () => getCollapseKey(maxRows, selectedItems, itemToString),\n [maxRows, selectedItems, itemToString],\n );\n const [collapseSearch, setCollapseSearch] = useState<CollapseSearchState>(\n () => getDoneCollapseSearchState(null),\n );\n const stillCalculating = collapseSearch.status !== \"done\";\n\n useLayoutEffect(() => {\n if (maxRows === undefined) {\n if (\n collapseSearch.status !== \"done\" ||\n collapseSearch.collapsedChips ||\n collapseSearch.visibleChipsCount !== null ||\n collapseSearch.key !== null\n ) {\n setCollapseSearch(getDoneCollapseSearchState(null));\n }\n\n return;\n }\n\n if (collapseSearch.key !== collapseKey) {\n setCollapseSearch({\n status: \"measuring\",\n key: collapseKey,\n collapsedChips: false,\n visibleChipsCount: null,\n low: 0,\n high: Math.max(selectedItems.length - 1, 0),\n candidate: null,\n bestFit: null,\n iterations: 0,\n });\n\n return;\n }\n\n if (collapseSearch.status === \"done\") return;\n\n if (rowsRef?.current?.children) {\n const children = rowsRef?.current?.children;\n\n // Exclude the input-flex element from row counting so the algorithm\n // only considers chip elements when deciding whether to collapse.\n // The input will naturally fit alongside chips thanks to its\n // reduced min-width.\n const chipChildren = Array.from(children).filter(\n (child) =>\n !(child as HTMLElement).classList?.contains(styles[\"input-flex\"]),\n );\n\n const rowData = chipChildren.reduce(\n (acc, child) => {\n const top = child.getBoundingClientRect().top;\n\n if (!acc.length) {\n return [{ count: 1, top }];\n } else if (acc[acc.length - 1].top === top) {\n return [\n ...acc.slice(0, -1),\n { count: acc[acc.length - 1].count + 1, top },\n ];\n } else if (acc[acc.length - 1].top !== top) {\n return [...acc, { count: 1, top }];\n } else {\n return acc;\n }\n },\n [] as { count: number; top: number }[],\n );\n\n const fitsWithinMaxRows = !rowData[maxRows];\n\n // A single chip is never collapsed, even when it overflows `maxRows`.\n if (collapseSearch.status === \"measuring\") {\n if (fitsWithinMaxRows || selectedItems.length === 1) {\n setCollapseSearch(getDoneCollapseSearchState(collapseKey));\n\n return;\n }\n\n const quickGuess = Math.max(\n rowData.slice(0, maxRows).reduce((sum, row) => sum + row.count, -1),\n 0,\n );\n\n setCollapseSearch({\n status: \"searching\",\n key: collapseKey,\n collapsedChips: true,\n visibleChipsCount: quickGuess,\n low: 0,\n high: Math.max(selectedItems.length - 1, 0),\n candidate: quickGuess,\n bestFit: null,\n iterations: 0,\n });\n\n return;\n }\n\n if (collapseSearch.candidate === null) return;\n\n const iterations = collapseSearch.iterations + 1;\n const bestFit = fitsWithinMaxRows\n ? collapseSearch.candidate\n : collapseSearch.bestFit;\n const low = fitsWithinMaxRows\n ? collapseSearch.candidate + 1\n : collapseSearch.low;\n const high = fitsWithinMaxRows\n ? collapseSearch.high\n : collapseSearch.candidate - 1;\n const maxIterations = getMaxCollapseSearchIterations(\n selectedItems.length,\n );\n\n if (low > high || iterations >= maxIterations) {\n setCollapseSearch(\n getDoneCollapseSearchState(collapseKey, true, bestFit ?? 0),\n );\n\n return;\n }\n\n const candidate = getCollapseSearchCandidate(low, high);\n\n setCollapseSearch({\n status: \"searching\",\n key: collapseKey,\n collapsedChips: true,\n visibleChipsCount: candidate,\n low,\n high,\n candidate,\n bestFit,\n iterations,\n });\n }\n }, [collapseKey, collapseSearch, maxRows, selectedItems.length]);\n\n const selectedItemsDisplayCount =\n collapseSearch.collapsedChips &&\n maxRows != null &&\n collapseSearch.visibleChipsCount !== null\n ? collapseSearch.visibleChipsCount\n : selectedItems.length;\n\n // TODO: Update this to use a TextField component once we can pass props\n // directly to both the label and the text input\n return (\n <div {...rest} className={ComboboxTriggerClassNames} ref={referenceRef}>\n {label ? (\n <FieldLabel\n {...labelProps}\n className={cx(styles[\"label\"], labelProps?.className)}\n >\n {label}\n </FieldLabel>\n ) : null}\n\n <div\n {...inputWrapperProps}\n className={ComboboxInputWrapperClassNames}\n aria-disabled={disabled || undefined}\n onClick={disabled ? undefined : inputWrapperProps.onClick}\n {...(variant === \"select\"\n ? {\n \"aria-describedby\": ariaDescribedBy,\n \"aria-labelledby\": labelProps?.id,\n }\n : {})}\n >\n <div className={styles[\"buttons-wrapper\"]}>\n {(inputValue || selectedItem || selectedItems.length) &&\n !noClearButton ? (\n <div className={styles[\"close-button-wrapper\"]}>\n <Button\n {...clearButtonProps}\n aria-label=\"clear selection\"\n appearance=\"ghost\"\n size=\"small\"\n icon={Close}\n className={styles[\"close-button\"]}\n onClick={(e: MouseEvent<HTMLButtonElement>) => {\n e.stopPropagation();\n onClearButtonClick?.(e);\n }}\n tabIndex={-1}\n />\n </div>\n ) : null}\n\n {disableToggleButton ? null : (\n <div className={styles[\"toggle-button-wrapper\"]}>\n <Button\n {...toggleButtonProps}\n {...(variant === \"select\"\n ? { tabIndex: -1, inert: \"true\" }\n : {})}\n className={styles[\"toggle-button\"]}\n aria-label=\"toggle menu\"\n icon={Chevron_Right}\n appearance=\"ghost\"\n size=\"small\"\n disabled={disabled}\n />\n </div>\n )}\n </div>\n\n <div className={styles[\"prefix-wrapper\"]}>\n {prefix ? <div className={styles[\"prefix\"]}>{prefix}</div> : null}\n </div>\n\n <div\n className={cx(styles[\"rows-wrapper\"], {\n [styles[\"max-rows\"]]: maxRows !== undefined,\n [styles[\"single-row\"]]: maxRows === 1 && !stillCalculating,\n })}\n ref={rowsRef}\n >\n {selectedItems.length && removeSelectedItem != null\n ? selectedItems\n .slice(0, selectedItemsDisplayCount)\n .map((item, index) => {\n return (\n <div\n key={`selected-item-${index}`}\n className={styles[\"chip-wrapper\"]}\n >\n <Chip\n {...mergeChipProps(\n chipProps(item, index),\n selectedItemProps(item, index),\n {\n label: itemToString(item),\n onClose:\n disabled || readOnly\n ? undefined\n : (_e) => {\n removeSelectedItem(item);\n },\n className: styles[\"chip\"],\n title: itemToString(item),\n },\n )}\n />\n </div>\n );\n })\n : null}\n\n {collapseSearch.collapsedChips && maxRows != null ? (\n <div className={styles[\"chip-wrapper\"]}>\n <Chip\n label={`+${selectedItems.length - selectedItemsDisplayCount}`}\n className={styles[\"chip\"]}\n title={selectedItems\n .slice(selectedItemsDisplayCount)\n .map((item) => itemToString(item))\n .join(\", \")}\n />\n </div>\n ) : null}\n\n <Flex className={styles[\"input-flex\"]} alignItems=\"center\">\n {variant === \"select\" ? (\n <div\n {...inputProps}\n className={cx(ComboboxInputClassNames, inputProps.className)}\n >\n {selectedItems.length ? null : selectedItem ? (\n itemToString(selectedItem)\n ) : (\n <span\n className={styles[\"fake-placeholder\"]}\n id={placeholderUid}\n >\n {placeholder}\n </span>\n )}\n </div>\n ) : (\n <input\n type=\"text\"\n {...inputProps}\n placeholder={placeholder}\n className={cx(ComboboxInputClassNames, inputProps.className)}\n {...(inputProps[\"aria-expanded\"] != null &&\n inputProps[\"aria-controls\"] != null\n ? {\n role: \"combobox\",\n }\n : {})}\n />\n )}\n\n {suffix ? <div className={styles[\"suffix\"]}>{suffix}</div> : null}\n </Flex>\n </div>\n </div>\n\n {hint || errorMessages || warning || description ? (\n <Helper\n id={helperUid}\n error={\n typeof errorMessages === \"string\" || Array.isArray(errorMessages)\n ? errorMessages\n : undefined\n }\n warning={warning}\n errorMessage={\n isValidElement(errorMessages) ? errorMessages : undefined\n }\n hint={hint}\n description={description}\n />\n ) : null}\n </div>\n );\n};\n"],"names":["Close","Chevron_Right"],"mappings":"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"}
@@ -5,10 +5,10 @@ import { S as SvgCheck } from './check-Cf67OWrZ.js';
5
5
  import { I as Icon } from './Icon-B5zwN7GD.js';
6
6
  import { u as useMergeRefs } from './useMergeRefs-Dfmtq9cI.js';
7
7
  import { e as DurationSlow } from './primitive-BXgYQTTw.js';
8
+ import { m as motion } from './react-ORV84FjM.js';
8
9
  import { Overflow } from './Overflow.js';
9
10
  import { u as useLayoutPropsUtil } from './useLayoutPropsUtil-DjqeAJZ9.js';
10
- import { m as motion } from './proxy-DEehATlA.js';
11
- import { B as Button } from './Button-Dwh_Nd4l.js';
11
+ import { B as Button } from './Button-Dn6-01xl.js';
12
12
  import { useTrackingId } from './useTrackingId.js';
13
13
  import { u as useOptionallyControlledState } from './useOptionallyControlledState-DbDuos5L.js';
14
14
 
@@ -835,4 +835,4 @@ const Stepper = Object.assign(
835
835
  Stepper.displayName = "Stepper";
836
836
 
837
837
  export { Stepper as S, StepperBase as a };
838
- //# sourceMappingURL=Stepper-C-QC9QHx.js.map
838
+ //# sourceMappingURL=Stepper-l_P6VPOv.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Stepper-C-QC9QHx.js","sources":["../src/components/Stepper/base/internal/StepperBaseContext.ts","../src/components/Stepper/base/internal/StepperStepIndexScope.tsx","../src/components/Stepper/base/StepperBaseList.tsx","../src/components/Stepper/base/StepperBaseStep.tsx","../src/components/Stepper/base/StepperBasePanel.tsx","../src/components/Stepper/base/StepperBase.tsx","../src/components/Stepper/StepperList.tsx","../src/components/Stepper/internal/StepperContext.ts","../src/components/Stepper/StepperStep.tsx","../src/components/Stepper/StepperPanel.tsx","../src/components/Stepper/StepperFinalPanel.tsx","../src/components/Stepper/internal/countRegisteredSteps.ts","../src/components/Stepper/StepperNextButton.tsx","../src/components/Stepper/StepperPrevButton.tsx","../src/components/Stepper/internal/StepperWizardBootstrap.tsx","../src/components/Stepper/Stepper.tsx"],"sourcesContent":["import { createContext, useContext, useRef, type RefObject } from \"react\";\n\n/** Per-step outcome. Independent of whether the step is current. */\nexport type StepperBaseStepState = \"not started\" | \"started\" | \"complete\";\n\nexport type StepperBaseStepInfo = {\n index: number;\n id?: string;\n label: string;\n disabled: boolean;\n node: RefObject<HTMLButtonElement | null>;\n};\n\nexport type StepperBaseContextValue = {\n currentIndex: number;\n interactive: boolean;\n focusIndex: number;\n setFocusIndex: (index: number) => void;\n requestIndexChange: (index: number) => void;\n registerStep: (info: StepperBaseStepInfo) => () => void;\n getStep: (index: number) => StepperBaseStepInfo | undefined;\n getCurrentStep: () => StepperBaseStepInfo | undefined;\n getPanelId: (stepId: string) => string | undefined;\n registerPanel: (stepId: string, panelId: string) => () => void;\n};\n\nexport const StepperBaseContext = createContext<StepperBaseContextValue>({\n currentIndex: 0,\n interactive: false,\n focusIndex: 0,\n setFocusIndex: () => undefined,\n requestIndexChange: () => undefined,\n registerStep: () => () => undefined,\n getStep: () => undefined,\n getCurrentStep: () => undefined,\n getPanelId: () => undefined,\n registerPanel: () => () => undefined,\n});\n\n/**\n * Hands out 0-based indices in render order, so steps work inside fragments and\n * wrapper components rather than only as direct List children. Each render of\n * StepperStepIndexScope starts a new pass.\n */\nexport type StepperBaseStepIndexPass = {\n allocate: () => number;\n};\n\nexport const StepperBaseStepIndexPassContext =\n createContext<StepperBaseStepIndexPass | null>(null);\n\ntype AllocatedIndex = {\n pass: StepperBaseStepIndexPass;\n index: number;\n};\n\n/**\n * Index of the calling step, or undefined when it renders outside a List.\n *\n * A step allocates at most once per pass, so it keeps its index when it\n * re-renders alone and when StrictMode renders it twice.\n */\nexport function useStepperStepIndex() {\n const pass = useContext(StepperBaseStepIndexPassContext);\n const allocated = useRef<AllocatedIndex | null>(null);\n\n if (!pass) return undefined;\n\n if (allocated.current?.pass !== pass) {\n allocated.current = { pass, index: pass.allocate() };\n }\n\n return allocated.current.index;\n}\n","import type { ReactNode } from \"react\";\n\nimport {\n StepperBaseStepIndexPassContext,\n type StepperBaseStepIndexPass,\n} from \"./StepperBaseContext\";\n\nfunction startIndexPass(): StepperBaseStepIndexPass {\n let nextIndex = 0;\n\n return {\n allocate: () => {\n const index = nextIndex;\n nextIndex += 1;\n return index;\n },\n };\n}\n\nexport function StepperStepIndexScope({ children }: { children: ReactNode }) {\n return (\n <StepperBaseStepIndexPassContext.Provider value={startIndexPass()}>\n {children}\n </StepperBaseStepIndexPassContext.Provider>\n );\n}\n","import { type ComponentPropsWithoutRef, forwardRef, useContext } from \"react\";\nimport cx from \"classnames\";\n\nimport { StepperBaseContext } from \"./internal/StepperBaseContext\";\nimport { StepperStepIndexScope } from \"./internal/StepperStepIndexScope\";\n\nimport styles from \"../StepperList.module.scss\";\n\n/**\n * @extends ComponentPropsWithoutRef<\"div\">\n */\nexport type StepperBaseListProps = ComponentPropsWithoutRef<\"div\">;\n\n/** Track of `StepperBase.Step` children plus the compact current label. */\nexport const StepperBaseList = forwardRef<HTMLDivElement, StepperBaseListProps>(\n (props, ref) => {\n const { className, children, ...rest } = props;\n const { getCurrentStep } = useContext(StepperBaseContext);\n const currentLabel = getCurrentStep()?.label;\n\n return (\n <div\n {...rest}\n className={cx(styles[\"stepper-list\"], className)}\n data-anv=\"stepper-base-list\"\n ref={ref}\n role=\"tablist\"\n >\n <div className={styles[\"stepper-steps\"]}>\n <StepperStepIndexScope>{children}</StepperStepIndexScope>\n </div>\n <span className={styles.label}>{currentLabel}</span>\n </div>\n );\n },\n);\n\nStepperBaseList.displayName = \"StepperBaseList\";\n","import {\n forwardRef,\n useContext,\n useLayoutEffect,\n useRef,\n type KeyboardEvent,\n type MouseEvent,\n type ComponentPropsWithoutRef,\n} from \"react\";\nimport cx from \"classnames\";\nimport Check from \"@servicetitan/hammer-icon/mdi/round/check.svg\";\n\nimport { Icon } from \"../../Icon\";\nimport { useMergeRefs } from \"../../../hooks\";\nimport {\n StepperBaseContext,\n useStepperStepIndex,\n type StepperBaseStepState,\n} from \"./internal/StepperBaseContext\";\n\nimport styles from \"../StepperStep.module.scss\";\n\nexport type { StepperBaseStepState };\n\n/**\n * @extends Omit<ComponentPropsWithoutRef<\"button\">, \"onClick\" | \"disabled\">\n */\nexport type StepperBaseStepProps = Omit<\n ComponentPropsWithoutRef<\"button\">,\n \"onClick\" | \"disabled\"\n> & {\n /**\n * Visual outcome, independent of whether this step is current. Current plus\n * any state is legal. Defaults to `\"not started\"`.\n */\n state?: StepperBaseStepState;\n\n /** Required when a `StepperBase.Panel` `step` points here. */\n id?: string;\n\n /**\n * Blocks becoming current via click or keyboard. Defaults to `false`.\n */\n disabled?: boolean;\n\n /**\n * Notify only; does not replace `onIndexChange`. Receives this step's\n * 0-based index.\n */\n onClick?: (e: MouseEvent<HTMLButtonElement>, index?: number) => void;\n};\n\n/** Progress marker for one step in the track. */\nexport const StepperBaseStep = forwardRef<\n HTMLButtonElement,\n StepperBaseStepProps\n>((props, ref) => {\n const stepRef = useRef<HTMLButtonElement>(null);\n const index = useStepperStepIndex();\n const {\n currentIndex,\n interactive,\n focusIndex,\n setFocusIndex,\n requestIndexChange,\n registerStep,\n getStep,\n getPanelId,\n } = useContext(StepperBaseContext);\n const {\n state = \"not started\",\n id,\n disabled = false,\n onClick,\n children,\n onKeyDown,\n className,\n \"aria-label\": ariaLabel,\n ...rest\n } = props;\n\n const childrenText =\n typeof children === \"string\"\n ? children\n : typeof children === \"number\"\n ? String(children)\n : undefined;\n const label = childrenText || ariaLabel || \"\";\n\n useLayoutEffect(() => {\n if (index === undefined) return;\n return registerStep({\n index,\n id,\n label,\n disabled,\n node: stepRef,\n });\n }, [disabled, id, index, label, registerStep]);\n\n const selected = index === currentIndex;\n const completed = state === \"complete\";\n const panelId = id ? getPanelId(id) : undefined;\n\n const onClickHandler = (e: MouseEvent<HTMLButtonElement>) => {\n onClick?.(e, index);\n if (index === undefined) return;\n requestIndexChange(index);\n };\n\n const onKeyDownHandler = (e: KeyboardEvent<HTMLButtonElement>) => {\n onKeyDown?.(e);\n if (!interactive || index === undefined) return;\n\n const activatable: number[] = [];\n for (let i = 0; ; i += 1) {\n const step = getStep(i);\n if (!step) break;\n if (!step.disabled) activatable.push(i);\n }\n if (activatable.length === 0) return;\n\n const currentPos = activatable.indexOf(focusIndex);\n const safePos = currentPos === -1 ? 0 : currentPos;\n\n switch (e.code) {\n case \"Enter\":\n case \"Space\":\n e.preventDefault();\n requestIndexChange(focusIndex);\n break;\n case \"ArrowRight\": {\n e.preventDefault();\n const next = activatable[(safePos + 1) % activatable.length];\n setFocusIndex(next);\n getStep(next)?.node.current?.focus();\n break;\n }\n case \"ArrowLeft\": {\n e.preventDefault();\n const prev =\n activatable[(safePos - 1 + activatable.length) % activatable.length];\n setFocusIndex(prev);\n getStep(prev)?.node.current?.focus();\n break;\n }\n default:\n break;\n }\n };\n\n return (\n <button\n type=\"button\"\n role=\"tab\"\n data-anv=\"stepper-base-step\"\n data-state={state}\n data-completed={completed}\n className={cx(styles[\"stepper-step\"], className, {\n [styles[\"can-navigate\"]]: interactive,\n })}\n aria-selected={selected}\n aria-controls={panelId}\n aria-disabled={disabled || undefined}\n aria-label={childrenText || ariaLabel}\n tabIndex={interactive && index === focusIndex && !disabled ? 0 : -1}\n onClick={onClickHandler}\n onKeyDown={interactive ? onKeyDownHandler : onKeyDown}\n {...rest}\n id={id}\n ref={useMergeRefs([stepRef, ref])}\n >\n <span className={styles.bar} />\n <span className={styles.label}>\n <span className={styles.circle}>\n <Icon svg={Check} inherit aria-hidden />\n </span>\n {children}\n </span>\n </button>\n );\n});\n\nStepperBaseStep.displayName = \"StepperBaseStep\";\n","import {\n type ComponentPropsWithoutRef,\n forwardRef,\n useContext,\n useId,\n useLayoutEffect,\n} from \"react\";\nimport cx from \"classnames\";\nimport { core } from \"@servicetitan/hammer-token\";\nimport { motion } from \"motion/react\";\n\nimport type { LayoutUtilProps } from \"../../../types\";\nimport { useLayoutPropsUtil } from \"../../../internal/hooks\";\nimport { Overflow } from \"../../Overflow\";\nimport { StepperBaseContext } from \"./internal/StepperBaseContext\";\n\nimport styles from \"../StepperPanel.module.scss\";\n\n/**\n * @extends Omit<ComponentPropsWithoutRef<\"div\">, \"onAnimationStart\" | \"onDragStart\" | \"onDragEnd\" | \"onDrag\">\n * @extends LayoutUtilProps\n */\nexport type StepperBasePanelProps = Omit<\n ComponentPropsWithoutRef<\"div\">,\n \"onAnimationStart\" | \"onDragStart\" | \"onDragEnd\" | \"onDrag\"\n> &\n LayoutUtilProps & {\n /** Must match the controlling `StepperBase.Step` `id`. */\n step: string;\n\n /**\n * Panel element id. Generated when omitted (used for `aria-controls`).\n */\n id?: string;\n };\n\n/** Body shown while its named step is current. */\nexport const StepperBasePanel = forwardRef<\n HTMLDivElement,\n StepperBasePanelProps\n>((props, ref) => {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const {\n step,\n id: idProp,\n className,\n style,\n children,\n ...rest\n } = componentProps;\n const generatedId = useId();\n const id = idProp ?? generatedId;\n const { getCurrentStep, registerPanel } = useContext(StepperBaseContext);\n const currentStep = getCurrentStep();\n const isCurrent = currentStep?.id === step;\n\n useLayoutEffect(() => {\n return registerPanel(step, id);\n }, [id, registerPanel, step]);\n\n const styleCombined = {\n ...style,\n ...layoutStyles,\n };\n\n if (!isCurrent) {\n return null;\n }\n\n return (\n <motion.div\n style={styleCombined}\n className={cx(styles[\"stepper-panel\"], className)}\n transition={{\n opacity: {\n duration: +core.primitive.DurationSlow.value.replace(\"ms\", \"\") / 1000,\n },\n }}\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n exit={{ opacity: 0 }}\n layout\n {...rest}\n role=\"tabpanel\"\n data-anv=\"stepper-base-panel\"\n id={id}\n ref={ref}\n >\n <Overflow flexGrow={1}>{children}</Overflow>\n </motion.div>\n );\n});\n\nStepperBasePanel.displayName = \"StepperBasePanel\";\n","import {\n type ComponentPropsWithoutRef,\n forwardRef,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport cx from \"classnames\";\nimport { motion } from \"motion/react\";\n\nimport { useMergeRefs } from \"../../../hooks\";\nimport type { LayoutUtilProps } from \"../../../types\";\nimport {\n useLayoutPropsUtil,\n useOptionallyControlledState,\n} from \"../../../internal/hooks\";\n\nimport { StepperBaseList } from \"./StepperBaseList\";\nimport { StepperBaseStep } from \"./StepperBaseStep\";\nimport { StepperBasePanel } from \"./StepperBasePanel\";\nimport {\n StepperBaseContext,\n type StepperBaseContextValue,\n type StepperBaseStepInfo,\n} from \"./internal/StepperBaseContext\";\n\nimport styles from \"../Stepper.module.scss\";\n\n/**\n * @extends Omit<ComponentPropsWithoutRef<\"div\">, \"onAnimationStart\" | \"onDragStart\" | \"onDragEnd\" | \"onDrag\">\n * @extends LayoutUtilProps\n */\nexport type StepperBaseProps = Omit<\n ComponentPropsWithoutRef<\"div\">,\n \"onAnimationStart\" | \"onDragStart\" | \"onDragEnd\" | \"onDrag\"\n> &\n LayoutUtilProps & {\n /** Controlled current step (0-based). Pair with `onIndexChange`. */\n index?: number;\n\n /**\n * Uncontrolled start. Ignored when `index` is set. Defaults to `0`.\n */\n defaultIndex?: number;\n\n /** Called with the requested 0-based index. */\n onIndexChange?: (index: number) => void;\n\n /**\n * Click, Enter, and Space can activate a step. Arrow keys only move\n * focus. Defaults to `false`.\n */\n interactive?: boolean;\n };\n\n/**\n * Controllable stepper primitive: current index is controlled (`index` +\n * `onIndexChange`) or uncontrolled (`defaultIndex`). Each step's outcome is\n * independent of current. {@link Stepper} is the linear wizard on top.\n * Display-only until `interactive`. Panels are optional.\n *\n * @example\n * <StepperBase index={2}>\n * <StepperBase.List>\n * <StepperBase.Step state=\"complete\">Approved</StepperBase.Step>\n * <StepperBase.Step>Scheduled</StepperBase.Step>\n * </StepperBase.List>\n * </StepperBase>\n */\nexport const StepperBase = Object.assign(\n forwardRef<HTMLDivElement, StepperBaseProps>(\n function StepperBaseInner(props, ref) {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const {\n index,\n defaultIndex = 0,\n onIndexChange,\n interactive = false,\n className,\n children,\n style,\n ...rest\n } = componentProps;\n\n const rootRef = useRef<HTMLDivElement>(null);\n const [currentIndex, setCurrentIndex] = useOptionallyControlledState({\n controlledValue: index,\n defaultValue: defaultIndex,\n onChange: onIndexChange,\n });\n const [focusIndex, setFocusIndex] = useState(index ?? defaultIndex);\n\n useEffect(() => {\n setFocusIndex(currentIndex);\n }, [currentIndex]);\n const stepsRef = useRef<Map<number, StepperBaseStepInfo>>(new Map());\n const [stepsVersion, setStepsVersion] = useState(0);\n const panelsRef = useRef<Map<string, string>>(new Map());\n const [panelsVersion, setPanelsVersion] = useState(0);\n\n const bumpSteps = useCallback(() => {\n setStepsVersion((value) => value + 1);\n }, []);\n\n const bumpPanels = useCallback(() => {\n setPanelsVersion((value) => value + 1);\n }, []);\n\n const registerStep = useCallback(\n (info: StepperBaseStepInfo) => {\n stepsRef.current.set(info.index, info);\n bumpSteps();\n return () => {\n const current = stepsRef.current.get(info.index);\n // Same-object check: a remount may already have replaced this slot.\n if (current === info) {\n stepsRef.current.delete(info.index);\n bumpSteps();\n }\n };\n },\n [bumpSteps],\n );\n\n const getStep = useCallback((stepIndex: number) => {\n return stepsRef.current.get(stepIndex);\n }, []);\n\n const getCurrentStep = useCallback(() => {\n return stepsRef.current.get(currentIndex);\n }, [currentIndex]);\n\n const requestIndexChange = useCallback(\n (nextIndex: number) => {\n if (!interactive) return;\n const target = stepsRef.current.get(nextIndex);\n if (target?.disabled) return;\n setCurrentIndex(nextIndex);\n setFocusIndex(nextIndex);\n },\n [interactive, setCurrentIndex],\n );\n\n const registerPanel = useCallback(\n (stepId: string, panelId: string) => {\n panelsRef.current.set(stepId, panelId);\n bumpPanels();\n return () => {\n // Same-id check: a remount may already have replaced this panel.\n if (panelsRef.current.get(stepId) === panelId) {\n panelsRef.current.delete(stepId);\n bumpPanels();\n }\n };\n },\n [bumpPanels],\n );\n\n const getPanelId = useCallback((stepId: string) => {\n return panelsRef.current.get(stepId);\n }, []);\n\n // Maps live in refs; version counters in the dep list force consumers\n // to re-read them.\n const value = useMemo<StepperBaseContextValue>(\n () => ({\n currentIndex,\n interactive,\n focusIndex,\n setFocusIndex,\n requestIndexChange,\n registerStep,\n getStep,\n getCurrentStep,\n getPanelId,\n registerPanel,\n }),\n [\n currentIndex,\n interactive,\n focusIndex,\n requestIndexChange,\n registerStep,\n getStep,\n getCurrentStep,\n getPanelId,\n registerPanel,\n stepsVersion,\n panelsVersion,\n ],\n );\n\n const styleCombined = { ...style, ...layoutStyles };\n\n return (\n <StepperBaseContext.Provider value={value}>\n <motion.div\n transition={{ duration: 0 }}\n layout\n className={cx(styles.stepper, className)}\n data-anv=\"stepper-base\"\n style={styleCombined}\n {...rest}\n ref={useMergeRefs([rootRef, ref])}\n >\n {children}\n </motion.div>\n </StepperBaseContext.Provider>\n );\n },\n ),\n {\n /** Progress marker for one step in the track. */\n Step: StepperBaseStep,\n\n /** Track of `StepperBase.Step` children plus the compact current label. */\n List: StepperBaseList,\n\n /** Body shown while its named step is current. */\n Panel: StepperBasePanel,\n },\n);\nStepperBase.displayName = \"StepperBase\";\n","import { type ComponentPropsWithoutRef, forwardRef, useContext } from \"react\";\nimport cx from \"classnames\";\n\nimport { StepperBaseContext } from \"./base/internal/StepperBaseContext\";\nimport { StepperStepIndexScope } from \"./base/internal/StepperStepIndexScope\";\n\nimport styles from \"./StepperList.module.scss\";\n\n/**\n * @extends ComponentPropsWithoutRef<\"div\">\n */\nexport type StepperListProps = ComponentPropsWithoutRef<\"div\">;\n\n/** Track of `Stepper.Step` children plus the compact current label. */\nexport const StepperList = forwardRef<HTMLDivElement, StepperListProps>(\n (props, ref) => {\n const { className, children, onKeyDown: _onKeyDown, ...rest } = props;\n const { getCurrentStep } = useContext(StepperBaseContext);\n const currentLabel = getCurrentStep()?.label;\n\n const tabListClassNames = cx(styles[\"stepper-list\"], className);\n\n return (\n <div\n {...rest}\n className={tabListClassNames}\n data-anv=\"stepper-list\"\n ref={ref}\n role=\"tablist\"\n >\n <div className={styles[\"stepper-steps\"]}>\n <StepperStepIndexScope>{children}</StepperStepIndexScope>\n </div>\n <span className={styles.label}>{currentLabel}</span>\n </div>\n );\n },\n);\n\nStepperList.displayName = \"StepperList\";\n","import { type Dispatch, type SetStateAction, createContext } from \"react\";\n\nexport type StepperContextProps = {\n current: number;\n setCurrent: Dispatch<SetStateAction<number>>;\n currentId: string;\n setCurrentId: Dispatch<SetStateAction<string>>;\n focus: number;\n setFocus: Dispatch<SetStateAction<number>>;\n onComplete?: () => void;\n allCompleted?: boolean;\n setAllCompleted?: Dispatch<SetStateAction<boolean>>;\n allowNavigateToPrevStep?: boolean;\n};\n\nexport const StepperContext = createContext<StepperContextProps>({\n current: 0,\n currentId: \"\",\n focus: 0,\n setFocus: () => undefined,\n setCurrent: () => undefined,\n setCurrentId: () => undefined,\n});\n","import {\n forwardRef,\n useContext,\n useLayoutEffect,\n useRef,\n type KeyboardEvent,\n type MouseEvent,\n type ComponentPropsWithoutRef,\n} from \"react\";\nimport cx from \"classnames\";\nimport Check from \"@servicetitan/hammer-icon/mdi/round/check.svg\";\n\nimport { Icon } from \"../Icon\";\nimport { useMergeRefs } from \"../../hooks\";\nimport {\n StepperBaseContext,\n useStepperStepIndex,\n} from \"./base/internal/StepperBaseContext\";\nimport { StepperContext } from \"./internal/StepperContext\";\n\nimport styles from \"./StepperStep.module.scss\";\n\n/**\n * @extends Omit<ComponentPropsWithoutRef<\"button\">, \"onClick\" | \"disabled\">\n */\nexport type StepperStepProps = Omit<\n ComponentPropsWithoutRef<\"button\">,\n \"onClick\" | \"disabled\"\n> & {\n /** Must match the paired `Stepper.Panel` `id`. */\n controls: string;\n\n /**\n * Runs first and receives this step's 0-based index. Navigation still\n * requires `allowNavigateToPrevStep` and a non-future step.\n */\n onClick?: (e: MouseEvent<HTMLButtonElement>, index?: number) => void;\n};\n\n/** Progress marker for one step in the wizard track. */\nexport const StepperStep = forwardRef<HTMLButtonElement, StepperStepProps>(\n (props, ref) => {\n const stepRef = useRef<HTMLButtonElement>(null);\n const index = useStepperStepIndex();\n const { registerStep, getStep } = useContext(StepperBaseContext);\n const {\n current,\n setCurrent,\n focus,\n setFocus,\n allCompleted,\n allowNavigateToPrevStep,\n } = useContext(StepperContext);\n const {\n onClick,\n children,\n onFocus,\n onKeyDown,\n controls,\n className,\n \"aria-label\": ariaLabel,\n ...rest\n } = props;\n\n const childrenText =\n typeof children === \"string\"\n ? children\n : typeof children === \"number\"\n ? String(children)\n : undefined;\n const label = childrenText || ariaLabel || \"\";\n\n useLayoutEffect(() => {\n if (index === undefined) return;\n return registerStep({\n index,\n id: controls,\n label,\n disabled: false,\n node: stepRef,\n });\n }, [controls, index, label, registerStep]);\n\n const selected = index === current;\n const completed = index !== undefined && index < current;\n\n const stepClassNames = cx(styles[\"stepper-step\"], className, {\n [styles[\"can-navigate\"]]: allowNavigateToPrevStep,\n [styles[\"all-completed\"]]: allCompleted,\n });\n\n const onClickHandler = (e: MouseEvent<HTMLButtonElement>) => {\n onClick?.(e, index);\n if (\n !allowNavigateToPrevStep ||\n selected ||\n index === undefined ||\n index > current\n ) {\n return;\n }\n setCurrent(index);\n setFocus(index);\n stepRef.current?.focus();\n };\n\n const onKeyDownHandler = (e: KeyboardEvent<HTMLButtonElement>) => {\n onKeyDown?.(e);\n const focusableItems: HTMLElement[] = [];\n for (let i = 0; i <= current; i += 1) {\n const node = getStep(i)?.node.current;\n if (node) focusableItems.push(node);\n }\n const prevFocus = focus - 1;\n const nextFocus = focus + 1;\n switch (e.code) {\n case \"Enter\":\n case \"Space\":\n e.preventDefault();\n setCurrent(focus);\n break;\n case \"ArrowRight\":\n e.preventDefault();\n if (nextFocus === focusableItems.length) {\n setFocus(0);\n focusableItems[0].focus();\n return;\n }\n setFocus(nextFocus);\n focusableItems[nextFocus].focus();\n break;\n case \"ArrowLeft\":\n e.preventDefault();\n if (focus === 0) {\n const lastItemIndex = focusableItems.length - 1;\n setFocus(lastItemIndex);\n focusableItems[lastItemIndex].focus();\n return;\n }\n setFocus(prevFocus);\n focusableItems[prevFocus].focus();\n break;\n }\n };\n\n return (\n <button\n type=\"button\"\n role=\"tab\"\n data-anv=\"stepper-step\"\n className={stepClassNames}\n aria-selected={selected}\n aria-controls={controls}\n aria-label={childrenText || ariaLabel}\n tabIndex={\n allowNavigateToPrevStep && index === focus && !allCompleted ? 0 : -1\n }\n data-completed={completed}\n onClick={onClickHandler}\n onKeyDown={allowNavigateToPrevStep ? onKeyDownHandler : onKeyDown}\n {...rest}\n ref={useMergeRefs([stepRef, ref])}\n >\n <span className={styles.bar} />\n <span className={styles.label}>\n <span className={styles.circle}>\n <Icon svg={Check} inherit aria-hidden />\n </span>\n\n {children}\n </span>\n </button>\n );\n },\n);\n\nStepperStep.displayName = \"StepperStep\";\n","import {\n type ComponentPropsWithoutRef,\n forwardRef,\n useContext,\n useEffect,\n} from \"react\";\nimport cx from \"classnames\";\nimport { core } from \"@servicetitan/hammer-token\";\nimport { motion } from \"motion/react\";\n\nimport type { LayoutUtilProps } from \"../../types\";\nimport { useLayoutPropsUtil } from \"../../internal/hooks\";\nimport { Overflow } from \"../Overflow\";\nimport { StepperBaseContext } from \"./base/internal/StepperBaseContext\";\nimport { StepperContext } from \"./internal/StepperContext\";\n\nimport styles from \"./StepperPanel.module.scss\";\n\n/**\n * @extends Omit<ComponentPropsWithoutRef<\"div\">, \"onAnimationStart\" | \"onDragStart\" | \"onDragEnd\" | \"onDrag\">\n * @extends LayoutUtilProps\n */\nexport type StepperPanelProps = Omit<\n ComponentPropsWithoutRef<\"div\">,\n \"onAnimationStart\" | \"onDragStart\" | \"onDragEnd\" | \"onDrag\"\n> &\n LayoutUtilProps & {\n /**\n * Must match the paired `Stepper.Step` `controls`. Only the current\n * incomplete panel renders.\n */\n id: string;\n };\n\n/** Body shown while its paired step is current and the wizard is incomplete. */\nexport const StepperPanel = forwardRef<HTMLDivElement, StepperPanelProps>(\n (props, ref) => {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const { id, className, style, children, ...rest } = componentProps;\n const { allCompleted, setCurrentId } = useContext(StepperContext);\n const { getCurrentStep } = useContext(StepperBaseContext);\n\n const currentStepId = getCurrentStep()?.id;\n const isCurrent = currentStepId === id;\n\n useEffect(() => {\n if (isCurrent && !allCompleted) {\n setCurrentId(currentStepId ?? \"\");\n }\n }, [allCompleted, isCurrent, currentStepId, setCurrentId]);\n\n const tabPanelClassNames = cx(styles[\"stepper-panel\"], className);\n const styleCombined = {\n ...style,\n ...layoutStyles,\n };\n\n if (isCurrent && !allCompleted) {\n return (\n <motion.div\n style={styleCombined}\n className={tabPanelClassNames}\n transition={{\n opacity: {\n duration:\n +core.primitive.DurationSlow.value.replace(\"ms\", \"\") / 1000,\n },\n }}\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n exit={{ opacity: 0 }}\n layout\n {...rest}\n role=\"tabpanel\"\n data-anv=\"stepper-panel\"\n id={id}\n ref={ref}\n >\n <Overflow flexGrow={1}>{children}</Overflow>\n </motion.div>\n );\n }\n return <></>;\n },\n);\n\nStepperPanel.displayName = \"StepperPanel\";\n","import {\n type ComponentPropsWithoutRef,\n forwardRef,\n useContext,\n useEffect,\n} from \"react\";\nimport cx from \"classnames\";\nimport { core } from \"@servicetitan/hammer-token\";\nimport { motion } from \"motion/react\";\n\nimport type { LayoutUtilProps } from \"../../types\";\nimport { Overflow } from \"../Overflow\";\nimport { StepperContext } from \"./internal/StepperContext\";\nimport { useLayoutPropsUtil } from \"../../internal/hooks\";\n\nimport styles from \"./StepperPanel.module.scss\";\n\n/**\n * @extends Omit<ComponentPropsWithoutRef<\"div\">, \"onAnimationStart\" | \"onDragStart\" | \"onDragEnd\" | \"onDrag\">\n * @extends LayoutUtilProps\n */\nexport type StepperFinalPanelProps = Omit<\n ComponentPropsWithoutRef<\"div\">,\n \"onAnimationStart\" | \"onDragStart\" | \"onDragEnd\" | \"onDrag\"\n> &\n LayoutUtilProps;\n\n/** Shown after the last Next completes, or when `defaultIndex` starts completed. */\nexport const StepperFinalPanel = forwardRef<\n HTMLDivElement,\n StepperFinalPanelProps\n>((props, ref) => {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const { id, className, style, children, ...rest } = componentProps;\n const { allCompleted, setCurrentId } = useContext(StepperContext);\n\n useEffect(() => {\n if (allCompleted) {\n setCurrentId(\"final-panel\");\n }\n }, [allCompleted, setCurrentId]);\n\n const tabPanelClassNames = cx(styles[\"stepper-panel\"], className);\n const styleCombined = {\n ...style,\n ...layoutStyles,\n };\n\n if (allCompleted) {\n return (\n <motion.div\n style={styleCombined}\n className={tabPanelClassNames}\n transition={{\n opacity: {\n duration:\n +core.primitive.DurationSlow.value.replace(\"ms\", \"\") / 1000,\n },\n }}\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n exit={{ opacity: 0 }}\n layout\n {...rest}\n role=\"tabpanel\"\n data-anv=\"stepper-final-panel\"\n tabIndex={0}\n ref={ref}\n >\n <Overflow>{children}</Overflow>\n </motion.div>\n );\n }\n return null;\n});\n\nStepperFinalPanel.displayName = \"StepperFinalPanel\";\n","import type { StepperBaseContextValue } from \"../base/internal/StepperBaseContext\";\n\n/** Walks 0, 1, … until `getStep` returns undefined. A hole in the map ends the count. */\nexport function countRegisteredSteps(\n getStep: StepperBaseContextValue[\"getStep\"],\n): number {\n let count = 0;\n while (getStep(count)) count += 1;\n return count;\n}\n","import { forwardRef, useContext, type MouseEvent } from \"react\";\n\nimport { Button, type ButtonProps } from \"../Button\";\nimport type { DataTrackingId } from \"../../types\";\nimport { useTrackingId } from \"../../hooks\";\nimport { StepperBaseContext } from \"./base/internal/StepperBaseContext\";\n\nimport { StepperContext } from \"./internal/StepperContext\";\nimport { countRegisteredSteps } from \"./internal/countRegisteredSteps\";\n\n/**\n * @extends Omit<ButtonProps, \"children\">\n * @extends DataTrackingId\n */\nexport type StepperNextButtonProps = Omit<ButtonProps, \"children\"> & {\n /** Label except on the last step. Defaults to `\"Next\"`. */\n nextLabel?: string;\n\n /** Label on the last step. Defaults to `\"Complete\"`. */\n completeLabel?: string;\n\n /**\n * Return `false` or a Promise that resolves to `false` to block advance.\n * `void` or `true` proceeds. Last successful click completes.\n */\n onClick?: (\n e: MouseEvent<HTMLButtonElement>,\n ) => void | boolean | Promise<boolean>;\n} & DataTrackingId;\n\n/**\n * Advances the wizard. Hidden after completion. Last step shows\n * `completeLabel` and fires `onComplete`. Appearance defaults to `primary`.\n */\nexport const StepperNextButton = forwardRef<\n HTMLButtonElement,\n StepperNextButtonProps\n>((props, ref) => {\n const {\n setAllCompleted,\n onComplete,\n setCurrent,\n setFocus,\n current,\n allCompleted,\n } = useContext(StepperContext);\n const { getStep } = useContext(StepperBaseContext);\n const stepCount = countRegisteredSteps(getStep);\n const isLastStep = stepCount > 0 && current === stepCount - 1;\n const {\n onClick,\n onFocus,\n nextLabel = \"Next\",\n completeLabel = \"Complete\",\n appearance = \"primary\",\n ...rest\n } = props;\n\n const proceedToNextStep = () => {\n if (isLastStep) {\n setAllCompleted?.(true);\n onComplete?.();\n return;\n }\n setCurrent(current + 1);\n setFocus(current + 1);\n };\n\n const onClickHandler = (e: MouseEvent<HTMLButtonElement>) => {\n const onClickResult = onClick?.(e);\n\n if (\n onClickResult !== undefined &&\n onClickResult &&\n (onClickResult as unknown) instanceof Promise\n ) {\n (onClickResult as unknown as Promise<boolean>).then((result) => {\n if (result === false) return;\n proceedToNextStep();\n });\n } else {\n if ((onClickResult as void | boolean) === false) return;\n proceedToNextStep();\n }\n };\n\n const data = {\n nextLabel: props.nextLabel,\n completeLabel: props.completeLabel,\n };\n\n const trackingId = useTrackingId({\n name: \"StepperNextButton\",\n data,\n hasOverride: !!props[\"data-tracking-id\"],\n });\n\n return allCompleted ? null : (\n <Button\n data-anv=\"stepper-next-button\"\n data-tracking-id={trackingId}\n onClick={onClickHandler}\n appearance={appearance}\n ref={ref}\n {...rest}\n >\n {isLastStep ? completeLabel : nextLabel}\n </Button>\n );\n});\n\nStepperNextButton.displayName = \"StepperNextButton\";\n","import { forwardRef, useContext, type MouseEvent } from \"react\";\n\nimport type { DataTrackingId } from \"../../types\";\nimport { Button, type ButtonProps } from \"../Button\";\nimport { useTrackingId } from \"../../hooks\";\n\nimport { StepperContext } from \"./internal/StepperContext\";\n\n/**\n * @extends Omit<ButtonProps, \"children\">\n * @extends DataTrackingId\n */\nexport type StepperPrevButtonProps = Omit<ButtonProps, \"children\"> & {\n /** Button text. Defaults to `\"Previous\"`. */\n label?: string;\n} & DataTrackingId;\n\n/**\n * Goes back one step. Hidden on the first step. From FinalPanel, restores\n * the last step instead of decrementing.\n */\nexport const StepperPrevButton = forwardRef<\n HTMLButtonElement,\n StepperPrevButtonProps\n>((props, ref) => {\n const { setCurrent, setFocus, allCompleted, setAllCompleted, current } =\n useContext(StepperContext);\n const { onClick, label = \"Previous\", onFocus, ...rest } = props;\n\n const onClickHandler = (e: MouseEvent<HTMLButtonElement>) => {\n if (allCompleted) {\n setAllCompleted?.(false);\n } else {\n setCurrent(current - 1);\n setFocus(current - 1);\n }\n\n onClick?.(e);\n };\n\n const data = {\n label: props.label,\n };\n\n const trackingId = useTrackingId({\n name: \"StepperPrevButton\",\n data,\n hasOverride: !!props[\"data-tracking-id\"],\n });\n\n return current === 0 ? null : (\n <Button\n data-anv=\"stepper-prev-button\"\n data-tracking-id={trackingId}\n onClick={onClickHandler}\n ref={ref}\n {...rest}\n >\n {label}\n </Button>\n );\n});\n\nStepperPrevButton.displayName = \"StepperPrevButton\";\n","import { useContext, useEffect, useRef } from \"react\";\n\nimport { StepperBaseContext } from \"../base/internal/StepperBaseContext\";\n\nimport { countRegisteredSteps } from \"./countRegisteredSteps\";\nimport { StepperContext } from \"./StepperContext\";\n\n/**\n * After the first step registers, `defaultIndex >=` step count marks the\n * wizard complete on the last step. Runs once.\n */\nexport function StepperWizardBootstrap({\n defaultIndex,\n}: {\n defaultIndex?: number;\n}) {\n const { getStep } = useContext(StepperBaseContext);\n const { setAllCompleted, setCurrent, setFocus } = useContext(StepperContext);\n const didBootstrap = useRef(false);\n const hasSteps = !!getStep(0);\n\n useEffect(() => {\n if (didBootstrap.current || !hasSteps) return;\n didBootstrap.current = true;\n\n const stepCount = countRegisteredSteps(getStep);\n if (defaultIndex !== undefined && defaultIndex >= stepCount) {\n const lastIndex = stepCount - 1;\n setAllCompleted?.(true);\n setCurrent(lastIndex);\n setFocus(lastIndex);\n }\n }, [defaultIndex, getStep, hasSteps, setAllCompleted, setCurrent, setFocus]);\n\n return null;\n}\n","import {\n type ComponentPropsWithoutRef,\n forwardRef,\n useEffect,\n useMemo,\n useState,\n} from \"react\";\n\nimport type { LayoutUtilProps } from \"../../types\";\nimport { StepperBase } from \"./base\";\n\nimport { StepperList } from \"./StepperList\";\nimport { StepperStep } from \"./StepperStep\";\nimport { StepperPanel } from \"./StepperPanel\";\nimport { StepperFinalPanel } from \"./StepperFinalPanel\";\nimport { StepperNextButton } from \"./StepperNextButton\";\nimport { StepperPrevButton } from \"./StepperPrevButton\";\nimport { StepperContext } from \"./internal/StepperContext\";\nimport { StepperWizardBootstrap } from \"./internal/StepperWizardBootstrap\";\n\n/**\n * @extends Omit<ComponentPropsWithoutRef<\"div\">, \"onAnimationStart\" | \"onDragStart\" | \"onDragEnd\" | \"onDrag\" | \"onChange\">\n * @extends LayoutUtilProps\n */\nexport type StepperProps = Omit<\n ComponentPropsWithoutRef<\"div\">,\n \"onAnimationStart\" | \"onDragStart\" | \"onDragEnd\" | \"onDrag\" | \"onChange\"\n> &\n LayoutUtilProps & {\n /**\n * Uncontrolled 0-based start. Defaults to `0`. When this is `>=` the\n * registered step count after steps mount, the wizard starts completed\n * on `Stepper.FinalPanel`.\n */\n defaultIndex?: number;\n\n /**\n * Lets users click and arrow-key to the current step and earlier ones.\n * Later steps stay inert. Does not affect Next/Prev. Defaults to `false`.\n */\n allowNavigateToPrevStep?: boolean;\n\n /**\n * Fires when the visible panel id or completed state changes.\n * `currentStepId` is that panel's `id`, or `\"final-panel\"`.\n * `currentStepIndex` is omitted on the final panel.\n */\n onChange?: (data: {\n currentStepId: string | \"final-panel\";\n currentStepIndex?: number;\n }) => void;\n\n /** Fires when Next succeeds on the last step. */\n onComplete?: () => void;\n };\n\n/**\n * Linear wizard built on {@link StepperBase}. Current step is uncontrolled.\n * Next/Prev drive progress; steps stay display-only unless\n * `allowNavigateToPrevStep` reopens earlier ones.\n *\n * @example\n * <Stepper allowNavigateToPrevStep>\n * <Stepper.List>\n * <Stepper.Step controls=\"step1\">One</Stepper.Step>\n * <Stepper.Step controls=\"step2\">Two</Stepper.Step>\n * </Stepper.List>\n * <Stepper.Panel id=\"step1\">First</Stepper.Panel>\n * <Stepper.Panel id=\"step2\">Second</Stepper.Panel>\n * <Stepper.FinalPanel>Done</Stepper.FinalPanel>\n * <Stepper.PrevButton />\n * <Stepper.NextButton />\n * </Stepper>\n */\nexport const Stepper = Object.assign(\n forwardRef<HTMLDivElement, StepperProps>(function StepperInner(props, ref) {\n const {\n defaultIndex,\n allowNavigateToPrevStep,\n children,\n onChange,\n onComplete,\n ...rest\n } = props;\n const [allCompleted, setAllCompleted] = useState(false);\n const [current, setCurrent] = useState<number>(defaultIndex ?? 0);\n const [currentId, setCurrentId] = useState<string>(\"\");\n const [focus, setFocus] = useState<number>(defaultIndex ?? 0);\n\n useEffect(() => {\n onChange?.({\n currentStepId: currentId,\n currentStepIndex: allCompleted ? undefined : current,\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [allCompleted, currentId, onChange]);\n\n const value = useMemo(\n () => ({\n current,\n setCurrent,\n currentId,\n setCurrentId,\n focus,\n setFocus,\n onComplete,\n allCompleted,\n setAllCompleted,\n allowNavigateToPrevStep,\n }),\n [\n current,\n currentId,\n focus,\n onComplete,\n allCompleted,\n allowNavigateToPrevStep,\n ],\n );\n\n return (\n <StepperBase\n index={current}\n interactive={false}\n data-anv=\"stepper\"\n {...rest}\n ref={ref}\n >\n <StepperContext.Provider value={value}>\n <StepperWizardBootstrap defaultIndex={defaultIndex} />\n {children}\n </StepperContext.Provider>\n </StepperBase>\n );\n }),\n {\n /** Progress marker for one step in the track. */\n Step: StepperStep,\n\n /** Track of `Stepper.Step` children plus the compact current label. */\n List: StepperList,\n\n /** Body shown while its paired step is current and the wizard is incomplete. */\n Panel: StepperPanel,\n\n /** Advances; last step uses `completeLabel` and calls `onComplete`. */\n NextButton: StepperNextButton,\n\n /** Goes back one step, or leaves the completed FinalPanel. Hidden on the first step. */\n PrevButton: StepperPrevButton,\n\n /** Shown after the last Next completes, or when `defaultIndex` starts completed. */\n FinalPanel: StepperFinalPanel,\n },\n);\nStepper.displayName = \"Stepper\";\n"],"names":["styles","Check","core.primitive.DurationSlow","value"],"mappings":"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"}
1
+ {"version":3,"file":"Stepper-l_P6VPOv.js","sources":["../src/components/Stepper/base/internal/StepperBaseContext.ts","../src/components/Stepper/base/internal/StepperStepIndexScope.tsx","../src/components/Stepper/base/StepperBaseList.tsx","../src/components/Stepper/base/StepperBaseStep.tsx","../src/components/Stepper/base/StepperBasePanel.tsx","../src/components/Stepper/base/StepperBase.tsx","../src/components/Stepper/StepperList.tsx","../src/components/Stepper/internal/StepperContext.ts","../src/components/Stepper/StepperStep.tsx","../src/components/Stepper/StepperPanel.tsx","../src/components/Stepper/StepperFinalPanel.tsx","../src/components/Stepper/internal/countRegisteredSteps.ts","../src/components/Stepper/StepperNextButton.tsx","../src/components/Stepper/StepperPrevButton.tsx","../src/components/Stepper/internal/StepperWizardBootstrap.tsx","../src/components/Stepper/Stepper.tsx"],"sourcesContent":["import { createContext, useContext, useRef, type RefObject } from \"react\";\n\n/** Per-step outcome. Independent of whether the step is current. */\nexport type StepperBaseStepState = \"not started\" | \"started\" | \"complete\";\n\nexport type StepperBaseStepInfo = {\n index: number;\n id?: string;\n label: string;\n disabled: boolean;\n node: RefObject<HTMLButtonElement | null>;\n};\n\nexport type StepperBaseContextValue = {\n currentIndex: number;\n interactive: boolean;\n focusIndex: number;\n setFocusIndex: (index: number) => void;\n requestIndexChange: (index: number) => void;\n registerStep: (info: StepperBaseStepInfo) => () => void;\n getStep: (index: number) => StepperBaseStepInfo | undefined;\n getCurrentStep: () => StepperBaseStepInfo | undefined;\n getPanelId: (stepId: string) => string | undefined;\n registerPanel: (stepId: string, panelId: string) => () => void;\n};\n\nexport const StepperBaseContext = createContext<StepperBaseContextValue>({\n currentIndex: 0,\n interactive: false,\n focusIndex: 0,\n setFocusIndex: () => undefined,\n requestIndexChange: () => undefined,\n registerStep: () => () => undefined,\n getStep: () => undefined,\n getCurrentStep: () => undefined,\n getPanelId: () => undefined,\n registerPanel: () => () => undefined,\n});\n\n/**\n * Hands out 0-based indices in render order, so steps work inside fragments and\n * wrapper components rather than only as direct List children. Each render of\n * StepperStepIndexScope starts a new pass.\n */\nexport type StepperBaseStepIndexPass = {\n allocate: () => number;\n};\n\nexport const StepperBaseStepIndexPassContext =\n createContext<StepperBaseStepIndexPass | null>(null);\n\ntype AllocatedIndex = {\n pass: StepperBaseStepIndexPass;\n index: number;\n};\n\n/**\n * Index of the calling step, or undefined when it renders outside a List.\n *\n * A step allocates at most once per pass, so it keeps its index when it\n * re-renders alone and when StrictMode renders it twice.\n */\nexport function useStepperStepIndex() {\n const pass = useContext(StepperBaseStepIndexPassContext);\n const allocated = useRef<AllocatedIndex | null>(null);\n\n if (!pass) return undefined;\n\n if (allocated.current?.pass !== pass) {\n allocated.current = { pass, index: pass.allocate() };\n }\n\n return allocated.current.index;\n}\n","import type { ReactNode } from \"react\";\n\nimport {\n StepperBaseStepIndexPassContext,\n type StepperBaseStepIndexPass,\n} from \"./StepperBaseContext\";\n\nfunction startIndexPass(): StepperBaseStepIndexPass {\n let nextIndex = 0;\n\n return {\n allocate: () => {\n const index = nextIndex;\n nextIndex += 1;\n return index;\n },\n };\n}\n\nexport function StepperStepIndexScope({ children }: { children: ReactNode }) {\n return (\n <StepperBaseStepIndexPassContext.Provider value={startIndexPass()}>\n {children}\n </StepperBaseStepIndexPassContext.Provider>\n );\n}\n","import { type ComponentPropsWithoutRef, forwardRef, useContext } from \"react\";\nimport cx from \"classnames\";\n\nimport { StepperBaseContext } from \"./internal/StepperBaseContext\";\nimport { StepperStepIndexScope } from \"./internal/StepperStepIndexScope\";\n\nimport styles from \"../StepperList.module.scss\";\n\n/**\n * @extends ComponentPropsWithoutRef<\"div\">\n */\nexport type StepperBaseListProps = ComponentPropsWithoutRef<\"div\">;\n\n/** Track of `StepperBase.Step` children plus the compact current label. */\nexport const StepperBaseList = forwardRef<HTMLDivElement, StepperBaseListProps>(\n (props, ref) => {\n const { className, children, ...rest } = props;\n const { getCurrentStep } = useContext(StepperBaseContext);\n const currentLabel = getCurrentStep()?.label;\n\n return (\n <div\n {...rest}\n className={cx(styles[\"stepper-list\"], className)}\n data-anv=\"stepper-base-list\"\n ref={ref}\n role=\"tablist\"\n >\n <div className={styles[\"stepper-steps\"]}>\n <StepperStepIndexScope>{children}</StepperStepIndexScope>\n </div>\n <span className={styles.label}>{currentLabel}</span>\n </div>\n );\n },\n);\n\nStepperBaseList.displayName = \"StepperBaseList\";\n","import {\n forwardRef,\n useContext,\n useLayoutEffect,\n useRef,\n type KeyboardEvent,\n type MouseEvent,\n type ComponentPropsWithoutRef,\n} from \"react\";\nimport cx from \"classnames\";\nimport Check from \"@servicetitan/hammer-icon/mdi/round/check.svg\";\n\nimport { Icon } from \"../../Icon\";\nimport { useMergeRefs } from \"../../../hooks\";\nimport {\n StepperBaseContext,\n useStepperStepIndex,\n type StepperBaseStepState,\n} from \"./internal/StepperBaseContext\";\n\nimport styles from \"../StepperStep.module.scss\";\n\nexport type { StepperBaseStepState };\n\n/**\n * @extends Omit<ComponentPropsWithoutRef<\"button\">, \"onClick\" | \"disabled\">\n */\nexport type StepperBaseStepProps = Omit<\n ComponentPropsWithoutRef<\"button\">,\n \"onClick\" | \"disabled\"\n> & {\n /**\n * Visual outcome, independent of whether this step is current. Current plus\n * any state is legal. Defaults to `\"not started\"`.\n */\n state?: StepperBaseStepState;\n\n /** Required when a `StepperBase.Panel` `step` points here. */\n id?: string;\n\n /**\n * Blocks becoming current via click or keyboard. Defaults to `false`.\n */\n disabled?: boolean;\n\n /**\n * Notify only; does not replace `onIndexChange`. Receives this step's\n * 0-based index.\n */\n onClick?: (e: MouseEvent<HTMLButtonElement>, index?: number) => void;\n};\n\n/** Progress marker for one step in the track. */\nexport const StepperBaseStep = forwardRef<\n HTMLButtonElement,\n StepperBaseStepProps\n>((props, ref) => {\n const stepRef = useRef<HTMLButtonElement>(null);\n const index = useStepperStepIndex();\n const {\n currentIndex,\n interactive,\n focusIndex,\n setFocusIndex,\n requestIndexChange,\n registerStep,\n getStep,\n getPanelId,\n } = useContext(StepperBaseContext);\n const {\n state = \"not started\",\n id,\n disabled = false,\n onClick,\n children,\n onKeyDown,\n className,\n \"aria-label\": ariaLabel,\n ...rest\n } = props;\n\n const childrenText =\n typeof children === \"string\"\n ? children\n : typeof children === \"number\"\n ? String(children)\n : undefined;\n const label = childrenText || ariaLabel || \"\";\n\n useLayoutEffect(() => {\n if (index === undefined) return;\n return registerStep({\n index,\n id,\n label,\n disabled,\n node: stepRef,\n });\n }, [disabled, id, index, label, registerStep]);\n\n const selected = index === currentIndex;\n const completed = state === \"complete\";\n const panelId = id ? getPanelId(id) : undefined;\n\n const onClickHandler = (e: MouseEvent<HTMLButtonElement>) => {\n onClick?.(e, index);\n if (index === undefined) return;\n requestIndexChange(index);\n };\n\n const onKeyDownHandler = (e: KeyboardEvent<HTMLButtonElement>) => {\n onKeyDown?.(e);\n if (!interactive || index === undefined) return;\n\n const activatable: number[] = [];\n for (let i = 0; ; i += 1) {\n const step = getStep(i);\n if (!step) break;\n if (!step.disabled) activatable.push(i);\n }\n if (activatable.length === 0) return;\n\n const currentPos = activatable.indexOf(focusIndex);\n const safePos = currentPos === -1 ? 0 : currentPos;\n\n switch (e.code) {\n case \"Enter\":\n case \"Space\":\n e.preventDefault();\n requestIndexChange(focusIndex);\n break;\n case \"ArrowRight\": {\n e.preventDefault();\n const next = activatable[(safePos + 1) % activatable.length];\n setFocusIndex(next);\n getStep(next)?.node.current?.focus();\n break;\n }\n case \"ArrowLeft\": {\n e.preventDefault();\n const prev =\n activatable[(safePos - 1 + activatable.length) % activatable.length];\n setFocusIndex(prev);\n getStep(prev)?.node.current?.focus();\n break;\n }\n default:\n break;\n }\n };\n\n return (\n <button\n type=\"button\"\n role=\"tab\"\n data-anv=\"stepper-base-step\"\n data-state={state}\n data-completed={completed}\n className={cx(styles[\"stepper-step\"], className, {\n [styles[\"can-navigate\"]]: interactive,\n })}\n aria-selected={selected}\n aria-controls={panelId}\n aria-disabled={disabled || undefined}\n aria-label={childrenText || ariaLabel}\n tabIndex={interactive && index === focusIndex && !disabled ? 0 : -1}\n onClick={onClickHandler}\n onKeyDown={interactive ? onKeyDownHandler : onKeyDown}\n {...rest}\n id={id}\n ref={useMergeRefs([stepRef, ref])}\n >\n <span className={styles.bar} />\n <span className={styles.label}>\n <span className={styles.circle}>\n <Icon svg={Check} inherit aria-hidden />\n </span>\n {children}\n </span>\n </button>\n );\n});\n\nStepperBaseStep.displayName = \"StepperBaseStep\";\n","import {\n type ComponentPropsWithoutRef,\n forwardRef,\n useContext,\n useId,\n useLayoutEffect,\n} from \"react\";\nimport cx from \"classnames\";\nimport { core } from \"@servicetitan/hammer-token\";\nimport { motion } from \"motion/react\";\n\nimport type { LayoutUtilProps } from \"../../../types\";\nimport { useLayoutPropsUtil } from \"../../../internal/hooks\";\nimport { Overflow } from \"../../Overflow\";\nimport { StepperBaseContext } from \"./internal/StepperBaseContext\";\n\nimport styles from \"../StepperPanel.module.scss\";\n\n/**\n * @extends Omit<ComponentPropsWithoutRef<\"div\">, \"onAnimationStart\" | \"onDragStart\" | \"onDragEnd\" | \"onDrag\">\n * @extends LayoutUtilProps\n */\nexport type StepperBasePanelProps = Omit<\n ComponentPropsWithoutRef<\"div\">,\n \"onAnimationStart\" | \"onDragStart\" | \"onDragEnd\" | \"onDrag\"\n> &\n LayoutUtilProps & {\n /** Must match the controlling `StepperBase.Step` `id`. */\n step: string;\n\n /**\n * Panel element id. Generated when omitted (used for `aria-controls`).\n */\n id?: string;\n };\n\n/** Body shown while its named step is current. */\nexport const StepperBasePanel = forwardRef<\n HTMLDivElement,\n StepperBasePanelProps\n>((props, ref) => {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const {\n step,\n id: idProp,\n className,\n style,\n children,\n ...rest\n } = componentProps;\n const generatedId = useId();\n const id = idProp ?? generatedId;\n const { getCurrentStep, registerPanel } = useContext(StepperBaseContext);\n const currentStep = getCurrentStep();\n const isCurrent = currentStep?.id === step;\n\n useLayoutEffect(() => {\n return registerPanel(step, id);\n }, [id, registerPanel, step]);\n\n const styleCombined = {\n ...style,\n ...layoutStyles,\n };\n\n if (!isCurrent) {\n return null;\n }\n\n return (\n <motion.div\n style={styleCombined}\n className={cx(styles[\"stepper-panel\"], className)}\n transition={{\n opacity: {\n duration: +core.primitive.DurationSlow.value.replace(\"ms\", \"\") / 1000,\n },\n }}\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n exit={{ opacity: 0 }}\n layout\n {...rest}\n role=\"tabpanel\"\n data-anv=\"stepper-base-panel\"\n id={id}\n ref={ref}\n >\n <Overflow flexGrow={1}>{children}</Overflow>\n </motion.div>\n );\n});\n\nStepperBasePanel.displayName = \"StepperBasePanel\";\n","import {\n type ComponentPropsWithoutRef,\n forwardRef,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport cx from \"classnames\";\nimport { motion } from \"motion/react\";\n\nimport { useMergeRefs } from \"../../../hooks\";\nimport type { LayoutUtilProps } from \"../../../types\";\nimport {\n useLayoutPropsUtil,\n useOptionallyControlledState,\n} from \"../../../internal/hooks\";\n\nimport { StepperBaseList } from \"./StepperBaseList\";\nimport { StepperBaseStep } from \"./StepperBaseStep\";\nimport { StepperBasePanel } from \"./StepperBasePanel\";\nimport {\n StepperBaseContext,\n type StepperBaseContextValue,\n type StepperBaseStepInfo,\n} from \"./internal/StepperBaseContext\";\n\nimport styles from \"../Stepper.module.scss\";\n\n/**\n * @extends Omit<ComponentPropsWithoutRef<\"div\">, \"onAnimationStart\" | \"onDragStart\" | \"onDragEnd\" | \"onDrag\">\n * @extends LayoutUtilProps\n */\nexport type StepperBaseProps = Omit<\n ComponentPropsWithoutRef<\"div\">,\n \"onAnimationStart\" | \"onDragStart\" | \"onDragEnd\" | \"onDrag\"\n> &\n LayoutUtilProps & {\n /** Controlled current step (0-based). Pair with `onIndexChange`. */\n index?: number;\n\n /**\n * Uncontrolled start. Ignored when `index` is set. Defaults to `0`.\n */\n defaultIndex?: number;\n\n /** Called with the requested 0-based index. */\n onIndexChange?: (index: number) => void;\n\n /**\n * Click, Enter, and Space can activate a step. Arrow keys only move\n * focus. Defaults to `false`.\n */\n interactive?: boolean;\n };\n\n/**\n * Controllable stepper primitive: current index is controlled (`index` +\n * `onIndexChange`) or uncontrolled (`defaultIndex`). Each step's outcome is\n * independent of current. {@link Stepper} is the linear wizard on top.\n * Display-only until `interactive`. Panels are optional.\n *\n * @example\n * <StepperBase index={2}>\n * <StepperBase.List>\n * <StepperBase.Step state=\"complete\">Approved</StepperBase.Step>\n * <StepperBase.Step>Scheduled</StepperBase.Step>\n * </StepperBase.List>\n * </StepperBase>\n */\nexport const StepperBase = Object.assign(\n forwardRef<HTMLDivElement, StepperBaseProps>(\n function StepperBaseInner(props, ref) {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const {\n index,\n defaultIndex = 0,\n onIndexChange,\n interactive = false,\n className,\n children,\n style,\n ...rest\n } = componentProps;\n\n const rootRef = useRef<HTMLDivElement>(null);\n const [currentIndex, setCurrentIndex] = useOptionallyControlledState({\n controlledValue: index,\n defaultValue: defaultIndex,\n onChange: onIndexChange,\n });\n const [focusIndex, setFocusIndex] = useState(index ?? defaultIndex);\n\n useEffect(() => {\n setFocusIndex(currentIndex);\n }, [currentIndex]);\n const stepsRef = useRef<Map<number, StepperBaseStepInfo>>(new Map());\n const [stepsVersion, setStepsVersion] = useState(0);\n const panelsRef = useRef<Map<string, string>>(new Map());\n const [panelsVersion, setPanelsVersion] = useState(0);\n\n const bumpSteps = useCallback(() => {\n setStepsVersion((value) => value + 1);\n }, []);\n\n const bumpPanels = useCallback(() => {\n setPanelsVersion((value) => value + 1);\n }, []);\n\n const registerStep = useCallback(\n (info: StepperBaseStepInfo) => {\n stepsRef.current.set(info.index, info);\n bumpSteps();\n return () => {\n const current = stepsRef.current.get(info.index);\n // Same-object check: a remount may already have replaced this slot.\n if (current === info) {\n stepsRef.current.delete(info.index);\n bumpSteps();\n }\n };\n },\n [bumpSteps],\n );\n\n const getStep = useCallback((stepIndex: number) => {\n return stepsRef.current.get(stepIndex);\n }, []);\n\n const getCurrentStep = useCallback(() => {\n return stepsRef.current.get(currentIndex);\n }, [currentIndex]);\n\n const requestIndexChange = useCallback(\n (nextIndex: number) => {\n if (!interactive) return;\n const target = stepsRef.current.get(nextIndex);\n if (target?.disabled) return;\n setCurrentIndex(nextIndex);\n setFocusIndex(nextIndex);\n },\n [interactive, setCurrentIndex],\n );\n\n const registerPanel = useCallback(\n (stepId: string, panelId: string) => {\n panelsRef.current.set(stepId, panelId);\n bumpPanels();\n return () => {\n // Same-id check: a remount may already have replaced this panel.\n if (panelsRef.current.get(stepId) === panelId) {\n panelsRef.current.delete(stepId);\n bumpPanels();\n }\n };\n },\n [bumpPanels],\n );\n\n const getPanelId = useCallback((stepId: string) => {\n return panelsRef.current.get(stepId);\n }, []);\n\n // Maps live in refs; version counters in the dep list force consumers\n // to re-read them.\n const value = useMemo<StepperBaseContextValue>(\n () => ({\n currentIndex,\n interactive,\n focusIndex,\n setFocusIndex,\n requestIndexChange,\n registerStep,\n getStep,\n getCurrentStep,\n getPanelId,\n registerPanel,\n }),\n [\n currentIndex,\n interactive,\n focusIndex,\n requestIndexChange,\n registerStep,\n getStep,\n getCurrentStep,\n getPanelId,\n registerPanel,\n stepsVersion,\n panelsVersion,\n ],\n );\n\n const styleCombined = { ...style, ...layoutStyles };\n\n return (\n <StepperBaseContext.Provider value={value}>\n <motion.div\n transition={{ duration: 0 }}\n layout\n className={cx(styles.stepper, className)}\n data-anv=\"stepper-base\"\n style={styleCombined}\n {...rest}\n ref={useMergeRefs([rootRef, ref])}\n >\n {children}\n </motion.div>\n </StepperBaseContext.Provider>\n );\n },\n ),\n {\n /** Progress marker for one step in the track. */\n Step: StepperBaseStep,\n\n /** Track of `StepperBase.Step` children plus the compact current label. */\n List: StepperBaseList,\n\n /** Body shown while its named step is current. */\n Panel: StepperBasePanel,\n },\n);\nStepperBase.displayName = \"StepperBase\";\n","import { type ComponentPropsWithoutRef, forwardRef, useContext } from \"react\";\nimport cx from \"classnames\";\n\nimport { StepperBaseContext } from \"./base/internal/StepperBaseContext\";\nimport { StepperStepIndexScope } from \"./base/internal/StepperStepIndexScope\";\n\nimport styles from \"./StepperList.module.scss\";\n\n/**\n * @extends ComponentPropsWithoutRef<\"div\">\n */\nexport type StepperListProps = ComponentPropsWithoutRef<\"div\">;\n\n/** Track of `Stepper.Step` children plus the compact current label. */\nexport const StepperList = forwardRef<HTMLDivElement, StepperListProps>(\n (props, ref) => {\n const { className, children, onKeyDown: _onKeyDown, ...rest } = props;\n const { getCurrentStep } = useContext(StepperBaseContext);\n const currentLabel = getCurrentStep()?.label;\n\n const tabListClassNames = cx(styles[\"stepper-list\"], className);\n\n return (\n <div\n {...rest}\n className={tabListClassNames}\n data-anv=\"stepper-list\"\n ref={ref}\n role=\"tablist\"\n >\n <div className={styles[\"stepper-steps\"]}>\n <StepperStepIndexScope>{children}</StepperStepIndexScope>\n </div>\n <span className={styles.label}>{currentLabel}</span>\n </div>\n );\n },\n);\n\nStepperList.displayName = \"StepperList\";\n","import { type Dispatch, type SetStateAction, createContext } from \"react\";\n\nexport type StepperContextProps = {\n current: number;\n setCurrent: Dispatch<SetStateAction<number>>;\n currentId: string;\n setCurrentId: Dispatch<SetStateAction<string>>;\n focus: number;\n setFocus: Dispatch<SetStateAction<number>>;\n onComplete?: () => void;\n allCompleted?: boolean;\n setAllCompleted?: Dispatch<SetStateAction<boolean>>;\n allowNavigateToPrevStep?: boolean;\n};\n\nexport const StepperContext = createContext<StepperContextProps>({\n current: 0,\n currentId: \"\",\n focus: 0,\n setFocus: () => undefined,\n setCurrent: () => undefined,\n setCurrentId: () => undefined,\n});\n","import {\n forwardRef,\n useContext,\n useLayoutEffect,\n useRef,\n type KeyboardEvent,\n type MouseEvent,\n type ComponentPropsWithoutRef,\n} from \"react\";\nimport cx from \"classnames\";\nimport Check from \"@servicetitan/hammer-icon/mdi/round/check.svg\";\n\nimport { Icon } from \"../Icon\";\nimport { useMergeRefs } from \"../../hooks\";\nimport {\n StepperBaseContext,\n useStepperStepIndex,\n} from \"./base/internal/StepperBaseContext\";\nimport { StepperContext } from \"./internal/StepperContext\";\n\nimport styles from \"./StepperStep.module.scss\";\n\n/**\n * @extends Omit<ComponentPropsWithoutRef<\"button\">, \"onClick\" | \"disabled\">\n */\nexport type StepperStepProps = Omit<\n ComponentPropsWithoutRef<\"button\">,\n \"onClick\" | \"disabled\"\n> & {\n /** Must match the paired `Stepper.Panel` `id`. */\n controls: string;\n\n /**\n * Runs first and receives this step's 0-based index. Navigation still\n * requires `allowNavigateToPrevStep` and a non-future step.\n */\n onClick?: (e: MouseEvent<HTMLButtonElement>, index?: number) => void;\n};\n\n/** Progress marker for one step in the wizard track. */\nexport const StepperStep = forwardRef<HTMLButtonElement, StepperStepProps>(\n (props, ref) => {\n const stepRef = useRef<HTMLButtonElement>(null);\n const index = useStepperStepIndex();\n const { registerStep, getStep } = useContext(StepperBaseContext);\n const {\n current,\n setCurrent,\n focus,\n setFocus,\n allCompleted,\n allowNavigateToPrevStep,\n } = useContext(StepperContext);\n const {\n onClick,\n children,\n onFocus,\n onKeyDown,\n controls,\n className,\n \"aria-label\": ariaLabel,\n ...rest\n } = props;\n\n const childrenText =\n typeof children === \"string\"\n ? children\n : typeof children === \"number\"\n ? String(children)\n : undefined;\n const label = childrenText || ariaLabel || \"\";\n\n useLayoutEffect(() => {\n if (index === undefined) return;\n return registerStep({\n index,\n id: controls,\n label,\n disabled: false,\n node: stepRef,\n });\n }, [controls, index, label, registerStep]);\n\n const selected = index === current;\n const completed = index !== undefined && index < current;\n\n const stepClassNames = cx(styles[\"stepper-step\"], className, {\n [styles[\"can-navigate\"]]: allowNavigateToPrevStep,\n [styles[\"all-completed\"]]: allCompleted,\n });\n\n const onClickHandler = (e: MouseEvent<HTMLButtonElement>) => {\n onClick?.(e, index);\n if (\n !allowNavigateToPrevStep ||\n selected ||\n index === undefined ||\n index > current\n ) {\n return;\n }\n setCurrent(index);\n setFocus(index);\n stepRef.current?.focus();\n };\n\n const onKeyDownHandler = (e: KeyboardEvent<HTMLButtonElement>) => {\n onKeyDown?.(e);\n const focusableItems: HTMLElement[] = [];\n for (let i = 0; i <= current; i += 1) {\n const node = getStep(i)?.node.current;\n if (node) focusableItems.push(node);\n }\n const prevFocus = focus - 1;\n const nextFocus = focus + 1;\n switch (e.code) {\n case \"Enter\":\n case \"Space\":\n e.preventDefault();\n setCurrent(focus);\n break;\n case \"ArrowRight\":\n e.preventDefault();\n if (nextFocus === focusableItems.length) {\n setFocus(0);\n focusableItems[0].focus();\n return;\n }\n setFocus(nextFocus);\n focusableItems[nextFocus].focus();\n break;\n case \"ArrowLeft\":\n e.preventDefault();\n if (focus === 0) {\n const lastItemIndex = focusableItems.length - 1;\n setFocus(lastItemIndex);\n focusableItems[lastItemIndex].focus();\n return;\n }\n setFocus(prevFocus);\n focusableItems[prevFocus].focus();\n break;\n }\n };\n\n return (\n <button\n type=\"button\"\n role=\"tab\"\n data-anv=\"stepper-step\"\n className={stepClassNames}\n aria-selected={selected}\n aria-controls={controls}\n aria-label={childrenText || ariaLabel}\n tabIndex={\n allowNavigateToPrevStep && index === focus && !allCompleted ? 0 : -1\n }\n data-completed={completed}\n onClick={onClickHandler}\n onKeyDown={allowNavigateToPrevStep ? onKeyDownHandler : onKeyDown}\n {...rest}\n ref={useMergeRefs([stepRef, ref])}\n >\n <span className={styles.bar} />\n <span className={styles.label}>\n <span className={styles.circle}>\n <Icon svg={Check} inherit aria-hidden />\n </span>\n\n {children}\n </span>\n </button>\n );\n },\n);\n\nStepperStep.displayName = \"StepperStep\";\n","import {\n type ComponentPropsWithoutRef,\n forwardRef,\n useContext,\n useEffect,\n} from \"react\";\nimport cx from \"classnames\";\nimport { core } from \"@servicetitan/hammer-token\";\nimport { motion } from \"motion/react\";\n\nimport type { LayoutUtilProps } from \"../../types\";\nimport { useLayoutPropsUtil } from \"../../internal/hooks\";\nimport { Overflow } from \"../Overflow\";\nimport { StepperBaseContext } from \"./base/internal/StepperBaseContext\";\nimport { StepperContext } from \"./internal/StepperContext\";\n\nimport styles from \"./StepperPanel.module.scss\";\n\n/**\n * @extends Omit<ComponentPropsWithoutRef<\"div\">, \"onAnimationStart\" | \"onDragStart\" | \"onDragEnd\" | \"onDrag\">\n * @extends LayoutUtilProps\n */\nexport type StepperPanelProps = Omit<\n ComponentPropsWithoutRef<\"div\">,\n \"onAnimationStart\" | \"onDragStart\" | \"onDragEnd\" | \"onDrag\"\n> &\n LayoutUtilProps & {\n /**\n * Must match the paired `Stepper.Step` `controls`. Only the current\n * incomplete panel renders.\n */\n id: string;\n };\n\n/** Body shown while its paired step is current and the wizard is incomplete. */\nexport const StepperPanel = forwardRef<HTMLDivElement, StepperPanelProps>(\n (props, ref) => {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const { id, className, style, children, ...rest } = componentProps;\n const { allCompleted, setCurrentId } = useContext(StepperContext);\n const { getCurrentStep } = useContext(StepperBaseContext);\n\n const currentStepId = getCurrentStep()?.id;\n const isCurrent = currentStepId === id;\n\n useEffect(() => {\n if (isCurrent && !allCompleted) {\n setCurrentId(currentStepId ?? \"\");\n }\n }, [allCompleted, isCurrent, currentStepId, setCurrentId]);\n\n const tabPanelClassNames = cx(styles[\"stepper-panel\"], className);\n const styleCombined = {\n ...style,\n ...layoutStyles,\n };\n\n if (isCurrent && !allCompleted) {\n return (\n <motion.div\n style={styleCombined}\n className={tabPanelClassNames}\n transition={{\n opacity: {\n duration:\n +core.primitive.DurationSlow.value.replace(\"ms\", \"\") / 1000,\n },\n }}\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n exit={{ opacity: 0 }}\n layout\n {...rest}\n role=\"tabpanel\"\n data-anv=\"stepper-panel\"\n id={id}\n ref={ref}\n >\n <Overflow flexGrow={1}>{children}</Overflow>\n </motion.div>\n );\n }\n return <></>;\n },\n);\n\nStepperPanel.displayName = \"StepperPanel\";\n","import {\n type ComponentPropsWithoutRef,\n forwardRef,\n useContext,\n useEffect,\n} from \"react\";\nimport cx from \"classnames\";\nimport { core } from \"@servicetitan/hammer-token\";\nimport { motion } from \"motion/react\";\n\nimport type { LayoutUtilProps } from \"../../types\";\nimport { Overflow } from \"../Overflow\";\nimport { StepperContext } from \"./internal/StepperContext\";\nimport { useLayoutPropsUtil } from \"../../internal/hooks\";\n\nimport styles from \"./StepperPanel.module.scss\";\n\n/**\n * @extends Omit<ComponentPropsWithoutRef<\"div\">, \"onAnimationStart\" | \"onDragStart\" | \"onDragEnd\" | \"onDrag\">\n * @extends LayoutUtilProps\n */\nexport type StepperFinalPanelProps = Omit<\n ComponentPropsWithoutRef<\"div\">,\n \"onAnimationStart\" | \"onDragStart\" | \"onDragEnd\" | \"onDrag\"\n> &\n LayoutUtilProps;\n\n/** Shown after the last Next completes, or when `defaultIndex` starts completed. */\nexport const StepperFinalPanel = forwardRef<\n HTMLDivElement,\n StepperFinalPanelProps\n>((props, ref) => {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const { id, className, style, children, ...rest } = componentProps;\n const { allCompleted, setCurrentId } = useContext(StepperContext);\n\n useEffect(() => {\n if (allCompleted) {\n setCurrentId(\"final-panel\");\n }\n }, [allCompleted, setCurrentId]);\n\n const tabPanelClassNames = cx(styles[\"stepper-panel\"], className);\n const styleCombined = {\n ...style,\n ...layoutStyles,\n };\n\n if (allCompleted) {\n return (\n <motion.div\n style={styleCombined}\n className={tabPanelClassNames}\n transition={{\n opacity: {\n duration:\n +core.primitive.DurationSlow.value.replace(\"ms\", \"\") / 1000,\n },\n }}\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n exit={{ opacity: 0 }}\n layout\n {...rest}\n role=\"tabpanel\"\n data-anv=\"stepper-final-panel\"\n tabIndex={0}\n ref={ref}\n >\n <Overflow>{children}</Overflow>\n </motion.div>\n );\n }\n return null;\n});\n\nStepperFinalPanel.displayName = \"StepperFinalPanel\";\n","import type { StepperBaseContextValue } from \"../base/internal/StepperBaseContext\";\n\n/** Walks 0, 1, … until `getStep` returns undefined. A hole in the map ends the count. */\nexport function countRegisteredSteps(\n getStep: StepperBaseContextValue[\"getStep\"],\n): number {\n let count = 0;\n while (getStep(count)) count += 1;\n return count;\n}\n","import { forwardRef, useContext, type MouseEvent } from \"react\";\n\nimport { Button, type ButtonProps } from \"../Button\";\nimport type { DataTrackingId } from \"../../types\";\nimport { useTrackingId } from \"../../hooks\";\nimport { StepperBaseContext } from \"./base/internal/StepperBaseContext\";\n\nimport { StepperContext } from \"./internal/StepperContext\";\nimport { countRegisteredSteps } from \"./internal/countRegisteredSteps\";\n\n/**\n * @extends Omit<ButtonProps, \"children\">\n * @extends DataTrackingId\n */\nexport type StepperNextButtonProps = Omit<ButtonProps, \"children\"> & {\n /** Label except on the last step. Defaults to `\"Next\"`. */\n nextLabel?: string;\n\n /** Label on the last step. Defaults to `\"Complete\"`. */\n completeLabel?: string;\n\n /**\n * Return `false` or a Promise that resolves to `false` to block advance.\n * `void` or `true` proceeds. Last successful click completes.\n */\n onClick?: (\n e: MouseEvent<HTMLButtonElement>,\n ) => void | boolean | Promise<boolean>;\n} & DataTrackingId;\n\n/**\n * Advances the wizard. Hidden after completion. Last step shows\n * `completeLabel` and fires `onComplete`. Appearance defaults to `primary`.\n */\nexport const StepperNextButton = forwardRef<\n HTMLButtonElement,\n StepperNextButtonProps\n>((props, ref) => {\n const {\n setAllCompleted,\n onComplete,\n setCurrent,\n setFocus,\n current,\n allCompleted,\n } = useContext(StepperContext);\n const { getStep } = useContext(StepperBaseContext);\n const stepCount = countRegisteredSteps(getStep);\n const isLastStep = stepCount > 0 && current === stepCount - 1;\n const {\n onClick,\n onFocus,\n nextLabel = \"Next\",\n completeLabel = \"Complete\",\n appearance = \"primary\",\n ...rest\n } = props;\n\n const proceedToNextStep = () => {\n if (isLastStep) {\n setAllCompleted?.(true);\n onComplete?.();\n return;\n }\n setCurrent(current + 1);\n setFocus(current + 1);\n };\n\n const onClickHandler = (e: MouseEvent<HTMLButtonElement>) => {\n const onClickResult = onClick?.(e);\n\n if (\n onClickResult !== undefined &&\n onClickResult &&\n (onClickResult as unknown) instanceof Promise\n ) {\n (onClickResult as unknown as Promise<boolean>).then((result) => {\n if (result === false) return;\n proceedToNextStep();\n });\n } else {\n if ((onClickResult as void | boolean) === false) return;\n proceedToNextStep();\n }\n };\n\n const data = {\n nextLabel: props.nextLabel,\n completeLabel: props.completeLabel,\n };\n\n const trackingId = useTrackingId({\n name: \"StepperNextButton\",\n data,\n hasOverride: !!props[\"data-tracking-id\"],\n });\n\n return allCompleted ? null : (\n <Button\n data-anv=\"stepper-next-button\"\n data-tracking-id={trackingId}\n onClick={onClickHandler}\n appearance={appearance}\n ref={ref}\n {...rest}\n >\n {isLastStep ? completeLabel : nextLabel}\n </Button>\n );\n});\n\nStepperNextButton.displayName = \"StepperNextButton\";\n","import { forwardRef, useContext, type MouseEvent } from \"react\";\n\nimport type { DataTrackingId } from \"../../types\";\nimport { Button, type ButtonProps } from \"../Button\";\nimport { useTrackingId } from \"../../hooks\";\n\nimport { StepperContext } from \"./internal/StepperContext\";\n\n/**\n * @extends Omit<ButtonProps, \"children\">\n * @extends DataTrackingId\n */\nexport type StepperPrevButtonProps = Omit<ButtonProps, \"children\"> & {\n /** Button text. Defaults to `\"Previous\"`. */\n label?: string;\n} & DataTrackingId;\n\n/**\n * Goes back one step. Hidden on the first step. From FinalPanel, restores\n * the last step instead of decrementing.\n */\nexport const StepperPrevButton = forwardRef<\n HTMLButtonElement,\n StepperPrevButtonProps\n>((props, ref) => {\n const { setCurrent, setFocus, allCompleted, setAllCompleted, current } =\n useContext(StepperContext);\n const { onClick, label = \"Previous\", onFocus, ...rest } = props;\n\n const onClickHandler = (e: MouseEvent<HTMLButtonElement>) => {\n if (allCompleted) {\n setAllCompleted?.(false);\n } else {\n setCurrent(current - 1);\n setFocus(current - 1);\n }\n\n onClick?.(e);\n };\n\n const data = {\n label: props.label,\n };\n\n const trackingId = useTrackingId({\n name: \"StepperPrevButton\",\n data,\n hasOverride: !!props[\"data-tracking-id\"],\n });\n\n return current === 0 ? null : (\n <Button\n data-anv=\"stepper-prev-button\"\n data-tracking-id={trackingId}\n onClick={onClickHandler}\n ref={ref}\n {...rest}\n >\n {label}\n </Button>\n );\n});\n\nStepperPrevButton.displayName = \"StepperPrevButton\";\n","import { useContext, useEffect, useRef } from \"react\";\n\nimport { StepperBaseContext } from \"../base/internal/StepperBaseContext\";\n\nimport { countRegisteredSteps } from \"./countRegisteredSteps\";\nimport { StepperContext } from \"./StepperContext\";\n\n/**\n * After the first step registers, `defaultIndex >=` step count marks the\n * wizard complete on the last step. Runs once.\n */\nexport function StepperWizardBootstrap({\n defaultIndex,\n}: {\n defaultIndex?: number;\n}) {\n const { getStep } = useContext(StepperBaseContext);\n const { setAllCompleted, setCurrent, setFocus } = useContext(StepperContext);\n const didBootstrap = useRef(false);\n const hasSteps = !!getStep(0);\n\n useEffect(() => {\n if (didBootstrap.current || !hasSteps) return;\n didBootstrap.current = true;\n\n const stepCount = countRegisteredSteps(getStep);\n if (defaultIndex !== undefined && defaultIndex >= stepCount) {\n const lastIndex = stepCount - 1;\n setAllCompleted?.(true);\n setCurrent(lastIndex);\n setFocus(lastIndex);\n }\n }, [defaultIndex, getStep, hasSteps, setAllCompleted, setCurrent, setFocus]);\n\n return null;\n}\n","import {\n type ComponentPropsWithoutRef,\n forwardRef,\n useEffect,\n useMemo,\n useState,\n} from \"react\";\n\nimport type { LayoutUtilProps } from \"../../types\";\nimport { StepperBase } from \"./base\";\n\nimport { StepperList } from \"./StepperList\";\nimport { StepperStep } from \"./StepperStep\";\nimport { StepperPanel } from \"./StepperPanel\";\nimport { StepperFinalPanel } from \"./StepperFinalPanel\";\nimport { StepperNextButton } from \"./StepperNextButton\";\nimport { StepperPrevButton } from \"./StepperPrevButton\";\nimport { StepperContext } from \"./internal/StepperContext\";\nimport { StepperWizardBootstrap } from \"./internal/StepperWizardBootstrap\";\n\n/**\n * @extends Omit<ComponentPropsWithoutRef<\"div\">, \"onAnimationStart\" | \"onDragStart\" | \"onDragEnd\" | \"onDrag\" | \"onChange\">\n * @extends LayoutUtilProps\n */\nexport type StepperProps = Omit<\n ComponentPropsWithoutRef<\"div\">,\n \"onAnimationStart\" | \"onDragStart\" | \"onDragEnd\" | \"onDrag\" | \"onChange\"\n> &\n LayoutUtilProps & {\n /**\n * Uncontrolled 0-based start. Defaults to `0`. When this is `>=` the\n * registered step count after steps mount, the wizard starts completed\n * on `Stepper.FinalPanel`.\n */\n defaultIndex?: number;\n\n /**\n * Lets users click and arrow-key to the current step and earlier ones.\n * Later steps stay inert. Does not affect Next/Prev. Defaults to `false`.\n */\n allowNavigateToPrevStep?: boolean;\n\n /**\n * Fires when the visible panel id or completed state changes.\n * `currentStepId` is that panel's `id`, or `\"final-panel\"`.\n * `currentStepIndex` is omitted on the final panel.\n */\n onChange?: (data: {\n currentStepId: string | \"final-panel\";\n currentStepIndex?: number;\n }) => void;\n\n /** Fires when Next succeeds on the last step. */\n onComplete?: () => void;\n };\n\n/**\n * Linear wizard built on {@link StepperBase}. Current step is uncontrolled.\n * Next/Prev drive progress; steps stay display-only unless\n * `allowNavigateToPrevStep` reopens earlier ones.\n *\n * @example\n * <Stepper allowNavigateToPrevStep>\n * <Stepper.List>\n * <Stepper.Step controls=\"step1\">One</Stepper.Step>\n * <Stepper.Step controls=\"step2\">Two</Stepper.Step>\n * </Stepper.List>\n * <Stepper.Panel id=\"step1\">First</Stepper.Panel>\n * <Stepper.Panel id=\"step2\">Second</Stepper.Panel>\n * <Stepper.FinalPanel>Done</Stepper.FinalPanel>\n * <Stepper.PrevButton />\n * <Stepper.NextButton />\n * </Stepper>\n */\nexport const Stepper = Object.assign(\n forwardRef<HTMLDivElement, StepperProps>(function StepperInner(props, ref) {\n const {\n defaultIndex,\n allowNavigateToPrevStep,\n children,\n onChange,\n onComplete,\n ...rest\n } = props;\n const [allCompleted, setAllCompleted] = useState(false);\n const [current, setCurrent] = useState<number>(defaultIndex ?? 0);\n const [currentId, setCurrentId] = useState<string>(\"\");\n const [focus, setFocus] = useState<number>(defaultIndex ?? 0);\n\n useEffect(() => {\n onChange?.({\n currentStepId: currentId,\n currentStepIndex: allCompleted ? undefined : current,\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [allCompleted, currentId, onChange]);\n\n const value = useMemo(\n () => ({\n current,\n setCurrent,\n currentId,\n setCurrentId,\n focus,\n setFocus,\n onComplete,\n allCompleted,\n setAllCompleted,\n allowNavigateToPrevStep,\n }),\n [\n current,\n currentId,\n focus,\n onComplete,\n allCompleted,\n allowNavigateToPrevStep,\n ],\n );\n\n return (\n <StepperBase\n index={current}\n interactive={false}\n data-anv=\"stepper\"\n {...rest}\n ref={ref}\n >\n <StepperContext.Provider value={value}>\n <StepperWizardBootstrap defaultIndex={defaultIndex} />\n {children}\n </StepperContext.Provider>\n </StepperBase>\n );\n }),\n {\n /** Progress marker for one step in the track. */\n Step: StepperStep,\n\n /** Track of `Stepper.Step` children plus the compact current label. */\n List: StepperList,\n\n /** Body shown while its paired step is current and the wizard is incomplete. */\n Panel: StepperPanel,\n\n /** Advances; last step uses `completeLabel` and calls `onComplete`. */\n NextButton: StepperNextButton,\n\n /** Goes back one step, or leaves the completed FinalPanel. Hidden on the first step. */\n PrevButton: StepperPrevButton,\n\n /** Shown after the last Next completes, or when `defaultIndex` starts completed. */\n FinalPanel: StepperFinalPanel,\n },\n);\nStepper.displayName = \"Stepper\";\n"],"names":["styles","Check","core.primitive.DurationSlow","value"],"mappings":"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"}