@purpur/library 9.10.1 → 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 (496) hide show
  1. package/CHANGELOG.json +106 -0
  2. package/CHANGELOG.md +44 -1
  3. package/dist/LICENSE.txt +234 -179
  4. package/dist/{RichText-IejAKqm2.js → RichText-B865Qkzj.js} +2 -2
  5. package/dist/{RichText-IejAKqm2.js.map → RichText-B865Qkzj.js.map} +1 -1
  6. package/dist/{RichText-2_z57EYi.mjs → RichText-CPkBwXNI.mjs} +2 -2
  7. package/dist/{RichText-2_z57EYi.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-CTWhxuS4.mjs → calendar-DTL_g0ue.mjs} +4 -14
  21. package/dist/{calendar-CTWhxuS4.mjs.map → calendar-DTL_g0ue.mjs.map} +1 -1
  22. package/dist/{calendar-Cwzqytai.js → calendar-DVOrK53J.js} +2 -2
  23. package/dist/{calendar-Cwzqytai.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-DiKGSL-7.mjs → carousel-Dq9yzk_-.mjs} +2 -2
  33. package/dist/{carousel-DiKGSL-7.mjs.map → carousel-Dq9yzk_-.mjs.map} +1 -1
  34. package/dist/{carousel-Dz_bUGo4.js → carousel-j-s6M1hu.js} +2 -2
  35. package/dist/{carousel-Dz_bUGo4.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-B2jmpVNr.js → chat-field-CLAjIHlM.js} +2 -2
  39. package/dist/{chat-field-B2jmpVNr.js.map → chat-field-CLAjIHlM.js.map} +1 -1
  40. package/dist/{chat-field-8cKqYcKi.mjs → chat-field-nxFRXoQx.mjs} +2 -2
  41. package/dist/{chat-field-8cKqYcKi.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-N5G3k2kr.js → comparison-table-CRWRijfG.js} +2 -2
  53. package/dist/{comparison-table-N5G3k2kr.js.map → comparison-table-CRWRijfG.js.map} +1 -1
  54. package/dist/{comparison-table-CmtSOUfK.mjs → comparison-table-DYaRaP9Z.mjs} +3 -3
  55. package/dist/{comparison-table-CmtSOUfK.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 +5 -5
  59. package/dist/components/accordion/src/accordion-item.d.ts.map +1 -1
  60. package/dist/components/accordion/src/accordion.d.ts +2 -6
  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/badge/src/badge.d.ts +1 -1
  65. package/dist/components/button/src/button.d.ts +3 -4
  66. package/dist/components/button/src/button.d.ts.map +1 -1
  67. package/dist/components/button/src/button.visual.fixtures.d.ts +1 -1
  68. package/dist/components/calendar/src/calendar.d.ts.map +1 -1
  69. package/dist/components/card/src/card-badge.d.ts +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-heading.d.ts +5 -5
  73. package/dist/components/card/src/card-heading.d.ts.map +1 -1
  74. package/dist/components/card/src/card-root.d.ts +1 -1
  75. package/dist/components/color-dot/src/color-dot.d.ts +2 -1
  76. package/dist/components/color-dot/src/color-dot.d.ts.map +1 -1
  77. package/dist/components/comparison-table/src/components/OptionCard/option-card.d.ts +1 -1
  78. package/dist/components/content-block/src/content-block-group.d.ts +1 -1
  79. package/dist/components/content-block/src/content-block.d.ts +2 -2
  80. package/dist/components/content-block/src/content-block.d.ts.map +1 -1
  81. package/dist/components/counter-badge/src/counter-badge.d.ts +1 -1
  82. package/dist/components/country-flag-icon/src/all-country-flag-assets.d.ts +0 -1
  83. package/dist/components/country-flag-icon/src/all-country-flag-assets.d.ts.map +1 -1
  84. package/dist/components/country-flag-icon/src/country-flag-icon.d.ts +1 -1
  85. package/dist/components/cta-link/src/cta-link.d.ts +10 -10
  86. package/dist/components/date-field/src/date-field.d.ts +1 -1
  87. package/dist/components/date-picker/src/date-picker.d.ts +1 -1
  88. package/dist/components/date-range-field/src/date-range-field.d.ts +2 -2
  89. package/dist/components/date-range-field/src/date-range-field.d.ts.map +1 -1
  90. package/dist/components/dismissable-chip-group/src/dismissable-chip-group.d.ts +2 -2
  91. package/dist/components/dismissable-chip-group/src/dismissable-chip-group.d.ts.map +1 -1
  92. package/dist/components/drawer/src/drawer-container.d.ts +1 -1
  93. package/dist/components/drawer/src/drawer-container.d.ts.map +1 -1
  94. package/dist/components/drawer/src/drawer-frame.d.ts +2 -2
  95. package/dist/components/drawer/src/drawer-handle.d.ts +1 -1
  96. package/dist/components/drawer/src/drawer-header.d.ts +1 -1
  97. package/dist/components/drawer/src/drawer-scroll-area.d.ts +1 -1
  98. package/dist/components/drawer/src/drawer-trigger.d.ts +1 -1
  99. package/dist/components/drawer/src/drawer.context.d.ts +2 -0
  100. package/dist/components/drawer/src/drawer.context.d.ts.map +1 -1
  101. package/dist/components/drawer/src/drawer.d.ts +2 -0
  102. package/dist/components/drawer/src/drawer.d.ts.map +1 -1
  103. package/dist/components/dropdown/src/dropdown-combobox.d.ts +2 -34
  104. package/dist/components/dropdown/src/dropdown-combobox.d.ts.map +1 -1
  105. package/dist/components/dropdown/src/dropdown-select.d.ts +2 -34
  106. package/dist/components/dropdown/src/dropdown-select.d.ts.map +1 -1
  107. package/dist/components/dropdown/src/dropdown-shared.d.ts +2 -1
  108. package/dist/components/dropdown/src/dropdown-shared.d.ts.map +1 -1
  109. package/dist/components/dropdown/src/dropdown.types.d.ts +24 -13
  110. package/dist/components/dropdown/src/dropdown.types.d.ts.map +1 -1
  111. package/dist/components/dropdown/src/useDropdown.d.ts +1 -1
  112. package/dist/components/dropdown/src/useDropdown.d.ts.map +1 -1
  113. package/dist/components/dropdown/src/useDropdownFilter.d.ts.map +1 -1
  114. package/dist/components/dropdown/src/useDropdownInput.d.ts.map +1 -1
  115. package/dist/components/field-helper-text/src/field-helper-text.d.ts +1 -1
  116. package/dist/components/file-upload/src/file-upload-button.d.ts +22 -0
  117. package/dist/components/file-upload/src/file-upload-button.d.ts.map +1 -0
  118. package/dist/components/file-upload/src/file-upload-drag-and-drop.d.ts +10 -0
  119. package/dist/components/file-upload/src/file-upload-drag-and-drop.d.ts.map +1 -0
  120. package/dist/components/file-upload/src/file-upload-file-name-label.d.ts +8 -0
  121. package/dist/components/file-upload/src/file-upload-file-name-label.d.ts.map +1 -0
  122. package/dist/components/file-upload/src/file-upload-icon.d.ts +8 -0
  123. package/dist/components/file-upload/src/file-upload-icon.d.ts.map +1 -0
  124. package/dist/components/file-upload/src/file-upload-types.d.ts +82 -0
  125. package/dist/components/file-upload/src/file-upload-types.d.ts.map +1 -0
  126. package/dist/components/file-upload/src/file-upload-utils.d.ts +7 -0
  127. package/dist/components/file-upload/src/file-upload-utils.d.ts.map +1 -0
  128. package/dist/components/file-upload/src/file-upload.d.ts +6 -0
  129. package/dist/components/file-upload/src/file-upload.d.ts.map +1 -0
  130. package/dist/components/file-upload/src/file-upload.visual.fixtures.d.ts +14 -0
  131. package/dist/components/file-upload/src/file-upload.visual.fixtures.d.ts.map +1 -0
  132. package/dist/components/footer/src/footer-social-link.d.ts +3 -3
  133. package/dist/components/heading/src/heading.d.ts +22 -4
  134. package/dist/components/heading/src/heading.d.ts.map +1 -1
  135. package/dist/components/hero-banner/src/hero-banner-types.d.ts +4 -4
  136. package/dist/components/hero-banner/src/hero-banner-types.d.ts.map +1 -1
  137. package/dist/components/hero-banner/src/hero-banner.d.ts +1 -1
  138. package/dist/components/hero-banner/src/hero-banner.d.ts.map +1 -1
  139. package/dist/components/icon/src/icon.d.ts +2 -2
  140. package/dist/components/illustrative-icon/src/static-illustrative-icon.d.ts +2 -2
  141. package/dist/components/label/src/label.d.ts +1 -1
  142. package/dist/components/listbox/src/listbox.d.ts +1 -1
  143. package/dist/components/loading/src/loading-illustrative.d.ts +1 -1
  144. package/dist/components/logo/src/logo.types.d.ts +1 -1
  145. package/dist/components/modal/src/modal-content.d.ts +1 -1
  146. package/dist/components/modal/src/modal-content.d.ts.map +1 -1
  147. package/dist/components/notification-banner/src/notification-banner.d.ts +3 -3
  148. package/dist/components/notification-banner/src/notification-banner.d.ts.map +1 -1
  149. package/dist/components/pagination/src/pagination-page-size-selector.d.ts +2 -2
  150. package/dist/components/pagination/src/pagination-page-trigger.d.ts +1 -1
  151. package/dist/components/pagination/src/pagination-pages.d.ts +2 -2
  152. package/dist/components/pagination/src/pagination-step-trigger.d.ts +2 -2
  153. package/dist/components/pagination/src/pagination-truncation-separator.d.ts +1 -1
  154. package/dist/components/pagination/src/types.d.ts +1 -1
  155. package/dist/components/pagination/src/use-page-options.hook.d.ts +1 -1
  156. package/dist/components/pagination/src/use-page-size-options.hook.d.ts +1 -1
  157. package/dist/components/paragraph/src/paragraph.d.ts +1 -1
  158. package/dist/components/password-field/src/password-strength-indicator.d.ts +1 -1
  159. package/dist/components/popover/src/popover-button.d.ts +2 -2
  160. package/dist/components/product-card/src/product-card.d.ts +1 -1
  161. package/dist/components/promotion-card/src/promotion-card.d.ts +10 -10
  162. package/dist/components/promotion-card/src/promotion-card.d.ts.map +1 -1
  163. package/dist/components/quantity-selector/src/quantity-selector-button.d.ts +2 -3
  164. package/dist/components/quantity-selector/src/quantity-selector-button.d.ts.map +1 -1
  165. package/dist/components/quantity-selector/src/quantity-selector.d.ts +3 -6
  166. package/dist/components/quantity-selector/src/quantity-selector.d.ts.map +1 -1
  167. package/dist/components/radio-button-group/src/radio-button-group-root.d.ts +1 -1
  168. package/dist/components/radio-card-group/src/radio-card-item.d.ts +1 -1
  169. package/dist/components/rich-text/src/types.d.ts +3 -3
  170. package/dist/components/search-field/src/search-field-autocomplete.d.ts +1 -1
  171. package/dist/components/search-field/src/search-field-base.d.ts +1 -1
  172. package/dist/components/select/src/select.d.ts +1 -1
  173. package/dist/components/skeleton/src/skeleton.d.ts +1 -1
  174. package/dist/components/spacer/src/spacer.d.ts +2 -2
  175. package/dist/components/spinner/src/spinner.d.ts +3 -3
  176. package/dist/components/stepper/src/stepper-container.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 +2 -2
  182. package/dist/components/stepper/src/stepper.d.ts.map +1 -1
  183. package/dist/components/stepper/src/types.d.ts +2 -2
  184. package/dist/components/stepper/src/types.d.ts.map +1 -1
  185. package/dist/components/stepper/src/use-content-focus.hook.d.ts.map +1 -1
  186. package/dist/components/table/src/cell-types/button-group-cell.d.ts +2 -2
  187. package/dist/components/table/src/draggable-table.d.ts.map +1 -1
  188. package/dist/components/table/src/empty-table.d.ts +2 -2
  189. package/dist/components/table/src/table-column-header-cell.d.ts +1 -2
  190. package/dist/components/table/src/table-column-header-cell.d.ts.map +1 -1
  191. package/dist/components/table/src/table-content.d.ts +1 -1
  192. package/dist/components/table/src/table-headers.d.ts +2 -3
  193. package/dist/components/table/src/table-headers.d.ts.map +1 -1
  194. package/dist/components/table/src/table-settings-drawer.d.ts +11 -20
  195. package/dist/components/table/src/table-settings-drawer.d.ts.map +1 -1
  196. package/dist/components/table/src/table.d.ts +1 -8
  197. package/dist/components/table/src/table.d.ts.map +1 -1
  198. package/dist/components/table/src/test-utils/helpers.d.ts +10 -19
  199. package/dist/components/table/src/test-utils/helpers.d.ts.map +1 -1
  200. package/dist/components/tabs/src/tab-content.d.ts +4 -2
  201. package/dist/components/tabs/src/tab-content.d.ts.map +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 +1 -1
  206. package/dist/components/toggle/src/toggle.d.ts +1 -1
  207. package/dist/components/tooltip/src/tooltip.d.ts +4 -6
  208. package/dist/components/tooltip/src/tooltip.d.ts.map +1 -1
  209. package/dist/components-metadata.js +20 -10
  210. package/dist/{content-block-CDMrz41K.mjs → content-block-BCM0I3Y2.mjs} +2 -2
  211. package/dist/content-block-BCM0I3Y2.mjs.map +1 -0
  212. package/dist/{content-block-DyYAnL2e.js → content-block-DQppQumZ.js} +2 -2
  213. package/dist/content-block-DQppQumZ.js.map +1 -0
  214. package/dist/content-block.cjs.js +1 -1
  215. package/dist/content-block.es.js +1 -1
  216. package/dist/core.esm-BmIwrKkJ.js +6 -0
  217. package/dist/core.esm-BmIwrKkJ.js.map +1 -0
  218. package/dist/core.esm-CKGHpLM_.mjs +2892 -0
  219. package/dist/core.esm-CKGHpLM_.mjs.map +1 -0
  220. package/dist/country-flag-icon/LICENSE.txt +11 -0
  221. package/dist/country-flag-icon/all-country-flag-assets.cjs.js +1 -1
  222. package/dist/country-flag-icon/all-country-flag-assets.cjs.js.map +1 -1
  223. package/dist/country-flag-icon/all-country-flag-assets.d.ts +0 -1
  224. package/dist/country-flag-icon/all-country-flag-assets.d.ts.map +1 -1
  225. package/dist/country-flag-icon/all-country-flag-assets.es.js +0 -1
  226. package/dist/country-flag-icon/all-country-flag-assets.es.js.map +1 -1
  227. package/dist/country-flag-icon/dynamic-country-flag-icon.cjs.js +2 -0
  228. package/dist/country-flag-icon/dynamic-country-flag-icon.cjs.js.map +1 -0
  229. package/dist/country-flag-icon/dynamic-country-flag-icon.es.js +366 -0
  230. package/dist/country-flag-icon/dynamic-country-flag-icon.es.js.map +1 -0
  231. package/dist/{date-field-CwZ64buh.js → date-field-CtpWDaSh.js} +2 -2
  232. package/dist/{date-field-CwZ64buh.js.map → date-field-CtpWDaSh.js.map} +1 -1
  233. package/dist/{date-field-ChYx0N2j.mjs → date-field-_rCuf15v.mjs} +2 -2
  234. package/dist/{date-field-ChYx0N2j.mjs.map → date-field-_rCuf15v.mjs.map} +1 -1
  235. package/dist/date-field.cjs.js +1 -1
  236. package/dist/date-field.es.js +1 -1
  237. package/dist/{date-picker-BWMKTOq6.js → date-picker-BYlszX1W.js} +2 -2
  238. package/dist/{date-picker-BWMKTOq6.js.map → date-picker-BYlszX1W.js.map} +1 -1
  239. package/dist/{date-picker-CTyqgBRB.mjs → date-picker-sqcNAplg.mjs} +6 -6
  240. package/dist/{date-picker-CTyqgBRB.mjs.map → date-picker-sqcNAplg.mjs.map} +1 -1
  241. package/dist/date-picker.cjs.js +1 -1
  242. package/dist/date-picker.es.js +1 -1
  243. package/dist/date-range-field-B33XeBW8.js +2 -0
  244. package/dist/date-range-field-B33XeBW8.js.map +1 -0
  245. package/dist/{date-range-field-DDr-qEGX.mjs → date-range-field-BmjQeiOv.mjs} +23 -23
  246. package/dist/date-range-field-BmjQeiOv.mjs.map +1 -0
  247. package/dist/date-range-field.cjs.js +1 -1
  248. package/dist/date-range-field.es.js +1 -1
  249. package/dist/{dismissable-chip-group-2updhyuR.js → dismissable-chip-group-5ALErhD2.js} +2 -2
  250. package/dist/dismissable-chip-group-5ALErhD2.js.map +1 -0
  251. package/dist/{dismissable-chip-group-Cfs2s2BH.mjs → dismissable-chip-group-DMNU7g5e.mjs} +3 -3
  252. package/dist/dismissable-chip-group-DMNU7g5e.mjs.map +1 -0
  253. package/dist/dismissable-chip-group.cjs.js +1 -1
  254. package/dist/dismissable-chip-group.es.js +1 -1
  255. package/dist/{drawer-Cnk2OKgi.mjs → drawer-Chx3H8EU.mjs} +241 -233
  256. package/dist/drawer-Chx3H8EU.mjs.map +1 -0
  257. package/dist/drawer-oFJcxW58.js +2 -0
  258. package/dist/drawer-oFJcxW58.js.map +1 -0
  259. package/dist/drawer.cjs.js +1 -1
  260. package/dist/drawer.es.js +1 -1
  261. package/dist/dropdown-Bn7WvsL2.js +2 -0
  262. package/dist/dropdown-Bn7WvsL2.js.map +1 -0
  263. package/dist/dropdown-CrufJnb4.mjs +945 -0
  264. package/dist/dropdown-CrufJnb4.mjs.map +1 -0
  265. package/dist/dropdown.cjs.js +1 -1
  266. package/dist/dropdown.es.js +1 -1
  267. package/dist/file-upload-Ctw6LCTU.mjs +589 -0
  268. package/dist/file-upload-Ctw6LCTU.mjs.map +1 -0
  269. package/dist/file-upload-MvNuX4ks.js +2 -0
  270. package/dist/file-upload-MvNuX4ks.js.map +1 -0
  271. package/dist/file-upload.cjs.js +2 -0
  272. package/dist/file-upload.cjs.js.map +1 -0
  273. package/dist/file-upload.es.js +5 -0
  274. package/dist/file-upload.es.js.map +1 -0
  275. package/dist/{floating-ui.react-dom-EredA301.mjs → floating-ui.react-dom-1kwKo24Z.mjs} +15 -15
  276. package/dist/{floating-ui.react-dom-EredA301.mjs.map → floating-ui.react-dom-1kwKo24Z.mjs.map} +1 -1
  277. package/dist/footer-Bbemct3Z.js +2 -0
  278. package/dist/footer-Bbemct3Z.js.map +1 -0
  279. package/dist/{footer-D5YkHmCo.mjs → footer-DkVmTd-f.mjs} +24 -24
  280. package/dist/footer-DkVmTd-f.mjs.map +1 -0
  281. package/dist/footer.cjs.js +1 -1
  282. package/dist/footer.es.js +1 -1
  283. package/dist/{heading-xwBuT_-9.mjs → heading-BG7JTFO1.mjs} +25 -24
  284. package/dist/heading-BG7JTFO1.mjs.map +1 -0
  285. package/dist/{heading-drD5ugCC.js → heading-BPeRwNYu.js} +2 -2
  286. package/dist/heading-BPeRwNYu.js.map +1 -0
  287. package/dist/heading.cjs.js +1 -1
  288. package/dist/heading.es.js +6 -5
  289. package/dist/{hero-banner-BXRArPWP.mjs → hero-banner-ChDoFRhq.mjs} +4 -4
  290. package/dist/hero-banner-ChDoFRhq.mjs.map +1 -0
  291. package/dist/{hero-banner-CW7DIEZe.js → hero-banner-Mag1OwL4.js} +2 -2
  292. package/dist/hero-banner-Mag1OwL4.js.map +1 -0
  293. package/dist/hero-banner.cjs.js +1 -1
  294. package/dist/hero-banner.es.js +1 -1
  295. package/dist/index-BPY_9ddu.js +2 -0
  296. package/dist/index-BPY_9ddu.js.map +1 -0
  297. package/dist/index-Fewa56cA.mjs +440 -0
  298. package/dist/index-Fewa56cA.mjs.map +1 -0
  299. package/dist/libraries/library/src/calendar.d.ts +1 -1
  300. package/dist/libraries/library/src/card.d.ts +1 -1
  301. package/dist/libraries/library/src/container.d.ts +1 -1
  302. package/dist/libraries/library/src/content-block.d.ts +1 -1
  303. package/dist/libraries/library/src/dismissable-chip-group.d.ts +1 -1
  304. package/dist/libraries/library/src/drawer.d.ts +1 -1
  305. package/dist/libraries/library/src/file-upload.d.ts +6 -0
  306. package/dist/libraries/library/src/file-upload.d.ts.map +1 -0
  307. package/dist/libraries/library/src/library.d.ts +1 -1
  308. package/dist/libraries/library/src/library.d.ts.map +1 -1
  309. package/dist/libraries/library/src/notification-banner.d.ts +1 -1
  310. package/dist/libraries/library/src/notification.d.ts +1 -1
  311. package/dist/libraries/theme/src/ThemeProvider.d.ts +1 -1
  312. package/dist/library.cjs.js +1 -1
  313. package/dist/library.es.js +595 -596
  314. package/dist/{modal-CnC4Zyjk.js → modal-CXOYUsJm.js} +2 -2
  315. package/dist/modal-CXOYUsJm.js.map +1 -0
  316. package/dist/{modal-BuUQrUYJ.mjs → modal-Pwvhrzn-.mjs} +31 -31
  317. package/dist/modal-Pwvhrzn-.mjs.map +1 -0
  318. package/dist/modal.cjs.js +1 -1
  319. package/dist/modal.es.js +1 -1
  320. package/dist/{notification-CeoAXDXq.js → notification-BkM2vLzI.js} +2 -2
  321. package/dist/{notification-CeoAXDXq.js.map → notification-BkM2vLzI.js.map} +1 -1
  322. package/dist/{notification-C3f3N1K1.mjs → notification-Cbn0UN1p.mjs} +3 -3
  323. package/dist/{notification-C3f3N1K1.mjs.map → notification-Cbn0UN1p.mjs.map} +1 -1
  324. package/dist/notification-banner-B9RhXAZ8.js +2 -0
  325. package/dist/notification-banner-B9RhXAZ8.js.map +1 -0
  326. package/dist/{notification-banner-BvAy8dlg.mjs → notification-banner-C4NVekCZ.mjs} +5 -5
  327. package/dist/notification-banner-C4NVekCZ.mjs.map +1 -0
  328. package/dist/notification-banner.cjs.js +1 -1
  329. package/dist/notification-banner.es.js +1 -1
  330. package/dist/notification.cjs.js +1 -1
  331. package/dist/notification.es.js +1 -1
  332. package/dist/{password-field-C_E4563x.mjs → password-field-Cy_E-D_G.mjs} +29 -29
  333. package/dist/{password-field-C_E4563x.mjs.map → password-field-Cy_E-D_G.mjs.map} +1 -1
  334. package/dist/{password-field-BjKdBoIK.js → password-field-lKyWHjQS.js} +2 -2
  335. package/dist/{password-field-BjKdBoIK.js.map → password-field-lKyWHjQS.js.map} +1 -1
  336. package/dist/password-field.cjs.js +1 -1
  337. package/dist/password-field.es.js +1 -1
  338. package/dist/popover-B6ntmuEK.mjs +614 -0
  339. package/dist/popover-B6ntmuEK.mjs.map +1 -0
  340. package/dist/popover-DJHMEFXP.js +2 -0
  341. package/dist/popover-DJHMEFXP.js.map +1 -0
  342. package/dist/popover.cjs.js +1 -1
  343. package/dist/popover.es.js +1 -1
  344. package/dist/{product-card-CxfHfJVV.mjs → product-card-BMseoNrG.mjs} +3 -3
  345. package/dist/{product-card-CxfHfJVV.mjs.map → product-card-BMseoNrG.mjs.map} +1 -1
  346. package/dist/{product-card-XxBwuxM-.js → product-card-D0jX5-up.js} +2 -2
  347. package/dist/{product-card-XxBwuxM-.js.map → product-card-D0jX5-up.js.map} +1 -1
  348. package/dist/product-card.cjs.js +1 -1
  349. package/dist/product-card.es.js +1 -1
  350. package/dist/{promotion-card-C1UoxzcV.js → promotion-card-B3mz__m7.js} +2 -2
  351. package/dist/promotion-card-B3mz__m7.js.map +1 -0
  352. package/dist/{promotion-card-CooYPpFo.mjs → promotion-card-Co6qAkTZ.mjs} +5 -5
  353. package/dist/promotion-card-Co6qAkTZ.mjs.map +1 -0
  354. package/dist/promotion-card.cjs.js +1 -1
  355. package/dist/promotion-card.es.js +1 -1
  356. package/dist/purpur.css +1 -1
  357. package/dist/quantity-selector-Cy0aJGGX.js +2 -0
  358. package/dist/quantity-selector-Cy0aJGGX.js.map +1 -0
  359. package/dist/quantity-selector-k6ZaVrk1.mjs +162 -0
  360. package/dist/quantity-selector-k6ZaVrk1.mjs.map +1 -0
  361. package/dist/quantity-selector.cjs.js +1 -1
  362. package/dist/quantity-selector.es.js +2 -3
  363. package/dist/{radio-button-group-D_F6kWD6.mjs → radio-button-group-DjiTo3b1.mjs} +2 -2
  364. package/dist/{radio-button-group-D_F6kWD6.mjs.map → radio-button-group-DjiTo3b1.mjs.map} +1 -1
  365. package/dist/{radio-button-group-CdUrC7h9.js → radio-button-group-uCRGh1H5.js} +2 -2
  366. package/dist/{radio-button-group-CdUrC7h9.js.map → radio-button-group-uCRGh1H5.js.map} +1 -1
  367. package/dist/radio-button-group.cjs.js +1 -1
  368. package/dist/radio-button-group.es.js +1 -1
  369. package/dist/{radio-card-group-B9_jOJnM.mjs → radio-card-group-DoM7qYO1.mjs} +2 -2
  370. package/dist/{radio-card-group-B9_jOJnM.mjs.map → radio-card-group-DoM7qYO1.mjs.map} +1 -1
  371. package/dist/{radio-card-group-DcdGkfOp.js → radio-card-group-_9wJC-s3.js} +2 -2
  372. package/dist/{radio-card-group-DcdGkfOp.js.map → radio-card-group-_9wJC-s3.js.map} +1 -1
  373. package/dist/radio-card-group.cjs.js +1 -1
  374. package/dist/radio-card-group.es.js +1 -1
  375. package/dist/rich-text.cjs.js +1 -1
  376. package/dist/rich-text.es.js +1 -1
  377. package/dist/{search-field-BTqVE1-l.mjs → search-field-BTJtRyw5.mjs} +3 -3
  378. package/dist/{search-field-BTqVE1-l.mjs.map → search-field-BTJtRyw5.mjs.map} +1 -1
  379. package/dist/{search-field-DkJrwzJB.js → search-field-nzVXak1a.js} +2 -2
  380. package/dist/{search-field-DkJrwzJB.js.map → search-field-nzVXak1a.js.map} +1 -1
  381. package/dist/search-field.cjs.js +1 -1
  382. package/dist/search-field.es.js +1 -1
  383. package/dist/stepper-D59T-Y2_.mjs +469 -0
  384. package/dist/stepper-D59T-Y2_.mjs.map +1 -0
  385. package/dist/stepper-Dao4XaDV.js +2 -0
  386. package/dist/stepper-Dao4XaDV.js.map +1 -0
  387. package/dist/stepper.cjs.js +1 -1
  388. package/dist/stepper.es.js +1 -1
  389. package/dist/table-DRSgesQ4.mjs +4545 -0
  390. package/dist/table-DRSgesQ4.mjs.map +1 -0
  391. package/dist/table-zBs9JALh.js +5 -0
  392. package/dist/table-zBs9JALh.js.map +1 -0
  393. package/dist/table.cjs.js +1 -1
  394. package/dist/table.es.js +1 -1
  395. package/dist/tabs-D2__wbCs.js +2 -0
  396. package/dist/tabs-D2__wbCs.js.map +1 -0
  397. package/dist/tabs-DOG5g2wf.mjs +440 -0
  398. package/dist/tabs-DOG5g2wf.mjs.map +1 -0
  399. package/dist/tabs.cjs.js +1 -1
  400. package/dist/tabs.es.js +1 -1
  401. package/dist/{text-field-CS0PT5T6.js → text-field-BSgqJjpv.js} +2 -2
  402. package/dist/text-field-BSgqJjpv.js.map +1 -0
  403. package/dist/{text-field-C9LX7LBf.mjs → text-field-MQHeITxy.mjs} +3 -3
  404. package/dist/text-field-MQHeITxy.mjs.map +1 -0
  405. package/dist/text-field.cjs.js +1 -1
  406. package/dist/text-field.es.js +1 -1
  407. package/dist/tooltip-DeP1UsPW.js +2 -0
  408. package/dist/{tooltip-COFCRUKv.js.map → tooltip-DeP1UsPW.js.map} +1 -1
  409. package/dist/{tooltip-FH9R2MAA.mjs → tooltip-bqdd2lJL.mjs} +347 -309
  410. package/dist/{tooltip-FH9R2MAA.mjs.map → tooltip-bqdd2lJL.mjs.map} +1 -1
  411. package/dist/tooltip.cjs.js +1 -1
  412. package/dist/tooltip.es.js +1 -1
  413. package/package.json +25 -25
  414. package/src/aliases.ts +4 -4
  415. package/src/entries.js +1 -1
  416. package/src/{autocomplete.ts → file-upload.ts} +1 -1
  417. package/src/library.ts +1 -1
  418. package/src/purpur.css +4 -0
  419. package/dist/accordion-B6OoQ4uZ.mjs +0 -128
  420. package/dist/accordion-B6OoQ4uZ.mjs.map +0 -1
  421. package/dist/accordion-BfpN5h4C.js +0 -2
  422. package/dist/accordion-BfpN5h4C.js.map +0 -1
  423. package/dist/autocomplete-C6AqdYaZ.mjs +0 -228
  424. package/dist/autocomplete-C6AqdYaZ.mjs.map +0 -1
  425. package/dist/autocomplete-yrPbF5gq.js +0 -2
  426. package/dist/autocomplete-yrPbF5gq.js.map +0 -1
  427. package/dist/autocomplete.cjs.js +0 -2
  428. package/dist/autocomplete.cjs.js.map +0 -1
  429. package/dist/autocomplete.es.js +0 -6
  430. package/dist/autocomplete.es.js.map +0 -1
  431. package/dist/button-DZgtrGqN.js +0 -2
  432. package/dist/button-DZgtrGqN.js.map +0 -1
  433. package/dist/button-EVRfctR8.mjs +0 -109
  434. package/dist/button-EVRfctR8.mjs.map +0 -1
  435. package/dist/card-pdsBEJif.js.map +0 -1
  436. package/dist/card-t2ZkZ82G.mjs.map +0 -1
  437. package/dist/components/autocomplete/src/autocomplete.d.ts +0 -18
  438. package/dist/components/autocomplete/src/autocomplete.d.ts.map +0 -1
  439. package/dist/components/autocomplete/src/useAutocomplete.d.ts +0 -59
  440. package/dist/components/autocomplete/src/useAutocomplete.d.ts.map +0 -1
  441. package/dist/components/autocomplete/src/utils.d.ts +0 -7
  442. package/dist/components/autocomplete/src/utils.d.ts.map +0 -1
  443. package/dist/components/stepper/src/stepper-button.d.ts.map +0 -1
  444. package/dist/content-block-CDMrz41K.mjs.map +0 -1
  445. package/dist/content-block-DyYAnL2e.js.map +0 -1
  446. package/dist/date-range-field-CvzOl-eC.js +0 -2
  447. package/dist/date-range-field-CvzOl-eC.js.map +0 -1
  448. package/dist/date-range-field-DDr-qEGX.mjs.map +0 -1
  449. package/dist/dismissable-chip-group-2updhyuR.js.map +0 -1
  450. package/dist/dismissable-chip-group-Cfs2s2BH.mjs.map +0 -1
  451. package/dist/drawer-BnqxUIPM.js +0 -2
  452. package/dist/drawer-BnqxUIPM.js.map +0 -1
  453. package/dist/drawer-Cnk2OKgi.mjs.map +0 -1
  454. package/dist/dropdown-C8VsfTQw.mjs +0 -936
  455. package/dist/dropdown-C8VsfTQw.mjs.map +0 -1
  456. package/dist/dropdown-p4R2yCnJ.js +0 -2
  457. package/dist/dropdown-p4R2yCnJ.js.map +0 -1
  458. package/dist/footer-B8rzVSrZ.js +0 -2
  459. package/dist/footer-B8rzVSrZ.js.map +0 -1
  460. package/dist/footer-D5YkHmCo.mjs.map +0 -1
  461. package/dist/heading-drD5ugCC.js.map +0 -1
  462. package/dist/heading-xwBuT_-9.mjs.map +0 -1
  463. package/dist/hero-banner-BXRArPWP.mjs.map +0 -1
  464. package/dist/hero-banner-CW7DIEZe.js.map +0 -1
  465. package/dist/libraries/library/src/autocomplete.d.ts +0 -6
  466. package/dist/libraries/library/src/autocomplete.d.ts.map +0 -1
  467. package/dist/modal-BuUQrUYJ.mjs.map +0 -1
  468. package/dist/modal-CnC4Zyjk.js.map +0 -1
  469. package/dist/notification-banner-BvAy8dlg.mjs.map +0 -1
  470. package/dist/notification-banner-DUe4fT1r.js +0 -2
  471. package/dist/notification-banner-DUe4fT1r.js.map +0 -1
  472. package/dist/popover-4phnhJLj.js +0 -2
  473. package/dist/popover-4phnhJLj.js.map +0 -1
  474. package/dist/popover-DhObSx97.mjs +0 -1043
  475. package/dist/popover-DhObSx97.mjs.map +0 -1
  476. package/dist/promotion-card-C1UoxzcV.js.map +0 -1
  477. package/dist/promotion-card-CooYPpFo.mjs.map +0 -1
  478. package/dist/quantity-selector-Ds7d4MnV.js +0 -2
  479. package/dist/quantity-selector-Ds7d4MnV.js.map +0 -1
  480. package/dist/quantity-selector-DwkKKmFy.mjs +0 -172
  481. package/dist/quantity-selector-DwkKKmFy.mjs.map +0 -1
  482. package/dist/stepper-5rQ3cK18.js +0 -2
  483. package/dist/stepper-5rQ3cK18.js.map +0 -1
  484. package/dist/stepper-B3p9r3gv.mjs +0 -449
  485. package/dist/stepper-B3p9r3gv.mjs.map +0 -1
  486. package/dist/table-BIyaTsOh.js +0 -9
  487. package/dist/table-BIyaTsOh.js.map +0 -1
  488. package/dist/table-BtymEUG4.mjs +0 -7428
  489. package/dist/table-BtymEUG4.mjs.map +0 -1
  490. package/dist/tabs-Bye5lgZ1.mjs +0 -424
  491. package/dist/tabs-Bye5lgZ1.mjs.map +0 -1
  492. package/dist/tabs-D-nfZHIA.js +0 -2
  493. package/dist/tabs-D-nfZHIA.js.map +0 -1
  494. package/dist/text-field-C9LX7LBf.mjs.map +0 -1
  495. package/dist/text-field-CS0PT5T6.js.map +0 -1
  496. package/dist/tooltip-COFCRUKv.js +0 -2
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const O=require("./radio-button-group-CdUrC7h9.js");exports.RADIO_BUTTON_GROUP_DIRECTION=O.RADIO_BUTTON_GROUP_DIRECTION;exports.RADIO_BUTTON_GROUP_ORIENTATION=O.RADIO_BUTTON_GROUP_ORIENTATION;exports.RadioButtonGroup=O.RadioButtonGroup;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const O=require("./radio-button-group-uCRGh1H5.js");exports.RADIO_BUTTON_GROUP_DIRECTION=O.RADIO_BUTTON_GROUP_DIRECTION;exports.RADIO_BUTTON_GROUP_ORIENTATION=O.RADIO_BUTTON_GROUP_ORIENTATION;exports.RadioButtonGroup=O.RadioButtonGroup;
2
2
  //# sourceMappingURL=radio-button-group.cjs.js.map
@@ -1,4 +1,4 @@
1
- import { R as T, a as I, b as _ } from "./radio-button-group-D_F6kWD6.mjs";
1
+ import { R as T, a as I, b as _ } from "./radio-button-group-DjiTo3b1.mjs";
2
2
  export {
3
3
  T as RADIO_BUTTON_GROUP_DIRECTION,
4
4
  I as RADIO_BUTTON_GROUP_ORIENTATION,
@@ -1,7 +1,7 @@
1
1
  import { jsx as i, jsxs as E, Fragment as Rr } from "react/jsx-runtime";
2
2
  import * as p from "react";
3
3
  import { useState as hr, forwardRef as H, isValidElement as br, Children as q, cloneElement as Cr } from "react";
4
- import { H as Ir } from "./heading-xwBuT_-9.mjs";
4
+ import { H as Ir } from "./heading-BG7JTFO1.mjs";
5
5
  import { c as w, u as Y, a as yr } from "./index-tyLV0iiH.mjs";
6
6
  import { u as O } from "./index-DLcqcWxM.mjs";
7
7
  import { c as L, u as Er } from "./index-DOfn3ixy.mjs";
@@ -535,4 +535,4 @@ export {
535
535
  ne as R,
536
536
  U as a
537
537
  };
538
- //# sourceMappingURL=radio-card-group-B9_jOJnM.mjs.map
538
+ //# sourceMappingURL=radio-card-group-DoM7qYO1.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"radio-card-group-B9_jOJnM.mjs","sources":["../../../common/temp/node_modules/.pnpm/@radix-ui+react-roving-focus@1.1.3_@types+react-dom@19.2.3_@types+react@19.2.14__@types_1510802d315cde0d4def4a246e01a384/node_modules/@radix-ui/react-roving-focus/dist/index.mjs","../../../common/temp/node_modules/.pnpm/@radix-ui+react-radio-group@1.2.4_@types+react-dom@19.2.3_@types+react@19.2.14__@types+_c5874f83566e86809880c08a116d1fb8/node_modules/@radix-ui/react-radio-group/dist/index.mjs","../../../components/radio-card-group/src/classnames.ts","../../../components/radio-card-group/src/radio-card-item-image.tsx","../../../components/radio-card-group/src/radio-card-item.tsx","../../../components/radio-card-group/src/is-radio-card-item.ts","../../../components/radio-card-group/src/radio-card-group.tsx"],"sourcesContent":["\"use client\";\n\n// packages/react/roving-focus/src/roving-focus-group.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { createCollection } from \"@radix-ui/react-collection\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useId } from \"@radix-ui/react-id\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { useDirection } from \"@radix-ui/react-direction\";\nimport { jsx } from \"react/jsx-runtime\";\nvar ENTRY_FOCUS = \"rovingFocusGroup.onEntryFocus\";\nvar EVENT_OPTIONS = { bubbles: false, cancelable: true };\nvar GROUP_NAME = \"RovingFocusGroup\";\nvar [Collection, useCollection, createCollectionScope] = createCollection(GROUP_NAME);\nvar [createRovingFocusGroupContext, createRovingFocusGroupScope] = createContextScope(\n GROUP_NAME,\n [createCollectionScope]\n);\nvar [RovingFocusProvider, useRovingFocusContext] = createRovingFocusGroupContext(GROUP_NAME);\nvar RovingFocusGroup = React.forwardRef(\n (props, forwardedRef) => {\n return /* @__PURE__ */ jsx(Collection.Provider, { scope: props.__scopeRovingFocusGroup, children: /* @__PURE__ */ jsx(Collection.Slot, { scope: props.__scopeRovingFocusGroup, children: /* @__PURE__ */ jsx(RovingFocusGroupImpl, { ...props, ref: forwardedRef }) }) });\n }\n);\nRovingFocusGroup.displayName = GROUP_NAME;\nvar RovingFocusGroupImpl = React.forwardRef((props, forwardedRef) => {\n const {\n __scopeRovingFocusGroup,\n orientation,\n loop = false,\n dir,\n currentTabStopId: currentTabStopIdProp,\n defaultCurrentTabStopId,\n onCurrentTabStopIdChange,\n onEntryFocus,\n preventScrollOnEntryFocus = false,\n ...groupProps\n } = props;\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const direction = useDirection(dir);\n const [currentTabStopId = null, setCurrentTabStopId] = useControllableState({\n prop: currentTabStopIdProp,\n defaultProp: defaultCurrentTabStopId,\n onChange: onCurrentTabStopIdChange\n });\n const [isTabbingBackOut, setIsTabbingBackOut] = React.useState(false);\n const handleEntryFocus = useCallbackRef(onEntryFocus);\n const getItems = useCollection(__scopeRovingFocusGroup);\n const isClickFocusRef = React.useRef(false);\n const [focusableItemsCount, setFocusableItemsCount] = React.useState(0);\n React.useEffect(() => {\n const node = ref.current;\n if (node) {\n node.addEventListener(ENTRY_FOCUS, handleEntryFocus);\n return () => node.removeEventListener(ENTRY_FOCUS, handleEntryFocus);\n }\n }, [handleEntryFocus]);\n return /* @__PURE__ */ jsx(\n RovingFocusProvider,\n {\n scope: __scopeRovingFocusGroup,\n orientation,\n dir: direction,\n loop,\n currentTabStopId,\n onItemFocus: React.useCallback(\n (tabStopId) => setCurrentTabStopId(tabStopId),\n [setCurrentTabStopId]\n ),\n onItemShiftTab: React.useCallback(() => setIsTabbingBackOut(true), []),\n onFocusableItemAdd: React.useCallback(\n () => setFocusableItemsCount((prevCount) => prevCount + 1),\n []\n ),\n onFocusableItemRemove: React.useCallback(\n () => setFocusableItemsCount((prevCount) => prevCount - 1),\n []\n ),\n children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n tabIndex: isTabbingBackOut || focusableItemsCount === 0 ? -1 : 0,\n \"data-orientation\": orientation,\n ...groupProps,\n ref: composedRefs,\n style: { outline: \"none\", ...props.style },\n onMouseDown: composeEventHandlers(props.onMouseDown, () => {\n isClickFocusRef.current = true;\n }),\n onFocus: composeEventHandlers(props.onFocus, (event) => {\n const isKeyboardFocus = !isClickFocusRef.current;\n if (event.target === event.currentTarget && isKeyboardFocus && !isTabbingBackOut) {\n const entryFocusEvent = new CustomEvent(ENTRY_FOCUS, EVENT_OPTIONS);\n event.currentTarget.dispatchEvent(entryFocusEvent);\n if (!entryFocusEvent.defaultPrevented) {\n const items = getItems().filter((item) => item.focusable);\n const activeItem = items.find((item) => item.active);\n const currentItem = items.find((item) => item.id === currentTabStopId);\n const candidateItems = [activeItem, currentItem, ...items].filter(\n Boolean\n );\n const candidateNodes = candidateItems.map((item) => item.ref.current);\n focusFirst(candidateNodes, preventScrollOnEntryFocus);\n }\n }\n isClickFocusRef.current = false;\n }),\n onBlur: composeEventHandlers(props.onBlur, () => setIsTabbingBackOut(false))\n }\n )\n }\n );\n});\nvar ITEM_NAME = \"RovingFocusGroupItem\";\nvar RovingFocusGroupItem = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeRovingFocusGroup,\n focusable = true,\n active = false,\n tabStopId,\n ...itemProps\n } = props;\n const autoId = useId();\n const id = tabStopId || autoId;\n const context = useRovingFocusContext(ITEM_NAME, __scopeRovingFocusGroup);\n const isCurrentTabStop = context.currentTabStopId === id;\n const getItems = useCollection(__scopeRovingFocusGroup);\n const { onFocusableItemAdd, onFocusableItemRemove } = context;\n React.useEffect(() => {\n if (focusable) {\n onFocusableItemAdd();\n return () => onFocusableItemRemove();\n }\n }, [focusable, onFocusableItemAdd, onFocusableItemRemove]);\n return /* @__PURE__ */ jsx(\n Collection.ItemSlot,\n {\n scope: __scopeRovingFocusGroup,\n id,\n focusable,\n active,\n children: /* @__PURE__ */ jsx(\n Primitive.span,\n {\n tabIndex: isCurrentTabStop ? 0 : -1,\n \"data-orientation\": context.orientation,\n ...itemProps,\n ref: forwardedRef,\n onMouseDown: composeEventHandlers(props.onMouseDown, (event) => {\n if (!focusable) event.preventDefault();\n else context.onItemFocus(id);\n }),\n onFocus: composeEventHandlers(props.onFocus, () => context.onItemFocus(id)),\n onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {\n if (event.key === \"Tab\" && event.shiftKey) {\n context.onItemShiftTab();\n return;\n }\n if (event.target !== event.currentTarget) return;\n const focusIntent = getFocusIntent(event, context.orientation, context.dir);\n if (focusIntent !== void 0) {\n if (event.metaKey || event.ctrlKey || event.altKey || event.shiftKey) return;\n event.preventDefault();\n const items = getItems().filter((item) => item.focusable);\n let candidateNodes = items.map((item) => item.ref.current);\n if (focusIntent === \"last\") candidateNodes.reverse();\n else if (focusIntent === \"prev\" || focusIntent === \"next\") {\n if (focusIntent === \"prev\") candidateNodes.reverse();\n const currentIndex = candidateNodes.indexOf(event.currentTarget);\n candidateNodes = context.loop ? wrapArray(candidateNodes, currentIndex + 1) : candidateNodes.slice(currentIndex + 1);\n }\n setTimeout(() => focusFirst(candidateNodes));\n }\n })\n }\n )\n }\n );\n }\n);\nRovingFocusGroupItem.displayName = ITEM_NAME;\nvar MAP_KEY_TO_FOCUS_INTENT = {\n ArrowLeft: \"prev\",\n ArrowUp: \"prev\",\n ArrowRight: \"next\",\n ArrowDown: \"next\",\n PageUp: \"first\",\n Home: \"first\",\n PageDown: \"last\",\n End: \"last\"\n};\nfunction getDirectionAwareKey(key, dir) {\n if (dir !== \"rtl\") return key;\n return key === \"ArrowLeft\" ? \"ArrowRight\" : key === \"ArrowRight\" ? \"ArrowLeft\" : key;\n}\nfunction getFocusIntent(event, orientation, dir) {\n const key = getDirectionAwareKey(event.key, dir);\n if (orientation === \"vertical\" && [\"ArrowLeft\", \"ArrowRight\"].includes(key)) return void 0;\n if (orientation === \"horizontal\" && [\"ArrowUp\", \"ArrowDown\"].includes(key)) return void 0;\n return MAP_KEY_TO_FOCUS_INTENT[key];\n}\nfunction focusFirst(candidates, preventScroll = false) {\n const PREVIOUSLY_FOCUSED_ELEMENT = document.activeElement;\n for (const candidate of candidates) {\n if (candidate === PREVIOUSLY_FOCUSED_ELEMENT) return;\n candidate.focus({ preventScroll });\n if (document.activeElement !== PREVIOUSLY_FOCUSED_ELEMENT) return;\n }\n}\nfunction wrapArray(array, startIndex) {\n return array.map((_, index) => array[(startIndex + index) % array.length]);\n}\nvar Root = RovingFocusGroup;\nvar Item = RovingFocusGroupItem;\nexport {\n Item,\n Root,\n RovingFocusGroup,\n RovingFocusGroupItem,\n createRovingFocusGroupScope\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// packages/react/radio-group/src/radio-group.tsx\nimport * as React2 from \"react\";\nimport { composeEventHandlers as composeEventHandlers2 } from \"@radix-ui/primitive\";\nimport { useComposedRefs as useComposedRefs2 } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope as createContextScope2 } from \"@radix-ui/react-context\";\nimport { Primitive as Primitive2 } from \"@radix-ui/react-primitive\";\nimport * as RovingFocusGroup from \"@radix-ui/react-roving-focus\";\nimport { createRovingFocusGroupScope } from \"@radix-ui/react-roving-focus\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { useDirection } from \"@radix-ui/react-direction\";\n\n// packages/react/radio-group/src/radio.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useSize } from \"@radix-ui/react-use-size\";\nimport { usePrevious } from \"@radix-ui/react-use-previous\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { jsx, jsxs } from \"react/jsx-runtime\";\nvar RADIO_NAME = \"Radio\";\nvar [createRadioContext, createRadioScope] = createContextScope(RADIO_NAME);\nvar [RadioProvider, useRadioContext] = createRadioContext(RADIO_NAME);\nvar Radio = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeRadio,\n name,\n checked = false,\n required,\n disabled,\n value = \"on\",\n onCheck,\n form,\n ...radioProps\n } = props;\n const [button, setButton] = React.useState(null);\n const composedRefs = useComposedRefs(forwardedRef, (node) => setButton(node));\n const hasConsumerStoppedPropagationRef = React.useRef(false);\n const isFormControl = button ? form || !!button.closest(\"form\") : true;\n return /* @__PURE__ */ jsxs(RadioProvider, { scope: __scopeRadio, checked, disabled, children: [\n /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n role: \"radio\",\n \"aria-checked\": checked,\n \"data-state\": getState(checked),\n \"data-disabled\": disabled ? \"\" : void 0,\n disabled,\n value,\n ...radioProps,\n ref: composedRefs,\n onClick: composeEventHandlers(props.onClick, (event) => {\n if (!checked) onCheck?.();\n if (isFormControl) {\n hasConsumerStoppedPropagationRef.current = event.isPropagationStopped();\n if (!hasConsumerStoppedPropagationRef.current) event.stopPropagation();\n }\n })\n }\n ),\n isFormControl && /* @__PURE__ */ jsx(\n BubbleInput,\n {\n control: button,\n bubbles: !hasConsumerStoppedPropagationRef.current,\n name,\n value,\n checked,\n required,\n disabled,\n form,\n style: { transform: \"translateX(-100%)\" }\n }\n )\n ] });\n }\n);\nRadio.displayName = RADIO_NAME;\nvar INDICATOR_NAME = \"RadioIndicator\";\nvar RadioIndicator = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeRadio, forceMount, ...indicatorProps } = props;\n const context = useRadioContext(INDICATOR_NAME, __scopeRadio);\n return /* @__PURE__ */ jsx(Presence, { present: forceMount || context.checked, children: /* @__PURE__ */ jsx(\n Primitive.span,\n {\n \"data-state\": getState(context.checked),\n \"data-disabled\": context.disabled ? \"\" : void 0,\n ...indicatorProps,\n ref: forwardedRef\n }\n ) });\n }\n);\nRadioIndicator.displayName = INDICATOR_NAME;\nvar BubbleInput = (props) => {\n const { control, checked, bubbles = true, ...inputProps } = props;\n const ref = React.useRef(null);\n const prevChecked = usePrevious(checked);\n const controlSize = useSize(control);\n React.useEffect(() => {\n const input = ref.current;\n const inputProto = window.HTMLInputElement.prototype;\n const descriptor = Object.getOwnPropertyDescriptor(inputProto, \"checked\");\n const setChecked = descriptor.set;\n if (prevChecked !== checked && setChecked) {\n const event = new Event(\"click\", { bubbles });\n setChecked.call(input, checked);\n input.dispatchEvent(event);\n }\n }, [prevChecked, checked, bubbles]);\n return /* @__PURE__ */ jsx(\n \"input\",\n {\n type: \"radio\",\n \"aria-hidden\": true,\n defaultChecked: checked,\n ...inputProps,\n tabIndex: -1,\n ref,\n style: {\n ...props.style,\n ...controlSize,\n position: \"absolute\",\n pointerEvents: \"none\",\n opacity: 0,\n margin: 0\n }\n }\n );\n};\nfunction getState(checked) {\n return checked ? \"checked\" : \"unchecked\";\n}\n\n// packages/react/radio-group/src/radio-group.tsx\nimport { jsx as jsx2 } from \"react/jsx-runtime\";\nvar ARROW_KEYS = [\"ArrowUp\", \"ArrowDown\", \"ArrowLeft\", \"ArrowRight\"];\nvar RADIO_GROUP_NAME = \"RadioGroup\";\nvar [createRadioGroupContext, createRadioGroupScope] = createContextScope2(RADIO_GROUP_NAME, [\n createRovingFocusGroupScope,\n createRadioScope\n]);\nvar useRovingFocusGroupScope = createRovingFocusGroupScope();\nvar useRadioScope = createRadioScope();\nvar [RadioGroupProvider, useRadioGroupContext] = createRadioGroupContext(RADIO_GROUP_NAME);\nvar RadioGroup = React2.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeRadioGroup,\n name,\n defaultValue,\n value: valueProp,\n required = false,\n disabled = false,\n orientation,\n dir,\n loop = true,\n onValueChange,\n ...groupProps\n } = props;\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeRadioGroup);\n const direction = useDirection(dir);\n const [value, setValue] = useControllableState({\n prop: valueProp,\n defaultProp: defaultValue,\n onChange: onValueChange\n });\n return /* @__PURE__ */ jsx2(\n RadioGroupProvider,\n {\n scope: __scopeRadioGroup,\n name,\n required,\n disabled,\n value,\n onValueChange: setValue,\n children: /* @__PURE__ */ jsx2(\n RovingFocusGroup.Root,\n {\n asChild: true,\n ...rovingFocusGroupScope,\n orientation,\n dir: direction,\n loop,\n children: /* @__PURE__ */ jsx2(\n Primitive2.div,\n {\n role: \"radiogroup\",\n \"aria-required\": required,\n \"aria-orientation\": orientation,\n \"data-disabled\": disabled ? \"\" : void 0,\n dir: direction,\n ...groupProps,\n ref: forwardedRef\n }\n )\n }\n )\n }\n );\n }\n);\nRadioGroup.displayName = RADIO_GROUP_NAME;\nvar ITEM_NAME = \"RadioGroupItem\";\nvar RadioGroupItem = React2.forwardRef(\n (props, forwardedRef) => {\n const { __scopeRadioGroup, disabled, ...itemProps } = props;\n const context = useRadioGroupContext(ITEM_NAME, __scopeRadioGroup);\n const isDisabled = context.disabled || disabled;\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeRadioGroup);\n const radioScope = useRadioScope(__scopeRadioGroup);\n const ref = React2.useRef(null);\n const composedRefs = useComposedRefs2(forwardedRef, ref);\n const checked = context.value === itemProps.value;\n const isArrowKeyPressedRef = React2.useRef(false);\n React2.useEffect(() => {\n const handleKeyDown = (event) => {\n if (ARROW_KEYS.includes(event.key)) {\n isArrowKeyPressedRef.current = true;\n }\n };\n const handleKeyUp = () => isArrowKeyPressedRef.current = false;\n document.addEventListener(\"keydown\", handleKeyDown);\n document.addEventListener(\"keyup\", handleKeyUp);\n return () => {\n document.removeEventListener(\"keydown\", handleKeyDown);\n document.removeEventListener(\"keyup\", handleKeyUp);\n };\n }, []);\n return /* @__PURE__ */ jsx2(\n RovingFocusGroup.Item,\n {\n asChild: true,\n ...rovingFocusGroupScope,\n focusable: !isDisabled,\n active: checked,\n children: /* @__PURE__ */ jsx2(\n Radio,\n {\n disabled: isDisabled,\n required: context.required,\n checked,\n ...radioScope,\n ...itemProps,\n name: context.name,\n ref: composedRefs,\n onCheck: () => context.onValueChange(itemProps.value),\n onKeyDown: composeEventHandlers2((event) => {\n if (event.key === \"Enter\") event.preventDefault();\n }),\n onFocus: composeEventHandlers2(itemProps.onFocus, () => {\n if (isArrowKeyPressedRef.current) ref.current?.click();\n })\n }\n )\n }\n );\n }\n);\nRadioGroupItem.displayName = ITEM_NAME;\nvar INDICATOR_NAME2 = \"RadioGroupIndicator\";\nvar RadioGroupIndicator = React2.forwardRef(\n (props, forwardedRef) => {\n const { __scopeRadioGroup, ...indicatorProps } = props;\n const radioScope = useRadioScope(__scopeRadioGroup);\n return /* @__PURE__ */ jsx2(RadioIndicator, { ...radioScope, ...indicatorProps, ref: forwardedRef });\n }\n);\nRadioGroupIndicator.displayName = INDICATOR_NAME2;\nvar Root2 = RadioGroup;\nvar Item2 = RadioGroupItem;\nvar Indicator = RadioGroupIndicator;\nexport {\n Indicator,\n Item2 as Item,\n RadioGroup,\n RadioGroupIndicator,\n RadioGroupItem,\n Root2 as Root,\n createRadioGroupScope\n};\n//# sourceMappingURL=index.mjs.map\n","import c from \"classnames/bind\";\n\nimport styles from \"./radio-card-group.module.scss\";\nexport const cx = c.bind(styles);\n","import React from \"react\";\nimport { useState } from \"react\";\nimport { Skeleton } from \"@purpur/skeleton\";\n\nimport { cx } from \"./classnames\";\n\nexport type RadioCardImageProps = {\n [\"data-testid\"]?: string;\n altText: string;\n loading?: \"lazy\" | \"eager\";\n noPlaceholder?: boolean;\n src: string;\n};\n\nconst rootClassName = \"purpur-radio-card-group__item-image\";\n\nexport const isRadioCardItemImageProps = (\n imageProps?: RadioCardImageProps | unknown\n): imageProps is RadioCardImageProps =>\n !!(imageProps as RadioCardImageProps)?.src && !!(imageProps as RadioCardImageProps).altText;\n\nexport const RadioCardImage = ({\n src,\n altText,\n noPlaceholder,\n loading = \"lazy\",\n [\"data-testid\"]: dataTestid,\n}: RadioCardImageProps) => {\n const [isLoaded, setIsLoaded] = useState(false);\n const onLoad = () => setIsLoaded(true);\n\n const imageClassName = cx(rootClassName, {\n [`${rootClassName}--loaded`]: isLoaded,\n });\n\n const placeholderClassName = cx(`${rootClassName}-placeholder`, {\n [`${rootClassName}-placeholder--loaded`]: isLoaded,\n });\n\n return (\n <>\n <img\n data-testid={dataTestid}\n className={imageClassName}\n src={src}\n alt={altText}\n loading={loading}\n onLoad={onLoad}\n />\n {!noPlaceholder && <Skeleton className={placeholderClassName} />}\n </>\n );\n};\n","import React, { forwardRef, type ReactNode } from \"react\";\nimport type { BaseProps } from \"@purpur/common-types\";\nimport { Paragraph } from \"@purpur/paragraph\";\nimport * as RadixRadioGroup from \"@radix-ui/react-radio-group\";\n\nimport { cx } from \"./classnames\";\nimport {\n isRadioCardItemImageProps,\n RadioCardImage,\n type RadioCardImageProps,\n} from \"./radio-card-item-image\";\n\nconst rootClassName = \"purpur-radio-card-group__item\";\n\ntype CustomElement = ((props: { disabled?: boolean }) => ReactNode) | ReactNode;\ntype NonNullCustomElement =\n | ((props: { disabled?: boolean }) => NonNullable<ReactNode>)\n | NonNullable<ReactNode>;\n\nexport type RadioCardItemProps = Omit<BaseProps, \"id\" | \"title\"> & {\n /**\n * `string | ReactNode | (props: { disabled?: boolean }) => ReactNode`\n */\n body?: string | CustomElement;\n disabled?: boolean;\n id: string;\n /**\n * The radio image.\n *\n union = {\n \"data-testid\"?: string | undefined;\n altText: string;\n loading?: \"lazy\" | \"eager\" | undefined;\n noPlaceholder?: boolean | undefined;\n src: string;\n } |\n ((props: {\n disabled?: boolean;\n }) => ReactNode) | React.ReactNode\n * */\n image?: RadioCardImageProps | CustomElement;\n value: string;\n /**\n * `union = string | Omit<ReactNode, \"undefined\" | \"null\">`\n */\n title: string | NonNullCustomElement;\n};\n\nconst renderCustomElement = (\n element: CustomElement | NonNullCustomElement,\n { disabled }: Pick<RadioCardItemProps, \"disabled\">\n) => (typeof element === \"function\" ? element({ disabled }) : element);\n\nexport const RadioCardItem = forwardRef<HTMLDivElement, RadioCardItemProps>(\n ({ title, ...propsx }, ref) => {\n const { [\"data-testid\"]: dataTestid, body, children, disabled, id, image, value } = propsx;\n\n const props = { title, ...propsx };\n\n return (\n <div className={cx(`${rootClassName}-container`)} ref={ref}>\n <RadixRadioGroup.Item\n className={cx(rootClassName)}\n data-testid={dataTestid}\n disabled={disabled}\n id={id}\n value={value}\n >\n {image && (\n <span className={cx(`${rootClassName}-image-container`)}>\n {isRadioCardItemImageProps(image) ? (\n <RadioCardImage {...image} data-testid={dataTestid && `${dataTestid}-image`} />\n ) : (\n renderCustomElement(image, props)\n )}\n </span>\n )}\n <span className={cx(`${rootClassName}-content`)}>\n <span className={cx(`${rootClassName}-top-container`)}>\n {typeof title === \"string\" ? (\n <Paragraph\n className={cx(`${rootClassName}-title`)}\n data-testid={dataTestid && `${dataTestid}-title`}\n variant=\"paragraph-100\"\n disabled={disabled}\n >\n {title}\n </Paragraph>\n ) : (\n renderCustomElement(title, props)\n )}\n <span className={cx(`${rootClassName}-radio`)}>\n <RadixRadioGroup.Indicator className={cx(`${rootClassName}-indicator`)} />\n </span>\n </span>\n {body && (\n <span className={cx(`${rootClassName}-bottom-container`)}>\n {typeof body === \"string\" ? (\n <Paragraph\n data-testid={dataTestid && `${dataTestid}-body`}\n variant=\"paragraph-100\"\n disabled={disabled}\n >\n {body}\n </Paragraph>\n ) : (\n renderCustomElement(body, props)\n )}\n </span>\n )}\n </span>\n </RadixRadioGroup.Item>\n {children}\n </div>\n );\n }\n);\n\nRadioCardItem.displayName = \"RadioCardItem\";\n","import { isValidElement, type ReactElement, type ReactNode } from \"react\";\n\nimport { RadioCardItem, type RadioCardItemProps } from \"./radio-card-item\";\n\nexport const isRadioCardItem = (child?: ReactNode): child is ReactElement<RadioCardItemProps> =>\n isValidElement<RadioCardItemProps>(child) && child.type === RadioCardItem;\n","import React, { Children, cloneElement, forwardRef, type ReactNode, type Ref } from \"react\";\nimport { Heading, type HeadingTagType } from \"@purpur/heading\";\nimport * as RadixRadioGroup from \"@radix-ui/react-radio-group\";\n\nimport { cx } from \"./classnames\";\nimport { isRadioCardItem } from \"./is-radio-card-item\";\nimport type { RadioCardGroupOrientation, RadioPosition } from \"./radio-card-group.constants\";\nimport { RadioCardItem, type RadioCardItemProps } from \"./radio-card-item\";\n\nexport type RadioCardGroupItem = RadioCardItemProps & { ref?: Ref<HTMLDivElement> };\n\ntype StylingProps = Pick<React.HTMLAttributes<HTMLElement>, \"className\" | \"style\">;\n\nexport type RadioCardGroupProps = StylingProps & {\n /**\n * To use when no heading is given.\n * */\n [\"aria-label\"]?: string;\n /**\n * To use with custom label.\n * */\n [\"aria-labelledby\"]?: string;\n [\"data-testid\"]?: string;\n /**\n * The value of the radio card item that should be checked when initially rendered. Use when you do not need to control the state of the radio items.\n * */\n defaultValue?: string;\n /**\n * When true, prevents the user from interacting with radio card items.\n * */\n disabled?: boolean;\n /**\n * ID of the radio card group container.\n * */\n id: string;\n /**\n * The radio card items.\n * */\n items?: RadioCardGroupItem[];\n /**\n * Renders above the radio card group as a heading\n * */\n heading?: string;\n /**\n * Changes heading level for heading.\n */\n headingTag?: HeadingTagType;\n /**\n * When true, keyboard navigation will loop from last item to first, and vice versa.\n * */\n loop?: boolean;\n /**\n * The name of the group. Submitted with its owning form as part of a name/value pair.\n * */\n name?: string;\n /**\n * Event handler called when the value changes.\n * */\n onValueChange?: (value: string) => void;\n /**\n * Set to stack cards horizontally or vertically. When `horizontal`, the min card width with is 100% when container is sm, and `--purpur-breakpoint-lg` / 4 when the container is md or larger.\n * */\n orientation?: RadioCardGroupOrientation;\n /**\n * The position if the radio in the card items.\n * */\n radioPosition?: RadioPosition;\n /**\n * When true, indicates that the user must check a radio card item before the owning form can be submitted.\n * */\n required?: boolean;\n /**\n * The controlled value of the radio card item to check. Should be used in conjunction with onValueChange.\n * */\n value?: string;\n /**\n * Will only render given RadioCardItems.\n * */\n children?: ReactNode;\n};\n\nconst rootClassName = \"purpur-radio-card-group\";\n\nexport const RadioCardGroup = forwardRef<HTMLDivElement, RadioCardGroupProps>(\n (\n {\n \"data-testid\": dataTestId,\n \"aria-labelledby\": ariaLabelledby,\n children,\n className,\n items,\n heading,\n headingTag = \"h2\",\n loop = true,\n orientation = \"vertical\",\n radioPosition = \"right\",\n ...props\n },\n ref\n ) => {\n const radioCardItemChildren = Children.toArray(children).filter(isRadioCardItem);\n\n return (\n <div className={cx(className, `${rootClassName}__container`)} ref={ref}>\n {heading && (\n <Heading\n data-testid={dataTestId ? `${dataTestId}-heading` : undefined}\n id={`${props.id}-heading`}\n tag={headingTag}\n variant=\"subsection-100\"\n >\n {props.required && <span aria-hidden>{\"* \"}</span>}\n {heading}\n </Heading>\n )}\n {(!!items?.length || radioCardItemChildren.length) && (\n <RadixRadioGroup.Root\n {...props}\n aria-labelledby={ariaLabelledby || (heading ? `${props.id}-heading` : undefined)}\n className={cx(\n rootClassName,\n `${rootClassName}--${orientation}`,\n `${rootClassName}--radio-${radioPosition}`\n )}\n data-testid={dataTestId}\n loop={loop}\n >\n {items?.map((item) => (\n <RadioCardItem\n key={item.id}\n {...item}\n disabled={item.disabled || props.disabled}\n data-testid={dataTestId ? `${dataTestId}-item` : undefined}\n />\n ))}\n {Children.map(radioCardItemChildren, (child) =>\n cloneElement(child, { disabled: child.props.disabled || props.disabled })\n )}\n </RadixRadioGroup.Root>\n )}\n </div>\n );\n }\n);\n\nRadioCardGroup.displayName = \"RadioCardGroup\";\n\n// RadioCardItem must be exported after `RadioCardGroup` for the Storybook controls to be generated from RadioCardGroup props\nexport type { RadioCardItemProps } from \"./radio-card-item\";\nexport { RadioCardItem } from \"./radio-card-item\";\n"],"names":["ENTRY_FOCUS","EVENT_OPTIONS","GROUP_NAME","Collection","useCollection","createCollectionScope","createCollection","createRovingFocusGroupContext","createRovingFocusGroupScope","createContextScope","RovingFocusProvider","useRovingFocusContext","RovingFocusGroup","React","props","forwardedRef","jsx","RovingFocusGroupImpl","__scopeRovingFocusGroup","orientation","loop","dir","currentTabStopIdProp","defaultCurrentTabStopId","onCurrentTabStopIdChange","onEntryFocus","preventScrollOnEntryFocus","groupProps","ref","composedRefs","useComposedRefs","direction","useDirection","currentTabStopId","setCurrentTabStopId","useControllableState","isTabbingBackOut","setIsTabbingBackOut","handleEntryFocus","useCallbackRef","getItems","isClickFocusRef","focusableItemsCount","setFocusableItemsCount","node","tabStopId","prevCount","Primitive","composeEventHandlers","event","isKeyboardFocus","entryFocusEvent","items","item","activeItem","currentItem","candidateNodes","focusFirst","ITEM_NAME","RovingFocusGroupItem","focusable","active","itemProps","autoId","useId","id","context","isCurrentTabStop","onFocusableItemAdd","onFocusableItemRemove","focusIntent","getFocusIntent","currentIndex","wrapArray","MAP_KEY_TO_FOCUS_INTENT","getDirectionAwareKey","key","candidates","preventScroll","PREVIOUSLY_FOCUSED_ELEMENT","candidate","array","startIndex","_","index","Root","Item","RADIO_NAME","createRadioContext","createRadioScope","RadioProvider","useRadioContext","Radio","__scopeRadio","name","checked","required","disabled","value","onCheck","form","radioProps","button","setButton","hasConsumerStoppedPropagationRef","isFormControl","jsxs","getState","BubbleInput","INDICATOR_NAME","RadioIndicator","forceMount","indicatorProps","Presence","control","bubbles","inputProps","prevChecked","usePrevious","controlSize","useSize","input","inputProto","setChecked","ARROW_KEYS","RADIO_GROUP_NAME","createRadioGroupContext","createContextScope2","useRovingFocusGroupScope","useRadioScope","RadioGroupProvider","useRadioGroupContext","RadioGroup","React2","__scopeRadioGroup","defaultValue","valueProp","onValueChange","rovingFocusGroupScope","setValue","jsx2","RovingFocusGroup.Root","Primitive2","RadioGroupItem","isDisabled","radioScope","useComposedRefs2","isArrowKeyPressedRef","handleKeyDown","handleKeyUp","RovingFocusGroup.Item","composeEventHandlers2","INDICATOR_NAME2","RadioGroupIndicator","Root2","Item2","Indicator","cx","c","styles","rootClassName","isRadioCardItemImageProps","imageProps","RadioCardImage","src","altText","noPlaceholder","loading","dataTestid","isLoaded","setIsLoaded","useState","onLoad","imageClassName","placeholderClassName","Fragment","Skeleton","renderCustomElement","element","RadioCardItem","forwardRef","title","propsx","body","children","image","RadixRadioGroup.Item","Paragraph","RadixRadioGroup.Indicator","isRadioCardItem","child","isValidElement","RadioCardGroup","dataTestId","ariaLabelledby","className","heading","headingTag","radioPosition","radioCardItemChildren","Children","Heading","RadixRadioGroup.Root","cloneElement"],"mappings":"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","x_google_ignoreList":[0,1]}
1
+ {"version":3,"file":"radio-card-group-DoM7qYO1.mjs","sources":["../../../common/temp/node_modules/.pnpm/@radix-ui+react-roving-focus@1.1.3_@types+react-dom@19.2.3_@types+react@19.2.14__@types_1510802d315cde0d4def4a246e01a384/node_modules/@radix-ui/react-roving-focus/dist/index.mjs","../../../common/temp/node_modules/.pnpm/@radix-ui+react-radio-group@1.2.4_@types+react-dom@19.2.3_@types+react@19.2.14__@types+_c5874f83566e86809880c08a116d1fb8/node_modules/@radix-ui/react-radio-group/dist/index.mjs","../../../components/radio-card-group/src/classnames.ts","../../../components/radio-card-group/src/radio-card-item-image.tsx","../../../components/radio-card-group/src/radio-card-item.tsx","../../../components/radio-card-group/src/is-radio-card-item.ts","../../../components/radio-card-group/src/radio-card-group.tsx"],"sourcesContent":["\"use client\";\n\n// packages/react/roving-focus/src/roving-focus-group.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { createCollection } from \"@radix-ui/react-collection\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useId } from \"@radix-ui/react-id\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { useDirection } from \"@radix-ui/react-direction\";\nimport { jsx } from \"react/jsx-runtime\";\nvar ENTRY_FOCUS = \"rovingFocusGroup.onEntryFocus\";\nvar EVENT_OPTIONS = { bubbles: false, cancelable: true };\nvar GROUP_NAME = \"RovingFocusGroup\";\nvar [Collection, useCollection, createCollectionScope] = createCollection(GROUP_NAME);\nvar [createRovingFocusGroupContext, createRovingFocusGroupScope] = createContextScope(\n GROUP_NAME,\n [createCollectionScope]\n);\nvar [RovingFocusProvider, useRovingFocusContext] = createRovingFocusGroupContext(GROUP_NAME);\nvar RovingFocusGroup = React.forwardRef(\n (props, forwardedRef) => {\n return /* @__PURE__ */ jsx(Collection.Provider, { scope: props.__scopeRovingFocusGroup, children: /* @__PURE__ */ jsx(Collection.Slot, { scope: props.__scopeRovingFocusGroup, children: /* @__PURE__ */ jsx(RovingFocusGroupImpl, { ...props, ref: forwardedRef }) }) });\n }\n);\nRovingFocusGroup.displayName = GROUP_NAME;\nvar RovingFocusGroupImpl = React.forwardRef((props, forwardedRef) => {\n const {\n __scopeRovingFocusGroup,\n orientation,\n loop = false,\n dir,\n currentTabStopId: currentTabStopIdProp,\n defaultCurrentTabStopId,\n onCurrentTabStopIdChange,\n onEntryFocus,\n preventScrollOnEntryFocus = false,\n ...groupProps\n } = props;\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const direction = useDirection(dir);\n const [currentTabStopId = null, setCurrentTabStopId] = useControllableState({\n prop: currentTabStopIdProp,\n defaultProp: defaultCurrentTabStopId,\n onChange: onCurrentTabStopIdChange\n });\n const [isTabbingBackOut, setIsTabbingBackOut] = React.useState(false);\n const handleEntryFocus = useCallbackRef(onEntryFocus);\n const getItems = useCollection(__scopeRovingFocusGroup);\n const isClickFocusRef = React.useRef(false);\n const [focusableItemsCount, setFocusableItemsCount] = React.useState(0);\n React.useEffect(() => {\n const node = ref.current;\n if (node) {\n node.addEventListener(ENTRY_FOCUS, handleEntryFocus);\n return () => node.removeEventListener(ENTRY_FOCUS, handleEntryFocus);\n }\n }, [handleEntryFocus]);\n return /* @__PURE__ */ jsx(\n RovingFocusProvider,\n {\n scope: __scopeRovingFocusGroup,\n orientation,\n dir: direction,\n loop,\n currentTabStopId,\n onItemFocus: React.useCallback(\n (tabStopId) => setCurrentTabStopId(tabStopId),\n [setCurrentTabStopId]\n ),\n onItemShiftTab: React.useCallback(() => setIsTabbingBackOut(true), []),\n onFocusableItemAdd: React.useCallback(\n () => setFocusableItemsCount((prevCount) => prevCount + 1),\n []\n ),\n onFocusableItemRemove: React.useCallback(\n () => setFocusableItemsCount((prevCount) => prevCount - 1),\n []\n ),\n children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n tabIndex: isTabbingBackOut || focusableItemsCount === 0 ? -1 : 0,\n \"data-orientation\": orientation,\n ...groupProps,\n ref: composedRefs,\n style: { outline: \"none\", ...props.style },\n onMouseDown: composeEventHandlers(props.onMouseDown, () => {\n isClickFocusRef.current = true;\n }),\n onFocus: composeEventHandlers(props.onFocus, (event) => {\n const isKeyboardFocus = !isClickFocusRef.current;\n if (event.target === event.currentTarget && isKeyboardFocus && !isTabbingBackOut) {\n const entryFocusEvent = new CustomEvent(ENTRY_FOCUS, EVENT_OPTIONS);\n event.currentTarget.dispatchEvent(entryFocusEvent);\n if (!entryFocusEvent.defaultPrevented) {\n const items = getItems().filter((item) => item.focusable);\n const activeItem = items.find((item) => item.active);\n const currentItem = items.find((item) => item.id === currentTabStopId);\n const candidateItems = [activeItem, currentItem, ...items].filter(\n Boolean\n );\n const candidateNodes = candidateItems.map((item) => item.ref.current);\n focusFirst(candidateNodes, preventScrollOnEntryFocus);\n }\n }\n isClickFocusRef.current = false;\n }),\n onBlur: composeEventHandlers(props.onBlur, () => setIsTabbingBackOut(false))\n }\n )\n }\n );\n});\nvar ITEM_NAME = \"RovingFocusGroupItem\";\nvar RovingFocusGroupItem = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeRovingFocusGroup,\n focusable = true,\n active = false,\n tabStopId,\n ...itemProps\n } = props;\n const autoId = useId();\n const id = tabStopId || autoId;\n const context = useRovingFocusContext(ITEM_NAME, __scopeRovingFocusGroup);\n const isCurrentTabStop = context.currentTabStopId === id;\n const getItems = useCollection(__scopeRovingFocusGroup);\n const { onFocusableItemAdd, onFocusableItemRemove } = context;\n React.useEffect(() => {\n if (focusable) {\n onFocusableItemAdd();\n return () => onFocusableItemRemove();\n }\n }, [focusable, onFocusableItemAdd, onFocusableItemRemove]);\n return /* @__PURE__ */ jsx(\n Collection.ItemSlot,\n {\n scope: __scopeRovingFocusGroup,\n id,\n focusable,\n active,\n children: /* @__PURE__ */ jsx(\n Primitive.span,\n {\n tabIndex: isCurrentTabStop ? 0 : -1,\n \"data-orientation\": context.orientation,\n ...itemProps,\n ref: forwardedRef,\n onMouseDown: composeEventHandlers(props.onMouseDown, (event) => {\n if (!focusable) event.preventDefault();\n else context.onItemFocus(id);\n }),\n onFocus: composeEventHandlers(props.onFocus, () => context.onItemFocus(id)),\n onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {\n if (event.key === \"Tab\" && event.shiftKey) {\n context.onItemShiftTab();\n return;\n }\n if (event.target !== event.currentTarget) return;\n const focusIntent = getFocusIntent(event, context.orientation, context.dir);\n if (focusIntent !== void 0) {\n if (event.metaKey || event.ctrlKey || event.altKey || event.shiftKey) return;\n event.preventDefault();\n const items = getItems().filter((item) => item.focusable);\n let candidateNodes = items.map((item) => item.ref.current);\n if (focusIntent === \"last\") candidateNodes.reverse();\n else if (focusIntent === \"prev\" || focusIntent === \"next\") {\n if (focusIntent === \"prev\") candidateNodes.reverse();\n const currentIndex = candidateNodes.indexOf(event.currentTarget);\n candidateNodes = context.loop ? wrapArray(candidateNodes, currentIndex + 1) : candidateNodes.slice(currentIndex + 1);\n }\n setTimeout(() => focusFirst(candidateNodes));\n }\n })\n }\n )\n }\n );\n }\n);\nRovingFocusGroupItem.displayName = ITEM_NAME;\nvar MAP_KEY_TO_FOCUS_INTENT = {\n ArrowLeft: \"prev\",\n ArrowUp: \"prev\",\n ArrowRight: \"next\",\n ArrowDown: \"next\",\n PageUp: \"first\",\n Home: \"first\",\n PageDown: \"last\",\n End: \"last\"\n};\nfunction getDirectionAwareKey(key, dir) {\n if (dir !== \"rtl\") return key;\n return key === \"ArrowLeft\" ? \"ArrowRight\" : key === \"ArrowRight\" ? \"ArrowLeft\" : key;\n}\nfunction getFocusIntent(event, orientation, dir) {\n const key = getDirectionAwareKey(event.key, dir);\n if (orientation === \"vertical\" && [\"ArrowLeft\", \"ArrowRight\"].includes(key)) return void 0;\n if (orientation === \"horizontal\" && [\"ArrowUp\", \"ArrowDown\"].includes(key)) return void 0;\n return MAP_KEY_TO_FOCUS_INTENT[key];\n}\nfunction focusFirst(candidates, preventScroll = false) {\n const PREVIOUSLY_FOCUSED_ELEMENT = document.activeElement;\n for (const candidate of candidates) {\n if (candidate === PREVIOUSLY_FOCUSED_ELEMENT) return;\n candidate.focus({ preventScroll });\n if (document.activeElement !== PREVIOUSLY_FOCUSED_ELEMENT) return;\n }\n}\nfunction wrapArray(array, startIndex) {\n return array.map((_, index) => array[(startIndex + index) % array.length]);\n}\nvar Root = RovingFocusGroup;\nvar Item = RovingFocusGroupItem;\nexport {\n Item,\n Root,\n RovingFocusGroup,\n RovingFocusGroupItem,\n createRovingFocusGroupScope\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// packages/react/radio-group/src/radio-group.tsx\nimport * as React2 from \"react\";\nimport { composeEventHandlers as composeEventHandlers2 } from \"@radix-ui/primitive\";\nimport { useComposedRefs as useComposedRefs2 } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope as createContextScope2 } from \"@radix-ui/react-context\";\nimport { Primitive as Primitive2 } from \"@radix-ui/react-primitive\";\nimport * as RovingFocusGroup from \"@radix-ui/react-roving-focus\";\nimport { createRovingFocusGroupScope } from \"@radix-ui/react-roving-focus\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { useDirection } from \"@radix-ui/react-direction\";\n\n// packages/react/radio-group/src/radio.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useSize } from \"@radix-ui/react-use-size\";\nimport { usePrevious } from \"@radix-ui/react-use-previous\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { jsx, jsxs } from \"react/jsx-runtime\";\nvar RADIO_NAME = \"Radio\";\nvar [createRadioContext, createRadioScope] = createContextScope(RADIO_NAME);\nvar [RadioProvider, useRadioContext] = createRadioContext(RADIO_NAME);\nvar Radio = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeRadio,\n name,\n checked = false,\n required,\n disabled,\n value = \"on\",\n onCheck,\n form,\n ...radioProps\n } = props;\n const [button, setButton] = React.useState(null);\n const composedRefs = useComposedRefs(forwardedRef, (node) => setButton(node));\n const hasConsumerStoppedPropagationRef = React.useRef(false);\n const isFormControl = button ? form || !!button.closest(\"form\") : true;\n return /* @__PURE__ */ jsxs(RadioProvider, { scope: __scopeRadio, checked, disabled, children: [\n /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n role: \"radio\",\n \"aria-checked\": checked,\n \"data-state\": getState(checked),\n \"data-disabled\": disabled ? \"\" : void 0,\n disabled,\n value,\n ...radioProps,\n ref: composedRefs,\n onClick: composeEventHandlers(props.onClick, (event) => {\n if (!checked) onCheck?.();\n if (isFormControl) {\n hasConsumerStoppedPropagationRef.current = event.isPropagationStopped();\n if (!hasConsumerStoppedPropagationRef.current) event.stopPropagation();\n }\n })\n }\n ),\n isFormControl && /* @__PURE__ */ jsx(\n BubbleInput,\n {\n control: button,\n bubbles: !hasConsumerStoppedPropagationRef.current,\n name,\n value,\n checked,\n required,\n disabled,\n form,\n style: { transform: \"translateX(-100%)\" }\n }\n )\n ] });\n }\n);\nRadio.displayName = RADIO_NAME;\nvar INDICATOR_NAME = \"RadioIndicator\";\nvar RadioIndicator = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeRadio, forceMount, ...indicatorProps } = props;\n const context = useRadioContext(INDICATOR_NAME, __scopeRadio);\n return /* @__PURE__ */ jsx(Presence, { present: forceMount || context.checked, children: /* @__PURE__ */ jsx(\n Primitive.span,\n {\n \"data-state\": getState(context.checked),\n \"data-disabled\": context.disabled ? \"\" : void 0,\n ...indicatorProps,\n ref: forwardedRef\n }\n ) });\n }\n);\nRadioIndicator.displayName = INDICATOR_NAME;\nvar BubbleInput = (props) => {\n const { control, checked, bubbles = true, ...inputProps } = props;\n const ref = React.useRef(null);\n const prevChecked = usePrevious(checked);\n const controlSize = useSize(control);\n React.useEffect(() => {\n const input = ref.current;\n const inputProto = window.HTMLInputElement.prototype;\n const descriptor = Object.getOwnPropertyDescriptor(inputProto, \"checked\");\n const setChecked = descriptor.set;\n if (prevChecked !== checked && setChecked) {\n const event = new Event(\"click\", { bubbles });\n setChecked.call(input, checked);\n input.dispatchEvent(event);\n }\n }, [prevChecked, checked, bubbles]);\n return /* @__PURE__ */ jsx(\n \"input\",\n {\n type: \"radio\",\n \"aria-hidden\": true,\n defaultChecked: checked,\n ...inputProps,\n tabIndex: -1,\n ref,\n style: {\n ...props.style,\n ...controlSize,\n position: \"absolute\",\n pointerEvents: \"none\",\n opacity: 0,\n margin: 0\n }\n }\n );\n};\nfunction getState(checked) {\n return checked ? \"checked\" : \"unchecked\";\n}\n\n// packages/react/radio-group/src/radio-group.tsx\nimport { jsx as jsx2 } from \"react/jsx-runtime\";\nvar ARROW_KEYS = [\"ArrowUp\", \"ArrowDown\", \"ArrowLeft\", \"ArrowRight\"];\nvar RADIO_GROUP_NAME = \"RadioGroup\";\nvar [createRadioGroupContext, createRadioGroupScope] = createContextScope2(RADIO_GROUP_NAME, [\n createRovingFocusGroupScope,\n createRadioScope\n]);\nvar useRovingFocusGroupScope = createRovingFocusGroupScope();\nvar useRadioScope = createRadioScope();\nvar [RadioGroupProvider, useRadioGroupContext] = createRadioGroupContext(RADIO_GROUP_NAME);\nvar RadioGroup = React2.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeRadioGroup,\n name,\n defaultValue,\n value: valueProp,\n required = false,\n disabled = false,\n orientation,\n dir,\n loop = true,\n onValueChange,\n ...groupProps\n } = props;\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeRadioGroup);\n const direction = useDirection(dir);\n const [value, setValue] = useControllableState({\n prop: valueProp,\n defaultProp: defaultValue,\n onChange: onValueChange\n });\n return /* @__PURE__ */ jsx2(\n RadioGroupProvider,\n {\n scope: __scopeRadioGroup,\n name,\n required,\n disabled,\n value,\n onValueChange: setValue,\n children: /* @__PURE__ */ jsx2(\n RovingFocusGroup.Root,\n {\n asChild: true,\n ...rovingFocusGroupScope,\n orientation,\n dir: direction,\n loop,\n children: /* @__PURE__ */ jsx2(\n Primitive2.div,\n {\n role: \"radiogroup\",\n \"aria-required\": required,\n \"aria-orientation\": orientation,\n \"data-disabled\": disabled ? \"\" : void 0,\n dir: direction,\n ...groupProps,\n ref: forwardedRef\n }\n )\n }\n )\n }\n );\n }\n);\nRadioGroup.displayName = RADIO_GROUP_NAME;\nvar ITEM_NAME = \"RadioGroupItem\";\nvar RadioGroupItem = React2.forwardRef(\n (props, forwardedRef) => {\n const { __scopeRadioGroup, disabled, ...itemProps } = props;\n const context = useRadioGroupContext(ITEM_NAME, __scopeRadioGroup);\n const isDisabled = context.disabled || disabled;\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeRadioGroup);\n const radioScope = useRadioScope(__scopeRadioGroup);\n const ref = React2.useRef(null);\n const composedRefs = useComposedRefs2(forwardedRef, ref);\n const checked = context.value === itemProps.value;\n const isArrowKeyPressedRef = React2.useRef(false);\n React2.useEffect(() => {\n const handleKeyDown = (event) => {\n if (ARROW_KEYS.includes(event.key)) {\n isArrowKeyPressedRef.current = true;\n }\n };\n const handleKeyUp = () => isArrowKeyPressedRef.current = false;\n document.addEventListener(\"keydown\", handleKeyDown);\n document.addEventListener(\"keyup\", handleKeyUp);\n return () => {\n document.removeEventListener(\"keydown\", handleKeyDown);\n document.removeEventListener(\"keyup\", handleKeyUp);\n };\n }, []);\n return /* @__PURE__ */ jsx2(\n RovingFocusGroup.Item,\n {\n asChild: true,\n ...rovingFocusGroupScope,\n focusable: !isDisabled,\n active: checked,\n children: /* @__PURE__ */ jsx2(\n Radio,\n {\n disabled: isDisabled,\n required: context.required,\n checked,\n ...radioScope,\n ...itemProps,\n name: context.name,\n ref: composedRefs,\n onCheck: () => context.onValueChange(itemProps.value),\n onKeyDown: composeEventHandlers2((event) => {\n if (event.key === \"Enter\") event.preventDefault();\n }),\n onFocus: composeEventHandlers2(itemProps.onFocus, () => {\n if (isArrowKeyPressedRef.current) ref.current?.click();\n })\n }\n )\n }\n );\n }\n);\nRadioGroupItem.displayName = ITEM_NAME;\nvar INDICATOR_NAME2 = \"RadioGroupIndicator\";\nvar RadioGroupIndicator = React2.forwardRef(\n (props, forwardedRef) => {\n const { __scopeRadioGroup, ...indicatorProps } = props;\n const radioScope = useRadioScope(__scopeRadioGroup);\n return /* @__PURE__ */ jsx2(RadioIndicator, { ...radioScope, ...indicatorProps, ref: forwardedRef });\n }\n);\nRadioGroupIndicator.displayName = INDICATOR_NAME2;\nvar Root2 = RadioGroup;\nvar Item2 = RadioGroupItem;\nvar Indicator = RadioGroupIndicator;\nexport {\n Indicator,\n Item2 as Item,\n RadioGroup,\n RadioGroupIndicator,\n RadioGroupItem,\n Root2 as Root,\n createRadioGroupScope\n};\n//# sourceMappingURL=index.mjs.map\n","import c from \"classnames/bind\";\n\nimport styles from \"./radio-card-group.module.scss\";\nexport const cx = c.bind(styles);\n","import React from \"react\";\nimport { useState } from \"react\";\nimport { Skeleton } from \"@purpur/skeleton\";\n\nimport { cx } from \"./classnames\";\n\nexport type RadioCardImageProps = {\n [\"data-testid\"]?: string;\n altText: string;\n loading?: \"lazy\" | \"eager\";\n noPlaceholder?: boolean;\n src: string;\n};\n\nconst rootClassName = \"purpur-radio-card-group__item-image\";\n\nexport const isRadioCardItemImageProps = (\n imageProps?: RadioCardImageProps | unknown\n): imageProps is RadioCardImageProps =>\n !!(imageProps as RadioCardImageProps)?.src && !!(imageProps as RadioCardImageProps).altText;\n\nexport const RadioCardImage = ({\n src,\n altText,\n noPlaceholder,\n loading = \"lazy\",\n [\"data-testid\"]: dataTestid,\n}: RadioCardImageProps) => {\n const [isLoaded, setIsLoaded] = useState(false);\n const onLoad = () => setIsLoaded(true);\n\n const imageClassName = cx(rootClassName, {\n [`${rootClassName}--loaded`]: isLoaded,\n });\n\n const placeholderClassName = cx(`${rootClassName}-placeholder`, {\n [`${rootClassName}-placeholder--loaded`]: isLoaded,\n });\n\n return (\n <>\n <img\n data-testid={dataTestid}\n className={imageClassName}\n src={src}\n alt={altText}\n loading={loading}\n onLoad={onLoad}\n />\n {!noPlaceholder && <Skeleton className={placeholderClassName} />}\n </>\n );\n};\n","import React, { forwardRef, type ReactNode } from \"react\";\nimport type { BaseProps } from \"@purpur/common-types\";\nimport { Paragraph } from \"@purpur/paragraph\";\nimport * as RadixRadioGroup from \"@radix-ui/react-radio-group\";\n\nimport { cx } from \"./classnames\";\nimport {\n isRadioCardItemImageProps,\n RadioCardImage,\n type RadioCardImageProps,\n} from \"./radio-card-item-image\";\n\nconst rootClassName = \"purpur-radio-card-group__item\";\n\ntype CustomElement = ((props: { disabled?: boolean }) => ReactNode) | ReactNode;\ntype NonNullCustomElement =\n | ((props: { disabled?: boolean }) => NonNullable<ReactNode>)\n | NonNullable<ReactNode>;\n\nexport type RadioCardItemProps = Omit<BaseProps, \"id\" | \"title\"> & {\n /**\n * `string | ReactNode | (props: { disabled?: boolean }) => ReactNode`\n */\n body?: string | CustomElement;\n disabled?: boolean;\n id: string;\n /**\n * The radio image.\n *\n union = {\n \"data-testid\"?: string | undefined;\n altText: string;\n loading?: \"lazy\" | \"eager\" | undefined;\n noPlaceholder?: boolean | undefined;\n src: string;\n } |\n ((props: {\n disabled?: boolean;\n }) => ReactNode) | React.ReactNode\n * */\n image?: RadioCardImageProps | CustomElement;\n value: string;\n /**\n * `union = string | Omit<ReactNode, \"undefined\" | \"null\">`\n */\n title: string | NonNullCustomElement;\n};\n\nconst renderCustomElement = (\n element: CustomElement | NonNullCustomElement,\n { disabled }: Pick<RadioCardItemProps, \"disabled\">\n) => (typeof element === \"function\" ? element({ disabled }) : element);\n\nexport const RadioCardItem = forwardRef<HTMLDivElement, RadioCardItemProps>(\n ({ title, ...propsx }, ref) => {\n const { [\"data-testid\"]: dataTestid, body, children, disabled, id, image, value } = propsx;\n\n const props = { title, ...propsx };\n\n return (\n <div className={cx(`${rootClassName}-container`)} ref={ref}>\n <RadixRadioGroup.Item\n className={cx(rootClassName)}\n data-testid={dataTestid}\n disabled={disabled}\n id={id}\n value={value}\n >\n {image && (\n <span className={cx(`${rootClassName}-image-container`)}>\n {isRadioCardItemImageProps(image) ? (\n <RadioCardImage {...image} data-testid={dataTestid && `${dataTestid}-image`} />\n ) : (\n renderCustomElement(image, props)\n )}\n </span>\n )}\n <span className={cx(`${rootClassName}-content`)}>\n <span className={cx(`${rootClassName}-top-container`)}>\n {typeof title === \"string\" ? (\n <Paragraph\n className={cx(`${rootClassName}-title`)}\n data-testid={dataTestid && `${dataTestid}-title`}\n variant=\"paragraph-100\"\n disabled={disabled}\n >\n {title}\n </Paragraph>\n ) : (\n renderCustomElement(title, props)\n )}\n <span className={cx(`${rootClassName}-radio`)}>\n <RadixRadioGroup.Indicator className={cx(`${rootClassName}-indicator`)} />\n </span>\n </span>\n {body && (\n <span className={cx(`${rootClassName}-bottom-container`)}>\n {typeof body === \"string\" ? (\n <Paragraph\n data-testid={dataTestid && `${dataTestid}-body`}\n variant=\"paragraph-100\"\n disabled={disabled}\n >\n {body}\n </Paragraph>\n ) : (\n renderCustomElement(body, props)\n )}\n </span>\n )}\n </span>\n </RadixRadioGroup.Item>\n {children}\n </div>\n );\n }\n);\n\nRadioCardItem.displayName = \"RadioCardItem\";\n","import { isValidElement, type ReactElement, type ReactNode } from \"react\";\n\nimport { RadioCardItem, type RadioCardItemProps } from \"./radio-card-item\";\n\nexport const isRadioCardItem = (child?: ReactNode): child is ReactElement<RadioCardItemProps> =>\n isValidElement<RadioCardItemProps>(child) && child.type === RadioCardItem;\n","import React, { Children, cloneElement, forwardRef, type ReactNode, type Ref } from \"react\";\nimport { Heading, type HeadingTagType } from \"@purpur/heading\";\nimport * as RadixRadioGroup from \"@radix-ui/react-radio-group\";\n\nimport { cx } from \"./classnames\";\nimport { isRadioCardItem } from \"./is-radio-card-item\";\nimport type { RadioCardGroupOrientation, RadioPosition } from \"./radio-card-group.constants\";\nimport { RadioCardItem, type RadioCardItemProps } from \"./radio-card-item\";\n\nexport type RadioCardGroupItem = RadioCardItemProps & { ref?: Ref<HTMLDivElement> };\n\ntype StylingProps = Pick<React.HTMLAttributes<HTMLElement>, \"className\" | \"style\">;\n\nexport type RadioCardGroupProps = StylingProps & {\n /**\n * To use when no heading is given.\n * */\n [\"aria-label\"]?: string;\n /**\n * To use with custom label.\n * */\n [\"aria-labelledby\"]?: string;\n [\"data-testid\"]?: string;\n /**\n * The value of the radio card item that should be checked when initially rendered. Use when you do not need to control the state of the radio items.\n * */\n defaultValue?: string;\n /**\n * When true, prevents the user from interacting with radio card items.\n * */\n disabled?: boolean;\n /**\n * ID of the radio card group container.\n * */\n id: string;\n /**\n * The radio card items.\n * */\n items?: RadioCardGroupItem[];\n /**\n * Renders above the radio card group as a heading\n * */\n heading?: string;\n /**\n * Changes heading level for heading.\n */\n headingTag?: HeadingTagType;\n /**\n * When true, keyboard navigation will loop from last item to first, and vice versa.\n * */\n loop?: boolean;\n /**\n * The name of the group. Submitted with its owning form as part of a name/value pair.\n * */\n name?: string;\n /**\n * Event handler called when the value changes.\n * */\n onValueChange?: (value: string) => void;\n /**\n * Set to stack cards horizontally or vertically. When `horizontal`, the min card width with is 100% when container is sm, and `--purpur-breakpoint-lg` / 4 when the container is md or larger.\n * */\n orientation?: RadioCardGroupOrientation;\n /**\n * The position if the radio in the card items.\n * */\n radioPosition?: RadioPosition;\n /**\n * When true, indicates that the user must check a radio card item before the owning form can be submitted.\n * */\n required?: boolean;\n /**\n * The controlled value of the radio card item to check. Should be used in conjunction with onValueChange.\n * */\n value?: string;\n /**\n * Will only render given RadioCardItems.\n * */\n children?: ReactNode;\n};\n\nconst rootClassName = \"purpur-radio-card-group\";\n\nexport const RadioCardGroup = forwardRef<HTMLDivElement, RadioCardGroupProps>(\n (\n {\n \"data-testid\": dataTestId,\n \"aria-labelledby\": ariaLabelledby,\n children,\n className,\n items,\n heading,\n headingTag = \"h2\",\n loop = true,\n orientation = \"vertical\",\n radioPosition = \"right\",\n ...props\n },\n ref\n ) => {\n const radioCardItemChildren = Children.toArray(children).filter(isRadioCardItem);\n\n return (\n <div className={cx(className, `${rootClassName}__container`)} ref={ref}>\n {heading && (\n <Heading\n data-testid={dataTestId ? `${dataTestId}-heading` : undefined}\n id={`${props.id}-heading`}\n tag={headingTag}\n variant=\"subsection-100\"\n >\n {props.required && <span aria-hidden>{\"* \"}</span>}\n {heading}\n </Heading>\n )}\n {(!!items?.length || radioCardItemChildren.length) && (\n <RadixRadioGroup.Root\n {...props}\n aria-labelledby={ariaLabelledby || (heading ? `${props.id}-heading` : undefined)}\n className={cx(\n rootClassName,\n `${rootClassName}--${orientation}`,\n `${rootClassName}--radio-${radioPosition}`\n )}\n data-testid={dataTestId}\n loop={loop}\n >\n {items?.map((item) => (\n <RadioCardItem\n key={item.id}\n {...item}\n disabled={item.disabled || props.disabled}\n data-testid={dataTestId ? `${dataTestId}-item` : undefined}\n />\n ))}\n {Children.map(radioCardItemChildren, (child) =>\n cloneElement(child, { disabled: child.props.disabled || props.disabled })\n )}\n </RadixRadioGroup.Root>\n )}\n </div>\n );\n }\n);\n\nRadioCardGroup.displayName = \"RadioCardGroup\";\n\n// RadioCardItem must be exported after `RadioCardGroup` for the Storybook controls to be generated from RadioCardGroup props\nexport type { RadioCardItemProps } from \"./radio-card-item\";\nexport { RadioCardItem } from \"./radio-card-item\";\n"],"names":["ENTRY_FOCUS","EVENT_OPTIONS","GROUP_NAME","Collection","useCollection","createCollectionScope","createCollection","createRovingFocusGroupContext","createRovingFocusGroupScope","createContextScope","RovingFocusProvider","useRovingFocusContext","RovingFocusGroup","React","props","forwardedRef","jsx","RovingFocusGroupImpl","__scopeRovingFocusGroup","orientation","loop","dir","currentTabStopIdProp","defaultCurrentTabStopId","onCurrentTabStopIdChange","onEntryFocus","preventScrollOnEntryFocus","groupProps","ref","composedRefs","useComposedRefs","direction","useDirection","currentTabStopId","setCurrentTabStopId","useControllableState","isTabbingBackOut","setIsTabbingBackOut","handleEntryFocus","useCallbackRef","getItems","isClickFocusRef","focusableItemsCount","setFocusableItemsCount","node","tabStopId","prevCount","Primitive","composeEventHandlers","event","isKeyboardFocus","entryFocusEvent","items","item","activeItem","currentItem","candidateNodes","focusFirst","ITEM_NAME","RovingFocusGroupItem","focusable","active","itemProps","autoId","useId","id","context","isCurrentTabStop","onFocusableItemAdd","onFocusableItemRemove","focusIntent","getFocusIntent","currentIndex","wrapArray","MAP_KEY_TO_FOCUS_INTENT","getDirectionAwareKey","key","candidates","preventScroll","PREVIOUSLY_FOCUSED_ELEMENT","candidate","array","startIndex","_","index","Root","Item","RADIO_NAME","createRadioContext","createRadioScope","RadioProvider","useRadioContext","Radio","__scopeRadio","name","checked","required","disabled","value","onCheck","form","radioProps","button","setButton","hasConsumerStoppedPropagationRef","isFormControl","jsxs","getState","BubbleInput","INDICATOR_NAME","RadioIndicator","forceMount","indicatorProps","Presence","control","bubbles","inputProps","prevChecked","usePrevious","controlSize","useSize","input","inputProto","setChecked","ARROW_KEYS","RADIO_GROUP_NAME","createRadioGroupContext","createContextScope2","useRovingFocusGroupScope","useRadioScope","RadioGroupProvider","useRadioGroupContext","RadioGroup","React2","__scopeRadioGroup","defaultValue","valueProp","onValueChange","rovingFocusGroupScope","setValue","jsx2","RovingFocusGroup.Root","Primitive2","RadioGroupItem","isDisabled","radioScope","useComposedRefs2","isArrowKeyPressedRef","handleKeyDown","handleKeyUp","RovingFocusGroup.Item","composeEventHandlers2","INDICATOR_NAME2","RadioGroupIndicator","Root2","Item2","Indicator","cx","c","styles","rootClassName","isRadioCardItemImageProps","imageProps","RadioCardImage","src","altText","noPlaceholder","loading","dataTestid","isLoaded","setIsLoaded","useState","onLoad","imageClassName","placeholderClassName","Fragment","Skeleton","renderCustomElement","element","RadioCardItem","forwardRef","title","propsx","body","children","image","RadixRadioGroup.Item","Paragraph","RadixRadioGroup.Indicator","isRadioCardItem","child","isValidElement","RadioCardGroup","dataTestId","ariaLabelledby","className","heading","headingTag","radioPosition","radioCardItemChildren","Children","Heading","RadixRadioGroup.Root","cloneElement"],"mappings":"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","x_google_ignoreList":[0,1]}
@@ -1,2 +1,2 @@
1
- "use strict";const a=require("react/jsx-runtime"),y=require("react"),ge=require("./heading-drD5ugCC.js"),h=require("./index-CxBG4Ssm.js"),q=require("./index-_XxjJPRD.js"),j=require("./index-kcwFA4Dv.js"),S=require("./index-Hk_HrrHM.js"),ve=require("./index-BG6K_yAm.js"),Re=require("./index-BtWPC8xc.js"),V=require("./index-Cje7xxa1.js"),be=require("./index-DOFLOnao.js"),he=require("./index-HJvG7FXj.js"),Ce=require("./bind-DeUYJ6m9.js"),U=require("./paragraph-B8HFdNne.js"),xe=require("./skeleton-BU0KtWIM.js");function Ie(e){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const o in e)if(o!=="default"){const r=Object.getOwnPropertyDescriptor(e,o);Object.defineProperty(t,o,r.get?r:{enumerable:!0,get:()=>e[o]})}}return t.default=e,Object.freeze(t)}const p=Ie(y);var T="rovingFocusGroup.onEntryFocus",Ee={bubbles:!1,cancelable:!0},P="RovingFocusGroup",[O,z,ye]=ve.createCollection(P),[we,B]=j.createContextScope(P,[ye]),[Se,Fe]=we(P),Y=p.forwardRef((e,t)=>a.jsx(O.Provider,{scope:e.__scopeRovingFocusGroup,children:a.jsx(O.Slot,{scope:e.__scopeRovingFocusGroup,children:a.jsx(Ne,{...e,ref:t})})}));Y.displayName=P;var Ne=p.forwardRef((e,t)=>{const{__scopeRovingFocusGroup:o,orientation:r,loop:n=!1,dir:i,currentTabStopId:c,defaultCurrentTabStopId:_,onCurrentTabStopIdChange:d,onEntryFocus:s,preventScrollOnEntryFocus:l=!1,...g}=e,f=p.useRef(null),m=q.useComposedRefs(t,f),u=V.useDirection(i),[v=null,C]=h.useControllableState({prop:c,defaultProp:_,onChange:d}),[x,I]=p.useState(!1),A=j.useCallbackRef(s),ue=z(o),G=p.useRef(!1),[pe,K]=p.useState(0);return p.useEffect(()=>{const R=f.current;if(R)return R.addEventListener(T,A),()=>R.removeEventListener(T,A)},[A]),a.jsx(Se,{scope:o,orientation:r,dir:u,loop:n,currentTabStopId:v,onItemFocus:p.useCallback(R=>C(R),[C]),onItemShiftTab:p.useCallback(()=>I(!0),[]),onFocusableItemAdd:p.useCallback(()=>K(R=>R+1),[]),onFocusableItemRemove:p.useCallback(()=>K(R=>R-1),[]),children:a.jsx(S.Primitive.div,{tabIndex:x||pe===0?-1:0,"data-orientation":r,...g,ref:m,style:{outline:"none",...e.style},onMouseDown:h.composeEventHandlers(e.onMouseDown,()=>{G.current=!0}),onFocus:h.composeEventHandlers(e.onFocus,R=>{const le=!G.current;if(R.target===R.currentTarget&&le&&!x){const H=new CustomEvent(T,Ee);if(R.currentTarget.dispatchEvent(H),!H.defaultPrevented){const $=ue().filter(w=>w.focusable),me=$.find(w=>w.active),_e=$.find(w=>w.id===v),fe=[me,_e,...$].filter(Boolean).map(w=>w.ref.current);J(fe,l)}}G.current=!1}),onBlur:h.composeEventHandlers(e.onBlur,()=>I(!1))})})}),W="RovingFocusGroupItem",X=p.forwardRef((e,t)=>{const{__scopeRovingFocusGroup:o,focusable:r=!0,active:n=!1,tabStopId:i,...c}=e,_=Re.useId(),d=i||_,s=Fe(W,o),l=s.currentTabStopId===d,g=z(o),{onFocusableItemAdd:f,onFocusableItemRemove:m}=s;return p.useEffect(()=>{if(r)return f(),()=>m()},[r,f,m]),a.jsx(O.ItemSlot,{scope:o,id:d,focusable:r,active:n,children:a.jsx(S.Primitive.span,{tabIndex:l?0:-1,"data-orientation":s.orientation,...c,ref:t,onMouseDown:h.composeEventHandlers(e.onMouseDown,u=>{r?s.onItemFocus(d):u.preventDefault()}),onFocus:h.composeEventHandlers(e.onFocus,()=>s.onItemFocus(d)),onKeyDown:h.composeEventHandlers(e.onKeyDown,u=>{if(u.key==="Tab"&&u.shiftKey){s.onItemShiftTab();return}if(u.target!==u.currentTarget)return;const v=ke(u,s.orientation,s.dir);if(v!==void 0){if(u.metaKey||u.ctrlKey||u.altKey||u.shiftKey)return;u.preventDefault();let x=g().filter(I=>I.focusable).map(I=>I.ref.current);if(v==="last")x.reverse();else if(v==="prev"||v==="next"){v==="prev"&&x.reverse();const I=x.indexOf(u.currentTarget);x=s.loop?Ae(x,I+1):x.slice(I+1)}setTimeout(()=>J(x))}})})})});X.displayName=W;var je={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"};function Pe(e,t){return t!=="rtl"?e:e==="ArrowLeft"?"ArrowRight":e==="ArrowRight"?"ArrowLeft":e}function ke(e,t,o){const r=Pe(e.key,o);if(!(t==="vertical"&&["ArrowLeft","ArrowRight"].includes(r))&&!(t==="horizontal"&&["ArrowUp","ArrowDown"].includes(r)))return je[r]}function J(e,t=!1){const o=document.activeElement;for(const r of e)if(r===o||(r.focus({preventScroll:t}),document.activeElement!==o))return}function Ae(e,t){return e.map((o,r)=>e[(t+r)%e.length])}var Ge=Y,$e=X,M="Radio",[Te,Q]=j.createContextScope(M),[De,Oe]=Te(M),Z=p.forwardRef((e,t)=>{const{__scopeRadio:o,name:r,checked:n=!1,required:i,disabled:c,value:_="on",onCheck:d,form:s,...l}=e,[g,f]=p.useState(null),m=q.useComposedRefs(t,C=>f(C)),u=p.useRef(!1),v=g?s||!!g.closest("form"):!0;return a.jsxs(De,{scope:o,checked:n,disabled:c,children:[a.jsx(S.Primitive.button,{type:"button",role:"radio","aria-checked":n,"data-state":oe(n),"data-disabled":c?"":void 0,disabled:c,value:_,...l,ref:m,onClick:h.composeEventHandlers(e.onClick,C=>{n||d?.(),v&&(u.current=C.isPropagationStopped(),u.current||C.stopPropagation())})}),v&&a.jsx(qe,{control:g,bubbles:!u.current,name:r,value:_,checked:n,required:i,disabled:c,form:s,style:{transform:"translateX(-100%)"}})]})});Z.displayName=M;var ee="RadioIndicator",re=p.forwardRef((e,t)=>{const{__scopeRadio:o,forceMount:r,...n}=e,i=Oe(ee,o);return a.jsx(he.Presence,{present:r||i.checked,children:a.jsx(S.Primitive.span,{"data-state":oe(i.checked),"data-disabled":i.disabled?"":void 0,...n,ref:t})})});re.displayName=ee;var qe=e=>{const{control:t,checked:o,bubbles:r=!0,...n}=e,i=p.useRef(null),c=h.usePrevious(o),_=be.useSize(t);return p.useEffect(()=>{const d=i.current,s=window.HTMLInputElement.prototype,g=Object.getOwnPropertyDescriptor(s,"checked").set;if(c!==o&&g){const f=new Event("click",{bubbles:r});g.call(d,o),d.dispatchEvent(f)}},[c,o,r]),a.jsx("input",{type:"radio","aria-hidden":!0,defaultChecked:o,...n,tabIndex:-1,ref:i,style:{...e.style,..._,position:"absolute",pointerEvents:"none",opacity:0,margin:0}})};function oe(e){return e?"checked":"unchecked"}var Me=["ArrowUp","ArrowDown","ArrowLeft","ArrowRight"],L="RadioGroup",[Le]=j.createContextScope(L,[B,Q]),te=B(),ae=Q(),[Ke,He]=Le(L),ne=p.forwardRef((e,t)=>{const{__scopeRadioGroup:o,name:r,defaultValue:n,value:i,required:c=!1,disabled:_=!1,orientation:d,dir:s,loop:l=!0,onValueChange:g,...f}=e,m=te(o),u=V.useDirection(s),[v,C]=h.useControllableState({prop:i,defaultProp:n,onChange:g});return a.jsx(Ke,{scope:o,name:r,required:c,disabled:_,value:v,onValueChange:C,children:a.jsx(Ge,{asChild:!0,...m,orientation:d,dir:u,loop:l,children:a.jsx(S.Primitive.div,{role:"radiogroup","aria-required":c,"aria-orientation":d,"data-disabled":_?"":void 0,dir:u,...f,ref:t})})})});ne.displayName=L;var ie="RadioGroupItem",se=p.forwardRef((e,t)=>{const{__scopeRadioGroup:o,disabled:r,...n}=e,i=He(ie,o),c=i.disabled||r,_=te(o),d=ae(o),s=p.useRef(null),l=q.useComposedRefs(t,s),g=i.value===n.value,f=p.useRef(!1);return p.useEffect(()=>{const m=v=>{Me.includes(v.key)&&(f.current=!0)},u=()=>f.current=!1;return document.addEventListener("keydown",m),document.addEventListener("keyup",u),()=>{document.removeEventListener("keydown",m),document.removeEventListener("keyup",u)}},[]),a.jsx($e,{asChild:!0,..._,focusable:!c,active:g,children:a.jsx(Z,{disabled:c,required:i.required,checked:g,...d,...n,name:i.name,ref:l,onCheck:()=>i.onValueChange(n.value),onKeyDown:h.composeEventHandlers(m=>{m.key==="Enter"&&m.preventDefault()}),onFocus:h.composeEventHandlers(n.onFocus,()=>{f.current&&s.current?.click()})})})});se.displayName=ie;var Ue="RadioGroupIndicator",ce=p.forwardRef((e,t)=>{const{__scopeRadioGroup:o,...r}=e,n=ae(o);return a.jsx(re,{...n,...r,ref:t})});ce.displayName=Ue;var Ve=ne,ze=se,Be=ce;const Ye={"purpur-radio-card-group":"_purpur-radio-card-group_19np7_1","purpur-radio-card-group--vertical":"_purpur-radio-card-group--vertical_19np7_5","purpur-radio-card-group--horizontal":"_purpur-radio-card-group--horizontal_19np7_9","purpur-radio-card-group--radio-left":"_purpur-radio-card-group--radio-left_19np7_18","purpur-radio-card-group__item":"_purpur-radio-card-group__item_19np7_18","purpur-radio-card-group__item-bottom-container":"_purpur-radio-card-group__item-bottom-container_19np7_21","purpur-radio-card-group__item-top-container":"_purpur-radio-card-group__item-top-container_19np7_24","purpur-radio-card-group__container":"_purpur-radio-card-group__container_19np7_35","purpur-radio-card-group__item-container":"_purpur-radio-card-group__item-container_19np7_42","purpur-radio-card-group__item-radio":"_purpur-radio-card-group__item-radio_19np7_78","purpur-radio-card-group__item-content":"_purpur-radio-card-group__item-content_19np7_107","purpur-radio-card-group__item-title":"_purpur-radio-card-group__item-title_19np7_120","purpur-radio-card-group__item-indicator":"_purpur-radio-card-group__item-indicator_19np7_140","purpur-radio-card-group__item-image-container":"_purpur-radio-card-group__item-image-container_19np7_150","purpur-radio-card-group__item-image":"_purpur-radio-card-group__item-image_19np7_150","purpur-radio-card-group__item-image--loaded":"_purpur-radio-card-group__item-image--loaded_19np7_163","purpur-radio-card-group__item-image-placeholder":"_purpur-radio-card-group__item-image-placeholder_19np7_166","purpur-radio-card-group__item-image-placeholder--loaded":"_purpur-radio-card-group__item-image-placeholder--loaded_19np7_171","purpur-radio-card-group__item-children":"_purpur-radio-card-group__item-children_19np7_174"},b=Ce.c.bind(Ye),F="purpur-radio-card-group__item-image",We=e=>!!e?.src&&!!e.altText,Xe=({src:e,altText:t,noPlaceholder:o,loading:r="lazy",["data-testid"]:n})=>{const[i,c]=y.useState(!1),_=()=>c(!0),d=b(F,{[`${F}--loaded`]:i}),s=b(`${F}-placeholder`,{[`${F}-placeholder--loaded`]:i});return a.jsxs(a.Fragment,{children:[a.jsx("img",{"data-testid":n,className:d,src:e,alt:t,loading:r,onLoad:_}),!o&&a.jsx(xe.Skeleton,{className:s})]})},E="purpur-radio-card-group__item",D=(e,{disabled:t})=>typeof e=="function"?e({disabled:t}):e,k=y.forwardRef(({title:e,...t},o)=>{const{["data-testid"]:r,body:n,children:i,disabled:c,id:_,image:d,value:s}=t,l={...t};return a.jsxs("div",{className:b(`${E}-container`),ref:o,children:[a.jsxs(ze,{className:b(E),"data-testid":r,disabled:c,id:_,value:s,children:[d&&a.jsx("span",{className:b(`${E}-image-container`),children:We(d)?a.jsx(Xe,{...d,"data-testid":r&&`${r}-image`}):D(d,l)}),a.jsxs("span",{className:b(`${E}-content`),children:[a.jsxs("span",{className:b(`${E}-top-container`),children:[typeof e=="string"?a.jsx(U.Paragraph,{className:b(`${E}-title`),"data-testid":r&&`${r}-title`,variant:"paragraph-100",disabled:c,children:e}):D(e,l),a.jsx("span",{className:b(`${E}-radio`),children:a.jsx(Be,{className:b(`${E}-indicator`)})})]}),n&&a.jsx("span",{className:b(`${E}-bottom-container`),children:typeof n=="string"?a.jsx(U.Paragraph,{"data-testid":r&&`${r}-body`,variant:"paragraph-100",disabled:c,children:n}):D(n,l)})]})]}),i]})});k.displayName="RadioCardItem";const Je=e=>y.isValidElement(e)&&e.type===k,N="purpur-radio-card-group",de=y.forwardRef(({"data-testid":e,"aria-labelledby":t,children:o,className:r,items:n,heading:i,headingTag:c="h2",loop:_=!0,orientation:d="vertical",radioPosition:s="right",...l},g)=>{const f=y.Children.toArray(o).filter(Je);return a.jsxs("div",{className:b(r,`${N}__container`),ref:g,children:[i&&a.jsxs(ge.Heading,{"data-testid":e?`${e}-heading`:void 0,id:`${l.id}-heading`,tag:c,variant:"subsection-100",children:[l.required&&a.jsx("span",{"aria-hidden":!0,children:"* "}),i]}),(!!n?.length||f.length)&&a.jsxs(Ve,{...l,"aria-labelledby":t||(i?`${l.id}-heading`:void 0),className:b(N,`${N}--${d}`,`${N}--radio-${s}`),"data-testid":e,loop:_,children:[n?.map(m=>a.jsx(k,{...m,disabled:m.disabled||l.disabled,"data-testid":e?`${e}-item`:void 0},m.id)),y.Children.map(f,m=>y.cloneElement(m,{disabled:m.props.disabled||l.disabled}))]})]})});de.displayName="RadioCardGroup";exports.RadioCardGroup=de;exports.RadioCardItem=k;
2
- //# sourceMappingURL=radio-card-group-DcdGkfOp.js.map
1
+ "use strict";const a=require("react/jsx-runtime"),y=require("react"),ge=require("./heading-BPeRwNYu.js"),h=require("./index-CxBG4Ssm.js"),q=require("./index-_XxjJPRD.js"),j=require("./index-kcwFA4Dv.js"),S=require("./index-Hk_HrrHM.js"),ve=require("./index-BG6K_yAm.js"),Re=require("./index-BtWPC8xc.js"),V=require("./index-Cje7xxa1.js"),be=require("./index-DOFLOnao.js"),he=require("./index-HJvG7FXj.js"),Ce=require("./bind-DeUYJ6m9.js"),U=require("./paragraph-B8HFdNne.js"),xe=require("./skeleton-BU0KtWIM.js");function Ie(e){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const o in e)if(o!=="default"){const r=Object.getOwnPropertyDescriptor(e,o);Object.defineProperty(t,o,r.get?r:{enumerable:!0,get:()=>e[o]})}}return t.default=e,Object.freeze(t)}const p=Ie(y);var T="rovingFocusGroup.onEntryFocus",Ee={bubbles:!1,cancelable:!0},P="RovingFocusGroup",[O,z,ye]=ve.createCollection(P),[we,B]=j.createContextScope(P,[ye]),[Se,Fe]=we(P),Y=p.forwardRef((e,t)=>a.jsx(O.Provider,{scope:e.__scopeRovingFocusGroup,children:a.jsx(O.Slot,{scope:e.__scopeRovingFocusGroup,children:a.jsx(Ne,{...e,ref:t})})}));Y.displayName=P;var Ne=p.forwardRef((e,t)=>{const{__scopeRovingFocusGroup:o,orientation:r,loop:n=!1,dir:i,currentTabStopId:c,defaultCurrentTabStopId:_,onCurrentTabStopIdChange:d,onEntryFocus:s,preventScrollOnEntryFocus:l=!1,...g}=e,f=p.useRef(null),m=q.useComposedRefs(t,f),u=V.useDirection(i),[v=null,C]=h.useControllableState({prop:c,defaultProp:_,onChange:d}),[x,I]=p.useState(!1),A=j.useCallbackRef(s),ue=z(o),G=p.useRef(!1),[pe,K]=p.useState(0);return p.useEffect(()=>{const R=f.current;if(R)return R.addEventListener(T,A),()=>R.removeEventListener(T,A)},[A]),a.jsx(Se,{scope:o,orientation:r,dir:u,loop:n,currentTabStopId:v,onItemFocus:p.useCallback(R=>C(R),[C]),onItemShiftTab:p.useCallback(()=>I(!0),[]),onFocusableItemAdd:p.useCallback(()=>K(R=>R+1),[]),onFocusableItemRemove:p.useCallback(()=>K(R=>R-1),[]),children:a.jsx(S.Primitive.div,{tabIndex:x||pe===0?-1:0,"data-orientation":r,...g,ref:m,style:{outline:"none",...e.style},onMouseDown:h.composeEventHandlers(e.onMouseDown,()=>{G.current=!0}),onFocus:h.composeEventHandlers(e.onFocus,R=>{const le=!G.current;if(R.target===R.currentTarget&&le&&!x){const H=new CustomEvent(T,Ee);if(R.currentTarget.dispatchEvent(H),!H.defaultPrevented){const $=ue().filter(w=>w.focusable),me=$.find(w=>w.active),_e=$.find(w=>w.id===v),fe=[me,_e,...$].filter(Boolean).map(w=>w.ref.current);J(fe,l)}}G.current=!1}),onBlur:h.composeEventHandlers(e.onBlur,()=>I(!1))})})}),W="RovingFocusGroupItem",X=p.forwardRef((e,t)=>{const{__scopeRovingFocusGroup:o,focusable:r=!0,active:n=!1,tabStopId:i,...c}=e,_=Re.useId(),d=i||_,s=Fe(W,o),l=s.currentTabStopId===d,g=z(o),{onFocusableItemAdd:f,onFocusableItemRemove:m}=s;return p.useEffect(()=>{if(r)return f(),()=>m()},[r,f,m]),a.jsx(O.ItemSlot,{scope:o,id:d,focusable:r,active:n,children:a.jsx(S.Primitive.span,{tabIndex:l?0:-1,"data-orientation":s.orientation,...c,ref:t,onMouseDown:h.composeEventHandlers(e.onMouseDown,u=>{r?s.onItemFocus(d):u.preventDefault()}),onFocus:h.composeEventHandlers(e.onFocus,()=>s.onItemFocus(d)),onKeyDown:h.composeEventHandlers(e.onKeyDown,u=>{if(u.key==="Tab"&&u.shiftKey){s.onItemShiftTab();return}if(u.target!==u.currentTarget)return;const v=ke(u,s.orientation,s.dir);if(v!==void 0){if(u.metaKey||u.ctrlKey||u.altKey||u.shiftKey)return;u.preventDefault();let x=g().filter(I=>I.focusable).map(I=>I.ref.current);if(v==="last")x.reverse();else if(v==="prev"||v==="next"){v==="prev"&&x.reverse();const I=x.indexOf(u.currentTarget);x=s.loop?Ae(x,I+1):x.slice(I+1)}setTimeout(()=>J(x))}})})})});X.displayName=W;var je={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"};function Pe(e,t){return t!=="rtl"?e:e==="ArrowLeft"?"ArrowRight":e==="ArrowRight"?"ArrowLeft":e}function ke(e,t,o){const r=Pe(e.key,o);if(!(t==="vertical"&&["ArrowLeft","ArrowRight"].includes(r))&&!(t==="horizontal"&&["ArrowUp","ArrowDown"].includes(r)))return je[r]}function J(e,t=!1){const o=document.activeElement;for(const r of e)if(r===o||(r.focus({preventScroll:t}),document.activeElement!==o))return}function Ae(e,t){return e.map((o,r)=>e[(t+r)%e.length])}var Ge=Y,$e=X,M="Radio",[Te,Q]=j.createContextScope(M),[De,Oe]=Te(M),Z=p.forwardRef((e,t)=>{const{__scopeRadio:o,name:r,checked:n=!1,required:i,disabled:c,value:_="on",onCheck:d,form:s,...l}=e,[g,f]=p.useState(null),m=q.useComposedRefs(t,C=>f(C)),u=p.useRef(!1),v=g?s||!!g.closest("form"):!0;return a.jsxs(De,{scope:o,checked:n,disabled:c,children:[a.jsx(S.Primitive.button,{type:"button",role:"radio","aria-checked":n,"data-state":oe(n),"data-disabled":c?"":void 0,disabled:c,value:_,...l,ref:m,onClick:h.composeEventHandlers(e.onClick,C=>{n||d?.(),v&&(u.current=C.isPropagationStopped(),u.current||C.stopPropagation())})}),v&&a.jsx(qe,{control:g,bubbles:!u.current,name:r,value:_,checked:n,required:i,disabled:c,form:s,style:{transform:"translateX(-100%)"}})]})});Z.displayName=M;var ee="RadioIndicator",re=p.forwardRef((e,t)=>{const{__scopeRadio:o,forceMount:r,...n}=e,i=Oe(ee,o);return a.jsx(he.Presence,{present:r||i.checked,children:a.jsx(S.Primitive.span,{"data-state":oe(i.checked),"data-disabled":i.disabled?"":void 0,...n,ref:t})})});re.displayName=ee;var qe=e=>{const{control:t,checked:o,bubbles:r=!0,...n}=e,i=p.useRef(null),c=h.usePrevious(o),_=be.useSize(t);return p.useEffect(()=>{const d=i.current,s=window.HTMLInputElement.prototype,g=Object.getOwnPropertyDescriptor(s,"checked").set;if(c!==o&&g){const f=new Event("click",{bubbles:r});g.call(d,o),d.dispatchEvent(f)}},[c,o,r]),a.jsx("input",{type:"radio","aria-hidden":!0,defaultChecked:o,...n,tabIndex:-1,ref:i,style:{...e.style,..._,position:"absolute",pointerEvents:"none",opacity:0,margin:0}})};function oe(e){return e?"checked":"unchecked"}var Me=["ArrowUp","ArrowDown","ArrowLeft","ArrowRight"],L="RadioGroup",[Le]=j.createContextScope(L,[B,Q]),te=B(),ae=Q(),[Ke,He]=Le(L),ne=p.forwardRef((e,t)=>{const{__scopeRadioGroup:o,name:r,defaultValue:n,value:i,required:c=!1,disabled:_=!1,orientation:d,dir:s,loop:l=!0,onValueChange:g,...f}=e,m=te(o),u=V.useDirection(s),[v,C]=h.useControllableState({prop:i,defaultProp:n,onChange:g});return a.jsx(Ke,{scope:o,name:r,required:c,disabled:_,value:v,onValueChange:C,children:a.jsx(Ge,{asChild:!0,...m,orientation:d,dir:u,loop:l,children:a.jsx(S.Primitive.div,{role:"radiogroup","aria-required":c,"aria-orientation":d,"data-disabled":_?"":void 0,dir:u,...f,ref:t})})})});ne.displayName=L;var ie="RadioGroupItem",se=p.forwardRef((e,t)=>{const{__scopeRadioGroup:o,disabled:r,...n}=e,i=He(ie,o),c=i.disabled||r,_=te(o),d=ae(o),s=p.useRef(null),l=q.useComposedRefs(t,s),g=i.value===n.value,f=p.useRef(!1);return p.useEffect(()=>{const m=v=>{Me.includes(v.key)&&(f.current=!0)},u=()=>f.current=!1;return document.addEventListener("keydown",m),document.addEventListener("keyup",u),()=>{document.removeEventListener("keydown",m),document.removeEventListener("keyup",u)}},[]),a.jsx($e,{asChild:!0,..._,focusable:!c,active:g,children:a.jsx(Z,{disabled:c,required:i.required,checked:g,...d,...n,name:i.name,ref:l,onCheck:()=>i.onValueChange(n.value),onKeyDown:h.composeEventHandlers(m=>{m.key==="Enter"&&m.preventDefault()}),onFocus:h.composeEventHandlers(n.onFocus,()=>{f.current&&s.current?.click()})})})});se.displayName=ie;var Ue="RadioGroupIndicator",ce=p.forwardRef((e,t)=>{const{__scopeRadioGroup:o,...r}=e,n=ae(o);return a.jsx(re,{...n,...r,ref:t})});ce.displayName=Ue;var Ve=ne,ze=se,Be=ce;const Ye={"purpur-radio-card-group":"_purpur-radio-card-group_19np7_1","purpur-radio-card-group--vertical":"_purpur-radio-card-group--vertical_19np7_5","purpur-radio-card-group--horizontal":"_purpur-radio-card-group--horizontal_19np7_9","purpur-radio-card-group--radio-left":"_purpur-radio-card-group--radio-left_19np7_18","purpur-radio-card-group__item":"_purpur-radio-card-group__item_19np7_18","purpur-radio-card-group__item-bottom-container":"_purpur-radio-card-group__item-bottom-container_19np7_21","purpur-radio-card-group__item-top-container":"_purpur-radio-card-group__item-top-container_19np7_24","purpur-radio-card-group__container":"_purpur-radio-card-group__container_19np7_35","purpur-radio-card-group__item-container":"_purpur-radio-card-group__item-container_19np7_42","purpur-radio-card-group__item-radio":"_purpur-radio-card-group__item-radio_19np7_78","purpur-radio-card-group__item-content":"_purpur-radio-card-group__item-content_19np7_107","purpur-radio-card-group__item-title":"_purpur-radio-card-group__item-title_19np7_120","purpur-radio-card-group__item-indicator":"_purpur-radio-card-group__item-indicator_19np7_140","purpur-radio-card-group__item-image-container":"_purpur-radio-card-group__item-image-container_19np7_150","purpur-radio-card-group__item-image":"_purpur-radio-card-group__item-image_19np7_150","purpur-radio-card-group__item-image--loaded":"_purpur-radio-card-group__item-image--loaded_19np7_163","purpur-radio-card-group__item-image-placeholder":"_purpur-radio-card-group__item-image-placeholder_19np7_166","purpur-radio-card-group__item-image-placeholder--loaded":"_purpur-radio-card-group__item-image-placeholder--loaded_19np7_171","purpur-radio-card-group__item-children":"_purpur-radio-card-group__item-children_19np7_174"},b=Ce.c.bind(Ye),F="purpur-radio-card-group__item-image",We=e=>!!e?.src&&!!e.altText,Xe=({src:e,altText:t,noPlaceholder:o,loading:r="lazy",["data-testid"]:n})=>{const[i,c]=y.useState(!1),_=()=>c(!0),d=b(F,{[`${F}--loaded`]:i}),s=b(`${F}-placeholder`,{[`${F}-placeholder--loaded`]:i});return a.jsxs(a.Fragment,{children:[a.jsx("img",{"data-testid":n,className:d,src:e,alt:t,loading:r,onLoad:_}),!o&&a.jsx(xe.Skeleton,{className:s})]})},E="purpur-radio-card-group__item",D=(e,{disabled:t})=>typeof e=="function"?e({disabled:t}):e,k=y.forwardRef(({title:e,...t},o)=>{const{["data-testid"]:r,body:n,children:i,disabled:c,id:_,image:d,value:s}=t,l={...t};return a.jsxs("div",{className:b(`${E}-container`),ref:o,children:[a.jsxs(ze,{className:b(E),"data-testid":r,disabled:c,id:_,value:s,children:[d&&a.jsx("span",{className:b(`${E}-image-container`),children:We(d)?a.jsx(Xe,{...d,"data-testid":r&&`${r}-image`}):D(d,l)}),a.jsxs("span",{className:b(`${E}-content`),children:[a.jsxs("span",{className:b(`${E}-top-container`),children:[typeof e=="string"?a.jsx(U.Paragraph,{className:b(`${E}-title`),"data-testid":r&&`${r}-title`,variant:"paragraph-100",disabled:c,children:e}):D(e,l),a.jsx("span",{className:b(`${E}-radio`),children:a.jsx(Be,{className:b(`${E}-indicator`)})})]}),n&&a.jsx("span",{className:b(`${E}-bottom-container`),children:typeof n=="string"?a.jsx(U.Paragraph,{"data-testid":r&&`${r}-body`,variant:"paragraph-100",disabled:c,children:n}):D(n,l)})]})]}),i]})});k.displayName="RadioCardItem";const Je=e=>y.isValidElement(e)&&e.type===k,N="purpur-radio-card-group",de=y.forwardRef(({"data-testid":e,"aria-labelledby":t,children:o,className:r,items:n,heading:i,headingTag:c="h2",loop:_=!0,orientation:d="vertical",radioPosition:s="right",...l},g)=>{const f=y.Children.toArray(o).filter(Je);return a.jsxs("div",{className:b(r,`${N}__container`),ref:g,children:[i&&a.jsxs(ge.Heading,{"data-testid":e?`${e}-heading`:void 0,id:`${l.id}-heading`,tag:c,variant:"subsection-100",children:[l.required&&a.jsx("span",{"aria-hidden":!0,children:"* "}),i]}),(!!n?.length||f.length)&&a.jsxs(Ve,{...l,"aria-labelledby":t||(i?`${l.id}-heading`:void 0),className:b(N,`${N}--${d}`,`${N}--radio-${s}`),"data-testid":e,loop:_,children:[n?.map(m=>a.jsx(k,{...m,disabled:m.disabled||l.disabled,"data-testid":e?`${e}-item`:void 0},m.id)),y.Children.map(f,m=>y.cloneElement(m,{disabled:m.props.disabled||l.disabled}))]})]})});de.displayName="RadioCardGroup";exports.RadioCardGroup=de;exports.RadioCardItem=k;
2
+ //# sourceMappingURL=radio-card-group-_9wJC-s3.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"radio-card-group-DcdGkfOp.js","sources":["../../../common/temp/node_modules/.pnpm/@radix-ui+react-roving-focus@1.1.3_@types+react-dom@19.2.3_@types+react@19.2.14__@types_1510802d315cde0d4def4a246e01a384/node_modules/@radix-ui/react-roving-focus/dist/index.mjs","../../../common/temp/node_modules/.pnpm/@radix-ui+react-radio-group@1.2.4_@types+react-dom@19.2.3_@types+react@19.2.14__@types+_c5874f83566e86809880c08a116d1fb8/node_modules/@radix-ui/react-radio-group/dist/index.mjs","../../../components/radio-card-group/src/classnames.ts","../../../components/radio-card-group/src/radio-card-item-image.tsx","../../../components/radio-card-group/src/radio-card-item.tsx","../../../components/radio-card-group/src/is-radio-card-item.ts","../../../components/radio-card-group/src/radio-card-group.tsx"],"sourcesContent":["\"use client\";\n\n// packages/react/roving-focus/src/roving-focus-group.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { createCollection } from \"@radix-ui/react-collection\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useId } from \"@radix-ui/react-id\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { useDirection } from \"@radix-ui/react-direction\";\nimport { jsx } from \"react/jsx-runtime\";\nvar ENTRY_FOCUS = \"rovingFocusGroup.onEntryFocus\";\nvar EVENT_OPTIONS = { bubbles: false, cancelable: true };\nvar GROUP_NAME = \"RovingFocusGroup\";\nvar [Collection, useCollection, createCollectionScope] = createCollection(GROUP_NAME);\nvar [createRovingFocusGroupContext, createRovingFocusGroupScope] = createContextScope(\n GROUP_NAME,\n [createCollectionScope]\n);\nvar [RovingFocusProvider, useRovingFocusContext] = createRovingFocusGroupContext(GROUP_NAME);\nvar RovingFocusGroup = React.forwardRef(\n (props, forwardedRef) => {\n return /* @__PURE__ */ jsx(Collection.Provider, { scope: props.__scopeRovingFocusGroup, children: /* @__PURE__ */ jsx(Collection.Slot, { scope: props.__scopeRovingFocusGroup, children: /* @__PURE__ */ jsx(RovingFocusGroupImpl, { ...props, ref: forwardedRef }) }) });\n }\n);\nRovingFocusGroup.displayName = GROUP_NAME;\nvar RovingFocusGroupImpl = React.forwardRef((props, forwardedRef) => {\n const {\n __scopeRovingFocusGroup,\n orientation,\n loop = false,\n dir,\n currentTabStopId: currentTabStopIdProp,\n defaultCurrentTabStopId,\n onCurrentTabStopIdChange,\n onEntryFocus,\n preventScrollOnEntryFocus = false,\n ...groupProps\n } = props;\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const direction = useDirection(dir);\n const [currentTabStopId = null, setCurrentTabStopId] = useControllableState({\n prop: currentTabStopIdProp,\n defaultProp: defaultCurrentTabStopId,\n onChange: onCurrentTabStopIdChange\n });\n const [isTabbingBackOut, setIsTabbingBackOut] = React.useState(false);\n const handleEntryFocus = useCallbackRef(onEntryFocus);\n const getItems = useCollection(__scopeRovingFocusGroup);\n const isClickFocusRef = React.useRef(false);\n const [focusableItemsCount, setFocusableItemsCount] = React.useState(0);\n React.useEffect(() => {\n const node = ref.current;\n if (node) {\n node.addEventListener(ENTRY_FOCUS, handleEntryFocus);\n return () => node.removeEventListener(ENTRY_FOCUS, handleEntryFocus);\n }\n }, [handleEntryFocus]);\n return /* @__PURE__ */ jsx(\n RovingFocusProvider,\n {\n scope: __scopeRovingFocusGroup,\n orientation,\n dir: direction,\n loop,\n currentTabStopId,\n onItemFocus: React.useCallback(\n (tabStopId) => setCurrentTabStopId(tabStopId),\n [setCurrentTabStopId]\n ),\n onItemShiftTab: React.useCallback(() => setIsTabbingBackOut(true), []),\n onFocusableItemAdd: React.useCallback(\n () => setFocusableItemsCount((prevCount) => prevCount + 1),\n []\n ),\n onFocusableItemRemove: React.useCallback(\n () => setFocusableItemsCount((prevCount) => prevCount - 1),\n []\n ),\n children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n tabIndex: isTabbingBackOut || focusableItemsCount === 0 ? -1 : 0,\n \"data-orientation\": orientation,\n ...groupProps,\n ref: composedRefs,\n style: { outline: \"none\", ...props.style },\n onMouseDown: composeEventHandlers(props.onMouseDown, () => {\n isClickFocusRef.current = true;\n }),\n onFocus: composeEventHandlers(props.onFocus, (event) => {\n const isKeyboardFocus = !isClickFocusRef.current;\n if (event.target === event.currentTarget && isKeyboardFocus && !isTabbingBackOut) {\n const entryFocusEvent = new CustomEvent(ENTRY_FOCUS, EVENT_OPTIONS);\n event.currentTarget.dispatchEvent(entryFocusEvent);\n if (!entryFocusEvent.defaultPrevented) {\n const items = getItems().filter((item) => item.focusable);\n const activeItem = items.find((item) => item.active);\n const currentItem = items.find((item) => item.id === currentTabStopId);\n const candidateItems = [activeItem, currentItem, ...items].filter(\n Boolean\n );\n const candidateNodes = candidateItems.map((item) => item.ref.current);\n focusFirst(candidateNodes, preventScrollOnEntryFocus);\n }\n }\n isClickFocusRef.current = false;\n }),\n onBlur: composeEventHandlers(props.onBlur, () => setIsTabbingBackOut(false))\n }\n )\n }\n );\n});\nvar ITEM_NAME = \"RovingFocusGroupItem\";\nvar RovingFocusGroupItem = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeRovingFocusGroup,\n focusable = true,\n active = false,\n tabStopId,\n ...itemProps\n } = props;\n const autoId = useId();\n const id = tabStopId || autoId;\n const context = useRovingFocusContext(ITEM_NAME, __scopeRovingFocusGroup);\n const isCurrentTabStop = context.currentTabStopId === id;\n const getItems = useCollection(__scopeRovingFocusGroup);\n const { onFocusableItemAdd, onFocusableItemRemove } = context;\n React.useEffect(() => {\n if (focusable) {\n onFocusableItemAdd();\n return () => onFocusableItemRemove();\n }\n }, [focusable, onFocusableItemAdd, onFocusableItemRemove]);\n return /* @__PURE__ */ jsx(\n Collection.ItemSlot,\n {\n scope: __scopeRovingFocusGroup,\n id,\n focusable,\n active,\n children: /* @__PURE__ */ jsx(\n Primitive.span,\n {\n tabIndex: isCurrentTabStop ? 0 : -1,\n \"data-orientation\": context.orientation,\n ...itemProps,\n ref: forwardedRef,\n onMouseDown: composeEventHandlers(props.onMouseDown, (event) => {\n if (!focusable) event.preventDefault();\n else context.onItemFocus(id);\n }),\n onFocus: composeEventHandlers(props.onFocus, () => context.onItemFocus(id)),\n onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {\n if (event.key === \"Tab\" && event.shiftKey) {\n context.onItemShiftTab();\n return;\n }\n if (event.target !== event.currentTarget) return;\n const focusIntent = getFocusIntent(event, context.orientation, context.dir);\n if (focusIntent !== void 0) {\n if (event.metaKey || event.ctrlKey || event.altKey || event.shiftKey) return;\n event.preventDefault();\n const items = getItems().filter((item) => item.focusable);\n let candidateNodes = items.map((item) => item.ref.current);\n if (focusIntent === \"last\") candidateNodes.reverse();\n else if (focusIntent === \"prev\" || focusIntent === \"next\") {\n if (focusIntent === \"prev\") candidateNodes.reverse();\n const currentIndex = candidateNodes.indexOf(event.currentTarget);\n candidateNodes = context.loop ? wrapArray(candidateNodes, currentIndex + 1) : candidateNodes.slice(currentIndex + 1);\n }\n setTimeout(() => focusFirst(candidateNodes));\n }\n })\n }\n )\n }\n );\n }\n);\nRovingFocusGroupItem.displayName = ITEM_NAME;\nvar MAP_KEY_TO_FOCUS_INTENT = {\n ArrowLeft: \"prev\",\n ArrowUp: \"prev\",\n ArrowRight: \"next\",\n ArrowDown: \"next\",\n PageUp: \"first\",\n Home: \"first\",\n PageDown: \"last\",\n End: \"last\"\n};\nfunction getDirectionAwareKey(key, dir) {\n if (dir !== \"rtl\") return key;\n return key === \"ArrowLeft\" ? \"ArrowRight\" : key === \"ArrowRight\" ? \"ArrowLeft\" : key;\n}\nfunction getFocusIntent(event, orientation, dir) {\n const key = getDirectionAwareKey(event.key, dir);\n if (orientation === \"vertical\" && [\"ArrowLeft\", \"ArrowRight\"].includes(key)) return void 0;\n if (orientation === \"horizontal\" && [\"ArrowUp\", \"ArrowDown\"].includes(key)) return void 0;\n return MAP_KEY_TO_FOCUS_INTENT[key];\n}\nfunction focusFirst(candidates, preventScroll = false) {\n const PREVIOUSLY_FOCUSED_ELEMENT = document.activeElement;\n for (const candidate of candidates) {\n if (candidate === PREVIOUSLY_FOCUSED_ELEMENT) return;\n candidate.focus({ preventScroll });\n if (document.activeElement !== PREVIOUSLY_FOCUSED_ELEMENT) return;\n }\n}\nfunction wrapArray(array, startIndex) {\n return array.map((_, index) => array[(startIndex + index) % array.length]);\n}\nvar Root = RovingFocusGroup;\nvar Item = RovingFocusGroupItem;\nexport {\n Item,\n Root,\n RovingFocusGroup,\n RovingFocusGroupItem,\n createRovingFocusGroupScope\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// packages/react/radio-group/src/radio-group.tsx\nimport * as React2 from \"react\";\nimport { composeEventHandlers as composeEventHandlers2 } from \"@radix-ui/primitive\";\nimport { useComposedRefs as useComposedRefs2 } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope as createContextScope2 } from \"@radix-ui/react-context\";\nimport { Primitive as Primitive2 } from \"@radix-ui/react-primitive\";\nimport * as RovingFocusGroup from \"@radix-ui/react-roving-focus\";\nimport { createRovingFocusGroupScope } from \"@radix-ui/react-roving-focus\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { useDirection } from \"@radix-ui/react-direction\";\n\n// packages/react/radio-group/src/radio.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useSize } from \"@radix-ui/react-use-size\";\nimport { usePrevious } from \"@radix-ui/react-use-previous\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { jsx, jsxs } from \"react/jsx-runtime\";\nvar RADIO_NAME = \"Radio\";\nvar [createRadioContext, createRadioScope] = createContextScope(RADIO_NAME);\nvar [RadioProvider, useRadioContext] = createRadioContext(RADIO_NAME);\nvar Radio = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeRadio,\n name,\n checked = false,\n required,\n disabled,\n value = \"on\",\n onCheck,\n form,\n ...radioProps\n } = props;\n const [button, setButton] = React.useState(null);\n const composedRefs = useComposedRefs(forwardedRef, (node) => setButton(node));\n const hasConsumerStoppedPropagationRef = React.useRef(false);\n const isFormControl = button ? form || !!button.closest(\"form\") : true;\n return /* @__PURE__ */ jsxs(RadioProvider, { scope: __scopeRadio, checked, disabled, children: [\n /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n role: \"radio\",\n \"aria-checked\": checked,\n \"data-state\": getState(checked),\n \"data-disabled\": disabled ? \"\" : void 0,\n disabled,\n value,\n ...radioProps,\n ref: composedRefs,\n onClick: composeEventHandlers(props.onClick, (event) => {\n if (!checked) onCheck?.();\n if (isFormControl) {\n hasConsumerStoppedPropagationRef.current = event.isPropagationStopped();\n if (!hasConsumerStoppedPropagationRef.current) event.stopPropagation();\n }\n })\n }\n ),\n isFormControl && /* @__PURE__ */ jsx(\n BubbleInput,\n {\n control: button,\n bubbles: !hasConsumerStoppedPropagationRef.current,\n name,\n value,\n checked,\n required,\n disabled,\n form,\n style: { transform: \"translateX(-100%)\" }\n }\n )\n ] });\n }\n);\nRadio.displayName = RADIO_NAME;\nvar INDICATOR_NAME = \"RadioIndicator\";\nvar RadioIndicator = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeRadio, forceMount, ...indicatorProps } = props;\n const context = useRadioContext(INDICATOR_NAME, __scopeRadio);\n return /* @__PURE__ */ jsx(Presence, { present: forceMount || context.checked, children: /* @__PURE__ */ jsx(\n Primitive.span,\n {\n \"data-state\": getState(context.checked),\n \"data-disabled\": context.disabled ? \"\" : void 0,\n ...indicatorProps,\n ref: forwardedRef\n }\n ) });\n }\n);\nRadioIndicator.displayName = INDICATOR_NAME;\nvar BubbleInput = (props) => {\n const { control, checked, bubbles = true, ...inputProps } = props;\n const ref = React.useRef(null);\n const prevChecked = usePrevious(checked);\n const controlSize = useSize(control);\n React.useEffect(() => {\n const input = ref.current;\n const inputProto = window.HTMLInputElement.prototype;\n const descriptor = Object.getOwnPropertyDescriptor(inputProto, \"checked\");\n const setChecked = descriptor.set;\n if (prevChecked !== checked && setChecked) {\n const event = new Event(\"click\", { bubbles });\n setChecked.call(input, checked);\n input.dispatchEvent(event);\n }\n }, [prevChecked, checked, bubbles]);\n return /* @__PURE__ */ jsx(\n \"input\",\n {\n type: \"radio\",\n \"aria-hidden\": true,\n defaultChecked: checked,\n ...inputProps,\n tabIndex: -1,\n ref,\n style: {\n ...props.style,\n ...controlSize,\n position: \"absolute\",\n pointerEvents: \"none\",\n opacity: 0,\n margin: 0\n }\n }\n );\n};\nfunction getState(checked) {\n return checked ? \"checked\" : \"unchecked\";\n}\n\n// packages/react/radio-group/src/radio-group.tsx\nimport { jsx as jsx2 } from \"react/jsx-runtime\";\nvar ARROW_KEYS = [\"ArrowUp\", \"ArrowDown\", \"ArrowLeft\", \"ArrowRight\"];\nvar RADIO_GROUP_NAME = \"RadioGroup\";\nvar [createRadioGroupContext, createRadioGroupScope] = createContextScope2(RADIO_GROUP_NAME, [\n createRovingFocusGroupScope,\n createRadioScope\n]);\nvar useRovingFocusGroupScope = createRovingFocusGroupScope();\nvar useRadioScope = createRadioScope();\nvar [RadioGroupProvider, useRadioGroupContext] = createRadioGroupContext(RADIO_GROUP_NAME);\nvar RadioGroup = React2.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeRadioGroup,\n name,\n defaultValue,\n value: valueProp,\n required = false,\n disabled = false,\n orientation,\n dir,\n loop = true,\n onValueChange,\n ...groupProps\n } = props;\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeRadioGroup);\n const direction = useDirection(dir);\n const [value, setValue] = useControllableState({\n prop: valueProp,\n defaultProp: defaultValue,\n onChange: onValueChange\n });\n return /* @__PURE__ */ jsx2(\n RadioGroupProvider,\n {\n scope: __scopeRadioGroup,\n name,\n required,\n disabled,\n value,\n onValueChange: setValue,\n children: /* @__PURE__ */ jsx2(\n RovingFocusGroup.Root,\n {\n asChild: true,\n ...rovingFocusGroupScope,\n orientation,\n dir: direction,\n loop,\n children: /* @__PURE__ */ jsx2(\n Primitive2.div,\n {\n role: \"radiogroup\",\n \"aria-required\": required,\n \"aria-orientation\": orientation,\n \"data-disabled\": disabled ? \"\" : void 0,\n dir: direction,\n ...groupProps,\n ref: forwardedRef\n }\n )\n }\n )\n }\n );\n }\n);\nRadioGroup.displayName = RADIO_GROUP_NAME;\nvar ITEM_NAME = \"RadioGroupItem\";\nvar RadioGroupItem = React2.forwardRef(\n (props, forwardedRef) => {\n const { __scopeRadioGroup, disabled, ...itemProps } = props;\n const context = useRadioGroupContext(ITEM_NAME, __scopeRadioGroup);\n const isDisabled = context.disabled || disabled;\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeRadioGroup);\n const radioScope = useRadioScope(__scopeRadioGroup);\n const ref = React2.useRef(null);\n const composedRefs = useComposedRefs2(forwardedRef, ref);\n const checked = context.value === itemProps.value;\n const isArrowKeyPressedRef = React2.useRef(false);\n React2.useEffect(() => {\n const handleKeyDown = (event) => {\n if (ARROW_KEYS.includes(event.key)) {\n isArrowKeyPressedRef.current = true;\n }\n };\n const handleKeyUp = () => isArrowKeyPressedRef.current = false;\n document.addEventListener(\"keydown\", handleKeyDown);\n document.addEventListener(\"keyup\", handleKeyUp);\n return () => {\n document.removeEventListener(\"keydown\", handleKeyDown);\n document.removeEventListener(\"keyup\", handleKeyUp);\n };\n }, []);\n return /* @__PURE__ */ jsx2(\n RovingFocusGroup.Item,\n {\n asChild: true,\n ...rovingFocusGroupScope,\n focusable: !isDisabled,\n active: checked,\n children: /* @__PURE__ */ jsx2(\n Radio,\n {\n disabled: isDisabled,\n required: context.required,\n checked,\n ...radioScope,\n ...itemProps,\n name: context.name,\n ref: composedRefs,\n onCheck: () => context.onValueChange(itemProps.value),\n onKeyDown: composeEventHandlers2((event) => {\n if (event.key === \"Enter\") event.preventDefault();\n }),\n onFocus: composeEventHandlers2(itemProps.onFocus, () => {\n if (isArrowKeyPressedRef.current) ref.current?.click();\n })\n }\n )\n }\n );\n }\n);\nRadioGroupItem.displayName = ITEM_NAME;\nvar INDICATOR_NAME2 = \"RadioGroupIndicator\";\nvar RadioGroupIndicator = React2.forwardRef(\n (props, forwardedRef) => {\n const { __scopeRadioGroup, ...indicatorProps } = props;\n const radioScope = useRadioScope(__scopeRadioGroup);\n return /* @__PURE__ */ jsx2(RadioIndicator, { ...radioScope, ...indicatorProps, ref: forwardedRef });\n }\n);\nRadioGroupIndicator.displayName = INDICATOR_NAME2;\nvar Root2 = RadioGroup;\nvar Item2 = RadioGroupItem;\nvar Indicator = RadioGroupIndicator;\nexport {\n Indicator,\n Item2 as Item,\n RadioGroup,\n RadioGroupIndicator,\n RadioGroupItem,\n Root2 as Root,\n createRadioGroupScope\n};\n//# sourceMappingURL=index.mjs.map\n","import c from \"classnames/bind\";\n\nimport styles from \"./radio-card-group.module.scss\";\nexport const cx = c.bind(styles);\n","import React from \"react\";\nimport { useState } from \"react\";\nimport { Skeleton } from \"@purpur/skeleton\";\n\nimport { cx } from \"./classnames\";\n\nexport type RadioCardImageProps = {\n [\"data-testid\"]?: string;\n altText: string;\n loading?: \"lazy\" | \"eager\";\n noPlaceholder?: boolean;\n src: string;\n};\n\nconst rootClassName = \"purpur-radio-card-group__item-image\";\n\nexport const isRadioCardItemImageProps = (\n imageProps?: RadioCardImageProps | unknown\n): imageProps is RadioCardImageProps =>\n !!(imageProps as RadioCardImageProps)?.src && !!(imageProps as RadioCardImageProps).altText;\n\nexport const RadioCardImage = ({\n src,\n altText,\n noPlaceholder,\n loading = \"lazy\",\n [\"data-testid\"]: dataTestid,\n}: RadioCardImageProps) => {\n const [isLoaded, setIsLoaded] = useState(false);\n const onLoad = () => setIsLoaded(true);\n\n const imageClassName = cx(rootClassName, {\n [`${rootClassName}--loaded`]: isLoaded,\n });\n\n const placeholderClassName = cx(`${rootClassName}-placeholder`, {\n [`${rootClassName}-placeholder--loaded`]: isLoaded,\n });\n\n return (\n <>\n <img\n data-testid={dataTestid}\n className={imageClassName}\n src={src}\n alt={altText}\n loading={loading}\n onLoad={onLoad}\n />\n {!noPlaceholder && <Skeleton className={placeholderClassName} />}\n </>\n );\n};\n","import React, { forwardRef, type ReactNode } from \"react\";\nimport type { BaseProps } from \"@purpur/common-types\";\nimport { Paragraph } from \"@purpur/paragraph\";\nimport * as RadixRadioGroup from \"@radix-ui/react-radio-group\";\n\nimport { cx } from \"./classnames\";\nimport {\n isRadioCardItemImageProps,\n RadioCardImage,\n type RadioCardImageProps,\n} from \"./radio-card-item-image\";\n\nconst rootClassName = \"purpur-radio-card-group__item\";\n\ntype CustomElement = ((props: { disabled?: boolean }) => ReactNode) | ReactNode;\ntype NonNullCustomElement =\n | ((props: { disabled?: boolean }) => NonNullable<ReactNode>)\n | NonNullable<ReactNode>;\n\nexport type RadioCardItemProps = Omit<BaseProps, \"id\" | \"title\"> & {\n /**\n * `string | ReactNode | (props: { disabled?: boolean }) => ReactNode`\n */\n body?: string | CustomElement;\n disabled?: boolean;\n id: string;\n /**\n * The radio image.\n *\n union = {\n \"data-testid\"?: string | undefined;\n altText: string;\n loading?: \"lazy\" | \"eager\" | undefined;\n noPlaceholder?: boolean | undefined;\n src: string;\n } |\n ((props: {\n disabled?: boolean;\n }) => ReactNode) | React.ReactNode\n * */\n image?: RadioCardImageProps | CustomElement;\n value: string;\n /**\n * `union = string | Omit<ReactNode, \"undefined\" | \"null\">`\n */\n title: string | NonNullCustomElement;\n};\n\nconst renderCustomElement = (\n element: CustomElement | NonNullCustomElement,\n { disabled }: Pick<RadioCardItemProps, \"disabled\">\n) => (typeof element === \"function\" ? element({ disabled }) : element);\n\nexport const RadioCardItem = forwardRef<HTMLDivElement, RadioCardItemProps>(\n ({ title, ...propsx }, ref) => {\n const { [\"data-testid\"]: dataTestid, body, children, disabled, id, image, value } = propsx;\n\n const props = { title, ...propsx };\n\n return (\n <div className={cx(`${rootClassName}-container`)} ref={ref}>\n <RadixRadioGroup.Item\n className={cx(rootClassName)}\n data-testid={dataTestid}\n disabled={disabled}\n id={id}\n value={value}\n >\n {image && (\n <span className={cx(`${rootClassName}-image-container`)}>\n {isRadioCardItemImageProps(image) ? (\n <RadioCardImage {...image} data-testid={dataTestid && `${dataTestid}-image`} />\n ) : (\n renderCustomElement(image, props)\n )}\n </span>\n )}\n <span className={cx(`${rootClassName}-content`)}>\n <span className={cx(`${rootClassName}-top-container`)}>\n {typeof title === \"string\" ? (\n <Paragraph\n className={cx(`${rootClassName}-title`)}\n data-testid={dataTestid && `${dataTestid}-title`}\n variant=\"paragraph-100\"\n disabled={disabled}\n >\n {title}\n </Paragraph>\n ) : (\n renderCustomElement(title, props)\n )}\n <span className={cx(`${rootClassName}-radio`)}>\n <RadixRadioGroup.Indicator className={cx(`${rootClassName}-indicator`)} />\n </span>\n </span>\n {body && (\n <span className={cx(`${rootClassName}-bottom-container`)}>\n {typeof body === \"string\" ? (\n <Paragraph\n data-testid={dataTestid && `${dataTestid}-body`}\n variant=\"paragraph-100\"\n disabled={disabled}\n >\n {body}\n </Paragraph>\n ) : (\n renderCustomElement(body, props)\n )}\n </span>\n )}\n </span>\n </RadixRadioGroup.Item>\n {children}\n </div>\n );\n }\n);\n\nRadioCardItem.displayName = \"RadioCardItem\";\n","import { isValidElement, type ReactElement, type ReactNode } from \"react\";\n\nimport { RadioCardItem, type RadioCardItemProps } from \"./radio-card-item\";\n\nexport const isRadioCardItem = (child?: ReactNode): child is ReactElement<RadioCardItemProps> =>\n isValidElement<RadioCardItemProps>(child) && child.type === RadioCardItem;\n","import React, { Children, cloneElement, forwardRef, type ReactNode, type Ref } from \"react\";\nimport { Heading, type HeadingTagType } from \"@purpur/heading\";\nimport * as RadixRadioGroup from \"@radix-ui/react-radio-group\";\n\nimport { cx } from \"./classnames\";\nimport { isRadioCardItem } from \"./is-radio-card-item\";\nimport type { RadioCardGroupOrientation, RadioPosition } from \"./radio-card-group.constants\";\nimport { RadioCardItem, type RadioCardItemProps } from \"./radio-card-item\";\n\nexport type RadioCardGroupItem = RadioCardItemProps & { ref?: Ref<HTMLDivElement> };\n\ntype StylingProps = Pick<React.HTMLAttributes<HTMLElement>, \"className\" | \"style\">;\n\nexport type RadioCardGroupProps = StylingProps & {\n /**\n * To use when no heading is given.\n * */\n [\"aria-label\"]?: string;\n /**\n * To use with custom label.\n * */\n [\"aria-labelledby\"]?: string;\n [\"data-testid\"]?: string;\n /**\n * The value of the radio card item that should be checked when initially rendered. Use when you do not need to control the state of the radio items.\n * */\n defaultValue?: string;\n /**\n * When true, prevents the user from interacting with radio card items.\n * */\n disabled?: boolean;\n /**\n * ID of the radio card group container.\n * */\n id: string;\n /**\n * The radio card items.\n * */\n items?: RadioCardGroupItem[];\n /**\n * Renders above the radio card group as a heading\n * */\n heading?: string;\n /**\n * Changes heading level for heading.\n */\n headingTag?: HeadingTagType;\n /**\n * When true, keyboard navigation will loop from last item to first, and vice versa.\n * */\n loop?: boolean;\n /**\n * The name of the group. Submitted with its owning form as part of a name/value pair.\n * */\n name?: string;\n /**\n * Event handler called when the value changes.\n * */\n onValueChange?: (value: string) => void;\n /**\n * Set to stack cards horizontally or vertically. When `horizontal`, the min card width with is 100% when container is sm, and `--purpur-breakpoint-lg` / 4 when the container is md or larger.\n * */\n orientation?: RadioCardGroupOrientation;\n /**\n * The position if the radio in the card items.\n * */\n radioPosition?: RadioPosition;\n /**\n * When true, indicates that the user must check a radio card item before the owning form can be submitted.\n * */\n required?: boolean;\n /**\n * The controlled value of the radio card item to check. Should be used in conjunction with onValueChange.\n * */\n value?: string;\n /**\n * Will only render given RadioCardItems.\n * */\n children?: ReactNode;\n};\n\nconst rootClassName = \"purpur-radio-card-group\";\n\nexport const RadioCardGroup = forwardRef<HTMLDivElement, RadioCardGroupProps>(\n (\n {\n \"data-testid\": dataTestId,\n \"aria-labelledby\": ariaLabelledby,\n children,\n className,\n items,\n heading,\n headingTag = \"h2\",\n loop = true,\n orientation = \"vertical\",\n radioPosition = \"right\",\n ...props\n },\n ref\n ) => {\n const radioCardItemChildren = Children.toArray(children).filter(isRadioCardItem);\n\n return (\n <div className={cx(className, `${rootClassName}__container`)} ref={ref}>\n {heading && (\n <Heading\n data-testid={dataTestId ? `${dataTestId}-heading` : undefined}\n id={`${props.id}-heading`}\n tag={headingTag}\n variant=\"subsection-100\"\n >\n {props.required && <span aria-hidden>{\"* \"}</span>}\n {heading}\n </Heading>\n )}\n {(!!items?.length || radioCardItemChildren.length) && (\n <RadixRadioGroup.Root\n {...props}\n aria-labelledby={ariaLabelledby || (heading ? `${props.id}-heading` : undefined)}\n className={cx(\n rootClassName,\n `${rootClassName}--${orientation}`,\n `${rootClassName}--radio-${radioPosition}`\n )}\n data-testid={dataTestId}\n loop={loop}\n >\n {items?.map((item) => (\n <RadioCardItem\n key={item.id}\n {...item}\n disabled={item.disabled || props.disabled}\n data-testid={dataTestId ? `${dataTestId}-item` : undefined}\n />\n ))}\n {Children.map(radioCardItemChildren, (child) =>\n cloneElement(child, { disabled: child.props.disabled || props.disabled })\n )}\n </RadixRadioGroup.Root>\n )}\n </div>\n );\n }\n);\n\nRadioCardGroup.displayName = \"RadioCardGroup\";\n\n// RadioCardItem must be exported after `RadioCardGroup` for the Storybook controls to be generated from RadioCardGroup props\nexport type { RadioCardItemProps } from \"./radio-card-item\";\nexport { RadioCardItem } from \"./radio-card-item\";\n"],"names":["ENTRY_FOCUS","EVENT_OPTIONS","GROUP_NAME","Collection","useCollection","createCollectionScope","createCollection","createRovingFocusGroupContext","createRovingFocusGroupScope","createContextScope","RovingFocusProvider","useRovingFocusContext","RovingFocusGroup","React","props","forwardedRef","jsx","RovingFocusGroupImpl","__scopeRovingFocusGroup","orientation","loop","dir","currentTabStopIdProp","defaultCurrentTabStopId","onCurrentTabStopIdChange","onEntryFocus","preventScrollOnEntryFocus","groupProps","ref","composedRefs","useComposedRefs","direction","useDirection","currentTabStopId","setCurrentTabStopId","useControllableState","isTabbingBackOut","setIsTabbingBackOut","handleEntryFocus","useCallbackRef","getItems","isClickFocusRef","focusableItemsCount","setFocusableItemsCount","node","tabStopId","prevCount","Primitive","composeEventHandlers","event","isKeyboardFocus","entryFocusEvent","items","item","activeItem","currentItem","candidateNodes","focusFirst","ITEM_NAME","RovingFocusGroupItem","focusable","active","itemProps","autoId","useId","id","context","isCurrentTabStop","onFocusableItemAdd","onFocusableItemRemove","focusIntent","getFocusIntent","currentIndex","wrapArray","MAP_KEY_TO_FOCUS_INTENT","getDirectionAwareKey","key","candidates","preventScroll","PREVIOUSLY_FOCUSED_ELEMENT","candidate","array","startIndex","_","index","Root","Item","RADIO_NAME","createRadioContext","createRadioScope","RadioProvider","useRadioContext","Radio","__scopeRadio","name","checked","required","disabled","value","onCheck","form","radioProps","button","setButton","hasConsumerStoppedPropagationRef","isFormControl","jsxs","getState","BubbleInput","INDICATOR_NAME","RadioIndicator","forceMount","indicatorProps","Presence","control","bubbles","inputProps","prevChecked","usePrevious","controlSize","useSize","input","inputProto","setChecked","ARROW_KEYS","RADIO_GROUP_NAME","createRadioGroupContext","createContextScope2","useRovingFocusGroupScope","useRadioScope","RadioGroupProvider","useRadioGroupContext","RadioGroup","React2","__scopeRadioGroup","defaultValue","valueProp","onValueChange","rovingFocusGroupScope","setValue","jsx2","RovingFocusGroup.Root","Primitive2","RadioGroupItem","isDisabled","radioScope","useComposedRefs2","isArrowKeyPressedRef","handleKeyDown","handleKeyUp","RovingFocusGroup.Item","composeEventHandlers2","INDICATOR_NAME2","RadioGroupIndicator","Root2","Item2","Indicator","cx","c","styles","rootClassName","isRadioCardItemImageProps","imageProps","RadioCardImage","src","altText","noPlaceholder","loading","dataTestid","isLoaded","setIsLoaded","useState","onLoad","imageClassName","placeholderClassName","Fragment","Skeleton","renderCustomElement","element","RadioCardItem","forwardRef","title","propsx","body","children","image","RadixRadioGroup.Item","Paragraph","RadixRadioGroup.Indicator","isRadioCardItem","child","isValidElement","RadioCardGroup","dataTestId","ariaLabelledby","className","heading","headingTag","radioPosition","radioCardItemChildren","Children","Heading","RadixRadioGroup.Root","cloneElement"],"mappings":"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","x_google_ignoreList":[0,1]}
1
+ {"version":3,"file":"radio-card-group-_9wJC-s3.js","sources":["../../../common/temp/node_modules/.pnpm/@radix-ui+react-roving-focus@1.1.3_@types+react-dom@19.2.3_@types+react@19.2.14__@types_1510802d315cde0d4def4a246e01a384/node_modules/@radix-ui/react-roving-focus/dist/index.mjs","../../../common/temp/node_modules/.pnpm/@radix-ui+react-radio-group@1.2.4_@types+react-dom@19.2.3_@types+react@19.2.14__@types+_c5874f83566e86809880c08a116d1fb8/node_modules/@radix-ui/react-radio-group/dist/index.mjs","../../../components/radio-card-group/src/classnames.ts","../../../components/radio-card-group/src/radio-card-item-image.tsx","../../../components/radio-card-group/src/radio-card-item.tsx","../../../components/radio-card-group/src/is-radio-card-item.ts","../../../components/radio-card-group/src/radio-card-group.tsx"],"sourcesContent":["\"use client\";\n\n// packages/react/roving-focus/src/roving-focus-group.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { createCollection } from \"@radix-ui/react-collection\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useId } from \"@radix-ui/react-id\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { useDirection } from \"@radix-ui/react-direction\";\nimport { jsx } from \"react/jsx-runtime\";\nvar ENTRY_FOCUS = \"rovingFocusGroup.onEntryFocus\";\nvar EVENT_OPTIONS = { bubbles: false, cancelable: true };\nvar GROUP_NAME = \"RovingFocusGroup\";\nvar [Collection, useCollection, createCollectionScope] = createCollection(GROUP_NAME);\nvar [createRovingFocusGroupContext, createRovingFocusGroupScope] = createContextScope(\n GROUP_NAME,\n [createCollectionScope]\n);\nvar [RovingFocusProvider, useRovingFocusContext] = createRovingFocusGroupContext(GROUP_NAME);\nvar RovingFocusGroup = React.forwardRef(\n (props, forwardedRef) => {\n return /* @__PURE__ */ jsx(Collection.Provider, { scope: props.__scopeRovingFocusGroup, children: /* @__PURE__ */ jsx(Collection.Slot, { scope: props.__scopeRovingFocusGroup, children: /* @__PURE__ */ jsx(RovingFocusGroupImpl, { ...props, ref: forwardedRef }) }) });\n }\n);\nRovingFocusGroup.displayName = GROUP_NAME;\nvar RovingFocusGroupImpl = React.forwardRef((props, forwardedRef) => {\n const {\n __scopeRovingFocusGroup,\n orientation,\n loop = false,\n dir,\n currentTabStopId: currentTabStopIdProp,\n defaultCurrentTabStopId,\n onCurrentTabStopIdChange,\n onEntryFocus,\n preventScrollOnEntryFocus = false,\n ...groupProps\n } = props;\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const direction = useDirection(dir);\n const [currentTabStopId = null, setCurrentTabStopId] = useControllableState({\n prop: currentTabStopIdProp,\n defaultProp: defaultCurrentTabStopId,\n onChange: onCurrentTabStopIdChange\n });\n const [isTabbingBackOut, setIsTabbingBackOut] = React.useState(false);\n const handleEntryFocus = useCallbackRef(onEntryFocus);\n const getItems = useCollection(__scopeRovingFocusGroup);\n const isClickFocusRef = React.useRef(false);\n const [focusableItemsCount, setFocusableItemsCount] = React.useState(0);\n React.useEffect(() => {\n const node = ref.current;\n if (node) {\n node.addEventListener(ENTRY_FOCUS, handleEntryFocus);\n return () => node.removeEventListener(ENTRY_FOCUS, handleEntryFocus);\n }\n }, [handleEntryFocus]);\n return /* @__PURE__ */ jsx(\n RovingFocusProvider,\n {\n scope: __scopeRovingFocusGroup,\n orientation,\n dir: direction,\n loop,\n currentTabStopId,\n onItemFocus: React.useCallback(\n (tabStopId) => setCurrentTabStopId(tabStopId),\n [setCurrentTabStopId]\n ),\n onItemShiftTab: React.useCallback(() => setIsTabbingBackOut(true), []),\n onFocusableItemAdd: React.useCallback(\n () => setFocusableItemsCount((prevCount) => prevCount + 1),\n []\n ),\n onFocusableItemRemove: React.useCallback(\n () => setFocusableItemsCount((prevCount) => prevCount - 1),\n []\n ),\n children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n tabIndex: isTabbingBackOut || focusableItemsCount === 0 ? -1 : 0,\n \"data-orientation\": orientation,\n ...groupProps,\n ref: composedRefs,\n style: { outline: \"none\", ...props.style },\n onMouseDown: composeEventHandlers(props.onMouseDown, () => {\n isClickFocusRef.current = true;\n }),\n onFocus: composeEventHandlers(props.onFocus, (event) => {\n const isKeyboardFocus = !isClickFocusRef.current;\n if (event.target === event.currentTarget && isKeyboardFocus && !isTabbingBackOut) {\n const entryFocusEvent = new CustomEvent(ENTRY_FOCUS, EVENT_OPTIONS);\n event.currentTarget.dispatchEvent(entryFocusEvent);\n if (!entryFocusEvent.defaultPrevented) {\n const items = getItems().filter((item) => item.focusable);\n const activeItem = items.find((item) => item.active);\n const currentItem = items.find((item) => item.id === currentTabStopId);\n const candidateItems = [activeItem, currentItem, ...items].filter(\n Boolean\n );\n const candidateNodes = candidateItems.map((item) => item.ref.current);\n focusFirst(candidateNodes, preventScrollOnEntryFocus);\n }\n }\n isClickFocusRef.current = false;\n }),\n onBlur: composeEventHandlers(props.onBlur, () => setIsTabbingBackOut(false))\n }\n )\n }\n );\n});\nvar ITEM_NAME = \"RovingFocusGroupItem\";\nvar RovingFocusGroupItem = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeRovingFocusGroup,\n focusable = true,\n active = false,\n tabStopId,\n ...itemProps\n } = props;\n const autoId = useId();\n const id = tabStopId || autoId;\n const context = useRovingFocusContext(ITEM_NAME, __scopeRovingFocusGroup);\n const isCurrentTabStop = context.currentTabStopId === id;\n const getItems = useCollection(__scopeRovingFocusGroup);\n const { onFocusableItemAdd, onFocusableItemRemove } = context;\n React.useEffect(() => {\n if (focusable) {\n onFocusableItemAdd();\n return () => onFocusableItemRemove();\n }\n }, [focusable, onFocusableItemAdd, onFocusableItemRemove]);\n return /* @__PURE__ */ jsx(\n Collection.ItemSlot,\n {\n scope: __scopeRovingFocusGroup,\n id,\n focusable,\n active,\n children: /* @__PURE__ */ jsx(\n Primitive.span,\n {\n tabIndex: isCurrentTabStop ? 0 : -1,\n \"data-orientation\": context.orientation,\n ...itemProps,\n ref: forwardedRef,\n onMouseDown: composeEventHandlers(props.onMouseDown, (event) => {\n if (!focusable) event.preventDefault();\n else context.onItemFocus(id);\n }),\n onFocus: composeEventHandlers(props.onFocus, () => context.onItemFocus(id)),\n onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {\n if (event.key === \"Tab\" && event.shiftKey) {\n context.onItemShiftTab();\n return;\n }\n if (event.target !== event.currentTarget) return;\n const focusIntent = getFocusIntent(event, context.orientation, context.dir);\n if (focusIntent !== void 0) {\n if (event.metaKey || event.ctrlKey || event.altKey || event.shiftKey) return;\n event.preventDefault();\n const items = getItems().filter((item) => item.focusable);\n let candidateNodes = items.map((item) => item.ref.current);\n if (focusIntent === \"last\") candidateNodes.reverse();\n else if (focusIntent === \"prev\" || focusIntent === \"next\") {\n if (focusIntent === \"prev\") candidateNodes.reverse();\n const currentIndex = candidateNodes.indexOf(event.currentTarget);\n candidateNodes = context.loop ? wrapArray(candidateNodes, currentIndex + 1) : candidateNodes.slice(currentIndex + 1);\n }\n setTimeout(() => focusFirst(candidateNodes));\n }\n })\n }\n )\n }\n );\n }\n);\nRovingFocusGroupItem.displayName = ITEM_NAME;\nvar MAP_KEY_TO_FOCUS_INTENT = {\n ArrowLeft: \"prev\",\n ArrowUp: \"prev\",\n ArrowRight: \"next\",\n ArrowDown: \"next\",\n PageUp: \"first\",\n Home: \"first\",\n PageDown: \"last\",\n End: \"last\"\n};\nfunction getDirectionAwareKey(key, dir) {\n if (dir !== \"rtl\") return key;\n return key === \"ArrowLeft\" ? \"ArrowRight\" : key === \"ArrowRight\" ? \"ArrowLeft\" : key;\n}\nfunction getFocusIntent(event, orientation, dir) {\n const key = getDirectionAwareKey(event.key, dir);\n if (orientation === \"vertical\" && [\"ArrowLeft\", \"ArrowRight\"].includes(key)) return void 0;\n if (orientation === \"horizontal\" && [\"ArrowUp\", \"ArrowDown\"].includes(key)) return void 0;\n return MAP_KEY_TO_FOCUS_INTENT[key];\n}\nfunction focusFirst(candidates, preventScroll = false) {\n const PREVIOUSLY_FOCUSED_ELEMENT = document.activeElement;\n for (const candidate of candidates) {\n if (candidate === PREVIOUSLY_FOCUSED_ELEMENT) return;\n candidate.focus({ preventScroll });\n if (document.activeElement !== PREVIOUSLY_FOCUSED_ELEMENT) return;\n }\n}\nfunction wrapArray(array, startIndex) {\n return array.map((_, index) => array[(startIndex + index) % array.length]);\n}\nvar Root = RovingFocusGroup;\nvar Item = RovingFocusGroupItem;\nexport {\n Item,\n Root,\n RovingFocusGroup,\n RovingFocusGroupItem,\n createRovingFocusGroupScope\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// packages/react/radio-group/src/radio-group.tsx\nimport * as React2 from \"react\";\nimport { composeEventHandlers as composeEventHandlers2 } from \"@radix-ui/primitive\";\nimport { useComposedRefs as useComposedRefs2 } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope as createContextScope2 } from \"@radix-ui/react-context\";\nimport { Primitive as Primitive2 } from \"@radix-ui/react-primitive\";\nimport * as RovingFocusGroup from \"@radix-ui/react-roving-focus\";\nimport { createRovingFocusGroupScope } from \"@radix-ui/react-roving-focus\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { useDirection } from \"@radix-ui/react-direction\";\n\n// packages/react/radio-group/src/radio.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useSize } from \"@radix-ui/react-use-size\";\nimport { usePrevious } from \"@radix-ui/react-use-previous\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { jsx, jsxs } from \"react/jsx-runtime\";\nvar RADIO_NAME = \"Radio\";\nvar [createRadioContext, createRadioScope] = createContextScope(RADIO_NAME);\nvar [RadioProvider, useRadioContext] = createRadioContext(RADIO_NAME);\nvar Radio = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeRadio,\n name,\n checked = false,\n required,\n disabled,\n value = \"on\",\n onCheck,\n form,\n ...radioProps\n } = props;\n const [button, setButton] = React.useState(null);\n const composedRefs = useComposedRefs(forwardedRef, (node) => setButton(node));\n const hasConsumerStoppedPropagationRef = React.useRef(false);\n const isFormControl = button ? form || !!button.closest(\"form\") : true;\n return /* @__PURE__ */ jsxs(RadioProvider, { scope: __scopeRadio, checked, disabled, children: [\n /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n role: \"radio\",\n \"aria-checked\": checked,\n \"data-state\": getState(checked),\n \"data-disabled\": disabled ? \"\" : void 0,\n disabled,\n value,\n ...radioProps,\n ref: composedRefs,\n onClick: composeEventHandlers(props.onClick, (event) => {\n if (!checked) onCheck?.();\n if (isFormControl) {\n hasConsumerStoppedPropagationRef.current = event.isPropagationStopped();\n if (!hasConsumerStoppedPropagationRef.current) event.stopPropagation();\n }\n })\n }\n ),\n isFormControl && /* @__PURE__ */ jsx(\n BubbleInput,\n {\n control: button,\n bubbles: !hasConsumerStoppedPropagationRef.current,\n name,\n value,\n checked,\n required,\n disabled,\n form,\n style: { transform: \"translateX(-100%)\" }\n }\n )\n ] });\n }\n);\nRadio.displayName = RADIO_NAME;\nvar INDICATOR_NAME = \"RadioIndicator\";\nvar RadioIndicator = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeRadio, forceMount, ...indicatorProps } = props;\n const context = useRadioContext(INDICATOR_NAME, __scopeRadio);\n return /* @__PURE__ */ jsx(Presence, { present: forceMount || context.checked, children: /* @__PURE__ */ jsx(\n Primitive.span,\n {\n \"data-state\": getState(context.checked),\n \"data-disabled\": context.disabled ? \"\" : void 0,\n ...indicatorProps,\n ref: forwardedRef\n }\n ) });\n }\n);\nRadioIndicator.displayName = INDICATOR_NAME;\nvar BubbleInput = (props) => {\n const { control, checked, bubbles = true, ...inputProps } = props;\n const ref = React.useRef(null);\n const prevChecked = usePrevious(checked);\n const controlSize = useSize(control);\n React.useEffect(() => {\n const input = ref.current;\n const inputProto = window.HTMLInputElement.prototype;\n const descriptor = Object.getOwnPropertyDescriptor(inputProto, \"checked\");\n const setChecked = descriptor.set;\n if (prevChecked !== checked && setChecked) {\n const event = new Event(\"click\", { bubbles });\n setChecked.call(input, checked);\n input.dispatchEvent(event);\n }\n }, [prevChecked, checked, bubbles]);\n return /* @__PURE__ */ jsx(\n \"input\",\n {\n type: \"radio\",\n \"aria-hidden\": true,\n defaultChecked: checked,\n ...inputProps,\n tabIndex: -1,\n ref,\n style: {\n ...props.style,\n ...controlSize,\n position: \"absolute\",\n pointerEvents: \"none\",\n opacity: 0,\n margin: 0\n }\n }\n );\n};\nfunction getState(checked) {\n return checked ? \"checked\" : \"unchecked\";\n}\n\n// packages/react/radio-group/src/radio-group.tsx\nimport { jsx as jsx2 } from \"react/jsx-runtime\";\nvar ARROW_KEYS = [\"ArrowUp\", \"ArrowDown\", \"ArrowLeft\", \"ArrowRight\"];\nvar RADIO_GROUP_NAME = \"RadioGroup\";\nvar [createRadioGroupContext, createRadioGroupScope] = createContextScope2(RADIO_GROUP_NAME, [\n createRovingFocusGroupScope,\n createRadioScope\n]);\nvar useRovingFocusGroupScope = createRovingFocusGroupScope();\nvar useRadioScope = createRadioScope();\nvar [RadioGroupProvider, useRadioGroupContext] = createRadioGroupContext(RADIO_GROUP_NAME);\nvar RadioGroup = React2.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeRadioGroup,\n name,\n defaultValue,\n value: valueProp,\n required = false,\n disabled = false,\n orientation,\n dir,\n loop = true,\n onValueChange,\n ...groupProps\n } = props;\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeRadioGroup);\n const direction = useDirection(dir);\n const [value, setValue] = useControllableState({\n prop: valueProp,\n defaultProp: defaultValue,\n onChange: onValueChange\n });\n return /* @__PURE__ */ jsx2(\n RadioGroupProvider,\n {\n scope: __scopeRadioGroup,\n name,\n required,\n disabled,\n value,\n onValueChange: setValue,\n children: /* @__PURE__ */ jsx2(\n RovingFocusGroup.Root,\n {\n asChild: true,\n ...rovingFocusGroupScope,\n orientation,\n dir: direction,\n loop,\n children: /* @__PURE__ */ jsx2(\n Primitive2.div,\n {\n role: \"radiogroup\",\n \"aria-required\": required,\n \"aria-orientation\": orientation,\n \"data-disabled\": disabled ? \"\" : void 0,\n dir: direction,\n ...groupProps,\n ref: forwardedRef\n }\n )\n }\n )\n }\n );\n }\n);\nRadioGroup.displayName = RADIO_GROUP_NAME;\nvar ITEM_NAME = \"RadioGroupItem\";\nvar RadioGroupItem = React2.forwardRef(\n (props, forwardedRef) => {\n const { __scopeRadioGroup, disabled, ...itemProps } = props;\n const context = useRadioGroupContext(ITEM_NAME, __scopeRadioGroup);\n const isDisabled = context.disabled || disabled;\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeRadioGroup);\n const radioScope = useRadioScope(__scopeRadioGroup);\n const ref = React2.useRef(null);\n const composedRefs = useComposedRefs2(forwardedRef, ref);\n const checked = context.value === itemProps.value;\n const isArrowKeyPressedRef = React2.useRef(false);\n React2.useEffect(() => {\n const handleKeyDown = (event) => {\n if (ARROW_KEYS.includes(event.key)) {\n isArrowKeyPressedRef.current = true;\n }\n };\n const handleKeyUp = () => isArrowKeyPressedRef.current = false;\n document.addEventListener(\"keydown\", handleKeyDown);\n document.addEventListener(\"keyup\", handleKeyUp);\n return () => {\n document.removeEventListener(\"keydown\", handleKeyDown);\n document.removeEventListener(\"keyup\", handleKeyUp);\n };\n }, []);\n return /* @__PURE__ */ jsx2(\n RovingFocusGroup.Item,\n {\n asChild: true,\n ...rovingFocusGroupScope,\n focusable: !isDisabled,\n active: checked,\n children: /* @__PURE__ */ jsx2(\n Radio,\n {\n disabled: isDisabled,\n required: context.required,\n checked,\n ...radioScope,\n ...itemProps,\n name: context.name,\n ref: composedRefs,\n onCheck: () => context.onValueChange(itemProps.value),\n onKeyDown: composeEventHandlers2((event) => {\n if (event.key === \"Enter\") event.preventDefault();\n }),\n onFocus: composeEventHandlers2(itemProps.onFocus, () => {\n if (isArrowKeyPressedRef.current) ref.current?.click();\n })\n }\n )\n }\n );\n }\n);\nRadioGroupItem.displayName = ITEM_NAME;\nvar INDICATOR_NAME2 = \"RadioGroupIndicator\";\nvar RadioGroupIndicator = React2.forwardRef(\n (props, forwardedRef) => {\n const { __scopeRadioGroup, ...indicatorProps } = props;\n const radioScope = useRadioScope(__scopeRadioGroup);\n return /* @__PURE__ */ jsx2(RadioIndicator, { ...radioScope, ...indicatorProps, ref: forwardedRef });\n }\n);\nRadioGroupIndicator.displayName = INDICATOR_NAME2;\nvar Root2 = RadioGroup;\nvar Item2 = RadioGroupItem;\nvar Indicator = RadioGroupIndicator;\nexport {\n Indicator,\n Item2 as Item,\n RadioGroup,\n RadioGroupIndicator,\n RadioGroupItem,\n Root2 as Root,\n createRadioGroupScope\n};\n//# sourceMappingURL=index.mjs.map\n","import c from \"classnames/bind\";\n\nimport styles from \"./radio-card-group.module.scss\";\nexport const cx = c.bind(styles);\n","import React from \"react\";\nimport { useState } from \"react\";\nimport { Skeleton } from \"@purpur/skeleton\";\n\nimport { cx } from \"./classnames\";\n\nexport type RadioCardImageProps = {\n [\"data-testid\"]?: string;\n altText: string;\n loading?: \"lazy\" | \"eager\";\n noPlaceholder?: boolean;\n src: string;\n};\n\nconst rootClassName = \"purpur-radio-card-group__item-image\";\n\nexport const isRadioCardItemImageProps = (\n imageProps?: RadioCardImageProps | unknown\n): imageProps is RadioCardImageProps =>\n !!(imageProps as RadioCardImageProps)?.src && !!(imageProps as RadioCardImageProps).altText;\n\nexport const RadioCardImage = ({\n src,\n altText,\n noPlaceholder,\n loading = \"lazy\",\n [\"data-testid\"]: dataTestid,\n}: RadioCardImageProps) => {\n const [isLoaded, setIsLoaded] = useState(false);\n const onLoad = () => setIsLoaded(true);\n\n const imageClassName = cx(rootClassName, {\n [`${rootClassName}--loaded`]: isLoaded,\n });\n\n const placeholderClassName = cx(`${rootClassName}-placeholder`, {\n [`${rootClassName}-placeholder--loaded`]: isLoaded,\n });\n\n return (\n <>\n <img\n data-testid={dataTestid}\n className={imageClassName}\n src={src}\n alt={altText}\n loading={loading}\n onLoad={onLoad}\n />\n {!noPlaceholder && <Skeleton className={placeholderClassName} />}\n </>\n );\n};\n","import React, { forwardRef, type ReactNode } from \"react\";\nimport type { BaseProps } from \"@purpur/common-types\";\nimport { Paragraph } from \"@purpur/paragraph\";\nimport * as RadixRadioGroup from \"@radix-ui/react-radio-group\";\n\nimport { cx } from \"./classnames\";\nimport {\n isRadioCardItemImageProps,\n RadioCardImage,\n type RadioCardImageProps,\n} from \"./radio-card-item-image\";\n\nconst rootClassName = \"purpur-radio-card-group__item\";\n\ntype CustomElement = ((props: { disabled?: boolean }) => ReactNode) | ReactNode;\ntype NonNullCustomElement =\n | ((props: { disabled?: boolean }) => NonNullable<ReactNode>)\n | NonNullable<ReactNode>;\n\nexport type RadioCardItemProps = Omit<BaseProps, \"id\" | \"title\"> & {\n /**\n * `string | ReactNode | (props: { disabled?: boolean }) => ReactNode`\n */\n body?: string | CustomElement;\n disabled?: boolean;\n id: string;\n /**\n * The radio image.\n *\n union = {\n \"data-testid\"?: string | undefined;\n altText: string;\n loading?: \"lazy\" | \"eager\" | undefined;\n noPlaceholder?: boolean | undefined;\n src: string;\n } |\n ((props: {\n disabled?: boolean;\n }) => ReactNode) | React.ReactNode\n * */\n image?: RadioCardImageProps | CustomElement;\n value: string;\n /**\n * `union = string | Omit<ReactNode, \"undefined\" | \"null\">`\n */\n title: string | NonNullCustomElement;\n};\n\nconst renderCustomElement = (\n element: CustomElement | NonNullCustomElement,\n { disabled }: Pick<RadioCardItemProps, \"disabled\">\n) => (typeof element === \"function\" ? element({ disabled }) : element);\n\nexport const RadioCardItem = forwardRef<HTMLDivElement, RadioCardItemProps>(\n ({ title, ...propsx }, ref) => {\n const { [\"data-testid\"]: dataTestid, body, children, disabled, id, image, value } = propsx;\n\n const props = { title, ...propsx };\n\n return (\n <div className={cx(`${rootClassName}-container`)} ref={ref}>\n <RadixRadioGroup.Item\n className={cx(rootClassName)}\n data-testid={dataTestid}\n disabled={disabled}\n id={id}\n value={value}\n >\n {image && (\n <span className={cx(`${rootClassName}-image-container`)}>\n {isRadioCardItemImageProps(image) ? (\n <RadioCardImage {...image} data-testid={dataTestid && `${dataTestid}-image`} />\n ) : (\n renderCustomElement(image, props)\n )}\n </span>\n )}\n <span className={cx(`${rootClassName}-content`)}>\n <span className={cx(`${rootClassName}-top-container`)}>\n {typeof title === \"string\" ? (\n <Paragraph\n className={cx(`${rootClassName}-title`)}\n data-testid={dataTestid && `${dataTestid}-title`}\n variant=\"paragraph-100\"\n disabled={disabled}\n >\n {title}\n </Paragraph>\n ) : (\n renderCustomElement(title, props)\n )}\n <span className={cx(`${rootClassName}-radio`)}>\n <RadixRadioGroup.Indicator className={cx(`${rootClassName}-indicator`)} />\n </span>\n </span>\n {body && (\n <span className={cx(`${rootClassName}-bottom-container`)}>\n {typeof body === \"string\" ? (\n <Paragraph\n data-testid={dataTestid && `${dataTestid}-body`}\n variant=\"paragraph-100\"\n disabled={disabled}\n >\n {body}\n </Paragraph>\n ) : (\n renderCustomElement(body, props)\n )}\n </span>\n )}\n </span>\n </RadixRadioGroup.Item>\n {children}\n </div>\n );\n }\n);\n\nRadioCardItem.displayName = \"RadioCardItem\";\n","import { isValidElement, type ReactElement, type ReactNode } from \"react\";\n\nimport { RadioCardItem, type RadioCardItemProps } from \"./radio-card-item\";\n\nexport const isRadioCardItem = (child?: ReactNode): child is ReactElement<RadioCardItemProps> =>\n isValidElement<RadioCardItemProps>(child) && child.type === RadioCardItem;\n","import React, { Children, cloneElement, forwardRef, type ReactNode, type Ref } from \"react\";\nimport { Heading, type HeadingTagType } from \"@purpur/heading\";\nimport * as RadixRadioGroup from \"@radix-ui/react-radio-group\";\n\nimport { cx } from \"./classnames\";\nimport { isRadioCardItem } from \"./is-radio-card-item\";\nimport type { RadioCardGroupOrientation, RadioPosition } from \"./radio-card-group.constants\";\nimport { RadioCardItem, type RadioCardItemProps } from \"./radio-card-item\";\n\nexport type RadioCardGroupItem = RadioCardItemProps & { ref?: Ref<HTMLDivElement> };\n\ntype StylingProps = Pick<React.HTMLAttributes<HTMLElement>, \"className\" | \"style\">;\n\nexport type RadioCardGroupProps = StylingProps & {\n /**\n * To use when no heading is given.\n * */\n [\"aria-label\"]?: string;\n /**\n * To use with custom label.\n * */\n [\"aria-labelledby\"]?: string;\n [\"data-testid\"]?: string;\n /**\n * The value of the radio card item that should be checked when initially rendered. Use when you do not need to control the state of the radio items.\n * */\n defaultValue?: string;\n /**\n * When true, prevents the user from interacting with radio card items.\n * */\n disabled?: boolean;\n /**\n * ID of the radio card group container.\n * */\n id: string;\n /**\n * The radio card items.\n * */\n items?: RadioCardGroupItem[];\n /**\n * Renders above the radio card group as a heading\n * */\n heading?: string;\n /**\n * Changes heading level for heading.\n */\n headingTag?: HeadingTagType;\n /**\n * When true, keyboard navigation will loop from last item to first, and vice versa.\n * */\n loop?: boolean;\n /**\n * The name of the group. Submitted with its owning form as part of a name/value pair.\n * */\n name?: string;\n /**\n * Event handler called when the value changes.\n * */\n onValueChange?: (value: string) => void;\n /**\n * Set to stack cards horizontally or vertically. When `horizontal`, the min card width with is 100% when container is sm, and `--purpur-breakpoint-lg` / 4 when the container is md or larger.\n * */\n orientation?: RadioCardGroupOrientation;\n /**\n * The position if the radio in the card items.\n * */\n radioPosition?: RadioPosition;\n /**\n * When true, indicates that the user must check a radio card item before the owning form can be submitted.\n * */\n required?: boolean;\n /**\n * The controlled value of the radio card item to check. Should be used in conjunction with onValueChange.\n * */\n value?: string;\n /**\n * Will only render given RadioCardItems.\n * */\n children?: ReactNode;\n};\n\nconst rootClassName = \"purpur-radio-card-group\";\n\nexport const RadioCardGroup = forwardRef<HTMLDivElement, RadioCardGroupProps>(\n (\n {\n \"data-testid\": dataTestId,\n \"aria-labelledby\": ariaLabelledby,\n children,\n className,\n items,\n heading,\n headingTag = \"h2\",\n loop = true,\n orientation = \"vertical\",\n radioPosition = \"right\",\n ...props\n },\n ref\n ) => {\n const radioCardItemChildren = Children.toArray(children).filter(isRadioCardItem);\n\n return (\n <div className={cx(className, `${rootClassName}__container`)} ref={ref}>\n {heading && (\n <Heading\n data-testid={dataTestId ? `${dataTestId}-heading` : undefined}\n id={`${props.id}-heading`}\n tag={headingTag}\n variant=\"subsection-100\"\n >\n {props.required && <span aria-hidden>{\"* \"}</span>}\n {heading}\n </Heading>\n )}\n {(!!items?.length || radioCardItemChildren.length) && (\n <RadixRadioGroup.Root\n {...props}\n aria-labelledby={ariaLabelledby || (heading ? `${props.id}-heading` : undefined)}\n className={cx(\n rootClassName,\n `${rootClassName}--${orientation}`,\n `${rootClassName}--radio-${radioPosition}`\n )}\n data-testid={dataTestId}\n loop={loop}\n >\n {items?.map((item) => (\n <RadioCardItem\n key={item.id}\n {...item}\n disabled={item.disabled || props.disabled}\n data-testid={dataTestId ? `${dataTestId}-item` : undefined}\n />\n ))}\n {Children.map(radioCardItemChildren, (child) =>\n cloneElement(child, { disabled: child.props.disabled || props.disabled })\n )}\n </RadixRadioGroup.Root>\n )}\n </div>\n );\n }\n);\n\nRadioCardGroup.displayName = \"RadioCardGroup\";\n\n// RadioCardItem must be exported after `RadioCardGroup` for the Storybook controls to be generated from RadioCardGroup props\nexport type { RadioCardItemProps } from \"./radio-card-item\";\nexport { RadioCardItem } from \"./radio-card-item\";\n"],"names":["ENTRY_FOCUS","EVENT_OPTIONS","GROUP_NAME","Collection","useCollection","createCollectionScope","createCollection","createRovingFocusGroupContext","createRovingFocusGroupScope","createContextScope","RovingFocusProvider","useRovingFocusContext","RovingFocusGroup","React","props","forwardedRef","jsx","RovingFocusGroupImpl","__scopeRovingFocusGroup","orientation","loop","dir","currentTabStopIdProp","defaultCurrentTabStopId","onCurrentTabStopIdChange","onEntryFocus","preventScrollOnEntryFocus","groupProps","ref","composedRefs","useComposedRefs","direction","useDirection","currentTabStopId","setCurrentTabStopId","useControllableState","isTabbingBackOut","setIsTabbingBackOut","handleEntryFocus","useCallbackRef","getItems","isClickFocusRef","focusableItemsCount","setFocusableItemsCount","node","tabStopId","prevCount","Primitive","composeEventHandlers","event","isKeyboardFocus","entryFocusEvent","items","item","activeItem","currentItem","candidateNodes","focusFirst","ITEM_NAME","RovingFocusGroupItem","focusable","active","itemProps","autoId","useId","id","context","isCurrentTabStop","onFocusableItemAdd","onFocusableItemRemove","focusIntent","getFocusIntent","currentIndex","wrapArray","MAP_KEY_TO_FOCUS_INTENT","getDirectionAwareKey","key","candidates","preventScroll","PREVIOUSLY_FOCUSED_ELEMENT","candidate","array","startIndex","_","index","Root","Item","RADIO_NAME","createRadioContext","createRadioScope","RadioProvider","useRadioContext","Radio","__scopeRadio","name","checked","required","disabled","value","onCheck","form","radioProps","button","setButton","hasConsumerStoppedPropagationRef","isFormControl","jsxs","getState","BubbleInput","INDICATOR_NAME","RadioIndicator","forceMount","indicatorProps","Presence","control","bubbles","inputProps","prevChecked","usePrevious","controlSize","useSize","input","inputProto","setChecked","ARROW_KEYS","RADIO_GROUP_NAME","createRadioGroupContext","createContextScope2","useRovingFocusGroupScope","useRadioScope","RadioGroupProvider","useRadioGroupContext","RadioGroup","React2","__scopeRadioGroup","defaultValue","valueProp","onValueChange","rovingFocusGroupScope","setValue","jsx2","RovingFocusGroup.Root","Primitive2","RadioGroupItem","isDisabled","radioScope","useComposedRefs2","isArrowKeyPressedRef","handleKeyDown","handleKeyUp","RovingFocusGroup.Item","composeEventHandlers2","INDICATOR_NAME2","RadioGroupIndicator","Root2","Item2","Indicator","cx","c","styles","rootClassName","isRadioCardItemImageProps","imageProps","RadioCardImage","src","altText","noPlaceholder","loading","dataTestid","isLoaded","setIsLoaded","useState","onLoad","imageClassName","placeholderClassName","Fragment","Skeleton","renderCustomElement","element","RadioCardItem","forwardRef","title","propsx","body","children","image","RadixRadioGroup.Item","Paragraph","RadixRadioGroup.Indicator","isRadioCardItem","child","isValidElement","RadioCardGroup","dataTestId","ariaLabelledby","className","heading","headingTag","radioPosition","radioCardItemChildren","Children","Heading","RadixRadioGroup.Root","cloneElement"],"mappings":"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","x_google_ignoreList":[0,1]}