@purpur/library 9.2.2 → 9.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (302) hide show
  1. package/CHANGELOG.json +42 -0
  2. package/CHANGELOG.md +21 -1
  3. package/dist/LICENSE.txt +1 -1
  4. package/dist/{RichText-Bi51HE6X.mjs → RichText-jZ-sHV-u.mjs} +2 -2
  5. package/dist/{RichText-Bi51HE6X.mjs.map → RichText-jZ-sHV-u.mjs.map} +1 -1
  6. package/dist/{RichText-DNroJJXv.js → RichText-yobCUjTD.js} +2 -2
  7. package/dist/{RichText-DNroJJXv.js.map → RichText-yobCUjTD.js.map} +1 -1
  8. package/dist/{ThemeProvider-bkyFCeo6.mjs → ThemeProvider-CkX-BNWN.mjs} +2 -2
  9. package/dist/ThemeProvider-CkX-BNWN.mjs.map +1 -0
  10. package/dist/{ThemeProvider-5r7lDX-h.js → ThemeProvider-Dy771oix.js} +2 -2
  11. package/dist/ThemeProvider-Dy771oix.js.map +1 -0
  12. package/dist/{accordion-OtFSShSB.mjs → accordion-CIU4U8-4.mjs} +3 -3
  13. package/dist/accordion-CIU4U8-4.mjs.map +1 -0
  14. package/dist/{accordion-OsA0HvdA.js → accordion-DyhOG54L.js} +2 -2
  15. package/dist/accordion-DyhOG54L.js.map +1 -0
  16. package/dist/accordion.cjs.js +1 -1
  17. package/dist/accordion.es.js +3 -3
  18. package/dist/{autocomplete-D9uCJzjY.js → autocomplete-3kV1btuI.js} +2 -2
  19. package/dist/{autocomplete-D9uCJzjY.js.map → autocomplete-3kV1btuI.js.map} +1 -1
  20. package/dist/{autocomplete-BipmyKf0.mjs → autocomplete-BEGRn-Wh.mjs} +2 -2
  21. package/dist/{autocomplete-BipmyKf0.mjs.map → autocomplete-BEGRn-Wh.mjs.map} +1 -1
  22. package/dist/autocomplete.cjs.js +1 -1
  23. package/dist/autocomplete.es.js +1 -1
  24. package/dist/{card-DR2hvxjZ.mjs → card-C2mdp-ur.mjs} +2 -2
  25. package/dist/{card-DR2hvxjZ.mjs.map → card-C2mdp-ur.mjs.map} +1 -1
  26. package/dist/{card-CRHXm5NR.js → card-DFdUs5RG.js} +2 -2
  27. package/dist/{card-CRHXm5NR.js.map → card-DFdUs5RG.js.map} +1 -1
  28. package/dist/card.cjs.js +1 -1
  29. package/dist/card.es.js +1 -1
  30. package/dist/{carousel-BkxojLwn.mjs → carousel-DLkTL9sj.mjs} +29 -29
  31. package/dist/{carousel-BkxojLwn.mjs.map → carousel-DLkTL9sj.mjs.map} +1 -1
  32. package/dist/{carousel-BCw-5u92.js → carousel-DXrtxRz5.js} +2 -2
  33. package/dist/{carousel-BCw-5u92.js.map → carousel-DXrtxRz5.js.map} +1 -1
  34. package/dist/carousel.cjs.js +1 -1
  35. package/dist/carousel.es.js +1 -1
  36. package/dist/checkbox-BHTx89JQ.mjs +236 -0
  37. package/dist/checkbox-BHTx89JQ.mjs.map +1 -0
  38. package/dist/checkbox-CDNcNv6d.js +2 -0
  39. package/dist/checkbox-CDNcNv6d.js.map +1 -0
  40. package/dist/checkbox.cjs.js +1 -1
  41. package/dist/checkbox.es.js +1 -1
  42. package/dist/{comparison-table-B8w65g43.js → comparison-table-CitEzX7h.js} +2 -2
  43. package/dist/comparison-table-CitEzX7h.js.map +1 -0
  44. package/dist/{comparison-table-D1zJpdLL.mjs → comparison-table-Dmbjsqyg.mjs} +52 -52
  45. package/dist/comparison-table-Dmbjsqyg.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.d.ts +1 -1
  49. package/dist/components/accordion/src/accordion.d.ts.map +1 -1
  50. package/dist/components/checkbox/src/checkbox.d.ts +4 -0
  51. package/dist/components/checkbox/src/checkbox.d.ts.map +1 -1
  52. package/dist/components/comparison-table/src/comparison-table.d.ts +1 -1
  53. package/dist/components/comparison-table/src/comparison-table.d.ts.map +1 -1
  54. package/dist/components/dismissable-chip-group/src/dismissable-chip-group-item.d.ts.map +1 -1
  55. package/dist/components/dismissable-chip-group/src/dismissable-chip-group.d.ts +4 -2
  56. package/dist/components/dismissable-chip-group/src/dismissable-chip-group.d.ts.map +1 -1
  57. package/dist/components/drawer/src/drawer-header.d.ts.map +1 -1
  58. package/dist/components/dropdown/src/dropdown-combobox.d.ts.map +1 -1
  59. package/dist/components/dropdown/src/dropdown-select.d.ts.map +1 -1
  60. package/dist/components/dropdown/src/dropdown-shared.d.ts +3 -2
  61. package/dist/components/dropdown/src/dropdown-shared.d.ts.map +1 -1
  62. package/dist/components/dropdown/src/useDropdown.d.ts +2 -1
  63. package/dist/components/dropdown/src/useDropdown.d.ts.map +1 -1
  64. package/dist/components/listbox/src/listbox-item.d.ts +2 -2
  65. package/dist/components/listbox/src/listbox-item.d.ts.map +1 -1
  66. package/dist/components/listbox/src/listbox.d.ts +4 -1
  67. package/dist/components/listbox/src/listbox.d.ts.map +1 -1
  68. package/dist/components/modal/src/modal-content.d.ts.map +1 -1
  69. package/dist/components/toggle/src/toggle.d.ts +1 -0
  70. package/dist/components/toggle/src/toggle.d.ts.map +1 -1
  71. package/dist/components-metadata.js +4 -2
  72. package/dist/{content-block-Dm3L4g8w.mjs → content-block-CakKeJtN.mjs} +2 -2
  73. package/dist/{content-block-Dm3L4g8w.mjs.map → content-block-CakKeJtN.mjs.map} +1 -1
  74. package/dist/{content-block-CDRUH0pg.js → content-block-CrekbIfe.js} +2 -2
  75. package/dist/{content-block-CDRUH0pg.js.map → content-block-CrekbIfe.js.map} +1 -1
  76. package/dist/content-block.cjs.js +1 -1
  77. package/dist/content-block.es.js +1 -1
  78. package/dist/{countdown-DZ4IwkNy.mjs → countdown-BsLsEZBv.mjs} +2 -2
  79. package/dist/{countdown-DZ4IwkNy.mjs.map → countdown-BsLsEZBv.mjs.map} +1 -1
  80. package/dist/{countdown-CqYsZigV.js → countdown-hYrFLmRg.js} +2 -2
  81. package/dist/{countdown-CqYsZigV.js.map → countdown-hYrFLmRg.js.map} +1 -1
  82. package/dist/countdown.cjs.js +1 -1
  83. package/dist/countdown.es.js +1 -1
  84. package/dist/{date-picker-D3uJGCjl.js → date-picker-DVrcu2QU.js} +2 -2
  85. package/dist/{date-picker-D3uJGCjl.js.map → date-picker-DVrcu2QU.js.map} +1 -1
  86. package/dist/{date-picker-CpDZ0gK9.mjs → date-picker-DwFDRL5Z.mjs} +2 -2
  87. package/dist/{date-picker-CpDZ0gK9.mjs.map → date-picker-DwFDRL5Z.mjs.map} +1 -1
  88. package/dist/date-picker.cjs.js +1 -1
  89. package/dist/date-picker.es.js +1 -1
  90. package/dist/dismissable-chip-group-2updhyuR.js +2 -0
  91. package/dist/dismissable-chip-group-2updhyuR.js.map +1 -0
  92. package/dist/dismissable-chip-group-Cfs2s2BH.mjs +94 -0
  93. package/dist/dismissable-chip-group-Cfs2s2BH.mjs.map +1 -0
  94. package/dist/dismissable-chip-group.cjs.js +1 -1
  95. package/dist/dismissable-chip-group.es.js +6 -5
  96. package/dist/{drawer-BJ8xwriz.mjs → drawer-Db2Mujc6.mjs} +208 -205
  97. package/dist/drawer-Db2Mujc6.mjs.map +1 -0
  98. package/dist/drawer-DlwagnO4.js +2 -0
  99. package/dist/drawer-DlwagnO4.js.map +1 -0
  100. package/dist/drawer.cjs.js +1 -1
  101. package/dist/drawer.es.js +1 -1
  102. package/dist/dropdown-CMO_VD5e.mjs +916 -0
  103. package/dist/dropdown-CMO_VD5e.mjs.map +1 -0
  104. package/dist/dropdown-DJKNQnuo.js +2 -0
  105. package/dist/dropdown-DJKNQnuo.js.map +1 -0
  106. package/dist/dropdown.cjs.js +1 -1
  107. package/dist/dropdown.es.js +1 -1
  108. package/dist/{footer-BXs8uzTA.mjs → footer-BLPlXaZK.mjs} +4 -4
  109. package/dist/{footer-BXs8uzTA.mjs.map → footer-BLPlXaZK.mjs.map} +1 -1
  110. package/dist/{footer-DF9adlni.js → footer-D9AcPwlH.js} +2 -2
  111. package/dist/{footer-DF9adlni.js.map → footer-D9AcPwlH.js.map} +1 -1
  112. package/dist/footer.cjs.js +1 -1
  113. package/dist/footer.es.js +1 -1
  114. package/dist/{hero-banner-BfxclVFT.js → hero-banner-D1A-_qou.js} +2 -2
  115. package/dist/{hero-banner-BfxclVFT.js.map → hero-banner-D1A-_qou.js.map} +1 -1
  116. package/dist/{hero-banner-CxPvhXD2.mjs → hero-banner-DkC_BqM7.mjs} +3 -3
  117. package/dist/{hero-banner-CxPvhXD2.mjs.map → hero-banner-DkC_BqM7.mjs.map} +1 -1
  118. package/dist/hero-banner.cjs.js +1 -1
  119. package/dist/hero-banner.es.js +1 -1
  120. package/dist/libraries/theme/src/theme-props.d.ts +1 -0
  121. package/dist/libraries/theme/src/theme-props.d.ts.map +1 -1
  122. package/dist/libraries/tokens/dist/color/variables.d.ts +1 -0
  123. package/dist/libraries/tokens/dist/color/variables.dark.d.ts +1 -0
  124. package/dist/library.cjs.js +1 -1
  125. package/dist/library.es.js +593 -590
  126. package/dist/listbox-ATP4hOWF.js +2 -0
  127. package/dist/listbox-ATP4hOWF.js.map +1 -0
  128. package/dist/listbox-i6BQQ-NZ.mjs +73 -0
  129. package/dist/listbox-i6BQQ-NZ.mjs.map +1 -0
  130. package/dist/listbox.cjs.js +1 -1
  131. package/dist/listbox.es.js +3 -2
  132. package/dist/modal-Baisuc6m.js +2 -0
  133. package/dist/modal-Baisuc6m.js.map +1 -0
  134. package/dist/modal-COZ1POGG.mjs +211 -0
  135. package/dist/modal-COZ1POGG.mjs.map +1 -0
  136. package/dist/modal.cjs.js +1 -1
  137. package/dist/modal.es.js +1 -1
  138. package/dist/{notification-BqjaT4E7.js → notification-B5bNNq86.js} +2 -2
  139. package/dist/{notification-BqjaT4E7.js.map → notification-B5bNNq86.js.map} +1 -1
  140. package/dist/{notification-DdRS5BF2.mjs → notification-BbQCmsnY.mjs} +2 -2
  141. package/dist/{notification-DdRS5BF2.mjs.map → notification-BbQCmsnY.mjs.map} +1 -1
  142. package/dist/notification.cjs.js +1 -1
  143. package/dist/notification.es.js +1 -1
  144. package/dist/{pagination-CVYUacXN.mjs → pagination-Cc_4zCQA.mjs} +2 -2
  145. package/dist/{pagination-CVYUacXN.mjs.map → pagination-Cc_4zCQA.mjs.map} +1 -1
  146. package/dist/{pagination-Bwlkvqye.js → pagination-rFRdkHII.js} +2 -2
  147. package/dist/{pagination-Bwlkvqye.js.map → pagination-rFRdkHII.js.map} +1 -1
  148. package/dist/pagination.cjs.js +1 -1
  149. package/dist/pagination.es.js +1 -1
  150. package/dist/paragraph-By4jMjnH.js +2 -0
  151. package/dist/{paragraph-BsI53OR0.js.map → paragraph-By4jMjnH.js.map} +1 -1
  152. package/dist/{paragraph-Ci50OF1u.mjs → paragraph-DSxXmX_0.mjs} +23 -23
  153. package/dist/{paragraph-Ci50OF1u.mjs.map → paragraph-DSxXmX_0.mjs.map} +1 -1
  154. package/dist/paragraph.cjs.js +1 -1
  155. package/dist/paragraph.es.js +1 -1
  156. package/dist/{popover-XCUa2GfC.js → popover-B0XJZ5mj.js} +2 -2
  157. package/dist/{popover-XCUa2GfC.js.map → popover-B0XJZ5mj.js.map} +1 -1
  158. package/dist/{popover-Dwqs1wGH.mjs → popover-_xJATlhN.mjs} +2 -2
  159. package/dist/{popover-Dwqs1wGH.mjs.map → popover-_xJATlhN.mjs.map} +1 -1
  160. package/dist/popover.cjs.js +1 -1
  161. package/dist/popover.es.js +1 -1
  162. package/dist/{product-card-BfB82XpS.mjs → product-card-C3_N0t-R.mjs} +3 -3
  163. package/dist/{product-card-BfB82XpS.mjs.map → product-card-C3_N0t-R.mjs.map} +1 -1
  164. package/dist/{product-card-bVQ7JhHj.js → product-card-CoY1KggV.js} +2 -2
  165. package/dist/{product-card-bVQ7JhHj.js.map → product-card-CoY1KggV.js.map} +1 -1
  166. package/dist/product-card.cjs.js +1 -1
  167. package/dist/product-card.es.js +1 -1
  168. package/dist/{promotion-card-DqBBt2sz.js → promotion-card-Bag64gqP.js} +2 -2
  169. package/dist/{promotion-card-DqBBt2sz.js.map → promotion-card-Bag64gqP.js.map} +1 -1
  170. package/dist/{promotion-card-BhNw94sC.mjs → promotion-card-BiHnQvhn.mjs} +4 -4
  171. package/dist/{promotion-card-BhNw94sC.mjs.map → promotion-card-BiHnQvhn.mjs.map} +1 -1
  172. package/dist/promotion-card.cjs.js +1 -1
  173. package/dist/promotion-card.es.js +1 -1
  174. package/dist/purpur.css +1 -1
  175. package/dist/quantity-selector-CDSfcTb1.js +2 -0
  176. package/dist/{quantity-selector-8AkKNDik.js.map → quantity-selector-CDSfcTb1.js.map} +1 -1
  177. package/dist/{quantity-selector-C23kU1hF.mjs → quantity-selector-CvBvnMeB.mjs} +35 -35
  178. package/dist/{quantity-selector-C23kU1hF.mjs.map → quantity-selector-CvBvnMeB.mjs.map} +1 -1
  179. package/dist/quantity-selector.cjs.js +1 -1
  180. package/dist/quantity-selector.es.js +1 -1
  181. package/dist/{radio-card-group-BlRZBa-9.mjs → radio-card-group-CneOprGY.mjs} +2 -2
  182. package/dist/{radio-card-group-BlRZBa-9.mjs.map → radio-card-group-CneOprGY.mjs.map} +1 -1
  183. package/dist/{radio-card-group-sYcfDPJq.js → radio-card-group-Ctuvg61o.js} +2 -2
  184. package/dist/{radio-card-group-sYcfDPJq.js.map → radio-card-group-Ctuvg61o.js.map} +1 -1
  185. package/dist/radio-card-group.cjs.js +1 -1
  186. package/dist/radio-card-group.es.js +1 -1
  187. package/dist/rich-text.cjs.js +1 -1
  188. package/dist/rich-text.es.js +1 -1
  189. package/dist/{search-field-CMBDkydb.mjs → search-field-CpkHGIYi.mjs} +57 -57
  190. package/dist/{search-field-CMBDkydb.mjs.map → search-field-CpkHGIYi.mjs.map} +1 -1
  191. package/dist/search-field-Z0PqDARl.js +2 -0
  192. package/dist/{search-field-CU_tsmHb.js.map → search-field-Z0PqDARl.js.map} +1 -1
  193. package/dist/search-field.cjs.js +1 -1
  194. package/dist/search-field.es.js +1 -1
  195. package/dist/{stepper-uBfDdIju.mjs → stepper-CNnx_NiR.mjs} +2 -2
  196. package/dist/{stepper-uBfDdIju.mjs.map → stepper-CNnx_NiR.mjs.map} +1 -1
  197. package/dist/{stepper-w-raIwqJ.js → stepper-Df4X7DDR.js} +2 -2
  198. package/dist/{stepper-w-raIwqJ.js.map → stepper-Df4X7DDR.js.map} +1 -1
  199. package/dist/stepper.cjs.js +1 -1
  200. package/dist/stepper.es.js +1 -1
  201. package/dist/{table-BVSBvTYG.js → table-DRYW0yw4.js} +2 -2
  202. package/dist/{table-BVSBvTYG.js.map → table-DRYW0yw4.js.map} +1 -1
  203. package/dist/{table-CuV3Gda_.mjs → table-DUY8kQfE.mjs} +6 -6
  204. package/dist/{table-CuV3Gda_.mjs.map → table-DUY8kQfE.mjs.map} +1 -1
  205. package/dist/table.cjs.js +1 -1
  206. package/dist/table.es.js +1 -1
  207. package/dist/{text-area-DDZ_GQPW.mjs → text-area-kJvg6cFp.mjs} +3 -3
  208. package/dist/{text-area-DDZ_GQPW.mjs.map → text-area-kJvg6cFp.mjs.map} +1 -1
  209. package/dist/{text-area-C6W0fDiQ.js → text-area-peNKG7g4.js} +2 -2
  210. package/dist/{text-area-C6W0fDiQ.js.map → text-area-peNKG7g4.js.map} +1 -1
  211. package/dist/text-area.cjs.js +1 -1
  212. package/dist/text-area.es.js +1 -1
  213. package/dist/theme.cjs.js +1 -1
  214. package/dist/theme.es.js +2 -2
  215. package/dist/toggle-B8ZLUVar.js +2 -0
  216. package/dist/{toggle-C8IwTbX8.js.map → toggle-B8ZLUVar.js.map} +1 -1
  217. package/dist/toggle-CY3J8BRX.mjs +302 -0
  218. package/dist/{toggle-D23x1wWk.mjs.map → toggle-CY3J8BRX.mjs.map} +1 -1
  219. package/dist/toggle.cjs.js +1 -1
  220. package/dist/toggle.es.js +1 -1
  221. package/dist/tokens/color/variables.css +1 -0
  222. package/dist/tokens/color/variables.d.ts +1 -0
  223. package/dist/tokens/color/variables.dark.css +1 -0
  224. package/dist/tokens/color/variables.dark.d.ts +1 -0
  225. package/dist/tokens/color/variables.dark.js +1 -0
  226. package/dist/tokens/color/variables.dark.json +2 -1
  227. package/dist/tokens/color/variables.dark.scss +1 -0
  228. package/dist/tokens/color/variables.js +1 -0
  229. package/dist/tokens/color/variables.json +2 -1
  230. package/dist/tokens/color/variables.scss +1 -0
  231. package/dist/tokens.cjs.js +1 -1
  232. package/dist/tokens.es.js +76 -75
  233. package/dist/{tooltip-0pLBlDG3.js → tooltip-C8Zxnqdb.js} +2 -2
  234. package/dist/{tooltip-0pLBlDG3.js.map → tooltip-C8Zxnqdb.js.map} +1 -1
  235. package/dist/{tooltip-Kom0VfOC.mjs → tooltip-VlURN8H3.mjs} +2 -2
  236. package/dist/{tooltip-Kom0VfOC.mjs.map → tooltip-VlURN8H3.mjs.map} +1 -1
  237. package/dist/tooltip.cjs.js +1 -1
  238. package/dist/tooltip.es.js +1 -1
  239. package/dist/use-autocomplete.es-BwAzMcau.js +2 -0
  240. package/dist/use-autocomplete.es-BwAzMcau.js.map +1 -0
  241. package/dist/{use-autocomplete.es-CVv3z8t6.mjs → use-autocomplete.es-CKb0RHKG.mjs} +37 -35
  242. package/dist/use-autocomplete.es-CKb0RHKG.mjs.map +1 -0
  243. package/dist/useColorScheme-DNyjsWX9.js +2 -0
  244. package/dist/{useColorScheme-0GMDl2GF.js.map → useColorScheme-DNyjsWX9.js.map} +1 -1
  245. package/dist/{useColorScheme-Di_Q0JR4.mjs → useColorScheme-tAkY9LHt.mjs} +2 -2
  246. package/dist/{useColorScheme-Di_Q0JR4.mjs.map → useColorScheme-tAkY9LHt.mjs.map} +1 -1
  247. package/dist/{variables-CKp4o9Tn.mjs → variables-B5hbV0Uy.mjs} +128 -127
  248. package/dist/variables-B5hbV0Uy.mjs.map +1 -0
  249. package/dist/variables-DoI78zZc.js +2 -0
  250. package/dist/variables-DoI78zZc.js.map +1 -0
  251. package/package.json +11 -11
  252. package/tokens/color/variables.css +1 -0
  253. package/tokens/color/variables.d.ts +1 -0
  254. package/tokens/color/variables.dark.css +1 -0
  255. package/tokens/color/variables.dark.d.ts +1 -0
  256. package/tokens/color/variables.dark.js +1 -0
  257. package/tokens/color/variables.dark.json +2 -1
  258. package/tokens/color/variables.dark.scss +1 -0
  259. package/tokens/color/variables.js +1 -0
  260. package/tokens/color/variables.json +2 -1
  261. package/tokens/color/variables.scss +1 -0
  262. package/dist/ThemeProvider-5r7lDX-h.js.map +0 -1
  263. package/dist/ThemeProvider-bkyFCeo6.mjs.map +0 -1
  264. package/dist/accordion-OsA0HvdA.js.map +0 -1
  265. package/dist/accordion-OtFSShSB.mjs.map +0 -1
  266. package/dist/checkbox-D6qWgpWR.mjs +0 -231
  267. package/dist/checkbox-D6qWgpWR.mjs.map +0 -1
  268. package/dist/checkbox-Dk3bZkZ3.js +0 -2
  269. package/dist/checkbox-Dk3bZkZ3.js.map +0 -1
  270. package/dist/comparison-table-B8w65g43.js.map +0 -1
  271. package/dist/comparison-table-D1zJpdLL.mjs.map +0 -1
  272. package/dist/dismissable-chip-group-Cd23yjBa.js +0 -2
  273. package/dist/dismissable-chip-group-Cd23yjBa.js.map +0 -1
  274. package/dist/dismissable-chip-group-D-gD93ON.mjs +0 -89
  275. package/dist/dismissable-chip-group-D-gD93ON.mjs.map +0 -1
  276. package/dist/drawer-BJ8xwriz.mjs.map +0 -1
  277. package/dist/drawer-CNs9K8Ca.js +0 -2
  278. package/dist/drawer-CNs9K8Ca.js.map +0 -1
  279. package/dist/dropdown-BsqVnd7z.js +0 -2
  280. package/dist/dropdown-BsqVnd7z.js.map +0 -1
  281. package/dist/dropdown-TO3Mh0bk.mjs +0 -910
  282. package/dist/dropdown-TO3Mh0bk.mjs.map +0 -1
  283. package/dist/listbox-COBHLRtB.js +0 -2
  284. package/dist/listbox-COBHLRtB.js.map +0 -1
  285. package/dist/listbox-DG4KmQP_.mjs +0 -66
  286. package/dist/listbox-DG4KmQP_.mjs.map +0 -1
  287. package/dist/modal-DCfN6q8I.mjs +0 -201
  288. package/dist/modal-DCfN6q8I.mjs.map +0 -1
  289. package/dist/modal-DZIdw9xy.js +0 -2
  290. package/dist/modal-DZIdw9xy.js.map +0 -1
  291. package/dist/paragraph-BsI53OR0.js +0 -2
  292. package/dist/quantity-selector-8AkKNDik.js +0 -2
  293. package/dist/search-field-CU_tsmHb.js +0 -2
  294. package/dist/toggle-C8IwTbX8.js +0 -2
  295. package/dist/toggle-D23x1wWk.mjs +0 -287
  296. package/dist/use-autocomplete.es-BHDgQLae.js +0 -2
  297. package/dist/use-autocomplete.es-BHDgQLae.js.map +0 -1
  298. package/dist/use-autocomplete.es-CVv3z8t6.mjs.map +0 -1
  299. package/dist/useColorScheme-0GMDl2GF.js +0 -2
  300. package/dist/variables-CKp4o9Tn.mjs.map +0 -1
  301. package/dist/variables-DH61hVNE.js +0 -2
  302. package/dist/variables-DH61hVNE.js.map +0 -1
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./carousel-BCw-5u92.js");exports.Carousel=e.Carousel;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./carousel-DXrtxRz5.js");exports.Carousel=e.Carousel;
2
2
  //# sourceMappingURL=carousel.cjs.js.map
@@ -1,4 +1,4 @@
1
- import { C as a } from "./carousel-BkxojLwn.mjs";
1
+ import { C as a } from "./carousel-DLkTL9sj.mjs";
2
2
  export {
3
3
  a as Carousel
4
4
  };
@@ -0,0 +1,236 @@
1
+ import { jsxs as v, jsx as t } from "react/jsx-runtime";
2
+ import * as u from "react";
3
+ import { forwardRef as M } from "react";
4
+ import { F as B } from "./field-error-text-CBSX8dGx.mjs";
5
+ import { F as O } from "./field-helper-text-C5ee4SFV.mjs";
6
+ import { b as $ } from "./icon.es-CZcKxTaM.mjs";
7
+ import { l as j } from "./checkmark-bold.es-CV3e_t3E.mjs";
8
+ import { L as q } from "./label-7sJe5-pX.mjs";
9
+ import { P as A } from "./paragraph-DSxXmX_0.mjs";
10
+ import { u as K } from "./index-DLcqcWxM.mjs";
11
+ import { c as X } from "./index-DOfn3ixy.mjs";
12
+ import { u as Z, c as R, a as G } from "./index-tyLV0iiH.mjs";
13
+ import { u as J } from "./index-DPxjTK4w.mjs";
14
+ import { P as Q } from "./index-C1AXAWlO.mjs";
15
+ import { P as N } from "./index-CCNZ9uWB.mjs";
16
+ import { c as U } from "./bind-CU-R61T-.mjs";
17
+ const V = {
18
+ name: "minus-bold",
19
+ 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>',
20
+ keywords: ["minus-bold"],
21
+ category: "utility"
22
+ };
23
+ var P = "Checkbox", [W] = X(P), [Y, I] = W(P), S = u.forwardRef(
24
+ (e, s) => {
25
+ const {
26
+ __scopeCheckbox: r,
27
+ name: d,
28
+ checked: l,
29
+ defaultChecked: o,
30
+ required: p,
31
+ disabled: c,
32
+ value: _ = "on",
33
+ onCheckedChange: n,
34
+ form: h,
35
+ ...k
36
+ } = e, [b, z] = u.useState(null), y = K(s, (a) => z(a)), g = u.useRef(!1), E = b ? h || !!b.closest("form") : !0, [x = !1, w] = Z({
37
+ prop: l,
38
+ defaultProp: o,
39
+ onChange: n
40
+ }), L = u.useRef(x);
41
+ return u.useEffect(() => {
42
+ const a = b?.form;
43
+ if (a) {
44
+ const C = () => w(L.current);
45
+ return a.addEventListener("reset", C), () => a.removeEventListener("reset", C);
46
+ }
47
+ }, [b, w]), /* @__PURE__ */ v(Y, { scope: r, state: x, disabled: c, children: [
48
+ /* @__PURE__ */ t(
49
+ N.button,
50
+ {
51
+ type: "button",
52
+ role: "checkbox",
53
+ "aria-checked": m(x) ? "mixed" : x,
54
+ "aria-required": p,
55
+ "data-state": H(x),
56
+ "data-disabled": c ? "" : void 0,
57
+ disabled: c,
58
+ value: _,
59
+ ...k,
60
+ ref: y,
61
+ onKeyDown: R(e.onKeyDown, (a) => {
62
+ a.key === "Enter" && a.preventDefault();
63
+ }),
64
+ onClick: R(e.onClick, (a) => {
65
+ w((C) => m(C) ? !0 : !C), E && (g.current = a.isPropagationStopped(), g.current || a.stopPropagation());
66
+ })
67
+ }
68
+ ),
69
+ E && /* @__PURE__ */ t(
70
+ T,
71
+ {
72
+ control: b,
73
+ bubbles: !g.current,
74
+ name: d,
75
+ value: _,
76
+ checked: x,
77
+ required: p,
78
+ disabled: c,
79
+ form: h,
80
+ style: { transform: "translateX(-100%)" },
81
+ defaultChecked: m(o) ? !1 : o
82
+ }
83
+ )
84
+ ] });
85
+ }
86
+ );
87
+ S.displayName = P;
88
+ var F = "CheckboxIndicator", D = u.forwardRef(
89
+ (e, s) => {
90
+ const { __scopeCheckbox: r, forceMount: d, ...l } = e, o = I(F, r);
91
+ return /* @__PURE__ */ t(Q, { present: d || m(o.state) || o.state === !0, children: /* @__PURE__ */ t(
92
+ N.span,
93
+ {
94
+ "data-state": H(o.state),
95
+ "data-disabled": o.disabled ? "" : void 0,
96
+ ...l,
97
+ ref: s,
98
+ style: { pointerEvents: "none", ...e.style }
99
+ }
100
+ ) });
101
+ }
102
+ );
103
+ D.displayName = F;
104
+ var T = (e) => {
105
+ const { control: s, checked: r, bubbles: d = !0, defaultChecked: l, ...o } = e, p = u.useRef(null), c = G(r), _ = J(s);
106
+ u.useEffect(() => {
107
+ const h = p.current, k = window.HTMLInputElement.prototype, z = Object.getOwnPropertyDescriptor(k, "checked").set;
108
+ if (c !== r && z) {
109
+ const y = new Event("click", { bubbles: d });
110
+ h.indeterminate = m(r), z.call(h, m(r) ? !1 : r), h.dispatchEvent(y);
111
+ }
112
+ }, [c, r, d]);
113
+ const n = u.useRef(m(r) ? !1 : r);
114
+ return /* @__PURE__ */ t(
115
+ "input",
116
+ {
117
+ type: "checkbox",
118
+ "aria-hidden": !0,
119
+ defaultChecked: l ?? n.current,
120
+ ...o,
121
+ tabIndex: -1,
122
+ ref: p,
123
+ style: {
124
+ ...e.style,
125
+ ..._,
126
+ position: "absolute",
127
+ pointerEvents: "none",
128
+ opacity: 0,
129
+ margin: 0
130
+ }
131
+ }
132
+ );
133
+ };
134
+ function m(e) {
135
+ return e === "indeterminate";
136
+ }
137
+ function H(e) {
138
+ return m(e) ? "indeterminate" : e ? "checked" : "unchecked";
139
+ }
140
+ var ee = S, re = D;
141
+ const te = {
142
+ "purpur-checkbox": "_purpur-checkbox_1u1zz_1",
143
+ "purpur-checkbox__box": "_purpur-checkbox__box_1u1zz_7",
144
+ "purpur-checkbox--error": "_purpur-checkbox--error_1u1zz_16",
145
+ "purpur-checkbox--error-checkbox": "_purpur-checkbox--error-checkbox_1u1zz_16",
146
+ "purpur-checkbox--negative": "_purpur-checkbox--negative_1u1zz_49",
147
+ "purpur-checkbox__indicator": "_purpur-checkbox__indicator_1u1zz_80",
148
+ "purpur-checkbox__label-container": "_purpur-checkbox__label-container_1u1zz_107",
149
+ "purpur-checkbox__wrapper": "_purpur-checkbox__wrapper_1u1zz_113",
150
+ "purpur-checkbox__container": "_purpur-checkbox__container_1u1zz_119"
151
+ }, f = U.bind(te), xe = ["indeterminate", !0, !1], i = "purpur-checkbox", oe = M(
152
+ ({
153
+ ["data-testid"]: e,
154
+ checked: s,
155
+ className: r,
156
+ error: d = !1,
157
+ errorText: l,
158
+ label: o,
159
+ helperText: p,
160
+ negative: c = !1,
161
+ onChange: _,
162
+ ...n
163
+ }, h) => {
164
+ const k = l && !s, b = d && !s;
165
+ return /* @__PURE__ */ v("div", { className: f([`${i}__wrapper`, r]), children: [
166
+ /* @__PURE__ */ v("div", { className: f([`${i}__container`, r]), children: [
167
+ /* @__PURE__ */ t(
168
+ ee,
169
+ {
170
+ ...n,
171
+ checked: s,
172
+ className: f([
173
+ i,
174
+ {
175
+ [`${i}--error`]: k,
176
+ [`${i}--error-checkbox`]: b,
177
+ [`${i}--negative`]: c
178
+ }
179
+ ]),
180
+ "data-testid": e,
181
+ onCheckedChange: _,
182
+ ref: h,
183
+ children: /* @__PURE__ */ t("span", { className: f(`${i}__box`), children: /* @__PURE__ */ t(re, { className: f(`${i}__indicator`), children: s === "indeterminate" ? /* @__PURE__ */ t(
184
+ $,
185
+ {
186
+ "data-testid": e && `${e}-checked-icon`,
187
+ size: "xs",
188
+ svg: V
189
+ }
190
+ ) : /* @__PURE__ */ t(
191
+ $,
192
+ {
193
+ "data-testid": e && `${e}-indeterminate-icon`,
194
+ size: "xs",
195
+ svg: j
196
+ }
197
+ ) }) })
198
+ }
199
+ ),
200
+ /* @__PURE__ */ v("span", { className: f(`${i}__label-container`), children: [
201
+ o && /* @__PURE__ */ t(
202
+ q,
203
+ {
204
+ htmlFor: n.id,
205
+ "data-testid": e && `${e}-label`,
206
+ disabled: n.disabled,
207
+ negative: c,
208
+ children: /* @__PURE__ */ v(A, { variant: "paragraph-100", disabled: n.disabled, negative: c, children: [
209
+ n.required && /* @__PURE__ */ t("span", { "aria-hidden": !0, children: "* " }),
210
+ o
211
+ ] })
212
+ }
213
+ ),
214
+ p && /* @__PURE__ */ t(
215
+ O,
216
+ {
217
+ className: f(`${i}__helper`),
218
+ "data-testid": e && `${e}-helper-text`,
219
+ disabled: n.disabled,
220
+ id: `${n.id}-helper-text`,
221
+ negative: c,
222
+ children: p
223
+ }
224
+ )
225
+ ] })
226
+ ] }),
227
+ k && /* @__PURE__ */ t(B, { "data-testid": e && `${e}-error-text`, negative: c, children: l })
228
+ ] });
229
+ }
230
+ );
231
+ oe.displayName = "Checkbox";
232
+ export {
233
+ oe as C,
234
+ xe as c
235
+ };
236
+ //# sourceMappingURL=checkbox-BHTx89JQ.mjs.map
@@ -0,0 +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]}
@@ -0,0 +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
@@ -0,0 +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,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./checkbox-Dk3bZkZ3.js");exports.Checkbox=e.Checkbox;exports.checkedState=e.checkedState;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./checkbox-CDNcNv6d.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-D6qWgpWR.mjs";
1
+ import { C as a, c as o } from "./checkbox-BHTx89JQ.mjs";
2
2
  export {
3
3
  a as Checkbox,
4
4
  o as checkedState
@@ -1,2 +1,2 @@
1
- "use strict";const r=require("react/jsx-runtime"),u=require("react"),I=require("./bind-DeUYJ6m9.js"),L=require("./checkmark.es-lYntWFA3.js"),F=require("./minus.es-DtXArdKK.js"),R=require("./chevron-down.es-BMjgiS3F.js"),S=require("./paragraph-BsI53OR0.js"),O=require("./badge-CQ0SS_t8.js"),D=require("./button-DmybVApa.js"),B=require("./heading-drD5ugCC.js"),V=require("./arrow-left.es-CCWJyrcQ.js"),H=require("./arrow-right.es-eH-IgGi9.js"),K={"purpur-comparison-table__wrapper":"_purpur-comparison-table__wrapper_7fqf9_1","purpur-comparison-table":"_purpur-comparison-table_7fqf9_1","purpur-comparison-table--primary":"_purpur-comparison-table--primary_7fqf9_11","purpur-comparison-table--secondary":"_purpur-comparison-table--secondary_7fqf9_15","purpur-comparison-table__feature-row":"_purpur-comparison-table__feature-row_7fqf9_32","purpur-comparison-table__cards":"_purpur-comparison-table__cards_7fqf9_32","purpur-comparison-table__separator":"_purpur-comparison-table__separator_7fqf9_48"},W={"purpur-comparison-table-cell":"_purpur-comparison-table-cell_urc3p_1","purpur-comparison-table-cell--check":"_purpur-comparison-table-cell--check_urc3p_15","purpur-comparison-table-cell--minus":"_purpur-comparison-table-cell--minus_urc3p_18","purpur-comparison-table-cell__icon":"_purpur-comparison-table-cell__icon_urc3p_21"},T=I.c.bind(W),z="purpur-comparison-table-cell",G=({value:a})=>{const t=u.isValidElement(a)||["string","number"].includes(typeof a),m=T(z,[t?"":`${z}--${a?"check":"minus"}`]),c=a?L.a:F.e;return r.jsx("span",{className:T(m),children:t?a:r.jsx(c,{size:"xs",className:T(`${z}__icon`)})})},J={"purpur-comparison-table-lead-cell":"_purpur-comparison-table-lead-cell_1vild_1","purpur-comparison-table-lead-cell__description":"_purpur-comparison-table-lead-cell__description_1vild_5","purpur-comparison-table-lead-cell__summary":"_purpur-comparison-table-lead-cell__summary_1vild_40","purpur-comparison-table-lead-cell__summary-title":"_purpur-comparison-table-lead-cell__summary-title_1vild_48","purpur-comparison-table-lead-cell__summary-icon":"_purpur-comparison-table-lead-cell__summary-icon_1vild_51"},C=I.c.bind(J),k="purpur-comparison-table-lead-cell",Q=({title:a,description:t})=>{const i=typeof t=="string",m=C(k);return r.jsxs("details",{className:m,"data-is-expandable":i,children:[r.jsxs("summary",{className:C(`${k}__summary`),tabIndex:i?0:-1,children:[r.jsx(S.Paragraph,{className:C(`${k}__summary-title`),variant:"paragraph-100-bold",children:a}),r.jsx(R.l,{className:C(`${k}__summary-icon`),size:"sm"})]}),t&&r.jsx(S.Paragraph,{variant:"paragraph-100",className:C(`${k}__description`),children:t})]})},U={"purpur-comparison-table-option-card":"_purpur-comparison-table-option-card_1papu_1","purpur-comparison-table-option-card--highlighted":"_purpur-comparison-table-option-card--highlighted_1papu_11","purpur-comparison-table-option-card__badge":"_purpur-comparison-table-option-card__badge_1papu_14","purpur-comparison-table-option-card__main-content":"_purpur-comparison-table-option-card__main-content_1papu_19","purpur-comparison-table-option-card__image":"_purpur-comparison-table-option-card__image_1papu_25","purpur-comparison-table-option-card__body":"_purpur-comparison-table-option-card__body_1papu_31","purpur-comparison-table-option-card__description":"_purpur-comparison-table-option-card__description_1papu_36","purpur-comparison-table-option-card__description-text":"_purpur-comparison-table-option-card__description-text_1papu_41","purpur-comparison-table-option-card__read-more":"_purpur-comparison-table-option-card__read-more_1papu_50","purpur-comparison-table-option-card__read-more-icon":"_purpur-comparison-table-option-card__read-more-icon_1papu_54","purpur-comparison-table-option-card__footer":"_purpur-comparison-table-option-card__footer_1papu_62","purpur-comparison-table-option-card__price":"_purpur-comparison-table-option-card__price_1papu_67","purpur-comparison-table-option-card--show-full-descriptions":"_purpur-comparison-table-option-card--show-full-descriptions_1papu_74","purpur-comparison-table-option-card--first-card":"_purpur-comparison-table-option-card--first-card_1papu_107"},_=I.c.bind(U),l="purpur-comparison-table-option-card",X=({id:a,description:t,variablePriceText:i,price:m,isHighlighted:c,ariaLabels:g,badge:h,actions:f,isFirstCard:N,image:x,title:w,showFullDescriptions:e,toggleShowFullDescriptions:p})=>{const d=_(l,{[`${l}--highlighted`]:c,[`${l}--first-card`]:N,[`${l}--show-full-descriptions`]:e}),b=()=>{if(!t)return null;const n=t.length>50;return r.jsxs("div",{className:_(`${l}__description`),children:[r.jsx(S.Paragraph,{variant:"paragraph-100",className:_(`${l}__description-text`),children:t}),n&&r.jsxs(D.Button,{variant:"text",size:"xs",className:_(`${l}__read-more`),onClick:p,children:[r.jsx("span",{className:_(`${l}__read-more-text`),children:e?g.readLess:g.readMore}),r.jsx(R.l,{className:_(`${l}__read-more-icon`),size:"xs"})]})]})};return r.jsxs("article",{className:d,"data-card-id":a,children:[h&&r.jsx(O.Badge,{...h,className:_(`${l}__badge`)}),r.jsxs("section",{className:_(`${l}__main-content`),children:[r.jsx("img",{src:x.src,alt:x.alt,className:_(`${l}__image`)}),r.jsxs("div",{className:_(`${l}__body`),children:[r.jsx(B.Heading,{tag:"h3",variant:"title-200",className:_(`${l}__title`),children:w}),b()]})]}),r.jsxs("footer",{className:_(`${l}__footer`),children:[r.jsxs("span",{className:_(`${l}__price`),id:a,children:[r.jsx(S.Paragraph,{variant:"paragraph-100",children:i}),r.jsx(S.Paragraph,{variant:"paragraph-100-bold",children:m})]}),f]})]})},Y="_active_ggi6x_44",Z={"purpur-comparison-table-scroll-progress":"_purpur-comparison-table-scroll-progress_ggi6x_1","purpur-comparison-table-scroll-progress__indicators":"_purpur-comparison-table-scroll-progress__indicators_ggi6x_15","purpur-comparison-table-scroll-progress__indicator":"_purpur-comparison-table-scroll-progress__indicator_ggi6x_15",active:Y,"purpur-comparison-table-scroll-progress__buttons":"_purpur-comparison-table-scroll-progress__buttons_ggi6x_48","purpur-comparison-table-scroll-progress__button":"_purpur-comparison-table-scroll-progress__button_ggi6x_48","purpur-comparison-table-scroll-progress__button-icon":"_purpur-comparison-table-scroll-progress__button-icon_ggi6x_57"},$=I.c.bind(Z),y="purpur-comparison-table-scroll-progress",rr=({items:a,container:t,parentId:i,ariaLabels:m})=>{const[c,g]=u.useState(new Set),h=u.useCallback(e=>{const p=window.matchMedia("(prefers-reduced-motion: reduce)").matches;document.querySelector(`[data-card-id="${e}-${i}"]`)?.scrollIntoView({behavior:p?"instant":"smooth",block:"nearest"})},[i]),f=u.useCallback(()=>{if(c.size===0)return;const p=Math.min(...Array.from(c))-1;p<0||h(p)},[c,h]),N=u.useCallback(()=>{if(c.size===0)return;const p=Math.max(...Array.from(c))+1;p>=a.length||h(p)},[c,a.length,h]),x=u.useCallback(e=>{(e.key==="ArrowRight"||e.key==="ArrowLeft")&&(e.preventDefault(),e.key==="ArrowRight"?N():e.key==="ArrowLeft"&&f())},[N,f]);u.useEffect(()=>{const e=t.current;if(!e)return;const p=new IntersectionObserver(d=>{g(b=>{const o=new Set(b);return d.forEach(n=>{let s=n.target.getAttribute("data-card-id")?.match(new RegExp(`(\\d+)-${i}`))?.[1];s&&(s=parseInt(s,10),n.isIntersecting?o.add(s):o.delete(s))}),o})},{root:e,threshold:.5});return a.forEach((d,b)=>{const o=document.querySelector(`[data-card-id="${b}-${i}"]`);o&&p.observe(o)}),()=>p.disconnect()},[t,a,i]),u.useEffect(()=>{const e=t.current;if(e)return e.addEventListener("keydown",x),()=>e.removeEventListener("keydown",x)},[t,x]);const w=()=>{if(c.size===0)return;const e=[],p=c.size,d=Math.min(...Array.from(c)),b=a.slice(0,d).length,o=a.slice(d+p).length;let n=0;for(let s=0;s<a.length;s++){if(b+1!==s&&b<=s&&s<a.length-o)continue;let j="active";(s<b||s>a.length-1-o)&&(j=""),e.push(r.jsx("li",{className:$(`${y}__indicator`,j)},`indicator-${n++}`))}return e.length<2?null:e};return r.jsxs("li",{className:$(y),children:[r.jsx("ul",{className:$(`${y}__indicators`),children:w()}),r.jsxs("div",{className:$(`${y}__buttons`),children:[r.jsx(D.Button,{"aria-label":m.previous,variant:"secondary",iconOnly:!0,className:$(`${y}__button`),disabled:c.has(0),onClick:f,children:r.jsx(V.l,{className:$(`${y}__button-icon`),size:"xs"})}),r.jsx(D.Button,{"aria-label":m.next,variant:"secondary",iconOnly:!0,className:$(`${y}__button`),disabled:c.has(a.length-1),onClick:N,children:r.jsx(H.i,{className:$(`${y}__button-icon`),size:"xs"})})]})]})},q=I.c.bind(K),v="purpur-comparison-table",A=({classname:a,features:t,items:i,ariaLabels:m,variant:c="primary"})=>{const g=u.useId(),h=q(a,v,`${v}--${c}`),f=u.useRef(null),[N,x]=u.useState(!1),w=u.useCallback(()=>{x(o=>!o)},[]),e=()=>r.jsxs("li",{className:q(`${v}__cards`),children:[r.jsx("div",{className:q(`${v}__separator`)}),i.map((o,n)=>u.createElement(X,{...o,showFullDescriptions:N,toggleShowFullDescriptions:w,key:n,isFirstCard:n===0,ariaLabels:m,id:`${n}-${g}`}))]}),p=()=>Object.entries(t).map(([o,n],s)=>r.jsxs("li",{className:q(`${v}__feature-row`),children:[r.jsx(Q,{title:o,description:n}),i.map((j,E)=>r.jsx(G,{value:j.features[o]??!1},E))]},s)),d=u.useRef(0),b=o=>{const n=o.currentTarget,s=n.querySelector("[data-card-id]")?.clientWidth??0,j=Math.round(n.scrollLeft/s),E=j*s+j,M=o.timeStamp-d.current,P=Math.abs(n.scrollLeft-E);d.current&&M<200||P<10||(d.current=o.timeStamp,n.scrollTo({left:E,behavior:"smooth"}))};return r.jsx("div",{className:q(v+"__wrapper"),children:r.jsxs("ul",{id:v+`-${g}`,ref:f,className:h,onScrollEnd:b,style:{"--initial-columns":i.length+1},children:[r.jsx(rr,{items:i,container:f,ariaLabels:m,parentId:CSS.escape(g)}),e(),p()]})})};A.displayName="ComparisonTable";exports.ComparisonTable=A;
2
- //# sourceMappingURL=comparison-table-B8w65g43.js.map
1
+ "use strict";const r=require("react/jsx-runtime"),u=require("react"),I=require("./bind-DeUYJ6m9.js"),L=require("./checkmark.es-lYntWFA3.js"),F=require("./minus.es-DtXArdKK.js"),R=require("./chevron-down.es-BMjgiS3F.js"),q=require("./paragraph-By4jMjnH.js"),O=require("./badge-CQ0SS_t8.js"),D=require("./button-DmybVApa.js"),B=require("./heading-drD5ugCC.js"),V=require("./arrow-left.es-CCWJyrcQ.js"),H=require("./arrow-right.es-eH-IgGi9.js"),K={"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"},W={"purpur-comparison-table-cell":"_purpur-comparison-table-cell_117pb_1","purpur-comparison-table-cell--check":"_purpur-comparison-table-cell--check_117pb_16","purpur-comparison-table-cell--minus":"_purpur-comparison-table-cell--minus_117pb_19","purpur-comparison-table-cell__icon":"_purpur-comparison-table-cell__icon_117pb_22"},T=I.c.bind(W),z="purpur-comparison-table-cell",G=({value:a})=>{const t=u.isValidElement(a)||["string","number"].includes(typeof a),m=T(z,[t?"":`${z}--${a?"check":"minus"}`]),c=a?L.a:F.e;return r.jsx("span",{className:T(m),children:t?a:r.jsx(c,{size:"xs",className:T(`${z}__icon`)})})},J={"purpur-comparison-table-lead-cell":"_purpur-comparison-table-lead-cell_1vild_1","purpur-comparison-table-lead-cell__description":"_purpur-comparison-table-lead-cell__description_1vild_5","purpur-comparison-table-lead-cell__summary":"_purpur-comparison-table-lead-cell__summary_1vild_40","purpur-comparison-table-lead-cell__summary-title":"_purpur-comparison-table-lead-cell__summary-title_1vild_48","purpur-comparison-table-lead-cell__summary-icon":"_purpur-comparison-table-lead-cell__summary-icon_1vild_51"},k=I.c.bind(J),C="purpur-comparison-table-lead-cell",Q=({title:a,description:t})=>{const i=typeof t=="string",m=k(C);return r.jsxs("details",{className:m,"data-is-expandable":i,children:[r.jsxs("summary",{className:k(`${C}__summary`),tabIndex:i?0:-1,children:[r.jsx(q.Paragraph,{className:k(`${C}__summary-title`),variant:"paragraph-100-bold",children:a}),r.jsx(R.l,{className:k(`${C}__summary-icon`),size:"sm"})]}),t&&r.jsx(q.Paragraph,{variant:"paragraph-100",className:k(`${C}__description`),children:t})]})},U={"purpur-comparison-table-option-card":"_purpur-comparison-table-option-card_1papu_1","purpur-comparison-table-option-card--highlighted":"_purpur-comparison-table-option-card--highlighted_1papu_11","purpur-comparison-table-option-card__badge":"_purpur-comparison-table-option-card__badge_1papu_14","purpur-comparison-table-option-card__main-content":"_purpur-comparison-table-option-card__main-content_1papu_19","purpur-comparison-table-option-card__image":"_purpur-comparison-table-option-card__image_1papu_25","purpur-comparison-table-option-card__body":"_purpur-comparison-table-option-card__body_1papu_31","purpur-comparison-table-option-card__description":"_purpur-comparison-table-option-card__description_1papu_36","purpur-comparison-table-option-card__description-text":"_purpur-comparison-table-option-card__description-text_1papu_41","purpur-comparison-table-option-card__read-more":"_purpur-comparison-table-option-card__read-more_1papu_50","purpur-comparison-table-option-card__read-more-icon":"_purpur-comparison-table-option-card__read-more-icon_1papu_54","purpur-comparison-table-option-card__footer":"_purpur-comparison-table-option-card__footer_1papu_62","purpur-comparison-table-option-card__price":"_purpur-comparison-table-option-card__price_1papu_67","purpur-comparison-table-option-card--show-full-descriptions":"_purpur-comparison-table-option-card--show-full-descriptions_1papu_74","purpur-comparison-table-option-card--first-card":"_purpur-comparison-table-option-card--first-card_1papu_107"},_=I.c.bind(U),l="purpur-comparison-table-option-card",X=({id:a,description:t,variablePriceText:i,price:m,isHighlighted:c,ariaLabels:g,badge:h,actions:x,isFirstCard:y,image:f,title:w,showFullDescriptions:e,toggleShowFullDescriptions:p})=>{const d=_(l,{[`${l}--highlighted`]:c,[`${l}--first-card`]:y,[`${l}--show-full-descriptions`]:e}),b=()=>{if(!t)return null;const n=t.length>50;return r.jsxs("div",{className:_(`${l}__description`),children:[r.jsx(q.Paragraph,{variant:"paragraph-100",className:_(`${l}__description-text`),children:t}),n&&r.jsxs(D.Button,{variant:"text",size:"xs",className:_(`${l}__read-more`),onClick:p,children:[r.jsx("span",{className:_(`${l}__read-more-text`),children:e?g.readLess:g.readMore}),r.jsx(R.l,{className:_(`${l}__read-more-icon`),size:"xs"})]})]})};return r.jsxs("article",{className:d,"data-card-id":a,children:[h&&r.jsx(O.Badge,{...h,className:_(`${l}__badge`)}),r.jsxs("section",{className:_(`${l}__main-content`),children:[r.jsx("img",{src:f.src,alt:f.alt,className:_(`${l}__image`)}),r.jsxs("div",{className:_(`${l}__body`),children:[r.jsx(B.Heading,{tag:"h3",variant:"title-200",className:_(`${l}__title`),children:w}),b()]})]}),r.jsxs("footer",{className:_(`${l}__footer`),children:[r.jsxs("span",{className:_(`${l}__price`),id:a,children:[r.jsx(q.Paragraph,{variant:"paragraph-100",children:i}),r.jsx(q.Paragraph,{variant:"paragraph-100-bold",children:m})]}),x]})]})},Y="_active_1v9i8_44",Z={"purpur-comparison-table-scroll-progress":"_purpur-comparison-table-scroll-progress_1v9i8_1","purpur-comparison-table-scroll-progress__indicators":"_purpur-comparison-table-scroll-progress__indicators_1v9i8_15","purpur-comparison-table-scroll-progress__indicator":"_purpur-comparison-table-scroll-progress__indicator_1v9i8_15",active:Y,"purpur-comparison-table-scroll-progress__buttons":"_purpur-comparison-table-scroll-progress__buttons_1v9i8_48","purpur-comparison-table-scroll-progress__button":"_purpur-comparison-table-scroll-progress__button_1v9i8_48","purpur-comparison-table-scroll-progress__button-icon":"_purpur-comparison-table-scroll-progress__button-icon_1v9i8_57"},$=I.c.bind(Z),j="purpur-comparison-table-scroll-progress",rr=({items:a,container:t,parentId:i,ariaLabels:m})=>{const[c,g]=u.useState(new Set),h=u.useCallback(e=>{const p=window.matchMedia("(prefers-reduced-motion: reduce)").matches;document.querySelector(`[data-card-id="${e}-${i}"]`)?.scrollIntoView({behavior:p?"instant":"smooth",block:"nearest"})},[i]),x=u.useCallback(()=>{if(c.size===0)return;const p=Math.min(...Array.from(c))-1;p<0||h(p)},[c,h]),y=u.useCallback(()=>{if(c.size===0)return;const p=Math.max(...Array.from(c))+1;p>=a.length||h(p)},[c,a.length,h]),f=u.useCallback(e=>{(e.key==="ArrowRight"||e.key==="ArrowLeft")&&(e.preventDefault(),e.key==="ArrowRight"?y():e.key==="ArrowLeft"&&x())},[y,x]);u.useEffect(()=>{const e=t.current;if(!e)return;const p=new IntersectionObserver(d=>{g(b=>{const o=new Set(b);return d.forEach(n=>{let s=n.target.getAttribute("data-card-id")?.match(new RegExp(`(\\d+)-${i}`))?.[1];s&&(s=parseInt(s,10),n.isIntersecting?o.add(s):o.delete(s))}),o})},{root:e,threshold:.5});return a.forEach((d,b)=>{const o=document.querySelector(`[data-card-id="${b}-${i}"]`);o&&p.observe(o)}),()=>p.disconnect()},[t,a,i]),u.useEffect(()=>{const e=t.current;if(e)return e.addEventListener("keydown",f),()=>e.removeEventListener("keydown",f)},[t,f]);const w=()=>{if(c.size===0)return;const e=[],p=c.size,d=Math.min(...Array.from(c)),b=a.slice(0,d).length,o=a.slice(d+p).length;let n=0;for(let s=0;s<a.length;s++){if(b+1!==s&&b<=s&&s<a.length-o)continue;let v="active";(s<b||s>a.length-1-o)&&(v=""),e.push(r.jsx("li",{className:$(`${j}__indicator`,v)},`indicator-${n++}`))}return e.length<2?null:e};return r.jsxs("li",{className:$(j),children:[r.jsx("ul",{className:$(`${j}__indicators`),children:w()}),r.jsxs("div",{className:$(`${j}__buttons`),children:[r.jsx(D.Button,{"aria-label":m.previous,variant:"secondary",iconOnly:!0,className:$(`${j}__button`),disabled:c.has(0),onClick:x,children:r.jsx(V.l,{className:$(`${j}__button-icon`),size:"xs"})}),r.jsx(D.Button,{"aria-label":m.next,variant:"secondary",iconOnly:!0,className:$(`${j}__button`),disabled:c.has(a.length-1),onClick:y,children:r.jsx(H.i,{className:$(`${j}__button-icon`),size:"xs"})})]})]})},S=I.c.bind(K),N="purpur-comparison-table",A=({classname:a,features:t,items:i,ariaLabels:m,variant:c="primary"})=>{const g=u.useId(),h=S(a,N,`${N}--${c}`),x=u.useRef(null),[y,f]=u.useState(!1),w=u.useCallback(()=>{f(o=>!o)},[]),e=()=>r.jsxs("li",{className:S(`${N}__cards`),children:[r.jsx("div",{className:S(`${N}__separator`)}),i.map((o,n)=>u.createElement(X,{...o,showFullDescriptions:y,toggleShowFullDescriptions:w,key:n,isFirstCard:n===0,ariaLabels:m,id:`${n}-${g}`}))]}),p=()=>Object.entries(t).map(([o,n],s)=>r.jsxs("li",{className:S(`${N}__feature-row`),children:[r.jsx(Q,{title:o,description:n}),i.map((v,E)=>r.jsx(G,{value:v.features[o]??!1},E))]},s)),d=u.useRef(0),b=o=>{const n=o.currentTarget,s=n.querySelector("[data-card-id]")?.clientWidth??0,v=Math.round(n.scrollLeft/s),E=v*s+v,M=o.timeStamp-d.current,P=Math.abs(n.scrollLeft-E);d.current&&M<200||P<10||(d.current=o.timeStamp,n.scrollTo({left:E,behavior:"smooth"}))};return r.jsx("div",{className:S(N+"__wrapper"),children:r.jsxs("ul",{id:N+`-${g}`,ref:x,className:h,onScrollEnd:b,style:{"--initial-columns":i.length+1},children:[r.jsx(rr,{items:i,container:x,ariaLabels:m,parentId:CSS.escape(g)}),e(),p()]})})};A.displayName="ComparisonTable";exports.ComparisonTable=A;
2
+ //# sourceMappingURL=comparison-table-CitEzX7h.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"comparison-table-CitEzX7h.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 } 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: string;\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 isFirstCard: boolean;\n ariaLabels: ComparisonTableProps[\"ariaLabels\"];\n\n showFullDescriptions: boolean;\n toggleShowFullDescriptions: () => void;\n};\n\nexport const OptionCard = ({\n id,\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 classes = cx(rootClassName, {\n [`${rootClassName}--highlighted`]: isHighlighted,\n [`${rootClassName}--first-card`]: isFirstCard,\n [`${rootClassName}--show-full-descriptions`]: showFullDescriptions,\n });\n\n const renderDescription = () => {\n if (!description) return null;\n\n const longThreshold = 50;\n const longDescription = description.length > longThreshold;\n\n return (\n <div className={cx(`${rootClassName}__description`)}>\n <Paragraph variant=\"paragraph-100\" className={cx(`${rootClassName}__description-text`)}>\n {description}\n </Paragraph>\n {longDescription && (\n <Button\n variant=\"text\"\n size=\"xs\"\n className={cx(`${rootClassName}__read-more`)}\n onClick={toggleShowFullDescriptions}\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 )}\n </div>\n );\n };\n\n return (\n <article className={classes} data-card-id={id}>\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 parentId: string;\n ariaLabels: ComparisonTableProps[\"ariaLabels\"];\n};\n\nexport const ScrollProgress = ({ items, container, parentId, 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 = document.querySelector(\n `[data-card-id=\"${index}-${parentId}\"]`\n ) as HTMLElement | null;\n card?.scrollIntoView({ behavior: reduceMotion ? \"instant\" : \"smooth\", block: \"nearest\" });\n },\n [parentId]\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 let index: number | string | undefined = entry.target\n .getAttribute(\"data-card-id\")\n ?.match(new RegExp(`(\\\\d+)-${parentId}`))?.[1];\n\n if (!index) return;\n\n index = parseInt(index, 10);\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 = document.querySelector(\n `[data-card-id=\"${index}-${parentId}\"]`\n ) as HTMLElement | null;\n\n if (card) observer.observe(card);\n });\n\n return () => observer.disconnect();\n }, [container, items, parentId]);\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 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\n items={items}\n container={containerRef}\n ariaLabels={ariaLabels}\n parentId={CSS.escape(id)}\n />\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","variablePriceText","price","isHighlighted","ariaLabels","badge","actions","isFirstCard","image","showFullDescriptions","toggleShowFullDescriptions","renderDescription","longDescription","Button","Badge","Heading","ScrollProgress","items","container","parentId","inViewSet","setInViewSet","useState","scrollToCard","useCallback","index","reduceMotion","previousCard","targetIndex","nextCard","handleKeyDown","useEffect","root","observer","entries","prev","next","entry","_","card","renderIndicators","indicators","viewCapacity","leftmostActiveIndex","head","trail","key","i","status","IconArrowLeft","IconArrowRight","ComparisonTable","classname","features","variant","useId","containerRef","useRef","setShowFullDescriptions","handleToggleShowFullDescriptions","renderCards","item","createElement","renderFeatures","deltaTime","handleScrollEnd","e","target","cardwidth","cardPos","scrollTarget","timeDiff","scrollDiff"],"mappings":"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"}