@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
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const O=require("./tooltip-B-11qk-0.js");exports.TOOLTIP_ALIGN=O.TOOLTIP_ALIGN;exports.TOOLTIP_POSITION=O.TOOLTIP_POSITION;exports.Tooltip=O.Tooltip;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const O=require("./tooltip-DeP1UsPW.js");exports.TOOLTIP_ALIGN=O.TOOLTIP_ALIGN;exports.TOOLTIP_POSITION=O.TOOLTIP_POSITION;exports.Tooltip=O.Tooltip;
2
2
  //# sourceMappingURL=tooltip.cjs.js.map
@@ -1,4 +1,4 @@
1
- import { T as I, a, b as o } from "./tooltip-DngYHn5W.mjs";
1
+ import { T as I, a, b as o } from "./tooltip-bqdd2lJL.mjs";
2
2
  export {
3
3
  I as TOOLTIP_ALIGN,
4
4
  a as TOOLTIP_POSITION,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@purpur/library",
3
- "version": "9.10.0",
3
+ "version": "10.0.0",
4
4
  "license": "AGPL-3.0-only",
5
5
  "sideEffects": [
6
6
  "*.css",
@@ -82,11 +82,6 @@
82
82
  "types": "./dist/country-flag-icon/components/*.d.ts",
83
83
  "default": "./dist/country-flag-icon/components/*.es.js"
84
84
  },
85
- "./password-field/*": {
86
- "require": "./dist/password-field/components/*.cjs.js",
87
- "types": "./dist/password-field/components/*.d.ts",
88
- "default": "./dist/password-field/components/*.es.js"
89
- },
90
85
  "./paragraph/mixins": "./dist/scss/paragraph.mixins.scss",
91
86
  "./heading/mixins": "./dist/scss/heading.mixins.scss",
92
87
  "./*": {
@@ -122,76 +117,76 @@
122
117
  "@purpur/action": "8.21.0",
123
118
  "@purpur/alert-badge": "8.21.0",
124
119
  "@purpur/badge": "8.21.0",
125
- "@purpur/autocomplete": "8.21.0",
126
120
  "@purpur/breadcrumbs": "8.21.0",
127
121
  "@purpur/button": "8.21.0",
128
122
  "@purpur/card": "8.21.0",
129
123
  "@purpur/checkbox": "8.21.0",
130
124
  "@purpur/calendar": "8.21.0",
131
- "@purpur/chip-group": "8.21.0",
132
125
  "@purpur/color-dot": "8.21.0",
133
- "@purpur/component-rig": "1.0.0",
126
+ "@purpur/chip-group": "8.21.0",
134
127
  "@purpur/common-types": "8.21.0",
128
+ "@purpur/component-rig": "1.0.0",
135
129
  "@purpur/container": "8.21.0",
136
130
  "@purpur/content-block": "8.21.0",
137
131
  "@purpur/countdown": "8.21.0",
138
132
  "@purpur/counter-badge": "8.21.0",
139
- "@purpur/cta-link": "8.21.0",
140
133
  "@purpur/country-flag-icon": "1.0.0",
134
+ "@purpur/cta-link": "8.21.0",
141
135
  "@purpur/date-picker": "8.21.0",
142
136
  "@purpur/date-field": "8.21.0",
143
- "@purpur/dismissable-chip-group": "8.21.0",
144
137
  "@purpur/drawer": "8.21.0",
138
+ "@purpur/dismissable-chip-group": "8.21.0",
139
+ "@purpur/field-error-text": "8.21.0",
145
140
  "@purpur/field-helper-text": "8.21.0",
146
141
  "@purpur/footer": "8.21.0",
147
- "@purpur/field-error-text": "8.21.0",
148
142
  "@purpur/grid": "8.21.0",
149
- "@purpur/heading": "8.21.0",
150
- "@purpur/hero-banner": "8.21.0",
151
143
  "@purpur/icon": "8.21.0",
144
+ "@purpur/hero-banner": "8.21.0",
145
+ "@purpur/heading": "8.21.0",
152
146
  "@purpur/illustrative-icon": "8.21.0",
153
147
  "@purpur/label": "8.21.0",
154
148
  "@purpur/listbox": "8.21.0",
155
149
  "@purpur/link": "8.21.0",
156
- "@purpur/logo": "8.21.0",
157
150
  "@purpur/modal": "8.21.0",
151
+ "@purpur/logo": "8.21.0",
158
152
  "@purpur/notification": "8.21.0",
159
- "@purpur/pagination": "8.21.0",
160
153
  "@purpur/notification-banner": "8.21.0",
154
+ "@purpur/password-field": "8.21.0",
161
155
  "@purpur/paragraph": "8.21.0",
156
+ "@purpur/pagination": "8.21.0",
162
157
  "@purpur/popover": "8.21.0",
163
- "@purpur/password-field": "8.21.0",
158
+ "@purpur/product-card": "8.21.0",
164
159
  "@purpur/promotion-card": "8.21.0",
165
160
  "@purpur/quantity-selector": "8.21.0",
166
161
  "@purpur/radio-card-group": "8.21.0",
167
162
  "@purpur/radio-button-group": "8.21.0",
168
- "@purpur/product-card": "8.21.0",
169
163
  "@purpur/rich-text": "8.21.0",
170
164
  "@purpur/search-field": "8.21.0",
171
- "@purpur/slider": "8.21.0",
172
165
  "@purpur/select": "8.21.0",
166
+ "@purpur/spacer": "8.21.0",
173
167
  "@purpur/skeleton": "8.21.0",
168
+ "@purpur/slider": "8.21.0",
174
169
  "@purpur/spinner": "8.21.0",
175
- "@purpur/spacer": "8.21.0",
176
- "@purpur/table": "8.21.0",
177
170
  "@purpur/stepper": "8.21.0",
171
+ "@purpur/table": "8.21.0",
178
172
  "@purpur/tabs": "8.21.0",
179
173
  "@purpur/text-area": "8.21.0",
180
174
  "@purpur/text-field": "8.21.0",
181
175
  "@purpur/text-spacing": "8.21.0",
182
- "@purpur/theme": "8.21.0",
183
176
  "@purpur/toggle": "8.21.0",
184
177
  "@purpur/tokens": "8.21.0",
185
- "@purpur/tooltip": "8.21.0",
186
178
  "@purpur/visually-hidden": "8.21.0",
179
+ "@purpur/tooltip": "8.21.0",
187
180
  "@purpur/chat-field": "9.4.2",
188
- "@purpur/carousel": "8.21.0",
181
+ "@purpur/theme": "8.21.0",
189
182
  "@purpur/dropdown": "0.1.0",
183
+ "@purpur/carousel": "8.21.0",
190
184
  "@purpur/comparison-table": "8.21.0",
191
185
  "@purpur/avatar": "1.0.0",
192
- "@purpur/loading": "1.0.0",
193
186
  "@purpur/date-range-field": "8.21.0",
194
- "@purpur/message": "1.0.0"
187
+ "@purpur/loading": "1.0.0",
188
+ "@purpur/message": "1.0.0",
189
+ "@purpur/file-upload": "0.1.0"
195
190
  },
196
191
  "peerDependencies": {
197
192
  "@types/react": "^18 || ^19",
@@ -41,7 +41,6 @@ const specialComponents = [
41
41
  "@purpur/illustrative-icon",
42
42
  "@purpur/logo",
43
43
  "@purpur/country-flag-icon",
44
- "@purpur/password-field",
45
44
  ];
46
45
 
47
46
  // Special components need to be devDependencies (their dist is copied, styles are imported)
@@ -125,7 +124,7 @@ const srcDir = join(libraryDir, "src");
125
124
  const aliases: Array<{ find: string; replacement: string }> = [];
126
125
 
127
126
  // Add aliases for non-special components (resolve to source)
128
- // Special components (icon, illustrative-icon, logo, password-field) are NOT aliased
127
+ // Special components (icon, illustrative-icon, logo, country-flag-icon) are NOT aliased
129
128
  // because they have complex subpath exports. Their dist is copied via vite-plugin-static-copy.
130
129
  for (const project of components) {
131
130
  const packageJson = await import(
@@ -251,8 +250,6 @@ fs.writeFileSync(
251
250
  ``,
252
251
  `import "@purpur/country-flag-icon/styles";`,
253
252
  ``,
254
- `import "@purpur/password-field/styles";`,
255
- ``,
256
253
  ]
257
254
  .concat(indexFileLines.flat())
258
255
  .concat([`export * from "@purpur/tokens";`, ``, `export * from "@purpur/theme";`, ``])
package/src/aliases.ts CHANGED
@@ -17,10 +17,6 @@ export const aliases = [
17
17
  find: /^@purpur\/alert-badge$/,
18
18
  replacement: resolve(__dirname, "../../../components/alert-badge/src/alert-badge.tsx"),
19
19
  },
20
- {
21
- find: /^@purpur\/autocomplete$/,
22
- replacement: resolve(__dirname, "../../../components/autocomplete/src/autocomplete.tsx"),
23
- },
24
20
  {
25
21
  find: /^@purpur\/avatar$/,
26
22
  replacement: resolve(__dirname, "../../../components/avatar/src/avatar.tsx"),
@@ -136,6 +132,10 @@ export const aliases = [
136
132
  "../../../components/field-helper-text/src/field-helper-text.tsx"
137
133
  ),
138
134
  },
135
+ {
136
+ find: /^@purpur\/file-upload$/,
137
+ replacement: resolve(__dirname, "../../../components/file-upload/src/file-upload.tsx"),
138
+ },
139
139
  {
140
140
  find: /^@purpur\/footer$/,
141
141
  replacement: resolve(__dirname, "../../../components/footer/src/footer.tsx"),
@@ -195,6 +195,10 @@ export const aliases = [
195
195
  find: /^@purpur\/paragraph$/,
196
196
  replacement: resolve(__dirname, "../../../components/paragraph/src/paragraph.tsx"),
197
197
  },
198
+ {
199
+ find: /^@purpur\/password-field$/,
200
+ replacement: resolve(__dirname, "../../../components/password-field/src/password-field.tsx"),
201
+ },
198
202
  {
199
203
  find: /^@purpur\/popover$/,
200
204
  replacement: resolve(__dirname, "../../../components/popover/src/popover.tsx"),
package/src/entries.js CHANGED
@@ -6,7 +6,6 @@
6
6
  export const entries = [
7
7
  "accordion",
8
8
  "alert-badge",
9
- "autocomplete",
10
9
  "avatar",
11
10
  "badge",
12
11
  "breadcrumbs",
@@ -32,6 +31,7 @@ export const entries = [
32
31
  "dropdown",
33
32
  "field-error-text",
34
33
  "field-helper-text",
34
+ "file-upload",
35
35
  "footer",
36
36
  "grid",
37
37
  "heading",
@@ -46,6 +46,7 @@ export const entries = [
46
46
  "notification-banner",
47
47
  "pagination",
48
48
  "paragraph",
49
+ "password-field",
49
50
  "popover",
50
51
  "product-card",
51
52
  "promotion-card",
@@ -3,4 +3,4 @@
3
3
  * This file is automatically generated, do not edit it manually
4
4
  */
5
5
 
6
- export * from "@purpur/autocomplete";
6
+ export * from "@purpur/file-upload";
package/src/library.ts CHANGED
@@ -8,11 +8,9 @@ import "@purpur/icon/styles";
8
8
  import "@purpur/illustrative-icon/styles";
9
9
  import "@purpur/logo/styles";
10
10
  import "@purpur/country-flag-icon/styles";
11
- import "@purpur/password-field/styles";
12
11
 
13
12
  export * from "@purpur/accordion";
14
13
  export * from "@purpur/alert-badge";
15
- export * from "@purpur/autocomplete";
16
14
  export * from "@purpur/avatar";
17
15
  export * from "@purpur/badge";
18
16
  export * from "@purpur/breadcrumbs";
@@ -38,6 +36,7 @@ export * from "@purpur/drawer";
38
36
  export * from "@purpur/dropdown";
39
37
  export * from "@purpur/field-error-text";
40
38
  export * from "@purpur/field-helper-text";
39
+ export * from "@purpur/file-upload";
41
40
  export * from "@purpur/footer";
42
41
  export * from "@purpur/grid";
43
42
  export * from "@purpur/heading";
@@ -52,6 +51,7 @@ export * from "@purpur/notification";
52
51
  export * from "@purpur/notification-banner";
53
52
  export * from "@purpur/pagination";
54
53
  export * from "@purpur/paragraph";
54
+ export * from "@purpur/password-field";
55
55
  export * from "@purpur/popover";
56
56
  export * from "@purpur/product-card";
57
57
  export * from "@purpur/promotion-card";
@@ -3,5 +3,4 @@
3
3
  * This file is automatically generated, do not edit it manually
4
4
  */
5
5
 
6
- import "@purpur/password-field/styles";
7
6
  export * from "@purpur/password-field";
package/src/purpur.css CHANGED
@@ -1 +1,5 @@
1
1
  @import "@purpur/tokens/index.css";
2
+
3
+ :root {
4
+ --purpur-rescale: 1;
5
+ }
@@ -1,128 +0,0 @@
1
- import { jsxs as g, jsx as t } from "react/jsx-runtime";
2
- import { useContext as A, useId as C, useState as H, createContext as I } from "react";
3
- import { H as v } from "./heading-xwBuT_-9.mjs";
4
- import { c as x } from "./bind-CU-R61T-.mjs";
5
- import { l as j } from "./chevron-down.es-PCIIj6oG.mjs";
6
- import { P } from "./paragraph-CwAdFoIm.mjs";
7
- const S = {
8
- "purpur-accordion": "_purpur-accordion_mwmy0_1",
9
- "purpur-accordion__title": "_purpur-accordion__title_mwmy0_4",
10
- "purpur-accordion--negative": "_purpur-accordion--negative_mwmy0_13"
11
- }, z = {
12
- "purpur-accordion-item": "_purpur-accordion-item_mnhg5_1",
13
- "purpur-accordion-item__trigger": "_purpur-accordion-item__trigger_mnhg5_4",
14
- "purpur-accordion-item__header": "_purpur-accordion-item__header_mnhg5_10",
15
- "purpur-accordion-item__trigger__icon": "_purpur-accordion-item__trigger__icon_mnhg5_43",
16
- "purpur-accordion-item__title": "_purpur-accordion-item__title_mnhg5_49",
17
- "purpur-accordion-item__icon": "_purpur-accordion-item__icon_mnhg5_50",
18
- "purpur-accordion-item__rotate": "_purpur-accordion-item__rotate_mnhg5_64",
19
- "purpur-accordion-item__content": "_purpur-accordion-item__content_mnhg5_67",
20
- "purpur-accordion-item__contentText": "_purpur-accordion-item__contentText_mnhg5_82",
21
- "purpur-accordion-item__contentText--limit-width": "_purpur-accordion-item__contentText--limit-width_mnhg5_85",
22
- "purpur-accordion-item--negative": "_purpur-accordion-item--negative_mnhg5_107"
23
- }, i = x.bind(z), r = "purpur-accordion-item", L = ({
24
- children: o,
25
- className: n,
26
- fullWidth: a = !1,
27
- title: _,
28
- titleTag: m = "h3",
29
- initialOpen: s = !1,
30
- onClick: c,
31
- onOpen: p,
32
- onClose: d,
33
- ...y
34
- }) => {
35
- const N = A($), u = C(), [e, b] = H(!s), T = i([
36
- r,
37
- {
38
- [`${r}--negative`]: N
39
- },
40
- n
41
- ]);
42
- return /* @__PURE__ */ g("div", { className: T, ...y, children: [
43
- /* @__PURE__ */ t(
44
- v,
45
- {
46
- tag: m,
47
- variant: "title-100",
48
- className: i([`${r}__header`, `${r}__title`]),
49
- children: /* @__PURE__ */ g(
50
- "button",
51
- {
52
- type: "button",
53
- "data-state": e ? "open" : "close",
54
- onClick: (w) => {
55
- c && c(w), e ? p && p() : d && d(), b(!e);
56
- },
57
- className: i(`${r}__trigger`, n, {
58
- [`${r}__rotate`]: !e
59
- }),
60
- "aria-expanded": !e,
61
- "aria-controls": u,
62
- id: u + "button",
63
- children: [
64
- _,
65
- /* @__PURE__ */ t(j, { size: "md", className: i(`${r}__icon`), "aria-hidden": !0 })
66
- ]
67
- }
68
- )
69
- }
70
- ),
71
- /* @__PURE__ */ t(
72
- "div",
73
- {
74
- className: i(`${r}__content`, n),
75
- "aria-hidden": e,
76
- id: u,
77
- "aria-labelledby": u + "button",
78
- role: "region",
79
- children: /* @__PURE__ */ t(
80
- "div",
81
- {
82
- className: i(`${r}__contentText`, {
83
- [`${r}__contentText--limit-width`]: !a
84
- }),
85
- children: typeof o == "string" ? /* @__PURE__ */ t(P, { variant: "paragraph-200", children: o }) : o
86
- }
87
- )
88
- }
89
- )
90
- ] });
91
- }, h = x.bind(S), l = "purpur-accordion", $ = I(!1), f = ({
92
- children: o,
93
- className: n,
94
- negative: a = !1,
95
- title: _,
96
- titleTag: m = "h2",
97
- titleVariant: s = "display-15",
98
- schema: c,
99
- ...p
100
- }) => {
101
- const d = h([
102
- l,
103
- {
104
- [`${l}--negative`]: a
105
- },
106
- n
107
- ]);
108
- return /* @__PURE__ */ g("div", { className: d, ...p, children: [
109
- _ && /* @__PURE__ */ t(v, { tag: m, variant: s, className: h(`${l}__title`), children: _ }),
110
- /* @__PURE__ */ t($.Provider, { value: a, children: o }),
111
- c && /* @__PURE__ */ t(
112
- "script",
113
- {
114
- type: "application/ld+json",
115
- dangerouslySetInnerHTML: {
116
- __html: c
117
- }
118
- }
119
- )
120
- ] });
121
- };
122
- f.Item = L;
123
- f.displayName = "Accordion";
124
- export {
125
- f as A,
126
- $ as a
127
- };
128
- //# sourceMappingURL=accordion-B6OoQ4uZ.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"accordion-B6OoQ4uZ.mjs","sources":["../../../components/accordion/src/accordion-item.tsx","../../../components/accordion/src/accordion.tsx"],"sourcesContent":["import React, { type ReactNode, useContext, useId, useState } from \"react\";\nimport type { BaseProps } from \"@purpur/common-types\";\nimport { Heading, type HeadingTagType } from \"@purpur/heading\";\nimport { IconChevronDown } from \"@purpur/icon/chevron-down\";\nimport { Paragraph } from \"@purpur/paragraph\";\nimport c from \"classnames/bind\";\n\nimport { AccordionNegativeContext } from \"./accordion\";\nimport styles from \"./accordion-item.module.scss\";\n\nconst cx = c.bind(styles);\n\nconst rootClassName = \"purpur-accordion-item\";\n\nexport type AccordionItemOnClickEvent = React.MouseEvent<HTMLButtonElement, MouseEvent> & {\n currentTarget: { dataset: { state: \"open\" | \"closed\" } };\n};\n\nexport type AccordionItemProps = Omit<BaseProps, \"onClick\" | \"title\" | \"children\"> & {\n children: ReactNode;\n /**\n * If true, the children will take the full width without max-width constraint.\n * @default false\n */\n fullWidth?: boolean;\n /**\n * Content to be rendered inside a `button` element.\n * Only pass ReactNodes that are valid as children of a `button`, such as plain text,\n * inline elements like `span` or other non-interactive elements. Avoid block-level or interactive elements.\n */\n title: ReactNode;\n /**\n * This is the heading tag used for the accordion item title. Defaults to h3.\n * `type HeadingTagType = \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\"`\n */\n titleTag?: HeadingTagType;\n /**\n * Makes it possible to set the initial state to opened\n * */\n initialOpen?: boolean;\n /**\n * onClick is called when accordion item is expanded or collapsed\n * event.currentTarget.dataset.state will be either \"open\" or \"closed\"\n */\n onClick?: (event: AccordionItemOnClickEvent) => void;\n onOpen?: () => void;\n onClose?: () => void;\n};\n\nexport const AccordionItem = ({\n children,\n className,\n fullWidth = false,\n title,\n titleTag = \"h3\",\n initialOpen = false,\n onClick,\n onOpen,\n onClose,\n ...props\n}: AccordionItemProps) => {\n const negative = useContext(AccordionNegativeContext);\n const uid = useId();\n const [hidden, setHidden] = useState(!initialOpen);\n\n const classes = cx([\n rootClassName,\n {\n [`${rootClassName}--negative`]: negative,\n },\n className,\n ]);\n\n return (\n <div className={classes} {...props}>\n <Heading\n tag={titleTag}\n variant=\"title-100\"\n className={cx([`${rootClassName}__header`, `${rootClassName}__title`])}\n >\n <button\n type=\"button\"\n data-state={hidden ? \"open\" : \"close\"} // The state is actually set in the onClick, so reversing the data- output state here\n onClick={(e: AccordionItemOnClickEvent) => {\n onClick && onClick(e);\n if (hidden) {\n onOpen && onOpen();\n } else {\n onClose && onClose();\n }\n setHidden(!hidden);\n }}\n className={cx(`${rootClassName}__trigger`, className, {\n [`${rootClassName}__rotate`]: !hidden,\n })}\n aria-expanded={!hidden}\n aria-controls={uid}\n id={uid + \"button\"}\n >\n {title}\n <IconChevronDown size=\"md\" className={cx(`${rootClassName}__icon`)} aria-hidden />\n </button>\n </Heading>\n <div\n className={cx(`${rootClassName}__content`, className)}\n aria-hidden={hidden}\n id={uid}\n aria-labelledby={uid + \"button\"}\n role=\"region\"\n >\n <div\n className={cx(`${rootClassName}__contentText`, {\n [`${rootClassName}__contentText--limit-width`]: !fullWidth,\n })}\n >\n {typeof children === \"string\" ? (\n <Paragraph variant=\"paragraph-200\">{children}</Paragraph>\n ) : (\n children\n )}\n </div>\n </div>\n </div>\n );\n};\n","import React, { createContext, type ReactNode } from \"react\";\nimport type { BaseProps } from \"@purpur/common-types\";\nimport { Heading, type HeadingTagType, type HeadingVariant } from \"@purpur/heading\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./accordion.module.scss\";\nimport { AccordionItem } from \"./accordion-item\";\n\nconst cx = c.bind(styles);\nconst rootClassName = \"purpur-accordion\";\n\nexport type AccordionProps = Omit<BaseProps, \"title\" | \"children\"> & {\n children: ReactNode;\n negative?: boolean;\n title?: ReactNode;\n titleTag?: HeadingTagType;\n titleVariant?: HeadingVariant;\n /**\n * A schema enables external applications to parse the content in a structured manner.\n * See more at schema.org . We use a JSON-LD based script-tag to add the schema to the DOM.\n * Note that only one type of schema can be added per page\n */\n schema?: string;\n};\n\nexport const AccordionNegativeContext = createContext(false);\n\nexport const Accordion = ({\n children,\n className,\n negative = false,\n title,\n titleTag = \"h2\",\n titleVariant = \"display-15\",\n schema,\n ...props\n}: AccordionProps) => {\n const classes = cx([\n rootClassName,\n {\n [`${rootClassName}--negative`]: negative,\n },\n className,\n ]);\n\n return (\n <div className={classes} {...props}>\n {title && (\n <Heading tag={titleTag} variant={titleVariant} className={cx(`${rootClassName}__title`)}>\n {title}\n </Heading>\n )}\n <AccordionNegativeContext.Provider value={negative}>\n {children}\n </AccordionNegativeContext.Provider>\n {schema && (\n <script\n type=\"application/ld+json\"\n dangerouslySetInnerHTML={{\n __html: schema,\n }}\n />\n )}\n </div>\n );\n};\n\nAccordion.Item = AccordionItem;\nAccordion.displayName = \"Accordion\";\n\nexport type { AccordionItemOnClickEvent, AccordionItemProps } from \"./accordion-item\";\n"],"names":["cx","c","styles","rootClassName","AccordionItem","children","className","fullWidth","title","titleTag","initialOpen","onClick","onOpen","onClose","props","negative","useContext","AccordionNegativeContext","uid","useId","hidden","setHidden","useState","classes","jsxs","jsx","Heading","e","IconChevronDown","Paragraph","createContext","Accordion","titleVariant","schema"],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- "use strict";const r=require("react/jsx-runtime"),p=require("react"),$=require("./heading-drD5ugCC.js"),j=require("./bind-DeUYJ6m9.js"),f=require("./chevron-down.es-BMjgiS3F.js"),q=require("./paragraph-B8HFdNne.js"),A={"purpur-accordion":"_purpur-accordion_mwmy0_1","purpur-accordion__title":"_purpur-accordion__title_mwmy0_4","purpur-accordion--negative":"_purpur-accordion--negative_mwmy0_13"},C={"purpur-accordion-item":"_purpur-accordion-item_mnhg5_1","purpur-accordion-item__trigger":"_purpur-accordion-item__trigger_mnhg5_4","purpur-accordion-item__header":"_purpur-accordion-item__header_mnhg5_10","purpur-accordion-item__trigger__icon":"_purpur-accordion-item__trigger__icon_mnhg5_43","purpur-accordion-item__title":"_purpur-accordion-item__title_mnhg5_49","purpur-accordion-item__icon":"_purpur-accordion-item__icon_mnhg5_50","purpur-accordion-item__rotate":"_purpur-accordion-item__rotate_mnhg5_64","purpur-accordion-item__content":"_purpur-accordion-item__content_mnhg5_67","purpur-accordion-item__contentText":"_purpur-accordion-item__contentText_mnhg5_82","purpur-accordion-item__contentText--limit-width":"_purpur-accordion-item__contentText--limit-width_mnhg5_85","purpur-accordion-item--negative":"_purpur-accordion-item--negative_mnhg5_107"},i=j.c.bind(C),t="purpur-accordion-item",H=({children:n,className:o,fullWidth:a=!1,title:_,titleTag:m="h3",initialOpen:l=!1,onClick:c,onOpen:s,onClose:u,...y})=>{const N=p.useContext(h),d=p.useId(),[e,b]=p.useState(!l),w=i([t,{[`${t}--negative`]:N},o]);return r.jsxs("div",{className:w,...y,children:[r.jsx($.Heading,{tag:m,variant:"title-100",className:i([`${t}__header`,`${t}__title`]),children:r.jsxs("button",{type:"button","data-state":e?"open":"close",onClick:T=>{c&&c(T),e?s&&s():u&&u(),b(!e)},className:i(`${t}__trigger`,o,{[`${t}__rotate`]:!e}),"aria-expanded":!e,"aria-controls":d,id:d+"button",children:[_,r.jsx(f.l,{size:"md",className:i(`${t}__icon`),"aria-hidden":!0})]})}),r.jsx("div",{className:i(`${t}__content`,o),"aria-hidden":e,id:d,"aria-labelledby":d+"button",role:"region",children:r.jsx("div",{className:i(`${t}__contentText`,{[`${t}__contentText--limit-width`]:!a}),children:typeof n=="string"?r.jsx(q.Paragraph,{variant:"paragraph-200",children:n}):n})})]})},v=j.c.bind(A),g="purpur-accordion",h=p.createContext(!1),x=({children:n,className:o,negative:a=!1,title:_,titleTag:m="h2",titleVariant:l="display-15",schema:c,...s})=>{const u=v([g,{[`${g}--negative`]:a},o]);return r.jsxs("div",{className:u,...s,children:[_&&r.jsx($.Heading,{tag:m,variant:l,className:v(`${g}__title`),children:_}),r.jsx(h.Provider,{value:a,children:n}),c&&r.jsx("script",{type:"application/ld+json",dangerouslySetInnerHTML:{__html:c}})]})};x.Item=H;x.displayName="Accordion";exports.Accordion=x;exports.AccordionNegativeContext=h;
2
- //# sourceMappingURL=accordion-BfpN5h4C.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"accordion-BfpN5h4C.js","sources":["../../../components/accordion/src/accordion-item.tsx","../../../components/accordion/src/accordion.tsx"],"sourcesContent":["import React, { type ReactNode, useContext, useId, useState } from \"react\";\nimport type { BaseProps } from \"@purpur/common-types\";\nimport { Heading, type HeadingTagType } from \"@purpur/heading\";\nimport { IconChevronDown } from \"@purpur/icon/chevron-down\";\nimport { Paragraph } from \"@purpur/paragraph\";\nimport c from \"classnames/bind\";\n\nimport { AccordionNegativeContext } from \"./accordion\";\nimport styles from \"./accordion-item.module.scss\";\n\nconst cx = c.bind(styles);\n\nconst rootClassName = \"purpur-accordion-item\";\n\nexport type AccordionItemOnClickEvent = React.MouseEvent<HTMLButtonElement, MouseEvent> & {\n currentTarget: { dataset: { state: \"open\" | \"closed\" } };\n};\n\nexport type AccordionItemProps = Omit<BaseProps, \"onClick\" | \"title\" | \"children\"> & {\n children: ReactNode;\n /**\n * If true, the children will take the full width without max-width constraint.\n * @default false\n */\n fullWidth?: boolean;\n /**\n * Content to be rendered inside a `button` element.\n * Only pass ReactNodes that are valid as children of a `button`, such as plain text,\n * inline elements like `span` or other non-interactive elements. Avoid block-level or interactive elements.\n */\n title: ReactNode;\n /**\n * This is the heading tag used for the accordion item title. Defaults to h3.\n * `type HeadingTagType = \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\"`\n */\n titleTag?: HeadingTagType;\n /**\n * Makes it possible to set the initial state to opened\n * */\n initialOpen?: boolean;\n /**\n * onClick is called when accordion item is expanded or collapsed\n * event.currentTarget.dataset.state will be either \"open\" or \"closed\"\n */\n onClick?: (event: AccordionItemOnClickEvent) => void;\n onOpen?: () => void;\n onClose?: () => void;\n};\n\nexport const AccordionItem = ({\n children,\n className,\n fullWidth = false,\n title,\n titleTag = \"h3\",\n initialOpen = false,\n onClick,\n onOpen,\n onClose,\n ...props\n}: AccordionItemProps) => {\n const negative = useContext(AccordionNegativeContext);\n const uid = useId();\n const [hidden, setHidden] = useState(!initialOpen);\n\n const classes = cx([\n rootClassName,\n {\n [`${rootClassName}--negative`]: negative,\n },\n className,\n ]);\n\n return (\n <div className={classes} {...props}>\n <Heading\n tag={titleTag}\n variant=\"title-100\"\n className={cx([`${rootClassName}__header`, `${rootClassName}__title`])}\n >\n <button\n type=\"button\"\n data-state={hidden ? \"open\" : \"close\"} // The state is actually set in the onClick, so reversing the data- output state here\n onClick={(e: AccordionItemOnClickEvent) => {\n onClick && onClick(e);\n if (hidden) {\n onOpen && onOpen();\n } else {\n onClose && onClose();\n }\n setHidden(!hidden);\n }}\n className={cx(`${rootClassName}__trigger`, className, {\n [`${rootClassName}__rotate`]: !hidden,\n })}\n aria-expanded={!hidden}\n aria-controls={uid}\n id={uid + \"button\"}\n >\n {title}\n <IconChevronDown size=\"md\" className={cx(`${rootClassName}__icon`)} aria-hidden />\n </button>\n </Heading>\n <div\n className={cx(`${rootClassName}__content`, className)}\n aria-hidden={hidden}\n id={uid}\n aria-labelledby={uid + \"button\"}\n role=\"region\"\n >\n <div\n className={cx(`${rootClassName}__contentText`, {\n [`${rootClassName}__contentText--limit-width`]: !fullWidth,\n })}\n >\n {typeof children === \"string\" ? (\n <Paragraph variant=\"paragraph-200\">{children}</Paragraph>\n ) : (\n children\n )}\n </div>\n </div>\n </div>\n );\n};\n","import React, { createContext, type ReactNode } from \"react\";\nimport type { BaseProps } from \"@purpur/common-types\";\nimport { Heading, type HeadingTagType, type HeadingVariant } from \"@purpur/heading\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./accordion.module.scss\";\nimport { AccordionItem } from \"./accordion-item\";\n\nconst cx = c.bind(styles);\nconst rootClassName = \"purpur-accordion\";\n\nexport type AccordionProps = Omit<BaseProps, \"title\" | \"children\"> & {\n children: ReactNode;\n negative?: boolean;\n title?: ReactNode;\n titleTag?: HeadingTagType;\n titleVariant?: HeadingVariant;\n /**\n * A schema enables external applications to parse the content in a structured manner.\n * See more at schema.org . We use a JSON-LD based script-tag to add the schema to the DOM.\n * Note that only one type of schema can be added per page\n */\n schema?: string;\n};\n\nexport const AccordionNegativeContext = createContext(false);\n\nexport const Accordion = ({\n children,\n className,\n negative = false,\n title,\n titleTag = \"h2\",\n titleVariant = \"display-15\",\n schema,\n ...props\n}: AccordionProps) => {\n const classes = cx([\n rootClassName,\n {\n [`${rootClassName}--negative`]: negative,\n },\n className,\n ]);\n\n return (\n <div className={classes} {...props}>\n {title && (\n <Heading tag={titleTag} variant={titleVariant} className={cx(`${rootClassName}__title`)}>\n {title}\n </Heading>\n )}\n <AccordionNegativeContext.Provider value={negative}>\n {children}\n </AccordionNegativeContext.Provider>\n {schema && (\n <script\n type=\"application/ld+json\"\n dangerouslySetInnerHTML={{\n __html: schema,\n }}\n />\n )}\n </div>\n );\n};\n\nAccordion.Item = AccordionItem;\nAccordion.displayName = \"Accordion\";\n\nexport type { AccordionItemOnClickEvent, AccordionItemProps } from \"./accordion-item\";\n"],"names":["cx","c","styles","rootClassName","AccordionItem","children","className","fullWidth","title","titleTag","initialOpen","onClick","onOpen","onClose","props","negative","useContext","AccordionNegativeContext","uid","useId","hidden","setHidden","useState","classes","jsxs","jsx","Heading","e","IconChevronDown","Paragraph","createContext","Accordion","titleVariant","schema"],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- "use strict";const p=require("react/jsx-runtime"),r=require("react"),de=require("./chevron-down.es-BMjgiS3F.js"),M=require("./listbox-lXO21cJV.js"),pe=require("./text-field-VW8ObP83.js"),be=require("./bind-DeUYJ6m9.js"),me={"purpur-autocomplete":"_purpur-autocomplete_dgjyz_1","purpur-autocomplete__listbox":"_purpur-autocomplete__listbox_dgjyz_4","purpur-autocomplete__chevron-button":"_purpur-autocomplete__chevron-button_dgjyz_9","purpur-autocomplete__chevron-icon":"_purpur-autocomplete__chevron-icon_dgjyz_15","purpur-autocomplete__chevron-icon--up":"_purpur-autocomplete__chevron-icon--up_dgjyz_20"},fe=i=>r.useRef(i),xe=(i,x)=>{const n=r.useCallback(_=>{i&&!i.contains(_.target)&&x()},[x,i]);r.useEffect(()=>(document.addEventListener("mousedown",n),()=>{document.removeEventListener("mousedown",n)}),[n])},Z=({combobox:i,comboboxButtonAriaLabel:x,highlightFirstOption:n,defaultInputValue:_,inputValue:u,filterOption:R,id:l,listboxLabel:S,listboxMaxHeight:b,onInputBlur:h,onInputChange:L,onInputFocus:D,onInputKeyDown:k,onInputMouseDown:$,openOnFocus:A,noOptionsText:E,onSelect:T,options:a,selectedOption:t,["data-testid"]:y})=>{const[C,K]=r.useState(((typeof u=="string"?u:_)||t?.label)??""),F=typeof u=="string"?u:C,[c,v]=r.useState(n?a[0]:void 0),B=r.useRef(null),U=fe(null),N=r.useRef(null),O=r.useRef({}),[V,Y]=r.useState(!1);function q(e){return y?`${y}-${e}`:void 0}const w=()=>{Y(!1),v(void 0)};xe(U.current,w);const g=({eventType:e})=>{Y(!0),t&&requestAnimationFrame(()=>{v({...t,isSetByClickEvent:e==="CLICK"}),z(O.current[t.id])})},ee=e=>{if(R)return a.filter(s=>R(e,s));if(!e)return a;const o=e.toUpperCase().split(" ")||[];return a.filter(s=>o.every(f=>(s.value||s.label).toUpperCase().includes(f)))},G=e=>t&&t?.label===e?a:ee(e),d=G(F),P=e=>{L?.(e),K(e)},z=e=>{if(e){const o=e.getBoundingClientRect(),s=N.current?.getBoundingClientRect()||{top:0,bottom:0};(o.top<s.top||o.bottom>s.bottom)&&e.scrollIntoView({block:"nearest"})}},J=e=>{e&&(B.current?.focus(),P(e.label),T?.(e)),w()},te=e=>{const o=n&&!c?0:d.findIndex(f=>f&&c?.id===f.id),s=d.length;return e==="ArrowDown"?d[(o??-1)+1]||d[0]:d[(o??s)-1]||d[s-1]},m=V&&(!!d.length||!!E),oe=e=>{!m&&g({eventType:"KEYBOARD"});const o=te(e);v(o),o&&z(O.current[o.id])},ne=e=>{switch(k?.(e),e.key){case"ArrowUp":case"ArrowDown":e.preventDefault(),oe(e.key);break;case"Enter":{const o=c||(n?a[0]:void 0);m&&J(o),!m&&g({eventType:"KEYBOARD"});break}case"Escape":case"Tab":w();break}},se=e=>{const o=G(e.target.value);P(e.target.value),v(void 0),!m&&g({eventType:"KEYBOARD"}),n&&o[0]&&z(O.current[o[0].id])},ce=e=>{$?.(e),m?w():g({eventType:"CLICK"})},re=e=>{D?.(e),!V&&A&&g({eventType:"KEYBOARD"}),B.current?.select()},ie=e=>{h?.(e),setTimeout(()=>{!B.current?.contains(document.activeElement)&&!N.current?.contains(document.activeElement)&&(w(),i&&P(t?t.label:""))})},ue={maxHeight:typeof b=="number"?`${b}px`:b},Q={"aria-label":S,"aria-expanded":m,"data-testid":q("listbox"),id:`${l}-listbox`,ref:N,onMouseLeave:()=>v(void 0),style:b?ue:void 0},W=e=>`${l}-listbox-item-${e.id}`,le=(e,o)=>{const s=()=>e.id!==c?.id&&v({...e,isSetByClickEvent:!0}),f=(e.id===c?.id||!!n&&!c&&o===0)&&!c?.isSetByClickEvent;return{"data-testid":q(`listbox-item-${e.id}`),id:W(e),key:e.id,onMouseMove:s,onMouseUp:()=>J(e),ref:X=>{X&&(O.current[e.id]=X)},tabIndex:-1,selected:e.id===t?.id,disabled:e.disabled,highlighted:f,hovered:e.id===c?.id&&!!c?.isSetByClickEvent}},ae={"aria-activedescendant":c?W(c):void 0,"aria-autocomplete":"list","aria-controls":Q.id,"data-testid":q("input"),autoComplete:"off",id:`${l}-input`,onChange:se,onMouseDown:ce,onFocus:re,onKeyDown:ne,onBlur:ie,ref:B,role:"combobox",value:F};return{id:l,inputProps:ae,internalRef:U,optionsToShow:d,showListbox:m,noOptionsText:E,combobox:i,comboboxButtonAriaLabel:x,getListBoxItemProps:le,listboxProps:Q}},j=be.c.bind(me),I="purpur-autocomplete",ve=({className:i,renderInput:x,renderOption:n,..._},u)=>{const{id:R,inputProps:l,internalRef:S,optionsToShow:b,showListbox:h,noOptionsText:L,combobox:D,comboboxButtonAriaLabel:k,getListBoxItemProps:$,listboxProps:A}=Z(_),E=(t,y)=>{const{key:C,...K}=$(t,y);return p.jsx(M.Listbox.Item,{...K,children:n?n?.(t):t.label},C)},T=t=>{S.current=t,typeof u=="function"?u(t):u&&(u.current=t)},a=()=>{const t=x(l);if(D&&k&&L&&t&&pe.isTextField(t)){const C=p.jsxs(p.Fragment,{children:[t.props.endAdornment,p.jsx("button",{"data-testid":"chevron button",type:"button",className:j(`${I}__chevron-button`),onClick:()=>{l.onFocus(void 0),l.onMouseDown(void 0)},"aria-label":k,"aria-expanded":h,"aria-controls":A.id,children:p.jsx(de.l,{size:"sm",className:j(`${I}__chevron-icon`,{[`${I}__chevron-icon--up`]:h})})})]});return r.cloneElement(t,{endAdornment:C})}return t};return p.jsxs("div",{id:R,ref:T,className:j([I,i]),children:[a(),h&&p.jsx(M.Listbox,{...A,className:j(`${I}__listbox`),children:b.length?b.filter(t=>!!t).map(E):p.jsx(M.Listbox.Item,{noninteractive:!0,children:L})})]})},H=r.forwardRef(ve);H.displayName="Autocomplete";exports.Autocomplete=H;exports.useAutocomplete=Z;
2
- //# sourceMappingURL=autocomplete-BX1KDZqL.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"autocomplete-BX1KDZqL.js","sources":["../../../components/autocomplete/src/utils.ts","../../../components/autocomplete/src/useAutocomplete.ts","../../../components/autocomplete/src/autocomplete.tsx"],"sourcesContent":["import { type RefObject, useCallback, useEffect, useRef } from \"react\";\n\n// Used to \"merge\" \"intersection types\". Used to get comments on the props to the docs.\nexport type Prettify<T> = {\n [K in keyof T]: T[K];\n} & {};\n\nexport const useRefObject = <T>(value: T): RefObject<T> => {\n return useRef<T>(value) as RefObject<T>;\n};\n\nexport const useOnClickOutside = (element: HTMLElement | null, callback: () => void) => {\n const handleClickOutside = useCallback(\n (event: MouseEvent) => {\n if (element && !element.contains(event.target as Node)) {\n callback();\n }\n },\n [callback, element]\n );\n\n useEffect(() => {\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n };\n }, [handleClickOutside]);\n};\n","import type { CSSProperties, ReactNode } from \"react\";\nimport { useRef, useState } from \"react\";\nimport type { BaseProps } from \"@purpur/common-types\";\nimport type { ListboxItemProps, ListboxProps } from \"@purpur/listbox\";\n\nimport { useOnClickOutside, useRefObject } from \"./utils\";\n\nexport type AutocompleteOption = {\n label: string;\n id: string;\n value?: string;\n disabled?: boolean;\n};\n\nexport type InputProps = Omit<BaseProps<\"input\">, \"onFocus\" | \"onMouseDown\"> & {\n onFocus: (event: React.FocusEvent<HTMLInputElement> | undefined) => void;\n onMouseDown: (event: React.MouseEvent<HTMLInputElement> | undefined) => void;\n};\n\ntype ComboboxProps = {\n /*\n * Set to get combobox features. Use in combination with `noOptionsText`, `comboboxButtonAriaLabel` and Purpur TextField.\n */\n combobox: true;\n /**\n * An accessible label for the button that toggles the list of options for a combobox.\n * */\n comboboxButtonAriaLabel: string;\n /*\n * Shown when there are no options to show. Will be displayed inside a listbox item.\n */\n noOptionsText: ReactNode;\n};\n\ntype NoComboboxProps = {\n combobox?: never;\n comboboxButtonAriaLabel?: never;\n /*\n * Shown when there are no options to show. Will be displayed inside a listbox item.\n */\n noOptionsText?: ReactNode;\n};\n\nexport type UseAutocompleteResult<T extends AutocompleteOption> = {\n /*\n * Set to highlight the first option in the listbox when the input is focused.\n */\n highlightFirstOption?: boolean;\n /*\n * The default input value. Only to use when the input is uncontrolled.\n */\n defaultInputValue?: string;\n /*\n * The input value. Use this to control the input value.\n */\n inputValue?: string;\n /*\n * Invoked for each option. Use to control which options are shown.\n */\n filterOption?: (inputValue: string | undefined, option: T) => boolean;\n /*\n * Id will be used to prefix id:s of all elements.\n */\n id: string;\n /*\n * The label of the listbox (dropdown) displaying the options.\n */\n listboxLabel: string;\n /*\n * The height of the listbox. Number will be interpreted as px value. defaults to `calc(2 * var(--purpur-spacing-1200))`.\n */\n listboxMaxHeight?: string | number;\n /*\n * NOTE! Always use this instead of onBlur directly on the input element. Event handler invoked on input blur.\n */\n onInputBlur?: React.FocusEventHandler<HTMLInputElement>;\n /*\n * NOTE! Always use this instead of onChange directly on the input element. Event handler invoked when the input value changes.\n */\n onInputChange?: (value: string) => void;\n /*\n * NOTE! Always use this instead of onFocus directly on the input element. Event handler invoked on input focus.\n */\n onInputFocus?: (event: React.FocusEvent<HTMLInputElement> | undefined) => undefined;\n /*\n * NOTE! Always use this instead of onKeyDown directly on the input element. Event handler invoked on input key down.\n */\n onInputKeyDown?: React.KeyboardEventHandler<HTMLInputElement>;\n /*\n * NOTE! Always use this instead of onMouseDown directly on the input element. Event handler invoked on input mouse down.\n */\n onInputMouseDown?: (event: React.MouseEvent<HTMLInputElement> | undefined) => undefined;\n /*\n * Set to open the listbox when input gets focus.\n */\n openOnFocus?: boolean;\n /*\n * Event handler invoked when an option is selected.\n */\n onSelect?: (option: T | undefined) => void;\n /*\n * The list of options. Could include custom props.\n */\n options: T[];\n /*\n * The selected option.\n */\n selectedOption?: T;\n [\"data-testid\"]?: string;\n} & (ComboboxProps | NoComboboxProps);\n\nexport const useAutocomplete = <T extends AutocompleteOption>({\n combobox,\n comboboxButtonAriaLabel,\n highlightFirstOption,\n defaultInputValue,\n inputValue,\n filterOption,\n id,\n listboxLabel,\n listboxMaxHeight,\n onInputBlur,\n onInputChange,\n onInputFocus,\n onInputKeyDown,\n onInputMouseDown,\n openOnFocus,\n noOptionsText,\n onSelect,\n options,\n selectedOption,\n [\"data-testid\"]: dataTestid,\n}: UseAutocompleteResult<T>) => {\n const [internalInputValue, setInternalInputValue] = useState(\n ((typeof inputValue === \"string\" ? inputValue : defaultInputValue) || selectedOption?.label) ??\n \"\"\n );\n const definiteInputValue = typeof inputValue === \"string\" ? inputValue : internalInputValue;\n const [highlightedOption, setHighlightedOption] = useState<\n (T & { isSetByClickEvent?: false }) | undefined\n >(highlightFirstOption ? options[0] : undefined);\n const inputRef = useRef<HTMLInputElement>(null);\n const internalRef = useRefObject<HTMLDivElement | null>(null);\n const listboxRef = useRef<HTMLUListElement>(null);\n const optionRefs = useRef<Record<string, HTMLLIElement>>({});\n const [listboxIsOpen, setListboxIsOpen] = useState(false);\n\n function getTestId(name: string) {\n return dataTestid ? `${dataTestid}-${name}` : undefined;\n }\n\n const closeListbox = () => {\n setListboxIsOpen(false);\n setHighlightedOption(undefined);\n };\n\n useOnClickOutside(internalRef.current, closeListbox);\n\n const openListbox = ({ eventType }: { eventType: \"CLICK\" | \"KEYBOARD\" }) => {\n setListboxIsOpen(true);\n if (selectedOption) {\n requestAnimationFrame(() => {\n const isSetByClickEvent = eventType === \"CLICK\";\n setHighlightedOption({ ...selectedOption, isSetByClickEvent });\n scrollOptionIntoView(optionRefs.current[selectedOption.id]);\n });\n }\n };\n\n const filterOptions = (searchTerm: string | undefined) => {\n if (filterOption) {\n return options.filter((option) => filterOption(searchTerm, option));\n }\n\n if (!searchTerm) {\n return options;\n }\n\n const searchTermChunks = searchTerm.toUpperCase().split(\" \") || [];\n return options.filter((option) =>\n searchTermChunks.every((chunk) =>\n (option.value || option.label).toUpperCase().includes(chunk)\n )\n );\n };\n\n const getOptionsToShow = (searchTerm: string | undefined): (T | undefined)[] => {\n return selectedOption && selectedOption?.label === searchTerm\n ? options\n : filterOptions(searchTerm);\n };\n\n const optionsToShow = getOptionsToShow(definiteInputValue);\n\n const populateInputField = (value: string) => {\n onInputChange?.(value);\n setInternalInputValue(value);\n };\n\n const scrollOptionIntoView = (option: HTMLLIElement | undefined) => {\n if (option) {\n const optionRect = option.getBoundingClientRect();\n const listboxRect = listboxRef.current?.getBoundingClientRect() || { top: 0, bottom: 0 };\n const isOptionOutsideView =\n optionRect.top < listboxRect.top || optionRect.bottom > listboxRect.bottom;\n if (isOptionOutsideView) {\n option.scrollIntoView({ block: \"nearest\" });\n }\n }\n };\n\n const selectOption = (option: T | undefined) => {\n if (option) {\n inputRef.current?.focus();\n populateInputField(option.label);\n onSelect?.(option);\n }\n closeListbox();\n };\n\n const findNextOption = (key: \"ArrowUp\" | \"ArrowDown\"): T | undefined => {\n const index =\n highlightFirstOption && !highlightedOption\n ? 0\n : optionsToShow.findIndex((option) => option && highlightedOption?.id === option.id);\n\n const optionsLength = optionsToShow.length;\n\n return key === \"ArrowDown\"\n ? optionsToShow[(index ?? -1) + 1] || optionsToShow[0]\n : optionsToShow[(index ?? optionsLength) - 1] || optionsToShow[optionsLength - 1];\n };\n\n const showListbox = listboxIsOpen && (!!optionsToShow.length || !!noOptionsText);\n\n const highlightNextOption = (key: \"ArrowUp\" | \"ArrowDown\") => {\n !showListbox && openListbox({ eventType: \"KEYBOARD\" });\n const nextOption = findNextOption(key);\n\n setHighlightedOption(nextOption);\n nextOption && scrollOptionIntoView(optionRefs.current[nextOption.id]);\n };\n\n const handleOnKeyDown: React.KeyboardEventHandler<HTMLInputElement> = (event) => {\n onInputKeyDown?.(event);\n switch (event.key) {\n case \"ArrowUp\":\n case \"ArrowDown\":\n event.preventDefault(); // Preventing default to not move cursor in input\n highlightNextOption(event.key);\n break;\n case \"Enter\": {\n const optionToSelect = highlightedOption || (highlightFirstOption ? options[0] : undefined);\n showListbox && selectOption(optionToSelect);\n !showListbox && openListbox({ eventType: \"KEYBOARD\" });\n break;\n }\n case \"Escape\":\n case \"Tab\":\n closeListbox();\n break;\n }\n };\n\n const handleOnChange: React.ChangeEventHandler<HTMLInputElement> = (e) => {\n const nextOptionsToShow = getOptionsToShow(e.target.value);\n populateInputField(e.target.value);\n setHighlightedOption(undefined);\n !showListbox && openListbox({ eventType: \"KEYBOARD\" });\n highlightFirstOption &&\n nextOptionsToShow[0] &&\n scrollOptionIntoView(optionRefs.current[nextOptionsToShow[0].id]);\n };\n\n const handleOnMouseDown = (event: React.MouseEvent<HTMLInputElement> | undefined) => {\n onInputMouseDown?.(event);\n showListbox ? closeListbox() : openListbox({ eventType: \"CLICK\" });\n };\n\n const handleOnFocus = (event: React.FocusEvent<HTMLInputElement> | undefined) => {\n onInputFocus?.(event);\n !listboxIsOpen && openOnFocus && openListbox({ eventType: \"KEYBOARD\" });\n inputRef.current?.select();\n };\n\n const handleOnBlur: React.FocusEventHandler<HTMLInputElement> = (event) => {\n onInputBlur?.(event);\n // Use a timeout to allow click events on the listbox to fire before this check\n setTimeout(() => {\n if (\n !inputRef.current?.contains(document.activeElement) &&\n !listboxRef.current?.contains(document.activeElement)\n ) {\n closeListbox();\n\n // If the blur happened due to a click inside the listbox for a combobox, don't reset the value\n if (combobox) {\n populateInputField(selectedOption ? selectedOption.label : \"\");\n }\n }\n });\n };\n\n const listboxStyle: CSSProperties = {\n maxHeight: typeof listboxMaxHeight === \"number\" ? `${listboxMaxHeight}px` : listboxMaxHeight,\n };\n\n const listboxProps: ListboxProps = {\n \"aria-label\": listboxLabel,\n \"aria-expanded\": showListbox,\n \"data-testid\": getTestId(\"listbox\"),\n id: `${id}-listbox`,\n ref: listboxRef,\n onMouseLeave: () => setHighlightedOption(undefined),\n style: listboxMaxHeight ? listboxStyle : undefined,\n };\n\n const createListboxItemId = (option: T) => `${id}-listbox-item-${option.id}`;\n\n const getListBoxItemProps = (option: T, index: number): ListboxItemProps => {\n const handleOnMouseMove = () =>\n option.id !== highlightedOption?.id &&\n setHighlightedOption({ ...option, isSetByClickEvent: true });\n\n const highlighted =\n (option.id === highlightedOption?.id ||\n (!!highlightFirstOption && !highlightedOption && index === 0)) &&\n !highlightedOption?.isSetByClickEvent;\n\n return {\n \"data-testid\": getTestId(`listbox-item-${option.id}`),\n id: createListboxItemId(option),\n key: option.id,\n onMouseMove: handleOnMouseMove,\n onMouseUp: () => selectOption(option),\n ref: (el) => {\n if (el) {\n optionRefs.current[option.id] = el;\n }\n },\n tabIndex: -1,\n selected: option.id === selectedOption?.id,\n disabled: option.disabled,\n highlighted,\n hovered: option.id === highlightedOption?.id && !!highlightedOption?.isSetByClickEvent,\n };\n };\n\n const inputProps: InputProps = {\n \"aria-activedescendant\": highlightedOption ? createListboxItemId(highlightedOption) : undefined,\n \"aria-autocomplete\": \"list\",\n \"aria-controls\": listboxProps.id,\n \"data-testid\": getTestId(\"input\"),\n autoComplete: \"off\",\n id: `${id}-input`,\n onChange: handleOnChange,\n onMouseDown: handleOnMouseDown,\n onFocus: handleOnFocus,\n onKeyDown: handleOnKeyDown,\n onBlur: handleOnBlur,\n ref: inputRef,\n role: \"combobox\",\n value: definiteInputValue,\n };\n\n return {\n id,\n inputProps,\n internalRef,\n optionsToShow,\n showListbox,\n noOptionsText,\n combobox,\n comboboxButtonAriaLabel,\n getListBoxItemProps,\n listboxProps,\n };\n};\n","import type { ComponentPropsWithRef, ForwardedRef, ReactNode } from \"react\";\nimport React, { cloneElement, forwardRef } from \"react\";\nimport { IconChevronDown } from \"@purpur/icon/chevron-down\";\nimport { Listbox } from \"@purpur/listbox\";\nimport { isTextField } from \"@purpur/text-field\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./autocomplete.module.scss\";\nimport type { AutocompleteOption, UseAutocompleteResult } from \"./useAutocomplete\";\nimport { useAutocomplete } from \"./useAutocomplete\";\nimport type { Prettify } from \"./utils\";\n\nconst cx = c.bind(styles);\n\ntype AutocompleteProps<T extends AutocompleteOption> = Prettify<\n UseAutocompleteResult<T> & {\n className?: string;\n /**\n * Render the input. `props` are native input props\n */\n renderInput: (props: ComponentPropsWithRef<\"input\">) => ReactNode;\n /**\n * Invoked for each given option. Use to customize the rendering of the options\n */\n renderOption?: (option: T) => ReactNode;\n }\n>;\n\nconst rootClassName = \"purpur-autocomplete\";\n\nconst AutocompleteComponent = <T extends AutocompleteOption>(\n { className, renderInput, renderOption, ...useAutocompleteProps }: AutocompleteProps<T>,\n ref: ForwardedRef<HTMLDivElement>\n) => {\n const {\n id,\n inputProps,\n internalRef,\n optionsToShow,\n showListbox,\n noOptionsText,\n combobox,\n comboboxButtonAriaLabel,\n getListBoxItemProps,\n listboxProps,\n } = useAutocomplete(useAutocompleteProps);\n\n const renderListboxItem = (option: T, index: number) => {\n const { key, ...listboxItemProps } = getListBoxItemProps(option, index);\n\n return (\n <Listbox.Item key={key} {...listboxItemProps}>\n {renderOption ? renderOption?.(option) : option.label}\n </Listbox.Item>\n );\n };\n\n const setRootRef = (node: HTMLDivElement | null) => {\n internalRef.current = node;\n if (typeof ref === \"function\") {\n ref(node);\n } else if (ref) {\n ref.current = node;\n }\n };\n\n const getInputComponent = () => {\n const input = renderInput(inputProps);\n const isCombobox =\n combobox && comboboxButtonAriaLabel && noOptionsText && input && isTextField(input);\n\n if (isCombobox) {\n const endAdornment = (\n <>\n {input.props.endAdornment}\n <button\n data-testid=\"chevron button\"\n type=\"button\"\n className={cx(`${rootClassName}__chevron-button`)}\n onClick={() => {\n inputProps.onFocus(undefined);\n inputProps.onMouseDown(undefined);\n }}\n aria-label={comboboxButtonAriaLabel}\n aria-expanded={showListbox}\n aria-controls={listboxProps.id}\n >\n <IconChevronDown\n size=\"sm\"\n className={cx(`${rootClassName}__chevron-icon`, {\n [`${rootClassName}__chevron-icon--up`]: showListbox,\n })}\n />\n </button>\n </>\n );\n\n return cloneElement(input, { endAdornment });\n }\n\n return input;\n };\n\n return (\n <div id={id} ref={setRootRef} className={cx([rootClassName, className])}>\n {getInputComponent()}\n {showListbox && (\n <Listbox {...listboxProps} className={cx(`${rootClassName}__listbox`)}>\n {!optionsToShow.length ? (\n <Listbox.Item noninteractive>{noOptionsText}</Listbox.Item>\n ) : (\n optionsToShow.filter((option): option is T => !!option).map(renderListboxItem)\n )}\n </Listbox>\n )}\n </div>\n );\n};\n\n/* @deprecated use `Dropdown` or `SearchField` instead, this is only exported for backwards compatibility and will be removed in a future release */\nexport const Autocomplete = forwardRef(AutocompleteComponent);\nAutocomplete.displayName = \"Autocomplete\";\n\nexport type {\n AutocompleteOption,\n UseAutocompleteResult as UseAutocompleteOptions,\n} from \"./useAutocomplete\";\nexport { useAutocomplete } from \"./useAutocomplete\";\n"],"names":["useRefObject","value","useRef","useOnClickOutside","element","callback","handleClickOutside","useCallback","event","useEffect","useAutocomplete","combobox","comboboxButtonAriaLabel","highlightFirstOption","defaultInputValue","inputValue","filterOption","id","listboxLabel","listboxMaxHeight","onInputBlur","onInputChange","onInputFocus","onInputKeyDown","onInputMouseDown","openOnFocus","noOptionsText","onSelect","options","selectedOption","dataTestid","internalInputValue","setInternalInputValue","useState","definiteInputValue","highlightedOption","setHighlightedOption","inputRef","internalRef","listboxRef","optionRefs","listboxIsOpen","setListboxIsOpen","getTestId","name","closeListbox","openListbox","eventType","scrollOptionIntoView","filterOptions","searchTerm","option","searchTermChunks","chunk","getOptionsToShow","optionsToShow","populateInputField","optionRect","listboxRect","selectOption","findNextOption","key","index","optionsLength","showListbox","highlightNextOption","nextOption","handleOnKeyDown","optionToSelect","handleOnChange","nextOptionsToShow","handleOnMouseDown","handleOnFocus","handleOnBlur","listboxStyle","listboxProps","createListboxItemId","getListBoxItemProps","handleOnMouseMove","highlighted","el","inputProps","cx","c","styles","rootClassName","AutocompleteComponent","className","renderInput","renderOption","useAutocompleteProps","ref","renderListboxItem","listboxItemProps","jsx","Listbox","setRootRef","node","getInputComponent","input","isTextField","endAdornment","jsxs","Fragment","IconChevronDown","cloneElement","Autocomplete","forwardRef"],"mappings":"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"}