@purpur/library 9.7.4 → 9.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (333) hide show
  1. package/.lintstagedrc.mts +10 -0
  2. package/@types/scss.d.ts +4 -0
  3. package/CHANGELOG.json +4062 -0
  4. package/CHANGELOG.md +2118 -0
  5. package/dist/LICENSE.txt +7 -7
  6. package/dist/{ThemeProvider-DiDBfyFA.mjs → ThemeProvider-BJ25_asg.mjs} +13 -13
  7. package/dist/{ThemeProvider-DiDBfyFA.mjs.map → ThemeProvider-BJ25_asg.mjs.map} +1 -1
  8. package/dist/{ThemeProvider-D7oXcAde.js → ThemeProvider-BJGm3zai.js} +2 -2
  9. package/dist/{ThemeProvider-D7oXcAde.js.map → ThemeProvider-BJGm3zai.js.map} +1 -1
  10. package/dist/{autocomplete-BEGRn-Wh.mjs → autocomplete-A9-Ni60G.mjs} +2 -2
  11. package/dist/{autocomplete-BEGRn-Wh.mjs.map → autocomplete-A9-Ni60G.mjs.map} +1 -1
  12. package/dist/{autocomplete-3kV1btuI.js → autocomplete-Bbth0nDG.js} +2 -2
  13. package/dist/{autocomplete-3kV1btuI.js.map → autocomplete-Bbth0nDG.js.map} +1 -1
  14. package/dist/autocomplete.cjs.js +1 -1
  15. package/dist/autocomplete.es.js +1 -1
  16. package/dist/components/accordion/src/accordion.visual.fixtures.d.ts +13 -0
  17. package/dist/components/accordion/src/accordion.visual.fixtures.d.ts.map +1 -0
  18. package/dist/components/badge/src/badge.visual.fixtures.d.ts +13 -0
  19. package/dist/components/badge/src/badge.visual.fixtures.d.ts.map +1 -0
  20. package/dist/components/footer/src/telia-logo.d.ts.map +1 -1
  21. package/dist/components/hero-banner/src/hero-banner-types.d.ts +48 -0
  22. package/dist/components/hero-banner/src/hero-banner-types.d.ts.map +1 -0
  23. package/dist/components/hero-banner/src/hero-banner.d.ts +5 -48
  24. package/dist/components/hero-banner/src/hero-banner.d.ts.map +1 -1
  25. package/dist/components/hero-banner/src/hero-banner.visual.fixtures.d.ts +1 -1
  26. package/dist/components/hero-banner/src/hero-banner.visual.fixtures.d.ts.map +1 -1
  27. package/dist/components-metadata.js +2 -2
  28. package/dist/{date-field-BKKty89_.js → date-field-CKxEWHG3.js} +2 -2
  29. package/dist/{date-field-BKKty89_.js.map → date-field-CKxEWHG3.js.map} +1 -1
  30. package/dist/{date-field-Cv5CKR1y.mjs → date-field-HEFdHIxk.mjs} +2 -2
  31. package/dist/{date-field-Cv5CKR1y.mjs.map → date-field-HEFdHIxk.mjs.map} +1 -1
  32. package/dist/date-field.cjs.js +1 -1
  33. package/dist/date-field.es.js +1 -1
  34. package/dist/{date-picker-CIizn3Pv.js → date-picker-CDBwkAJI.js} +2 -2
  35. package/dist/{date-picker-CIizn3Pv.js.map → date-picker-CDBwkAJI.js.map} +1 -1
  36. package/dist/{date-picker-DixxW60s.mjs → date-picker-cQewKIMN.mjs} +6 -6
  37. package/dist/{date-picker-DixxW60s.mjs.map → date-picker-cQewKIMN.mjs.map} +1 -1
  38. package/dist/date-picker.cjs.js +1 -1
  39. package/dist/date-picker.es.js +1 -1
  40. package/dist/{date-range-field-D8vLeSwp.js → date-range-field-D7Hn9FGN.js} +2 -2
  41. package/dist/{date-range-field-D8vLeSwp.js.map → date-range-field-D7Hn9FGN.js.map} +1 -1
  42. package/dist/{date-range-field-CFcjprIl.mjs → date-range-field-_WctWD29.mjs} +2 -2
  43. package/dist/{date-range-field-CFcjprIl.mjs.map → date-range-field-_WctWD29.mjs.map} +1 -1
  44. package/dist/date-range-field.cjs.js +1 -1
  45. package/dist/date-range-field.es.js +1 -1
  46. package/dist/{drawer-DyhsP34o.js → drawer-DyLQfvEh.js} +2 -2
  47. package/dist/{drawer-DyhsP34o.js.map → drawer-DyLQfvEh.js.map} +1 -1
  48. package/dist/{drawer-BzkRd9F0.mjs → drawer-cIUx6WSZ.mjs} +3 -3
  49. package/dist/{drawer-BzkRd9F0.mjs.map → drawer-cIUx6WSZ.mjs.map} +1 -1
  50. package/dist/drawer.cjs.js +1 -1
  51. package/dist/drawer.es.js +1 -1
  52. package/dist/{footer-DenAcikt.mjs → footer-BMlXRro2.mjs} +86 -96
  53. package/dist/footer-BMlXRro2.mjs.map +1 -0
  54. package/dist/footer-cet787Iq.js +2 -0
  55. package/dist/footer-cet787Iq.js.map +1 -0
  56. package/dist/footer.cjs.js +1 -1
  57. package/dist/footer.es.js +1 -1
  58. package/dist/{hero-banner-B7xrDfzN.mjs → hero-banner-B08jC0Sf.mjs} +77 -77
  59. package/dist/hero-banner-B08jC0Sf.mjs.map +1 -0
  60. package/dist/hero-banner-D__doaU7.js +2 -0
  61. package/dist/hero-banner-D__doaU7.js.map +1 -0
  62. package/dist/hero-banner.cjs.js +1 -1
  63. package/dist/hero-banner.es.js +1 -1
  64. package/dist/library.cjs.js +1 -1
  65. package/dist/library.es.js +21 -21
  66. package/dist/{modal-DJn9idcw.js → modal-CmPPxJ7Y.js} +2 -2
  67. package/dist/{modal-DJn9idcw.js.map → modal-CmPPxJ7Y.js.map} +1 -1
  68. package/dist/{modal-EIP36327.mjs → modal-Evh8sCBO.mjs} +3 -3
  69. package/dist/{modal-EIP36327.mjs.map → modal-Evh8sCBO.mjs.map} +1 -1
  70. package/dist/modal.cjs.js +1 -1
  71. package/dist/modal.es.js +1 -1
  72. package/dist/{popover-DERrvReO.mjs → popover-BSUdf0Ae.mjs} +3 -3
  73. package/dist/{popover-DERrvReO.mjs.map → popover-BSUdf0Ae.mjs.map} +1 -1
  74. package/dist/{popover-DnGgzfQr.js → popover-XJqF5DHT.js} +2 -2
  75. package/dist/{popover-DnGgzfQr.js.map → popover-XJqF5DHT.js.map} +1 -1
  76. package/dist/popover.cjs.js +1 -1
  77. package/dist/popover.es.js +1 -1
  78. package/dist/{promotion-card-DKc2Cx1h.js → promotion-card-BnXD2mkp.js} +2 -2
  79. package/dist/{promotion-card-DKc2Cx1h.js.map → promotion-card-BnXD2mkp.js.map} +1 -1
  80. package/dist/{promotion-card-BnzIVNQ4.mjs → promotion-card-DOO0VCI8.mjs} +2 -2
  81. package/dist/{promotion-card-BnzIVNQ4.mjs.map → promotion-card-DOO0VCI8.mjs.map} +1 -1
  82. package/dist/promotion-card.cjs.js +1 -1
  83. package/dist/promotion-card.es.js +1 -1
  84. package/dist/purpur.css +1 -1
  85. package/dist/{quantity-selector-CvBvnMeB.mjs → quantity-selector-B4YnfmNb.mjs} +2 -2
  86. package/dist/{quantity-selector-CvBvnMeB.mjs.map → quantity-selector-B4YnfmNb.mjs.map} +1 -1
  87. package/dist/{quantity-selector-CDSfcTb1.js → quantity-selector-CTBoxiPO.js} +2 -2
  88. package/dist/{quantity-selector-CDSfcTb1.js.map → quantity-selector-CTBoxiPO.js.map} +1 -1
  89. package/dist/quantity-selector.cjs.js +1 -1
  90. package/dist/quantity-selector.es.js +1 -1
  91. package/dist/{search-field-DKyNh7pE.mjs → search-field-_h8xn-sj.mjs} +2 -2
  92. package/dist/{search-field-DKyNh7pE.mjs.map → search-field-_h8xn-sj.mjs.map} +1 -1
  93. package/dist/{search-field-2vdDbiT0.js → search-field-vh6uz5KV.js} +2 -2
  94. package/dist/{search-field-2vdDbiT0.js.map → search-field-vh6uz5KV.js.map} +1 -1
  95. package/dist/search-field.cjs.js +1 -1
  96. package/dist/search-field.es.js +1 -1
  97. package/dist/{stepper-e0qicwqd.mjs → stepper-B-nCLs2D.mjs} +2 -2
  98. package/dist/{stepper-e0qicwqd.mjs.map → stepper-B-nCLs2D.mjs.map} +1 -1
  99. package/dist/{stepper-5qMo_shq.js → stepper-CTKlnH0q.js} +2 -2
  100. package/dist/{stepper-5qMo_shq.js.map → stepper-CTKlnH0q.js.map} +1 -1
  101. package/dist/stepper.cjs.js +1 -1
  102. package/dist/stepper.es.js +1 -1
  103. package/dist/{table-i1Gs9e0e.mjs → table-DOPXfD-s.mjs} +6 -6
  104. package/dist/{table-i1Gs9e0e.mjs.map → table-DOPXfD-s.mjs.map} +1 -1
  105. package/dist/{table-BOCcBzSO.js → table-DTQe4nN8.js} +2 -2
  106. package/dist/{table-BOCcBzSO.js.map → table-DTQe4nN8.js.map} +1 -1
  107. package/dist/table.cjs.js +1 -1
  108. package/dist/table.es.js +1 -1
  109. package/dist/{text-area-D0truMT1.js → text-area-9RUldq6W.js} +2 -2
  110. package/dist/{text-area-D0truMT1.js.map → text-area-9RUldq6W.js.map} +1 -1
  111. package/dist/{text-area-IVH-k4MM.mjs → text-area-C58aZEPa.mjs} +3 -3
  112. package/dist/{text-area-IVH-k4MM.mjs.map → text-area-C58aZEPa.mjs.map} +1 -1
  113. package/dist/text-area.cjs.js +1 -1
  114. package/dist/text-area.es.js +1 -1
  115. package/dist/text-field-C2W13n15.js +2 -0
  116. package/dist/{text-field-CYJzQG3h.js.map → text-field-C2W13n15.js.map} +1 -1
  117. package/dist/{text-field-BQfxJobW.mjs → text-field-D8MMa6ij.mjs} +114 -114
  118. package/dist/{text-field-BQfxJobW.mjs.map → text-field-D8MMa6ij.mjs.map} +1 -1
  119. package/dist/text-field.cjs.js +1 -1
  120. package/dist/text-field.es.js +1 -1
  121. package/dist/theme.cjs.js +1 -1
  122. package/dist/theme.es.js +3 -3
  123. package/dist/tokens/color/variables.css +1 -1
  124. package/dist/tokens/color/variables.dark.css +1 -1
  125. package/dist/tokens/color/variables.dark.js +1 -1
  126. package/dist/tokens/color/variables.dark.json +1 -1
  127. package/dist/tokens/color/variables.dark.scss +1 -1
  128. package/dist/tokens/color/variables.js +1 -1
  129. package/dist/tokens/color/variables.json +1 -1
  130. package/dist/tokens/color/variables.scss +1 -1
  131. package/dist/tokens.cjs.js +1 -1
  132. package/dist/tokens.es.js +1 -1
  133. package/dist/{tooltip-CJGmJDFQ.js → tooltip-CDnJKoIA.js} +2 -2
  134. package/dist/{tooltip-CJGmJDFQ.js.map → tooltip-CDnJKoIA.js.map} +1 -1
  135. package/dist/{tooltip-RA-03bKs.mjs → tooltip-pwJMEBBP.mjs} +3 -3
  136. package/dist/{tooltip-RA-03bKs.mjs.map → tooltip-pwJMEBBP.mjs.map} +1 -1
  137. package/dist/tooltip.cjs.js +1 -1
  138. package/dist/tooltip.es.js +1 -1
  139. package/dist/{useColorScheme-B9DWd-LN.mjs → useColorScheme-B7lGBSe4.mjs} +2 -2
  140. package/dist/{useColorScheme-B9DWd-LN.mjs.map → useColorScheme-B7lGBSe4.mjs.map} +1 -1
  141. package/dist/useColorScheme-BHhPgv9q.js +2 -0
  142. package/dist/{useColorScheme-DbTQjxNB.js.map → useColorScheme-BHhPgv9q.js.map} +1 -1
  143. package/dist/useThemePortalContainer-CUcqV327.js +2 -0
  144. package/dist/{useThemePortalContainer-D9BYjEvT.js.map → useThemePortalContainer-CUcqV327.js.map} +1 -1
  145. package/dist/useThemePortalContainer-D13Xx24N.mjs +9 -0
  146. package/dist/{useThemePortalContainer-tFLTaYKN.mjs.map → useThemePortalContainer-D13Xx24N.mjs.map} +1 -1
  147. package/dist/{variables-B5hbV0Uy.mjs → variables-BrsAsWIF.mjs} +2 -2
  148. package/dist/{variables-B5hbV0Uy.mjs.map → variables-BrsAsWIF.mjs.map} +1 -1
  149. package/dist/{variables-DoI78zZc.js → variables-D1vNo1lO.js} +2 -2
  150. package/dist/{variables-DoI78zZc.js.map → variables-D1vNo1lO.js.map} +1 -1
  151. package/eslint.config.mjs +2 -0
  152. package/package.json +27 -31
  153. package/scripts/generate.mts +269 -0
  154. package/src/accordion.ts +6 -0
  155. package/src/alert-badge.ts +6 -0
  156. package/src/aliases.ts +302 -0
  157. package/src/autocomplete.ts +6 -0
  158. package/src/avatar.ts +6 -0
  159. package/src/badge.ts +6 -0
  160. package/src/breadcrumbs.ts +6 -0
  161. package/src/button.ts +6 -0
  162. package/src/calendar.ts +6 -0
  163. package/src/card.ts +6 -0
  164. package/src/carousel.ts +6 -0
  165. package/src/chat-field.ts +6 -0
  166. package/src/checkbox.ts +6 -0
  167. package/src/chip-group.ts +6 -0
  168. package/src/color-dot.ts +6 -0
  169. package/src/comparison-table.ts +6 -0
  170. package/src/container.ts +6 -0
  171. package/src/content-block.ts +6 -0
  172. package/src/countdown.ts +6 -0
  173. package/src/counter-badge.ts +6 -0
  174. package/src/cta-link.ts +6 -0
  175. package/src/date-field.ts +6 -0
  176. package/src/date-picker.ts +6 -0
  177. package/src/date-range-field.ts +6 -0
  178. package/src/dismissable-chip-group.ts +6 -0
  179. package/src/drawer.ts +6 -0
  180. package/src/dropdown.ts +6 -0
  181. package/src/entries.js +73 -0
  182. package/src/field-error-text.ts +6 -0
  183. package/src/field-helper-text.ts +6 -0
  184. package/src/footer.ts +6 -0
  185. package/src/grid.ts +6 -0
  186. package/src/heading.ts +6 -0
  187. package/src/hero-banner.ts +6 -0
  188. package/src/label.ts +6 -0
  189. package/src/library.ts +77 -0
  190. package/src/link.ts +6 -0
  191. package/src/listbox.ts +6 -0
  192. package/src/loading.ts +6 -0
  193. package/src/message.ts +6 -0
  194. package/src/modal.ts +6 -0
  195. package/src/notification-banner.ts +6 -0
  196. package/src/notification.ts +6 -0
  197. package/src/pagination.ts +6 -0
  198. package/src/paragraph.ts +6 -0
  199. package/src/password-field.ts +7 -0
  200. package/src/popover.ts +6 -0
  201. package/src/product-card.ts +6 -0
  202. package/src/promotion-card.ts +6 -0
  203. package/src/purpur.css +1 -0
  204. package/src/quantity-selector.ts +6 -0
  205. package/src/radio-button-group.ts +6 -0
  206. package/src/radio-card-group.ts +6 -0
  207. package/src/rich-text.ts +6 -0
  208. package/src/search-field.ts +6 -0
  209. package/src/select.ts +6 -0
  210. package/src/skeleton.ts +6 -0
  211. package/src/slider.ts +6 -0
  212. package/src/spacer.ts +6 -0
  213. package/src/spinner.ts +6 -0
  214. package/src/stepper.ts +6 -0
  215. package/src/table.ts +6 -0
  216. package/src/tabs.ts +6 -0
  217. package/src/text-area.ts +6 -0
  218. package/src/text-field.ts +6 -0
  219. package/src/text-spacing.ts +6 -0
  220. package/src/theme.ts +6 -0
  221. package/src/toggle.ts +6 -0
  222. package/src/tokens.ts +6 -0
  223. package/src/tooltip.ts +6 -0
  224. package/src/visually-hidden.ts +6 -0
  225. package/tokens/_dark.scss +9 -0
  226. package/tokens/_index.scss +9 -0
  227. package/tokens/border/variables.css +13 -0
  228. package/tokens/border/variables.d.ts +10 -0
  229. package/tokens/border/variables.dark.css +12 -0
  230. package/tokens/border/variables.dark.d.ts +10 -0
  231. package/tokens/border/variables.dark.js +10 -0
  232. package/tokens/border/variables.dark.json +18 -0
  233. package/tokens/border/variables.dark.scss +10 -0
  234. package/tokens/border/variables.js +10 -0
  235. package/tokens/border/variables.json +18 -0
  236. package/tokens/border/variables.scss +10 -0
  237. package/tokens/breakpoint/variables.css +11 -0
  238. package/tokens/breakpoint/variables.d.ts +8 -0
  239. package/tokens/breakpoint/variables.dark.css +10 -0
  240. package/tokens/breakpoint/variables.dark.d.ts +8 -0
  241. package/tokens/breakpoint/variables.dark.js +8 -0
  242. package/tokens/breakpoint/variables.dark.json +14 -0
  243. package/tokens/breakpoint/variables.dark.scss +8 -0
  244. package/tokens/breakpoint/variables.js +8 -0
  245. package/tokens/breakpoint/variables.json +14 -0
  246. package/tokens/breakpoint/variables.scss +8 -0
  247. package/tokens/color/variables.css +262 -0
  248. package/tokens/color/variables.d.ts +253 -0
  249. package/tokens/color/variables.dark.css +262 -0
  250. package/tokens/color/variables.dark.d.ts +252 -0
  251. package/tokens/color/variables.dark.js +252 -0
  252. package/tokens/color/variables.dark.json +306 -0
  253. package/tokens/color/variables.dark.scss +252 -0
  254. package/tokens/color/variables.js +253 -0
  255. package/tokens/color/variables.json +307 -0
  256. package/tokens/color/variables.scss +253 -0
  257. package/tokens/dark.css +9 -0
  258. package/tokens/dark.d.ts +9 -0
  259. package/tokens/dark.js +9 -0
  260. package/tokens/filter/variables.css +4 -0
  261. package/tokens/filter/variables.d.ts +1 -0
  262. package/tokens/filter/variables.dark.css +3 -0
  263. package/tokens/filter/variables.dark.d.ts +1 -0
  264. package/tokens/filter/variables.dark.js +1 -0
  265. package/tokens/filter/variables.dark.json +7 -0
  266. package/tokens/filter/variables.dark.scss +1 -0
  267. package/tokens/filter/variables.js +1 -0
  268. package/tokens/filter/variables.json +7 -0
  269. package/tokens/filter/variables.scss +1 -0
  270. package/tokens/gradient/variables.css +53 -0
  271. package/tokens/gradient/variables.d.ts +9 -0
  272. package/tokens/gradient/variables.dark.css +51 -0
  273. package/tokens/gradient/variables.dark.d.ts +9 -0
  274. package/tokens/gradient/variables.dark.js +18 -0
  275. package/tokens/gradient/variables.dark.json +27 -0
  276. package/tokens/gradient/variables.dark.scss +36 -0
  277. package/tokens/gradient/variables.js +18 -0
  278. package/tokens/gradient/variables.json +27 -0
  279. package/tokens/gradient/variables.scss +42 -0
  280. package/tokens/index.css +18 -0
  281. package/tokens/index.d.ts +9 -0
  282. package/tokens/index.js +9 -0
  283. package/tokens/motion/variables.css +14 -0
  284. package/tokens/motion/variables.d.ts +11 -0
  285. package/tokens/motion/variables.dark.css +13 -0
  286. package/tokens/motion/variables.dark.d.ts +11 -0
  287. package/tokens/motion/variables.dark.js +11 -0
  288. package/tokens/motion/variables.dark.json +19 -0
  289. package/tokens/motion/variables.dark.scss +11 -0
  290. package/tokens/motion/variables.js +11 -0
  291. package/tokens/motion/variables.json +19 -0
  292. package/tokens/motion/variables.scss +11 -0
  293. package/tokens/shadow/variables.css +11 -0
  294. package/tokens/shadow/variables.d.ts +4 -0
  295. package/tokens/shadow/variables.dark.css +10 -0
  296. package/tokens/shadow/variables.dark.d.ts +4 -0
  297. package/tokens/shadow/variables.dark.js +4 -0
  298. package/tokens/shadow/variables.dark.json +8 -0
  299. package/tokens/shadow/variables.dark.scss +4 -0
  300. package/tokens/shadow/variables.js +4 -0
  301. package/tokens/shadow/variables.json +8 -0
  302. package/tokens/shadow/variables.scss +4 -0
  303. package/tokens/spacing/variables.css +26 -0
  304. package/tokens/spacing/variables.d.ts +23 -0
  305. package/tokens/spacing/variables.dark.css +17 -0
  306. package/tokens/spacing/variables.dark.d.ts +15 -0
  307. package/tokens/spacing/variables.dark.js +15 -0
  308. package/tokens/spacing/variables.dark.json +19 -0
  309. package/tokens/spacing/variables.dark.scss +15 -0
  310. package/tokens/spacing/variables.js +23 -0
  311. package/tokens/spacing/variables.json +31 -0
  312. package/tokens/spacing/variables.scss +23 -0
  313. package/tokens/typography/variables.css +30 -0
  314. package/tokens/typography/variables.d.ts +26 -0
  315. package/tokens/typography/variables.dark.css +29 -0
  316. package/tokens/typography/variables.dark.d.ts +26 -0
  317. package/tokens/typography/variables.dark.js +28 -0
  318. package/tokens/typography/variables.dark.json +38 -0
  319. package/tokens/typography/variables.dark.scss +26 -0
  320. package/tokens/typography/variables.js +28 -0
  321. package/tokens/typography/variables.json +38 -0
  322. package/tokens/typography/variables.scss +26 -0
  323. package/vite-plugin-generate-components-metadata.js +62 -0
  324. package/dist/footer-3Y-664-8.js +0 -2
  325. package/dist/footer-3Y-664-8.js.map +0 -1
  326. package/dist/footer-DenAcikt.mjs.map +0 -1
  327. package/dist/hero-banner-B7xrDfzN.mjs.map +0 -1
  328. package/dist/hero-banner-DthITuQ7.js +0 -2
  329. package/dist/hero-banner-DthITuQ7.js.map +0 -1
  330. package/dist/text-field-CYJzQG3h.js +0 -2
  331. package/dist/useColorScheme-DbTQjxNB.js +0 -2
  332. package/dist/useThemePortalContainer-D9BYjEvT.js +0 -2
  333. package/dist/useThemePortalContainer-tFLTaYKN.mjs +0 -9
@@ -1 +1 @@
1
- {"version":3,"file":"stepper-e0qicwqd.mjs","sources":["../../../components/stepper/src/constants.ts","../../../components/stepper/src/stepper-container.tsx","../../../components/stepper/src/stepper-content.tsx","../../../components/stepper/src/stepper-button.tsx","../../../components/stepper/src/stepper-nav-items.tsx","../../../components/stepper/src/use-content-focus.hook.ts","../../../components/stepper/src/use-scroll-buttons.hook.ts","../../../components/stepper/src/stepper.tsx"],"sourcesContent":["export const STEPPER_VARIANT = {\n PRIMARY: \"primary\",\n SECONDARY: \"secondary\",\n} as const;\n\nexport const VISIBILITY_STATES = {\n SMALL_SCREEN: \"small-screen\",\n LARGE_SCREEN: \"large-screen\",\n ALWAYS: \"always\",\n} as const;\n","import React, { type ReactNode } from \"react\";\nimport type { BaseProps } from \"@purpur/common-types\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./stepper-container.module.scss\";\nimport { type StepperVariant } from \"./types\";\n\nconst cx = c.bind(styles);\n\nexport type StepperContainerProps = Omit<BaseProps, \"children\"> & {\n children: ReactNode;\n alignWithGrid: boolean;\n variant: StepperVariant;\n};\n\nconst rootClassName = \"purpur-stepper-container\";\n\nexport const StepperContainer = ({\n [\"data-testid\"]: dataTestId = \"purpur-stepper-container\",\n children,\n className,\n alignWithGrid,\n variant,\n ...props\n}: StepperContainerProps) => {\n const classes: string = cx(className, rootClassName, {\n [`${rootClassName}--${variant}`]: variant,\n [`${rootClassName}--align-with-grid`]: alignWithGrid,\n });\n\n return (\n <div className={classes} data-testid={dataTestId} {...props}>\n <div\n className={cx(`${rootClassName}__inner`, {\n [`${rootClassName}__inner--align-with-grid`]: alignWithGrid,\n })}\n >\n {children}\n </div>\n </div>\n );\n};\n","import React, { forwardRef, isValidElement, type ReactElement, type ReactNode } from \"react\";\nimport type { BaseProps } from \"@purpur/common-types\";\n\nimport { type Optional, type Step } from \"./types\";\n\nexport type StepperContentProps = Omit<BaseProps, \"children\"> & {\n children: ReactNode;\n} & Optional<Step, \"disabled\" | \"finished\">;\n\nexport const StepperContent = forwardRef<HTMLDivElement, StepperContentProps>(\n ({ children, ...props }, ref) => {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { finished, ...rest } = props;\n return (\n <div {...rest} ref={ref}>\n {children}\n </div>\n );\n }\n);\n\nexport const isStepperContent = (child?: ReactNode): child is ReactElement<StepperContentProps> =>\n !!child && isValidElement<StepperContentProps>(child) && !!child.props.label;\n","import React, { forwardRef } from \"react\";\nimport { Button, BUTTON_VARIANT } from \"@purpur/button\";\nimport type { BaseProps } from \"@purpur/common-types\";\nimport { IconCheckmark } from \"@purpur/icon/checkmark\";\nimport * as RovingFocusGroup from \"@radix-ui/react-roving-focus\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./stepper-button.module.scss\";\nimport {\n type HandleStepChangeFunction,\n type HandleStepFocusFunction,\n type Step,\n type StepperVariant,\n type VisibilityStates,\n} from \"./types\";\n\nconst cx = c.bind(styles);\nconst rootClassName = \"purpur-stepper-button\";\n\nexport type StepNumberProps = {\n current: boolean;\n disabled: boolean;\n stepNumber: number;\n [\"data-testid\"]?: string;\n};\n\nconst StepNumber = ({\n [\"data-testid\"]: dataTestId,\n current,\n disabled,\n stepNumber,\n}: StepNumberProps) => {\n return (\n <div\n data-testid={dataTestId}\n className={cx([\n `${rootClassName}__step-number`,\n {\n [`${rootClassName}__step-number--current`]: current,\n },\n {\n [`${rootClassName}__step-number--disabled`]: disabled,\n },\n ])}\n >\n {stepNumber}\n </div>\n );\n};\n\nexport type StepperButtonProps = Omit<BaseProps<\"button\">, \"children\"> & {\n variant: StepperVariant;\n step: Step;\n currentStepIndex: number;\n index: number;\n indexOfLastItem: number;\n whenToBeVisible: VisibilityStates;\n handleStepChange: HandleStepChangeFunction;\n handleStepFocus: HandleStepFocusFunction;\n completedStepLabel: string;\n};\n\nexport const StepperButton = forwardRef<HTMLButtonElement, StepperButtonProps>(\n (\n {\n className,\n [\"data-testid\"]: dataTestId,\n variant,\n step,\n indexOfLastItem,\n index,\n currentStepIndex,\n whenToBeVisible,\n handleStepChange,\n handleStepFocus,\n completedStepLabel,\n ...props\n },\n ref\n ) => {\n const placement = index === 0 ? \"first\" : index === indexOfLastItem ? \"last\" : \"middle\";\n const isCurrentStep = index === currentStepIndex;\n return (\n <RovingFocusGroup.Item asChild>\n <Button\n {...props}\n ref={ref}\n className={cx(\n className,\n rootClassName,\n `${rootClassName}--${placement}`,\n `${rootClassName}--${variant}`,\n `${rootClassName}--visibility-${whenToBeVisible}`,\n {\n [`${rootClassName}--current`]: isCurrentStep,\n },\n {\n [`${rootClassName}--disabled`]: step.disabled,\n },\n {\n [\"arrow-tail\"]: placement !== \"first\",\n },\n {\n [\"arrow-forward\"]: placement !== \"last\",\n }\n )}\n id={`stepper-trigger-button-${index}`}\n variant={BUTTON_VARIANT.TERTIARY_PURPLE}\n data-testid={`${dataTestId}-step-trigger-item-${index}`}\n disabled={step.disabled}\n aria-current={isCurrentStep && \"step\"}\n aria-label={\n step.finished && !isCurrentStep\n ? [step.label, completedStepLabel].filter(Boolean).join(\", \")\n : undefined\n }\n onClick={(e) => handleStepChange(e, index)}\n onFocus={handleStepFocus}\n >\n <span className={cx(`${rootClassName}__trigger-outline`)}>\n {step.finished && !isCurrentStep ? (\n <IconCheckmark\n className={cx(`${rootClassName}__icon`)}\n data-testid={`${dataTestId}-step-finished-icon`}\n size=\"sm\"\n />\n ) : (\n <StepNumber\n data-testid={`${dataTestId}-step-number`}\n current={isCurrentStep}\n disabled={step.disabled}\n stepNumber={index + 1}\n />\n )}\n <span\n className={cx(`${rootClassName}__step-label`, {\n [`sr-only--lg-down`]: !isCurrentStep,\n })}\n >\n {step.label}\n </span>\n </span>\n </Button>\n </RovingFocusGroup.Item>\n );\n }\n);\n","import React, { forwardRef, type RefObject } from \"react\";\nimport { Tooltip } from \"@purpur/tooltip\";\nimport * as RovingFocusGroup from \"@radix-ui/react-roving-focus\";\nimport c from \"classnames/bind\";\n\nimport { VISIBILITY_STATES } from \"./constants\";\nimport { StepperButton } from \"./stepper-button\";\nimport styles from \"./stepper-nav-items.module.scss\";\nimport {\n type HandleStepChangeFunction,\n type HandleStepFocusFunction,\n type Step,\n type StepperVariant,\n} from \"./types\";\n\nconst cx = c.bind(styles);\n\nconst rootClassName = \"purpur-stepper-nav-items\";\n\nexport type StepperNavItemsProps = {\n variant: StepperVariant;\n [\"data-testid\"]?: string;\n firstStepRef: RefObject<HTMLLIElement | null>;\n lastStepRef: RefObject<HTMLLIElement | null>;\n steps: Step[];\n currentStepIndex: number;\n handleStepChange: HandleStepChangeFunction;\n handleStepFocus: HandleStepFocusFunction;\n completedStepLabel: string;\n};\n\nexport const StepperNavItems = forwardRef<HTMLOListElement, StepperNavItemsProps>(\n (\n {\n [\"data-testid\"]: dataTestId,\n variant,\n handleStepChange,\n handleStepFocus,\n steps,\n firstStepRef,\n lastStepRef,\n currentStepIndex,\n completedStepLabel,\n },\n ref\n ) => {\n const stepListItems = steps.map((step: Step, index: number) => {\n const tooltipTriggerItem = (\n <span className={cx(`${rootClassName}__tooltip-trigger-item-container`)}>\n <StepperButton\n data-testid={`${dataTestId}-disabled-sm`}\n variant={variant}\n step={step}\n indexOfLastItem={steps.length - 1}\n index={index}\n currentStepIndex={currentStepIndex}\n whenToBeVisible={VISIBILITY_STATES.SMALL_SCREEN}\n completedStepLabel={completedStepLabel}\n handleStepChange={handleStepChange}\n handleStepFocus={handleStepFocus}\n />\n </span>\n );\n\n return (\n <li\n className={cx(`${rootClassName}__list-item`, {\n [`${rootClassName}__list-item--current`]: index === currentStepIndex,\n })}\n ref={index === 0 ? firstStepRef : index === steps.length - 1 ? lastStepRef : null}\n key={step.label}\n >\n {step.disabled ? (\n <>\n <Tooltip\n contentClassName={cx(`${rootClassName}__tooltip-content`)}\n triggerElement={tooltipTriggerItem}\n >\n {step.label}\n </Tooltip>\n <StepperButton\n data-testid={`${dataTestId}-disabled-lg`}\n variant={variant}\n step={step}\n indexOfLastItem={steps.length - 1}\n index={index}\n currentStepIndex={currentStepIndex}\n whenToBeVisible={VISIBILITY_STATES.LARGE_SCREEN}\n completedStepLabel={completedStepLabel}\n handleStepChange={handleStepChange}\n handleStepFocus={handleStepFocus}\n />\n </>\n ) : (\n <StepperButton\n data-testid={dataTestId}\n variant={variant}\n step={step}\n indexOfLastItem={steps.length - 1}\n index={index}\n currentStepIndex={currentStepIndex}\n whenToBeVisible={VISIBILITY_STATES.ALWAYS}\n completedStepLabel={completedStepLabel}\n handleStepChange={handleStepChange}\n handleStepFocus={handleStepFocus}\n />\n )}\n </li>\n );\n });\n return (\n <RovingFocusGroup.Root loop={false} dir=\"ltr\">\n <ol ref={ref} className={cx(`${rootClassName}__list`)}>\n {stepListItems}\n </ol>\n </RovingFocusGroup.Root>\n );\n }\n);\n","import { type RefObject, useEffect, useRef } from \"react\";\n\ninterface UseContentFocusHook<T extends HTMLElement> {\n contentRef: RefObject<T | null>;\n}\n\nexport const useContentFocus = <T extends HTMLElement>(\n currentStepIndex: number\n): UseContentFocusHook<T> => {\n const firstLoad = useRef<boolean>(true);\n const contentRef = useRef<T | null>(null);\n\n useEffect(() => {\n if (!firstLoad.current && contentRef.current !== null) {\n contentRef.current.focus();\n }\n firstLoad.current = false;\n }, [currentStepIndex]);\n\n return {\n contentRef,\n };\n};\n","import { type RefObject, useEffect, useRef, useState } from \"react\";\n\nexport const SCROLL_DIRECTION = {\n LEFT: \"left\",\n RIGHT: \"right\",\n} as const;\n\nexport type ScrollDirection = (typeof SCROLL_DIRECTION)[keyof typeof SCROLL_DIRECTION];\n\nexport type UseScrollHook<ContainerElement, WatchedElement> = {\n scrollContainer: RefObject<ContainerElement | null>;\n firstStepRef: RefObject<WatchedElement | null>;\n lastStepRef: RefObject<WatchedElement | null>;\n displayLeftScrollButton: boolean;\n displayRightScrollButton: boolean;\n handleHorizontalScroll: (dir: ScrollDirection) => void;\n};\n\nexport const useScrollButtons = <\n ContainerElement extends HTMLElement,\n WatchedElement extends HTMLElement\n>(): UseScrollHook<ContainerElement, WatchedElement> => {\n const scrollContainer = useRef<ContainerElement | null>(null);\n const firstStepRef = useRef<WatchedElement | null>(null);\n const lastStepRef = useRef<WatchedElement | null>(null);\n const [displayLeftScrollButton, setDisplayLeftScrollButton] = useState(false);\n const [displayRightScrollButton, setDisplayRightScrollButton] = useState(false);\n\n const handleHorizontalScroll = (dir: ScrollDirection): void => {\n if (!scrollContainer.current) {\n return;\n }\n const scrollableContainer = scrollContainer.current;\n const scrollableContainerWidth = scrollableContainer.clientWidth;\n const currentScrollLeft = scrollableContainer.scrollLeft;\n if (dir === SCROLL_DIRECTION.LEFT) {\n scrollableContainer.scroll({\n behavior: \"smooth\",\n left: currentScrollLeft - scrollableContainerWidth / 2,\n });\n }\n if (dir === SCROLL_DIRECTION.RIGHT) {\n scrollableContainer.scroll({\n behavior: \"smooth\",\n left: currentScrollLeft + scrollableContainerWidth / 2,\n });\n }\n };\n\n useEffect(() => {\n if (firstStepRef.current && lastStepRef.current && scrollContainer.current) {\n const observer: IntersectionObserver = new IntersectionObserver(\n (entries: IntersectionObserverEntry[]) => {\n for (const entry of entries) {\n if (entry.target === firstStepRef.current) {\n if (entry.isIntersecting) {\n setDisplayLeftScrollButton(false);\n } else {\n setDisplayLeftScrollButton(true);\n }\n continue;\n }\n if (entry.target === lastStepRef.current) {\n if (entry.isIntersecting) {\n setDisplayRightScrollButton(false);\n } else {\n setDisplayRightScrollButton(true);\n }\n }\n }\n },\n {\n root: scrollContainer.current,\n threshold: 0.95,\n }\n );\n\n observer.observe(firstStepRef.current);\n observer.observe(lastStepRef.current);\n\n return () => observer.disconnect();\n }\n return undefined;\n }, [firstStepRef, lastStepRef, scrollContainer]);\n\n return {\n scrollContainer,\n firstStepRef,\n lastStepRef,\n displayLeftScrollButton,\n displayRightScrollButton,\n handleHorizontalScroll,\n };\n};\n","import React, { Children, type ReactElement } from \"react\";\nimport { Button, BUTTON_VARIANT } from \"@purpur/button\";\nimport type { BaseProps } from \"@purpur/common-types\";\nimport { IconChevronLeft } from \"@purpur/icon/chevron-left\";\nimport { IconChevronRight } from \"@purpur/icon/chevron-right\";\nimport * as RovingFocusGroup from \"@radix-ui/react-roving-focus\";\nimport * as ScrollArea from \"@radix-ui/react-scroll-area\";\nimport c from \"classnames/bind\";\n\nimport { STEPPER_VARIANT } from \"./constants\";\nimport styles from \"./stepper.module.scss\";\nimport { StepperContainer } from \"./stepper-container\";\nimport { isStepperContent, StepperContent } from \"./stepper-content\";\nimport { StepperNavItems } from \"./stepper-nav-items\";\nimport { type Step, type StepChangeFunction, type StepperVariant } from \"./types\";\nimport { useContentFocus } from \"./use-content-focus.hook\";\nimport { SCROLL_DIRECTION, useScrollButtons } from \"./use-scroll-buttons.hook\";\n\nconst cx = c.bind(styles);\n\nconst rootClassName = \"purpur-stepper\";\n\nexport type StepperProps = Omit<BaseProps, \"children\"> & {\n children: Array<ReactElement<typeof StepperContent>> | ReactElement<typeof StepperContent>;\n completedStepLabel: string;\n currentStepIndex: number;\n onStepChange: StepChangeFunction;\n alignWithGrid?: boolean;\n leftScrollButtonAriaLabel: string;\n rightScrollButtonAriaLabel: string;\n variant: StepperVariant;\n};\n\nexport type StepperComponent<P> = React.FunctionComponent<P> & {\n Content: typeof StepperContent;\n};\n\nexport const Stepper: StepperComponent<StepperProps> = ({\n [\"aria-label\"]: ariaLabel,\n [\"data-testid\"]: dataTestId,\n children,\n className,\n completedStepLabel,\n currentStepIndex = 0,\n onStepChange,\n alignWithGrid = false,\n leftScrollButtonAriaLabel,\n rightScrollButtonAriaLabel,\n variant = STEPPER_VARIANT.PRIMARY,\n ...props\n}: StepperProps) => {\n const stepperContentChildren = Children.toArray(children).filter(isStepperContent);\n const steps: Step[] = Children.map(stepperContentChildren, (child) => {\n const { disabled, finished, label } = child.props;\n return {\n disabled: disabled ?? false,\n finished: finished ?? false,\n label,\n };\n });\n const { contentRef } = useContentFocus<HTMLDivElement>(currentStepIndex);\n const {\n scrollContainer,\n firstStepRef,\n lastStepRef,\n displayLeftScrollButton,\n displayRightScrollButton,\n handleHorizontalScroll,\n } = useScrollButtons<HTMLDivElement, HTMLLIElement>();\n\n const classes: string = cx([\n className,\n rootClassName,\n {\n [`${rootClassName}--${variant}`]: variant,\n },\n ]);\n const scrollTriggerIntoView = (e: React.FocusEvent | React.MouseEvent): void => {\n (e.target as HTMLButtonElement).scrollIntoView({\n behavior: \"smooth\",\n block: \"nearest\",\n inline: \"center\",\n });\n };\n\n const handleStepChange = (e: React.MouseEvent, idx: number): void => {\n e.preventDefault();\n scrollTriggerIntoView(e);\n onStepChange(idx);\n };\n\n const handleStepFocus = (e: React.FocusEvent): void => {\n scrollTriggerIntoView(e);\n };\n\n return (\n <div className={classes} {...props}>\n <StepperContainer variant={variant} alignWithGrid={alignWithGrid}>\n <div className={cx(`${rootClassName}__nav-container`)}>\n <ScrollArea.Root>\n <ScrollArea.Viewport ref={scrollContainer}>\n <div\n aria-label={ariaLabel}\n data-testid={dataTestId}\n className={cx([\n `${rootClassName}__nav`,\n {\n [`${rootClassName}__nav--${variant}`]: variant,\n },\n ])}\n >\n <RovingFocusGroup.Root loop={false} dir=\"ltr\">\n <StepperNavItems\n data-testid={dataTestId}\n variant={variant}\n firstStepRef={firstStepRef}\n lastStepRef={lastStepRef}\n steps={steps}\n currentStepIndex={currentStepIndex}\n handleStepChange={handleStepChange}\n handleStepFocus={handleStepFocus}\n completedStepLabel={completedStepLabel}\n />\n </RovingFocusGroup.Root>\n </div>\n </ScrollArea.Viewport>\n <ScrollArea.Scrollbar orientation=\"horizontal\">\n <ScrollArea.Thumb />\n </ScrollArea.Scrollbar>\n </ScrollArea.Root>\n {displayLeftScrollButton && (\n <Button\n aria-label={leftScrollButtonAriaLabel}\n className={cx([\n `${rootClassName}__scroll-button`,\n `${rootClassName}__scroll-button--left`,\n ])}\n variant={BUTTON_VARIANT.TERTIARY_PURPLE}\n tabIndex={-1}\n iconOnly\n onClick={() => {\n handleHorizontalScroll(SCROLL_DIRECTION.LEFT);\n }}\n >\n <IconChevronLeft className={cx(`${rootClassName}__scroll-button-icon`)} size=\"md\" />\n </Button>\n )}\n {displayRightScrollButton && (\n <Button\n aria-label={rightScrollButtonAriaLabel}\n className={cx([\n `${rootClassName}__scroll-button`,\n `${rootClassName}__scroll-button--right`,\n ])}\n variant={BUTTON_VARIANT.TERTIARY_PURPLE}\n tabIndex={-1}\n iconOnly\n onClick={() => {\n handleHorizontalScroll(SCROLL_DIRECTION.RIGHT);\n }}\n >\n <IconChevronRight className={cx(`${rootClassName}__scroll-button-icon`)} size=\"md\" />\n </Button>\n )}\n </div>\n </StepperContainer>\n <div\n tabIndex={-1}\n aria-labelledby={`stepper-trigger-button-${currentStepIndex}`}\n ref={contentRef}\n style={{ outline: \"none\" }}\n >\n <div aria-live=\"polite\">\n {Children.map(stepperContentChildren, (child, index: number) => (\n <div\n className={cx({\n [`${rootClassName}__hidden`]: index !== currentStepIndex,\n })}\n hidden={index !== currentStepIndex}\n >\n {child}\n </div>\n ))}\n </div>\n </div>\n </div>\n );\n};\n\nStepper.Content = StepperContent;\n\nStepper.displayName = \"Stepper\";\n"],"names":["STEPPER_VARIANT","VISIBILITY_STATES","cx","c","styles","rootClassName","StepperContainer","dataTestId","children","className","alignWithGrid","variant","props","classes","jsx","StepperContent","forwardRef","ref","finished","rest","isStepperContent","child","isValidElement","StepNumber","current","disabled","stepNumber","StepperButton","step","indexOfLastItem","index","currentStepIndex","whenToBeVisible","handleStepChange","handleStepFocus","completedStepLabel","placement","isCurrentStep","RovingFocusGroup.Item","Button","BUTTON_VARIANT","e","IconCheckmark","StepperNavItems","steps","firstStepRef","lastStepRef","stepListItems","tooltipTriggerItem","jsxs","Fragment","Tooltip","RovingFocusGroup.Root","useContentFocus","firstLoad","useRef","contentRef","useEffect","SCROLL_DIRECTION","useScrollButtons","scrollContainer","displayLeftScrollButton","setDisplayLeftScrollButton","useState","displayRightScrollButton","setDisplayRightScrollButton","handleHorizontalScroll","dir","scrollableContainer","scrollableContainerWidth","currentScrollLeft","observer","entries","entry","Stepper","ariaLabel","onStepChange","leftScrollButtonAriaLabel","rightScrollButtonAriaLabel","stepperContentChildren","Children","label","scrollTriggerIntoView","idx","ScrollArea.Root","ScrollArea.Viewport","ScrollArea.Scrollbar","ScrollArea.Thumb","IconChevronLeft","IconChevronRight"],"mappings":"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"}
1
+ {"version":3,"file":"stepper-B-nCLs2D.mjs","sources":["../../../components/stepper/src/constants.ts","../../../components/stepper/src/stepper-container.tsx","../../../components/stepper/src/stepper-content.tsx","../../../components/stepper/src/stepper-button.tsx","../../../components/stepper/src/stepper-nav-items.tsx","../../../components/stepper/src/use-content-focus.hook.ts","../../../components/stepper/src/use-scroll-buttons.hook.ts","../../../components/stepper/src/stepper.tsx"],"sourcesContent":["export const STEPPER_VARIANT = {\n PRIMARY: \"primary\",\n SECONDARY: \"secondary\",\n} as const;\n\nexport const VISIBILITY_STATES = {\n SMALL_SCREEN: \"small-screen\",\n LARGE_SCREEN: \"large-screen\",\n ALWAYS: \"always\",\n} as const;\n","import React, { type ReactNode } from \"react\";\nimport type { BaseProps } from \"@purpur/common-types\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./stepper-container.module.scss\";\nimport { type StepperVariant } from \"./types\";\n\nconst cx = c.bind(styles);\n\nexport type StepperContainerProps = Omit<BaseProps, \"children\"> & {\n children: ReactNode;\n alignWithGrid: boolean;\n variant: StepperVariant;\n};\n\nconst rootClassName = \"purpur-stepper-container\";\n\nexport const StepperContainer = ({\n [\"data-testid\"]: dataTestId = \"purpur-stepper-container\",\n children,\n className,\n alignWithGrid,\n variant,\n ...props\n}: StepperContainerProps) => {\n const classes: string = cx(className, rootClassName, {\n [`${rootClassName}--${variant}`]: variant,\n [`${rootClassName}--align-with-grid`]: alignWithGrid,\n });\n\n return (\n <div className={classes} data-testid={dataTestId} {...props}>\n <div\n className={cx(`${rootClassName}__inner`, {\n [`${rootClassName}__inner--align-with-grid`]: alignWithGrid,\n })}\n >\n {children}\n </div>\n </div>\n );\n};\n","import React, { forwardRef, isValidElement, type ReactElement, type ReactNode } from \"react\";\nimport type { BaseProps } from \"@purpur/common-types\";\n\nimport { type Optional, type Step } from \"./types\";\n\nexport type StepperContentProps = Omit<BaseProps, \"children\"> & {\n children: ReactNode;\n} & Optional<Step, \"disabled\" | \"finished\">;\n\nexport const StepperContent = forwardRef<HTMLDivElement, StepperContentProps>(\n ({ children, ...props }, ref) => {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { finished, ...rest } = props;\n return (\n <div {...rest} ref={ref}>\n {children}\n </div>\n );\n }\n);\n\nexport const isStepperContent = (child?: ReactNode): child is ReactElement<StepperContentProps> =>\n !!child && isValidElement<StepperContentProps>(child) && !!child.props.label;\n","import React, { forwardRef } from \"react\";\nimport { Button, BUTTON_VARIANT } from \"@purpur/button\";\nimport type { BaseProps } from \"@purpur/common-types\";\nimport { IconCheckmark } from \"@purpur/icon/checkmark\";\nimport * as RovingFocusGroup from \"@radix-ui/react-roving-focus\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./stepper-button.module.scss\";\nimport {\n type HandleStepChangeFunction,\n type HandleStepFocusFunction,\n type Step,\n type StepperVariant,\n type VisibilityStates,\n} from \"./types\";\n\nconst cx = c.bind(styles);\nconst rootClassName = \"purpur-stepper-button\";\n\nexport type StepNumberProps = {\n current: boolean;\n disabled: boolean;\n stepNumber: number;\n [\"data-testid\"]?: string;\n};\n\nconst StepNumber = ({\n [\"data-testid\"]: dataTestId,\n current,\n disabled,\n stepNumber,\n}: StepNumberProps) => {\n return (\n <div\n data-testid={dataTestId}\n className={cx([\n `${rootClassName}__step-number`,\n {\n [`${rootClassName}__step-number--current`]: current,\n },\n {\n [`${rootClassName}__step-number--disabled`]: disabled,\n },\n ])}\n >\n {stepNumber}\n </div>\n );\n};\n\nexport type StepperButtonProps = Omit<BaseProps<\"button\">, \"children\"> & {\n variant: StepperVariant;\n step: Step;\n currentStepIndex: number;\n index: number;\n indexOfLastItem: number;\n whenToBeVisible: VisibilityStates;\n handleStepChange: HandleStepChangeFunction;\n handleStepFocus: HandleStepFocusFunction;\n completedStepLabel: string;\n};\n\nexport const StepperButton = forwardRef<HTMLButtonElement, StepperButtonProps>(\n (\n {\n className,\n [\"data-testid\"]: dataTestId,\n variant,\n step,\n indexOfLastItem,\n index,\n currentStepIndex,\n whenToBeVisible,\n handleStepChange,\n handleStepFocus,\n completedStepLabel,\n ...props\n },\n ref\n ) => {\n const placement = index === 0 ? \"first\" : index === indexOfLastItem ? \"last\" : \"middle\";\n const isCurrentStep = index === currentStepIndex;\n return (\n <RovingFocusGroup.Item asChild>\n <Button\n {...props}\n ref={ref}\n className={cx(\n className,\n rootClassName,\n `${rootClassName}--${placement}`,\n `${rootClassName}--${variant}`,\n `${rootClassName}--visibility-${whenToBeVisible}`,\n {\n [`${rootClassName}--current`]: isCurrentStep,\n },\n {\n [`${rootClassName}--disabled`]: step.disabled,\n },\n {\n [\"arrow-tail\"]: placement !== \"first\",\n },\n {\n [\"arrow-forward\"]: placement !== \"last\",\n }\n )}\n id={`stepper-trigger-button-${index}`}\n variant={BUTTON_VARIANT.TERTIARY_PURPLE}\n data-testid={`${dataTestId}-step-trigger-item-${index}`}\n disabled={step.disabled}\n aria-current={isCurrentStep && \"step\"}\n aria-label={\n step.finished && !isCurrentStep\n ? [step.label, completedStepLabel].filter(Boolean).join(\", \")\n : undefined\n }\n onClick={(e) => handleStepChange(e, index)}\n onFocus={handleStepFocus}\n >\n <span className={cx(`${rootClassName}__trigger-outline`)}>\n {step.finished && !isCurrentStep ? (\n <IconCheckmark\n className={cx(`${rootClassName}__icon`)}\n data-testid={`${dataTestId}-step-finished-icon`}\n size=\"sm\"\n />\n ) : (\n <StepNumber\n data-testid={`${dataTestId}-step-number`}\n current={isCurrentStep}\n disabled={step.disabled}\n stepNumber={index + 1}\n />\n )}\n <span\n className={cx(`${rootClassName}__step-label`, {\n [`sr-only--lg-down`]: !isCurrentStep,\n })}\n >\n {step.label}\n </span>\n </span>\n </Button>\n </RovingFocusGroup.Item>\n );\n }\n);\n","import React, { forwardRef, type RefObject } from \"react\";\nimport { Tooltip } from \"@purpur/tooltip\";\nimport * as RovingFocusGroup from \"@radix-ui/react-roving-focus\";\nimport c from \"classnames/bind\";\n\nimport { VISIBILITY_STATES } from \"./constants\";\nimport { StepperButton } from \"./stepper-button\";\nimport styles from \"./stepper-nav-items.module.scss\";\nimport {\n type HandleStepChangeFunction,\n type HandleStepFocusFunction,\n type Step,\n type StepperVariant,\n} from \"./types\";\n\nconst cx = c.bind(styles);\n\nconst rootClassName = \"purpur-stepper-nav-items\";\n\nexport type StepperNavItemsProps = {\n variant: StepperVariant;\n [\"data-testid\"]?: string;\n firstStepRef: RefObject<HTMLLIElement | null>;\n lastStepRef: RefObject<HTMLLIElement | null>;\n steps: Step[];\n currentStepIndex: number;\n handleStepChange: HandleStepChangeFunction;\n handleStepFocus: HandleStepFocusFunction;\n completedStepLabel: string;\n};\n\nexport const StepperNavItems = forwardRef<HTMLOListElement, StepperNavItemsProps>(\n (\n {\n [\"data-testid\"]: dataTestId,\n variant,\n handleStepChange,\n handleStepFocus,\n steps,\n firstStepRef,\n lastStepRef,\n currentStepIndex,\n completedStepLabel,\n },\n ref\n ) => {\n const stepListItems = steps.map((step: Step, index: number) => {\n const tooltipTriggerItem = (\n <span className={cx(`${rootClassName}__tooltip-trigger-item-container`)}>\n <StepperButton\n data-testid={`${dataTestId}-disabled-sm`}\n variant={variant}\n step={step}\n indexOfLastItem={steps.length - 1}\n index={index}\n currentStepIndex={currentStepIndex}\n whenToBeVisible={VISIBILITY_STATES.SMALL_SCREEN}\n completedStepLabel={completedStepLabel}\n handleStepChange={handleStepChange}\n handleStepFocus={handleStepFocus}\n />\n </span>\n );\n\n return (\n <li\n className={cx(`${rootClassName}__list-item`, {\n [`${rootClassName}__list-item--current`]: index === currentStepIndex,\n })}\n ref={index === 0 ? firstStepRef : index === steps.length - 1 ? lastStepRef : null}\n key={step.label}\n >\n {step.disabled ? (\n <>\n <Tooltip\n contentClassName={cx(`${rootClassName}__tooltip-content`)}\n triggerElement={tooltipTriggerItem}\n >\n {step.label}\n </Tooltip>\n <StepperButton\n data-testid={`${dataTestId}-disabled-lg`}\n variant={variant}\n step={step}\n indexOfLastItem={steps.length - 1}\n index={index}\n currentStepIndex={currentStepIndex}\n whenToBeVisible={VISIBILITY_STATES.LARGE_SCREEN}\n completedStepLabel={completedStepLabel}\n handleStepChange={handleStepChange}\n handleStepFocus={handleStepFocus}\n />\n </>\n ) : (\n <StepperButton\n data-testid={dataTestId}\n variant={variant}\n step={step}\n indexOfLastItem={steps.length - 1}\n index={index}\n currentStepIndex={currentStepIndex}\n whenToBeVisible={VISIBILITY_STATES.ALWAYS}\n completedStepLabel={completedStepLabel}\n handleStepChange={handleStepChange}\n handleStepFocus={handleStepFocus}\n />\n )}\n </li>\n );\n });\n return (\n <RovingFocusGroup.Root loop={false} dir=\"ltr\">\n <ol ref={ref} className={cx(`${rootClassName}__list`)}>\n {stepListItems}\n </ol>\n </RovingFocusGroup.Root>\n );\n }\n);\n","import { type RefObject, useEffect, useRef } from \"react\";\n\ninterface UseContentFocusHook<T extends HTMLElement> {\n contentRef: RefObject<T | null>;\n}\n\nexport const useContentFocus = <T extends HTMLElement>(\n currentStepIndex: number\n): UseContentFocusHook<T> => {\n const firstLoad = useRef<boolean>(true);\n const contentRef = useRef<T | null>(null);\n\n useEffect(() => {\n if (!firstLoad.current && contentRef.current !== null) {\n contentRef.current.focus();\n }\n firstLoad.current = false;\n }, [currentStepIndex]);\n\n return {\n contentRef,\n };\n};\n","import { type RefObject, useEffect, useRef, useState } from \"react\";\n\nexport const SCROLL_DIRECTION = {\n LEFT: \"left\",\n RIGHT: \"right\",\n} as const;\n\nexport type ScrollDirection = (typeof SCROLL_DIRECTION)[keyof typeof SCROLL_DIRECTION];\n\nexport type UseScrollHook<ContainerElement, WatchedElement> = {\n scrollContainer: RefObject<ContainerElement | null>;\n firstStepRef: RefObject<WatchedElement | null>;\n lastStepRef: RefObject<WatchedElement | null>;\n displayLeftScrollButton: boolean;\n displayRightScrollButton: boolean;\n handleHorizontalScroll: (dir: ScrollDirection) => void;\n};\n\nexport const useScrollButtons = <\n ContainerElement extends HTMLElement,\n WatchedElement extends HTMLElement\n>(): UseScrollHook<ContainerElement, WatchedElement> => {\n const scrollContainer = useRef<ContainerElement | null>(null);\n const firstStepRef = useRef<WatchedElement | null>(null);\n const lastStepRef = useRef<WatchedElement | null>(null);\n const [displayLeftScrollButton, setDisplayLeftScrollButton] = useState(false);\n const [displayRightScrollButton, setDisplayRightScrollButton] = useState(false);\n\n const handleHorizontalScroll = (dir: ScrollDirection): void => {\n if (!scrollContainer.current) {\n return;\n }\n const scrollableContainer = scrollContainer.current;\n const scrollableContainerWidth = scrollableContainer.clientWidth;\n const currentScrollLeft = scrollableContainer.scrollLeft;\n if (dir === SCROLL_DIRECTION.LEFT) {\n scrollableContainer.scroll({\n behavior: \"smooth\",\n left: currentScrollLeft - scrollableContainerWidth / 2,\n });\n }\n if (dir === SCROLL_DIRECTION.RIGHT) {\n scrollableContainer.scroll({\n behavior: \"smooth\",\n left: currentScrollLeft + scrollableContainerWidth / 2,\n });\n }\n };\n\n useEffect(() => {\n if (firstStepRef.current && lastStepRef.current && scrollContainer.current) {\n const observer: IntersectionObserver = new IntersectionObserver(\n (entries: IntersectionObserverEntry[]) => {\n for (const entry of entries) {\n if (entry.target === firstStepRef.current) {\n if (entry.isIntersecting) {\n setDisplayLeftScrollButton(false);\n } else {\n setDisplayLeftScrollButton(true);\n }\n continue;\n }\n if (entry.target === lastStepRef.current) {\n if (entry.isIntersecting) {\n setDisplayRightScrollButton(false);\n } else {\n setDisplayRightScrollButton(true);\n }\n }\n }\n },\n {\n root: scrollContainer.current,\n threshold: 0.95,\n }\n );\n\n observer.observe(firstStepRef.current);\n observer.observe(lastStepRef.current);\n\n return () => observer.disconnect();\n }\n return undefined;\n }, [firstStepRef, lastStepRef, scrollContainer]);\n\n return {\n scrollContainer,\n firstStepRef,\n lastStepRef,\n displayLeftScrollButton,\n displayRightScrollButton,\n handleHorizontalScroll,\n };\n};\n","import React, { Children, type ReactElement } from \"react\";\nimport { Button, BUTTON_VARIANT } from \"@purpur/button\";\nimport type { BaseProps } from \"@purpur/common-types\";\nimport { IconChevronLeft } from \"@purpur/icon/chevron-left\";\nimport { IconChevronRight } from \"@purpur/icon/chevron-right\";\nimport * as RovingFocusGroup from \"@radix-ui/react-roving-focus\";\nimport * as ScrollArea from \"@radix-ui/react-scroll-area\";\nimport c from \"classnames/bind\";\n\nimport { STEPPER_VARIANT } from \"./constants\";\nimport styles from \"./stepper.module.scss\";\nimport { StepperContainer } from \"./stepper-container\";\nimport { isStepperContent, StepperContent } from \"./stepper-content\";\nimport { StepperNavItems } from \"./stepper-nav-items\";\nimport { type Step, type StepChangeFunction, type StepperVariant } from \"./types\";\nimport { useContentFocus } from \"./use-content-focus.hook\";\nimport { SCROLL_DIRECTION, useScrollButtons } from \"./use-scroll-buttons.hook\";\n\nconst cx = c.bind(styles);\n\nconst rootClassName = \"purpur-stepper\";\n\nexport type StepperProps = Omit<BaseProps, \"children\"> & {\n children: Array<ReactElement<typeof StepperContent>> | ReactElement<typeof StepperContent>;\n completedStepLabel: string;\n currentStepIndex: number;\n onStepChange: StepChangeFunction;\n alignWithGrid?: boolean;\n leftScrollButtonAriaLabel: string;\n rightScrollButtonAriaLabel: string;\n variant: StepperVariant;\n};\n\nexport type StepperComponent<P> = React.FunctionComponent<P> & {\n Content: typeof StepperContent;\n};\n\nexport const Stepper: StepperComponent<StepperProps> = ({\n [\"aria-label\"]: ariaLabel,\n [\"data-testid\"]: dataTestId,\n children,\n className,\n completedStepLabel,\n currentStepIndex = 0,\n onStepChange,\n alignWithGrid = false,\n leftScrollButtonAriaLabel,\n rightScrollButtonAriaLabel,\n variant = STEPPER_VARIANT.PRIMARY,\n ...props\n}: StepperProps) => {\n const stepperContentChildren = Children.toArray(children).filter(isStepperContent);\n const steps: Step[] = Children.map(stepperContentChildren, (child) => {\n const { disabled, finished, label } = child.props;\n return {\n disabled: disabled ?? false,\n finished: finished ?? false,\n label,\n };\n });\n const { contentRef } = useContentFocus<HTMLDivElement>(currentStepIndex);\n const {\n scrollContainer,\n firstStepRef,\n lastStepRef,\n displayLeftScrollButton,\n displayRightScrollButton,\n handleHorizontalScroll,\n } = useScrollButtons<HTMLDivElement, HTMLLIElement>();\n\n const classes: string = cx([\n className,\n rootClassName,\n {\n [`${rootClassName}--${variant}`]: variant,\n },\n ]);\n const scrollTriggerIntoView = (e: React.FocusEvent | React.MouseEvent): void => {\n (e.target as HTMLButtonElement).scrollIntoView({\n behavior: \"smooth\",\n block: \"nearest\",\n inline: \"center\",\n });\n };\n\n const handleStepChange = (e: React.MouseEvent, idx: number): void => {\n e.preventDefault();\n scrollTriggerIntoView(e);\n onStepChange(idx);\n };\n\n const handleStepFocus = (e: React.FocusEvent): void => {\n scrollTriggerIntoView(e);\n };\n\n return (\n <div className={classes} {...props}>\n <StepperContainer variant={variant} alignWithGrid={alignWithGrid}>\n <div className={cx(`${rootClassName}__nav-container`)}>\n <ScrollArea.Root>\n <ScrollArea.Viewport ref={scrollContainer}>\n <div\n aria-label={ariaLabel}\n data-testid={dataTestId}\n className={cx([\n `${rootClassName}__nav`,\n {\n [`${rootClassName}__nav--${variant}`]: variant,\n },\n ])}\n >\n <RovingFocusGroup.Root loop={false} dir=\"ltr\">\n <StepperNavItems\n data-testid={dataTestId}\n variant={variant}\n firstStepRef={firstStepRef}\n lastStepRef={lastStepRef}\n steps={steps}\n currentStepIndex={currentStepIndex}\n handleStepChange={handleStepChange}\n handleStepFocus={handleStepFocus}\n completedStepLabel={completedStepLabel}\n />\n </RovingFocusGroup.Root>\n </div>\n </ScrollArea.Viewport>\n <ScrollArea.Scrollbar orientation=\"horizontal\">\n <ScrollArea.Thumb />\n </ScrollArea.Scrollbar>\n </ScrollArea.Root>\n {displayLeftScrollButton && (\n <Button\n aria-label={leftScrollButtonAriaLabel}\n className={cx([\n `${rootClassName}__scroll-button`,\n `${rootClassName}__scroll-button--left`,\n ])}\n variant={BUTTON_VARIANT.TERTIARY_PURPLE}\n tabIndex={-1}\n iconOnly\n onClick={() => {\n handleHorizontalScroll(SCROLL_DIRECTION.LEFT);\n }}\n >\n <IconChevronLeft className={cx(`${rootClassName}__scroll-button-icon`)} size=\"md\" />\n </Button>\n )}\n {displayRightScrollButton && (\n <Button\n aria-label={rightScrollButtonAriaLabel}\n className={cx([\n `${rootClassName}__scroll-button`,\n `${rootClassName}__scroll-button--right`,\n ])}\n variant={BUTTON_VARIANT.TERTIARY_PURPLE}\n tabIndex={-1}\n iconOnly\n onClick={() => {\n handleHorizontalScroll(SCROLL_DIRECTION.RIGHT);\n }}\n >\n <IconChevronRight className={cx(`${rootClassName}__scroll-button-icon`)} size=\"md\" />\n </Button>\n )}\n </div>\n </StepperContainer>\n <div\n tabIndex={-1}\n aria-labelledby={`stepper-trigger-button-${currentStepIndex}`}\n ref={contentRef}\n style={{ outline: \"none\" }}\n >\n <div aria-live=\"polite\">\n {Children.map(stepperContentChildren, (child, index: number) => (\n <div\n className={cx({\n [`${rootClassName}__hidden`]: index !== currentStepIndex,\n })}\n hidden={index !== currentStepIndex}\n >\n {child}\n </div>\n ))}\n </div>\n </div>\n </div>\n );\n};\n\nStepper.Content = StepperContent;\n\nStepper.displayName = \"Stepper\";\n"],"names":["STEPPER_VARIANT","VISIBILITY_STATES","cx","c","styles","rootClassName","StepperContainer","dataTestId","children","className","alignWithGrid","variant","props","classes","jsx","StepperContent","forwardRef","ref","finished","rest","isStepperContent","child","isValidElement","StepNumber","current","disabled","stepNumber","StepperButton","step","indexOfLastItem","index","currentStepIndex","whenToBeVisible","handleStepChange","handleStepFocus","completedStepLabel","placement","isCurrentStep","RovingFocusGroup.Item","Button","BUTTON_VARIANT","e","IconCheckmark","StepperNavItems","steps","firstStepRef","lastStepRef","stepListItems","tooltipTriggerItem","jsxs","Fragment","Tooltip","RovingFocusGroup.Root","useContentFocus","firstLoad","useRef","contentRef","useEffect","SCROLL_DIRECTION","useScrollButtons","scrollContainer","displayLeftScrollButton","setDisplayLeftScrollButton","useState","displayRightScrollButton","setDisplayRightScrollButton","handleHorizontalScroll","dir","scrollableContainer","scrollableContainerWidth","currentScrollLeft","observer","entries","entry","Stepper","ariaLabel","onStepChange","leftScrollButtonAriaLabel","rightScrollButtonAriaLabel","stepperContentChildren","Children","label","scrollTriggerIntoView","idx","ScrollArea.Root","ScrollArea.Viewport","ScrollArea.Scrollbar","ScrollArea.Thumb","IconChevronLeft","IconChevronRight"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";const t=require("react/jsx-runtime"),l=require("react"),N=require("./button-DmybVApa.js"),M=require("./chevron-left.es-B0vPg5XM.js"),W=require("./chevron-right.es-Bv376M3o.js"),A=require("./index-BVmlsxuF.js"),x=require("./index-CoR7YA3H.js"),S=require("./bind-DeUYJ6m9.js"),J=require("./tooltip-CJGmJDFQ.js"),K=require("./checkmark.es-lYntWFA3.js"),Q={PRIMARY:"primary"},E={SMALL_SCREEN:"small-screen",LARGE_SCREEN:"large-screen",ALWAYS:"always"},X={"purpur-stepper__nav-container":"_purpur-stepper__nav-container_1rouo_1","purpur-stepper__nav":"_purpur-stepper__nav_1rouo_1","purpur-stepper":"_purpur-stepper_1rouo_1","purpur-stepper__scroll-button":"_purpur-stepper__scroll-button_1rouo_7","purpur-stepper__scroll-button--left":"_purpur-stepper__scroll-button--left_1rouo_18","purpur-stepper__scroll-button--right":"_purpur-stepper__scroll-button--right_1rouo_21","purpur-stepper__scroll-button-icon":"_purpur-stepper__scroll-button-icon_1rouo_24","purpur-stepper__hidden":"_purpur-stepper__hidden_1rouo_27"},Z={"purpur-stepper-container":"_purpur-stepper-container_162zw_1","purpur-stepper-container__inner--align-with-grid":"_purpur-stepper-container__inner--align-with-grid_162zw_5","purpur-stepper-container--primary":"_purpur-stepper-container--primary_162zw_18","purpur-stepper-container--secondary":"_purpur-stepper-container--secondary_162zw_21"},k=S.c.bind(Z),j="purpur-stepper-container",tt=({["data-testid"]:r="purpur-stepper-container",children:e,className:s,alignWithGrid:n,variant:i,...p})=>{const m=k(s,j,{[`${j}--${i}`]:i,[`${j}--align-with-grid`]:n});return t.jsx("div",{className:m,"data-testid":r,...p,children:t.jsx("div",{className:k(`${j}__inner`,{[`${j}__inner--align-with-grid`]:n}),children:e})})},rt=l.forwardRef(({children:r,...e},s)=>{const{finished:n,...i}=e;return t.jsx("div",{...i,ref:s,children:r})}),et=r=>!!r&&l.isValidElement(r)&&!!r.props.label,st={"purpur-stepper-button":"_purpur-stepper-button_1dtrz_1","purpur-stepper-button__trigger-outline":"_purpur-stepper-button__trigger-outline_1dtrz_21","purpur-stepper-button--first":"_purpur-stepper-button--first_1dtrz_33","purpur-stepper-button--current":"_purpur-stepper-button--current_1dtrz_33","purpur-stepper-button--middle":"_purpur-stepper-button--middle_1dtrz_38","purpur-stepper-button--last":"_purpur-stepper-button--last_1dtrz_48","purpur-stepper-button--visibility-small-screen":"_purpur-stepper-button--visibility-small-screen_1dtrz_58","purpur-stepper-button--visibility-large-screen":"_purpur-stepper-button--visibility-large-screen_1dtrz_66","purpur-stepper-button__icon":"_purpur-stepper-button__icon_1dtrz_90","purpur-stepper-button__step-number":"_purpur-stepper-button__step-number_1dtrz_100","purpur-stepper-button__step-number--current":"_purpur-stepper-button__step-number--current_1dtrz_111","purpur-stepper-button__step-number--disabled":"_purpur-stepper-button__step-number--disabled_1dtrz_115","purpur-stepper-button__step-label":"_purpur-stepper-button__step-label_1dtrz_120","arrow-forward":"_arrow-forward_1dtrz_124","purpur-stepper-button--primary":"_purpur-stepper-button--primary_1dtrz_136","purpur-stepper-button--disabled":"_purpur-stepper-button--disabled_1dtrz_139","purpur-stepper-button--secondary":"_purpur-stepper-button--secondary_1dtrz_145","arrow-tail":"_arrow-tail_1dtrz_155","sr-only--lg-down":"_sr-only--lg-down_1dtrz_174"},w=S.c.bind(st),d="purpur-stepper-button",nt=({["data-testid"]:r,current:e,disabled:s,stepNumber:n})=>t.jsx("div",{"data-testid":r,className:w([`${d}__step-number`,{[`${d}__step-number--current`]:e},{[`${d}__step-number--disabled`]:s}]),children:n}),L=l.forwardRef(({className:r,["data-testid"]:e,variant:s,step:n,indexOfLastItem:i,index:p,currentStepIndex:m,whenToBeVisible:f,handleStepChange:u,handleStepFocus:a,completedStepLabel:o,..._},b)=>{const $=p===0?"first":p===i?"last":"middle",g=p===m;return t.jsx(A.Item,{asChild:!0,children:t.jsx(N.Button,{..._,ref:b,className:w(r,d,`${d}--${$}`,`${d}--${s}`,`${d}--visibility-${f}`,{[`${d}--current`]:g},{[`${d}--disabled`]:n.disabled},{"arrow-tail":$!=="first"},{"arrow-forward":$!=="last"}),id:`stepper-trigger-button-${p}`,variant:N.BUTTON_VARIANT.TERTIARY_PURPLE,"data-testid":`${e}-step-trigger-item-${p}`,disabled:n.disabled,"aria-current":g&&"step","aria-label":n.finished&&!g?[n.label,o].filter(Boolean).join(", "):void 0,onClick:T=>u(T,p),onFocus:a,children:t.jsxs("span",{className:w(`${d}__trigger-outline`),children:[n.finished&&!g?t.jsx(K.a,{className:w(`${d}__icon`),"data-testid":`${e}-step-finished-icon`,size:"sm"}):t.jsx(nt,{"data-testid":`${e}-step-number`,current:g,disabled:n.disabled,stepNumber:p+1}),t.jsx("span",{className:w(`${d}__step-label`,{"sr-only--lg-down":!g}),children:n.label})]})})})}),pt={"purpur-stepper-nav-items__list":"_purpur-stepper-nav-items__list_lgkh0_1","purpur-stepper-nav-items__list-item":"_purpur-stepper-nav-items__list-item_lgkh0_7","purpur-stepper-nav-items__list-item--current":"_purpur-stepper-nav-items__list-item--current_lgkh0_25","purpur-stepper-nav-items__tooltip-content":"_purpur-stepper-nav-items__tooltip-content_lgkh0_31","purpur-stepper-nav-items__tooltip-trigger-item-container":"_purpur-stepper-nav-items__tooltip-trigger-item-container_lgkh0_34"},z=S.c.bind(pt),y="purpur-stepper-nav-items",ot=l.forwardRef(({["data-testid"]:r,variant:e,handleStepChange:s,handleStepFocus:n,steps:i,firstStepRef:p,lastStepRef:m,currentStepIndex:f,completedStepLabel:u},a)=>{const o=i.map((_,b)=>{const $=t.jsx("span",{className:z(`${y}__tooltip-trigger-item-container`),children:t.jsx(L,{"data-testid":`${r}-disabled-sm`,variant:e,step:_,indexOfLastItem:i.length-1,index:b,currentStepIndex:f,whenToBeVisible:E.SMALL_SCREEN,completedStepLabel:u,handleStepChange:s,handleStepFocus:n})});return t.jsx("li",{className:z(`${y}__list-item`,{[`${y}__list-item--current`]:b===f}),ref:b===0?p:b===i.length-1?m:null,children:_.disabled?t.jsxs(t.Fragment,{children:[t.jsx(J.Tooltip,{contentClassName:z(`${y}__tooltip-content`),triggerElement:$,children:_.label}),t.jsx(L,{"data-testid":`${r}-disabled-lg`,variant:e,step:_,indexOfLastItem:i.length-1,index:b,currentStepIndex:f,whenToBeVisible:E.LARGE_SCREEN,completedStepLabel:u,handleStepChange:s,handleStepFocus:n})]}):t.jsx(L,{"data-testid":r,variant:e,step:_,indexOfLastItem:i.length-1,index:b,currentStepIndex:f,whenToBeVisible:E.ALWAYS,completedStepLabel:u,handleStepChange:s,handleStepFocus:n})},_.label)});return t.jsx(A.Root,{loop:!1,dir:"ltr",children:t.jsx("ol",{ref:a,className:z(`${y}__list`),children:o})})}),it=r=>{const e=l.useRef(!0),s=l.useRef(null);return l.useEffect(()=>{!e.current&&s.current!==null&&s.current.focus(),e.current=!1},[r]),{contentRef:s}},C={LEFT:"left",RIGHT:"right"},lt=()=>{const r=l.useRef(null),e=l.useRef(null),s=l.useRef(null),[n,i]=l.useState(!1),[p,m]=l.useState(!1),f=u=>{if(!r.current)return;const a=r.current,o=a.clientWidth,_=a.scrollLeft;u===C.LEFT&&a.scroll({behavior:"smooth",left:_-o/2}),u===C.RIGHT&&a.scroll({behavior:"smooth",left:_+o/2})};return l.useEffect(()=>{if(e.current&&s.current&&r.current){const u=new IntersectionObserver(a=>{for(const o of a){if(o.target===e.current){o.isIntersecting?i(!1):i(!0);continue}o.target===s.current&&(o.isIntersecting?m(!1):m(!0))}},{root:r.current,threshold:.95});return u.observe(e.current),u.observe(s.current),()=>u.disconnect()}},[e,s,r]),{scrollContainer:r,firstStepRef:e,lastStepRef:s,displayLeftScrollButton:n,displayRightScrollButton:p,handleHorizontalScroll:f}},R=S.c.bind(X),c="purpur-stepper",I=({["aria-label"]:r,["data-testid"]:e,children:s,className:n,completedStepLabel:i,currentStepIndex:p=0,onStepChange:m,alignWithGrid:f=!1,leftScrollButtonAriaLabel:u,rightScrollButtonAriaLabel:a,variant:o=Q.PRIMARY,..._})=>{const b=l.Children.toArray(s).filter(et),$=l.Children.map(b,h=>{const{disabled:v,finished:D,label:G}=h.props;return{disabled:v??!1,finished:D??!1,label:G}}),{contentRef:g}=it(p),{scrollContainer:T,firstStepRef:O,lastStepRef:q,displayLeftScrollButton:P,displayRightScrollButton:Y,handleHorizontalScroll:B}=lt(),U=R([n,c,{[`${c}--${o}`]:o}]),V=h=>{h.target.scrollIntoView({behavior:"smooth",block:"nearest",inline:"center"})},F=(h,v)=>{h.preventDefault(),V(h),m(v)},H=h=>{V(h)};return t.jsxs("div",{className:U,..._,children:[t.jsx(tt,{variant:o,alignWithGrid:f,children:t.jsxs("div",{className:R(`${c}__nav-container`),children:[t.jsxs(x.Root,{children:[t.jsx(x.Viewport,{ref:T,children:t.jsx("div",{"aria-label":r,"data-testid":e,className:R([`${c}__nav`,{[`${c}__nav--${o}`]:o}]),children:t.jsx(A.Root,{loop:!1,dir:"ltr",children:t.jsx(ot,{"data-testid":e,variant:o,firstStepRef:O,lastStepRef:q,steps:$,currentStepIndex:p,handleStepChange:F,handleStepFocus:H,completedStepLabel:i})})})}),t.jsx(x.Scrollbar,{orientation:"horizontal",children:t.jsx(x.Thumb,{})})]}),P&&t.jsx(N.Button,{"aria-label":u,className:R([`${c}__scroll-button`,`${c}__scroll-button--left`]),variant:N.BUTTON_VARIANT.TERTIARY_PURPLE,tabIndex:-1,iconOnly:!0,onClick:()=>{B(C.LEFT)},children:t.jsx(M.l,{className:R(`${c}__scroll-button-icon`),size:"md"})}),Y&&t.jsx(N.Button,{"aria-label":a,className:R([`${c}__scroll-button`,`${c}__scroll-button--right`]),variant:N.BUTTON_VARIANT.TERTIARY_PURPLE,tabIndex:-1,iconOnly:!0,onClick:()=>{B(C.RIGHT)},children:t.jsx(W.n,{className:R(`${c}__scroll-button-icon`),size:"md"})})]})}),t.jsx("div",{tabIndex:-1,"aria-labelledby":`stepper-trigger-button-${p}`,ref:g,style:{outline:"none"},children:t.jsx("div",{"aria-live":"polite",children:l.Children.map(b,(h,v)=>t.jsx("div",{className:R({[`${c}__hidden`]:v!==p}),hidden:v!==p,children:h}))})})]})};I.Content=rt;I.displayName="Stepper";exports.Stepper=I;
2
- //# sourceMappingURL=stepper-5qMo_shq.js.map
1
+ "use strict";const t=require("react/jsx-runtime"),l=require("react"),N=require("./button-DmybVApa.js"),M=require("./chevron-left.es-B0vPg5XM.js"),W=require("./chevron-right.es-Bv376M3o.js"),A=require("./index-BVmlsxuF.js"),x=require("./index-CoR7YA3H.js"),S=require("./bind-DeUYJ6m9.js"),J=require("./tooltip-CDnJKoIA.js"),K=require("./checkmark.es-lYntWFA3.js"),Q={PRIMARY:"primary"},E={SMALL_SCREEN:"small-screen",LARGE_SCREEN:"large-screen",ALWAYS:"always"},X={"purpur-stepper__nav-container":"_purpur-stepper__nav-container_1rouo_1","purpur-stepper__nav":"_purpur-stepper__nav_1rouo_1","purpur-stepper":"_purpur-stepper_1rouo_1","purpur-stepper__scroll-button":"_purpur-stepper__scroll-button_1rouo_7","purpur-stepper__scroll-button--left":"_purpur-stepper__scroll-button--left_1rouo_18","purpur-stepper__scroll-button--right":"_purpur-stepper__scroll-button--right_1rouo_21","purpur-stepper__scroll-button-icon":"_purpur-stepper__scroll-button-icon_1rouo_24","purpur-stepper__hidden":"_purpur-stepper__hidden_1rouo_27"},Z={"purpur-stepper-container":"_purpur-stepper-container_162zw_1","purpur-stepper-container__inner--align-with-grid":"_purpur-stepper-container__inner--align-with-grid_162zw_5","purpur-stepper-container--primary":"_purpur-stepper-container--primary_162zw_18","purpur-stepper-container--secondary":"_purpur-stepper-container--secondary_162zw_21"},k=S.c.bind(Z),j="purpur-stepper-container",tt=({["data-testid"]:r="purpur-stepper-container",children:e,className:s,alignWithGrid:n,variant:i,...p})=>{const m=k(s,j,{[`${j}--${i}`]:i,[`${j}--align-with-grid`]:n});return t.jsx("div",{className:m,"data-testid":r,...p,children:t.jsx("div",{className:k(`${j}__inner`,{[`${j}__inner--align-with-grid`]:n}),children:e})})},rt=l.forwardRef(({children:r,...e},s)=>{const{finished:n,...i}=e;return t.jsx("div",{...i,ref:s,children:r})}),et=r=>!!r&&l.isValidElement(r)&&!!r.props.label,st={"purpur-stepper-button":"_purpur-stepper-button_1dtrz_1","purpur-stepper-button__trigger-outline":"_purpur-stepper-button__trigger-outline_1dtrz_21","purpur-stepper-button--first":"_purpur-stepper-button--first_1dtrz_33","purpur-stepper-button--current":"_purpur-stepper-button--current_1dtrz_33","purpur-stepper-button--middle":"_purpur-stepper-button--middle_1dtrz_38","purpur-stepper-button--last":"_purpur-stepper-button--last_1dtrz_48","purpur-stepper-button--visibility-small-screen":"_purpur-stepper-button--visibility-small-screen_1dtrz_58","purpur-stepper-button--visibility-large-screen":"_purpur-stepper-button--visibility-large-screen_1dtrz_66","purpur-stepper-button__icon":"_purpur-stepper-button__icon_1dtrz_90","purpur-stepper-button__step-number":"_purpur-stepper-button__step-number_1dtrz_100","purpur-stepper-button__step-number--current":"_purpur-stepper-button__step-number--current_1dtrz_111","purpur-stepper-button__step-number--disabled":"_purpur-stepper-button__step-number--disabled_1dtrz_115","purpur-stepper-button__step-label":"_purpur-stepper-button__step-label_1dtrz_120","arrow-forward":"_arrow-forward_1dtrz_124","purpur-stepper-button--primary":"_purpur-stepper-button--primary_1dtrz_136","purpur-stepper-button--disabled":"_purpur-stepper-button--disabled_1dtrz_139","purpur-stepper-button--secondary":"_purpur-stepper-button--secondary_1dtrz_145","arrow-tail":"_arrow-tail_1dtrz_155","sr-only--lg-down":"_sr-only--lg-down_1dtrz_174"},w=S.c.bind(st),d="purpur-stepper-button",nt=({["data-testid"]:r,current:e,disabled:s,stepNumber:n})=>t.jsx("div",{"data-testid":r,className:w([`${d}__step-number`,{[`${d}__step-number--current`]:e},{[`${d}__step-number--disabled`]:s}]),children:n}),L=l.forwardRef(({className:r,["data-testid"]:e,variant:s,step:n,indexOfLastItem:i,index:p,currentStepIndex:m,whenToBeVisible:f,handleStepChange:u,handleStepFocus:a,completedStepLabel:o,..._},b)=>{const $=p===0?"first":p===i?"last":"middle",g=p===m;return t.jsx(A.Item,{asChild:!0,children:t.jsx(N.Button,{..._,ref:b,className:w(r,d,`${d}--${$}`,`${d}--${s}`,`${d}--visibility-${f}`,{[`${d}--current`]:g},{[`${d}--disabled`]:n.disabled},{"arrow-tail":$!=="first"},{"arrow-forward":$!=="last"}),id:`stepper-trigger-button-${p}`,variant:N.BUTTON_VARIANT.TERTIARY_PURPLE,"data-testid":`${e}-step-trigger-item-${p}`,disabled:n.disabled,"aria-current":g&&"step","aria-label":n.finished&&!g?[n.label,o].filter(Boolean).join(", "):void 0,onClick:T=>u(T,p),onFocus:a,children:t.jsxs("span",{className:w(`${d}__trigger-outline`),children:[n.finished&&!g?t.jsx(K.a,{className:w(`${d}__icon`),"data-testid":`${e}-step-finished-icon`,size:"sm"}):t.jsx(nt,{"data-testid":`${e}-step-number`,current:g,disabled:n.disabled,stepNumber:p+1}),t.jsx("span",{className:w(`${d}__step-label`,{"sr-only--lg-down":!g}),children:n.label})]})})})}),pt={"purpur-stepper-nav-items__list":"_purpur-stepper-nav-items__list_lgkh0_1","purpur-stepper-nav-items__list-item":"_purpur-stepper-nav-items__list-item_lgkh0_7","purpur-stepper-nav-items__list-item--current":"_purpur-stepper-nav-items__list-item--current_lgkh0_25","purpur-stepper-nav-items__tooltip-content":"_purpur-stepper-nav-items__tooltip-content_lgkh0_31","purpur-stepper-nav-items__tooltip-trigger-item-container":"_purpur-stepper-nav-items__tooltip-trigger-item-container_lgkh0_34"},z=S.c.bind(pt),y="purpur-stepper-nav-items",ot=l.forwardRef(({["data-testid"]:r,variant:e,handleStepChange:s,handleStepFocus:n,steps:i,firstStepRef:p,lastStepRef:m,currentStepIndex:f,completedStepLabel:u},a)=>{const o=i.map((_,b)=>{const $=t.jsx("span",{className:z(`${y}__tooltip-trigger-item-container`),children:t.jsx(L,{"data-testid":`${r}-disabled-sm`,variant:e,step:_,indexOfLastItem:i.length-1,index:b,currentStepIndex:f,whenToBeVisible:E.SMALL_SCREEN,completedStepLabel:u,handleStepChange:s,handleStepFocus:n})});return t.jsx("li",{className:z(`${y}__list-item`,{[`${y}__list-item--current`]:b===f}),ref:b===0?p:b===i.length-1?m:null,children:_.disabled?t.jsxs(t.Fragment,{children:[t.jsx(J.Tooltip,{contentClassName:z(`${y}__tooltip-content`),triggerElement:$,children:_.label}),t.jsx(L,{"data-testid":`${r}-disabled-lg`,variant:e,step:_,indexOfLastItem:i.length-1,index:b,currentStepIndex:f,whenToBeVisible:E.LARGE_SCREEN,completedStepLabel:u,handleStepChange:s,handleStepFocus:n})]}):t.jsx(L,{"data-testid":r,variant:e,step:_,indexOfLastItem:i.length-1,index:b,currentStepIndex:f,whenToBeVisible:E.ALWAYS,completedStepLabel:u,handleStepChange:s,handleStepFocus:n})},_.label)});return t.jsx(A.Root,{loop:!1,dir:"ltr",children:t.jsx("ol",{ref:a,className:z(`${y}__list`),children:o})})}),it=r=>{const e=l.useRef(!0),s=l.useRef(null);return l.useEffect(()=>{!e.current&&s.current!==null&&s.current.focus(),e.current=!1},[r]),{contentRef:s}},C={LEFT:"left",RIGHT:"right"},lt=()=>{const r=l.useRef(null),e=l.useRef(null),s=l.useRef(null),[n,i]=l.useState(!1),[p,m]=l.useState(!1),f=u=>{if(!r.current)return;const a=r.current,o=a.clientWidth,_=a.scrollLeft;u===C.LEFT&&a.scroll({behavior:"smooth",left:_-o/2}),u===C.RIGHT&&a.scroll({behavior:"smooth",left:_+o/2})};return l.useEffect(()=>{if(e.current&&s.current&&r.current){const u=new IntersectionObserver(a=>{for(const o of a){if(o.target===e.current){o.isIntersecting?i(!1):i(!0);continue}o.target===s.current&&(o.isIntersecting?m(!1):m(!0))}},{root:r.current,threshold:.95});return u.observe(e.current),u.observe(s.current),()=>u.disconnect()}},[e,s,r]),{scrollContainer:r,firstStepRef:e,lastStepRef:s,displayLeftScrollButton:n,displayRightScrollButton:p,handleHorizontalScroll:f}},R=S.c.bind(X),c="purpur-stepper",I=({["aria-label"]:r,["data-testid"]:e,children:s,className:n,completedStepLabel:i,currentStepIndex:p=0,onStepChange:m,alignWithGrid:f=!1,leftScrollButtonAriaLabel:u,rightScrollButtonAriaLabel:a,variant:o=Q.PRIMARY,..._})=>{const b=l.Children.toArray(s).filter(et),$=l.Children.map(b,h=>{const{disabled:v,finished:D,label:G}=h.props;return{disabled:v??!1,finished:D??!1,label:G}}),{contentRef:g}=it(p),{scrollContainer:T,firstStepRef:O,lastStepRef:q,displayLeftScrollButton:P,displayRightScrollButton:Y,handleHorizontalScroll:B}=lt(),U=R([n,c,{[`${c}--${o}`]:o}]),V=h=>{h.target.scrollIntoView({behavior:"smooth",block:"nearest",inline:"center"})},F=(h,v)=>{h.preventDefault(),V(h),m(v)},H=h=>{V(h)};return t.jsxs("div",{className:U,..._,children:[t.jsx(tt,{variant:o,alignWithGrid:f,children:t.jsxs("div",{className:R(`${c}__nav-container`),children:[t.jsxs(x.Root,{children:[t.jsx(x.Viewport,{ref:T,children:t.jsx("div",{"aria-label":r,"data-testid":e,className:R([`${c}__nav`,{[`${c}__nav--${o}`]:o}]),children:t.jsx(A.Root,{loop:!1,dir:"ltr",children:t.jsx(ot,{"data-testid":e,variant:o,firstStepRef:O,lastStepRef:q,steps:$,currentStepIndex:p,handleStepChange:F,handleStepFocus:H,completedStepLabel:i})})})}),t.jsx(x.Scrollbar,{orientation:"horizontal",children:t.jsx(x.Thumb,{})})]}),P&&t.jsx(N.Button,{"aria-label":u,className:R([`${c}__scroll-button`,`${c}__scroll-button--left`]),variant:N.BUTTON_VARIANT.TERTIARY_PURPLE,tabIndex:-1,iconOnly:!0,onClick:()=>{B(C.LEFT)},children:t.jsx(M.l,{className:R(`${c}__scroll-button-icon`),size:"md"})}),Y&&t.jsx(N.Button,{"aria-label":a,className:R([`${c}__scroll-button`,`${c}__scroll-button--right`]),variant:N.BUTTON_VARIANT.TERTIARY_PURPLE,tabIndex:-1,iconOnly:!0,onClick:()=>{B(C.RIGHT)},children:t.jsx(W.n,{className:R(`${c}__scroll-button-icon`),size:"md"})})]})}),t.jsx("div",{tabIndex:-1,"aria-labelledby":`stepper-trigger-button-${p}`,ref:g,style:{outline:"none"},children:t.jsx("div",{"aria-live":"polite",children:l.Children.map(b,(h,v)=>t.jsx("div",{className:R({[`${c}__hidden`]:v!==p}),hidden:v!==p,children:h}))})})]})};I.Content=rt;I.displayName="Stepper";exports.Stepper=I;
2
+ //# sourceMappingURL=stepper-CTKlnH0q.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"stepper-5qMo_shq.js","sources":["../../../components/stepper/src/constants.ts","../../../components/stepper/src/stepper-container.tsx","../../../components/stepper/src/stepper-content.tsx","../../../components/stepper/src/stepper-button.tsx","../../../components/stepper/src/stepper-nav-items.tsx","../../../components/stepper/src/use-content-focus.hook.ts","../../../components/stepper/src/use-scroll-buttons.hook.ts","../../../components/stepper/src/stepper.tsx"],"sourcesContent":["export const STEPPER_VARIANT = {\n PRIMARY: \"primary\",\n SECONDARY: \"secondary\",\n} as const;\n\nexport const VISIBILITY_STATES = {\n SMALL_SCREEN: \"small-screen\",\n LARGE_SCREEN: \"large-screen\",\n ALWAYS: \"always\",\n} as const;\n","import React, { type ReactNode } from \"react\";\nimport type { BaseProps } from \"@purpur/common-types\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./stepper-container.module.scss\";\nimport { type StepperVariant } from \"./types\";\n\nconst cx = c.bind(styles);\n\nexport type StepperContainerProps = Omit<BaseProps, \"children\"> & {\n children: ReactNode;\n alignWithGrid: boolean;\n variant: StepperVariant;\n};\n\nconst rootClassName = \"purpur-stepper-container\";\n\nexport const StepperContainer = ({\n [\"data-testid\"]: dataTestId = \"purpur-stepper-container\",\n children,\n className,\n alignWithGrid,\n variant,\n ...props\n}: StepperContainerProps) => {\n const classes: string = cx(className, rootClassName, {\n [`${rootClassName}--${variant}`]: variant,\n [`${rootClassName}--align-with-grid`]: alignWithGrid,\n });\n\n return (\n <div className={classes} data-testid={dataTestId} {...props}>\n <div\n className={cx(`${rootClassName}__inner`, {\n [`${rootClassName}__inner--align-with-grid`]: alignWithGrid,\n })}\n >\n {children}\n </div>\n </div>\n );\n};\n","import React, { forwardRef, isValidElement, type ReactElement, type ReactNode } from \"react\";\nimport type { BaseProps } from \"@purpur/common-types\";\n\nimport { type Optional, type Step } from \"./types\";\n\nexport type StepperContentProps = Omit<BaseProps, \"children\"> & {\n children: ReactNode;\n} & Optional<Step, \"disabled\" | \"finished\">;\n\nexport const StepperContent = forwardRef<HTMLDivElement, StepperContentProps>(\n ({ children, ...props }, ref) => {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { finished, ...rest } = props;\n return (\n <div {...rest} ref={ref}>\n {children}\n </div>\n );\n }\n);\n\nexport const isStepperContent = (child?: ReactNode): child is ReactElement<StepperContentProps> =>\n !!child && isValidElement<StepperContentProps>(child) && !!child.props.label;\n","import React, { forwardRef } from \"react\";\nimport { Button, BUTTON_VARIANT } from \"@purpur/button\";\nimport type { BaseProps } from \"@purpur/common-types\";\nimport { IconCheckmark } from \"@purpur/icon/checkmark\";\nimport * as RovingFocusGroup from \"@radix-ui/react-roving-focus\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./stepper-button.module.scss\";\nimport {\n type HandleStepChangeFunction,\n type HandleStepFocusFunction,\n type Step,\n type StepperVariant,\n type VisibilityStates,\n} from \"./types\";\n\nconst cx = c.bind(styles);\nconst rootClassName = \"purpur-stepper-button\";\n\nexport type StepNumberProps = {\n current: boolean;\n disabled: boolean;\n stepNumber: number;\n [\"data-testid\"]?: string;\n};\n\nconst StepNumber = ({\n [\"data-testid\"]: dataTestId,\n current,\n disabled,\n stepNumber,\n}: StepNumberProps) => {\n return (\n <div\n data-testid={dataTestId}\n className={cx([\n `${rootClassName}__step-number`,\n {\n [`${rootClassName}__step-number--current`]: current,\n },\n {\n [`${rootClassName}__step-number--disabled`]: disabled,\n },\n ])}\n >\n {stepNumber}\n </div>\n );\n};\n\nexport type StepperButtonProps = Omit<BaseProps<\"button\">, \"children\"> & {\n variant: StepperVariant;\n step: Step;\n currentStepIndex: number;\n index: number;\n indexOfLastItem: number;\n whenToBeVisible: VisibilityStates;\n handleStepChange: HandleStepChangeFunction;\n handleStepFocus: HandleStepFocusFunction;\n completedStepLabel: string;\n};\n\nexport const StepperButton = forwardRef<HTMLButtonElement, StepperButtonProps>(\n (\n {\n className,\n [\"data-testid\"]: dataTestId,\n variant,\n step,\n indexOfLastItem,\n index,\n currentStepIndex,\n whenToBeVisible,\n handleStepChange,\n handleStepFocus,\n completedStepLabel,\n ...props\n },\n ref\n ) => {\n const placement = index === 0 ? \"first\" : index === indexOfLastItem ? \"last\" : \"middle\";\n const isCurrentStep = index === currentStepIndex;\n return (\n <RovingFocusGroup.Item asChild>\n <Button\n {...props}\n ref={ref}\n className={cx(\n className,\n rootClassName,\n `${rootClassName}--${placement}`,\n `${rootClassName}--${variant}`,\n `${rootClassName}--visibility-${whenToBeVisible}`,\n {\n [`${rootClassName}--current`]: isCurrentStep,\n },\n {\n [`${rootClassName}--disabled`]: step.disabled,\n },\n {\n [\"arrow-tail\"]: placement !== \"first\",\n },\n {\n [\"arrow-forward\"]: placement !== \"last\",\n }\n )}\n id={`stepper-trigger-button-${index}`}\n variant={BUTTON_VARIANT.TERTIARY_PURPLE}\n data-testid={`${dataTestId}-step-trigger-item-${index}`}\n disabled={step.disabled}\n aria-current={isCurrentStep && \"step\"}\n aria-label={\n step.finished && !isCurrentStep\n ? [step.label, completedStepLabel].filter(Boolean).join(\", \")\n : undefined\n }\n onClick={(e) => handleStepChange(e, index)}\n onFocus={handleStepFocus}\n >\n <span className={cx(`${rootClassName}__trigger-outline`)}>\n {step.finished && !isCurrentStep ? (\n <IconCheckmark\n className={cx(`${rootClassName}__icon`)}\n data-testid={`${dataTestId}-step-finished-icon`}\n size=\"sm\"\n />\n ) : (\n <StepNumber\n data-testid={`${dataTestId}-step-number`}\n current={isCurrentStep}\n disabled={step.disabled}\n stepNumber={index + 1}\n />\n )}\n <span\n className={cx(`${rootClassName}__step-label`, {\n [`sr-only--lg-down`]: !isCurrentStep,\n })}\n >\n {step.label}\n </span>\n </span>\n </Button>\n </RovingFocusGroup.Item>\n );\n }\n);\n","import React, { forwardRef, type RefObject } from \"react\";\nimport { Tooltip } from \"@purpur/tooltip\";\nimport * as RovingFocusGroup from \"@radix-ui/react-roving-focus\";\nimport c from \"classnames/bind\";\n\nimport { VISIBILITY_STATES } from \"./constants\";\nimport { StepperButton } from \"./stepper-button\";\nimport styles from \"./stepper-nav-items.module.scss\";\nimport {\n type HandleStepChangeFunction,\n type HandleStepFocusFunction,\n type Step,\n type StepperVariant,\n} from \"./types\";\n\nconst cx = c.bind(styles);\n\nconst rootClassName = \"purpur-stepper-nav-items\";\n\nexport type StepperNavItemsProps = {\n variant: StepperVariant;\n [\"data-testid\"]?: string;\n firstStepRef: RefObject<HTMLLIElement | null>;\n lastStepRef: RefObject<HTMLLIElement | null>;\n steps: Step[];\n currentStepIndex: number;\n handleStepChange: HandleStepChangeFunction;\n handleStepFocus: HandleStepFocusFunction;\n completedStepLabel: string;\n};\n\nexport const StepperNavItems = forwardRef<HTMLOListElement, StepperNavItemsProps>(\n (\n {\n [\"data-testid\"]: dataTestId,\n variant,\n handleStepChange,\n handleStepFocus,\n steps,\n firstStepRef,\n lastStepRef,\n currentStepIndex,\n completedStepLabel,\n },\n ref\n ) => {\n const stepListItems = steps.map((step: Step, index: number) => {\n const tooltipTriggerItem = (\n <span className={cx(`${rootClassName}__tooltip-trigger-item-container`)}>\n <StepperButton\n data-testid={`${dataTestId}-disabled-sm`}\n variant={variant}\n step={step}\n indexOfLastItem={steps.length - 1}\n index={index}\n currentStepIndex={currentStepIndex}\n whenToBeVisible={VISIBILITY_STATES.SMALL_SCREEN}\n completedStepLabel={completedStepLabel}\n handleStepChange={handleStepChange}\n handleStepFocus={handleStepFocus}\n />\n </span>\n );\n\n return (\n <li\n className={cx(`${rootClassName}__list-item`, {\n [`${rootClassName}__list-item--current`]: index === currentStepIndex,\n })}\n ref={index === 0 ? firstStepRef : index === steps.length - 1 ? lastStepRef : null}\n key={step.label}\n >\n {step.disabled ? (\n <>\n <Tooltip\n contentClassName={cx(`${rootClassName}__tooltip-content`)}\n triggerElement={tooltipTriggerItem}\n >\n {step.label}\n </Tooltip>\n <StepperButton\n data-testid={`${dataTestId}-disabled-lg`}\n variant={variant}\n step={step}\n indexOfLastItem={steps.length - 1}\n index={index}\n currentStepIndex={currentStepIndex}\n whenToBeVisible={VISIBILITY_STATES.LARGE_SCREEN}\n completedStepLabel={completedStepLabel}\n handleStepChange={handleStepChange}\n handleStepFocus={handleStepFocus}\n />\n </>\n ) : (\n <StepperButton\n data-testid={dataTestId}\n variant={variant}\n step={step}\n indexOfLastItem={steps.length - 1}\n index={index}\n currentStepIndex={currentStepIndex}\n whenToBeVisible={VISIBILITY_STATES.ALWAYS}\n completedStepLabel={completedStepLabel}\n handleStepChange={handleStepChange}\n handleStepFocus={handleStepFocus}\n />\n )}\n </li>\n );\n });\n return (\n <RovingFocusGroup.Root loop={false} dir=\"ltr\">\n <ol ref={ref} className={cx(`${rootClassName}__list`)}>\n {stepListItems}\n </ol>\n </RovingFocusGroup.Root>\n );\n }\n);\n","import { type RefObject, useEffect, useRef } from \"react\";\n\ninterface UseContentFocusHook<T extends HTMLElement> {\n contentRef: RefObject<T | null>;\n}\n\nexport const useContentFocus = <T extends HTMLElement>(\n currentStepIndex: number\n): UseContentFocusHook<T> => {\n const firstLoad = useRef<boolean>(true);\n const contentRef = useRef<T | null>(null);\n\n useEffect(() => {\n if (!firstLoad.current && contentRef.current !== null) {\n contentRef.current.focus();\n }\n firstLoad.current = false;\n }, [currentStepIndex]);\n\n return {\n contentRef,\n };\n};\n","import { type RefObject, useEffect, useRef, useState } from \"react\";\n\nexport const SCROLL_DIRECTION = {\n LEFT: \"left\",\n RIGHT: \"right\",\n} as const;\n\nexport type ScrollDirection = (typeof SCROLL_DIRECTION)[keyof typeof SCROLL_DIRECTION];\n\nexport type UseScrollHook<ContainerElement, WatchedElement> = {\n scrollContainer: RefObject<ContainerElement | null>;\n firstStepRef: RefObject<WatchedElement | null>;\n lastStepRef: RefObject<WatchedElement | null>;\n displayLeftScrollButton: boolean;\n displayRightScrollButton: boolean;\n handleHorizontalScroll: (dir: ScrollDirection) => void;\n};\n\nexport const useScrollButtons = <\n ContainerElement extends HTMLElement,\n WatchedElement extends HTMLElement\n>(): UseScrollHook<ContainerElement, WatchedElement> => {\n const scrollContainer = useRef<ContainerElement | null>(null);\n const firstStepRef = useRef<WatchedElement | null>(null);\n const lastStepRef = useRef<WatchedElement | null>(null);\n const [displayLeftScrollButton, setDisplayLeftScrollButton] = useState(false);\n const [displayRightScrollButton, setDisplayRightScrollButton] = useState(false);\n\n const handleHorizontalScroll = (dir: ScrollDirection): void => {\n if (!scrollContainer.current) {\n return;\n }\n const scrollableContainer = scrollContainer.current;\n const scrollableContainerWidth = scrollableContainer.clientWidth;\n const currentScrollLeft = scrollableContainer.scrollLeft;\n if (dir === SCROLL_DIRECTION.LEFT) {\n scrollableContainer.scroll({\n behavior: \"smooth\",\n left: currentScrollLeft - scrollableContainerWidth / 2,\n });\n }\n if (dir === SCROLL_DIRECTION.RIGHT) {\n scrollableContainer.scroll({\n behavior: \"smooth\",\n left: currentScrollLeft + scrollableContainerWidth / 2,\n });\n }\n };\n\n useEffect(() => {\n if (firstStepRef.current && lastStepRef.current && scrollContainer.current) {\n const observer: IntersectionObserver = new IntersectionObserver(\n (entries: IntersectionObserverEntry[]) => {\n for (const entry of entries) {\n if (entry.target === firstStepRef.current) {\n if (entry.isIntersecting) {\n setDisplayLeftScrollButton(false);\n } else {\n setDisplayLeftScrollButton(true);\n }\n continue;\n }\n if (entry.target === lastStepRef.current) {\n if (entry.isIntersecting) {\n setDisplayRightScrollButton(false);\n } else {\n setDisplayRightScrollButton(true);\n }\n }\n }\n },\n {\n root: scrollContainer.current,\n threshold: 0.95,\n }\n );\n\n observer.observe(firstStepRef.current);\n observer.observe(lastStepRef.current);\n\n return () => observer.disconnect();\n }\n return undefined;\n }, [firstStepRef, lastStepRef, scrollContainer]);\n\n return {\n scrollContainer,\n firstStepRef,\n lastStepRef,\n displayLeftScrollButton,\n displayRightScrollButton,\n handleHorizontalScroll,\n };\n};\n","import React, { Children, type ReactElement } from \"react\";\nimport { Button, BUTTON_VARIANT } from \"@purpur/button\";\nimport type { BaseProps } from \"@purpur/common-types\";\nimport { IconChevronLeft } from \"@purpur/icon/chevron-left\";\nimport { IconChevronRight } from \"@purpur/icon/chevron-right\";\nimport * as RovingFocusGroup from \"@radix-ui/react-roving-focus\";\nimport * as ScrollArea from \"@radix-ui/react-scroll-area\";\nimport c from \"classnames/bind\";\n\nimport { STEPPER_VARIANT } from \"./constants\";\nimport styles from \"./stepper.module.scss\";\nimport { StepperContainer } from \"./stepper-container\";\nimport { isStepperContent, StepperContent } from \"./stepper-content\";\nimport { StepperNavItems } from \"./stepper-nav-items\";\nimport { type Step, type StepChangeFunction, type StepperVariant } from \"./types\";\nimport { useContentFocus } from \"./use-content-focus.hook\";\nimport { SCROLL_DIRECTION, useScrollButtons } from \"./use-scroll-buttons.hook\";\n\nconst cx = c.bind(styles);\n\nconst rootClassName = \"purpur-stepper\";\n\nexport type StepperProps = Omit<BaseProps, \"children\"> & {\n children: Array<ReactElement<typeof StepperContent>> | ReactElement<typeof StepperContent>;\n completedStepLabel: string;\n currentStepIndex: number;\n onStepChange: StepChangeFunction;\n alignWithGrid?: boolean;\n leftScrollButtonAriaLabel: string;\n rightScrollButtonAriaLabel: string;\n variant: StepperVariant;\n};\n\nexport type StepperComponent<P> = React.FunctionComponent<P> & {\n Content: typeof StepperContent;\n};\n\nexport const Stepper: StepperComponent<StepperProps> = ({\n [\"aria-label\"]: ariaLabel,\n [\"data-testid\"]: dataTestId,\n children,\n className,\n completedStepLabel,\n currentStepIndex = 0,\n onStepChange,\n alignWithGrid = false,\n leftScrollButtonAriaLabel,\n rightScrollButtonAriaLabel,\n variant = STEPPER_VARIANT.PRIMARY,\n ...props\n}: StepperProps) => {\n const stepperContentChildren = Children.toArray(children).filter(isStepperContent);\n const steps: Step[] = Children.map(stepperContentChildren, (child) => {\n const { disabled, finished, label } = child.props;\n return {\n disabled: disabled ?? false,\n finished: finished ?? false,\n label,\n };\n });\n const { contentRef } = useContentFocus<HTMLDivElement>(currentStepIndex);\n const {\n scrollContainer,\n firstStepRef,\n lastStepRef,\n displayLeftScrollButton,\n displayRightScrollButton,\n handleHorizontalScroll,\n } = useScrollButtons<HTMLDivElement, HTMLLIElement>();\n\n const classes: string = cx([\n className,\n rootClassName,\n {\n [`${rootClassName}--${variant}`]: variant,\n },\n ]);\n const scrollTriggerIntoView = (e: React.FocusEvent | React.MouseEvent): void => {\n (e.target as HTMLButtonElement).scrollIntoView({\n behavior: \"smooth\",\n block: \"nearest\",\n inline: \"center\",\n });\n };\n\n const handleStepChange = (e: React.MouseEvent, idx: number): void => {\n e.preventDefault();\n scrollTriggerIntoView(e);\n onStepChange(idx);\n };\n\n const handleStepFocus = (e: React.FocusEvent): void => {\n scrollTriggerIntoView(e);\n };\n\n return (\n <div className={classes} {...props}>\n <StepperContainer variant={variant} alignWithGrid={alignWithGrid}>\n <div className={cx(`${rootClassName}__nav-container`)}>\n <ScrollArea.Root>\n <ScrollArea.Viewport ref={scrollContainer}>\n <div\n aria-label={ariaLabel}\n data-testid={dataTestId}\n className={cx([\n `${rootClassName}__nav`,\n {\n [`${rootClassName}__nav--${variant}`]: variant,\n },\n ])}\n >\n <RovingFocusGroup.Root loop={false} dir=\"ltr\">\n <StepperNavItems\n data-testid={dataTestId}\n variant={variant}\n firstStepRef={firstStepRef}\n lastStepRef={lastStepRef}\n steps={steps}\n currentStepIndex={currentStepIndex}\n handleStepChange={handleStepChange}\n handleStepFocus={handleStepFocus}\n completedStepLabel={completedStepLabel}\n />\n </RovingFocusGroup.Root>\n </div>\n </ScrollArea.Viewport>\n <ScrollArea.Scrollbar orientation=\"horizontal\">\n <ScrollArea.Thumb />\n </ScrollArea.Scrollbar>\n </ScrollArea.Root>\n {displayLeftScrollButton && (\n <Button\n aria-label={leftScrollButtonAriaLabel}\n className={cx([\n `${rootClassName}__scroll-button`,\n `${rootClassName}__scroll-button--left`,\n ])}\n variant={BUTTON_VARIANT.TERTIARY_PURPLE}\n tabIndex={-1}\n iconOnly\n onClick={() => {\n handleHorizontalScroll(SCROLL_DIRECTION.LEFT);\n }}\n >\n <IconChevronLeft className={cx(`${rootClassName}__scroll-button-icon`)} size=\"md\" />\n </Button>\n )}\n {displayRightScrollButton && (\n <Button\n aria-label={rightScrollButtonAriaLabel}\n className={cx([\n `${rootClassName}__scroll-button`,\n `${rootClassName}__scroll-button--right`,\n ])}\n variant={BUTTON_VARIANT.TERTIARY_PURPLE}\n tabIndex={-1}\n iconOnly\n onClick={() => {\n handleHorizontalScroll(SCROLL_DIRECTION.RIGHT);\n }}\n >\n <IconChevronRight className={cx(`${rootClassName}__scroll-button-icon`)} size=\"md\" />\n </Button>\n )}\n </div>\n </StepperContainer>\n <div\n tabIndex={-1}\n aria-labelledby={`stepper-trigger-button-${currentStepIndex}`}\n ref={contentRef}\n style={{ outline: \"none\" }}\n >\n <div aria-live=\"polite\">\n {Children.map(stepperContentChildren, (child, index: number) => (\n <div\n className={cx({\n [`${rootClassName}__hidden`]: index !== currentStepIndex,\n })}\n hidden={index !== currentStepIndex}\n >\n {child}\n </div>\n ))}\n </div>\n </div>\n </div>\n );\n};\n\nStepper.Content = StepperContent;\n\nStepper.displayName = \"Stepper\";\n"],"names":["STEPPER_VARIANT","VISIBILITY_STATES","cx","c","styles","rootClassName","StepperContainer","dataTestId","children","className","alignWithGrid","variant","props","classes","jsx","StepperContent","forwardRef","ref","finished","rest","isStepperContent","child","isValidElement","StepNumber","current","disabled","stepNumber","StepperButton","step","indexOfLastItem","index","currentStepIndex","whenToBeVisible","handleStepChange","handleStepFocus","completedStepLabel","placement","isCurrentStep","RovingFocusGroup.Item","Button","BUTTON_VARIANT","e","IconCheckmark","StepperNavItems","steps","firstStepRef","lastStepRef","stepListItems","tooltipTriggerItem","jsxs","Fragment","Tooltip","RovingFocusGroup.Root","useContentFocus","firstLoad","useRef","contentRef","useEffect","SCROLL_DIRECTION","useScrollButtons","scrollContainer","displayLeftScrollButton","setDisplayLeftScrollButton","useState","displayRightScrollButton","setDisplayRightScrollButton","handleHorizontalScroll","dir","scrollableContainer","scrollableContainerWidth","currentScrollLeft","observer","entries","entry","Stepper","ariaLabel","onStepChange","leftScrollButtonAriaLabel","rightScrollButtonAriaLabel","stepperContentChildren","Children","label","scrollTriggerIntoView","idx","ScrollArea.Root","ScrollArea.Viewport","ScrollArea.Scrollbar","ScrollArea.Thumb","IconChevronLeft","IconChevronRight"],"mappings":"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"}
1
+ {"version":3,"file":"stepper-CTKlnH0q.js","sources":["../../../components/stepper/src/constants.ts","../../../components/stepper/src/stepper-container.tsx","../../../components/stepper/src/stepper-content.tsx","../../../components/stepper/src/stepper-button.tsx","../../../components/stepper/src/stepper-nav-items.tsx","../../../components/stepper/src/use-content-focus.hook.ts","../../../components/stepper/src/use-scroll-buttons.hook.ts","../../../components/stepper/src/stepper.tsx"],"sourcesContent":["export const STEPPER_VARIANT = {\n PRIMARY: \"primary\",\n SECONDARY: \"secondary\",\n} as const;\n\nexport const VISIBILITY_STATES = {\n SMALL_SCREEN: \"small-screen\",\n LARGE_SCREEN: \"large-screen\",\n ALWAYS: \"always\",\n} as const;\n","import React, { type ReactNode } from \"react\";\nimport type { BaseProps } from \"@purpur/common-types\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./stepper-container.module.scss\";\nimport { type StepperVariant } from \"./types\";\n\nconst cx = c.bind(styles);\n\nexport type StepperContainerProps = Omit<BaseProps, \"children\"> & {\n children: ReactNode;\n alignWithGrid: boolean;\n variant: StepperVariant;\n};\n\nconst rootClassName = \"purpur-stepper-container\";\n\nexport const StepperContainer = ({\n [\"data-testid\"]: dataTestId = \"purpur-stepper-container\",\n children,\n className,\n alignWithGrid,\n variant,\n ...props\n}: StepperContainerProps) => {\n const classes: string = cx(className, rootClassName, {\n [`${rootClassName}--${variant}`]: variant,\n [`${rootClassName}--align-with-grid`]: alignWithGrid,\n });\n\n return (\n <div className={classes} data-testid={dataTestId} {...props}>\n <div\n className={cx(`${rootClassName}__inner`, {\n [`${rootClassName}__inner--align-with-grid`]: alignWithGrid,\n })}\n >\n {children}\n </div>\n </div>\n );\n};\n","import React, { forwardRef, isValidElement, type ReactElement, type ReactNode } from \"react\";\nimport type { BaseProps } from \"@purpur/common-types\";\n\nimport { type Optional, type Step } from \"./types\";\n\nexport type StepperContentProps = Omit<BaseProps, \"children\"> & {\n children: ReactNode;\n} & Optional<Step, \"disabled\" | \"finished\">;\n\nexport const StepperContent = forwardRef<HTMLDivElement, StepperContentProps>(\n ({ children, ...props }, ref) => {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { finished, ...rest } = props;\n return (\n <div {...rest} ref={ref}>\n {children}\n </div>\n );\n }\n);\n\nexport const isStepperContent = (child?: ReactNode): child is ReactElement<StepperContentProps> =>\n !!child && isValidElement<StepperContentProps>(child) && !!child.props.label;\n","import React, { forwardRef } from \"react\";\nimport { Button, BUTTON_VARIANT } from \"@purpur/button\";\nimport type { BaseProps } from \"@purpur/common-types\";\nimport { IconCheckmark } from \"@purpur/icon/checkmark\";\nimport * as RovingFocusGroup from \"@radix-ui/react-roving-focus\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./stepper-button.module.scss\";\nimport {\n type HandleStepChangeFunction,\n type HandleStepFocusFunction,\n type Step,\n type StepperVariant,\n type VisibilityStates,\n} from \"./types\";\n\nconst cx = c.bind(styles);\nconst rootClassName = \"purpur-stepper-button\";\n\nexport type StepNumberProps = {\n current: boolean;\n disabled: boolean;\n stepNumber: number;\n [\"data-testid\"]?: string;\n};\n\nconst StepNumber = ({\n [\"data-testid\"]: dataTestId,\n current,\n disabled,\n stepNumber,\n}: StepNumberProps) => {\n return (\n <div\n data-testid={dataTestId}\n className={cx([\n `${rootClassName}__step-number`,\n {\n [`${rootClassName}__step-number--current`]: current,\n },\n {\n [`${rootClassName}__step-number--disabled`]: disabled,\n },\n ])}\n >\n {stepNumber}\n </div>\n );\n};\n\nexport type StepperButtonProps = Omit<BaseProps<\"button\">, \"children\"> & {\n variant: StepperVariant;\n step: Step;\n currentStepIndex: number;\n index: number;\n indexOfLastItem: number;\n whenToBeVisible: VisibilityStates;\n handleStepChange: HandleStepChangeFunction;\n handleStepFocus: HandleStepFocusFunction;\n completedStepLabel: string;\n};\n\nexport const StepperButton = forwardRef<HTMLButtonElement, StepperButtonProps>(\n (\n {\n className,\n [\"data-testid\"]: dataTestId,\n variant,\n step,\n indexOfLastItem,\n index,\n currentStepIndex,\n whenToBeVisible,\n handleStepChange,\n handleStepFocus,\n completedStepLabel,\n ...props\n },\n ref\n ) => {\n const placement = index === 0 ? \"first\" : index === indexOfLastItem ? \"last\" : \"middle\";\n const isCurrentStep = index === currentStepIndex;\n return (\n <RovingFocusGroup.Item asChild>\n <Button\n {...props}\n ref={ref}\n className={cx(\n className,\n rootClassName,\n `${rootClassName}--${placement}`,\n `${rootClassName}--${variant}`,\n `${rootClassName}--visibility-${whenToBeVisible}`,\n {\n [`${rootClassName}--current`]: isCurrentStep,\n },\n {\n [`${rootClassName}--disabled`]: step.disabled,\n },\n {\n [\"arrow-tail\"]: placement !== \"first\",\n },\n {\n [\"arrow-forward\"]: placement !== \"last\",\n }\n )}\n id={`stepper-trigger-button-${index}`}\n variant={BUTTON_VARIANT.TERTIARY_PURPLE}\n data-testid={`${dataTestId}-step-trigger-item-${index}`}\n disabled={step.disabled}\n aria-current={isCurrentStep && \"step\"}\n aria-label={\n step.finished && !isCurrentStep\n ? [step.label, completedStepLabel].filter(Boolean).join(\", \")\n : undefined\n }\n onClick={(e) => handleStepChange(e, index)}\n onFocus={handleStepFocus}\n >\n <span className={cx(`${rootClassName}__trigger-outline`)}>\n {step.finished && !isCurrentStep ? (\n <IconCheckmark\n className={cx(`${rootClassName}__icon`)}\n data-testid={`${dataTestId}-step-finished-icon`}\n size=\"sm\"\n />\n ) : (\n <StepNumber\n data-testid={`${dataTestId}-step-number`}\n current={isCurrentStep}\n disabled={step.disabled}\n stepNumber={index + 1}\n />\n )}\n <span\n className={cx(`${rootClassName}__step-label`, {\n [`sr-only--lg-down`]: !isCurrentStep,\n })}\n >\n {step.label}\n </span>\n </span>\n </Button>\n </RovingFocusGroup.Item>\n );\n }\n);\n","import React, { forwardRef, type RefObject } from \"react\";\nimport { Tooltip } from \"@purpur/tooltip\";\nimport * as RovingFocusGroup from \"@radix-ui/react-roving-focus\";\nimport c from \"classnames/bind\";\n\nimport { VISIBILITY_STATES } from \"./constants\";\nimport { StepperButton } from \"./stepper-button\";\nimport styles from \"./stepper-nav-items.module.scss\";\nimport {\n type HandleStepChangeFunction,\n type HandleStepFocusFunction,\n type Step,\n type StepperVariant,\n} from \"./types\";\n\nconst cx = c.bind(styles);\n\nconst rootClassName = \"purpur-stepper-nav-items\";\n\nexport type StepperNavItemsProps = {\n variant: StepperVariant;\n [\"data-testid\"]?: string;\n firstStepRef: RefObject<HTMLLIElement | null>;\n lastStepRef: RefObject<HTMLLIElement | null>;\n steps: Step[];\n currentStepIndex: number;\n handleStepChange: HandleStepChangeFunction;\n handleStepFocus: HandleStepFocusFunction;\n completedStepLabel: string;\n};\n\nexport const StepperNavItems = forwardRef<HTMLOListElement, StepperNavItemsProps>(\n (\n {\n [\"data-testid\"]: dataTestId,\n variant,\n handleStepChange,\n handleStepFocus,\n steps,\n firstStepRef,\n lastStepRef,\n currentStepIndex,\n completedStepLabel,\n },\n ref\n ) => {\n const stepListItems = steps.map((step: Step, index: number) => {\n const tooltipTriggerItem = (\n <span className={cx(`${rootClassName}__tooltip-trigger-item-container`)}>\n <StepperButton\n data-testid={`${dataTestId}-disabled-sm`}\n variant={variant}\n step={step}\n indexOfLastItem={steps.length - 1}\n index={index}\n currentStepIndex={currentStepIndex}\n whenToBeVisible={VISIBILITY_STATES.SMALL_SCREEN}\n completedStepLabel={completedStepLabel}\n handleStepChange={handleStepChange}\n handleStepFocus={handleStepFocus}\n />\n </span>\n );\n\n return (\n <li\n className={cx(`${rootClassName}__list-item`, {\n [`${rootClassName}__list-item--current`]: index === currentStepIndex,\n })}\n ref={index === 0 ? firstStepRef : index === steps.length - 1 ? lastStepRef : null}\n key={step.label}\n >\n {step.disabled ? (\n <>\n <Tooltip\n contentClassName={cx(`${rootClassName}__tooltip-content`)}\n triggerElement={tooltipTriggerItem}\n >\n {step.label}\n </Tooltip>\n <StepperButton\n data-testid={`${dataTestId}-disabled-lg`}\n variant={variant}\n step={step}\n indexOfLastItem={steps.length - 1}\n index={index}\n currentStepIndex={currentStepIndex}\n whenToBeVisible={VISIBILITY_STATES.LARGE_SCREEN}\n completedStepLabel={completedStepLabel}\n handleStepChange={handleStepChange}\n handleStepFocus={handleStepFocus}\n />\n </>\n ) : (\n <StepperButton\n data-testid={dataTestId}\n variant={variant}\n step={step}\n indexOfLastItem={steps.length - 1}\n index={index}\n currentStepIndex={currentStepIndex}\n whenToBeVisible={VISIBILITY_STATES.ALWAYS}\n completedStepLabel={completedStepLabel}\n handleStepChange={handleStepChange}\n handleStepFocus={handleStepFocus}\n />\n )}\n </li>\n );\n });\n return (\n <RovingFocusGroup.Root loop={false} dir=\"ltr\">\n <ol ref={ref} className={cx(`${rootClassName}__list`)}>\n {stepListItems}\n </ol>\n </RovingFocusGroup.Root>\n );\n }\n);\n","import { type RefObject, useEffect, useRef } from \"react\";\n\ninterface UseContentFocusHook<T extends HTMLElement> {\n contentRef: RefObject<T | null>;\n}\n\nexport const useContentFocus = <T extends HTMLElement>(\n currentStepIndex: number\n): UseContentFocusHook<T> => {\n const firstLoad = useRef<boolean>(true);\n const contentRef = useRef<T | null>(null);\n\n useEffect(() => {\n if (!firstLoad.current && contentRef.current !== null) {\n contentRef.current.focus();\n }\n firstLoad.current = false;\n }, [currentStepIndex]);\n\n return {\n contentRef,\n };\n};\n","import { type RefObject, useEffect, useRef, useState } from \"react\";\n\nexport const SCROLL_DIRECTION = {\n LEFT: \"left\",\n RIGHT: \"right\",\n} as const;\n\nexport type ScrollDirection = (typeof SCROLL_DIRECTION)[keyof typeof SCROLL_DIRECTION];\n\nexport type UseScrollHook<ContainerElement, WatchedElement> = {\n scrollContainer: RefObject<ContainerElement | null>;\n firstStepRef: RefObject<WatchedElement | null>;\n lastStepRef: RefObject<WatchedElement | null>;\n displayLeftScrollButton: boolean;\n displayRightScrollButton: boolean;\n handleHorizontalScroll: (dir: ScrollDirection) => void;\n};\n\nexport const useScrollButtons = <\n ContainerElement extends HTMLElement,\n WatchedElement extends HTMLElement\n>(): UseScrollHook<ContainerElement, WatchedElement> => {\n const scrollContainer = useRef<ContainerElement | null>(null);\n const firstStepRef = useRef<WatchedElement | null>(null);\n const lastStepRef = useRef<WatchedElement | null>(null);\n const [displayLeftScrollButton, setDisplayLeftScrollButton] = useState(false);\n const [displayRightScrollButton, setDisplayRightScrollButton] = useState(false);\n\n const handleHorizontalScroll = (dir: ScrollDirection): void => {\n if (!scrollContainer.current) {\n return;\n }\n const scrollableContainer = scrollContainer.current;\n const scrollableContainerWidth = scrollableContainer.clientWidth;\n const currentScrollLeft = scrollableContainer.scrollLeft;\n if (dir === SCROLL_DIRECTION.LEFT) {\n scrollableContainer.scroll({\n behavior: \"smooth\",\n left: currentScrollLeft - scrollableContainerWidth / 2,\n });\n }\n if (dir === SCROLL_DIRECTION.RIGHT) {\n scrollableContainer.scroll({\n behavior: \"smooth\",\n left: currentScrollLeft + scrollableContainerWidth / 2,\n });\n }\n };\n\n useEffect(() => {\n if (firstStepRef.current && lastStepRef.current && scrollContainer.current) {\n const observer: IntersectionObserver = new IntersectionObserver(\n (entries: IntersectionObserverEntry[]) => {\n for (const entry of entries) {\n if (entry.target === firstStepRef.current) {\n if (entry.isIntersecting) {\n setDisplayLeftScrollButton(false);\n } else {\n setDisplayLeftScrollButton(true);\n }\n continue;\n }\n if (entry.target === lastStepRef.current) {\n if (entry.isIntersecting) {\n setDisplayRightScrollButton(false);\n } else {\n setDisplayRightScrollButton(true);\n }\n }\n }\n },\n {\n root: scrollContainer.current,\n threshold: 0.95,\n }\n );\n\n observer.observe(firstStepRef.current);\n observer.observe(lastStepRef.current);\n\n return () => observer.disconnect();\n }\n return undefined;\n }, [firstStepRef, lastStepRef, scrollContainer]);\n\n return {\n scrollContainer,\n firstStepRef,\n lastStepRef,\n displayLeftScrollButton,\n displayRightScrollButton,\n handleHorizontalScroll,\n };\n};\n","import React, { Children, type ReactElement } from \"react\";\nimport { Button, BUTTON_VARIANT } from \"@purpur/button\";\nimport type { BaseProps } from \"@purpur/common-types\";\nimport { IconChevronLeft } from \"@purpur/icon/chevron-left\";\nimport { IconChevronRight } from \"@purpur/icon/chevron-right\";\nimport * as RovingFocusGroup from \"@radix-ui/react-roving-focus\";\nimport * as ScrollArea from \"@radix-ui/react-scroll-area\";\nimport c from \"classnames/bind\";\n\nimport { STEPPER_VARIANT } from \"./constants\";\nimport styles from \"./stepper.module.scss\";\nimport { StepperContainer } from \"./stepper-container\";\nimport { isStepperContent, StepperContent } from \"./stepper-content\";\nimport { StepperNavItems } from \"./stepper-nav-items\";\nimport { type Step, type StepChangeFunction, type StepperVariant } from \"./types\";\nimport { useContentFocus } from \"./use-content-focus.hook\";\nimport { SCROLL_DIRECTION, useScrollButtons } from \"./use-scroll-buttons.hook\";\n\nconst cx = c.bind(styles);\n\nconst rootClassName = \"purpur-stepper\";\n\nexport type StepperProps = Omit<BaseProps, \"children\"> & {\n children: Array<ReactElement<typeof StepperContent>> | ReactElement<typeof StepperContent>;\n completedStepLabel: string;\n currentStepIndex: number;\n onStepChange: StepChangeFunction;\n alignWithGrid?: boolean;\n leftScrollButtonAriaLabel: string;\n rightScrollButtonAriaLabel: string;\n variant: StepperVariant;\n};\n\nexport type StepperComponent<P> = React.FunctionComponent<P> & {\n Content: typeof StepperContent;\n};\n\nexport const Stepper: StepperComponent<StepperProps> = ({\n [\"aria-label\"]: ariaLabel,\n [\"data-testid\"]: dataTestId,\n children,\n className,\n completedStepLabel,\n currentStepIndex = 0,\n onStepChange,\n alignWithGrid = false,\n leftScrollButtonAriaLabel,\n rightScrollButtonAriaLabel,\n variant = STEPPER_VARIANT.PRIMARY,\n ...props\n}: StepperProps) => {\n const stepperContentChildren = Children.toArray(children).filter(isStepperContent);\n const steps: Step[] = Children.map(stepperContentChildren, (child) => {\n const { disabled, finished, label } = child.props;\n return {\n disabled: disabled ?? false,\n finished: finished ?? false,\n label,\n };\n });\n const { contentRef } = useContentFocus<HTMLDivElement>(currentStepIndex);\n const {\n scrollContainer,\n firstStepRef,\n lastStepRef,\n displayLeftScrollButton,\n displayRightScrollButton,\n handleHorizontalScroll,\n } = useScrollButtons<HTMLDivElement, HTMLLIElement>();\n\n const classes: string = cx([\n className,\n rootClassName,\n {\n [`${rootClassName}--${variant}`]: variant,\n },\n ]);\n const scrollTriggerIntoView = (e: React.FocusEvent | React.MouseEvent): void => {\n (e.target as HTMLButtonElement).scrollIntoView({\n behavior: \"smooth\",\n block: \"nearest\",\n inline: \"center\",\n });\n };\n\n const handleStepChange = (e: React.MouseEvent, idx: number): void => {\n e.preventDefault();\n scrollTriggerIntoView(e);\n onStepChange(idx);\n };\n\n const handleStepFocus = (e: React.FocusEvent): void => {\n scrollTriggerIntoView(e);\n };\n\n return (\n <div className={classes} {...props}>\n <StepperContainer variant={variant} alignWithGrid={alignWithGrid}>\n <div className={cx(`${rootClassName}__nav-container`)}>\n <ScrollArea.Root>\n <ScrollArea.Viewport ref={scrollContainer}>\n <div\n aria-label={ariaLabel}\n data-testid={dataTestId}\n className={cx([\n `${rootClassName}__nav`,\n {\n [`${rootClassName}__nav--${variant}`]: variant,\n },\n ])}\n >\n <RovingFocusGroup.Root loop={false} dir=\"ltr\">\n <StepperNavItems\n data-testid={dataTestId}\n variant={variant}\n firstStepRef={firstStepRef}\n lastStepRef={lastStepRef}\n steps={steps}\n currentStepIndex={currentStepIndex}\n handleStepChange={handleStepChange}\n handleStepFocus={handleStepFocus}\n completedStepLabel={completedStepLabel}\n />\n </RovingFocusGroup.Root>\n </div>\n </ScrollArea.Viewport>\n <ScrollArea.Scrollbar orientation=\"horizontal\">\n <ScrollArea.Thumb />\n </ScrollArea.Scrollbar>\n </ScrollArea.Root>\n {displayLeftScrollButton && (\n <Button\n aria-label={leftScrollButtonAriaLabel}\n className={cx([\n `${rootClassName}__scroll-button`,\n `${rootClassName}__scroll-button--left`,\n ])}\n variant={BUTTON_VARIANT.TERTIARY_PURPLE}\n tabIndex={-1}\n iconOnly\n onClick={() => {\n handleHorizontalScroll(SCROLL_DIRECTION.LEFT);\n }}\n >\n <IconChevronLeft className={cx(`${rootClassName}__scroll-button-icon`)} size=\"md\" />\n </Button>\n )}\n {displayRightScrollButton && (\n <Button\n aria-label={rightScrollButtonAriaLabel}\n className={cx([\n `${rootClassName}__scroll-button`,\n `${rootClassName}__scroll-button--right`,\n ])}\n variant={BUTTON_VARIANT.TERTIARY_PURPLE}\n tabIndex={-1}\n iconOnly\n onClick={() => {\n handleHorizontalScroll(SCROLL_DIRECTION.RIGHT);\n }}\n >\n <IconChevronRight className={cx(`${rootClassName}__scroll-button-icon`)} size=\"md\" />\n </Button>\n )}\n </div>\n </StepperContainer>\n <div\n tabIndex={-1}\n aria-labelledby={`stepper-trigger-button-${currentStepIndex}`}\n ref={contentRef}\n style={{ outline: \"none\" }}\n >\n <div aria-live=\"polite\">\n {Children.map(stepperContentChildren, (child, index: number) => (\n <div\n className={cx({\n [`${rootClassName}__hidden`]: index !== currentStepIndex,\n })}\n hidden={index !== currentStepIndex}\n >\n {child}\n </div>\n ))}\n </div>\n </div>\n </div>\n );\n};\n\nStepper.Content = StepperContent;\n\nStepper.displayName = \"Stepper\";\n"],"names":["STEPPER_VARIANT","VISIBILITY_STATES","cx","c","styles","rootClassName","StepperContainer","dataTestId","children","className","alignWithGrid","variant","props","classes","jsx","StepperContent","forwardRef","ref","finished","rest","isStepperContent","child","isValidElement","StepNumber","current","disabled","stepNumber","StepperButton","step","indexOfLastItem","index","currentStepIndex","whenToBeVisible","handleStepChange","handleStepFocus","completedStepLabel","placement","isCurrentStep","RovingFocusGroup.Item","Button","BUTTON_VARIANT","e","IconCheckmark","StepperNavItems","steps","firstStepRef","lastStepRef","stepListItems","tooltipTriggerItem","jsxs","Fragment","Tooltip","RovingFocusGroup.Root","useContentFocus","firstLoad","useRef","contentRef","useEffect","SCROLL_DIRECTION","useScrollButtons","scrollContainer","displayLeftScrollButton","setDisplayLeftScrollButton","useState","displayRightScrollButton","setDisplayRightScrollButton","handleHorizontalScroll","dir","scrollableContainer","scrollableContainerWidth","currentScrollLeft","observer","entries","entry","Stepper","ariaLabel","onStepChange","leftScrollButtonAriaLabel","rightScrollButtonAriaLabel","stepperContentChildren","Children","label","scrollTriggerIntoView","idx","ScrollArea.Root","ScrollArea.Viewport","ScrollArea.Scrollbar","ScrollArea.Thumb","IconChevronLeft","IconChevronRight"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./stepper-5qMo_shq.js");exports.Stepper=e.Stepper;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./stepper-CTKlnH0q.js");exports.Stepper=e.Stepper;
2
2
  //# sourceMappingURL=stepper.cjs.js.map
@@ -1,4 +1,4 @@
1
- import { S as r } from "./stepper-e0qicwqd.mjs";
1
+ import { S as r } from "./stepper-B-nCLs2D.mjs";
2
2
  export {
3
3
  r as Stepper
4
4
  };
@@ -10,11 +10,11 @@ import { b as De } from "./icon-DNHpBTHs-JfI8WyiR.mjs";
10
10
  import { s as Ci } from "./search.es-DoFKg2Hr.mjs";
11
11
  import { P as be } from "./paragraph-DSxXmX_0.mjs";
12
12
  import { S as Si } from "./select-BEmu_fh9.mjs";
13
- import { T as Ri } from "./text-field-BQfxJobW.mjs";
14
- import { b as ur } from "./tooltip-RA-03bKs.mjs";
13
+ import { T as Ri } from "./text-field-D8MMa6ij.mjs";
14
+ import { b as ur } from "./tooltip-pwJMEBBP.mjs";
15
15
  import { V as co } from "./visually-hidden-BYFkJEp1.mjs";
16
- import "./ThemeProvider-DiDBfyFA.mjs";
17
- import { u as yi } from "./useThemePortalContainer-tFLTaYKN.mjs";
16
+ import "./ThemeProvider-BJ25_asg.mjs";
17
+ import { u as yi } from "./useThemePortalContainer-D13Xx24N.mjs";
18
18
  import { a as xi } from "./badge-DalD-yqG.mjs";
19
19
  import { C as $i } from "./cta-link-pwva2f2r.mjs";
20
20
  import { a as Di } from "./link-DY5WLpyc.mjs";
@@ -22,7 +22,7 @@ import { T as cr } from "./toggle-CY3J8BRX.mjs";
22
22
  import { b as Ii } from "./variables-DkCN2x27.mjs";
23
23
  import { H as dr } from "./heading-xwBuT_-9.mjs";
24
24
  import { S as Fi } from "./skeleton-CDGzLI-T.mjs";
25
- import { D as mn } from "./drawer-BzkRd9F0.mjs";
25
+ import { D as mn } from "./drawer-cIUx6WSZ.mjs";
26
26
  function hc() {
27
27
  return {
28
28
  accessor: (e, t) => typeof e == "function" ? {
@@ -7440,4 +7440,4 @@ export {
7440
7440
  ju as T,
7441
7441
  hc as c
7442
7442
  };
7443
- //# sourceMappingURL=table-i1Gs9e0e.mjs.map
7443
+ //# sourceMappingURL=table-DOPXfD-s.mjs.map