@purpur/library 9.7.5 → 9.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (304) hide show
  1. package/CHANGELOG.json +54 -0
  2. package/CHANGELOG.md +25 -1
  3. package/dist/LICENSE.txt +7 -7
  4. package/dist/{RichText-yobCUjTD.js → RichText-BAVZadzi.js} +2 -2
  5. package/dist/{RichText-yobCUjTD.js.map → RichText-BAVZadzi.js.map} +1 -1
  6. package/dist/{RichText-jZ-sHV-u.mjs → RichText-D4vznH1B.mjs} +2 -2
  7. package/dist/{RichText-jZ-sHV-u.mjs.map → RichText-D4vznH1B.mjs.map} +1 -1
  8. package/dist/{ThemeProvider-DiDBfyFA.mjs → ThemeProvider-BJ25_asg.mjs} +13 -13
  9. package/dist/{ThemeProvider-DiDBfyFA.mjs.map → ThemeProvider-BJ25_asg.mjs.map} +1 -1
  10. package/dist/{ThemeProvider-D7oXcAde.js → ThemeProvider-BJGm3zai.js} +2 -2
  11. package/dist/{ThemeProvider-D7oXcAde.js.map → ThemeProvider-BJGm3zai.js.map} +1 -1
  12. package/dist/{accordion-CIU4U8-4.mjs → accordion-B6OoQ4uZ.mjs} +2 -2
  13. package/dist/{accordion-CIU4U8-4.mjs.map → accordion-B6OoQ4uZ.mjs.map} +1 -1
  14. package/dist/{accordion-DyhOG54L.js → accordion-BfpN5h4C.js} +2 -2
  15. package/dist/{accordion-DyhOG54L.js.map → accordion-BfpN5h4C.js.map} +1 -1
  16. package/dist/accordion.cjs.js +1 -1
  17. package/dist/accordion.es.js +1 -1
  18. package/dist/{autocomplete-3kV1btuI.js → autocomplete-CcVDJbwS.js} +2 -2
  19. package/dist/{autocomplete-3kV1btuI.js.map → autocomplete-CcVDJbwS.js.map} +1 -1
  20. package/dist/{autocomplete-BEGRn-Wh.mjs → autocomplete-DF17Zm7Q.mjs} +3 -3
  21. package/dist/{autocomplete-BEGRn-Wh.mjs.map → autocomplete-DF17Zm7Q.mjs.map} +1 -1
  22. package/dist/autocomplete.cjs.js +1 -1
  23. package/dist/autocomplete.es.js +1 -1
  24. package/dist/avatar-BDF2KuEh.mjs +28 -0
  25. package/dist/avatar-BDF2KuEh.mjs.map +1 -0
  26. package/dist/avatar-nDQ8fk-2.js +2 -0
  27. package/dist/avatar-nDQ8fk-2.js.map +1 -0
  28. package/dist/avatar.cjs.js +1 -1
  29. package/dist/avatar.es.js +1 -1
  30. package/dist/{card-DFdUs5RG.js → card-pdsBEJif.js} +2 -2
  31. package/dist/{card-DFdUs5RG.js.map → card-pdsBEJif.js.map} +1 -1
  32. package/dist/{card-C2mdp-ur.mjs → card-t2ZkZ82G.mjs} +2 -2
  33. package/dist/{card-C2mdp-ur.mjs.map → card-t2ZkZ82G.mjs.map} +1 -1
  34. package/dist/card.cjs.js +1 -1
  35. package/dist/card.es.js +1 -1
  36. package/dist/{checkbox-BHTx89JQ.mjs → checkbox-DaRtZXrE.mjs} +2 -2
  37. package/dist/{checkbox-BHTx89JQ.mjs.map → checkbox-DaRtZXrE.mjs.map} +1 -1
  38. package/dist/{checkbox-CDNcNv6d.js → checkbox-qjWQEoa5.js} +2 -2
  39. package/dist/{checkbox-CDNcNv6d.js.map → checkbox-qjWQEoa5.js.map} +1 -1
  40. package/dist/checkbox.cjs.js +1 -1
  41. package/dist/checkbox.es.js +1 -1
  42. package/dist/comparison-table-DHFpydbq.js +2 -0
  43. package/dist/comparison-table-DHFpydbq.js.map +1 -0
  44. package/dist/comparison-table-DQJL1IVC.mjs +293 -0
  45. package/dist/comparison-table-DQJL1IVC.mjs.map +1 -0
  46. package/dist/comparison-table.cjs.js +1 -1
  47. package/dist/comparison-table.es.js +1 -1
  48. package/dist/components/accordion/src/accordion.visual.fixtures.d.ts +13 -0
  49. package/dist/components/accordion/src/accordion.visual.fixtures.d.ts.map +1 -0
  50. package/dist/components/alert-badge/src/alert-badge.visual.fixtures.d.ts +15 -0
  51. package/dist/components/alert-badge/src/alert-badge.visual.fixtures.d.ts.map +1 -0
  52. package/dist/components/avatar/src/avatar.d.ts +2 -2
  53. package/dist/components/avatar/src/avatar.d.ts.map +1 -1
  54. package/dist/components/avatar/src/avatar.visual.fixtures.d.ts +14 -0
  55. package/dist/components/avatar/src/avatar.visual.fixtures.d.ts.map +1 -0
  56. package/dist/components/badge/src/badge.visual.fixtures.d.ts +13 -0
  57. package/dist/components/badge/src/badge.visual.fixtures.d.ts.map +1 -0
  58. package/dist/components/comparison-table/src/components/OptionCard/option-card.d.ts +1 -1
  59. package/dist/components/comparison-table/src/components/OptionCard/option-card.d.ts.map +1 -1
  60. package/dist/components/countdown/src/countdown.d.ts.map +1 -1
  61. package/dist/components/countdown/src/countdown.types.d.ts +10 -0
  62. package/dist/components/countdown/src/countdown.types.d.ts.map +1 -1
  63. package/dist/components/countdown/src/countdown.visual.fixtures.d.ts +13 -0
  64. package/dist/components/countdown/src/countdown.visual.fixtures.d.ts.map +1 -0
  65. package/dist/components/countdown/src/utils.d.ts +1 -1
  66. package/dist/components/countdown/src/utils.d.ts.map +1 -1
  67. package/dist/components/footer/src/telia-logo.d.ts.map +1 -1
  68. package/dist/components/hero-banner/src/hero-banner-types.d.ts +48 -0
  69. package/dist/components/hero-banner/src/hero-banner-types.d.ts.map +1 -0
  70. package/dist/components/hero-banner/src/hero-banner.d.ts +5 -48
  71. package/dist/components/hero-banner/src/hero-banner.d.ts.map +1 -1
  72. package/dist/components/hero-banner/src/hero-banner.visual.fixtures.d.ts +1 -1
  73. package/dist/components/hero-banner/src/hero-banner.visual.fixtures.d.ts.map +1 -1
  74. package/dist/components/search-field/src/search-field.visual.fixtures.d.ts +14 -0
  75. package/dist/components/search-field/src/search-field.visual.fixtures.d.ts.map +1 -0
  76. package/dist/components-metadata.js +2 -2
  77. package/dist/{content-block-CakKeJtN.mjs → content-block-CDMrz41K.mjs} +2 -2
  78. package/dist/{content-block-CakKeJtN.mjs.map → content-block-CDMrz41K.mjs.map} +1 -1
  79. package/dist/{content-block-CrekbIfe.js → content-block-DyYAnL2e.js} +2 -2
  80. package/dist/{content-block-CrekbIfe.js.map → content-block-DyYAnL2e.js.map} +1 -1
  81. package/dist/content-block.cjs.js +1 -1
  82. package/dist/content-block.es.js +1 -1
  83. package/dist/countdown-5Ni6OlVY.mjs +189 -0
  84. package/dist/countdown-5Ni6OlVY.mjs.map +1 -0
  85. package/dist/countdown-CGXJyzB2.js +2 -0
  86. package/dist/countdown-CGXJyzB2.js.map +1 -0
  87. package/dist/countdown.cjs.js +1 -1
  88. package/dist/countdown.es.js +1 -1
  89. package/dist/{date-field-BKKty89_.js → date-field-CKxEWHG3.js} +2 -2
  90. package/dist/{date-field-BKKty89_.js.map → date-field-CKxEWHG3.js.map} +1 -1
  91. package/dist/{date-field-Cv5CKR1y.mjs → date-field-HEFdHIxk.mjs} +2 -2
  92. package/dist/{date-field-Cv5CKR1y.mjs.map → date-field-HEFdHIxk.mjs.map} +1 -1
  93. package/dist/date-field.cjs.js +1 -1
  94. package/dist/date-field.es.js +1 -1
  95. package/dist/{date-picker-CIizn3Pv.js → date-picker-CDBwkAJI.js} +2 -2
  96. package/dist/{date-picker-CIizn3Pv.js.map → date-picker-CDBwkAJI.js.map} +1 -1
  97. package/dist/{date-picker-DixxW60s.mjs → date-picker-cQewKIMN.mjs} +6 -6
  98. package/dist/{date-picker-DixxW60s.mjs.map → date-picker-cQewKIMN.mjs.map} +1 -1
  99. package/dist/date-picker.cjs.js +1 -1
  100. package/dist/date-picker.es.js +1 -1
  101. package/dist/{date-range-field-D8vLeSwp.js → date-range-field-D7Hn9FGN.js} +2 -2
  102. package/dist/{date-range-field-D8vLeSwp.js.map → date-range-field-D7Hn9FGN.js.map} +1 -1
  103. package/dist/{date-range-field-CFcjprIl.mjs → date-range-field-_WctWD29.mjs} +2 -2
  104. package/dist/{date-range-field-CFcjprIl.mjs.map → date-range-field-_WctWD29.mjs.map} +1 -1
  105. package/dist/date-range-field.cjs.js +1 -1
  106. package/dist/date-range-field.es.js +1 -1
  107. package/dist/{drawer-DyhsP34o.js → drawer-DyLQfvEh.js} +2 -2
  108. package/dist/{drawer-DyhsP34o.js.map → drawer-DyLQfvEh.js.map} +1 -1
  109. package/dist/{drawer-BzkRd9F0.mjs → drawer-cIUx6WSZ.mjs} +3 -3
  110. package/dist/{drawer-BzkRd9F0.mjs.map → drawer-cIUx6WSZ.mjs.map} +1 -1
  111. package/dist/drawer.cjs.js +1 -1
  112. package/dist/drawer.es.js +1 -1
  113. package/dist/{dropdown-CMO_VD5e.mjs → dropdown-CDK_eRm3.mjs} +3 -3
  114. package/dist/{dropdown-CMO_VD5e.mjs.map → dropdown-CDK_eRm3.mjs.map} +1 -1
  115. package/dist/{dropdown-DJKNQnuo.js → dropdown-_FLHLyPL.js} +2 -2
  116. package/dist/{dropdown-DJKNQnuo.js.map → dropdown-_FLHLyPL.js.map} +1 -1
  117. package/dist/dropdown.cjs.js +1 -1
  118. package/dist/dropdown.es.js +1 -1
  119. package/dist/footer-CS6ZfztM.js +2 -0
  120. package/dist/footer-CS6ZfztM.js.map +1 -0
  121. package/dist/{footer-DenAcikt.mjs → footer-OJXbTn1e.mjs} +87 -97
  122. package/dist/footer-OJXbTn1e.mjs.map +1 -0
  123. package/dist/footer.cjs.js +1 -1
  124. package/dist/footer.es.js +1 -1
  125. package/dist/hero-banner--v-ezYMr.js +2 -0
  126. package/dist/hero-banner--v-ezYMr.js.map +1 -0
  127. package/dist/{hero-banner-B7xrDfzN.mjs → hero-banner-n9K-Jsdz.mjs} +78 -78
  128. package/dist/hero-banner-n9K-Jsdz.mjs.map +1 -0
  129. package/dist/hero-banner.cjs.js +1 -1
  130. package/dist/hero-banner.es.js +1 -1
  131. package/dist/library.cjs.js +1 -1
  132. package/dist/library.es.js +39 -39
  133. package/dist/{listbox-i6BQQ-NZ.mjs → listbox-CtV-Vcmy.mjs} +2 -2
  134. package/dist/{listbox-i6BQQ-NZ.mjs.map → listbox-CtV-Vcmy.mjs.map} +1 -1
  135. package/dist/{listbox-ATP4hOWF.js → listbox-lXO21cJV.js} +2 -2
  136. package/dist/{listbox-ATP4hOWF.js.map → listbox-lXO21cJV.js.map} +1 -1
  137. package/dist/listbox.cjs.js +1 -1
  138. package/dist/listbox.es.js +1 -1
  139. package/dist/{loading-Dwtkjstg.js → loading-B_0NjCnh.js} +2 -2
  140. package/dist/{loading-Dwtkjstg.js.map → loading-B_0NjCnh.js.map} +1 -1
  141. package/dist/{loading-r23nxJSz.mjs → loading-DqZBpMaa.mjs} +2 -2
  142. package/dist/{loading-r23nxJSz.mjs.map → loading-DqZBpMaa.mjs.map} +1 -1
  143. package/dist/loading.cjs.js +1 -1
  144. package/dist/loading.es.js +1 -1
  145. package/dist/{message-D9CDwcw9.mjs → message-CeXuAhmb.mjs} +3 -3
  146. package/dist/{message-D9CDwcw9.mjs.map → message-CeXuAhmb.mjs.map} +1 -1
  147. package/dist/{message-0yTS5pOF.js → message-DsGB-JFh.js} +2 -2
  148. package/dist/{message-0yTS5pOF.js.map → message-DsGB-JFh.js.map} +1 -1
  149. package/dist/message.cjs.js +1 -1
  150. package/dist/message.es.js +1 -1
  151. package/dist/{modal-EIP36327.mjs → modal-Bu1Zv5Ic.mjs} +4 -4
  152. package/dist/{modal-EIP36327.mjs.map → modal-Bu1Zv5Ic.mjs.map} +1 -1
  153. package/dist/{modal-DJn9idcw.js → modal-D0Qxrvx5.js} +2 -2
  154. package/dist/{modal-DJn9idcw.js.map → modal-D0Qxrvx5.js.map} +1 -1
  155. package/dist/modal.cjs.js +1 -1
  156. package/dist/modal.es.js +1 -1
  157. package/dist/{notification-B5bNNq86.js → notification-D2oClkX2.js} +2 -2
  158. package/dist/{notification-B5bNNq86.js.map → notification-D2oClkX2.js.map} +1 -1
  159. package/dist/{notification-BbQCmsnY.mjs → notification-DiVdy6E_.mjs} +2 -2
  160. package/dist/{notification-BbQCmsnY.mjs.map → notification-DiVdy6E_.mjs.map} +1 -1
  161. package/dist/notification.cjs.js +1 -1
  162. package/dist/notification.es.js +1 -1
  163. package/dist/{pagination-rFRdkHII.js → pagination-BDfaybj3.js} +2 -2
  164. package/dist/{pagination-rFRdkHII.js.map → pagination-BDfaybj3.js.map} +1 -1
  165. package/dist/{pagination-Cc_4zCQA.mjs → pagination-Bm38GKga.mjs} +2 -2
  166. package/dist/{pagination-Cc_4zCQA.mjs.map → pagination-Bm38GKga.mjs.map} +1 -1
  167. package/dist/pagination.cjs.js +1 -1
  168. package/dist/pagination.es.js +1 -1
  169. package/dist/{paragraph-By4jMjnH.js → paragraph-B8HFdNne.js} +2 -2
  170. package/dist/{paragraph-By4jMjnH.js.map → paragraph-B8HFdNne.js.map} +1 -1
  171. package/dist/{paragraph-DSxXmX_0.mjs → paragraph-CwAdFoIm.mjs} +3 -3
  172. package/dist/{paragraph-DSxXmX_0.mjs.map → paragraph-CwAdFoIm.mjs.map} +1 -1
  173. package/dist/paragraph.cjs.js +1 -1
  174. package/dist/paragraph.es.js +1 -1
  175. package/dist/{popover-DnGgzfQr.js → popover-BFozkeS3.js} +2 -2
  176. package/dist/{popover-DnGgzfQr.js.map → popover-BFozkeS3.js.map} +1 -1
  177. package/dist/{popover-DERrvReO.mjs → popover-DFPGkVJ6.mjs} +4 -4
  178. package/dist/{popover-DERrvReO.mjs.map → popover-DFPGkVJ6.mjs.map} +1 -1
  179. package/dist/popover.cjs.js +1 -1
  180. package/dist/popover.es.js +1 -1
  181. package/dist/{product-card-Bt-F0wKr.mjs → product-card-CxfHfJVV.mjs} +3 -3
  182. package/dist/{product-card-Bt-F0wKr.mjs.map → product-card-CxfHfJVV.mjs.map} +1 -1
  183. package/dist/{product-card-8X-Ld2d_.js → product-card-XxBwuxM-.js} +2 -2
  184. package/dist/{product-card-8X-Ld2d_.js.map → product-card-XxBwuxM-.js.map} +1 -1
  185. package/dist/product-card.cjs.js +1 -1
  186. package/dist/product-card.es.js +1 -1
  187. package/dist/{promotion-card-DKc2Cx1h.js → promotion-card-C1UoxzcV.js} +2 -2
  188. package/dist/{promotion-card-DKc2Cx1h.js.map → promotion-card-C1UoxzcV.js.map} +1 -1
  189. package/dist/{promotion-card-BnzIVNQ4.mjs → promotion-card-CooYPpFo.mjs} +38 -38
  190. package/dist/{promotion-card-BnzIVNQ4.mjs.map → promotion-card-CooYPpFo.mjs.map} +1 -1
  191. package/dist/promotion-card.cjs.js +1 -1
  192. package/dist/promotion-card.es.js +1 -1
  193. package/dist/purpur.css +1 -1
  194. package/dist/{quantity-selector-CvBvnMeB.mjs → quantity-selector-B4YnfmNb.mjs} +2 -2
  195. package/dist/{quantity-selector-CvBvnMeB.mjs.map → quantity-selector-B4YnfmNb.mjs.map} +1 -1
  196. package/dist/{quantity-selector-CDSfcTb1.js → quantity-selector-CTBoxiPO.js} +2 -2
  197. package/dist/{quantity-selector-CDSfcTb1.js.map → quantity-selector-CTBoxiPO.js.map} +1 -1
  198. package/dist/quantity-selector.cjs.js +1 -1
  199. package/dist/quantity-selector.es.js +1 -1
  200. package/dist/{radio-card-group-nrDi5EPK.js → radio-card-group-BXwkIIEw.js} +2 -2
  201. package/dist/{radio-card-group-nrDi5EPK.js.map → radio-card-group-BXwkIIEw.js.map} +1 -1
  202. package/dist/{radio-card-group-ZBXjYcQs.mjs → radio-card-group-Bn6SK0Wc.mjs} +2 -2
  203. package/dist/{radio-card-group-ZBXjYcQs.mjs.map → radio-card-group-Bn6SK0Wc.mjs.map} +1 -1
  204. package/dist/radio-card-group.cjs.js +1 -1
  205. package/dist/radio-card-group.es.js +1 -1
  206. package/dist/rich-text.cjs.js +1 -1
  207. package/dist/rich-text.es.js +1 -1
  208. package/dist/{search-field-DKyNh7pE.mjs → search-field-BPLzy3RR.mjs} +3 -3
  209. package/dist/{search-field-DKyNh7pE.mjs.map → search-field-BPLzy3RR.mjs.map} +1 -1
  210. package/dist/{search-field-2vdDbiT0.js → search-field-Dx4qCcrh.js} +2 -2
  211. package/dist/{search-field-2vdDbiT0.js.map → search-field-Dx4qCcrh.js.map} +1 -1
  212. package/dist/search-field.cjs.js +1 -1
  213. package/dist/search-field.es.js +1 -1
  214. package/dist/{stepper-e0qicwqd.mjs → stepper-DSl-YCMe.mjs} +2 -2
  215. package/dist/{stepper-e0qicwqd.mjs.map → stepper-DSl-YCMe.mjs.map} +1 -1
  216. package/dist/{stepper-5qMo_shq.js → stepper-eaxkBC7o.js} +2 -2
  217. package/dist/{stepper-5qMo_shq.js.map → stepper-eaxkBC7o.js.map} +1 -1
  218. package/dist/stepper.cjs.js +1 -1
  219. package/dist/stepper.es.js +1 -1
  220. package/dist/{table-i1Gs9e0e.mjs → table-D9MKkbPO.mjs} +9 -9
  221. package/dist/{table-i1Gs9e0e.mjs.map → table-D9MKkbPO.mjs.map} +1 -1
  222. package/dist/{table-BOCcBzSO.js → table-rS3hITtj.js} +2 -2
  223. package/dist/{table-BOCcBzSO.js.map → table-rS3hITtj.js.map} +1 -1
  224. package/dist/table.cjs.js +1 -1
  225. package/dist/table.es.js +1 -1
  226. package/dist/{text-area-D0truMT1.js → text-area-9RUldq6W.js} +2 -2
  227. package/dist/{text-area-D0truMT1.js.map → text-area-9RUldq6W.js.map} +1 -1
  228. package/dist/{text-area-IVH-k4MM.mjs → text-area-C58aZEPa.mjs} +3 -3
  229. package/dist/{text-area-IVH-k4MM.mjs.map → text-area-C58aZEPa.mjs.map} +1 -1
  230. package/dist/text-area.cjs.js +1 -1
  231. package/dist/text-area.es.js +1 -1
  232. package/dist/text-field-C2W13n15.js +2 -0
  233. package/dist/{text-field-CYJzQG3h.js.map → text-field-C2W13n15.js.map} +1 -1
  234. package/dist/{text-field-BQfxJobW.mjs → text-field-D8MMa6ij.mjs} +114 -114
  235. package/dist/{text-field-BQfxJobW.mjs.map → text-field-D8MMa6ij.mjs.map} +1 -1
  236. package/dist/text-field.cjs.js +1 -1
  237. package/dist/text-field.es.js +1 -1
  238. package/dist/theme.cjs.js +1 -1
  239. package/dist/theme.es.js +3 -3
  240. package/dist/{toggle-B8ZLUVar.js → toggle-BgrfdtmN.js} +2 -2
  241. package/dist/{toggle-B8ZLUVar.js.map → toggle-BgrfdtmN.js.map} +1 -1
  242. package/dist/{toggle-CY3J8BRX.mjs → toggle-Cg1KFa_2.mjs} +2 -2
  243. package/dist/{toggle-CY3J8BRX.mjs.map → toggle-Cg1KFa_2.mjs.map} +1 -1
  244. package/dist/toggle.cjs.js +1 -1
  245. package/dist/toggle.es.js +1 -1
  246. package/dist/tokens/color/variables.css +1 -1
  247. package/dist/tokens/color/variables.dark.css +1 -1
  248. package/dist/tokens/color/variables.dark.js +1 -1
  249. package/dist/tokens/color/variables.dark.json +1 -1
  250. package/dist/tokens/color/variables.dark.scss +1 -1
  251. package/dist/tokens/color/variables.js +1 -1
  252. package/dist/tokens/color/variables.json +1 -1
  253. package/dist/tokens/color/variables.scss +1 -1
  254. package/dist/tokens.cjs.js +1 -1
  255. package/dist/tokens.es.js +1 -1
  256. package/dist/{tooltip-CJGmJDFQ.js → tooltip-B-11qk-0.js} +2 -2
  257. package/dist/{tooltip-CJGmJDFQ.js.map → tooltip-B-11qk-0.js.map} +1 -1
  258. package/dist/{tooltip-RA-03bKs.mjs → tooltip-DngYHn5W.mjs} +4 -4
  259. package/dist/{tooltip-RA-03bKs.mjs.map → tooltip-DngYHn5W.mjs.map} +1 -1
  260. package/dist/tooltip.cjs.js +1 -1
  261. package/dist/tooltip.es.js +1 -1
  262. package/dist/{useColorScheme-B9DWd-LN.mjs → useColorScheme-B7lGBSe4.mjs} +2 -2
  263. package/dist/{useColorScheme-B9DWd-LN.mjs.map → useColorScheme-B7lGBSe4.mjs.map} +1 -1
  264. package/dist/useColorScheme-BHhPgv9q.js +2 -0
  265. package/dist/{useColorScheme-DbTQjxNB.js.map → useColorScheme-BHhPgv9q.js.map} +1 -1
  266. package/dist/useThemePortalContainer-CUcqV327.js +2 -0
  267. package/dist/{useThemePortalContainer-D9BYjEvT.js.map → useThemePortalContainer-CUcqV327.js.map} +1 -1
  268. package/dist/useThemePortalContainer-D13Xx24N.mjs +9 -0
  269. package/dist/{useThemePortalContainer-tFLTaYKN.mjs.map → useThemePortalContainer-D13Xx24N.mjs.map} +1 -1
  270. package/dist/{variables-B5hbV0Uy.mjs → variables-BrsAsWIF.mjs} +2 -2
  271. package/dist/{variables-B5hbV0Uy.mjs.map → variables-BrsAsWIF.mjs.map} +1 -1
  272. package/dist/{variables-DoI78zZc.js → variables-D1vNo1lO.js} +2 -2
  273. package/dist/{variables-DoI78zZc.js.map → variables-D1vNo1lO.js.map} +1 -1
  274. package/package.json +21 -21
  275. package/tokens/color/variables.css +1 -1
  276. package/tokens/color/variables.dark.css +1 -1
  277. package/tokens/color/variables.dark.js +1 -1
  278. package/tokens/color/variables.dark.json +1 -1
  279. package/tokens/color/variables.dark.scss +1 -1
  280. package/tokens/color/variables.js +1 -1
  281. package/tokens/color/variables.json +1 -1
  282. package/tokens/color/variables.scss +1 -1
  283. package/dist/avatar-CYnD57o4.js +0 -2
  284. package/dist/avatar-CYnD57o4.js.map +0 -1
  285. package/dist/avatar-CzbDD1MK.mjs +0 -27
  286. package/dist/avatar-CzbDD1MK.mjs.map +0 -1
  287. package/dist/comparison-table-0UDB2BTU.js +0 -2
  288. package/dist/comparison-table-0UDB2BTU.js.map +0 -1
  289. package/dist/comparison-table-CjTE-fHN.mjs +0 -292
  290. package/dist/comparison-table-CjTE-fHN.mjs.map +0 -1
  291. package/dist/countdown-BsLsEZBv.mjs +0 -179
  292. package/dist/countdown-BsLsEZBv.mjs.map +0 -1
  293. package/dist/countdown-hYrFLmRg.js +0 -2
  294. package/dist/countdown-hYrFLmRg.js.map +0 -1
  295. package/dist/footer-3Y-664-8.js +0 -2
  296. package/dist/footer-3Y-664-8.js.map +0 -1
  297. package/dist/footer-DenAcikt.mjs.map +0 -1
  298. package/dist/hero-banner-B7xrDfzN.mjs.map +0 -1
  299. package/dist/hero-banner-DthITuQ7.js +0 -2
  300. package/dist/hero-banner-DthITuQ7.js.map +0 -1
  301. package/dist/text-field-CYJzQG3h.js +0 -2
  302. package/dist/useColorScheme-DbTQjxNB.js +0 -2
  303. package/dist/useThemePortalContainer-D9BYjEvT.js +0 -2
  304. package/dist/useThemePortalContainer-tFLTaYKN.mjs +0 -9
@@ -1 +1 @@
1
- {"version":3,"file":"card-C2mdp-ur.mjs","sources":["../../../components/card/src/card-badge.tsx","../../../components/card/src/card-content.tsx","../../../components/card/src/card-content-container.tsx","../../../components/card/src/card-cta.tsx","../../../components/card/src/card-feature-list.tsx","../../../components/card/src/card-trigger-item.tsx","../../../components/card/src/card-heading.tsx","../../../components/card/src/card-media.tsx","../../../components/card/src/card-media-layout.tsx","../../../components/card/src/card-overline.tsx","../../../components/card/src/card-root.tsx","../../../components/card/src/card.tsx"],"sourcesContent":["import React from \"react\";\nimport { Badge, type BadgeVariant } from \"@purpur/badge\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./card-badge.module.scss\";\n\nconst cx = c.bind(styles);\n\nexport type CardBadgeProps = {\n /**\n * Use this to set a testid on the badge\n */\n [\"data-testid\"]?: string;\n /**\n * The variant (color) of the badge in the top right corner of the card. This is coupled with the text prop. Both needs to be set for the badge to be displayed.\n * `BadgeVariant = \"attention\" | \"special\" | \"neutral\" | \"information\" | \"success\" | \"warning\" | \"error\"`\n */\n variant?: BadgeVariant;\n /**\n * The text that will be in the badge in the top right corner of the card. This is coupled with the variant prop. Both needs to be set for the badge to be displayed.\n */\n text?: string;\n};\n\nconst rootClassName = \"purpur-card-badge\";\n\nexport const CardBadge = ({\n [\"data-testid\"]: dataTestId = \"purpur-card-badge\",\n variant,\n text,\n}: CardBadgeProps) => {\n return variant && text ? (\n <Badge\n className={cx(rootClassName)}\n variant={variant}\n showIcon={false}\n data-testid={dataTestId}\n >\n {text}\n </Badge>\n ) : null;\n};\n","import React, { type ReactNode } from \"react\";\nimport type { BaseProps } from \"@purpur/common-types\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./card-content.module.scss\";\n\nconst cx = c.bind(styles);\n\nconst rootClassName = \"purpur-card-content\";\n\ntype CardContentProps = Omit<BaseProps, \"children\"> & {\n /**\n * The child elements of the content (React.ReactNode)\n */\n children: ReactNode;\n};\n\nexport const CardContent = ({\n [\"data-testid\"]: dataTestId = \"purpur-card-content\",\n children,\n className,\n ...props\n}: CardContentProps) => {\n return (\n <div className={cx(rootClassName, className)} data-testid={dataTestId} {...props}>\n {children}\n </div>\n );\n};\n","import React, { type ReactNode } from \"react\";\nimport type { BaseProps } from \"@purpur/common-types\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./card-content-container.module.scss\";\n\nconst cx = c.bind(styles);\n\nconst rootClassName = \"purpur-card-content-container\";\n\ntype CardContentContainerProps = Omit<BaseProps, \"children\"> & {\n /**\n * The child elements of the content container (React.ReactNode)\n */\n children: ReactNode;\n /**\n * Flag to remove the top padding\n */\n isFooter?: boolean;\n fullHeight?: boolean;\n gapSize?: \"sm\" | \"md\" | \"lg\" | \"xl\";\n};\n\nexport const CardContentContainer = ({\n [\"data-testid\"]: dataTestId = \"purpur-card-content-container\",\n children,\n className,\n isFooter = false,\n fullHeight = false,\n gapSize = \"md\",\n ...props\n}: CardContentContainerProps) => (\n <div\n className={cx([\n rootClassName,\n className,\n `${rootClassName}--gap-size--${gapSize}`,\n {\n [`${rootClassName}--full-height`]: fullHeight,\n [`${rootClassName}--footer`]: isFooter,\n },\n ])}\n data-testid={dataTestId}\n {...props}\n >\n {children}\n </div>\n);\n","import React from \"react\";\nimport type { BaseProps } from \"@purpur/common-types\";\nimport { Spinner } from \"@purpur/spinner\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./card-cta.module.scss\";\n\nconst cx = c.bind(styles);\n\nexport type CardCtaProps = BaseProps & {\n disabled?: boolean;\n /**\n * The position of the icon.\n * `\"left\" | \"right\"`\n */\n iconPosition?: \"left\" | \"right\";\n loading?: boolean;\n /**\n * Use this to style the cta as a link (no border)\n */\n linkStyling?: boolean;\n text?: string;\n};\n\nconst rootClassName = \"purpur-card-cta\";\n\nexport const CardCta = ({\n [\"data-testid\"]: dataTestId = \"purpur-card-cta\",\n className,\n children,\n disabled = false,\n iconPosition = \"right\",\n loading = false,\n text,\n linkStyling = false,\n ...props\n}: CardCtaProps) => {\n return (\n <div\n className={`${cx([\n rootClassName,\n className,\n\n {\n [`${rootClassName}--disabled`]: disabled,\n [`${rootClassName}--text`]: !!text,\n [`${rootClassName}--cta-styling`]: linkStyling,\n [`${rootClassName}--button-styling`]: !linkStyling,\n [`${rootClassName}--button-styling--md`]: !linkStyling,\n [`${rootClassName}--button-styling--secondary`]: !linkStyling,\n [`${rootClassName}--button-styling--icon-only`]: !linkStyling && !text,\n },\n ])} ${rootClassName}`}\n data-testid={dataTestId}\n {...props}\n >\n {!loading ? (\n <>\n {iconPosition === \"left\" && children}\n {text}\n {iconPosition === \"right\" && children}\n </>\n ) : (\n <Spinner data-testid={`${dataTestId}-spinner`} size=\"xs\" disabled={disabled} />\n )}\n </div>\n );\n};\n","import React from \"react\";\nimport { IconCheckmark } from \"@purpur/icon/checkmark\";\nimport { Paragraph } from \"@purpur/paragraph\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./card-feature-list.module.scss\";\n\nconst cx = c.bind(styles);\n\nexport type CardFeatureListProps = {\n /**\n * Use this to set a testid on the feature list\n */\n [\"data-testid\"]?: string;\n /**\n * This is the feature list where each entry is preceded by a checkmark. If the feature list provided is falsy or empty nothing will be rendered.\n */\n listItems?: string[];\n};\n\nconst rootClassName = \"purpur-card-feature-list\";\n\nexport const CardFeatureList = ({\n [\"data-testid\"]: dataTestId = \"purpur-card-feature-list\",\n listItems,\n}: CardFeatureListProps) => {\n return listItems && listItems.length > 0 ? (\n <ul className={cx(rootClassName)} data-testid={dataTestId}>\n {listItems.map((listItem: string) => (\n <li\n className={cx(`${rootClassName}__list-item`)}\n data-testid={`${dataTestId}-item`}\n key={listItem}\n >\n <IconCheckmark size=\"xs\" className={cx(`${rootClassName}__icon`)} />\n <Paragraph>{listItem}</Paragraph>\n </li>\n ))}\n </ul>\n ) : null;\n};\n","import React, {\n type AnchorHTMLAttributes,\n type ForwardRefExoticComponent,\n type MouseEvent,\n type ReactNode,\n} from \"react\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./card-trigger-item.module.scss\";\n\nconst cx = c.bind(styles);\n\nexport type CardTriggerItemProps = {\n [\"data-testid\"]?: string;\n [\"aria-label\"]?: string;\n disabled?: boolean;\n href?: string;\n onClick?: () => unknown;\n children: ReactNode;\n linkElement?: ForwardRefExoticComponent<AnchorHTMLAttributes<HTMLAnchorElement>> | \"a\";\n};\n\nconst rootClassName = \"purpur-card-trigger-item\";\n\nexport const CardTriggerItem = ({\n [\"data-testid\"]: dataTestId = \"purpur-card-trigger-item\",\n [\"aria-label\"]: ariaLabel,\n disabled = false,\n href,\n onClick,\n children,\n linkElement: LinkElement = \"a\",\n}: CardTriggerItemProps) => {\n const handleClick = (e: MouseEvent<HTMLButtonElement | HTMLAnchorElement>): void => {\n if (disabled) {\n e.preventDefault();\n } else if (onClick) {\n onClick();\n }\n };\n\n const additionalNonHashedClasses = `${rootClassName} ${\n disabled ? `${rootClassName}--disabled` : \"\"\n }`;\n\n return href ? (\n <LinkElement\n aria-disabled={disabled}\n aria-label={ariaLabel}\n className={`${cx([\n rootClassName,\n `${rootClassName}--link`,\n {\n [`${rootClassName}--disabled`]: disabled,\n },\n ])} ${additionalNonHashedClasses}`}\n data-testid={dataTestId}\n href={disabled ? undefined : href}\n tabIndex={disabled ? 0 : undefined}\n onClick={handleClick}\n >\n {children}\n </LinkElement>\n ) : (\n <button\n aria-disabled={disabled}\n aria-label={ariaLabel}\n className={`${cx([\n rootClassName,\n `${rootClassName}--button`,\n {\n [`${rootClassName}--disabled`]: disabled,\n },\n ])} ${additionalNonHashedClasses}`}\n data-testid={dataTestId}\n type=\"button\"\n onClick={handleClick}\n >\n {children}\n </button>\n );\n};\n","import React, {\n type AnchorHTMLAttributes,\n type ForwardRefExoticComponent,\n type ReactNode,\n} from \"react\";\nimport type { BaseProps } from \"@purpur/common-types\";\nimport { Heading, type HeadingTagType,type HeadingVariant } from \"@purpur/heading\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./card-heading.module.scss\";\nimport { CardTriggerItem } from \"./card-trigger-item\";\n\nconst cx = c.bind(styles);\n\nexport type CardHeadingDefaultProps = {\n /**\n * Use this to set a testid on the feature list\n */\n [\"data-testid\"]?: string;\n title: string;\n /**\n * Use when you want an icon to the left of the title\n */\n icon?: ReactNode;\n /**\n * Use for the CTA, it will positioned to the right\n */\n children?: ReactNode;\n titleTag?: HeadingTagType;\n variant?: HeadingVariant;\n enableHyphenation?: boolean;\n};\n\nexport type CardHeadingNonInteractiveProps = {\n disabled?: never;\n href?: never;\n /**\n * If the href prop is not provided the clickable element will be a button and use this clickHandler when the user presses the card.\n */\n onClick?: never;\n linkElement?: never;\n};\n\nexport type CardHeadingLinkProps = {\n /**\n * Use this to disable the card. Can be used both with a link card and a button card. In the case of the button the clickHandler will not be called and if a anchor tag the href will be removed.\n */\n disabled?: boolean;\n /**\n * Makes the card become a link to the provided href.\n */\n href: string;\n /**\n * If the href prop is not provided the clickable element will be a button and use this clickHandler when the user presses the card.\n */\n onClick?: () => void;\n linkElement?: ForwardRefExoticComponent<AnchorHTMLAttributes<HTMLAnchorElement>> | \"a\";\n};\n\nexport type CardHeadingButtonProps = {\n /**\n * Use this to disable the card. Can be used both with a link card and a button card. In the case of the button the clickHandler will not be called and if a anchor tag the href will be removed.\n */\n disabled?: boolean;\n /**\n * Makes the card become a link to the provided href.\n */\n href?: never;\n /**\n * If the href prop is not provided the clickable element will be a button and use this clickHandler when the user presses the card.\n */\n onClick: () => void;\n linkElement?: never;\n};\n\nexport type CardHeadingProps<T extends HeadingTagType = \"h2\"> = BaseProps<T> &\n CardHeadingDefaultProps;\n\nconst rootClassName = \"purpur-card-heading\";\n\nexport const CardHeading = <T extends HeadingTagType = \"h2\">({\n [\"data-testid\"]: dataTestId = \"purpur-card-heading\",\n [\"aria-label\"]: ariaLabel,\n title,\n icon,\n children,\n titleTag = \"h2\" as T,\n enableHyphenation,\n onClick = undefined,\n href = undefined,\n disabled = false,\n linkElement = \"a\",\n variant = \"title-100\",\n ...props\n}: CardHeadingProps &\n (CardHeadingLinkProps | CardHeadingButtonProps | CardHeadingNonInteractiveProps)) => {\n const classes = cx(rootClassName, {\n [`${rootClassName}--is-interactive`]: onClick || href,\n [`${rootClassName}--disabled`]: disabled,\n });\n\n return (\n <div className={classes} data-testid={dataTestId}>\n <div className={cx(`${rootClassName}__header`)}>\n {icon && <div className={cx(`${rootClassName}__icon`)}>{icon}</div>}\n <Heading\n tag={titleTag}\n className={cx(`${rootClassName}__heading`)}\n variant={variant}\n enableHyphenation={enableHyphenation}\n {...props}\n >\n {onClick || href ? (\n <CardTriggerItem\n aria-label={ariaLabel}\n disabled={disabled}\n href={href}\n onClick={onClick}\n linkElement={linkElement}\n >\n {title}\n </CardTriggerItem>\n ) : (\n title\n )}\n </Heading>\n </div>\n {children}\n </div>\n );\n};\n","import React from \"react\";\nimport type { BaseProps } from \"@purpur/common-types\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./card-media.module.scss\";\n\nconst cx = c.bind(styles);\n\nexport type CardMediaProps = BaseProps;\n\nconst rootClassName = \"purpur-card-media\";\n\nexport const CardMedia = ({\n [\"data-testid\"]: dataTestId = \"purpur-card-media\",\n className,\n children,\n ...props\n}: CardMediaProps) => (\n <div {...props} className={cx([rootClassName, className])} data-testid={dataTestId}>\n {children}\n </div>\n);\n","import React from \"react\";\nimport type { BaseProps } from \"@purpur/common-types\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./card-media-layout.module.scss\";\n\nconst cx = c.bind(styles);\n\nexport type CardMediaLayoutProps = BaseProps & {\n imageTop?: boolean;\n};\n\nconst rootClassName = \"purpur-card-media-layout\";\n\nexport const CardMediaLayout = ({\n [\"data-testid\"]: dataTestId = \"purpur-card-media-layout\",\n className,\n children,\n imageTop = false,\n ...props\n}: CardMediaLayoutProps) => (\n <div\n {...props}\n className={cx(rootClassName, className, { [`${rootClassName}--image-top`]: imageTop })}\n data-testid={dataTestId}\n >\n {children}\n </div>\n);\n","import React from \"react\";\nimport { Paragraph } from \"@purpur/paragraph\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./card-overline.module.scss\";\n\nconst cx = c.bind(styles);\n\nexport type CardOverlineProps = {\n /**\n * Use this to set a testid on the overline\n */\n [\"data-testid\"]?: string;\n /**\n * The text displayed in the overline\n */\n overline?: string;\n};\n\nconst rootClassName = \"purpur-card-overline\";\n\nexport const CardOverline = ({\n [\"data-testid\"]: dataTestId = \"purpur-card-overline\",\n overline,\n}: CardOverlineProps) => {\n return overline ? (\n <Paragraph variant=\"overline-100\" className={cx(rootClassName)} data-testid={dataTestId}>\n {overline}\n </Paragraph>\n ) : null;\n};\n","import React, { forwardRef, type ReactNode } from \"react\";\nimport type { BaseProps } from \"@purpur/common-types\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./card-root.module.scss\";\n\nconst cx = c.bind(styles);\n\nexport type CardRootProps = Omit<BaseProps, \"children\"> & {\n children: ReactNode;\n fullHeight?: boolean;\n /** Use the prop useMediaQueries when the cards are used beside each other in different sized grid items for example. */\n useMediaQueries?: boolean;\n variant?: \"primary\" | \"secondary\";\n};\n\nconst rootClassName = \"purpur-card-root\";\n\nexport const CardRoot = forwardRef<HTMLDivElement, CardRootProps>(\n (\n {\n [\"data-testid\"]: dataTestId = \"purpur-card-root\",\n children,\n className,\n fullHeight = true,\n variant,\n ...props\n },\n ref\n ) => {\n const classes = cx([\n rootClassName,\n {\n [`${rootClassName}--${variant}`]: variant,\n [`${rootClassName}--full-height`]: fullHeight,\n },\n className,\n ]);\n\n return (\n <div className={classes} data-testid={dataTestId} ref={ref} {...props}>\n {children}\n </div>\n );\n }\n);\n\nCardRoot.displayName = \"CardRoot\";\n","import React, { type FunctionComponent } from \"react\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./card.module.scss\";\nimport { CardBadge } from \"./card-badge\";\nimport { CardContent } from \"./card-content\";\nimport { CardContentContainer } from \"./card-content-container\";\nimport { CardCta } from \"./card-cta\";\nimport { CardFeatureList } from \"./card-feature-list\";\nimport { CardHeading } from \"./card-heading\";\nimport { CardMedia } from \"./card-media\";\nimport { CardMediaLayout } from \"./card-media-layout\";\nimport { CardOverline } from \"./card-overline\";\nimport type { CardRootProps } from \"./card-root\";\nimport { CardRoot } from \"./card-root\";\nexport type {\n CardHeadingButtonProps,\n CardHeadingDefaultProps,\n CardHeadingLinkProps,\n CardHeadingNonInteractiveProps,\n} from \"./card-heading\";\n\nconst cx = c.bind(styles);\n\ntype CardCmp<P> = FunctionComponent<P> & {\n Badge: typeof CardBadge;\n Content: typeof CardContent;\n ContentContainer: typeof CardContentContainer;\n Cta: typeof CardCta;\n FeatureList: typeof CardFeatureList;\n Overline: typeof CardOverline;\n Heading: typeof CardHeading;\n Media: typeof CardMedia;\n MediaLayout: typeof CardMediaLayout;\n};\n\nexport type CardProps = CardRootProps;\n\nconst rootClassName = \"purpur-card\";\n\nexport const Card: CardCmp<CardProps> = ({ children, className, useMediaQueries, ...props }) => {\n const classes = cx([rootClassName, className]);\n return (\n <div\n className={cx(`${rootClassName}__container`, {\n [`${rootClassName}__container--full-height`]: props.fullHeight,\n [`${rootClassName}__container--use-container-queries`]: !useMediaQueries,\n [`${rootClassName}__container--use-media-queries`]: useMediaQueries,\n })}\n >\n <CardRoot className={cx(classes)} {...props}>\n {children}\n </CardRoot>\n </div>\n );\n};\n\nCard.Badge = CardBadge;\nCard.Content = CardContent;\nCard.ContentContainer = CardContentContainer;\nCard.Cta = CardCta;\nCard.FeatureList = CardFeatureList;\nCard.Overline = CardOverline;\nCard.Heading = CardHeading;\nCard.Media = CardMedia;\nCard.MediaLayout = CardMediaLayout;\n\nCard.displayName = \"Card\";\n"],"names":["cx","c","styles","rootClassName","CardBadge","dataTestId","variant","text","jsx","Badge","CardContent","children","className","props","CardContentContainer","isFooter","fullHeight","gapSize","CardCta","disabled","iconPosition","loading","linkStyling","Spinner","jsxs","Fragment","CardFeatureList","listItems","listItem","IconCheckmark","Paragraph","CardTriggerItem","ariaLabel","href","onClick","LinkElement","handleClick","e","additionalNonHashedClasses","CardHeading","title","icon","titleTag","enableHyphenation","linkElement","classes","Heading","CardMedia","CardMediaLayout","imageTop","CardOverline","overline","CardRoot","forwardRef","ref","Card","useMediaQueries"],"mappings":"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"}
1
+ {"version":3,"file":"card-t2ZkZ82G.mjs","sources":["../../../components/card/src/card-badge.tsx","../../../components/card/src/card-content.tsx","../../../components/card/src/card-content-container.tsx","../../../components/card/src/card-cta.tsx","../../../components/card/src/card-feature-list.tsx","../../../components/card/src/card-trigger-item.tsx","../../../components/card/src/card-heading.tsx","../../../components/card/src/card-media.tsx","../../../components/card/src/card-media-layout.tsx","../../../components/card/src/card-overline.tsx","../../../components/card/src/card-root.tsx","../../../components/card/src/card.tsx"],"sourcesContent":["import React from \"react\";\nimport { Badge, type BadgeVariant } from \"@purpur/badge\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./card-badge.module.scss\";\n\nconst cx = c.bind(styles);\n\nexport type CardBadgeProps = {\n /**\n * Use this to set a testid on the badge\n */\n [\"data-testid\"]?: string;\n /**\n * The variant (color) of the badge in the top right corner of the card. This is coupled with the text prop. Both needs to be set for the badge to be displayed.\n * `BadgeVariant = \"attention\" | \"special\" | \"neutral\" | \"information\" | \"success\" | \"warning\" | \"error\"`\n */\n variant?: BadgeVariant;\n /**\n * The text that will be in the badge in the top right corner of the card. This is coupled with the variant prop. Both needs to be set for the badge to be displayed.\n */\n text?: string;\n};\n\nconst rootClassName = \"purpur-card-badge\";\n\nexport const CardBadge = ({\n [\"data-testid\"]: dataTestId = \"purpur-card-badge\",\n variant,\n text,\n}: CardBadgeProps) => {\n return variant && text ? (\n <Badge\n className={cx(rootClassName)}\n variant={variant}\n showIcon={false}\n data-testid={dataTestId}\n >\n {text}\n </Badge>\n ) : null;\n};\n","import React, { type ReactNode } from \"react\";\nimport type { BaseProps } from \"@purpur/common-types\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./card-content.module.scss\";\n\nconst cx = c.bind(styles);\n\nconst rootClassName = \"purpur-card-content\";\n\ntype CardContentProps = Omit<BaseProps, \"children\"> & {\n /**\n * The child elements of the content (React.ReactNode)\n */\n children: ReactNode;\n};\n\nexport const CardContent = ({\n [\"data-testid\"]: dataTestId = \"purpur-card-content\",\n children,\n className,\n ...props\n}: CardContentProps) => {\n return (\n <div className={cx(rootClassName, className)} data-testid={dataTestId} {...props}>\n {children}\n </div>\n );\n};\n","import React, { type ReactNode } from \"react\";\nimport type { BaseProps } from \"@purpur/common-types\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./card-content-container.module.scss\";\n\nconst cx = c.bind(styles);\n\nconst rootClassName = \"purpur-card-content-container\";\n\ntype CardContentContainerProps = Omit<BaseProps, \"children\"> & {\n /**\n * The child elements of the content container (React.ReactNode)\n */\n children: ReactNode;\n /**\n * Flag to remove the top padding\n */\n isFooter?: boolean;\n fullHeight?: boolean;\n gapSize?: \"sm\" | \"md\" | \"lg\" | \"xl\";\n};\n\nexport const CardContentContainer = ({\n [\"data-testid\"]: dataTestId = \"purpur-card-content-container\",\n children,\n className,\n isFooter = false,\n fullHeight = false,\n gapSize = \"md\",\n ...props\n}: CardContentContainerProps) => (\n <div\n className={cx([\n rootClassName,\n className,\n `${rootClassName}--gap-size--${gapSize}`,\n {\n [`${rootClassName}--full-height`]: fullHeight,\n [`${rootClassName}--footer`]: isFooter,\n },\n ])}\n data-testid={dataTestId}\n {...props}\n >\n {children}\n </div>\n);\n","import React from \"react\";\nimport type { BaseProps } from \"@purpur/common-types\";\nimport { Spinner } from \"@purpur/spinner\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./card-cta.module.scss\";\n\nconst cx = c.bind(styles);\n\nexport type CardCtaProps = BaseProps & {\n disabled?: boolean;\n /**\n * The position of the icon.\n * `\"left\" | \"right\"`\n */\n iconPosition?: \"left\" | \"right\";\n loading?: boolean;\n /**\n * Use this to style the cta as a link (no border)\n */\n linkStyling?: boolean;\n text?: string;\n};\n\nconst rootClassName = \"purpur-card-cta\";\n\nexport const CardCta = ({\n [\"data-testid\"]: dataTestId = \"purpur-card-cta\",\n className,\n children,\n disabled = false,\n iconPosition = \"right\",\n loading = false,\n text,\n linkStyling = false,\n ...props\n}: CardCtaProps) => {\n return (\n <div\n className={`${cx([\n rootClassName,\n className,\n\n {\n [`${rootClassName}--disabled`]: disabled,\n [`${rootClassName}--text`]: !!text,\n [`${rootClassName}--cta-styling`]: linkStyling,\n [`${rootClassName}--button-styling`]: !linkStyling,\n [`${rootClassName}--button-styling--md`]: !linkStyling,\n [`${rootClassName}--button-styling--secondary`]: !linkStyling,\n [`${rootClassName}--button-styling--icon-only`]: !linkStyling && !text,\n },\n ])} ${rootClassName}`}\n data-testid={dataTestId}\n {...props}\n >\n {!loading ? (\n <>\n {iconPosition === \"left\" && children}\n {text}\n {iconPosition === \"right\" && children}\n </>\n ) : (\n <Spinner data-testid={`${dataTestId}-spinner`} size=\"xs\" disabled={disabled} />\n )}\n </div>\n );\n};\n","import React from \"react\";\nimport { IconCheckmark } from \"@purpur/icon/checkmark\";\nimport { Paragraph } from \"@purpur/paragraph\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./card-feature-list.module.scss\";\n\nconst cx = c.bind(styles);\n\nexport type CardFeatureListProps = {\n /**\n * Use this to set a testid on the feature list\n */\n [\"data-testid\"]?: string;\n /**\n * This is the feature list where each entry is preceded by a checkmark. If the feature list provided is falsy or empty nothing will be rendered.\n */\n listItems?: string[];\n};\n\nconst rootClassName = \"purpur-card-feature-list\";\n\nexport const CardFeatureList = ({\n [\"data-testid\"]: dataTestId = \"purpur-card-feature-list\",\n listItems,\n}: CardFeatureListProps) => {\n return listItems && listItems.length > 0 ? (\n <ul className={cx(rootClassName)} data-testid={dataTestId}>\n {listItems.map((listItem: string) => (\n <li\n className={cx(`${rootClassName}__list-item`)}\n data-testid={`${dataTestId}-item`}\n key={listItem}\n >\n <IconCheckmark size=\"xs\" className={cx(`${rootClassName}__icon`)} />\n <Paragraph>{listItem}</Paragraph>\n </li>\n ))}\n </ul>\n ) : null;\n};\n","import React, {\n type AnchorHTMLAttributes,\n type ForwardRefExoticComponent,\n type MouseEvent,\n type ReactNode,\n} from \"react\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./card-trigger-item.module.scss\";\n\nconst cx = c.bind(styles);\n\nexport type CardTriggerItemProps = {\n [\"data-testid\"]?: string;\n [\"aria-label\"]?: string;\n disabled?: boolean;\n href?: string;\n onClick?: () => unknown;\n children: ReactNode;\n linkElement?: ForwardRefExoticComponent<AnchorHTMLAttributes<HTMLAnchorElement>> | \"a\";\n};\n\nconst rootClassName = \"purpur-card-trigger-item\";\n\nexport const CardTriggerItem = ({\n [\"data-testid\"]: dataTestId = \"purpur-card-trigger-item\",\n [\"aria-label\"]: ariaLabel,\n disabled = false,\n href,\n onClick,\n children,\n linkElement: LinkElement = \"a\",\n}: CardTriggerItemProps) => {\n const handleClick = (e: MouseEvent<HTMLButtonElement | HTMLAnchorElement>): void => {\n if (disabled) {\n e.preventDefault();\n } else if (onClick) {\n onClick();\n }\n };\n\n const additionalNonHashedClasses = `${rootClassName} ${\n disabled ? `${rootClassName}--disabled` : \"\"\n }`;\n\n return href ? (\n <LinkElement\n aria-disabled={disabled}\n aria-label={ariaLabel}\n className={`${cx([\n rootClassName,\n `${rootClassName}--link`,\n {\n [`${rootClassName}--disabled`]: disabled,\n },\n ])} ${additionalNonHashedClasses}`}\n data-testid={dataTestId}\n href={disabled ? undefined : href}\n tabIndex={disabled ? 0 : undefined}\n onClick={handleClick}\n >\n {children}\n </LinkElement>\n ) : (\n <button\n aria-disabled={disabled}\n aria-label={ariaLabel}\n className={`${cx([\n rootClassName,\n `${rootClassName}--button`,\n {\n [`${rootClassName}--disabled`]: disabled,\n },\n ])} ${additionalNonHashedClasses}`}\n data-testid={dataTestId}\n type=\"button\"\n onClick={handleClick}\n >\n {children}\n </button>\n );\n};\n","import React, {\n type AnchorHTMLAttributes,\n type ForwardRefExoticComponent,\n type ReactNode,\n} from \"react\";\nimport type { BaseProps } from \"@purpur/common-types\";\nimport { Heading, type HeadingTagType,type HeadingVariant } from \"@purpur/heading\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./card-heading.module.scss\";\nimport { CardTriggerItem } from \"./card-trigger-item\";\n\nconst cx = c.bind(styles);\n\nexport type CardHeadingDefaultProps = {\n /**\n * Use this to set a testid on the feature list\n */\n [\"data-testid\"]?: string;\n title: string;\n /**\n * Use when you want an icon to the left of the title\n */\n icon?: ReactNode;\n /**\n * Use for the CTA, it will positioned to the right\n */\n children?: ReactNode;\n titleTag?: HeadingTagType;\n variant?: HeadingVariant;\n enableHyphenation?: boolean;\n};\n\nexport type CardHeadingNonInteractiveProps = {\n disabled?: never;\n href?: never;\n /**\n * If the href prop is not provided the clickable element will be a button and use this clickHandler when the user presses the card.\n */\n onClick?: never;\n linkElement?: never;\n};\n\nexport type CardHeadingLinkProps = {\n /**\n * Use this to disable the card. Can be used both with a link card and a button card. In the case of the button the clickHandler will not be called and if a anchor tag the href will be removed.\n */\n disabled?: boolean;\n /**\n * Makes the card become a link to the provided href.\n */\n href: string;\n /**\n * If the href prop is not provided the clickable element will be a button and use this clickHandler when the user presses the card.\n */\n onClick?: () => void;\n linkElement?: ForwardRefExoticComponent<AnchorHTMLAttributes<HTMLAnchorElement>> | \"a\";\n};\n\nexport type CardHeadingButtonProps = {\n /**\n * Use this to disable the card. Can be used both with a link card and a button card. In the case of the button the clickHandler will not be called and if a anchor tag the href will be removed.\n */\n disabled?: boolean;\n /**\n * Makes the card become a link to the provided href.\n */\n href?: never;\n /**\n * If the href prop is not provided the clickable element will be a button and use this clickHandler when the user presses the card.\n */\n onClick: () => void;\n linkElement?: never;\n};\n\nexport type CardHeadingProps<T extends HeadingTagType = \"h2\"> = BaseProps<T> &\n CardHeadingDefaultProps;\n\nconst rootClassName = \"purpur-card-heading\";\n\nexport const CardHeading = <T extends HeadingTagType = \"h2\">({\n [\"data-testid\"]: dataTestId = \"purpur-card-heading\",\n [\"aria-label\"]: ariaLabel,\n title,\n icon,\n children,\n titleTag = \"h2\" as T,\n enableHyphenation,\n onClick = undefined,\n href = undefined,\n disabled = false,\n linkElement = \"a\",\n variant = \"title-100\",\n ...props\n}: CardHeadingProps &\n (CardHeadingLinkProps | CardHeadingButtonProps | CardHeadingNonInteractiveProps)) => {\n const classes = cx(rootClassName, {\n [`${rootClassName}--is-interactive`]: onClick || href,\n [`${rootClassName}--disabled`]: disabled,\n });\n\n return (\n <div className={classes} data-testid={dataTestId}>\n <div className={cx(`${rootClassName}__header`)}>\n {icon && <div className={cx(`${rootClassName}__icon`)}>{icon}</div>}\n <Heading\n tag={titleTag}\n className={cx(`${rootClassName}__heading`)}\n variant={variant}\n enableHyphenation={enableHyphenation}\n {...props}\n >\n {onClick || href ? (\n <CardTriggerItem\n aria-label={ariaLabel}\n disabled={disabled}\n href={href}\n onClick={onClick}\n linkElement={linkElement}\n >\n {title}\n </CardTriggerItem>\n ) : (\n title\n )}\n </Heading>\n </div>\n {children}\n </div>\n );\n};\n","import React from \"react\";\nimport type { BaseProps } from \"@purpur/common-types\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./card-media.module.scss\";\n\nconst cx = c.bind(styles);\n\nexport type CardMediaProps = BaseProps;\n\nconst rootClassName = \"purpur-card-media\";\n\nexport const CardMedia = ({\n [\"data-testid\"]: dataTestId = \"purpur-card-media\",\n className,\n children,\n ...props\n}: CardMediaProps) => (\n <div {...props} className={cx([rootClassName, className])} data-testid={dataTestId}>\n {children}\n </div>\n);\n","import React from \"react\";\nimport type { BaseProps } from \"@purpur/common-types\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./card-media-layout.module.scss\";\n\nconst cx = c.bind(styles);\n\nexport type CardMediaLayoutProps = BaseProps & {\n imageTop?: boolean;\n};\n\nconst rootClassName = \"purpur-card-media-layout\";\n\nexport const CardMediaLayout = ({\n [\"data-testid\"]: dataTestId = \"purpur-card-media-layout\",\n className,\n children,\n imageTop = false,\n ...props\n}: CardMediaLayoutProps) => (\n <div\n {...props}\n className={cx(rootClassName, className, { [`${rootClassName}--image-top`]: imageTop })}\n data-testid={dataTestId}\n >\n {children}\n </div>\n);\n","import React from \"react\";\nimport { Paragraph } from \"@purpur/paragraph\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./card-overline.module.scss\";\n\nconst cx = c.bind(styles);\n\nexport type CardOverlineProps = {\n /**\n * Use this to set a testid on the overline\n */\n [\"data-testid\"]?: string;\n /**\n * The text displayed in the overline\n */\n overline?: string;\n};\n\nconst rootClassName = \"purpur-card-overline\";\n\nexport const CardOverline = ({\n [\"data-testid\"]: dataTestId = \"purpur-card-overline\",\n overline,\n}: CardOverlineProps) => {\n return overline ? (\n <Paragraph variant=\"overline-100\" className={cx(rootClassName)} data-testid={dataTestId}>\n {overline}\n </Paragraph>\n ) : null;\n};\n","import React, { forwardRef, type ReactNode } from \"react\";\nimport type { BaseProps } from \"@purpur/common-types\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./card-root.module.scss\";\n\nconst cx = c.bind(styles);\n\nexport type CardRootProps = Omit<BaseProps, \"children\"> & {\n children: ReactNode;\n fullHeight?: boolean;\n /** Use the prop useMediaQueries when the cards are used beside each other in different sized grid items for example. */\n useMediaQueries?: boolean;\n variant?: \"primary\" | \"secondary\";\n};\n\nconst rootClassName = \"purpur-card-root\";\n\nexport const CardRoot = forwardRef<HTMLDivElement, CardRootProps>(\n (\n {\n [\"data-testid\"]: dataTestId = \"purpur-card-root\",\n children,\n className,\n fullHeight = true,\n variant,\n ...props\n },\n ref\n ) => {\n const classes = cx([\n rootClassName,\n {\n [`${rootClassName}--${variant}`]: variant,\n [`${rootClassName}--full-height`]: fullHeight,\n },\n className,\n ]);\n\n return (\n <div className={classes} data-testid={dataTestId} ref={ref} {...props}>\n {children}\n </div>\n );\n }\n);\n\nCardRoot.displayName = \"CardRoot\";\n","import React, { type FunctionComponent } from \"react\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./card.module.scss\";\nimport { CardBadge } from \"./card-badge\";\nimport { CardContent } from \"./card-content\";\nimport { CardContentContainer } from \"./card-content-container\";\nimport { CardCta } from \"./card-cta\";\nimport { CardFeatureList } from \"./card-feature-list\";\nimport { CardHeading } from \"./card-heading\";\nimport { CardMedia } from \"./card-media\";\nimport { CardMediaLayout } from \"./card-media-layout\";\nimport { CardOverline } from \"./card-overline\";\nimport type { CardRootProps } from \"./card-root\";\nimport { CardRoot } from \"./card-root\";\nexport type {\n CardHeadingButtonProps,\n CardHeadingDefaultProps,\n CardHeadingLinkProps,\n CardHeadingNonInteractiveProps,\n} from \"./card-heading\";\n\nconst cx = c.bind(styles);\n\ntype CardCmp<P> = FunctionComponent<P> & {\n Badge: typeof CardBadge;\n Content: typeof CardContent;\n ContentContainer: typeof CardContentContainer;\n Cta: typeof CardCta;\n FeatureList: typeof CardFeatureList;\n Overline: typeof CardOverline;\n Heading: typeof CardHeading;\n Media: typeof CardMedia;\n MediaLayout: typeof CardMediaLayout;\n};\n\nexport type CardProps = CardRootProps;\n\nconst rootClassName = \"purpur-card\";\n\nexport const Card: CardCmp<CardProps> = ({ children, className, useMediaQueries, ...props }) => {\n const classes = cx([rootClassName, className]);\n return (\n <div\n className={cx(`${rootClassName}__container`, {\n [`${rootClassName}__container--full-height`]: props.fullHeight,\n [`${rootClassName}__container--use-container-queries`]: !useMediaQueries,\n [`${rootClassName}__container--use-media-queries`]: useMediaQueries,\n })}\n >\n <CardRoot className={cx(classes)} {...props}>\n {children}\n </CardRoot>\n </div>\n );\n};\n\nCard.Badge = CardBadge;\nCard.Content = CardContent;\nCard.ContentContainer = CardContentContainer;\nCard.Cta = CardCta;\nCard.FeatureList = CardFeatureList;\nCard.Overline = CardOverline;\nCard.Heading = CardHeading;\nCard.Media = CardMedia;\nCard.MediaLayout = CardMediaLayout;\n\nCard.displayName = \"Card\";\n"],"names":["cx","c","styles","rootClassName","CardBadge","dataTestId","variant","text","jsx","Badge","CardContent","children","className","props","CardContentContainer","isFooter","fullHeight","gapSize","CardCta","disabled","iconPosition","loading","linkStyling","Spinner","jsxs","Fragment","CardFeatureList","listItems","listItem","IconCheckmark","Paragraph","CardTriggerItem","ariaLabel","href","onClick","LinkElement","handleClick","e","additionalNonHashedClasses","CardHeading","title","icon","titleTag","enableHyphenation","linkElement","classes","Heading","CardMedia","CardMediaLayout","imageTop","CardOverline","overline","CardRoot","forwardRef","ref","Card","useMediaQueries"],"mappings":"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"}
package/dist/card.cjs.js CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./card-DFdUs5RG.js");exports.Card=e.Card;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./card-pdsBEJif.js");exports.Card=e.Card;
2
2
  //# sourceMappingURL=card.cjs.js.map
package/dist/card.es.js CHANGED
@@ -1,4 +1,4 @@
1
- import { C as o } from "./card-C2mdp-ur.mjs";
1
+ import { C as o } from "./card-t2ZkZ82G.mjs";
2
2
  export {
3
3
  o as Card
4
4
  };
@@ -6,7 +6,7 @@ import { F as O } from "./field-helper-text-C5ee4SFV.mjs";
6
6
  import { b as $ } from "./icon.es-CZcKxTaM.mjs";
7
7
  import { l as j } from "./checkmark-bold.es-CV3e_t3E.mjs";
8
8
  import { L as q } from "./label-7sJe5-pX.mjs";
9
- import { P as A } from "./paragraph-DSxXmX_0.mjs";
9
+ import { P as A } from "./paragraph-CwAdFoIm.mjs";
10
10
  import { u as K } from "./index-DLcqcWxM.mjs";
11
11
  import { c as X } from "./index-DOfn3ixy.mjs";
12
12
  import { u as Z, c as R, a as G } from "./index-tyLV0iiH.mjs";
@@ -233,4 +233,4 @@ export {
233
233
  oe as C,
234
234
  xe as c
235
235
  };
236
- //# sourceMappingURL=checkbox-BHTx89JQ.mjs.map
236
+ //# sourceMappingURL=checkbox-DaRtZXrE.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"checkbox-BHTx89JQ.mjs","sources":["../../../components/icon/dist/assets/minus-bold.es.js","../../../common/temp/node_modules/.pnpm/@radix-ui+react-checkbox@1.1.5_@types+react-dom@19.2.3_@types+react@19.2.14__@types+rea_f616ca483e8f11c8b6f09ac94c17a7b2/node_modules/@radix-ui/react-checkbox/dist/index.mjs","../../../components/checkbox/src/checkbox.tsx"],"sourcesContent":["const l = {\n name: \"minus-bold\",\n svg: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path fill-rule=\"evenodd\" d=\"M3 12c0-1.105.711-2 1.588-2h14.824c.877 0 1.588.895 1.588 2s-.711 2-1.588 2H4.588C3.711 14 3 13.105 3 12Z\" clip-rule=\"evenodd\"/></svg>',\n keywords: [\"minus-bold\"],\n category: \"utility\"\n};\nexport {\n l as minusBold\n};\n//# sourceMappingURL=minus-bold.es.js.map\n","\"use client\";\n\n// packages/react/checkbox/src/checkbox.tsx\nimport * as React from \"react\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { usePrevious } from \"@radix-ui/react-use-previous\";\nimport { useSize } from \"@radix-ui/react-use-size\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { jsx, jsxs } from \"react/jsx-runtime\";\nvar CHECKBOX_NAME = \"Checkbox\";\nvar [createCheckboxContext, createCheckboxScope] = createContextScope(CHECKBOX_NAME);\nvar [CheckboxProvider, useCheckboxContext] = createCheckboxContext(CHECKBOX_NAME);\nvar Checkbox = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeCheckbox,\n name,\n checked: checkedProp,\n defaultChecked,\n required,\n disabled,\n value = \"on\",\n onCheckedChange,\n form,\n ...checkboxProps\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 const [checked = false, setChecked] = useControllableState({\n prop: checkedProp,\n defaultProp: defaultChecked,\n onChange: onCheckedChange\n });\n const initialCheckedStateRef = React.useRef(checked);\n React.useEffect(() => {\n const form2 = button?.form;\n if (form2) {\n const reset = () => setChecked(initialCheckedStateRef.current);\n form2.addEventListener(\"reset\", reset);\n return () => form2.removeEventListener(\"reset\", reset);\n }\n }, [button, setChecked]);\n return /* @__PURE__ */ jsxs(CheckboxProvider, { scope: __scopeCheckbox, state: checked, disabled, children: [\n /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n role: \"checkbox\",\n \"aria-checked\": isIndeterminate(checked) ? \"mixed\" : checked,\n \"aria-required\": required,\n \"data-state\": getState(checked),\n \"data-disabled\": disabled ? \"\" : void 0,\n disabled,\n value,\n ...checkboxProps,\n ref: composedRefs,\n onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {\n if (event.key === \"Enter\") event.preventDefault();\n }),\n onClick: composeEventHandlers(props.onClick, (event) => {\n setChecked((prevChecked) => isIndeterminate(prevChecked) ? true : !prevChecked);\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 defaultChecked: isIndeterminate(defaultChecked) ? false : defaultChecked\n }\n )\n ] });\n }\n);\nCheckbox.displayName = CHECKBOX_NAME;\nvar INDICATOR_NAME = \"CheckboxIndicator\";\nvar CheckboxIndicator = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeCheckbox, forceMount, ...indicatorProps } = props;\n const context = useCheckboxContext(INDICATOR_NAME, __scopeCheckbox);\n return /* @__PURE__ */ jsx(Presence, { present: forceMount || isIndeterminate(context.state) || context.state === true, children: /* @__PURE__ */ jsx(\n Primitive.span,\n {\n \"data-state\": getState(context.state),\n \"data-disabled\": context.disabled ? \"\" : void 0,\n ...indicatorProps,\n ref: forwardedRef,\n style: { pointerEvents: \"none\", ...props.style }\n }\n ) });\n }\n);\nCheckboxIndicator.displayName = INDICATOR_NAME;\nvar BubbleInput = (props) => {\n const { control, checked, bubbles = true, defaultChecked, ...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 input.indeterminate = isIndeterminate(checked);\n setChecked.call(input, isIndeterminate(checked) ? false : checked);\n input.dispatchEvent(event);\n }\n }, [prevChecked, checked, bubbles]);\n const defaultCheckedRef = React.useRef(isIndeterminate(checked) ? false : checked);\n return /* @__PURE__ */ jsx(\n \"input\",\n {\n type: \"checkbox\",\n \"aria-hidden\": true,\n defaultChecked: defaultChecked ?? defaultCheckedRef.current,\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 isIndeterminate(checked) {\n return checked === \"indeterminate\";\n}\nfunction getState(checked) {\n return isIndeterminate(checked) ? \"indeterminate\" : checked ? \"checked\" : \"unchecked\";\n}\nvar Root = Checkbox;\nvar Indicator = CheckboxIndicator;\nexport {\n Checkbox,\n CheckboxIndicator,\n Indicator,\n Root,\n createCheckboxScope\n};\n//# sourceMappingURL=index.mjs.map\n","import React, { forwardRef, type ReactNode } from \"react\";\nimport type { BaseProps } from \"@purpur/common-types\";\nimport { FieldErrorText } from \"@purpur/field-error-text\";\nimport { FieldHelperText } from \"@purpur/field-helper-text\";\nimport { Icon } from \"@purpur/icon\";\nimport { checkmarkBold } from \"@purpur/icon/assets/checkmark-bold\";\nimport { minusBold } from \"@purpur/icon/assets/minus-bold\";\nimport { Label } from \"@purpur/label\";\nimport { Paragraph } from \"@purpur/paragraph\";\nimport * as RadixCheckbox from \"@radix-ui/react-checkbox\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./checkbox.module.scss\";\nconst cx = c.bind(styles);\n\nexport const checkedState = [\"indeterminate\", true, false] as const;\n\nexport type CheckedState = (typeof checkedState)[number];\nexport type CheckboxProps = Omit<BaseProps<\"button\">, \"onChange\" | \"children\"> & {\n /**\n * To use with custom label (not recommended).\n * */\n [\"aria-labelledby\"]?: string;\n /**\n * To use when no label is given (not recommended).\n * */\n [\"aria-label\"]?: string;\n checked?: CheckedState;\n /**\n * The checked state of the checkbox when it is initially rendered. Use when you do not need to control its checked state.\n */\n defaultChecked?: boolean;\n /**\n * When `true`, prevents the user from interacting with the checkbox.\n */\n disabled?: boolean;\n /**\n * Use to render error state on the actual checkbox only. No error text below the checkbox will appear and the label will not\n * be shown as an error, unless errorText is set.\n * */\n error?: boolean;\n /**\n * Use to render error message below the checkbox. The checkbox renders with error appearance.\n * */\n errorText?: string;\n /**\n * ID of the checkbox.\n * */\n id: string;\n /**\n * The label of the checkbox. Label can't be a block element\n * */\n label?: ReactNode;\n /**\n * The name of the checkbox. Submitted with its owning form as part of a name/value pair.\n * */\n name?: string;\n /**\n * The helper text displayed below the checkbox.\n */\n helperText?: string;\n /**\n * When `true`, renders the checkbox for use on dark or colored backgrounds.\n */\n negative?: boolean;\n /**\n * Event handler called when the checked state of the checkbox changes.\n * */\n onChange?: (value: CheckedState) => void;\n /**\n * When `true`, indicates that the user must check the checkbox before the owning form can be submitted.\n * */\n required?: boolean;\n /**\n * The value given as data when submitted with a name.\n * */\n value?: string;\n};\n\nconst rootClassName = \"purpur-checkbox\";\n\nexport const Checkbox = forwardRef<HTMLButtonElement, CheckboxProps>(\n (\n {\n [\"data-testid\"]: dataTestId,\n checked,\n className,\n error = false,\n errorText,\n label,\n helperText,\n negative = false,\n onChange,\n ...props\n },\n ref\n ) => {\n const isError = errorText && !checked;\n const isCheckboxError = error && !checked;\n\n return (\n <div className={cx([`${rootClassName}__wrapper`, className])}>\n <div className={cx([`${rootClassName}__container`, className])}>\n <RadixCheckbox.Root\n {...props}\n checked={checked}\n className={cx([\n rootClassName,\n {\n [`${rootClassName}--error`]: isError,\n [`${rootClassName}--error-checkbox`]: isCheckboxError,\n [`${rootClassName}--negative`]: negative,\n },\n ])}\n data-testid={dataTestId}\n onCheckedChange={onChange}\n ref={ref}\n >\n <span className={cx(`${rootClassName}__box`)}>\n <RadixCheckbox.Indicator className={cx(`${rootClassName}__indicator`)}>\n {checked === \"indeterminate\" ? (\n <Icon\n data-testid={dataTestId && `${dataTestId}-checked-icon`}\n size=\"xs\"\n svg={minusBold}\n />\n ) : (\n <Icon\n data-testid={dataTestId && `${dataTestId}-indeterminate-icon`}\n size=\"xs\"\n svg={checkmarkBold}\n />\n )}\n </RadixCheckbox.Indicator>\n </span>\n </RadixCheckbox.Root>\n <span className={cx(`${rootClassName}__label-container`)}>\n {label && (\n <Label\n htmlFor={props.id}\n data-testid={dataTestId && `${dataTestId}-label`}\n disabled={props.disabled}\n negative={negative}\n >\n <Paragraph variant=\"paragraph-100\" disabled={props.disabled} negative={negative}>\n {props.required && <span aria-hidden>{\"* \"}</span>}\n {label}\n </Paragraph>\n </Label>\n )}\n {helperText && (\n <FieldHelperText\n className={cx(`${rootClassName}__helper`)}\n data-testid={dataTestId && `${dataTestId}-helper-text`}\n disabled={props.disabled}\n id={`${props.id}-helper-text`}\n negative={negative}\n >\n {helperText}\n </FieldHelperText>\n )}\n </span>\n </div>\n {isError && (\n <FieldErrorText data-testid={dataTestId && `${dataTestId}-error-text`} negative={negative}>\n {errorText}\n </FieldErrorText>\n )}\n </div>\n );\n }\n);\n\nCheckbox.displayName = \"Checkbox\";\n"],"names":["l","CHECKBOX_NAME","createCheckboxContext","createContextScope","CheckboxProvider","useCheckboxContext","Checkbox","React","props","forwardedRef","__scopeCheckbox","name","checkedProp","defaultChecked","required","disabled","value","onCheckedChange","form","checkboxProps","button","setButton","composedRefs","useComposedRefs","node","hasConsumerStoppedPropagationRef","isFormControl","checked","setChecked","useControllableState","initialCheckedStateRef","form2","reset","jsxs","jsx","Primitive","isIndeterminate","getState","composeEventHandlers","event","prevChecked","BubbleInput","INDICATOR_NAME","CheckboxIndicator","forceMount","indicatorProps","context","Presence","control","bubbles","inputProps","ref","usePrevious","controlSize","useSize","input","inputProto","defaultCheckedRef","Root","Indicator","cx","c","styles","checkedState","rootClassName","forwardRef","dataTestId","className","error","errorText","label","helperText","negative","onChange","isError","isCheckboxError","RadixCheckbox.Root","RadixCheckbox.Indicator","Icon","minusBold","checkmarkBold","Label","Paragraph","FieldHelperText","FieldErrorText"],"mappings":"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","x_google_ignoreList":[1]}
1
+ {"version":3,"file":"checkbox-DaRtZXrE.mjs","sources":["../../../components/icon/dist/assets/minus-bold.es.js","../../../common/temp/node_modules/.pnpm/@radix-ui+react-checkbox@1.1.5_@types+react-dom@19.2.3_@types+react@19.2.14__@types+rea_f616ca483e8f11c8b6f09ac94c17a7b2/node_modules/@radix-ui/react-checkbox/dist/index.mjs","../../../components/checkbox/src/checkbox.tsx"],"sourcesContent":["const l = {\n name: \"minus-bold\",\n svg: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path fill-rule=\"evenodd\" d=\"M3 12c0-1.105.711-2 1.588-2h14.824c.877 0 1.588.895 1.588 2s-.711 2-1.588 2H4.588C3.711 14 3 13.105 3 12Z\" clip-rule=\"evenodd\"/></svg>',\n keywords: [\"minus-bold\"],\n category: \"utility\"\n};\nexport {\n l as minusBold\n};\n//# sourceMappingURL=minus-bold.es.js.map\n","\"use client\";\n\n// packages/react/checkbox/src/checkbox.tsx\nimport * as React from \"react\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { usePrevious } from \"@radix-ui/react-use-previous\";\nimport { useSize } from \"@radix-ui/react-use-size\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { jsx, jsxs } from \"react/jsx-runtime\";\nvar CHECKBOX_NAME = \"Checkbox\";\nvar [createCheckboxContext, createCheckboxScope] = createContextScope(CHECKBOX_NAME);\nvar [CheckboxProvider, useCheckboxContext] = createCheckboxContext(CHECKBOX_NAME);\nvar Checkbox = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeCheckbox,\n name,\n checked: checkedProp,\n defaultChecked,\n required,\n disabled,\n value = \"on\",\n onCheckedChange,\n form,\n ...checkboxProps\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 const [checked = false, setChecked] = useControllableState({\n prop: checkedProp,\n defaultProp: defaultChecked,\n onChange: onCheckedChange\n });\n const initialCheckedStateRef = React.useRef(checked);\n React.useEffect(() => {\n const form2 = button?.form;\n if (form2) {\n const reset = () => setChecked(initialCheckedStateRef.current);\n form2.addEventListener(\"reset\", reset);\n return () => form2.removeEventListener(\"reset\", reset);\n }\n }, [button, setChecked]);\n return /* @__PURE__ */ jsxs(CheckboxProvider, { scope: __scopeCheckbox, state: checked, disabled, children: [\n /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n role: \"checkbox\",\n \"aria-checked\": isIndeterminate(checked) ? \"mixed\" : checked,\n \"aria-required\": required,\n \"data-state\": getState(checked),\n \"data-disabled\": disabled ? \"\" : void 0,\n disabled,\n value,\n ...checkboxProps,\n ref: composedRefs,\n onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {\n if (event.key === \"Enter\") event.preventDefault();\n }),\n onClick: composeEventHandlers(props.onClick, (event) => {\n setChecked((prevChecked) => isIndeterminate(prevChecked) ? true : !prevChecked);\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 defaultChecked: isIndeterminate(defaultChecked) ? false : defaultChecked\n }\n )\n ] });\n }\n);\nCheckbox.displayName = CHECKBOX_NAME;\nvar INDICATOR_NAME = \"CheckboxIndicator\";\nvar CheckboxIndicator = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeCheckbox, forceMount, ...indicatorProps } = props;\n const context = useCheckboxContext(INDICATOR_NAME, __scopeCheckbox);\n return /* @__PURE__ */ jsx(Presence, { present: forceMount || isIndeterminate(context.state) || context.state === true, children: /* @__PURE__ */ jsx(\n Primitive.span,\n {\n \"data-state\": getState(context.state),\n \"data-disabled\": context.disabled ? \"\" : void 0,\n ...indicatorProps,\n ref: forwardedRef,\n style: { pointerEvents: \"none\", ...props.style }\n }\n ) });\n }\n);\nCheckboxIndicator.displayName = INDICATOR_NAME;\nvar BubbleInput = (props) => {\n const { control, checked, bubbles = true, defaultChecked, ...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 input.indeterminate = isIndeterminate(checked);\n setChecked.call(input, isIndeterminate(checked) ? false : checked);\n input.dispatchEvent(event);\n }\n }, [prevChecked, checked, bubbles]);\n const defaultCheckedRef = React.useRef(isIndeterminate(checked) ? false : checked);\n return /* @__PURE__ */ jsx(\n \"input\",\n {\n type: \"checkbox\",\n \"aria-hidden\": true,\n defaultChecked: defaultChecked ?? defaultCheckedRef.current,\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 isIndeterminate(checked) {\n return checked === \"indeterminate\";\n}\nfunction getState(checked) {\n return isIndeterminate(checked) ? \"indeterminate\" : checked ? \"checked\" : \"unchecked\";\n}\nvar Root = Checkbox;\nvar Indicator = CheckboxIndicator;\nexport {\n Checkbox,\n CheckboxIndicator,\n Indicator,\n Root,\n createCheckboxScope\n};\n//# sourceMappingURL=index.mjs.map\n","import React, { forwardRef, type ReactNode } from \"react\";\nimport type { BaseProps } from \"@purpur/common-types\";\nimport { FieldErrorText } from \"@purpur/field-error-text\";\nimport { FieldHelperText } from \"@purpur/field-helper-text\";\nimport { Icon } from \"@purpur/icon\";\nimport { checkmarkBold } from \"@purpur/icon/assets/checkmark-bold\";\nimport { minusBold } from \"@purpur/icon/assets/minus-bold\";\nimport { Label } from \"@purpur/label\";\nimport { Paragraph } from \"@purpur/paragraph\";\nimport * as RadixCheckbox from \"@radix-ui/react-checkbox\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./checkbox.module.scss\";\nconst cx = c.bind(styles);\n\nexport const checkedState = [\"indeterminate\", true, false] as const;\n\nexport type CheckedState = (typeof checkedState)[number];\nexport type CheckboxProps = Omit<BaseProps<\"button\">, \"onChange\" | \"children\"> & {\n /**\n * To use with custom label (not recommended).\n * */\n [\"aria-labelledby\"]?: string;\n /**\n * To use when no label is given (not recommended).\n * */\n [\"aria-label\"]?: string;\n checked?: CheckedState;\n /**\n * The checked state of the checkbox when it is initially rendered. Use when you do not need to control its checked state.\n */\n defaultChecked?: boolean;\n /**\n * When `true`, prevents the user from interacting with the checkbox.\n */\n disabled?: boolean;\n /**\n * Use to render error state on the actual checkbox only. No error text below the checkbox will appear and the label will not\n * be shown as an error, unless errorText is set.\n * */\n error?: boolean;\n /**\n * Use to render error message below the checkbox. The checkbox renders with error appearance.\n * */\n errorText?: string;\n /**\n * ID of the checkbox.\n * */\n id: string;\n /**\n * The label of the checkbox. Label can't be a block element\n * */\n label?: ReactNode;\n /**\n * The name of the checkbox. Submitted with its owning form as part of a name/value pair.\n * */\n name?: string;\n /**\n * The helper text displayed below the checkbox.\n */\n helperText?: string;\n /**\n * When `true`, renders the checkbox for use on dark or colored backgrounds.\n */\n negative?: boolean;\n /**\n * Event handler called when the checked state of the checkbox changes.\n * */\n onChange?: (value: CheckedState) => void;\n /**\n * When `true`, indicates that the user must check the checkbox before the owning form can be submitted.\n * */\n required?: boolean;\n /**\n * The value given as data when submitted with a name.\n * */\n value?: string;\n};\n\nconst rootClassName = \"purpur-checkbox\";\n\nexport const Checkbox = forwardRef<HTMLButtonElement, CheckboxProps>(\n (\n {\n [\"data-testid\"]: dataTestId,\n checked,\n className,\n error = false,\n errorText,\n label,\n helperText,\n negative = false,\n onChange,\n ...props\n },\n ref\n ) => {\n const isError = errorText && !checked;\n const isCheckboxError = error && !checked;\n\n return (\n <div className={cx([`${rootClassName}__wrapper`, className])}>\n <div className={cx([`${rootClassName}__container`, className])}>\n <RadixCheckbox.Root\n {...props}\n checked={checked}\n className={cx([\n rootClassName,\n {\n [`${rootClassName}--error`]: isError,\n [`${rootClassName}--error-checkbox`]: isCheckboxError,\n [`${rootClassName}--negative`]: negative,\n },\n ])}\n data-testid={dataTestId}\n onCheckedChange={onChange}\n ref={ref}\n >\n <span className={cx(`${rootClassName}__box`)}>\n <RadixCheckbox.Indicator className={cx(`${rootClassName}__indicator`)}>\n {checked === \"indeterminate\" ? (\n <Icon\n data-testid={dataTestId && `${dataTestId}-checked-icon`}\n size=\"xs\"\n svg={minusBold}\n />\n ) : (\n <Icon\n data-testid={dataTestId && `${dataTestId}-indeterminate-icon`}\n size=\"xs\"\n svg={checkmarkBold}\n />\n )}\n </RadixCheckbox.Indicator>\n </span>\n </RadixCheckbox.Root>\n <span className={cx(`${rootClassName}__label-container`)}>\n {label && (\n <Label\n htmlFor={props.id}\n data-testid={dataTestId && `${dataTestId}-label`}\n disabled={props.disabled}\n negative={negative}\n >\n <Paragraph variant=\"paragraph-100\" disabled={props.disabled} negative={negative}>\n {props.required && <span aria-hidden>{\"* \"}</span>}\n {label}\n </Paragraph>\n </Label>\n )}\n {helperText && (\n <FieldHelperText\n className={cx(`${rootClassName}__helper`)}\n data-testid={dataTestId && `${dataTestId}-helper-text`}\n disabled={props.disabled}\n id={`${props.id}-helper-text`}\n negative={negative}\n >\n {helperText}\n </FieldHelperText>\n )}\n </span>\n </div>\n {isError && (\n <FieldErrorText data-testid={dataTestId && `${dataTestId}-error-text`} negative={negative}>\n {errorText}\n </FieldErrorText>\n )}\n </div>\n );\n }\n);\n\nCheckbox.displayName = \"Checkbox\";\n"],"names":["l","CHECKBOX_NAME","createCheckboxContext","createContextScope","CheckboxProvider","useCheckboxContext","Checkbox","React","props","forwardedRef","__scopeCheckbox","name","checkedProp","defaultChecked","required","disabled","value","onCheckedChange","form","checkboxProps","button","setButton","composedRefs","useComposedRefs","node","hasConsumerStoppedPropagationRef","isFormControl","checked","setChecked","useControllableState","initialCheckedStateRef","form2","reset","jsxs","jsx","Primitive","isIndeterminate","getState","composeEventHandlers","event","prevChecked","BubbleInput","INDICATOR_NAME","CheckboxIndicator","forceMount","indicatorProps","context","Presence","control","bubbles","inputProps","ref","usePrevious","controlSize","useSize","input","inputProto","defaultCheckedRef","Root","Indicator","cx","c","styles","checkedState","rootClassName","forwardRef","dataTestId","className","error","errorText","label","helperText","negative","onChange","isError","isCheckboxError","RadixCheckbox.Root","RadixCheckbox.Indicator","Icon","minusBold","checkmarkBold","Label","Paragraph","FieldHelperText","FieldErrorText"],"mappings":"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","x_google_ignoreList":[1]}
@@ -1,2 +1,2 @@
1
- "use strict";const t=require("react/jsx-runtime"),q=require("react"),M=require("./field-error-text-FhQulSV5.js"),B=require("./field-helper-text-DSKO-Tce.js"),E=require("./icon.es-j3eRib6d.js"),F=require("./checkmark-bold.es-DdJFVVJG.js"),L=require("./label-yHK80hhV.js"),A=require("./paragraph-By4jMjnH.js"),K=require("./index-_XxjJPRD.js"),X=require("./index-kcwFA4Dv.js"),j=require("./index-CxBG4Ssm.js"),Z=require("./index-DOFLOnao.js"),G=require("./index-HJvG7FXj.js"),P=require("./index-Hk_HrrHM.js"),J=require("./bind-DeUYJ6m9.js");function Q(e){const c=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const r in e)if(r!=="default"){const s=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(c,r,s.get?s:{enumerable:!0,get:()=>e[r]})}}return c.default=e,Object.freeze(c)}const d=Q(q),U={name:"minus-bold",svg:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor"><path fill-rule="evenodd" d="M3 12c0-1.105.711-2 1.588-2h14.824c.877 0 1.588.895 1.588 2s-.711 2-1.588 2H4.588C3.711 14 3 13.105 3 12Z" clip-rule="evenodd"/></svg>',keywords:["minus-bold"],category:"utility"};var $="Checkbox",[V]=X.createContextScope($),[W,Y]=V($),R=d.forwardRef((e,c)=>{const{__scopeCheckbox:r,name:s,checked:l,defaultChecked:o,required:p,disabled:n,value:f="on",onCheckedChange:i,form:h,...k}=e,[b,v]=d.useState(null),g=K.useComposedRefs(c,a=>v(a)),y=d.useRef(!1),w=b?h||!!b.closest("form"):!0,[m=!1,z]=j.useControllableState({prop:l,defaultProp:o,onChange:i}),H=d.useRef(m);return d.useEffect(()=>{const a=b?.form;if(a){const C=()=>z(H.current);return a.addEventListener("reset",C),()=>a.removeEventListener("reset",C)}},[b,z]),t.jsxs(W,{scope:r,state:m,disabled:n,children:[t.jsx(P.Primitive.button,{type:"button",role:"checkbox","aria-checked":x(m)?"mixed":m,"aria-required":p,"data-state":O(m),"data-disabled":n?"":void 0,disabled:n,value:f,...k,ref:g,onKeyDown:j.composeEventHandlers(e.onKeyDown,a=>{a.key==="Enter"&&a.preventDefault()}),onClick:j.composeEventHandlers(e.onClick,a=>{z(C=>x(C)?!0:!C),w&&(y.current=a.isPropagationStopped(),y.current||a.stopPropagation())})}),w&&t.jsx(I,{control:b,bubbles:!y.current,name:s,value:f,checked:m,required:p,disabled:n,form:h,style:{transform:"translateX(-100%)"},defaultChecked:x(o)?!1:o})]})});R.displayName=$;var N="CheckboxIndicator",S=d.forwardRef((e,c)=>{const{__scopeCheckbox:r,forceMount:s,...l}=e,o=Y(N,r);return t.jsx(G.Presence,{present:s||x(o.state)||o.state===!0,children:t.jsx(P.Primitive.span,{"data-state":O(o.state),"data-disabled":o.disabled?"":void 0,...l,ref:c,style:{pointerEvents:"none",...e.style}})})});S.displayName=N;var I=e=>{const{control:c,checked:r,bubbles:s=!0,defaultChecked:l,...o}=e,p=d.useRef(null),n=j.usePrevious(r),f=Z.useSize(c);d.useEffect(()=>{const h=p.current,k=window.HTMLInputElement.prototype,v=Object.getOwnPropertyDescriptor(k,"checked").set;if(n!==r&&v){const g=new Event("click",{bubbles:s});h.indeterminate=x(r),v.call(h,x(r)?!1:r),h.dispatchEvent(g)}},[n,r,s]);const i=d.useRef(x(r)?!1:r);return t.jsx("input",{type:"checkbox","aria-hidden":!0,defaultChecked:l??i.current,...o,tabIndex:-1,ref:p,style:{...e.style,...f,position:"absolute",pointerEvents:"none",opacity:0,margin:0}})};function x(e){return e==="indeterminate"}function O(e){return x(e)?"indeterminate":e?"checked":"unchecked"}var T=R,ee=S;const re={"purpur-checkbox":"_purpur-checkbox_1u1zz_1","purpur-checkbox__box":"_purpur-checkbox__box_1u1zz_7","purpur-checkbox--error":"_purpur-checkbox--error_1u1zz_16","purpur-checkbox--error-checkbox":"_purpur-checkbox--error-checkbox_1u1zz_16","purpur-checkbox--negative":"_purpur-checkbox--negative_1u1zz_49","purpur-checkbox__indicator":"_purpur-checkbox__indicator_1u1zz_80","purpur-checkbox__label-container":"_purpur-checkbox__label-container_1u1zz_107","purpur-checkbox__wrapper":"_purpur-checkbox__wrapper_1u1zz_113","purpur-checkbox__container":"_purpur-checkbox__container_1u1zz_119"},_=J.c.bind(re),te=["indeterminate",!0,!1],u="purpur-checkbox",D=q.forwardRef(({["data-testid"]:e,checked:c,className:r,error:s=!1,errorText:l,label:o,helperText:p,negative:n=!1,onChange:f,...i},h)=>{const k=l&&!c,b=s&&!c;return t.jsxs("div",{className:_([`${u}__wrapper`,r]),children:[t.jsxs("div",{className:_([`${u}__container`,r]),children:[t.jsx(T,{...i,checked:c,className:_([u,{[`${u}--error`]:k,[`${u}--error-checkbox`]:b,[`${u}--negative`]:n}]),"data-testid":e,onCheckedChange:f,ref:h,children:t.jsx("span",{className:_(`${u}__box`),children:t.jsx(ee,{className:_(`${u}__indicator`),children:c==="indeterminate"?t.jsx(E.b,{"data-testid":e&&`${e}-checked-icon`,size:"xs",svg:U}):t.jsx(E.b,{"data-testid":e&&`${e}-indeterminate-icon`,size:"xs",svg:F.l})})})}),t.jsxs("span",{className:_(`${u}__label-container`),children:[o&&t.jsx(L.Label,{htmlFor:i.id,"data-testid":e&&`${e}-label`,disabled:i.disabled,negative:n,children:t.jsxs(A.Paragraph,{variant:"paragraph-100",disabled:i.disabled,negative:n,children:[i.required&&t.jsx("span",{"aria-hidden":!0,children:"* "}),o]})}),p&&t.jsx(B.FieldHelperText,{className:_(`${u}__helper`),"data-testid":e&&`${e}-helper-text`,disabled:i.disabled,id:`${i.id}-helper-text`,negative:n,children:p})]})]}),k&&t.jsx(M.FieldErrorText,{"data-testid":e&&`${e}-error-text`,negative:n,children:l})]})});D.displayName="Checkbox";exports.Checkbox=D;exports.checkedState=te;
2
- //# sourceMappingURL=checkbox-CDNcNv6d.js.map
1
+ "use strict";const t=require("react/jsx-runtime"),q=require("react"),M=require("./field-error-text-FhQulSV5.js"),B=require("./field-helper-text-DSKO-Tce.js"),E=require("./icon.es-j3eRib6d.js"),F=require("./checkmark-bold.es-DdJFVVJG.js"),L=require("./label-yHK80hhV.js"),A=require("./paragraph-B8HFdNne.js"),K=require("./index-_XxjJPRD.js"),X=require("./index-kcwFA4Dv.js"),j=require("./index-CxBG4Ssm.js"),Z=require("./index-DOFLOnao.js"),G=require("./index-HJvG7FXj.js"),P=require("./index-Hk_HrrHM.js"),J=require("./bind-DeUYJ6m9.js");function Q(e){const c=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const r in e)if(r!=="default"){const s=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(c,r,s.get?s:{enumerable:!0,get:()=>e[r]})}}return c.default=e,Object.freeze(c)}const d=Q(q),U={name:"minus-bold",svg:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor"><path fill-rule="evenodd" d="M3 12c0-1.105.711-2 1.588-2h14.824c.877 0 1.588.895 1.588 2s-.711 2-1.588 2H4.588C3.711 14 3 13.105 3 12Z" clip-rule="evenodd"/></svg>',keywords:["minus-bold"],category:"utility"};var $="Checkbox",[V]=X.createContextScope($),[W,Y]=V($),R=d.forwardRef((e,c)=>{const{__scopeCheckbox:r,name:s,checked:l,defaultChecked:o,required:p,disabled:n,value:f="on",onCheckedChange:i,form:h,...k}=e,[b,v]=d.useState(null),g=K.useComposedRefs(c,a=>v(a)),y=d.useRef(!1),w=b?h||!!b.closest("form"):!0,[m=!1,z]=j.useControllableState({prop:l,defaultProp:o,onChange:i}),H=d.useRef(m);return d.useEffect(()=>{const a=b?.form;if(a){const C=()=>z(H.current);return a.addEventListener("reset",C),()=>a.removeEventListener("reset",C)}},[b,z]),t.jsxs(W,{scope:r,state:m,disabled:n,children:[t.jsx(P.Primitive.button,{type:"button",role:"checkbox","aria-checked":x(m)?"mixed":m,"aria-required":p,"data-state":O(m),"data-disabled":n?"":void 0,disabled:n,value:f,...k,ref:g,onKeyDown:j.composeEventHandlers(e.onKeyDown,a=>{a.key==="Enter"&&a.preventDefault()}),onClick:j.composeEventHandlers(e.onClick,a=>{z(C=>x(C)?!0:!C),w&&(y.current=a.isPropagationStopped(),y.current||a.stopPropagation())})}),w&&t.jsx(I,{control:b,bubbles:!y.current,name:s,value:f,checked:m,required:p,disabled:n,form:h,style:{transform:"translateX(-100%)"},defaultChecked:x(o)?!1:o})]})});R.displayName=$;var N="CheckboxIndicator",S=d.forwardRef((e,c)=>{const{__scopeCheckbox:r,forceMount:s,...l}=e,o=Y(N,r);return t.jsx(G.Presence,{present:s||x(o.state)||o.state===!0,children:t.jsx(P.Primitive.span,{"data-state":O(o.state),"data-disabled":o.disabled?"":void 0,...l,ref:c,style:{pointerEvents:"none",...e.style}})})});S.displayName=N;var I=e=>{const{control:c,checked:r,bubbles:s=!0,defaultChecked:l,...o}=e,p=d.useRef(null),n=j.usePrevious(r),f=Z.useSize(c);d.useEffect(()=>{const h=p.current,k=window.HTMLInputElement.prototype,v=Object.getOwnPropertyDescriptor(k,"checked").set;if(n!==r&&v){const g=new Event("click",{bubbles:s});h.indeterminate=x(r),v.call(h,x(r)?!1:r),h.dispatchEvent(g)}},[n,r,s]);const i=d.useRef(x(r)?!1:r);return t.jsx("input",{type:"checkbox","aria-hidden":!0,defaultChecked:l??i.current,...o,tabIndex:-1,ref:p,style:{...e.style,...f,position:"absolute",pointerEvents:"none",opacity:0,margin:0}})};function x(e){return e==="indeterminate"}function O(e){return x(e)?"indeterminate":e?"checked":"unchecked"}var T=R,ee=S;const re={"purpur-checkbox":"_purpur-checkbox_1u1zz_1","purpur-checkbox__box":"_purpur-checkbox__box_1u1zz_7","purpur-checkbox--error":"_purpur-checkbox--error_1u1zz_16","purpur-checkbox--error-checkbox":"_purpur-checkbox--error-checkbox_1u1zz_16","purpur-checkbox--negative":"_purpur-checkbox--negative_1u1zz_49","purpur-checkbox__indicator":"_purpur-checkbox__indicator_1u1zz_80","purpur-checkbox__label-container":"_purpur-checkbox__label-container_1u1zz_107","purpur-checkbox__wrapper":"_purpur-checkbox__wrapper_1u1zz_113","purpur-checkbox__container":"_purpur-checkbox__container_1u1zz_119"},_=J.c.bind(re),te=["indeterminate",!0,!1],u="purpur-checkbox",D=q.forwardRef(({["data-testid"]:e,checked:c,className:r,error:s=!1,errorText:l,label:o,helperText:p,negative:n=!1,onChange:f,...i},h)=>{const k=l&&!c,b=s&&!c;return t.jsxs("div",{className:_([`${u}__wrapper`,r]),children:[t.jsxs("div",{className:_([`${u}__container`,r]),children:[t.jsx(T,{...i,checked:c,className:_([u,{[`${u}--error`]:k,[`${u}--error-checkbox`]:b,[`${u}--negative`]:n}]),"data-testid":e,onCheckedChange:f,ref:h,children:t.jsx("span",{className:_(`${u}__box`),children:t.jsx(ee,{className:_(`${u}__indicator`),children:c==="indeterminate"?t.jsx(E.b,{"data-testid":e&&`${e}-checked-icon`,size:"xs",svg:U}):t.jsx(E.b,{"data-testid":e&&`${e}-indeterminate-icon`,size:"xs",svg:F.l})})})}),t.jsxs("span",{className:_(`${u}__label-container`),children:[o&&t.jsx(L.Label,{htmlFor:i.id,"data-testid":e&&`${e}-label`,disabled:i.disabled,negative:n,children:t.jsxs(A.Paragraph,{variant:"paragraph-100",disabled:i.disabled,negative:n,children:[i.required&&t.jsx("span",{"aria-hidden":!0,children:"* "}),o]})}),p&&t.jsx(B.FieldHelperText,{className:_(`${u}__helper`),"data-testid":e&&`${e}-helper-text`,disabled:i.disabled,id:`${i.id}-helper-text`,negative:n,children:p})]})]}),k&&t.jsx(M.FieldErrorText,{"data-testid":e&&`${e}-error-text`,negative:n,children:l})]})});D.displayName="Checkbox";exports.Checkbox=D;exports.checkedState=te;
2
+ //# sourceMappingURL=checkbox-qjWQEoa5.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"checkbox-CDNcNv6d.js","sources":["../../../components/icon/dist/assets/minus-bold.es.js","../../../common/temp/node_modules/.pnpm/@radix-ui+react-checkbox@1.1.5_@types+react-dom@19.2.3_@types+react@19.2.14__@types+rea_f616ca483e8f11c8b6f09ac94c17a7b2/node_modules/@radix-ui/react-checkbox/dist/index.mjs","../../../components/checkbox/src/checkbox.tsx"],"sourcesContent":["const l = {\n name: \"minus-bold\",\n svg: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path fill-rule=\"evenodd\" d=\"M3 12c0-1.105.711-2 1.588-2h14.824c.877 0 1.588.895 1.588 2s-.711 2-1.588 2H4.588C3.711 14 3 13.105 3 12Z\" clip-rule=\"evenodd\"/></svg>',\n keywords: [\"minus-bold\"],\n category: \"utility\"\n};\nexport {\n l as minusBold\n};\n//# sourceMappingURL=minus-bold.es.js.map\n","\"use client\";\n\n// packages/react/checkbox/src/checkbox.tsx\nimport * as React from \"react\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { usePrevious } from \"@radix-ui/react-use-previous\";\nimport { useSize } from \"@radix-ui/react-use-size\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { jsx, jsxs } from \"react/jsx-runtime\";\nvar CHECKBOX_NAME = \"Checkbox\";\nvar [createCheckboxContext, createCheckboxScope] = createContextScope(CHECKBOX_NAME);\nvar [CheckboxProvider, useCheckboxContext] = createCheckboxContext(CHECKBOX_NAME);\nvar Checkbox = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeCheckbox,\n name,\n checked: checkedProp,\n defaultChecked,\n required,\n disabled,\n value = \"on\",\n onCheckedChange,\n form,\n ...checkboxProps\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 const [checked = false, setChecked] = useControllableState({\n prop: checkedProp,\n defaultProp: defaultChecked,\n onChange: onCheckedChange\n });\n const initialCheckedStateRef = React.useRef(checked);\n React.useEffect(() => {\n const form2 = button?.form;\n if (form2) {\n const reset = () => setChecked(initialCheckedStateRef.current);\n form2.addEventListener(\"reset\", reset);\n return () => form2.removeEventListener(\"reset\", reset);\n }\n }, [button, setChecked]);\n return /* @__PURE__ */ jsxs(CheckboxProvider, { scope: __scopeCheckbox, state: checked, disabled, children: [\n /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n role: \"checkbox\",\n \"aria-checked\": isIndeterminate(checked) ? \"mixed\" : checked,\n \"aria-required\": required,\n \"data-state\": getState(checked),\n \"data-disabled\": disabled ? \"\" : void 0,\n disabled,\n value,\n ...checkboxProps,\n ref: composedRefs,\n onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {\n if (event.key === \"Enter\") event.preventDefault();\n }),\n onClick: composeEventHandlers(props.onClick, (event) => {\n setChecked((prevChecked) => isIndeterminate(prevChecked) ? true : !prevChecked);\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 defaultChecked: isIndeterminate(defaultChecked) ? false : defaultChecked\n }\n )\n ] });\n }\n);\nCheckbox.displayName = CHECKBOX_NAME;\nvar INDICATOR_NAME = \"CheckboxIndicator\";\nvar CheckboxIndicator = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeCheckbox, forceMount, ...indicatorProps } = props;\n const context = useCheckboxContext(INDICATOR_NAME, __scopeCheckbox);\n return /* @__PURE__ */ jsx(Presence, { present: forceMount || isIndeterminate(context.state) || context.state === true, children: /* @__PURE__ */ jsx(\n Primitive.span,\n {\n \"data-state\": getState(context.state),\n \"data-disabled\": context.disabled ? \"\" : void 0,\n ...indicatorProps,\n ref: forwardedRef,\n style: { pointerEvents: \"none\", ...props.style }\n }\n ) });\n }\n);\nCheckboxIndicator.displayName = INDICATOR_NAME;\nvar BubbleInput = (props) => {\n const { control, checked, bubbles = true, defaultChecked, ...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 input.indeterminate = isIndeterminate(checked);\n setChecked.call(input, isIndeterminate(checked) ? false : checked);\n input.dispatchEvent(event);\n }\n }, [prevChecked, checked, bubbles]);\n const defaultCheckedRef = React.useRef(isIndeterminate(checked) ? false : checked);\n return /* @__PURE__ */ jsx(\n \"input\",\n {\n type: \"checkbox\",\n \"aria-hidden\": true,\n defaultChecked: defaultChecked ?? defaultCheckedRef.current,\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 isIndeterminate(checked) {\n return checked === \"indeterminate\";\n}\nfunction getState(checked) {\n return isIndeterminate(checked) ? \"indeterminate\" : checked ? \"checked\" : \"unchecked\";\n}\nvar Root = Checkbox;\nvar Indicator = CheckboxIndicator;\nexport {\n Checkbox,\n CheckboxIndicator,\n Indicator,\n Root,\n createCheckboxScope\n};\n//# sourceMappingURL=index.mjs.map\n","import React, { forwardRef, type ReactNode } from \"react\";\nimport type { BaseProps } from \"@purpur/common-types\";\nimport { FieldErrorText } from \"@purpur/field-error-text\";\nimport { FieldHelperText } from \"@purpur/field-helper-text\";\nimport { Icon } from \"@purpur/icon\";\nimport { checkmarkBold } from \"@purpur/icon/assets/checkmark-bold\";\nimport { minusBold } from \"@purpur/icon/assets/minus-bold\";\nimport { Label } from \"@purpur/label\";\nimport { Paragraph } from \"@purpur/paragraph\";\nimport * as RadixCheckbox from \"@radix-ui/react-checkbox\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./checkbox.module.scss\";\nconst cx = c.bind(styles);\n\nexport const checkedState = [\"indeterminate\", true, false] as const;\n\nexport type CheckedState = (typeof checkedState)[number];\nexport type CheckboxProps = Omit<BaseProps<\"button\">, \"onChange\" | \"children\"> & {\n /**\n * To use with custom label (not recommended).\n * */\n [\"aria-labelledby\"]?: string;\n /**\n * To use when no label is given (not recommended).\n * */\n [\"aria-label\"]?: string;\n checked?: CheckedState;\n /**\n * The checked state of the checkbox when it is initially rendered. Use when you do not need to control its checked state.\n */\n defaultChecked?: boolean;\n /**\n * When `true`, prevents the user from interacting with the checkbox.\n */\n disabled?: boolean;\n /**\n * Use to render error state on the actual checkbox only. No error text below the checkbox will appear and the label will not\n * be shown as an error, unless errorText is set.\n * */\n error?: boolean;\n /**\n * Use to render error message below the checkbox. The checkbox renders with error appearance.\n * */\n errorText?: string;\n /**\n * ID of the checkbox.\n * */\n id: string;\n /**\n * The label of the checkbox. Label can't be a block element\n * */\n label?: ReactNode;\n /**\n * The name of the checkbox. Submitted with its owning form as part of a name/value pair.\n * */\n name?: string;\n /**\n * The helper text displayed below the checkbox.\n */\n helperText?: string;\n /**\n * When `true`, renders the checkbox for use on dark or colored backgrounds.\n */\n negative?: boolean;\n /**\n * Event handler called when the checked state of the checkbox changes.\n * */\n onChange?: (value: CheckedState) => void;\n /**\n * When `true`, indicates that the user must check the checkbox before the owning form can be submitted.\n * */\n required?: boolean;\n /**\n * The value given as data when submitted with a name.\n * */\n value?: string;\n};\n\nconst rootClassName = \"purpur-checkbox\";\n\nexport const Checkbox = forwardRef<HTMLButtonElement, CheckboxProps>(\n (\n {\n [\"data-testid\"]: dataTestId,\n checked,\n className,\n error = false,\n errorText,\n label,\n helperText,\n negative = false,\n onChange,\n ...props\n },\n ref\n ) => {\n const isError = errorText && !checked;\n const isCheckboxError = error && !checked;\n\n return (\n <div className={cx([`${rootClassName}__wrapper`, className])}>\n <div className={cx([`${rootClassName}__container`, className])}>\n <RadixCheckbox.Root\n {...props}\n checked={checked}\n className={cx([\n rootClassName,\n {\n [`${rootClassName}--error`]: isError,\n [`${rootClassName}--error-checkbox`]: isCheckboxError,\n [`${rootClassName}--negative`]: negative,\n },\n ])}\n data-testid={dataTestId}\n onCheckedChange={onChange}\n ref={ref}\n >\n <span className={cx(`${rootClassName}__box`)}>\n <RadixCheckbox.Indicator className={cx(`${rootClassName}__indicator`)}>\n {checked === \"indeterminate\" ? (\n <Icon\n data-testid={dataTestId && `${dataTestId}-checked-icon`}\n size=\"xs\"\n svg={minusBold}\n />\n ) : (\n <Icon\n data-testid={dataTestId && `${dataTestId}-indeterminate-icon`}\n size=\"xs\"\n svg={checkmarkBold}\n />\n )}\n </RadixCheckbox.Indicator>\n </span>\n </RadixCheckbox.Root>\n <span className={cx(`${rootClassName}__label-container`)}>\n {label && (\n <Label\n htmlFor={props.id}\n data-testid={dataTestId && `${dataTestId}-label`}\n disabled={props.disabled}\n negative={negative}\n >\n <Paragraph variant=\"paragraph-100\" disabled={props.disabled} negative={negative}>\n {props.required && <span aria-hidden>{\"* \"}</span>}\n {label}\n </Paragraph>\n </Label>\n )}\n {helperText && (\n <FieldHelperText\n className={cx(`${rootClassName}__helper`)}\n data-testid={dataTestId && `${dataTestId}-helper-text`}\n disabled={props.disabled}\n id={`${props.id}-helper-text`}\n negative={negative}\n >\n {helperText}\n </FieldHelperText>\n )}\n </span>\n </div>\n {isError && (\n <FieldErrorText data-testid={dataTestId && `${dataTestId}-error-text`} negative={negative}>\n {errorText}\n </FieldErrorText>\n )}\n </div>\n );\n }\n);\n\nCheckbox.displayName = \"Checkbox\";\n"],"names":["l","CHECKBOX_NAME","createCheckboxContext","createContextScope","CheckboxProvider","useCheckboxContext","Checkbox","React","props","forwardedRef","__scopeCheckbox","name","checkedProp","defaultChecked","required","disabled","value","onCheckedChange","form","checkboxProps","button","setButton","composedRefs","useComposedRefs","node","hasConsumerStoppedPropagationRef","isFormControl","checked","setChecked","useControllableState","initialCheckedStateRef","form2","reset","jsxs","jsx","Primitive","isIndeterminate","getState","composeEventHandlers","event","prevChecked","BubbleInput","INDICATOR_NAME","CheckboxIndicator","forceMount","indicatorProps","context","Presence","control","bubbles","inputProps","ref","usePrevious","controlSize","useSize","input","inputProto","defaultCheckedRef","Root","Indicator","cx","c","styles","checkedState","rootClassName","forwardRef","dataTestId","className","error","errorText","label","helperText","negative","onChange","isError","isCheckboxError","RadixCheckbox.Root","RadixCheckbox.Indicator","Icon","minusBold","checkmarkBold","Label","Paragraph","FieldHelperText","FieldErrorText"],"mappings":"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","x_google_ignoreList":[1]}
1
+ {"version":3,"file":"checkbox-qjWQEoa5.js","sources":["../../../components/icon/dist/assets/minus-bold.es.js","../../../common/temp/node_modules/.pnpm/@radix-ui+react-checkbox@1.1.5_@types+react-dom@19.2.3_@types+react@19.2.14__@types+rea_f616ca483e8f11c8b6f09ac94c17a7b2/node_modules/@radix-ui/react-checkbox/dist/index.mjs","../../../components/checkbox/src/checkbox.tsx"],"sourcesContent":["const l = {\n name: \"minus-bold\",\n svg: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path fill-rule=\"evenodd\" d=\"M3 12c0-1.105.711-2 1.588-2h14.824c.877 0 1.588.895 1.588 2s-.711 2-1.588 2H4.588C3.711 14 3 13.105 3 12Z\" clip-rule=\"evenodd\"/></svg>',\n keywords: [\"minus-bold\"],\n category: \"utility\"\n};\nexport {\n l as minusBold\n};\n//# sourceMappingURL=minus-bold.es.js.map\n","\"use client\";\n\n// packages/react/checkbox/src/checkbox.tsx\nimport * as React from \"react\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { usePrevious } from \"@radix-ui/react-use-previous\";\nimport { useSize } from \"@radix-ui/react-use-size\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { jsx, jsxs } from \"react/jsx-runtime\";\nvar CHECKBOX_NAME = \"Checkbox\";\nvar [createCheckboxContext, createCheckboxScope] = createContextScope(CHECKBOX_NAME);\nvar [CheckboxProvider, useCheckboxContext] = createCheckboxContext(CHECKBOX_NAME);\nvar Checkbox = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeCheckbox,\n name,\n checked: checkedProp,\n defaultChecked,\n required,\n disabled,\n value = \"on\",\n onCheckedChange,\n form,\n ...checkboxProps\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 const [checked = false, setChecked] = useControllableState({\n prop: checkedProp,\n defaultProp: defaultChecked,\n onChange: onCheckedChange\n });\n const initialCheckedStateRef = React.useRef(checked);\n React.useEffect(() => {\n const form2 = button?.form;\n if (form2) {\n const reset = () => setChecked(initialCheckedStateRef.current);\n form2.addEventListener(\"reset\", reset);\n return () => form2.removeEventListener(\"reset\", reset);\n }\n }, [button, setChecked]);\n return /* @__PURE__ */ jsxs(CheckboxProvider, { scope: __scopeCheckbox, state: checked, disabled, children: [\n /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n role: \"checkbox\",\n \"aria-checked\": isIndeterminate(checked) ? \"mixed\" : checked,\n \"aria-required\": required,\n \"data-state\": getState(checked),\n \"data-disabled\": disabled ? \"\" : void 0,\n disabled,\n value,\n ...checkboxProps,\n ref: composedRefs,\n onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {\n if (event.key === \"Enter\") event.preventDefault();\n }),\n onClick: composeEventHandlers(props.onClick, (event) => {\n setChecked((prevChecked) => isIndeterminate(prevChecked) ? true : !prevChecked);\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 defaultChecked: isIndeterminate(defaultChecked) ? false : defaultChecked\n }\n )\n ] });\n }\n);\nCheckbox.displayName = CHECKBOX_NAME;\nvar INDICATOR_NAME = \"CheckboxIndicator\";\nvar CheckboxIndicator = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeCheckbox, forceMount, ...indicatorProps } = props;\n const context = useCheckboxContext(INDICATOR_NAME, __scopeCheckbox);\n return /* @__PURE__ */ jsx(Presence, { present: forceMount || isIndeterminate(context.state) || context.state === true, children: /* @__PURE__ */ jsx(\n Primitive.span,\n {\n \"data-state\": getState(context.state),\n \"data-disabled\": context.disabled ? \"\" : void 0,\n ...indicatorProps,\n ref: forwardedRef,\n style: { pointerEvents: \"none\", ...props.style }\n }\n ) });\n }\n);\nCheckboxIndicator.displayName = INDICATOR_NAME;\nvar BubbleInput = (props) => {\n const { control, checked, bubbles = true, defaultChecked, ...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 input.indeterminate = isIndeterminate(checked);\n setChecked.call(input, isIndeterminate(checked) ? false : checked);\n input.dispatchEvent(event);\n }\n }, [prevChecked, checked, bubbles]);\n const defaultCheckedRef = React.useRef(isIndeterminate(checked) ? false : checked);\n return /* @__PURE__ */ jsx(\n \"input\",\n {\n type: \"checkbox\",\n \"aria-hidden\": true,\n defaultChecked: defaultChecked ?? defaultCheckedRef.current,\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 isIndeterminate(checked) {\n return checked === \"indeterminate\";\n}\nfunction getState(checked) {\n return isIndeterminate(checked) ? \"indeterminate\" : checked ? \"checked\" : \"unchecked\";\n}\nvar Root = Checkbox;\nvar Indicator = CheckboxIndicator;\nexport {\n Checkbox,\n CheckboxIndicator,\n Indicator,\n Root,\n createCheckboxScope\n};\n//# sourceMappingURL=index.mjs.map\n","import React, { forwardRef, type ReactNode } from \"react\";\nimport type { BaseProps } from \"@purpur/common-types\";\nimport { FieldErrorText } from \"@purpur/field-error-text\";\nimport { FieldHelperText } from \"@purpur/field-helper-text\";\nimport { Icon } from \"@purpur/icon\";\nimport { checkmarkBold } from \"@purpur/icon/assets/checkmark-bold\";\nimport { minusBold } from \"@purpur/icon/assets/minus-bold\";\nimport { Label } from \"@purpur/label\";\nimport { Paragraph } from \"@purpur/paragraph\";\nimport * as RadixCheckbox from \"@radix-ui/react-checkbox\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./checkbox.module.scss\";\nconst cx = c.bind(styles);\n\nexport const checkedState = [\"indeterminate\", true, false] as const;\n\nexport type CheckedState = (typeof checkedState)[number];\nexport type CheckboxProps = Omit<BaseProps<\"button\">, \"onChange\" | \"children\"> & {\n /**\n * To use with custom label (not recommended).\n * */\n [\"aria-labelledby\"]?: string;\n /**\n * To use when no label is given (not recommended).\n * */\n [\"aria-label\"]?: string;\n checked?: CheckedState;\n /**\n * The checked state of the checkbox when it is initially rendered. Use when you do not need to control its checked state.\n */\n defaultChecked?: boolean;\n /**\n * When `true`, prevents the user from interacting with the checkbox.\n */\n disabled?: boolean;\n /**\n * Use to render error state on the actual checkbox only. No error text below the checkbox will appear and the label will not\n * be shown as an error, unless errorText is set.\n * */\n error?: boolean;\n /**\n * Use to render error message below the checkbox. The checkbox renders with error appearance.\n * */\n errorText?: string;\n /**\n * ID of the checkbox.\n * */\n id: string;\n /**\n * The label of the checkbox. Label can't be a block element\n * */\n label?: ReactNode;\n /**\n * The name of the checkbox. Submitted with its owning form as part of a name/value pair.\n * */\n name?: string;\n /**\n * The helper text displayed below the checkbox.\n */\n helperText?: string;\n /**\n * When `true`, renders the checkbox for use on dark or colored backgrounds.\n */\n negative?: boolean;\n /**\n * Event handler called when the checked state of the checkbox changes.\n * */\n onChange?: (value: CheckedState) => void;\n /**\n * When `true`, indicates that the user must check the checkbox before the owning form can be submitted.\n * */\n required?: boolean;\n /**\n * The value given as data when submitted with a name.\n * */\n value?: string;\n};\n\nconst rootClassName = \"purpur-checkbox\";\n\nexport const Checkbox = forwardRef<HTMLButtonElement, CheckboxProps>(\n (\n {\n [\"data-testid\"]: dataTestId,\n checked,\n className,\n error = false,\n errorText,\n label,\n helperText,\n negative = false,\n onChange,\n ...props\n },\n ref\n ) => {\n const isError = errorText && !checked;\n const isCheckboxError = error && !checked;\n\n return (\n <div className={cx([`${rootClassName}__wrapper`, className])}>\n <div className={cx([`${rootClassName}__container`, className])}>\n <RadixCheckbox.Root\n {...props}\n checked={checked}\n className={cx([\n rootClassName,\n {\n [`${rootClassName}--error`]: isError,\n [`${rootClassName}--error-checkbox`]: isCheckboxError,\n [`${rootClassName}--negative`]: negative,\n },\n ])}\n data-testid={dataTestId}\n onCheckedChange={onChange}\n ref={ref}\n >\n <span className={cx(`${rootClassName}__box`)}>\n <RadixCheckbox.Indicator className={cx(`${rootClassName}__indicator`)}>\n {checked === \"indeterminate\" ? (\n <Icon\n data-testid={dataTestId && `${dataTestId}-checked-icon`}\n size=\"xs\"\n svg={minusBold}\n />\n ) : (\n <Icon\n data-testid={dataTestId && `${dataTestId}-indeterminate-icon`}\n size=\"xs\"\n svg={checkmarkBold}\n />\n )}\n </RadixCheckbox.Indicator>\n </span>\n </RadixCheckbox.Root>\n <span className={cx(`${rootClassName}__label-container`)}>\n {label && (\n <Label\n htmlFor={props.id}\n data-testid={dataTestId && `${dataTestId}-label`}\n disabled={props.disabled}\n negative={negative}\n >\n <Paragraph variant=\"paragraph-100\" disabled={props.disabled} negative={negative}>\n {props.required && <span aria-hidden>{\"* \"}</span>}\n {label}\n </Paragraph>\n </Label>\n )}\n {helperText && (\n <FieldHelperText\n className={cx(`${rootClassName}__helper`)}\n data-testid={dataTestId && `${dataTestId}-helper-text`}\n disabled={props.disabled}\n id={`${props.id}-helper-text`}\n negative={negative}\n >\n {helperText}\n </FieldHelperText>\n )}\n </span>\n </div>\n {isError && (\n <FieldErrorText data-testid={dataTestId && `${dataTestId}-error-text`} negative={negative}>\n {errorText}\n </FieldErrorText>\n )}\n </div>\n );\n }\n);\n\nCheckbox.displayName = \"Checkbox\";\n"],"names":["l","CHECKBOX_NAME","createCheckboxContext","createContextScope","CheckboxProvider","useCheckboxContext","Checkbox","React","props","forwardedRef","__scopeCheckbox","name","checkedProp","defaultChecked","required","disabled","value","onCheckedChange","form","checkboxProps","button","setButton","composedRefs","useComposedRefs","node","hasConsumerStoppedPropagationRef","isFormControl","checked","setChecked","useControllableState","initialCheckedStateRef","form2","reset","jsxs","jsx","Primitive","isIndeterminate","getState","composeEventHandlers","event","prevChecked","BubbleInput","INDICATOR_NAME","CheckboxIndicator","forceMount","indicatorProps","context","Presence","control","bubbles","inputProps","ref","usePrevious","controlSize","useSize","input","inputProto","defaultCheckedRef","Root","Indicator","cx","c","styles","checkedState","rootClassName","forwardRef","dataTestId","className","error","errorText","label","helperText","negative","onChange","isError","isCheckboxError","RadixCheckbox.Root","RadixCheckbox.Indicator","Icon","minusBold","checkmarkBold","Label","Paragraph","FieldHelperText","FieldErrorText"],"mappings":"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","x_google_ignoreList":[1]}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./checkbox-CDNcNv6d.js");exports.Checkbox=e.Checkbox;exports.checkedState=e.checkedState;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./checkbox-qjWQEoa5.js");exports.Checkbox=e.Checkbox;exports.checkedState=e.checkedState;
2
2
  //# sourceMappingURL=checkbox.cjs.js.map
@@ -1,4 +1,4 @@
1
- import { C as a, c as o } from "./checkbox-BHTx89JQ.mjs";
1
+ import { C as a, c as o } from "./checkbox-DaRtZXrE.mjs";
2
2
  export {
3
3
  a as Checkbox,
4
4
  o as checkedState
@@ -0,0 +1,2 @@
1
+ "use strict";const r=require("react/jsx-runtime"),a=require("react"),O=require("./bind-DeUYJ6m9.js"),V=require("./checkmark.es-lYntWFA3.js"),F=require("./minus.es-DtXArdKK.js"),P=require("./chevron-down.es-BMjgiS3F.js"),E=require("./paragraph-B8HFdNne.js"),K=require("./badge-CQ0SS_t8.js"),M=require("./button-DmybVApa.js"),W=require("./heading-drD5ugCC.js"),G=require("./arrow-left.es-CCWJyrcQ.js"),J=require("./arrow-right.es-eH-IgGi9.js"),Q={"purpur-comparison-table__wrapper":"_purpur-comparison-table__wrapper_1udkj_1","purpur-comparison-table":"_purpur-comparison-table_1udkj_1","purpur-comparison-table--primary":"_purpur-comparison-table--primary_1udkj_11","purpur-comparison-table--secondary":"_purpur-comparison-table--secondary_1udkj_15","purpur-comparison-table__feature-row":"_purpur-comparison-table__feature-row_1udkj_32","purpur-comparison-table__cards":"_purpur-comparison-table__cards_1udkj_32","purpur-comparison-table__separator":"_purpur-comparison-table__separator_1udkj_49"},U={"purpur-comparison-table-cell":"_purpur-comparison-table-cell_glb5z_1","purpur-comparison-table-cell--check":"_purpur-comparison-table-cell--check_glb5z_17","purpur-comparison-table-cell--minus":"_purpur-comparison-table-cell--minus_glb5z_20","purpur-comparison-table-cell__icon":"_purpur-comparison-table-cell__icon_glb5z_23"},D=O.c.bind(U),T="purpur-comparison-table-cell",X=({value:o})=>{const i=a.isValidElement(o)||["string","number"].includes(typeof o),t=D(T,[i?"":`${T}--${o?"check":"minus"}`]),$=o?V.a:F.e;return r.jsx("span",{className:D(t),children:i?o:r.jsx($,{size:"xs",className:D(`${T}__icon`)})})},Y={"purpur-comparison-table-lead-cell":"_purpur-comparison-table-lead-cell_rqs9w_1","purpur-comparison-table-lead-cell__description":"_purpur-comparison-table-lead-cell__description_rqs9w_5","purpur-comparison-table-lead-cell__summary":"_purpur-comparison-table-lead-cell__summary_rqs9w_40","purpur-comparison-table-lead-cell__summary-title":"_purpur-comparison-table-lead-cell__summary-title_rqs9w_48","purpur-comparison-table-lead-cell__summary-icon":"_purpur-comparison-table-lead-cell__summary-icon_rqs9w_51"},z=O.c.bind(Y),I="purpur-comparison-table-lead-cell",Z=({title:o,description:i})=>{const l=typeof i=="string",t=z(I);return r.jsxs("details",{className:t,"data-is-expandable":l,children:[r.jsxs("summary",{className:z(`${I}__summary`),tabIndex:l?0:-1,children:[r.jsx(E.Paragraph,{className:z(`${I}__summary-title`),variant:"paragraph-100-bold",children:o}),r.jsx(P.l,{className:z(`${I}__summary-icon`),size:"sm"})]}),i&&r.jsx(E.Paragraph,{variant:"paragraph-100",className:z(`${I}__description`),children:i})]})},rr={"purpur-comparison-table-option-card":"_purpur-comparison-table-option-card_xxwrc_1","purpur-comparison-table-option-card--highlighted":"_purpur-comparison-table-option-card--highlighted_xxwrc_11","purpur-comparison-table-option-card__badge":"_purpur-comparison-table-option-card__badge_xxwrc_14","purpur-comparison-table-option-card__main-content":"_purpur-comparison-table-option-card__main-content_xxwrc_19","purpur-comparison-table-option-card__image":"_purpur-comparison-table-option-card__image_xxwrc_25","purpur-comparison-table-option-card__body":"_purpur-comparison-table-option-card__body_xxwrc_31","purpur-comparison-table-option-card__description":"_purpur-comparison-table-option-card__description_xxwrc_36","purpur-comparison-table-option-card__description-text":"_purpur-comparison-table-option-card__description-text_xxwrc_41","purpur-comparison-table-option-card__description-inner":"_purpur-comparison-table-option-card__description-inner_xxwrc_50","purpur-comparison-table-option-card__read-more":"_purpur-comparison-table-option-card__read-more_xxwrc_53","purpur-comparison-table-option-card__read-more--hidden":"_purpur-comparison-table-option-card__read-more--hidden_xxwrc_57","purpur-comparison-table-option-card__read-more-icon":"_purpur-comparison-table-option-card__read-more-icon_xxwrc_60","purpur-comparison-table-option-card__footer":"_purpur-comparison-table-option-card__footer_xxwrc_68","purpur-comparison-table-option-card__price":"_purpur-comparison-table-option-card__price_xxwrc_73","purpur-comparison-table-option-card--show-full-descriptions":"_purpur-comparison-table-option-card--show-full-descriptions_xxwrc_80","purpur-comparison-table-option-card--first-card":"_purpur-comparison-table-option-card--first-card_xxwrc_118"},_=O.c.bind(rr),c="purpur-comparison-table-option-card",er=({id:o,cardIndex:i,description:l,variablePriceText:t,price:$,isHighlighted:x,ariaLabels:f,badge:h,actions:j,isFirstCard:k,image:e,title:p,showFullDescriptions:d,toggleShowFullDescriptions:m})=>{const u=a.useRef(null),n=a.useRef(null),s=a.useRef(d),[b,v]=a.useState(!1),N=_(c,{[`${c}--highlighted`]:x,[`${c}--first-card`]:k,[`${c}--show-full-descriptions`]:d});a.useEffect(()=>{s.current=d},[d]);const C=a.useCallback(()=>{if(s.current)return;const q=u.current,S=n.current;if(!q||!S){v(!1);return}const H=q.clientHeight,B=S.offsetHeight;v(B>H+1)},[]);a.useEffect(()=>{const q=u.current;if(C(),!q||typeof ResizeObserver>"u")return;const S=new ResizeObserver(C);return S.observe(q),()=>{S.disconnect()}},[C,l]);const A=()=>l?r.jsxs("div",{className:_(`${c}__description`),children:[typeof l=="string"?r.jsx(E.Paragraph,{ref:u,className:_(`${c}__description-text`),children:r.jsx("span",{ref:n,children:l})}):r.jsx("div",{ref:u,className:_(`${c}__description-text`),children:r.jsx("div",{ref:n,className:_(`${c}__description-inner`),children:l})}),r.jsxs(M.Button,{variant:"text",size:"xs",className:_(`${c}__read-more`,{[`${c}__read-more--hidden`]:!b}),onClick:m,"aria-hidden":!b,tabIndex:b?void 0:-1,children:[r.jsx("span",{className:_(`${c}__read-more-text`),children:d?f.readLess:f.readMore}),r.jsx(P.l,{className:_(`${c}__read-more-icon`),size:"xs"})]})]}):null;return r.jsxs("article",{className:N,"data-card-id":o,"data-card-index":i,children:[h&&r.jsx(K.Badge,{...h,className:_(`${c}__badge`)}),r.jsxs("section",{className:_(`${c}__main-content`),children:[r.jsx("img",{src:e.src,alt:e.alt,className:_(`${c}__image`)}),r.jsxs("div",{className:_(`${c}__body`),children:[r.jsx(W.Heading,{tag:"h3",variant:"title-200",className:_(`${c}__title`),children:p}),A()]})]}),r.jsxs("footer",{className:_(`${c}__footer`),children:[r.jsxs("span",{className:_(`${c}__price`),id:o,children:[r.jsx(E.Paragraph,{variant:"paragraph-100",children:t}),r.jsx(E.Paragraph,{variant:"paragraph-100-bold",children:$})]}),j]})]})},sr="_active_kvsnm_44",or={"purpur-comparison-table-scroll-progress":"_purpur-comparison-table-scroll-progress_kvsnm_1","purpur-comparison-table-scroll-progress__indicators":"_purpur-comparison-table-scroll-progress__indicators_kvsnm_15","purpur-comparison-table-scroll-progress__indicator":"_purpur-comparison-table-scroll-progress__indicator_kvsnm_15",active:sr,"purpur-comparison-table-scroll-progress__buttons":"_purpur-comparison-table-scroll-progress__buttons_kvsnm_48","purpur-comparison-table-scroll-progress__button":"_purpur-comparison-table-scroll-progress__button_kvsnm_48","purpur-comparison-table-scroll-progress__button-icon":"_purpur-comparison-table-scroll-progress__button-icon_kvsnm_57"},g=O.c.bind(or),w="purpur-comparison-table-scroll-progress",ar=({items:o,container:i,ariaLabels:l})=>{const[t,$]=a.useState(new Set),x=a.useCallback(e=>{const p=window.matchMedia("(prefers-reduced-motion: reduce)").matches;i.current?.querySelector(`[data-card-index="${e}"]`)?.scrollIntoView({behavior:p?"instant":"smooth",block:"nearest"})},[i]),f=a.useCallback(()=>{if(t.size===0)return;const p=Math.min(...Array.from(t))-1;p<0||x(p)},[t,x]),h=a.useCallback(()=>{if(t.size===0)return;const p=Math.max(...Array.from(t))+1;p>=o.length||x(p)},[t,o.length,x]),j=a.useCallback(e=>{(e.key==="ArrowRight"||e.key==="ArrowLeft")&&(e.preventDefault(),e.key==="ArrowRight"?h():e.key==="ArrowLeft"&&f())},[h,f]);a.useEffect(()=>{const e=i.current;if(!e)return;const p=new IntersectionObserver(d=>{$(m=>{const u=new Set(m);return d.forEach(n=>{const s=Number(n.target.getAttribute("data-card-index"));Number.isNaN(s)||(n.isIntersecting?u.add(s):u.delete(s))}),u})},{root:e,threshold:.5});return o.forEach((d,m)=>{const u=e.querySelector(`[data-card-index="${m}"]`);u&&p.observe(u)}),()=>p.disconnect()},[i,o]),a.useEffect(()=>{const e=i.current;if(e)return e.addEventListener("keydown",j),()=>e.removeEventListener("keydown",j)},[i,j]);const k=()=>{if(t.size===0)return;const e=[],p=t.size,d=Math.min(...Array.from(t)),m=o.slice(0,d).length,u=o.slice(d+p).length;let n=0;for(let s=0;s<o.length;s++){if(m+1!==s&&m<=s&&s<o.length-u)continue;let b="active";(s<m||s>o.length-1-u)&&(b=""),e.push(r.jsx("li",{className:g(`${w}__indicator`,b)},`indicator-${n++}`))}return e.length<2?null:e};return r.jsxs("li",{className:g(w),children:[r.jsx("ul",{className:g(`${w}__indicators`),children:k()}),r.jsxs("div",{className:g(`${w}__buttons`),children:[r.jsx(M.Button,{"aria-label":l.previous,variant:"secondary",iconOnly:!0,className:g(`${w}__button`),disabled:t.has(0),onClick:f,children:r.jsx(G.l,{className:g(`${w}__button-icon`),size:"xs"})}),r.jsx(M.Button,{"aria-label":l.next,variant:"secondary",iconOnly:!0,className:g(`${w}__button`),disabled:t.has(o.length-1),onClick:h,children:r.jsx(J.i,{className:g(`${w}__button-icon`),size:"xs"})})]})]})},R=O.c.bind(Q),y="purpur-comparison-table",L=({classname:o,features:i,items:l,ariaLabels:t,variant:$="primary"})=>{const x=a.useId(),f=R(o,y,`${y}--${$}`),h=a.useRef(null),[j,k]=a.useState(!1),e=a.useCallback(()=>{k(n=>!n)},[]),p=()=>r.jsxs("li",{className:R(`${y}__cards`),children:[r.jsx("div",{className:R(`${y}__separator`)}),l.map((n,s)=>a.createElement(er,{...n,showFullDescriptions:j,toggleShowFullDescriptions:e,key:s,isFirstCard:s===0,ariaLabels:t,cardIndex:s,id:`${s}-${x}`}))]}),d=()=>Object.entries(i).map(([n,s],b)=>r.jsxs("li",{className:R(`${y}__feature-row`),children:[r.jsx(Z,{title:n,description:s}),l.map((v,N)=>r.jsx(X,{value:v.features[n]??!1},N))]},b)),m=a.useRef(0),u=n=>{const s=n.currentTarget,b=s.querySelector("[data-card-id]")?.clientWidth??0,v=Math.round(s.scrollLeft/b),N=v*b+v,C=n.timeStamp-m.current,A=Math.abs(s.scrollLeft-N);m.current&&C<200||A<10||(m.current=n.timeStamp,s.scrollTo({left:N,behavior:"smooth"}))};return r.jsx("div",{className:R(y+"__wrapper"),children:r.jsxs("ul",{id:y+`-${x}`,ref:h,className:f,onScrollEnd:u,style:{"--initial-columns":l.length+1},children:[r.jsx(ar,{items:l,container:h,ariaLabels:t}),p(),d()]})})};L.displayName="ComparisonTable";exports.ComparisonTable=L;
2
+ //# sourceMappingURL=comparison-table-DHFpydbq.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"comparison-table-DHFpydbq.js","sources":["../../../components/comparison-table/src/components/Cell/cell.tsx","../../../components/comparison-table/src/components/LeadCell/lead-cell.tsx","../../../components/comparison-table/src/components/OptionCard/option-card.tsx","../../../components/comparison-table/src/components/ScrollProgress/scroll-progress.tsx","../../../components/comparison-table/src/comparison-table.tsx"],"sourcesContent":["import React, { isValidElement, type ReactNode } from \"react\";\nimport { IconCheckmark } from \"@purpur/icon/checkmark\";\nimport { IconMinus } from \"@purpur/icon/minus\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./cell.module.scss\";\n\ntype CellProps = {\n value: boolean | ReactNode;\n};\n\nconst cx = c.bind(styles);\n\nconst rootClassName = \"purpur-comparison-table-cell\";\n\nexport const Cell = ({ value }: CellProps) => {\n const isReactNode = isValidElement(value) || [\"string\", \"number\"].includes(typeof value);\n\n const getClassName = () => {\n if (isReactNode) return \"\";\n return `${rootClassName}--${value ? \"check\" : \"minus\"}`;\n };\n\n const classes = cx(rootClassName, [getClassName()]);\n\n const Icon = value ? IconCheckmark : IconMinus;\n\n return (\n <span className={cx(classes)}>\n {isReactNode ? value : <Icon size=\"xs\" className={cx(`${rootClassName}__icon`)} />}\n </span>\n );\n};\n","import React, { type ReactNode } from \"react\";\nimport { IconChevronDown } from \"@purpur/icon/chevron-down\";\nimport { Paragraph } from \"@purpur/paragraph\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./lead-cell.module.scss\";\n\ntype LeadCellProps = {\n title: string;\n description?: ReactNode;\n};\n\nconst cx = c.bind(styles);\n\nconst rootClassName = \"purpur-comparison-table-lead-cell\";\n\nexport const LeadCell = ({ title, description }: LeadCellProps) => {\n const isExpandable = typeof description === \"string\";\n const classes = cx(rootClassName);\n\n return (\n <details className={classes} data-is-expandable={isExpandable}>\n <summary className={cx(`${rootClassName}__summary`)} tabIndex={isExpandable ? 0 : -1}>\n <Paragraph className={cx(`${rootClassName}__summary-title`)} variant=\"paragraph-100-bold\">\n {title}\n </Paragraph>\n <IconChevronDown className={cx(`${rootClassName}__summary-icon`)} size=\"sm\" />\n </summary>\n {description && (\n <Paragraph variant=\"paragraph-100\" className={cx(`${rootClassName}__description`)}>\n {description}\n </Paragraph>\n )}\n </details>\n );\n};\n","import React, { type ReactNode, useCallback, useEffect, useRef, useState } from \"react\";\nimport { Badge, type BadgeProps } from \"@purpur/badge\";\nimport { Button } from \"@purpur/button\";\nimport { Heading } from \"@purpur/heading\";\nimport { IconChevronDown } from \"@purpur/icon/chevron-down\";\nimport { Paragraph } from \"@purpur/paragraph\";\nimport c from \"classnames/bind\";\n\nimport { type ComparisonTableProps } from \"../../comparison-table\";\nimport styles from \"./option-card.module.scss\";\n\nconst cx = c.bind(styles);\n\nconst rootClassName = \"purpur-comparison-table-option-card\";\n\nexport type OptionCardProps = {\n image: {\n src: string;\n alt: string;\n };\n\n title: string;\n description: ReactNode;\n variablePriceText: string;\n price: string;\n\n actions: ReactNode;\n\n badge?: BadgeProps;\n isHighlighted?: boolean;\n};\n\ntype OptionCardPropsAdditions = {\n id: string;\n cardIndex: number;\n isFirstCard: boolean;\n ariaLabels: ComparisonTableProps[\"ariaLabels\"];\n\n showFullDescriptions: boolean;\n toggleShowFullDescriptions: () => void;\n};\n\nexport const OptionCard = ({\n id,\n cardIndex,\n description,\n variablePriceText,\n price,\n isHighlighted,\n ariaLabels,\n badge,\n actions,\n isFirstCard,\n image,\n title,\n showFullDescriptions,\n toggleShowFullDescriptions,\n}: OptionCardProps & OptionCardPropsAdditions) => {\n const descriptionRef = useRef<HTMLDivElement | HTMLParagraphElement>(null);\n const descriptionContentRef = useRef<HTMLDivElement | null>(null);\n const showFullDescriptionsRef = useRef(showFullDescriptions);\n const [descriptionOverflows, setDescriptionOverflows] = useState(false);\n\n const classes = cx(rootClassName, {\n [`${rootClassName}--highlighted`]: isHighlighted,\n [`${rootClassName}--first-card`]: isFirstCard,\n [`${rootClassName}--show-full-descriptions`]: showFullDescriptions,\n });\n\n useEffect(() => {\n showFullDescriptionsRef.current = showFullDescriptions;\n }, [showFullDescriptions]);\n\n const checkDescriptionOverflow = useCallback(() => {\n if (showFullDescriptionsRef.current) {\n return;\n }\n\n const description = descriptionRef.current;\n const descriptionContent = descriptionContentRef.current;\n\n if (!description || !descriptionContent) {\n setDescriptionOverflows(false);\n return;\n }\n\n const descriptionHeight = description.clientHeight;\n const contentHeight = descriptionContent.offsetHeight;\n\n setDescriptionOverflows(contentHeight > descriptionHeight + 1);\n }, []);\n\n useEffect(() => {\n const descriptionElement = descriptionRef.current;\n\n checkDescriptionOverflow();\n\n if (!descriptionElement || typeof ResizeObserver === \"undefined\") {\n return undefined;\n }\n\n const resizeObserver = new ResizeObserver(checkDescriptionOverflow);\n resizeObserver.observe(descriptionElement);\n\n return () => {\n resizeObserver.disconnect();\n };\n }, [checkDescriptionOverflow, description]);\n\n const renderDescription = () => {\n if (!description) return null;\n\n return (\n <div className={cx(`${rootClassName}__description`)}>\n {typeof description === \"string\" ? (\n <Paragraph ref={descriptionRef} className={cx(`${rootClassName}__description-text`)}>\n <span ref={descriptionContentRef}>{description}</span>\n </Paragraph>\n ) : (\n <div ref={descriptionRef} className={cx(`${rootClassName}__description-text`)}>\n <div ref={descriptionContentRef} className={cx(`${rootClassName}__description-inner`)}>\n {description}\n </div>\n </div>\n )}\n <Button\n variant=\"text\"\n size=\"xs\"\n className={cx(`${rootClassName}__read-more`, {\n [`${rootClassName}__read-more--hidden`]: !descriptionOverflows,\n })}\n onClick={toggleShowFullDescriptions}\n aria-hidden={!descriptionOverflows}\n tabIndex={descriptionOverflows ? undefined : -1}\n >\n <span className={cx(`${rootClassName}__read-more-text`)}>\n {showFullDescriptions ? ariaLabels.readLess : ariaLabels.readMore}\n </span>\n <IconChevronDown className={cx(`${rootClassName}__read-more-icon`)} size=\"xs\" />\n </Button>\n </div>\n );\n };\n\n return (\n <article className={classes} data-card-id={id} data-card-index={cardIndex}>\n {badge && <Badge {...badge} className={cx(`${rootClassName}__badge`)} />}\n\n <section className={cx(`${rootClassName}__main-content`)}>\n <img src={image.src} alt={image.alt} className={cx(`${rootClassName}__image`)} />\n\n <div className={cx(`${rootClassName}__body`)}>\n <Heading tag=\"h3\" variant=\"title-200\" className={cx(`${rootClassName}__title`)}>\n {title}\n </Heading>\n {renderDescription()}\n </div>\n </section>\n\n <footer className={cx(`${rootClassName}__footer`)}>\n <span className={cx(`${rootClassName}__price`)} id={id}>\n <Paragraph variant=\"paragraph-100\">{variablePriceText}</Paragraph>\n <Paragraph variant=\"paragraph-100-bold\">{price}</Paragraph>\n </span>\n\n {actions}\n </footer>\n </article>\n );\n};\n","import React, { type RefObject, useCallback, useEffect, useState } from \"react\";\nimport { Button } from \"@purpur/button\";\nimport { IconArrowLeft } from \"@purpur/icon/arrow-left\";\nimport { IconArrowRight } from \"@purpur/icon/arrow-right\";\nimport c from \"classnames/bind\";\n\nimport { type ComparisonTableProps, type Features, type Item } from \"../../comparison-table\";\nimport styles from \"./scroll-progress.module.scss\";\n\nconst cx = c.bind(styles);\nconst rootClassName = \"purpur-comparison-table-scroll-progress\";\n\ntype ScrollProgressProps = {\n items: Array<Item<Features>>;\n container: RefObject<HTMLUListElement | null>;\n ariaLabels: ComparisonTableProps[\"ariaLabels\"];\n};\n\nexport const ScrollProgress = ({ items, container, ariaLabels }: ScrollProgressProps) => {\n const [inViewSet, setInViewSet] = useState<Set<number>>(new Set());\n\n const scrollToCard = useCallback(\n (index: number) => {\n const reduceMotion = window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches;\n\n const card = container.current?.querySelector(\n `[data-card-index=\"${index}\"]`\n ) as HTMLElement | null;\n card?.scrollIntoView({ behavior: reduceMotion ? \"instant\" : \"smooth\", block: \"nearest\" });\n },\n [container]\n );\n\n const previousCard = useCallback(() => {\n if (inViewSet.size === 0) return;\n\n const leftmostactiveIndex = Math.min(...Array.from(inViewSet));\n const targetIndex = leftmostactiveIndex - 1;\n\n if (targetIndex < 0) return;\n\n scrollToCard(targetIndex);\n }, [inViewSet, scrollToCard]);\n\n const nextCard = useCallback(() => {\n if (inViewSet.size === 0) return;\n\n const rightmostactiveIndex = Math.max(...Array.from(inViewSet));\n const targetIndex = rightmostactiveIndex + 1;\n\n if (targetIndex >= items.length) return;\n\n scrollToCard(targetIndex);\n }, [inViewSet, items.length, scrollToCard]);\n\n const handleKeyDown = useCallback(\n (e: KeyboardEvent) => {\n if (e.key === \"ArrowRight\" || e.key === \"ArrowLeft\") {\n e.preventDefault();\n\n if (e.key === \"ArrowRight\") nextCard();\n else if (e.key === \"ArrowLeft\") previousCard();\n }\n },\n [nextCard, previousCard]\n );\n\n useEffect(() => {\n const root = container.current;\n\n if (!root) return;\n\n const observer = new IntersectionObserver(\n (entries) => {\n setInViewSet((prev) => {\n const next = new Set(prev);\n\n entries.forEach((entry) => {\n const index = Number(entry.target.getAttribute(\"data-card-index\"));\n\n if (Number.isNaN(index)) return;\n\n if (entry.isIntersecting) {\n next.add(index);\n } else {\n next.delete(index);\n }\n });\n return next;\n });\n },\n { root, threshold: 0.5 }\n );\n\n items.forEach((_, index) => {\n const card = root.querySelector(`[data-card-index=\"${index}\"]`) as HTMLElement | null;\n\n if (card) observer.observe(card);\n });\n\n return () => observer.disconnect();\n }, [container, items]);\n\n useEffect(() => {\n const root = container.current;\n\n if (!root) return;\n\n root.addEventListener(\"keydown\", handleKeyDown);\n\n return () => root.removeEventListener(\"keydown\", handleKeyDown);\n }, [container, handleKeyDown]);\n\n const renderIndicators = () => {\n if (inViewSet.size === 0) return;\n\n const indicators = [];\n const viewCapacity = inViewSet.size;\n const leftmostActiveIndex = Math.min(...Array.from(inViewSet));\n const head = items.slice(0, leftmostActiveIndex).length;\n const trail = items.slice(leftmostActiveIndex + viewCapacity).length;\n\n let key = 0;\n\n for (let i = 0; i < items.length; i++) {\n if (head + 1 !== i && head <= i && i < items.length - trail) continue;\n\n let status = \"active\";\n\n if (i < head || i > items.length - 1 - trail) status = \"\";\n\n indicators.push(\n <li key={`indicator-${key++}`} className={cx(`${rootClassName}__indicator`, status)} />\n );\n }\n\n if (indicators.length < 2) return null;\n\n return indicators;\n };\n\n return (\n <li className={cx(rootClassName)}>\n <ul className={cx(`${rootClassName}__indicators`)}>{renderIndicators()}</ul>\n\n <div className={cx(`${rootClassName}__buttons`)}>\n <Button\n aria-label={ariaLabels.previous}\n variant=\"secondary\"\n iconOnly\n className={cx(`${rootClassName}__button`)}\n disabled={inViewSet.has(0)}\n onClick={previousCard}\n >\n <IconArrowLeft className={cx(`${rootClassName}__button-icon`)} size=\"xs\" />\n </Button>\n <Button\n aria-label={ariaLabels.next}\n variant=\"secondary\"\n iconOnly\n className={cx(`${rootClassName}__button`)}\n disabled={inViewSet.has(items.length - 1)}\n onClick={nextCard}\n >\n <IconArrowRight className={cx(`${rootClassName}__button-icon`)} size=\"xs\" />\n </Button>\n </div>\n </li>\n );\n};\n","import React, { type ReactNode, type UIEvent, useCallback, useId, useRef, useState } from \"react\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./comparison-table.module.scss\";\nimport { Cell } from \"./components/Cell/cell\";\nimport { LeadCell } from \"./components/LeadCell/lead-cell\";\nimport { OptionCard, type OptionCardProps } from \"./components/OptionCard/option-card\";\nimport { ScrollProgress } from \"./components/ScrollProgress/scroll-progress\";\n\nconst cx = c.bind(styles);\n\nconst rootClassName = \"purpur-comparison-table\";\n\nexport type Features = Record<string, ReactNode | null>;\n\nexport type Item<TFeatures extends Features = Features> = OptionCardProps & {\n features: Partial<Record<keyof TFeatures, ReactNode | string | boolean>>;\n};\n\nexport type ComparisonTableProps<TFeatures extends Features = Features> = {\n /** List of features that can be supported by the comparison table\n *\n * string = description of the feature that can be viewed by expanding cell.\n *\n * null = no description\n *\n {\n [featureName]: ReactNode | null\n }\n */\n features: TFeatures;\n\n /** List of items to be displayed in the comparison table\n *\n *\n Item = {\n image: {\n src: string;\n alt: string;\n };\n\n title: string;\n description: string;\n variablePriceText: string;\n price: string;\n actions: ReactNode;\n badge?: BadgeProps;\n isHighlighted?: boolean;\n\n features: {\n [featureName in keyof Features]?: string | boolean;\n };\n }\n */\n items: Array<Item<TFeatures>>;\n\n /** Aria labels for the comparison table and various components\n *\n {\n previous: string;\n next: string;\n readMore: string;\n readLess: string;\n }\n */\n ariaLabels: {\n previous: string;\n next: string;\n readMore: string;\n readLess: string;\n };\n variant?: \"primary\" | \"secondary\";\n classname?: string;\n};\n\nexport const ComparisonTable = <TFeatures extends Features>({\n classname,\n features,\n items,\n ariaLabels,\n variant = \"primary\",\n}: ComparisonTableProps<TFeatures>) => {\n const id = useId();\n const classes = cx(classname, rootClassName, `${rootClassName}--${variant}`);\n const containerRef = useRef<HTMLUListElement>(null);\n const [showFullDescriptions, setShowFullDescriptions] = useState(false);\n\n const handleToggleShowFullDescriptions = useCallback(() => {\n setShowFullDescriptions((prev) => !prev);\n }, []);\n\n const renderCards = () => {\n return (\n <li className={cx(`${rootClassName}__cards`)}>\n <div className={cx(`${rootClassName}__separator`)} />\n {items.map((item, index) => (\n <OptionCard\n {...item}\n showFullDescriptions={showFullDescriptions}\n toggleShowFullDescriptions={handleToggleShowFullDescriptions}\n key={index}\n isFirstCard={index === 0}\n ariaLabels={ariaLabels}\n cardIndex={index}\n id={`${index}-${id}`}\n />\n ))}\n </li>\n );\n };\n\n const renderFeatures = () => {\n return Object.entries(features).map(([title, description], i) => (\n <li key={i} className={cx(`${rootClassName}__feature-row`)}>\n <LeadCell title={title} description={description} />\n {items.map((item, index) => (\n <Cell key={index} value={item.features[title as keyof TFeatures] ?? false} />\n ))}\n </li>\n ));\n };\n\n const deltaTime = useRef(0);\n\n const handleScrollEnd = (e: UIEvent<HTMLUListElement>) => {\n /**\n * This function makes sure that the scroll position is never stuck between two cards, since scroll snap is not fully reliable.\n */\n\n const target = e.currentTarget;\n const cardwidth = target.querySelector(\"[data-card-id]\")?.clientWidth ?? 0;\n const cardPos = Math.round(target.scrollLeft / cardwidth);\n const scrollTarget = cardPos * cardwidth + cardPos;\n const timeDiff = e.timeStamp - deltaTime.current;\n const scrollDiff = Math.abs(target.scrollLeft - scrollTarget);\n\n if (deltaTime.current && timeDiff < 200) return;\n if (scrollDiff < 10) return;\n\n deltaTime.current = e.timeStamp;\n\n target.scrollTo({ left: scrollTarget, behavior: \"smooth\" });\n };\n\n return (\n <div className={cx(rootClassName + \"__wrapper\")}>\n <ul\n id={rootClassName + `-${id}`}\n ref={containerRef}\n className={classes}\n // eslint-disable-next-line react/no-unknown-property\n onScrollEnd={handleScrollEnd}\n style={{\n // @ts-expect-error | Typescript doesn't recognize the CSS variable, but it works as intended\n [\"--initial-columns\"]: items.length + 1,\n }}\n >\n <ScrollProgress items={items} container={containerRef} ariaLabels={ariaLabels} />\n {renderCards()}\n {renderFeatures()}\n </ul>\n </div>\n );\n};\n\nComparisonTable.displayName = \"ComparisonTable\";\n"],"names":["cx","c","styles","rootClassName","Cell","value","isReactNode","isValidElement","classes","Icon","IconCheckmark","IconMinus","jsx","LeadCell","title","description","isExpandable","jsxs","Paragraph","IconChevronDown","OptionCard","id","cardIndex","variablePriceText","price","isHighlighted","ariaLabels","badge","actions","isFirstCard","image","showFullDescriptions","toggleShowFullDescriptions","descriptionRef","useRef","descriptionContentRef","showFullDescriptionsRef","descriptionOverflows","setDescriptionOverflows","useState","useEffect","checkDescriptionOverflow","useCallback","descriptionContent","descriptionHeight","contentHeight","descriptionElement","resizeObserver","renderDescription","Button","Badge","Heading","ScrollProgress","items","container","inViewSet","setInViewSet","scrollToCard","index","reduceMotion","previousCard","targetIndex","nextCard","handleKeyDown","root","observer","entries","prev","next","entry","_","card","renderIndicators","indicators","viewCapacity","leftmostActiveIndex","head","trail","key","i","status","IconArrowLeft","IconArrowRight","ComparisonTable","classname","features","variant","useId","containerRef","setShowFullDescriptions","handleToggleShowFullDescriptions","renderCards","item","createElement","renderFeatures","deltaTime","handleScrollEnd","e","target","cardwidth","cardPos","scrollTarget","timeDiff","scrollDiff"],"mappings":"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"}