@purpur/library 9.10.0 → 10.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (520) hide show
  1. package/CHANGELOG.json +124 -0
  2. package/CHANGELOG.md +53 -1
  3. package/dist/LICENSE.txt +270 -175
  4. package/dist/{RichText-BAVZadzi.js → RichText-B865Qkzj.js} +2 -2
  5. package/dist/{RichText-BAVZadzi.js.map → RichText-B865Qkzj.js.map} +1 -1
  6. package/dist/{RichText-D4vznH1B.mjs → RichText-CPkBwXNI.mjs} +3 -3
  7. package/dist/{RichText-D4vznH1B.mjs.map → RichText-CPkBwXNI.mjs.map} +1 -1
  8. package/dist/accordion-aEZas0k1.mjs +122 -0
  9. package/dist/accordion-aEZas0k1.mjs.map +1 -0
  10. package/dist/accordion-zwsF1oUj.js +2 -0
  11. package/dist/accordion-zwsF1oUj.js.map +1 -0
  12. package/dist/accordion.cjs.js +1 -1
  13. package/dist/accordion.es.js +1 -1
  14. package/dist/button-C5CYysw5.js +2 -0
  15. package/dist/button-C5CYysw5.js.map +1 -0
  16. package/dist/button-mHw_J7JU.mjs +106 -0
  17. package/dist/button-mHw_J7JU.mjs.map +1 -0
  18. package/dist/button.cjs.js +1 -1
  19. package/dist/button.es.js +1 -1
  20. package/dist/{calendar-Cru-p6gC.mjs → calendar-DTL_g0ue.mjs} +4 -14
  21. package/dist/{calendar-Cru-p6gC.mjs.map → calendar-DTL_g0ue.mjs.map} +1 -1
  22. package/dist/{calendar-DDR8CQYo.js → calendar-DVOrK53J.js} +2 -2
  23. package/dist/{calendar-DDR8CQYo.js.map → calendar-DVOrK53J.js.map} +1 -1
  24. package/dist/calendar.cjs.js +1 -1
  25. package/dist/calendar.es.js +1 -1
  26. package/dist/{card-t2ZkZ82G.mjs → card-C0yhMN5d.mjs} +3 -3
  27. package/dist/card-C0yhMN5d.mjs.map +1 -0
  28. package/dist/{card-pdsBEJif.js → card-CIlY38WI.js} +2 -2
  29. package/dist/card-CIlY38WI.js.map +1 -0
  30. package/dist/card.cjs.js +1 -1
  31. package/dist/card.es.js +1 -1
  32. package/dist/{carousel-BIKcwvYz.mjs → carousel-Dq9yzk_-.mjs} +2 -2
  33. package/dist/{carousel-BIKcwvYz.mjs.map → carousel-Dq9yzk_-.mjs.map} +1 -1
  34. package/dist/{carousel-DnSaLDZf.js → carousel-j-s6M1hu.js} +2 -2
  35. package/dist/{carousel-DnSaLDZf.js.map → carousel-j-s6M1hu.js.map} +1 -1
  36. package/dist/carousel.cjs.js +1 -1
  37. package/dist/carousel.es.js +1 -1
  38. package/dist/{chat-field-Wjvh2J6C.js → chat-field-CLAjIHlM.js} +2 -2
  39. package/dist/{chat-field-Wjvh2J6C.js.map → chat-field-CLAjIHlM.js.map} +1 -1
  40. package/dist/{chat-field-CVF4DooY.mjs → chat-field-nxFRXoQx.mjs} +2 -2
  41. package/dist/{chat-field-CVF4DooY.mjs.map → chat-field-nxFRXoQx.mjs.map} +1 -1
  42. package/dist/chat-field.cjs.js +1 -1
  43. package/dist/chat-field.es.js +1 -1
  44. package/dist/{chip-group-B775zvKD.js → chip-group-BLuG0MC6.js} +2 -2
  45. package/dist/{chip-group-B775zvKD.js.map → chip-group-BLuG0MC6.js.map} +1 -1
  46. package/dist/{chip-group-xuOe7nL3.mjs → chip-group-Bo4kJ8Vq.mjs} +2 -2
  47. package/dist/{chip-group-xuOe7nL3.mjs.map → chip-group-Bo4kJ8Vq.mjs.map} +1 -1
  48. package/dist/chip-group.cjs.js +1 -1
  49. package/dist/chip-group.es.js +1 -1
  50. package/dist/color-dot-BEE5rKco.js.map +1 -1
  51. package/dist/color-dot-Dz9yzVX3.mjs.map +1 -1
  52. package/dist/{comparison-table-Dtqxz8vL.js → comparison-table-CRWRijfG.js} +2 -2
  53. package/dist/{comparison-table-Dtqxz8vL.js.map → comparison-table-CRWRijfG.js.map} +1 -1
  54. package/dist/{comparison-table-D1evE0ri.mjs → comparison-table-DYaRaP9Z.mjs} +3 -3
  55. package/dist/{comparison-table-D1evE0ri.mjs.map → comparison-table-DYaRaP9Z.mjs.map} +1 -1
  56. package/dist/comparison-table.cjs.js +1 -1
  57. package/dist/comparison-table.es.js +1 -1
  58. package/dist/components/accordion/src/accordion-item.d.ts +3 -3
  59. package/dist/components/accordion/src/accordion-item.d.ts.map +1 -1
  60. package/dist/components/accordion/src/accordion.d.ts +3 -7
  61. package/dist/components/accordion/src/accordion.d.ts.map +1 -1
  62. package/dist/components/accordion/src/accordion.visual.fixtures.d.ts.map +1 -1
  63. package/dist/components/alert-badge/src/alert-badge.d.ts +1 -1
  64. package/dist/components/avatar/src/avatar.d.ts +1 -1
  65. package/dist/components/badge/src/badge.d.ts +1 -1
  66. package/dist/components/button/src/button.d.ts +7 -8
  67. package/dist/components/button/src/button.d.ts.map +1 -1
  68. package/dist/components/button/src/button.visual.fixtures.d.ts +1 -1
  69. package/dist/components/calendar/src/calendar.d.ts.map +1 -1
  70. package/dist/components/card/src/card-content-container.d.ts +1 -1
  71. package/dist/components/card/src/card-content.d.ts +1 -1
  72. package/dist/components/card/src/card-cta.d.ts +1 -1
  73. package/dist/components/card/src/card-heading.d.ts +4 -4
  74. package/dist/components/card/src/card-heading.d.ts.map +1 -1
  75. package/dist/components/card/src/card-media-layout.d.ts +1 -1
  76. package/dist/components/card/src/card-media.d.ts +1 -1
  77. package/dist/components/card/src/card-root.d.ts +1 -1
  78. package/dist/components/checkbox/src/checkbox.d.ts +1 -1
  79. package/dist/components/color-dot/src/color-dot.d.ts +2 -1
  80. package/dist/components/color-dot/src/color-dot.d.ts.map +1 -1
  81. package/dist/components/content-block/src/content-block-group.d.ts +1 -1
  82. package/dist/components/content-block/src/content-block.d.ts +3 -3
  83. package/dist/components/content-block/src/content-block.d.ts.map +1 -1
  84. package/dist/components/country-flag-icon/src/all-country-flag-assets.d.ts +0 -1
  85. package/dist/components/country-flag-icon/src/all-country-flag-assets.d.ts.map +1 -1
  86. package/dist/components/country-flag-icon/src/country-flag-icon.d.ts +2 -2
  87. package/dist/components/cta-link/src/cta-link.d.ts +10 -10
  88. package/dist/components/date-picker/src/date-picker.d.ts +5 -5
  89. package/dist/components/date-range-field/src/date-range-field.d.ts +2 -2
  90. package/dist/components/date-range-field/src/date-range-field.d.ts.map +1 -1
  91. package/dist/components/dismissable-chip-group/src/dismissable-chip-group-item.d.ts +1 -1
  92. package/dist/components/dismissable-chip-group/src/dismissable-chip-group.d.ts +4 -4
  93. package/dist/components/dismissable-chip-group/src/dismissable-chip-group.d.ts.map +1 -1
  94. package/dist/components/drawer/src/drawer-container.d.ts +1 -1
  95. package/dist/components/drawer/src/drawer-container.d.ts.map +1 -1
  96. package/dist/components/drawer/src/drawer-content.d.ts +2 -2
  97. package/dist/components/drawer/src/drawer-frame.d.ts +1 -1
  98. package/dist/components/drawer/src/drawer-handle.d.ts +1 -1
  99. package/dist/components/drawer/src/drawer-header.d.ts +1 -1
  100. package/dist/components/drawer/src/drawer-scroll-area.d.ts +1 -1
  101. package/dist/components/drawer/src/drawer.context.d.ts +2 -0
  102. package/dist/components/drawer/src/drawer.context.d.ts.map +1 -1
  103. package/dist/components/drawer/src/drawer.d.ts +2 -0
  104. package/dist/components/drawer/src/drawer.d.ts.map +1 -1
  105. package/dist/components/dropdown/src/dropdown-combobox.d.ts +2 -34
  106. package/dist/components/dropdown/src/dropdown-combobox.d.ts.map +1 -1
  107. package/dist/components/dropdown/src/dropdown-select.d.ts +2 -34
  108. package/dist/components/dropdown/src/dropdown-select.d.ts.map +1 -1
  109. package/dist/components/dropdown/src/dropdown-shared.d.ts +2 -1
  110. package/dist/components/dropdown/src/dropdown-shared.d.ts.map +1 -1
  111. package/dist/components/dropdown/src/dropdown.types.d.ts +24 -13
  112. package/dist/components/dropdown/src/dropdown.types.d.ts.map +1 -1
  113. package/dist/components/dropdown/src/useDropdown.d.ts +1 -1
  114. package/dist/components/dropdown/src/useDropdown.d.ts.map +1 -1
  115. package/dist/components/dropdown/src/useDropdownFilter.d.ts.map +1 -1
  116. package/dist/components/dropdown/src/useDropdownInput.d.ts.map +1 -1
  117. package/dist/components/field-error-text/src/field-error-text.d.ts +2 -2
  118. package/dist/components/file-upload/src/file-upload-button.d.ts +22 -0
  119. package/dist/components/file-upload/src/file-upload-button.d.ts.map +1 -0
  120. package/dist/components/file-upload/src/file-upload-drag-and-drop.d.ts +10 -0
  121. package/dist/components/file-upload/src/file-upload-drag-and-drop.d.ts.map +1 -0
  122. package/dist/components/file-upload/src/file-upload-file-name-label.d.ts +8 -0
  123. package/dist/components/file-upload/src/file-upload-file-name-label.d.ts.map +1 -0
  124. package/dist/components/file-upload/src/file-upload-icon.d.ts +8 -0
  125. package/dist/components/file-upload/src/file-upload-icon.d.ts.map +1 -0
  126. package/dist/components/file-upload/src/file-upload-types.d.ts +82 -0
  127. package/dist/components/file-upload/src/file-upload-types.d.ts.map +1 -0
  128. package/dist/components/file-upload/src/file-upload-utils.d.ts +7 -0
  129. package/dist/components/file-upload/src/file-upload-utils.d.ts.map +1 -0
  130. package/dist/components/file-upload/src/file-upload.d.ts +6 -0
  131. package/dist/components/file-upload/src/file-upload.d.ts.map +1 -0
  132. package/dist/components/file-upload/src/file-upload.visual.fixtures.d.ts +14 -0
  133. package/dist/components/file-upload/src/file-upload.visual.fixtures.d.ts.map +1 -0
  134. package/dist/components/footer/src/footer-navigation.d.ts +1 -1
  135. package/dist/components/footer/src/footer.d.ts +3 -3
  136. package/dist/components/grid/src/grid.item.d.ts +1 -1
  137. package/dist/components/heading/src/heading.d.ts +20 -2
  138. package/dist/components/heading/src/heading.d.ts.map +1 -1
  139. package/dist/components/hero-banner/src/hero-banner-actions.d.ts +1 -1
  140. package/dist/components/hero-banner/src/hero-banner-media.d.ts +1 -1
  141. package/dist/components/hero-banner/src/hero-banner-types.d.ts +2 -2
  142. package/dist/components/hero-banner/src/hero-banner-types.d.ts.map +1 -1
  143. package/dist/components/hero-banner/src/hero-banner.d.ts +1 -1
  144. package/dist/components/hero-banner/src/hero-banner.d.ts.map +1 -1
  145. package/dist/components/icon/src/icon.d.ts +2 -2
  146. package/dist/components/label/src/label.d.ts +1 -1
  147. package/dist/components/listbox/src/listbox-item.d.ts +1 -1
  148. package/dist/components/loading/src/loading-illustrative.d.ts +1 -1
  149. package/dist/components/logo/src/logo.types.d.ts +2 -2
  150. package/dist/components/modal/src/modal-content.d.ts +1 -1
  151. package/dist/components/modal/src/modal-content.d.ts.map +1 -1
  152. package/dist/components/notification-banner/src/notification-banner.d.ts +5 -5
  153. package/dist/components/notification-banner/src/notification-banner.d.ts.map +1 -1
  154. package/dist/components/pagination/src/pagination-page-selector.d.ts +2 -2
  155. package/dist/components/pagination/src/pagination-page-trigger.d.ts +1 -1
  156. package/dist/components/pagination/src/pagination-step-trigger.d.ts +2 -2
  157. package/dist/components/pagination/src/pagination-truncation-separator.d.ts +1 -1
  158. package/dist/components/pagination/src/types.d.ts +1 -1
  159. package/dist/components/pagination/src/use-page-options.hook.d.ts +1 -1
  160. package/dist/components/pagination/src/use-page-size-options.hook.d.ts +1 -1
  161. package/dist/components/password-field/src/password-strength-indicator.d.ts +1 -1
  162. package/dist/components/password-field/src/password-strength.d.ts +2 -2
  163. package/dist/components/promotion-card/src/promotion-card.d.ts +9 -9
  164. package/dist/components/promotion-card/src/promotion-card.d.ts.map +1 -1
  165. package/dist/components/quantity-selector/src/quantity-selector-button.d.ts +2 -3
  166. package/dist/components/quantity-selector/src/quantity-selector-button.d.ts.map +1 -1
  167. package/dist/components/quantity-selector/src/quantity-selector.d.ts +2 -5
  168. package/dist/components/quantity-selector/src/quantity-selector.d.ts.map +1 -1
  169. package/dist/components/radio-card-group/src/radio-card-group.d.ts +2 -2
  170. package/dist/components/radio-card-group/src/radio-card-item.d.ts +1 -1
  171. package/dist/components/rich-text/src/types.d.ts +3 -3
  172. package/dist/components/search-field/src/search-field.d.ts +6 -6
  173. package/dist/components/skeleton/src/skeleton.d.ts +1 -1
  174. package/dist/components/spinner/src/spinner.d.ts +2 -2
  175. package/dist/components/stepper/src/stepper-container.d.ts +1 -1
  176. package/dist/components/stepper/src/stepper-content.d.ts +1 -1
  177. package/dist/components/stepper/src/{stepper-button.d.ts → stepper-link.d.ts} +5 -4
  178. package/dist/components/stepper/src/stepper-link.d.ts.map +1 -0
  179. package/dist/components/stepper/src/stepper-nav-items.d.ts +1 -0
  180. package/dist/components/stepper/src/stepper-nav-items.d.ts.map +1 -1
  181. package/dist/components/stepper/src/stepper.d.ts.map +1 -1
  182. package/dist/components/stepper/src/types.d.ts +2 -2
  183. package/dist/components/stepper/src/types.d.ts.map +1 -1
  184. package/dist/components/stepper/src/use-content-focus.hook.d.ts.map +1 -1
  185. package/dist/components/table/src/cell-types/button-group-cell.d.ts +3 -3
  186. package/dist/components/table/src/draggable-table.d.ts.map +1 -1
  187. package/dist/components/table/src/table-column-header-cell.d.ts +1 -2
  188. package/dist/components/table/src/table-column-header-cell.d.ts.map +1 -1
  189. package/dist/components/table/src/table-content.d.ts +1 -1
  190. package/dist/components/table/src/table-headers.d.ts +2 -3
  191. package/dist/components/table/src/table-headers.d.ts.map +1 -1
  192. package/dist/components/table/src/table-settings-drawer.d.ts +11 -20
  193. package/dist/components/table/src/table-settings-drawer.d.ts.map +1 -1
  194. package/dist/components/table/src/table.d.ts +2 -9
  195. package/dist/components/table/src/table.d.ts.map +1 -1
  196. package/dist/components/table/src/test-utils/helpers.d.ts +10 -19
  197. package/dist/components/table/src/test-utils/helpers.d.ts.map +1 -1
  198. package/dist/components/table/src/test-utils/table-data.d.ts +3 -3
  199. package/dist/components/tabs/src/tab-content.d.ts +3 -1
  200. package/dist/components/tabs/src/tab-content.d.ts.map +1 -1
  201. package/dist/components/text-area/src/text-area.d.ts +1 -1
  202. package/dist/components/text-field/src/text-field-ai.d.ts +4 -4
  203. package/dist/components/text-field/src/text-field-base.d.ts +4 -4
  204. package/dist/components/text-field/src/text-field.d.ts +5 -5
  205. package/dist/components/text-spacing/src/text-spacing.d.ts +2 -2
  206. package/dist/components/tooltip/src/tooltip.d.ts +4 -6
  207. package/dist/components/tooltip/src/tooltip.d.ts.map +1 -1
  208. package/dist/components-metadata.js +20 -10
  209. package/dist/{content-block-CDMrz41K.mjs → content-block-BCM0I3Y2.mjs} +2 -2
  210. package/dist/content-block-BCM0I3Y2.mjs.map +1 -0
  211. package/dist/{content-block-DyYAnL2e.js → content-block-DQppQumZ.js} +2 -2
  212. package/dist/content-block-DQppQumZ.js.map +1 -0
  213. package/dist/content-block.cjs.js +1 -1
  214. package/dist/content-block.es.js +1 -1
  215. package/dist/core.esm-BmIwrKkJ.js +6 -0
  216. package/dist/core.esm-BmIwrKkJ.js.map +1 -0
  217. package/dist/core.esm-CKGHpLM_.mjs +2892 -0
  218. package/dist/core.esm-CKGHpLM_.mjs.map +1 -0
  219. package/dist/country-flag-icon/LICENSE.txt +11 -0
  220. package/dist/country-flag-icon/all-country-flag-assets.cjs.js +1 -1
  221. package/dist/country-flag-icon/all-country-flag-assets.cjs.js.map +1 -1
  222. package/dist/country-flag-icon/all-country-flag-assets.d.ts +0 -1
  223. package/dist/country-flag-icon/all-country-flag-assets.d.ts.map +1 -1
  224. package/dist/country-flag-icon/all-country-flag-assets.es.js +0 -1
  225. package/dist/country-flag-icon/all-country-flag-assets.es.js.map +1 -1
  226. package/dist/country-flag-icon/dynamic-country-flag-icon.cjs.js +2 -0
  227. package/dist/country-flag-icon/dynamic-country-flag-icon.cjs.js.map +1 -0
  228. package/dist/country-flag-icon/dynamic-country-flag-icon.es.js +366 -0
  229. package/dist/country-flag-icon/dynamic-country-flag-icon.es.js.map +1 -0
  230. package/dist/{date-field-hA79n6mP.js → date-field-CtpWDaSh.js} +2 -2
  231. package/dist/{date-field-hA79n6mP.js.map → date-field-CtpWDaSh.js.map} +1 -1
  232. package/dist/{date-field-DVp_RMNm.mjs → date-field-_rCuf15v.mjs} +2 -2
  233. package/dist/{date-field-DVp_RMNm.mjs.map → date-field-_rCuf15v.mjs.map} +1 -1
  234. package/dist/date-field.cjs.js +1 -1
  235. package/dist/date-field.es.js +1 -1
  236. package/dist/{date-picker-Dzoo_hhQ.js → date-picker-BYlszX1W.js} +2 -2
  237. package/dist/{date-picker-Dzoo_hhQ.js.map → date-picker-BYlszX1W.js.map} +1 -1
  238. package/dist/{date-picker-B8ta-Q8V.mjs → date-picker-sqcNAplg.mjs} +6 -6
  239. package/dist/{date-picker-B8ta-Q8V.mjs.map → date-picker-sqcNAplg.mjs.map} +1 -1
  240. package/dist/date-picker.cjs.js +1 -1
  241. package/dist/date-picker.es.js +1 -1
  242. package/dist/date-range-field-B33XeBW8.js +2 -0
  243. package/dist/date-range-field-B33XeBW8.js.map +1 -0
  244. package/dist/{date-range-field-BZUjfftV.mjs → date-range-field-BmjQeiOv.mjs} +23 -23
  245. package/dist/date-range-field-BmjQeiOv.mjs.map +1 -0
  246. package/dist/date-range-field.cjs.js +1 -1
  247. package/dist/date-range-field.es.js +1 -1
  248. package/dist/{dismissable-chip-group-2updhyuR.js → dismissable-chip-group-5ALErhD2.js} +2 -2
  249. package/dist/dismissable-chip-group-5ALErhD2.js.map +1 -0
  250. package/dist/{dismissable-chip-group-Cfs2s2BH.mjs → dismissable-chip-group-DMNU7g5e.mjs} +3 -3
  251. package/dist/dismissable-chip-group-DMNU7g5e.mjs.map +1 -0
  252. package/dist/dismissable-chip-group.cjs.js +1 -1
  253. package/dist/dismissable-chip-group.es.js +1 -1
  254. package/dist/{drawer-cIUx6WSZ.mjs → drawer-Chx3H8EU.mjs} +241 -233
  255. package/dist/drawer-Chx3H8EU.mjs.map +1 -0
  256. package/dist/drawer-oFJcxW58.js +2 -0
  257. package/dist/drawer-oFJcxW58.js.map +1 -0
  258. package/dist/drawer.cjs.js +1 -1
  259. package/dist/drawer.es.js +1 -1
  260. package/dist/dropdown-Bn7WvsL2.js +2 -0
  261. package/dist/dropdown-Bn7WvsL2.js.map +1 -0
  262. package/dist/dropdown-CrufJnb4.mjs +945 -0
  263. package/dist/dropdown-CrufJnb4.mjs.map +1 -0
  264. package/dist/dropdown.cjs.js +1 -1
  265. package/dist/dropdown.es.js +1 -1
  266. package/dist/file-upload-Ctw6LCTU.mjs +589 -0
  267. package/dist/file-upload-Ctw6LCTU.mjs.map +1 -0
  268. package/dist/file-upload-MvNuX4ks.js +2 -0
  269. package/dist/file-upload-MvNuX4ks.js.map +1 -0
  270. package/dist/file-upload.cjs.js +2 -0
  271. package/dist/file-upload.cjs.js.map +1 -0
  272. package/dist/file-upload.es.js +5 -0
  273. package/dist/file-upload.es.js.map +1 -0
  274. package/dist/{floating-ui.react-dom-EredA301.mjs → floating-ui.react-dom-1kwKo24Z.mjs} +15 -15
  275. package/dist/{floating-ui.react-dom-EredA301.mjs.map → floating-ui.react-dom-1kwKo24Z.mjs.map} +1 -1
  276. package/dist/footer-Bbemct3Z.js +2 -0
  277. package/dist/footer-Bbemct3Z.js.map +1 -0
  278. package/dist/{footer-D-2b7UIB.mjs → footer-DkVmTd-f.mjs} +25 -25
  279. package/dist/footer-DkVmTd-f.mjs.map +1 -0
  280. package/dist/footer.cjs.js +1 -1
  281. package/dist/footer.es.js +1 -1
  282. package/dist/{heading-xwBuT_-9.mjs → heading-BG7JTFO1.mjs} +25 -24
  283. package/dist/heading-BG7JTFO1.mjs.map +1 -0
  284. package/dist/{heading-drD5ugCC.js → heading-BPeRwNYu.js} +2 -2
  285. package/dist/heading-BPeRwNYu.js.map +1 -0
  286. package/dist/heading.cjs.js +1 -1
  287. package/dist/heading.es.js +6 -5
  288. package/dist/{hero-banner-n9K-Jsdz.mjs → hero-banner-ChDoFRhq.mjs} +4 -4
  289. package/dist/hero-banner-ChDoFRhq.mjs.map +1 -0
  290. package/dist/{hero-banner--v-ezYMr.js → hero-banner-Mag1OwL4.js} +2 -2
  291. package/dist/hero-banner-Mag1OwL4.js.map +1 -0
  292. package/dist/hero-banner.cjs.js +1 -1
  293. package/dist/hero-banner.es.js +1 -1
  294. package/dist/index-BPY_9ddu.js +2 -0
  295. package/dist/index-BPY_9ddu.js.map +1 -0
  296. package/dist/index-Fewa56cA.mjs +440 -0
  297. package/dist/index-Fewa56cA.mjs.map +1 -0
  298. package/dist/libraries/library/src/calendar.d.ts +1 -1
  299. package/dist/libraries/library/src/card.d.ts +1 -1
  300. package/dist/libraries/library/src/container.d.ts +1 -1
  301. package/dist/libraries/library/src/content-block.d.ts +1 -1
  302. package/dist/libraries/library/src/dismissable-chip-group.d.ts +1 -1
  303. package/dist/libraries/library/src/drawer.d.ts +1 -1
  304. package/dist/libraries/library/src/file-upload.d.ts +6 -0
  305. package/dist/libraries/library/src/file-upload.d.ts.map +1 -0
  306. package/dist/libraries/library/src/library.d.ts +2 -1
  307. package/dist/libraries/library/src/library.d.ts.map +1 -1
  308. package/dist/libraries/library/src/notification-banner.d.ts +1 -1
  309. package/dist/libraries/library/src/notification.d.ts +1 -1
  310. package/dist/libraries/library/src/password-field.d.ts +6 -2
  311. package/dist/libraries/library/src/password-field.d.ts.map +1 -1
  312. package/dist/libraries/library/src/radio-button-group.d.ts +1 -1
  313. package/dist/libraries/library/src/radio-card-group.d.ts +1 -1
  314. package/dist/libraries/library/src/spinner.d.ts +1 -1
  315. package/dist/libraries/library/src/stepper.d.ts +1 -1
  316. package/dist/libraries/library/src/tooltip.d.ts +1 -1
  317. package/dist/libraries/library/src/visually-hidden.d.ts +1 -1
  318. package/dist/libraries/theme/src/ThemeProvider.d.ts +1 -1
  319. package/dist/library.cjs.js +1 -1
  320. package/dist/library.es.js +603 -601
  321. package/dist/library.es.js.map +1 -1
  322. package/dist/link-Dzqd0QuD.js +2 -0
  323. package/dist/{link-DhWVrkTz.js.map → link-Dzqd0QuD.js.map} +1 -1
  324. package/dist/link-ccCdDvBc.mjs +72 -0
  325. package/dist/{link-DY5WLpyc.mjs.map → link-ccCdDvBc.mjs.map} +1 -1
  326. package/dist/link.cjs.js +1 -1
  327. package/dist/link.es.js +1 -1
  328. package/dist/main-B501z9Ql.js +2 -0
  329. package/dist/main-B501z9Ql.js.map +1 -0
  330. package/dist/main-L71Sqg3s.mjs +1016 -0
  331. package/dist/main-L71Sqg3s.mjs.map +1 -0
  332. package/dist/{modal-D0Qxrvx5.js → modal-CXOYUsJm.js} +2 -2
  333. package/dist/modal-CXOYUsJm.js.map +1 -0
  334. package/dist/{modal-Bu1Zv5Ic.mjs → modal-Pwvhrzn-.mjs} +31 -31
  335. package/dist/modal-Pwvhrzn-.mjs.map +1 -0
  336. package/dist/modal.cjs.js +1 -1
  337. package/dist/modal.es.js +1 -1
  338. package/dist/{notification-D2oClkX2.js → notification-BkM2vLzI.js} +2 -2
  339. package/dist/{notification-D2oClkX2.js.map → notification-BkM2vLzI.js.map} +1 -1
  340. package/dist/{notification-DiVdy6E_.mjs → notification-Cbn0UN1p.mjs} +3 -3
  341. package/dist/{notification-DiVdy6E_.mjs.map → notification-Cbn0UN1p.mjs.map} +1 -1
  342. package/dist/notification-banner-B9RhXAZ8.js +2 -0
  343. package/dist/notification-banner-B9RhXAZ8.js.map +1 -0
  344. package/dist/{notification-banner-CZTQZ5Le.mjs → notification-banner-C4NVekCZ.mjs} +5 -5
  345. package/dist/notification-banner-C4NVekCZ.mjs.map +1 -0
  346. package/dist/notification-banner.cjs.js +1 -1
  347. package/dist/notification-banner.es.js +1 -1
  348. package/dist/notification.cjs.js +1 -1
  349. package/dist/notification.es.js +1 -1
  350. package/dist/password-field-Cy_E-D_G.mjs +200 -0
  351. package/dist/password-field-Cy_E-D_G.mjs.map +1 -0
  352. package/dist/password-field-lKyWHjQS.js +2 -0
  353. package/dist/password-field-lKyWHjQS.js.map +1 -0
  354. package/dist/password-field.cjs.js +2 -0
  355. package/dist/password-field.cjs.js.map +1 -0
  356. package/dist/password-field.es.js +6 -0
  357. package/dist/password-field.es.js.map +1 -0
  358. package/dist/popover-B6ntmuEK.mjs +614 -0
  359. package/dist/popover-B6ntmuEK.mjs.map +1 -0
  360. package/dist/popover-DJHMEFXP.js +2 -0
  361. package/dist/popover-DJHMEFXP.js.map +1 -0
  362. package/dist/popover.cjs.js +1 -1
  363. package/dist/popover.es.js +1 -1
  364. package/dist/{product-card-CxfHfJVV.mjs → product-card-BMseoNrG.mjs} +3 -3
  365. package/dist/{product-card-CxfHfJVV.mjs.map → product-card-BMseoNrG.mjs.map} +1 -1
  366. package/dist/{product-card-XxBwuxM-.js → product-card-D0jX5-up.js} +2 -2
  367. package/dist/{product-card-XxBwuxM-.js.map → product-card-D0jX5-up.js.map} +1 -1
  368. package/dist/product-card.cjs.js +1 -1
  369. package/dist/product-card.es.js +1 -1
  370. package/dist/{promotion-card-C1UoxzcV.js → promotion-card-B3mz__m7.js} +2 -2
  371. package/dist/promotion-card-B3mz__m7.js.map +1 -0
  372. package/dist/{promotion-card-CooYPpFo.mjs → promotion-card-Co6qAkTZ.mjs} +5 -5
  373. package/dist/promotion-card-Co6qAkTZ.mjs.map +1 -0
  374. package/dist/promotion-card.cjs.js +1 -1
  375. package/dist/promotion-card.es.js +1 -1
  376. package/dist/purpur.css +1 -1
  377. package/dist/quantity-selector-Cy0aJGGX.js +2 -0
  378. package/dist/quantity-selector-Cy0aJGGX.js.map +1 -0
  379. package/dist/quantity-selector-k6ZaVrk1.mjs +162 -0
  380. package/dist/quantity-selector-k6ZaVrk1.mjs.map +1 -0
  381. package/dist/quantity-selector.cjs.js +1 -1
  382. package/dist/quantity-selector.es.js +2 -3
  383. package/dist/{radio-button-group-D_F6kWD6.mjs → radio-button-group-DjiTo3b1.mjs} +2 -2
  384. package/dist/{radio-button-group-D_F6kWD6.mjs.map → radio-button-group-DjiTo3b1.mjs.map} +1 -1
  385. package/dist/{radio-button-group-CdUrC7h9.js → radio-button-group-uCRGh1H5.js} +2 -2
  386. package/dist/{radio-button-group-CdUrC7h9.js.map → radio-button-group-uCRGh1H5.js.map} +1 -1
  387. package/dist/radio-button-group.cjs.js +1 -1
  388. package/dist/radio-button-group.es.js +1 -1
  389. package/dist/{radio-card-group-B9_jOJnM.mjs → radio-card-group-DoM7qYO1.mjs} +2 -2
  390. package/dist/{radio-card-group-B9_jOJnM.mjs.map → radio-card-group-DoM7qYO1.mjs.map} +1 -1
  391. package/dist/{radio-card-group-DcdGkfOp.js → radio-card-group-_9wJC-s3.js} +2 -2
  392. package/dist/{radio-card-group-DcdGkfOp.js.map → radio-card-group-_9wJC-s3.js.map} +1 -1
  393. package/dist/radio-card-group.cjs.js +1 -1
  394. package/dist/radio-card-group.es.js +1 -1
  395. package/dist/rich-text.cjs.js +1 -1
  396. package/dist/rich-text.es.js +1 -1
  397. package/dist/{search-field-afhtC6q5.mjs → search-field-BTJtRyw5.mjs} +3 -3
  398. package/dist/{search-field-afhtC6q5.mjs.map → search-field-BTJtRyw5.mjs.map} +1 -1
  399. package/dist/{search-field-WJBtiK0K.js → search-field-nzVXak1a.js} +2 -2
  400. package/dist/{search-field-WJBtiK0K.js.map → search-field-nzVXak1a.js.map} +1 -1
  401. package/dist/search-field.cjs.js +1 -1
  402. package/dist/search-field.es.js +1 -1
  403. package/dist/stepper-D59T-Y2_.mjs +469 -0
  404. package/dist/stepper-D59T-Y2_.mjs.map +1 -0
  405. package/dist/stepper-Dao4XaDV.js +2 -0
  406. package/dist/stepper-Dao4XaDV.js.map +1 -0
  407. package/dist/stepper.cjs.js +1 -1
  408. package/dist/stepper.es.js +1 -1
  409. package/dist/table-DRSgesQ4.mjs +4545 -0
  410. package/dist/table-DRSgesQ4.mjs.map +1 -0
  411. package/dist/table-zBs9JALh.js +5 -0
  412. package/dist/table-zBs9JALh.js.map +1 -0
  413. package/dist/table.cjs.js +1 -1
  414. package/dist/table.es.js +1 -1
  415. package/dist/tabs-D2__wbCs.js +2 -0
  416. package/dist/tabs-D2__wbCs.js.map +1 -0
  417. package/dist/tabs-DOG5g2wf.mjs +440 -0
  418. package/dist/tabs-DOG5g2wf.mjs.map +1 -0
  419. package/dist/tabs.cjs.js +1 -1
  420. package/dist/tabs.es.js +1 -1
  421. package/dist/{text-field-VW8ObP83.js → text-field-BSgqJjpv.js} +2 -2
  422. package/dist/text-field-BSgqJjpv.js.map +1 -0
  423. package/dist/{text-field-D0e-cRbG.mjs → text-field-MQHeITxy.mjs} +3 -3
  424. package/dist/text-field-MQHeITxy.mjs.map +1 -0
  425. package/dist/text-field.cjs.js +1 -1
  426. package/dist/text-field.es.js +1 -1
  427. package/dist/tooltip-DeP1UsPW.js +2 -0
  428. package/dist/{tooltip-B-11qk-0.js.map → tooltip-DeP1UsPW.js.map} +1 -1
  429. package/dist/{tooltip-DngYHn5W.mjs → tooltip-bqdd2lJL.mjs} +347 -309
  430. package/dist/{tooltip-DngYHn5W.mjs.map → tooltip-bqdd2lJL.mjs.map} +1 -1
  431. package/dist/tooltip.cjs.js +1 -1
  432. package/dist/tooltip.es.js +1 -1
  433. package/package.json +21 -26
  434. package/scripts/generate.mts +1 -4
  435. package/src/aliases.ts +8 -4
  436. package/src/entries.js +2 -1
  437. package/src/{autocomplete.ts → file-upload.ts} +1 -1
  438. package/src/library.ts +2 -2
  439. package/src/password-field.ts +0 -1
  440. package/src/purpur.css +4 -0
  441. package/dist/accordion-B6OoQ4uZ.mjs +0 -128
  442. package/dist/accordion-B6OoQ4uZ.mjs.map +0 -1
  443. package/dist/accordion-BfpN5h4C.js +0 -2
  444. package/dist/accordion-BfpN5h4C.js.map +0 -1
  445. package/dist/autocomplete-BX1KDZqL.js +0 -2
  446. package/dist/autocomplete-BX1KDZqL.js.map +0 -1
  447. package/dist/autocomplete-CmLzmWp4.mjs +0 -228
  448. package/dist/autocomplete-CmLzmWp4.mjs.map +0 -1
  449. package/dist/autocomplete.cjs.js +0 -2
  450. package/dist/autocomplete.cjs.js.map +0 -1
  451. package/dist/autocomplete.es.js +0 -6
  452. package/dist/autocomplete.es.js.map +0 -1
  453. package/dist/button-4-yWOgtD.mjs +0 -109
  454. package/dist/button-4-yWOgtD.mjs.map +0 -1
  455. package/dist/button-DmybVApa.js +0 -2
  456. package/dist/button-DmybVApa.js.map +0 -1
  457. package/dist/card-pdsBEJif.js.map +0 -1
  458. package/dist/card-t2ZkZ82G.mjs.map +0 -1
  459. package/dist/components/autocomplete/src/autocomplete.d.ts +0 -18
  460. package/dist/components/autocomplete/src/autocomplete.d.ts.map +0 -1
  461. package/dist/components/autocomplete/src/useAutocomplete.d.ts +0 -59
  462. package/dist/components/autocomplete/src/useAutocomplete.d.ts.map +0 -1
  463. package/dist/components/autocomplete/src/utils.d.ts +0 -7
  464. package/dist/components/autocomplete/src/utils.d.ts.map +0 -1
  465. package/dist/components/stepper/src/stepper-button.d.ts.map +0 -1
  466. package/dist/content-block-CDMrz41K.mjs.map +0 -1
  467. package/dist/content-block-DyYAnL2e.js.map +0 -1
  468. package/dist/date-range-field-BZUjfftV.mjs.map +0 -1
  469. package/dist/date-range-field-Dqqgj41u.js +0 -2
  470. package/dist/date-range-field-Dqqgj41u.js.map +0 -1
  471. package/dist/dismissable-chip-group-2updhyuR.js.map +0 -1
  472. package/dist/dismissable-chip-group-Cfs2s2BH.mjs.map +0 -1
  473. package/dist/drawer-DyLQfvEh.js +0 -2
  474. package/dist/drawer-DyLQfvEh.js.map +0 -1
  475. package/dist/drawer-cIUx6WSZ.mjs.map +0 -1
  476. package/dist/dropdown-C8VsfTQw.mjs +0 -936
  477. package/dist/dropdown-C8VsfTQw.mjs.map +0 -1
  478. package/dist/dropdown-p4R2yCnJ.js +0 -2
  479. package/dist/dropdown-p4R2yCnJ.js.map +0 -1
  480. package/dist/footer-Cn1-zG1v.js +0 -2
  481. package/dist/footer-Cn1-zG1v.js.map +0 -1
  482. package/dist/footer-D-2b7UIB.mjs.map +0 -1
  483. package/dist/heading-drD5ugCC.js.map +0 -1
  484. package/dist/heading-xwBuT_-9.mjs.map +0 -1
  485. package/dist/hero-banner--v-ezYMr.js.map +0 -1
  486. package/dist/hero-banner-n9K-Jsdz.mjs.map +0 -1
  487. package/dist/libraries/library/src/autocomplete.d.ts +0 -6
  488. package/dist/libraries/library/src/autocomplete.d.ts.map +0 -1
  489. package/dist/link-DY5WLpyc.mjs +0 -72
  490. package/dist/link-DhWVrkTz.js +0 -2
  491. package/dist/modal-Bu1Zv5Ic.mjs.map +0 -1
  492. package/dist/modal-D0Qxrvx5.js.map +0 -1
  493. package/dist/notification-banner-BxHwTFnH.js +0 -2
  494. package/dist/notification-banner-BxHwTFnH.js.map +0 -1
  495. package/dist/notification-banner-CZTQZ5Le.mjs.map +0 -1
  496. package/dist/popover-CY75TnbA.js +0 -2
  497. package/dist/popover-CY75TnbA.js.map +0 -1
  498. package/dist/popover-wiiwtqWE.mjs +0 -1043
  499. package/dist/popover-wiiwtqWE.mjs.map +0 -1
  500. package/dist/promotion-card-C1UoxzcV.js.map +0 -1
  501. package/dist/promotion-card-CooYPpFo.mjs.map +0 -1
  502. package/dist/quantity-selector-BEYMDsBM.js +0 -2
  503. package/dist/quantity-selector-BEYMDsBM.js.map +0 -1
  504. package/dist/quantity-selector-Cp-e5xKJ.mjs +0 -172
  505. package/dist/quantity-selector-Cp-e5xKJ.mjs.map +0 -1
  506. package/dist/stepper-20s8dnPA.mjs +0 -449
  507. package/dist/stepper-20s8dnPA.mjs.map +0 -1
  508. package/dist/stepper-VDiR2I8F.js +0 -2
  509. package/dist/stepper-VDiR2I8F.js.map +0 -1
  510. package/dist/table-B5ZitZoL.js +0 -9
  511. package/dist/table-B5ZitZoL.js.map +0 -1
  512. package/dist/table-CNIL-60s.mjs +0 -7428
  513. package/dist/table-CNIL-60s.mjs.map +0 -1
  514. package/dist/tabs-Bye5lgZ1.mjs +0 -424
  515. package/dist/tabs-Bye5lgZ1.mjs.map +0 -1
  516. package/dist/tabs-D-nfZHIA.js +0 -2
  517. package/dist/tabs-D-nfZHIA.js.map +0 -1
  518. package/dist/text-field-D0e-cRbG.mjs.map +0 -1
  519. package/dist/text-field-VW8ObP83.js.map +0 -1
  520. package/dist/tooltip-B-11qk-0.js +0 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notification-banner-C4NVekCZ.mjs","sources":["../../../components/notification-banner/src/notification-banner.tsx"],"sourcesContent":["import React, { forwardRef, type ReactNode } from \"react\";\nimport { Button } from \"@purpur/button\";\nimport type { BaseProps } from \"@purpur/common-types\";\nimport { Grid } from \"@purpur/grid\";\nimport { Heading, type HeadingTagType } from \"@purpur/heading\";\nimport { IconClose } from \"@purpur/icon/close\";\nimport { IconInfo } from \"@purpur/icon/info\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./notification-banner.module.scss\";\n\nconst cx = c.bind(styles);\n\nexport type DefaultProps = BaseProps & {\n closeButtonAriaLabel?: string;\n description?: string;\n hideIcon?: boolean;\n icon?: ReactNode;\n link?: ReactNode;\n headingTag?: HeadingTagType;\n title?: string;\n};\n\ntype CloseButtonProps = {\n onClose: () => void;\n closeButtonAriaLabel: string;\n};\n\ntype NoCloseButtonProps = {\n onClose?: never;\n closeButtonAriaLabel?: never;\n};\n\nexport type NotificationBannerProps = DefaultProps & (CloseButtonProps | NoCloseButtonProps);\n\nconst rootClassName = \"purpur-notification-banner\";\n\nexport const NotificationBanner = forwardRef<HTMLDivElement, NotificationBannerProps>(\n (\n {\n [\"data-testid\"]: dataTestId,\n children,\n className,\n closeButtonAriaLabel,\n description,\n hideIcon,\n icon,\n link,\n onClose,\n headingTag = \"h4\",\n title,\n ...props\n },\n ref\n ) => {\n const classes = cx(className, rootClassName);\n\n return (\n <div {...props} className={classes} role=\"alert\" ref={ref} data-testid={dataTestId}>\n <Grid>\n <div className={cx(`${rootClassName}__container`)}>\n {!hideIcon ? (\n icon ? (\n <span className={cx(`${rootClassName}__icon`)}>{icon}</span>\n ) : (\n <IconInfo className={cx(`${rootClassName}__icon`)} size=\"sm\" />\n )\n ) : null}\n <div className={cx(`${rootClassName}__content`)}>\n <Heading\n tag={headingTag}\n variant=\"subsection-100\"\n className={cx([\n `${rootClassName}__heading`,\n { [`${rootClassName}__heading--no-overlap`]: onClose },\n ])}\n >\n {title}\n </Heading>\n <div>\n {description} {link}\n </div>\n {children}\n </div>\n {onClose && (\n <Button\n data-testid={dataTestId ? `${dataTestId}-close-button` : undefined}\n variant=\"text\"\n size=\"sm\"\n iconOnly\n aria-label={closeButtonAriaLabel}\n onClick={onClose}\n className={cx(`${rootClassName}__close-button`)}\n >\n <IconClose size=\"sm\" />\n </Button>\n )}\n </div>\n </Grid>\n </div>\n );\n }\n);\n\nNotificationBanner.displayName = \"NotificationBanner\";\n"],"names":["cx","c","styles","rootClassName","NotificationBanner","forwardRef","dataTestId","children","className","closeButtonAriaLabel","description","hideIcon","icon","link","onClose","headingTag","title","props","ref","classes","jsx","Grid","IconInfo","Heading","Button","IconClose"],"mappings":";;;;;;;;;;;;;;;;GAWMA,IAAKC,EAAE,KAAKC,CAAM,GAwBlBC,IAAgB,8BAETC,IAAqBC;AAAA,EAChC,CACE;AAAA,IACE,CAAC,gBAAgBC;AAAA,IACjB,UAAAC;AAAA,IACA,WAAAC;AAAA,IACA,sBAAAC;AAAA,IACA,aAAAC;AAAA,IACA,UAAAC;AAAA,IACA,MAAAC;AAAA,IACA,MAAAC;AAAA,IACA,SAAAC;AAAA,IACA,YAAAC,IAAa;AAAA,IACb,OAAAC;AAAA,IACA,GAAGC;AAAA,EAAA,GAELC,MACG;AACH,UAAMC,IAAUnB,EAAGQ,GAAWL,CAAa;AAE3C,WACE,gBAAAiB,EAAC,SAAK,GAAGH,GAAO,WAAWE,GAAS,MAAK,SAAQ,KAAAD,GAAU,eAAaZ,GACtE,UAAA,gBAAAc,EAACC,GAAA,EACC,4BAAC,OAAA,EAAI,WAAWrB,EAAG,GAAGG,CAAa,aAAa,GAC7C,UAAA;AAAA,MAACQ,IAME,OALFC,IACE,gBAAAQ,EAAC,QAAA,EAAK,WAAWpB,EAAG,GAAGG,CAAa,QAAQ,GAAI,UAAAS,GAAK,IAErD,gBAAAQ,EAACE,GAAA,EAAS,WAAWtB,EAAG,GAAGG,CAAa,QAAQ,GAAG,MAAK,KAAA,CAAK;AAAA,wBAGhE,OAAA,EAAI,WAAWH,EAAG,GAAGG,CAAa,WAAW,GAC5C,UAAA;AAAA,QAAA,gBAAAiB;AAAA,UAACG;AAAA,UAAA;AAAA,YACC,KAAKR;AAAA,YACL,SAAQ;AAAA,YACR,WAAWf,EAAG;AAAA,cACZ,GAAGG,CAAa;AAAA,cAChB,EAAE,CAAC,GAAGA,CAAa,uBAAuB,GAAGW,EAAA;AAAA,YAAQ,CACtD;AAAA,YAEA,UAAAE;AAAA,UAAA;AAAA,QAAA;AAAA,0BAEF,OAAA,EACE,UAAA;AAAA,UAAAN;AAAA,UAAY;AAAA,UAAEG;AAAA,QAAA,GACjB;AAAA,QACCN;AAAA,MAAA,GACH;AAAA,MACCO,KACC,gBAAAM;AAAA,QAACI;AAAA,QAAA;AAAA,UACC,eAAalB,IAAa,GAAGA,CAAU,kBAAkB;AAAA,UACzD,SAAQ;AAAA,UACR,MAAK;AAAA,UACL,UAAQ;AAAA,UACR,cAAYG;AAAA,UACZ,SAASK;AAAA,UACT,WAAWd,EAAG,GAAGG,CAAa,gBAAgB;AAAA,UAE9C,UAAA,gBAAAiB,EAACK,GAAA,EAAU,MAAK,KAAA,CAAK;AAAA,QAAA;AAAA,MAAA;AAAA,IACvB,EAAA,CAEJ,GACF,GACF;AAAA,EAEJ;AACF;AAEArB,EAAmB,cAAc;"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("./notification-banner-BxHwTFnH.js");exports.NotificationBanner=i.NotificationBanner;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("./notification-banner-B9RhXAZ8.js");exports.NotificationBanner=i.NotificationBanner;
2
2
  //# sourceMappingURL=notification-banner.cjs.js.map
@@ -1,4 +1,4 @@
1
- import { N as i } from "./notification-banner-CZTQZ5Le.mjs";
1
+ import { N as i } from "./notification-banner-C4NVekCZ.mjs";
2
2
  export {
3
3
  i as NotificationBanner
4
4
  };
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("./notification-D2oClkX2.js");exports.NOTIFICATION_ARIA_LIVE=i.NOTIFICATION_ARIA_LIVE;exports.NOTIFICATION_ROLE=i.NOTIFICATION_ROLE;exports.NOTIFICATION_STATUS=i.NOTIFICATION_STATUS;exports.Notification=i.Notification;exports.notificationAriaLiveValues=i.notificationAriaLiveValues;exports.notificationRoles=i.notificationRoles;exports.notificationStatuses=i.notificationStatuses;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("./notification-BkM2vLzI.js");exports.NOTIFICATION_ARIA_LIVE=i.NOTIFICATION_ARIA_LIVE;exports.NOTIFICATION_ROLE=i.NOTIFICATION_ROLE;exports.NOTIFICATION_STATUS=i.NOTIFICATION_STATUS;exports.Notification=i.Notification;exports.notificationAriaLiveValues=i.notificationAriaLiveValues;exports.notificationRoles=i.notificationRoles;exports.notificationStatuses=i.notificationStatuses;
2
2
  //# sourceMappingURL=notification.cjs.js.map
@@ -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-Cbn0UN1p.mjs";
2
2
  export {
3
3
  o as NOTIFICATION_ARIA_LIVE,
4
4
  s as NOTIFICATION_ROLE,
@@ -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-mHw_J7JU.mjs";
4
+ import { b as E } from "./icon-DNHpBTHs-JfI8WyiR.mjs";
5
+ import { T as I } from "./text-field-MQHeITxy.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: r,
50
+ ...i
51
+ }, d) => {
52
+ const p = V(
53
+ n,
54
+ y,
55
+ { [`${y}--${r}`]: r },
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, r) => {
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, r],
69
+ 4: [h.STRONG, r]
70
+ }),
71
+ [e, n, r]
72
+ );
73
+ return W(() => {
74
+ (async () => {
75
+ if (!s)
76
+ d(0), w(void 0), a(void 0);
77
+ else {
78
+ const { default: t } = await import("./main-L71Sqg3s.mjs").then((D) => D.m), { score: l } = t(s), [x, f] = c[l];
79
+ d(l), w(x), a(f);
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: r,
93
+ weakText: i,
94
+ mediumText: d,
95
+ strongText: p,
96
+ ...w
97
+ }, g) => {
98
+ const a = v(e, _), { score: c, passwordStrength: t, 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: !!t,
110
+ passwordStrength: t
111
+ }
112
+ ),
113
+ /* @__PURE__ */ o(
114
+ P,
115
+ {
116
+ active: !!t && c > 1,
117
+ passwordStrength: t
118
+ }
119
+ ),
120
+ /* @__PURE__ */ o(
121
+ P,
122
+ {
123
+ active: !!t && c > 2,
124
+ passwordStrength: t
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--${t}`]: t
135
+ }),
136
+ children: [
137
+ /* @__PURE__ */ m("span", { className: v(`${_}__password-strength-label`), children: [
138
+ r,
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: r,
155
+ onChange: i,
156
+ showPasswordAriaLabel: d,
157
+ ...p
158
+ }, w) => {
159
+ const g = $(n, C), [a, c] = S(u.PASSWORD), t = async (f) => {
160
+ i?.(f);
161
+ }, l = () => {
162
+ c(a === u.PASSWORD ? u.TEXT : u.PASSWORD);
163
+ }, x = 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: t,
171
+ ref: w,
172
+ type: a,
173
+ endAdornment: /* @__PURE__ */ o(
174
+ k,
175
+ {
176
+ "aria-label": a === u.PASSWORD ? d : r,
177
+ "aria-pressed": a === u.TEXT,
178
+ "data-testid": `${s}-type-toggle-button`,
179
+ onClick: l,
180
+ size: "sm",
181
+ variant: "text",
182
+ iconOnly: !0,
183
+ children: /* @__PURE__ */ o(x, { 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-Cy_E-D_G.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"password-field-Cy_E-D_G.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=\"text\"\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";const t=require("react/jsx-runtime"),o=require("react"),T=require("./button-C5CYysw5.js"),C=require("./icon-DNHpBTHs-faYHqTXU.js"),D=require("./text-field-BSgqJjpv.js"),y=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=y.c.bind(k),b="purpur-password-strength-indicator",m=o.forwardRef(({["data-testid"]:s="password-strength-indicator",active:n,className:d,passwordStrength:e,...c},i)=>{const p=I(d,b,{[`${b}--${e}`]:e},{[`${b}--active`]:n});return t.jsx("div",{...c,"data-testid":s,className:p,ref:i})});m.displayName="PasswordStrengthIndicator";const F=(s,n,d,e)=>{const[c,i]=o.useState(0),[p,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:c,passwordStrength:p,currentPasswordStrengthText:h}},S=y.c.bind(z),v="purpur-password-strength",N=o.forwardRef(({["data-testid"]:s="password-strength",className:n,value:d,label:e,weakText:c,mediumText:i,strongText:p,...g},h)=>{const a=S(n,v),{score:u,passwordStrength:r,currentPasswordStrengthText:l}=F(d,c,i,p);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=y.c.bind(q),$="purpur-password-field",f=o.forwardRef(({["data-testid"]:s="password-field",children:n,className:d,hidePasswordAriaLabel:e,onChange:c,showPasswordAriaLabel:i,...p},g)=>{const h=A(d,$),[a,u]=o.useState(w.PASSWORD),r=async P=>{c?.(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:"text",iconOnly:!0,children:t.jsx(x,{size:"sm"})}),...p}),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-lKyWHjQS.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"password-field-lKyWHjQS.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=\"text\"\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":"2PAEMA,EAAI,CACR,KAAM,qBACN,IAAK,wpCACL,SAAU,CAAC,oBAAoB,EAC/B,SAAU,QACZ,EAAGC,EAAK,GAAsBC,MAAEC,EAAAA,EAAG,CAAE,GAAG,EAAG,IAAKH,EAAG,EACnDC,EAAE,YAAc,wBCNhB,MAAMG,EAAI,CACR,KAAM,mBACN,IAAK,42BACL,SAAU,CAAC,kBAAkB,EAC7B,SAAU,QACZ,EAAGH,EAAK,GAAsBE,MAAED,EAAAA,EAAG,CAAE,GAAG,EAAG,IAAKE,EAAG,EACnDH,EAAE,YAAc,sBCRT,MAAMI,EAAoB,CAC/B,KAAM,OACN,OAAQ,SACR,OAAQ,QACV,EAEaC,EAAa,CACxB,SAAU,WACV,KAAM,MACR,0rCCFMC,EAAKC,EAAAA,EAAE,KAAKC,CAAM,EAOlBC,EAAgB,qCAETC,EAA4BC,EAAAA,WACvC,CACE,CACE,CAAC,eAAgBC,EAAa,8BAC9B,OAAAC,EACA,UAAAC,EACA,iBAAAC,EACA,GAAGC,CAAA,EAELC,IACG,CACH,MAAMC,EAAUZ,EACdQ,EACAL,EACA,CAAE,CAAC,GAAGA,CAAa,KAAKM,CAAgB,EAAE,EAAGA,CAAA,EAC7C,CAAE,CAAC,GAAGN,CAAa,UAAU,EAAGI,CAAA,CAAO,EAGzC,OAAOM,EAAAA,IAAC,OAAK,GAAGH,EAAO,cAAaJ,EAAY,UAAWM,EAAS,IAAAD,EAAU,CAChF,CACF,EAEAP,EAA0B,YAAc,4BCvBjC,MAAMU,EAAsB,CACjCC,EACAC,EACAC,EACAC,IAC4B,CAC5B,KAAM,CAACC,EAAOC,CAAQ,EAAIC,EAAAA,SAAwB,CAAC,EAC7C,CAACZ,EAAkBa,CAAmB,EAAID,WAAA,EAC1C,CAACE,EAA6BC,CAA8B,EAAIH,EAAAA,SAEpE,MAAS,EAELI,EAAuEC,EAAAA,QAC3E,KAAO,CACL,EAAG,CAAC5B,EAAkB,KAAMkB,CAAQ,EACpC,EAAG,CAAClB,EAAkB,KAAMkB,CAAQ,EACpC,EAAG,CAAClB,EAAkB,OAAQmB,CAAU,EACxC,EAAG,CAACnB,EAAkB,OAAQoB,CAAU,EACxC,EAAG,CAACpB,EAAkB,OAAQoB,CAAU,CAAA,GAE1C,CAACF,EAAUC,EAAYC,CAAU,CAAA,EAGnCS,OAAAA,EAAAA,UAAU,IAAM,EACb,SAAY,CACX,GAAI,CAACZ,EACHK,EAAS,CAAC,EACVE,EAAoB,MAAS,EAC7BE,EAA+B,MAAS,MACnC,CACL,KAAM,CAAE,QAASI,GAAW,MAAM,QAAA,QAAA,EAAA,KAAA,IAAA,QAAO,oBAAQ,CAAA,EAAA,KAAAC,GAAAA,EAAA,IAAA,EAC3C,CAAE,MAAAV,GAAUS,EAAOb,CAAQ,EAC3B,CAACN,EAAkBqB,CAAoB,EAAIL,EAAoBN,CAAK,EAC1EC,EAASD,CAAK,EACdG,EAAoBb,CAAgB,EACpCe,EAA+BM,CAAoB,CACrD,CACF,GAAA,CACF,EAAG,CAACf,EAAUU,CAAmB,CAAC,EAE3B,CACL,MAAAN,EACA,iBAAAV,EACA,4BAAAc,CAAA,CAEJ,ECnDMvB,EAAKC,EAAAA,EAAE,KAAKC,CAAM,EAUlBC,EAAgB,2BAET4B,EAAmB1B,EAAAA,WAC9B,CACE,CACE,CAAC,eAAgBC,EAAa,oBAC9B,UAAAE,EACA,MAAAwB,EACA,MAAAC,EACA,SAAAjB,EACA,WAAAC,EACA,WAAAC,EACA,GAAGR,CAAA,EAELC,IACG,CACH,MAAMC,EAAUZ,EAAGQ,EAAWL,CAAa,EACrC,CAAE,MAAAgB,EAAO,iBAAAV,EAAkB,4BAAAc,CAAA,EAAgCT,EAC/DkB,EACAhB,EACAC,EACAC,CAAA,EAGF,OACEgB,OAAC,OAAI,cAAa5B,EAAY,UAAWM,EAAS,IAAAD,EAAW,GAAGD,EAC9D,SAAA,CAAAwB,OAAC,OAAI,UAAWlC,EAAG,GAAGG,CAAa,uBAAuB,EACxD,SAAA,CAAAU,EAAAA,IAACT,EAAA,CACC,OAAQ,CAAC,CAACK,EACV,iBAAAA,CAAA,CAAA,EAEFI,EAAAA,IAACT,EAAA,CACC,OAAQ,CAAC,CAACK,GAAoBU,EAAQ,EACtC,iBAAAV,CAAA,CAAA,EAEFI,EAAAA,IAACT,EAAA,CACC,OAAQ,CAAC,CAACK,GAAoBU,EAAQ,EACtC,iBAAAV,CAAA,CAAA,CACF,EACF,EACAyB,EAAAA,KAACC,EAAAA,UAAA,CACC,YAAU,SACV,cAAa,GAAG7B,CAAU,QAC1B,UAAWN,EAAG,GAAGG,CAAa,2BAA4B,CACxD,CAAC,GAAGA,CAAa,6BAA6BM,CAAgB,EAAE,EAAGA,CAAA,CACpE,EAED,SAAA,CAAAyB,OAAC,QAAK,UAAWlC,EAAG,GAAGG,CAAa,2BAA2B,EAC5D,SAAA,CAAA8B,EACAV,EAA8B,KAAO,EAAA,EACxC,EACCA,CAAA,CAAA,CAAA,CACH,EACF,CAEJ,CACF,EAEAQ,EAAiB,YAAc,mBCzD/B,MAAM/B,EAAKC,EAAAA,EAAE,KAAKC,CAAM,EAwBlBC,EAAgB,wBAQTiC,EAAgB/B,EAAAA,WAC3B,CACE,CACE,CAAC,eAAgBC,EAAa,iBAC9B,SAAA+B,EACA,UAAA7B,EACA,sBAAA8B,EACA,SAAAC,EACA,sBAAAC,EACA,GAAG9B,CAAA,EAELC,IACG,CACH,MAAMC,EAAUZ,EAAGQ,EAAWL,CAAa,EACrC,CAACsC,EAAMC,CAAO,EAAIrB,EAAAA,SAAoBtB,EAAW,QAAQ,EAEzD4C,EAAe,MAAOC,GAAyC,CACnEL,IAAWK,CAAK,CAClB,EAEMC,EAAyB,IAAM,CACnCH,EAAQD,IAAS1C,EAAW,SAAWA,EAAW,KAAOA,EAAW,QAAQ,CAC9E,EAEM+C,EACJL,IAAS1C,EAAW,SAAWgD,EAAsBC,EAEvD,OACEd,EAAAA,KAAC,MAAA,CAAI,UAAWtB,EACd,SAAA,CAAAC,EAAAA,IAACoC,EAAAA,UAAA,CACC,UAAWjD,EAAG,GAAGG,CAAa,cAAc,EAC5C,cAAaG,EACb,SAAUqC,EACV,IAAAhC,EACA,KAAA8B,EACA,aACE5B,EAAAA,IAACqC,EAAAA,OAAA,CACC,aACET,IAAS1C,EAAW,SAAWyC,EAAwBF,EAEzD,eAAcG,IAAS1C,EAAW,KAClC,cAAa,GAAGO,CAAU,sBAC1B,QAASuC,EACT,KAAK,KACL,QAAQ,OACR,SAAQ,GAER,SAAAhC,EAAAA,IAACiC,EAAA,CAAc,KAAK,IAAA,CAAK,CAAA,CAAA,EAG5B,GAAGpC,CAAA,CAAA,EAEL2B,CAAA,EACH,CAEJ,CACF,EAEAD,EAAc,iBAAmBL,EAEjCK,EAAc,YAAc,gBAErB,MAAMe,EACXC,GAUAC,EAAAA,eAAmCD,CAAK,GAAKA,GAAO,OAASrB"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("./password-field-lKyWHjQS.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-Cy_E-D_G.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":";"}