@purpur/library 9.10.0 → 9.10.1

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 (251) hide show
  1. package/CHANGELOG.json +18 -0
  2. package/CHANGELOG.md +10 -1
  3. package/dist/LICENSE.txt +40 -0
  4. package/dist/{RichText-D4vznH1B.mjs → RichText-2_z57EYi.mjs} +2 -2
  5. package/dist/{RichText-D4vznH1B.mjs.map → RichText-2_z57EYi.mjs.map} +1 -1
  6. package/dist/{RichText-BAVZadzi.js → RichText-IejAKqm2.js} +2 -2
  7. package/dist/{RichText-BAVZadzi.js.map → RichText-IejAKqm2.js.map} +1 -1
  8. package/dist/{autocomplete-CmLzmWp4.mjs → autocomplete-C6AqdYaZ.mjs} +2 -2
  9. package/dist/{autocomplete-CmLzmWp4.mjs.map → autocomplete-C6AqdYaZ.mjs.map} +1 -1
  10. package/dist/{autocomplete-BX1KDZqL.js → autocomplete-yrPbF5gq.js} +2 -2
  11. package/dist/{autocomplete-BX1KDZqL.js.map → autocomplete-yrPbF5gq.js.map} +1 -1
  12. package/dist/autocomplete.cjs.js +1 -1
  13. package/dist/autocomplete.es.js +1 -1
  14. package/dist/button-DZgtrGqN.js +2 -0
  15. package/dist/{button-DmybVApa.js.map → button-DZgtrGqN.js.map} +1 -1
  16. package/dist/button-EVRfctR8.mjs +109 -0
  17. package/dist/{button-4-yWOgtD.mjs.map → button-EVRfctR8.mjs.map} +1 -1
  18. package/dist/button.cjs.js +1 -1
  19. package/dist/button.es.js +1 -1
  20. package/dist/{calendar-Cru-p6gC.mjs → calendar-CTWhxuS4.mjs} +2 -2
  21. package/dist/{calendar-Cru-p6gC.mjs.map → calendar-CTWhxuS4.mjs.map} +1 -1
  22. package/dist/{calendar-DDR8CQYo.js → calendar-Cwzqytai.js} +2 -2
  23. package/dist/{calendar-DDR8CQYo.js.map → calendar-Cwzqytai.js.map} +1 -1
  24. package/dist/calendar.cjs.js +1 -1
  25. package/dist/calendar.es.js +1 -1
  26. package/dist/{carousel-BIKcwvYz.mjs → carousel-DiKGSL-7.mjs} +2 -2
  27. package/dist/{carousel-BIKcwvYz.mjs.map → carousel-DiKGSL-7.mjs.map} +1 -1
  28. package/dist/{carousel-DnSaLDZf.js → carousel-Dz_bUGo4.js} +2 -2
  29. package/dist/{carousel-DnSaLDZf.js.map → carousel-Dz_bUGo4.js.map} +1 -1
  30. package/dist/carousel.cjs.js +1 -1
  31. package/dist/carousel.es.js +1 -1
  32. package/dist/{chat-field-CVF4DooY.mjs → chat-field-8cKqYcKi.mjs} +2 -2
  33. package/dist/{chat-field-CVF4DooY.mjs.map → chat-field-8cKqYcKi.mjs.map} +1 -1
  34. package/dist/{chat-field-Wjvh2J6C.js → chat-field-B2jmpVNr.js} +2 -2
  35. package/dist/{chat-field-Wjvh2J6C.js.map → chat-field-B2jmpVNr.js.map} +1 -1
  36. package/dist/chat-field.cjs.js +1 -1
  37. package/dist/chat-field.es.js +1 -1
  38. package/dist/{comparison-table-D1evE0ri.mjs → comparison-table-CmtSOUfK.mjs} +2 -2
  39. package/dist/{comparison-table-D1evE0ri.mjs.map → comparison-table-CmtSOUfK.mjs.map} +1 -1
  40. package/dist/{comparison-table-Dtqxz8vL.js → comparison-table-N5G3k2kr.js} +2 -2
  41. package/dist/{comparison-table-Dtqxz8vL.js.map → comparison-table-N5G3k2kr.js.map} +1 -1
  42. package/dist/comparison-table.cjs.js +1 -1
  43. package/dist/comparison-table.es.js +1 -1
  44. package/dist/components/accordion/src/accordion-item.d.ts +2 -2
  45. package/dist/components/accordion/src/accordion.d.ts +2 -2
  46. package/dist/components/avatar/src/avatar.d.ts +1 -1
  47. package/dist/components/button/src/button.d.ts +5 -5
  48. package/dist/components/card/src/card-badge.d.ts +1 -1
  49. package/dist/components/card/src/card-cta.d.ts +1 -1
  50. package/dist/components/card/src/card-heading.d.ts +1 -1
  51. package/dist/components/card/src/card-media-layout.d.ts +1 -1
  52. package/dist/components/card/src/card-media.d.ts +1 -1
  53. package/dist/components/checkbox/src/checkbox.d.ts +1 -1
  54. package/dist/components/comparison-table/src/components/OptionCard/option-card.d.ts +1 -1
  55. package/dist/components/content-block/src/content-block.d.ts +2 -2
  56. package/dist/components/counter-badge/src/counter-badge.d.ts +1 -1
  57. package/dist/components/country-flag-icon/src/country-flag-icon.d.ts +1 -1
  58. package/dist/components/date-field/src/date-field.d.ts +1 -1
  59. package/dist/components/date-picker/src/date-picker.d.ts +4 -4
  60. package/dist/components/dismissable-chip-group/src/dismissable-chip-group-item.d.ts +1 -1
  61. package/dist/components/dismissable-chip-group/src/dismissable-chip-group.d.ts +2 -2
  62. package/dist/components/drawer/src/drawer-content.d.ts +2 -2
  63. package/dist/components/drawer/src/drawer-frame.d.ts +1 -1
  64. package/dist/components/drawer/src/drawer-trigger.d.ts +1 -1
  65. package/dist/components/field-error-text/src/field-error-text.d.ts +2 -2
  66. package/dist/components/field-helper-text/src/field-helper-text.d.ts +1 -1
  67. package/dist/components/footer/src/footer-navigation.d.ts +1 -1
  68. package/dist/components/footer/src/footer-social-link.d.ts +3 -3
  69. package/dist/components/footer/src/footer.d.ts +3 -3
  70. package/dist/components/grid/src/grid.item.d.ts +1 -1
  71. package/dist/components/heading/src/heading.d.ts +2 -2
  72. package/dist/components/hero-banner/src/hero-banner-actions.d.ts +1 -1
  73. package/dist/components/hero-banner/src/hero-banner-media.d.ts +1 -1
  74. package/dist/components/hero-banner/src/hero-banner-types.d.ts +2 -2
  75. package/dist/components/illustrative-icon/src/static-illustrative-icon.d.ts +2 -2
  76. package/dist/components/listbox/src/listbox-item.d.ts +1 -1
  77. package/dist/components/listbox/src/listbox.d.ts +1 -1
  78. package/dist/components/logo/src/logo.types.d.ts +1 -1
  79. package/dist/components/notification-banner/src/notification-banner.d.ts +2 -2
  80. package/dist/components/pagination/src/pagination-page-selector.d.ts +2 -2
  81. package/dist/components/pagination/src/pagination-page-size-selector.d.ts +2 -2
  82. package/dist/components/pagination/src/pagination-pages.d.ts +2 -2
  83. package/dist/components/pagination/src/use-page-options.hook.d.ts +2 -2
  84. package/dist/components/pagination/src/use-page-size-options.hook.d.ts +2 -2
  85. package/dist/components/paragraph/src/paragraph.d.ts +1 -1
  86. package/dist/components/password-field/src/password-strength-indicator.d.ts +2 -2
  87. package/dist/components/password-field/src/password-strength.d.ts +2 -2
  88. package/dist/components/popover/src/popover-button.d.ts +2 -2
  89. package/dist/components/product-card/src/product-card.d.ts +1 -1
  90. package/dist/components/promotion-card/src/promotion-card.d.ts +1 -1
  91. package/dist/components/quantity-selector/src/quantity-selector.d.ts +1 -1
  92. package/dist/components/radio-button-group/src/radio-button-group-root.d.ts +1 -1
  93. package/dist/components/radio-card-group/src/radio-card-group.d.ts +2 -2
  94. package/dist/components/search-field/src/search-field-autocomplete.d.ts +1 -1
  95. package/dist/components/search-field/src/search-field-base.d.ts +1 -1
  96. package/dist/components/search-field/src/search-field.d.ts +6 -6
  97. package/dist/components/select/src/select.d.ts +1 -1
  98. package/dist/components/spacer/src/spacer.d.ts +2 -2
  99. package/dist/components/spinner/src/spinner.d.ts +1 -1
  100. package/dist/components/stepper/src/stepper-content.d.ts +1 -1
  101. package/dist/components/stepper/src/stepper.d.ts +2 -2
  102. package/dist/components/table/src/cell-types/button-group-cell.d.ts +1 -1
  103. package/dist/components/table/src/empty-table.d.ts +2 -2
  104. package/dist/components/table/src/table-content.d.ts +2 -2
  105. package/dist/components/table/src/table.d.ts +1 -1
  106. package/dist/components/table/src/test-utils/table-data.d.ts +3 -3
  107. package/dist/components/tabs/src/tab-content.d.ts +1 -1
  108. package/dist/components/text-area/src/text-area.d.ts +1 -1
  109. package/dist/components/text-spacing/src/text-spacing.d.ts +1 -1
  110. package/dist/components/toggle/src/toggle.d.ts +1 -1
  111. package/dist/{date-field-DVp_RMNm.mjs → date-field-ChYx0N2j.mjs} +2 -2
  112. package/dist/{date-field-DVp_RMNm.mjs.map → date-field-ChYx0N2j.mjs.map} +1 -1
  113. package/dist/{date-field-hA79n6mP.js → date-field-CwZ64buh.js} +2 -2
  114. package/dist/{date-field-hA79n6mP.js.map → date-field-CwZ64buh.js.map} +1 -1
  115. package/dist/date-field.cjs.js +1 -1
  116. package/dist/date-field.es.js +1 -1
  117. package/dist/{date-picker-Dzoo_hhQ.js → date-picker-BWMKTOq6.js} +2 -2
  118. package/dist/{date-picker-Dzoo_hhQ.js.map → date-picker-BWMKTOq6.js.map} +1 -1
  119. package/dist/{date-picker-B8ta-Q8V.mjs → date-picker-CTyqgBRB.mjs} +5 -5
  120. package/dist/{date-picker-B8ta-Q8V.mjs.map → date-picker-CTyqgBRB.mjs.map} +1 -1
  121. package/dist/date-picker.cjs.js +1 -1
  122. package/dist/date-picker.es.js +1 -1
  123. package/dist/{date-range-field-Dqqgj41u.js → date-range-field-CvzOl-eC.js} +2 -2
  124. package/dist/{date-range-field-Dqqgj41u.js.map → date-range-field-CvzOl-eC.js.map} +1 -1
  125. package/dist/{date-range-field-BZUjfftV.mjs → date-range-field-DDr-qEGX.mjs} +2 -2
  126. package/dist/{date-range-field-BZUjfftV.mjs.map → date-range-field-DDr-qEGX.mjs.map} +1 -1
  127. package/dist/date-range-field.cjs.js +1 -1
  128. package/dist/date-range-field.es.js +1 -1
  129. package/dist/{drawer-DyLQfvEh.js → drawer-BnqxUIPM.js} +2 -2
  130. package/dist/{drawer-DyLQfvEh.js.map → drawer-BnqxUIPM.js.map} +1 -1
  131. package/dist/{drawer-cIUx6WSZ.mjs → drawer-Cnk2OKgi.mjs} +2 -2
  132. package/dist/{drawer-cIUx6WSZ.mjs.map → drawer-Cnk2OKgi.mjs.map} +1 -1
  133. package/dist/drawer.cjs.js +1 -1
  134. package/dist/drawer.es.js +1 -1
  135. package/dist/{footer-Cn1-zG1v.js → footer-B8rzVSrZ.js} +2 -2
  136. package/dist/{footer-Cn1-zG1v.js.map → footer-B8rzVSrZ.js.map} +1 -1
  137. package/dist/{footer-D-2b7UIB.mjs → footer-D5YkHmCo.mjs} +2 -2
  138. package/dist/{footer-D-2b7UIB.mjs.map → footer-D5YkHmCo.mjs.map} +1 -1
  139. package/dist/footer.cjs.js +1 -1
  140. package/dist/footer.es.js +1 -1
  141. package/dist/{hero-banner-n9K-Jsdz.mjs → hero-banner-BXRArPWP.mjs} +2 -2
  142. package/dist/{hero-banner-n9K-Jsdz.mjs.map → hero-banner-BXRArPWP.mjs.map} +1 -1
  143. package/dist/{hero-banner--v-ezYMr.js → hero-banner-CW7DIEZe.js} +2 -2
  144. package/dist/{hero-banner--v-ezYMr.js.map → hero-banner-CW7DIEZe.js.map} +1 -1
  145. package/dist/hero-banner.cjs.js +1 -1
  146. package/dist/hero-banner.es.js +1 -1
  147. package/dist/libraries/library/src/library.d.ts +1 -0
  148. package/dist/libraries/library/src/library.d.ts.map +1 -1
  149. package/dist/libraries/library/src/password-field.d.ts +6 -2
  150. package/dist/libraries/library/src/password-field.d.ts.map +1 -1
  151. package/dist/libraries/library/src/radio-button-group.d.ts +1 -1
  152. package/dist/libraries/library/src/radio-card-group.d.ts +1 -1
  153. package/dist/libraries/library/src/spinner.d.ts +1 -1
  154. package/dist/libraries/library/src/stepper.d.ts +1 -1
  155. package/dist/libraries/library/src/tooltip.d.ts +1 -1
  156. package/dist/libraries/library/src/visually-hidden.d.ts +1 -1
  157. package/dist/libraries/theme/src/ThemeProvider.d.ts +2 -2
  158. package/dist/library.cjs.js +1 -1
  159. package/dist/library.es.js +546 -543
  160. package/dist/library.es.js.map +1 -1
  161. package/dist/link-Dzqd0QuD.js +2 -0
  162. package/dist/{link-DhWVrkTz.js.map → link-Dzqd0QuD.js.map} +1 -1
  163. package/dist/link-ccCdDvBc.mjs +72 -0
  164. package/dist/{link-DY5WLpyc.mjs.map → link-ccCdDvBc.mjs.map} +1 -1
  165. package/dist/link.cjs.js +1 -1
  166. package/dist/link.es.js +1 -1
  167. package/dist/main-B501z9Ql.js +2 -0
  168. package/dist/main-B501z9Ql.js.map +1 -0
  169. package/dist/main-L71Sqg3s.mjs +1016 -0
  170. package/dist/main-L71Sqg3s.mjs.map +1 -0
  171. package/dist/{modal-Bu1Zv5Ic.mjs → modal-BuUQrUYJ.mjs} +2 -2
  172. package/dist/{modal-Bu1Zv5Ic.mjs.map → modal-BuUQrUYJ.mjs.map} +1 -1
  173. package/dist/{modal-D0Qxrvx5.js → modal-CnC4Zyjk.js} +2 -2
  174. package/dist/{modal-D0Qxrvx5.js.map → modal-CnC4Zyjk.js.map} +1 -1
  175. package/dist/modal.cjs.js +1 -1
  176. package/dist/modal.es.js +1 -1
  177. package/dist/{notification-DiVdy6E_.mjs → notification-C3f3N1K1.mjs} +2 -2
  178. package/dist/{notification-DiVdy6E_.mjs.map → notification-C3f3N1K1.mjs.map} +1 -1
  179. package/dist/{notification-D2oClkX2.js → notification-CeoAXDXq.js} +2 -2
  180. package/dist/{notification-D2oClkX2.js.map → notification-CeoAXDXq.js.map} +1 -1
  181. package/dist/{notification-banner-CZTQZ5Le.mjs → notification-banner-BvAy8dlg.mjs} +2 -2
  182. package/dist/{notification-banner-CZTQZ5Le.mjs.map → notification-banner-BvAy8dlg.mjs.map} +1 -1
  183. package/dist/{notification-banner-BxHwTFnH.js → notification-banner-DUe4fT1r.js} +2 -2
  184. package/dist/{notification-banner-BxHwTFnH.js.map → notification-banner-DUe4fT1r.js.map} +1 -1
  185. package/dist/notification-banner.cjs.js +1 -1
  186. package/dist/notification-banner.es.js +1 -1
  187. package/dist/notification.cjs.js +1 -1
  188. package/dist/notification.es.js +1 -1
  189. package/dist/password-field-BjKdBoIK.js +2 -0
  190. package/dist/password-field-BjKdBoIK.js.map +1 -0
  191. package/dist/password-field-C_E4563x.mjs +200 -0
  192. package/dist/password-field-C_E4563x.mjs.map +1 -0
  193. package/dist/password-field.cjs.js +2 -0
  194. package/dist/password-field.cjs.js.map +1 -0
  195. package/dist/password-field.es.js +6 -0
  196. package/dist/password-field.es.js.map +1 -0
  197. package/dist/{popover-CY75TnbA.js → popover-4phnhJLj.js} +2 -2
  198. package/dist/{popover-CY75TnbA.js.map → popover-4phnhJLj.js.map} +1 -1
  199. package/dist/{popover-wiiwtqWE.mjs → popover-DhObSx97.mjs} +2 -2
  200. package/dist/{popover-wiiwtqWE.mjs.map → popover-DhObSx97.mjs.map} +1 -1
  201. package/dist/popover.cjs.js +1 -1
  202. package/dist/popover.es.js +1 -1
  203. package/dist/purpur.css +1 -1
  204. package/dist/{quantity-selector-BEYMDsBM.js → quantity-selector-Ds7d4MnV.js} +2 -2
  205. package/dist/{quantity-selector-BEYMDsBM.js.map → quantity-selector-Ds7d4MnV.js.map} +1 -1
  206. package/dist/{quantity-selector-Cp-e5xKJ.mjs → quantity-selector-DwkKKmFy.mjs} +3 -3
  207. package/dist/{quantity-selector-Cp-e5xKJ.mjs.map → quantity-selector-DwkKKmFy.mjs.map} +1 -1
  208. package/dist/quantity-selector.cjs.js +1 -1
  209. package/dist/quantity-selector.es.js +1 -1
  210. package/dist/rich-text.cjs.js +1 -1
  211. package/dist/rich-text.es.js +1 -1
  212. package/dist/{search-field-afhtC6q5.mjs → search-field-BTqVE1-l.mjs} +3 -3
  213. package/dist/{search-field-afhtC6q5.mjs.map → search-field-BTqVE1-l.mjs.map} +1 -1
  214. package/dist/{search-field-WJBtiK0K.js → search-field-DkJrwzJB.js} +2 -2
  215. package/dist/{search-field-WJBtiK0K.js.map → search-field-DkJrwzJB.js.map} +1 -1
  216. package/dist/search-field.cjs.js +1 -1
  217. package/dist/search-field.es.js +1 -1
  218. package/dist/{stepper-VDiR2I8F.js → stepper-5rQ3cK18.js} +2 -2
  219. package/dist/{stepper-VDiR2I8F.js.map → stepper-5rQ3cK18.js.map} +1 -1
  220. package/dist/{stepper-20s8dnPA.mjs → stepper-B3p9r3gv.mjs} +3 -3
  221. package/dist/{stepper-20s8dnPA.mjs.map → stepper-B3p9r3gv.mjs.map} +1 -1
  222. package/dist/stepper.cjs.js +1 -1
  223. package/dist/stepper.es.js +1 -1
  224. package/dist/{table-B5ZitZoL.js → table-BIyaTsOh.js} +2 -2
  225. package/dist/{table-B5ZitZoL.js.map → table-BIyaTsOh.js.map} +1 -1
  226. package/dist/{table-CNIL-60s.mjs → table-BtymEUG4.mjs} +6 -6
  227. package/dist/{table-CNIL-60s.mjs.map → table-BtymEUG4.mjs.map} +1 -1
  228. package/dist/table.cjs.js +1 -1
  229. package/dist/table.es.js +1 -1
  230. package/dist/{text-field-D0e-cRbG.mjs → text-field-C9LX7LBf.mjs} +2 -2
  231. package/dist/{text-field-D0e-cRbG.mjs.map → text-field-C9LX7LBf.mjs.map} +1 -1
  232. package/dist/{text-field-VW8ObP83.js → text-field-CS0PT5T6.js} +2 -2
  233. package/dist/{text-field-VW8ObP83.js.map → text-field-CS0PT5T6.js.map} +1 -1
  234. package/dist/text-field.cjs.js +1 -1
  235. package/dist/text-field.es.js +1 -1
  236. package/dist/{tooltip-B-11qk-0.js → tooltip-COFCRUKv.js} +2 -2
  237. package/dist/{tooltip-B-11qk-0.js.map → tooltip-COFCRUKv.js.map} +1 -1
  238. package/dist/{tooltip-DngYHn5W.mjs → tooltip-FH9R2MAA.mjs} +2 -2
  239. package/dist/{tooltip-DngYHn5W.mjs.map → tooltip-FH9R2MAA.mjs.map} +1 -1
  240. package/dist/tooltip.cjs.js +1 -1
  241. package/dist/tooltip.es.js +1 -1
  242. package/package.json +24 -29
  243. package/scripts/generate.mts +1 -4
  244. package/src/aliases.ts +4 -0
  245. package/src/entries.js +1 -0
  246. package/src/library.ts +1 -1
  247. package/src/password-field.ts +0 -1
  248. package/dist/button-4-yWOgtD.mjs +0 -109
  249. package/dist/button-DmybVApa.js +0 -2
  250. package/dist/link-DY5WLpyc.mjs +0 -72
  251. package/dist/link-DhWVrkTz.js +0 -2
@@ -1,4 +1,4 @@
1
- import { N as o, a as s, b as t, c as I, n, d as N, e as T } from "./notification-DiVdy6E_.mjs";
1
+ import { N as o, a as s, b as t, c as I, n, d as N, e as T } from "./notification-C3f3N1K1.mjs";
2
2
  export {
3
3
  o as NOTIFICATION_ARIA_LIVE,
4
4
  s as NOTIFICATION_ROLE,
@@ -0,0 +1,2 @@
1
+ "use strict";const t=require("react/jsx-runtime"),o=require("react"),T=require("./button-DZgtrGqN.js"),C=require("./icon-DNHpBTHs-faYHqTXU.js"),D=require("./text-field-CS0PT5T6.js"),b=require("./bind-DeUYJ6m9.js"),O=require("./paragraph-B8HFdNne.js"),M={name:"password-invisible",svg:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor"><path fill-rule="evenodd" d="M2.364 2.364a.9.9 0 0 1 1.272 0l3.809 3.808a11.61 11.61 0 0 1 2.218-.789A9.944 9.944 0 0 1 12 5.1c2.652 0 5 1.103 6.826 2.42 1.827 1.317 3.2 2.897 3.923 3.98l.333.5-.333.5c-.647.969-1.81 2.33-3.349 3.547a.9.9 0 0 1-1.116-1.413A15.273 15.273 0 0 0 20.894 12a15.297 15.297 0 0 0-3.12-3.02C16.134 7.797 14.148 6.9 12 6.9c-.655 0-1.295.083-1.914.233-.435.105-.86.242-1.274.407l.418.417a4.9 4.9 0 0 1 7.632 4.654.9.9 0 1 1-1.786-.222 3.1 3.1 0 0 0-4.538-3.123l11.098 11.098a.9.9 0 1 1-1.272 1.272l-3.809-3.808c-1.362.642-2.9 1.072-4.555 1.072-2.651 0-5-1.103-6.826-2.42-1.827-1.317-3.2-2.897-3.923-3.98L.918 12l.333-.5c.645-.966 1.804-2.322 3.335-3.536a.9.9 0 1 1 1.118 1.411A15.266 15.266 0 0 0 3.107 12a15.294 15.294 0 0 0 3.12 3.02C7.866 16.203 9.85 17.1 12 17.1c1.114 0 2.185-.24 3.188-.64l-.418-.418A4.9 4.9 0 0 1 7.1 12a8.888 8.888 0 0 1-.007-.225 2.488 2.488 0 0 1 .014-.385.9.9 0 1 1 1.786.222.79.79 0 0 0-.001.11A6.245 6.245 0 0 1 8.9 12a3.1 3.1 0 0 0 4.562 2.734L8.586 9.859a.912.912 0 0 1-.102-.102l-6.12-6.12a.9.9 0 0 1 0-1.273Z" clip-rule="evenodd"/></svg>',keywords:["password-invisible"],category:"action"},R=s=>t.jsx(C.b,{...s,svg:M});R.displayName="IconPasswordInvisible";const W={name:"password-visible",svg:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor"><path fill-rule="evenodd" d="M3.107 12a15.294 15.294 0 0 0 3.12 3.02C7.866 16.203 9.85 17.1 12 17.1c2.149 0 4.134-.897 5.774-2.08a15.295 15.295 0 0 0 3.12-3.02 15.3 15.3 0 0 0-3.12-3.02C16.134 7.797 14.148 6.9 12 6.9c-2.149 0-4.134.897-5.774 2.08A15.299 15.299 0 0 0 3.106 12Zm2.067-4.48C7 6.203 9.349 5.1 12 5.1c2.652 0 5 1.103 6.826 2.42 1.827 1.317 3.2 2.897 3.923 3.98l.333.5-.333.5c-.722 1.083-2.096 2.663-3.923 3.98C17 17.797 14.651 18.9 12 18.9s-5-1.103-6.826-2.42c-1.827-1.317-3.2-2.897-3.923-3.98L.918 12l.333-.5c.722-1.083 2.096-2.663 3.923-3.98ZM12 8.9a3.1 3.1 0 1 0 0 6.2 3.1 3.1 0 0 0 0-6.2ZM7.1 12a4.9 4.9 0 1 1 9.8 0 4.9 4.9 0 0 1-9.8 0Zm4-1.538a.9.9 0 0 1 .9-.9A2.438 2.438 0 0 1 14.438 12a.9.9 0 0 1-1.8 0 .638.638 0 0 0-.638-.638.9.9 0 0 1-.9-.9Z" clip-rule="evenodd"/></svg>',keywords:["password-visible"],category:"action"},j=s=>t.jsx(C.b,{...s,svg:W});j.displayName="IconPasswordVisible";const _={WEAK:"weak",MEDIUM:"medium",STRONG:"strong"},w={PASSWORD:"password",TEXT:"text"},q={"purpur-password-field":"_purpur-password-field_co7kv_1"},z={"purpur-password-strength":"_purpur-password-strength_sa1ua_1","purpur-password-strength__indicator-container":"_purpur-password-strength__indicator-container_sa1ua_6","purpur-password-strength__password-strength-text--weak":"_purpur-password-strength__password-strength-text--weak_sa1ua_10","purpur-password-strength__password-strength-text--medium":"_purpur-password-strength__password-strength-text--medium_sa1ua_13","purpur-password-strength__password-strength-text--strong":"_purpur-password-strength__password-strength-text--strong_sa1ua_16","purpur-password-strength__password-strength-label":"_purpur-password-strength__password-strength-label_sa1ua_19"},k={"purpur-password-strength-indicator":"_purpur-password-strength-indicator_1o6zr_1","purpur-password-strength-indicator--active":"_purpur-password-strength-indicator--active_1o6zr_7","purpur-password-strength-indicator--weak":"_purpur-password-strength-indicator--weak_1o6zr_7","purpur-password-strength-indicator--medium":"_purpur-password-strength-indicator--medium_1o6zr_10","purpur-password-strength-indicator--strong":"_purpur-password-strength-indicator--strong_1o6zr_13"},I=b.c.bind(k),y="purpur-password-strength-indicator",m=o.forwardRef(({["data-testid"]:s="password-strength-indicator",active:n,className:d,passwordStrength:e,...p},i)=>{const c=I(d,y,{[`${y}--${e}`]:e},{[`${y}--active`]:n});return t.jsx("div",{...p,"data-testid":s,className:c,ref:i})});m.displayName="PasswordStrengthIndicator";const F=(s,n,d,e)=>{const[p,i]=o.useState(0),[c,g]=o.useState(),[h,a]=o.useState(void 0),u=o.useMemo(()=>({0:[_.WEAK,n],1:[_.WEAK,n],2:[_.MEDIUM,d],3:[_.STRONG,e],4:[_.STRONG,e]}),[n,d,e]);return o.useEffect(()=>{(async()=>{if(!s)i(0),g(void 0),a(void 0);else{const{default:r}=await Promise.resolve().then(()=>require("./main-B501z9Ql.js")).then(E=>E.main),{score:l}=r(s),[x,P]=u[l];i(l),g(x),a(P)}})()},[s,u]),{score:p,passwordStrength:c,currentPasswordStrengthText:h}},S=b.c.bind(z),v="purpur-password-strength",N=o.forwardRef(({["data-testid"]:s="password-strength",className:n,value:d,label:e,weakText:p,mediumText:i,strongText:c,...g},h)=>{const a=S(n,v),{score:u,passwordStrength:r,currentPasswordStrengthText:l}=F(d,p,i,c);return t.jsxs("div",{"data-testid":s,className:a,ref:h,...g,children:[t.jsxs("div",{className:S(`${v}__indicator-container`),children:[t.jsx(m,{active:!!r,passwordStrength:r}),t.jsx(m,{active:!!r&&u>1,passwordStrength:r}),t.jsx(m,{active:!!r&&u>2,passwordStrength:r})]}),t.jsxs(O.Paragraph,{"aria-live":"polite","data-testid":`${s}-text`,className:S(`${v}__password-strength-text`,{[`${v}__password-strength-text--${r}`]:r}),children:[t.jsxs("span",{className:S(`${v}__password-strength-label`),children:[e,l?": ":""]}),l]})]})});N.displayName="PasswordStrength";const A=b.c.bind(q),$="purpur-password-field",f=o.forwardRef(({["data-testid"]:s="password-field",children:n,className:d,hidePasswordAriaLabel:e,onChange:p,showPasswordAriaLabel:i,...c},g)=>{const h=A(d,$),[a,u]=o.useState(w.PASSWORD),r=async P=>{p?.(P)},l=()=>{u(a===w.PASSWORD?w.TEXT:w.PASSWORD)},x=a===w.PASSWORD?j:R;return t.jsxs("div",{className:h,children:[t.jsx(D.TextField,{className:A(`${$}__text-field`),"data-testid":s,onChange:r,ref:g,type:a,endAdornment:t.jsx(T.Button,{"aria-label":a===w.PASSWORD?i:e,"aria-pressed":a===w.TEXT,"data-testid":`${s}-type-toggle-button`,onClick:l,size:"sm",variant:"tertiary-purple",iconOnly:!0,children:t.jsx(x,{size:"sm"})}),...c}),n]})});f.PasswordStrength=N;f.displayName="PasswordField";const Z=s=>o.isValidElement(s)&&s?.type===N;exports.PasswordField=f;exports.isPasswordStrength=Z;
2
+ //# sourceMappingURL=password-field-BjKdBoIK.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"password-field-BjKdBoIK.js","sources":["../../../components/icon/dist/components/password-invisible.es.js","../../../components/icon/dist/components/password-visible.es.js","../../../components/password-field/src/constants.ts","../../../components/password-field/src/password-strength-indicator.tsx","../../../components/password-field/src/use-password-strength.ts","../../../components/password-field/src/password-strength.tsx","../../../components/password-field/src/password-field.tsx"],"sourcesContent":["import { jsx as a } from \"react/jsx-runtime\";\nimport { I as o } from \"../icon-DNHpBTHs.mjs\";\nconst l = {\n name: \"password-invisible\",\n svg: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path fill-rule=\"evenodd\" d=\"M2.364 2.364a.9.9 0 0 1 1.272 0l3.809 3.808a11.61 11.61 0 0 1 2.218-.789A9.944 9.944 0 0 1 12 5.1c2.652 0 5 1.103 6.826 2.42 1.827 1.317 3.2 2.897 3.923 3.98l.333.5-.333.5c-.647.969-1.81 2.33-3.349 3.547a.9.9 0 0 1-1.116-1.413A15.273 15.273 0 0 0 20.894 12a15.297 15.297 0 0 0-3.12-3.02C16.134 7.797 14.148 6.9 12 6.9c-.655 0-1.295.083-1.914.233-.435.105-.86.242-1.274.407l.418.417a4.9 4.9 0 0 1 7.632 4.654.9.9 0 1 1-1.786-.222 3.1 3.1 0 0 0-4.538-3.123l11.098 11.098a.9.9 0 1 1-1.272 1.272l-3.809-3.808c-1.362.642-2.9 1.072-4.555 1.072-2.651 0-5-1.103-6.826-2.42-1.827-1.317-3.2-2.897-3.923-3.98L.918 12l.333-.5c.645-.966 1.804-2.322 3.335-3.536a.9.9 0 1 1 1.118 1.411A15.266 15.266 0 0 0 3.107 12a15.294 15.294 0 0 0 3.12 3.02C7.866 16.203 9.85 17.1 12 17.1c1.114 0 2.185-.24 3.188-.64l-.418-.418A4.9 4.9 0 0 1 7.1 12a8.888 8.888 0 0 1-.007-.225 2.488 2.488 0 0 1 .014-.385.9.9 0 1 1 1.786.222.79.79 0 0 0-.001.11A6.245 6.245 0 0 1 8.9 12a3.1 3.1 0 0 0 4.562 2.734L8.586 9.859a.912.912 0 0 1-.102-.102l-6.12-6.12a.9.9 0 0 1 0-1.273Z\" clip-rule=\"evenodd\"/></svg>',\n keywords: [\"password-invisible\"],\n category: \"action\"\n}, i = (s) => /* @__PURE__ */ a(o, { ...s, svg: l });\ni.displayName = \"IconPasswordInvisible\";\nexport {\n i as IconPasswordInvisible\n};\n//# sourceMappingURL=password-invisible.es.js.map\n","import { jsx as o } from \"react/jsx-runtime\";\nimport { I as a } from \"../icon-DNHpBTHs.mjs\";\nconst e = {\n name: \"password-visible\",\n svg: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path fill-rule=\"evenodd\" d=\"M3.107 12a15.294 15.294 0 0 0 3.12 3.02C7.866 16.203 9.85 17.1 12 17.1c2.149 0 4.134-.897 5.774-2.08a15.295 15.295 0 0 0 3.12-3.02 15.3 15.3 0 0 0-3.12-3.02C16.134 7.797 14.148 6.9 12 6.9c-2.149 0-4.134.897-5.774 2.08A15.299 15.299 0 0 0 3.106 12Zm2.067-4.48C7 6.203 9.349 5.1 12 5.1c2.652 0 5 1.103 6.826 2.42 1.827 1.317 3.2 2.897 3.923 3.98l.333.5-.333.5c-.722 1.083-2.096 2.663-3.923 3.98C17 17.797 14.651 18.9 12 18.9s-5-1.103-6.826-2.42c-1.827-1.317-3.2-2.897-3.923-3.98L.918 12l.333-.5c.722-1.083 2.096-2.663 3.923-3.98ZM12 8.9a3.1 3.1 0 1 0 0 6.2 3.1 3.1 0 0 0 0-6.2ZM7.1 12a4.9 4.9 0 1 1 9.8 0 4.9 4.9 0 0 1-9.8 0Zm4-1.538a.9.9 0 0 1 .9-.9A2.438 2.438 0 0 1 14.438 12a.9.9 0 0 1-1.8 0 .638.638 0 0 0-.638-.638.9.9 0 0 1-.9-.9Z\" clip-rule=\"evenodd\"/></svg>',\n keywords: [\"password-visible\"],\n category: \"action\"\n}, i = (s) => /* @__PURE__ */ o(a, { ...s, svg: e });\ni.displayName = \"IconPasswordVisible\";\nexport {\n i as IconPasswordVisible\n};\n//# sourceMappingURL=password-visible.es.js.map\n","export const PASSWORD_STRENGTH = {\n WEAK: \"weak\",\n MEDIUM: \"medium\",\n STRONG: \"strong\",\n} as const;\n\nexport const FIELD_TYPE = {\n PASSWORD: \"password\",\n TEXT: \"text\",\n} as const;\n","import React, { forwardRef } from \"react\";\nimport type { BaseProps } from \"@purpur/common-types\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./password-strength-indicator.module.scss\";\nimport type { PasswordStrengthValue } from \"./types\";\n\nconst cx = c.bind(styles);\n\nexport type PasswordStrengthIndicatorProps = Omit<BaseProps, \"children\"> & {\n active: boolean;\n passwordStrength?: PasswordStrengthValue;\n};\n\nconst rootClassName = \"purpur-password-strength-indicator\";\n\nexport const PasswordStrengthIndicator = forwardRef<HTMLDivElement, PasswordStrengthIndicatorProps>(\n (\n {\n [\"data-testid\"]: dataTestId = \"password-strength-indicator\",\n active,\n className,\n passwordStrength,\n ...props\n },\n ref\n ) => {\n const classes = cx(\n className,\n rootClassName,\n { [`${rootClassName}--${passwordStrength}`]: passwordStrength },\n { [`${rootClassName}--active`]: active }\n );\n\n return <div {...props} data-testid={dataTestId} className={classes} ref={ref} />;\n }\n);\n\nPasswordStrengthIndicator.displayName = \"PasswordStrengthIndicator\";\n","import { useEffect, useMemo, useState } from \"react\";\n\nimport { PASSWORD_STRENGTH } from \"./constants\";\nimport {\n type PasswordScore,\n type PasswordStrengthMapValue,\n type PasswordStrengthValue,\n} from \"./types\";\n\ntype UsePasswordStrengthHook = {\n score: number;\n passwordStrength: PasswordStrengthValue | undefined;\n currentPasswordStrengthText: string | undefined;\n};\n\nexport const usePasswordStrength = (\n password: string,\n weakText: string,\n mediumText: string,\n strongText: string\n): UsePasswordStrengthHook => {\n const [score, setScore] = useState<PasswordScore>(0);\n const [passwordStrength, setPasswordStrength] = useState<PasswordStrengthValue | undefined>();\n const [currentPasswordStrengthText, setCurrentPasswordStrengthText] = useState<\n string | undefined\n >(undefined);\n\n const passwordStrengthMap: Record<PasswordScore, PasswordStrengthMapValue> = useMemo(\n () => ({\n 0: [PASSWORD_STRENGTH.WEAK, weakText],\n 1: [PASSWORD_STRENGTH.WEAK, weakText],\n 2: [PASSWORD_STRENGTH.MEDIUM, mediumText],\n 3: [PASSWORD_STRENGTH.STRONG, strongText],\n 4: [PASSWORD_STRENGTH.STRONG, strongText],\n }),\n [weakText, mediumText, strongText]\n );\n\n useEffect(() => {\n (async () => {\n if (!password) {\n setScore(0);\n setPasswordStrength(undefined);\n setCurrentPasswordStrengthText(undefined);\n } else {\n const { default: zxcvbn } = await import(\"zxcvbn\");\n const { score } = zxcvbn(password);\n const [passwordStrength, passwordStrengthText] = passwordStrengthMap[score];\n setScore(score);\n setPasswordStrength(passwordStrength);\n setCurrentPasswordStrengthText(passwordStrengthText);\n }\n })();\n }, [password, passwordStrengthMap]);\n\n return {\n score,\n passwordStrength,\n currentPasswordStrengthText,\n };\n};\n","import React, { forwardRef } from \"react\";\nimport type { BaseProps } from \"@purpur/common-types\";\nimport { Paragraph } from \"@purpur/paragraph\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./password-strength.module.scss\";\nimport { PasswordStrengthIndicator } from \"./password-strength-indicator\";\nimport { usePasswordStrength } from \"./use-password-strength\";\n\nconst cx = c.bind(styles);\n\nexport type PasswordStrengthProps = Omit<BaseProps, \"children\"> & {\n value: string;\n label: string;\n weakText: string;\n mediumText: string;\n strongText: string;\n};\n\nconst rootClassName = \"purpur-password-strength\";\n\nexport const PasswordStrength = forwardRef<HTMLDivElement, PasswordStrengthProps>(\n (\n {\n [\"data-testid\"]: dataTestId = \"password-strength\",\n className,\n value,\n label,\n weakText,\n mediumText,\n strongText,\n ...props\n },\n ref\n ) => {\n const classes = cx(className, rootClassName);\n const { score, passwordStrength, currentPasswordStrengthText } = usePasswordStrength(\n value,\n weakText,\n mediumText,\n strongText\n );\n\n return (\n <div data-testid={dataTestId} className={classes} ref={ref} {...props}>\n <div className={cx(`${rootClassName}__indicator-container`)}>\n <PasswordStrengthIndicator\n active={!!passwordStrength}\n passwordStrength={passwordStrength}\n />\n <PasswordStrengthIndicator\n active={!!passwordStrength && score > 1}\n passwordStrength={passwordStrength}\n />\n <PasswordStrengthIndicator\n active={!!passwordStrength && score > 2}\n passwordStrength={passwordStrength}\n />\n </div>\n <Paragraph\n aria-live=\"polite\"\n data-testid={`${dataTestId}-text`}\n className={cx(`${rootClassName}__password-strength-text`, {\n [`${rootClassName}__password-strength-text--${passwordStrength}`]: passwordStrength,\n })}\n >\n <span className={cx(`${rootClassName}__password-strength-label`)}>\n {label}\n {currentPasswordStrengthText ? \": \" : \"\"}\n </span>\n {currentPasswordStrengthText}\n </Paragraph>\n </div>\n );\n }\n);\n\nPasswordStrength.displayName = \"PasswordStrength\";\n","import React, {\n type ChangeEvent,\n forwardRef,\n isValidElement,\n type ReactElement,\n type ReactNode,\n type ReactPortal,\n useState,\n} from \"react\";\nimport { Button } from \"@purpur/button\";\nimport { IconPasswordInvisible } from \"@purpur/icon/password-invisible\";\nimport { IconPasswordVisible } from \"@purpur/icon/password-visible\";\nimport { TextField, type TextFieldProps } from \"@purpur/text-field\";\nimport c from \"classnames/bind\";\n\nimport { FIELD_TYPE } from \"./constants\";\nimport styles from \"./password-field.module.scss\";\nimport { PasswordStrength } from \"./password-strength\";\nimport { type FieldType } from \"./types\";\n\nconst cx = c.bind(styles);\n\nexport type PasswordFieldDefaultProps = {\n [\"data-testid\"]?: string;\n children?: ReactNode;\n showPasswordAriaLabel: string;\n hidePasswordAriaLabel: string;\n onChange?: (event: ChangeEvent<HTMLInputElement>) => void;\n};\n\ntype TextFieldClearProps =\n | {\n clearButtonAriaLabel: string;\n onClear: () => void;\n }\n | {\n clearButtonAriaLabel?: never;\n onClear?: never;\n };\n\nexport type PasswordFieldProps = PasswordFieldDefaultProps &\n Omit<TextFieldProps, \"startAdornment\" | \"endAdornment\" | \"afterField\" | \"type\" | \"onChange\"> &\n TextFieldClearProps;\n\nconst rootClassName = \"purpur-password-field\";\n\ntype PasswordFieldCmp<P> = React.ForwardRefExoticComponent<\n P & React.RefAttributes<HTMLInputElement>\n> & {\n PasswordStrength: typeof PasswordStrength;\n};\n\nexport const PasswordField = forwardRef<HTMLInputElement, PasswordFieldProps>(\n (\n {\n [\"data-testid\"]: dataTestId = \"password-field\",\n children,\n className,\n hidePasswordAriaLabel,\n onChange,\n showPasswordAriaLabel,\n ...props\n },\n ref\n ) => {\n const classes = cx(className, rootClassName);\n const [type, setType] = useState<FieldType>(FIELD_TYPE.PASSWORD);\n\n const handleChange = async (event: ChangeEvent<HTMLInputElement>) => {\n onChange?.(event);\n };\n\n const handleVisibilityChange = () => {\n setType(type === FIELD_TYPE.PASSWORD ? FIELD_TYPE.TEXT : FIELD_TYPE.PASSWORD);\n };\n\n const IconComponent =\n type === FIELD_TYPE.PASSWORD ? IconPasswordVisible : IconPasswordInvisible;\n\n return (\n <div className={classes}>\n <TextField\n className={cx(`${rootClassName}__text-field`)}\n data-testid={dataTestId}\n onChange={handleChange}\n ref={ref}\n type={type}\n endAdornment={\n <Button\n aria-label={\n type === FIELD_TYPE.PASSWORD ? showPasswordAriaLabel : hidePasswordAriaLabel\n }\n aria-pressed={type === FIELD_TYPE.TEXT}\n data-testid={`${dataTestId}-type-toggle-button`}\n onClick={handleVisibilityChange}\n size=\"sm\"\n variant=\"tertiary-purple\"\n iconOnly\n >\n <IconComponent size=\"sm\" />\n </Button>\n }\n {...props}\n />\n {children}\n </div>\n );\n }\n) as PasswordFieldCmp<PasswordFieldProps>;\n\nPasswordField.PasswordStrength = PasswordStrength;\n\nPasswordField.displayName = \"PasswordField\";\n\nexport const isPasswordStrength = (\n child:\n | ReactElement\n | Iterable<ReactNode>\n | ReactPortal\n | string\n | number\n | boolean\n | null\n | undefined\n): child is ReactElement<PasswordFieldProps> =>\n isValidElement<PasswordFieldProps>(child) && child?.type === PasswordStrength;\n"],"names":["l","i","a","o","e","PASSWORD_STRENGTH","FIELD_TYPE","cx","c","styles","rootClassName","PasswordStrengthIndicator","forwardRef","dataTestId","active","className","passwordStrength","props","ref","classes","jsx","usePasswordStrength","password","weakText","mediumText","strongText","score","setScore","useState","setPasswordStrength","currentPasswordStrengthText","setCurrentPasswordStrengthText","passwordStrengthMap","useMemo","useEffect","zxcvbn","n","passwordStrengthText","PasswordStrength","value","label","jsxs","Paragraph","PasswordField","children","hidePasswordAriaLabel","onChange","showPasswordAriaLabel","type","setType","handleChange","event","handleVisibilityChange","IconComponent","IconPasswordVisible","IconPasswordInvisible","TextField","Button","isPasswordStrength","child","isValidElement"],"mappings":"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"}
@@ -0,0 +1,200 @@
1
+ import { jsx as o, jsxs as m } from "react/jsx-runtime";
2
+ import { forwardRef as N, useState as S, useMemo as M, useEffect as W, isValidElement as z } from "react";
3
+ import { b as k } from "./button-EVRfctR8.mjs";
4
+ import { b as E } from "./icon-DNHpBTHs-JfI8WyiR.mjs";
5
+ import { T as I } from "./text-field-C9LX7LBf.mjs";
6
+ import { c as b } from "./bind-CU-R61T-.mjs";
7
+ import { P as Z } from "./paragraph-CwAdFoIm.mjs";
8
+ const F = {
9
+ name: "password-invisible",
10
+ svg: '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor"><path fill-rule="evenodd" d="M2.364 2.364a.9.9 0 0 1 1.272 0l3.809 3.808a11.61 11.61 0 0 1 2.218-.789A9.944 9.944 0 0 1 12 5.1c2.652 0 5 1.103 6.826 2.42 1.827 1.317 3.2 2.897 3.923 3.98l.333.5-.333.5c-.647.969-1.81 2.33-3.349 3.547a.9.9 0 0 1-1.116-1.413A15.273 15.273 0 0 0 20.894 12a15.297 15.297 0 0 0-3.12-3.02C16.134 7.797 14.148 6.9 12 6.9c-.655 0-1.295.083-1.914.233-.435.105-.86.242-1.274.407l.418.417a4.9 4.9 0 0 1 7.632 4.654.9.9 0 1 1-1.786-.222 3.1 3.1 0 0 0-4.538-3.123l11.098 11.098a.9.9 0 1 1-1.272 1.272l-3.809-3.808c-1.362.642-2.9 1.072-4.555 1.072-2.651 0-5-1.103-6.826-2.42-1.827-1.317-3.2-2.897-3.923-3.98L.918 12l.333-.5c.645-.966 1.804-2.322 3.335-3.536a.9.9 0 1 1 1.118 1.411A15.266 15.266 0 0 0 3.107 12a15.294 15.294 0 0 0 3.12 3.02C7.866 16.203 9.85 17.1 12 17.1c1.114 0 2.185-.24 3.188-.64l-.418-.418A4.9 4.9 0 0 1 7.1 12a8.888 8.888 0 0 1-.007-.225 2.488 2.488 0 0 1 .014-.385.9.9 0 1 1 1.786.222.79.79 0 0 0-.001.11A6.245 6.245 0 0 1 8.9 12a3.1 3.1 0 0 0 4.562 2.734L8.586 9.859a.912.912 0 0 1-.102-.102l-6.12-6.12a.9.9 0 0 1 0-1.273Z" clip-rule="evenodd"/></svg>',
11
+ keywords: ["password-invisible"],
12
+ category: "action"
13
+ }, R = (s) => /* @__PURE__ */ o(E, { ...s, svg: F });
14
+ R.displayName = "IconPasswordInvisible";
15
+ const G = {
16
+ name: "password-visible",
17
+ svg: '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor"><path fill-rule="evenodd" d="M3.107 12a15.294 15.294 0 0 0 3.12 3.02C7.866 16.203 9.85 17.1 12 17.1c2.149 0 4.134-.897 5.774-2.08a15.295 15.295 0 0 0 3.12-3.02 15.3 15.3 0 0 0-3.12-3.02C16.134 7.797 14.148 6.9 12 6.9c-2.149 0-4.134.897-5.774 2.08A15.299 15.299 0 0 0 3.106 12Zm2.067-4.48C7 6.203 9.349 5.1 12 5.1c2.652 0 5 1.103 6.826 2.42 1.827 1.317 3.2 2.897 3.923 3.98l.333.5-.333.5c-.722 1.083-2.096 2.663-3.923 3.98C17 17.797 14.651 18.9 12 18.9s-5-1.103-6.826-2.42c-1.827-1.317-3.2-2.897-3.923-3.98L.918 12l.333-.5c.722-1.083 2.096-2.663 3.923-3.98ZM12 8.9a3.1 3.1 0 1 0 0 6.2 3.1 3.1 0 0 0 0-6.2ZM7.1 12a4.9 4.9 0 1 1 9.8 0 4.9 4.9 0 0 1-9.8 0Zm4-1.538a.9.9 0 0 1 .9-.9A2.438 2.438 0 0 1 14.438 12a.9.9 0 0 1-1.8 0 .638.638 0 0 0-.638-.638.9.9 0 0 1-.9-.9Z" clip-rule="evenodd"/></svg>',
18
+ keywords: ["password-visible"],
19
+ category: "action"
20
+ }, T = (s) => /* @__PURE__ */ o(E, { ...s, svg: G });
21
+ T.displayName = "IconPasswordVisible";
22
+ const h = {
23
+ WEAK: "weak",
24
+ MEDIUM: "medium",
25
+ STRONG: "strong"
26
+ }, u = {
27
+ PASSWORD: "password",
28
+ TEXT: "text"
29
+ }, L = {
30
+ "purpur-password-field": "_purpur-password-field_co7kv_1"
31
+ }, B = {
32
+ "purpur-password-strength": "_purpur-password-strength_sa1ua_1",
33
+ "purpur-password-strength__indicator-container": "_purpur-password-strength__indicator-container_sa1ua_6",
34
+ "purpur-password-strength__password-strength-text--weak": "_purpur-password-strength__password-strength-text--weak_sa1ua_10",
35
+ "purpur-password-strength__password-strength-text--medium": "_purpur-password-strength__password-strength-text--medium_sa1ua_13",
36
+ "purpur-password-strength__password-strength-text--strong": "_purpur-password-strength__password-strength-text--strong_sa1ua_16",
37
+ "purpur-password-strength__password-strength-label": "_purpur-password-strength__password-strength-label_sa1ua_19"
38
+ }, K = {
39
+ "purpur-password-strength-indicator": "_purpur-password-strength-indicator_1o6zr_1",
40
+ "purpur-password-strength-indicator--active": "_purpur-password-strength-indicator--active_1o6zr_7",
41
+ "purpur-password-strength-indicator--weak": "_purpur-password-strength-indicator--weak_1o6zr_7",
42
+ "purpur-password-strength-indicator--medium": "_purpur-password-strength-indicator--medium_1o6zr_10",
43
+ "purpur-password-strength-indicator--strong": "_purpur-password-strength-indicator--strong_1o6zr_13"
44
+ }, V = b.bind(K), y = "purpur-password-strength-indicator", P = N(
45
+ ({
46
+ ["data-testid"]: s = "password-strength-indicator",
47
+ active: e,
48
+ className: n,
49
+ passwordStrength: t,
50
+ ...i
51
+ }, d) => {
52
+ const p = V(
53
+ n,
54
+ y,
55
+ { [`${y}--${t}`]: t },
56
+ { [`${y}--active`]: e }
57
+ );
58
+ return /* @__PURE__ */ o("div", { ...i, "data-testid": s, className: p, ref: d });
59
+ }
60
+ );
61
+ P.displayName = "PasswordStrengthIndicator";
62
+ const X = (s, e, n, t) => {
63
+ const [i, d] = S(0), [p, w] = S(), [g, a] = S(void 0), c = M(
64
+ () => ({
65
+ 0: [h.WEAK, e],
66
+ 1: [h.WEAK, e],
67
+ 2: [h.MEDIUM, n],
68
+ 3: [h.STRONG, t],
69
+ 4: [h.STRONG, t]
70
+ }),
71
+ [e, n, t]
72
+ );
73
+ return W(() => {
74
+ (async () => {
75
+ if (!s)
76
+ d(0), w(void 0), a(void 0);
77
+ else {
78
+ const { default: r } = await import("./main-L71Sqg3s.mjs").then((D) => D.m), { score: l } = r(s), [f, x] = c[l];
79
+ d(l), w(f), a(x);
80
+ }
81
+ })();
82
+ }, [s, c]), {
83
+ score: i,
84
+ passwordStrength: p,
85
+ currentPasswordStrengthText: g
86
+ };
87
+ }, v = b.bind(B), _ = "purpur-password-strength", A = N(
88
+ ({
89
+ ["data-testid"]: s = "password-strength",
90
+ className: e,
91
+ value: n,
92
+ label: t,
93
+ weakText: i,
94
+ mediumText: d,
95
+ strongText: p,
96
+ ...w
97
+ }, g) => {
98
+ const a = v(e, _), { score: c, passwordStrength: r, currentPasswordStrengthText: l } = X(
99
+ n,
100
+ i,
101
+ d,
102
+ p
103
+ );
104
+ return /* @__PURE__ */ m("div", { "data-testid": s, className: a, ref: g, ...w, children: [
105
+ /* @__PURE__ */ m("div", { className: v(`${_}__indicator-container`), children: [
106
+ /* @__PURE__ */ o(
107
+ P,
108
+ {
109
+ active: !!r,
110
+ passwordStrength: r
111
+ }
112
+ ),
113
+ /* @__PURE__ */ o(
114
+ P,
115
+ {
116
+ active: !!r && c > 1,
117
+ passwordStrength: r
118
+ }
119
+ ),
120
+ /* @__PURE__ */ o(
121
+ P,
122
+ {
123
+ active: !!r && c > 2,
124
+ passwordStrength: r
125
+ }
126
+ )
127
+ ] }),
128
+ /* @__PURE__ */ m(
129
+ Z,
130
+ {
131
+ "aria-live": "polite",
132
+ "data-testid": `${s}-text`,
133
+ className: v(`${_}__password-strength-text`, {
134
+ [`${_}__password-strength-text--${r}`]: r
135
+ }),
136
+ children: [
137
+ /* @__PURE__ */ m("span", { className: v(`${_}__password-strength-label`), children: [
138
+ t,
139
+ l ? ": " : ""
140
+ ] }),
141
+ l
142
+ ]
143
+ }
144
+ )
145
+ ] });
146
+ }
147
+ );
148
+ A.displayName = "PasswordStrength";
149
+ const $ = b.bind(L), C = "purpur-password-field", O = N(
150
+ ({
151
+ ["data-testid"]: s = "password-field",
152
+ children: e,
153
+ className: n,
154
+ hidePasswordAriaLabel: t,
155
+ onChange: i,
156
+ showPasswordAriaLabel: d,
157
+ ...p
158
+ }, w) => {
159
+ const g = $(n, C), [a, c] = S(u.PASSWORD), r = async (x) => {
160
+ i?.(x);
161
+ }, l = () => {
162
+ c(a === u.PASSWORD ? u.TEXT : u.PASSWORD);
163
+ }, f = a === u.PASSWORD ? T : R;
164
+ return /* @__PURE__ */ m("div", { className: g, children: [
165
+ /* @__PURE__ */ o(
166
+ I,
167
+ {
168
+ className: $(`${C}__text-field`),
169
+ "data-testid": s,
170
+ onChange: r,
171
+ ref: w,
172
+ type: a,
173
+ endAdornment: /* @__PURE__ */ o(
174
+ k,
175
+ {
176
+ "aria-label": a === u.PASSWORD ? d : t,
177
+ "aria-pressed": a === u.TEXT,
178
+ "data-testid": `${s}-type-toggle-button`,
179
+ onClick: l,
180
+ size: "sm",
181
+ variant: "tertiary-purple",
182
+ iconOnly: !0,
183
+ children: /* @__PURE__ */ o(f, { size: "sm" })
184
+ }
185
+ ),
186
+ ...p
187
+ }
188
+ ),
189
+ e
190
+ ] });
191
+ }
192
+ );
193
+ O.PasswordStrength = A;
194
+ O.displayName = "PasswordField";
195
+ const ss = (s) => z(s) && s?.type === A;
196
+ export {
197
+ O as P,
198
+ ss as i
199
+ };
200
+ //# sourceMappingURL=password-field-C_E4563x.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"password-field-C_E4563x.mjs","sources":["../../../components/icon/dist/components/password-invisible.es.js","../../../components/icon/dist/components/password-visible.es.js","../../../components/password-field/src/constants.ts","../../../components/password-field/src/password-strength-indicator.tsx","../../../components/password-field/src/use-password-strength.ts","../../../components/password-field/src/password-strength.tsx","../../../components/password-field/src/password-field.tsx"],"sourcesContent":["import { jsx as a } from \"react/jsx-runtime\";\nimport { I as o } from \"../icon-DNHpBTHs.mjs\";\nconst l = {\n name: \"password-invisible\",\n svg: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path fill-rule=\"evenodd\" d=\"M2.364 2.364a.9.9 0 0 1 1.272 0l3.809 3.808a11.61 11.61 0 0 1 2.218-.789A9.944 9.944 0 0 1 12 5.1c2.652 0 5 1.103 6.826 2.42 1.827 1.317 3.2 2.897 3.923 3.98l.333.5-.333.5c-.647.969-1.81 2.33-3.349 3.547a.9.9 0 0 1-1.116-1.413A15.273 15.273 0 0 0 20.894 12a15.297 15.297 0 0 0-3.12-3.02C16.134 7.797 14.148 6.9 12 6.9c-.655 0-1.295.083-1.914.233-.435.105-.86.242-1.274.407l.418.417a4.9 4.9 0 0 1 7.632 4.654.9.9 0 1 1-1.786-.222 3.1 3.1 0 0 0-4.538-3.123l11.098 11.098a.9.9 0 1 1-1.272 1.272l-3.809-3.808c-1.362.642-2.9 1.072-4.555 1.072-2.651 0-5-1.103-6.826-2.42-1.827-1.317-3.2-2.897-3.923-3.98L.918 12l.333-.5c.645-.966 1.804-2.322 3.335-3.536a.9.9 0 1 1 1.118 1.411A15.266 15.266 0 0 0 3.107 12a15.294 15.294 0 0 0 3.12 3.02C7.866 16.203 9.85 17.1 12 17.1c1.114 0 2.185-.24 3.188-.64l-.418-.418A4.9 4.9 0 0 1 7.1 12a8.888 8.888 0 0 1-.007-.225 2.488 2.488 0 0 1 .014-.385.9.9 0 1 1 1.786.222.79.79 0 0 0-.001.11A6.245 6.245 0 0 1 8.9 12a3.1 3.1 0 0 0 4.562 2.734L8.586 9.859a.912.912 0 0 1-.102-.102l-6.12-6.12a.9.9 0 0 1 0-1.273Z\" clip-rule=\"evenodd\"/></svg>',\n keywords: [\"password-invisible\"],\n category: \"action\"\n}, i = (s) => /* @__PURE__ */ a(o, { ...s, svg: l });\ni.displayName = \"IconPasswordInvisible\";\nexport {\n i as IconPasswordInvisible\n};\n//# sourceMappingURL=password-invisible.es.js.map\n","import { jsx as o } from \"react/jsx-runtime\";\nimport { I as a } from \"../icon-DNHpBTHs.mjs\";\nconst e = {\n name: \"password-visible\",\n svg: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path fill-rule=\"evenodd\" d=\"M3.107 12a15.294 15.294 0 0 0 3.12 3.02C7.866 16.203 9.85 17.1 12 17.1c2.149 0 4.134-.897 5.774-2.08a15.295 15.295 0 0 0 3.12-3.02 15.3 15.3 0 0 0-3.12-3.02C16.134 7.797 14.148 6.9 12 6.9c-2.149 0-4.134.897-5.774 2.08A15.299 15.299 0 0 0 3.106 12Zm2.067-4.48C7 6.203 9.349 5.1 12 5.1c2.652 0 5 1.103 6.826 2.42 1.827 1.317 3.2 2.897 3.923 3.98l.333.5-.333.5c-.722 1.083-2.096 2.663-3.923 3.98C17 17.797 14.651 18.9 12 18.9s-5-1.103-6.826-2.42c-1.827-1.317-3.2-2.897-3.923-3.98L.918 12l.333-.5c.722-1.083 2.096-2.663 3.923-3.98ZM12 8.9a3.1 3.1 0 1 0 0 6.2 3.1 3.1 0 0 0 0-6.2ZM7.1 12a4.9 4.9 0 1 1 9.8 0 4.9 4.9 0 0 1-9.8 0Zm4-1.538a.9.9 0 0 1 .9-.9A2.438 2.438 0 0 1 14.438 12a.9.9 0 0 1-1.8 0 .638.638 0 0 0-.638-.638.9.9 0 0 1-.9-.9Z\" clip-rule=\"evenodd\"/></svg>',\n keywords: [\"password-visible\"],\n category: \"action\"\n}, i = (s) => /* @__PURE__ */ o(a, { ...s, svg: e });\ni.displayName = \"IconPasswordVisible\";\nexport {\n i as IconPasswordVisible\n};\n//# sourceMappingURL=password-visible.es.js.map\n","export const PASSWORD_STRENGTH = {\n WEAK: \"weak\",\n MEDIUM: \"medium\",\n STRONG: \"strong\",\n} as const;\n\nexport const FIELD_TYPE = {\n PASSWORD: \"password\",\n TEXT: \"text\",\n} as const;\n","import React, { forwardRef } from \"react\";\nimport type { BaseProps } from \"@purpur/common-types\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./password-strength-indicator.module.scss\";\nimport type { PasswordStrengthValue } from \"./types\";\n\nconst cx = c.bind(styles);\n\nexport type PasswordStrengthIndicatorProps = Omit<BaseProps, \"children\"> & {\n active: boolean;\n passwordStrength?: PasswordStrengthValue;\n};\n\nconst rootClassName = \"purpur-password-strength-indicator\";\n\nexport const PasswordStrengthIndicator = forwardRef<HTMLDivElement, PasswordStrengthIndicatorProps>(\n (\n {\n [\"data-testid\"]: dataTestId = \"password-strength-indicator\",\n active,\n className,\n passwordStrength,\n ...props\n },\n ref\n ) => {\n const classes = cx(\n className,\n rootClassName,\n { [`${rootClassName}--${passwordStrength}`]: passwordStrength },\n { [`${rootClassName}--active`]: active }\n );\n\n return <div {...props} data-testid={dataTestId} className={classes} ref={ref} />;\n }\n);\n\nPasswordStrengthIndicator.displayName = \"PasswordStrengthIndicator\";\n","import { useEffect, useMemo, useState } from \"react\";\n\nimport { PASSWORD_STRENGTH } from \"./constants\";\nimport {\n type PasswordScore,\n type PasswordStrengthMapValue,\n type PasswordStrengthValue,\n} from \"./types\";\n\ntype UsePasswordStrengthHook = {\n score: number;\n passwordStrength: PasswordStrengthValue | undefined;\n currentPasswordStrengthText: string | undefined;\n};\n\nexport const usePasswordStrength = (\n password: string,\n weakText: string,\n mediumText: string,\n strongText: string\n): UsePasswordStrengthHook => {\n const [score, setScore] = useState<PasswordScore>(0);\n const [passwordStrength, setPasswordStrength] = useState<PasswordStrengthValue | undefined>();\n const [currentPasswordStrengthText, setCurrentPasswordStrengthText] = useState<\n string | undefined\n >(undefined);\n\n const passwordStrengthMap: Record<PasswordScore, PasswordStrengthMapValue> = useMemo(\n () => ({\n 0: [PASSWORD_STRENGTH.WEAK, weakText],\n 1: [PASSWORD_STRENGTH.WEAK, weakText],\n 2: [PASSWORD_STRENGTH.MEDIUM, mediumText],\n 3: [PASSWORD_STRENGTH.STRONG, strongText],\n 4: [PASSWORD_STRENGTH.STRONG, strongText],\n }),\n [weakText, mediumText, strongText]\n );\n\n useEffect(() => {\n (async () => {\n if (!password) {\n setScore(0);\n setPasswordStrength(undefined);\n setCurrentPasswordStrengthText(undefined);\n } else {\n const { default: zxcvbn } = await import(\"zxcvbn\");\n const { score } = zxcvbn(password);\n const [passwordStrength, passwordStrengthText] = passwordStrengthMap[score];\n setScore(score);\n setPasswordStrength(passwordStrength);\n setCurrentPasswordStrengthText(passwordStrengthText);\n }\n })();\n }, [password, passwordStrengthMap]);\n\n return {\n score,\n passwordStrength,\n currentPasswordStrengthText,\n };\n};\n","import React, { forwardRef } from \"react\";\nimport type { BaseProps } from \"@purpur/common-types\";\nimport { Paragraph } from \"@purpur/paragraph\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./password-strength.module.scss\";\nimport { PasswordStrengthIndicator } from \"./password-strength-indicator\";\nimport { usePasswordStrength } from \"./use-password-strength\";\n\nconst cx = c.bind(styles);\n\nexport type PasswordStrengthProps = Omit<BaseProps, \"children\"> & {\n value: string;\n label: string;\n weakText: string;\n mediumText: string;\n strongText: string;\n};\n\nconst rootClassName = \"purpur-password-strength\";\n\nexport const PasswordStrength = forwardRef<HTMLDivElement, PasswordStrengthProps>(\n (\n {\n [\"data-testid\"]: dataTestId = \"password-strength\",\n className,\n value,\n label,\n weakText,\n mediumText,\n strongText,\n ...props\n },\n ref\n ) => {\n const classes = cx(className, rootClassName);\n const { score, passwordStrength, currentPasswordStrengthText } = usePasswordStrength(\n value,\n weakText,\n mediumText,\n strongText\n );\n\n return (\n <div data-testid={dataTestId} className={classes} ref={ref} {...props}>\n <div className={cx(`${rootClassName}__indicator-container`)}>\n <PasswordStrengthIndicator\n active={!!passwordStrength}\n passwordStrength={passwordStrength}\n />\n <PasswordStrengthIndicator\n active={!!passwordStrength && score > 1}\n passwordStrength={passwordStrength}\n />\n <PasswordStrengthIndicator\n active={!!passwordStrength && score > 2}\n passwordStrength={passwordStrength}\n />\n </div>\n <Paragraph\n aria-live=\"polite\"\n data-testid={`${dataTestId}-text`}\n className={cx(`${rootClassName}__password-strength-text`, {\n [`${rootClassName}__password-strength-text--${passwordStrength}`]: passwordStrength,\n })}\n >\n <span className={cx(`${rootClassName}__password-strength-label`)}>\n {label}\n {currentPasswordStrengthText ? \": \" : \"\"}\n </span>\n {currentPasswordStrengthText}\n </Paragraph>\n </div>\n );\n }\n);\n\nPasswordStrength.displayName = \"PasswordStrength\";\n","import React, {\n type ChangeEvent,\n forwardRef,\n isValidElement,\n type ReactElement,\n type ReactNode,\n type ReactPortal,\n useState,\n} from \"react\";\nimport { Button } from \"@purpur/button\";\nimport { IconPasswordInvisible } from \"@purpur/icon/password-invisible\";\nimport { IconPasswordVisible } from \"@purpur/icon/password-visible\";\nimport { TextField, type TextFieldProps } from \"@purpur/text-field\";\nimport c from \"classnames/bind\";\n\nimport { FIELD_TYPE } from \"./constants\";\nimport styles from \"./password-field.module.scss\";\nimport { PasswordStrength } from \"./password-strength\";\nimport { type FieldType } from \"./types\";\n\nconst cx = c.bind(styles);\n\nexport type PasswordFieldDefaultProps = {\n [\"data-testid\"]?: string;\n children?: ReactNode;\n showPasswordAriaLabel: string;\n hidePasswordAriaLabel: string;\n onChange?: (event: ChangeEvent<HTMLInputElement>) => void;\n};\n\ntype TextFieldClearProps =\n | {\n clearButtonAriaLabel: string;\n onClear: () => void;\n }\n | {\n clearButtonAriaLabel?: never;\n onClear?: never;\n };\n\nexport type PasswordFieldProps = PasswordFieldDefaultProps &\n Omit<TextFieldProps, \"startAdornment\" | \"endAdornment\" | \"afterField\" | \"type\" | \"onChange\"> &\n TextFieldClearProps;\n\nconst rootClassName = \"purpur-password-field\";\n\ntype PasswordFieldCmp<P> = React.ForwardRefExoticComponent<\n P & React.RefAttributes<HTMLInputElement>\n> & {\n PasswordStrength: typeof PasswordStrength;\n};\n\nexport const PasswordField = forwardRef<HTMLInputElement, PasswordFieldProps>(\n (\n {\n [\"data-testid\"]: dataTestId = \"password-field\",\n children,\n className,\n hidePasswordAriaLabel,\n onChange,\n showPasswordAriaLabel,\n ...props\n },\n ref\n ) => {\n const classes = cx(className, rootClassName);\n const [type, setType] = useState<FieldType>(FIELD_TYPE.PASSWORD);\n\n const handleChange = async (event: ChangeEvent<HTMLInputElement>) => {\n onChange?.(event);\n };\n\n const handleVisibilityChange = () => {\n setType(type === FIELD_TYPE.PASSWORD ? FIELD_TYPE.TEXT : FIELD_TYPE.PASSWORD);\n };\n\n const IconComponent =\n type === FIELD_TYPE.PASSWORD ? IconPasswordVisible : IconPasswordInvisible;\n\n return (\n <div className={classes}>\n <TextField\n className={cx(`${rootClassName}__text-field`)}\n data-testid={dataTestId}\n onChange={handleChange}\n ref={ref}\n type={type}\n endAdornment={\n <Button\n aria-label={\n type === FIELD_TYPE.PASSWORD ? showPasswordAriaLabel : hidePasswordAriaLabel\n }\n aria-pressed={type === FIELD_TYPE.TEXT}\n data-testid={`${dataTestId}-type-toggle-button`}\n onClick={handleVisibilityChange}\n size=\"sm\"\n variant=\"tertiary-purple\"\n iconOnly\n >\n <IconComponent size=\"sm\" />\n </Button>\n }\n {...props}\n />\n {children}\n </div>\n );\n }\n) as PasswordFieldCmp<PasswordFieldProps>;\n\nPasswordField.PasswordStrength = PasswordStrength;\n\nPasswordField.displayName = \"PasswordField\";\n\nexport const isPasswordStrength = (\n child:\n | ReactElement\n | Iterable<ReactNode>\n | ReactPortal\n | string\n | number\n | boolean\n | null\n | undefined\n): child is ReactElement<PasswordFieldProps> =>\n isValidElement<PasswordFieldProps>(child) && child?.type === PasswordStrength;\n"],"names":["l","i","a","o","e","PASSWORD_STRENGTH","FIELD_TYPE","cx","c","styles","rootClassName","PasswordStrengthIndicator","forwardRef","dataTestId","active","className","passwordStrength","props","ref","classes","jsx","usePasswordStrength","password","weakText","mediumText","strongText","score","setScore","useState","setPasswordStrength","currentPasswordStrengthText","setCurrentPasswordStrengthText","passwordStrengthMap","useMemo","useEffect","zxcvbn","n","passwordStrengthText","PasswordStrength","value","label","jsxs","Paragraph","PasswordField","children","hidePasswordAriaLabel","onChange","showPasswordAriaLabel","type","setType","handleChange","event","handleVisibilityChange","IconComponent","IconPasswordVisible","IconPasswordInvisible","TextField","Button","isPasswordStrength","child","isValidElement"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("./password-field-BjKdBoIK.js");exports.PasswordField=s.PasswordField;exports.isPasswordStrength=s.isPasswordStrength;
2
+ //# sourceMappingURL=password-field.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"password-field.cjs.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -0,0 +1,6 @@
1
+ import { P as a, i as o } from "./password-field-C_E4563x.mjs";
2
+ export {
3
+ a as PasswordField,
4
+ o as isPasswordStrength
5
+ };
6
+ //# sourceMappingURL=password-field.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"password-field.es.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -1,2 +1,2 @@
1
- "use strict";const a=require("react/jsx-runtime"),oe=require("./button-DmybVApa.js"),p=require("react"),dt=require("./variables-Buqm4JZc.js"),O=require("./index-DlMXYAr3.js"),re=require("./index-_XxjJPRD.js"),K=require("./index-kcwFA4Dv.js"),q=require("./index-DA01QPpC.js"),ft=require("./index-BtWPC8xc.js"),k=require("./floating-ui.react-dom-Cc_YSprQ.js"),ht=require("./index-DOFLOnao.js"),Oe=require("./index-CleLBinl.js"),gt=require("./close.es-VL3lKi1O.js"),Ae=require("./paragraph-B8HFdNne.js");require("./ThemeProvider-BJGm3zai.js");const vt=require("./useThemePortalContainer-CUcqV327.js"),Y=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 o in e)if(o!=="default"){const r=Object.getOwnPropertyDescriptor(e,o);Object.defineProperty(t,o,r.get?r:{enumerable:!0,get:()=>e[o]})}}return t.default=e,Object.freeze(t)}const g=mt(p),de=p.createContext(null),fe=()=>{const e=p.useContext(de);if(!e)throw new Error("usePopoverFlow must be used within a PopoverFlow provider");return e},X=()=>p.useContext(de),wt=({children:e,initialStep:t=1,onComplete:o,onDismiss:r,separatorText:n,stepText:s,backLabel:i,nextLabel:l,finishLabel:u,openDelay:d=0})=>{const[v,f]=p.useState(t),[h,P]=p.useState(new Set),m=p.useCallback(w=>{P(j=>{const R=new Set(j);return R.add(w),R})},[]),S=p.useCallback(w=>{P(j=>{const R=new Set(j);return R.delete(w),R})},[]),_=p.useCallback(()=>{f(w=>{const j=w+1;return j>h.size?(o?.(),w):j})},[h.size,o]),y=p.useCallback(()=>{f(w=>Math.max(1,w-1))},[]),E=p.useCallback(()=>{f(0),r?.()},[r]),A=p.useMemo(()=>({currentStep:v,totalSteps:h.size,next:_,back:y,dismiss:E,registerStep:m,unregisterStep:S,separatorText:n,stepText:s,backLabel:i,nextLabel:l,finishLabel:u,openDelay:d}),[v,h.size,_,y,E,m,S,n,s,i,l,u,d]);return a.jsx(de.Provider,{value:A,children:e})},he=p.createContext(null),ne=()=>p.useContext(he),Re=p.createContext({negative:!1}),ge=()=>p.useContext(Re),xt=150,ye={MAX_MD:`(max-width: ${dt.purpurBreakpointMd})`},ve=()=>{const e=window.matchMedia(ye.MAX_MD);function t(){r(e.matches)}const[o,r]=p.useState(()=>typeof window>"u"?!1:window.matchMedia(ye.MAX_MD).matches),n=p.useCallback(()=>{let s;return()=>{clearTimeout(s),s=setTimeout(()=>t(),xt)}},[t]);return p.useEffect(()=>{if(!(typeof window>"u"))return window.addEventListener("resize",n),()=>window.removeEventListener("resize",n)},[n]),{isMdOrSmaller:o}},_e=({children:e,onClick:t})=>{const{back:o}=fe(),{negative:r}=ge(),{isMdOrSmaller:n}=ve(),s=!r,i=()=>{t?.(),o()};return a.jsx(oe.Button,{size:"sm",variant:"secondary",onClick:i,negative:s,fullWidth:n,children:e})};_e.displayName="PopoverBack";var Pt="Arrow",Ee=g.forwardRef((e,t)=>{const{children:o,width:r=10,height:n=5,...s}=e;return a.jsx(O.Primitive.svg,{...s,ref:t,width:r,height:n,viewBox:"0 0 30 10",preserveAspectRatio:"none",children:e.asChild?o:a.jsx("polygon",{points:"0,0 30,0 15,10"})})});Ee.displayName=Pt;var Ct=Ee,me="Popper",[Ne,Fe]=K.createContextScope(me),[St,ke]=Ne(me),Te=e=>{const{__scopePopper:t,children:o}=e,[r,n]=g.useState(null);return a.jsx(St,{scope:t,anchor:r,onAnchorChange:n,children:o})};Te.displayName=me;var Me="PopperAnchor",De=g.forwardRef((e,t)=>{const{__scopePopper:o,virtualRef:r,...n}=e,s=ke(Me,o),i=g.useRef(null),l=re.useComposedRefs(t,i),u=g.useRef(null);return g.useEffect(()=>{const d=u.current;u.current=r?.current||i.current,d!==u.current&&s.onAnchorChange(u.current)}),r?null:a.jsx(O.Primitive.div,{...n,ref:l})});De.displayName=Me;var we="PopperContent",[bt,yt]=Ne(we),Ie=g.forwardRef((e,t)=>{const{__scopePopper:o,side:r="bottom",sideOffset:n=0,align:s="center",alignOffset:i=0,arrowPadding:l=0,avoidCollisions:u=!0,collisionBoundary:d=[],collisionPadding:v=0,sticky:f="partial",hideWhenDetached:h=!1,updatePositionStrategy:P="optimized",onPlaced:m,...S}=e,_=ke(we,o),[y,E]=g.useState(null),A=re.useComposedRefs(t,W=>E(W)),[w,j]=g.useState(null),R=ht.useSize(w),ie=R?.width??0,V=R?.height??0,Z=r+(s!=="center"?"-"+s:""),Q=typeof v=="number"?v:{top:0,right:0,bottom:0,left:0,...v},L=Array.isArray(d)?d:[d],ae=L.length>0,$={padding:Q,boundary:L.filter(Ot),altBoundary:ae},{refs:ce,floatingStyles:J,placement:le,isPositioned:H,middlewareData:c}=k.useFloating({strategy:"fixed",placement:Z,whileElementsMounted:(...W)=>k.autoUpdate(...W,{animationFrame:P==="always"}),elements:{reference:_.anchor},middleware:[k.offset({mainAxis:n+V,alignmentAxis:i}),u&&k.shift({mainAxis:!0,crossAxis:!1,limiter:f==="partial"?k.limitShift():void 0,...$}),u&&k.flip({...$}),k.size({...$,apply:({elements:W,rects:be,availableWidth:ct,availableHeight:lt})=>{const{width:pt,height:ut}=be.reference,te=W.floating.style;te.setProperty("--radix-popper-available-width",`${ct}px`),te.setProperty("--radix-popper-available-height",`${lt}px`),te.setProperty("--radix-popper-anchor-width",`${pt}px`),te.setProperty("--radix-popper-anchor-height",`${ut}px`)}}),w&&k.arrow({element:w,padding:l}),At({arrowWidth:ie,arrowHeight:V}),h&&k.hide({strategy:"referenceHidden",...$})]}),[x,C]=Be(le),N=K.useCallbackRef(m);K.useLayoutEffect2(()=>{H&&N?.()},[H,N]);const D=c.arrow?.x,b=c.arrow?.y,F=c.arrow?.centerOffset!==0,[I,ee]=g.useState();return K.useLayoutEffect2(()=>{y&&ee(window.getComputedStyle(y).zIndex)},[y]),a.jsx("div",{ref:ce.setFloating,"data-radix-popper-content-wrapper":"",style:{...J,transform:H?J.transform:"translate(0, -200%)",minWidth:"max-content",zIndex:I,"--radix-popper-transform-origin":[c.transformOrigin?.x,c.transformOrigin?.y].join(" "),...c.hide?.referenceHidden&&{visibility:"hidden",pointerEvents:"none"}},dir:e.dir,children:a.jsx(bt,{scope:o,placedSide:x,onArrowChange:j,arrowX:D,arrowY:b,shouldHideArrow:F,children:a.jsx(O.Primitive.div,{"data-side":x,"data-align":C,...S,ref:A,style:{...S.style,animation:H?void 0:"none"}})})})});Ie.displayName=we;var $e="PopperArrow",jt={top:"bottom",right:"left",bottom:"top",left:"right"},He=g.forwardRef(function(t,o){const{__scopePopper:r,...n}=t,s=yt($e,r),i=jt[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:o,style:{...n.style,display:"block"}})})});He.displayName=$e;function Ot(e){return e!==null}var At=e=>({name:"transformOrigin",options:e,fn(t){const{placement:o,rects:r,middlewareData:n}=t,i=n.arrow?.centerOffset!==0,l=i?0:e.arrowWidth,u=i?0:e.arrowHeight,[d,v]=Be(o),f={start:"0%",center:"50%",end:"100%"}[v],h=(n.arrow?.x??0)+l/2,P=(n.arrow?.y??0)+u/2;let m="",S="";return d==="bottom"?(m=i?f:`${h}px`,S=`${-u}px`):d==="top"?(m=i?f:`${h}px`,S=`${r.floating.height+u}px`):d==="right"?(m=`${-u}px`,S=i?f:`${P}px`):d==="left"&&(m=`${r.floating.width+u}px`,S=i?f:`${P}px`),{data:{x:m,y:S}}}});function Be(e){const[t,o="center"]=e.split("-");return[t,o]}var Rt=Te,qe=De,Et=Ie,Nt=He,se="Popover",[ze]=K.createContextScope(se,[Fe]),U=Fe(),[Ft,M]=ze(se),Le=e=>{const{__scopePopover:t,children:o,open:r,defaultOpen:n,onOpenChange:s,modal:i=!1}=e,l=U(t),u=g.useRef(null),[d,v]=g.useState(!1),[f,h]=O.useControllableState({prop:r,defaultProp:n??!1,onChange:s,caller:se});return a.jsx(Rt,{...l,children:a.jsx(Ft,{scope:t,contentId:ft.useId(),triggerRef:u,open:f,onOpenChange:h,onOpenToggle:g.useCallback(()=>h(P=>!P),[h]),hasCustomAnchor:d,onCustomAnchorAdd:g.useCallback(()=>v(!0),[]),onCustomAnchorRemove:g.useCallback(()=>v(!1),[]),modal:i,children:o})})};Le.displayName=se;var We="PopoverAnchor",kt=g.forwardRef((e,t)=>{const{__scopePopover:o,...r}=e,n=M(We,o),s=U(o),{onCustomAnchorAdd:i,onCustomAnchorRemove:l}=n;return g.useEffect(()=>(i(),()=>l()),[i,l]),a.jsx(qe,{...s,...r,ref:t})});kt.displayName=We;var Ke="PopoverTrigger",Ye=g.forwardRef((e,t)=>{const{__scopePopover:o,...r}=e,n=M(Ke,o),s=U(o),i=re.useComposedRefs(t,n.triggerRef),l=a.jsx(O.Primitive.button,{type:"button","aria-haspopup":"dialog","aria-expanded":n.open,"aria-controls":n.contentId,"data-state":Je(n.open),...r,ref:i,onClick:O.composeEventHandlers(e.onClick,n.onOpenToggle)});return n.hasCustomAnchor?l:a.jsx(qe,{asChild:!0,...s,children:l})});Ye.displayName=Ke;var xe="PopoverPortal",[Tt,Mt]=ze(xe,{forceMount:void 0}),Xe=e=>{const{__scopePopover:t,forceMount:o,children:r,container:n}=e,s=M(xe,t);return a.jsx(Tt,{scope:t,forceMount:o,children:a.jsx(Oe.Presence,{present:o||s.open,children:a.jsx(q.Portal,{asChild:!0,container:n,children:r})})})};Xe.displayName=xe;var z="PopoverContent",Ue=g.forwardRef((e,t)=>{const o=Mt(z,e.__scopePopover),{forceMount:r=o.forceMount,...n}=e,s=M(z,e.__scopePopover);return a.jsx(Oe.Presence,{present:r||s.open,children:s.modal?a.jsx(It,{...n,ref:t}):a.jsx($t,{...n,ref:t})})});Ue.displayName=z;var Dt=O.createSlot("PopoverContent.RemoveScroll"),It=g.forwardRef((e,t)=>{const o=M(z,e.__scopePopover),r=g.useRef(null),n=re.useComposedRefs(t,r),s=g.useRef(!1);return g.useEffect(()=>{const i=r.current;if(i)return q.hideOthers(i)},[]),a.jsx(q.ReactRemoveScroll,{as:Dt,allowPinchZoom:!0,children:a.jsx(Ge,{...e,ref:n,trapFocus:o.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:O.composeEventHandlers(e.onCloseAutoFocus,i=>{i.preventDefault(),s.current||o.triggerRef.current?.focus()}),onPointerDownOutside:O.composeEventHandlers(e.onPointerDownOutside,i=>{const l=i.detail.originalEvent,u=l.button===0&&l.ctrlKey===!0,d=l.button===2||u;s.current=d},{checkForDefaultPrevented:!1}),onFocusOutside:O.composeEventHandlers(e.onFocusOutside,i=>i.preventDefault(),{checkForDefaultPrevented:!1})})})}),$t=g.forwardRef((e,t)=>{const o=M(z,e.__scopePopover),r=g.useRef(!1),n=g.useRef(!1);return a.jsx(Ge,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:s=>{e.onCloseAutoFocus?.(s),s.defaultPrevented||(r.current||o.triggerRef.current?.focus(),s.preventDefault()),r.current=!1,n.current=!1},onInteractOutside:s=>{e.onInteractOutside?.(s),s.defaultPrevented||(r.current=!0,s.detail.originalEvent.type==="pointerdown"&&(n.current=!0));const i=s.target;o.triggerRef.current?.contains(i)&&s.preventDefault(),s.detail.originalEvent.type==="focusin"&&n.current&&s.preventDefault()}})}),Ge=g.forwardRef((e,t)=>{const{__scopePopover:o,trapFocus:r,onOpenAutoFocus:n,onCloseAutoFocus:s,disableOutsidePointerEvents:i,onEscapeKeyDown:l,onPointerDownOutside:u,onFocusOutside:d,onInteractOutside:v,...f}=e,h=M(z,o),P=U(o);return q.useFocusGuards(),a.jsx(q.FocusScope,{asChild:!0,loop:!0,trapped:r,onMountAutoFocus:n,onUnmountAutoFocus:s,children:a.jsx(q.DismissableLayer,{asChild:!0,disableOutsidePointerEvents:i,onInteractOutside:v,onEscapeKeyDown:l,onPointerDownOutside:u,onFocusOutside:d,onDismiss:()=>h.onOpenChange(!1),children:a.jsx(Et,{"data-state":Je(h.open),role:"dialog",id:h.contentId,...P,...f,ref:t,style:{...f.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)"}})})})}),Ve="PopoverClose",Ze=g.forwardRef((e,t)=>{const{__scopePopover:o,...r}=e,n=M(Ve,o);return a.jsx(O.Primitive.button,{type:"button",...r,ref:t,onClick:O.composeEventHandlers(e.onClick,()=>n.onOpenChange(!1))})});Ze.displayName=Ve;var Ht="PopoverArrow",Qe=g.forwardRef((e,t)=>{const{__scopePopover:o,...r}=e,n=U(o);return a.jsx(Nt,{...n,...r,ref:t})});Qe.displayName=Ht;function Je(e){return e?"open":"closed"}var et=Le,Bt=Ye,qt=Xe,zt=Ue,tt=Ze,Lt=Qe;const Pe=({children:e,asChild:t,onClick:o,variant:r="primary",dismiss:n=!0,fullWidth:s})=>{const i=X(),{isMdOrSmaller:l}=ve(),{negative:u}=ge(),d=!u,v=()=>{o?.(),n&&i?.dismiss()},f=s??l,h=t?e:a.jsx(oe.Button,{variant:r,size:"sm",fullWidth:f,negative:d,onClick:v,children:e});return n?a.jsx(tt,{asChild:!0,children:h}):h};Pe.displayName="PopoverButton";const Wt="_highlightState1_1w9je_1",Kt="_fadeIn_1w9je_1",Yt="_slideFromTop_1w9je_1",Xt="_slideFromBottom_1w9je_1",Ut="_slideFromLeft_1w9je_1",Gt="_slideFromRight_1w9je_1",Vt="_fadeOut_1w9je_1",Zt="_slideToTop_1w9je_1",Qt="_slideToBottom_1w9je_1",Jt="_slideToLeft_1w9je_1",eo="_slideToRight_1w9je_1",G={"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:Wt,"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:Kt,slideFromTop:Yt,slideFromBottom:Xt,slideFromLeft:Ut,slideFromRight:Gt,fadeOut:Vt,slideToTop:Zt,slideToBottom:Qt,slideToLeft:Jt,slideToRight:eo,"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"},to=Y.c.bind(G),ot=()=>{const e=fe(),o=ne()?.walkthroughStep||e.currentStep,{totalSteps:r,separatorText:n,stepText:s}=e;return a.jsx(a.Fragment,{children:a.jsxs(Ae.Paragraph,{className:to("purpur-popover__steps"),role:"status","aria-live":"polite","aria-atomic":"true",children:[s," ",o," ",n," ",r]})})};ot.displayName="PopoverSteps";const je=Y.c.bind(G),Ce=({children:e,className:t})=>{const o=X(),r=ne(),n=o&&r&&r.walkthroughStep>0;return a.jsxs("div",{className:je("purpur-popover__footer",t),children:[n&&a.jsx(ot,{}),a.jsx("div",{className:je("purpur-popover__footer-button-group"),children:e})]})};Ce.displayName="PopoverFooter";const pe=Y.c.bind(G),rt=p.forwardRef(({title:e,icon:t},o)=>a.jsxs("div",{ref:o,className:pe("purpur-popover__header-content"),children:[t&&a.jsx("span",{className:pe("purpur-popover__icon"),children:t}),a.jsx(_t.Heading,{tag:"h2",variant:"title-100",className:pe("purpur-popover__title"),id:"popover-heading",children:e})]}));rt.displayName="PopoverHeader";const Se=({children:e,onClick:t})=>{const{next:o}=fe(),{negative:r}=ge(),{isMdOrSmaller:n}=ve(),s=!r,i=()=>{t?.(),o()};return a.jsx(oe.Button,{size:"sm",variant:"primary",onClick:i,negative:s,fullWidth:n,children:e})};Se.displayName="PopoverNext";const B=Y.c.bind(G),nt=p.forwardRef(({children:e,className:t,beakPosition:o="down",align:r="center",alignOffset:n=0,sideOffset:s=5,negative:i=!1,closeIconAriaLabel:l,title:u,icon:d,body:v,onAction:f,zIndex:h=210,container:P,...m},S)=>{const _=X(),y=ne(),E=p.useRef(null),A=p.useRef(!1),w=vt.useThemePortalContainer(),j=P===void 0?w:P??void 0,ie={up:"bottom",right:"left",down:"top",left:"right",none:"bottom"}[o],V=o!=="none",Z=c=>Array.from(c.querySelectorAll("button:not([disabled]), [href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex='-1'])")).filter(C=>!C.hasAttribute("aria-hidden")),Q=(c,x,C)=>{const N=Z(document.body),D=N.indexOf(x);if(D===-1)return;const b=C==="next"?1:-1;for(let F=D+b;F>=0&&F<N.length;F+=b){const I=N[F];if(!c.contains(I)){I.focus();return}}};let L=e;if(_&&!e){const c=y?.walkthroughStep||_.currentStep,x=c===1,C=c===_.totalSteps;L=a.jsxs(Ce,{children:[!x&&a.jsx(_e,{onClick:()=>f?.({type:"back",step:c}),children:_.backLabel}),C?a.jsx(Pe,{onClick:()=>f?.({type:"finish",step:c}),dismiss:!0,children:_.finishLabel}):a.jsx(Se,{onClick:()=>f?.({type:"next",step:c}),children:_.nextLabel})]})}const ae=c=>{c.preventDefault();const x=c.currentTarget,C=E.current?.querySelector("#popover-heading");setTimeout(()=>{if(_&&C){C.setAttribute("tabindex","-1"),C.focus();return}x.setAttribute("tabindex","-1"),x.focus()},0),m.onOpenAutoFocus?.(c)},$=c=>{if(c.key!=="Tab"){m.onKeyDown?.(c);return}const x=c.currentTarget,C=Z(x);if(C.length===0){m.onKeyDown?.(c);return}const N=C[0],D=C[C.length-1],b=document.activeElement,F=b===N,I=b===D,ee=b!==null&&x.contains(b)&&b.tabIndex===-1;if(!_){b!==null&&(c.shiftKey&&F?(c.preventDefault(),Q(x,b,"previous")):!c.shiftKey&&I&&(c.preventDefault(),Q(x,b,"next"))),m.onKeyDown?.(c);return}c.shiftKey&&(F||ee)?(c.preventDefault(),D.focus()):!c.shiftKey&&(I||ee)&&(c.preventDefault(),N.focus()),m.onKeyDown?.(c)},ce=c=>{_&&!A.current&&c.preventDefault(),A.current&&(A.current=!1),m.onCloseAutoFocus?.(c)},J=c=>{_&&(A.current=!0,c.preventDefault()),f?.({type:"dismiss",step:_?.currentStep}),_?.dismiss()},le=c=>{_&&(A.current=!0,c.preventDefault()),f?.({type:"dismiss",step:_?.currentStep}),_?.dismiss()},H=c=>{if(y?.disableClickOutside){c.preventDefault();return}if(_){const x=c.target;x.closest("[role='dialog']")||x.closest(".purpur-popover__trigger")||x.closest("button[aria-haspopup='dialog']")||(f?.({type:"dismiss",step:_.currentStep}),setTimeout(()=>{_.dismiss()},0))}};return a.jsx(qt,{container:j,children:a.jsxs(zt,{"data-testid":"popover-content",role:"dialog","aria-modal":"true","aria-labelledby":m["aria-label"]?void 0:"popover-heading",ref:S,side:ie,sideOffset:s,align:r,alignOffset:n,style:{"--popover-z-index":h},className:B("purpur-popover__content",{"purpur-popover__content--negative":i},t),onOpenAutoFocus:ae,onCloseAutoFocus:ce,onKeyDown:$,onEscapeKeyDown:le,onInteractOutside:H,...m,children:[a.jsxs(Re.Provider,{value:{negative:i},children:[a.jsxs("div",{className:B("purpur-popover__inner"),children:[a.jsx(rt,{ref:E,title:u,icon:d}),a.jsx(Ae.Paragraph,{className:B("purpur-popover__body"),children:v})]}),L,a.jsx(tt,{asChild:!0,onClick:J,children:a.jsx(oe.Button,{variant:i?"text":"tertiary-purple",size:"sm","aria-label":l,className:B("purpur-popover__close"),negative:!i,iconOnly:!0,children:a.jsx(gt.r,{size:"xs",className:B("purpur-popover__icon")})})})]}),V&&a.jsx(Lt,{className:B("purpur-popover__arrow"),"aria-hidden":"true",tabIndex:-1})]})})});nt.displayName="PopoverContent";const st=({children:e,open:t,defaultOpen:o=!1,onOpenChange:r,disableClickOutside:n,...s})=>{const[i,l]=p.useState(o),u=t!==void 0,d=u?t:i,v=f=>{u||l(f),r?.(f)};return a.jsx(et,{open:d,onOpenChange:v,...s,children:a.jsx(he.Provider,{value:{isOpen:d,walkthroughStep:0,disableClickOutside:n},children:e})})};st.displayName="PopoverStandalone";const oo=e=>{const t=p.useRef(null),o=p.useCallback(()=>{t.current&&(cancelAnimationFrame(t.current),t.current=null)},[]);return{scrollToElement:p.useCallback((n,s=600)=>{const i=window.matchMedia("(prefers-reduced-motion: reduce)").matches,l=n.getBoundingClientRect(),u=l.top+window.pageYOffset,d=l.height,v=window.innerHeight;let f=u-v/2+d/2;const h=document.documentElement.scrollHeight,P=Math.max(0,h-v);if(f=Math.max(0,Math.min(f,P)),i){window.scrollTo(0,f),e?.();return}const m=window.pageYOffset,S=f-m,_=performance.now(),y=E=>{const A=E-_,w=Math.min(A/s,1),j=w<.5?2*w*w:1-Math.pow(-2*w+2,2)/2,R=m+S*j;window.scrollTo(0,R),w<1?t.current=requestAnimationFrame(y):(t.current=null,e?.())};o(),t.current=requestAnimationFrame(y)},[e,o]),cancelScroll:o}};function ro(e){const t=p.useRef(null),o=ne(),r=X(),n=p.useRef(!1),{scrollToElement:s,cancelScroll:i}=oo(o?.onScrollComplete);return p.useEffect(()=>{typeof e=="function"?e(t.current):e&&(e.current=t.current)},[e]),p.useEffect(()=>{if(r&&o?.walkthroughStep!==void 0&&r.currentStep===o.walkthroughStep&&t.current&&!n.current){const u=t.current,d=u.getBoundingClientRect(),v=100;d.top>=-v&&d.bottom<=window.innerHeight+v&&d.left>=-v&&d.right<=window.innerWidth+v?o?.onScrollComplete?.():(o?.onScrollStart?.(),s(u)),n.current=!0}else r?.currentStep!==o?.walkthroughStep&&(n.current=!1,i())},[r?.currentStep,o?.walkthroughStep,r,s,i,o]),p.useEffect(()=>{t.current&&t.current.removeAttribute("aria-expanded")},[o?.isOpen]),p.useEffect(()=>i,[i]),{triggerRef:t,context:o}}const ue=Y.c.bind(G),it=p.forwardRef(({children:e,className:t,highlight:o=!0,negative:r=!1,...n},s)=>{const{triggerRef:i,context:l}=ro(s);return a.jsxs("div",{className:ue("purpur-popover__trigger",{"purpur-popover__trigger--highlight":l?.isOpen&&o},t),children:[l?.isOpen&&o&&a.jsxs(a.Fragment,{children:[a.jsx("div",{className:ue("purpur-popover__trigger-highlight","purpur-popover__trigger-highlight--state1",{"purpur-popover__trigger-highlight--negative":r}),"aria-hidden":"true"}),a.jsx("div",{className:ue("purpur-popover__trigger-highlight","purpur-popover__trigger-highlight--state2",{"purpur-popover__trigger-highlight--negative":r}),"aria-hidden":"true"})]}),a.jsx(Bt,{ref:i,asChild:!0,"aria-haspopup":"dialog",...n,children:e})]})});it.displayName="PopoverTrigger";function no(e){const t=X(),[o,r]=p.useState(!1),[n,s]=p.useState(!1),i=p.useRef(null),l=p.useRef(0);p.useEffect(()=>t?(t.registerStep(e),()=>t.unregisterStep(e)):()=>{},[t,e]);const u=t?.currentStep===e,d=p.useCallback(()=>{s(!0)},[]),v=p.useCallback(()=>{if(s(!1),u){const h=t.openDelay;i.current=window.setTimeout(()=>{r(!0),l.current=Date.now()},h)}},[u,t]);p.useEffect(()=>{if(i.current&&(clearTimeout(i.current),i.current=null),u){if(!n){const h=t.openDelay;i.current=window.setTimeout(()=>{r(!0),l.current=Date.now()},h)}}else r(!1),s(!1),l.current=0;return()=>{i.current&&(clearTimeout(i.current),i.current=null)}},[u,n,t]);const f=p.useCallback((h,P)=>{if(P?.(h),!h&&o&&t&&t.currentStep===e){if(Date.now()-l.current<10||i.current!==null)return;t.dismiss()}},[o,t,e]);return{actuallyOpen:o,onScrollStart:d,onScrollComplete:v,handleOpenChange:f}}const at=({children:e,step:t,onOpenChange:o,disableClickOutside:r=!0,...n})=>{const{actuallyOpen:s,onScrollStart:i,onScrollComplete:l,handleOpenChange:u}=no(t);return a.jsx(et,{modal:!0,open:s,onOpenChange:d=>u(d,o),...n,children:a.jsx(he.Provider,{value:{isOpen:s,walkthroughStep:t,onScrollStart:i,onScrollComplete:l,disableClickOutside:r},children:e})})};at.displayName="PopoverWalkthrough";const T=e=>{const{multistep:t=!1,disableClickOutside:o,...r}=e;return t?a.jsx(at,{...r,disableClickOutside:o??!0}):a.jsx(st,{...r,disableClickOutside:o})};T.Back=_e;T.Button=Pe;T.Content=nt;T.Flow=wt;T.Footer=Ce;T.Next=Se;T.Trigger=it;T.displayName="Popover";exports.Popover=T;
2
- //# sourceMappingURL=popover-CY75TnbA.js.map
1
+ "use strict";const a=require("react/jsx-runtime"),oe=require("./button-DZgtrGqN.js"),p=require("react"),dt=require("./variables-Buqm4JZc.js"),O=require("./index-DlMXYAr3.js"),re=require("./index-_XxjJPRD.js"),K=require("./index-kcwFA4Dv.js"),q=require("./index-DA01QPpC.js"),ft=require("./index-BtWPC8xc.js"),k=require("./floating-ui.react-dom-Cc_YSprQ.js"),ht=require("./index-DOFLOnao.js"),Oe=require("./index-CleLBinl.js"),gt=require("./close.es-VL3lKi1O.js"),Ae=require("./paragraph-B8HFdNne.js");require("./ThemeProvider-BJGm3zai.js");const vt=require("./useThemePortalContainer-CUcqV327.js"),Y=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 o in e)if(o!=="default"){const r=Object.getOwnPropertyDescriptor(e,o);Object.defineProperty(t,o,r.get?r:{enumerable:!0,get:()=>e[o]})}}return t.default=e,Object.freeze(t)}const g=mt(p),de=p.createContext(null),fe=()=>{const e=p.useContext(de);if(!e)throw new Error("usePopoverFlow must be used within a PopoverFlow provider");return e},X=()=>p.useContext(de),wt=({children:e,initialStep:t=1,onComplete:o,onDismiss:r,separatorText:n,stepText:s,backLabel:i,nextLabel:l,finishLabel:u,openDelay:d=0})=>{const[v,f]=p.useState(t),[h,P]=p.useState(new Set),m=p.useCallback(w=>{P(j=>{const R=new Set(j);return R.add(w),R})},[]),S=p.useCallback(w=>{P(j=>{const R=new Set(j);return R.delete(w),R})},[]),_=p.useCallback(()=>{f(w=>{const j=w+1;return j>h.size?(o?.(),w):j})},[h.size,o]),y=p.useCallback(()=>{f(w=>Math.max(1,w-1))},[]),E=p.useCallback(()=>{f(0),r?.()},[r]),A=p.useMemo(()=>({currentStep:v,totalSteps:h.size,next:_,back:y,dismiss:E,registerStep:m,unregisterStep:S,separatorText:n,stepText:s,backLabel:i,nextLabel:l,finishLabel:u,openDelay:d}),[v,h.size,_,y,E,m,S,n,s,i,l,u,d]);return a.jsx(de.Provider,{value:A,children:e})},he=p.createContext(null),ne=()=>p.useContext(he),Re=p.createContext({negative:!1}),ge=()=>p.useContext(Re),xt=150,ye={MAX_MD:`(max-width: ${dt.purpurBreakpointMd})`},ve=()=>{const e=window.matchMedia(ye.MAX_MD);function t(){r(e.matches)}const[o,r]=p.useState(()=>typeof window>"u"?!1:window.matchMedia(ye.MAX_MD).matches),n=p.useCallback(()=>{let s;return()=>{clearTimeout(s),s=setTimeout(()=>t(),xt)}},[t]);return p.useEffect(()=>{if(!(typeof window>"u"))return window.addEventListener("resize",n),()=>window.removeEventListener("resize",n)},[n]),{isMdOrSmaller:o}},_e=({children:e,onClick:t})=>{const{back:o}=fe(),{negative:r}=ge(),{isMdOrSmaller:n}=ve(),s=!r,i=()=>{t?.(),o()};return a.jsx(oe.Button,{size:"sm",variant:"secondary",onClick:i,negative:s,fullWidth:n,children:e})};_e.displayName="PopoverBack";var Pt="Arrow",Ee=g.forwardRef((e,t)=>{const{children:o,width:r=10,height:n=5,...s}=e;return a.jsx(O.Primitive.svg,{...s,ref:t,width:r,height:n,viewBox:"0 0 30 10",preserveAspectRatio:"none",children:e.asChild?o:a.jsx("polygon",{points:"0,0 30,0 15,10"})})});Ee.displayName=Pt;var Ct=Ee,me="Popper",[Ne,Fe]=K.createContextScope(me),[St,ke]=Ne(me),Te=e=>{const{__scopePopper:t,children:o}=e,[r,n]=g.useState(null);return a.jsx(St,{scope:t,anchor:r,onAnchorChange:n,children:o})};Te.displayName=me;var Me="PopperAnchor",De=g.forwardRef((e,t)=>{const{__scopePopper:o,virtualRef:r,...n}=e,s=ke(Me,o),i=g.useRef(null),l=re.useComposedRefs(t,i),u=g.useRef(null);return g.useEffect(()=>{const d=u.current;u.current=r?.current||i.current,d!==u.current&&s.onAnchorChange(u.current)}),r?null:a.jsx(O.Primitive.div,{...n,ref:l})});De.displayName=Me;var we="PopperContent",[bt,yt]=Ne(we),Ie=g.forwardRef((e,t)=>{const{__scopePopper:o,side:r="bottom",sideOffset:n=0,align:s="center",alignOffset:i=0,arrowPadding:l=0,avoidCollisions:u=!0,collisionBoundary:d=[],collisionPadding:v=0,sticky:f="partial",hideWhenDetached:h=!1,updatePositionStrategy:P="optimized",onPlaced:m,...S}=e,_=ke(we,o),[y,E]=g.useState(null),A=re.useComposedRefs(t,W=>E(W)),[w,j]=g.useState(null),R=ht.useSize(w),ie=R?.width??0,V=R?.height??0,Z=r+(s!=="center"?"-"+s:""),Q=typeof v=="number"?v:{top:0,right:0,bottom:0,left:0,...v},L=Array.isArray(d)?d:[d],ae=L.length>0,$={padding:Q,boundary:L.filter(Ot),altBoundary:ae},{refs:ce,floatingStyles:J,placement:le,isPositioned:H,middlewareData:c}=k.useFloating({strategy:"fixed",placement:Z,whileElementsMounted:(...W)=>k.autoUpdate(...W,{animationFrame:P==="always"}),elements:{reference:_.anchor},middleware:[k.offset({mainAxis:n+V,alignmentAxis:i}),u&&k.shift({mainAxis:!0,crossAxis:!1,limiter:f==="partial"?k.limitShift():void 0,...$}),u&&k.flip({...$}),k.size({...$,apply:({elements:W,rects:be,availableWidth:ct,availableHeight:lt})=>{const{width:pt,height:ut}=be.reference,te=W.floating.style;te.setProperty("--radix-popper-available-width",`${ct}px`),te.setProperty("--radix-popper-available-height",`${lt}px`),te.setProperty("--radix-popper-anchor-width",`${pt}px`),te.setProperty("--radix-popper-anchor-height",`${ut}px`)}}),w&&k.arrow({element:w,padding:l}),At({arrowWidth:ie,arrowHeight:V}),h&&k.hide({strategy:"referenceHidden",...$})]}),[x,C]=Be(le),N=K.useCallbackRef(m);K.useLayoutEffect2(()=>{H&&N?.()},[H,N]);const D=c.arrow?.x,b=c.arrow?.y,F=c.arrow?.centerOffset!==0,[I,ee]=g.useState();return K.useLayoutEffect2(()=>{y&&ee(window.getComputedStyle(y).zIndex)},[y]),a.jsx("div",{ref:ce.setFloating,"data-radix-popper-content-wrapper":"",style:{...J,transform:H?J.transform:"translate(0, -200%)",minWidth:"max-content",zIndex:I,"--radix-popper-transform-origin":[c.transformOrigin?.x,c.transformOrigin?.y].join(" "),...c.hide?.referenceHidden&&{visibility:"hidden",pointerEvents:"none"}},dir:e.dir,children:a.jsx(bt,{scope:o,placedSide:x,onArrowChange:j,arrowX:D,arrowY:b,shouldHideArrow:F,children:a.jsx(O.Primitive.div,{"data-side":x,"data-align":C,...S,ref:A,style:{...S.style,animation:H?void 0:"none"}})})})});Ie.displayName=we;var $e="PopperArrow",jt={top:"bottom",right:"left",bottom:"top",left:"right"},He=g.forwardRef(function(t,o){const{__scopePopper:r,...n}=t,s=yt($e,r),i=jt[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:o,style:{...n.style,display:"block"}})})});He.displayName=$e;function Ot(e){return e!==null}var At=e=>({name:"transformOrigin",options:e,fn(t){const{placement:o,rects:r,middlewareData:n}=t,i=n.arrow?.centerOffset!==0,l=i?0:e.arrowWidth,u=i?0:e.arrowHeight,[d,v]=Be(o),f={start:"0%",center:"50%",end:"100%"}[v],h=(n.arrow?.x??0)+l/2,P=(n.arrow?.y??0)+u/2;let m="",S="";return d==="bottom"?(m=i?f:`${h}px`,S=`${-u}px`):d==="top"?(m=i?f:`${h}px`,S=`${r.floating.height+u}px`):d==="right"?(m=`${-u}px`,S=i?f:`${P}px`):d==="left"&&(m=`${r.floating.width+u}px`,S=i?f:`${P}px`),{data:{x:m,y:S}}}});function Be(e){const[t,o="center"]=e.split("-");return[t,o]}var Rt=Te,qe=De,Et=Ie,Nt=He,se="Popover",[ze]=K.createContextScope(se,[Fe]),U=Fe(),[Ft,M]=ze(se),Le=e=>{const{__scopePopover:t,children:o,open:r,defaultOpen:n,onOpenChange:s,modal:i=!1}=e,l=U(t),u=g.useRef(null),[d,v]=g.useState(!1),[f,h]=O.useControllableState({prop:r,defaultProp:n??!1,onChange:s,caller:se});return a.jsx(Rt,{...l,children:a.jsx(Ft,{scope:t,contentId:ft.useId(),triggerRef:u,open:f,onOpenChange:h,onOpenToggle:g.useCallback(()=>h(P=>!P),[h]),hasCustomAnchor:d,onCustomAnchorAdd:g.useCallback(()=>v(!0),[]),onCustomAnchorRemove:g.useCallback(()=>v(!1),[]),modal:i,children:o})})};Le.displayName=se;var We="PopoverAnchor",kt=g.forwardRef((e,t)=>{const{__scopePopover:o,...r}=e,n=M(We,o),s=U(o),{onCustomAnchorAdd:i,onCustomAnchorRemove:l}=n;return g.useEffect(()=>(i(),()=>l()),[i,l]),a.jsx(qe,{...s,...r,ref:t})});kt.displayName=We;var Ke="PopoverTrigger",Ye=g.forwardRef((e,t)=>{const{__scopePopover:o,...r}=e,n=M(Ke,o),s=U(o),i=re.useComposedRefs(t,n.triggerRef),l=a.jsx(O.Primitive.button,{type:"button","aria-haspopup":"dialog","aria-expanded":n.open,"aria-controls":n.contentId,"data-state":Je(n.open),...r,ref:i,onClick:O.composeEventHandlers(e.onClick,n.onOpenToggle)});return n.hasCustomAnchor?l:a.jsx(qe,{asChild:!0,...s,children:l})});Ye.displayName=Ke;var xe="PopoverPortal",[Tt,Mt]=ze(xe,{forceMount:void 0}),Xe=e=>{const{__scopePopover:t,forceMount:o,children:r,container:n}=e,s=M(xe,t);return a.jsx(Tt,{scope:t,forceMount:o,children:a.jsx(Oe.Presence,{present:o||s.open,children:a.jsx(q.Portal,{asChild:!0,container:n,children:r})})})};Xe.displayName=xe;var z="PopoverContent",Ue=g.forwardRef((e,t)=>{const o=Mt(z,e.__scopePopover),{forceMount:r=o.forceMount,...n}=e,s=M(z,e.__scopePopover);return a.jsx(Oe.Presence,{present:r||s.open,children:s.modal?a.jsx(It,{...n,ref:t}):a.jsx($t,{...n,ref:t})})});Ue.displayName=z;var Dt=O.createSlot("PopoverContent.RemoveScroll"),It=g.forwardRef((e,t)=>{const o=M(z,e.__scopePopover),r=g.useRef(null),n=re.useComposedRefs(t,r),s=g.useRef(!1);return g.useEffect(()=>{const i=r.current;if(i)return q.hideOthers(i)},[]),a.jsx(q.ReactRemoveScroll,{as:Dt,allowPinchZoom:!0,children:a.jsx(Ge,{...e,ref:n,trapFocus:o.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:O.composeEventHandlers(e.onCloseAutoFocus,i=>{i.preventDefault(),s.current||o.triggerRef.current?.focus()}),onPointerDownOutside:O.composeEventHandlers(e.onPointerDownOutside,i=>{const l=i.detail.originalEvent,u=l.button===0&&l.ctrlKey===!0,d=l.button===2||u;s.current=d},{checkForDefaultPrevented:!1}),onFocusOutside:O.composeEventHandlers(e.onFocusOutside,i=>i.preventDefault(),{checkForDefaultPrevented:!1})})})}),$t=g.forwardRef((e,t)=>{const o=M(z,e.__scopePopover),r=g.useRef(!1),n=g.useRef(!1);return a.jsx(Ge,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:s=>{e.onCloseAutoFocus?.(s),s.defaultPrevented||(r.current||o.triggerRef.current?.focus(),s.preventDefault()),r.current=!1,n.current=!1},onInteractOutside:s=>{e.onInteractOutside?.(s),s.defaultPrevented||(r.current=!0,s.detail.originalEvent.type==="pointerdown"&&(n.current=!0));const i=s.target;o.triggerRef.current?.contains(i)&&s.preventDefault(),s.detail.originalEvent.type==="focusin"&&n.current&&s.preventDefault()}})}),Ge=g.forwardRef((e,t)=>{const{__scopePopover:o,trapFocus:r,onOpenAutoFocus:n,onCloseAutoFocus:s,disableOutsidePointerEvents:i,onEscapeKeyDown:l,onPointerDownOutside:u,onFocusOutside:d,onInteractOutside:v,...f}=e,h=M(z,o),P=U(o);return q.useFocusGuards(),a.jsx(q.FocusScope,{asChild:!0,loop:!0,trapped:r,onMountAutoFocus:n,onUnmountAutoFocus:s,children:a.jsx(q.DismissableLayer,{asChild:!0,disableOutsidePointerEvents:i,onInteractOutside:v,onEscapeKeyDown:l,onPointerDownOutside:u,onFocusOutside:d,onDismiss:()=>h.onOpenChange(!1),children:a.jsx(Et,{"data-state":Je(h.open),role:"dialog",id:h.contentId,...P,...f,ref:t,style:{...f.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)"}})})})}),Ve="PopoverClose",Ze=g.forwardRef((e,t)=>{const{__scopePopover:o,...r}=e,n=M(Ve,o);return a.jsx(O.Primitive.button,{type:"button",...r,ref:t,onClick:O.composeEventHandlers(e.onClick,()=>n.onOpenChange(!1))})});Ze.displayName=Ve;var Ht="PopoverArrow",Qe=g.forwardRef((e,t)=>{const{__scopePopover:o,...r}=e,n=U(o);return a.jsx(Nt,{...n,...r,ref:t})});Qe.displayName=Ht;function Je(e){return e?"open":"closed"}var et=Le,Bt=Ye,qt=Xe,zt=Ue,tt=Ze,Lt=Qe;const Pe=({children:e,asChild:t,onClick:o,variant:r="primary",dismiss:n=!0,fullWidth:s})=>{const i=X(),{isMdOrSmaller:l}=ve(),{negative:u}=ge(),d=!u,v=()=>{o?.(),n&&i?.dismiss()},f=s??l,h=t?e:a.jsx(oe.Button,{variant:r,size:"sm",fullWidth:f,negative:d,onClick:v,children:e});return n?a.jsx(tt,{asChild:!0,children:h}):h};Pe.displayName="PopoverButton";const Wt="_highlightState1_1w9je_1",Kt="_fadeIn_1w9je_1",Yt="_slideFromTop_1w9je_1",Xt="_slideFromBottom_1w9je_1",Ut="_slideFromLeft_1w9je_1",Gt="_slideFromRight_1w9je_1",Vt="_fadeOut_1w9je_1",Zt="_slideToTop_1w9je_1",Qt="_slideToBottom_1w9je_1",Jt="_slideToLeft_1w9je_1",eo="_slideToRight_1w9je_1",G={"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:Wt,"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:Kt,slideFromTop:Yt,slideFromBottom:Xt,slideFromLeft:Ut,slideFromRight:Gt,fadeOut:Vt,slideToTop:Zt,slideToBottom:Qt,slideToLeft:Jt,slideToRight:eo,"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"},to=Y.c.bind(G),ot=()=>{const e=fe(),o=ne()?.walkthroughStep||e.currentStep,{totalSteps:r,separatorText:n,stepText:s}=e;return a.jsx(a.Fragment,{children:a.jsxs(Ae.Paragraph,{className:to("purpur-popover__steps"),role:"status","aria-live":"polite","aria-atomic":"true",children:[s," ",o," ",n," ",r]})})};ot.displayName="PopoverSteps";const je=Y.c.bind(G),Ce=({children:e,className:t})=>{const o=X(),r=ne(),n=o&&r&&r.walkthroughStep>0;return a.jsxs("div",{className:je("purpur-popover__footer",t),children:[n&&a.jsx(ot,{}),a.jsx("div",{className:je("purpur-popover__footer-button-group"),children:e})]})};Ce.displayName="PopoverFooter";const pe=Y.c.bind(G),rt=p.forwardRef(({title:e,icon:t},o)=>a.jsxs("div",{ref:o,className:pe("purpur-popover__header-content"),children:[t&&a.jsx("span",{className:pe("purpur-popover__icon"),children:t}),a.jsx(_t.Heading,{tag:"h2",variant:"title-100",className:pe("purpur-popover__title"),id:"popover-heading",children:e})]}));rt.displayName="PopoverHeader";const Se=({children:e,onClick:t})=>{const{next:o}=fe(),{negative:r}=ge(),{isMdOrSmaller:n}=ve(),s=!r,i=()=>{t?.(),o()};return a.jsx(oe.Button,{size:"sm",variant:"primary",onClick:i,negative:s,fullWidth:n,children:e})};Se.displayName="PopoverNext";const B=Y.c.bind(G),nt=p.forwardRef(({children:e,className:t,beakPosition:o="down",align:r="center",alignOffset:n=0,sideOffset:s=5,negative:i=!1,closeIconAriaLabel:l,title:u,icon:d,body:v,onAction:f,zIndex:h=210,container:P,...m},S)=>{const _=X(),y=ne(),E=p.useRef(null),A=p.useRef(!1),w=vt.useThemePortalContainer(),j=P===void 0?w:P??void 0,ie={up:"bottom",right:"left",down:"top",left:"right",none:"bottom"}[o],V=o!=="none",Z=c=>Array.from(c.querySelectorAll("button:not([disabled]), [href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex='-1'])")).filter(C=>!C.hasAttribute("aria-hidden")),Q=(c,x,C)=>{const N=Z(document.body),D=N.indexOf(x);if(D===-1)return;const b=C==="next"?1:-1;for(let F=D+b;F>=0&&F<N.length;F+=b){const I=N[F];if(!c.contains(I)){I.focus();return}}};let L=e;if(_&&!e){const c=y?.walkthroughStep||_.currentStep,x=c===1,C=c===_.totalSteps;L=a.jsxs(Ce,{children:[!x&&a.jsx(_e,{onClick:()=>f?.({type:"back",step:c}),children:_.backLabel}),C?a.jsx(Pe,{onClick:()=>f?.({type:"finish",step:c}),dismiss:!0,children:_.finishLabel}):a.jsx(Se,{onClick:()=>f?.({type:"next",step:c}),children:_.nextLabel})]})}const ae=c=>{c.preventDefault();const x=c.currentTarget,C=E.current?.querySelector("#popover-heading");setTimeout(()=>{if(_&&C){C.setAttribute("tabindex","-1"),C.focus();return}x.setAttribute("tabindex","-1"),x.focus()},0),m.onOpenAutoFocus?.(c)},$=c=>{if(c.key!=="Tab"){m.onKeyDown?.(c);return}const x=c.currentTarget,C=Z(x);if(C.length===0){m.onKeyDown?.(c);return}const N=C[0],D=C[C.length-1],b=document.activeElement,F=b===N,I=b===D,ee=b!==null&&x.contains(b)&&b.tabIndex===-1;if(!_){b!==null&&(c.shiftKey&&F?(c.preventDefault(),Q(x,b,"previous")):!c.shiftKey&&I&&(c.preventDefault(),Q(x,b,"next"))),m.onKeyDown?.(c);return}c.shiftKey&&(F||ee)?(c.preventDefault(),D.focus()):!c.shiftKey&&(I||ee)&&(c.preventDefault(),N.focus()),m.onKeyDown?.(c)},ce=c=>{_&&!A.current&&c.preventDefault(),A.current&&(A.current=!1),m.onCloseAutoFocus?.(c)},J=c=>{_&&(A.current=!0,c.preventDefault()),f?.({type:"dismiss",step:_?.currentStep}),_?.dismiss()},le=c=>{_&&(A.current=!0,c.preventDefault()),f?.({type:"dismiss",step:_?.currentStep}),_?.dismiss()},H=c=>{if(y?.disableClickOutside){c.preventDefault();return}if(_){const x=c.target;x.closest("[role='dialog']")||x.closest(".purpur-popover__trigger")||x.closest("button[aria-haspopup='dialog']")||(f?.({type:"dismiss",step:_.currentStep}),setTimeout(()=>{_.dismiss()},0))}};return a.jsx(qt,{container:j,children:a.jsxs(zt,{"data-testid":"popover-content",role:"dialog","aria-modal":"true","aria-labelledby":m["aria-label"]?void 0:"popover-heading",ref:S,side:ie,sideOffset:s,align:r,alignOffset:n,style:{"--popover-z-index":h},className:B("purpur-popover__content",{"purpur-popover__content--negative":i},t),onOpenAutoFocus:ae,onCloseAutoFocus:ce,onKeyDown:$,onEscapeKeyDown:le,onInteractOutside:H,...m,children:[a.jsxs(Re.Provider,{value:{negative:i},children:[a.jsxs("div",{className:B("purpur-popover__inner"),children:[a.jsx(rt,{ref:E,title:u,icon:d}),a.jsx(Ae.Paragraph,{className:B("purpur-popover__body"),children:v})]}),L,a.jsx(tt,{asChild:!0,onClick:J,children:a.jsx(oe.Button,{variant:i?"text":"tertiary-purple",size:"sm","aria-label":l,className:B("purpur-popover__close"),negative:!i,iconOnly:!0,children:a.jsx(gt.r,{size:"xs",className:B("purpur-popover__icon")})})})]}),V&&a.jsx(Lt,{className:B("purpur-popover__arrow"),"aria-hidden":"true",tabIndex:-1})]})})});nt.displayName="PopoverContent";const st=({children:e,open:t,defaultOpen:o=!1,onOpenChange:r,disableClickOutside:n,...s})=>{const[i,l]=p.useState(o),u=t!==void 0,d=u?t:i,v=f=>{u||l(f),r?.(f)};return a.jsx(et,{open:d,onOpenChange:v,...s,children:a.jsx(he.Provider,{value:{isOpen:d,walkthroughStep:0,disableClickOutside:n},children:e})})};st.displayName="PopoverStandalone";const oo=e=>{const t=p.useRef(null),o=p.useCallback(()=>{t.current&&(cancelAnimationFrame(t.current),t.current=null)},[]);return{scrollToElement:p.useCallback((n,s=600)=>{const i=window.matchMedia("(prefers-reduced-motion: reduce)").matches,l=n.getBoundingClientRect(),u=l.top+window.pageYOffset,d=l.height,v=window.innerHeight;let f=u-v/2+d/2;const h=document.documentElement.scrollHeight,P=Math.max(0,h-v);if(f=Math.max(0,Math.min(f,P)),i){window.scrollTo(0,f),e?.();return}const m=window.pageYOffset,S=f-m,_=performance.now(),y=E=>{const A=E-_,w=Math.min(A/s,1),j=w<.5?2*w*w:1-Math.pow(-2*w+2,2)/2,R=m+S*j;window.scrollTo(0,R),w<1?t.current=requestAnimationFrame(y):(t.current=null,e?.())};o(),t.current=requestAnimationFrame(y)},[e,o]),cancelScroll:o}};function ro(e){const t=p.useRef(null),o=ne(),r=X(),n=p.useRef(!1),{scrollToElement:s,cancelScroll:i}=oo(o?.onScrollComplete);return p.useEffect(()=>{typeof e=="function"?e(t.current):e&&(e.current=t.current)},[e]),p.useEffect(()=>{if(r&&o?.walkthroughStep!==void 0&&r.currentStep===o.walkthroughStep&&t.current&&!n.current){const u=t.current,d=u.getBoundingClientRect(),v=100;d.top>=-v&&d.bottom<=window.innerHeight+v&&d.left>=-v&&d.right<=window.innerWidth+v?o?.onScrollComplete?.():(o?.onScrollStart?.(),s(u)),n.current=!0}else r?.currentStep!==o?.walkthroughStep&&(n.current=!1,i())},[r?.currentStep,o?.walkthroughStep,r,s,i,o]),p.useEffect(()=>{t.current&&t.current.removeAttribute("aria-expanded")},[o?.isOpen]),p.useEffect(()=>i,[i]),{triggerRef:t,context:o}}const ue=Y.c.bind(G),it=p.forwardRef(({children:e,className:t,highlight:o=!0,negative:r=!1,...n},s)=>{const{triggerRef:i,context:l}=ro(s);return a.jsxs("div",{className:ue("purpur-popover__trigger",{"purpur-popover__trigger--highlight":l?.isOpen&&o},t),children:[l?.isOpen&&o&&a.jsxs(a.Fragment,{children:[a.jsx("div",{className:ue("purpur-popover__trigger-highlight","purpur-popover__trigger-highlight--state1",{"purpur-popover__trigger-highlight--negative":r}),"aria-hidden":"true"}),a.jsx("div",{className:ue("purpur-popover__trigger-highlight","purpur-popover__trigger-highlight--state2",{"purpur-popover__trigger-highlight--negative":r}),"aria-hidden":"true"})]}),a.jsx(Bt,{ref:i,asChild:!0,"aria-haspopup":"dialog",...n,children:e})]})});it.displayName="PopoverTrigger";function no(e){const t=X(),[o,r]=p.useState(!1),[n,s]=p.useState(!1),i=p.useRef(null),l=p.useRef(0);p.useEffect(()=>t?(t.registerStep(e),()=>t.unregisterStep(e)):()=>{},[t,e]);const u=t?.currentStep===e,d=p.useCallback(()=>{s(!0)},[]),v=p.useCallback(()=>{if(s(!1),u){const h=t.openDelay;i.current=window.setTimeout(()=>{r(!0),l.current=Date.now()},h)}},[u,t]);p.useEffect(()=>{if(i.current&&(clearTimeout(i.current),i.current=null),u){if(!n){const h=t.openDelay;i.current=window.setTimeout(()=>{r(!0),l.current=Date.now()},h)}}else r(!1),s(!1),l.current=0;return()=>{i.current&&(clearTimeout(i.current),i.current=null)}},[u,n,t]);const f=p.useCallback((h,P)=>{if(P?.(h),!h&&o&&t&&t.currentStep===e){if(Date.now()-l.current<10||i.current!==null)return;t.dismiss()}},[o,t,e]);return{actuallyOpen:o,onScrollStart:d,onScrollComplete:v,handleOpenChange:f}}const at=({children:e,step:t,onOpenChange:o,disableClickOutside:r=!0,...n})=>{const{actuallyOpen:s,onScrollStart:i,onScrollComplete:l,handleOpenChange:u}=no(t);return a.jsx(et,{modal:!0,open:s,onOpenChange:d=>u(d,o),...n,children:a.jsx(he.Provider,{value:{isOpen:s,walkthroughStep:t,onScrollStart:i,onScrollComplete:l,disableClickOutside:r},children:e})})};at.displayName="PopoverWalkthrough";const T=e=>{const{multistep:t=!1,disableClickOutside:o,...r}=e;return t?a.jsx(at,{...r,disableClickOutside:o??!0}):a.jsx(st,{...r,disableClickOutside:o})};T.Back=_e;T.Button=Pe;T.Content=nt;T.Flow=wt;T.Footer=Ce;T.Next=Se;T.Trigger=it;T.displayName="Popover";exports.Popover=T;
2
+ //# sourceMappingURL=popover-4phnhJLj.js.map