@purpur/library 9.0.6 → 9.0.8

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 (250) hide show
  1. package/CHANGELOG.json +45 -0
  2. package/CHANGELOG.md +22 -1
  3. package/dist/{RichText-DRacgpis.mjs → RichText-Bi51HE6X.mjs} +3 -3
  4. package/dist/{RichText-DRacgpis.mjs.map → RichText-Bi51HE6X.mjs.map} +1 -1
  5. package/dist/{RichText-DMyGiMN0.js → RichText-DNroJJXv.js} +2 -2
  6. package/dist/{RichText-DMyGiMN0.js.map → RichText-DNroJJXv.js.map} +1 -1
  7. package/dist/{ThemeProvider-CrjMv3M8.mjs → ThemeProvider-BR1hJQOD.mjs} +85 -85
  8. package/dist/{ThemeProvider-CrjMv3M8.mjs.map → ThemeProvider-BR1hJQOD.mjs.map} +1 -1
  9. package/dist/{accordion-DWflnyWa.mjs → accordion-BKTz9DM6.mjs} +18 -18
  10. package/dist/{accordion-DWflnyWa.mjs.map → accordion-BKTz9DM6.mjs.map} +1 -1
  11. package/dist/{accordion-CF2fj2uq.js → accordion-DX8efWOt.js} +2 -2
  12. package/dist/{accordion-CF2fj2uq.js.map → accordion-DX8efWOt.js.map} +1 -1
  13. package/dist/accordion.cjs.js +1 -1
  14. package/dist/accordion.es.js +1 -1
  15. package/dist/{alert-badge-u7qAhYbR.mjs → alert-badge-DR8cigWu.mjs} +3 -3
  16. package/dist/{alert-badge-u7qAhYbR.mjs.map → alert-badge-DR8cigWu.mjs.map} +1 -1
  17. package/dist/alert-badge.es.js +1 -1
  18. package/dist/{autocomplete-yD0-1vlF.js → autocomplete-B_OBQM2h.js} +2 -2
  19. package/dist/{autocomplete-yD0-1vlF.js.map → autocomplete-B_OBQM2h.js.map} +1 -1
  20. package/dist/{autocomplete-0kGG_STe.mjs → autocomplete-DJ3zbA0m.mjs} +3 -3
  21. package/dist/{autocomplete-0kGG_STe.mjs.map → autocomplete-DJ3zbA0m.mjs.map} +1 -1
  22. package/dist/autocomplete.cjs.js +1 -1
  23. package/dist/autocomplete.es.js +1 -1
  24. package/dist/button-BxdChrq-.js +2 -0
  25. package/dist/button-BxdChrq-.js.map +1 -0
  26. package/dist/button-D-BBdNhd.mjs +105 -0
  27. package/dist/button-D-BBdNhd.mjs.map +1 -0
  28. package/dist/button.cjs.js +1 -1
  29. package/dist/button.es.js +1 -1
  30. package/dist/{calendar-DDie8jSH.mjs → calendar-9p_aA7KY.mjs} +2 -2
  31. package/dist/{calendar-DDie8jSH.mjs.map → calendar-9p_aA7KY.mjs.map} +1 -1
  32. package/dist/{calendar-pMM0fKEu.js → calendar-BSdvi_DA.js} +2 -2
  33. package/dist/{calendar-pMM0fKEu.js.map → calendar-BSdvi_DA.js.map} +1 -1
  34. package/dist/calendar.cjs.js +1 -1
  35. package/dist/calendar.es.js +1 -1
  36. package/dist/{card-DiMVw06l.mjs → card-CkZQZOz1.mjs} +9 -9
  37. package/dist/{card-DiMVw06l.mjs.map → card-CkZQZOz1.mjs.map} +1 -1
  38. package/dist/{card-B512KHpr.js → card-VMa3cGCP.js} +2 -2
  39. package/dist/{card-B512KHpr.js.map → card-VMa3cGCP.js.map} +1 -1
  40. package/dist/card.cjs.js +1 -1
  41. package/dist/card.es.js +1 -1
  42. package/dist/{checkbox-LYzMiXu7.mjs → checkbox-D6qWgpWR.mjs} +8 -8
  43. package/dist/{checkbox-LYzMiXu7.mjs.map → checkbox-D6qWgpWR.mjs.map} +1 -1
  44. package/dist/checkbox.es.js +1 -1
  45. package/dist/{chip-group-aj1fdnjC.js → chip-group-B775zvKD.js} +2 -2
  46. package/dist/{chip-group-aj1fdnjC.js.map → chip-group-B775zvKD.js.map} +1 -1
  47. package/dist/{chip-group-CJVvfl_J.mjs → chip-group-xuOe7nL3.mjs} +3 -3
  48. package/dist/{chip-group-CJVvfl_J.mjs.map → chip-group-xuOe7nL3.mjs.map} +1 -1
  49. package/dist/chip-group.cjs.js +1 -1
  50. package/dist/chip-group.es.js +1 -1
  51. package/dist/components/button/src/button.d.ts.map +1 -1
  52. package/dist/components/date-field/src/date-field.d.ts.map +1 -1
  53. package/dist/components/stepper/src/stepper-button.d.ts.map +1 -1
  54. package/dist/components/table/src/table-toolbar.d.ts.map +1 -1
  55. package/dist/components/tabs/src/tab-content.d.ts.map +1 -1
  56. package/dist/components/tabs/src/tabs.d.ts.map +1 -1
  57. package/dist/{container-Bw12NgHN.mjs → container-DLjBTB_w.mjs} +3 -3
  58. package/dist/{container-Bw12NgHN.mjs.map → container-DLjBTB_w.mjs.map} +1 -1
  59. package/dist/container.es.js +1 -1
  60. package/dist/{content-block-DUcjAZgG.mjs → content-block-BMOvlH7a.mjs} +6 -6
  61. package/dist/{content-block-DUcjAZgG.mjs.map → content-block-BMOvlH7a.mjs.map} +1 -1
  62. package/dist/{content-block-kzdUWgvH.js → content-block-Cd7xSE8t.js} +2 -2
  63. package/dist/{content-block-kzdUWgvH.js.map → content-block-Cd7xSE8t.js.map} +1 -1
  64. package/dist/content-block.cjs.js +1 -1
  65. package/dist/content-block.es.js +1 -1
  66. package/dist/{countdown-DxAGVUFI.mjs → countdown-DZ4IwkNy.mjs} +12 -12
  67. package/dist/{countdown-DxAGVUFI.mjs.map → countdown-DZ4IwkNy.mjs.map} +1 -1
  68. package/dist/countdown.es.js +1 -1
  69. package/dist/{date-field-D_6iP2fC.mjs → date-field-Ch2lM7-P.mjs} +325 -310
  70. package/dist/{date-field-D_6iP2fC.mjs.map → date-field-Ch2lM7-P.mjs.map} +1 -1
  71. package/dist/date-field-DTI5mQkg.js +2 -0
  72. package/dist/{date-field-CPiTZqa0.js.map → date-field-DTI5mQkg.js.map} +1 -1
  73. package/dist/date-field.cjs.js +1 -1
  74. package/dist/date-field.es.js +1 -1
  75. package/dist/{date-picker-BRnwwZv1.mjs → date-picker-Bt3IaH23.mjs} +5 -5
  76. package/dist/{date-picker-BRnwwZv1.mjs.map → date-picker-Bt3IaH23.mjs.map} +1 -1
  77. package/dist/{date-picker-DlJGggam.js → date-picker-Dk39IXG5.js} +2 -2
  78. package/dist/{date-picker-DlJGggam.js.map → date-picker-Dk39IXG5.js.map} +1 -1
  79. package/dist/date-picker.cjs.js +1 -1
  80. package/dist/date-picker.es.js +1 -1
  81. package/dist/{dismissable-chip-group-DsO2cZaF.js → dismissable-chip-group-CnziecOt.js} +2 -2
  82. package/dist/{dismissable-chip-group-DsO2cZaF.js.map → dismissable-chip-group-CnziecOt.js.map} +1 -1
  83. package/dist/{dismissable-chip-group-Bl0D18qM.mjs → dismissable-chip-group-ZCYOt1sB.mjs} +2 -2
  84. package/dist/{dismissable-chip-group-Bl0D18qM.mjs.map → dismissable-chip-group-ZCYOt1sB.mjs.map} +1 -1
  85. package/dist/dismissable-chip-group.cjs.js +1 -1
  86. package/dist/dismissable-chip-group.es.js +1 -1
  87. package/dist/{drawer-Boqmgh-i.mjs → drawer-B6j8nfAY.mjs} +14 -14
  88. package/dist/{drawer-Boqmgh-i.mjs.map → drawer-B6j8nfAY.mjs.map} +1 -1
  89. package/dist/{drawer-nBpCtIdI.js → drawer-CJsLdd2x.js} +2 -2
  90. package/dist/{drawer-nBpCtIdI.js.map → drawer-CJsLdd2x.js.map} +1 -1
  91. package/dist/drawer.cjs.js +1 -1
  92. package/dist/drawer.es.js +1 -1
  93. package/dist/{floating-ui.react-dom-0ol4sFzt.mjs → floating-ui.react-dom-gsHLgcoR.mjs} +5 -5
  94. package/dist/{floating-ui.react-dom-0ol4sFzt.mjs.map → floating-ui.react-dom-gsHLgcoR.mjs.map} +1 -1
  95. package/dist/{footer-DrjAwjuL.js → footer-BL0ewBZT.js} +2 -2
  96. package/dist/{footer-DrjAwjuL.js.map → footer-BL0ewBZT.js.map} +1 -1
  97. package/dist/{footer-DcWsihxS.mjs → footer-cH07Xqil.mjs} +5 -5
  98. package/dist/{footer-DcWsihxS.mjs.map → footer-cH07Xqil.mjs.map} +1 -1
  99. package/dist/footer.cjs.js +1 -1
  100. package/dist/footer.es.js +1 -1
  101. package/dist/heading-drD5ugCC.js +2 -0
  102. package/dist/{heading-DLCdW6gx.js.map → heading-drD5ugCC.js.map} +1 -1
  103. package/dist/heading-xwBuT_-9.mjs +75 -0
  104. package/dist/{heading-gqtQNo5n.mjs.map → heading-xwBuT_-9.mjs.map} +1 -1
  105. package/dist/heading.cjs.js +1 -1
  106. package/dist/heading.es.js +1 -1
  107. package/dist/{hero-banner-B8fRHxXc.mjs → hero-banner-B5HKmkXc.mjs} +5 -5
  108. package/dist/{hero-banner-B8fRHxXc.mjs.map → hero-banner-B5HKmkXc.mjs.map} +1 -1
  109. package/dist/{hero-banner-D3peC1NR.js → hero-banner-OnNSuxNT.js} +2 -2
  110. package/dist/{hero-banner-D3peC1NR.js.map → hero-banner-OnNSuxNT.js.map} +1 -1
  111. package/dist/hero-banner.cjs.js +1 -1
  112. package/dist/hero-banner.es.js +1 -1
  113. package/dist/library.cjs.js +1 -1
  114. package/dist/library.es.js +44 -44
  115. package/dist/{listbox-u6__DsLw.mjs → listbox-oDeP8FvH.mjs} +2 -2
  116. package/dist/{listbox-u6__DsLw.mjs.map → listbox-oDeP8FvH.mjs.map} +1 -1
  117. package/dist/listbox.es.js +1 -1
  118. package/dist/{modal-C2UQsW-g.mjs → modal-B1eJu9HN.mjs} +19 -19
  119. package/dist/{modal-C2UQsW-g.mjs.map → modal-B1eJu9HN.mjs.map} +1 -1
  120. package/dist/{modal-nyhf5zxG.js → modal-CQiJ98iI.js} +2 -2
  121. package/dist/{modal-nyhf5zxG.js.map → modal-CQiJ98iI.js.map} +1 -1
  122. package/dist/modal.cjs.js +1 -1
  123. package/dist/modal.es.js +1 -1
  124. package/dist/{notification-C32wHljA.mjs → notification-BtcM7Ndu.mjs} +22 -22
  125. package/dist/{notification-C32wHljA.mjs.map → notification-BtcM7Ndu.mjs.map} +1 -1
  126. package/dist/{notification-Bg1vQkQ3.js → notification-Dsg3Vzfi.js} +2 -2
  127. package/dist/{notification-Bg1vQkQ3.js.map → notification-Dsg3Vzfi.js.map} +1 -1
  128. package/dist/{notification-banner-C8XsBDTq.js → notification-banner-B0CUuKZn.js} +2 -2
  129. package/dist/{notification-banner-C8XsBDTq.js.map → notification-banner-B0CUuKZn.js.map} +1 -1
  130. package/dist/{notification-banner-BY2iZOIa.mjs → notification-banner-CbKcE7o4.mjs} +3 -3
  131. package/dist/{notification-banner-BY2iZOIa.mjs.map → notification-banner-CbKcE7o4.mjs.map} +1 -1
  132. package/dist/notification-banner.cjs.js +1 -1
  133. package/dist/notification-banner.es.js +1 -1
  134. package/dist/notification.cjs.js +1 -1
  135. package/dist/notification.es.js +1 -1
  136. package/dist/{pagination-CVVCAQ65.mjs → pagination-BdCjh1Pi.mjs} +2 -2
  137. package/dist/{pagination-CVVCAQ65.mjs.map → pagination-BdCjh1Pi.mjs.map} +1 -1
  138. package/dist/pagination.es.js +1 -1
  139. package/dist/{paragraph-DNtj7OLr.mjs → paragraph-Ci50OF1u.mjs} +3 -3
  140. package/dist/{paragraph-DNtj7OLr.mjs.map → paragraph-Ci50OF1u.mjs.map} +1 -1
  141. package/dist/paragraph.es.js +1 -1
  142. package/dist/{popover-DBMI9Jy1.mjs → popover-D3b2gHm-.mjs} +25 -25
  143. package/dist/{popover-DBMI9Jy1.mjs.map → popover-D3b2gHm-.mjs.map} +1 -1
  144. package/dist/{popover-B1BgSoQx.js → popover-D6k4-oO1.js} +2 -2
  145. package/dist/{popover-B1BgSoQx.js.map → popover-D6k4-oO1.js.map} +1 -1
  146. package/dist/popover.cjs.js +1 -1
  147. package/dist/popover.es.js +1 -1
  148. package/dist/{product-card-rfpJbzzV.mjs → product-card-BU1ThhCx.mjs} +12 -12
  149. package/dist/{product-card-rfpJbzzV.mjs.map → product-card-BU1ThhCx.mjs.map} +1 -1
  150. package/dist/{product-card-DOBHGAa2.js → product-card-CNBegEBW.js} +2 -2
  151. package/dist/{product-card-DOBHGAa2.js.map → product-card-CNBegEBW.js.map} +1 -1
  152. package/dist/product-card.cjs.js +1 -1
  153. package/dist/product-card.es.js +1 -1
  154. package/dist/{promotion-card-BIFOwMrw.js → promotion-card-CXNhskRl.js} +2 -2
  155. package/dist/{promotion-card-BIFOwMrw.js.map → promotion-card-CXNhskRl.js.map} +1 -1
  156. package/dist/{promotion-card-DeyqFnyP.mjs → promotion-card-_bPyVr9t.mjs} +9 -9
  157. package/dist/{promotion-card-DeyqFnyP.mjs.map → promotion-card-_bPyVr9t.mjs.map} +1 -1
  158. package/dist/promotion-card.cjs.js +1 -1
  159. package/dist/promotion-card.es.js +1 -1
  160. package/dist/purpur.css +1 -1
  161. package/dist/{quantity-selector-DPOTlMSq.js → quantity-selector-Bc-4Dnpc.js} +2 -2
  162. package/dist/{quantity-selector-DPOTlMSq.js.map → quantity-selector-Bc-4Dnpc.js.map} +1 -1
  163. package/dist/{quantity-selector-_VcZYLjR.mjs → quantity-selector-Djf8APeL.mjs} +5 -5
  164. package/dist/{quantity-selector-_VcZYLjR.mjs.map → quantity-selector-Djf8APeL.mjs.map} +1 -1
  165. package/dist/quantity-selector.cjs.js +1 -1
  166. package/dist/quantity-selector.es.js +1 -1
  167. package/dist/{radio-button-group-CZ_FnVAi.js → radio-button-group-BaFpGAcD.js} +2 -2
  168. package/dist/{radio-button-group-CZ_FnVAi.js.map → radio-button-group-BaFpGAcD.js.map} +1 -1
  169. package/dist/{radio-button-group-BnCPcmSN.mjs → radio-button-group-CFqPsu5A.mjs} +5 -5
  170. package/dist/{radio-button-group-BnCPcmSN.mjs.map → radio-button-group-CFqPsu5A.mjs.map} +1 -1
  171. package/dist/radio-button-group.cjs.js +1 -1
  172. package/dist/radio-button-group.es.js +1 -1
  173. package/dist/{radio-card-group-DkaMcmen.mjs → radio-card-group-BlRZBa-9.mjs} +16 -16
  174. package/dist/{radio-card-group-DkaMcmen.mjs.map → radio-card-group-BlRZBa-9.mjs.map} +1 -1
  175. package/dist/{radio-card-group-BT5pV3tA.js → radio-card-group-sYcfDPJq.js} +2 -2
  176. package/dist/{radio-card-group-BT5pV3tA.js.map → radio-card-group-sYcfDPJq.js.map} +1 -1
  177. package/dist/radio-card-group.cjs.js +1 -1
  178. package/dist/radio-card-group.es.js +1 -1
  179. package/dist/rich-text.cjs.js +1 -1
  180. package/dist/rich-text.es.js +1 -1
  181. package/dist/scss/heading.mixins.scss +1 -1
  182. package/dist/{search-field-CxX4BBcg.js → search-field-0CBoxcNH.js} +2 -2
  183. package/dist/{search-field-CxX4BBcg.js.map → search-field-0CBoxcNH.js.map} +1 -1
  184. package/dist/{search-field-DH0xeW_J.mjs → search-field-aP_i6Nr0.mjs} +11 -11
  185. package/dist/{search-field-DH0xeW_J.mjs.map → search-field-aP_i6Nr0.mjs.map} +1 -1
  186. package/dist/search-field.cjs.js +1 -1
  187. package/dist/search-field.es.js +1 -1
  188. package/dist/stepper-BaoOY4Ea.js +2 -0
  189. package/dist/stepper-BaoOY4Ea.js.map +1 -0
  190. package/dist/{stepper-BfIbJwZn.mjs → stepper-CTdGj87I.mjs} +68 -71
  191. package/dist/stepper-CTdGj87I.mjs.map +1 -0
  192. package/dist/stepper.cjs.js +1 -1
  193. package/dist/stepper.es.js +1 -1
  194. package/dist/{table-DvcpczWf.mjs → table-D7qthqj_.mjs} +181 -179
  195. package/dist/{table-DvcpczWf.mjs.map → table-D7qthqj_.mjs.map} +1 -1
  196. package/dist/{table-BNeo_B1h.js → table-TdOPMFoP.js} +4 -4
  197. package/dist/{table-BNeo_B1h.js.map → table-TdOPMFoP.js.map} +1 -1
  198. package/dist/table.cjs.js +1 -1
  199. package/dist/table.es.js +1 -1
  200. package/dist/tabs-Bye5lgZ1.mjs +424 -0
  201. package/dist/tabs-Bye5lgZ1.mjs.map +1 -0
  202. package/dist/tabs-D-nfZHIA.js +2 -0
  203. package/dist/tabs-D-nfZHIA.js.map +1 -0
  204. package/dist/tabs.cjs.js +1 -1
  205. package/dist/tabs.es.js +1 -1
  206. package/dist/{text-area-Cb9Hm2Z9.mjs → text-area-CpYWt99s.mjs} +3 -3
  207. package/dist/{text-area-Cb9Hm2Z9.mjs.map → text-area-CpYWt99s.mjs.map} +1 -1
  208. package/dist/text-area.es.js +1 -1
  209. package/dist/{text-field-PKAaXO1N.mjs → text-field-9zPmL99g.mjs} +2 -2
  210. package/dist/{text-field-PKAaXO1N.mjs.map → text-field-9zPmL99g.mjs.map} +1 -1
  211. package/dist/{text-field-B8a-NKm4.js → text-field-CKCwxTJX.js} +2 -2
  212. package/dist/{text-field-B8a-NKm4.js.map → text-field-CKCwxTJX.js.map} +1 -1
  213. package/dist/text-field.cjs.js +1 -1
  214. package/dist/text-field.es.js +1 -1
  215. package/dist/theme.es.js +2 -2
  216. package/dist/{toggle-Cezg5MUc.mjs → toggle-D23x1wWk.mjs} +9 -9
  217. package/dist/{toggle-Cezg5MUc.mjs.map → toggle-D23x1wWk.mjs.map} +1 -1
  218. package/dist/toggle.es.js +1 -1
  219. package/dist/tokens.es.js +3 -3
  220. package/dist/{tooltip-DXi7ikUT.mjs → tooltip-BtGtu3ph.mjs} +12 -12
  221. package/dist/{tooltip-DXi7ikUT.mjs.map → tooltip-BtGtu3ph.mjs.map} +1 -1
  222. package/dist/{tooltip-CLQLxoaf.js → tooltip-eUP35j3v.js} +2 -2
  223. package/dist/{tooltip-CLQLxoaf.js.map → tooltip-eUP35j3v.js.map} +1 -1
  224. package/dist/tooltip.cjs.js +1 -1
  225. package/dist/tooltip.es.js +1 -1
  226. package/dist/{useColorScheme-DRQcbSog.mjs → useColorScheme-9rgSgG0N.mjs} +2 -2
  227. package/dist/{useColorScheme-DRQcbSog.mjs.map → useColorScheme-9rgSgG0N.mjs.map} +1 -1
  228. package/dist/{variables-91UvS2rU.mjs → variables-BVgnpUH9.mjs} +253 -253
  229. package/dist/{variables-91UvS2rU.mjs.map → variables-BVgnpUH9.mjs.map} +1 -1
  230. package/dist/{variables-BSsIx39i.mjs → variables-DkCN2x27.mjs} +7 -7
  231. package/dist/{variables-BSsIx39i.mjs.map → variables-DkCN2x27.mjs.map} +1 -1
  232. package/dist/{variables-BUfnQw6H.mjs → variables-Dr3Hsdn-.mjs} +9 -9
  233. package/dist/{variables-BUfnQw6H.mjs.map → variables-Dr3Hsdn-.mjs.map} +1 -1
  234. package/package.json +22 -22
  235. package/scripts/generate.mts +4 -1
  236. package/vite-plugin-generate-components-metadata.js +4 -1
  237. package/dist/button-ChYUPi2k.js +0 -2
  238. package/dist/button-ChYUPi2k.js.map +0 -1
  239. package/dist/button-DBX_tvfJ.mjs +0 -105
  240. package/dist/button-DBX_tvfJ.mjs.map +0 -1
  241. package/dist/date-field-CPiTZqa0.js +0 -2
  242. package/dist/heading-DLCdW6gx.js +0 -2
  243. package/dist/heading-gqtQNo5n.mjs +0 -75
  244. package/dist/stepper-B248FwO-.js +0 -2
  245. package/dist/stepper-B248FwO-.js.map +0 -1
  246. package/dist/stepper-BfIbJwZn.mjs.map +0 -1
  247. package/dist/tabs-CfHd4UQ2.js +0 -2
  248. package/dist/tabs-CfHd4UQ2.js.map +0 -1
  249. package/dist/tabs-CoXMAwMx.mjs +0 -396
  250. package/dist/tabs-CoXMAwMx.mjs.map +0 -1
@@ -1,8 +1,8 @@
1
- import { jsxs as v, jsx as u, Fragment as A } from "react/jsx-runtime";
1
+ import { jsxs as v, jsx as u, Fragment as T } from "react/jsx-runtime";
2
2
  import { forwardRef as k, useId as G, useState as J, useMemo as z, useEffect as K } from "react";
3
- import { a as M } from "./paragraph-DNtj7OLr.mjs";
3
+ import { P as M } from "./paragraph-Ci50OF1u.mjs";
4
4
  import { V as O } from "./visually-hidden-BYFkJEp1.mjs";
5
- import { c as L } from "./bind-CU-R61T-.mjs";
5
+ import { c as A } from "./bind-CU-R61T-.mjs";
6
6
  const U = {
7
7
  "purpur-countdown--size-md": "_purpur-countdown--size-md_ytnsp_1",
8
8
  "purpur-countdown--size-lg": "_purpur-countdown--size-lg_ytnsp_5",
@@ -27,10 +27,10 @@ const U = {
27
27
  "purpur-countdown-counter__label": "_purpur-countdown-counter__label_23fbu_64",
28
28
  "purpur-countdown-counter__label--abbr": "_purpur-countdown-counter__label--abbr_23fbu_71",
29
29
  "purpur-countdown-counter__label--full": "_purpur-countdown-counter__label--full_23fbu_74"
30
- }, m = L.bind(X), r = "purpur-countdown-counter", $ = ({ tag: t, size: a, numbers: n, counterLabels: _ }) => {
30
+ }, m = A.bind(X), r = "purpur-countdown-counter", $ = ({ tag: t, size: a, numbers: n, counterLabels: _ }) => {
31
31
  const w = () => {
32
32
  const s = _[t], e = _[`${t}Abbr`];
33
- return /* @__PURE__ */ v(A, { children: [
33
+ return /* @__PURE__ */ v(T, { children: [
34
34
  e && /* @__PURE__ */ u(M, { className: m(`${r}__label`, `${r}__label--abbr`), children: /* @__PURE__ */ u("abbr", { title: s, children: e }) }),
35
35
  /* @__PURE__ */ u(
36
36
  M,
@@ -94,13 +94,13 @@ const d = {
94
94
  hour: 3600 * 1e3,
95
95
  day: 1440 * 60 * 1e3
96
96
  };
97
- function T(t) {
97
+ function P(t) {
98
98
  return t instanceof Date ? t : new Date(t);
99
99
  }
100
100
  function g(t) {
101
101
  return String(t).padStart(2, "0").split("");
102
102
  }
103
- const D = L.bind(U), o = "purpur-countdown", B = k(
103
+ const D = A.bind(U), o = "purpur-countdown", B = k(
104
104
  ({ renderAfterEnd: t, renderBeforeStart: a, ...n }, _) => {
105
105
  const w = /* @__PURE__ */ new Date(), s = G(), {
106
106
  size: e = "lg",
@@ -108,10 +108,10 @@ const D = L.bind(U), o = "purpur-countdown", B = k(
108
108
  negative: b = !1,
109
109
  showDays: i = !0,
110
110
  variant: j = "primary",
111
- className: P,
111
+ className: L,
112
112
  counterLabels: f,
113
113
  useMediaQueries: C = !1
114
- } = n, [p, V] = J(w), N = z(() => T(n.starttime), [n.starttime]), y = z(() => T(n.endtime), [n.endtime]), { days: q, hours: x, minutes: I, seconds: S } = z(() => Z(y.getTime()), [p]);
114
+ } = n, [p, V] = J(w), N = z(() => P(n.starttime), [n.starttime]), y = z(() => P(n.endtime), [n.endtime]), { days: q, hours: x, minutes: I, seconds: S } = z(() => Z(y.getTime()), [p]);
115
115
  K(() => {
116
116
  if (p < N || p > y) return;
117
117
  const c = setInterval(() => V(/* @__PURE__ */ new Date()), 1e3);
@@ -122,7 +122,7 @@ const D = L.bind(U), o = "purpur-countdown", B = k(
122
122
  if (F) return t ? t(n) : null;
123
123
  const H = () => {
124
124
  const c = { size: e, counterLabels: f };
125
- return /* @__PURE__ */ v(A, { children: [
125
+ return /* @__PURE__ */ v(T, { children: [
126
126
  i && /* @__PURE__ */ u($, { numbers: q, tag: "days", ...c }),
127
127
  /* @__PURE__ */ u($, { numbers: x, tag: "hours", ...c }),
128
128
  /* @__PURE__ */ u($, { numbers: I, tag: "minutes", ...c }),
@@ -153,7 +153,7 @@ const D = L.bind(U), o = "purpur-countdown", B = k(
153
153
  [`${o}--use-media-queries`]: C,
154
154
  [`${o}--use-container-queries`]: !C
155
155
  },
156
- P
156
+ L
157
157
  );
158
158
  return /* @__PURE__ */ v(
159
159
  "section",
@@ -176,4 +176,4 @@ B.displayName = "Countdown";
176
176
  export {
177
177
  B as C
178
178
  };
179
- //# sourceMappingURL=countdown-DxAGVUFI.mjs.map
179
+ //# sourceMappingURL=countdown-DZ4IwkNy.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"countdown-DxAGVUFI.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) {\n const now = new Date().getTime();\n\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 nowInit = new Date();\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 } = props;\n\n const [now, setNow] = useState<Date>(nowInit);\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(() => getDiffs(end.getTime()), [now]);\n\n useEffect(() => {\n if (now < start || now > end) return;\n const t = setInterval(() => setNow(new Date()), 1000);\n return () => clearInterval(t);\n }, [start, end, now]);\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","value","Countdown","forwardRef","renderAfterEnd","renderBeforeStart","props","ref","nowInit","id","useId","fullWidth","negative","showDays","variant","className","useMediaQueries","setNow","useState","start","useMemo","end","seconds","useEffect","t","hasNotStarted","hasEnded","getCounters","counterProps","renderAnnouncer","getTimeAnnouncement","parts","VisuallyHidden","counters","classes"],"mappings":"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"}
1
+ {"version":3,"file":"countdown-DZ4IwkNy.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) {\n const now = new Date().getTime();\n\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 nowInit = new Date();\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 } = props;\n\n const [now, setNow] = useState<Date>(nowInit);\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(() => getDiffs(end.getTime()), [now]);\n\n useEffect(() => {\n if (now < start || now > end) return;\n const t = setInterval(() => setNow(new Date()), 1000);\n return () => clearInterval(t);\n }, [start, end, now]);\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","value","Countdown","forwardRef","renderAfterEnd","renderBeforeStart","props","ref","nowInit","id","useId","fullWidth","negative","showDays","variant","className","useMediaQueries","setNow","useState","start","useMemo","end","seconds","useEffect","t","hasNotStarted","hasEnded","getCounters","counterProps","renderAnnouncer","getTimeAnnouncement","parts","VisuallyHidden","counters","classes"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { C as r } from "./countdown-DxAGVUFI.mjs";
1
+ import { C as r } from "./countdown-DZ4IwkNy.mjs";
2
2
  export {
3
3
  r as Countdown
4
4
  };