@purpur/library 10.1.1 → 10.2.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 (286) hide show
  1. package/CHANGELOG.json +45 -0
  2. package/CHANGELOG.md +19 -1
  3. package/dist/LICENSE.txt +14 -7
  4. package/dist/{RichText-B865Qkzj.js → RichText-CeYecUFV.js} +2 -2
  5. package/dist/{RichText-B865Qkzj.js.map → RichText-CeYecUFV.js.map} +1 -1
  6. package/dist/{RichText-CPkBwXNI.mjs → RichText-CwQfDo_S.mjs} +2 -2
  7. package/dist/{RichText-CPkBwXNI.mjs.map → RichText-CwQfDo_S.mjs.map} +1 -1
  8. package/dist/{ThemeProvider-BJGm3zai.js → ThemeProvider-BGep6X_i.js} +2 -2
  9. package/dist/{ThemeProvider-BJGm3zai.js.map → ThemeProvider-BGep6X_i.js.map} +1 -1
  10. package/dist/{ThemeProvider-BJ25_asg.mjs → ThemeProvider-BrAZhasG.mjs} +13 -13
  11. package/dist/{ThemeProvider-BJ25_asg.mjs.map → ThemeProvider-BrAZhasG.mjs.map} +1 -1
  12. package/dist/components/avatar/src/avatar.d.ts +1 -1
  13. package/dist/components/card/src/card-content-container.d.ts +2 -2
  14. package/dist/components/comparison-table/src/components/OptionCard/option-card.d.ts +1 -1
  15. package/dist/components/container/src/container.visual.fixtures.d.ts +14 -0
  16. package/dist/components/container/src/container.visual.fixtures.d.ts.map +1 -0
  17. package/dist/components/content-block/src/content-block-group.d.ts +2 -2
  18. package/dist/components/content-block/src/content-block.d.ts +2 -2
  19. package/dist/components/countdown/src/countdown.d.ts +1 -1
  20. package/dist/components/countdown/src/countdown.d.ts.map +1 -1
  21. package/dist/components/countdown/src/countdown.types.d.ts +19 -3
  22. package/dist/components/countdown/src/countdown.types.d.ts.map +1 -1
  23. package/dist/components/date-field/src/date-field.d.ts +14 -6
  24. package/dist/components/date-field/src/date-field.d.ts.map +1 -1
  25. package/dist/components/date-field/src/utils.d.ts +40 -2
  26. package/dist/components/date-field/src/utils.d.ts.map +1 -1
  27. package/dist/components/date-picker/src/date-picker.d.ts +4 -4
  28. package/dist/components/date-range-field/src/date-range-field.d.ts +3 -1
  29. package/dist/components/date-range-field/src/date-range-field.d.ts.map +1 -1
  30. package/dist/components/dismissable-chip-group/src/dismissable-chip-group-item.d.ts +2 -2
  31. package/dist/components/dismissable-chip-group/src/dismissable-chip-group.d.ts +2 -2
  32. package/dist/components/drawer/src/drawer-container.d.ts +2 -2
  33. package/dist/components/drawer/src/drawer-content.d.ts +2 -2
  34. package/dist/components/drawer/src/drawer-scroll-area.d.ts +1 -1
  35. package/dist/components/dropdown/src/dropdown-combobox.d.ts.map +1 -1
  36. package/dist/components/dropdown/src/dropdown-shared.d.ts +3 -1
  37. package/dist/components/dropdown/src/dropdown-shared.d.ts.map +1 -1
  38. package/dist/components/dropdown/src/dropdown.types.d.ts +3 -0
  39. package/dist/components/dropdown/src/dropdown.types.d.ts.map +1 -1
  40. package/dist/components/dropdown/src/useDropdown.d.ts +1 -1
  41. package/dist/components/field-error-text/src/field-error-text.d.ts +1 -1
  42. package/dist/components/file-upload/src/file-upload-types.d.ts +1 -1
  43. package/dist/components/footer/src/footer-navigation.d.ts +2 -2
  44. package/dist/components/footer/src/footer-social-link.d.ts +2 -2
  45. package/dist/components/footer/src/footer.d.ts +3 -3
  46. package/dist/components/hero-banner/src/hero-banner-actions.d.ts +2 -2
  47. package/dist/components/hero-banner/src/hero-banner-media.d.ts +2 -2
  48. package/dist/components/hero-banner/src/hero-banner-types.d.ts +3 -3
  49. package/dist/components/link/src/link.d.ts +1 -1
  50. package/dist/components/listbox/src/listbox-item.d.ts +2 -2
  51. package/dist/components/loading/src/loading-illustrative.d.ts +1 -1
  52. package/dist/components/modal/src/modal-content.d.ts +2 -2
  53. package/dist/components/modal/src/modal-trigger.d.ts +2 -2
  54. package/dist/components/pagination/src/pagination-page-selector.d.ts +2 -2
  55. package/dist/components/pagination/src/pagination-page-trigger.d.ts +2 -2
  56. package/dist/components/pagination/src/pagination-step-trigger.d.ts +1 -1
  57. package/dist/components/pagination/src/types.d.ts +2 -2
  58. package/dist/components/pagination/src/use-page-options.hook.d.ts +2 -2
  59. package/dist/components/pagination/src/use-page-size-options.hook.d.ts +2 -2
  60. package/dist/components/password-field/src/password-field.d.ts +1 -1
  61. package/dist/components/password-field/src/password-strength-indicator.d.ts +2 -2
  62. package/dist/components/password-field/src/password-strength.d.ts +2 -2
  63. package/dist/components/popover/src/popover-button.d.ts +2 -2
  64. package/dist/components/product-card/src/product-card.d.ts +3 -3
  65. package/dist/components/promotion-card/src/promotion-card.d.ts +3 -3
  66. package/dist/components/quantity-selector/src/quantity-selector.d.ts +1 -1
  67. package/dist/components/radio-button-group/src/radio-button-group-root.d.ts +3 -3
  68. package/dist/components/radio-card-group/src/radio-card-item.d.ts +1 -1
  69. package/dist/components/rich-text/src/types.d.ts +1 -1
  70. package/dist/components/search-field/src/search-field-autocomplete.d.ts +7 -4
  71. package/dist/components/search-field/src/search-field-autocomplete.d.ts.map +1 -1
  72. package/dist/components/search-field/src/search-field-base.d.ts +4 -2
  73. package/dist/components/search-field/src/search-field-base.d.ts.map +1 -1
  74. package/dist/components/search-field/src/search-field.d.ts +12 -6
  75. package/dist/components/search-field/src/search-field.d.ts.map +1 -1
  76. package/dist/components/spinner/src/spinner.d.ts +1 -1
  77. package/dist/components/stepper/src/stepper-container.d.ts +2 -2
  78. package/dist/components/stepper/src/stepper-content.d.ts +2 -2
  79. package/dist/components/stepper/src/stepper-link.d.ts +1 -1
  80. package/dist/components/stepper/src/stepper.d.ts +1 -1
  81. package/dist/components/table/src/cell-types/button-group-cell.d.ts +3 -3
  82. package/dist/components/table/src/table-content.d.ts +2 -2
  83. package/dist/components/table/src/table.d.ts +2 -2
  84. package/dist/components/table/src/types.d.ts +4 -4
  85. package/dist/components/tabs/src/tab-content.d.ts +2 -2
  86. package/dist/components/text-field/src/text-field.d.ts +1 -1
  87. package/dist/components/text-spacing/src/text-spacing.d.ts +1 -1
  88. package/dist/components/toggle/src/toggle.d.ts +1 -1
  89. package/dist/components/tooltip/src/tooltip.d.ts +3 -3
  90. package/dist/components-metadata.js +1 -0
  91. package/dist/countdown-CdGFNLZq.js +2 -0
  92. package/dist/countdown-CdGFNLZq.js.map +1 -0
  93. package/dist/countdown-G7eg3CZj.mjs +188 -0
  94. package/dist/countdown-G7eg3CZj.mjs.map +1 -0
  95. package/dist/countdown.cjs.js +1 -1
  96. package/dist/countdown.es.js +1 -1
  97. package/dist/date-field-D8yGH1mw.js +2 -0
  98. package/dist/{date-field-CtpWDaSh.js.map → date-field-D8yGH1mw.js.map} +1 -1
  99. package/dist/{date-field-_rCuf15v.mjs → date-field-DVMPYoLT.mjs} +361 -311
  100. package/dist/{date-field-_rCuf15v.mjs.map → date-field-DVMPYoLT.mjs.map} +1 -1
  101. package/dist/date-field.cjs.js +1 -1
  102. package/dist/date-field.es.js +1 -1
  103. package/dist/{date-picker-sqcNAplg.mjs → date-picker-Ban9DLsx.mjs} +6 -6
  104. package/dist/{date-picker-sqcNAplg.mjs.map → date-picker-Ban9DLsx.mjs.map} +1 -1
  105. package/dist/{date-picker-BYlszX1W.js → date-picker-re3cPV_Z.js} +2 -2
  106. package/dist/{date-picker-BYlszX1W.js.map → date-picker-re3cPV_Z.js.map} +1 -1
  107. package/dist/date-picker.cjs.js +1 -1
  108. package/dist/date-picker.es.js +1 -1
  109. package/dist/date-range-field-8JmPw-Ei.js +2 -0
  110. package/dist/date-range-field-8JmPw-Ei.js.map +1 -0
  111. package/dist/{date-range-field-BmjQeiOv.mjs → date-range-field-dmJO66U_.mjs} +64 -61
  112. package/dist/date-range-field-dmJO66U_.mjs.map +1 -0
  113. package/dist/date-range-field.cjs.js +1 -1
  114. package/dist/date-range-field.es.js +1 -1
  115. package/dist/dismissable-chip-group-CVo3CS8K.js +2 -0
  116. package/dist/dismissable-chip-group-CVo3CS8K.js.map +1 -0
  117. package/dist/dismissable-chip-group-Dov2-9Fe.mjs +95 -0
  118. package/dist/dismissable-chip-group-Dov2-9Fe.mjs.map +1 -0
  119. package/dist/dismissable-chip-group.cjs.js +1 -1
  120. package/dist/dismissable-chip-group.es.js +1 -1
  121. package/dist/{drawer-oFJcxW58.js → drawer-CSagTJjN.js} +2 -2
  122. package/dist/{drawer-oFJcxW58.js.map → drawer-CSagTJjN.js.map} +1 -1
  123. package/dist/{drawer-Chx3H8EU.mjs → drawer-Cw-Y9XH9.mjs} +3 -3
  124. package/dist/{drawer-Chx3H8EU.mjs.map → drawer-Cw-Y9XH9.mjs.map} +1 -1
  125. package/dist/drawer.cjs.js +1 -1
  126. package/dist/drawer.es.js +1 -1
  127. package/dist/dropdown-BAM4nQhd.mjs +955 -0
  128. package/dist/dropdown-BAM4nQhd.mjs.map +1 -0
  129. package/dist/dropdown-Cr8DVw2T.js +2 -0
  130. package/dist/dropdown-Cr8DVw2T.js.map +1 -0
  131. package/dist/dropdown.cjs.js +1 -1
  132. package/dist/dropdown.es.js +1 -1
  133. package/dist/{file-upload-MvNuX4ks.js → file-upload-CdlYkCg8.js} +2 -2
  134. package/dist/{file-upload-MvNuX4ks.js.map → file-upload-CdlYkCg8.js.map} +1 -1
  135. package/dist/{file-upload-Ctw6LCTU.mjs → file-upload-ih5NqF67.mjs} +2 -2
  136. package/dist/{file-upload-Ctw6LCTU.mjs.map → file-upload-ih5NqF67.mjs.map} +1 -1
  137. package/dist/file-upload.cjs.js +1 -1
  138. package/dist/file-upload.es.js +1 -1
  139. package/dist/{footer-DkVmTd-f.mjs → footer-CVVt8hUE.mjs} +3 -3
  140. package/dist/{footer-DkVmTd-f.mjs.map → footer-CVVt8hUE.mjs.map} +1 -1
  141. package/dist/{footer-Bbemct3Z.js → footer-Cat9-v7l.js} +2 -2
  142. package/dist/{footer-Bbemct3Z.js.map → footer-Cat9-v7l.js.map} +1 -1
  143. package/dist/footer.cjs.js +1 -1
  144. package/dist/footer.es.js +1 -1
  145. package/dist/{hero-banner-Mag1OwL4.js → hero-banner-BNw3eNTs.js} +2 -2
  146. package/dist/{hero-banner-Mag1OwL4.js.map → hero-banner-BNw3eNTs.js.map} +1 -1
  147. package/dist/{hero-banner-ChDoFRhq.mjs → hero-banner-MnKuFSku.mjs} +2 -2
  148. package/dist/{hero-banner-ChDoFRhq.mjs.map → hero-banner-MnKuFSku.mjs.map} +1 -1
  149. package/dist/hero-banner.cjs.js +1 -1
  150. package/dist/hero-banner.es.js +1 -1
  151. package/dist/libraries/library/src/quantity-selector.d.ts +2 -2
  152. package/dist/libraries/library/src/toggle.d.ts +2 -2
  153. package/dist/libraries/theme/src/theme-props.d.ts +1 -0
  154. package/dist/libraries/theme/src/theme-props.d.ts.map +1 -1
  155. package/dist/libraries/tokens/dist/color/variables.d.ts +1 -0
  156. package/dist/libraries/tokens/dist/color/variables.dark.d.ts +1 -0
  157. package/dist/library.cjs.js +1 -1
  158. package/dist/library.es.js +293 -292
  159. package/dist/{modal-CXOYUsJm.js → modal-BSN-wIcN.js} +2 -2
  160. package/dist/{modal-CXOYUsJm.js.map → modal-BSN-wIcN.js.map} +1 -1
  161. package/dist/{modal-Pwvhrzn-.mjs → modal-CnzUgU97.mjs} +3 -3
  162. package/dist/{modal-Pwvhrzn-.mjs.map → modal-CnzUgU97.mjs.map} +1 -1
  163. package/dist/modal.cjs.js +1 -1
  164. package/dist/modal.es.js +1 -1
  165. package/dist/{popover-B6ntmuEK.mjs → popover-B-oWzP-0.mjs} +3 -3
  166. package/dist/{popover-B6ntmuEK.mjs.map → popover-B-oWzP-0.mjs.map} +1 -1
  167. package/dist/{popover-DJHMEFXP.js → popover-BzoAQW0i.js} +2 -2
  168. package/dist/{popover-DJHMEFXP.js.map → popover-BzoAQW0i.js.map} +1 -1
  169. package/dist/popover.cjs.js +1 -1
  170. package/dist/popover.es.js +1 -1
  171. package/dist/{promotion-card-B3mz__m7.js → promotion-card-B8bnNVZ-.js} +2 -2
  172. package/dist/{promotion-card-B3mz__m7.js.map → promotion-card-B8bnNVZ-.js.map} +1 -1
  173. package/dist/{promotion-card-Co6qAkTZ.mjs → promotion-card-DwNbzSK3.mjs} +2 -2
  174. package/dist/{promotion-card-Co6qAkTZ.mjs.map → promotion-card-DwNbzSK3.mjs.map} +1 -1
  175. package/dist/promotion-card.cjs.js +1 -1
  176. package/dist/promotion-card.es.js +1 -1
  177. package/dist/purpur.css +1 -1
  178. package/dist/rich-text.cjs.js +1 -1
  179. package/dist/rich-text.es.js +1 -1
  180. package/dist/search-field-BR4gETPP.js +2 -0
  181. package/dist/search-field-BR4gETPP.js.map +1 -0
  182. package/dist/search-field-DyBcoB9g.mjs +186 -0
  183. package/dist/search-field-DyBcoB9g.mjs.map +1 -0
  184. package/dist/search-field.cjs.js +1 -1
  185. package/dist/search-field.es.js +1 -1
  186. package/dist/{stepper-D59T-Y2_.mjs → stepper-CGBjyjVw.mjs} +2 -2
  187. package/dist/{stepper-D59T-Y2_.mjs.map → stepper-CGBjyjVw.mjs.map} +1 -1
  188. package/dist/{stepper-Dao4XaDV.js → stepper-CbcFVE3v.js} +2 -2
  189. package/dist/{stepper-Dao4XaDV.js.map → stepper-CbcFVE3v.js.map} +1 -1
  190. package/dist/stepper.cjs.js +1 -1
  191. package/dist/stepper.es.js +1 -1
  192. package/dist/{table-CllIkAkM.js → table-CFBK5Gv4.js} +3 -3
  193. package/dist/{table-CllIkAkM.js.map → table-CFBK5Gv4.js.map} +1 -1
  194. package/dist/{table-7-6k_wGH.mjs → table-PdfWMFks.mjs} +8 -8
  195. package/dist/{table-7-6k_wGH.mjs.map → table-PdfWMFks.mjs.map} +1 -1
  196. package/dist/table.cjs.js +1 -1
  197. package/dist/table.es.js +1 -1
  198. package/dist/{text-area-9RUldq6W.js → text-area-AHqUSmEE.js} +2 -2
  199. package/dist/{text-area-9RUldq6W.js.map → text-area-AHqUSmEE.js.map} +1 -1
  200. package/dist/{text-area-C58aZEPa.mjs → text-area-DabB5eo_.mjs} +3 -3
  201. package/dist/{text-area-C58aZEPa.mjs.map → text-area-DabB5eo_.mjs.map} +1 -1
  202. package/dist/text-area.cjs.js +1 -1
  203. package/dist/text-area.es.js +1 -1
  204. package/dist/{text-spacing-BU0mkEf9.mjs → text-spacing-Bmkv_rmc.mjs} +3 -3
  205. package/dist/{text-spacing-BU0mkEf9.mjs.map → text-spacing-Bmkv_rmc.mjs.map} +1 -1
  206. package/dist/{text-spacing-CiGPZHuB.js → text-spacing-CdnbUO6z.js} +2 -2
  207. package/dist/{text-spacing-CiGPZHuB.js.map → text-spacing-CdnbUO6z.js.map} +1 -1
  208. package/dist/text-spacing.cjs.js +1 -1
  209. package/dist/text-spacing.es.js +1 -1
  210. package/dist/theme.cjs.js +1 -1
  211. package/dist/theme.es.js +3 -3
  212. package/dist/tokens/color/variables.css +1 -0
  213. package/dist/tokens/color/variables.d.ts +1 -0
  214. package/dist/tokens/color/variables.dark.css +1 -0
  215. package/dist/tokens/color/variables.dark.d.ts +1 -0
  216. package/dist/tokens/color/variables.dark.js +1 -0
  217. package/dist/tokens/color/variables.dark.json +1 -0
  218. package/dist/tokens/color/variables.dark.scss +1 -0
  219. package/dist/tokens/color/variables.js +1 -0
  220. package/dist/tokens/color/variables.json +1 -0
  221. package/dist/tokens/color/variables.scss +1 -0
  222. package/dist/tokens.cjs.js +1 -1
  223. package/dist/tokens.es.js +167 -166
  224. package/dist/{tooltip-DeP1UsPW.js → tooltip-DRW4N9Z-.js} +2 -2
  225. package/dist/{tooltip-DeP1UsPW.js.map → tooltip-DRW4N9Z-.js.map} +1 -1
  226. package/dist/{tooltip-bqdd2lJL.mjs → tooltip-DzY9olpb.mjs} +3 -3
  227. package/dist/{tooltip-bqdd2lJL.mjs.map → tooltip-DzY9olpb.mjs.map} +1 -1
  228. package/dist/tooltip.cjs.js +1 -1
  229. package/dist/tooltip.es.js +1 -1
  230. package/dist/use-autocomplete.es-CoAeiJiu.mjs +155 -0
  231. package/dist/use-autocomplete.es-CoAeiJiu.mjs.map +1 -0
  232. package/dist/use-autocomplete.es-Djt1u2i8.js +2 -0
  233. package/dist/use-autocomplete.es-Djt1u2i8.js.map +1 -0
  234. package/dist/useColorScheme-BtOgJUTy.js +2 -0
  235. package/dist/{useColorScheme-BHhPgv9q.js.map → useColorScheme-BtOgJUTy.js.map} +1 -1
  236. package/dist/{useColorScheme-B7lGBSe4.mjs → useColorScheme-DXAxJPXW.mjs} +2 -2
  237. package/dist/{useColorScheme-B7lGBSe4.mjs.map → useColorScheme-DXAxJPXW.mjs.map} +1 -1
  238. package/dist/useThemePortalContainer-Cs1c-2AI.js +2 -0
  239. package/dist/{useThemePortalContainer-CUcqV327.js.map → useThemePortalContainer-Cs1c-2AI.js.map} +1 -1
  240. package/dist/useThemePortalContainer-DeKoE-E_.mjs +9 -0
  241. package/dist/{useThemePortalContainer-D13Xx24N.mjs.map → useThemePortalContainer-DeKoE-E_.mjs.map} +1 -1
  242. package/dist/variables-CTBx79yI.js +2 -0
  243. package/dist/{variables-D1vNo1lO.js.map → variables-CTBx79yI.js.map} +1 -1
  244. package/dist/variables-Do6SfyT0.mjs +258 -0
  245. package/dist/{variables-BrsAsWIF.mjs.map → variables-Do6SfyT0.mjs.map} +1 -1
  246. package/package.json +18 -18
  247. package/src/library.ts +72 -2
  248. package/tokens/color/variables.css +1 -0
  249. package/tokens/color/variables.d.ts +1 -0
  250. package/tokens/color/variables.dark.css +1 -0
  251. package/tokens/color/variables.dark.d.ts +1 -0
  252. package/tokens/color/variables.dark.js +1 -0
  253. package/tokens/color/variables.dark.json +1 -0
  254. package/tokens/color/variables.dark.scss +1 -0
  255. package/tokens/color/variables.js +1 -0
  256. package/tokens/color/variables.json +1 -0
  257. package/tokens/color/variables.scss +1 -0
  258. package/dist/countdown-5Ni6OlVY.mjs +0 -189
  259. package/dist/countdown-5Ni6OlVY.mjs.map +0 -1
  260. package/dist/countdown-CGXJyzB2.js +0 -2
  261. package/dist/countdown-CGXJyzB2.js.map +0 -1
  262. package/dist/date-field-CtpWDaSh.js +0 -2
  263. package/dist/date-range-field-B33XeBW8.js +0 -2
  264. package/dist/date-range-field-B33XeBW8.js.map +0 -1
  265. package/dist/date-range-field-BmjQeiOv.mjs.map +0 -1
  266. package/dist/dismissable-chip-group-5ALErhD2.js +0 -2
  267. package/dist/dismissable-chip-group-5ALErhD2.js.map +0 -1
  268. package/dist/dismissable-chip-group-DMNU7g5e.mjs +0 -94
  269. package/dist/dismissable-chip-group-DMNU7g5e.mjs.map +0 -1
  270. package/dist/dropdown-B7W5fErJ.js +0 -2
  271. package/dist/dropdown-B7W5fErJ.js.map +0 -1
  272. package/dist/dropdown-CxEElxNf.mjs +0 -952
  273. package/dist/dropdown-CxEElxNf.mjs.map +0 -1
  274. package/dist/search-field-BTJtRyw5.mjs +0 -184
  275. package/dist/search-field-BTJtRyw5.mjs.map +0 -1
  276. package/dist/search-field-nzVXak1a.js +0 -2
  277. package/dist/search-field-nzVXak1a.js.map +0 -1
  278. package/dist/use-autocomplete.es-BwAzMcau.js +0 -2
  279. package/dist/use-autocomplete.es-BwAzMcau.js.map +0 -1
  280. package/dist/use-autocomplete.es-CKb0RHKG.mjs +0 -144
  281. package/dist/use-autocomplete.es-CKb0RHKG.mjs.map +0 -1
  282. package/dist/useColorScheme-BHhPgv9q.js +0 -2
  283. package/dist/useThemePortalContainer-CUcqV327.js +0 -2
  284. package/dist/useThemePortalContainer-D13Xx24N.mjs +0 -9
  285. package/dist/variables-BrsAsWIF.mjs +0 -257
  286. package/dist/variables-D1vNo1lO.js +0 -2
@@ -0,0 +1,955 @@
1
+ import { jsxs as Z, jsx as l, Fragment as ke } from "react/jsx-runtime";
2
+ import { useState as xe, forwardRef as $e, useId as ye, useRef as me, useCallback as De, useEffect as Me } from "react";
3
+ import { t as Ue, x as Ye } from "./use-autocomplete.es-CoAeiJiu.mjs";
4
+ import { L as ue } from "./listbox-CtV-Vcmy.mjs";
5
+ import { C as Ie } from "./checkbox-DaRtZXrE.mjs";
6
+ import { a as Oe } from "./dismissable-chip-group-Dov2-9Fe.mjs";
7
+ import { F as qe } from "./field-error-text-CBSX8dGx.mjs";
8
+ import { F as ze } from "./field-helper-text-C5ee4SFV.mjs";
9
+ import { r as je } from "./check-circle-filled.es-umBwOv5_.mjs";
10
+ import { l as Ge } from "./chevron-down.es-PCIIj6oG.mjs";
11
+ import { L as We } from "./label-7sJe5-pX.mjs";
12
+ import { a as Xe } from "./spinner-DRQN6YdK.mjs";
13
+ import { c as Je } from "./bind-CU-R61T-.mjs";
14
+ const ee = (e) => typeof e.label == "string" ? e.label : e.value ?? "", Qe = {
15
+ "purpur-dropdown": "_purpur-dropdown_p8b57_1",
16
+ "purpur-dropdown--negative": "_purpur-dropdown--negative_p8b57_14",
17
+ "purpur-dropdown__label": "_purpur-dropdown__label_p8b57_17",
18
+ "purpur-dropdown__field-row": "_purpur-dropdown__field-row_p8b57_22",
19
+ "purpur-dropdown__frame": "_purpur-dropdown__frame_p8b57_26",
20
+ "purpur-dropdown__frame--negative": "_purpur-dropdown__frame--negative_p8b57_33",
21
+ "purpur-dropdown__trigger-container": "_purpur-dropdown__trigger-container_p8b57_36",
22
+ "purpur-dropdown__chip-group": "_purpur-dropdown__chip-group_p8b57_48",
23
+ "purpur-dropdown__trigger-container--has-tags": "_purpur-dropdown__trigger-container--has-tags_p8b57_52",
24
+ "purpur-dropdown__trigger-container--disabled": "_purpur-dropdown__trigger-container--disabled_p8b57_55",
25
+ "purpur-dropdown__trigger-container--readonly": "_purpur-dropdown__trigger-container--readonly_p8b57_55",
26
+ "purpur-dropdown__trigger-container--negative": "_purpur-dropdown__trigger-container--negative_p8b57_62",
27
+ "purpur-dropdown__trigger-container--error": "_purpur-dropdown__trigger-container--error_p8b57_65",
28
+ "purpur-dropdown__trigger-container--is-valid": "_purpur-dropdown__trigger-container--is-valid_p8b57_68",
29
+ "purpur-dropdown__input": "_purpur-dropdown__input_p8b57_71",
30
+ "purpur-dropdown__trigger": "_purpur-dropdown__trigger_p8b57_36",
31
+ "purpur-dropdown__trigger--placeholder": "_purpur-dropdown__trigger--placeholder_p8b57_119",
32
+ "purpur-dropdown__trigger--is-valid": "_purpur-dropdown__trigger--is-valid_p8b57_122",
33
+ "purpur-dropdown__trigger--disabled": "_purpur-dropdown__trigger--disabled_p8b57_125",
34
+ "purpur-dropdown__trigger--readonly": "_purpur-dropdown__trigger--readonly_p8b57_129",
35
+ "purpur-dropdown__trigger--negative": "_purpur-dropdown__trigger--negative_p8b57_133",
36
+ "purpur-dropdown__trigger-text": "_purpur-dropdown__trigger-text_p8b57_146",
37
+ "purpur-dropdown__combobox-container": "_purpur-dropdown__combobox-container_p8b57_152",
38
+ "purpur-dropdown__combobox-container--disabled": "_purpur-dropdown__combobox-container--disabled_p8b57_162",
39
+ "purpur-dropdown__combobox-container--readonly": "_purpur-dropdown__combobox-container--readonly_p8b57_169",
40
+ "purpur-dropdown__combobox-container--error": "_purpur-dropdown__combobox-container--error_p8b57_176",
41
+ "purpur-dropdown__combobox-container--is-valid": "_purpur-dropdown__combobox-container--is-valid_p8b57_179",
42
+ "purpur-dropdown__combobox-container--negative": "_purpur-dropdown__combobox-container--negative_p8b57_182",
43
+ "purpur-dropdown__input--negative": "_purpur-dropdown__input--negative_p8b57_221",
44
+ "purpur-dropdown__chip-group--select": "_purpur-dropdown__chip-group--select_p8b57_244",
45
+ "purpur-dropdown__chip-group-more": "_purpur-dropdown__chip-group-more_p8b57_250",
46
+ "purpur-dropdown__end-adornments": "_purpur-dropdown__end-adornments_p8b57_261",
47
+ "purpur-dropdown__chevron-icon": "_purpur-dropdown__chevron-icon_p8b57_272",
48
+ "purpur-dropdown__chevron-icon--open": "_purpur-dropdown__chevron-icon--open_p8b57_277",
49
+ "purpur-dropdown__chevron-icon--disabled": "_purpur-dropdown__chevron-icon--disabled_p8b57_280",
50
+ "purpur-dropdown__chevron-icon--readonly": "_purpur-dropdown__chevron-icon--readonly_p8b57_283",
51
+ "purpur-dropdown__chevron-icon--negative": "_purpur-dropdown__chevron-icon--negative_p8b57_286",
52
+ "purpur-dropdown__valid-icon": "_purpur-dropdown__valid-icon_p8b57_289",
53
+ "purpur-dropdown__listbox": "_purpur-dropdown__listbox_p8b57_292",
54
+ "purpur-dropdown__checkbox-item-multiple": "_purpur-dropdown__checkbox-item-multiple_p8b57_301",
55
+ "purpur-dropdown__checkbox-container": "_purpur-dropdown__checkbox-container_p8b57_304",
56
+ "purpur-dropdown__checkbox-container--disabled": "_purpur-dropdown__checkbox-container--disabled_p8b57_311",
57
+ "purpur-dropdown__select-all-child": "_purpur-dropdown__select-all-child_p8b57_314"
58
+ }, m = Je.bind(Qe), r = "purpur-dropdown", Le = ({
59
+ fieldId: e,
60
+ htmlForSuffix: o,
61
+ label: d,
62
+ getTestId: c,
63
+ disabled: n,
64
+ negative: u,
65
+ required: b
66
+ }) => d ? /* @__PURE__ */ Z(
67
+ We,
68
+ {
69
+ htmlFor: o ? `${e}-${o}` : e,
70
+ className: m(`${r}__label`),
71
+ "data-testid": c("label"),
72
+ disabled: n,
73
+ negative: u,
74
+ children: [
75
+ b && /* @__PURE__ */ l("span", { "aria-hidden": !0, children: "*" }),
76
+ d
77
+ ]
78
+ }
79
+ ) : null, Ne = ({
80
+ getTestId: e,
81
+ loading: o,
82
+ disabled: d,
83
+ negative: c,
84
+ isValid: n,
85
+ isOpen: u,
86
+ readOnly: b,
87
+ showChevronOpen: w
88
+ }) => /* @__PURE__ */ l("span", { className: m(`${r}__end-adornments`), children: o ? /* @__PURE__ */ l(
89
+ Xe,
90
+ {
91
+ disabled: d,
92
+ size: "xxs",
93
+ negative: c,
94
+ "data-testid": e("spinner")
95
+ }
96
+ ) : /* @__PURE__ */ Z(ke, { children: [
97
+ n && /* @__PURE__ */ l(
98
+ je,
99
+ {
100
+ "data-testid": e("valid-icon"),
101
+ className: m(`${r}__valid-icon`)
102
+ }
103
+ ),
104
+ /* @__PURE__ */ l(
105
+ Ge,
106
+ {
107
+ className: m(`${r}__chevron-icon`, {
108
+ [`${r}__chevron-icon--open`]: w && u,
109
+ [`${r}__chevron-icon--disabled`]: d,
110
+ [`${r}__chevron-icon--readonly`]: b && !d,
111
+ [`${r}__chevron-icon--is-valid`]: n,
112
+ [`${r}__chevron-icon--negative`]: c
113
+ }),
114
+ "data-testid": e("dropdown-icon"),
115
+ size: "sm"
116
+ }
117
+ )
118
+ ] }) }), Ce = 6, Ee = ({
119
+ selectedItems: e,
120
+ getTestId: o,
121
+ disabled: d,
122
+ negative: c,
123
+ onRemove: n,
124
+ isSelect: u,
125
+ moreOptionsText: b,
126
+ removeOptionAriaLabel: w
127
+ }) => {
128
+ if (!e.length) return null;
129
+ const p = b !== void 0 && e.length > Ce ? e.slice(-Ce) : e, $ = e.length - p.length;
130
+ return /* @__PURE__ */ Z(
131
+ Oe,
132
+ {
133
+ className: m(`${r}__chip-group`, {
134
+ [`${r}__chip-group--select`]: u
135
+ }),
136
+ negative: c,
137
+ "data-testid": o("tags"),
138
+ size: "sm",
139
+ children: [
140
+ p.map((s) => /* @__PURE__ */ l(
141
+ Oe.Item,
142
+ {
143
+ id: s.id,
144
+ "data-testid": o(`tag-${s.id}`),
145
+ "aria-label": w ? `${w} ${ee(s)}` : ee(s),
146
+ onDismiss: () => {
147
+ n(s);
148
+ },
149
+ disabled: d || s.disabled,
150
+ children: s.label
151
+ },
152
+ s.id
153
+ )),
154
+ $ > 0 && /* @__PURE__ */ l(
155
+ "li",
156
+ {
157
+ className: m(`${r}__chip-group-more`),
158
+ "data-testid": o("tags-more"),
159
+ children: `+${$} ${b}`
160
+ }
161
+ )
162
+ ]
163
+ }
164
+ );
165
+ }, Ae = ({
166
+ errorText: e,
167
+ helperText: o,
168
+ helperTextId: d,
169
+ negative: c
170
+ }) => /* @__PURE__ */ Z(ke, { children: [
171
+ e && /* @__PURE__ */ l(qe, { negative: c, children: e }),
172
+ o && !e && /* @__PURE__ */ l(ze, { id: d, negative: c, children: o })
173
+ ] }), de = "__purpur-dropdown-select-all__", Re = ({
174
+ selectAllLabel: e,
175
+ multiple: o,
176
+ options: d,
177
+ selectedItems: c
178
+ }) => !e || !o || d.filter((w) => !w.disabled).length === 0 ? !1 : !d.filter((w) => w.disabled).some(
179
+ (w) => !c.some((k) => k.id === w.id)
180
+ ), Te = ({
181
+ optionsToShow: e,
182
+ getListboxItemProps: o,
183
+ multiple: d,
184
+ negative: c,
185
+ fieldId: n,
186
+ noOptionsText: u,
187
+ selectAllLabel: b,
188
+ selectedItems: w = [],
189
+ renderLabel: k = (p) => p.label
190
+ }) => {
191
+ if (u !== void 0 && !e.length)
192
+ return /* @__PURE__ */ l(ue.Item, { noninteractive: !0, children: u });
193
+ const p = e[0]?.id === de;
194
+ let $ = !1;
195
+ if (p) {
196
+ const _ = e.filter((f) => f.id !== de).filter((f) => !f.disabled), y = _.filter(
197
+ (f) => w.some((O) => O.id === f.id)
198
+ ).length, h = _.length > 0 && y === _.length, a = w.length > 0;
199
+ $ = h ? !0 : a ? "indeterminate" : !1;
200
+ }
201
+ return e.map((s, _) => {
202
+ const { key: y, selected: h, ...a } = o(s, _);
203
+ return s.id === de ? /* @__PURE__ */ l(
204
+ ue.Item,
205
+ {
206
+ ...a,
207
+ "aria-selected": $ === !0,
208
+ className: m(
209
+ `${r}__checkbox-item-multiple`,
210
+ `${r}__select-all-item`
211
+ ),
212
+ hideSelectedIcon: !0,
213
+ children: /* @__PURE__ */ l("span", { className: m(`${r}__checkbox-container`), children: /* @__PURE__ */ l(
214
+ Ie,
215
+ {
216
+ id: `${n}-checkbox-select-all`,
217
+ checked: $,
218
+ label: b,
219
+ negative: c,
220
+ "aria-hidden": !0
221
+ }
222
+ ) })
223
+ },
224
+ y
225
+ ) : d ? /* @__PURE__ */ l(
226
+ ue.Item,
227
+ {
228
+ ...a,
229
+ className: m(`${r}__checkbox-item-multiple`, {
230
+ [`${r}__select-all-child`]: p
231
+ }),
232
+ selected: !!h,
233
+ hideSelectedIcon: !0,
234
+ children: /* @__PURE__ */ l(
235
+ "span",
236
+ {
237
+ className: m(`${r}__checkbox-container`, {
238
+ [`${r}__checkbox-container--disabled`]: s.disabled
239
+ }),
240
+ children: /* @__PURE__ */ l(
241
+ Ie,
242
+ {
243
+ id: `${n}-checkbox-${s.id}`,
244
+ checked: !!h,
245
+ label: k(s),
246
+ negative: c,
247
+ "aria-hidden": !0,
248
+ disabled: s.disabled
249
+ }
250
+ )
251
+ }
252
+ )
253
+ },
254
+ y
255
+ ) : /* @__PURE__ */ l(ue.Item, { ...a, selected: !!h, children: /* @__PURE__ */ l("div", { children: k(s) }) }, y);
256
+ });
257
+ }, Ze = (e, o, d) => {
258
+ if (d)
259
+ return e.filter((n) => d(o, n));
260
+ if (!o) return e;
261
+ const c = o.toUpperCase().split(" ");
262
+ return e.filter(
263
+ (n) => c.every(
264
+ (u) => (n.value || (typeof n.label == "string" ? n.label : "")).toUpperCase().includes(u)
265
+ )
266
+ );
267
+ }, Be = ({
268
+ options: e,
269
+ searchTerm: o,
270
+ filterOption: d,
271
+ selectedOption: c,
272
+ multiple: n
273
+ }) => !n && c && ee(c) === o ? e : Ze(e, o, d), Fe = ({
274
+ controlledInputValue: e,
275
+ defaultInputValue: o,
276
+ selectedOption: d,
277
+ onInputChange: c
278
+ }) => {
279
+ const [n, u] = xe(
280
+ (typeof e == "string" ? e : o ?? (d ? ee(d) : void 0)) ?? ""
281
+ );
282
+ return {
283
+ displayInputValue: typeof e == "string" ? e : n,
284
+ populateInputField: (k) => {
285
+ c?.(k), u(k);
286
+ }
287
+ };
288
+ }, Pe = $e((e, o) => {
289
+ const {
290
+ id: d,
291
+ label: c,
292
+ options: n,
293
+ className: u,
294
+ errorText: b,
295
+ helperText: w,
296
+ placeholder: k,
297
+ negative: p = !1,
298
+ readOnly: $ = !1,
299
+ disabled: s = !1,
300
+ required: _ = !1,
301
+ valid: y,
302
+ loading: h,
303
+ multiple: a = !1,
304
+ selectedOption: f,
305
+ selectedOptions: O = [],
306
+ onSelect: S,
307
+ openOnFocus: se = !1,
308
+ listboxMaxHeight: E,
309
+ listboxLabel: _e,
310
+ filterOption: K,
311
+ inputValue: re,
312
+ defaultInputValue: z,
313
+ onInputChange: g,
314
+ noOptionsText: te,
315
+ highlightFirstOption: V = !1,
316
+ selectAllLabel: D,
317
+ moreOptionsText: X,
318
+ removeOptionAriaLabel: A,
319
+ formatOption: L,
320
+ ["data-testid"]: H
321
+ } = e, oe = ye(), C = d ?? oe, M = (i) => H ? `${H}-${i}` : void 0, j = !!y && !b, le = `${C}-helper-text`, v = a ? O : f ? [f] : [], { displayInputValue: U, populateInputField: G } = Fe({
322
+ controlledInputValue: re,
323
+ defaultInputValue: z,
324
+ selectedOption: f,
325
+ onInputChange: g
326
+ }), ae = Be({
327
+ options: n,
328
+ searchTerm: U,
329
+ filterOption: K,
330
+ selectedOption: f,
331
+ multiple: a
332
+ }), ce = Re({
333
+ selectAllLabel: D,
334
+ multiple: a,
335
+ options: n,
336
+ selectedItems: v
337
+ }), R = ce && (ce && !U) ? [{ id: de, label: D }, ...ae] : ae, be = () => {
338
+ const i = n.filter((N) => !N.disabled);
339
+ if (i.every(
340
+ (N) => v.some((P) => P.id === N.id)
341
+ )) {
342
+ const N = v.filter((P) => P.disabled);
343
+ S?.(void 0, N);
344
+ } else {
345
+ const P = [...v.filter((ve) => ve.disabled), ...i];
346
+ S?.(void 0, P);
347
+ }
348
+ G("");
349
+ }, J = (i) => {
350
+ if (i.id === de) {
351
+ be();
352
+ return;
353
+ }
354
+ if (a) {
355
+ const N = v.some((P) => P.id === i.id) ? v.filter((P) => P.id !== i.id) : [...v, i];
356
+ S?.(i, N), G("");
357
+ } else
358
+ S?.(i, [i]), G(ee(i));
359
+ }, {
360
+ rootRef: ne,
361
+ inputRef: q,
362
+ inputProps: Q,
363
+ listboxProps: he,
364
+ getListboxItemProps: x,
365
+ isOpen: T,
366
+ openListbox: B,
367
+ anchorStyle: W
368
+ } = Ue({
369
+ id: C,
370
+ // useAutocomplete only reads id/disabled, never label's value, so this is safe even though
371
+ // DropdownOption.label can be a ReactNode instead of the string it's typed to require.
372
+ options: R,
373
+ listboxLabel: _e || c || "Options",
374
+ selectedOption: a ? void 0 : f,
375
+ disabled: s,
376
+ readOnly: $,
377
+ openOnFocus: se,
378
+ listboxMaxHeight: E,
379
+ highlightFirstOption: V,
380
+ closeOnSelect: !a,
381
+ noOptionsText: te,
382
+ negative: p,
383
+ onSelect: J,
384
+ "data-testid": H
385
+ }), fe = (i) => {
386
+ ne.current = i, typeof o == "function" ? o(i) : o && (o.current = i);
387
+ }, t = (i, I) => {
388
+ const N = x(i, I);
389
+ if (a) {
390
+ const P = v.some((ve) => ve.id === i.id);
391
+ return { ...N, selected: P, "aria-selected": P };
392
+ }
393
+ return N;
394
+ }, F = (i) => L ? L(i, U) : typeof i.label != "string" ? i.label : /* @__PURE__ */ l(Ye, { text: i.label, query: U }), ie = (i) => {
395
+ const I = v.filter((N) => N.id !== i.id);
396
+ S?.(i, I);
397
+ }, Y = (i) => {
398
+ if (a && i.key === "Backspace" && i.currentTarget.value === "" && v.length > 0) {
399
+ for (let I = v.length - 1; I >= 0; I--)
400
+ if (!v[I].disabled) {
401
+ ie(v[I]);
402
+ break;
403
+ }
404
+ }
405
+ Q?.onKeyDown?.(i);
406
+ }, we = (i) => {
407
+ G(i.target.value), T || B();
408
+ }, pe = (i) => {
409
+ Q?.onBlur?.(i), !a && setTimeout(() => {
410
+ if (ne.current?.contains(document.activeElement)) return;
411
+ const I = f ? ee(f) : "";
412
+ U !== I && G(I);
413
+ });
414
+ }, Ve = (i) => {
415
+ if (s || $) return;
416
+ const I = i.target;
417
+ if (I === q.current || I.closest("button"))
418
+ return;
419
+ const N = q.current;
420
+ N?.dispatchEvent(new MouseEvent("mousedown", { bubbles: !0 })), N?.focus();
421
+ }, Se = a && !!D && n.length > 0 && n.every((i) => v.some((I) => I.id === i.id)), He = m(r, u, {
422
+ [`${r}--negative`]: p
423
+ });
424
+ return /* @__PURE__ */ Z("div", { ref: fe, className: He, children: [
425
+ /* @__PURE__ */ l(
426
+ Le,
427
+ {
428
+ fieldId: C,
429
+ htmlForSuffix: "input",
430
+ label: c,
431
+ getTestId: M,
432
+ disabled: s,
433
+ negative: p,
434
+ required: _
435
+ }
436
+ ),
437
+ /* @__PURE__ */ l("div", { className: m(`${r}__field-row`), children: /* @__PURE__ */ Z(
438
+ "div",
439
+ {
440
+ className: m(`${r}__combobox-container`, {
441
+ [`${r}__combobox-container--error`]: !!b,
442
+ [`${r}__combobox-container--is-valid`]: j,
443
+ [`${r}__combobox-container--negative`]: p,
444
+ [`${r}__combobox-container--disabled`]: s,
445
+ [`${r}__combobox-container--readonly`]: $ && !s
446
+ }),
447
+ style: W,
448
+ onClick: Ve,
449
+ children: [
450
+ a && !Se && /* @__PURE__ */ l(
451
+ Ee,
452
+ {
453
+ selectedItems: v,
454
+ getTestId: M,
455
+ disabled: s,
456
+ negative: p,
457
+ onRemove: ie,
458
+ moreOptionsText: X,
459
+ removeOptionAriaLabel: A
460
+ }
461
+ ),
462
+ /* @__PURE__ */ l(
463
+ "input",
464
+ {
465
+ ...Q,
466
+ ref: q,
467
+ id: `${C}-input`,
468
+ "data-testid": M("input"),
469
+ onKeyDown: Y,
470
+ onChange: we,
471
+ onBlur: pe,
472
+ value: Se && !U ? D : U,
473
+ placeholder: k,
474
+ className: m(`${r}__input`, {
475
+ [`${r}__input--negative`]: p
476
+ }),
477
+ "aria-describedby": le,
478
+ "aria-invalid": !!b,
479
+ disabled: s,
480
+ readOnly: $
481
+ }
482
+ ),
483
+ /* @__PURE__ */ l(
484
+ Ne,
485
+ {
486
+ getTestId: M,
487
+ loading: h,
488
+ disabled: s,
489
+ negative: p,
490
+ isValid: j,
491
+ isOpen: T,
492
+ showChevronOpen: !0
493
+ }
494
+ ),
495
+ /* @__PURE__ */ l(
496
+ "span",
497
+ {
498
+ className: m(`${r}__frame`, {
499
+ [`${r}__frame--negative`]: p
500
+ })
501
+ }
502
+ )
503
+ ]
504
+ }
505
+ ) }),
506
+ T && /* @__PURE__ */ l(ue, { ...he, className: m(`${r}__listbox`), children: Te({
507
+ optionsToShow: R,
508
+ getListboxItemProps: t,
509
+ multiple: a,
510
+ negative: p,
511
+ fieldId: C,
512
+ noOptionsText: te,
513
+ selectAllLabel: D,
514
+ selectedItems: v,
515
+ renderLabel: F
516
+ }) }),
517
+ /* @__PURE__ */ l(
518
+ Ae,
519
+ {
520
+ errorText: b,
521
+ helperText: w,
522
+ helperTextId: le,
523
+ negative: p
524
+ }
525
+ )
526
+ ] });
527
+ });
528
+ Pe.displayName = "DropdownCombobox";
529
+ const er = ({
530
+ options: e,
531
+ highlightFirstOption: o
532
+ }) => {
533
+ const d = me(null), c = me({}), [n, u] = xe(
534
+ o ? e[0] : void 0
535
+ ), b = (_) => {
536
+ if (_) {
537
+ const y = _.getBoundingClientRect(), h = d.current?.getBoundingClientRect() || { top: 0, bottom: 0 };
538
+ (y.top < h.top || y.bottom > h.bottom) && _.scrollIntoView({ block: "nearest" });
539
+ }
540
+ };
541
+ return {
542
+ highlightedOption: n,
543
+ listboxRef: d,
544
+ optionRefs: c,
545
+ findNextOption: (_, y) => {
546
+ const h = y.filter((f) => !f.disabled);
547
+ if (!h.length) return;
548
+ const a = n ? h.findIndex((f) => f.id === n.id) : -1;
549
+ return _ === "ArrowDown" ? h[(a + 1) % h.length] : h[(a - 1 + h.length) % h.length];
550
+ },
551
+ highlightOption: (_) => {
552
+ u(_ ? { ..._ } : void 0), _ && b(c.current[_.id]);
553
+ },
554
+ highlightByClick: (_) => {
555
+ _.id !== n?.id && u({ ..._, isSetByClickEvent: !0 });
556
+ },
557
+ highlightSelected: (_, y) => {
558
+ requestAnimationFrame(() => {
559
+ u({ ..._, isSetByClickEvent: y === "CLICK" }), b(c.current[_.id]);
560
+ });
561
+ },
562
+ resetHighlight: () => {
563
+ u(void 0);
564
+ }
565
+ };
566
+ }, rr = (e, o) => {
567
+ const d = De(
568
+ (c) => {
569
+ e && !e.contains(c.target) && o();
570
+ },
571
+ [o, e]
572
+ );
573
+ Me(() => (document.addEventListener("mousedown", d), () => {
574
+ document.removeEventListener("mousedown", d);
575
+ }), [d]);
576
+ }, tr = ({
577
+ id: e,
578
+ variant: o,
579
+ options: d,
580
+ listboxLabel: c,
581
+ multiple: n = !1,
582
+ selectedOption: u,
583
+ selectedOptions: b = [],
584
+ onSelect: w,
585
+ filterOption: k,
586
+ inputValue: p,
587
+ defaultInputValue: $,
588
+ onInputChange: s,
589
+ noOptionsText: _,
590
+ highlightFirstOption: y = !1,
591
+ openOnFocus: h = !1,
592
+ listboxMaxHeight: a,
593
+ negative: f,
594
+ disabled: O = !1,
595
+ readOnly: S = !1,
596
+ ["data-testid"]: se
597
+ }) => {
598
+ const E = o === "combobox", _e = ye(), K = me(null), re = me(null), z = me(null), g = er({ options: d, highlightFirstOption: y }), { displayInputValue: te, populateInputField: V } = Fe({
599
+ controlledInputValue: p,
600
+ defaultInputValue: $,
601
+ selectedOption: u,
602
+ onInputChange: s
603
+ }), [D, X] = xe(!1), A = () => {
604
+ X(!1), g.resetHighlight();
605
+ };
606
+ rr(K.current, A);
607
+ const L = ({ eventType: t }) => {
608
+ X(!0);
609
+ const F = n ? void 0 : u;
610
+ F && g.highlightSelected(F, t);
611
+ }, H = n ? b : u ? [u] : [], oe = E ? Be({
612
+ options: d,
613
+ searchTerm: te,
614
+ filterOption: k,
615
+ selectedOption: u,
616
+ multiple: n
617
+ }) : d, C = D && (!!oe.length || !!_), M = (t) => se ? `${se}-${t}` : void 0, j = (t) => {
618
+ if (!(!t || t.disabled))
619
+ if (n) {
620
+ const ie = H.some((Y) => Y.id === t.id) ? H.filter((Y) => Y.id !== t.id) : [...H, t];
621
+ w?.(t, ie), E && (V(""), z.current?.focus());
622
+ } else
623
+ w?.(t, [t]), E && V(ee(t)), A(), (E ? z : re).current?.focus();
624
+ }, le = (t) => {
625
+ C || L({ eventType: "KEYBOARD" });
626
+ const F = g.findNextOption(t, oe);
627
+ g.highlightOption(F);
628
+ }, v = (t) => {
629
+ if (!(O || S))
630
+ switch (t.key) {
631
+ case "ArrowUp":
632
+ case "ArrowDown":
633
+ t.preventDefault(), le(t.key);
634
+ break;
635
+ case "Enter": {
636
+ t.preventDefault(), C && g.highlightedOption ? j(g.highlightedOption) : C || L({ eventType: "KEYBOARD" });
637
+ break;
638
+ }
639
+ case " ": {
640
+ E || (t.preventDefault(), C && g.highlightedOption ? j(g.highlightedOption) : C || L({ eventType: "KEYBOARD" }));
641
+ break;
642
+ }
643
+ case "Escape":
644
+ t.preventDefault(), A();
645
+ break;
646
+ case "Tab":
647
+ A();
648
+ break;
649
+ case "Home":
650
+ case "End":
651
+ E && A();
652
+ break;
653
+ }
654
+ }, U = (t) => {
655
+ V(t.target.value), g.resetHighlight(), D || L({ eventType: "KEYBOARD" });
656
+ }, G = () => {
657
+ O || S || (D ? A() : L({ eventType: "CLICK" }));
658
+ }, ae = () => {
659
+ !D && h && !O && !S && L({ eventType: "KEYBOARD" }), z.current?.select();
660
+ }, ce = () => {
661
+ setTimeout(() => {
662
+ const t = document.activeElement;
663
+ t !== document.body && !z.current?.contains(t) && !g.listboxRef.current?.contains(t) && !K.current?.contains(t) && (A(), E && !n && V(u ? ee(u) : ""));
664
+ });
665
+ }, ge = () => {
666
+ O || S || (D ? A() : L({ eventType: "CLICK" }));
667
+ }, R = (t) => {
668
+ if (O || S) return;
669
+ const F = t.target.closest("button");
670
+ F && F !== re.current || ge();
671
+ }, be = () => {
672
+ !D && h && !O && !S && L({ eventType: "KEYBOARD" });
673
+ }, J = `${e}-listbox`, ne = (t) => `${e}-listbox-item-${t.id}`, q = `--purpur-dropdown-${_e.replace(/:/g, "")}`, Q = { anchorName: q }, he = E ? null : {
674
+ onClick: R
675
+ }, x = De(
676
+ (t) => {
677
+ if (g.listboxRef.current = t, t && typeof t.showPopover == "function")
678
+ try {
679
+ t.showPopover();
680
+ } catch {
681
+ }
682
+ },
683
+ [g.listboxRef]
684
+ ), T = {
685
+ "aria-label": c,
686
+ "aria-expanded": C,
687
+ "data-testid": M("listbox"),
688
+ id: J,
689
+ ref: x,
690
+ onMouseLeave: () => g.resetHighlight(),
691
+ popover: "manual",
692
+ negative: f,
693
+ style: {
694
+ ...a ? {
695
+ maxHeight: typeof a == "number" ? `${a}px` : a
696
+ } : {},
697
+ positionAnchor: q
698
+ }
699
+ }, B = (t, F) => {
700
+ const ie = H.some((pe) => pe.id === t.id), { highlightedOption: Y } = g, we = (t.id === Y?.id || y && !Y && F === 0) && !Y?.isSetByClickEvent;
701
+ return {
702
+ "data-testid": M(`listbox-item-${t.id}`),
703
+ id: ne(t),
704
+ key: t.id,
705
+ onMouseMove: () => g.highlightByClick(t),
706
+ onMouseUp: () => j(t),
707
+ ref: (pe) => {
708
+ pe && (g.optionRefs.current[t.id] = pe);
709
+ },
710
+ tabIndex: -1,
711
+ selected: ie,
712
+ disabled: t.disabled,
713
+ highlighted: we,
714
+ hovered: t.id === Y?.id && !!Y?.isSetByClickEvent,
715
+ "aria-selected": ie
716
+ };
717
+ }, W = E ? {} : {
718
+ ref: re,
719
+ type: "button",
720
+ role: "combobox",
721
+ "aria-haspopup": "listbox",
722
+ "aria-expanded": C,
723
+ "aria-controls": J,
724
+ "aria-disabled": O,
725
+ "data-testid": M("trigger"),
726
+ id: `${e}-trigger`,
727
+ onKeyDown: v,
728
+ onFocus: be,
729
+ disabled: O,
730
+ tabIndex: O ? -1 : 0,
731
+ style: Q
732
+ }, fe = E ? {
733
+ ref: z,
734
+ role: "combobox",
735
+ "aria-autocomplete": "list",
736
+ "aria-expanded": C,
737
+ "aria-controls": J,
738
+ "aria-activedescendant": g.highlightedOption ? ne(g.highlightedOption) : void 0,
739
+ "data-testid": M("input"),
740
+ autoComplete: "off",
741
+ id: `${e}-input`,
742
+ type: "text",
743
+ value: te,
744
+ onChange: U,
745
+ onMouseDown: G,
746
+ onFocus: ae,
747
+ onBlur: ce,
748
+ onKeyDown: v,
749
+ disabled: O,
750
+ readOnly: S
751
+ } : null;
752
+ return {
753
+ rootRef: K,
754
+ triggerContainerProps: he,
755
+ triggerProps: W,
756
+ inputProps: fe,
757
+ listboxProps: T,
758
+ getListboxItemProps: B,
759
+ optionsToShow: oe,
760
+ isOpen: C,
761
+ highlightedOption: g.highlightedOption,
762
+ selectedItems: H,
763
+ anchorStyle: Q
764
+ };
765
+ }, Ke = $e((e, o) => {
766
+ const {
767
+ id: d,
768
+ label: c,
769
+ options: n,
770
+ className: u,
771
+ errorText: b,
772
+ helperText: w,
773
+ placeholder: k,
774
+ negative: p = !1,
775
+ readOnly: $ = !1,
776
+ disabled: s = !1,
777
+ required: _ = !1,
778
+ valid: y = !1,
779
+ loading: h = !1,
780
+ multiple: a = !1,
781
+ selectedOption: f,
782
+ selectedOptions: O = [],
783
+ onSelect: S,
784
+ openOnFocus: se = !1,
785
+ listboxMaxHeight: E,
786
+ listboxLabel: _e,
787
+ selectAllLabel: K,
788
+ moreOptionsText: re,
789
+ removeOptionAriaLabel: z,
790
+ ["data-testid"]: g
791
+ } = e, te = ye(), V = d ?? te, D = (x) => g ? `${g}-${x}` : void 0, X = !!y && !b, A = `${V}-helper-text`, L = a ? O : f ? [f] : [], H = Re({
792
+ selectAllLabel: K,
793
+ multiple: a,
794
+ options: n,
795
+ selectedItems: L
796
+ }), oe = () => {
797
+ const x = n.filter((B) => !B.disabled);
798
+ if (x.every(
799
+ (B) => L.some((W) => W.id === B.id)
800
+ )) {
801
+ const B = L.filter((W) => W.disabled);
802
+ S?.(void 0, B);
803
+ } else {
804
+ const W = [...L.filter((fe) => fe.disabled), ...x];
805
+ S?.(void 0, W);
806
+ }
807
+ }, C = (x, T) => {
808
+ if (x?.id === de) {
809
+ oe();
810
+ return;
811
+ }
812
+ S?.(x, T);
813
+ }, M = H ? [{ id: de, label: K }, ...n] : n, j = tr({
814
+ id: V,
815
+ variant: "select",
816
+ options: M,
817
+ listboxLabel: _e || c || "Options",
818
+ multiple: a,
819
+ negative: p,
820
+ selectedOption: f,
821
+ selectedOptions: O,
822
+ onSelect: C,
823
+ openOnFocus: se,
824
+ listboxMaxHeight: E,
825
+ disabled: s,
826
+ readOnly: $,
827
+ "data-testid": g
828
+ }), le = (x) => {
829
+ j.rootRef.current = x, typeof o == "function" ? o(x) : o && (o.current = x);
830
+ }, {
831
+ triggerContainerProps: v,
832
+ triggerProps: U,
833
+ listboxProps: G,
834
+ getListboxItemProps: ae,
835
+ optionsToShow: ce,
836
+ isOpen: ge,
837
+ selectedItems: R,
838
+ anchorStyle: be
839
+ } = j, J = {
840
+ ...U
841
+ };
842
+ delete J.style;
843
+ const ne = (x) => {
844
+ const T = R.filter((B) => B.id !== x.id);
845
+ S?.(x, T);
846
+ }, q = a && !!K && n.length > 0 && n.every((x) => R.some((T) => T.id === x.id)), Q = a ? q ? K : R.length === 0 && k || "" : f?.label || k || "", he = m(r, u, {
847
+ [`${r}--negative`]: p
848
+ });
849
+ return /* @__PURE__ */ Z("div", { ref: le, className: he, children: [
850
+ /* @__PURE__ */ l(
851
+ Le,
852
+ {
853
+ fieldId: V,
854
+ htmlForSuffix: "trigger",
855
+ label: c,
856
+ getTestId: D,
857
+ disabled: s,
858
+ negative: p,
859
+ required: _
860
+ }
861
+ ),
862
+ /* @__PURE__ */ l("div", { className: m(`${r}__field-row`), children: /* @__PURE__ */ Z(
863
+ "div",
864
+ {
865
+ ...v,
866
+ className: m(`${r}__trigger-container`, {
867
+ [`${r}__trigger-container--error`]: !!b,
868
+ [`${r}__trigger-container--is-valid`]: X,
869
+ [`${r}__trigger-container--negative`]: p,
870
+ [`${r}__trigger-container--disabled`]: s,
871
+ [`${r}__trigger-container--readonly`]: $ && !s,
872
+ [`${r}__trigger-container--has-tags`]: a && R.length > 0 && !q
873
+ }),
874
+ style: be,
875
+ children: [
876
+ a && !q && /* @__PURE__ */ l(
877
+ Ee,
878
+ {
879
+ selectedItems: R,
880
+ getTestId: D,
881
+ disabled: s,
882
+ negative: p,
883
+ onRemove: ne,
884
+ moreOptionsText: re,
885
+ removeOptionAriaLabel: z,
886
+ isSelect: !0
887
+ }
888
+ ),
889
+ /* @__PURE__ */ l(
890
+ "button",
891
+ {
892
+ ...J,
893
+ className: m(`${r}__trigger`, {
894
+ [`${r}__trigger--is-valid`]: X,
895
+ [`${r}__trigger--negative`]: p,
896
+ [`${r}__trigger--disabled`]: s,
897
+ [`${r}__trigger--readonly`]: $ && !s,
898
+ [`${r}__trigger--placeholder`]: !R.length
899
+ }),
900
+ "aria-describedby": A,
901
+ children: /* @__PURE__ */ l("span", { className: m(`${r}__trigger-text`), children: Q })
902
+ }
903
+ ),
904
+ /* @__PURE__ */ l(
905
+ Ne,
906
+ {
907
+ getTestId: D,
908
+ loading: h,
909
+ disabled: s,
910
+ negative: p,
911
+ isValid: X,
912
+ isOpen: ge,
913
+ readOnly: $,
914
+ showChevronOpen: !0
915
+ }
916
+ ),
917
+ /* @__PURE__ */ l(
918
+ "span",
919
+ {
920
+ className: m(`${r}__frame`, {
921
+ [`${r}__frame--negative`]: p
922
+ })
923
+ }
924
+ )
925
+ ]
926
+ }
927
+ ) }),
928
+ ge && /* @__PURE__ */ l(ue, { ...G, className: m(`${r}__listbox`), children: Te({
929
+ optionsToShow: ce,
930
+ getListboxItemProps: ae,
931
+ multiple: a,
932
+ negative: p,
933
+ fieldId: V,
934
+ selectAllLabel: K,
935
+ selectedItems: R
936
+ }) }),
937
+ /* @__PURE__ */ l(
938
+ Ae,
939
+ {
940
+ errorText: b,
941
+ helperText: w,
942
+ helperTextId: A,
943
+ negative: p
944
+ }
945
+ )
946
+ ] });
947
+ });
948
+ Ke.displayName = "DropdownSelect";
949
+ const or = $e((e, o) => e.combobox ? /* @__PURE__ */ l(Pe, { ref: o, ...e }) : /* @__PURE__ */ l(Ke, { ref: o, ...e }));
950
+ or.displayName = "Dropdown";
951
+ export {
952
+ or as D,
953
+ tr as u
954
+ };
955
+ //# sourceMappingURL=dropdown-BAM4nQhd.mjs.map