@purpur/library 9.7.5 → 9.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (304) hide show
  1. package/CHANGELOG.json +54 -0
  2. package/CHANGELOG.md +25 -1
  3. package/dist/LICENSE.txt +7 -7
  4. package/dist/{RichText-yobCUjTD.js → RichText-BAVZadzi.js} +2 -2
  5. package/dist/{RichText-yobCUjTD.js.map → RichText-BAVZadzi.js.map} +1 -1
  6. package/dist/{RichText-jZ-sHV-u.mjs → RichText-D4vznH1B.mjs} +2 -2
  7. package/dist/{RichText-jZ-sHV-u.mjs.map → RichText-D4vznH1B.mjs.map} +1 -1
  8. package/dist/{ThemeProvider-DiDBfyFA.mjs → ThemeProvider-BJ25_asg.mjs} +13 -13
  9. package/dist/{ThemeProvider-DiDBfyFA.mjs.map → ThemeProvider-BJ25_asg.mjs.map} +1 -1
  10. package/dist/{ThemeProvider-D7oXcAde.js → ThemeProvider-BJGm3zai.js} +2 -2
  11. package/dist/{ThemeProvider-D7oXcAde.js.map → ThemeProvider-BJGm3zai.js.map} +1 -1
  12. package/dist/{accordion-CIU4U8-4.mjs → accordion-B6OoQ4uZ.mjs} +2 -2
  13. package/dist/{accordion-CIU4U8-4.mjs.map → accordion-B6OoQ4uZ.mjs.map} +1 -1
  14. package/dist/{accordion-DyhOG54L.js → accordion-BfpN5h4C.js} +2 -2
  15. package/dist/{accordion-DyhOG54L.js.map → accordion-BfpN5h4C.js.map} +1 -1
  16. package/dist/accordion.cjs.js +1 -1
  17. package/dist/accordion.es.js +1 -1
  18. package/dist/{autocomplete-3kV1btuI.js → autocomplete-CcVDJbwS.js} +2 -2
  19. package/dist/{autocomplete-3kV1btuI.js.map → autocomplete-CcVDJbwS.js.map} +1 -1
  20. package/dist/{autocomplete-BEGRn-Wh.mjs → autocomplete-DF17Zm7Q.mjs} +3 -3
  21. package/dist/{autocomplete-BEGRn-Wh.mjs.map → autocomplete-DF17Zm7Q.mjs.map} +1 -1
  22. package/dist/autocomplete.cjs.js +1 -1
  23. package/dist/autocomplete.es.js +1 -1
  24. package/dist/avatar-BDF2KuEh.mjs +28 -0
  25. package/dist/avatar-BDF2KuEh.mjs.map +1 -0
  26. package/dist/avatar-nDQ8fk-2.js +2 -0
  27. package/dist/avatar-nDQ8fk-2.js.map +1 -0
  28. package/dist/avatar.cjs.js +1 -1
  29. package/dist/avatar.es.js +1 -1
  30. package/dist/{card-DFdUs5RG.js → card-pdsBEJif.js} +2 -2
  31. package/dist/{card-DFdUs5RG.js.map → card-pdsBEJif.js.map} +1 -1
  32. package/dist/{card-C2mdp-ur.mjs → card-t2ZkZ82G.mjs} +2 -2
  33. package/dist/{card-C2mdp-ur.mjs.map → card-t2ZkZ82G.mjs.map} +1 -1
  34. package/dist/card.cjs.js +1 -1
  35. package/dist/card.es.js +1 -1
  36. package/dist/{checkbox-BHTx89JQ.mjs → checkbox-DaRtZXrE.mjs} +2 -2
  37. package/dist/{checkbox-BHTx89JQ.mjs.map → checkbox-DaRtZXrE.mjs.map} +1 -1
  38. package/dist/{checkbox-CDNcNv6d.js → checkbox-qjWQEoa5.js} +2 -2
  39. package/dist/{checkbox-CDNcNv6d.js.map → checkbox-qjWQEoa5.js.map} +1 -1
  40. package/dist/checkbox.cjs.js +1 -1
  41. package/dist/checkbox.es.js +1 -1
  42. package/dist/comparison-table-DHFpydbq.js +2 -0
  43. package/dist/comparison-table-DHFpydbq.js.map +1 -0
  44. package/dist/comparison-table-DQJL1IVC.mjs +293 -0
  45. package/dist/comparison-table-DQJL1IVC.mjs.map +1 -0
  46. package/dist/comparison-table.cjs.js +1 -1
  47. package/dist/comparison-table.es.js +1 -1
  48. package/dist/components/accordion/src/accordion.visual.fixtures.d.ts +13 -0
  49. package/dist/components/accordion/src/accordion.visual.fixtures.d.ts.map +1 -0
  50. package/dist/components/alert-badge/src/alert-badge.visual.fixtures.d.ts +15 -0
  51. package/dist/components/alert-badge/src/alert-badge.visual.fixtures.d.ts.map +1 -0
  52. package/dist/components/avatar/src/avatar.d.ts +2 -2
  53. package/dist/components/avatar/src/avatar.d.ts.map +1 -1
  54. package/dist/components/avatar/src/avatar.visual.fixtures.d.ts +14 -0
  55. package/dist/components/avatar/src/avatar.visual.fixtures.d.ts.map +1 -0
  56. package/dist/components/badge/src/badge.visual.fixtures.d.ts +13 -0
  57. package/dist/components/badge/src/badge.visual.fixtures.d.ts.map +1 -0
  58. package/dist/components/comparison-table/src/components/OptionCard/option-card.d.ts +1 -1
  59. package/dist/components/comparison-table/src/components/OptionCard/option-card.d.ts.map +1 -1
  60. package/dist/components/countdown/src/countdown.d.ts.map +1 -1
  61. package/dist/components/countdown/src/countdown.types.d.ts +10 -0
  62. package/dist/components/countdown/src/countdown.types.d.ts.map +1 -1
  63. package/dist/components/countdown/src/countdown.visual.fixtures.d.ts +13 -0
  64. package/dist/components/countdown/src/countdown.visual.fixtures.d.ts.map +1 -0
  65. package/dist/components/countdown/src/utils.d.ts +1 -1
  66. package/dist/components/countdown/src/utils.d.ts.map +1 -1
  67. package/dist/components/footer/src/telia-logo.d.ts.map +1 -1
  68. package/dist/components/hero-banner/src/hero-banner-types.d.ts +48 -0
  69. package/dist/components/hero-banner/src/hero-banner-types.d.ts.map +1 -0
  70. package/dist/components/hero-banner/src/hero-banner.d.ts +5 -48
  71. package/dist/components/hero-banner/src/hero-banner.d.ts.map +1 -1
  72. package/dist/components/hero-banner/src/hero-banner.visual.fixtures.d.ts +1 -1
  73. package/dist/components/hero-banner/src/hero-banner.visual.fixtures.d.ts.map +1 -1
  74. package/dist/components/search-field/src/search-field.visual.fixtures.d.ts +14 -0
  75. package/dist/components/search-field/src/search-field.visual.fixtures.d.ts.map +1 -0
  76. package/dist/components-metadata.js +2 -2
  77. package/dist/{content-block-CakKeJtN.mjs → content-block-CDMrz41K.mjs} +2 -2
  78. package/dist/{content-block-CakKeJtN.mjs.map → content-block-CDMrz41K.mjs.map} +1 -1
  79. package/dist/{content-block-CrekbIfe.js → content-block-DyYAnL2e.js} +2 -2
  80. package/dist/{content-block-CrekbIfe.js.map → content-block-DyYAnL2e.js.map} +1 -1
  81. package/dist/content-block.cjs.js +1 -1
  82. package/dist/content-block.es.js +1 -1
  83. package/dist/countdown-5Ni6OlVY.mjs +189 -0
  84. package/dist/countdown-5Ni6OlVY.mjs.map +1 -0
  85. package/dist/countdown-CGXJyzB2.js +2 -0
  86. package/dist/countdown-CGXJyzB2.js.map +1 -0
  87. package/dist/countdown.cjs.js +1 -1
  88. package/dist/countdown.es.js +1 -1
  89. package/dist/{date-field-BKKty89_.js → date-field-CKxEWHG3.js} +2 -2
  90. package/dist/{date-field-BKKty89_.js.map → date-field-CKxEWHG3.js.map} +1 -1
  91. package/dist/{date-field-Cv5CKR1y.mjs → date-field-HEFdHIxk.mjs} +2 -2
  92. package/dist/{date-field-Cv5CKR1y.mjs.map → date-field-HEFdHIxk.mjs.map} +1 -1
  93. package/dist/date-field.cjs.js +1 -1
  94. package/dist/date-field.es.js +1 -1
  95. package/dist/{date-picker-CIizn3Pv.js → date-picker-CDBwkAJI.js} +2 -2
  96. package/dist/{date-picker-CIizn3Pv.js.map → date-picker-CDBwkAJI.js.map} +1 -1
  97. package/dist/{date-picker-DixxW60s.mjs → date-picker-cQewKIMN.mjs} +6 -6
  98. package/dist/{date-picker-DixxW60s.mjs.map → date-picker-cQewKIMN.mjs.map} +1 -1
  99. package/dist/date-picker.cjs.js +1 -1
  100. package/dist/date-picker.es.js +1 -1
  101. package/dist/{date-range-field-D8vLeSwp.js → date-range-field-D7Hn9FGN.js} +2 -2
  102. package/dist/{date-range-field-D8vLeSwp.js.map → date-range-field-D7Hn9FGN.js.map} +1 -1
  103. package/dist/{date-range-field-CFcjprIl.mjs → date-range-field-_WctWD29.mjs} +2 -2
  104. package/dist/{date-range-field-CFcjprIl.mjs.map → date-range-field-_WctWD29.mjs.map} +1 -1
  105. package/dist/date-range-field.cjs.js +1 -1
  106. package/dist/date-range-field.es.js +1 -1
  107. package/dist/{drawer-DyhsP34o.js → drawer-DyLQfvEh.js} +2 -2
  108. package/dist/{drawer-DyhsP34o.js.map → drawer-DyLQfvEh.js.map} +1 -1
  109. package/dist/{drawer-BzkRd9F0.mjs → drawer-cIUx6WSZ.mjs} +3 -3
  110. package/dist/{drawer-BzkRd9F0.mjs.map → drawer-cIUx6WSZ.mjs.map} +1 -1
  111. package/dist/drawer.cjs.js +1 -1
  112. package/dist/drawer.es.js +1 -1
  113. package/dist/{dropdown-CMO_VD5e.mjs → dropdown-CDK_eRm3.mjs} +3 -3
  114. package/dist/{dropdown-CMO_VD5e.mjs.map → dropdown-CDK_eRm3.mjs.map} +1 -1
  115. package/dist/{dropdown-DJKNQnuo.js → dropdown-_FLHLyPL.js} +2 -2
  116. package/dist/{dropdown-DJKNQnuo.js.map → dropdown-_FLHLyPL.js.map} +1 -1
  117. package/dist/dropdown.cjs.js +1 -1
  118. package/dist/dropdown.es.js +1 -1
  119. package/dist/footer-CS6ZfztM.js +2 -0
  120. package/dist/footer-CS6ZfztM.js.map +1 -0
  121. package/dist/{footer-DenAcikt.mjs → footer-OJXbTn1e.mjs} +87 -97
  122. package/dist/footer-OJXbTn1e.mjs.map +1 -0
  123. package/dist/footer.cjs.js +1 -1
  124. package/dist/footer.es.js +1 -1
  125. package/dist/hero-banner--v-ezYMr.js +2 -0
  126. package/dist/hero-banner--v-ezYMr.js.map +1 -0
  127. package/dist/{hero-banner-B7xrDfzN.mjs → hero-banner-n9K-Jsdz.mjs} +78 -78
  128. package/dist/hero-banner-n9K-Jsdz.mjs.map +1 -0
  129. package/dist/hero-banner.cjs.js +1 -1
  130. package/dist/hero-banner.es.js +1 -1
  131. package/dist/library.cjs.js +1 -1
  132. package/dist/library.es.js +39 -39
  133. package/dist/{listbox-i6BQQ-NZ.mjs → listbox-CtV-Vcmy.mjs} +2 -2
  134. package/dist/{listbox-i6BQQ-NZ.mjs.map → listbox-CtV-Vcmy.mjs.map} +1 -1
  135. package/dist/{listbox-ATP4hOWF.js → listbox-lXO21cJV.js} +2 -2
  136. package/dist/{listbox-ATP4hOWF.js.map → listbox-lXO21cJV.js.map} +1 -1
  137. package/dist/listbox.cjs.js +1 -1
  138. package/dist/listbox.es.js +1 -1
  139. package/dist/{loading-Dwtkjstg.js → loading-B_0NjCnh.js} +2 -2
  140. package/dist/{loading-Dwtkjstg.js.map → loading-B_0NjCnh.js.map} +1 -1
  141. package/dist/{loading-r23nxJSz.mjs → loading-DqZBpMaa.mjs} +2 -2
  142. package/dist/{loading-r23nxJSz.mjs.map → loading-DqZBpMaa.mjs.map} +1 -1
  143. package/dist/loading.cjs.js +1 -1
  144. package/dist/loading.es.js +1 -1
  145. package/dist/{message-D9CDwcw9.mjs → message-CeXuAhmb.mjs} +3 -3
  146. package/dist/{message-D9CDwcw9.mjs.map → message-CeXuAhmb.mjs.map} +1 -1
  147. package/dist/{message-0yTS5pOF.js → message-DsGB-JFh.js} +2 -2
  148. package/dist/{message-0yTS5pOF.js.map → message-DsGB-JFh.js.map} +1 -1
  149. package/dist/message.cjs.js +1 -1
  150. package/dist/message.es.js +1 -1
  151. package/dist/{modal-EIP36327.mjs → modal-Bu1Zv5Ic.mjs} +4 -4
  152. package/dist/{modal-EIP36327.mjs.map → modal-Bu1Zv5Ic.mjs.map} +1 -1
  153. package/dist/{modal-DJn9idcw.js → modal-D0Qxrvx5.js} +2 -2
  154. package/dist/{modal-DJn9idcw.js.map → modal-D0Qxrvx5.js.map} +1 -1
  155. package/dist/modal.cjs.js +1 -1
  156. package/dist/modal.es.js +1 -1
  157. package/dist/{notification-B5bNNq86.js → notification-D2oClkX2.js} +2 -2
  158. package/dist/{notification-B5bNNq86.js.map → notification-D2oClkX2.js.map} +1 -1
  159. package/dist/{notification-BbQCmsnY.mjs → notification-DiVdy6E_.mjs} +2 -2
  160. package/dist/{notification-BbQCmsnY.mjs.map → notification-DiVdy6E_.mjs.map} +1 -1
  161. package/dist/notification.cjs.js +1 -1
  162. package/dist/notification.es.js +1 -1
  163. package/dist/{pagination-rFRdkHII.js → pagination-BDfaybj3.js} +2 -2
  164. package/dist/{pagination-rFRdkHII.js.map → pagination-BDfaybj3.js.map} +1 -1
  165. package/dist/{pagination-Cc_4zCQA.mjs → pagination-Bm38GKga.mjs} +2 -2
  166. package/dist/{pagination-Cc_4zCQA.mjs.map → pagination-Bm38GKga.mjs.map} +1 -1
  167. package/dist/pagination.cjs.js +1 -1
  168. package/dist/pagination.es.js +1 -1
  169. package/dist/{paragraph-By4jMjnH.js → paragraph-B8HFdNne.js} +2 -2
  170. package/dist/{paragraph-By4jMjnH.js.map → paragraph-B8HFdNne.js.map} +1 -1
  171. package/dist/{paragraph-DSxXmX_0.mjs → paragraph-CwAdFoIm.mjs} +3 -3
  172. package/dist/{paragraph-DSxXmX_0.mjs.map → paragraph-CwAdFoIm.mjs.map} +1 -1
  173. package/dist/paragraph.cjs.js +1 -1
  174. package/dist/paragraph.es.js +1 -1
  175. package/dist/{popover-DnGgzfQr.js → popover-BFozkeS3.js} +2 -2
  176. package/dist/{popover-DnGgzfQr.js.map → popover-BFozkeS3.js.map} +1 -1
  177. package/dist/{popover-DERrvReO.mjs → popover-DFPGkVJ6.mjs} +4 -4
  178. package/dist/{popover-DERrvReO.mjs.map → popover-DFPGkVJ6.mjs.map} +1 -1
  179. package/dist/popover.cjs.js +1 -1
  180. package/dist/popover.es.js +1 -1
  181. package/dist/{product-card-Bt-F0wKr.mjs → product-card-CxfHfJVV.mjs} +3 -3
  182. package/dist/{product-card-Bt-F0wKr.mjs.map → product-card-CxfHfJVV.mjs.map} +1 -1
  183. package/dist/{product-card-8X-Ld2d_.js → product-card-XxBwuxM-.js} +2 -2
  184. package/dist/{product-card-8X-Ld2d_.js.map → product-card-XxBwuxM-.js.map} +1 -1
  185. package/dist/product-card.cjs.js +1 -1
  186. package/dist/product-card.es.js +1 -1
  187. package/dist/{promotion-card-DKc2Cx1h.js → promotion-card-C1UoxzcV.js} +2 -2
  188. package/dist/{promotion-card-DKc2Cx1h.js.map → promotion-card-C1UoxzcV.js.map} +1 -1
  189. package/dist/{promotion-card-BnzIVNQ4.mjs → promotion-card-CooYPpFo.mjs} +38 -38
  190. package/dist/{promotion-card-BnzIVNQ4.mjs.map → promotion-card-CooYPpFo.mjs.map} +1 -1
  191. package/dist/promotion-card.cjs.js +1 -1
  192. package/dist/promotion-card.es.js +1 -1
  193. package/dist/purpur.css +1 -1
  194. package/dist/{quantity-selector-CvBvnMeB.mjs → quantity-selector-B4YnfmNb.mjs} +2 -2
  195. package/dist/{quantity-selector-CvBvnMeB.mjs.map → quantity-selector-B4YnfmNb.mjs.map} +1 -1
  196. package/dist/{quantity-selector-CDSfcTb1.js → quantity-selector-CTBoxiPO.js} +2 -2
  197. package/dist/{quantity-selector-CDSfcTb1.js.map → quantity-selector-CTBoxiPO.js.map} +1 -1
  198. package/dist/quantity-selector.cjs.js +1 -1
  199. package/dist/quantity-selector.es.js +1 -1
  200. package/dist/{radio-card-group-nrDi5EPK.js → radio-card-group-BXwkIIEw.js} +2 -2
  201. package/dist/{radio-card-group-nrDi5EPK.js.map → radio-card-group-BXwkIIEw.js.map} +1 -1
  202. package/dist/{radio-card-group-ZBXjYcQs.mjs → radio-card-group-Bn6SK0Wc.mjs} +2 -2
  203. package/dist/{radio-card-group-ZBXjYcQs.mjs.map → radio-card-group-Bn6SK0Wc.mjs.map} +1 -1
  204. package/dist/radio-card-group.cjs.js +1 -1
  205. package/dist/radio-card-group.es.js +1 -1
  206. package/dist/rich-text.cjs.js +1 -1
  207. package/dist/rich-text.es.js +1 -1
  208. package/dist/{search-field-DKyNh7pE.mjs → search-field-BPLzy3RR.mjs} +3 -3
  209. package/dist/{search-field-DKyNh7pE.mjs.map → search-field-BPLzy3RR.mjs.map} +1 -1
  210. package/dist/{search-field-2vdDbiT0.js → search-field-Dx4qCcrh.js} +2 -2
  211. package/dist/{search-field-2vdDbiT0.js.map → search-field-Dx4qCcrh.js.map} +1 -1
  212. package/dist/search-field.cjs.js +1 -1
  213. package/dist/search-field.es.js +1 -1
  214. package/dist/{stepper-e0qicwqd.mjs → stepper-DSl-YCMe.mjs} +2 -2
  215. package/dist/{stepper-e0qicwqd.mjs.map → stepper-DSl-YCMe.mjs.map} +1 -1
  216. package/dist/{stepper-5qMo_shq.js → stepper-eaxkBC7o.js} +2 -2
  217. package/dist/{stepper-5qMo_shq.js.map → stepper-eaxkBC7o.js.map} +1 -1
  218. package/dist/stepper.cjs.js +1 -1
  219. package/dist/stepper.es.js +1 -1
  220. package/dist/{table-i1Gs9e0e.mjs → table-D9MKkbPO.mjs} +9 -9
  221. package/dist/{table-i1Gs9e0e.mjs.map → table-D9MKkbPO.mjs.map} +1 -1
  222. package/dist/{table-BOCcBzSO.js → table-rS3hITtj.js} +2 -2
  223. package/dist/{table-BOCcBzSO.js.map → table-rS3hITtj.js.map} +1 -1
  224. package/dist/table.cjs.js +1 -1
  225. package/dist/table.es.js +1 -1
  226. package/dist/{text-area-D0truMT1.js → text-area-9RUldq6W.js} +2 -2
  227. package/dist/{text-area-D0truMT1.js.map → text-area-9RUldq6W.js.map} +1 -1
  228. package/dist/{text-area-IVH-k4MM.mjs → text-area-C58aZEPa.mjs} +3 -3
  229. package/dist/{text-area-IVH-k4MM.mjs.map → text-area-C58aZEPa.mjs.map} +1 -1
  230. package/dist/text-area.cjs.js +1 -1
  231. package/dist/text-area.es.js +1 -1
  232. package/dist/text-field-C2W13n15.js +2 -0
  233. package/dist/{text-field-CYJzQG3h.js.map → text-field-C2W13n15.js.map} +1 -1
  234. package/dist/{text-field-BQfxJobW.mjs → text-field-D8MMa6ij.mjs} +114 -114
  235. package/dist/{text-field-BQfxJobW.mjs.map → text-field-D8MMa6ij.mjs.map} +1 -1
  236. package/dist/text-field.cjs.js +1 -1
  237. package/dist/text-field.es.js +1 -1
  238. package/dist/theme.cjs.js +1 -1
  239. package/dist/theme.es.js +3 -3
  240. package/dist/{toggle-B8ZLUVar.js → toggle-BgrfdtmN.js} +2 -2
  241. package/dist/{toggle-B8ZLUVar.js.map → toggle-BgrfdtmN.js.map} +1 -1
  242. package/dist/{toggle-CY3J8BRX.mjs → toggle-Cg1KFa_2.mjs} +2 -2
  243. package/dist/{toggle-CY3J8BRX.mjs.map → toggle-Cg1KFa_2.mjs.map} +1 -1
  244. package/dist/toggle.cjs.js +1 -1
  245. package/dist/toggle.es.js +1 -1
  246. package/dist/tokens/color/variables.css +1 -1
  247. package/dist/tokens/color/variables.dark.css +1 -1
  248. package/dist/tokens/color/variables.dark.js +1 -1
  249. package/dist/tokens/color/variables.dark.json +1 -1
  250. package/dist/tokens/color/variables.dark.scss +1 -1
  251. package/dist/tokens/color/variables.js +1 -1
  252. package/dist/tokens/color/variables.json +1 -1
  253. package/dist/tokens/color/variables.scss +1 -1
  254. package/dist/tokens.cjs.js +1 -1
  255. package/dist/tokens.es.js +1 -1
  256. package/dist/{tooltip-CJGmJDFQ.js → tooltip-B-11qk-0.js} +2 -2
  257. package/dist/{tooltip-CJGmJDFQ.js.map → tooltip-B-11qk-0.js.map} +1 -1
  258. package/dist/{tooltip-RA-03bKs.mjs → tooltip-DngYHn5W.mjs} +4 -4
  259. package/dist/{tooltip-RA-03bKs.mjs.map → tooltip-DngYHn5W.mjs.map} +1 -1
  260. package/dist/tooltip.cjs.js +1 -1
  261. package/dist/tooltip.es.js +1 -1
  262. package/dist/{useColorScheme-B9DWd-LN.mjs → useColorScheme-B7lGBSe4.mjs} +2 -2
  263. package/dist/{useColorScheme-B9DWd-LN.mjs.map → useColorScheme-B7lGBSe4.mjs.map} +1 -1
  264. package/dist/useColorScheme-BHhPgv9q.js +2 -0
  265. package/dist/{useColorScheme-DbTQjxNB.js.map → useColorScheme-BHhPgv9q.js.map} +1 -1
  266. package/dist/useThemePortalContainer-CUcqV327.js +2 -0
  267. package/dist/{useThemePortalContainer-D9BYjEvT.js.map → useThemePortalContainer-CUcqV327.js.map} +1 -1
  268. package/dist/useThemePortalContainer-D13Xx24N.mjs +9 -0
  269. package/dist/{useThemePortalContainer-tFLTaYKN.mjs.map → useThemePortalContainer-D13Xx24N.mjs.map} +1 -1
  270. package/dist/{variables-B5hbV0Uy.mjs → variables-BrsAsWIF.mjs} +2 -2
  271. package/dist/{variables-B5hbV0Uy.mjs.map → variables-BrsAsWIF.mjs.map} +1 -1
  272. package/dist/{variables-DoI78zZc.js → variables-D1vNo1lO.js} +2 -2
  273. package/dist/{variables-DoI78zZc.js.map → variables-D1vNo1lO.js.map} +1 -1
  274. package/package.json +21 -21
  275. package/tokens/color/variables.css +1 -1
  276. package/tokens/color/variables.dark.css +1 -1
  277. package/tokens/color/variables.dark.js +1 -1
  278. package/tokens/color/variables.dark.json +1 -1
  279. package/tokens/color/variables.dark.scss +1 -1
  280. package/tokens/color/variables.js +1 -1
  281. package/tokens/color/variables.json +1 -1
  282. package/tokens/color/variables.scss +1 -1
  283. package/dist/avatar-CYnD57o4.js +0 -2
  284. package/dist/avatar-CYnD57o4.js.map +0 -1
  285. package/dist/avatar-CzbDD1MK.mjs +0 -27
  286. package/dist/avatar-CzbDD1MK.mjs.map +0 -1
  287. package/dist/comparison-table-0UDB2BTU.js +0 -2
  288. package/dist/comparison-table-0UDB2BTU.js.map +0 -1
  289. package/dist/comparison-table-CjTE-fHN.mjs +0 -292
  290. package/dist/comparison-table-CjTE-fHN.mjs.map +0 -1
  291. package/dist/countdown-BsLsEZBv.mjs +0 -179
  292. package/dist/countdown-BsLsEZBv.mjs.map +0 -1
  293. package/dist/countdown-hYrFLmRg.js +0 -2
  294. package/dist/countdown-hYrFLmRg.js.map +0 -1
  295. package/dist/footer-3Y-664-8.js +0 -2
  296. package/dist/footer-3Y-664-8.js.map +0 -1
  297. package/dist/footer-DenAcikt.mjs.map +0 -1
  298. package/dist/hero-banner-B7xrDfzN.mjs.map +0 -1
  299. package/dist/hero-banner-DthITuQ7.js +0 -2
  300. package/dist/hero-banner-DthITuQ7.js.map +0 -1
  301. package/dist/text-field-CYJzQG3h.js +0 -2
  302. package/dist/useColorScheme-DbTQjxNB.js +0 -2
  303. package/dist/useThemePortalContainer-D9BYjEvT.js +0 -2
  304. package/dist/useThemePortalContainer-tFLTaYKN.mjs +0 -9
@@ -1,51 +1,8 @@
1
- import { default as React, ReactNode } from 'react';
2
- import { BaseProps } from '../../../libraries/common-types/src/common-types';
3
- import { ColorScheme } from '../../../libraries/theme/src/theme';
1
+ import { default as React } from 'react';
2
+ import { HeroBannerProps } from './hero-banner-types';
4
3
  export type { HeroBannerMediaProps } from './hero-banner-media';
5
- export declare const TitleHyphenVariant: {
6
- readonly default: "default";
7
- readonly enabled: "enabled";
8
- readonly disabled: "disabled";
9
- };
10
- export type TitleHyphens = (typeof TitleHyphenVariant)[keyof typeof TitleHyphenVariant];
11
- export type HeroBannerProps = BaseProps & {
12
- /**
13
- * Custom content slot
14
- * Add your CTAs here with <HeroBanner.CTAs> component
15
- */
16
- children?: ReactNode;
17
- /**
18
- * Breadcrumbs: <br/>
19
- * - Slot for your Breadcrumbs component
20
- */
21
- breadcrumbs?: ReactNode;
22
- forceColorScheme?: ColorScheme;
23
- /**
24
- * Content to display before the main heading
25
- */
26
- beforeTitle?: ReactNode;
27
- /**
28
- * Main heading of the component
29
- */
30
- title: string;
31
- /**
32
- * Main heading tag
33
- */
34
- titleTag?: "h1" | "h2" | "h3" | "h4" | "h5" | "h6";
35
- titleHyphens?: TitleHyphens;
36
- /**
37
- * Preamble text
38
- */
39
- preamble?: string;
40
- /**
41
- * Additional text under the CTAs, recommended to limit element to simple text with text decorations
42
- */
43
- additionalText?: ReactNode;
44
- /**
45
- * <HeroBanner.Media /> component (images and videos)
46
- */
47
- media?: ReactNode;
48
- };
4
+ export type { HeroBannerProps, TitleHyphens } from './hero-banner-types';
5
+ export { TitleHyphenVariant } from './hero-banner-types';
49
6
  export declare const HeroBanner: {
50
7
  ({ children, className, breadcrumbs, forceColorScheme, beforeTitle, title, titleTag, titleHyphens, preamble, additionalText, media, ...props }: HeroBannerProps): React.JSX.Element;
51
8
  displayName: string;
@@ -53,7 +10,7 @@ export declare const HeroBanner: {
53
10
  Actions: ({ children, className, ...props }: Omit<React.ClassAttributes<HTMLDivElement> & React.HTMLAttributes<HTMLDivElement> & {
54
11
  [key: `data-${string}`]: string | undefined;
55
12
  }, "children"> & {
56
- children: ReactNode;
13
+ children: React.ReactNode;
57
14
  }) => React.JSX.Element;
58
15
  };
59
16
  //# sourceMappingURL=hero-banner.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"hero-banner.d.ts","sourceRoot":"","sources":["../../../../../../components/hero-banner/src/hero-banner.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAC9C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAItD,OAAO,EAAE,KAAK,WAAW,EAAY,MAAM,eAAe,CAAC;AAO3D,YAAY,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAIhE,eAAO,MAAM,kBAAkB;;;;CAIrB,CAAC;AAEX,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,OAAO,kBAAkB,CAAC,CAAC;AAExF,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG;IACxC;;;OAGG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB;;;OAGG;IACH,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,gBAAgB,CAAC,EAAE,WAAW,CAAC;IAC/B;;OAEG;IACH,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,QAAQ,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IACnD,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,cAAc,CAAC,EAAE,SAAS,CAAC;IAC3B;;OAEG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB,CAAC;AAIF,eAAO,MAAM,UAAU;oJAapB,eAAe;;;;;;;;CA0FjB,CAAC"}
1
+ {"version":3,"file":"hero-banner.d.ts","sourceRoot":"","sources":["../../../../../../components/hero-banner/src/hero-banner.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAU1B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAE3D,YAAY,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAChE,YAAY,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAMzD,eAAO,MAAM,UAAU;oJAapB,eAAe;;;;;;;;CA0FjB,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { default as React } from 'react';
2
- import { HeroBannerProps } from './hero-banner';
2
+ import { HeroBannerProps } from './hero-banner-types';
3
3
  type HeroBannerVisualScenario = {
4
4
  key: string;
5
5
  title: string;
@@ -1 +1 @@
1
- {"version":3,"file":"hero-banner.visual.fixtures.d.ts","sourceRoot":"","sources":["../../../../../../components/hero-banner/src/hero-banner.visual.fixtures.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAQ1B,OAAO,EAAc,KAAK,eAAe,EAAsB,MAAM,eAAe,CAAC;AAGrF,KAAK,wBAAwB,GAAG;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,eAAe,CAAC;CACpC,CAAC;AAuEF,eAAO,MAAM,yBAAyB,EAAE,wBAAwB,EAkE/D,CAAC;AAEF,eAAO,MAAM,yBAAyB,GAAI,aAAa,MAAM,WACxB,CAAC;AAEtC,eAAO,MAAM,4BAA4B,GAAI,iBAAiB;IAAE,WAAW,EAAE,MAAM,CAAA;CAAE,sBAUpF,CAAC"}
1
+ {"version":3,"file":"hero-banner.visual.fixtures.d.ts","sourceRoot":"","sources":["../../../../../../components/hero-banner/src/hero-banner.visual.fixtures.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAU1B,OAAO,EAAE,KAAK,eAAe,EAAsB,MAAM,qBAAqB,CAAC;AAE/E,KAAK,wBAAwB,GAAG;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,eAAe,CAAC;CACpC,CAAC;AAuEF,eAAO,MAAM,yBAAyB,EAAE,wBAAwB,EAkE/D,CAAC;AAEF,eAAO,MAAM,yBAAyB,GAAI,aAAa,MAAM,WACxB,CAAC;AAEtC,eAAO,MAAM,4BAA4B,GAAI,iBAAiB;IAAE,WAAW,EAAE,MAAM,CAAA;CAAE,sBAUpF,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { default as React } from 'react';
2
+ import { SearchFieldProps } from './search-field';
3
+ type SearchFieldVisualScenario = {
4
+ key: string;
5
+ title: string;
6
+ createProps: () => SearchFieldProps;
7
+ };
8
+ export declare const searchFieldVisualScenarios: SearchFieldVisualScenario[];
9
+ export declare const getSearchFieldVisualTestId: (scenarioKey: string) => string;
10
+ export declare const SearchFieldVisualScenarioRoot: ({ scenarioKey }: {
11
+ scenarioKey: string;
12
+ }) => React.JSX.Element;
13
+ export {};
14
+ //# sourceMappingURL=search-field.visual.fixtures.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search-field.visual.fixtures.d.ts","sourceRoot":"","sources":["../../../../../../components/search-field/src/search-field.visual.fixtures.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAqC,MAAM,OAAO,CAAC;AAE1D,OAAO,EAAe,KAAK,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAEpE,KAAK,yBAAyB,GAAG;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,gBAAgB,CAAC;CACrC,CAAC;AAoDF,eAAO,MAAM,0BAA0B,EAAE,yBAAyB,EA6EjE,CAAC;AAEF,eAAO,MAAM,0BAA0B,GAAI,aAAa,MAAM,WACxB,CAAC;AAEvC,eAAO,MAAM,6BAA6B,GAAI,iBAAiB;IAAE,WAAW,EAAE,MAAM,CAAA;CAAE,sBA4BrF,CAAC"}
@@ -283,9 +283,9 @@ module.exports = [
283
283
  "moduleName": "hero-banner",
284
284
  "exports": [
285
285
  "HeroBannerMediaProps",
286
- "TitleHyphenVariant",
287
- "TitleHyphens",
288
286
  "HeroBannerProps",
287
+ "TitleHyphens",
288
+ "TitleHyphenVariant",
289
289
  "HeroBanner"
290
290
  ]
291
291
  },
@@ -2,7 +2,7 @@ import { jsx as r, jsxs as u } from "react/jsx-runtime";
2
2
  import { createContext as w, useContext as C } from "react";
3
3
  import { H as f } from "./heading-xwBuT_-9.mjs";
4
4
  import { a as y } from "./checkmark.es-DdgIZN2R.mjs";
5
- import { P as B } from "./paragraph-DSxXmX_0.mjs";
5
+ import { P as B } from "./paragraph-CwAdFoIm.mjs";
6
6
  import { c as k } from "./bind-CU-R61T-.mjs";
7
7
  const G = {
8
8
  "purpur-content-block": "_purpur-content-block_mjbqd_1",
@@ -89,4 +89,4 @@ h.displayName = "ContentBlock";
89
89
  export {
90
90
  h as C
91
91
  };
92
- //# sourceMappingURL=content-block-CakKeJtN.mjs.map
92
+ //# sourceMappingURL=content-block-CDMrz41K.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"content-block-CakKeJtN.mjs","sources":["../../../components/content-block/src/content-block-group.tsx","../../../components/content-block/src/content-block.tsx"],"sourcesContent":["import React, { createContext, type ReactNode } from \"react\";\nimport type { BaseProps } from \"@purpur/common-types\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./content-block-group.module.scss\";\n\nconst cx = c.bind(styles);\nconst rootClassName = \"purpur-content-block-group\";\n\nexport const ContentBlockGroupContext = createContext<{\n negative?: boolean;\n reverse?: boolean;\n} | null>(null);\n\nexport type ContentBlockGroupProps = Omit<BaseProps, \"children\"> & {\n children: ReactNode;\n negative?: boolean;\n mediaStartPosition?: \"left\" | \"right\";\n};\n\nexport const ContentBlockGroup = ({\n children,\n className,\n negative,\n mediaStartPosition = \"left\",\n ...props\n}: ContentBlockGroupProps) => {\n const classes = cx([\n rootClassName,\n {\n [`${rootClassName}--negative`]: negative,\n },\n className,\n ]);\n\n return (\n <div className={classes} {...props}>\n <ContentBlockGroupContext.Provider\n value={{ negative, reverse: mediaStartPosition === \"right\" }}\n >\n {children}\n </ContentBlockGroupContext.Provider>\n </div>\n );\n};\n\nContentBlockGroup.displayName = \"ContentBlockGroup\";\n","import React, { type ReactNode, useContext } from \"react\";\nimport type { BaseProps } from \"@purpur/common-types\";\nimport { Heading, type HeadingTagType, type HeadingVariant } from \"@purpur/heading\";\nimport { IconCheckmark } from \"@purpur/icon/checkmark\";\nimport { Paragraph } from \"@purpur/paragraph\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./content-block.module.scss\";\nimport { ContentBlockGroup, ContentBlockGroupContext } from \"./content-block-group\";\n\nconst cx = c.bind(styles);\nconst rootClassName = \"purpur-content-block\";\n\nexport type ContentBlockProps = BaseProps & {\n /**\n * @deprecated Set negative on ContentBlockGroup instead\n */\n negative?: boolean;\n image?: ReactNode;\n video?: ReactNode;\n /**\n * @deprecated Use beforeTitle instead\n */\n badge?: ReactNode;\n actions?: ReactNode;\n listItems?: string[];\n beforeTitle?: ReactNode;\n title?: string;\n headingTag?: HeadingTagType;\n headingVariant?: HeadingVariant;\n};\n\nexport const ContentBlock = ({\n className,\n negative,\n image,\n video,\n badge,\n beforeTitle,\n title,\n actions,\n listItems,\n headingTag = \"h2\",\n headingVariant = \"display-15\",\n children,\n ...props\n}: ContentBlockProps) => {\n const context = useContext(ContentBlockGroupContext);\n\n const classes = cx([\n rootClassName,\n {\n [`${rootClassName}--negative`]: context?.negative || negative,\n [`${rootClassName}--reverse`]: context?.reverse,\n },\n className,\n ]);\n\n return (\n <div className={classes} {...props}>\n <div className={cx(`${rootClassName}__section`)}>\n {video ? (\n <div className={cx(`${rootClassName}__video-wrapper`)}>{video}</div>\n ) : (\n <div className={cx(`${rootClassName}__image-wrapper`)}>{image}</div>\n )}\n </div>\n <div className={cx(`${rootClassName}__section`)}>\n <div className={cx(`${rootClassName}__content-wrapper`)}>\n {badge && <div className={cx(`${rootClassName}__badge-wrapper`)}>{badge}</div>}\n {beforeTitle}\n {title?.trim() && (\n <Heading variant={headingVariant} tag={headingTag} negative={negative}>\n {title}\n </Heading>\n )}\n <div className={cx(`${rootClassName}__content`)}>{children}</div>\n {!!listItems?.length && (\n <ul className={cx(`${rootClassName}__list`)}>\n {listItems.map(\n (item) =>\n item && (\n <li className={cx(`${rootClassName}__list-item`)} key={item}>\n <IconCheckmark size=\"xs\" className={cx(`${rootClassName}__list-item-icon`)} />\n <Paragraph negative={negative}>{item}</Paragraph>\n </li>\n )\n )}\n </ul>\n )}\n {actions && <div className={cx(`${rootClassName}__actions`)}>{actions}</div>}\n </div>\n </div>\n </div>\n );\n};\n\nContentBlock.Group = ContentBlockGroup;\nContentBlock.displayName = \"ContentBlock\";\n"],"names":["cx","c","styles","rootClassName","ContentBlockGroupContext","createContext","ContentBlockGroup","children","className","negative","mediaStartPosition","props","classes","jsx","ContentBlock","image","video","badge","beforeTitle","title","actions","listItems","headingTag","headingVariant","context","useContext","jsxs","Heading","item","IconCheckmark","Paragraph"],"mappings":"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"}
1
+ {"version":3,"file":"content-block-CDMrz41K.mjs","sources":["../../../components/content-block/src/content-block-group.tsx","../../../components/content-block/src/content-block.tsx"],"sourcesContent":["import React, { createContext, type ReactNode } from \"react\";\nimport type { BaseProps } from \"@purpur/common-types\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./content-block-group.module.scss\";\n\nconst cx = c.bind(styles);\nconst rootClassName = \"purpur-content-block-group\";\n\nexport const ContentBlockGroupContext = createContext<{\n negative?: boolean;\n reverse?: boolean;\n} | null>(null);\n\nexport type ContentBlockGroupProps = Omit<BaseProps, \"children\"> & {\n children: ReactNode;\n negative?: boolean;\n mediaStartPosition?: \"left\" | \"right\";\n};\n\nexport const ContentBlockGroup = ({\n children,\n className,\n negative,\n mediaStartPosition = \"left\",\n ...props\n}: ContentBlockGroupProps) => {\n const classes = cx([\n rootClassName,\n {\n [`${rootClassName}--negative`]: negative,\n },\n className,\n ]);\n\n return (\n <div className={classes} {...props}>\n <ContentBlockGroupContext.Provider\n value={{ negative, reverse: mediaStartPosition === \"right\" }}\n >\n {children}\n </ContentBlockGroupContext.Provider>\n </div>\n );\n};\n\nContentBlockGroup.displayName = \"ContentBlockGroup\";\n","import React, { type ReactNode, useContext } from \"react\";\nimport type { BaseProps } from \"@purpur/common-types\";\nimport { Heading, type HeadingTagType, type HeadingVariant } from \"@purpur/heading\";\nimport { IconCheckmark } from \"@purpur/icon/checkmark\";\nimport { Paragraph } from \"@purpur/paragraph\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./content-block.module.scss\";\nimport { ContentBlockGroup, ContentBlockGroupContext } from \"./content-block-group\";\n\nconst cx = c.bind(styles);\nconst rootClassName = \"purpur-content-block\";\n\nexport type ContentBlockProps = BaseProps & {\n /**\n * @deprecated Set negative on ContentBlockGroup instead\n */\n negative?: boolean;\n image?: ReactNode;\n video?: ReactNode;\n /**\n * @deprecated Use beforeTitle instead\n */\n badge?: ReactNode;\n actions?: ReactNode;\n listItems?: string[];\n beforeTitle?: ReactNode;\n title?: string;\n headingTag?: HeadingTagType;\n headingVariant?: HeadingVariant;\n};\n\nexport const ContentBlock = ({\n className,\n negative,\n image,\n video,\n badge,\n beforeTitle,\n title,\n actions,\n listItems,\n headingTag = \"h2\",\n headingVariant = \"display-15\",\n children,\n ...props\n}: ContentBlockProps) => {\n const context = useContext(ContentBlockGroupContext);\n\n const classes = cx([\n rootClassName,\n {\n [`${rootClassName}--negative`]: context?.negative || negative,\n [`${rootClassName}--reverse`]: context?.reverse,\n },\n className,\n ]);\n\n return (\n <div className={classes} {...props}>\n <div className={cx(`${rootClassName}__section`)}>\n {video ? (\n <div className={cx(`${rootClassName}__video-wrapper`)}>{video}</div>\n ) : (\n <div className={cx(`${rootClassName}__image-wrapper`)}>{image}</div>\n )}\n </div>\n <div className={cx(`${rootClassName}__section`)}>\n <div className={cx(`${rootClassName}__content-wrapper`)}>\n {badge && <div className={cx(`${rootClassName}__badge-wrapper`)}>{badge}</div>}\n {beforeTitle}\n {title?.trim() && (\n <Heading variant={headingVariant} tag={headingTag} negative={negative}>\n {title}\n </Heading>\n )}\n <div className={cx(`${rootClassName}__content`)}>{children}</div>\n {!!listItems?.length && (\n <ul className={cx(`${rootClassName}__list`)}>\n {listItems.map(\n (item) =>\n item && (\n <li className={cx(`${rootClassName}__list-item`)} key={item}>\n <IconCheckmark size=\"xs\" className={cx(`${rootClassName}__list-item-icon`)} />\n <Paragraph negative={negative}>{item}</Paragraph>\n </li>\n )\n )}\n </ul>\n )}\n {actions && <div className={cx(`${rootClassName}__actions`)}>{actions}</div>}\n </div>\n </div>\n </div>\n );\n};\n\nContentBlock.Group = ContentBlockGroup;\nContentBlock.displayName = \"ContentBlock\";\n"],"names":["cx","c","styles","rootClassName","ContentBlockGroupContext","createContext","ContentBlockGroup","children","className","negative","mediaStartPosition","props","classes","jsx","ContentBlock","image","video","badge","beforeTitle","title","actions","listItems","headingTag","headingVariant","context","useContext","jsxs","Heading","item","IconCheckmark","Paragraph"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";const e=require("react/jsx-runtime"),k=require("react"),w=require("./heading-drD5ugCC.js"),C=require("./checkmark.es-lYntWFA3.js"),y=require("./paragraph-By4jMjnH.js"),j=require("./bind-DeUYJ6m9.js"),B={"purpur-content-block":"_purpur-content-block_mjbqd_1","purpur-content-block--reverse":"_purpur-content-block--reverse_mjbqd_13","purpur-content-block__section":"_purpur-content-block__section_mjbqd_20","purpur-content-block__image-wrapper":"_purpur-content-block__image-wrapper_mjbqd_28","purpur-content-block__video-wrapper":"_purpur-content-block__video-wrapper_mjbqd_31","purpur-content-block__content-wrapper":"_purpur-content-block__content-wrapper_mjbqd_41","purpur-content-block__badge-wrapper":"_purpur-content-block__badge-wrapper_mjbqd_46","purpur-content-block__content":"_purpur-content-block__content_mjbqd_41","purpur-content-block__list":"_purpur-content-block__list_mjbqd_52","purpur-content-block__list-item":"_purpur-content-block__list-item_mjbqd_57","purpur-content-block__list-item-icon":"_purpur-content-block__list-item-icon_mjbqd_65","purpur-content-block__actions":"_purpur-content-block__actions_mjbqd_68","purpur-content-block--negative":"_purpur-content-block--negative_mjbqd_79","purpur-content-block__text-spacing":"_purpur-content-block__text-spacing_mjbqd_79"},G={"purpur-content-block-group":"_purpur-content-block-group_xzyy2_1"},z=j.c.bind(G),m="purpur-content-block-group",x=k.createContext(null),v=({children:s,className:n,negative:c,mediaStartPosition:o="left",..._})=>{const p=z([m,{[`${m}--negative`]:c},n]);return e.jsx("div",{className:p,..._,children:e.jsx(x.Provider,{value:{negative:c,reverse:o==="right"},children:s})})};v.displayName="ContentBlockGroup";const r=j.c.bind(B),t="purpur-content-block",u=({className:s,negative:n,image:c,video:o,badge:_,beforeTitle:p,title:a,actions:i,listItems:b,headingTag:h="h2",headingVariant:q="display-15",children:g,...N})=>{const d=k.useContext(x),$=r([t,{[`${t}--negative`]:d?.negative||n,[`${t}--reverse`]:d?.reverse},s]);return e.jsxs("div",{className:$,...N,children:[e.jsx("div",{className:r(`${t}__section`),children:o?e.jsx("div",{className:r(`${t}__video-wrapper`),children:o}):e.jsx("div",{className:r(`${t}__image-wrapper`),children:c})}),e.jsx("div",{className:r(`${t}__section`),children:e.jsxs("div",{className:r(`${t}__content-wrapper`),children:[_&&e.jsx("div",{className:r(`${t}__badge-wrapper`),children:_}),p,a?.trim()&&e.jsx(w.Heading,{variant:q,tag:h,negative:n,children:a}),e.jsx("div",{className:r(`${t}__content`),children:g}),!!b?.length&&e.jsx("ul",{className:r(`${t}__list`),children:b.map(l=>l&&e.jsxs("li",{className:r(`${t}__list-item`),children:[e.jsx(C.a,{size:"xs",className:r(`${t}__list-item-icon`)}),e.jsx(y.Paragraph,{negative:n,children:l})]},l))}),i&&e.jsx("div",{className:r(`${t}__actions`),children:i})]})})]})};u.Group=v;u.displayName="ContentBlock";exports.ContentBlock=u;
2
- //# sourceMappingURL=content-block-CrekbIfe.js.map
1
+ "use strict";const e=require("react/jsx-runtime"),k=require("react"),w=require("./heading-drD5ugCC.js"),C=require("./checkmark.es-lYntWFA3.js"),y=require("./paragraph-B8HFdNne.js"),j=require("./bind-DeUYJ6m9.js"),B={"purpur-content-block":"_purpur-content-block_mjbqd_1","purpur-content-block--reverse":"_purpur-content-block--reverse_mjbqd_13","purpur-content-block__section":"_purpur-content-block__section_mjbqd_20","purpur-content-block__image-wrapper":"_purpur-content-block__image-wrapper_mjbqd_28","purpur-content-block__video-wrapper":"_purpur-content-block__video-wrapper_mjbqd_31","purpur-content-block__content-wrapper":"_purpur-content-block__content-wrapper_mjbqd_41","purpur-content-block__badge-wrapper":"_purpur-content-block__badge-wrapper_mjbqd_46","purpur-content-block__content":"_purpur-content-block__content_mjbqd_41","purpur-content-block__list":"_purpur-content-block__list_mjbqd_52","purpur-content-block__list-item":"_purpur-content-block__list-item_mjbqd_57","purpur-content-block__list-item-icon":"_purpur-content-block__list-item-icon_mjbqd_65","purpur-content-block__actions":"_purpur-content-block__actions_mjbqd_68","purpur-content-block--negative":"_purpur-content-block--negative_mjbqd_79","purpur-content-block__text-spacing":"_purpur-content-block__text-spacing_mjbqd_79"},G={"purpur-content-block-group":"_purpur-content-block-group_xzyy2_1"},z=j.c.bind(G),m="purpur-content-block-group",x=k.createContext(null),v=({children:s,className:n,negative:c,mediaStartPosition:o="left",..._})=>{const p=z([m,{[`${m}--negative`]:c},n]);return e.jsx("div",{className:p,..._,children:e.jsx(x.Provider,{value:{negative:c,reverse:o==="right"},children:s})})};v.displayName="ContentBlockGroup";const r=j.c.bind(B),t="purpur-content-block",u=({className:s,negative:n,image:c,video:o,badge:_,beforeTitle:p,title:a,actions:i,listItems:b,headingTag:h="h2",headingVariant:q="display-15",children:g,...N})=>{const d=k.useContext(x),$=r([t,{[`${t}--negative`]:d?.negative||n,[`${t}--reverse`]:d?.reverse},s]);return e.jsxs("div",{className:$,...N,children:[e.jsx("div",{className:r(`${t}__section`),children:o?e.jsx("div",{className:r(`${t}__video-wrapper`),children:o}):e.jsx("div",{className:r(`${t}__image-wrapper`),children:c})}),e.jsx("div",{className:r(`${t}__section`),children:e.jsxs("div",{className:r(`${t}__content-wrapper`),children:[_&&e.jsx("div",{className:r(`${t}__badge-wrapper`),children:_}),p,a?.trim()&&e.jsx(w.Heading,{variant:q,tag:h,negative:n,children:a}),e.jsx("div",{className:r(`${t}__content`),children:g}),!!b?.length&&e.jsx("ul",{className:r(`${t}__list`),children:b.map(l=>l&&e.jsxs("li",{className:r(`${t}__list-item`),children:[e.jsx(C.a,{size:"xs",className:r(`${t}__list-item-icon`)}),e.jsx(y.Paragraph,{negative:n,children:l})]},l))}),i&&e.jsx("div",{className:r(`${t}__actions`),children:i})]})})]})};u.Group=v;u.displayName="ContentBlock";exports.ContentBlock=u;
2
+ //# sourceMappingURL=content-block-DyYAnL2e.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"content-block-CrekbIfe.js","sources":["../../../components/content-block/src/content-block-group.tsx","../../../components/content-block/src/content-block.tsx"],"sourcesContent":["import React, { createContext, type ReactNode } from \"react\";\nimport type { BaseProps } from \"@purpur/common-types\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./content-block-group.module.scss\";\n\nconst cx = c.bind(styles);\nconst rootClassName = \"purpur-content-block-group\";\n\nexport const ContentBlockGroupContext = createContext<{\n negative?: boolean;\n reverse?: boolean;\n} | null>(null);\n\nexport type ContentBlockGroupProps = Omit<BaseProps, \"children\"> & {\n children: ReactNode;\n negative?: boolean;\n mediaStartPosition?: \"left\" | \"right\";\n};\n\nexport const ContentBlockGroup = ({\n children,\n className,\n negative,\n mediaStartPosition = \"left\",\n ...props\n}: ContentBlockGroupProps) => {\n const classes = cx([\n rootClassName,\n {\n [`${rootClassName}--negative`]: negative,\n },\n className,\n ]);\n\n return (\n <div className={classes} {...props}>\n <ContentBlockGroupContext.Provider\n value={{ negative, reverse: mediaStartPosition === \"right\" }}\n >\n {children}\n </ContentBlockGroupContext.Provider>\n </div>\n );\n};\n\nContentBlockGroup.displayName = \"ContentBlockGroup\";\n","import React, { type ReactNode, useContext } from \"react\";\nimport type { BaseProps } from \"@purpur/common-types\";\nimport { Heading, type HeadingTagType, type HeadingVariant } from \"@purpur/heading\";\nimport { IconCheckmark } from \"@purpur/icon/checkmark\";\nimport { Paragraph } from \"@purpur/paragraph\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./content-block.module.scss\";\nimport { ContentBlockGroup, ContentBlockGroupContext } from \"./content-block-group\";\n\nconst cx = c.bind(styles);\nconst rootClassName = \"purpur-content-block\";\n\nexport type ContentBlockProps = BaseProps & {\n /**\n * @deprecated Set negative on ContentBlockGroup instead\n */\n negative?: boolean;\n image?: ReactNode;\n video?: ReactNode;\n /**\n * @deprecated Use beforeTitle instead\n */\n badge?: ReactNode;\n actions?: ReactNode;\n listItems?: string[];\n beforeTitle?: ReactNode;\n title?: string;\n headingTag?: HeadingTagType;\n headingVariant?: HeadingVariant;\n};\n\nexport const ContentBlock = ({\n className,\n negative,\n image,\n video,\n badge,\n beforeTitle,\n title,\n actions,\n listItems,\n headingTag = \"h2\",\n headingVariant = \"display-15\",\n children,\n ...props\n}: ContentBlockProps) => {\n const context = useContext(ContentBlockGroupContext);\n\n const classes = cx([\n rootClassName,\n {\n [`${rootClassName}--negative`]: context?.negative || negative,\n [`${rootClassName}--reverse`]: context?.reverse,\n },\n className,\n ]);\n\n return (\n <div className={classes} {...props}>\n <div className={cx(`${rootClassName}__section`)}>\n {video ? (\n <div className={cx(`${rootClassName}__video-wrapper`)}>{video}</div>\n ) : (\n <div className={cx(`${rootClassName}__image-wrapper`)}>{image}</div>\n )}\n </div>\n <div className={cx(`${rootClassName}__section`)}>\n <div className={cx(`${rootClassName}__content-wrapper`)}>\n {badge && <div className={cx(`${rootClassName}__badge-wrapper`)}>{badge}</div>}\n {beforeTitle}\n {title?.trim() && (\n <Heading variant={headingVariant} tag={headingTag} negative={negative}>\n {title}\n </Heading>\n )}\n <div className={cx(`${rootClassName}__content`)}>{children}</div>\n {!!listItems?.length && (\n <ul className={cx(`${rootClassName}__list`)}>\n {listItems.map(\n (item) =>\n item && (\n <li className={cx(`${rootClassName}__list-item`)} key={item}>\n <IconCheckmark size=\"xs\" className={cx(`${rootClassName}__list-item-icon`)} />\n <Paragraph negative={negative}>{item}</Paragraph>\n </li>\n )\n )}\n </ul>\n )}\n {actions && <div className={cx(`${rootClassName}__actions`)}>{actions}</div>}\n </div>\n </div>\n </div>\n );\n};\n\nContentBlock.Group = ContentBlockGroup;\nContentBlock.displayName = \"ContentBlock\";\n"],"names":["cx","c","styles","rootClassName","ContentBlockGroupContext","createContext","ContentBlockGroup","children","className","negative","mediaStartPosition","props","classes","jsx","ContentBlock","image","video","badge","beforeTitle","title","actions","listItems","headingTag","headingVariant","context","useContext","jsxs","Heading","item","IconCheckmark","Paragraph"],"mappings":"q2CAMMA,EAAKC,EAAAA,EAAE,KAAKC,CAAM,EAClBC,EAAgB,6BAETC,EAA2BC,EAAAA,cAG9B,IAAI,EAQDC,EAAoB,CAAC,CAChC,SAAAC,EACA,UAAAC,EACA,SAAAC,EACA,mBAAAC,EAAqB,OACrB,GAAGC,CACL,IAA8B,CAC5B,MAAMC,EAAUZ,EAAG,CACjBG,EACA,CACE,CAAC,GAAGA,CAAa,YAAY,EAAGM,CAAA,EAElCD,CAAA,CACD,EAED,OACEK,EAAAA,IAAC,MAAA,CAAI,UAAWD,EAAU,GAAGD,EAC3B,SAAAE,EAAAA,IAACT,EAAyB,SAAzB,CACC,MAAO,CAAE,SAAAK,EAAU,QAASC,IAAuB,OAAA,EAElD,SAAAH,CAAA,CAAA,EAEL,CAEJ,EAEAD,EAAkB,YAAc,oBCpChC,MAAMN,EAAKC,EAAAA,EAAE,KAAKC,CAAM,EAClBC,EAAgB,uBAqBTW,EAAe,CAAC,CAC3B,UAAAN,EACA,SAAAC,EACA,MAAAM,EACA,MAAAC,EACA,MAAAC,EACA,YAAAC,EACA,MAAAC,EACA,QAAAC,EACA,UAAAC,EACA,WAAAC,EAAa,KACb,eAAAC,EAAiB,aACjB,SAAAhB,EACA,GAAGI,CACL,IAAyB,CACvB,MAAMa,EAAUC,EAAAA,WAAWrB,CAAwB,EAE7CQ,EAAUZ,EAAG,CACjBG,EACA,CACE,CAAC,GAAGA,CAAa,YAAY,EAAGqB,GAAS,UAAYf,EACrD,CAAC,GAAGN,CAAa,WAAW,EAAGqB,GAAS,OAAA,EAE1ChB,CAAA,CACD,EAED,OACEkB,EAAAA,KAAC,MAAA,CAAI,UAAWd,EAAU,GAAGD,EAC3B,SAAA,CAAAE,EAAAA,IAAC,MAAA,CAAI,UAAWb,EAAG,GAAGG,CAAa,WAAW,EAC3C,SAAAa,EACCH,MAAC,MAAA,CAAI,UAAWb,EAAG,GAAGG,CAAa,iBAAiB,EAAI,SAAAa,CAAA,CAAM,EAE9DH,EAAAA,IAAC,MAAA,CAAI,UAAWb,EAAG,GAAGG,CAAa,iBAAiB,EAAI,SAAAY,CAAA,CAAM,EAElE,EACAF,MAAC,MAAA,CAAI,UAAWb,EAAG,GAAGG,CAAa,WAAW,EAC5C,SAAAuB,EAAAA,KAAC,OAAI,UAAW1B,EAAG,GAAGG,CAAa,mBAAmB,EACnD,SAAA,CAAAc,GAASJ,EAAAA,IAAC,OAAI,UAAWb,EAAG,GAAGG,CAAa,iBAAiB,EAAI,SAAAc,CAAA,CAAM,EACvEC,EACAC,GAAO,KAAA,GACNN,MAACc,EAAAA,QAAA,CAAQ,QAASJ,EAAgB,IAAKD,EAAY,SAAAb,EAChD,SAAAU,CAAA,CACH,EAEFN,MAAC,OAAI,UAAWb,EAAG,GAAGG,CAAa,WAAW,EAAI,SAAAI,EAAS,EAC1D,CAAC,CAACc,GAAW,QACZR,EAAAA,IAAC,KAAA,CAAG,UAAWb,EAAG,GAAGG,CAAa,QAAQ,EACvC,SAAAkB,EAAU,IACRO,GACCA,GACEF,EAAAA,KAAC,KAAA,CAAG,UAAW1B,EAAG,GAAGG,CAAa,aAAa,EAC7C,SAAA,CAAAU,EAAAA,IAACgB,EAAAA,EAAA,CAAc,KAAK,KAAK,UAAW7B,EAAG,GAAGG,CAAa,kBAAkB,CAAA,CAAG,EAC5EU,EAAAA,IAACiB,EAAAA,UAAA,CAAU,SAAArB,EAAqB,SAAAmB,CAAA,CAAK,CAAA,CAAA,EAFgBA,CAGvD,CAAA,EAGR,EAEDR,SAAY,MAAA,CAAI,UAAWpB,EAAG,GAAGG,CAAa,WAAW,EAAI,SAAAiB,CAAA,CAAQ,CAAA,CAAA,CACxE,CAAA,CACF,CAAA,EACF,CAEJ,EAEAN,EAAa,MAAQR,EACrBQ,EAAa,YAAc"}
1
+ {"version":3,"file":"content-block-DyYAnL2e.js","sources":["../../../components/content-block/src/content-block-group.tsx","../../../components/content-block/src/content-block.tsx"],"sourcesContent":["import React, { createContext, type ReactNode } from \"react\";\nimport type { BaseProps } from \"@purpur/common-types\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./content-block-group.module.scss\";\n\nconst cx = c.bind(styles);\nconst rootClassName = \"purpur-content-block-group\";\n\nexport const ContentBlockGroupContext = createContext<{\n negative?: boolean;\n reverse?: boolean;\n} | null>(null);\n\nexport type ContentBlockGroupProps = Omit<BaseProps, \"children\"> & {\n children: ReactNode;\n negative?: boolean;\n mediaStartPosition?: \"left\" | \"right\";\n};\n\nexport const ContentBlockGroup = ({\n children,\n className,\n negative,\n mediaStartPosition = \"left\",\n ...props\n}: ContentBlockGroupProps) => {\n const classes = cx([\n rootClassName,\n {\n [`${rootClassName}--negative`]: negative,\n },\n className,\n ]);\n\n return (\n <div className={classes} {...props}>\n <ContentBlockGroupContext.Provider\n value={{ negative, reverse: mediaStartPosition === \"right\" }}\n >\n {children}\n </ContentBlockGroupContext.Provider>\n </div>\n );\n};\n\nContentBlockGroup.displayName = \"ContentBlockGroup\";\n","import React, { type ReactNode, useContext } from \"react\";\nimport type { BaseProps } from \"@purpur/common-types\";\nimport { Heading, type HeadingTagType, type HeadingVariant } from \"@purpur/heading\";\nimport { IconCheckmark } from \"@purpur/icon/checkmark\";\nimport { Paragraph } from \"@purpur/paragraph\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./content-block.module.scss\";\nimport { ContentBlockGroup, ContentBlockGroupContext } from \"./content-block-group\";\n\nconst cx = c.bind(styles);\nconst rootClassName = \"purpur-content-block\";\n\nexport type ContentBlockProps = BaseProps & {\n /**\n * @deprecated Set negative on ContentBlockGroup instead\n */\n negative?: boolean;\n image?: ReactNode;\n video?: ReactNode;\n /**\n * @deprecated Use beforeTitle instead\n */\n badge?: ReactNode;\n actions?: ReactNode;\n listItems?: string[];\n beforeTitle?: ReactNode;\n title?: string;\n headingTag?: HeadingTagType;\n headingVariant?: HeadingVariant;\n};\n\nexport const ContentBlock = ({\n className,\n negative,\n image,\n video,\n badge,\n beforeTitle,\n title,\n actions,\n listItems,\n headingTag = \"h2\",\n headingVariant = \"display-15\",\n children,\n ...props\n}: ContentBlockProps) => {\n const context = useContext(ContentBlockGroupContext);\n\n const classes = cx([\n rootClassName,\n {\n [`${rootClassName}--negative`]: context?.negative || negative,\n [`${rootClassName}--reverse`]: context?.reverse,\n },\n className,\n ]);\n\n return (\n <div className={classes} {...props}>\n <div className={cx(`${rootClassName}__section`)}>\n {video ? (\n <div className={cx(`${rootClassName}__video-wrapper`)}>{video}</div>\n ) : (\n <div className={cx(`${rootClassName}__image-wrapper`)}>{image}</div>\n )}\n </div>\n <div className={cx(`${rootClassName}__section`)}>\n <div className={cx(`${rootClassName}__content-wrapper`)}>\n {badge && <div className={cx(`${rootClassName}__badge-wrapper`)}>{badge}</div>}\n {beforeTitle}\n {title?.trim() && (\n <Heading variant={headingVariant} tag={headingTag} negative={negative}>\n {title}\n </Heading>\n )}\n <div className={cx(`${rootClassName}__content`)}>{children}</div>\n {!!listItems?.length && (\n <ul className={cx(`${rootClassName}__list`)}>\n {listItems.map(\n (item) =>\n item && (\n <li className={cx(`${rootClassName}__list-item`)} key={item}>\n <IconCheckmark size=\"xs\" className={cx(`${rootClassName}__list-item-icon`)} />\n <Paragraph negative={negative}>{item}</Paragraph>\n </li>\n )\n )}\n </ul>\n )}\n {actions && <div className={cx(`${rootClassName}__actions`)}>{actions}</div>}\n </div>\n </div>\n </div>\n );\n};\n\nContentBlock.Group = ContentBlockGroup;\nContentBlock.displayName = \"ContentBlock\";\n"],"names":["cx","c","styles","rootClassName","ContentBlockGroupContext","createContext","ContentBlockGroup","children","className","negative","mediaStartPosition","props","classes","jsx","ContentBlock","image","video","badge","beforeTitle","title","actions","listItems","headingTag","headingVariant","context","useContext","jsxs","Heading","item","IconCheckmark","Paragraph"],"mappings":"q2CAMMA,EAAKC,EAAAA,EAAE,KAAKC,CAAM,EAClBC,EAAgB,6BAETC,EAA2BC,EAAAA,cAG9B,IAAI,EAQDC,EAAoB,CAAC,CAChC,SAAAC,EACA,UAAAC,EACA,SAAAC,EACA,mBAAAC,EAAqB,OACrB,GAAGC,CACL,IAA8B,CAC5B,MAAMC,EAAUZ,EAAG,CACjBG,EACA,CACE,CAAC,GAAGA,CAAa,YAAY,EAAGM,CAAA,EAElCD,CAAA,CACD,EAED,OACEK,EAAAA,IAAC,MAAA,CAAI,UAAWD,EAAU,GAAGD,EAC3B,SAAAE,EAAAA,IAACT,EAAyB,SAAzB,CACC,MAAO,CAAE,SAAAK,EAAU,QAASC,IAAuB,OAAA,EAElD,SAAAH,CAAA,CAAA,EAEL,CAEJ,EAEAD,EAAkB,YAAc,oBCpChC,MAAMN,EAAKC,EAAAA,EAAE,KAAKC,CAAM,EAClBC,EAAgB,uBAqBTW,EAAe,CAAC,CAC3B,UAAAN,EACA,SAAAC,EACA,MAAAM,EACA,MAAAC,EACA,MAAAC,EACA,YAAAC,EACA,MAAAC,EACA,QAAAC,EACA,UAAAC,EACA,WAAAC,EAAa,KACb,eAAAC,EAAiB,aACjB,SAAAhB,EACA,GAAGI,CACL,IAAyB,CACvB,MAAMa,EAAUC,EAAAA,WAAWrB,CAAwB,EAE7CQ,EAAUZ,EAAG,CACjBG,EACA,CACE,CAAC,GAAGA,CAAa,YAAY,EAAGqB,GAAS,UAAYf,EACrD,CAAC,GAAGN,CAAa,WAAW,EAAGqB,GAAS,OAAA,EAE1ChB,CAAA,CACD,EAED,OACEkB,EAAAA,KAAC,MAAA,CAAI,UAAWd,EAAU,GAAGD,EAC3B,SAAA,CAAAE,EAAAA,IAAC,MAAA,CAAI,UAAWb,EAAG,GAAGG,CAAa,WAAW,EAC3C,SAAAa,EACCH,MAAC,MAAA,CAAI,UAAWb,EAAG,GAAGG,CAAa,iBAAiB,EAAI,SAAAa,CAAA,CAAM,EAE9DH,EAAAA,IAAC,MAAA,CAAI,UAAWb,EAAG,GAAGG,CAAa,iBAAiB,EAAI,SAAAY,CAAA,CAAM,EAElE,EACAF,MAAC,MAAA,CAAI,UAAWb,EAAG,GAAGG,CAAa,WAAW,EAC5C,SAAAuB,EAAAA,KAAC,OAAI,UAAW1B,EAAG,GAAGG,CAAa,mBAAmB,EACnD,SAAA,CAAAc,GAASJ,EAAAA,IAAC,OAAI,UAAWb,EAAG,GAAGG,CAAa,iBAAiB,EAAI,SAAAc,CAAA,CAAM,EACvEC,EACAC,GAAO,KAAA,GACNN,MAACc,EAAAA,QAAA,CAAQ,QAASJ,EAAgB,IAAKD,EAAY,SAAAb,EAChD,SAAAU,CAAA,CACH,EAEFN,MAAC,OAAI,UAAWb,EAAG,GAAGG,CAAa,WAAW,EAAI,SAAAI,EAAS,EAC1D,CAAC,CAACc,GAAW,QACZR,EAAAA,IAAC,KAAA,CAAG,UAAWb,EAAG,GAAGG,CAAa,QAAQ,EACvC,SAAAkB,EAAU,IACRO,GACCA,GACEF,EAAAA,KAAC,KAAA,CAAG,UAAW1B,EAAG,GAAGG,CAAa,aAAa,EAC7C,SAAA,CAAAU,EAAAA,IAACgB,EAAAA,EAAA,CAAc,KAAK,KAAK,UAAW7B,EAAG,GAAGG,CAAa,kBAAkB,CAAA,CAAG,EAC5EU,EAAAA,IAACiB,EAAAA,UAAA,CAAU,SAAArB,EAAqB,SAAAmB,CAAA,CAAK,CAAA,CAAA,EAFgBA,CAGvD,CAAA,EAGR,EAEDR,SAAY,MAAA,CAAI,UAAWpB,EAAG,GAAGG,CAAa,WAAW,EAAI,SAAAiB,CAAA,CAAQ,CAAA,CAAA,CACxE,CAAA,CACF,CAAA,EACF,CAEJ,EAEAN,EAAa,MAAQR,EACrBQ,EAAa,YAAc"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("./content-block-CrekbIfe.js");exports.ContentBlock=t.ContentBlock;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("./content-block-DyYAnL2e.js");exports.ContentBlock=t.ContentBlock;
2
2
  //# sourceMappingURL=content-block.cjs.js.map
@@ -1,4 +1,4 @@
1
- import { C as e } from "./content-block-CakKeJtN.mjs";
1
+ import { C as e } from "./content-block-CDMrz41K.mjs";
2
2
  export {
3
3
  e as ContentBlock
4
4
  };
@@ -0,0 +1,189 @@
1
+ import { jsxs as z, jsx as t, Fragment as F } from "react/jsx-runtime";
2
+ import { forwardRef as K, useId as O, useMemo as g, useState as U, useEffect as E } from "react";
3
+ import { P as C } from "./paragraph-CwAdFoIm.mjs";
4
+ import { V as X } from "./visually-hidden-BYFkJEp1.mjs";
5
+ import { c as H } from "./bind-CU-R61T-.mjs";
6
+ const Y = {
7
+ "purpur-countdown--size-md": "_purpur-countdown--size-md_ytnsp_1",
8
+ "purpur-countdown--size-lg": "_purpur-countdown--size-lg_ytnsp_5",
9
+ "purpur-countdown--use-container-queries": "_purpur-countdown--use-container-queries_ytnsp_10",
10
+ "purpur-countdown__counter-container": "_purpur-countdown__counter-container_ytnsp_10",
11
+ "purpur-countdown--full-width": "_purpur-countdown--full-width_ytnsp_15",
12
+ "purpur-countdown--use-media-queries": "_purpur-countdown--use-media-queries_ytnsp_25",
13
+ "purpur-countdown": "_purpur-countdown_ytnsp_1",
14
+ "purpur-countdown--variant-primary": "_purpur-countdown--variant-primary_ytnsp_40",
15
+ "purpur-countdown--variant-secondary": "_purpur-countdown--variant-secondary_ytnsp_43",
16
+ "purpur-countdown--negative": "_purpur-countdown--negative_ytnsp_46",
17
+ "purpur-countdown--show-days": "_purpur-countdown--show-days_ytnsp_56",
18
+ "purpur-countdown__label": "_purpur-countdown__label_ytnsp_72"
19
+ }, Z = {
20
+ "purpur-countdown-counter": "_purpur-countdown-counter_23fbu_1",
21
+ "purpur-countdown-counter--size-lg": "_purpur-countdown-counter--size-lg_23fbu_10",
22
+ "purpur-countdown-counter__number": "_purpur-countdown-counter__number_23fbu_15",
23
+ "purpur-countdown-counter--size-md": "_purpur-countdown-counter--size-md_23fbu_21",
24
+ "purpur-countdown-counter__number-list-container": "_purpur-countdown-counter__number-list-container_23fbu_35",
25
+ "purpur-countdown-counter__number-list": "_purpur-countdown-counter__number-list_23fbu_35",
26
+ "purpur-countdown-counter__number--selected": "_purpur-countdown-counter__number--selected_23fbu_61",
27
+ "purpur-countdown-counter__label": "_purpur-countdown-counter__label_23fbu_64",
28
+ "purpur-countdown-counter__label--abbr": "_purpur-countdown-counter__label--abbr_23fbu_71",
29
+ "purpur-countdown-counter__label--full": "_purpur-countdown-counter__label--full_23fbu_74"
30
+ }, w = H.bind(Z), r = "purpur-countdown-counter", v = ({ tag: e, size: a, numbers: n, counterLabels: _ }) => {
31
+ const b = () => {
32
+ const u = _[e], s = _[`${e}Abbr`];
33
+ return /* @__PURE__ */ z(F, { children: [
34
+ s && /* @__PURE__ */ t(C, { className: w(`${r}__label`, `${r}__label--abbr`), children: /* @__PURE__ */ t("abbr", { title: u, children: s }) }),
35
+ /* @__PURE__ */ t(
36
+ C,
37
+ {
38
+ className: w(`${r}__label`, {
39
+ [`${r}__label--full`]: !!s
40
+ }),
41
+ children: u
42
+ }
43
+ )
44
+ ] });
45
+ };
46
+ return /* @__PURE__ */ z(
47
+ "div",
48
+ {
49
+ className: w(r, `${r}--size-${a}`),
50
+ role: "group",
51
+ "aria-hidden": "true",
52
+ "data-testid": `counter-${e}`,
53
+ children: [
54
+ /* @__PURE__ */ t("div", { className: w(`${r}__number-list-container`), children: n.map((u, s) => /* @__PURE__ */ t(
55
+ "ul",
56
+ {
57
+ className: w(`${r}__number-list`),
58
+ style: {
59
+ "--offset": u
60
+ },
61
+ children: B.map((p, i) => {
62
+ const f = p === u;
63
+ return /* @__PURE__ */ t(
64
+ "li",
65
+ {
66
+ className: w(`${r}__number`, {
67
+ [`${r}__number--selected`]: f
68
+ }),
69
+ children: p
70
+ },
71
+ i
72
+ );
73
+ })
74
+ },
75
+ s
76
+ )) }),
77
+ b()
78
+ ]
79
+ }
80
+ );
81
+ }, B = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"];
82
+ function nn(e, a = (/* @__PURE__ */ new Date()).getTime()) {
83
+ const n = Math.max(0, e - a), _ = Math.floor(n / l.day), b = Math.floor(n % l.day / l.hour), u = Math.floor(n % l.hour / l.minute), s = Math.floor(n % l.minute / l.second), p = N(_), i = N(b), f = N(u);
84
+ return {
85
+ seconds: N(s),
86
+ minutes: f,
87
+ hours: i,
88
+ days: p
89
+ };
90
+ }
91
+ const l = {
92
+ second: 1e3,
93
+ minute: 60 * 1e3,
94
+ hour: 3600 * 1e3,
95
+ day: 1440 * 60 * 1e3
96
+ };
97
+ function j(e) {
98
+ return e instanceof Date ? e : new Date(e);
99
+ }
100
+ function N(e) {
101
+ return String(e).padStart(2, "0").split("");
102
+ }
103
+ const x = H.bind(Y), o = "purpur-countdown", en = K(
104
+ ({ renderAfterEnd: e, renderBeforeStart: a, ...n }, _) => {
105
+ const b = O(), {
106
+ size: u = "lg",
107
+ fullWidth: s = !1,
108
+ negative: p = !1,
109
+ showDays: i = !0,
110
+ variant: f = "primary",
111
+ className: q,
112
+ counterLabels: h,
113
+ useMediaQueries: S = !1,
114
+ disabled: T = !1,
115
+ now: D
116
+ } = n, m = g(
117
+ () => D !== void 0 ? j(D) : void 0,
118
+ [D]
119
+ ), [d, I] = U(() => m ?? /* @__PURE__ */ new Date()), M = g(() => j(n.starttime), [n.starttime]), y = g(() => j(n.endtime), [n.endtime]), { days: P, hours: A, minutes: L, seconds: V } = g(
120
+ () => nn(y.getTime(), d.getTime()),
121
+ [y, d]
122
+ );
123
+ E(() => {
124
+ m && I(m);
125
+ }, [m]), E(() => {
126
+ if (T || m || d < M || d > y) return;
127
+ const c = setInterval(() => I(/* @__PURE__ */ new Date()), 1e3);
128
+ return () => clearInterval(c);
129
+ }, [M, y, d, T, m]);
130
+ const Q = M > d, R = y < d;
131
+ if (Q) return a ? a(n) : null;
132
+ if (R) return e ? e(n) : null;
133
+ const W = () => {
134
+ const c = { size: u, counterLabels: h };
135
+ return /* @__PURE__ */ z(F, { children: [
136
+ i && /* @__PURE__ */ t(v, { numbers: P, tag: "days", ...c }),
137
+ /* @__PURE__ */ t(v, { numbers: A, tag: "hours", ...c }),
138
+ /* @__PURE__ */ t(v, { numbers: L, tag: "minutes", ...c }),
139
+ /* @__PURE__ */ t(v, { numbers: V, tag: "seconds", ...c })
140
+ ] });
141
+ }, k = () => {
142
+ const c = () => {
143
+ const $ = [];
144
+ return i && $.push(`${P.join("")} ${h.days}`), $.push(`${A.join("")} ${h.hours}`), $.push(`${L.join("")} ${h.minutes}`), $.push(`${V.join("")} ${h.seconds}`), $.join(", ");
145
+ };
146
+ return /* @__PURE__ */ t(
147
+ X,
148
+ {
149
+ "data-testid": "live-region",
150
+ "aria-live": "polite",
151
+ "aria-label": n["aria-label"],
152
+ children: c()
153
+ }
154
+ );
155
+ }, G = W(), J = x(
156
+ o,
157
+ `${o}--size-${u}`,
158
+ `${o}--variant-${f}`,
159
+ {
160
+ [`${o}--full-width`]: s,
161
+ [`${o}--negative`]: p,
162
+ [`${o}--show-days`]: i,
163
+ [`${o}--use-media-queries`]: S,
164
+ [`${o}--use-container-queries`]: !S
165
+ },
166
+ q
167
+ );
168
+ return /* @__PURE__ */ z(
169
+ "section",
170
+ {
171
+ id: b,
172
+ className: J,
173
+ ref: _,
174
+ role: "timer",
175
+ "data-testid": n["data-testid"],
176
+ children: [
177
+ k(),
178
+ n.label && /* @__PURE__ */ t(C, { className: x(`${o}__label`), variant: "paragraph-100-medium", children: n.label }),
179
+ /* @__PURE__ */ t("div", { className: x(`${o}__counter-container`), children: G })
180
+ ]
181
+ }
182
+ );
183
+ }
184
+ );
185
+ en.displayName = "Countdown";
186
+ export {
187
+ en as C
188
+ };
189
+ //# sourceMappingURL=countdown-5Ni6OlVY.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"countdown-5Ni6OlVY.mjs","sources":["../../../components/countdown/src/counter.tsx","../../../components/countdown/src/utils.ts","../../../components/countdown/src/countdown.tsx"],"sourcesContent":["import React from \"react\";\nimport { Paragraph } from \"@purpur/paragraph\";\nimport c from \"classnames/bind\";\n\nimport { type CounterLabels } from \"./countdown.types\";\nimport styles from \"./counter.module.scss\";\n\nconst cx = c.bind(styles);\n\nconst rootClassName = \"purpur-countdown-counter\";\n\ninterface CounterProps {\n numbers: string[];\n size: \"md\" | \"lg\";\n tag: \"days\" | \"hours\" | \"minutes\" | \"seconds\";\n counterLabels: CounterLabels;\n}\n\nexport const Counter = ({ tag, size, numbers, counterLabels }: CounterProps) => {\n const renderLabel = () => {\n const label = counterLabels[tag];\n const abbreviatedLabel = counterLabels[`${tag}Abbr`];\n\n return (\n <>\n {abbreviatedLabel && (\n <Paragraph className={cx(`${rootClassName}__label`, `${rootClassName}__label--abbr`)}>\n <abbr title={label}>{abbreviatedLabel}</abbr>\n </Paragraph>\n )}\n <Paragraph\n className={cx(`${rootClassName}__label`, {\n [`${rootClassName}__label--full`]: !!abbreviatedLabel,\n })}\n >\n {label}\n </Paragraph>\n </>\n );\n };\n\n return (\n <div\n className={cx(rootClassName, `${rootClassName}--size-${size}`)}\n role=\"group\"\n aria-hidden=\"true\"\n data-testid={`counter-${tag}`}\n >\n <div className={cx(`${rootClassName}__number-list-container`)}>\n {numbers.map((number, index) => {\n return (\n <ul\n key={index}\n className={cx(`${rootClassName}__number-list`)}\n style={\n {\n \"--offset\": number,\n } as React.CSSProperties\n }\n >\n {digits.map((d, i) => {\n const selected = d === number;\n\n return (\n <li\n key={i}\n className={cx(`${rootClassName}__number`, {\n [`${rootClassName}__number--selected`]: selected,\n })}\n >\n {d}\n </li>\n );\n })}\n </ul>\n );\n })}\n </div>\n\n {renderLabel()}\n </div>\n );\n};\n\nconst digits = [\"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\"];\n","export function getDiffs(endtime: number, now = new Date().getTime()) {\n const totalSeconds = Math.max(0, endtime - now);\n\n const _days = Math.floor(totalSeconds / inMs.day);\n const _hours = Math.floor((totalSeconds % inMs.day) / inMs.hour);\n const _minutes = Math.floor((totalSeconds % inMs.hour) / inMs.minute);\n const _seconds = Math.floor((totalSeconds % inMs.minute) / inMs.second);\n\n const days = splitDigits(_days);\n const hours = splitDigits(_hours);\n const minutes = splitDigits(_minutes);\n const seconds = splitDigits(_seconds);\n\n return {\n seconds,\n minutes,\n hours,\n days,\n };\n}\n\nexport const inMs = {\n second: 1000,\n minute: 60 * 1000,\n hour: 60 * 60 * 1000,\n day: 24 * 60 * 60 * 1000,\n};\n\nexport function toDate(t: string | number | Date) {\n return t instanceof Date ? t : new Date(t);\n}\n\nexport function splitDigits(value: number) {\n const s = String(value).padStart(2, \"0\");\n return s.split(\"\");\n}\n","import React, { type ForwardedRef, forwardRef, useEffect, useId, useMemo, useState } from \"react\";\nimport { Paragraph } from \"@purpur/paragraph\";\nimport { VisuallyHidden } from \"@purpur/visually-hidden\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./countdown.module.scss\";\nimport { type CountdownProps } from \"./countdown.types\";\nimport { Counter } from \"./counter\";\nimport { getDiffs, toDate } from \"./utils\";\n\nconst cx = c.bind(styles);\n\nconst rootClassName = \"purpur-countdown\";\n\n/**\n * Countdown component to display a countdown timer.\n * @param props - CountdownProps\n * @returns A React component that displays a countdown timer.\n */\n\nexport const Countdown = forwardRef(\n (\n { renderAfterEnd, renderBeforeStart, ...props }: CountdownProps,\n ref: ForwardedRef<HTMLButtonElement>\n ) => {\n const id = useId();\n\n const {\n size = \"lg\",\n fullWidth = false,\n negative = false,\n showDays = true,\n variant = \"primary\",\n className,\n counterLabels,\n useMediaQueries = false,\n disabled = false,\n now: fixedNow,\n } = props;\n\n const resolvedNow = useMemo(\n () => (fixedNow !== undefined ? toDate(fixedNow) : undefined),\n [fixedNow]\n );\n\n const [now, setNow] = useState<Date>(() => resolvedNow ?? new Date());\n\n const start = useMemo(() => toDate(props.starttime), [props.starttime]);\n const end = useMemo(() => toDate(props.endtime), [props.endtime]);\n const { days, hours, minutes, seconds } = useMemo(\n () => getDiffs(end.getTime(), now.getTime()),\n [end, now]\n );\n\n useEffect(() => {\n if (resolvedNow) {\n setNow(resolvedNow);\n }\n }, [resolvedNow]);\n\n useEffect(() => {\n if (disabled || resolvedNow) return;\n if (now < start || now > end) return;\n const t = setInterval(() => setNow(new Date()), 1000);\n return () => clearInterval(t);\n }, [start, end, now, disabled, resolvedNow]);\n\n const hasNotStarted = start > now;\n const hasEnded = end < now;\n\n // don't render if before start or after end\n if (hasNotStarted) return renderBeforeStart ? renderBeforeStart(props) : null;\n if (hasEnded) return renderAfterEnd ? renderAfterEnd(props) : null;\n\n const getCounters = () => {\n const counterProps = { size, counterLabels };\n\n return (\n <>\n {showDays && <Counter numbers={days} tag=\"days\" {...counterProps} />}\n <Counter numbers={hours} tag=\"hours\" {...counterProps} />\n <Counter numbers={minutes} tag=\"minutes\" {...counterProps} />\n <Counter numbers={seconds} tag=\"seconds\" {...counterProps} />\n </>\n );\n };\n\n // Create a single announcement of the current time (only once)\n\n const renderAnnouncer = () => {\n const getTimeAnnouncement = () => {\n const parts = [];\n\n if (showDays) parts.push(`${days.join(\"\")} ${counterLabels.days}`);\n parts.push(`${hours.join(\"\")} ${counterLabels.hours}`);\n parts.push(`${minutes.join(\"\")} ${counterLabels.minutes}`);\n parts.push(`${seconds.join(\"\")} ${counterLabels.seconds}`);\n\n return parts.join(\", \");\n };\n\n return (\n <VisuallyHidden\n data-testid=\"live-region\"\n aria-live=\"polite\"\n aria-label={props[\"aria-label\"]}\n >\n {getTimeAnnouncement()}\n </VisuallyHidden>\n );\n };\n\n const counters = getCounters();\n\n const classes = cx(\n rootClassName,\n `${rootClassName}--size-${size}`,\n `${rootClassName}--variant-${variant}`,\n {\n [`${rootClassName}--full-width`]: fullWidth,\n [`${rootClassName}--negative`]: negative,\n [`${rootClassName}--show-days`]: showDays,\n [`${rootClassName}--use-media-queries`]: useMediaQueries,\n [`${rootClassName}--use-container-queries`]: !useMediaQueries,\n },\n className\n );\n\n return (\n <section\n id={id}\n className={classes}\n ref={ref}\n role=\"timer\"\n data-testid={props[\"data-testid\"]}\n >\n {/* Visually hidden live region that announces time only once */}\n {renderAnnouncer()}\n {props.label && (\n <Paragraph className={cx(`${rootClassName}__label`)} variant=\"paragraph-100-medium\">\n {props.label}\n </Paragraph>\n )}\n <div className={cx(`${rootClassName}__counter-container`)}>{counters}</div>\n </section>\n );\n }\n);\n\nCountdown.displayName = \"Countdown\";\n"],"names":["cx","c","styles","rootClassName","Counter","tag","size","numbers","counterLabels","renderLabel","label","abbreviatedLabel","jsxs","Fragment","Paragraph","jsx","number","index","digits","d","selected","getDiffs","endtime","now","totalSeconds","_days","inMs","_hours","_minutes","_seconds","days","splitDigits","hours","minutes","toDate","t","value","Countdown","forwardRef","renderAfterEnd","renderBeforeStart","props","ref","id","useId","fullWidth","negative","showDays","variant","className","useMediaQueries","disabled","fixedNow","resolvedNow","useMemo","setNow","useState","start","end","seconds","useEffect","hasNotStarted","hasEnded","getCounters","counterProps","renderAnnouncer","getTimeAnnouncement","parts","VisuallyHidden","counters","classes"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ "use strict";const n=require("react/jsx-runtime"),c=require("react"),M=require("./paragraph-B8HFdNne.js"),G=require("./visually-hidden-C2CKovZx.js"),E=require("./bind-DeUYJ6m9.js"),J={"purpur-countdown--size-md":"_purpur-countdown--size-md_ytnsp_1","purpur-countdown--size-lg":"_purpur-countdown--size-lg_ytnsp_5","purpur-countdown--use-container-queries":"_purpur-countdown--use-container-queries_ytnsp_10","purpur-countdown__counter-container":"_purpur-countdown__counter-container_ytnsp_10","purpur-countdown--full-width":"_purpur-countdown--full-width_ytnsp_15","purpur-countdown--use-media-queries":"_purpur-countdown--use-media-queries_ytnsp_25","purpur-countdown":"_purpur-countdown_ytnsp_1","purpur-countdown--variant-primary":"_purpur-countdown--variant-primary_ytnsp_40","purpur-countdown--variant-secondary":"_purpur-countdown--variant-secondary_ytnsp_43","purpur-countdown--negative":"_purpur-countdown--negative_ytnsp_46","purpur-countdown--show-days":"_purpur-countdown--show-days_ytnsp_56","purpur-countdown__label":"_purpur-countdown__label_ytnsp_72"},K={"purpur-countdown-counter":"_purpur-countdown-counter_23fbu_1","purpur-countdown-counter--size-lg":"_purpur-countdown-counter--size-lg_23fbu_10","purpur-countdown-counter__number":"_purpur-countdown-counter__number_23fbu_15","purpur-countdown-counter--size-md":"_purpur-countdown-counter--size-md_23fbu_21","purpur-countdown-counter__number-list-container":"_purpur-countdown-counter__number-list-container_23fbu_35","purpur-countdown-counter__number-list":"_purpur-countdown-counter__number-list_23fbu_35","purpur-countdown-counter__number--selected":"_purpur-countdown-counter__number--selected_23fbu_61","purpur-countdown-counter__label":"_purpur-countdown-counter__label_23fbu_64","purpur-countdown-counter__label--abbr":"_purpur-countdown-counter__label--abbr_23fbu_71","purpur-countdown-counter__label--full":"_purpur-countdown-counter__label--full_23fbu_74"},b=E.c.bind(K),r="purpur-countdown-counter",j=({tag:u,size:i,numbers:e,counterLabels:p})=>{const h=()=>{const t=p[u],s=p[`${u}Abbr`];return n.jsxs(n.Fragment,{children:[s&&n.jsx(M.Paragraph,{className:b(`${r}__label`,`${r}__label--abbr`),children:n.jsx("abbr",{title:t,children:s})}),n.jsx(M.Paragraph,{className:b(`${r}__label`,{[`${r}__label--full`]:!!s}),children:t})]})};return n.jsxs("div",{className:b(r,`${r}--size-${i}`),role:"group","aria-hidden":"true","data-testid":`counter-${u}`,children:[n.jsx("div",{className:b(`${r}__number-list-container`),children:e.map((t,s)=>n.jsx("ul",{className:b(`${r}__number-list`),style:{"--offset":t},children:O.map((m,d)=>{const f=m===t;return n.jsx("li",{className:b(`${r}__number`,{[`${r}__number--selected`]:f}),children:m},d)})},s))}),h()]})},O=["0","1","2","3","4","5","6","7","8","9"];function U(u,i=new Date().getTime()){const e=Math.max(0,u-i),p=Math.floor(e/_.day),h=Math.floor(e%_.day/_.hour),t=Math.floor(e%_.hour/_.minute),s=Math.floor(e%_.minute/_.second),m=v(p),d=v(h),f=v(t);return{seconds:v(s),minutes:f,hours:d,days:m}}const _={second:1e3,minute:60*1e3,hour:3600*1e3,day:1440*60*1e3};function q(u){return u instanceof Date?u:new Date(u)}function v(u){return String(u).padStart(2,"0").split("")}const z=E.c.bind(J),o="purpur-countdown",F=c.forwardRef(({renderAfterEnd:u,renderBeforeStart:i,...e},p)=>{const h=c.useId(),{size:t="lg",fullWidth:s=!1,negative:m=!1,showDays:d=!0,variant:f="primary",className:D,counterLabels:y,useMediaQueries:C=!1,disabled:P=!1,now:x}=e,w=c.useMemo(()=>x!==void 0?q(x):void 0,[x]),[l,S]=c.useState(()=>w??new Date),N=c.useMemo(()=>q(e.starttime),[e.starttime]),$=c.useMemo(()=>q(e.endtime),[e.endtime]),{days:T,hours:I,minutes:R,seconds:A}=c.useMemo(()=>U($.getTime(),l.getTime()),[$,l]);c.useEffect(()=>{w&&S(w)},[w]),c.useEffect(()=>{if(P||w||l<N||l>$)return;const a=setInterval(()=>S(new Date),1e3);return()=>clearInterval(a)},[N,$,l,P,w]);const H=N>l,L=$<l;if(H)return i?i(e):null;if(L)return u?u(e):null;const Q=()=>{const a={size:t,counterLabels:y};return n.jsxs(n.Fragment,{children:[d&&n.jsx(j,{numbers:T,tag:"days",...a}),n.jsx(j,{numbers:I,tag:"hours",...a}),n.jsx(j,{numbers:R,tag:"minutes",...a}),n.jsx(j,{numbers:A,tag:"seconds",...a})]})},V=()=>{const a=()=>{const g=[];return d&&g.push(`${T.join("")} ${y.days}`),g.push(`${I.join("")} ${y.hours}`),g.push(`${R.join("")} ${y.minutes}`),g.push(`${A.join("")} ${y.seconds}`),g.join(", ")};return n.jsx(G.VisuallyHidden,{"data-testid":"live-region","aria-live":"polite","aria-label":e["aria-label"],children:a()})},W=Q(),k=z(o,`${o}--size-${t}`,`${o}--variant-${f}`,{[`${o}--full-width`]:s,[`${o}--negative`]:m,[`${o}--show-days`]:d,[`${o}--use-media-queries`]:C,[`${o}--use-container-queries`]:!C},D);return n.jsxs("section",{id:h,className:k,ref:p,role:"timer","data-testid":e["data-testid"],children:[V(),e.label&&n.jsx(M.Paragraph,{className:z(`${o}__label`),variant:"paragraph-100-medium",children:e.label}),n.jsx("div",{className:z(`${o}__counter-container`),children:W})]})});F.displayName="Countdown";exports.Countdown=F;
2
+ //# sourceMappingURL=countdown-CGXJyzB2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"countdown-CGXJyzB2.js","sources":["../../../components/countdown/src/counter.tsx","../../../components/countdown/src/utils.ts","../../../components/countdown/src/countdown.tsx"],"sourcesContent":["import React from \"react\";\nimport { Paragraph } from \"@purpur/paragraph\";\nimport c from \"classnames/bind\";\n\nimport { type CounterLabels } from \"./countdown.types\";\nimport styles from \"./counter.module.scss\";\n\nconst cx = c.bind(styles);\n\nconst rootClassName = \"purpur-countdown-counter\";\n\ninterface CounterProps {\n numbers: string[];\n size: \"md\" | \"lg\";\n tag: \"days\" | \"hours\" | \"minutes\" | \"seconds\";\n counterLabels: CounterLabels;\n}\n\nexport const Counter = ({ tag, size, numbers, counterLabels }: CounterProps) => {\n const renderLabel = () => {\n const label = counterLabels[tag];\n const abbreviatedLabel = counterLabels[`${tag}Abbr`];\n\n return (\n <>\n {abbreviatedLabel && (\n <Paragraph className={cx(`${rootClassName}__label`, `${rootClassName}__label--abbr`)}>\n <abbr title={label}>{abbreviatedLabel}</abbr>\n </Paragraph>\n )}\n <Paragraph\n className={cx(`${rootClassName}__label`, {\n [`${rootClassName}__label--full`]: !!abbreviatedLabel,\n })}\n >\n {label}\n </Paragraph>\n </>\n );\n };\n\n return (\n <div\n className={cx(rootClassName, `${rootClassName}--size-${size}`)}\n role=\"group\"\n aria-hidden=\"true\"\n data-testid={`counter-${tag}`}\n >\n <div className={cx(`${rootClassName}__number-list-container`)}>\n {numbers.map((number, index) => {\n return (\n <ul\n key={index}\n className={cx(`${rootClassName}__number-list`)}\n style={\n {\n \"--offset\": number,\n } as React.CSSProperties\n }\n >\n {digits.map((d, i) => {\n const selected = d === number;\n\n return (\n <li\n key={i}\n className={cx(`${rootClassName}__number`, {\n [`${rootClassName}__number--selected`]: selected,\n })}\n >\n {d}\n </li>\n );\n })}\n </ul>\n );\n })}\n </div>\n\n {renderLabel()}\n </div>\n );\n};\n\nconst digits = [\"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\"];\n","export function getDiffs(endtime: number, now = new Date().getTime()) {\n const totalSeconds = Math.max(0, endtime - now);\n\n const _days = Math.floor(totalSeconds / inMs.day);\n const _hours = Math.floor((totalSeconds % inMs.day) / inMs.hour);\n const _minutes = Math.floor((totalSeconds % inMs.hour) / inMs.minute);\n const _seconds = Math.floor((totalSeconds % inMs.minute) / inMs.second);\n\n const days = splitDigits(_days);\n const hours = splitDigits(_hours);\n const minutes = splitDigits(_minutes);\n const seconds = splitDigits(_seconds);\n\n return {\n seconds,\n minutes,\n hours,\n days,\n };\n}\n\nexport const inMs = {\n second: 1000,\n minute: 60 * 1000,\n hour: 60 * 60 * 1000,\n day: 24 * 60 * 60 * 1000,\n};\n\nexport function toDate(t: string | number | Date) {\n return t instanceof Date ? t : new Date(t);\n}\n\nexport function splitDigits(value: number) {\n const s = String(value).padStart(2, \"0\");\n return s.split(\"\");\n}\n","import React, { type ForwardedRef, forwardRef, useEffect, useId, useMemo, useState } from \"react\";\nimport { Paragraph } from \"@purpur/paragraph\";\nimport { VisuallyHidden } from \"@purpur/visually-hidden\";\nimport c from \"classnames/bind\";\n\nimport styles from \"./countdown.module.scss\";\nimport { type CountdownProps } from \"./countdown.types\";\nimport { Counter } from \"./counter\";\nimport { getDiffs, toDate } from \"./utils\";\n\nconst cx = c.bind(styles);\n\nconst rootClassName = \"purpur-countdown\";\n\n/**\n * Countdown component to display a countdown timer.\n * @param props - CountdownProps\n * @returns A React component that displays a countdown timer.\n */\n\nexport const Countdown = forwardRef(\n (\n { renderAfterEnd, renderBeforeStart, ...props }: CountdownProps,\n ref: ForwardedRef<HTMLButtonElement>\n ) => {\n const id = useId();\n\n const {\n size = \"lg\",\n fullWidth = false,\n negative = false,\n showDays = true,\n variant = \"primary\",\n className,\n counterLabels,\n useMediaQueries = false,\n disabled = false,\n now: fixedNow,\n } = props;\n\n const resolvedNow = useMemo(\n () => (fixedNow !== undefined ? toDate(fixedNow) : undefined),\n [fixedNow]\n );\n\n const [now, setNow] = useState<Date>(() => resolvedNow ?? new Date());\n\n const start = useMemo(() => toDate(props.starttime), [props.starttime]);\n const end = useMemo(() => toDate(props.endtime), [props.endtime]);\n const { days, hours, minutes, seconds } = useMemo(\n () => getDiffs(end.getTime(), now.getTime()),\n [end, now]\n );\n\n useEffect(() => {\n if (resolvedNow) {\n setNow(resolvedNow);\n }\n }, [resolvedNow]);\n\n useEffect(() => {\n if (disabled || resolvedNow) return;\n if (now < start || now > end) return;\n const t = setInterval(() => setNow(new Date()), 1000);\n return () => clearInterval(t);\n }, [start, end, now, disabled, resolvedNow]);\n\n const hasNotStarted = start > now;\n const hasEnded = end < now;\n\n // don't render if before start or after end\n if (hasNotStarted) return renderBeforeStart ? renderBeforeStart(props) : null;\n if (hasEnded) return renderAfterEnd ? renderAfterEnd(props) : null;\n\n const getCounters = () => {\n const counterProps = { size, counterLabels };\n\n return (\n <>\n {showDays && <Counter numbers={days} tag=\"days\" {...counterProps} />}\n <Counter numbers={hours} tag=\"hours\" {...counterProps} />\n <Counter numbers={minutes} tag=\"minutes\" {...counterProps} />\n <Counter numbers={seconds} tag=\"seconds\" {...counterProps} />\n </>\n );\n };\n\n // Create a single announcement of the current time (only once)\n\n const renderAnnouncer = () => {\n const getTimeAnnouncement = () => {\n const parts = [];\n\n if (showDays) parts.push(`${days.join(\"\")} ${counterLabels.days}`);\n parts.push(`${hours.join(\"\")} ${counterLabels.hours}`);\n parts.push(`${minutes.join(\"\")} ${counterLabels.minutes}`);\n parts.push(`${seconds.join(\"\")} ${counterLabels.seconds}`);\n\n return parts.join(\", \");\n };\n\n return (\n <VisuallyHidden\n data-testid=\"live-region\"\n aria-live=\"polite\"\n aria-label={props[\"aria-label\"]}\n >\n {getTimeAnnouncement()}\n </VisuallyHidden>\n );\n };\n\n const counters = getCounters();\n\n const classes = cx(\n rootClassName,\n `${rootClassName}--size-${size}`,\n `${rootClassName}--variant-${variant}`,\n {\n [`${rootClassName}--full-width`]: fullWidth,\n [`${rootClassName}--negative`]: negative,\n [`${rootClassName}--show-days`]: showDays,\n [`${rootClassName}--use-media-queries`]: useMediaQueries,\n [`${rootClassName}--use-container-queries`]: !useMediaQueries,\n },\n className\n );\n\n return (\n <section\n id={id}\n className={classes}\n ref={ref}\n role=\"timer\"\n data-testid={props[\"data-testid\"]}\n >\n {/* Visually hidden live region that announces time only once */}\n {renderAnnouncer()}\n {props.label && (\n <Paragraph className={cx(`${rootClassName}__label`)} variant=\"paragraph-100-medium\">\n {props.label}\n </Paragraph>\n )}\n <div className={cx(`${rootClassName}__counter-container`)}>{counters}</div>\n </section>\n );\n }\n);\n\nCountdown.displayName = \"Countdown\";\n"],"names":["cx","c","styles","rootClassName","Counter","tag","size","numbers","counterLabels","renderLabel","label","abbreviatedLabel","jsxs","Fragment","Paragraph","jsx","number","index","digits","d","i","selected","getDiffs","endtime","now","totalSeconds","_days","inMs","_hours","_minutes","_seconds","days","splitDigits","hours","minutes","toDate","t","value","Countdown","forwardRef","renderAfterEnd","renderBeforeStart","props","ref","id","useId","fullWidth","negative","showDays","variant","className","useMediaQueries","disabled","fixedNow","resolvedNow","useMemo","setNow","useState","start","end","seconds","useEffect","hasNotStarted","hasEnded","getCounters","counterProps","renderAnnouncer","getTimeAnnouncement","parts","VisuallyHidden","counters","classes"],"mappings":"i5DAOMA,EAAKC,EAAAA,EAAE,KAAKC,CAAM,EAElBC,EAAgB,2BASTC,EAAU,CAAC,CAAE,IAAAC,EAAK,KAAAC,EAAM,QAAAC,EAAS,cAAAC,KAAkC,CAC9E,MAAMC,EAAc,IAAM,CACxB,MAAMC,EAAQF,EAAcH,CAAG,EACzBM,EAAmBH,EAAc,GAAGH,CAAG,MAAM,EAEnD,OACEO,EAAAA,KAAAC,WAAA,CACG,SAAA,CAAAF,SACEG,EAAAA,UAAA,CAAU,UAAWd,EAAG,GAAGG,CAAa,UAAW,GAAGA,CAAa,eAAe,EACjF,SAAAY,EAAAA,IAAC,OAAA,CAAK,MAAOL,EAAQ,WAAiB,EACxC,EAEFK,EAAAA,IAACD,EAAAA,UAAA,CACC,UAAWd,EAAG,GAAGG,CAAa,UAAW,CACvC,CAAC,GAAGA,CAAa,eAAe,EAAG,CAAC,CAACQ,CAAA,CACtC,EAEA,SAAAD,CAAA,CAAA,CACH,EACF,CAEJ,EAEA,OACEE,EAAAA,KAAC,MAAA,CACC,UAAWZ,EAAGG,EAAe,GAAGA,CAAa,UAAUG,CAAI,EAAE,EAC7D,KAAK,QACL,cAAY,OACZ,cAAa,WAAWD,CAAG,GAE3B,SAAA,CAAAU,EAAAA,IAAC,MAAA,CAAI,UAAWf,EAAG,GAAGG,CAAa,yBAAyB,EACzD,SAAAI,EAAQ,IAAI,CAACS,EAAQC,IAElBF,EAAAA,IAAC,KAAA,CAEC,UAAWf,EAAG,GAAGG,CAAa,eAAe,EAC7C,MACE,CACE,WAAYa,CAAA,EAIf,SAAAE,EAAO,IAAI,CAACC,EAAGC,IAAM,CACpB,MAAMC,EAAWF,IAAMH,EAEvB,OACED,EAAAA,IAAC,KAAA,CAEC,UAAWf,EAAG,GAAGG,CAAa,WAAY,CACxC,CAAC,GAAGA,CAAa,oBAAoB,EAAGkB,CAAA,CACzC,EAEA,SAAAF,CAAA,EALIC,CAAA,CAQX,CAAC,CAAA,EArBIH,CAAA,CAwBV,CAAA,CACH,EAECR,EAAA,CAAY,CAAA,CAAA,CAGnB,EAEMS,EAAS,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAG,ECpFzD,SAASI,EAASC,EAAiBC,MAAU,KAAA,EAAO,UAAW,CACpE,MAAMC,EAAe,KAAK,IAAI,EAAGF,EAAUC,CAAG,EAExCE,EAAQ,KAAK,MAAMD,EAAeE,EAAK,GAAG,EAC1CC,EAAS,KAAK,MAAOH,EAAeE,EAAK,IAAOA,EAAK,IAAI,EACzDE,EAAW,KAAK,MAAOJ,EAAeE,EAAK,KAAQA,EAAK,MAAM,EAC9DG,EAAW,KAAK,MAAOL,EAAeE,EAAK,OAAUA,EAAK,MAAM,EAEhEI,EAAOC,EAAYN,CAAK,EACxBO,EAAQD,EAAYJ,CAAM,EAC1BM,EAAUF,EAAYH,CAAQ,EAGpC,MAAO,CACL,QAHcG,EAAYF,CAAQ,EAIlC,QAAAI,EACA,MAAAD,EACA,KAAAF,CAAA,CAEJ,CAEO,MAAMJ,EAAO,CAClB,OAAQ,IACR,OAAQ,GAAK,IACb,KAAM,KAAU,IAChB,IAAK,KAAU,GAAK,GACtB,EAEO,SAASQ,EAAOC,EAA2B,CAChD,OAAOA,aAAa,KAAOA,EAAI,IAAI,KAAKA,CAAC,CAC3C,CAEO,SAASJ,EAAYK,EAAe,CAEzC,OADU,OAAOA,CAAK,EAAE,SAAS,EAAG,GAAG,EAC9B,MAAM,EAAE,CACnB,CCzBA,MAAMrC,EAAKC,EAAAA,EAAE,KAAKC,CAAM,EAElBC,EAAgB,mBAQTmC,EAAYC,EAAAA,WACvB,CACE,CAAE,eAAAC,EAAgB,kBAAAC,EAAmB,GAAGC,CAAA,EACxCC,IACG,CACH,MAAMC,EAAKC,EAAAA,MAAA,EAEL,CACJ,KAAAvC,EAAO,KACP,UAAAwC,EAAY,GACZ,SAAAC,EAAW,GACX,SAAAC,EAAW,GACX,QAAAC,EAAU,UACV,UAAAC,EACA,cAAA1C,EACA,gBAAA2C,EAAkB,GAClB,SAAAC,EAAW,GACX,IAAKC,CAAA,EACHX,EAEEY,EAAcC,EAAAA,QAClB,IAAOF,IAAa,OAAYlB,EAAOkB,CAAQ,EAAI,OACnD,CAACA,CAAQ,CAAA,EAGL,CAAC7B,EAAKgC,CAAM,EAAIC,EAAAA,SAAe,IAAMH,GAAe,IAAI,IAAM,EAE9DI,EAAQH,UAAQ,IAAMpB,EAAOO,EAAM,SAAS,EAAG,CAACA,EAAM,SAAS,CAAC,EAChEiB,EAAMJ,UAAQ,IAAMpB,EAAOO,EAAM,OAAO,EAAG,CAACA,EAAM,OAAO,CAAC,EAC1D,CAAE,KAAAX,EAAM,MAAAE,EAAO,QAAAC,EAAS,QAAA0B,GAAYL,EAAAA,QACxC,IAAMjC,EAASqC,EAAI,UAAWnC,EAAI,SAAS,EAC3C,CAACmC,EAAKnC,CAAG,CAAA,EAGXqC,EAAAA,UAAU,IAAM,CACVP,GACFE,EAAOF,CAAW,CAEtB,EAAG,CAACA,CAAW,CAAC,EAEhBO,EAAAA,UAAU,IAAM,CAEd,GADIT,GAAYE,GACZ9B,EAAMkC,GAASlC,EAAMmC,EAAK,OAC9B,MAAMvB,EAAI,YAAY,IAAMoB,MAAW,IAAM,EAAG,GAAI,EACpD,MAAO,IAAM,cAAcpB,CAAC,CAC9B,EAAG,CAACsB,EAAOC,EAAKnC,EAAK4B,EAAUE,CAAW,CAAC,EAE3C,MAAMQ,EAAgBJ,EAAQlC,EACxBuC,EAAWJ,EAAMnC,EAGvB,GAAIsC,EAAe,OAAOrB,EAAoBA,EAAkBC,CAAK,EAAI,KACzE,GAAIqB,EAAU,OAAOvB,EAAiBA,EAAeE,CAAK,EAAI,KAE9D,MAAMsB,EAAc,IAAM,CACxB,MAAMC,EAAe,CAAE,KAAA3D,EAAM,cAAAE,CAAA,EAE7B,OACEI,EAAAA,KAAAC,WAAA,CACG,SAAA,CAAAmC,SAAa5C,EAAA,CAAQ,QAAS2B,EAAM,IAAI,OAAQ,GAAGkC,EAAc,QACjE7D,EAAA,CAAQ,QAAS6B,EAAO,IAAI,QAAS,GAAGgC,EAAc,QACtD7D,EAAA,CAAQ,QAAS8B,EAAS,IAAI,UAAW,GAAG+B,EAAc,QAC1D7D,EAAA,CAAQ,QAASwD,EAAS,IAAI,UAAW,GAAGK,CAAA,CAAc,CAAA,EAC7D,CAEJ,EAIMC,EAAkB,IAAM,CAC5B,MAAMC,EAAsB,IAAM,CAChC,MAAMC,EAAQ,CAAA,EAEd,OAAIpB,GAAUoB,EAAM,KAAK,GAAGrC,EAAK,KAAK,EAAE,CAAC,IAAIvB,EAAc,IAAI,EAAE,EACjE4D,EAAM,KAAK,GAAGnC,EAAM,KAAK,EAAE,CAAC,IAAIzB,EAAc,KAAK,EAAE,EACrD4D,EAAM,KAAK,GAAGlC,EAAQ,KAAK,EAAE,CAAC,IAAI1B,EAAc,OAAO,EAAE,EACzD4D,EAAM,KAAK,GAAGR,EAAQ,KAAK,EAAE,CAAC,IAAIpD,EAAc,OAAO,EAAE,EAElD4D,EAAM,KAAK,IAAI,CACxB,EAEA,OACErD,EAAAA,IAACsD,EAAAA,eAAA,CACC,cAAY,cACZ,YAAU,SACV,aAAY3B,EAAM,YAAY,EAE7B,SAAAyB,EAAA,CAAoB,CAAA,CAG3B,EAEMG,EAAWN,EAAA,EAEXO,EAAUvE,EACdG,EACA,GAAGA,CAAa,UAAUG,CAAI,GAC9B,GAAGH,CAAa,aAAa8C,CAAO,GACpC,CACE,CAAC,GAAG9C,CAAa,cAAc,EAAG2C,EAClC,CAAC,GAAG3C,CAAa,YAAY,EAAG4C,EAChC,CAAC,GAAG5C,CAAa,aAAa,EAAG6C,EACjC,CAAC,GAAG7C,CAAa,qBAAqB,EAAGgD,EACzC,CAAC,GAAGhD,CAAa,yBAAyB,EAAG,CAACgD,CAAA,EAEhDD,CAAA,EAGF,OACEtC,EAAAA,KAAC,UAAA,CACC,GAAAgC,EACA,UAAW2B,EACX,IAAA5B,EACA,KAAK,QACL,cAAaD,EAAM,aAAa,EAG/B,SAAA,CAAAwB,EAAA,EACAxB,EAAM,OACL3B,EAAAA,IAACD,EAAAA,UAAA,CAAU,UAAWd,EAAG,GAAGG,CAAa,SAAS,EAAG,QAAQ,uBAC1D,WAAM,MACT,EAEFY,EAAAA,IAAC,OAAI,UAAWf,EAAG,GAAGG,CAAa,qBAAqB,EAAI,SAAAmE,CAAA,CAAS,CAAA,CAAA,CAAA,CAG3E,CACF,EAEAhC,EAAU,YAAc"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("./countdown-hYrFLmRg.js");exports.Countdown=o.Countdown;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("./countdown-CGXJyzB2.js");exports.Countdown=o.Countdown;
2
2
  //# sourceMappingURL=countdown.cjs.js.map
@@ -1,4 +1,4 @@
1
- import { C as r } from "./countdown-BsLsEZBv.mjs";
1
+ import { C as r } from "./countdown-5Ni6OlVY.mjs";
2
2
  export {
3
3
  r as Countdown
4
4
  };