@purpur/library 9.5.0 → 9.7.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 (364) hide show
  1. package/CHANGELOG.json +66 -0
  2. package/CHANGELOG.md +29 -1
  3. package/dist/LICENSE.txt +27 -6
  4. package/dist/ThemeProvider-D7oXcAde.js +2 -0
  5. package/dist/{ThemeProvider-Dy771oix.js.map → ThemeProvider-D7oXcAde.js.map} +1 -1
  6. package/dist/ThemeProvider-DiDBfyFA.mjs +348 -0
  7. package/dist/{ThemeProvider-CkX-BNWN.mjs.map → ThemeProvider-DiDBfyFA.mjs.map} +1 -1
  8. package/dist/avatar-CYnD57o4.js +2 -0
  9. package/dist/avatar-CYnD57o4.js.map +1 -0
  10. package/dist/avatar-CzbDD1MK.mjs +27 -0
  11. package/dist/avatar-CzbDD1MK.mjs.map +1 -0
  12. package/dist/avatar.cjs.js +2 -0
  13. package/dist/avatar.cjs.js.map +1 -0
  14. package/dist/avatar.es.js +5 -0
  15. package/dist/avatar.es.js.map +1 -0
  16. package/dist/carousel-BIKcwvYz.mjs +1658 -0
  17. package/dist/carousel-BIKcwvYz.mjs.map +1 -0
  18. package/dist/carousel-DnSaLDZf.js +2 -0
  19. package/dist/carousel-DnSaLDZf.js.map +1 -0
  20. package/dist/carousel.cjs.js +1 -1
  21. package/dist/carousel.es.js +1 -1
  22. package/dist/color-dot-BEE5rKco.js +2 -0
  23. package/dist/color-dot-BEE5rKco.js.map +1 -0
  24. package/dist/color-dot-Dz9yzVX3.mjs +28 -0
  25. package/dist/color-dot-Dz9yzVX3.mjs.map +1 -0
  26. package/dist/color-dot.cjs.js +1 -1
  27. package/dist/color-dot.es.js +4 -3
  28. package/dist/comparison-table-0UDB2BTU.js +2 -0
  29. package/dist/comparison-table-0UDB2BTU.js.map +1 -0
  30. package/dist/comparison-table-CjTE-fHN.mjs +292 -0
  31. package/dist/comparison-table-CjTE-fHN.mjs.map +1 -0
  32. package/dist/comparison-table.cjs.js +1 -1
  33. package/dist/comparison-table.es.js +1 -1
  34. package/dist/components/avatar/src/avatar-constants.d.ts +2 -0
  35. package/dist/components/avatar/src/avatar-constants.d.ts.map +1 -0
  36. package/dist/components/avatar/src/avatar.d.ts +26 -0
  37. package/dist/components/avatar/src/avatar.d.ts.map +1 -0
  38. package/dist/components/button/src/button.visual.fixtures.d.ts +43 -0
  39. package/dist/components/button/src/button.visual.fixtures.d.ts.map +1 -0
  40. package/dist/components/carousel/src/carousel.d.ts.map +1 -1
  41. package/dist/components/color-dot/src/color-dot.d.ts +18 -8
  42. package/dist/components/color-dot/src/color-dot.d.ts.map +1 -1
  43. package/dist/components/comparison-table/src/components/OptionCard/option-card.d.ts.map +1 -1
  44. package/dist/components/date-picker/src/date-picker.d.ts +8 -0
  45. package/dist/components/date-picker/src/date-picker.d.ts.map +1 -1
  46. package/dist/components/drawer/src/drawer-content.d.ts +21 -0
  47. package/dist/components/drawer/src/drawer-content.d.ts.map +1 -1
  48. package/dist/components/hero-banner/src/hero-banner.visual.fixtures.d.ts +14 -0
  49. package/dist/components/hero-banner/src/hero-banner.visual.fixtures.d.ts.map +1 -0
  50. package/dist/components/loading/src/loading-dots.d.ts +19 -0
  51. package/dist/components/loading/src/loading-dots.d.ts.map +1 -0
  52. package/dist/components/loading/src/loading-text.d.ts +21 -0
  53. package/dist/components/loading/src/loading-text.d.ts.map +1 -0
  54. package/dist/components/loading/src/loading.d.ts +10 -0
  55. package/dist/components/loading/src/loading.d.ts.map +1 -0
  56. package/dist/components/message/src/message-bubble.d.ts +22 -0
  57. package/dist/components/message/src/message-bubble.d.ts.map +1 -0
  58. package/dist/components/message/src/message-stamp.d.ts +26 -0
  59. package/dist/components/message/src/message-stamp.d.ts.map +1 -0
  60. package/dist/components/message/src/message-utils.d.ts +3 -0
  61. package/dist/components/message/src/message-utils.d.ts.map +1 -0
  62. package/dist/components/message/src/message.d.ts +42 -0
  63. package/dist/components/message/src/message.d.ts.map +1 -0
  64. package/dist/components/modal/src/modal-content.d.ts +21 -0
  65. package/dist/components/modal/src/modal-content.d.ts.map +1 -1
  66. package/dist/components/modal/src/modal.d.ts +2 -0
  67. package/dist/components/modal/src/modal.d.ts.map +1 -1
  68. package/dist/components/popover/src/popover-content.d.ts +14 -0
  69. package/dist/components/popover/src/popover-content.d.ts.map +1 -1
  70. package/dist/components/radio-card-group/src/is-radio-card-item.d.ts +4 -0
  71. package/dist/components/radio-card-group/src/is-radio-card-item.d.ts.map +1 -0
  72. package/dist/components/radio-card-group/src/radio-card-group.constants.d.ts +5 -0
  73. package/dist/components/radio-card-group/src/radio-card-group.constants.d.ts.map +1 -0
  74. package/dist/components/radio-card-group/src/radio-card-group.d.ts +5 -6
  75. package/dist/components/radio-card-group/src/radio-card-group.d.ts.map +1 -1
  76. package/dist/components/radio-card-group/src/radio-card-item.d.ts +1 -2
  77. package/dist/components/radio-card-group/src/radio-card-item.d.ts.map +1 -1
  78. package/dist/components/search-field/src/search-field-autocomplete.d.ts +6 -3
  79. package/dist/components/search-field/src/search-field-autocomplete.d.ts.map +1 -1
  80. package/dist/components/search-field/src/search-field-base.d.ts +10 -3
  81. package/dist/components/search-field/src/search-field-base.d.ts.map +1 -1
  82. package/dist/components/search-field/src/search-field-button.d.ts +3 -1
  83. package/dist/components/search-field/src/search-field-button.d.ts.map +1 -1
  84. package/dist/components/search-field/src/search-field.d.ts +12 -6
  85. package/dist/components/search-field/src/search-field.d.ts.map +1 -1
  86. package/dist/components/table/src/drag-indicator-circle.d.ts +8 -1
  87. package/dist/components/table/src/drag-indicator-circle.d.ts.map +1 -1
  88. package/dist/components/table/src/table.d.ts.map +1 -1
  89. package/dist/components/tooltip/src/tooltip.d.ts +21 -0
  90. package/dist/components/tooltip/src/tooltip.d.ts.map +1 -1
  91. package/dist/components-metadata.js +33 -4
  92. package/dist/date-picker-CIizn3Pv.js +2 -0
  93. package/dist/{date-picker-uyPKJulK.js.map → date-picker-CIizn3Pv.js.map} +1 -1
  94. package/dist/date-picker-DixxW60s.mjs +1617 -0
  95. package/dist/{date-picker-CzxhZxsw.mjs.map → date-picker-DixxW60s.mjs.map} +1 -1
  96. package/dist/date-picker.cjs.js +1 -1
  97. package/dist/date-picker.es.js +1 -1
  98. package/dist/drawer-BzkRd9F0.mjs +577 -0
  99. package/dist/drawer-BzkRd9F0.mjs.map +1 -0
  100. package/dist/drawer-DyhsP34o.js +2 -0
  101. package/dist/drawer-DyhsP34o.js.map +1 -0
  102. package/dist/drawer.cjs.js +1 -1
  103. package/dist/drawer.es.js +1 -1
  104. package/dist/{footer-D9AcPwlH.js → footer-3Y-664-8.js} +2 -2
  105. package/dist/{footer-D9AcPwlH.js.map → footer-3Y-664-8.js.map} +1 -1
  106. package/dist/{footer-BLPlXaZK.mjs → footer-DenAcikt.mjs} +3 -3
  107. package/dist/{footer-BLPlXaZK.mjs.map → footer-DenAcikt.mjs.map} +1 -1
  108. package/dist/footer.cjs.js +1 -1
  109. package/dist/footer.es.js +1 -1
  110. package/dist/{hero-banner-DkC_BqM7.mjs → hero-banner-B7xrDfzN.mjs} +2 -2
  111. package/dist/{hero-banner-DkC_BqM7.mjs.map → hero-banner-B7xrDfzN.mjs.map} +1 -1
  112. package/dist/{hero-banner-D1A-_qou.js → hero-banner-DthITuQ7.js} +2 -2
  113. package/dist/{hero-banner-D1A-_qou.js.map → hero-banner-DthITuQ7.js.map} +1 -1
  114. package/dist/hero-banner.cjs.js +1 -1
  115. package/dist/hero-banner.es.js +1 -1
  116. package/dist/libraries/library/src/avatar.d.ts +6 -0
  117. package/dist/libraries/library/src/avatar.d.ts.map +1 -0
  118. package/dist/libraries/library/src/library.d.ts +3 -0
  119. package/dist/libraries/library/src/library.d.ts.map +1 -1
  120. package/dist/libraries/library/src/loading.d.ts +6 -0
  121. package/dist/libraries/library/src/loading.d.ts.map +1 -0
  122. package/dist/libraries/library/src/message.d.ts +6 -0
  123. package/dist/libraries/library/src/message.d.ts.map +1 -0
  124. package/dist/libraries/theme/src/ThemeProvider.d.ts.map +1 -1
  125. package/dist/libraries/theme/src/theme.d.ts +1 -0
  126. package/dist/libraries/theme/src/theme.d.ts.map +1 -1
  127. package/dist/libraries/theme/src/types.d.ts +7 -0
  128. package/dist/libraries/theme/src/types.d.ts.map +1 -1
  129. package/dist/libraries/theme/src/useThemePortalContainer.d.ts +12 -0
  130. package/dist/libraries/theme/src/useThemePortalContainer.d.ts.map +1 -0
  131. package/dist/library.cjs.js +1 -1
  132. package/dist/library.es.js +630 -623
  133. package/dist/library.es.js.map +1 -1
  134. package/dist/loading-Dwtkjstg.js +2 -0
  135. package/dist/loading-Dwtkjstg.js.map +1 -0
  136. package/dist/loading-r23nxJSz.mjs +107 -0
  137. package/dist/loading-r23nxJSz.mjs.map +1 -0
  138. package/dist/loading.cjs.js +2 -0
  139. package/dist/loading.cjs.js.map +1 -0
  140. package/dist/loading.es.js +5 -0
  141. package/dist/loading.es.js.map +1 -0
  142. package/dist/message-0yTS5pOF.js +3 -0
  143. package/dist/message-0yTS5pOF.js.map +1 -0
  144. package/dist/message-D9CDwcw9.mjs +132 -0
  145. package/dist/message-D9CDwcw9.mjs.map +1 -0
  146. package/dist/message.cjs.js +2 -0
  147. package/dist/message.cjs.js.map +1 -0
  148. package/dist/message.es.js +5 -0
  149. package/dist/message.es.js.map +1 -0
  150. package/dist/modal-DJn9idcw.js +2 -0
  151. package/dist/modal-DJn9idcw.js.map +1 -0
  152. package/dist/{modal-fp37VbrH.mjs → modal-EIP36327.mjs} +83 -80
  153. package/dist/modal-EIP36327.mjs.map +1 -0
  154. package/dist/modal.cjs.js +1 -1
  155. package/dist/modal.es.js +1 -1
  156. package/dist/{popover-I26xNbTz.mjs → popover-DERrvReO.mjs} +328 -325
  157. package/dist/popover-DERrvReO.mjs.map +1 -0
  158. package/dist/popover-DnGgzfQr.js +2 -0
  159. package/dist/popover-DnGgzfQr.js.map +1 -0
  160. package/dist/popover.cjs.js +1 -1
  161. package/dist/popover.es.js +1 -1
  162. package/dist/{product-card-CoY1KggV.js → product-card-8X-Ld2d_.js} +2 -2
  163. package/dist/{product-card-CoY1KggV.js.map → product-card-8X-Ld2d_.js.map} +1 -1
  164. package/dist/{product-card-C3_N0t-R.mjs → product-card-Bt-F0wKr.mjs} +10 -10
  165. package/dist/{product-card-C3_N0t-R.mjs.map → product-card-Bt-F0wKr.mjs.map} +1 -1
  166. package/dist/product-card.cjs.js +1 -1
  167. package/dist/product-card.es.js +1 -1
  168. package/dist/{promotion-card-BiHnQvhn.mjs → promotion-card-BnzIVNQ4.mjs} +2 -2
  169. package/dist/{promotion-card-BiHnQvhn.mjs.map → promotion-card-BnzIVNQ4.mjs.map} +1 -1
  170. package/dist/{promotion-card-Bag64gqP.js → promotion-card-DKc2Cx1h.js} +2 -2
  171. package/dist/{promotion-card-Bag64gqP.js.map → promotion-card-DKc2Cx1h.js.map} +1 -1
  172. package/dist/promotion-card.cjs.js +1 -1
  173. package/dist/promotion-card.es.js +1 -1
  174. package/dist/purpur.css +1 -1
  175. package/dist/radio-card-group-ZBXjYcQs.mjs +166 -0
  176. package/dist/radio-card-group-ZBXjYcQs.mjs.map +1 -0
  177. package/dist/radio-card-group-nrDi5EPK.js +2 -0
  178. package/dist/radio-card-group-nrDi5EPK.js.map +1 -0
  179. package/dist/radio-card-group.cjs.js +1 -1
  180. package/dist/radio-card-group.es.js +3 -5
  181. package/dist/search-field-2vdDbiT0.js +2 -0
  182. package/dist/search-field-2vdDbiT0.js.map +1 -0
  183. package/dist/search-field-DKyNh7pE.mjs +167 -0
  184. package/dist/search-field-DKyNh7pE.mjs.map +1 -0
  185. package/dist/search-field.cjs.js +1 -1
  186. package/dist/search-field.es.js +1 -1
  187. package/dist/{stepper-CWR2vGPj.mjs → stepper-BDsSa6yr.mjs} +2 -2
  188. package/dist/{stepper-CWR2vGPj.mjs.map → stepper-BDsSa6yr.mjs.map} +1 -1
  189. package/dist/{stepper-Df4X7DDR.js → stepper-DpauItjx.js} +2 -2
  190. package/dist/{stepper-Df4X7DDR.js.map → stepper-DpauItjx.js.map} +1 -1
  191. package/dist/stepper.cjs.js +1 -1
  192. package/dist/stepper.es.js +1 -1
  193. package/dist/{table-gnGUejtb.js → table-BOCcBzSO.js} +4 -4
  194. package/dist/table-BOCcBzSO.js.map +1 -0
  195. package/dist/{table-g_n68i4s.mjs → table-i1Gs9e0e.mjs} +440 -440
  196. package/dist/table-i1Gs9e0e.mjs.map +1 -0
  197. package/dist/table.cjs.js +1 -1
  198. package/dist/table.es.js +1 -1
  199. package/dist/{text-area-peNKG7g4.js → text-area-D0truMT1.js} +2 -2
  200. package/dist/{text-area-peNKG7g4.js.map → text-area-D0truMT1.js.map} +1 -1
  201. package/dist/{text-area-kJvg6cFp.mjs → text-area-IVH-k4MM.mjs} +3 -3
  202. package/dist/{text-area-kJvg6cFp.mjs.map → text-area-IVH-k4MM.mjs.map} +1 -1
  203. package/dist/text-area.cjs.js +1 -1
  204. package/dist/text-area.es.js +1 -1
  205. package/dist/theme.cjs.js +1 -1
  206. package/dist/theme.es.js +8 -6
  207. package/dist/theme.es.js.map +1 -1
  208. package/dist/tooltip-CJGmJDFQ.js +2 -0
  209. package/dist/{tooltip-C8Zxnqdb.js.map → tooltip-CJGmJDFQ.js.map} +1 -1
  210. package/dist/{tooltip-LU2Cy-QC.mjs → tooltip-RA-03bKs.mjs} +277 -274
  211. package/dist/{tooltip-LU2Cy-QC.mjs.map → tooltip-RA-03bKs.mjs.map} +1 -1
  212. package/dist/tooltip.cjs.js +1 -1
  213. package/dist/tooltip.es.js +1 -1
  214. package/dist/{useColorScheme-tAkY9LHt.mjs → useColorScheme-B9DWd-LN.mjs} +2 -2
  215. package/dist/{useColorScheme-tAkY9LHt.mjs.map → useColorScheme-B9DWd-LN.mjs.map} +1 -1
  216. package/dist/useColorScheme-DbTQjxNB.js +2 -0
  217. package/dist/{useColorScheme-DNyjsWX9.js.map → useColorScheme-DbTQjxNB.js.map} +1 -1
  218. package/dist/useThemePortalContainer-D9BYjEvT.js +2 -0
  219. package/dist/useThemePortalContainer-D9BYjEvT.js.map +1 -0
  220. package/dist/useThemePortalContainer-tFLTaYKN.mjs +9 -0
  221. package/dist/useThemePortalContainer-tFLTaYKN.mjs.map +1 -0
  222. package/package.json +27 -24
  223. package/src/aliases.ts +12 -0
  224. package/src/avatar.ts +6 -0
  225. package/src/entries.js +3 -0
  226. package/src/library.ts +5 -68
  227. package/src/loading.ts +6 -0
  228. package/src/message.ts +6 -0
  229. package/dist/ThemeProvider-CkX-BNWN.mjs +0 -337
  230. package/dist/ThemeProvider-Dy771oix.js +0 -2
  231. package/dist/carousel-DLkTL9sj.mjs +0 -1633
  232. package/dist/carousel-DLkTL9sj.mjs.map +0 -1
  233. package/dist/carousel-DXrtxRz5.js +0 -2
  234. package/dist/carousel-DXrtxRz5.js.map +0 -1
  235. package/dist/color-dot-6Mxngvce.mjs +0 -34
  236. package/dist/color-dot-6Mxngvce.mjs.map +0 -1
  237. package/dist/color-dot-B9w_ucWb.js +0 -2
  238. package/dist/color-dot-B9w_ucWb.js.map +0 -1
  239. package/dist/comparison-table-C74IAVqz.js +0 -2
  240. package/dist/comparison-table-C74IAVqz.js.map +0 -1
  241. package/dist/comparison-table-DctKxmX9.mjs +0 -267
  242. package/dist/comparison-table-DctKxmX9.mjs.map +0 -1
  243. package/dist/date-picker-CzxhZxsw.mjs +0 -1611
  244. package/dist/date-picker-uyPKJulK.js +0 -2
  245. package/dist/drawer-8Acg4wkV.mjs +0 -574
  246. package/dist/drawer-8Acg4wkV.mjs.map +0 -1
  247. package/dist/drawer-BLHgcEqb.js +0 -2
  248. package/dist/drawer-BLHgcEqb.js.map +0 -1
  249. package/dist/modal-Baisuc6m.js +0 -2
  250. package/dist/modal-Baisuc6m.js.map +0 -1
  251. package/dist/modal-fp37VbrH.mjs.map +0 -1
  252. package/dist/popover-B0XJZ5mj.js +0 -2
  253. package/dist/popover-B0XJZ5mj.js.map +0 -1
  254. package/dist/popover-I26xNbTz.mjs.map +0 -1
  255. package/dist/radio-card-group-CneOprGY.mjs +0 -168
  256. package/dist/radio-card-group-CneOprGY.mjs.map +0 -1
  257. package/dist/radio-card-group-Ctuvg61o.js +0 -2
  258. package/dist/radio-card-group-Ctuvg61o.js.map +0 -1
  259. package/dist/search-field-CpkHGIYi.mjs +0 -151
  260. package/dist/search-field-CpkHGIYi.mjs.map +0 -1
  261. package/dist/search-field-Z0PqDARl.js +0 -2
  262. package/dist/search-field-Z0PqDARl.js.map +0 -1
  263. package/dist/table-g_n68i4s.mjs.map +0 -1
  264. package/dist/table-gnGUejtb.js.map +0 -1
  265. package/dist/tooltip-C8Zxnqdb.js +0 -2
  266. package/dist/useColorScheme-DNyjsWX9.js +0 -2
  267. package/tokens/_dark.scss +0 -9
  268. package/tokens/_index.scss +0 -9
  269. package/tokens/border/variables.css +0 -13
  270. package/tokens/border/variables.d.ts +0 -10
  271. package/tokens/border/variables.dark.css +0 -12
  272. package/tokens/border/variables.dark.d.ts +0 -10
  273. package/tokens/border/variables.dark.js +0 -10
  274. package/tokens/border/variables.dark.json +0 -18
  275. package/tokens/border/variables.dark.scss +0 -10
  276. package/tokens/border/variables.js +0 -10
  277. package/tokens/border/variables.json +0 -18
  278. package/tokens/border/variables.scss +0 -10
  279. package/tokens/breakpoint/variables.css +0 -11
  280. package/tokens/breakpoint/variables.d.ts +0 -8
  281. package/tokens/breakpoint/variables.dark.css +0 -10
  282. package/tokens/breakpoint/variables.dark.d.ts +0 -8
  283. package/tokens/breakpoint/variables.dark.js +0 -8
  284. package/tokens/breakpoint/variables.dark.json +0 -14
  285. package/tokens/breakpoint/variables.dark.scss +0 -8
  286. package/tokens/breakpoint/variables.js +0 -8
  287. package/tokens/breakpoint/variables.json +0 -14
  288. package/tokens/breakpoint/variables.scss +0 -8
  289. package/tokens/color/variables.css +0 -262
  290. package/tokens/color/variables.d.ts +0 -253
  291. package/tokens/color/variables.dark.css +0 -262
  292. package/tokens/color/variables.dark.d.ts +0 -252
  293. package/tokens/color/variables.dark.js +0 -252
  294. package/tokens/color/variables.dark.json +0 -306
  295. package/tokens/color/variables.dark.scss +0 -252
  296. package/tokens/color/variables.js +0 -253
  297. package/tokens/color/variables.json +0 -307
  298. package/tokens/color/variables.scss +0 -253
  299. package/tokens/dark.css +0 -9
  300. package/tokens/dark.d.ts +0 -9
  301. package/tokens/dark.js +0 -9
  302. package/tokens/filter/variables.css +0 -4
  303. package/tokens/filter/variables.d.ts +0 -1
  304. package/tokens/filter/variables.dark.css +0 -3
  305. package/tokens/filter/variables.dark.d.ts +0 -1
  306. package/tokens/filter/variables.dark.js +0 -1
  307. package/tokens/filter/variables.dark.json +0 -7
  308. package/tokens/filter/variables.dark.scss +0 -1
  309. package/tokens/filter/variables.js +0 -1
  310. package/tokens/filter/variables.json +0 -7
  311. package/tokens/filter/variables.scss +0 -1
  312. package/tokens/gradient/variables.css +0 -53
  313. package/tokens/gradient/variables.d.ts +0 -9
  314. package/tokens/gradient/variables.dark.css +0 -51
  315. package/tokens/gradient/variables.dark.d.ts +0 -9
  316. package/tokens/gradient/variables.dark.js +0 -18
  317. package/tokens/gradient/variables.dark.json +0 -27
  318. package/tokens/gradient/variables.dark.scss +0 -36
  319. package/tokens/gradient/variables.js +0 -18
  320. package/tokens/gradient/variables.json +0 -27
  321. package/tokens/gradient/variables.scss +0 -42
  322. package/tokens/index.css +0 -18
  323. package/tokens/index.d.ts +0 -9
  324. package/tokens/index.js +0 -9
  325. package/tokens/motion/variables.css +0 -14
  326. package/tokens/motion/variables.d.ts +0 -11
  327. package/tokens/motion/variables.dark.css +0 -13
  328. package/tokens/motion/variables.dark.d.ts +0 -11
  329. package/tokens/motion/variables.dark.js +0 -11
  330. package/tokens/motion/variables.dark.json +0 -19
  331. package/tokens/motion/variables.dark.scss +0 -11
  332. package/tokens/motion/variables.js +0 -11
  333. package/tokens/motion/variables.json +0 -19
  334. package/tokens/motion/variables.scss +0 -11
  335. package/tokens/shadow/variables.css +0 -11
  336. package/tokens/shadow/variables.d.ts +0 -4
  337. package/tokens/shadow/variables.dark.css +0 -10
  338. package/tokens/shadow/variables.dark.d.ts +0 -4
  339. package/tokens/shadow/variables.dark.js +0 -4
  340. package/tokens/shadow/variables.dark.json +0 -8
  341. package/tokens/shadow/variables.dark.scss +0 -4
  342. package/tokens/shadow/variables.js +0 -4
  343. package/tokens/shadow/variables.json +0 -8
  344. package/tokens/shadow/variables.scss +0 -4
  345. package/tokens/spacing/variables.css +0 -26
  346. package/tokens/spacing/variables.d.ts +0 -23
  347. package/tokens/spacing/variables.dark.css +0 -17
  348. package/tokens/spacing/variables.dark.d.ts +0 -15
  349. package/tokens/spacing/variables.dark.js +0 -15
  350. package/tokens/spacing/variables.dark.json +0 -19
  351. package/tokens/spacing/variables.dark.scss +0 -15
  352. package/tokens/spacing/variables.js +0 -23
  353. package/tokens/spacing/variables.json +0 -31
  354. package/tokens/spacing/variables.scss +0 -23
  355. package/tokens/typography/variables.css +0 -30
  356. package/tokens/typography/variables.d.ts +0 -26
  357. package/tokens/typography/variables.dark.css +0 -29
  358. package/tokens/typography/variables.dark.d.ts +0 -26
  359. package/tokens/typography/variables.dark.js +0 -28
  360. package/tokens/typography/variables.dark.json +0 -38
  361. package/tokens/typography/variables.dark.scss +0 -26
  362. package/tokens/typography/variables.js +0 -28
  363. package/tokens/typography/variables.json +0 -38
  364. package/tokens/typography/variables.scss +0 -26
@@ -0,0 +1 @@
1
+ {"version":3,"file":"popover-DERrvReO.mjs","sources":["../../../components/popover/src/popover-flow.tsx","../../../components/popover/src/popover-internal-context.tsx","../../../components/popover/src/use-screen-size.hook.ts","../../../components/popover/src/popover-back.tsx","../../../common/temp/node_modules/.pnpm/@radix-ui+react-arrow@1.1.7_@types+react-dom@19.2.3_@types+react@19.2.14__@types+react@_e05f2c19a58a99fddf374207b5e3778c/node_modules/@radix-ui/react-arrow/dist/index.mjs","../../../common/temp/node_modules/.pnpm/@radix-ui+react-popper@1.2.8_@types+react-dom@19.2.3_@types+react@19.2.14__@types+react_13e0521d8aea7ebfbfb8bee1fb615c05/node_modules/@radix-ui/react-popper/dist/index.mjs","../../../common/temp/node_modules/.pnpm/@radix-ui+react-popover@1.1.15_@types+react-dom@19.2.3_@types+react@19.2.14__@types+rea_8b5332f8e883134e9d9ab2856fc4395d/node_modules/@radix-ui/react-popover/dist/index.mjs","../../../components/popover/src/popover-button.tsx","../../../components/popover/src/popover-steps.tsx","../../../components/popover/src/popover-footer.tsx","../../../components/popover/src/popover-header.tsx","../../../components/popover/src/popover-next.tsx","../../../components/popover/src/popover-content.tsx","../../../components/popover/src/popover-standalone.tsx","../../../components/popover/src/use-smooth-scroll.ts","../../../components/popover/src/usePopoverTrigger.ts","../../../components/popover/src/popover-trigger.tsx","../../../components/popover/src/usePopoverWalkthrough.ts","../../../components/popover/src/popover-walkthrough.tsx","../../../components/popover/src/popover.tsx"],"sourcesContent":["import React, {\n createContext,\n type ReactNode,\n useCallback,\n useContext,\n useMemo,\n useState,\n} from \"react\";\n\ntype PopoverFlowContextType = {\n currentStep: number;\n totalSteps: number;\n next: () => void;\n back: () => void;\n dismiss: () => void;\n registerStep: (step: number) => void;\n unregisterStep: (step: number) => void;\n separatorText: string;\n stepText: string;\n backLabel: string;\n nextLabel: string;\n finishLabel: string;\n openDelay: number;\n};\n\nconst PopoverFlowContext = createContext<PopoverFlowContextType | null>(null);\n\nexport const usePopoverFlow = () => {\n const context = useContext(PopoverFlowContext);\n if (!context) {\n throw new Error(\"usePopoverFlow must be used within a PopoverFlow provider\");\n }\n return context;\n};\n\nexport const useOptionalPopoverFlow = (): PopoverFlowContextType | null => {\n return useContext(PopoverFlowContext);\n};\n\nexport type PopoverFlowProps = {\n /**\n * Child components, typically multiple Popover components with step numbers.\n */\n children: ReactNode;\n /**\n * The step number to show when the flow starts.\n * @default 1\n */\n initialStep?: number;\n /**\n * Callback fired when the user completes the last step of the flow.\n */\n onComplete?: () => void;\n /**\n * Callback fired when the user dismisses the flow before completing it.\n */\n onDismiss?: () => void;\n /**\n * Text used as separator in the step indicator (e.g., \"of\" in \"1 of 3\").\n */\n separatorText: string;\n /**\n * Text label for \"Step\" in the step indicator.\n */\n stepText: string;\n /**\n * Label for the back navigation button.\n */\n backLabel: string;\n /**\n * Label for the next navigation button.\n */\n nextLabel: string;\n /**\n * Label for the finish button on the last step.\n */\n finishLabel: string;\n /**\n * Delay in milliseconds before opening the next popover in the flow.\n * @default 0\n */\n openDelay?: number;\n};\n\nexport const PopoverFlow = ({\n children,\n initialStep = 1,\n onComplete,\n onDismiss,\n separatorText,\n stepText,\n backLabel,\n nextLabel,\n finishLabel,\n openDelay = 0,\n}: PopoverFlowProps) => {\n const [currentStep, setCurrentStep] = useState(initialStep);\n const [registeredSteps, setRegisteredSteps] = useState<Set<number>>(new Set());\n\n const registerStep = useCallback((step: number) => {\n setRegisteredSteps((prev) => {\n const next = new Set(prev);\n next.add(step);\n return next;\n });\n }, []);\n\n const unregisterStep = useCallback((step: number) => {\n setRegisteredSteps((prev) => {\n const next = new Set(prev);\n next.delete(step);\n return next;\n });\n }, []);\n\n const next = useCallback(() => {\n setCurrentStep((prev) => {\n const nextStep = prev + 1;\n if (nextStep > registeredSteps.size) {\n onComplete?.();\n return prev;\n }\n return nextStep;\n });\n }, [registeredSteps.size, onComplete]);\n\n const back = useCallback(() => {\n setCurrentStep((prev) => Math.max(1, prev - 1));\n }, []);\n\n const dismiss = useCallback(() => {\n setCurrentStep(0);\n onDismiss?.();\n }, [onDismiss]);\n\n const value = useMemo(\n () => ({\n currentStep,\n totalSteps: registeredSteps.size,\n next,\n back,\n dismiss,\n registerStep,\n unregisterStep,\n separatorText,\n stepText,\n backLabel,\n nextLabel,\n finishLabel,\n openDelay,\n }),\n [\n currentStep,\n registeredSteps.size,\n next,\n back,\n dismiss,\n registerStep,\n unregisterStep,\n separatorText,\n stepText,\n backLabel,\n nextLabel,\n finishLabel,\n openDelay,\n ]\n );\n\n return <PopoverFlowContext.Provider value={value}>{children}</PopoverFlowContext.Provider>;\n};\n","import { createContext, useContext } from \"react\";\n\nexport type PopoverInternalContextValue = {\n isOpen: boolean;\n walkthroughStep: number;\n onScrollComplete?: () => void;\n onScrollStart?: () => void;\n disableClickOutside?: boolean;\n};\n\nexport const PopoverInternalContext = createContext<PopoverInternalContextValue | null>(null);\n\nexport const usePopoverInternal = () => {\n const context = useContext(PopoverInternalContext);\n return context;\n};\n\n// Separate context for UI-specific props that are set at the Content level\nexport type PopoverNegativeContextValue = {\n negative: boolean;\n};\n\nexport const PopoverNegativeContext = createContext<PopoverNegativeContextValue>({ negative: false });\n\nexport const usePopoverNegative = () => {\n const context = useContext(PopoverNegativeContext);\n return context;\n};\n","import { useCallback, useEffect, useState } from \"react\";\nimport { purpurBreakpointMd } from \"@purpur/tokens\";\n\nconst DEBOUNCE_DELAY = 150;\n\nexport const SCREEN_MEDIA_QUERY = {\n MAX_MD: `(max-width: ${purpurBreakpointMd})`,\n} as const;\n\nexport const useScreenSize = () => {\n const maxMediumScreen = window.matchMedia(SCREEN_MEDIA_QUERY.MAX_MD);\n function updateSize() {\n setIsMdOrSmaller(maxMediumScreen.matches);\n }\n\n const [isMdOrSmaller, setIsMdOrSmaller] = useState(() => {\n if (typeof window === \"undefined\") return false;\n return window.matchMedia(SCREEN_MEDIA_QUERY.MAX_MD).matches;\n });\n\n const handleResize = useCallback(() => {\n let timeoutId: ReturnType<typeof setTimeout>;\n\n return () => {\n clearTimeout(timeoutId);\n timeoutId = setTimeout(() => updateSize(), DEBOUNCE_DELAY);\n };\n }, [updateSize]);\n\n useEffect(() => {\n if (typeof window === \"undefined\") return;\n\n window.addEventListener(\"resize\", handleResize);\n\n return () => window.removeEventListener(\"resize\", handleResize);\n }, [handleResize]);\n\n return { isMdOrSmaller };\n};\n","import React, { type ReactNode } from \"react\";\nimport { Button } from \"@purpur/button\";\n\nimport { usePopoverFlow } from \"./popover-flow\";\nimport { usePopoverNegative } from \"./popover-internal-context\";\nimport { useScreenSize } from \"./use-screen-size.hook\";\n\nexport const PopoverBack = ({\n children,\n onClick,\n}: {\n children: ReactNode;\n onClick?: () => void;\n}) => {\n const { back } = usePopoverFlow();\n const { negative: isNegative } = usePopoverNegative();\n const { isMdOrSmaller } = useScreenSize();\n\n // Invert negative: if popover is negative (light), buttons should be normal (dark)\n const negative = isNegative ? false : true;\n\n const handleClick = () => {\n onClick?.();\n back();\n };\n\n return (\n <Button\n size=\"sm\"\n variant=\"secondary\"\n onClick={handleClick}\n negative={negative}\n fullWidth={isMdOrSmaller}\n >\n {children}\n </Button>\n );\n};\n\nPopoverBack.displayName = \"PopoverBack\";\n","// src/arrow.tsx\nimport * as React from \"react\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { jsx } from \"react/jsx-runtime\";\nvar NAME = \"Arrow\";\nvar Arrow = React.forwardRef((props, forwardedRef) => {\n const { children, width = 10, height = 5, ...arrowProps } = props;\n return /* @__PURE__ */ jsx(\n Primitive.svg,\n {\n ...arrowProps,\n ref: forwardedRef,\n width,\n height,\n viewBox: \"0 0 30 10\",\n preserveAspectRatio: \"none\",\n children: props.asChild ? children : /* @__PURE__ */ jsx(\"polygon\", { points: \"0,0 30,0 15,10\" })\n }\n );\n});\nArrow.displayName = NAME;\nvar Root = Arrow;\nexport {\n Arrow,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/popper.tsx\nimport * as React from \"react\";\nimport {\n useFloating,\n autoUpdate,\n offset,\n shift,\n limitShift,\n hide,\n arrow as floatingUIarrow,\n flip,\n size\n} from \"@floating-ui/react-dom\";\nimport * as ArrowPrimitive from \"@radix-ui/react-arrow\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nimport { useSize } from \"@radix-ui/react-use-size\";\nimport { jsx } from \"react/jsx-runtime\";\nvar SIDE_OPTIONS = [\"top\", \"right\", \"bottom\", \"left\"];\nvar ALIGN_OPTIONS = [\"start\", \"center\", \"end\"];\nvar POPPER_NAME = \"Popper\";\nvar [createPopperContext, createPopperScope] = createContextScope(POPPER_NAME);\nvar [PopperProvider, usePopperContext] = createPopperContext(POPPER_NAME);\nvar Popper = (props) => {\n const { __scopePopper, children } = props;\n const [anchor, setAnchor] = React.useState(null);\n return /* @__PURE__ */ jsx(PopperProvider, { scope: __scopePopper, anchor, onAnchorChange: setAnchor, children });\n};\nPopper.displayName = POPPER_NAME;\nvar ANCHOR_NAME = \"PopperAnchor\";\nvar PopperAnchor = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopePopper, virtualRef, ...anchorProps } = props;\n const context = usePopperContext(ANCHOR_NAME, __scopePopper);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const anchorRef = React.useRef(null);\n React.useEffect(() => {\n const previousAnchor = anchorRef.current;\n anchorRef.current = virtualRef?.current || ref.current;\n if (previousAnchor !== anchorRef.current) {\n context.onAnchorChange(anchorRef.current);\n }\n });\n return virtualRef ? null : /* @__PURE__ */ jsx(Primitive.div, { ...anchorProps, ref: composedRefs });\n }\n);\nPopperAnchor.displayName = ANCHOR_NAME;\nvar CONTENT_NAME = \"PopperContent\";\nvar [PopperContentProvider, useContentContext] = createPopperContext(CONTENT_NAME);\nvar PopperContent = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopePopper,\n side = \"bottom\",\n sideOffset = 0,\n align = \"center\",\n alignOffset = 0,\n arrowPadding = 0,\n avoidCollisions = true,\n collisionBoundary = [],\n collisionPadding: collisionPaddingProp = 0,\n sticky = \"partial\",\n hideWhenDetached = false,\n updatePositionStrategy = \"optimized\",\n onPlaced,\n ...contentProps\n } = props;\n const context = usePopperContext(CONTENT_NAME, __scopePopper);\n const [content, setContent] = React.useState(null);\n const composedRefs = useComposedRefs(forwardedRef, (node) => setContent(node));\n const [arrow, setArrow] = React.useState(null);\n const arrowSize = useSize(arrow);\n const arrowWidth = arrowSize?.width ?? 0;\n const arrowHeight = arrowSize?.height ?? 0;\n const desiredPlacement = side + (align !== \"center\" ? \"-\" + align : \"\");\n const collisionPadding = typeof collisionPaddingProp === \"number\" ? collisionPaddingProp : { top: 0, right: 0, bottom: 0, left: 0, ...collisionPaddingProp };\n const boundary = Array.isArray(collisionBoundary) ? collisionBoundary : [collisionBoundary];\n const hasExplicitBoundaries = boundary.length > 0;\n const detectOverflowOptions = {\n padding: collisionPadding,\n boundary: boundary.filter(isNotNull),\n // with `strategy: 'fixed'`, this is the only way to get it to respect boundaries\n altBoundary: hasExplicitBoundaries\n };\n const { refs, floatingStyles, placement, isPositioned, middlewareData } = useFloating({\n // default to `fixed` strategy so users don't have to pick and we also avoid focus scroll issues\n strategy: \"fixed\",\n placement: desiredPlacement,\n whileElementsMounted: (...args) => {\n const cleanup = autoUpdate(...args, {\n animationFrame: updatePositionStrategy === \"always\"\n });\n return cleanup;\n },\n elements: {\n reference: context.anchor\n },\n middleware: [\n offset({ mainAxis: sideOffset + arrowHeight, alignmentAxis: alignOffset }),\n avoidCollisions && shift({\n mainAxis: true,\n crossAxis: false,\n limiter: sticky === \"partial\" ? limitShift() : void 0,\n ...detectOverflowOptions\n }),\n avoidCollisions && flip({ ...detectOverflowOptions }),\n size({\n ...detectOverflowOptions,\n apply: ({ elements, rects, availableWidth, availableHeight }) => {\n const { width: anchorWidth, height: anchorHeight } = rects.reference;\n const contentStyle = elements.floating.style;\n contentStyle.setProperty(\"--radix-popper-available-width\", `${availableWidth}px`);\n contentStyle.setProperty(\"--radix-popper-available-height\", `${availableHeight}px`);\n contentStyle.setProperty(\"--radix-popper-anchor-width\", `${anchorWidth}px`);\n contentStyle.setProperty(\"--radix-popper-anchor-height\", `${anchorHeight}px`);\n }\n }),\n arrow && floatingUIarrow({ element: arrow, padding: arrowPadding }),\n transformOrigin({ arrowWidth, arrowHeight }),\n hideWhenDetached && hide({ strategy: \"referenceHidden\", ...detectOverflowOptions })\n ]\n });\n const [placedSide, placedAlign] = getSideAndAlignFromPlacement(placement);\n const handlePlaced = useCallbackRef(onPlaced);\n useLayoutEffect(() => {\n if (isPositioned) {\n handlePlaced?.();\n }\n }, [isPositioned, handlePlaced]);\n const arrowX = middlewareData.arrow?.x;\n const arrowY = middlewareData.arrow?.y;\n const cannotCenterArrow = middlewareData.arrow?.centerOffset !== 0;\n const [contentZIndex, setContentZIndex] = React.useState();\n useLayoutEffect(() => {\n if (content) setContentZIndex(window.getComputedStyle(content).zIndex);\n }, [content]);\n return /* @__PURE__ */ jsx(\n \"div\",\n {\n ref: refs.setFloating,\n \"data-radix-popper-content-wrapper\": \"\",\n style: {\n ...floatingStyles,\n transform: isPositioned ? floatingStyles.transform : \"translate(0, -200%)\",\n // keep off the page when measuring\n minWidth: \"max-content\",\n zIndex: contentZIndex,\n [\"--radix-popper-transform-origin\"]: [\n middlewareData.transformOrigin?.x,\n middlewareData.transformOrigin?.y\n ].join(\" \"),\n // hide the content if using the hide middleware and should be hidden\n // set visibility to hidden and disable pointer events so the UI behaves\n // as if the PopperContent isn't there at all\n ...middlewareData.hide?.referenceHidden && {\n visibility: \"hidden\",\n pointerEvents: \"none\"\n }\n },\n dir: props.dir,\n children: /* @__PURE__ */ jsx(\n PopperContentProvider,\n {\n scope: __scopePopper,\n placedSide,\n onArrowChange: setArrow,\n arrowX,\n arrowY,\n shouldHideArrow: cannotCenterArrow,\n children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n \"data-side\": placedSide,\n \"data-align\": placedAlign,\n ...contentProps,\n ref: composedRefs,\n style: {\n ...contentProps.style,\n // if the PopperContent hasn't been placed yet (not all measurements done)\n // we prevent animations so that users's animation don't kick in too early referring wrong sides\n animation: !isPositioned ? \"none\" : void 0\n }\n }\n )\n }\n )\n }\n );\n }\n);\nPopperContent.displayName = CONTENT_NAME;\nvar ARROW_NAME = \"PopperArrow\";\nvar OPPOSITE_SIDE = {\n top: \"bottom\",\n right: \"left\",\n bottom: \"top\",\n left: \"right\"\n};\nvar PopperArrow = React.forwardRef(function PopperArrow2(props, forwardedRef) {\n const { __scopePopper, ...arrowProps } = props;\n const contentContext = useContentContext(ARROW_NAME, __scopePopper);\n const baseSide = OPPOSITE_SIDE[contentContext.placedSide];\n return (\n // we have to use an extra wrapper because `ResizeObserver` (used by `useSize`)\n // doesn't report size as we'd expect on SVG elements.\n // it reports their bounding box which is effectively the largest path inside the SVG.\n /* @__PURE__ */ jsx(\n \"span\",\n {\n ref: contentContext.onArrowChange,\n style: {\n position: \"absolute\",\n left: contentContext.arrowX,\n top: contentContext.arrowY,\n [baseSide]: 0,\n transformOrigin: {\n top: \"\",\n right: \"0 0\",\n bottom: \"center 0\",\n left: \"100% 0\"\n }[contentContext.placedSide],\n transform: {\n top: \"translateY(100%)\",\n right: \"translateY(50%) rotate(90deg) translateX(-50%)\",\n bottom: `rotate(180deg)`,\n left: \"translateY(50%) rotate(-90deg) translateX(50%)\"\n }[contentContext.placedSide],\n visibility: contentContext.shouldHideArrow ? \"hidden\" : void 0\n },\n children: /* @__PURE__ */ jsx(\n ArrowPrimitive.Root,\n {\n ...arrowProps,\n ref: forwardedRef,\n style: {\n ...arrowProps.style,\n // ensures the element can be measured correctly (mostly for if SVG)\n display: \"block\"\n }\n }\n )\n }\n )\n );\n});\nPopperArrow.displayName = ARROW_NAME;\nfunction isNotNull(value) {\n return value !== null;\n}\nvar transformOrigin = (options) => ({\n name: \"transformOrigin\",\n options,\n fn(data) {\n const { placement, rects, middlewareData } = data;\n const cannotCenterArrow = middlewareData.arrow?.centerOffset !== 0;\n const isArrowHidden = cannotCenterArrow;\n const arrowWidth = isArrowHidden ? 0 : options.arrowWidth;\n const arrowHeight = isArrowHidden ? 0 : options.arrowHeight;\n const [placedSide, placedAlign] = getSideAndAlignFromPlacement(placement);\n const noArrowAlign = { start: \"0%\", center: \"50%\", end: \"100%\" }[placedAlign];\n const arrowXCenter = (middlewareData.arrow?.x ?? 0) + arrowWidth / 2;\n const arrowYCenter = (middlewareData.arrow?.y ?? 0) + arrowHeight / 2;\n let x = \"\";\n let y = \"\";\n if (placedSide === \"bottom\") {\n x = isArrowHidden ? noArrowAlign : `${arrowXCenter}px`;\n y = `${-arrowHeight}px`;\n } else if (placedSide === \"top\") {\n x = isArrowHidden ? noArrowAlign : `${arrowXCenter}px`;\n y = `${rects.floating.height + arrowHeight}px`;\n } else if (placedSide === \"right\") {\n x = `${-arrowHeight}px`;\n y = isArrowHidden ? noArrowAlign : `${arrowYCenter}px`;\n } else if (placedSide === \"left\") {\n x = `${rects.floating.width + arrowHeight}px`;\n y = isArrowHidden ? noArrowAlign : `${arrowYCenter}px`;\n }\n return { data: { x, y } };\n }\n});\nfunction getSideAndAlignFromPlacement(placement) {\n const [side, align = \"center\"] = placement.split(\"-\");\n return [side, align];\n}\nvar Root2 = Popper;\nvar Anchor = PopperAnchor;\nvar Content = PopperContent;\nvar Arrow = PopperArrow;\nexport {\n ALIGN_OPTIONS,\n Anchor,\n Arrow,\n Content,\n Popper,\n PopperAnchor,\n PopperArrow,\n PopperContent,\n Root2 as Root,\n SIDE_OPTIONS,\n createPopperScope\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/popover.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { DismissableLayer } from \"@radix-ui/react-dismissable-layer\";\nimport { useFocusGuards } from \"@radix-ui/react-focus-guards\";\nimport { FocusScope } from \"@radix-ui/react-focus-scope\";\nimport { useId } from \"@radix-ui/react-id\";\nimport * as PopperPrimitive from \"@radix-ui/react-popper\";\nimport { createPopperScope } from \"@radix-ui/react-popper\";\nimport { Portal as PortalPrimitive } from \"@radix-ui/react-portal\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { createSlot } from \"@radix-ui/react-slot\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { hideOthers } from \"aria-hidden\";\nimport { RemoveScroll } from \"react-remove-scroll\";\nimport { jsx } from \"react/jsx-runtime\";\nvar POPOVER_NAME = \"Popover\";\nvar [createPopoverContext, createPopoverScope] = createContextScope(POPOVER_NAME, [\n createPopperScope\n]);\nvar usePopperScope = createPopperScope();\nvar [PopoverProvider, usePopoverContext] = createPopoverContext(POPOVER_NAME);\nvar Popover = (props) => {\n const {\n __scopePopover,\n children,\n open: openProp,\n defaultOpen,\n onOpenChange,\n modal = false\n } = props;\n const popperScope = usePopperScope(__scopePopover);\n const triggerRef = React.useRef(null);\n const [hasCustomAnchor, setHasCustomAnchor] = React.useState(false);\n const [open, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen ?? false,\n onChange: onOpenChange,\n caller: POPOVER_NAME\n });\n return /* @__PURE__ */ jsx(PopperPrimitive.Root, { ...popperScope, children: /* @__PURE__ */ jsx(\n PopoverProvider,\n {\n scope: __scopePopover,\n contentId: useId(),\n triggerRef,\n open,\n onOpenChange: setOpen,\n onOpenToggle: React.useCallback(() => setOpen((prevOpen) => !prevOpen), [setOpen]),\n hasCustomAnchor,\n onCustomAnchorAdd: React.useCallback(() => setHasCustomAnchor(true), []),\n onCustomAnchorRemove: React.useCallback(() => setHasCustomAnchor(false), []),\n modal,\n children\n }\n ) });\n};\nPopover.displayName = POPOVER_NAME;\nvar ANCHOR_NAME = \"PopoverAnchor\";\nvar PopoverAnchor = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopePopover, ...anchorProps } = props;\n const context = usePopoverContext(ANCHOR_NAME, __scopePopover);\n const popperScope = usePopperScope(__scopePopover);\n const { onCustomAnchorAdd, onCustomAnchorRemove } = context;\n React.useEffect(() => {\n onCustomAnchorAdd();\n return () => onCustomAnchorRemove();\n }, [onCustomAnchorAdd, onCustomAnchorRemove]);\n return /* @__PURE__ */ jsx(PopperPrimitive.Anchor, { ...popperScope, ...anchorProps, ref: forwardedRef });\n }\n);\nPopoverAnchor.displayName = ANCHOR_NAME;\nvar TRIGGER_NAME = \"PopoverTrigger\";\nvar PopoverTrigger = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopePopover, ...triggerProps } = props;\n const context = usePopoverContext(TRIGGER_NAME, __scopePopover);\n const popperScope = usePopperScope(__scopePopover);\n const composedTriggerRef = useComposedRefs(forwardedRef, context.triggerRef);\n const trigger = /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n \"aria-haspopup\": \"dialog\",\n \"aria-expanded\": context.open,\n \"aria-controls\": context.contentId,\n \"data-state\": getState(context.open),\n ...triggerProps,\n ref: composedTriggerRef,\n onClick: composeEventHandlers(props.onClick, context.onOpenToggle)\n }\n );\n return context.hasCustomAnchor ? trigger : /* @__PURE__ */ jsx(PopperPrimitive.Anchor, { asChild: true, ...popperScope, children: trigger });\n }\n);\nPopoverTrigger.displayName = TRIGGER_NAME;\nvar PORTAL_NAME = \"PopoverPortal\";\nvar [PortalProvider, usePortalContext] = createPopoverContext(PORTAL_NAME, {\n forceMount: void 0\n});\nvar PopoverPortal = (props) => {\n const { __scopePopover, forceMount, children, container } = props;\n const context = usePopoverContext(PORTAL_NAME, __scopePopover);\n return /* @__PURE__ */ jsx(PortalProvider, { scope: __scopePopover, forceMount, children: /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx(PortalPrimitive, { asChild: true, container, children }) }) });\n};\nPopoverPortal.displayName = PORTAL_NAME;\nvar CONTENT_NAME = \"PopoverContent\";\nvar PopoverContent = React.forwardRef(\n (props, forwardedRef) => {\n const portalContext = usePortalContext(CONTENT_NAME, props.__scopePopover);\n const { forceMount = portalContext.forceMount, ...contentProps } = props;\n const context = usePopoverContext(CONTENT_NAME, props.__scopePopover);\n return /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: context.modal ? /* @__PURE__ */ jsx(PopoverContentModal, { ...contentProps, ref: forwardedRef }) : /* @__PURE__ */ jsx(PopoverContentNonModal, { ...contentProps, ref: forwardedRef }) });\n }\n);\nPopoverContent.displayName = CONTENT_NAME;\nvar Slot = createSlot(\"PopoverContent.RemoveScroll\");\nvar PopoverContentModal = React.forwardRef(\n (props, forwardedRef) => {\n const context = usePopoverContext(CONTENT_NAME, props.__scopePopover);\n const contentRef = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, contentRef);\n const isRightClickOutsideRef = React.useRef(false);\n React.useEffect(() => {\n const content = contentRef.current;\n if (content) return hideOthers(content);\n }, []);\n return /* @__PURE__ */ jsx(RemoveScroll, { as: Slot, allowPinchZoom: true, children: /* @__PURE__ */ jsx(\n PopoverContentImpl,\n {\n ...props,\n ref: composedRefs,\n trapFocus: context.open,\n disableOutsidePointerEvents: true,\n onCloseAutoFocus: composeEventHandlers(props.onCloseAutoFocus, (event) => {\n event.preventDefault();\n if (!isRightClickOutsideRef.current) context.triggerRef.current?.focus();\n }),\n onPointerDownOutside: composeEventHandlers(\n props.onPointerDownOutside,\n (event) => {\n const originalEvent = event.detail.originalEvent;\n const ctrlLeftClick = originalEvent.button === 0 && originalEvent.ctrlKey === true;\n const isRightClick = originalEvent.button === 2 || ctrlLeftClick;\n isRightClickOutsideRef.current = isRightClick;\n },\n { checkForDefaultPrevented: false }\n ),\n onFocusOutside: composeEventHandlers(\n props.onFocusOutside,\n (event) => event.preventDefault(),\n { checkForDefaultPrevented: false }\n )\n }\n ) });\n }\n);\nvar PopoverContentNonModal = React.forwardRef(\n (props, forwardedRef) => {\n const context = usePopoverContext(CONTENT_NAME, props.__scopePopover);\n const hasInteractedOutsideRef = React.useRef(false);\n const hasPointerDownOutsideRef = React.useRef(false);\n return /* @__PURE__ */ jsx(\n PopoverContentImpl,\n {\n ...props,\n ref: forwardedRef,\n trapFocus: false,\n disableOutsidePointerEvents: false,\n onCloseAutoFocus: (event) => {\n props.onCloseAutoFocus?.(event);\n if (!event.defaultPrevented) {\n if (!hasInteractedOutsideRef.current) context.triggerRef.current?.focus();\n event.preventDefault();\n }\n hasInteractedOutsideRef.current = false;\n hasPointerDownOutsideRef.current = false;\n },\n onInteractOutside: (event) => {\n props.onInteractOutside?.(event);\n if (!event.defaultPrevented) {\n hasInteractedOutsideRef.current = true;\n if (event.detail.originalEvent.type === \"pointerdown\") {\n hasPointerDownOutsideRef.current = true;\n }\n }\n const target = event.target;\n const targetIsTrigger = context.triggerRef.current?.contains(target);\n if (targetIsTrigger) event.preventDefault();\n if (event.detail.originalEvent.type === \"focusin\" && hasPointerDownOutsideRef.current) {\n event.preventDefault();\n }\n }\n }\n );\n }\n);\nvar PopoverContentImpl = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopePopover,\n trapFocus,\n onOpenAutoFocus,\n onCloseAutoFocus,\n disableOutsidePointerEvents,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside,\n onInteractOutside,\n ...contentProps\n } = props;\n const context = usePopoverContext(CONTENT_NAME, __scopePopover);\n const popperScope = usePopperScope(__scopePopover);\n useFocusGuards();\n return /* @__PURE__ */ jsx(\n FocusScope,\n {\n asChild: true,\n loop: true,\n trapped: trapFocus,\n onMountAutoFocus: onOpenAutoFocus,\n onUnmountAutoFocus: onCloseAutoFocus,\n children: /* @__PURE__ */ jsx(\n DismissableLayer,\n {\n asChild: true,\n disableOutsidePointerEvents,\n onInteractOutside,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside,\n onDismiss: () => context.onOpenChange(false),\n children: /* @__PURE__ */ jsx(\n PopperPrimitive.Content,\n {\n \"data-state\": getState(context.open),\n role: \"dialog\",\n id: context.contentId,\n ...popperScope,\n ...contentProps,\n ref: forwardedRef,\n style: {\n ...contentProps.style,\n // re-namespace exposed content custom properties\n ...{\n \"--radix-popover-content-transform-origin\": \"var(--radix-popper-transform-origin)\",\n \"--radix-popover-content-available-width\": \"var(--radix-popper-available-width)\",\n \"--radix-popover-content-available-height\": \"var(--radix-popper-available-height)\",\n \"--radix-popover-trigger-width\": \"var(--radix-popper-anchor-width)\",\n \"--radix-popover-trigger-height\": \"var(--radix-popper-anchor-height)\"\n }\n }\n }\n )\n }\n )\n }\n );\n }\n);\nvar CLOSE_NAME = \"PopoverClose\";\nvar PopoverClose = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopePopover, ...closeProps } = props;\n const context = usePopoverContext(CLOSE_NAME, __scopePopover);\n return /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n ...closeProps,\n ref: forwardedRef,\n onClick: composeEventHandlers(props.onClick, () => context.onOpenChange(false))\n }\n );\n }\n);\nPopoverClose.displayName = CLOSE_NAME;\nvar ARROW_NAME = \"PopoverArrow\";\nvar PopoverArrow = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopePopover, ...arrowProps } = props;\n const popperScope = usePopperScope(__scopePopover);\n return /* @__PURE__ */ jsx(PopperPrimitive.Arrow, { ...popperScope, ...arrowProps, ref: forwardedRef });\n }\n);\nPopoverArrow.displayName = ARROW_NAME;\nfunction getState(open) {\n return open ? \"open\" : \"closed\";\n}\nvar Root2 = Popover;\nvar Anchor2 = PopoverAnchor;\nvar Trigger = PopoverTrigger;\nvar Portal = PopoverPortal;\nvar Content2 = PopoverContent;\nvar Close = PopoverClose;\nvar Arrow2 = PopoverArrow;\nexport {\n Anchor2 as Anchor,\n Arrow2 as Arrow,\n Close,\n Content2 as Content,\n Popover,\n PopoverAnchor,\n PopoverArrow,\n PopoverClose,\n PopoverContent,\n PopoverPortal,\n PopoverTrigger,\n Portal,\n Root2 as Root,\n Trigger,\n createPopoverScope\n};\n//# sourceMappingURL=index.mjs.map\n","import React, { type ReactNode } from \"react\";\nimport { Button, type ButtonProps } from \"@purpur/button\";\nimport * as RadixPopover from \"@radix-ui/react-popover\";\n\nimport { useOptionalPopoverFlow } from \"./popover-flow\";\nimport { usePopoverNegative } from \"./popover-internal-context\";\nimport { useScreenSize } from \"./use-screen-size.hook\";\n\nexport type PopoverButtonProps = RadixPopover.PopoverCloseProps & {\n /**\n * Button label or content.\n */\n children: ReactNode;\n /**\n * Whether to use the child element as the button instead of wrapping in a Button component.\n * @default false\n */\n asChild?: boolean;\n /**\n * Click handler called when the button is clicked.\n */\n onClick?: () => void;\n /**\n * Visual variant of the button.\n * @default \"primary\"\n */\n variant?: ButtonProps[\"variant\"];\n /**\n * Whether clicking the button should dismiss/close the popover.\n * @default true\n */\n dismiss?: boolean;\n /**\n * Whether the button should take full width. If not specified, defaults to true on mobile (md or smaller).\n */\n fullWidth?: boolean;\n};\n\nexport const PopoverButton = ({\n children,\n asChild,\n onClick,\n variant = \"primary\",\n dismiss = true,\n fullWidth,\n}: PopoverButtonProps) => {\n const flow = useOptionalPopoverFlow();\n const { isMdOrSmaller } = useScreenSize();\n const { negative: isNegative } = usePopoverNegative();\n // Invert negative: if popover is negative (light), buttons should be normal (dark)\n const negative = isNegative ? false : true;\n\n const handleClick = () => {\n onClick?.();\n if (dismiss) {\n flow?.dismiss();\n }\n };\n\n const isFullWidth = fullWidth ?? isMdOrSmaller;\n\n const content = asChild ? (\n children\n ) : (\n <Button\n variant={variant}\n size=\"sm\"\n fullWidth={isFullWidth}\n negative={negative}\n onClick={handleClick}\n >\n {children}\n </Button>\n );\n\n // Always wrap with RadixPopover.Close for proper dismiss behavior\n if (dismiss) {\n return <RadixPopover.Close asChild>{content}</RadixPopover.Close>;\n }\n\n return content;\n};\n\nPopoverButton.displayName = \"PopoverButton\";\n","import React from \"react\";\nimport { Paragraph } from \"@purpur/paragraph\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./popover.module.scss\";\nimport { usePopoverFlow } from \"./popover-flow\";\nimport { usePopoverInternal } from \"./popover-internal-context\";\n\nconst cx = c.bind(styles);\n\nexport const PopoverSteps = () => {\n const flow = usePopoverFlow();\n const context = usePopoverInternal();\n\n // Use walkthroughStep from context (each popover knows its own step number)\n const currentStep = context?.walkthroughStep || flow.currentStep;\n const { totalSteps, separatorText, stepText } = flow;\n return (\n <>\n <Paragraph\n className={cx(\"purpur-popover__steps\")}\n role=\"status\"\n aria-live=\"polite\"\n aria-atomic=\"true\"\n >\n {stepText} {currentStep} {separatorText} {totalSteps}\n </Paragraph>\n </>\n );\n};\n\nPopoverSteps.displayName = \"PopoverSteps\";\n","import React, { type ReactNode } from \"react\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./popover.module.scss\";\nimport { useOptionalPopoverFlow } from \"./popover-flow\";\nimport { usePopoverInternal } from \"./popover-internal-context\";\nimport { PopoverSteps } from \"./popover-steps\";\n\nconst cx = c.bind(styles);\n\nexport type PopoverFooterProps = {\n /**\n * Footer content, typically navigation buttons like PopoverButton, PopoverNext, or PopoverBack.\n */\n children: ReactNode;\n /**\n * Optional CSS class name for custom styling.\n */\n className?: string;\n};\n\nexport const PopoverFooter = ({ children, className }: PopoverFooterProps) => {\n const flow = useOptionalPopoverFlow();\n const internal = usePopoverInternal();\n\n // Only show steps if we have a flow context AND this popover is part of the flow (walkthroughStep > 0)\n const showSteps = flow && internal && internal.walkthroughStep > 0;\n\n return (\n <div className={cx(\"purpur-popover__footer\", className)}>\n {showSteps && <PopoverSteps />}\n <div className={cx(\"purpur-popover__footer-button-group\")}>{children}</div>\n </div>\n );\n};\n\nPopoverFooter.displayName = \"PopoverFooter\";\n","import React, { forwardRef, type ReactNode } from \"react\";\nimport { Heading } from \"@purpur/heading\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./popover.module.scss\";\n\nconst cx = c.bind(styles);\n\nexport type PopoverHeaderProps = {\n title: string;\n icon?: ReactNode;\n};\n\nexport const PopoverHeader = forwardRef<HTMLDivElement, PopoverHeaderProps>(\n ({ title, icon }, ref) => {\n return (\n <div ref={ref} className={cx(\"purpur-popover__header-content\")}>\n {icon && <span className={cx(\"purpur-popover__icon\")}>{icon}</span>}\n <Heading\n tag=\"h2\"\n variant=\"title-100\"\n className={cx(\"purpur-popover__title\")}\n id=\"popover-heading\"\n >\n {title}\n </Heading>\n </div>\n );\n }\n);\n\nPopoverHeader.displayName = \"PopoverHeader\";\n","import React, { type ReactNode } from \"react\";\nimport { Button } from \"@purpur/button\";\n\nimport { usePopoverFlow } from \"./popover-flow\";\nimport { usePopoverNegative } from \"./popover-internal-context\";\nimport { useScreenSize } from \"./use-screen-size.hook\";\n\nexport const PopoverNext = ({\n children,\n onClick,\n}: {\n children: ReactNode;\n onClick?: () => void;\n}) => {\n const { next } = usePopoverFlow();\n const { negative: isNegative } = usePopoverNegative();\n const { isMdOrSmaller } = useScreenSize();\n\n // Invert negative: if popover is negative (light), buttons should be normal (dark)\n const negative = isNegative ? false : true;\n\n const handleClick = () => {\n onClick?.();\n next();\n };\n\n return (\n <Button\n size=\"sm\"\n variant=\"primary\"\n onClick={handleClick}\n negative={negative}\n fullWidth={isMdOrSmaller}\n >\n {children}\n </Button>\n );\n};\n\nPopoverNext.displayName = \"PopoverNext\";\n","import React, { forwardRef, type ReactNode, useRef } from \"react\";\nimport { Button } from \"@purpur/button\";\nimport { IconClose } from \"@purpur/icon/close\";\nimport { Paragraph } from \"@purpur/paragraph\";\nimport { useThemePortalContainer } from \"@purpur/theme\";\nimport * as RadixPopover from \"@radix-ui/react-popover\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./popover.module.scss\";\nimport { PopoverBack } from \"./popover-back\";\nimport { PopoverButton } from \"./popover-button\";\nimport { useOptionalPopoverFlow } from \"./popover-flow\";\nimport { PopoverFooter } from \"./popover-footer\";\nimport { PopoverHeader } from \"./popover-header\";\nimport { PopoverNegativeContext, usePopoverInternal } from \"./popover-internal-context\";\nimport { PopoverNext } from \"./popover-next\";\n\nconst cx = c.bind(styles);\n\nexport type PopoverAction = {\n type: \"next\" | \"back\" | \"finish\" | \"dismiss\";\n step?: number;\n};\n\nexport type PopoverContentProps = RadixPopover.PopoverContentProps & {\n /**\n * Position of the arrow/beak pointing to the trigger element.\n * Set to \"none\" to hide the arrow.\n * @default \"down\"\n */\n beakPosition?: \"up\" | \"right\" | \"down\" | \"left\" | \"none\";\n /**\n * Whether to use negative (light) styling for the popover content.\n * @default false\n */\n negative?: boolean;\n /**\n * Accessible label for the close button icon.\n */\n closeIconAriaLabel: string;\n /**\n * Main title text displayed in the popover header.\n */\n title: string;\n /**\n * Optional icon displayed in the popover header next to the title.\n */\n icon?: ReactNode;\n /**\n * Main body text content of the popover.\n */\n body: string;\n /**\n * Custom footer content. If not provided and used within PopoverFlow,\n * default navigation buttons will be rendered.\n */\n children?: ReactNode;\n /**\n * Callback fired when user interacts with navigation buttons (next, back, finish, dismiss).\n */\n onAction?: (action: PopoverAction) => void;\n /**\n * CSS z-index value for the popover content.\n * @default 210\n */\n zIndex?: number;\n /**\n * Optional DOM element to portal the popover content into. When omitted,\n * the popover renders inside the nearest `ThemeProvider` so it inherits\n * the active color scheme. Pass `document.body` (or any other element) to\n * override. Pass `null` to fall back to Radix' default (`document.body`).\n */\n container?: HTMLElement | null;\n};\n\nexport const PopoverContent = forwardRef<HTMLDivElement, PopoverContentProps>(\n (\n {\n children,\n className,\n beakPosition = \"down\",\n align = \"center\",\n alignOffset = 0,\n sideOffset = 5, // How close or far the popover is from the trigger\n negative = false,\n closeIconAriaLabel,\n title,\n icon,\n body,\n onAction,\n zIndex = 210,\n container,\n ...props\n },\n ref\n ) => {\n const flow = useOptionalPopoverFlow();\n const context = usePopoverInternal();\n const headerRef = useRef<HTMLDivElement>(null);\n const themePortalContainer = useThemePortalContainer();\n const portalContainer =\n container === undefined ? themePortalContainer : container ?? undefined;\n\n // Map beakPosition to Radix side values\n const beakPositionMap: Record<\n \"up\" | \"right\" | \"down\" | \"left\" | \"none\",\n \"bottom\" | \"left\" | \"top\" | \"right\"\n > = {\n up: \"bottom\",\n right: \"left\",\n down: \"top\",\n left: \"right\",\n none: \"bottom\", // Default position when no arrow\n };\n\n const radixSide = beakPositionMap[beakPosition];\n const shouldShowArrow = beakPosition !== \"none\";\n\n let footerContent = children;\n\n if (flow && !children) {\n // Use walkthroughStep from context (0 for standalone, actual step for walkthrough)\n const currentStep = context?.walkthroughStep || flow.currentStep;\n const isFirstStep = currentStep === 1;\n const isLastStep = currentStep === flow.totalSteps;\n\n footerContent = (\n <PopoverFooter>\n {!isFirstStep && (\n <PopoverBack onClick={() => onAction?.({ type: \"back\", step: currentStep })}>\n {flow.backLabel}\n </PopoverBack>\n )}\n {isLastStep ? (\n <PopoverButton\n onClick={() => onAction?.({ type: \"finish\", step: currentStep })}\n dismiss\n >\n {flow.finishLabel}\n </PopoverButton>\n ) : (\n <PopoverNext onClick={() => onAction?.({ type: \"next\", step: currentStep })}>\n {flow.nextLabel}\n </PopoverNext>\n )}\n </PopoverFooter>\n );\n }\n\n const handleOpenAutoFocus = (event: Event) => {\n event.preventDefault();\n\n if (flow) {\n const contentElement = event.currentTarget as HTMLElement;\n // Focus the content element for better accessibility\n // Use setTimeout to ensure the DOM has fully rendered\n setTimeout(() => {\n contentElement.setAttribute(\"tabindex\", \"-1\");\n contentElement.focus();\n }, 0);\n }\n\n props.onOpenAutoFocus?.(event);\n };\n\n const handleCloseAutoFocus = (event: Event) => {\n // Prevent focus from returning to trigger in walkthrough flow\n // This allows the next popover to manage focus properly\n if (flow) {\n event.preventDefault();\n }\n\n props.onCloseAutoFocus?.(event);\n };\n\n const handleClose = (event: React.MouseEvent) => {\n const prefersReducedMotion = window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches;\n\n if (flow && !prefersReducedMotion) {\n event.preventDefault();\n setTimeout(() => {\n onAction?.({ type: \"dismiss\", step: flow.currentStep });\n flow.dismiss();\n }, 200);\n } else {\n onAction?.({ type: \"dismiss\", step: flow?.currentStep });\n flow?.dismiss();\n }\n };\n\n const handleEscapeKey = (event: KeyboardEvent) => {\n const prefersReducedMotion = window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches;\n\n if (flow && !prefersReducedMotion) {\n event.preventDefault();\n setTimeout(() => {\n onAction?.({ type: \"dismiss\", step: flow.currentStep });\n flow.dismiss();\n }, 200);\n } else {\n onAction?.({ type: \"dismiss\", step: flow?.currentStep });\n flow?.dismiss();\n }\n };\n\n const handleInteractOutside = (event: Event) => {\n if (context?.disableClickOutside) {\n event.preventDefault();\n return;\n }\n\n if (flow) {\n const target = event.target as HTMLElement;\n const isPopoverInteraction =\n target.closest(\"[role='dialog']\") ||\n target.closest(\".purpur-popover__trigger\") ||\n target.closest(\"button[aria-haspopup='dialog']\");\n\n if (!isPopoverInteraction) {\n onAction?.({ type: \"dismiss\", step: flow.currentStep });\n setTimeout(() => {\n flow.dismiss();\n }, 0);\n }\n }\n };\n\n return (\n <RadixPopover.Portal container={portalContainer}>\n <RadixPopover.Content\n data-testid=\"popover-content\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={props[\"aria-label\"] ? undefined : \"popover-heading\"}\n ref={ref}\n side={radixSide}\n sideOffset={sideOffset}\n align={align}\n alignOffset={alignOffset}\n style={\n {\n \"--popover-z-index\": zIndex,\n } as React.CSSProperties\n }\n className={cx(\n \"purpur-popover__content\",\n { \"purpur-popover__content--negative\": negative },\n className\n )}\n onOpenAutoFocus={handleOpenAutoFocus}\n onCloseAutoFocus={handleCloseAutoFocus}\n onEscapeKeyDown={handleEscapeKey}\n onInteractOutside={handleInteractOutside}\n {...props}\n >\n <PopoverNegativeContext.Provider value={{ negative }}>\n <div className={cx(\"purpur-popover__inner\")}>\n <PopoverHeader ref={headerRef} title={title} icon={icon} />\n <Paragraph className={cx(\"purpur-popover__body\")}>{body}</Paragraph>\n </div>\n {footerContent}\n\n <RadixPopover.Close asChild onClick={handleClose}>\n <Button\n variant={negative ? \"text\" : \"tertiary-purple\"}\n size=\"sm\"\n aria-label={closeIconAriaLabel}\n className={cx(\"purpur-popover__close\")}\n negative={!negative}\n iconOnly\n >\n <IconClose size=\"xs\" className={cx(\"purpur-popover__icon\")} />\n </Button>\n </RadixPopover.Close>\n </PopoverNegativeContext.Provider>\n {shouldShowArrow && (\n <RadixPopover.Arrow\n className={cx(\"purpur-popover__arrow\")}\n aria-hidden=\"true\"\n tabIndex={-1}\n />\n )}\n </RadixPopover.Content>\n </RadixPopover.Portal>\n );\n }\n);\n\nPopoverContent.displayName = \"PopoverContent\";\n","import React, { type ReactNode, useState } from \"react\";\nimport * as RadixPopover from \"@radix-ui/react-popover\";\n\nimport { PopoverInternalContext } from \"./popover-internal-context\";\n\nexport type PopoverStandaloneProps = RadixPopover.PopoverProps & {\n children: ReactNode;\n className?: string;\n disableClickOutside?: boolean;\n};\n\nexport const PopoverStandalone = ({\n children,\n open: controlledOpen,\n defaultOpen = false,\n onOpenChange,\n disableClickOutside,\n ...props\n}: PopoverStandaloneProps) => {\n // Internal state for uncontrolled mode\n const [internalOpen, setInternalOpen] = useState(defaultOpen);\n\n const isControlled = controlledOpen !== undefined;\n const isOpen = isControlled ? controlledOpen : internalOpen;\n\n const handleOpenChange = (newOpen: boolean) => {\n if (!isControlled) {\n setInternalOpen(newOpen);\n }\n onOpenChange?.(newOpen);\n };\n\n return (\n <RadixPopover.Root open={isOpen} onOpenChange={handleOpenChange} {...props}>\n <PopoverInternalContext.Provider\n value={{\n isOpen,\n walkthroughStep: 0,\n disableClickOutside,\n }}\n >\n {children}\n </PopoverInternalContext.Provider>\n </RadixPopover.Root>\n );\n};\n\nPopoverStandalone.displayName = \"PopoverStandalone\";\n","import { useCallback, useRef } from \"react\";\n\nexport const useSmoothScroll = (onComplete?: () => void) => {\n const scrollAnimationId = useRef<number | null>(null);\n\n const cancelScroll = useCallback(() => {\n if (scrollAnimationId.current) {\n cancelAnimationFrame(scrollAnimationId.current);\n scrollAnimationId.current = null;\n }\n }, []);\n\n const scrollToElement = useCallback(\n (element: HTMLElement, duration: number = 600) => {\n const prefersReducedMotion = window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches;\n const rect = element.getBoundingClientRect();\n const absoluteTop = rect.top + window.pageYOffset;\n const elementHeight = rect.height;\n const viewportHeight = window.innerHeight;\n\n let targetY = absoluteTop - viewportHeight / 2 + elementHeight / 2;\n const documentHeight = document.documentElement.scrollHeight;\n const maxScroll = Math.max(0, documentHeight - viewportHeight);\n targetY = Math.max(0, Math.min(targetY, maxScroll));\n\n if (prefersReducedMotion) {\n window.scrollTo(0, targetY);\n onComplete?.();\n return;\n }\n\n const startY = window.pageYOffset;\n const distance = targetY - startY;\n const startTime = performance.now();\n\n const animateScroll = (currentTime: number) => {\n const elapsed = currentTime - startTime;\n const progress = Math.min(elapsed / duration, 1);\n\n const easeInOut =\n progress < 0.5 ? 2 * progress * progress : 1 - Math.pow(-2 * progress + 2, 2) / 2;\n\n const currentY = startY + distance * easeInOut;\n window.scrollTo(0, currentY);\n\n if (progress < 1) {\n scrollAnimationId.current = requestAnimationFrame(animateScroll);\n } else {\n scrollAnimationId.current = null;\n onComplete?.();\n }\n };\n\n cancelScroll();\n\n scrollAnimationId.current = requestAnimationFrame(animateScroll);\n },\n [onComplete, cancelScroll]\n );\n\n return { scrollToElement, cancelScroll };\n};\n","import { useEffect, useRef } from \"react\";\n\nimport { useOptionalPopoverFlow } from \"./popover-flow\";\nimport { usePopoverInternal } from \"./popover-internal-context\";\nimport { useSmoothScroll } from \"./use-smooth-scroll\";\n\nexport function usePopoverTrigger(ref: React.Ref<HTMLButtonElement>) {\n const triggerRef = useRef<HTMLButtonElement>(null);\n const context = usePopoverInternal();\n const flow = useOptionalPopoverFlow();\n const hasScrolled = useRef(false);\n const { scrollToElement, cancelScroll } = useSmoothScroll(context?.onScrollComplete);\n\n // Forward ref\n useEffect(() => {\n if (typeof ref === \"function\") {\n ref(triggerRef.current);\n } else if (ref) {\n (ref as React.MutableRefObject<HTMLButtonElement | null>).current = triggerRef.current;\n }\n }, [ref]);\n\n // Walkthrough scroll logic\n useEffect(() => {\n const isActiveStep =\n flow &&\n context?.walkthroughStep !== undefined &&\n flow.currentStep === context.walkthroughStep &&\n triggerRef.current &&\n !hasScrolled.current;\n\n if (isActiveStep) {\n const element = triggerRef.current!;\n const rect = element.getBoundingClientRect();\n const buffer = 100;\n const isVisible =\n rect.top >= -buffer &&\n rect.bottom <= window.innerHeight + buffer &&\n rect.left >= -buffer &&\n rect.right <= window.innerWidth + buffer;\n\n if (isVisible) {\n context?.onScrollComplete?.();\n } else {\n context?.onScrollStart?.();\n scrollToElement(element);\n }\n hasScrolled.current = true;\n } else if (flow?.currentStep !== context?.walkthroughStep) {\n hasScrolled.current = false;\n cancelScroll();\n }\n }, [flow?.currentStep, context?.walkthroughStep, flow, scrollToElement, cancelScroll, context]);\n\n // Cancel scroll on unmount\n useEffect(() => cancelScroll, [cancelScroll]);\n\n return { triggerRef, context };\n}\n","import React, { forwardRef } from \"react\";\nimport * as RadixPopover from \"@radix-ui/react-popover\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./popover.module.scss\";\nimport { usePopoverTrigger } from \"./usePopoverTrigger\";\n\nconst cx = c.bind(styles);\n\nexport type PopoverTriggerProps = RadixPopover.PopoverTriggerProps & {\n /**\n * Whether to show visual highlight effect around the trigger when popover is open.\n * @default true\n */\n highlight?: boolean;\n /**\n * Whether to use negative (light) styling for the highlight effect.\n * @default false\n */\n negative?: boolean;\n};\n\nexport const PopoverTrigger = forwardRef<HTMLButtonElement, PopoverTriggerProps>(\n ({ children, className, highlight = true, negative = false, ...props }, ref) => {\n const { triggerRef, context } = usePopoverTrigger(ref);\n\n return (\n <div\n className={cx(\n \"purpur-popover__trigger\",\n { \"purpur-popover__trigger--highlight\": context?.isOpen && highlight },\n className\n )}\n >\n {context?.isOpen && highlight && (\n <>\n {/* State 1: Outer glow effect */}\n <div\n className={cx(\n \"purpur-popover__trigger-highlight\",\n \"purpur-popover__trigger-highlight--state1\",\n { \"purpur-popover__trigger-highlight--negative\": negative }\n )}\n aria-hidden=\"true\"\n />\n {/* State 2: Inner border only */}\n <div\n className={cx(\n \"purpur-popover__trigger-highlight\",\n \"purpur-popover__trigger-highlight--state2\",\n { \"purpur-popover__trigger-highlight--negative\": negative }\n )}\n aria-hidden=\"true\"\n />\n </>\n )}\n <RadixPopover.Trigger\n ref={triggerRef}\n asChild\n aria-expanded={context?.isOpen ?? false}\n aria-haspopup=\"dialog\"\n {...props}\n >\n {children}\n </RadixPopover.Trigger>\n </div>\n );\n }\n);\n\nPopoverTrigger.displayName = \"PopoverTrigger\";\n","import { useCallback, useEffect, useRef, useState } from \"react\";\n\nimport { useOptionalPopoverFlow } from \"./popover-flow\";\n\nexport function usePopoverWalkthrough(step: number) {\n const flow = useOptionalPopoverFlow();\n const [actuallyOpen, setActuallyOpen] = useState(false);\n const [waitingForScroll, setWaitingForScroll] = useState(false);\n const timeoutRef = useRef<number | null>(null);\n const openedAtRef = useRef<number>(0);\n\n useEffect(() => {\n if (flow) {\n flow.registerStep(step);\n return () => flow.unregisterStep(step);\n }\n return () => {};\n }, [flow, step]);\n\n const shouldBeOpen = flow?.currentStep === step;\n\n const onScrollStart = useCallback(() => {\n setWaitingForScroll(true);\n }, []);\n\n const onScrollComplete = useCallback(() => {\n setWaitingForScroll(false);\n if (shouldBeOpen) {\n const delay = flow.openDelay;\n timeoutRef.current = window.setTimeout(() => {\n setActuallyOpen(true);\n openedAtRef.current = Date.now();\n }, delay);\n }\n }, [shouldBeOpen, flow]);\n\n useEffect(() => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n timeoutRef.current = null;\n }\n\n if (shouldBeOpen) {\n if (!waitingForScroll) {\n const delay = flow.openDelay;\n timeoutRef.current = window.setTimeout(() => {\n setActuallyOpen(true);\n openedAtRef.current = Date.now();\n }, delay);\n }\n } else {\n setActuallyOpen(false);\n setWaitingForScroll(false);\n openedAtRef.current = 0;\n }\n\n return () => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n timeoutRef.current = null;\n }\n };\n }, [shouldBeOpen, waitingForScroll, flow]);\n\n const handleOpenChange = useCallback(\n (open: boolean, consumerOnOpenChange?: (open: boolean) => void) => {\n consumerOnOpenChange?.(open);\n if (!open && actuallyOpen && flow && flow.currentStep === step) {\n const timeSinceOpen = Date.now() - openedAtRef.current;\n if (timeSinceOpen < 10 || timeoutRef.current !== null) {\n return;\n }\n flow.dismiss();\n }\n },\n [actuallyOpen, flow, step]\n );\n\n return {\n actuallyOpen,\n onScrollStart,\n onScrollComplete,\n handleOpenChange,\n };\n}\n","import React, { type ReactNode } from \"react\";\nimport * as RadixPopover from \"@radix-ui/react-popover\";\n\nimport { PopoverInternalContext } from \"./popover-internal-context\";\nimport { usePopoverWalkthrough } from \"./usePopoverWalkthrough\";\n\nexport type PopoverWalkthroughProps = RadixPopover.PopoverProps & {\n children: ReactNode;\n step: number;\n className?: string;\n disableClickOutside?: boolean;\n};\n\nexport const PopoverWalkthrough = ({\n children,\n step,\n onOpenChange: consumerOnOpenChange,\n disableClickOutside = true,\n ...props\n}: PopoverWalkthroughProps) => {\n const { actuallyOpen, onScrollStart, onScrollComplete, handleOpenChange } =\n usePopoverWalkthrough(step);\n\n return (\n <RadixPopover.Root\n open={actuallyOpen}\n onOpenChange={(open) => handleOpenChange(open, consumerOnOpenChange)}\n {...props}\n >\n <PopoverInternalContext.Provider\n value={{\n isOpen: actuallyOpen,\n walkthroughStep: step,\n onScrollStart,\n onScrollComplete,\n disableClickOutside,\n }}\n >\n {children}\n </PopoverInternalContext.Provider>\n </RadixPopover.Root>\n );\n};\n\nPopoverWalkthrough.displayName = \"PopoverWalkthrough\";\n","import React, { type ReactNode } from \"react\";\nimport type * as RadixPopover from \"@radix-ui/react-popover\";\n\nimport { PopoverBack } from \"./popover-back\";\nimport { PopoverButton } from \"./popover-button\";\nimport { type PopoverAction,PopoverContent } from \"./popover-content\";\nimport { PopoverFlow } from \"./popover-flow\";\nimport { PopoverFooter } from \"./popover-footer\";\nimport { PopoverNext } from \"./popover-next\";\nimport { PopoverStandalone } from \"./popover-standalone\";\nimport { PopoverTrigger } from \"./popover-trigger\";\nimport { PopoverWalkthrough } from \"./popover-walkthrough\";\n\nexport type { PopoverAction };\n\n// Base props shared by both variants\ntype BasePopoverProps = RadixPopover.PopoverProps & {\n children: ReactNode;\n className?: string;\n};\n\n// Standalone variant props\ntype StandalonePopoverProps = BasePopoverProps & {\n multistep?: false;\n step?: never;\n disableClickOutside?: boolean;\n};\n\n// Walkthrough variant props\ntype WalkthroughPopoverProps = BasePopoverProps & {\n multistep: true;\n step: number;\n disableClickOutside?: boolean;\n};\n\nexport type PopoverProps = StandalonePopoverProps | WalkthroughPopoverProps;\n\ntype PopoverCmp<P> = React.FunctionComponent<P> & {\n Back: typeof PopoverBack;\n Button: typeof PopoverButton;\n Content: typeof PopoverContent;\n Flow: typeof PopoverFlow;\n Footer: typeof PopoverFooter;\n Next: typeof PopoverNext;\n Trigger: typeof PopoverTrigger;\n};\n\nexport const Popover: PopoverCmp<PopoverProps> = (props) => {\n const { multistep = false, disableClickOutside, ...restProps } = props;\n\n if (multistep) {\n return (\n <PopoverWalkthrough\n {...(restProps as WalkthroughPopoverProps)}\n disableClickOutside={disableClickOutside ?? true}\n />\n );\n }\n\n return (\n <PopoverStandalone\n {...(restProps as StandalonePopoverProps)}\n disableClickOutside={disableClickOutside}\n />\n );\n};\n\nPopover.Back = PopoverBack;\nPopover.Button = PopoverButton;\nPopover.Content = PopoverContent;\nPopover.Flow = PopoverFlow;\nPopover.Footer = PopoverFooter;\nPopover.Next = PopoverNext;\nPopover.Trigger = PopoverTrigger;\n\nPopover.displayName = \"Popover\";\n"],"names":["PopoverFlowContext","createContext","usePopoverFlow","context","useContext","useOptionalPopoverFlow","PopoverFlow","children","initialStep","onComplete","onDismiss","separatorText","stepText","backLabel","nextLabel","finishLabel","openDelay","currentStep","setCurrentStep","useState","registeredSteps","setRegisteredSteps","registerStep","useCallback","step","prev","next","unregisterStep","nextStep","back","dismiss","value","useMemo","jsx","PopoverInternalContext","usePopoverInternal","PopoverNegativeContext","usePopoverNegative","DEBOUNCE_DELAY","SCREEN_MEDIA_QUERY","purpurBreakpointMd","useScreenSize","maxMediumScreen","updateSize","setIsMdOrSmaller","isMdOrSmaller","handleResize","timeoutId","useEffect","PopoverBack","onClick","isNegative","Button","NAME","Arrow","React","props","forwardedRef","width","height","arrowProps","Primitive","Root","POPPER_NAME","createPopperContext","createPopperScope","createContextScope","PopperProvider","usePopperContext","Popper","__scopePopper","anchor","setAnchor","ANCHOR_NAME","PopperAnchor","virtualRef","anchorProps","ref","composedRefs","useComposedRefs","anchorRef","previousAnchor","CONTENT_NAME","PopperContentProvider","useContentContext","PopperContent","side","sideOffset","align","alignOffset","arrowPadding","avoidCollisions","collisionBoundary","collisionPaddingProp","sticky","hideWhenDetached","updatePositionStrategy","onPlaced","contentProps","content","setContent","node","arrow","setArrow","arrowSize","useSize","arrowWidth","arrowHeight","desiredPlacement","collisionPadding","boundary","hasExplicitBoundaries","detectOverflowOptions","isNotNull","refs","floatingStyles","placement","isPositioned","middlewareData","useFloating","args","autoUpdate","offset","shift","limitShift","flip","size","elements","rects","availableWidth","availableHeight","anchorWidth","anchorHeight","contentStyle","floatingUIarrow","transformOrigin","hide","placedSide","placedAlign","getSideAndAlignFromPlacement","handlePlaced","useCallbackRef","useLayoutEffect","arrowX","arrowY","cannotCenterArrow","contentZIndex","setContentZIndex","ARROW_NAME","OPPOSITE_SIDE","PopperArrow","contentContext","baseSide","ArrowPrimitive.Root","options","data","isArrowHidden","noArrowAlign","arrowXCenter","arrowYCenter","x","y","Root2","Anchor","Content","POPOVER_NAME","createPopoverContext","usePopperScope","PopoverProvider","usePopoverContext","Popover","__scopePopover","openProp","defaultOpen","onOpenChange","modal","popperScope","triggerRef","hasCustomAnchor","setHasCustomAnchor","open","setOpen","useControllableState","PopperPrimitive.Root","useId","prevOpen","PopoverAnchor","onCustomAnchorAdd","onCustomAnchorRemove","PopperPrimitive.Anchor","TRIGGER_NAME","PopoverTrigger","triggerProps","composedTriggerRef","trigger","getState","composeEventHandlers","PORTAL_NAME","PortalProvider","usePortalContext","PopoverPortal","forceMount","container","Presence","PortalPrimitive","PopoverContent","portalContext","PopoverContentModal","PopoverContentNonModal","Slot","createSlot","contentRef","isRightClickOutsideRef","hideOthers","RemoveScroll","PopoverContentImpl","event","originalEvent","ctrlLeftClick","isRightClick","hasInteractedOutsideRef","hasPointerDownOutsideRef","target","trapFocus","onOpenAutoFocus","onCloseAutoFocus","disableOutsidePointerEvents","onEscapeKeyDown","onPointerDownOutside","onFocusOutside","onInteractOutside","useFocusGuards","FocusScope","DismissableLayer","PopperPrimitive.Content","CLOSE_NAME","PopoverClose","closeProps","PopoverArrow","PopperPrimitive.Arrow","Trigger","Portal","Content2","Close","Arrow2","PopoverButton","asChild","variant","fullWidth","flow","RadixPopover.Close","cx","c","styles","PopoverSteps","totalSteps","Fragment","jsxs","Paragraph","PopoverFooter","className","internal","showSteps","PopoverHeader","forwardRef","title","icon","Heading","PopoverNext","beakPosition","negative","closeIconAriaLabel","body","onAction","zIndex","headerRef","useRef","themePortalContainer","useThemePortalContainer","portalContainer","radixSide","shouldShowArrow","footerContent","isFirstStep","isLastStep","handleOpenAutoFocus","contentElement","handleCloseAutoFocus","handleClose","prefersReducedMotion","handleEscapeKey","handleInteractOutside","RadixPopover.Portal","RadixPopover.Content","IconClose","RadixPopover.Arrow","PopoverStandalone","controlledOpen","disableClickOutside","internalOpen","setInternalOpen","isControlled","isOpen","RadixPopover.Root","newOpen","useSmoothScroll","scrollAnimationId","cancelScroll","element","duration","rect","absoluteTop","elementHeight","viewportHeight","targetY","documentHeight","maxScroll","startY","distance","startTime","animateScroll","currentTime","elapsed","progress","easeInOut","currentY","usePopoverTrigger","hasScrolled","scrollToElement","buffer","highlight","RadixPopover.Trigger","usePopoverWalkthrough","actuallyOpen","setActuallyOpen","waitingForScroll","setWaitingForScroll","timeoutRef","openedAtRef","shouldBeOpen","onScrollStart","onScrollComplete","delay","handleOpenChange","consumerOnOpenChange","PopoverWalkthrough","multistep","restProps"],"mappings":"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","x_google_ignoreList":[4,5,6]}
@@ -0,0 +1,2 @@
1
+ "use strict";const a=require("react/jsx-runtime"),K=require("./button-DmybVApa.js"),l=require("react"),dt=require("./variables-Buqm4JZc.js"),j=require("./index-DlMXYAr3.js"),G=require("./index-_XxjJPRD.js"),H=require("./index-kcwFA4Dv.js"),M=require("./index-DA01QPpC.js"),ft=require("./index-BtWPC8xc.js"),R=require("./floating-ui.react-dom-Cc_YSprQ.js"),ht=require("./index-DOFLOnao.js"),Pe=require("./index-CleLBinl.js"),gt=require("./close.es-VL3lKi1O.js"),Ce=require("./paragraph-By4jMjnH.js");require("./ThemeProvider-D7oXcAde.js");const vt=require("./useThemePortalContainer-D9BYjEvT.js"),B=require("./bind-DeUYJ6m9.js"),_t=require("./heading-drD5ugCC.js");function mt(e){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const r in e)if(r!=="default"){const o=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,o.get?o:{enumerable:!0,get:()=>e[r]})}}return t.default=e,Object.freeze(t)}const h=mt(l),ne=l.createContext(null),se=()=>{const e=l.useContext(ne);if(!e)throw new Error("usePopoverFlow must be used within a PopoverFlow provider");return e},z=()=>l.useContext(ne),wt=({children:e,initialStep:t=1,onComplete:r,onDismiss:o,separatorText:n,stepText:s,backLabel:i,nextLabel:c,finishLabel:p,openDelay:u=0})=>{const[g,d]=l.useState(t),[f,x]=l.useState(new Set),w=l.useCallback(m=>{x(O=>{const y=new Set(O);return y.add(m),y})},[]),P=l.useCallback(m=>{x(O=>{const y=new Set(O);return y.delete(m),y})},[]),v=l.useCallback(()=>{d(m=>{const O=m+1;return O>f.size?(r?.(),m):O})},[f.size,r]),S=l.useCallback(()=>{d(m=>Math.max(1,m-1))},[]),A=l.useCallback(()=>{d(0),o?.()},[o]),E=l.useMemo(()=>({currentStep:g,totalSteps:f.size,next:v,back:S,dismiss:A,registerStep:w,unregisterStep:P,separatorText:n,stepText:s,backLabel:i,nextLabel:c,finishLabel:p,openDelay:u}),[g,f.size,v,S,A,w,P,n,s,i,c,p,u]);return a.jsx(ne.Provider,{value:E,children:e})},ie=l.createContext(null),V=()=>l.useContext(ie),Se=l.createContext({negative:!1}),ae=()=>l.useContext(Se),xt=150,we={MAX_MD:`(max-width: ${dt.purpurBreakpointMd})`},ce=()=>{const e=window.matchMedia(we.MAX_MD);function t(){o(e.matches)}const[r,o]=l.useState(()=>typeof window>"u"?!1:window.matchMedia(we.MAX_MD).matches),n=l.useCallback(()=>{let s;return()=>{clearTimeout(s),s=setTimeout(()=>t(),xt)}},[t]);return l.useEffect(()=>{if(!(typeof window>"u"))return window.addEventListener("resize",n),()=>window.removeEventListener("resize",n)},[n]),{isMdOrSmaller:r}},pe=({children:e,onClick:t})=>{const{back:r}=se(),{negative:o}=ae(),{isMdOrSmaller:n}=ce(),s=!o,i=()=>{t?.(),r()};return a.jsx(K.Button,{size:"sm",variant:"secondary",onClick:i,negative:s,fullWidth:n,children:e})};pe.displayName="PopoverBack";var Pt="Arrow",ye=h.forwardRef((e,t)=>{const{children:r,width:o=10,height:n=5,...s}=e;return a.jsx(j.Primitive.svg,{...s,ref:t,width:o,height:n,viewBox:"0 0 30 10",preserveAspectRatio:"none",children:e.asChild?r:a.jsx("polygon",{points:"0,0 30,0 15,10"})})});ye.displayName=Pt;var Ct=ye,le="Popper",[je,Oe]=H.createContextScope(le),[St,Re]=je(le),be=e=>{const{__scopePopper:t,children:r}=e,[o,n]=h.useState(null);return a.jsx(St,{scope:t,anchor:o,onAnchorChange:n,children:r})};be.displayName=le;var Ae="PopperAnchor",Ne=h.forwardRef((e,t)=>{const{__scopePopper:r,virtualRef:o,...n}=e,s=Re(Ae,r),i=h.useRef(null),c=G.useComposedRefs(t,i),p=h.useRef(null);return h.useEffect(()=>{const u=p.current;p.current=o?.current||i.current,u!==p.current&&s.onAnchorChange(p.current)}),o?null:a.jsx(j.Primitive.div,{...n,ref:c})});Ne.displayName=Ae;var ue="PopperContent",[yt,jt]=je(ue),Ee=h.forwardRef((e,t)=>{const{__scopePopper:r,side:o="bottom",sideOffset:n=0,align:s="center",alignOffset:i=0,arrowPadding:c=0,avoidCollisions:p=!0,collisionBoundary:u=[],collisionPadding:g=0,sticky:d="partial",hideWhenDetached:f=!1,updatePositionStrategy:x="optimized",onPlaced:w,...P}=e,v=Re(ue,r),[S,A]=h.useState(null),E=G.useComposedRefs(t,$=>A($)),[m,O]=h.useState(null),y=ht.useSize(m),Q=y?.width??0,I=y?.height??0,J=o+(s!=="center"?"-"+s:""),ee=typeof g=="number"?g:{top:0,right:0,bottom:0,left:0,...g},L=Array.isArray(u)?u:[u],te=L.length>0,k={padding:ee,boundary:L.filter(Rt),altBoundary:te},{refs:_,floatingStyles:C,placement:Y,isPositioned:X,middlewareData:F}=R.useFloating({strategy:"fixed",placement:J,whileElementsMounted:(...$)=>R.autoUpdate(...$,{animationFrame:x==="always"}),elements:{reference:v.anchor},middleware:[R.offset({mainAxis:n+I,alignmentAxis:i}),p&&R.shift({mainAxis:!0,crossAxis:!1,limiter:d==="partial"?R.limitShift():void 0,...k}),p&&R.flip({...k}),R.size({...k,apply:({elements:$,rects:me,availableWidth:ct,availableHeight:pt})=>{const{width:lt,height:ut}=me.reference,U=$.floating.style;U.setProperty("--radix-popper-available-width",`${ct}px`),U.setProperty("--radix-popper-available-height",`${pt}px`),U.setProperty("--radix-popper-anchor-width",`${lt}px`),U.setProperty("--radix-popper-anchor-height",`${ut}px`)}}),m&&R.arrow({element:m,padding:c}),bt({arrowWidth:Q,arrowHeight:I}),f&&R.hide({strategy:"referenceHidden",...k})]}),[ve,rt]=Te(Y),_e=H.useCallbackRef(w);H.useLayoutEffect2(()=>{X&&_e?.()},[X,_e]);const ot=F.arrow?.x,nt=F.arrow?.y,st=F.arrow?.centerOffset!==0,[it,at]=h.useState();return H.useLayoutEffect2(()=>{S&&at(window.getComputedStyle(S).zIndex)},[S]),a.jsx("div",{ref:_.setFloating,"data-radix-popper-content-wrapper":"",style:{...C,transform:X?C.transform:"translate(0, -200%)",minWidth:"max-content",zIndex:it,"--radix-popper-transform-origin":[F.transformOrigin?.x,F.transformOrigin?.y].join(" "),...F.hide?.referenceHidden&&{visibility:"hidden",pointerEvents:"none"}},dir:e.dir,children:a.jsx(yt,{scope:r,placedSide:ve,onArrowChange:O,arrowX:ot,arrowY:nt,shouldHideArrow:st,children:a.jsx(j.Primitive.div,{"data-side":ve,"data-align":rt,...P,ref:E,style:{...P.style,animation:X?void 0:"none"}})})})});Ee.displayName=ue;var ke="PopperArrow",Ot={top:"bottom",right:"left",bottom:"top",left:"right"},Fe=h.forwardRef(function(t,r){const{__scopePopper:o,...n}=t,s=jt(ke,o),i=Ot[s.placedSide];return a.jsx("span",{ref:s.onArrowChange,style:{position:"absolute",left:s.arrowX,top:s.arrowY,[i]:0,transformOrigin:{top:"",right:"0 0",bottom:"center 0",left:"100% 0"}[s.placedSide],transform:{top:"translateY(100%)",right:"translateY(50%) rotate(90deg) translateX(-50%)",bottom:"rotate(180deg)",left:"translateY(50%) rotate(-90deg) translateX(50%)"}[s.placedSide],visibility:s.shouldHideArrow?"hidden":void 0},children:a.jsx(Ct,{...n,ref:r,style:{...n.style,display:"block"}})})});Fe.displayName=ke;function Rt(e){return e!==null}var bt=e=>({name:"transformOrigin",options:e,fn(t){const{placement:r,rects:o,middlewareData:n}=t,i=n.arrow?.centerOffset!==0,c=i?0:e.arrowWidth,p=i?0:e.arrowHeight,[u,g]=Te(r),d={start:"0%",center:"50%",end:"100%"}[g],f=(n.arrow?.x??0)+c/2,x=(n.arrow?.y??0)+p/2;let w="",P="";return u==="bottom"?(w=i?d:`${f}px`,P=`${-p}px`):u==="top"?(w=i?d:`${f}px`,P=`${o.floating.height+p}px`):u==="right"?(w=`${-p}px`,P=i?d:`${x}px`):u==="left"&&(w=`${o.floating.width+p}px`,P=i?d:`${x}px`),{data:{x:w,y:P}}}});function Te(e){const[t,r="center"]=e.split("-");return[t,r]}var At=be,Me=Ne,Nt=Ee,Et=Fe,Z="Popover",[De]=H.createContextScope(Z,[Oe]),q=Oe(),[kt,N]=De(Z),Ie=e=>{const{__scopePopover:t,children:r,open:o,defaultOpen:n,onOpenChange:s,modal:i=!1}=e,c=q(t),p=h.useRef(null),[u,g]=h.useState(!1),[d,f]=j.useControllableState({prop:o,defaultProp:n??!1,onChange:s,caller:Z});return a.jsx(At,{...c,children:a.jsx(kt,{scope:t,contentId:ft.useId(),triggerRef:p,open:d,onOpenChange:f,onOpenToggle:h.useCallback(()=>f(x=>!x),[f]),hasCustomAnchor:u,onCustomAnchorAdd:h.useCallback(()=>g(!0),[]),onCustomAnchorRemove:h.useCallback(()=>g(!1),[]),modal:i,children:r})})};Ie.displayName=Z;var $e="PopoverAnchor",Ft=h.forwardRef((e,t)=>{const{__scopePopover:r,...o}=e,n=N($e,r),s=q(r),{onCustomAnchorAdd:i,onCustomAnchorRemove:c}=n;return h.useEffect(()=>(i(),()=>c()),[i,c]),a.jsx(Me,{...s,...o,ref:t})});Ft.displayName=$e;var He="PopoverTrigger",Be=h.forwardRef((e,t)=>{const{__scopePopover:r,...o}=e,n=N(He,r),s=q(r),i=G.useComposedRefs(t,n.triggerRef),c=a.jsx(j.Primitive.button,{type:"button","aria-haspopup":"dialog","aria-expanded":n.open,"aria-controls":n.contentId,"data-state":Ue(n.open),...o,ref:i,onClick:j.composeEventHandlers(e.onClick,n.onOpenToggle)});return n.hasCustomAnchor?c:a.jsx(Me,{asChild:!0,...s,children:c})});Be.displayName=He;var de="PopoverPortal",[Tt,Mt]=De(de,{forceMount:void 0}),ze=e=>{const{__scopePopover:t,forceMount:r,children:o,container:n}=e,s=N(de,t);return a.jsx(Tt,{scope:t,forceMount:r,children:a.jsx(Pe.Presence,{present:r||s.open,children:a.jsx(M.Portal,{asChild:!0,container:n,children:o})})})};ze.displayName=de;var D="PopoverContent",qe=h.forwardRef((e,t)=>{const r=Mt(D,e.__scopePopover),{forceMount:o=r.forceMount,...n}=e,s=N(D,e.__scopePopover);return a.jsx(Pe.Presence,{present:o||s.open,children:s.modal?a.jsx(It,{...n,ref:t}):a.jsx($t,{...n,ref:t})})});qe.displayName=D;var Dt=j.createSlot("PopoverContent.RemoveScroll"),It=h.forwardRef((e,t)=>{const r=N(D,e.__scopePopover),o=h.useRef(null),n=G.useComposedRefs(t,o),s=h.useRef(!1);return h.useEffect(()=>{const i=o.current;if(i)return M.hideOthers(i)},[]),a.jsx(M.ReactRemoveScroll,{as:Dt,allowPinchZoom:!0,children:a.jsx(We,{...e,ref:n,trapFocus:r.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:j.composeEventHandlers(e.onCloseAutoFocus,i=>{i.preventDefault(),s.current||r.triggerRef.current?.focus()}),onPointerDownOutside:j.composeEventHandlers(e.onPointerDownOutside,i=>{const c=i.detail.originalEvent,p=c.button===0&&c.ctrlKey===!0,u=c.button===2||p;s.current=u},{checkForDefaultPrevented:!1}),onFocusOutside:j.composeEventHandlers(e.onFocusOutside,i=>i.preventDefault(),{checkForDefaultPrevented:!1})})})}),$t=h.forwardRef((e,t)=>{const r=N(D,e.__scopePopover),o=h.useRef(!1),n=h.useRef(!1);return a.jsx(We,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:s=>{e.onCloseAutoFocus?.(s),s.defaultPrevented||(o.current||r.triggerRef.current?.focus(),s.preventDefault()),o.current=!1,n.current=!1},onInteractOutside:s=>{e.onInteractOutside?.(s),s.defaultPrevented||(o.current=!0,s.detail.originalEvent.type==="pointerdown"&&(n.current=!0));const i=s.target;r.triggerRef.current?.contains(i)&&s.preventDefault(),s.detail.originalEvent.type==="focusin"&&n.current&&s.preventDefault()}})}),We=h.forwardRef((e,t)=>{const{__scopePopover:r,trapFocus:o,onOpenAutoFocus:n,onCloseAutoFocus:s,disableOutsidePointerEvents:i,onEscapeKeyDown:c,onPointerDownOutside:p,onFocusOutside:u,onInteractOutside:g,...d}=e,f=N(D,r),x=q(r);return M.useFocusGuards(),a.jsx(M.FocusScope,{asChild:!0,loop:!0,trapped:o,onMountAutoFocus:n,onUnmountAutoFocus:s,children:a.jsx(M.DismissableLayer,{asChild:!0,disableOutsidePointerEvents:i,onInteractOutside:g,onEscapeKeyDown:c,onPointerDownOutside:p,onFocusOutside:u,onDismiss:()=>f.onOpenChange(!1),children:a.jsx(Nt,{"data-state":Ue(f.open),role:"dialog",id:f.contentId,...x,...d,ref:t,style:{...d.style,"--radix-popover-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-popover-content-available-width":"var(--radix-popper-available-width)","--radix-popover-content-available-height":"var(--radix-popper-available-height)","--radix-popover-trigger-width":"var(--radix-popper-anchor-width)","--radix-popover-trigger-height":"var(--radix-popper-anchor-height)"}})})})}),Le="PopoverClose",Ye=h.forwardRef((e,t)=>{const{__scopePopover:r,...o}=e,n=N(Le,r);return a.jsx(j.Primitive.button,{type:"button",...o,ref:t,onClick:j.composeEventHandlers(e.onClick,()=>n.onOpenChange(!1))})});Ye.displayName=Le;var Ht="PopoverArrow",Xe=h.forwardRef((e,t)=>{const{__scopePopover:r,...o}=e,n=q(r);return a.jsx(Et,{...n,...o,ref:t})});Xe.displayName=Ht;function Ue(e){return e?"open":"closed"}var Ke=Ie,Bt=Be,zt=ze,qt=qe,Ge=Ye,Wt=Xe;const fe=({children:e,asChild:t,onClick:r,variant:o="primary",dismiss:n=!0,fullWidth:s})=>{const i=z(),{isMdOrSmaller:c}=ce(),{negative:p}=ae(),u=!p,g=()=>{r?.(),n&&i?.dismiss()},d=s??c,f=t?e:a.jsx(K.Button,{variant:o,size:"sm",fullWidth:d,negative:u,onClick:g,children:e});return n?a.jsx(Ge,{asChild:!0,children:f}):f};fe.displayName="PopoverButton";const Lt="_highlightState1_1w9je_1",Yt="_fadeIn_1w9je_1",Xt="_slideFromTop_1w9je_1",Ut="_slideFromBottom_1w9je_1",Kt="_slideFromLeft_1w9je_1",Gt="_slideFromRight_1w9je_1",Vt="_fadeOut_1w9je_1",Zt="_slideToTop_1w9je_1",Qt="_slideToBottom_1w9je_1",Jt="_slideToLeft_1w9je_1",er="_slideToRight_1w9je_1",W={"purpur-popover__trigger":"_purpur-popover__trigger_1w9je_1","purpur-popover__trigger-highlight":"_purpur-popover__trigger-highlight_1w9je_5","purpur-popover__trigger-highlight--state1":"_purpur-popover__trigger-highlight--state1_1w9je_14",highlightState1:Lt,"purpur-popover__trigger-highlight--negative":"_purpur-popover__trigger-highlight--negative_1w9je_29","purpur-popover__trigger-highlight--state2":"_purpur-popover__trigger-highlight--state2_1w9je_33","purpur-popover__inner":"_purpur-popover__inner_1w9je_45","purpur-popover__content":"_purpur-popover__content_1w9je_52",fadeIn:Yt,slideFromTop:Xt,slideFromBottom:Ut,slideFromLeft:Kt,slideFromRight:Gt,fadeOut:Vt,slideToTop:Zt,slideToBottom:Qt,slideToLeft:Jt,slideToRight:er,"purpur-popover__arrow":"_purpur-popover__arrow_1w9je_103","purpur-popover__body":"_purpur-popover__body_1w9je_106","purpur-popover__icon":"_purpur-popover__icon_1w9je_107","purpur-popover__steps":"_purpur-popover__steps_1w9je_108","purpur-popover__title":"_purpur-popover__title_1w9je_109","purpur-popover__content--negative":"_purpur-popover__content--negative_1w9je_112","purpur-popover__header-content":"_purpur-popover__header-content_1w9je_124","purpur-popover__close":"_purpur-popover__close_1w9je_137","purpur-popover__footer":"_purpur-popover__footer_1w9je_142","purpur-popover__footer-button-group":"_purpur-popover__footer-button-group_1w9je_155"},tr=B.c.bind(W),Ve=()=>{const e=se(),r=V()?.walkthroughStep||e.currentStep,{totalSteps:o,separatorText:n,stepText:s}=e;return a.jsx(a.Fragment,{children:a.jsxs(Ce.Paragraph,{className:tr("purpur-popover__steps"),role:"status","aria-live":"polite","aria-atomic":"true",children:[s," ",r," ",n," ",o]})})};Ve.displayName="PopoverSteps";const xe=B.c.bind(W),he=({children:e,className:t})=>{const r=z(),o=V(),n=r&&o&&o.walkthroughStep>0;return a.jsxs("div",{className:xe("purpur-popover__footer",t),children:[n&&a.jsx(Ve,{}),a.jsx("div",{className:xe("purpur-popover__footer-button-group"),children:e})]})};he.displayName="PopoverFooter";const re=B.c.bind(W),Ze=l.forwardRef(({title:e,icon:t},r)=>a.jsxs("div",{ref:r,className:re("purpur-popover__header-content"),children:[t&&a.jsx("span",{className:re("purpur-popover__icon"),children:t}),a.jsx(_t.Heading,{tag:"h2",variant:"title-100",className:re("purpur-popover__title"),id:"popover-heading",children:e})]}));Ze.displayName="PopoverHeader";const ge=({children:e,onClick:t})=>{const{next:r}=se(),{negative:o}=ae(),{isMdOrSmaller:n}=ce(),s=!o,i=()=>{t?.(),r()};return a.jsx(K.Button,{size:"sm",variant:"primary",onClick:i,negative:s,fullWidth:n,children:e})};ge.displayName="PopoverNext";const T=B.c.bind(W),Qe=l.forwardRef(({children:e,className:t,beakPosition:r="down",align:o="center",alignOffset:n=0,sideOffset:s=5,negative:i=!1,closeIconAriaLabel:c,title:p,icon:u,body:g,onAction:d,zIndex:f=210,container:x,...w},P)=>{const v=z(),S=V(),A=l.useRef(null),E=vt.useThemePortalContainer(),m=x===void 0?E:x??void 0,y={up:"bottom",right:"left",down:"top",left:"right",none:"bottom"}[r],Q=r!=="none";let I=e;if(v&&!e){const _=S?.walkthroughStep||v.currentStep,C=_===1,Y=_===v.totalSteps;I=a.jsxs(he,{children:[!C&&a.jsx(pe,{onClick:()=>d?.({type:"back",step:_}),children:v.backLabel}),Y?a.jsx(fe,{onClick:()=>d?.({type:"finish",step:_}),dismiss:!0,children:v.finishLabel}):a.jsx(ge,{onClick:()=>d?.({type:"next",step:_}),children:v.nextLabel})]})}const J=_=>{if(_.preventDefault(),v){const C=_.currentTarget;setTimeout(()=>{C.setAttribute("tabindex","-1"),C.focus()},0)}w.onOpenAutoFocus?.(_)},ee=_=>{v&&_.preventDefault(),w.onCloseAutoFocus?.(_)},L=_=>{const C=window.matchMedia("(prefers-reduced-motion: reduce)").matches;v&&!C?(_.preventDefault(),setTimeout(()=>{d?.({type:"dismiss",step:v.currentStep}),v.dismiss()},200)):(d?.({type:"dismiss",step:v?.currentStep}),v?.dismiss())},te=_=>{const C=window.matchMedia("(prefers-reduced-motion: reduce)").matches;v&&!C?(_.preventDefault(),setTimeout(()=>{d?.({type:"dismiss",step:v.currentStep}),v.dismiss()},200)):(d?.({type:"dismiss",step:v?.currentStep}),v?.dismiss())},k=_=>{if(S?.disableClickOutside){_.preventDefault();return}if(v){const C=_.target;C.closest("[role='dialog']")||C.closest(".purpur-popover__trigger")||C.closest("button[aria-haspopup='dialog']")||(d?.({type:"dismiss",step:v.currentStep}),setTimeout(()=>{v.dismiss()},0))}};return a.jsx(zt,{container:m,children:a.jsxs(qt,{"data-testid":"popover-content",role:"dialog","aria-modal":"true","aria-labelledby":w["aria-label"]?void 0:"popover-heading",ref:P,side:y,sideOffset:s,align:o,alignOffset:n,style:{"--popover-z-index":f},className:T("purpur-popover__content",{"purpur-popover__content--negative":i},t),onOpenAutoFocus:J,onCloseAutoFocus:ee,onEscapeKeyDown:te,onInteractOutside:k,...w,children:[a.jsxs(Se.Provider,{value:{negative:i},children:[a.jsxs("div",{className:T("purpur-popover__inner"),children:[a.jsx(Ze,{ref:A,title:p,icon:u}),a.jsx(Ce.Paragraph,{className:T("purpur-popover__body"),children:g})]}),I,a.jsx(Ge,{asChild:!0,onClick:L,children:a.jsx(K.Button,{variant:i?"text":"tertiary-purple",size:"sm","aria-label":c,className:T("purpur-popover__close"),negative:!i,iconOnly:!0,children:a.jsx(gt.r,{size:"xs",className:T("purpur-popover__icon")})})})]}),Q&&a.jsx(Wt,{className:T("purpur-popover__arrow"),"aria-hidden":"true",tabIndex:-1})]})})});Qe.displayName="PopoverContent";const Je=({children:e,open:t,defaultOpen:r=!1,onOpenChange:o,disableClickOutside:n,...s})=>{const[i,c]=l.useState(r),p=t!==void 0,u=p?t:i,g=d=>{p||c(d),o?.(d)};return a.jsx(Ke,{open:u,onOpenChange:g,...s,children:a.jsx(ie.Provider,{value:{isOpen:u,walkthroughStep:0,disableClickOutside:n},children:e})})};Je.displayName="PopoverStandalone";const rr=e=>{const t=l.useRef(null),r=l.useCallback(()=>{t.current&&(cancelAnimationFrame(t.current),t.current=null)},[]);return{scrollToElement:l.useCallback((n,s=600)=>{const i=window.matchMedia("(prefers-reduced-motion: reduce)").matches,c=n.getBoundingClientRect(),p=c.top+window.pageYOffset,u=c.height,g=window.innerHeight;let d=p-g/2+u/2;const f=document.documentElement.scrollHeight,x=Math.max(0,f-g);if(d=Math.max(0,Math.min(d,x)),i){window.scrollTo(0,d),e?.();return}const w=window.pageYOffset,P=d-w,v=performance.now(),S=A=>{const E=A-v,m=Math.min(E/s,1),O=m<.5?2*m*m:1-Math.pow(-2*m+2,2)/2,y=w+P*O;window.scrollTo(0,y),m<1?t.current=requestAnimationFrame(S):(t.current=null,e?.())};r(),t.current=requestAnimationFrame(S)},[e,r]),cancelScroll:r}};function or(e){const t=l.useRef(null),r=V(),o=z(),n=l.useRef(!1),{scrollToElement:s,cancelScroll:i}=rr(r?.onScrollComplete);return l.useEffect(()=>{typeof e=="function"?e(t.current):e&&(e.current=t.current)},[e]),l.useEffect(()=>{if(o&&r?.walkthroughStep!==void 0&&o.currentStep===r.walkthroughStep&&t.current&&!n.current){const p=t.current,u=p.getBoundingClientRect(),g=100;u.top>=-g&&u.bottom<=window.innerHeight+g&&u.left>=-g&&u.right<=window.innerWidth+g?r?.onScrollComplete?.():(r?.onScrollStart?.(),s(p)),n.current=!0}else o?.currentStep!==r?.walkthroughStep&&(n.current=!1,i())},[o?.currentStep,r?.walkthroughStep,o,s,i,r]),l.useEffect(()=>i,[i]),{triggerRef:t,context:r}}const oe=B.c.bind(W),et=l.forwardRef(({children:e,className:t,highlight:r=!0,negative:o=!1,...n},s)=>{const{triggerRef:i,context:c}=or(s);return a.jsxs("div",{className:oe("purpur-popover__trigger",{"purpur-popover__trigger--highlight":c?.isOpen&&r},t),children:[c?.isOpen&&r&&a.jsxs(a.Fragment,{children:[a.jsx("div",{className:oe("purpur-popover__trigger-highlight","purpur-popover__trigger-highlight--state1",{"purpur-popover__trigger-highlight--negative":o}),"aria-hidden":"true"}),a.jsx("div",{className:oe("purpur-popover__trigger-highlight","purpur-popover__trigger-highlight--state2",{"purpur-popover__trigger-highlight--negative":o}),"aria-hidden":"true"})]}),a.jsx(Bt,{ref:i,asChild:!0,"aria-expanded":c?.isOpen??!1,"aria-haspopup":"dialog",...n,children:e})]})});et.displayName="PopoverTrigger";function nr(e){const t=z(),[r,o]=l.useState(!1),[n,s]=l.useState(!1),i=l.useRef(null),c=l.useRef(0);l.useEffect(()=>t?(t.registerStep(e),()=>t.unregisterStep(e)):()=>{},[t,e]);const p=t?.currentStep===e,u=l.useCallback(()=>{s(!0)},[]),g=l.useCallback(()=>{if(s(!1),p){const f=t.openDelay;i.current=window.setTimeout(()=>{o(!0),c.current=Date.now()},f)}},[p,t]);l.useEffect(()=>{if(i.current&&(clearTimeout(i.current),i.current=null),p){if(!n){const f=t.openDelay;i.current=window.setTimeout(()=>{o(!0),c.current=Date.now()},f)}}else o(!1),s(!1),c.current=0;return()=>{i.current&&(clearTimeout(i.current),i.current=null)}},[p,n,t]);const d=l.useCallback((f,x)=>{if(x?.(f),!f&&r&&t&&t.currentStep===e){if(Date.now()-c.current<10||i.current!==null)return;t.dismiss()}},[r,t,e]);return{actuallyOpen:r,onScrollStart:u,onScrollComplete:g,handleOpenChange:d}}const tt=({children:e,step:t,onOpenChange:r,disableClickOutside:o=!0,...n})=>{const{actuallyOpen:s,onScrollStart:i,onScrollComplete:c,handleOpenChange:p}=nr(t);return a.jsx(Ke,{open:s,onOpenChange:u=>p(u,r),...n,children:a.jsx(ie.Provider,{value:{isOpen:s,walkthroughStep:t,onScrollStart:i,onScrollComplete:c,disableClickOutside:o},children:e})})};tt.displayName="PopoverWalkthrough";const b=e=>{const{multistep:t=!1,disableClickOutside:r,...o}=e;return t?a.jsx(tt,{...o,disableClickOutside:r??!0}):a.jsx(Je,{...o,disableClickOutside:r})};b.Back=pe;b.Button=fe;b.Content=Qe;b.Flow=wt;b.Footer=he;b.Next=ge;b.Trigger=et;b.displayName="Popover";exports.Popover=b;
2
+ //# sourceMappingURL=popover-DnGgzfQr.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"popover-DnGgzfQr.js","sources":["../../../components/popover/src/popover-flow.tsx","../../../components/popover/src/popover-internal-context.tsx","../../../components/popover/src/use-screen-size.hook.ts","../../../components/popover/src/popover-back.tsx","../../../common/temp/node_modules/.pnpm/@radix-ui+react-arrow@1.1.7_@types+react-dom@19.2.3_@types+react@19.2.14__@types+react@_e05f2c19a58a99fddf374207b5e3778c/node_modules/@radix-ui/react-arrow/dist/index.mjs","../../../common/temp/node_modules/.pnpm/@radix-ui+react-popper@1.2.8_@types+react-dom@19.2.3_@types+react@19.2.14__@types+react_13e0521d8aea7ebfbfb8bee1fb615c05/node_modules/@radix-ui/react-popper/dist/index.mjs","../../../common/temp/node_modules/.pnpm/@radix-ui+react-popover@1.1.15_@types+react-dom@19.2.3_@types+react@19.2.14__@types+rea_8b5332f8e883134e9d9ab2856fc4395d/node_modules/@radix-ui/react-popover/dist/index.mjs","../../../components/popover/src/popover-button.tsx","../../../components/popover/src/popover-steps.tsx","../../../components/popover/src/popover-footer.tsx","../../../components/popover/src/popover-header.tsx","../../../components/popover/src/popover-next.tsx","../../../components/popover/src/popover-content.tsx","../../../components/popover/src/popover-standalone.tsx","../../../components/popover/src/use-smooth-scroll.ts","../../../components/popover/src/usePopoverTrigger.ts","../../../components/popover/src/popover-trigger.tsx","../../../components/popover/src/usePopoverWalkthrough.ts","../../../components/popover/src/popover-walkthrough.tsx","../../../components/popover/src/popover.tsx"],"sourcesContent":["import React, {\n createContext,\n type ReactNode,\n useCallback,\n useContext,\n useMemo,\n useState,\n} from \"react\";\n\ntype PopoverFlowContextType = {\n currentStep: number;\n totalSteps: number;\n next: () => void;\n back: () => void;\n dismiss: () => void;\n registerStep: (step: number) => void;\n unregisterStep: (step: number) => void;\n separatorText: string;\n stepText: string;\n backLabel: string;\n nextLabel: string;\n finishLabel: string;\n openDelay: number;\n};\n\nconst PopoverFlowContext = createContext<PopoverFlowContextType | null>(null);\n\nexport const usePopoverFlow = () => {\n const context = useContext(PopoverFlowContext);\n if (!context) {\n throw new Error(\"usePopoverFlow must be used within a PopoverFlow provider\");\n }\n return context;\n};\n\nexport const useOptionalPopoverFlow = (): PopoverFlowContextType | null => {\n return useContext(PopoverFlowContext);\n};\n\nexport type PopoverFlowProps = {\n /**\n * Child components, typically multiple Popover components with step numbers.\n */\n children: ReactNode;\n /**\n * The step number to show when the flow starts.\n * @default 1\n */\n initialStep?: number;\n /**\n * Callback fired when the user completes the last step of the flow.\n */\n onComplete?: () => void;\n /**\n * Callback fired when the user dismisses the flow before completing it.\n */\n onDismiss?: () => void;\n /**\n * Text used as separator in the step indicator (e.g., \"of\" in \"1 of 3\").\n */\n separatorText: string;\n /**\n * Text label for \"Step\" in the step indicator.\n */\n stepText: string;\n /**\n * Label for the back navigation button.\n */\n backLabel: string;\n /**\n * Label for the next navigation button.\n */\n nextLabel: string;\n /**\n * Label for the finish button on the last step.\n */\n finishLabel: string;\n /**\n * Delay in milliseconds before opening the next popover in the flow.\n * @default 0\n */\n openDelay?: number;\n};\n\nexport const PopoverFlow = ({\n children,\n initialStep = 1,\n onComplete,\n onDismiss,\n separatorText,\n stepText,\n backLabel,\n nextLabel,\n finishLabel,\n openDelay = 0,\n}: PopoverFlowProps) => {\n const [currentStep, setCurrentStep] = useState(initialStep);\n const [registeredSteps, setRegisteredSteps] = useState<Set<number>>(new Set());\n\n const registerStep = useCallback((step: number) => {\n setRegisteredSteps((prev) => {\n const next = new Set(prev);\n next.add(step);\n return next;\n });\n }, []);\n\n const unregisterStep = useCallback((step: number) => {\n setRegisteredSteps((prev) => {\n const next = new Set(prev);\n next.delete(step);\n return next;\n });\n }, []);\n\n const next = useCallback(() => {\n setCurrentStep((prev) => {\n const nextStep = prev + 1;\n if (nextStep > registeredSteps.size) {\n onComplete?.();\n return prev;\n }\n return nextStep;\n });\n }, [registeredSteps.size, onComplete]);\n\n const back = useCallback(() => {\n setCurrentStep((prev) => Math.max(1, prev - 1));\n }, []);\n\n const dismiss = useCallback(() => {\n setCurrentStep(0);\n onDismiss?.();\n }, [onDismiss]);\n\n const value = useMemo(\n () => ({\n currentStep,\n totalSteps: registeredSteps.size,\n next,\n back,\n dismiss,\n registerStep,\n unregisterStep,\n separatorText,\n stepText,\n backLabel,\n nextLabel,\n finishLabel,\n openDelay,\n }),\n [\n currentStep,\n registeredSteps.size,\n next,\n back,\n dismiss,\n registerStep,\n unregisterStep,\n separatorText,\n stepText,\n backLabel,\n nextLabel,\n finishLabel,\n openDelay,\n ]\n );\n\n return <PopoverFlowContext.Provider value={value}>{children}</PopoverFlowContext.Provider>;\n};\n","import { createContext, useContext } from \"react\";\n\nexport type PopoverInternalContextValue = {\n isOpen: boolean;\n walkthroughStep: number;\n onScrollComplete?: () => void;\n onScrollStart?: () => void;\n disableClickOutside?: boolean;\n};\n\nexport const PopoverInternalContext = createContext<PopoverInternalContextValue | null>(null);\n\nexport const usePopoverInternal = () => {\n const context = useContext(PopoverInternalContext);\n return context;\n};\n\n// Separate context for UI-specific props that are set at the Content level\nexport type PopoverNegativeContextValue = {\n negative: boolean;\n};\n\nexport const PopoverNegativeContext = createContext<PopoverNegativeContextValue>({ negative: false });\n\nexport const usePopoverNegative = () => {\n const context = useContext(PopoverNegativeContext);\n return context;\n};\n","import { useCallback, useEffect, useState } from \"react\";\nimport { purpurBreakpointMd } from \"@purpur/tokens\";\n\nconst DEBOUNCE_DELAY = 150;\n\nexport const SCREEN_MEDIA_QUERY = {\n MAX_MD: `(max-width: ${purpurBreakpointMd})`,\n} as const;\n\nexport const useScreenSize = () => {\n const maxMediumScreen = window.matchMedia(SCREEN_MEDIA_QUERY.MAX_MD);\n function updateSize() {\n setIsMdOrSmaller(maxMediumScreen.matches);\n }\n\n const [isMdOrSmaller, setIsMdOrSmaller] = useState(() => {\n if (typeof window === \"undefined\") return false;\n return window.matchMedia(SCREEN_MEDIA_QUERY.MAX_MD).matches;\n });\n\n const handleResize = useCallback(() => {\n let timeoutId: ReturnType<typeof setTimeout>;\n\n return () => {\n clearTimeout(timeoutId);\n timeoutId = setTimeout(() => updateSize(), DEBOUNCE_DELAY);\n };\n }, [updateSize]);\n\n useEffect(() => {\n if (typeof window === \"undefined\") return;\n\n window.addEventListener(\"resize\", handleResize);\n\n return () => window.removeEventListener(\"resize\", handleResize);\n }, [handleResize]);\n\n return { isMdOrSmaller };\n};\n","import React, { type ReactNode } from \"react\";\nimport { Button } from \"@purpur/button\";\n\nimport { usePopoverFlow } from \"./popover-flow\";\nimport { usePopoverNegative } from \"./popover-internal-context\";\nimport { useScreenSize } from \"./use-screen-size.hook\";\n\nexport const PopoverBack = ({\n children,\n onClick,\n}: {\n children: ReactNode;\n onClick?: () => void;\n}) => {\n const { back } = usePopoverFlow();\n const { negative: isNegative } = usePopoverNegative();\n const { isMdOrSmaller } = useScreenSize();\n\n // Invert negative: if popover is negative (light), buttons should be normal (dark)\n const negative = isNegative ? false : true;\n\n const handleClick = () => {\n onClick?.();\n back();\n };\n\n return (\n <Button\n size=\"sm\"\n variant=\"secondary\"\n onClick={handleClick}\n negative={negative}\n fullWidth={isMdOrSmaller}\n >\n {children}\n </Button>\n );\n};\n\nPopoverBack.displayName = \"PopoverBack\";\n","// src/arrow.tsx\nimport * as React from \"react\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { jsx } from \"react/jsx-runtime\";\nvar NAME = \"Arrow\";\nvar Arrow = React.forwardRef((props, forwardedRef) => {\n const { children, width = 10, height = 5, ...arrowProps } = props;\n return /* @__PURE__ */ jsx(\n Primitive.svg,\n {\n ...arrowProps,\n ref: forwardedRef,\n width,\n height,\n viewBox: \"0 0 30 10\",\n preserveAspectRatio: \"none\",\n children: props.asChild ? children : /* @__PURE__ */ jsx(\"polygon\", { points: \"0,0 30,0 15,10\" })\n }\n );\n});\nArrow.displayName = NAME;\nvar Root = Arrow;\nexport {\n Arrow,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/popper.tsx\nimport * as React from \"react\";\nimport {\n useFloating,\n autoUpdate,\n offset,\n shift,\n limitShift,\n hide,\n arrow as floatingUIarrow,\n flip,\n size\n} from \"@floating-ui/react-dom\";\nimport * as ArrowPrimitive from \"@radix-ui/react-arrow\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nimport { useSize } from \"@radix-ui/react-use-size\";\nimport { jsx } from \"react/jsx-runtime\";\nvar SIDE_OPTIONS = [\"top\", \"right\", \"bottom\", \"left\"];\nvar ALIGN_OPTIONS = [\"start\", \"center\", \"end\"];\nvar POPPER_NAME = \"Popper\";\nvar [createPopperContext, createPopperScope] = createContextScope(POPPER_NAME);\nvar [PopperProvider, usePopperContext] = createPopperContext(POPPER_NAME);\nvar Popper = (props) => {\n const { __scopePopper, children } = props;\n const [anchor, setAnchor] = React.useState(null);\n return /* @__PURE__ */ jsx(PopperProvider, { scope: __scopePopper, anchor, onAnchorChange: setAnchor, children });\n};\nPopper.displayName = POPPER_NAME;\nvar ANCHOR_NAME = \"PopperAnchor\";\nvar PopperAnchor = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopePopper, virtualRef, ...anchorProps } = props;\n const context = usePopperContext(ANCHOR_NAME, __scopePopper);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const anchorRef = React.useRef(null);\n React.useEffect(() => {\n const previousAnchor = anchorRef.current;\n anchorRef.current = virtualRef?.current || ref.current;\n if (previousAnchor !== anchorRef.current) {\n context.onAnchorChange(anchorRef.current);\n }\n });\n return virtualRef ? null : /* @__PURE__ */ jsx(Primitive.div, { ...anchorProps, ref: composedRefs });\n }\n);\nPopperAnchor.displayName = ANCHOR_NAME;\nvar CONTENT_NAME = \"PopperContent\";\nvar [PopperContentProvider, useContentContext] = createPopperContext(CONTENT_NAME);\nvar PopperContent = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopePopper,\n side = \"bottom\",\n sideOffset = 0,\n align = \"center\",\n alignOffset = 0,\n arrowPadding = 0,\n avoidCollisions = true,\n collisionBoundary = [],\n collisionPadding: collisionPaddingProp = 0,\n sticky = \"partial\",\n hideWhenDetached = false,\n updatePositionStrategy = \"optimized\",\n onPlaced,\n ...contentProps\n } = props;\n const context = usePopperContext(CONTENT_NAME, __scopePopper);\n const [content, setContent] = React.useState(null);\n const composedRefs = useComposedRefs(forwardedRef, (node) => setContent(node));\n const [arrow, setArrow] = React.useState(null);\n const arrowSize = useSize(arrow);\n const arrowWidth = arrowSize?.width ?? 0;\n const arrowHeight = arrowSize?.height ?? 0;\n const desiredPlacement = side + (align !== \"center\" ? \"-\" + align : \"\");\n const collisionPadding = typeof collisionPaddingProp === \"number\" ? collisionPaddingProp : { top: 0, right: 0, bottom: 0, left: 0, ...collisionPaddingProp };\n const boundary = Array.isArray(collisionBoundary) ? collisionBoundary : [collisionBoundary];\n const hasExplicitBoundaries = boundary.length > 0;\n const detectOverflowOptions = {\n padding: collisionPadding,\n boundary: boundary.filter(isNotNull),\n // with `strategy: 'fixed'`, this is the only way to get it to respect boundaries\n altBoundary: hasExplicitBoundaries\n };\n const { refs, floatingStyles, placement, isPositioned, middlewareData } = useFloating({\n // default to `fixed` strategy so users don't have to pick and we also avoid focus scroll issues\n strategy: \"fixed\",\n placement: desiredPlacement,\n whileElementsMounted: (...args) => {\n const cleanup = autoUpdate(...args, {\n animationFrame: updatePositionStrategy === \"always\"\n });\n return cleanup;\n },\n elements: {\n reference: context.anchor\n },\n middleware: [\n offset({ mainAxis: sideOffset + arrowHeight, alignmentAxis: alignOffset }),\n avoidCollisions && shift({\n mainAxis: true,\n crossAxis: false,\n limiter: sticky === \"partial\" ? limitShift() : void 0,\n ...detectOverflowOptions\n }),\n avoidCollisions && flip({ ...detectOverflowOptions }),\n size({\n ...detectOverflowOptions,\n apply: ({ elements, rects, availableWidth, availableHeight }) => {\n const { width: anchorWidth, height: anchorHeight } = rects.reference;\n const contentStyle = elements.floating.style;\n contentStyle.setProperty(\"--radix-popper-available-width\", `${availableWidth}px`);\n contentStyle.setProperty(\"--radix-popper-available-height\", `${availableHeight}px`);\n contentStyle.setProperty(\"--radix-popper-anchor-width\", `${anchorWidth}px`);\n contentStyle.setProperty(\"--radix-popper-anchor-height\", `${anchorHeight}px`);\n }\n }),\n arrow && floatingUIarrow({ element: arrow, padding: arrowPadding }),\n transformOrigin({ arrowWidth, arrowHeight }),\n hideWhenDetached && hide({ strategy: \"referenceHidden\", ...detectOverflowOptions })\n ]\n });\n const [placedSide, placedAlign] = getSideAndAlignFromPlacement(placement);\n const handlePlaced = useCallbackRef(onPlaced);\n useLayoutEffect(() => {\n if (isPositioned) {\n handlePlaced?.();\n }\n }, [isPositioned, handlePlaced]);\n const arrowX = middlewareData.arrow?.x;\n const arrowY = middlewareData.arrow?.y;\n const cannotCenterArrow = middlewareData.arrow?.centerOffset !== 0;\n const [contentZIndex, setContentZIndex] = React.useState();\n useLayoutEffect(() => {\n if (content) setContentZIndex(window.getComputedStyle(content).zIndex);\n }, [content]);\n return /* @__PURE__ */ jsx(\n \"div\",\n {\n ref: refs.setFloating,\n \"data-radix-popper-content-wrapper\": \"\",\n style: {\n ...floatingStyles,\n transform: isPositioned ? floatingStyles.transform : \"translate(0, -200%)\",\n // keep off the page when measuring\n minWidth: \"max-content\",\n zIndex: contentZIndex,\n [\"--radix-popper-transform-origin\"]: [\n middlewareData.transformOrigin?.x,\n middlewareData.transformOrigin?.y\n ].join(\" \"),\n // hide the content if using the hide middleware and should be hidden\n // set visibility to hidden and disable pointer events so the UI behaves\n // as if the PopperContent isn't there at all\n ...middlewareData.hide?.referenceHidden && {\n visibility: \"hidden\",\n pointerEvents: \"none\"\n }\n },\n dir: props.dir,\n children: /* @__PURE__ */ jsx(\n PopperContentProvider,\n {\n scope: __scopePopper,\n placedSide,\n onArrowChange: setArrow,\n arrowX,\n arrowY,\n shouldHideArrow: cannotCenterArrow,\n children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n \"data-side\": placedSide,\n \"data-align\": placedAlign,\n ...contentProps,\n ref: composedRefs,\n style: {\n ...contentProps.style,\n // if the PopperContent hasn't been placed yet (not all measurements done)\n // we prevent animations so that users's animation don't kick in too early referring wrong sides\n animation: !isPositioned ? \"none\" : void 0\n }\n }\n )\n }\n )\n }\n );\n }\n);\nPopperContent.displayName = CONTENT_NAME;\nvar ARROW_NAME = \"PopperArrow\";\nvar OPPOSITE_SIDE = {\n top: \"bottom\",\n right: \"left\",\n bottom: \"top\",\n left: \"right\"\n};\nvar PopperArrow = React.forwardRef(function PopperArrow2(props, forwardedRef) {\n const { __scopePopper, ...arrowProps } = props;\n const contentContext = useContentContext(ARROW_NAME, __scopePopper);\n const baseSide = OPPOSITE_SIDE[contentContext.placedSide];\n return (\n // we have to use an extra wrapper because `ResizeObserver` (used by `useSize`)\n // doesn't report size as we'd expect on SVG elements.\n // it reports their bounding box which is effectively the largest path inside the SVG.\n /* @__PURE__ */ jsx(\n \"span\",\n {\n ref: contentContext.onArrowChange,\n style: {\n position: \"absolute\",\n left: contentContext.arrowX,\n top: contentContext.arrowY,\n [baseSide]: 0,\n transformOrigin: {\n top: \"\",\n right: \"0 0\",\n bottom: \"center 0\",\n left: \"100% 0\"\n }[contentContext.placedSide],\n transform: {\n top: \"translateY(100%)\",\n right: \"translateY(50%) rotate(90deg) translateX(-50%)\",\n bottom: `rotate(180deg)`,\n left: \"translateY(50%) rotate(-90deg) translateX(50%)\"\n }[contentContext.placedSide],\n visibility: contentContext.shouldHideArrow ? \"hidden\" : void 0\n },\n children: /* @__PURE__ */ jsx(\n ArrowPrimitive.Root,\n {\n ...arrowProps,\n ref: forwardedRef,\n style: {\n ...arrowProps.style,\n // ensures the element can be measured correctly (mostly for if SVG)\n display: \"block\"\n }\n }\n )\n }\n )\n );\n});\nPopperArrow.displayName = ARROW_NAME;\nfunction isNotNull(value) {\n return value !== null;\n}\nvar transformOrigin = (options) => ({\n name: \"transformOrigin\",\n options,\n fn(data) {\n const { placement, rects, middlewareData } = data;\n const cannotCenterArrow = middlewareData.arrow?.centerOffset !== 0;\n const isArrowHidden = cannotCenterArrow;\n const arrowWidth = isArrowHidden ? 0 : options.arrowWidth;\n const arrowHeight = isArrowHidden ? 0 : options.arrowHeight;\n const [placedSide, placedAlign] = getSideAndAlignFromPlacement(placement);\n const noArrowAlign = { start: \"0%\", center: \"50%\", end: \"100%\" }[placedAlign];\n const arrowXCenter = (middlewareData.arrow?.x ?? 0) + arrowWidth / 2;\n const arrowYCenter = (middlewareData.arrow?.y ?? 0) + arrowHeight / 2;\n let x = \"\";\n let y = \"\";\n if (placedSide === \"bottom\") {\n x = isArrowHidden ? noArrowAlign : `${arrowXCenter}px`;\n y = `${-arrowHeight}px`;\n } else if (placedSide === \"top\") {\n x = isArrowHidden ? noArrowAlign : `${arrowXCenter}px`;\n y = `${rects.floating.height + arrowHeight}px`;\n } else if (placedSide === \"right\") {\n x = `${-arrowHeight}px`;\n y = isArrowHidden ? noArrowAlign : `${arrowYCenter}px`;\n } else if (placedSide === \"left\") {\n x = `${rects.floating.width + arrowHeight}px`;\n y = isArrowHidden ? noArrowAlign : `${arrowYCenter}px`;\n }\n return { data: { x, y } };\n }\n});\nfunction getSideAndAlignFromPlacement(placement) {\n const [side, align = \"center\"] = placement.split(\"-\");\n return [side, align];\n}\nvar Root2 = Popper;\nvar Anchor = PopperAnchor;\nvar Content = PopperContent;\nvar Arrow = PopperArrow;\nexport {\n ALIGN_OPTIONS,\n Anchor,\n Arrow,\n Content,\n Popper,\n PopperAnchor,\n PopperArrow,\n PopperContent,\n Root2 as Root,\n SIDE_OPTIONS,\n createPopperScope\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/popover.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { DismissableLayer } from \"@radix-ui/react-dismissable-layer\";\nimport { useFocusGuards } from \"@radix-ui/react-focus-guards\";\nimport { FocusScope } from \"@radix-ui/react-focus-scope\";\nimport { useId } from \"@radix-ui/react-id\";\nimport * as PopperPrimitive from \"@radix-ui/react-popper\";\nimport { createPopperScope } from \"@radix-ui/react-popper\";\nimport { Portal as PortalPrimitive } from \"@radix-ui/react-portal\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { createSlot } from \"@radix-ui/react-slot\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { hideOthers } from \"aria-hidden\";\nimport { RemoveScroll } from \"react-remove-scroll\";\nimport { jsx } from \"react/jsx-runtime\";\nvar POPOVER_NAME = \"Popover\";\nvar [createPopoverContext, createPopoverScope] = createContextScope(POPOVER_NAME, [\n createPopperScope\n]);\nvar usePopperScope = createPopperScope();\nvar [PopoverProvider, usePopoverContext] = createPopoverContext(POPOVER_NAME);\nvar Popover = (props) => {\n const {\n __scopePopover,\n children,\n open: openProp,\n defaultOpen,\n onOpenChange,\n modal = false\n } = props;\n const popperScope = usePopperScope(__scopePopover);\n const triggerRef = React.useRef(null);\n const [hasCustomAnchor, setHasCustomAnchor] = React.useState(false);\n const [open, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen ?? false,\n onChange: onOpenChange,\n caller: POPOVER_NAME\n });\n return /* @__PURE__ */ jsx(PopperPrimitive.Root, { ...popperScope, children: /* @__PURE__ */ jsx(\n PopoverProvider,\n {\n scope: __scopePopover,\n contentId: useId(),\n triggerRef,\n open,\n onOpenChange: setOpen,\n onOpenToggle: React.useCallback(() => setOpen((prevOpen) => !prevOpen), [setOpen]),\n hasCustomAnchor,\n onCustomAnchorAdd: React.useCallback(() => setHasCustomAnchor(true), []),\n onCustomAnchorRemove: React.useCallback(() => setHasCustomAnchor(false), []),\n modal,\n children\n }\n ) });\n};\nPopover.displayName = POPOVER_NAME;\nvar ANCHOR_NAME = \"PopoverAnchor\";\nvar PopoverAnchor = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopePopover, ...anchorProps } = props;\n const context = usePopoverContext(ANCHOR_NAME, __scopePopover);\n const popperScope = usePopperScope(__scopePopover);\n const { onCustomAnchorAdd, onCustomAnchorRemove } = context;\n React.useEffect(() => {\n onCustomAnchorAdd();\n return () => onCustomAnchorRemove();\n }, [onCustomAnchorAdd, onCustomAnchorRemove]);\n return /* @__PURE__ */ jsx(PopperPrimitive.Anchor, { ...popperScope, ...anchorProps, ref: forwardedRef });\n }\n);\nPopoverAnchor.displayName = ANCHOR_NAME;\nvar TRIGGER_NAME = \"PopoverTrigger\";\nvar PopoverTrigger = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopePopover, ...triggerProps } = props;\n const context = usePopoverContext(TRIGGER_NAME, __scopePopover);\n const popperScope = usePopperScope(__scopePopover);\n const composedTriggerRef = useComposedRefs(forwardedRef, context.triggerRef);\n const trigger = /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n \"aria-haspopup\": \"dialog\",\n \"aria-expanded\": context.open,\n \"aria-controls\": context.contentId,\n \"data-state\": getState(context.open),\n ...triggerProps,\n ref: composedTriggerRef,\n onClick: composeEventHandlers(props.onClick, context.onOpenToggle)\n }\n );\n return context.hasCustomAnchor ? trigger : /* @__PURE__ */ jsx(PopperPrimitive.Anchor, { asChild: true, ...popperScope, children: trigger });\n }\n);\nPopoverTrigger.displayName = TRIGGER_NAME;\nvar PORTAL_NAME = \"PopoverPortal\";\nvar [PortalProvider, usePortalContext] = createPopoverContext(PORTAL_NAME, {\n forceMount: void 0\n});\nvar PopoverPortal = (props) => {\n const { __scopePopover, forceMount, children, container } = props;\n const context = usePopoverContext(PORTAL_NAME, __scopePopover);\n return /* @__PURE__ */ jsx(PortalProvider, { scope: __scopePopover, forceMount, children: /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx(PortalPrimitive, { asChild: true, container, children }) }) });\n};\nPopoverPortal.displayName = PORTAL_NAME;\nvar CONTENT_NAME = \"PopoverContent\";\nvar PopoverContent = React.forwardRef(\n (props, forwardedRef) => {\n const portalContext = usePortalContext(CONTENT_NAME, props.__scopePopover);\n const { forceMount = portalContext.forceMount, ...contentProps } = props;\n const context = usePopoverContext(CONTENT_NAME, props.__scopePopover);\n return /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: context.modal ? /* @__PURE__ */ jsx(PopoverContentModal, { ...contentProps, ref: forwardedRef }) : /* @__PURE__ */ jsx(PopoverContentNonModal, { ...contentProps, ref: forwardedRef }) });\n }\n);\nPopoverContent.displayName = CONTENT_NAME;\nvar Slot = createSlot(\"PopoverContent.RemoveScroll\");\nvar PopoverContentModal = React.forwardRef(\n (props, forwardedRef) => {\n const context = usePopoverContext(CONTENT_NAME, props.__scopePopover);\n const contentRef = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, contentRef);\n const isRightClickOutsideRef = React.useRef(false);\n React.useEffect(() => {\n const content = contentRef.current;\n if (content) return hideOthers(content);\n }, []);\n return /* @__PURE__ */ jsx(RemoveScroll, { as: Slot, allowPinchZoom: true, children: /* @__PURE__ */ jsx(\n PopoverContentImpl,\n {\n ...props,\n ref: composedRefs,\n trapFocus: context.open,\n disableOutsidePointerEvents: true,\n onCloseAutoFocus: composeEventHandlers(props.onCloseAutoFocus, (event) => {\n event.preventDefault();\n if (!isRightClickOutsideRef.current) context.triggerRef.current?.focus();\n }),\n onPointerDownOutside: composeEventHandlers(\n props.onPointerDownOutside,\n (event) => {\n const originalEvent = event.detail.originalEvent;\n const ctrlLeftClick = originalEvent.button === 0 && originalEvent.ctrlKey === true;\n const isRightClick = originalEvent.button === 2 || ctrlLeftClick;\n isRightClickOutsideRef.current = isRightClick;\n },\n { checkForDefaultPrevented: false }\n ),\n onFocusOutside: composeEventHandlers(\n props.onFocusOutside,\n (event) => event.preventDefault(),\n { checkForDefaultPrevented: false }\n )\n }\n ) });\n }\n);\nvar PopoverContentNonModal = React.forwardRef(\n (props, forwardedRef) => {\n const context = usePopoverContext(CONTENT_NAME, props.__scopePopover);\n const hasInteractedOutsideRef = React.useRef(false);\n const hasPointerDownOutsideRef = React.useRef(false);\n return /* @__PURE__ */ jsx(\n PopoverContentImpl,\n {\n ...props,\n ref: forwardedRef,\n trapFocus: false,\n disableOutsidePointerEvents: false,\n onCloseAutoFocus: (event) => {\n props.onCloseAutoFocus?.(event);\n if (!event.defaultPrevented) {\n if (!hasInteractedOutsideRef.current) context.triggerRef.current?.focus();\n event.preventDefault();\n }\n hasInteractedOutsideRef.current = false;\n hasPointerDownOutsideRef.current = false;\n },\n onInteractOutside: (event) => {\n props.onInteractOutside?.(event);\n if (!event.defaultPrevented) {\n hasInteractedOutsideRef.current = true;\n if (event.detail.originalEvent.type === \"pointerdown\") {\n hasPointerDownOutsideRef.current = true;\n }\n }\n const target = event.target;\n const targetIsTrigger = context.triggerRef.current?.contains(target);\n if (targetIsTrigger) event.preventDefault();\n if (event.detail.originalEvent.type === \"focusin\" && hasPointerDownOutsideRef.current) {\n event.preventDefault();\n }\n }\n }\n );\n }\n);\nvar PopoverContentImpl = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopePopover,\n trapFocus,\n onOpenAutoFocus,\n onCloseAutoFocus,\n disableOutsidePointerEvents,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside,\n onInteractOutside,\n ...contentProps\n } = props;\n const context = usePopoverContext(CONTENT_NAME, __scopePopover);\n const popperScope = usePopperScope(__scopePopover);\n useFocusGuards();\n return /* @__PURE__ */ jsx(\n FocusScope,\n {\n asChild: true,\n loop: true,\n trapped: trapFocus,\n onMountAutoFocus: onOpenAutoFocus,\n onUnmountAutoFocus: onCloseAutoFocus,\n children: /* @__PURE__ */ jsx(\n DismissableLayer,\n {\n asChild: true,\n disableOutsidePointerEvents,\n onInteractOutside,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside,\n onDismiss: () => context.onOpenChange(false),\n children: /* @__PURE__ */ jsx(\n PopperPrimitive.Content,\n {\n \"data-state\": getState(context.open),\n role: \"dialog\",\n id: context.contentId,\n ...popperScope,\n ...contentProps,\n ref: forwardedRef,\n style: {\n ...contentProps.style,\n // re-namespace exposed content custom properties\n ...{\n \"--radix-popover-content-transform-origin\": \"var(--radix-popper-transform-origin)\",\n \"--radix-popover-content-available-width\": \"var(--radix-popper-available-width)\",\n \"--radix-popover-content-available-height\": \"var(--radix-popper-available-height)\",\n \"--radix-popover-trigger-width\": \"var(--radix-popper-anchor-width)\",\n \"--radix-popover-trigger-height\": \"var(--radix-popper-anchor-height)\"\n }\n }\n }\n )\n }\n )\n }\n );\n }\n);\nvar CLOSE_NAME = \"PopoverClose\";\nvar PopoverClose = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopePopover, ...closeProps } = props;\n const context = usePopoverContext(CLOSE_NAME, __scopePopover);\n return /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n ...closeProps,\n ref: forwardedRef,\n onClick: composeEventHandlers(props.onClick, () => context.onOpenChange(false))\n }\n );\n }\n);\nPopoverClose.displayName = CLOSE_NAME;\nvar ARROW_NAME = \"PopoverArrow\";\nvar PopoverArrow = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopePopover, ...arrowProps } = props;\n const popperScope = usePopperScope(__scopePopover);\n return /* @__PURE__ */ jsx(PopperPrimitive.Arrow, { ...popperScope, ...arrowProps, ref: forwardedRef });\n }\n);\nPopoverArrow.displayName = ARROW_NAME;\nfunction getState(open) {\n return open ? \"open\" : \"closed\";\n}\nvar Root2 = Popover;\nvar Anchor2 = PopoverAnchor;\nvar Trigger = PopoverTrigger;\nvar Portal = PopoverPortal;\nvar Content2 = PopoverContent;\nvar Close = PopoverClose;\nvar Arrow2 = PopoverArrow;\nexport {\n Anchor2 as Anchor,\n Arrow2 as Arrow,\n Close,\n Content2 as Content,\n Popover,\n PopoverAnchor,\n PopoverArrow,\n PopoverClose,\n PopoverContent,\n PopoverPortal,\n PopoverTrigger,\n Portal,\n Root2 as Root,\n Trigger,\n createPopoverScope\n};\n//# sourceMappingURL=index.mjs.map\n","import React, { type ReactNode } from \"react\";\nimport { Button, type ButtonProps } from \"@purpur/button\";\nimport * as RadixPopover from \"@radix-ui/react-popover\";\n\nimport { useOptionalPopoverFlow } from \"./popover-flow\";\nimport { usePopoverNegative } from \"./popover-internal-context\";\nimport { useScreenSize } from \"./use-screen-size.hook\";\n\nexport type PopoverButtonProps = RadixPopover.PopoverCloseProps & {\n /**\n * Button label or content.\n */\n children: ReactNode;\n /**\n * Whether to use the child element as the button instead of wrapping in a Button component.\n * @default false\n */\n asChild?: boolean;\n /**\n * Click handler called when the button is clicked.\n */\n onClick?: () => void;\n /**\n * Visual variant of the button.\n * @default \"primary\"\n */\n variant?: ButtonProps[\"variant\"];\n /**\n * Whether clicking the button should dismiss/close the popover.\n * @default true\n */\n dismiss?: boolean;\n /**\n * Whether the button should take full width. If not specified, defaults to true on mobile (md or smaller).\n */\n fullWidth?: boolean;\n};\n\nexport const PopoverButton = ({\n children,\n asChild,\n onClick,\n variant = \"primary\",\n dismiss = true,\n fullWidth,\n}: PopoverButtonProps) => {\n const flow = useOptionalPopoverFlow();\n const { isMdOrSmaller } = useScreenSize();\n const { negative: isNegative } = usePopoverNegative();\n // Invert negative: if popover is negative (light), buttons should be normal (dark)\n const negative = isNegative ? false : true;\n\n const handleClick = () => {\n onClick?.();\n if (dismiss) {\n flow?.dismiss();\n }\n };\n\n const isFullWidth = fullWidth ?? isMdOrSmaller;\n\n const content = asChild ? (\n children\n ) : (\n <Button\n variant={variant}\n size=\"sm\"\n fullWidth={isFullWidth}\n negative={negative}\n onClick={handleClick}\n >\n {children}\n </Button>\n );\n\n // Always wrap with RadixPopover.Close for proper dismiss behavior\n if (dismiss) {\n return <RadixPopover.Close asChild>{content}</RadixPopover.Close>;\n }\n\n return content;\n};\n\nPopoverButton.displayName = \"PopoverButton\";\n","import React from \"react\";\nimport { Paragraph } from \"@purpur/paragraph\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./popover.module.scss\";\nimport { usePopoverFlow } from \"./popover-flow\";\nimport { usePopoverInternal } from \"./popover-internal-context\";\n\nconst cx = c.bind(styles);\n\nexport const PopoverSteps = () => {\n const flow = usePopoverFlow();\n const context = usePopoverInternal();\n\n // Use walkthroughStep from context (each popover knows its own step number)\n const currentStep = context?.walkthroughStep || flow.currentStep;\n const { totalSteps, separatorText, stepText } = flow;\n return (\n <>\n <Paragraph\n className={cx(\"purpur-popover__steps\")}\n role=\"status\"\n aria-live=\"polite\"\n aria-atomic=\"true\"\n >\n {stepText} {currentStep} {separatorText} {totalSteps}\n </Paragraph>\n </>\n );\n};\n\nPopoverSteps.displayName = \"PopoverSteps\";\n","import React, { type ReactNode } from \"react\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./popover.module.scss\";\nimport { useOptionalPopoverFlow } from \"./popover-flow\";\nimport { usePopoverInternal } from \"./popover-internal-context\";\nimport { PopoverSteps } from \"./popover-steps\";\n\nconst cx = c.bind(styles);\n\nexport type PopoverFooterProps = {\n /**\n * Footer content, typically navigation buttons like PopoverButton, PopoverNext, or PopoverBack.\n */\n children: ReactNode;\n /**\n * Optional CSS class name for custom styling.\n */\n className?: string;\n};\n\nexport const PopoverFooter = ({ children, className }: PopoverFooterProps) => {\n const flow = useOptionalPopoverFlow();\n const internal = usePopoverInternal();\n\n // Only show steps if we have a flow context AND this popover is part of the flow (walkthroughStep > 0)\n const showSteps = flow && internal && internal.walkthroughStep > 0;\n\n return (\n <div className={cx(\"purpur-popover__footer\", className)}>\n {showSteps && <PopoverSteps />}\n <div className={cx(\"purpur-popover__footer-button-group\")}>{children}</div>\n </div>\n );\n};\n\nPopoverFooter.displayName = \"PopoverFooter\";\n","import React, { forwardRef, type ReactNode } from \"react\";\nimport { Heading } from \"@purpur/heading\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./popover.module.scss\";\n\nconst cx = c.bind(styles);\n\nexport type PopoverHeaderProps = {\n title: string;\n icon?: ReactNode;\n};\n\nexport const PopoverHeader = forwardRef<HTMLDivElement, PopoverHeaderProps>(\n ({ title, icon }, ref) => {\n return (\n <div ref={ref} className={cx(\"purpur-popover__header-content\")}>\n {icon && <span className={cx(\"purpur-popover__icon\")}>{icon}</span>}\n <Heading\n tag=\"h2\"\n variant=\"title-100\"\n className={cx(\"purpur-popover__title\")}\n id=\"popover-heading\"\n >\n {title}\n </Heading>\n </div>\n );\n }\n);\n\nPopoverHeader.displayName = \"PopoverHeader\";\n","import React, { type ReactNode } from \"react\";\nimport { Button } from \"@purpur/button\";\n\nimport { usePopoverFlow } from \"./popover-flow\";\nimport { usePopoverNegative } from \"./popover-internal-context\";\nimport { useScreenSize } from \"./use-screen-size.hook\";\n\nexport const PopoverNext = ({\n children,\n onClick,\n}: {\n children: ReactNode;\n onClick?: () => void;\n}) => {\n const { next } = usePopoverFlow();\n const { negative: isNegative } = usePopoverNegative();\n const { isMdOrSmaller } = useScreenSize();\n\n // Invert negative: if popover is negative (light), buttons should be normal (dark)\n const negative = isNegative ? false : true;\n\n const handleClick = () => {\n onClick?.();\n next();\n };\n\n return (\n <Button\n size=\"sm\"\n variant=\"primary\"\n onClick={handleClick}\n negative={negative}\n fullWidth={isMdOrSmaller}\n >\n {children}\n </Button>\n );\n};\n\nPopoverNext.displayName = \"PopoverNext\";\n","import React, { forwardRef, type ReactNode, useRef } from \"react\";\nimport { Button } from \"@purpur/button\";\nimport { IconClose } from \"@purpur/icon/close\";\nimport { Paragraph } from \"@purpur/paragraph\";\nimport { useThemePortalContainer } from \"@purpur/theme\";\nimport * as RadixPopover from \"@radix-ui/react-popover\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./popover.module.scss\";\nimport { PopoverBack } from \"./popover-back\";\nimport { PopoverButton } from \"./popover-button\";\nimport { useOptionalPopoverFlow } from \"./popover-flow\";\nimport { PopoverFooter } from \"./popover-footer\";\nimport { PopoverHeader } from \"./popover-header\";\nimport { PopoverNegativeContext, usePopoverInternal } from \"./popover-internal-context\";\nimport { PopoverNext } from \"./popover-next\";\n\nconst cx = c.bind(styles);\n\nexport type PopoverAction = {\n type: \"next\" | \"back\" | \"finish\" | \"dismiss\";\n step?: number;\n};\n\nexport type PopoverContentProps = RadixPopover.PopoverContentProps & {\n /**\n * Position of the arrow/beak pointing to the trigger element.\n * Set to \"none\" to hide the arrow.\n * @default \"down\"\n */\n beakPosition?: \"up\" | \"right\" | \"down\" | \"left\" | \"none\";\n /**\n * Whether to use negative (light) styling for the popover content.\n * @default false\n */\n negative?: boolean;\n /**\n * Accessible label for the close button icon.\n */\n closeIconAriaLabel: string;\n /**\n * Main title text displayed in the popover header.\n */\n title: string;\n /**\n * Optional icon displayed in the popover header next to the title.\n */\n icon?: ReactNode;\n /**\n * Main body text content of the popover.\n */\n body: string;\n /**\n * Custom footer content. If not provided and used within PopoverFlow,\n * default navigation buttons will be rendered.\n */\n children?: ReactNode;\n /**\n * Callback fired when user interacts with navigation buttons (next, back, finish, dismiss).\n */\n onAction?: (action: PopoverAction) => void;\n /**\n * CSS z-index value for the popover content.\n * @default 210\n */\n zIndex?: number;\n /**\n * Optional DOM element to portal the popover content into. When omitted,\n * the popover renders inside the nearest `ThemeProvider` so it inherits\n * the active color scheme. Pass `document.body` (or any other element) to\n * override. Pass `null` to fall back to Radix' default (`document.body`).\n */\n container?: HTMLElement | null;\n};\n\nexport const PopoverContent = forwardRef<HTMLDivElement, PopoverContentProps>(\n (\n {\n children,\n className,\n beakPosition = \"down\",\n align = \"center\",\n alignOffset = 0,\n sideOffset = 5, // How close or far the popover is from the trigger\n negative = false,\n closeIconAriaLabel,\n title,\n icon,\n body,\n onAction,\n zIndex = 210,\n container,\n ...props\n },\n ref\n ) => {\n const flow = useOptionalPopoverFlow();\n const context = usePopoverInternal();\n const headerRef = useRef<HTMLDivElement>(null);\n const themePortalContainer = useThemePortalContainer();\n const portalContainer =\n container === undefined ? themePortalContainer : container ?? undefined;\n\n // Map beakPosition to Radix side values\n const beakPositionMap: Record<\n \"up\" | \"right\" | \"down\" | \"left\" | \"none\",\n \"bottom\" | \"left\" | \"top\" | \"right\"\n > = {\n up: \"bottom\",\n right: \"left\",\n down: \"top\",\n left: \"right\",\n none: \"bottom\", // Default position when no arrow\n };\n\n const radixSide = beakPositionMap[beakPosition];\n const shouldShowArrow = beakPosition !== \"none\";\n\n let footerContent = children;\n\n if (flow && !children) {\n // Use walkthroughStep from context (0 for standalone, actual step for walkthrough)\n const currentStep = context?.walkthroughStep || flow.currentStep;\n const isFirstStep = currentStep === 1;\n const isLastStep = currentStep === flow.totalSteps;\n\n footerContent = (\n <PopoverFooter>\n {!isFirstStep && (\n <PopoverBack onClick={() => onAction?.({ type: \"back\", step: currentStep })}>\n {flow.backLabel}\n </PopoverBack>\n )}\n {isLastStep ? (\n <PopoverButton\n onClick={() => onAction?.({ type: \"finish\", step: currentStep })}\n dismiss\n >\n {flow.finishLabel}\n </PopoverButton>\n ) : (\n <PopoverNext onClick={() => onAction?.({ type: \"next\", step: currentStep })}>\n {flow.nextLabel}\n </PopoverNext>\n )}\n </PopoverFooter>\n );\n }\n\n const handleOpenAutoFocus = (event: Event) => {\n event.preventDefault();\n\n if (flow) {\n const contentElement = event.currentTarget as HTMLElement;\n // Focus the content element for better accessibility\n // Use setTimeout to ensure the DOM has fully rendered\n setTimeout(() => {\n contentElement.setAttribute(\"tabindex\", \"-1\");\n contentElement.focus();\n }, 0);\n }\n\n props.onOpenAutoFocus?.(event);\n };\n\n const handleCloseAutoFocus = (event: Event) => {\n // Prevent focus from returning to trigger in walkthrough flow\n // This allows the next popover to manage focus properly\n if (flow) {\n event.preventDefault();\n }\n\n props.onCloseAutoFocus?.(event);\n };\n\n const handleClose = (event: React.MouseEvent) => {\n const prefersReducedMotion = window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches;\n\n if (flow && !prefersReducedMotion) {\n event.preventDefault();\n setTimeout(() => {\n onAction?.({ type: \"dismiss\", step: flow.currentStep });\n flow.dismiss();\n }, 200);\n } else {\n onAction?.({ type: \"dismiss\", step: flow?.currentStep });\n flow?.dismiss();\n }\n };\n\n const handleEscapeKey = (event: KeyboardEvent) => {\n const prefersReducedMotion = window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches;\n\n if (flow && !prefersReducedMotion) {\n event.preventDefault();\n setTimeout(() => {\n onAction?.({ type: \"dismiss\", step: flow.currentStep });\n flow.dismiss();\n }, 200);\n } else {\n onAction?.({ type: \"dismiss\", step: flow?.currentStep });\n flow?.dismiss();\n }\n };\n\n const handleInteractOutside = (event: Event) => {\n if (context?.disableClickOutside) {\n event.preventDefault();\n return;\n }\n\n if (flow) {\n const target = event.target as HTMLElement;\n const isPopoverInteraction =\n target.closest(\"[role='dialog']\") ||\n target.closest(\".purpur-popover__trigger\") ||\n target.closest(\"button[aria-haspopup='dialog']\");\n\n if (!isPopoverInteraction) {\n onAction?.({ type: \"dismiss\", step: flow.currentStep });\n setTimeout(() => {\n flow.dismiss();\n }, 0);\n }\n }\n };\n\n return (\n <RadixPopover.Portal container={portalContainer}>\n <RadixPopover.Content\n data-testid=\"popover-content\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={props[\"aria-label\"] ? undefined : \"popover-heading\"}\n ref={ref}\n side={radixSide}\n sideOffset={sideOffset}\n align={align}\n alignOffset={alignOffset}\n style={\n {\n \"--popover-z-index\": zIndex,\n } as React.CSSProperties\n }\n className={cx(\n \"purpur-popover__content\",\n { \"purpur-popover__content--negative\": negative },\n className\n )}\n onOpenAutoFocus={handleOpenAutoFocus}\n onCloseAutoFocus={handleCloseAutoFocus}\n onEscapeKeyDown={handleEscapeKey}\n onInteractOutside={handleInteractOutside}\n {...props}\n >\n <PopoverNegativeContext.Provider value={{ negative }}>\n <div className={cx(\"purpur-popover__inner\")}>\n <PopoverHeader ref={headerRef} title={title} icon={icon} />\n <Paragraph className={cx(\"purpur-popover__body\")}>{body}</Paragraph>\n </div>\n {footerContent}\n\n <RadixPopover.Close asChild onClick={handleClose}>\n <Button\n variant={negative ? \"text\" : \"tertiary-purple\"}\n size=\"sm\"\n aria-label={closeIconAriaLabel}\n className={cx(\"purpur-popover__close\")}\n negative={!negative}\n iconOnly\n >\n <IconClose size=\"xs\" className={cx(\"purpur-popover__icon\")} />\n </Button>\n </RadixPopover.Close>\n </PopoverNegativeContext.Provider>\n {shouldShowArrow && (\n <RadixPopover.Arrow\n className={cx(\"purpur-popover__arrow\")}\n aria-hidden=\"true\"\n tabIndex={-1}\n />\n )}\n </RadixPopover.Content>\n </RadixPopover.Portal>\n );\n }\n);\n\nPopoverContent.displayName = \"PopoverContent\";\n","import React, { type ReactNode, useState } from \"react\";\nimport * as RadixPopover from \"@radix-ui/react-popover\";\n\nimport { PopoverInternalContext } from \"./popover-internal-context\";\n\nexport type PopoverStandaloneProps = RadixPopover.PopoverProps & {\n children: ReactNode;\n className?: string;\n disableClickOutside?: boolean;\n};\n\nexport const PopoverStandalone = ({\n children,\n open: controlledOpen,\n defaultOpen = false,\n onOpenChange,\n disableClickOutside,\n ...props\n}: PopoverStandaloneProps) => {\n // Internal state for uncontrolled mode\n const [internalOpen, setInternalOpen] = useState(defaultOpen);\n\n const isControlled = controlledOpen !== undefined;\n const isOpen = isControlled ? controlledOpen : internalOpen;\n\n const handleOpenChange = (newOpen: boolean) => {\n if (!isControlled) {\n setInternalOpen(newOpen);\n }\n onOpenChange?.(newOpen);\n };\n\n return (\n <RadixPopover.Root open={isOpen} onOpenChange={handleOpenChange} {...props}>\n <PopoverInternalContext.Provider\n value={{\n isOpen,\n walkthroughStep: 0,\n disableClickOutside,\n }}\n >\n {children}\n </PopoverInternalContext.Provider>\n </RadixPopover.Root>\n );\n};\n\nPopoverStandalone.displayName = \"PopoverStandalone\";\n","import { useCallback, useRef } from \"react\";\n\nexport const useSmoothScroll = (onComplete?: () => void) => {\n const scrollAnimationId = useRef<number | null>(null);\n\n const cancelScroll = useCallback(() => {\n if (scrollAnimationId.current) {\n cancelAnimationFrame(scrollAnimationId.current);\n scrollAnimationId.current = null;\n }\n }, []);\n\n const scrollToElement = useCallback(\n (element: HTMLElement, duration: number = 600) => {\n const prefersReducedMotion = window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches;\n const rect = element.getBoundingClientRect();\n const absoluteTop = rect.top + window.pageYOffset;\n const elementHeight = rect.height;\n const viewportHeight = window.innerHeight;\n\n let targetY = absoluteTop - viewportHeight / 2 + elementHeight / 2;\n const documentHeight = document.documentElement.scrollHeight;\n const maxScroll = Math.max(0, documentHeight - viewportHeight);\n targetY = Math.max(0, Math.min(targetY, maxScroll));\n\n if (prefersReducedMotion) {\n window.scrollTo(0, targetY);\n onComplete?.();\n return;\n }\n\n const startY = window.pageYOffset;\n const distance = targetY - startY;\n const startTime = performance.now();\n\n const animateScroll = (currentTime: number) => {\n const elapsed = currentTime - startTime;\n const progress = Math.min(elapsed / duration, 1);\n\n const easeInOut =\n progress < 0.5 ? 2 * progress * progress : 1 - Math.pow(-2 * progress + 2, 2) / 2;\n\n const currentY = startY + distance * easeInOut;\n window.scrollTo(0, currentY);\n\n if (progress < 1) {\n scrollAnimationId.current = requestAnimationFrame(animateScroll);\n } else {\n scrollAnimationId.current = null;\n onComplete?.();\n }\n };\n\n cancelScroll();\n\n scrollAnimationId.current = requestAnimationFrame(animateScroll);\n },\n [onComplete, cancelScroll]\n );\n\n return { scrollToElement, cancelScroll };\n};\n","import { useEffect, useRef } from \"react\";\n\nimport { useOptionalPopoverFlow } from \"./popover-flow\";\nimport { usePopoverInternal } from \"./popover-internal-context\";\nimport { useSmoothScroll } from \"./use-smooth-scroll\";\n\nexport function usePopoverTrigger(ref: React.Ref<HTMLButtonElement>) {\n const triggerRef = useRef<HTMLButtonElement>(null);\n const context = usePopoverInternal();\n const flow = useOptionalPopoverFlow();\n const hasScrolled = useRef(false);\n const { scrollToElement, cancelScroll } = useSmoothScroll(context?.onScrollComplete);\n\n // Forward ref\n useEffect(() => {\n if (typeof ref === \"function\") {\n ref(triggerRef.current);\n } else if (ref) {\n (ref as React.MutableRefObject<HTMLButtonElement | null>).current = triggerRef.current;\n }\n }, [ref]);\n\n // Walkthrough scroll logic\n useEffect(() => {\n const isActiveStep =\n flow &&\n context?.walkthroughStep !== undefined &&\n flow.currentStep === context.walkthroughStep &&\n triggerRef.current &&\n !hasScrolled.current;\n\n if (isActiveStep) {\n const element = triggerRef.current!;\n const rect = element.getBoundingClientRect();\n const buffer = 100;\n const isVisible =\n rect.top >= -buffer &&\n rect.bottom <= window.innerHeight + buffer &&\n rect.left >= -buffer &&\n rect.right <= window.innerWidth + buffer;\n\n if (isVisible) {\n context?.onScrollComplete?.();\n } else {\n context?.onScrollStart?.();\n scrollToElement(element);\n }\n hasScrolled.current = true;\n } else if (flow?.currentStep !== context?.walkthroughStep) {\n hasScrolled.current = false;\n cancelScroll();\n }\n }, [flow?.currentStep, context?.walkthroughStep, flow, scrollToElement, cancelScroll, context]);\n\n // Cancel scroll on unmount\n useEffect(() => cancelScroll, [cancelScroll]);\n\n return { triggerRef, context };\n}\n","import React, { forwardRef } from \"react\";\nimport * as RadixPopover from \"@radix-ui/react-popover\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./popover.module.scss\";\nimport { usePopoverTrigger } from \"./usePopoverTrigger\";\n\nconst cx = c.bind(styles);\n\nexport type PopoverTriggerProps = RadixPopover.PopoverTriggerProps & {\n /**\n * Whether to show visual highlight effect around the trigger when popover is open.\n * @default true\n */\n highlight?: boolean;\n /**\n * Whether to use negative (light) styling for the highlight effect.\n * @default false\n */\n negative?: boolean;\n};\n\nexport const PopoverTrigger = forwardRef<HTMLButtonElement, PopoverTriggerProps>(\n ({ children, className, highlight = true, negative = false, ...props }, ref) => {\n const { triggerRef, context } = usePopoverTrigger(ref);\n\n return (\n <div\n className={cx(\n \"purpur-popover__trigger\",\n { \"purpur-popover__trigger--highlight\": context?.isOpen && highlight },\n className\n )}\n >\n {context?.isOpen && highlight && (\n <>\n {/* State 1: Outer glow effect */}\n <div\n className={cx(\n \"purpur-popover__trigger-highlight\",\n \"purpur-popover__trigger-highlight--state1\",\n { \"purpur-popover__trigger-highlight--negative\": negative }\n )}\n aria-hidden=\"true\"\n />\n {/* State 2: Inner border only */}\n <div\n className={cx(\n \"purpur-popover__trigger-highlight\",\n \"purpur-popover__trigger-highlight--state2\",\n { \"purpur-popover__trigger-highlight--negative\": negative }\n )}\n aria-hidden=\"true\"\n />\n </>\n )}\n <RadixPopover.Trigger\n ref={triggerRef}\n asChild\n aria-expanded={context?.isOpen ?? false}\n aria-haspopup=\"dialog\"\n {...props}\n >\n {children}\n </RadixPopover.Trigger>\n </div>\n );\n }\n);\n\nPopoverTrigger.displayName = \"PopoverTrigger\";\n","import { useCallback, useEffect, useRef, useState } from \"react\";\n\nimport { useOptionalPopoverFlow } from \"./popover-flow\";\n\nexport function usePopoverWalkthrough(step: number) {\n const flow = useOptionalPopoverFlow();\n const [actuallyOpen, setActuallyOpen] = useState(false);\n const [waitingForScroll, setWaitingForScroll] = useState(false);\n const timeoutRef = useRef<number | null>(null);\n const openedAtRef = useRef<number>(0);\n\n useEffect(() => {\n if (flow) {\n flow.registerStep(step);\n return () => flow.unregisterStep(step);\n }\n return () => {};\n }, [flow, step]);\n\n const shouldBeOpen = flow?.currentStep === step;\n\n const onScrollStart = useCallback(() => {\n setWaitingForScroll(true);\n }, []);\n\n const onScrollComplete = useCallback(() => {\n setWaitingForScroll(false);\n if (shouldBeOpen) {\n const delay = flow.openDelay;\n timeoutRef.current = window.setTimeout(() => {\n setActuallyOpen(true);\n openedAtRef.current = Date.now();\n }, delay);\n }\n }, [shouldBeOpen, flow]);\n\n useEffect(() => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n timeoutRef.current = null;\n }\n\n if (shouldBeOpen) {\n if (!waitingForScroll) {\n const delay = flow.openDelay;\n timeoutRef.current = window.setTimeout(() => {\n setActuallyOpen(true);\n openedAtRef.current = Date.now();\n }, delay);\n }\n } else {\n setActuallyOpen(false);\n setWaitingForScroll(false);\n openedAtRef.current = 0;\n }\n\n return () => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n timeoutRef.current = null;\n }\n };\n }, [shouldBeOpen, waitingForScroll, flow]);\n\n const handleOpenChange = useCallback(\n (open: boolean, consumerOnOpenChange?: (open: boolean) => void) => {\n consumerOnOpenChange?.(open);\n if (!open && actuallyOpen && flow && flow.currentStep === step) {\n const timeSinceOpen = Date.now() - openedAtRef.current;\n if (timeSinceOpen < 10 || timeoutRef.current !== null) {\n return;\n }\n flow.dismiss();\n }\n },\n [actuallyOpen, flow, step]\n );\n\n return {\n actuallyOpen,\n onScrollStart,\n onScrollComplete,\n handleOpenChange,\n };\n}\n","import React, { type ReactNode } from \"react\";\nimport * as RadixPopover from \"@radix-ui/react-popover\";\n\nimport { PopoverInternalContext } from \"./popover-internal-context\";\nimport { usePopoverWalkthrough } from \"./usePopoverWalkthrough\";\n\nexport type PopoverWalkthroughProps = RadixPopover.PopoverProps & {\n children: ReactNode;\n step: number;\n className?: string;\n disableClickOutside?: boolean;\n};\n\nexport const PopoverWalkthrough = ({\n children,\n step,\n onOpenChange: consumerOnOpenChange,\n disableClickOutside = true,\n ...props\n}: PopoverWalkthroughProps) => {\n const { actuallyOpen, onScrollStart, onScrollComplete, handleOpenChange } =\n usePopoverWalkthrough(step);\n\n return (\n <RadixPopover.Root\n open={actuallyOpen}\n onOpenChange={(open) => handleOpenChange(open, consumerOnOpenChange)}\n {...props}\n >\n <PopoverInternalContext.Provider\n value={{\n isOpen: actuallyOpen,\n walkthroughStep: step,\n onScrollStart,\n onScrollComplete,\n disableClickOutside,\n }}\n >\n {children}\n </PopoverInternalContext.Provider>\n </RadixPopover.Root>\n );\n};\n\nPopoverWalkthrough.displayName = \"PopoverWalkthrough\";\n","import React, { type ReactNode } from \"react\";\nimport type * as RadixPopover from \"@radix-ui/react-popover\";\n\nimport { PopoverBack } from \"./popover-back\";\nimport { PopoverButton } from \"./popover-button\";\nimport { type PopoverAction,PopoverContent } from \"./popover-content\";\nimport { PopoverFlow } from \"./popover-flow\";\nimport { PopoverFooter } from \"./popover-footer\";\nimport { PopoverNext } from \"./popover-next\";\nimport { PopoverStandalone } from \"./popover-standalone\";\nimport { PopoverTrigger } from \"./popover-trigger\";\nimport { PopoverWalkthrough } from \"./popover-walkthrough\";\n\nexport type { PopoverAction };\n\n// Base props shared by both variants\ntype BasePopoverProps = RadixPopover.PopoverProps & {\n children: ReactNode;\n className?: string;\n};\n\n// Standalone variant props\ntype StandalonePopoverProps = BasePopoverProps & {\n multistep?: false;\n step?: never;\n disableClickOutside?: boolean;\n};\n\n// Walkthrough variant props\ntype WalkthroughPopoverProps = BasePopoverProps & {\n multistep: true;\n step: number;\n disableClickOutside?: boolean;\n};\n\nexport type PopoverProps = StandalonePopoverProps | WalkthroughPopoverProps;\n\ntype PopoverCmp<P> = React.FunctionComponent<P> & {\n Back: typeof PopoverBack;\n Button: typeof PopoverButton;\n Content: typeof PopoverContent;\n Flow: typeof PopoverFlow;\n Footer: typeof PopoverFooter;\n Next: typeof PopoverNext;\n Trigger: typeof PopoverTrigger;\n};\n\nexport const Popover: PopoverCmp<PopoverProps> = (props) => {\n const { multistep = false, disableClickOutside, ...restProps } = props;\n\n if (multistep) {\n return (\n <PopoverWalkthrough\n {...(restProps as WalkthroughPopoverProps)}\n disableClickOutside={disableClickOutside ?? true}\n />\n );\n }\n\n return (\n <PopoverStandalone\n {...(restProps as StandalonePopoverProps)}\n disableClickOutside={disableClickOutside}\n />\n );\n};\n\nPopover.Back = PopoverBack;\nPopover.Button = PopoverButton;\nPopover.Content = PopoverContent;\nPopover.Flow = PopoverFlow;\nPopover.Footer = PopoverFooter;\nPopover.Next = PopoverNext;\nPopover.Trigger = PopoverTrigger;\n\nPopover.displayName = \"Popover\";\n"],"names":["PopoverFlowContext","createContext","usePopoverFlow","context","useContext","useOptionalPopoverFlow","PopoverFlow","children","initialStep","onComplete","onDismiss","separatorText","stepText","backLabel","nextLabel","finishLabel","openDelay","currentStep","setCurrentStep","useState","registeredSteps","setRegisteredSteps","registerStep","useCallback","step","prev","next","unregisterStep","nextStep","back","dismiss","value","useMemo","jsx","PopoverInternalContext","usePopoverInternal","PopoverNegativeContext","usePopoverNegative","DEBOUNCE_DELAY","SCREEN_MEDIA_QUERY","purpurBreakpointMd","useScreenSize","maxMediumScreen","updateSize","setIsMdOrSmaller","isMdOrSmaller","handleResize","timeoutId","useEffect","PopoverBack","onClick","isNegative","negative","handleClick","Button","NAME","Arrow","React","props","forwardedRef","width","height","arrowProps","Primitive","Root","POPPER_NAME","createPopperContext","createPopperScope","createContextScope","PopperProvider","usePopperContext","Popper","__scopePopper","anchor","setAnchor","ANCHOR_NAME","PopperAnchor","virtualRef","anchorProps","ref","composedRefs","useComposedRefs","anchorRef","previousAnchor","CONTENT_NAME","PopperContentProvider","useContentContext","PopperContent","side","sideOffset","align","alignOffset","arrowPadding","avoidCollisions","collisionBoundary","collisionPaddingProp","sticky","hideWhenDetached","updatePositionStrategy","onPlaced","contentProps","content","setContent","node","arrow","setArrow","arrowSize","useSize","arrowWidth","arrowHeight","desiredPlacement","collisionPadding","boundary","hasExplicitBoundaries","detectOverflowOptions","isNotNull","refs","floatingStyles","placement","isPositioned","middlewareData","useFloating","args","autoUpdate","offset","shift","limitShift","flip","size","elements","rects","availableWidth","availableHeight","anchorWidth","anchorHeight","contentStyle","floatingUIarrow","transformOrigin","hide","placedSide","placedAlign","getSideAndAlignFromPlacement","handlePlaced","useCallbackRef","useLayoutEffect","arrowX","arrowY","cannotCenterArrow","contentZIndex","setContentZIndex","ARROW_NAME","OPPOSITE_SIDE","PopperArrow","contentContext","baseSide","ArrowPrimitive.Root","options","data","isArrowHidden","noArrowAlign","arrowXCenter","arrowYCenter","x","y","Root2","Anchor","Content","POPOVER_NAME","createPopoverContext","usePopperScope","PopoverProvider","usePopoverContext","Popover","__scopePopover","openProp","defaultOpen","onOpenChange","modal","popperScope","triggerRef","hasCustomAnchor","setHasCustomAnchor","open","setOpen","useControllableState","PopperPrimitive.Root","useId","prevOpen","PopoverAnchor","onCustomAnchorAdd","onCustomAnchorRemove","PopperPrimitive.Anchor","TRIGGER_NAME","PopoverTrigger","triggerProps","composedTriggerRef","trigger","getState","composeEventHandlers","PORTAL_NAME","PortalProvider","usePortalContext","PopoverPortal","forceMount","container","Presence","PortalPrimitive","PopoverContent","portalContext","PopoverContentModal","PopoverContentNonModal","Slot","createSlot","contentRef","isRightClickOutsideRef","hideOthers","RemoveScroll","PopoverContentImpl","event","originalEvent","ctrlLeftClick","isRightClick","hasInteractedOutsideRef","hasPointerDownOutsideRef","target","trapFocus","onOpenAutoFocus","onCloseAutoFocus","disableOutsidePointerEvents","onEscapeKeyDown","onPointerDownOutside","onFocusOutside","onInteractOutside","useFocusGuards","FocusScope","DismissableLayer","PopperPrimitive.Content","CLOSE_NAME","PopoverClose","closeProps","PopoverArrow","PopperPrimitive.Arrow","Trigger","Portal","Content2","Close","Arrow2","PopoverButton","asChild","variant","fullWidth","flow","isFullWidth","RadixPopover.Close","cx","c","styles","PopoverSteps","totalSteps","Fragment","jsxs","Paragraph","PopoverFooter","className","internal","showSteps","PopoverHeader","forwardRef","title","icon","Heading","PopoverNext","beakPosition","closeIconAriaLabel","body","onAction","zIndex","headerRef","useRef","themePortalContainer","useThemePortalContainer","portalContainer","radixSide","shouldShowArrow","footerContent","isFirstStep","isLastStep","handleOpenAutoFocus","contentElement","handleCloseAutoFocus","handleClose","prefersReducedMotion","handleEscapeKey","handleInteractOutside","RadixPopover.Portal","RadixPopover.Content","IconClose","RadixPopover.Arrow","PopoverStandalone","controlledOpen","disableClickOutside","internalOpen","setInternalOpen","isControlled","isOpen","handleOpenChange","newOpen","RadixPopover.Root","useSmoothScroll","scrollAnimationId","cancelScroll","element","duration","rect","absoluteTop","elementHeight","viewportHeight","targetY","documentHeight","maxScroll","startY","distance","startTime","animateScroll","currentTime","elapsed","progress","easeInOut","currentY","usePopoverTrigger","hasScrolled","scrollToElement","buffer","highlight","RadixPopover.Trigger","usePopoverWalkthrough","actuallyOpen","setActuallyOpen","waitingForScroll","setWaitingForScroll","timeoutRef","openedAtRef","shouldBeOpen","onScrollStart","onScrollComplete","delay","consumerOnOpenChange","PopoverWalkthrough","multistep","restProps"],"mappings":"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","x_google_ignoreList":[4,5,6]}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./popover-B0XJZ5mj.js");exports.Popover=e.Popover;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./popover-DnGgzfQr.js");exports.Popover=e.Popover;
2
2
  //# sourceMappingURL=popover.cjs.js.map
@@ -1,4 +1,4 @@
1
- import { P as e } from "./popover-I26xNbTz.mjs";
1
+ import { P as e } from "./popover-DERrvReO.mjs";
2
2
  export {
3
3
  e as Popover
4
4
  };