@servicetitan/anvil2 1.46.1 → 1.46.3

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 (267) hide show
  1. package/CHANGELOG.md +48 -0
  2. package/dist/{Alert-BNGvfMAV.js → Alert-CPOBY6O5.js} +2 -2
  3. package/dist/{Alert-BNGvfMAV.js.map → Alert-CPOBY6O5.js.map} +1 -1
  4. package/dist/Alert.js +1 -1
  5. package/dist/{Announcement-CoheCP1i.js → Announcement-BvzAEdx8.js} +2 -2
  6. package/dist/{Announcement-CoheCP1i.js.map → Announcement-BvzAEdx8.js.map} +1 -1
  7. package/dist/Announcement.js +1 -1
  8. package/dist/AnvilProvider-C_qRQnE6.js.map +1 -1
  9. package/dist/{Avatar-CyGjhToG.js → Avatar-3d5Kv2CF.js} +2 -2
  10. package/dist/{Avatar-CyGjhToG.js.map → Avatar-3d5Kv2CF.js.map} +1 -1
  11. package/dist/{Avatar-D07f9NH_.js → Avatar-DJ3oJNsv.js} +2 -2
  12. package/dist/{Avatar-D07f9NH_.js.map → Avatar-DJ3oJNsv.js.map} +1 -1
  13. package/dist/Avatar.js +2 -2
  14. package/dist/Badge-DCA9mfc2.js.map +1 -1
  15. package/dist/Breadcrumbs-C4_PEolS.js.map +1 -1
  16. package/dist/{Button-BxFXQ0-n.js → Button-VNQQgZ45.js} +2 -2
  17. package/dist/{Button-BxFXQ0-n.js.map → Button-VNQQgZ45.js.map} +1 -1
  18. package/dist/Button.css +48 -48
  19. package/dist/Button.js +1 -1
  20. package/dist/Button.module-C1g9rrJs.js +25 -0
  21. package/dist/Button.module-C1g9rrJs.js.map +1 -0
  22. package/dist/{ButtonCompound-BF2Q6gGX.js → ButtonCompound-BbPK-Xjj.js} +2 -2
  23. package/dist/{ButtonCompound-BF2Q6gGX.js.map → ButtonCompound-BbPK-Xjj.js.map} +1 -1
  24. package/dist/ButtonCompound.js +1 -1
  25. package/dist/{ButtonLink-CXv65WVV.js → ButtonLink-CqR1F5Wn.js} +3 -3
  26. package/dist/{ButtonLink-CXv65WVV.js.map → ButtonLink-CqR1F5Wn.js.map} +1 -1
  27. package/dist/ButtonLink.js +1 -1
  28. package/dist/{ButtonToggle-pSwg7NvT.js → ButtonToggle-PCeSG-5D.js} +3 -3
  29. package/dist/{ButtonToggle-pSwg7NvT.js.map → ButtonToggle-PCeSG-5D.js.map} +1 -1
  30. package/dist/ButtonToggle.js +1 -1
  31. package/dist/{Calendar-BQ5F2ENO.js → Calendar-Cn0fOgog.js} +366 -169
  32. package/dist/Calendar-Cn0fOgog.js.map +1 -0
  33. package/dist/Calendar.js +1 -1
  34. package/dist/Card-vTYeSkxt.js.map +1 -1
  35. package/dist/{Checkbox-Dl4KTwEJ.js → Checkbox-C5PX8wur.js} +2 -2
  36. package/dist/{Checkbox-Dl4KTwEJ.js.map → Checkbox-C5PX8wur.js.map} +1 -1
  37. package/dist/{Checkbox-DDrmVC-u.js → Checkbox-DAODkzN3.js} +2 -2
  38. package/dist/{Checkbox-DDrmVC-u.js.map → Checkbox-DAODkzN3.js.map} +1 -1
  39. package/dist/Checkbox.js +2 -2
  40. package/dist/{Chip-Bz-vlQ4D.js → Chip-DLU13qe-.js} +2 -2
  41. package/dist/{Chip-Bz-vlQ4D.js.map → Chip-DLU13qe-.js.map} +1 -1
  42. package/dist/Chip.js +1 -1
  43. package/dist/{Combobox-B9nesJuc.js → Combobox-DO8cIvRQ.js} +146 -55
  44. package/dist/Combobox-DO8cIvRQ.js.map +1 -0
  45. package/dist/Combobox.js +1 -1
  46. package/dist/{DateField-DXxPsRtf.js → DateField-qHdgwSlB.js} +36 -102
  47. package/dist/DateField-qHdgwSlB.js.map +1 -0
  48. package/dist/DateField.js +1 -1
  49. package/dist/{DateFieldRange-Xauviu1w.js → DateFieldRange-GNpWV70g.js} +57 -58
  50. package/dist/DateFieldRange-GNpWV70g.js.map +1 -0
  51. package/dist/DateFieldRange.js +1 -1
  52. package/dist/{DateFieldSingle-yLnwpVzd.js → DateFieldSingle-B9caNibj.js} +53 -55
  53. package/dist/DateFieldSingle-B9caNibj.js.map +1 -0
  54. package/dist/DateFieldSingle.js +1 -1
  55. package/dist/{DateFieldYearless-Ba7HiTiI.js → DateFieldYearless-BmeKGaDc.js} +4 -4
  56. package/dist/{DateFieldYearless-Ba7HiTiI.js.map → DateFieldYearless-BmeKGaDc.js.map} +1 -1
  57. package/dist/DateFieldYearless.js +1 -1
  58. package/dist/{DaysOfTheWeek-BYSYZySH.js → DaysOfTheWeek-DPH13VCK.js} +4 -4
  59. package/dist/{DaysOfTheWeek-BYSYZySH.js.map → DaysOfTheWeek-DPH13VCK.js.map} +1 -1
  60. package/dist/DaysOfTheWeek.js +1 -1
  61. package/dist/Details-CF8DImjw.js.map +1 -1
  62. package/dist/{Dialog-CgkrvrQu.js → Dialog-BHFLnFNQ.js} +7 -7
  63. package/dist/{Dialog-CgkrvrQu.js.map → Dialog-BHFLnFNQ.js.map} +1 -1
  64. package/dist/Dialog.js +1 -1
  65. package/dist/Divider-DJe8kLf2.js.map +1 -1
  66. package/dist/Dnd.js +1 -1
  67. package/dist/DndSort.js +2 -2
  68. package/dist/DndSort.js.map +1 -1
  69. package/dist/{Drawer-CM4ZbAro.js → Drawer-BDA7Sjj9.js} +7 -7
  70. package/dist/{Drawer-CM4ZbAro.js.map → Drawer-BDA7Sjj9.js.map} +1 -1
  71. package/dist/Drawer.js +1 -1
  72. package/dist/{DrawerContext-DboTgTmo.js → DrawerContext-D4tWTLVf.js} +27 -10
  73. package/dist/DrawerContext-D4tWTLVf.js.map +1 -0
  74. package/dist/{EditCard-WKzZ2XCz.js → EditCard-CZzL0nx7.js} +2 -2
  75. package/dist/{EditCard-WKzZ2XCz.js.map → EditCard-CZzL0nx7.js.map} +1 -1
  76. package/dist/EditCard.js +1 -1
  77. package/dist/{FieldLabel-BsbTTyom.js → FieldLabel-Bgl3iu13.js} +2 -2
  78. package/dist/{FieldLabel-BsbTTyom.js.map → FieldLabel-Bgl3iu13.js.map} +1 -1
  79. package/dist/FieldLabel.js +1 -1
  80. package/dist/FieldMessage-B7uQ8vmr.js.map +1 -1
  81. package/dist/Flex-BdQMekvA.js.map +1 -1
  82. package/dist/Grid-MGUC698u.js.map +1 -1
  83. package/dist/Helper-BkIDJqgA.js.map +1 -1
  84. package/dist/Icon-D8SPKeO4.js.map +1 -1
  85. package/dist/{InputMask-_F139qFu.js → InputMask-B13KumrK.js} +3 -3
  86. package/dist/{InputMask-_F139qFu.js.map → InputMask-B13KumrK.js.map} +1 -1
  87. package/dist/InputMask.js +1 -1
  88. package/dist/Layout-CUUb2PVr.js.map +1 -1
  89. package/dist/Link-eRsLWPaQ.js.map +1 -1
  90. package/dist/LinkButton-2lXfrVoU.js.map +1 -1
  91. package/dist/{ListView-pb3rIcze.js → ListView-C-cVQZHp.js} +3 -3
  92. package/dist/{ListView-pb3rIcze.js.map → ListView-C-cVQZHp.js.map} +1 -1
  93. package/dist/ListView.js +1 -1
  94. package/dist/{Listbox-CUhMbFm2.js → Listbox-DxGx630W.js} +2 -2
  95. package/dist/{Listbox-CUhMbFm2.js.map → Listbox-DxGx630W.js.map} +1 -1
  96. package/dist/Listbox.js +1 -1
  97. package/dist/LocalizationContext-UsmB5mnR.js.map +1 -1
  98. package/dist/LocalizationProvider-DEZyjW5d.js.map +1 -1
  99. package/dist/{Menu-DEVZz9xZ.js → Menu-DUZqzpwg.js} +8 -10
  100. package/dist/Menu-DUZqzpwg.js.map +1 -0
  101. package/dist/Menu.js +1 -1
  102. package/dist/{NumberField-CkZZrkYC.js → NumberField-DWPAy1eG.js} +11 -11
  103. package/dist/{NumberField-CkZZrkYC.js.map → NumberField-DWPAy1eG.js.map} +1 -1
  104. package/dist/NumberField.css +9 -6
  105. package/dist/NumberField.js +1 -1
  106. package/dist/Overflow.js.map +1 -1
  107. package/dist/{Page-BMDkbDcU.js → Page-BfH2mGSt.js} +11 -11
  108. package/dist/Page-BfH2mGSt.js.map +1 -0
  109. package/dist/Page.js +1 -1
  110. package/dist/{Pagination-BJsCppgW.js → Pagination-B_G9QcHf.js} +48 -24
  111. package/dist/Pagination-B_G9QcHf.js.map +1 -0
  112. package/dist/Pagination.css +6 -6
  113. package/dist/Pagination.js +1 -1
  114. package/dist/{Popover-r26xMIfm.js → Popover-v8R920kj.js} +137 -196
  115. package/dist/Popover-v8R920kj.js.map +1 -0
  116. package/dist/Popover.js +1 -1
  117. package/dist/PortalProvider-9lXkQ0xY.js.map +1 -1
  118. package/dist/{ProgressBar-DXcXZEJ2.js → ProgressBar-BWN2yv1s.js} +2 -2
  119. package/dist/{ProgressBar-DXcXZEJ2.js.map → ProgressBar-BWN2yv1s.js.map} +1 -1
  120. package/dist/ProgressBar.js +1 -1
  121. package/dist/{Radio-C89VCMXd.js → Radio-C5riI-do.js} +2 -2
  122. package/dist/{Radio-C89VCMXd.js.map → Radio-C5riI-do.js.map} +1 -1
  123. package/dist/Radio.js +2 -2
  124. package/dist/{RadioGroup-C_4buUtG.js → RadioGroup-B7O06pVu.js} +2 -2
  125. package/dist/{RadioGroup-C_4buUtG.js.map → RadioGroup-B7O06pVu.js.map} +1 -1
  126. package/dist/{SearchField-Bb0uObwG.js → SearchField-CbwGErC4.js} +2 -2
  127. package/dist/{SearchField-Bb0uObwG.js.map → SearchField-CbwGErC4.js.map} +1 -1
  128. package/dist/SearchField.js +1 -1
  129. package/dist/{SegmentedControl-CsjjV1Dz.js → SegmentedControl-CLDdes8W.js} +4 -4
  130. package/dist/{SegmentedControl-CsjjV1Dz.js.map → SegmentedControl-CLDdes8W.js.map} +1 -1
  131. package/dist/SegmentedControl.js +1 -1
  132. package/dist/{SelectCard-BTYZg9TG.js → SelectCard-Ca07K1FW.js} +3 -3
  133. package/dist/{SelectCard-BTYZg9TG.js.map → SelectCard-Ca07K1FW.js.map} +1 -1
  134. package/dist/SelectCard.js +1 -1
  135. package/dist/{SelectTrigger-f1hvRrSC.js → SelectTrigger-CaXX1SHG.js} +3 -3
  136. package/dist/{SelectTrigger-f1hvRrSC.js.map → SelectTrigger-CaXX1SHG.js.map} +1 -1
  137. package/dist/SelectTrigger.js +1 -1
  138. package/dist/{SelectTriggerBase-DP9fmRSo.js → SelectTriggerBase-C7TLCna1.js} +4 -4
  139. package/dist/{SelectTriggerBase-DP9fmRSo.js.map → SelectTriggerBase-C7TLCna1.js.map} +1 -1
  140. package/dist/{SideNav-CBAzYyML.js → SideNav-nqq5sAwz.js} +3 -3
  141. package/dist/SideNav-nqq5sAwz.js.map +1 -0
  142. package/dist/SideNav.js +1 -1
  143. package/dist/Skeleton.js.map +1 -1
  144. package/dist/Spinner-wmO8Epw0.js.map +1 -1
  145. package/dist/SrOnly-CTsYSuby.js.map +1 -1
  146. package/dist/{Stepper-D-fOH9TF.js → Stepper-DQ_Hm-AI.js} +4 -4
  147. package/dist/{Stepper-D-fOH9TF.js.map → Stepper-DQ_Hm-AI.js.map} +1 -1
  148. package/dist/Stepper.js +1 -1
  149. package/dist/Switch-C2ddZcr9.js.map +1 -1
  150. package/dist/{Tab-wNucMTgo.js → Tab-CzNx3IdF.js} +45 -37
  151. package/dist/Tab-CzNx3IdF.js.map +1 -0
  152. package/dist/Tab.js +1 -1
  153. package/dist/Text-BqvcbXyp.js.map +1 -1
  154. package/dist/{TextField-D8fow9j7.js → TextField-D9gD-34Q.js} +3 -3
  155. package/dist/{TextField-D8fow9j7.js.map → TextField-D9gD-34Q.js.map} +1 -1
  156. package/dist/{TextField-BiHxlzE3.js → TextField-uCHgwO5F.js} +2 -2
  157. package/dist/{TextField-BiHxlzE3.js.map → TextField-uCHgwO5F.js.map} +1 -1
  158. package/dist/TextField.js +1 -1
  159. package/dist/{Textarea-BdVJJlbP.js → Textarea-B2-6m291.js} +3 -3
  160. package/dist/{Textarea-BdVJJlbP.js.map → Textarea-B2-6m291.js.map} +1 -1
  161. package/dist/Textarea.js +1 -1
  162. package/dist/ThemeProvider-Be3Pvtpz.js.map +1 -1
  163. package/dist/ThemeProviderContext-l52GohYT.js.map +1 -1
  164. package/dist/{TimeField-CmbErrsZ.js → TimeField-B5Jgy-Zg.js} +363 -360
  165. package/dist/TimeField-B5Jgy-Zg.js.map +1 -0
  166. package/dist/TimeField.js +1 -1
  167. package/dist/Toast.js +2 -2
  168. package/dist/{Toaster-B7zUwJOt.js → Toaster-CHyB-Mxs.js} +3 -3
  169. package/dist/{Toaster-B7zUwJOt.js.map → Toaster-CHyB-Mxs.js.map} +1 -1
  170. package/dist/{Toaster-9cpG_tWR.js → Toaster-CyiGDKMh.js} +18 -18
  171. package/dist/{Toaster-9cpG_tWR.js.map → Toaster-CyiGDKMh.js.map} +1 -1
  172. package/dist/{Toolbar-D4zuUFhb.js → Toolbar-BXGTrR6o.js} +19 -18
  173. package/dist/Toolbar-BXGTrR6o.js.map +1 -0
  174. package/dist/Toolbar.js +1 -1
  175. package/dist/{Tooltip-BI3Xs75X.js → Tooltip-DhtVlhah.js} +9 -3
  176. package/dist/{Tooltip-BI3Xs75X.js.map → Tooltip-DhtVlhah.js.map} +1 -1
  177. package/dist/Tooltip.js +1 -1
  178. package/dist/TrackingProvider-BtSjkmpM.js.map +1 -1
  179. package/dist/beta.js +1 -1
  180. package/dist/childrenToString-Bz9MqbHb.js.map +1 -1
  181. package/dist/components/Calendar/Calendar.d.ts +5 -0
  182. package/dist/components/Calendar/CalendarNowButton.d.ts +3 -1
  183. package/dist/components/Combobox/ComboboxTypes.d.ts +10 -5
  184. package/dist/components/Combobox/internal/ComboboxGroupContext.d.ts +1 -1
  185. package/dist/components/Combobox/internal/useGroups.d.ts +2 -2
  186. package/dist/components/DndSort/internal/test-utils.d.ts +1 -1
  187. package/dist/components/Popover/Popover.d.ts +136 -1
  188. package/dist/components/Popover/PopoverTrigger.d.ts +0 -1
  189. package/dist/components/Popover/internal/PopoverContext.d.ts +5 -3
  190. package/dist/components/Popover/internal/usePopoverContext.d.ts +6 -4
  191. package/dist/components/TimeField/TimeField.d.ts +4 -1
  192. package/dist/extends-Bg2s_OKl.js.map +1 -1
  193. package/dist/getActiveElement-BcSyVE7S.js.map +1 -1
  194. package/dist/getKeyboardFocusableElements-QqcABz0D.js.map +1 -1
  195. package/dist/hooks/useMergeRefs/useMergeRefs.d.ts +11 -0
  196. package/dist/{index-V5Ez2gq_.js → index-DrM3iid4.js} +2 -2
  197. package/dist/{index-V5Ez2gq_.js.map → index-DrM3iid4.js.map} +1 -1
  198. package/dist/index-tZvMCc77.js.map +1 -1
  199. package/dist/{index.esm-D889iexm.js → index.esm-BwMVvxTV.js} +199 -144
  200. package/dist/index.esm-BwMVvxTV.js.map +1 -0
  201. package/dist/index.js +52 -52
  202. package/dist/index.js.map +1 -1
  203. package/dist/internal/hooks/useFocusWithin/useFocusWithin.d.ts +2 -1
  204. package/dist/internal/hooks/useKeyboardFocusables/useKeyboardFocusables.d.ts +0 -1
  205. package/dist/internal/hooks/useOnClickOutside/useOnClickOutside.d.ts +5 -1
  206. package/dist/makeZeroShortcutPreprocessor-CxsiGTRW.js.map +1 -1
  207. package/dist/{proxy-CreWmH-e.js → proxy-BbFHSE6L.js} +8631 -8680
  208. package/dist/proxy-BbFHSE6L.js.map +1 -0
  209. package/dist/{use-reduced-motion-znCm41qB.js → use-reduced-motion-DSpxmqyT.js} +3 -3
  210. package/dist/use-reduced-motion-DSpxmqyT.js.map +1 -0
  211. package/dist/useAccessibleColor-BYKjkGRg.js.map +1 -1
  212. package/dist/useBreakpoint-Cv5fnZxs.js.map +1 -1
  213. package/dist/{useFocusWithin-BhhgRXdZ.js → useFocusWithin-hi77jsrB.js} +6 -3
  214. package/dist/useFocusWithin-hi77jsrB.js.map +1 -0
  215. package/dist/useInfiniteCombobox-WcRgC9p6.js.map +1 -1
  216. package/dist/useIntersectionObserver-BEmMDO3P.js.map +1 -1
  217. package/dist/{useDialogTransitionStates-2NaE_noq.js → useKeyboardFocusables-ek2mYel-.js} +46 -5
  218. package/dist/useKeyboardFocusables-ek2mYel-.js.map +1 -0
  219. package/dist/useLayoutPropsUtil-DjD5IMh0.js.map +1 -1
  220. package/dist/useMergeRefs-Dfmtq9cI.js +22 -0
  221. package/dist/useMergeRefs-Dfmtq9cI.js.map +1 -0
  222. package/dist/useMergeRefs.js +1 -1
  223. package/dist/{useOnClickOutside-BHEWMLa9.js → useOnClickOutside-C5AZE_I6.js} +6 -62
  224. package/dist/useOnClickOutside-C5AZE_I6.js.map +1 -0
  225. package/dist/useOptionallyControlledState-DbDuos5L.js.map +1 -1
  226. package/dist/{usePopoverSupport-DIjjfodl.js → usePopoverSupport-CWTCDfN2.js} +2 -2
  227. package/dist/{usePopoverSupport-DIjjfodl.js.map → usePopoverSupport-CWTCDfN2.js.map} +1 -1
  228. package/dist/usePrefersColorScheme-_hT7dK7_.js.map +1 -1
  229. package/dist/usePrevious-Bvq-5auG.js.map +1 -1
  230. package/dist/useSize.js.map +1 -1
  231. package/dist/{useSwipe-CULmVQEk.js → useSwipe-Cp-CJxLU.js} +2 -2
  232. package/dist/{useSwipe-CULmVQEk.js.map → useSwipe-Cp-CJxLU.js.map} +1 -1
  233. package/dist/useSwipe.js +1 -1
  234. package/dist/useTrackingContext-DRwDL8DE.js.map +1 -1
  235. package/dist/useTrackingId.js.map +1 -1
  236. package/dist/utils-CnKBdBNm.js +50 -0
  237. package/dist/utils-CnKBdBNm.js.map +1 -0
  238. package/package.json +12 -18
  239. package/dist/Button.module-pUNSKoVC.js +0 -25
  240. package/dist/Button.module-pUNSKoVC.js.map +0 -1
  241. package/dist/Calendar-BQ5F2ENO.js.map +0 -1
  242. package/dist/Combobox-B9nesJuc.js.map +0 -1
  243. package/dist/DateField-DXxPsRtf.js.map +0 -1
  244. package/dist/DateFieldRange-Xauviu1w.js.map +0 -1
  245. package/dist/DateFieldSingle-yLnwpVzd.js.map +0 -1
  246. package/dist/DrawerContext-DboTgTmo.js.map +0 -1
  247. package/dist/Menu-DEVZz9xZ.js.map +0 -1
  248. package/dist/Page-BMDkbDcU.js.map +0 -1
  249. package/dist/Pagination-BJsCppgW.js.map +0 -1
  250. package/dist/Popover-r26xMIfm.js.map +0 -1
  251. package/dist/SideNav-CBAzYyML.js.map +0 -1
  252. package/dist/Tab-wNucMTgo.js.map +0 -1
  253. package/dist/TimeField-CmbErrsZ.js.map +0 -1
  254. package/dist/Toolbar-D4zuUFhb.js.map +0 -1
  255. package/dist/components/DateFieldSingle/internal/useDateFieldOrchestration.d.ts +0 -17
  256. package/dist/index.esm-D889iexm.js.map +0 -1
  257. package/dist/proxy-CreWmH-e.js.map +0 -1
  258. package/dist/use-reduced-motion-znCm41qB.js.map +0 -1
  259. package/dist/useDateFieldOrchestration-BNJCsRkS.js +0 -138
  260. package/dist/useDateFieldOrchestration-BNJCsRkS.js.map +0 -1
  261. package/dist/useDialogTransitionStates-2NaE_noq.js.map +0 -1
  262. package/dist/useFocusWithin-BhhgRXdZ.js.map +0 -1
  263. package/dist/useMergeRefs-Bde85AWI.js +0 -21
  264. package/dist/useMergeRefs-Bde85AWI.js.map +0 -1
  265. package/dist/useOnClickOutside-BHEWMLa9.js.map +0 -1
  266. package/dist/usePopoverCloseDelayWorkaround-BZcjPkvT.js +0 -18
  267. package/dist/usePopoverCloseDelayWorkaround-BZcjPkvT.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"Skeleton.js","sources":["../src/components/Skeleton/SkeletonCircle.tsx","../src/components/Skeleton/SkeletonPill.tsx","../src/components/Skeleton/SkeletonRectangle.tsx","../src/components/Skeleton/SkeletonText.tsx","../src/components/Skeleton/index.ts"],"sourcesContent":["import { ComponentPropsWithoutRef, forwardRef } from \"react\";\nimport cx from \"classnames\";\n\nimport styles from \"./Skeleton.module.scss\";\nimport { LayoutUtilProps } from \"../../types\";\nimport { useLayoutPropsUtil } from \"../../internal/hooks\";\n\n/**\n * Props for the SkeletonCircle component\n * @extends Omit<ComponentPropsWithoutRef<\"div\">, \"children\">\n * @extends Omit<LayoutUtilProps, \"flex\" | \"flexBasis\" | \"flexGrow\" | \"flexShrink\">\n */\nexport type SkeletonCircleProps = Omit<\n ComponentPropsWithoutRef<\"div\">,\n \"children\"\n> &\n Omit<LayoutUtilProps, \"flex\" | \"flexBasis\" | \"flexGrow\" | \"flexShrink\"> & {\n /**\n * The diameter of the circular skeleton in CSS units.\n * @default 32px\n */\n diameter?: string;\n };\n\n/**\n * SkeletonCircle component for displaying circular loading placeholders.\n *\n * Features:\n * - Circular skeleton placeholder with customizable diameter\n * - Animated pulsing effect for loading indication\n * - Accessible with proper ARIA attributes\n * - Layout utility props for positioning and spacing\n * - Customizable styling through className and style props\n * - Progress bar role for screen readers\n *\n * @example\n * <Skeleton.Circle diameter=\"40px\" />\n *\n * <Skeleton.Circle\n * diameter=\"60px\"\n * className=\"custom-skeleton\"\n * aria-label=\"Loading avatar\"\n * />\n */\nexport const SkeletonCircle = forwardRef<HTMLDivElement, SkeletonCircleProps>(\n (props, ref) => {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const {\n className,\n diameter,\n \"aria-label\": ariaLabel = \"Loading content\",\n style,\n ...rest\n } = componentProps;\n\n const SkeletonClassNames = cx(\n [styles[\"skeleton\"]],\n [styles[\"circle\"]],\n styles[\"shade\"],\n className,\n );\n\n const styleCombined = {\n ...style,\n ...layoutStyles,\n \"--diameter\": diameter,\n };\n\n return (\n <div\n {...rest}\n data-anv=\"skeleton-circle\"\n role=\"progressbar\"\n aria-busy=\"true\"\n className={SkeletonClassNames}\n style={styleCombined}\n aria-label={ariaLabel}\n ref={ref}\n />\n );\n },\n);\n\nSkeletonCircle.displayName = \"SkeletonCircle\";\n","import { ComponentPropsWithoutRef, forwardRef } from \"react\";\nimport cx from \"classnames\";\n\nimport styles from \"./Skeleton.module.scss\";\nimport { LayoutUtilProps } from \"../../types\";\nimport { useLayoutPropsUtil } from \"../../internal/hooks\";\n\n/**\n * Props for the SkeletonPill component\n * @extends Omit<ComponentPropsWithoutRef<\"div\">, \"children\">\n * @extends Omit<LayoutUtilProps, \"flex\" | \"flexBasis\" | \"flexGrow\" | \"flexShrink\">\n */\nexport type SkeletonPillProps = Omit<\n ComponentPropsWithoutRef<\"div\">,\n \"children\"\n> &\n Omit<LayoutUtilProps, \"flex\" | \"flexBasis\" | \"flexGrow\" | \"flexShrink\"> & {\n /**\n * The width of the pill skeleton in CSS units.\n */\n width?: string;\n };\n\n/**\n * SkeletonPill component for displaying pill-shaped loading placeholders.\n *\n * Features:\n * - Pill-shaped skeleton placeholder with customizable width\n * - Animated pulsing effect for loading indication\n * - Accessible with proper ARIA attributes\n * - Layout utility props for positioning and spacing\n * - Customizable styling through className and style props\n * - Progress bar role for screen readers\n * - Large border radius for pill appearance\n * - Fixed height for consistent styling\n *\n * @example\n * <Skeleton.Pill width=\"120px\" />\n *\n * <Skeleton.Pill\n * width=\"8rem\"\n * className=\"custom-skeleton\"\n * aria-label=\"Loading tag\"\n * />\n */\nexport const SkeletonPill = forwardRef<HTMLDivElement, SkeletonPillProps>(\n (props, ref) => {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const {\n className,\n width,\n \"aria-label\": ariaLabel = \"Loading content\",\n style,\n ...rest\n } = componentProps;\n\n const SkeletonClassNames = cx(\n [styles[\"skeleton\"]],\n [styles[\"pill\"]],\n styles[\"shade\"],\n className,\n );\n\n const styleCombined = {\n ...style,\n ...layoutStyles,\n \"--width\": width,\n };\n\n return (\n <div\n {...rest}\n data-anv=\"skeleton-pill\"\n role=\"progressbar\"\n aria-busy=\"true\"\n className={SkeletonClassNames}\n style={styleCombined}\n aria-label={ariaLabel}\n ref={ref}\n />\n );\n },\n);\n\nSkeletonPill.displayName = \"SkeletonPill\";\n","import { ComponentPropsWithoutRef, forwardRef } from \"react\";\nimport cx from \"classnames\";\n\nimport styles from \"./Skeleton.module.scss\";\nimport { LayoutUtilProps } from \"../../types\";\nimport { useLayoutPropsUtil } from \"../../internal/hooks\";\n\n/**\n * Props for the SkeletonRectangle component\n * @extends Omit<ComponentPropsWithoutRef<\"div\">, \"children\">\n * @extends Omit<LayoutUtilProps, \"flex\" | \"flexBasis\" | \"flexGrow\" | \"flexShrink\">\n */\nexport type SkeletonRectangleProps = Omit<\n ComponentPropsWithoutRef<\"div\">,\n \"children\"\n> &\n Omit<LayoutUtilProps, \"flex\" | \"flexBasis\" | \"flexGrow\" | \"flexShrink\"> & {\n /**\n * The height of the rectangular skeleton in CSS units.\n * @default 56px\n */\n height?: string;\n };\n\n/**\n * SkeletonRectangle component for displaying rectangular loading placeholders.\n *\n * Features:\n * - Rectangular skeleton placeholder with customizable height\n * - Animated pulsing effect for loading indication\n * - Accessible with proper ARIA attributes\n * - Layout utility props for positioning and spacing\n * - Customizable styling through className and style props\n * - Progress bar role for screen readers\n * - Medium border radius for consistent styling\n *\n * @example\n * <Skeleton.Rectangle height=\"100px\" />\n *\n * <Skeleton.Rectangle\n * height=\"2rem\"\n * className=\"custom-skeleton\"\n * aria-label=\"Loading image\"\n * />\n */\nexport const SkeletonRectangle = forwardRef<\n HTMLDivElement,\n SkeletonRectangleProps\n>((props, ref) => {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const {\n className,\n height,\n \"aria-label\": ariaLabel = \"Loading content\",\n style,\n ...rest\n } = componentProps;\n\n const SkeletonClassNames = cx(\n [styles[\"skeleton\"]],\n [styles[\"rectangle\"]],\n styles[\"shade\"],\n className,\n );\n\n const styleCombined = {\n ...style,\n ...layoutStyles,\n \"--height\": height,\n };\n\n return (\n <div\n {...rest}\n data-anv=\"skeleton-rectangle\"\n role=\"progressbar\"\n aria-busy=\"true\"\n className={SkeletonClassNames}\n style={styleCombined}\n aria-label={ariaLabel}\n ref={ref}\n />\n );\n});\n\nSkeletonRectangle.displayName = \"SkeletonRectangle\";\n","import { ComponentPropsWithoutRef, forwardRef } from \"react\";\nimport cx from \"classnames\";\n\nimport styles from \"./Skeleton.module.scss\";\nimport { LayoutUtilProps } from \"../../types\";\nimport { useLayoutPropsUtil } from \"../../internal/hooks\";\n\n/**\n * Props for the SkeletonText component\n * @extends Omit<ComponentPropsWithoutRef<\"div\">, \"children\">\n * @extends Omit<LayoutUtilProps, \"flex\" | \"flexBasis\" | \"flexGrow\" | \"flexShrink\">\n */\nexport type SkeletonTextProps = Omit<\n ComponentPropsWithoutRef<\"div\">,\n \"children\"\n> &\n Omit<LayoutUtilProps, \"flex\" | \"flexBasis\" | \"flexGrow\" | \"flexShrink\"> &\n (\n | {\n /**\n * Text variant for body text skeleton.\n * @default body\n */\n variant?: \"body\";\n /**\n * Number of text lines to display.\n * @default 1\n */\n rows?: number;\n }\n | {\n /**\n * Text variant for headline text skeleton.\n */\n variant?: \"headline\";\n /**\n * Rows prop is not available for headline variant.\n */\n rows?: never;\n }\n );\n\n/**\n * SkeletonText component for displaying text loading placeholders.\n *\n * Features:\n * - Text skeleton placeholder with body and headline variants\n * - Configurable number of rows for body variant\n * - Animated pulsing effect for loading indication\n * - Accessible with proper ARIA attributes\n * - Layout utility props for positioning and spacing\n * - Customizable styling through className and style props\n * - Progress bar role for screen readers\n * - Different line heights for body vs headline variants\n * - Last line shorter for body variant to simulate natural text\n *\n * @example\n * <Skeleton.Text variant=\"body\" rows={3} />\n *\n * <Skeleton.Text\n * variant=\"headline\"\n * className=\"custom-skeleton\"\n * aria-label=\"Loading title\"\n * />\n */\nexport const SkeletonText = forwardRef<HTMLDivElement, SkeletonTextProps>(\n (props, ref) => {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const {\n className,\n \"aria-label\": ariaLabel = \"Loading content\",\n variant = \"body\",\n style,\n ...rest\n } = componentProps;\n\n const SkeletonClassNames = cx(\n [styles[\"skeleton\"]],\n [styles[\"text\"]],\n [styles[variant]],\n className,\n );\n\n const styleCombined = {\n ...style,\n ...layoutStyles,\n };\n\n const ShaderClassName = cx(styles[\"line\"], styles[\"shade\"]);\n\n return (\n <div\n {...rest}\n data-anv=\"skeleton-text\"\n role=\"progressbar\"\n aria-busy=\"true\"\n className={SkeletonClassNames}\n style={styleCombined}\n aria-label={ariaLabel}\n ref={ref}\n >\n {\"rows\" in rest ? (\n Array.from({ length: rest.rows ?? 1 }, (_, i) => i).map((i) => (\n <div key={`line-${i}`} className={ShaderClassName} />\n ))\n ) : (\n <div className={ShaderClassName} />\n )}\n </div>\n );\n },\n);\n\nSkeletonText.displayName = \"SkeletonText\";\n","import { SkeletonCircle } from \"./SkeletonCircle\";\nimport { SkeletonPill } from \"./SkeletonPill\";\nimport { SkeletonRectangle } from \"./SkeletonRectangle\";\nimport { SkeletonText } from \"./SkeletonText\";\n\nexport * from \"./SkeletonCircle\";\nexport * from \"./SkeletonPill\";\nexport * from \"./SkeletonRectangle\";\nexport * from \"./SkeletonText\";\n\nexport const Skeleton = Object.assign(\n {},\n {\n Circle: SkeletonCircle,\n Pill: SkeletonPill,\n Rectangle: SkeletonRectangle,\n Text: SkeletonText,\n },\n);\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Skeleton.js","sources":["../src/components/Skeleton/SkeletonCircle.tsx","../src/components/Skeleton/SkeletonPill.tsx","../src/components/Skeleton/SkeletonRectangle.tsx","../src/components/Skeleton/SkeletonText.tsx","../src/components/Skeleton/index.ts"],"sourcesContent":["import { ComponentPropsWithoutRef, forwardRef } from \"react\";\nimport cx from \"classnames\";\n\nimport styles from \"./Skeleton.module.scss\";\nimport { LayoutUtilProps } from \"../../types\";\nimport { useLayoutPropsUtil } from \"../../internal/hooks\";\n\n/**\n * Props for the SkeletonCircle component\n * @extends Omit<ComponentPropsWithoutRef<\"div\">, \"children\">\n * @extends Omit<LayoutUtilProps, \"flex\" | \"flexBasis\" | \"flexGrow\" | \"flexShrink\">\n */\nexport type SkeletonCircleProps = Omit<\n ComponentPropsWithoutRef<\"div\">,\n \"children\"\n> &\n Omit<LayoutUtilProps, \"flex\" | \"flexBasis\" | \"flexGrow\" | \"flexShrink\"> & {\n /**\n * The diameter of the circular skeleton in CSS units.\n * @default 32px\n */\n diameter?: string;\n };\n\n/**\n * SkeletonCircle component for displaying circular loading placeholders.\n *\n * Features:\n * - Circular skeleton placeholder with customizable diameter\n * - Animated pulsing effect for loading indication\n * - Accessible with proper ARIA attributes\n * - Layout utility props for positioning and spacing\n * - Customizable styling through className and style props\n * - Progress bar role for screen readers\n *\n * @example\n * <Skeleton.Circle diameter=\"40px\" />\n *\n * <Skeleton.Circle\n * diameter=\"60px\"\n * className=\"custom-skeleton\"\n * aria-label=\"Loading avatar\"\n * />\n */\nexport const SkeletonCircle = forwardRef<HTMLDivElement, SkeletonCircleProps>(\n (props, ref) => {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const {\n className,\n diameter,\n \"aria-label\": ariaLabel = \"Loading content\",\n style,\n ...rest\n } = componentProps;\n\n const SkeletonClassNames = cx(\n [styles[\"skeleton\"]],\n [styles[\"circle\"]],\n styles[\"shade\"],\n className,\n );\n\n const styleCombined = {\n ...style,\n ...layoutStyles,\n \"--diameter\": diameter,\n };\n\n return (\n <div\n {...rest}\n data-anv=\"skeleton-circle\"\n role=\"progressbar\"\n aria-busy=\"true\"\n className={SkeletonClassNames}\n style={styleCombined}\n aria-label={ariaLabel}\n ref={ref}\n />\n );\n },\n);\n\nSkeletonCircle.displayName = \"SkeletonCircle\";\n","import { ComponentPropsWithoutRef, forwardRef } from \"react\";\nimport cx from \"classnames\";\n\nimport styles from \"./Skeleton.module.scss\";\nimport { LayoutUtilProps } from \"../../types\";\nimport { useLayoutPropsUtil } from \"../../internal/hooks\";\n\n/**\n * Props for the SkeletonPill component\n * @extends Omit<ComponentPropsWithoutRef<\"div\">, \"children\">\n * @extends Omit<LayoutUtilProps, \"flex\" | \"flexBasis\" | \"flexGrow\" | \"flexShrink\">\n */\nexport type SkeletonPillProps = Omit<\n ComponentPropsWithoutRef<\"div\">,\n \"children\"\n> &\n Omit<LayoutUtilProps, \"flex\" | \"flexBasis\" | \"flexGrow\" | \"flexShrink\"> & {\n /**\n * The width of the pill skeleton in CSS units.\n */\n width?: string;\n };\n\n/**\n * SkeletonPill component for displaying pill-shaped loading placeholders.\n *\n * Features:\n * - Pill-shaped skeleton placeholder with customizable width\n * - Animated pulsing effect for loading indication\n * - Accessible with proper ARIA attributes\n * - Layout utility props for positioning and spacing\n * - Customizable styling through className and style props\n * - Progress bar role for screen readers\n * - Large border radius for pill appearance\n * - Fixed height for consistent styling\n *\n * @example\n * <Skeleton.Pill width=\"120px\" />\n *\n * <Skeleton.Pill\n * width=\"8rem\"\n * className=\"custom-skeleton\"\n * aria-label=\"Loading tag\"\n * />\n */\nexport const SkeletonPill = forwardRef<HTMLDivElement, SkeletonPillProps>(\n (props, ref) => {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const {\n className,\n width,\n \"aria-label\": ariaLabel = \"Loading content\",\n style,\n ...rest\n } = componentProps;\n\n const SkeletonClassNames = cx(\n [styles[\"skeleton\"]],\n [styles[\"pill\"]],\n styles[\"shade\"],\n className,\n );\n\n const styleCombined = {\n ...style,\n ...layoutStyles,\n \"--width\": width,\n };\n\n return (\n <div\n {...rest}\n data-anv=\"skeleton-pill\"\n role=\"progressbar\"\n aria-busy=\"true\"\n className={SkeletonClassNames}\n style={styleCombined}\n aria-label={ariaLabel}\n ref={ref}\n />\n );\n },\n);\n\nSkeletonPill.displayName = \"SkeletonPill\";\n","import { ComponentPropsWithoutRef, forwardRef } from \"react\";\nimport cx from \"classnames\";\n\nimport styles from \"./Skeleton.module.scss\";\nimport { LayoutUtilProps } from \"../../types\";\nimport { useLayoutPropsUtil } from \"../../internal/hooks\";\n\n/**\n * Props for the SkeletonRectangle component\n * @extends Omit<ComponentPropsWithoutRef<\"div\">, \"children\">\n * @extends Omit<LayoutUtilProps, \"flex\" | \"flexBasis\" | \"flexGrow\" | \"flexShrink\">\n */\nexport type SkeletonRectangleProps = Omit<\n ComponentPropsWithoutRef<\"div\">,\n \"children\"\n> &\n Omit<LayoutUtilProps, \"flex\" | \"flexBasis\" | \"flexGrow\" | \"flexShrink\"> & {\n /**\n * The height of the rectangular skeleton in CSS units.\n * @default 56px\n */\n height?: string;\n };\n\n/**\n * SkeletonRectangle component for displaying rectangular loading placeholders.\n *\n * Features:\n * - Rectangular skeleton placeholder with customizable height\n * - Animated pulsing effect for loading indication\n * - Accessible with proper ARIA attributes\n * - Layout utility props for positioning and spacing\n * - Customizable styling through className and style props\n * - Progress bar role for screen readers\n * - Medium border radius for consistent styling\n *\n * @example\n * <Skeleton.Rectangle height=\"100px\" />\n *\n * <Skeleton.Rectangle\n * height=\"2rem\"\n * className=\"custom-skeleton\"\n * aria-label=\"Loading image\"\n * />\n */\nexport const SkeletonRectangle = forwardRef<\n HTMLDivElement,\n SkeletonRectangleProps\n>((props, ref) => {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const {\n className,\n height,\n \"aria-label\": ariaLabel = \"Loading content\",\n style,\n ...rest\n } = componentProps;\n\n const SkeletonClassNames = cx(\n [styles[\"skeleton\"]],\n [styles[\"rectangle\"]],\n styles[\"shade\"],\n className,\n );\n\n const styleCombined = {\n ...style,\n ...layoutStyles,\n \"--height\": height,\n };\n\n return (\n <div\n {...rest}\n data-anv=\"skeleton-rectangle\"\n role=\"progressbar\"\n aria-busy=\"true\"\n className={SkeletonClassNames}\n style={styleCombined}\n aria-label={ariaLabel}\n ref={ref}\n />\n );\n});\n\nSkeletonRectangle.displayName = \"SkeletonRectangle\";\n","import { ComponentPropsWithoutRef, forwardRef } from \"react\";\nimport cx from \"classnames\";\n\nimport styles from \"./Skeleton.module.scss\";\nimport { LayoutUtilProps } from \"../../types\";\nimport { useLayoutPropsUtil } from \"../../internal/hooks\";\n\n/**\n * Props for the SkeletonText component\n * @extends Omit<ComponentPropsWithoutRef<\"div\">, \"children\">\n * @extends Omit<LayoutUtilProps, \"flex\" | \"flexBasis\" | \"flexGrow\" | \"flexShrink\">\n */\nexport type SkeletonTextProps = Omit<\n ComponentPropsWithoutRef<\"div\">,\n \"children\"\n> &\n Omit<LayoutUtilProps, \"flex\" | \"flexBasis\" | \"flexGrow\" | \"flexShrink\"> &\n (\n | {\n /**\n * Text variant for body text skeleton.\n * @default body\n */\n variant?: \"body\";\n /**\n * Number of text lines to display.\n * @default 1\n */\n rows?: number;\n }\n | {\n /**\n * Text variant for headline text skeleton.\n */\n variant?: \"headline\";\n /**\n * Rows prop is not available for headline variant.\n */\n rows?: never;\n }\n );\n\n/**\n * SkeletonText component for displaying text loading placeholders.\n *\n * Features:\n * - Text skeleton placeholder with body and headline variants\n * - Configurable number of rows for body variant\n * - Animated pulsing effect for loading indication\n * - Accessible with proper ARIA attributes\n * - Layout utility props for positioning and spacing\n * - Customizable styling through className and style props\n * - Progress bar role for screen readers\n * - Different line heights for body vs headline variants\n * - Last line shorter for body variant to simulate natural text\n *\n * @example\n * <Skeleton.Text variant=\"body\" rows={3} />\n *\n * <Skeleton.Text\n * variant=\"headline\"\n * className=\"custom-skeleton\"\n * aria-label=\"Loading title\"\n * />\n */\nexport const SkeletonText = forwardRef<HTMLDivElement, SkeletonTextProps>(\n (props, ref) => {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const {\n className,\n \"aria-label\": ariaLabel = \"Loading content\",\n variant = \"body\",\n style,\n ...rest\n } = componentProps;\n\n const SkeletonClassNames = cx(\n [styles[\"skeleton\"]],\n [styles[\"text\"]],\n [styles[variant]],\n className,\n );\n\n const styleCombined = {\n ...style,\n ...layoutStyles,\n };\n\n const ShaderClassName = cx(styles[\"line\"], styles[\"shade\"]);\n\n return (\n <div\n {...rest}\n data-anv=\"skeleton-text\"\n role=\"progressbar\"\n aria-busy=\"true\"\n className={SkeletonClassNames}\n style={styleCombined}\n aria-label={ariaLabel}\n ref={ref}\n >\n {\"rows\" in rest ? (\n Array.from({ length: rest.rows ?? 1 }, (_, i) => i).map((i) => (\n <div key={`line-${i}`} className={ShaderClassName} />\n ))\n ) : (\n <div className={ShaderClassName} />\n )}\n </div>\n );\n },\n);\n\nSkeletonText.displayName = \"SkeletonText\";\n","import { SkeletonCircle } from \"./SkeletonCircle\";\nimport { SkeletonPill } from \"./SkeletonPill\";\nimport { SkeletonRectangle } from \"./SkeletonRectangle\";\nimport { SkeletonText } from \"./SkeletonText\";\n\nexport * from \"./SkeletonCircle\";\nexport * from \"./SkeletonPill\";\nexport * from \"./SkeletonRectangle\";\nexport * from \"./SkeletonText\";\n\nexport const Skeleton = Object.assign(\n {},\n {\n Circle: SkeletonCircle,\n Pill: SkeletonPill,\n Rectangle: SkeletonRectangle,\n Text: SkeletonText,\n },\n);\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Spinner-wmO8Epw0.js","sources":["../src/components/Spinner/Spinner.tsx"],"sourcesContent":["import { ComponentPropsWithoutRef, forwardRef } from \"react\";\nimport styles from \"./Spinner.module.scss\";\nimport cx from \"classnames\";\n\n/**\n * Props for the Spinner component\n * @extends ComponentPropsWithoutRef<\"span\">\n */\nexport type SpinnerProps = ComponentPropsWithoutRef<\"span\"> & {\n /**\n * When true, the spinner inherits the current text color instead of using the default primary background color\n */\n inherit?: boolean;\n};\n\n/**\n * A loading spinner component that displays an animated circular indicator.\n *\n * The Spinner component provides a visual indication that content is loading or processing.\n * It renders as a circular animation that continuously rotates to show activity.\n *\n * Features:\n * - Animated circular loading indicator\n * - Configurable color inheritance\n * - Accessible with proper ARIA attributes\n * - Customizable styling through className and style props\n * - Forwarded ref support\n *\n * @example\n * <Spinner />\n *\n * <Spinner inherit />\n */\nexport const Spinner = forwardRef<HTMLSpanElement, SpinnerProps>(\n (props, ref) => {\n const { className, inherit, ...rest } = props;\n const classNames = cx(styles[\"Spinner\"], className, {\n [styles[\"Inherit\"]]: inherit,\n });\n return (\n <span data-anv=\"spinner\" className={classNames} ref={ref}>\n <span className={styles[\"circle\"]} {...rest} />\n </span>\n );\n },\n);\n\nSpinner.displayName = \"Spinner\";\n"],"names":[],"mappings":";;;;;;;;;;;;AAiCO,MAAM,OAAU,GAAA,UAAA;AAAA,EACrB,CAAC,OAAO,GAAQ,KAAA;AACd,IAAA,MAAM,EAAE,SAAA,EAAW,OAAS,EAAA,GAAG,MAAS,GAAA,KAAA;AACxC,IAAA,MAAM,UAAa,GAAA,EAAA,CAAG,MAAO,CAAA,SAAS,GAAG,SAAW,EAAA;AAAA,MAClD,CAAC,MAAA,CAAO,SAAS,CAAC,GAAG;AAAA,KACtB,CAAA;AACD,IAAA,uBACG,GAAA,CAAA,MAAA,EAAA,EAAK,UAAS,EAAA,SAAA,EAAU,WAAW,UAAY,EAAA,GAAA,EAC9C,QAAC,kBAAA,GAAA,CAAA,MAAA,EAAA,EAAK,WAAW,MAAO,CAAA,QAAQ,CAAI,EAAA,GAAG,MAAM,CAC/C,EAAA,CAAA;AAAA;AAGN;AAEA,OAAA,CAAQ,WAAc,GAAA,SAAA;;;;"}
1
+ {"version":3,"file":"Spinner-wmO8Epw0.js","sources":["../src/components/Spinner/Spinner.tsx"],"sourcesContent":["import { ComponentPropsWithoutRef, forwardRef } from \"react\";\nimport styles from \"./Spinner.module.scss\";\nimport cx from \"classnames\";\n\n/**\n * Props for the Spinner component\n * @extends ComponentPropsWithoutRef<\"span\">\n */\nexport type SpinnerProps = ComponentPropsWithoutRef<\"span\"> & {\n /**\n * When true, the spinner inherits the current text color instead of using the default primary background color\n */\n inherit?: boolean;\n};\n\n/**\n * A loading spinner component that displays an animated circular indicator.\n *\n * The Spinner component provides a visual indication that content is loading or processing.\n * It renders as a circular animation that continuously rotates to show activity.\n *\n * Features:\n * - Animated circular loading indicator\n * - Configurable color inheritance\n * - Accessible with proper ARIA attributes\n * - Customizable styling through className and style props\n * - Forwarded ref support\n *\n * @example\n * <Spinner />\n *\n * <Spinner inherit />\n */\nexport const Spinner = forwardRef<HTMLSpanElement, SpinnerProps>(\n (props, ref) => {\n const { className, inherit, ...rest } = props;\n const classNames = cx(styles[\"Spinner\"], className, {\n [styles[\"Inherit\"]]: inherit,\n });\n return (\n <span data-anv=\"spinner\" className={classNames} ref={ref}>\n <span className={styles[\"circle\"]} {...rest} />\n </span>\n );\n },\n);\n\nSpinner.displayName = \"Spinner\";\n"],"names":[],"mappings":";;;;;;;;;;;;AAiCO,MAAM,OAAA,GAAU,UAAA;AAAA,EACrB,CAAC,OAAO,GAAA,KAAQ;AACd,IAAA,MAAM,EAAE,SAAA,EAAW,OAAA,EAAS,GAAG,MAAK,GAAI,KAAA;AACxC,IAAA,MAAM,UAAA,GAAa,EAAA,CAAG,MAAA,CAAO,SAAS,GAAG,SAAA,EAAW;AAAA,MAClD,CAAC,MAAA,CAAO,SAAS,CAAC,GAAG;AAAA,KACtB,CAAA;AACD,IAAA,uBACE,GAAA,CAAC,MAAA,EAAA,EAAK,UAAA,EAAS,SAAA,EAAU,WAAW,UAAA,EAAY,GAAA,EAC9C,QAAA,kBAAA,GAAA,CAAC,MAAA,EAAA,EAAK,WAAW,MAAA,CAAO,QAAQ,CAAA,EAAI,GAAG,MAAM,CAAA,EAC/C,CAAA;AAAA,EAEJ;AACF;AAEA,OAAA,CAAQ,WAAA,GAAc,SAAA;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"SrOnly-CTsYSuby.js","sources":["../src/components/SrOnly/SrOnly.tsx"],"sourcesContent":["import { ComponentPropsWithoutRef } from \"react\";\nimport styles from \"./SrOnly.module.scss\";\nimport cx from \"classnames\";\n\n/**\n * Screen reader only component for providing accessible content that is visually hidden.\n *\n * Features:\n * - Visually hidden content that remains accessible to screen readers\n * - Preserves all standard span element functionality and attributes\n * - Maintains proper semantic structure\n * - Essential for accessibility compliance\n *\n * @example\n * <div>\n * <span aria-hidden=\"true\">$100</span>\n * <SrOnly>One hundred dollars</SrOnly>\n * </div>\n */\nexport const SrOnly = (props: ComponentPropsWithoutRef<\"span\">) => {\n const { className, ...rest } = props;\n const classNames = cx(styles[\"sr-only\"], className);\n return <span data-anv=\"sr-only\" className={classNames} {...rest} />;\n};\n"],"names":[],"mappings":";;;;;;;AAmBa,MAAA,MAAA,GAAS,CAAC,KAA4C,KAAA;AACjE,EAAA,MAAM,EAAE,SAAA,EAAW,GAAG,IAAA,EAAS,GAAA,KAAA;AAC/B,EAAA,MAAM,UAAa,GAAA,EAAA,CAAG,MAAO,CAAA,SAAS,GAAG,SAAS,CAAA;AAClD,EAAA,2BAAQ,MAAK,EAAA,EAAA,UAAA,EAAS,WAAU,SAAW,EAAA,UAAA,EAAa,GAAG,IAAM,EAAA,CAAA;AACnE;;;;"}
1
+ {"version":3,"file":"SrOnly-CTsYSuby.js","sources":["../src/components/SrOnly/SrOnly.tsx"],"sourcesContent":["import { ComponentPropsWithoutRef } from \"react\";\nimport styles from \"./SrOnly.module.scss\";\nimport cx from \"classnames\";\n\n/**\n * Screen reader only component for providing accessible content that is visually hidden.\n *\n * Features:\n * - Visually hidden content that remains accessible to screen readers\n * - Preserves all standard span element functionality and attributes\n * - Maintains proper semantic structure\n * - Essential for accessibility compliance\n *\n * @example\n * <div>\n * <span aria-hidden=\"true\">$100</span>\n * <SrOnly>One hundred dollars</SrOnly>\n * </div>\n */\nexport const SrOnly = (props: ComponentPropsWithoutRef<\"span\">) => {\n const { className, ...rest } = props;\n const classNames = cx(styles[\"sr-only\"], className);\n return <span data-anv=\"sr-only\" className={classNames} {...rest} />;\n};\n"],"names":[],"mappings":";;;;;;;AAmBO,MAAM,MAAA,GAAS,CAAC,KAAA,KAA4C;AACjE,EAAA,MAAM,EAAE,SAAA,EAAW,GAAG,IAAA,EAAK,GAAI,KAAA;AAC/B,EAAA,MAAM,UAAA,GAAa,EAAA,CAAG,MAAA,CAAO,SAAS,GAAG,SAAS,CAAA;AAClD,EAAA,2BAAQ,MAAA,EAAA,EAAK,UAAA,EAAS,WAAU,SAAA,EAAW,UAAA,EAAa,GAAG,IAAA,EAAM,CAAA;AACnE;;;;"}
@@ -3,12 +3,12 @@ import { createContext, forwardRef, useContext, useRef, useState, useEffect, use
3
3
  import { c as cx } from './index-tZvMCc77.js';
4
4
  import { S as SvgCheck } from './check-Cf67OWrZ.js';
5
5
  import { I as Icon } from './Icon-D8SPKeO4.js';
6
- import { u as useMergeRefs } from './useMergeRefs-Bde85AWI.js';
6
+ import { u as useMergeRefs } from './useMergeRefs-Dfmtq9cI.js';
7
7
  import { e as DurationSlow } from './primitive-BoyEHaOo.js';
8
8
  import { Overflow } from './Overflow.js';
9
- import { m as motion } from './proxy-CreWmH-e.js';
10
9
  import { u as useLayoutPropsUtil } from './useLayoutPropsUtil-DjD5IMh0.js';
11
- import { B as Button } from './Button-BxFXQ0-n.js';
10
+ import { m as motion } from './proxy-BbFHSE6L.js';
11
+ import { B as Button } from './Button-VNQQgZ45.js';
12
12
  import { useTrackingId } from './useTrackingId.js';
13
13
 
14
14
  import './Stepper.css';const StepperContext = createContext({
@@ -615,4 +615,4 @@ const Stepper = Object.assign(StepperElement, {
615
615
  });
616
616
 
617
617
  export { Stepper as S, StepperFinalPanel as a, StepperList as b, StepperNextButton as c, StepperPanel as d, StepperPrevButton as e, StepperStep as f };
618
- //# sourceMappingURL=Stepper-D-fOH9TF.js.map
618
+ //# sourceMappingURL=Stepper-DQ_Hm-AI.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Stepper-D-fOH9TF.js","sources":["../src/components/Stepper/internal/StepperContext.ts","../src/components/Stepper/StepperList.tsx","../src/components/Stepper/StepperStep.tsx","../src/components/Stepper/StepperPanel.tsx","../src/components/Stepper/StepperFinalPanel.tsx","../src/components/Stepper/StepperNextButton.tsx","../src/components/Stepper/StepperPrevButton.tsx","../src/components/Stepper/Stepper.tsx"],"sourcesContent":["import { Dispatch, 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 items?: NodeListOf<HTMLElement>;\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 { ComponentPropsWithoutRef, forwardRef, useContext } from \"react\";\nimport cx from \"classnames\";\n\nimport { StepperContext } from \"./internal/StepperContext\";\n\nimport styles from \"./StepperList.module.scss\";\n\n/**\n * Props for the StepperList component\n * @extends ComponentPropsWithoutRef<\"div\">\n */\nexport type StepperListProps = ComponentPropsWithoutRef<\"div\">;\n\n/**\n * Container component for organizing and displaying stepper steps.\n *\n * Features:\n * - Groups multiple stepper steps together\n * - Displays current step label\n * - Responsive design with mobile-friendly layout\n * - Accessible with proper ARIA roles\n * - Automatic step organization\n * - Visual step indicators\n * - Context-based current step display\n * - Flexible layout with CSS Grid/Flexbox\n * - Container queries for responsive behavior\n *\n * @example\n * <Stepper.List>\n * <Stepper.Step controls=\"step1\">Step 1</Stepper.Step>\n * <Stepper.Step controls=\"step2\">Step 2</Stepper.Step>\n * <Stepper.Step controls=\"step3\">Step 3</Stepper.Step>\n * </Stepper.List>\n */\nexport const StepperList = forwardRef<HTMLDivElement, StepperListProps>(\n (props, ref) => {\n const { className, children, onKeyDown, ...rest } = props;\n const { current, items } = useContext(StepperContext);\n\n const tabListClassNames = cx(styles[\"stepper-list\"], className);\n const currentLabel =\n items?.[current].querySelectorAll(\"span\")[1].textContent;\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\"]}>{children}</div>\n <span className={styles.label}>{currentLabel}</span>\n </div>\n );\n },\n);\n\nStepperList.displayName = \"StepperList\";\n","import {\n forwardRef,\n useContext,\n MouseEvent,\n useRef,\n ComponentPropsWithoutRef,\n useEffect,\n useState,\n KeyboardEvent,\n} from \"react\";\nimport cx from \"classnames\";\nimport Check from \"@servicetitan/hammer-icon/mdi/round/check.svg\";\n\nimport { Icon } from \"../Icon\";\nimport { StepperContext } from \"./internal/StepperContext\";\nimport { useMergeRefs } from \"../../hooks\";\n\nimport styles from \"./StepperStep.module.scss\";\n\n/**\n * Props for the StepperStep component\n * @extends ComponentPropsWithoutRef<\"button\">\n */\nexport type StepperStepProps = Omit<\n ComponentPropsWithoutRef<\"button\">,\n \"onClick\" | \"disabled\"\n> & {\n /**\n * ID of the panel that this step is controlling.\n * Must match the id prop of the corresponding Stepper.Panel.\n */\n controls: string;\n\n /**\n * Called when the step is clicked.\n * @param e Mouse event object\n * @param index Index of the step in the stepper\n */\n onClick?: (e: MouseEvent<HTMLButtonElement>, index?: number) => void;\n};\n\n/**\n * Individual step component for the Stepper.\n *\n * Features:\n * - Visual progress indicator with animated bar\n * - Check icon for completed steps\n * - Keyboard navigation support\n * - Accessible with proper ARIA attributes\n * - Click handling for step navigation\n * - Visual states for current, completed, and future steps\n * - Responsive design with mobile-friendly layout\n * - Focus management for keyboard users\n * - Custom styling support\n *\n * @example\n * <Stepper.Step controls=\"step1\">\n * Personal Information\n * </Stepper.Step>\n *\n * @example\n * <Stepper.Step\n * controls=\"step2\"\n * onClick={(e, index) => console.log(`Clicked step ${index}`)}\n * >\n * Contact Details\n * </Stepper.Step>\n */\nexport const StepperStep = forwardRef<HTMLButtonElement, StepperStepProps>(\n (props, ref) => {\n const stepRef = useRef<HTMLButtonElement>(null);\n const {\n current,\n items,\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 ...rest\n } = props;\n\n const index = useRef<number>();\n const [selected, setSelected] = useState(false);\n const [completed, setCompleted] = useState(\n // Below is to be used for custom overriding\n // completed state for a step\n // Check Stepper.stories.tsx#103 for the use case\n stepRef.current?.getAttribute(\"data-completed\") === \"true\"\n ? true\n : undefined,\n );\n\n useEffect(() => {\n if (!items) return;\n index.current = Array.prototype.indexOf.call(items, stepRef.current);\n\n setCompleted(index.current < current);\n setSelected(index.current === current);\n }, [current, items]);\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.current);\n if (\n !allowNavigateToPrevStep ||\n selected ||\n index.current === undefined ||\n !items ||\n index.current > current\n ) {\n return;\n }\n setCurrent(index.current ?? 0);\n setFocus(index.current);\n items[index.current].focus();\n };\n\n const onKeyDownHandler = (e: KeyboardEvent<HTMLButtonElement>) => {\n onKeyDown?.(e);\n const focusableItems = Array.prototype.filter.call(\n items,\n (item) =>\n item.getAttribute(\"data-completed\") === \"true\" ||\n item.getAttribute(\"aria-selected\") === \"true\",\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 focusableItems[0].setAttribute(\"tabindex\", \"0\");\n stepRef.current?.setAttribute(\"tabindex\", \"-1\");\n return;\n }\n stepRef.current?.setAttribute(\"tabindex\", \"-1\");\n setFocus(nextFocus);\n focusableItems[nextFocus].focus();\n focusableItems[nextFocus].setAttribute(\"tabindex\", \"0\");\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 focusableItems[lastItemIndex].setAttribute(\"tabindex\", \"0\");\n stepRef.current?.setAttribute(\"tabindex\", \"-1\");\n return;\n }\n stepRef.current?.setAttribute(\"tabindex\", \"-1\");\n setFocus(prevFocus);\n focusableItems[prevFocus].focus();\n focusableItems[prevFocus].setAttribute(\"tabindex\", \"0\");\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 tabIndex={allowNavigateToPrevStep && selected ? 0 : -1}\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 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 { LayoutUtilProps } from \"../../types\";\nimport { useLayoutPropsUtil } from \"../../internal/hooks\";\nimport { Overflow } from \"../Overflow\";\nimport { StepperContext } from \"./internal/StepperContext\";\n\nimport styles from \"./StepperPanel.module.scss\";\n\n/**\n * Props for the StepperPanel component\n * @extends ComponentPropsWithoutRef<\"div\">\n * @extends LayoutUtilProps\n */\nexport type StepperPanelProps = Omit<\n ComponentPropsWithoutRef<\"div\">,\n \"onAnimationStart\" | \"onDragStart\" | \"onDragEnd\" | \"onDrag\"\n> &\n LayoutUtilProps & {\n /**\n * Unique identifier for the panel.\n * Must match the controls prop of the corresponding Stepper.Step.\n */\n id: string;\n };\n\n/**\n * Content panel component for displaying step content in the Stepper.\n *\n * Features:\n * - Displays content for the current step only\n * - Smooth fade-in/fade-out animations\n * - Automatic overflow handling with scroll support\n * - Accessible with proper ARIA roles\n * - Layout utilities for positioning and spacing\n * - Motion animations for smooth transitions\n * - Focus management for keyboard navigation\n * - Responsive design with flexible layout\n * - Context-based visibility control\n *\n * @example\n * <Stepper.Panel id=\"step1\">\n * <h2>Personal Information</h2>\n * <form>\n * <label htmlFor=\"name\">Name:</label>\n * <input id=\"name\" type=\"text\" />\n * </form>\n * </Stepper.Panel>\n *\n * @example\n * <Stepper.Panel id=\"step2\" className=\"custom-panel\">\n * <div className=\"step-content\">\n * <h2>Contact Details</h2>\n * <p>Please provide your contact information.</p>\n * </div>\n * </Stepper.Panel>\n */\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 { current, items, allCompleted, setCurrentId } =\n useContext(StepperContext);\n\n const currentId = items?.[current].getAttribute(\"aria-controls\");\n const isCurrent = currentId === id;\n\n useEffect(() => {\n if (isCurrent && !allCompleted) {\n setCurrentId(currentId ?? \"\");\n }\n }, [allCompleted, isCurrent, currentId, 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 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 { 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 * Props for the StepperFinalPanel component\n * @extends ComponentPropsWithoutRef<\"div\">\n * @extends LayoutUtilProps\n */\nexport type StepperFinalPanelProps = Omit<\n ComponentPropsWithoutRef<\"div\">,\n \"onAnimationStart\" | \"onDragStart\" | \"onDragEnd\" | \"onDrag\"\n> &\n LayoutUtilProps;\n\n/**\n * Final panel component displayed when all stepper steps are completed.\n *\n * Features:\n * - Displays only when all steps are completed\n * - Smooth fade-in animation on completion\n * - Automatic overflow handling with scroll support\n * - Accessible with proper ARIA roles\n * - Layout utilities for positioning and spacing\n * - Motion animations for smooth transitions\n * - Focus management for keyboard navigation\n * - Responsive design with flexible layout\n * - Context-based visibility control\n *\n * @example\n * <Stepper.FinalPanel>\n * <h2>Congratulations!</h2>\n * <p>You have successfully completed all steps.</p>\n * <Button onClick={handleSubmit}>Submit</Button>\n * </Stepper.FinalPanel>\n */\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 { forwardRef, useContext, MouseEvent } from \"react\";\n\nimport { Button, ButtonProps } from \"../Button\";\nimport { DataTrackingId } from \"../../types\";\nimport { useTrackingId } from \"../../hooks\";\n\nimport { StepperContext } from \"./internal/StepperContext\";\n\n/**\n * Props for the StepperNextButton component\n * @extends ButtonProps\n */\nexport type StepperNextButtonProps = Omit<ButtonProps, \"children\"> & {\n /**\n * Label for the next button.\n * @default \"Next\"\n */\n nextLabel?: string;\n\n /**\n * Label for the complete button (shown on the last step).\n * @default \"Complete\"\n */\n completeLabel?: string;\n\n /**\n * Called when the \"Next\" button is clicked.\n * @param e MouseEvent<HTMLButtonElement>\n * @returns If the function returns `false`, or a Promise that resolves to `false`, the next step will not be executed.\n */\n onClick?: (\n e: MouseEvent<HTMLButtonElement>,\n ) => void | boolean | Promise<boolean>;\n} & DataTrackingId;\n\n/**\n * Next button component for navigating to the next step in the Stepper.\n *\n * Features:\n * - Automatically advances to the next step\n * - Changes label to \"Complete\" on the final step\n * - Supports async validation with Promise return\n * - Prevents navigation when validation fails\n * - Hides when all steps are completed\n * - Accessible with proper button semantics\n * - Customizable appearance and styling\n * - Integration with stepper context\n * - Automatic completion handling\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <Stepper.NextButton\n * nextLabel=\"Continue\"\n * completeLabel=\"Finish\"\n * />\n *\n * @example\n * <Stepper.NextButton\n * onClick={async (e) => {\n * const isValid = await validateForm();\n * return isValid;\n * }}\n * appearance=\"primary\"\n * />\n */\nexport const StepperNextButton = forwardRef<\n HTMLButtonElement,\n StepperNextButtonProps\n>((props, ref) => {\n const {\n setAllCompleted,\n onComplete,\n setCurrent,\n setFocus,\n items,\n current,\n allCompleted,\n } = useContext(StepperContext);\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 (items && current === items.length - 1) {\n items.forEach((item) => item.setAttribute(\"tabindex\", \"-1\"));\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 // check if onClick returns a Promise\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\n // otherwise, onClick returns a boolean or void\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 {items && current === items.length - 1 ? completeLabel : nextLabel}\n </Button>\n );\n});\n\nStepperNextButton.displayName = \"StepperNextButton\";\n","import { forwardRef, useContext, MouseEvent } from \"react\";\n\nimport { DataTrackingId } from \"../../types\";\nimport { Button, ButtonProps } from \"../Button\";\nimport { useTrackingId } from \"../../hooks\";\n\nimport { StepperContext } from \"./internal/StepperContext\";\n\n/**\n * Props for the StepperPrevButton component\n * @extends ButtonProps\n */\nexport type StepperPrevButtonProps = Omit<ButtonProps, \"children\"> & {\n /**\n * Label for the previous button.\n * @default \"Previous\"\n */\n label?: string;\n} & DataTrackingId;\n\n/**\n * Previous button component for navigating to the previous step in the Stepper.\n *\n * Features:\n * - Navigates to the previous step when available\n * - Hides when on the first step\n * - Restores navigation when returning from completion\n * - Accessible with proper button semantics\n * - Customizable label and styling\n * - Integration with stepper context\n * - Automatic focus management\n * - Support for completion state handling\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <Stepper.PrevButton label=\"Go Back\" />\n *\n * @example\n * <Stepper.PrevButton\n * label=\"Previous Step\"\n * appearance=\"secondary\"\n * onClick={(e) => console.log('Going back')}\n * />\n */\nexport const StepperPrevButton = forwardRef<\n HTMLButtonElement,\n StepperPrevButtonProps\n>((props, ref) => {\n const {\n setCurrent,\n setFocus,\n allCompleted,\n setAllCompleted,\n items,\n current,\n allowNavigateToPrevStep,\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 if (allowNavigateToPrevStep) {\n items?.[current].setAttribute(\"tabindex\", \"0\");\n }\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 {\n ComponentPropsWithoutRef,\n forwardRef,\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 { LayoutUtilProps } from \"../../types\";\nimport { useLayoutPropsUtil } from \"../../internal/hooks\";\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\";\n\nimport styles from \"./Stepper.module.scss\";\n\n/**\n * Props for the Stepper component\n * @extends ComponentPropsWithoutRef<\"div\">\n * @extends LayoutUtilProps\n */\nexport type StepperProps = Omit<\n ComponentPropsWithoutRef<\"div\">,\n \"onAnimationStart\" | \"onDragStart\" | \"onDragEnd\" | \"onDrag\" | \"onChange\"\n> &\n LayoutUtilProps & {\n /**\n * Default step to start on.\n * @default undefined\n */\n defaultIndex?: number;\n\n /**\n * Allows users to navigate to previous steps.\n * @default undefined\n */\n allowNavigateToPrevStep?: boolean;\n\n /**\n * Returns current step data when step changes.\n * @param data Object containing currentStepId and currentStepIndex\n * @param data.currentStepId ID given to Stepper.Panel, or \"final-panel\"\n * @param data.currentStepIndex Index of current step, or undefined on final panel\n */\n onChange?: (data: {\n currentStepId: string | \"final-panel\";\n currentStepIndex?: number;\n }) => void;\n\n /**\n * Called when all steps are completed.\n */\n onComplete?: () => void;\n };\n\nconst StepperElement = forwardRef<HTMLDivElement, StepperProps>(\n (props, ref) => {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const {\n defaultIndex,\n className,\n allowNavigateToPrevStep,\n children,\n onChange,\n onComplete,\n style,\n ...rest\n } = componentProps;\n const tabRef = useRef<HTMLDivElement>(null);\n const [items, setItems] = useState<NodeListOf<HTMLElement>>();\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 const stepperClassNames = cx(styles[\"stepper\"], className);\n\n useEffect(() => {\n setItems(tabRef.current?.querySelectorAll(\"[role=tab]:not([disabled])\"));\n }, []);\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 styleCombined = { ...style, ...layoutStyles };\n\n const value = useMemo(\n () => ({\n current,\n setCurrent,\n currentId,\n setCurrentId,\n focus,\n setFocus,\n onComplete,\n items,\n allCompleted,\n setAllCompleted,\n allowNavigateToPrevStep,\n }),\n [\n current,\n currentId,\n focus,\n onComplete,\n items,\n allCompleted,\n setAllCompleted,\n allowNavigateToPrevStep,\n ],\n );\n\n return (\n <StepperContext.Provider value={value}>\n <motion.div\n transition={{ duration: 0 }}\n layout\n className={stepperClassNames}\n data-anv=\"stepper\"\n style={styleCombined}\n {...rest}\n ref={useMergeRefs([tabRef, ref])}\n >\n {children}\n </motion.div>\n </StepperContext.Provider>\n );\n },\n);\n\nStepperElement.displayName = \"Stepper\";\n\n/**\n * Stepper component for creating multi-step workflows and forms.\n *\n * Features:\n * - Multi-step navigation with visual progress indicators\n * - Keyboard navigation support with arrow keys\n * - Optional navigation to previous steps\n * - Smooth animations and transitions\n * - Accessible with proper ARIA roles and attributes\n * - Customizable step labels and content\n * - Completion state handling\n * - Layout utilities for positioning and spacing\n * - Motion animations for step transitions\n * - Context-based state management\n *\n * @example\n * <Stepper defaultIndex={0} allowNavigateToPrevStep>\n * <Stepper.List>\n * <Stepper.Step controls=\"step1\">Step 1</Stepper.Step>\n * <Stepper.Step controls=\"step2\">Step 2</Stepper.Step>\n * <Stepper.Step controls=\"step3\">Step 3</Stepper.Step>\n * </Stepper.List>\n *\n * <Stepper.Panel id=\"step1\">\n * <h2>Step 1 Content</h2>\n * <p>This is the first step content.</p>\n * </Stepper.Panel>\n *\n * <Stepper.Panel id=\"step2\">\n * <h2>Step 2 Content</h2>\n * <p>This is the second step content.</p>\n * </Stepper.Panel>\n *\n * <Stepper.Panel id=\"step3\">\n * <h2>Step 3 Content</h2>\n * <p>This is the final step content.</p>\n * </Stepper.Panel>\n *\n * <Stepper.FinalPanel>\n * <h2>Completed!</h2>\n * <p>All steps have been completed successfully.</p>\n * </Stepper.FinalPanel>\n *\n * <Stepper.PrevButton />\n * <Stepper.NextButton />\n * </Stepper>\n */\nexport const Stepper = Object.assign(StepperElement, {\n /**\n * Individual step component for the Stepper.\n *\n * Features:\n * - Visual progress indicator with animated bar\n * - Check icon for completed steps\n * - Keyboard navigation support\n * - Accessible with proper ARIA attributes\n * - Click handling for step navigation\n * - Visual states for current, completed, and future steps\n * - Responsive design with mobile-friendly layout\n * - Focus management for keyboard users\n * - Custom styling support\n *\n * @example\n * <Stepper.Step controls=\"step1\">\n * Personal Information\n * </Stepper.Step>\n *\n * @example\n * <Stepper.Step\n * controls=\"step2\"\n * onClick={(e, index) => console.log(`Clicked step ${index}`)}\n * >\n * Contact Details\n * </Stepper.Step>\n */\n Step: StepperStep,\n\n /**\n * Container component for organizing and displaying stepper steps.\n *\n * Features:\n * - Groups multiple stepper steps together\n * - Displays current step label\n * - Responsive design with mobile-friendly layout\n * - Accessible with proper ARIA roles\n * - Automatic step organization\n * - Visual step indicators\n * - Context-based current step display\n * - Flexible layout with CSS Grid/Flexbox\n * - Container queries for responsive behavior\n *\n * @example\n * <Stepper.List>\n * <Stepper.Step controls=\"step1\">Step 1</Stepper.Step>\n * <Stepper.Step controls=\"step2\">Step 2</Stepper.Step>\n * <Stepper.Step controls=\"step3\">Step 3</Stepper.Step>\n * </Stepper.List>\n */\n List: StepperList,\n\n /**\n * Content panel component for displaying step content in the Stepper.\n *\n * Features:\n * - Displays content for the current step only\n * - Smooth fade-in/fade-out animations\n * - Automatic overflow handling with scroll support\n * - Accessible with proper ARIA roles\n * - Layout utilities for positioning and spacing\n * - Motion animations for smooth transitions\n * - Focus management for keyboard navigation\n * - Responsive design with flexible layout\n * - Context-based visibility control\n *\n * @example\n * <Stepper.Panel id=\"step1\">\n * <h2>Personal Information</h2>\n * <form>\n * <label htmlFor=\"name\">Name:</label>\n * <input id=\"name\" type=\"text\" />\n * </form>\n * </Stepper.Panel>\n */\n Panel: StepperPanel,\n\n /**\n * Next button component for navigating to the next step in the Stepper.\n *\n * Features:\n * - Automatically advances to the next step\n * - Changes label to \"Complete\" on the final step\n * - Supports async validation with Promise return\n * - Prevents navigation when validation fails\n * - Hides when all steps are completed\n * - Accessible with proper button semantics\n * - Customizable appearance and styling\n * - Integration with stepper context\n * - Automatic completion handling\n *\n * @example\n * <Stepper.NextButton\n * nextLabel=\"Continue\"\n * completeLabel=\"Finish\"\n * />\n *\n * @example\n * <Stepper.NextButton\n * onClick={async (e) => {\n * const isValid = await validateForm();\n * return isValid;\n * }}\n * appearance=\"primary\"\n * />\n */\n NextButton: StepperNextButton,\n\n /**\n * Previous button component for navigating to the previous step in the Stepper.\n *\n * Features:\n * - Navigates to the previous step when available\n * - Hides when on the first step\n * - Restores navigation when returning from completion\n * - Accessible with proper button semantics\n * - Customizable label and styling\n * - Integration with stepper context\n * - Automatic focus management\n * - Support for completion state handling\n *\n * @example\n * <Stepper.PrevButton label=\"Go Back\" />\n *\n * @example\n * <Stepper.PrevButton\n * label=\"Previous Step\"\n * appearance=\"secondary\"\n * onClick={(e) => console.log('Going back')}\n * />\n */\n PrevButton: StepperPrevButton,\n\n /**\n * Final panel component displayed when all stepper steps are completed.\n *\n * Features:\n * - Displays only when all steps are completed\n * - Smooth fade-in animation on completion\n * - Automatic overflow handling with scroll support\n * - Accessible with proper ARIA roles\n * - Layout utilities for positioning and spacing\n * - Motion animations for smooth transitions\n * - Focus management for keyboard navigation\n * - Responsive design with flexible layout\n * - Context-based visibility control\n *\n * @example\n * <Stepper.FinalPanel>\n * <h2>Congratulations!</h2>\n * <p>You have successfully completed all steps.</p>\n * <Button onClick={handleSubmit}>Submit</Button>\n * </Stepper.FinalPanel>\n */\n FinalPanel: StepperFinalPanel,\n});\n"],"names":["styles","Check","core.primitive.DurationSlow"],"mappings":"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"}
1
+ {"version":3,"file":"Stepper-DQ_Hm-AI.js","sources":["../src/components/Stepper/internal/StepperContext.ts","../src/components/Stepper/StepperList.tsx","../src/components/Stepper/StepperStep.tsx","../src/components/Stepper/StepperPanel.tsx","../src/components/Stepper/StepperFinalPanel.tsx","../src/components/Stepper/StepperNextButton.tsx","../src/components/Stepper/StepperPrevButton.tsx","../src/components/Stepper/Stepper.tsx"],"sourcesContent":["import { Dispatch, 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 items?: NodeListOf<HTMLElement>;\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 { ComponentPropsWithoutRef, forwardRef, useContext } from \"react\";\nimport cx from \"classnames\";\n\nimport { StepperContext } from \"./internal/StepperContext\";\n\nimport styles from \"./StepperList.module.scss\";\n\n/**\n * Props for the StepperList component\n * @extends ComponentPropsWithoutRef<\"div\">\n */\nexport type StepperListProps = ComponentPropsWithoutRef<\"div\">;\n\n/**\n * Container component for organizing and displaying stepper steps.\n *\n * Features:\n * - Groups multiple stepper steps together\n * - Displays current step label\n * - Responsive design with mobile-friendly layout\n * - Accessible with proper ARIA roles\n * - Automatic step organization\n * - Visual step indicators\n * - Context-based current step display\n * - Flexible layout with CSS Grid/Flexbox\n * - Container queries for responsive behavior\n *\n * @example\n * <Stepper.List>\n * <Stepper.Step controls=\"step1\">Step 1</Stepper.Step>\n * <Stepper.Step controls=\"step2\">Step 2</Stepper.Step>\n * <Stepper.Step controls=\"step3\">Step 3</Stepper.Step>\n * </Stepper.List>\n */\nexport const StepperList = forwardRef<HTMLDivElement, StepperListProps>(\n (props, ref) => {\n const { className, children, onKeyDown, ...rest } = props;\n const { current, items } = useContext(StepperContext);\n\n const tabListClassNames = cx(styles[\"stepper-list\"], className);\n const currentLabel =\n items?.[current].querySelectorAll(\"span\")[1].textContent;\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\"]}>{children}</div>\n <span className={styles.label}>{currentLabel}</span>\n </div>\n );\n },\n);\n\nStepperList.displayName = \"StepperList\";\n","import {\n forwardRef,\n useContext,\n MouseEvent,\n useRef,\n ComponentPropsWithoutRef,\n useEffect,\n useState,\n KeyboardEvent,\n} from \"react\";\nimport cx from \"classnames\";\nimport Check from \"@servicetitan/hammer-icon/mdi/round/check.svg\";\n\nimport { Icon } from \"../Icon\";\nimport { StepperContext } from \"./internal/StepperContext\";\nimport { useMergeRefs } from \"../../hooks\";\n\nimport styles from \"./StepperStep.module.scss\";\n\n/**\n * Props for the StepperStep component\n * @extends ComponentPropsWithoutRef<\"button\">\n */\nexport type StepperStepProps = Omit<\n ComponentPropsWithoutRef<\"button\">,\n \"onClick\" | \"disabled\"\n> & {\n /**\n * ID of the panel that this step is controlling.\n * Must match the id prop of the corresponding Stepper.Panel.\n */\n controls: string;\n\n /**\n * Called when the step is clicked.\n * @param e Mouse event object\n * @param index Index of the step in the stepper\n */\n onClick?: (e: MouseEvent<HTMLButtonElement>, index?: number) => void;\n};\n\n/**\n * Individual step component for the Stepper.\n *\n * Features:\n * - Visual progress indicator with animated bar\n * - Check icon for completed steps\n * - Keyboard navigation support\n * - Accessible with proper ARIA attributes\n * - Click handling for step navigation\n * - Visual states for current, completed, and future steps\n * - Responsive design with mobile-friendly layout\n * - Focus management for keyboard users\n * - Custom styling support\n *\n * @example\n * <Stepper.Step controls=\"step1\">\n * Personal Information\n * </Stepper.Step>\n *\n * @example\n * <Stepper.Step\n * controls=\"step2\"\n * onClick={(e, index) => console.log(`Clicked step ${index}`)}\n * >\n * Contact Details\n * </Stepper.Step>\n */\nexport const StepperStep = forwardRef<HTMLButtonElement, StepperStepProps>(\n (props, ref) => {\n const stepRef = useRef<HTMLButtonElement>(null);\n const {\n current,\n items,\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 ...rest\n } = props;\n\n const index = useRef<number>();\n const [selected, setSelected] = useState(false);\n const [completed, setCompleted] = useState(\n // Below is to be used for custom overriding\n // completed state for a step\n // Check Stepper.stories.tsx#103 for the use case\n stepRef.current?.getAttribute(\"data-completed\") === \"true\"\n ? true\n : undefined,\n );\n\n useEffect(() => {\n if (!items) return;\n index.current = Array.prototype.indexOf.call(items, stepRef.current);\n\n setCompleted(index.current < current);\n setSelected(index.current === current);\n }, [current, items]);\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.current);\n if (\n !allowNavigateToPrevStep ||\n selected ||\n index.current === undefined ||\n !items ||\n index.current > current\n ) {\n return;\n }\n setCurrent(index.current ?? 0);\n setFocus(index.current);\n items[index.current].focus();\n };\n\n const onKeyDownHandler = (e: KeyboardEvent<HTMLButtonElement>) => {\n onKeyDown?.(e);\n const focusableItems = Array.prototype.filter.call(\n items,\n (item) =>\n item.getAttribute(\"data-completed\") === \"true\" ||\n item.getAttribute(\"aria-selected\") === \"true\",\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 focusableItems[0].setAttribute(\"tabindex\", \"0\");\n stepRef.current?.setAttribute(\"tabindex\", \"-1\");\n return;\n }\n stepRef.current?.setAttribute(\"tabindex\", \"-1\");\n setFocus(nextFocus);\n focusableItems[nextFocus].focus();\n focusableItems[nextFocus].setAttribute(\"tabindex\", \"0\");\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 focusableItems[lastItemIndex].setAttribute(\"tabindex\", \"0\");\n stepRef.current?.setAttribute(\"tabindex\", \"-1\");\n return;\n }\n stepRef.current?.setAttribute(\"tabindex\", \"-1\");\n setFocus(prevFocus);\n focusableItems[prevFocus].focus();\n focusableItems[prevFocus].setAttribute(\"tabindex\", \"0\");\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 tabIndex={allowNavigateToPrevStep && selected ? 0 : -1}\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 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 { LayoutUtilProps } from \"../../types\";\nimport { useLayoutPropsUtil } from \"../../internal/hooks\";\nimport { Overflow } from \"../Overflow\";\nimport { StepperContext } from \"./internal/StepperContext\";\n\nimport styles from \"./StepperPanel.module.scss\";\n\n/**\n * Props for the StepperPanel component\n * @extends ComponentPropsWithoutRef<\"div\">\n * @extends LayoutUtilProps\n */\nexport type StepperPanelProps = Omit<\n ComponentPropsWithoutRef<\"div\">,\n \"onAnimationStart\" | \"onDragStart\" | \"onDragEnd\" | \"onDrag\"\n> &\n LayoutUtilProps & {\n /**\n * Unique identifier for the panel.\n * Must match the controls prop of the corresponding Stepper.Step.\n */\n id: string;\n };\n\n/**\n * Content panel component for displaying step content in the Stepper.\n *\n * Features:\n * - Displays content for the current step only\n * - Smooth fade-in/fade-out animations\n * - Automatic overflow handling with scroll support\n * - Accessible with proper ARIA roles\n * - Layout utilities for positioning and spacing\n * - Motion animations for smooth transitions\n * - Focus management for keyboard navigation\n * - Responsive design with flexible layout\n * - Context-based visibility control\n *\n * @example\n * <Stepper.Panel id=\"step1\">\n * <h2>Personal Information</h2>\n * <form>\n * <label htmlFor=\"name\">Name:</label>\n * <input id=\"name\" type=\"text\" />\n * </form>\n * </Stepper.Panel>\n *\n * @example\n * <Stepper.Panel id=\"step2\" className=\"custom-panel\">\n * <div className=\"step-content\">\n * <h2>Contact Details</h2>\n * <p>Please provide your contact information.</p>\n * </div>\n * </Stepper.Panel>\n */\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 { current, items, allCompleted, setCurrentId } =\n useContext(StepperContext);\n\n const currentId = items?.[current].getAttribute(\"aria-controls\");\n const isCurrent = currentId === id;\n\n useEffect(() => {\n if (isCurrent && !allCompleted) {\n setCurrentId(currentId ?? \"\");\n }\n }, [allCompleted, isCurrent, currentId, 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 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 { 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 * Props for the StepperFinalPanel component\n * @extends ComponentPropsWithoutRef<\"div\">\n * @extends LayoutUtilProps\n */\nexport type StepperFinalPanelProps = Omit<\n ComponentPropsWithoutRef<\"div\">,\n \"onAnimationStart\" | \"onDragStart\" | \"onDragEnd\" | \"onDrag\"\n> &\n LayoutUtilProps;\n\n/**\n * Final panel component displayed when all stepper steps are completed.\n *\n * Features:\n * - Displays only when all steps are completed\n * - Smooth fade-in animation on completion\n * - Automatic overflow handling with scroll support\n * - Accessible with proper ARIA roles\n * - Layout utilities for positioning and spacing\n * - Motion animations for smooth transitions\n * - Focus management for keyboard navigation\n * - Responsive design with flexible layout\n * - Context-based visibility control\n *\n * @example\n * <Stepper.FinalPanel>\n * <h2>Congratulations!</h2>\n * <p>You have successfully completed all steps.</p>\n * <Button onClick={handleSubmit}>Submit</Button>\n * </Stepper.FinalPanel>\n */\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 { forwardRef, useContext, MouseEvent } from \"react\";\n\nimport { Button, ButtonProps } from \"../Button\";\nimport { DataTrackingId } from \"../../types\";\nimport { useTrackingId } from \"../../hooks\";\n\nimport { StepperContext } from \"./internal/StepperContext\";\n\n/**\n * Props for the StepperNextButton component\n * @extends ButtonProps\n */\nexport type StepperNextButtonProps = Omit<ButtonProps, \"children\"> & {\n /**\n * Label for the next button.\n * @default \"Next\"\n */\n nextLabel?: string;\n\n /**\n * Label for the complete button (shown on the last step).\n * @default \"Complete\"\n */\n completeLabel?: string;\n\n /**\n * Called when the \"Next\" button is clicked.\n * @param e MouseEvent<HTMLButtonElement>\n * @returns If the function returns `false`, or a Promise that resolves to `false`, the next step will not be executed.\n */\n onClick?: (\n e: MouseEvent<HTMLButtonElement>,\n ) => void | boolean | Promise<boolean>;\n} & DataTrackingId;\n\n/**\n * Next button component for navigating to the next step in the Stepper.\n *\n * Features:\n * - Automatically advances to the next step\n * - Changes label to \"Complete\" on the final step\n * - Supports async validation with Promise return\n * - Prevents navigation when validation fails\n * - Hides when all steps are completed\n * - Accessible with proper button semantics\n * - Customizable appearance and styling\n * - Integration with stepper context\n * - Automatic completion handling\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <Stepper.NextButton\n * nextLabel=\"Continue\"\n * completeLabel=\"Finish\"\n * />\n *\n * @example\n * <Stepper.NextButton\n * onClick={async (e) => {\n * const isValid = await validateForm();\n * return isValid;\n * }}\n * appearance=\"primary\"\n * />\n */\nexport const StepperNextButton = forwardRef<\n HTMLButtonElement,\n StepperNextButtonProps\n>((props, ref) => {\n const {\n setAllCompleted,\n onComplete,\n setCurrent,\n setFocus,\n items,\n current,\n allCompleted,\n } = useContext(StepperContext);\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 (items && current === items.length - 1) {\n items.forEach((item) => item.setAttribute(\"tabindex\", \"-1\"));\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 // check if onClick returns a Promise\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\n // otherwise, onClick returns a boolean or void\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 {items && current === items.length - 1 ? completeLabel : nextLabel}\n </Button>\n );\n});\n\nStepperNextButton.displayName = \"StepperNextButton\";\n","import { forwardRef, useContext, MouseEvent } from \"react\";\n\nimport { DataTrackingId } from \"../../types\";\nimport { Button, ButtonProps } from \"../Button\";\nimport { useTrackingId } from \"../../hooks\";\n\nimport { StepperContext } from \"./internal/StepperContext\";\n\n/**\n * Props for the StepperPrevButton component\n * @extends ButtonProps\n */\nexport type StepperPrevButtonProps = Omit<ButtonProps, \"children\"> & {\n /**\n * Label for the previous button.\n * @default \"Previous\"\n */\n label?: string;\n} & DataTrackingId;\n\n/**\n * Previous button component for navigating to the previous step in the Stepper.\n *\n * Features:\n * - Navigates to the previous step when available\n * - Hides when on the first step\n * - Restores navigation when returning from completion\n * - Accessible with proper button semantics\n * - Customizable label and styling\n * - Integration with stepper context\n * - Automatic focus management\n * - Support for completion state handling\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <Stepper.PrevButton label=\"Go Back\" />\n *\n * @example\n * <Stepper.PrevButton\n * label=\"Previous Step\"\n * appearance=\"secondary\"\n * onClick={(e) => console.log('Going back')}\n * />\n */\nexport const StepperPrevButton = forwardRef<\n HTMLButtonElement,\n StepperPrevButtonProps\n>((props, ref) => {\n const {\n setCurrent,\n setFocus,\n allCompleted,\n setAllCompleted,\n items,\n current,\n allowNavigateToPrevStep,\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 if (allowNavigateToPrevStep) {\n items?.[current].setAttribute(\"tabindex\", \"0\");\n }\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 {\n ComponentPropsWithoutRef,\n forwardRef,\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 { LayoutUtilProps } from \"../../types\";\nimport { useLayoutPropsUtil } from \"../../internal/hooks\";\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\";\n\nimport styles from \"./Stepper.module.scss\";\n\n/**\n * Props for the Stepper component\n * @extends ComponentPropsWithoutRef<\"div\">\n * @extends LayoutUtilProps\n */\nexport type StepperProps = Omit<\n ComponentPropsWithoutRef<\"div\">,\n \"onAnimationStart\" | \"onDragStart\" | \"onDragEnd\" | \"onDrag\" | \"onChange\"\n> &\n LayoutUtilProps & {\n /**\n * Default step to start on.\n * @default undefined\n */\n defaultIndex?: number;\n\n /**\n * Allows users to navigate to previous steps.\n * @default undefined\n */\n allowNavigateToPrevStep?: boolean;\n\n /**\n * Returns current step data when step changes.\n * @param data Object containing currentStepId and currentStepIndex\n * @param data.currentStepId ID given to Stepper.Panel, or \"final-panel\"\n * @param data.currentStepIndex Index of current step, or undefined on final panel\n */\n onChange?: (data: {\n currentStepId: string | \"final-panel\";\n currentStepIndex?: number;\n }) => void;\n\n /**\n * Called when all steps are completed.\n */\n onComplete?: () => void;\n };\n\nconst StepperElement = forwardRef<HTMLDivElement, StepperProps>(\n (props, ref) => {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const {\n defaultIndex,\n className,\n allowNavigateToPrevStep,\n children,\n onChange,\n onComplete,\n style,\n ...rest\n } = componentProps;\n const tabRef = useRef<HTMLDivElement>(null);\n const [items, setItems] = useState<NodeListOf<HTMLElement>>();\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 const stepperClassNames = cx(styles[\"stepper\"], className);\n\n useEffect(() => {\n setItems(tabRef.current?.querySelectorAll(\"[role=tab]:not([disabled])\"));\n }, []);\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 styleCombined = { ...style, ...layoutStyles };\n\n const value = useMemo(\n () => ({\n current,\n setCurrent,\n currentId,\n setCurrentId,\n focus,\n setFocus,\n onComplete,\n items,\n allCompleted,\n setAllCompleted,\n allowNavigateToPrevStep,\n }),\n [\n current,\n currentId,\n focus,\n onComplete,\n items,\n allCompleted,\n setAllCompleted,\n allowNavigateToPrevStep,\n ],\n );\n\n return (\n <StepperContext.Provider value={value}>\n <motion.div\n transition={{ duration: 0 }}\n layout\n className={stepperClassNames}\n data-anv=\"stepper\"\n style={styleCombined}\n {...rest}\n ref={useMergeRefs([tabRef, ref])}\n >\n {children}\n </motion.div>\n </StepperContext.Provider>\n );\n },\n);\n\nStepperElement.displayName = \"Stepper\";\n\n/**\n * Stepper component for creating multi-step workflows and forms.\n *\n * Features:\n * - Multi-step navigation with visual progress indicators\n * - Keyboard navigation support with arrow keys\n * - Optional navigation to previous steps\n * - Smooth animations and transitions\n * - Accessible with proper ARIA roles and attributes\n * - Customizable step labels and content\n * - Completion state handling\n * - Layout utilities for positioning and spacing\n * - Motion animations for step transitions\n * - Context-based state management\n *\n * @example\n * <Stepper defaultIndex={0} allowNavigateToPrevStep>\n * <Stepper.List>\n * <Stepper.Step controls=\"step1\">Step 1</Stepper.Step>\n * <Stepper.Step controls=\"step2\">Step 2</Stepper.Step>\n * <Stepper.Step controls=\"step3\">Step 3</Stepper.Step>\n * </Stepper.List>\n *\n * <Stepper.Panel id=\"step1\">\n * <h2>Step 1 Content</h2>\n * <p>This is the first step content.</p>\n * </Stepper.Panel>\n *\n * <Stepper.Panel id=\"step2\">\n * <h2>Step 2 Content</h2>\n * <p>This is the second step content.</p>\n * </Stepper.Panel>\n *\n * <Stepper.Panel id=\"step3\">\n * <h2>Step 3 Content</h2>\n * <p>This is the final step content.</p>\n * </Stepper.Panel>\n *\n * <Stepper.FinalPanel>\n * <h2>Completed!</h2>\n * <p>All steps have been completed successfully.</p>\n * </Stepper.FinalPanel>\n *\n * <Stepper.PrevButton />\n * <Stepper.NextButton />\n * </Stepper>\n */\nexport const Stepper = Object.assign(StepperElement, {\n /**\n * Individual step component for the Stepper.\n *\n * Features:\n * - Visual progress indicator with animated bar\n * - Check icon for completed steps\n * - Keyboard navigation support\n * - Accessible with proper ARIA attributes\n * - Click handling for step navigation\n * - Visual states for current, completed, and future steps\n * - Responsive design with mobile-friendly layout\n * - Focus management for keyboard users\n * - Custom styling support\n *\n * @example\n * <Stepper.Step controls=\"step1\">\n * Personal Information\n * </Stepper.Step>\n *\n * @example\n * <Stepper.Step\n * controls=\"step2\"\n * onClick={(e, index) => console.log(`Clicked step ${index}`)}\n * >\n * Contact Details\n * </Stepper.Step>\n */\n Step: StepperStep,\n\n /**\n * Container component for organizing and displaying stepper steps.\n *\n * Features:\n * - Groups multiple stepper steps together\n * - Displays current step label\n * - Responsive design with mobile-friendly layout\n * - Accessible with proper ARIA roles\n * - Automatic step organization\n * - Visual step indicators\n * - Context-based current step display\n * - Flexible layout with CSS Grid/Flexbox\n * - Container queries for responsive behavior\n *\n * @example\n * <Stepper.List>\n * <Stepper.Step controls=\"step1\">Step 1</Stepper.Step>\n * <Stepper.Step controls=\"step2\">Step 2</Stepper.Step>\n * <Stepper.Step controls=\"step3\">Step 3</Stepper.Step>\n * </Stepper.List>\n */\n List: StepperList,\n\n /**\n * Content panel component for displaying step content in the Stepper.\n *\n * Features:\n * - Displays content for the current step only\n * - Smooth fade-in/fade-out animations\n * - Automatic overflow handling with scroll support\n * - Accessible with proper ARIA roles\n * - Layout utilities for positioning and spacing\n * - Motion animations for smooth transitions\n * - Focus management for keyboard navigation\n * - Responsive design with flexible layout\n * - Context-based visibility control\n *\n * @example\n * <Stepper.Panel id=\"step1\">\n * <h2>Personal Information</h2>\n * <form>\n * <label htmlFor=\"name\">Name:</label>\n * <input id=\"name\" type=\"text\" />\n * </form>\n * </Stepper.Panel>\n */\n Panel: StepperPanel,\n\n /**\n * Next button component for navigating to the next step in the Stepper.\n *\n * Features:\n * - Automatically advances to the next step\n * - Changes label to \"Complete\" on the final step\n * - Supports async validation with Promise return\n * - Prevents navigation when validation fails\n * - Hides when all steps are completed\n * - Accessible with proper button semantics\n * - Customizable appearance and styling\n * - Integration with stepper context\n * - Automatic completion handling\n *\n * @example\n * <Stepper.NextButton\n * nextLabel=\"Continue\"\n * completeLabel=\"Finish\"\n * />\n *\n * @example\n * <Stepper.NextButton\n * onClick={async (e) => {\n * const isValid = await validateForm();\n * return isValid;\n * }}\n * appearance=\"primary\"\n * />\n */\n NextButton: StepperNextButton,\n\n /**\n * Previous button component for navigating to the previous step in the Stepper.\n *\n * Features:\n * - Navigates to the previous step when available\n * - Hides when on the first step\n * - Restores navigation when returning from completion\n * - Accessible with proper button semantics\n * - Customizable label and styling\n * - Integration with stepper context\n * - Automatic focus management\n * - Support for completion state handling\n *\n * @example\n * <Stepper.PrevButton label=\"Go Back\" />\n *\n * @example\n * <Stepper.PrevButton\n * label=\"Previous Step\"\n * appearance=\"secondary\"\n * onClick={(e) => console.log('Going back')}\n * />\n */\n PrevButton: StepperPrevButton,\n\n /**\n * Final panel component displayed when all stepper steps are completed.\n *\n * Features:\n * - Displays only when all steps are completed\n * - Smooth fade-in animation on completion\n * - Automatic overflow handling with scroll support\n * - Accessible with proper ARIA roles\n * - Layout utilities for positioning and spacing\n * - Motion animations for smooth transitions\n * - Focus management for keyboard navigation\n * - Responsive design with flexible layout\n * - Context-based visibility control\n *\n * @example\n * <Stepper.FinalPanel>\n * <h2>Congratulations!</h2>\n * <p>You have successfully completed all steps.</p>\n * <Button onClick={handleSubmit}>Submit</Button>\n * </Stepper.FinalPanel>\n */\n FinalPanel: StepperFinalPanel,\n});\n"],"names":["styles","Check","core.primitive.DurationSlow"],"mappings":"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"}
package/dist/Stepper.js CHANGED
@@ -1,2 +1,2 @@
1
- export { S as Stepper, a as StepperFinalPanel, b as StepperList, c as StepperNextButton, d as StepperPanel, e as StepperPrevButton, f as StepperStep, S as default } from './Stepper-D-fOH9TF.js';
1
+ export { S as Stepper, a as StepperFinalPanel, b as StepperList, c as StepperNextButton, d as StepperPanel, e as StepperPrevButton, f as StepperStep, S as default } from './Stepper-DQ_Hm-AI.js';
2
2
  //# sourceMappingURL=Stepper.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Switch-C2ddZcr9.js","sources":["../src/components/Switch/Switch.tsx"],"sourcesContent":["import {\n ChangeEvent,\n ComponentPropsWithoutRef,\n ReactElement,\n Ref,\n forwardRef,\n useId,\n} from \"react\";\nimport { useTrackingId } from \"../../hooks\";\nimport { DataTrackingId, LayoutUtilProps } from \"../../types\";\nimport { childrenToString } from \"../../internal/functions\";\nimport { useLayoutPropsUtil } from \"../../internal/hooks\";\nimport Check from \"@servicetitan/hammer-icon/mdi/round/check.svg\";\nimport Icon from \"../Icon\";\nimport Flex from \"../Flex\";\nimport { Helper } from \"../../internal/components\";\n\nimport cx from \"classnames\";\nimport styles from \"./Switch.module.scss\";\n\n/**\n * State object returned by the Switch onChange callback\n */\nexport type SwitchState = {\n /**\n * Whether the switch is currently checked\n */\n checked: boolean;\n /**\n * The value of the switch input\n */\n value?: string | number | readonly string[];\n};\n\n/**\n * Props for the Switch component\n * @extends ComponentPropsWithoutRef<\"input\">\n * @extends LayoutUtilProps\n */\nexport type SwitchProps = Omit<ComponentPropsWithoutRef<\"input\">, \"onChange\"> &\n LayoutUtilProps & {\n /**\n * Callback when switch is changed.\n * @param e Change event object\n * @param state Current switch state with checked status and value\n */\n onChange?: (e: ChangeEvent<HTMLInputElement>, state: SwitchState) => void;\n\n /**\n * Label for the switch.\n * @remarks This should either be a string or have text content inside for accessibility\n */\n label?: ReactElement | string;\n\n /**\n * Description text to display below the label\n */\n description?: string;\n } & DataTrackingId;\n\n/**\n * Switch component for toggling between on/off states.\n *\n * Features:\n * - Toggle switch with smooth animations\n * - Check icon indicator when active\n * - Accessible with proper ARIA roles and attributes\n * - Keyboard navigation support (Space/Enter)\n * - Controlled and uncontrolled state management\n * - Customizable label and styling\n * - Layout utilities for positioning and spacing\n * - Focus management with visible focus indicators\n * - Hover states and visual feedback\n * - Disabled state support\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <Switch\n * label=\"Enable notifications\"\n * onChange={(e, state) => console.log('Switch toggled:', state.checked)}\n * />\n */\nexport const Switch = forwardRef(\n (props: SwitchProps, ref: Ref<HTMLInputElement>) => {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const {\n label,\n description,\n className,\n onChange,\n checked,\n defaultChecked,\n value,\n style,\n ...rest\n } = componentProps;\n\n const helperUid = useId();\n\n const onChangeHandler = (e: ChangeEvent<HTMLInputElement>) => {\n onChange?.(e, { value, checked: e.target.checked });\n };\n\n const data = {\n label: childrenToString(label),\n ariaLabel: rest[\"aria-label\"],\n ariaLabelledBy: rest[\"aria-labelledby\"],\n value,\n };\n\n const trackingId = useTrackingId({\n name: \"Switch\",\n data,\n hasOverride: !!rest[\"data-tracking-id\"],\n });\n\n const switchClassNames = cx(styles[\"switch\"], className);\n\n const styleCombined = {\n ...style,\n ...layoutStyles,\n alignItems: description ? \"flex-start\" : \"center\",\n };\n\n return (\n <label className={switchClassNames} style={styleCombined}>\n <input\n data-tracking-id={trackingId}\n data-anv=\"switch\"\n ref={ref}\n type=\"checkbox\"\n role=\"switch\"\n value={value}\n aria-checked={checked ?? defaultChecked}\n checked={checked}\n defaultChecked={defaultChecked}\n onChange={onChangeHandler}\n {...rest}\n />\n <span aria-hidden className={styles[\"toggle\"]}>\n <span className={styles[\"indicator\"]}>\n <Icon svg={Check} className={styles[\"check\"]} />\n </span>\n </span>\n {label || description ? (\n <Flex direction=\"column\" gap={1}>\n {label && label}\n {description && <Helper id={helperUid} description={description} />}\n </Flex>\n ) : null}\n </label>\n );\n },\n);\n\nSwitch.displayName = \"Switch\";\n"],"names":["Check"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAkFO,MAAM,MAAS,GAAA,UAAA;AAAA,EACpB,CAAC,OAAoB,GAA+B,KAAA;AAClD,IAAA,MAAM,EAAE,YAAA,EAAc,cAAe,EAAA,GAAI,mBAAmB,KAAK,CAAA;AACjE,IAAM,MAAA;AAAA,MACJ,KAAA;AAAA,MACA,WAAA;AAAA,MACA,SAAA;AAAA,MACA,QAAA;AAAA,MACA,OAAA;AAAA,MACA,cAAA;AAAA,MACA,KAAA;AAAA,MACA,KAAA;AAAA,MACA,GAAG;AAAA,KACD,GAAA,cAAA;AAEJ,IAAA,MAAM,YAAY,KAAM,EAAA;AAExB,IAAM,MAAA,eAAA,GAAkB,CAAC,CAAqC,KAAA;AAC5D,MAAA,QAAA,GAAW,GAAG,EAAE,KAAA,EAAO,SAAS,CAAE,CAAA,MAAA,CAAO,SAAS,CAAA;AAAA,KACpD;AAEA,IAAA,MAAM,IAAO,GAAA;AAAA,MACX,KAAA,EAAO,iBAAiB,KAAK,CAAA;AAAA,MAC7B,SAAA,EAAW,KAAK,YAAY,CAAA;AAAA,MAC5B,cAAA,EAAgB,KAAK,iBAAiB,CAAA;AAAA,MACtC;AAAA,KACF;AAEA,IAAA,MAAM,aAAa,aAAc,CAAA;AAAA,MAC/B,IAAM,EAAA,QAAA;AAAA,MACN,IAAA;AAAA,MACA,WAAa,EAAA,CAAC,CAAC,IAAA,CAAK,kBAAkB;AAAA,KACvC,CAAA;AAED,IAAA,MAAM,gBAAmB,GAAA,EAAA,CAAG,MAAO,CAAA,QAAQ,GAAG,SAAS,CAAA;AAEvD,IAAA,MAAM,aAAgB,GAAA;AAAA,MACpB,GAAG,KAAA;AAAA,MACH,GAAG,YAAA;AAAA,MACH,UAAA,EAAY,cAAc,YAAe,GAAA;AAAA,KAC3C;AAEA,IAAA,uBACG,IAAA,CAAA,OAAA,EAAA,EAAM,SAAW,EAAA,gBAAA,EAAkB,OAAO,aACzC,EAAA,QAAA,EAAA;AAAA,sBAAA,GAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,kBAAkB,EAAA,UAAA;AAAA,UAClB,UAAS,EAAA,QAAA;AAAA,UACT,GAAA;AAAA,UACA,IAAK,EAAA,UAAA;AAAA,UACL,IAAK,EAAA,QAAA;AAAA,UACL,KAAA;AAAA,UACA,gBAAc,OAAW,IAAA,cAAA;AAAA,UACzB,OAAA;AAAA,UACA,cAAA;AAAA,UACA,QAAU,EAAA,eAAA;AAAA,UACT,GAAG;AAAA;AAAA,OACN;AAAA,sBACA,GAAA,CAAC,UAAK,aAAW,EAAA,IAAA,EAAC,WAAW,MAAO,CAAA,QAAQ,CAC1C,EAAA,QAAA,kBAAA,GAAA,CAAC,MAAK,EAAA,EAAA,SAAA,EAAW,OAAO,WAAW,CAAA,EACjC,QAAC,kBAAA,GAAA,CAAA,IAAA,EAAA,EAAK,GAAK,EAAAA,QAAA,EAAO,WAAW,MAAO,CAAA,OAAO,CAAG,EAAA,CAAA,EAChD,CACF,EAAA,CAAA;AAAA,MACC,SAAS,WACR,mBAAA,IAAA,CAAC,QAAK,SAAU,EAAA,QAAA,EAAS,KAAK,CAC3B,EAAA,QAAA,EAAA;AAAA,QAAS,KAAA,IAAA,KAAA;AAAA,QACT,WAAe,oBAAA,GAAA,CAAC,MAAO,EAAA,EAAA,EAAA,EAAI,WAAW,WAA0B,EAAA;AAAA,OAAA,EACnE,CACE,GAAA;AAAA,KACN,EAAA,CAAA;AAAA;AAGN;AAEA,MAAA,CAAO,WAAc,GAAA,QAAA;;;;"}
1
+ {"version":3,"file":"Switch-C2ddZcr9.js","sources":["../src/components/Switch/Switch.tsx"],"sourcesContent":["import {\n ChangeEvent,\n ComponentPropsWithoutRef,\n ReactElement,\n Ref,\n forwardRef,\n useId,\n} from \"react\";\nimport { useTrackingId } from \"../../hooks\";\nimport { DataTrackingId, LayoutUtilProps } from \"../../types\";\nimport { childrenToString } from \"../../internal/functions\";\nimport { useLayoutPropsUtil } from \"../../internal/hooks\";\nimport Check from \"@servicetitan/hammer-icon/mdi/round/check.svg\";\nimport Icon from \"../Icon\";\nimport Flex from \"../Flex\";\nimport { Helper } from \"../../internal/components\";\n\nimport cx from \"classnames\";\nimport styles from \"./Switch.module.scss\";\n\n/**\n * State object returned by the Switch onChange callback\n */\nexport type SwitchState = {\n /**\n * Whether the switch is currently checked\n */\n checked: boolean;\n /**\n * The value of the switch input\n */\n value?: string | number | readonly string[];\n};\n\n/**\n * Props for the Switch component\n * @extends ComponentPropsWithoutRef<\"input\">\n * @extends LayoutUtilProps\n */\nexport type SwitchProps = Omit<ComponentPropsWithoutRef<\"input\">, \"onChange\"> &\n LayoutUtilProps & {\n /**\n * Callback when switch is changed.\n * @param e Change event object\n * @param state Current switch state with checked status and value\n */\n onChange?: (e: ChangeEvent<HTMLInputElement>, state: SwitchState) => void;\n\n /**\n * Label for the switch.\n * @remarks This should either be a string or have text content inside for accessibility\n */\n label?: ReactElement | string;\n\n /**\n * Description text to display below the label\n */\n description?: string;\n } & DataTrackingId;\n\n/**\n * Switch component for toggling between on/off states.\n *\n * Features:\n * - Toggle switch with smooth animations\n * - Check icon indicator when active\n * - Accessible with proper ARIA roles and attributes\n * - Keyboard navigation support (Space/Enter)\n * - Controlled and uncontrolled state management\n * - Customizable label and styling\n * - Layout utilities for positioning and spacing\n * - Focus management with visible focus indicators\n * - Hover states and visual feedback\n * - Disabled state support\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <Switch\n * label=\"Enable notifications\"\n * onChange={(e, state) => console.log('Switch toggled:', state.checked)}\n * />\n */\nexport const Switch = forwardRef(\n (props: SwitchProps, ref: Ref<HTMLInputElement>) => {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const {\n label,\n description,\n className,\n onChange,\n checked,\n defaultChecked,\n value,\n style,\n ...rest\n } = componentProps;\n\n const helperUid = useId();\n\n const onChangeHandler = (e: ChangeEvent<HTMLInputElement>) => {\n onChange?.(e, { value, checked: e.target.checked });\n };\n\n const data = {\n label: childrenToString(label),\n ariaLabel: rest[\"aria-label\"],\n ariaLabelledBy: rest[\"aria-labelledby\"],\n value,\n };\n\n const trackingId = useTrackingId({\n name: \"Switch\",\n data,\n hasOverride: !!rest[\"data-tracking-id\"],\n });\n\n const switchClassNames = cx(styles[\"switch\"], className);\n\n const styleCombined = {\n ...style,\n ...layoutStyles,\n alignItems: description ? \"flex-start\" : \"center\",\n };\n\n return (\n <label className={switchClassNames} style={styleCombined}>\n <input\n data-tracking-id={trackingId}\n data-anv=\"switch\"\n ref={ref}\n type=\"checkbox\"\n role=\"switch\"\n value={value}\n aria-checked={checked ?? defaultChecked}\n checked={checked}\n defaultChecked={defaultChecked}\n onChange={onChangeHandler}\n {...rest}\n />\n <span aria-hidden className={styles[\"toggle\"]}>\n <span className={styles[\"indicator\"]}>\n <Icon svg={Check} className={styles[\"check\"]} />\n </span>\n </span>\n {label || description ? (\n <Flex direction=\"column\" gap={1}>\n {label && label}\n {description && <Helper id={helperUid} description={description} />}\n </Flex>\n ) : null}\n </label>\n );\n },\n);\n\nSwitch.displayName = \"Switch\";\n"],"names":["Check"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAkFO,MAAM,MAAA,GAAS,UAAA;AAAA,EACpB,CAAC,OAAoB,GAAA,KAA+B;AAClD,IAAA,MAAM,EAAE,YAAA,EAAc,cAAA,EAAe,GAAI,mBAAmB,KAAK,CAAA;AACjE,IAAA,MAAM;AAAA,MACJ,KAAA;AAAA,MACA,WAAA;AAAA,MACA,SAAA;AAAA,MACA,QAAA;AAAA,MACA,OAAA;AAAA,MACA,cAAA;AAAA,MACA,KAAA;AAAA,MACA,KAAA;AAAA,MACA,GAAG;AAAA,KACL,GAAI,cAAA;AAEJ,IAAA,MAAM,YAAY,KAAA,EAAM;AAExB,IAAA,MAAM,eAAA,GAAkB,CAAC,CAAA,KAAqC;AAC5D,MAAA,QAAA,GAAW,GAAG,EAAE,KAAA,EAAO,SAAS,CAAA,CAAE,MAAA,CAAO,SAAS,CAAA;AAAA,IACpD,CAAA;AAEA,IAAA,MAAM,IAAA,GAAO;AAAA,MACX,KAAA,EAAO,iBAAiB,KAAK,CAAA;AAAA,MAC7B,SAAA,EAAW,KAAK,YAAY,CAAA;AAAA,MAC5B,cAAA,EAAgB,KAAK,iBAAiB,CAAA;AAAA,MACtC;AAAA,KACF;AAEA,IAAA,MAAM,aAAa,aAAA,CAAc;AAAA,MAC/B,IAAA,EAAM,QAAA;AAAA,MACN,IAAA;AAAA,MACA,WAAA,EAAa,CAAC,CAAC,IAAA,CAAK,kBAAkB;AAAA,KACvC,CAAA;AAED,IAAA,MAAM,gBAAA,GAAmB,EAAA,CAAG,MAAA,CAAO,QAAQ,GAAG,SAAS,CAAA;AAEvD,IAAA,MAAM,aAAA,GAAgB;AAAA,MACpB,GAAG,KAAA;AAAA,MACH,GAAG,YAAA;AAAA,MACH,UAAA,EAAY,cAAc,YAAA,GAAe;AAAA,KAC3C;AAEA,IAAA,uBACE,IAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAW,gBAAA,EAAkB,OAAO,aAAA,EACzC,QAAA,EAAA;AAAA,sBAAA,GAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,kBAAA,EAAkB,UAAA;AAAA,UAClB,UAAA,EAAS,QAAA;AAAA,UACT,GAAA;AAAA,UACA,IAAA,EAAK,UAAA;AAAA,UACL,IAAA,EAAK,QAAA;AAAA,UACL,KAAA;AAAA,UACA,gBAAc,OAAA,IAAW,cAAA;AAAA,UACzB,OAAA;AAAA,UACA,cAAA;AAAA,UACA,QAAA,EAAU,eAAA;AAAA,UACT,GAAG;AAAA;AAAA,OACN;AAAA,sBACA,GAAA,CAAC,UAAK,aAAA,EAAW,IAAA,EAAC,WAAW,MAAA,CAAO,QAAQ,CAAA,EAC1C,QAAA,kBAAA,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,OAAO,WAAW,CAAA,EACjC,QAAA,kBAAA,GAAA,CAAC,IAAA,EAAA,EAAK,GAAA,EAAKA,QAAA,EAAO,WAAW,MAAA,CAAO,OAAO,CAAA,EAAG,CAAA,EAChD,CAAA,EACF,CAAA;AAAA,MACC,SAAS,WAAA,mBACR,IAAA,CAAC,QAAK,SAAA,EAAU,QAAA,EAAS,KAAK,CAAA,EAC3B,QAAA,EAAA;AAAA,QAAA,KAAA,IAAS,KAAA;AAAA,QACT,WAAA,oBAAe,GAAA,CAAC,MAAA,EAAA,EAAO,EAAA,EAAI,WAAW,WAAA,EAA0B;AAAA,OAAA,EACnE,CAAA,GACE;AAAA,KAAA,EACN,CAAA;AAAA,EAEJ;AACF;AAEA,MAAA,CAAO,WAAA,GAAc,QAAA;;;;"}
@@ -1,12 +1,12 @@
1
1
  import { jsx, Fragment, jsxs } from 'react/jsx-runtime';
2
2
  import * as React from 'react';
3
- import { useId, useRef, useContext, useInsertionEffect, useCallback, useMemo, Children, isValidElement, useState, createContext, forwardRef, useLayoutEffect, useEffect } from 'react';
3
+ import { useId, useRef, useContext, useInsertionEffect, useMemo, Children, isValidElement, useState, createContext, forwardRef, useCallback, useLayoutEffect, useEffect } from 'react';
4
4
  import { D as Duration, e as DurationSlow } from './primitive-BoyEHaOo.js';
5
5
  import { c as cx } from './index-tZvMCc77.js';
6
- import { u as useReducedMotion } from './use-reduced-motion-znCm41qB.js';
7
- import { M as MotionConfigContext, u as useConstant, P as PresenceContext, a as usePresence, b as useIsomorphicLayoutEffect, L as LayoutGroupContext, m as motion } from './proxy-CreWmH-e.js';
6
+ import { u as useReducedMotion } from './use-reduced-motion-DSpxmqyT.js';
8
7
  import { useTrackingId } from './useTrackingId.js';
9
- import { u as useMergeRefs } from './useMergeRefs-Bde85AWI.js';
8
+ import { u as useMergeRefs } from './useMergeRefs-Dfmtq9cI.js';
9
+ import { M as MotionConfigContext, a as isHTMLElement, u as useConstant, P as PresenceContext, b as usePresence, c as useIsomorphicLayoutEffect, L as LayoutGroupContext, m as motion } from './proxy-BbFHSE6L.js';
10
10
  import { I as Icon } from './Icon-D8SPKeO4.js';
11
11
  import { u as useLayoutPropsUtil } from './useLayoutPropsUtil-DjD5IMh0.js';
12
12
 
@@ -19,7 +19,9 @@ class PopChildMeasure extends React.Component {
19
19
  const element = this.props.childRef.current;
20
20
  if (element && prevProps.isPresent && !this.props.isPresent) {
21
21
  const parent = element.offsetParent;
22
- const parentWidth = parent instanceof HTMLElement ? parent.offsetWidth || 0 : 0;
22
+ const parentWidth = isHTMLElement(parent)
23
+ ? parent.offsetWidth || 0
24
+ : 0;
23
25
  const size = this.props.sizeRef.current;
24
26
  size.height = element.offsetHeight || 0;
25
27
  size.width = element.offsetWidth || 0;
@@ -37,7 +39,7 @@ class PopChildMeasure extends React.Component {
37
39
  return this.props.children;
38
40
  }
39
41
  }
40
- function PopChild({ children, isPresent, anchorX }) {
42
+ function PopChild({ children, isPresent, anchorX, root }) {
41
43
  const id = useId();
42
44
  const ref = useRef(null);
43
45
  const size = useRef({
@@ -66,7 +68,8 @@ function PopChild({ children, isPresent, anchorX }) {
66
68
  const style = document.createElement("style");
67
69
  if (nonce)
68
70
  style.nonce = nonce;
69
- document.head.appendChild(style);
71
+ const parent = root ?? document.head;
72
+ parent.appendChild(style);
70
73
  if (style.sheet) {
71
74
  style.sheet.insertRule(`
72
75
  [data-motion-pop-id="${id}"] {
@@ -79,42 +82,47 @@ function PopChild({ children, isPresent, anchorX }) {
79
82
  `);
80
83
  }
81
84
  return () => {
82
- document.head.removeChild(style);
85
+ if (parent.contains(style)) {
86
+ parent.removeChild(style);
87
+ }
83
88
  };
84
89
  }, [isPresent]);
85
90
  return (jsx(PopChildMeasure, { isPresent: isPresent, childRef: ref, sizeRef: size, children: React.cloneElement(children, { ref }) }));
86
91
  }
87
92
 
88
- const PresenceChild = ({ children, initial, isPresent, onExitComplete, custom, presenceAffectsLayout, mode, anchorX, }) => {
93
+ const PresenceChild = ({ children, initial, isPresent, onExitComplete, custom, presenceAffectsLayout, mode, anchorX, root }) => {
89
94
  const presenceChildren = useConstant(newChildrenMap);
90
95
  const id = useId();
91
- const memoizedOnExitComplete = useCallback((childId) => {
92
- presenceChildren.set(childId, true);
93
- for (const isComplete of presenceChildren.values()) {
94
- if (!isComplete)
95
- return; // can stop searching when any is incomplete
96
- }
97
- onExitComplete && onExitComplete();
98
- }, [presenceChildren, onExitComplete]);
99
- const context = useMemo(() => ({
100
- id,
101
- initial,
102
- isPresent,
103
- custom,
104
- onExitComplete: memoizedOnExitComplete,
105
- register: (childId) => {
106
- presenceChildren.set(childId, false);
107
- return () => presenceChildren.delete(childId);
108
- },
109
- }),
96
+ let isReusedContext = true;
97
+ let context = useMemo(() => {
98
+ isReusedContext = false;
99
+ return {
100
+ id,
101
+ initial,
102
+ isPresent,
103
+ custom,
104
+ onExitComplete: (childId) => {
105
+ presenceChildren.set(childId, true);
106
+ for (const isComplete of presenceChildren.values()) {
107
+ if (!isComplete)
108
+ return; // can stop searching when any is incomplete
109
+ }
110
+ onExitComplete && onExitComplete();
111
+ },
112
+ register: (childId) => {
113
+ presenceChildren.set(childId, false);
114
+ return () => presenceChildren.delete(childId);
115
+ },
116
+ };
117
+ }, [isPresent, presenceChildren, onExitComplete]);
110
118
  /**
111
119
  * If the presence of a child affects the layout of the components around it,
112
120
  * we want to make a new context value to ensure they get re-rendered
113
121
  * so they can detect that layout change.
114
122
  */
115
- presenceAffectsLayout
116
- ? [Math.random(), memoizedOnExitComplete]
117
- : [isPresent, memoizedOnExitComplete]);
123
+ if (presenceAffectsLayout && isReusedContext) {
124
+ context = { ...context };
125
+ }
118
126
  useMemo(() => {
119
127
  presenceChildren.forEach((_, key) => presenceChildren.set(key, false));
120
128
  }, [isPresent]);
@@ -129,7 +137,7 @@ const PresenceChild = ({ children, initial, isPresent, onExitComplete, custom, p
129
137
  onExitComplete();
130
138
  }, [isPresent]);
131
139
  if (mode === "popLayout") {
132
- children = (jsx(PopChild, { isPresent: isPresent, anchorX: anchorX, children: children }));
140
+ children = (jsx(PopChild, { isPresent: isPresent, anchorX: anchorX, root: root, children: children }));
133
141
  }
134
142
  return (jsx(PresenceContext.Provider, { value: context, children: children }));
135
143
  };
@@ -181,7 +189,7 @@ function onlyElements(children) {
181
189
  *
182
190
  * @public
183
191
  */
184
- const AnimatePresence = ({ children, custom, initial = true, onExitComplete, presenceAffectsLayout = true, mode = "sync", propagate = false, anchorX = "left", }) => {
192
+ const AnimatePresence = ({ children, custom, initial = true, onExitComplete, presenceAffectsLayout = true, mode = "sync", propagate = false, anchorX = "left", root }) => {
185
193
  const [isParentPresent, safeToRemove] = usePresence(propagate);
186
194
  /**
187
195
  * Filter any children that aren't ReactElements. We can only track components
@@ -291,15 +299,15 @@ const AnimatePresence = ({ children, custom, initial = true, onExitComplete, pre
291
299
  isEveryExitComplete = false;
292
300
  });
293
301
  if (isEveryExitComplete) {
294
- forceRender === null || forceRender === void 0 ? void 0 : forceRender();
302
+ forceRender?.();
295
303
  setRenderedChildren(pendingPresentChildren.current);
296
- propagate && (safeToRemove === null || safeToRemove === void 0 ? void 0 : safeToRemove());
304
+ propagate && safeToRemove?.();
297
305
  onExitComplete && onExitComplete();
298
306
  }
299
307
  };
300
308
  return (jsx(PresenceChild, { isPresent: isPresent, initial: !isInitialRender.current || initial
301
309
  ? undefined
302
- : false, custom: custom, presenceAffectsLayout: presenceAffectsLayout, mode: mode, onExitComplete: isPresent ? undefined : onExit, anchorX: anchorX, children: child }, key));
310
+ : false, custom: custom, presenceAffectsLayout: presenceAffectsLayout, mode: mode, root: root, onExitComplete: isPresent ? undefined : onExit, anchorX: anchorX, children: child }, key));
303
311
  }) }));
304
312
  };
305
313
 
@@ -751,4 +759,4 @@ const Tab = Object.assign(TabElement, {
751
759
  });
752
760
 
753
761
  export { Tab as T, TabButton as a, TabList as b, TabPanel as c };
754
- //# sourceMappingURL=Tab-wNucMTgo.js.map
762
+ //# sourceMappingURL=Tab-CzNx3IdF.js.map