@purpur/library 9.2.3 → 9.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (304) hide show
  1. package/CHANGELOG.json +39 -0
  2. package/CHANGELOG.md +20 -1
  3. package/dist/LICENSE.txt +1 -1
  4. package/dist/{RichText-Bi51HE6X.mjs → RichText-jZ-sHV-u.mjs} +2 -2
  5. package/dist/{RichText-Bi51HE6X.mjs.map → RichText-jZ-sHV-u.mjs.map} +1 -1
  6. package/dist/{RichText-DNroJJXv.js → RichText-yobCUjTD.js} +2 -2
  7. package/dist/{RichText-DNroJJXv.js.map → RichText-yobCUjTD.js.map} +1 -1
  8. package/dist/{ThemeProvider-bkyFCeo6.mjs → ThemeProvider-CkX-BNWN.mjs} +2 -2
  9. package/dist/ThemeProvider-CkX-BNWN.mjs.map +1 -0
  10. package/dist/{ThemeProvider-5r7lDX-h.js → ThemeProvider-Dy771oix.js} +2 -2
  11. package/dist/ThemeProvider-Dy771oix.js.map +1 -0
  12. package/dist/{accordion-OtFSShSB.mjs → accordion-CIU4U8-4.mjs} +3 -3
  13. package/dist/accordion-CIU4U8-4.mjs.map +1 -0
  14. package/dist/{accordion-OsA0HvdA.js → accordion-DyhOG54L.js} +2 -2
  15. package/dist/accordion-DyhOG54L.js.map +1 -0
  16. package/dist/accordion.cjs.js +1 -1
  17. package/dist/accordion.es.js +3 -3
  18. package/dist/{autocomplete-D9uCJzjY.js → autocomplete-3kV1btuI.js} +2 -2
  19. package/dist/{autocomplete-D9uCJzjY.js.map → autocomplete-3kV1btuI.js.map} +1 -1
  20. package/dist/{autocomplete-BipmyKf0.mjs → autocomplete-BEGRn-Wh.mjs} +2 -2
  21. package/dist/{autocomplete-BipmyKf0.mjs.map → autocomplete-BEGRn-Wh.mjs.map} +1 -1
  22. package/dist/autocomplete.cjs.js +1 -1
  23. package/dist/autocomplete.es.js +1 -1
  24. package/dist/{card-DR2hvxjZ.mjs → card-C2mdp-ur.mjs} +2 -2
  25. package/dist/{card-DR2hvxjZ.mjs.map → card-C2mdp-ur.mjs.map} +1 -1
  26. package/dist/{card-CRHXm5NR.js → card-DFdUs5RG.js} +2 -2
  27. package/dist/{card-CRHXm5NR.js.map → card-DFdUs5RG.js.map} +1 -1
  28. package/dist/card.cjs.js +1 -1
  29. package/dist/card.es.js +1 -1
  30. package/dist/{carousel-BkxojLwn.mjs → carousel-DLkTL9sj.mjs} +29 -29
  31. package/dist/{carousel-BkxojLwn.mjs.map → carousel-DLkTL9sj.mjs.map} +1 -1
  32. package/dist/{carousel-BCw-5u92.js → carousel-DXrtxRz5.js} +2 -2
  33. package/dist/{carousel-BCw-5u92.js.map → carousel-DXrtxRz5.js.map} +1 -1
  34. package/dist/carousel.cjs.js +1 -1
  35. package/dist/carousel.es.js +1 -1
  36. package/dist/checkbox-BHTx89JQ.mjs +236 -0
  37. package/dist/checkbox-BHTx89JQ.mjs.map +1 -0
  38. package/dist/checkbox-CDNcNv6d.js +2 -0
  39. package/dist/checkbox-CDNcNv6d.js.map +1 -0
  40. package/dist/checkbox.cjs.js +1 -1
  41. package/dist/checkbox.es.js +1 -1
  42. package/dist/{comparison-table-D1zJpdLL.mjs → comparison-table-8bOJmz-L.mjs} +116 -116
  43. package/dist/comparison-table-8bOJmz-L.mjs.map +1 -0
  44. package/dist/comparison-table-mKL2IHXW.js +2 -0
  45. package/dist/comparison-table-mKL2IHXW.js.map +1 -0
  46. package/dist/comparison-table.cjs.js +1 -1
  47. package/dist/comparison-table.es.js +1 -1
  48. package/dist/components/accordion/src/accordion.d.ts +1 -1
  49. package/dist/components/accordion/src/accordion.d.ts.map +1 -1
  50. package/dist/components/checkbox/src/checkbox.d.ts +4 -0
  51. package/dist/components/checkbox/src/checkbox.d.ts.map +1 -1
  52. package/dist/components/comparison-table/src/comparison-table.d.ts +1 -1
  53. package/dist/components/comparison-table/src/comparison-table.d.ts.map +1 -1
  54. package/dist/components/dismissable-chip-group/src/dismissable-chip-group-item.d.ts.map +1 -1
  55. package/dist/components/dismissable-chip-group/src/dismissable-chip-group.d.ts +4 -2
  56. package/dist/components/dismissable-chip-group/src/dismissable-chip-group.d.ts.map +1 -1
  57. package/dist/components/drawer/src/drawer-content.d.ts.map +1 -1
  58. package/dist/components/drawer/src/drawer.context.d.ts +1 -0
  59. package/dist/components/drawer/src/drawer.context.d.ts.map +1 -1
  60. package/dist/components/drawer/src/drawer.d.ts +6 -0
  61. package/dist/components/drawer/src/drawer.d.ts.map +1 -1
  62. package/dist/components/dropdown/src/dropdown-combobox.d.ts.map +1 -1
  63. package/dist/components/dropdown/src/dropdown-select.d.ts.map +1 -1
  64. package/dist/components/dropdown/src/dropdown-shared.d.ts +3 -2
  65. package/dist/components/dropdown/src/dropdown-shared.d.ts.map +1 -1
  66. package/dist/components/dropdown/src/useDropdown.d.ts +2 -1
  67. package/dist/components/dropdown/src/useDropdown.d.ts.map +1 -1
  68. package/dist/components/listbox/src/listbox-item.d.ts +2 -2
  69. package/dist/components/listbox/src/listbox-item.d.ts.map +1 -1
  70. package/dist/components/listbox/src/listbox.d.ts +4 -1
  71. package/dist/components/listbox/src/listbox.d.ts.map +1 -1
  72. package/dist/components/toggle/src/toggle.d.ts +1 -0
  73. package/dist/components/toggle/src/toggle.d.ts.map +1 -1
  74. package/dist/components-metadata.js +4 -2
  75. package/dist/{content-block-Dm3L4g8w.mjs → content-block-CakKeJtN.mjs} +2 -2
  76. package/dist/{content-block-Dm3L4g8w.mjs.map → content-block-CakKeJtN.mjs.map} +1 -1
  77. package/dist/{content-block-CDRUH0pg.js → content-block-CrekbIfe.js} +2 -2
  78. package/dist/{content-block-CDRUH0pg.js.map → content-block-CrekbIfe.js.map} +1 -1
  79. package/dist/content-block.cjs.js +1 -1
  80. package/dist/content-block.es.js +1 -1
  81. package/dist/{countdown-DZ4IwkNy.mjs → countdown-BsLsEZBv.mjs} +2 -2
  82. package/dist/{countdown-DZ4IwkNy.mjs.map → countdown-BsLsEZBv.mjs.map} +1 -1
  83. package/dist/{countdown-CqYsZigV.js → countdown-hYrFLmRg.js} +2 -2
  84. package/dist/{countdown-CqYsZigV.js.map → countdown-hYrFLmRg.js.map} +1 -1
  85. package/dist/countdown.cjs.js +1 -1
  86. package/dist/countdown.es.js +1 -1
  87. package/dist/{date-picker-DwFDRL5Z.mjs → date-picker-CbUNbOhn.mjs} +2 -2
  88. package/dist/{date-picker-DwFDRL5Z.mjs.map → date-picker-CbUNbOhn.mjs.map} +1 -1
  89. package/dist/{date-picker-DVrcu2QU.js → date-picker-DYXNB5aU.js} +2 -2
  90. package/dist/{date-picker-DVrcu2QU.js.map → date-picker-DYXNB5aU.js.map} +1 -1
  91. package/dist/date-picker.cjs.js +1 -1
  92. package/dist/date-picker.es.js +1 -1
  93. package/dist/dismissable-chip-group-2updhyuR.js +2 -0
  94. package/dist/dismissable-chip-group-2updhyuR.js.map +1 -0
  95. package/dist/dismissable-chip-group-Cfs2s2BH.mjs +94 -0
  96. package/dist/dismissable-chip-group-Cfs2s2BH.mjs.map +1 -0
  97. package/dist/dismissable-chip-group.cjs.js +1 -1
  98. package/dist/dismissable-chip-group.es.js +6 -5
  99. package/dist/drawer-8Acg4wkV.mjs +574 -0
  100. package/dist/drawer-8Acg4wkV.mjs.map +1 -0
  101. package/dist/drawer-BLHgcEqb.js +2 -0
  102. package/dist/drawer-BLHgcEqb.js.map +1 -0
  103. package/dist/drawer.cjs.js +1 -1
  104. package/dist/drawer.es.js +1 -1
  105. package/dist/dropdown-CMO_VD5e.mjs +916 -0
  106. package/dist/dropdown-CMO_VD5e.mjs.map +1 -0
  107. package/dist/dropdown-DJKNQnuo.js +2 -0
  108. package/dist/dropdown-DJKNQnuo.js.map +1 -0
  109. package/dist/dropdown.cjs.js +1 -1
  110. package/dist/dropdown.es.js +1 -1
  111. package/dist/{footer-BXs8uzTA.mjs → footer-BLPlXaZK.mjs} +4 -4
  112. package/dist/{footer-BXs8uzTA.mjs.map → footer-BLPlXaZK.mjs.map} +1 -1
  113. package/dist/{footer-DF9adlni.js → footer-D9AcPwlH.js} +2 -2
  114. package/dist/{footer-DF9adlni.js.map → footer-D9AcPwlH.js.map} +1 -1
  115. package/dist/footer.cjs.js +1 -1
  116. package/dist/footer.es.js +1 -1
  117. package/dist/{hero-banner-BfxclVFT.js → hero-banner-D1A-_qou.js} +2 -2
  118. package/dist/{hero-banner-BfxclVFT.js.map → hero-banner-D1A-_qou.js.map} +1 -1
  119. package/dist/{hero-banner-CxPvhXD2.mjs → hero-banner-DkC_BqM7.mjs} +3 -3
  120. package/dist/{hero-banner-CxPvhXD2.mjs.map → hero-banner-DkC_BqM7.mjs.map} +1 -1
  121. package/dist/hero-banner.cjs.js +1 -1
  122. package/dist/hero-banner.es.js +1 -1
  123. package/dist/{index-CKCTy3ZL.mjs → index-3NV-ckDX.mjs} +4 -4
  124. package/dist/{index-CKCTy3ZL.mjs.map → index-3NV-ckDX.mjs.map} +1 -1
  125. package/dist/libraries/theme/src/theme-props.d.ts +1 -0
  126. package/dist/libraries/theme/src/theme-props.d.ts.map +1 -1
  127. package/dist/libraries/tokens/dist/color/variables.d.ts +1 -0
  128. package/dist/libraries/tokens/dist/color/variables.dark.d.ts +1 -0
  129. package/dist/library.cjs.js +1 -1
  130. package/dist/library.es.js +593 -590
  131. package/dist/listbox-ATP4hOWF.js +2 -0
  132. package/dist/listbox-ATP4hOWF.js.map +1 -0
  133. package/dist/listbox-i6BQQ-NZ.mjs +73 -0
  134. package/dist/listbox-i6BQQ-NZ.mjs.map +1 -0
  135. package/dist/listbox.cjs.js +1 -1
  136. package/dist/listbox.es.js +3 -2
  137. package/dist/{modal-COF_UhvY.js → modal-Baisuc6m.js} +2 -2
  138. package/dist/{modal-COF_UhvY.js.map → modal-Baisuc6m.js.map} +1 -1
  139. package/dist/{modal-BMg43Fvd.mjs → modal-fp37VbrH.mjs} +3 -3
  140. package/dist/{modal-BMg43Fvd.mjs.map → modal-fp37VbrH.mjs.map} +1 -1
  141. package/dist/modal.cjs.js +1 -1
  142. package/dist/modal.es.js +1 -1
  143. package/dist/{notification-BqjaT4E7.js → notification-B5bNNq86.js} +2 -2
  144. package/dist/{notification-BqjaT4E7.js.map → notification-B5bNNq86.js.map} +1 -1
  145. package/dist/{notification-DdRS5BF2.mjs → notification-BbQCmsnY.mjs} +2 -2
  146. package/dist/{notification-DdRS5BF2.mjs.map → notification-BbQCmsnY.mjs.map} +1 -1
  147. package/dist/notification.cjs.js +1 -1
  148. package/dist/notification.es.js +1 -1
  149. package/dist/{pagination-CVYUacXN.mjs → pagination-Cc_4zCQA.mjs} +2 -2
  150. package/dist/{pagination-CVYUacXN.mjs.map → pagination-Cc_4zCQA.mjs.map} +1 -1
  151. package/dist/{pagination-Bwlkvqye.js → pagination-rFRdkHII.js} +2 -2
  152. package/dist/{pagination-Bwlkvqye.js.map → pagination-rFRdkHII.js.map} +1 -1
  153. package/dist/pagination.cjs.js +1 -1
  154. package/dist/pagination.es.js +1 -1
  155. package/dist/paragraph-By4jMjnH.js +2 -0
  156. package/dist/{paragraph-BsI53OR0.js.map → paragraph-By4jMjnH.js.map} +1 -1
  157. package/dist/{paragraph-Ci50OF1u.mjs → paragraph-DSxXmX_0.mjs} +23 -23
  158. package/dist/{paragraph-Ci50OF1u.mjs.map → paragraph-DSxXmX_0.mjs.map} +1 -1
  159. package/dist/paragraph.cjs.js +1 -1
  160. package/dist/paragraph.es.js +1 -1
  161. package/dist/{popover-XCUa2GfC.js → popover-B0XJZ5mj.js} +2 -2
  162. package/dist/{popover-XCUa2GfC.js.map → popover-B0XJZ5mj.js.map} +1 -1
  163. package/dist/{popover-Dwqs1wGH.mjs → popover-_xJATlhN.mjs} +2 -2
  164. package/dist/{popover-Dwqs1wGH.mjs.map → popover-_xJATlhN.mjs.map} +1 -1
  165. package/dist/popover.cjs.js +1 -1
  166. package/dist/popover.es.js +1 -1
  167. package/dist/{product-card-BfB82XpS.mjs → product-card-C3_N0t-R.mjs} +3 -3
  168. package/dist/{product-card-BfB82XpS.mjs.map → product-card-C3_N0t-R.mjs.map} +1 -1
  169. package/dist/{product-card-bVQ7JhHj.js → product-card-CoY1KggV.js} +2 -2
  170. package/dist/{product-card-bVQ7JhHj.js.map → product-card-CoY1KggV.js.map} +1 -1
  171. package/dist/product-card.cjs.js +1 -1
  172. package/dist/product-card.es.js +1 -1
  173. package/dist/{promotion-card-DqBBt2sz.js → promotion-card-Bag64gqP.js} +2 -2
  174. package/dist/{promotion-card-DqBBt2sz.js.map → promotion-card-Bag64gqP.js.map} +1 -1
  175. package/dist/{promotion-card-BhNw94sC.mjs → promotion-card-BiHnQvhn.mjs} +4 -4
  176. package/dist/{promotion-card-BhNw94sC.mjs.map → promotion-card-BiHnQvhn.mjs.map} +1 -1
  177. package/dist/promotion-card.cjs.js +1 -1
  178. package/dist/promotion-card.es.js +1 -1
  179. package/dist/purpur.css +1 -1
  180. package/dist/quantity-selector-CDSfcTb1.js +2 -0
  181. package/dist/{quantity-selector-8AkKNDik.js.map → quantity-selector-CDSfcTb1.js.map} +1 -1
  182. package/dist/{quantity-selector-C23kU1hF.mjs → quantity-selector-CvBvnMeB.mjs} +35 -35
  183. package/dist/{quantity-selector-C23kU1hF.mjs.map → quantity-selector-CvBvnMeB.mjs.map} +1 -1
  184. package/dist/quantity-selector.cjs.js +1 -1
  185. package/dist/quantity-selector.es.js +1 -1
  186. package/dist/{radio-card-group-BlRZBa-9.mjs → radio-card-group-CneOprGY.mjs} +2 -2
  187. package/dist/{radio-card-group-BlRZBa-9.mjs.map → radio-card-group-CneOprGY.mjs.map} +1 -1
  188. package/dist/{radio-card-group-sYcfDPJq.js → radio-card-group-Ctuvg61o.js} +2 -2
  189. package/dist/{radio-card-group-sYcfDPJq.js.map → radio-card-group-Ctuvg61o.js.map} +1 -1
  190. package/dist/radio-card-group.cjs.js +1 -1
  191. package/dist/radio-card-group.es.js +1 -1
  192. package/dist/rich-text.cjs.js +1 -1
  193. package/dist/rich-text.es.js +1 -1
  194. package/dist/{search-field-CZ9mIyZ-.mjs → search-field-CpkHGIYi.mjs} +3 -3
  195. package/dist/{search-field-CZ9mIyZ-.mjs.map → search-field-CpkHGIYi.mjs.map} +1 -1
  196. package/dist/{search-field-DD9UkOca.js → search-field-Z0PqDARl.js} +2 -2
  197. package/dist/{search-field-DD9UkOca.js.map → search-field-Z0PqDARl.js.map} +1 -1
  198. package/dist/search-field.cjs.js +1 -1
  199. package/dist/search-field.es.js +1 -1
  200. package/dist/{stepper-uBfDdIju.mjs → stepper-CNnx_NiR.mjs} +2 -2
  201. package/dist/{stepper-uBfDdIju.mjs.map → stepper-CNnx_NiR.mjs.map} +1 -1
  202. package/dist/{stepper-w-raIwqJ.js → stepper-Df4X7DDR.js} +2 -2
  203. package/dist/{stepper-w-raIwqJ.js.map → stepper-Df4X7DDR.js.map} +1 -1
  204. package/dist/stepper.cjs.js +1 -1
  205. package/dist/stepper.es.js +1 -1
  206. package/dist/{table-Dx_dhGT6.mjs → table-D_sdSJyr.mjs} +6 -6
  207. package/dist/{table-Dx_dhGT6.mjs.map → table-D_sdSJyr.mjs.map} +1 -1
  208. package/dist/{table-DsgqX7Vv.js → table-gnGUejtb.js} +2 -2
  209. package/dist/{table-DsgqX7Vv.js.map → table-gnGUejtb.js.map} +1 -1
  210. package/dist/table.cjs.js +1 -1
  211. package/dist/table.es.js +1 -1
  212. package/dist/{text-area-DDZ_GQPW.mjs → text-area-kJvg6cFp.mjs} +3 -3
  213. package/dist/{text-area-DDZ_GQPW.mjs.map → text-area-kJvg6cFp.mjs.map} +1 -1
  214. package/dist/{text-area-C6W0fDiQ.js → text-area-peNKG7g4.js} +2 -2
  215. package/dist/{text-area-C6W0fDiQ.js.map → text-area-peNKG7g4.js.map} +1 -1
  216. package/dist/text-area.cjs.js +1 -1
  217. package/dist/text-area.es.js +1 -1
  218. package/dist/theme.cjs.js +1 -1
  219. package/dist/theme.es.js +2 -2
  220. package/dist/toggle-B8ZLUVar.js +2 -0
  221. package/dist/{toggle-C8IwTbX8.js.map → toggle-B8ZLUVar.js.map} +1 -1
  222. package/dist/toggle-CY3J8BRX.mjs +302 -0
  223. package/dist/{toggle-D23x1wWk.mjs.map → toggle-CY3J8BRX.mjs.map} +1 -1
  224. package/dist/toggle.cjs.js +1 -1
  225. package/dist/toggle.es.js +1 -1
  226. package/dist/tokens/color/variables.css +1 -0
  227. package/dist/tokens/color/variables.d.ts +1 -0
  228. package/dist/tokens/color/variables.dark.css +1 -0
  229. package/dist/tokens/color/variables.dark.d.ts +1 -0
  230. package/dist/tokens/color/variables.dark.js +1 -0
  231. package/dist/tokens/color/variables.dark.json +2 -1
  232. package/dist/tokens/color/variables.dark.scss +1 -0
  233. package/dist/tokens/color/variables.js +1 -0
  234. package/dist/tokens/color/variables.json +2 -1
  235. package/dist/tokens/color/variables.scss +1 -0
  236. package/dist/tokens.cjs.js +1 -1
  237. package/dist/tokens.es.js +76 -75
  238. package/dist/{tooltip-0pLBlDG3.js → tooltip-C8Zxnqdb.js} +2 -2
  239. package/dist/{tooltip-0pLBlDG3.js.map → tooltip-C8Zxnqdb.js.map} +1 -1
  240. package/dist/{tooltip-Kom0VfOC.mjs → tooltip-VlURN8H3.mjs} +2 -2
  241. package/dist/{tooltip-Kom0VfOC.mjs.map → tooltip-VlURN8H3.mjs.map} +1 -1
  242. package/dist/tooltip.cjs.js +1 -1
  243. package/dist/tooltip.es.js +1 -1
  244. package/dist/use-autocomplete.es-BwAzMcau.js +2 -0
  245. package/dist/use-autocomplete.es-BwAzMcau.js.map +1 -0
  246. package/dist/{use-autocomplete.es-CVv3z8t6.mjs → use-autocomplete.es-CKb0RHKG.mjs} +37 -35
  247. package/dist/use-autocomplete.es-CKb0RHKG.mjs.map +1 -0
  248. package/dist/useColorScheme-DNyjsWX9.js +2 -0
  249. package/dist/{useColorScheme-0GMDl2GF.js.map → useColorScheme-DNyjsWX9.js.map} +1 -1
  250. package/dist/{useColorScheme-Di_Q0JR4.mjs → useColorScheme-tAkY9LHt.mjs} +2 -2
  251. package/dist/{useColorScheme-Di_Q0JR4.mjs.map → useColorScheme-tAkY9LHt.mjs.map} +1 -1
  252. package/dist/{variables-CKp4o9Tn.mjs → variables-B5hbV0Uy.mjs} +128 -127
  253. package/dist/variables-B5hbV0Uy.mjs.map +1 -0
  254. package/dist/variables-DoI78zZc.js +2 -0
  255. package/dist/variables-DoI78zZc.js.map +1 -0
  256. package/package.json +21 -21
  257. package/tokens/color/variables.css +1 -0
  258. package/tokens/color/variables.d.ts +1 -0
  259. package/tokens/color/variables.dark.css +1 -0
  260. package/tokens/color/variables.dark.d.ts +1 -0
  261. package/tokens/color/variables.dark.js +1 -0
  262. package/tokens/color/variables.dark.json +2 -1
  263. package/tokens/color/variables.dark.scss +1 -0
  264. package/tokens/color/variables.js +1 -0
  265. package/tokens/color/variables.json +2 -1
  266. package/tokens/color/variables.scss +1 -0
  267. package/dist/ThemeProvider-5r7lDX-h.js.map +0 -1
  268. package/dist/ThemeProvider-bkyFCeo6.mjs.map +0 -1
  269. package/dist/accordion-OsA0HvdA.js.map +0 -1
  270. package/dist/accordion-OtFSShSB.mjs.map +0 -1
  271. package/dist/checkbox-D6qWgpWR.mjs +0 -231
  272. package/dist/checkbox-D6qWgpWR.mjs.map +0 -1
  273. package/dist/checkbox-Dk3bZkZ3.js +0 -2
  274. package/dist/checkbox-Dk3bZkZ3.js.map +0 -1
  275. package/dist/comparison-table-B8w65g43.js +0 -2
  276. package/dist/comparison-table-B8w65g43.js.map +0 -1
  277. package/dist/comparison-table-D1zJpdLL.mjs.map +0 -1
  278. package/dist/dismissable-chip-group-Cd23yjBa.js +0 -2
  279. package/dist/dismissable-chip-group-Cd23yjBa.js.map +0 -1
  280. package/dist/dismissable-chip-group-D-gD93ON.mjs +0 -89
  281. package/dist/dismissable-chip-group-D-gD93ON.mjs.map +0 -1
  282. package/dist/drawer-Db2Mujc6.mjs +0 -565
  283. package/dist/drawer-Db2Mujc6.mjs.map +0 -1
  284. package/dist/drawer-DlwagnO4.js +0 -2
  285. package/dist/drawer-DlwagnO4.js.map +0 -1
  286. package/dist/dropdown-BsqVnd7z.js +0 -2
  287. package/dist/dropdown-BsqVnd7z.js.map +0 -1
  288. package/dist/dropdown-TO3Mh0bk.mjs +0 -910
  289. package/dist/dropdown-TO3Mh0bk.mjs.map +0 -1
  290. package/dist/listbox-COBHLRtB.js +0 -2
  291. package/dist/listbox-COBHLRtB.js.map +0 -1
  292. package/dist/listbox-DG4KmQP_.mjs +0 -66
  293. package/dist/listbox-DG4KmQP_.mjs.map +0 -1
  294. package/dist/paragraph-BsI53OR0.js +0 -2
  295. package/dist/quantity-selector-8AkKNDik.js +0 -2
  296. package/dist/toggle-C8IwTbX8.js +0 -2
  297. package/dist/toggle-D23x1wWk.mjs +0 -287
  298. package/dist/use-autocomplete.es-BHDgQLae.js +0 -2
  299. package/dist/use-autocomplete.es-BHDgQLae.js.map +0 -1
  300. package/dist/use-autocomplete.es-CVv3z8t6.mjs.map +0 -1
  301. package/dist/useColorScheme-0GMDl2GF.js +0 -2
  302. package/dist/variables-CKp4o9Tn.mjs.map +0 -1
  303. package/dist/variables-DH61hVNE.js +0 -2
  304. package/dist/variables-DH61hVNE.js.map +0 -1
package/CHANGELOG.json CHANGED
@@ -1,6 +1,45 @@
1
1
  {
2
2
  "name": "@purpur/library",
3
3
  "entries": [
4
+ {
5
+ "version": "9.4.0",
6
+ "tag": "@purpur/library_v9.4.0",
7
+ "date": "Mon, 11 May 2026 13:20:15 GMT",
8
+ "comments": {
9
+ "none": [
10
+ {
11
+ "comment": "Drawer: Added modal prop, to allow for setting modal=false when loading Components that uses Portals inside the drawer."
12
+ }
13
+ ]
14
+ }
15
+ },
16
+ {
17
+ "version": "9.3.0",
18
+ "tag": "@purpur/library_v9.3.0",
19
+ "date": "Mon, 11 May 2026 08:07:05 GMT",
20
+ "comments": {
21
+ "none": [
22
+ {
23
+ "comment": "Accordion: Rename `NegativeContext` to `AccordionNegativeContext`"
24
+ },
25
+ {
26
+ "comment": "DismissableChipGroup: Add support for `negative` variant and rename `SizeContext` to `DismissableChipGroupSizeContext`"
27
+ },
28
+ {
29
+ "comment": "Checkbox: Add negative variant support"
30
+ },
31
+ {
32
+ "comment": "Tokens: Add color.text.interactive.selected-negative semantic color token"
33
+ },
34
+ {
35
+ "comment": "Dropdown: Fix select-all hover background color for negative"
36
+ },
37
+ {
38
+ "comment": "Listbox: Add negative variant"
39
+ }
40
+ ]
41
+ }
42
+ },
4
43
  {
5
44
  "version": "9.2.3",
6
45
  "tag": "@purpur/library_v9.2.3",
package/CHANGELOG.md CHANGED
@@ -1,6 +1,25 @@
1
1
  # Change Log - @purpur/library
2
2
 
3
- This log was last generated on Tue, 28 Apr 2026 13:37:49 GMT and should not be manually modified.
3
+ This log was last generated on Mon, 11 May 2026 13:20:15 GMT and should not be manually modified.
4
+
5
+ ## 9.4.0
6
+ Mon, 11 May 2026 13:20:15 GMT
7
+
8
+ ### Updates
9
+
10
+ - Drawer: Added modal prop, to allow for setting modal=false when loading Components that uses Portals inside the drawer.
11
+
12
+ ## 9.3.0
13
+ Mon, 11 May 2026 08:07:05 GMT
14
+
15
+ ### Updates
16
+
17
+ - Accordion: Rename `NegativeContext` to `AccordionNegativeContext`
18
+ - DismissableChipGroup: Add support for `negative` variant and rename `SizeContext` to `DismissableChipGroupSizeContext`
19
+ - Checkbox: Add negative variant support
20
+ - Tokens: Add color.text.interactive.selected-negative semantic color token
21
+ - Dropdown: Fix select-all hover background color for negative
22
+ - Listbox: Add negative variant
4
23
 
5
24
  ## 9.2.3
6
25
  Tue, 28 Apr 2026 13:37:49 GMT
package/dist/LICENSE.txt CHANGED
@@ -473,7 +473,7 @@ Private: false
473
473
  ---
474
474
 
475
475
  Name: @purpur/chat-field
476
- Version: 9.2.2
476
+ Version: 9.3.0
477
477
  License: AGPL-3.0-only
478
478
  Private: false
479
479
 
@@ -2,7 +2,7 @@ import { jsx as l, jsxs as L } from "react/jsx-runtime";
2
2
  import { Fragment as I } from "react";
3
3
  import { H as h } from "./heading-xwBuT_-9.mjs";
4
4
  import { a as p } from "./link-DY5WLpyc.mjs";
5
- import { P as H } from "./paragraph-Ci50OF1u.mjs";
5
+ import { P as H } from "./paragraph-DSxXmX_0.mjs";
6
6
  import { T as N } from "./text-spacing-BU0mkEf9.mjs";
7
7
  const m = {
8
8
  HYPERLINK: "hyperlink",
@@ -186,4 +186,4 @@ export {
186
186
  j as R,
187
187
  B as r
188
188
  };
189
- //# sourceMappingURL=RichText-Bi51HE6X.mjs.map
189
+ //# sourceMappingURL=RichText-jZ-sHV-u.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"RichText-Bi51HE6X.mjs","sources":["../../../components/rich-text/src/constants.ts","../../../components/rich-text/src/renderers.tsx","../../../components/rich-text/src/utils.ts","../../../components/rich-text/src/RichText.tsx"],"sourcesContent":["export const INLINE = {\n HYPERLINK: \"hyperlink\",\n ENTRY_HYPERLINK: \"entry-hyperlink\",\n ASSET_HYPERLINK: \"asset-hyperlink\",\n RESOURCE_HYPERLINK: \"resource-hyperlink\",\n EMBEDDED_ENTRY: \"embedded-entry-inline\",\n} as const;\n\nexport const BLOCK = {\n DOCUMENT: \"document\",\n PARAGRAPH: \"paragraph\",\n TEXT: \"text\",\n HYPERLINK: \"hyperlink\",\n ENTRY_HYPERLINK: \"entry-hyperlink\",\n\n HEADER_1: \"header-1\",\n HEADER_2: \"header-2\",\n HEADER_3: \"header-3\",\n HEADER_4: \"header-4\",\n HEADER_5: \"header-5\",\n HEADER_6: \"header-6\",\n\n HEADING_1: \"heading-1\",\n HEADING_2: \"heading-2\",\n HEADING_3: \"heading-3\",\n HEADING_4: \"heading-4\",\n HEADING_5: \"heading-5\",\n HEADING_6: \"heading-6\",\n\n TABLE: \"table\",\n TABLE_ROW: \"table-row\",\n TABLE_HEADER_CELL: \"table-header-cell\",\n TABLE_CELL: \"table-cell\",\n TABLE_BODY: \"table-body\",\n\n OL_LIST: \"ordered-list\",\n UL_LIST: \"unordered-list\",\n LIST_ITEM: \"list-item\",\n\n HR: \"horizontal-row\",\n QUOTE: \"blockquote\",\n\n EMBEDDED_ENTRY: \"embedded-entity\",\n EMBEDDED_ASSET: \"embedded-asset-block\",\n\n IMAGE: \"image\",\n VIDEO: \"video\",\n RICHTEXTDOCUMENT: \"rich-text-document\",\n TEASER: \"teaser\",\n} as const;\n\nexport const MARK = {\n BOLD: \"bold\",\n ITALIC: \"italic\",\n UNDERLINE: \"underline\",\n CODE: \"code\",\n} as const;\n\nexport const ELEMENT = {\n DIV: \"div\",\n SPAN: \"span\",\n} as const;\n","import React, { type ReactNode } from \"react\";\n\nimport { BLOCK } from \"./constants\";\nimport { type RichTextNode } from \"./types\";\n\nconst isHeaderRow = (row: RichTextNode): boolean =>\n row.type === BLOCK.TABLE_ROW &&\n !!row.content?.every((node) => node.type === BLOCK.TABLE_HEADER_CELL);\n\n/**\n * Wrap the first rows with <thead /> if it consists of only <th> elements.\n * Wrap the rest of the rows with <tbody />.\n */\nexport const tableRenderer = (richTextNode: RichTextNode, children: ReactNode[]) => {\n if (richTextNode.type !== BLOCK.TABLE) {\n return children;\n }\n const { content: tableContent } = richTextNode;\n const [headerRows, bodyRows] = (tableContent || []).reduce<[RichTextNode[], RichTextNode[]]>(\n ([headers, body], row) => {\n return isHeaderRow(row) ? [[...headers, row], body] : [headers, [...body, row]];\n },\n [[], []]\n );\n const headerRowChildren = children.slice(0, headerRows.length);\n const bodyRowChildren = children.slice(headerRows.length, children.length);\n return (\n <div className=\"purpur-rich-text-table-scroll-container\">\n <div className=\"purpur-rich-text-table-inner-scroll-container\">\n <table>\n {headerRows.length > 0 && <thead>{headerRowChildren}</thead>}\n {bodyRows.length > 0 && <tbody>{bodyRowChildren}</tbody>}\n </table>\n </div>\n </div>\n );\n};\n","import { BLOCK, INLINE } from \"./constants\";\nimport { type Block, type Inline, type Mark, type RichTextNode, type Value } from \"./types\";\n\nexport type MarkNode = {\n type: Mark;\n};\n\ntype TextNode<T> = RichTextNode<T> & {\n type: \"text\";\n value: string;\n marks: MarkNode[];\n};\n\ntype InlineNode<T> = RichTextNode<T> & {\n type: Inline;\n content: Array<Inline | Text>;\n};\n\ntype BlockNode<T> = RichTextNode<T> & {\n type: Block;\n content: Array<Block | Inline | Text>;\n};\n\nconst hasValue = (obj: Record<string, unknown>, value: unknown) =>\n Object.values(obj).includes(value);\n\nconst isText = <T>(node: RichTextNode<T> | undefined): node is TextNode<T> => node?.type === \"text\";\n\nconst isBlock = <T>(node: RichTextNode<T> | undefined): node is BlockNode<T> =>\n !isInline(node) && !isText(node) && hasValue(BLOCK, node?.type);\n\nconst isInline = <T>(node: RichTextNode<T> | undefined): node is InlineNode<T> =>\n hasValue(INLINE, node?.type);\n\nexport const safeJsonParse = <T>(jsonString: string): T | null => {\n try {\n return JSON.parse(jsonString);\n } catch {\n return null;\n }\n};\n\n// This is equivalent to https://github.com/contentful/rich-text/tree/master/packages/rich-text-plain-text-renderer\nexport const richToPlainText = <T>(data: string, blockDivisor = \" \"): string => {\n const rootNode = safeJsonParse<RichTextNode<T>>(data);\n\n if (!rootNode || !rootNode.content) {\n return \"\";\n }\n\n return rootNode.content.reduce((acc: string, node: RichTextNode<T>, i) => {\n let nodeTextValue = \"\";\n\n if (isText(node)) {\n nodeTextValue = node.value;\n } else if (isBlock(node) || isInline(node)) {\n nodeTextValue = richToPlainText(JSON.stringify(node), blockDivisor);\n if (!nodeTextValue.length) {\n return acc;\n }\n }\n\n const nextNode = rootNode?.content?.[i + 1];\n const divisor = isBlock(nextNode) ? blockDivisor : \"\";\n\n return acc + nodeTextValue + divisor;\n }, \"\");\n};\n\nexport function normalizeNode<T = Value>(node: RichTextNode<T>) {\n if (\n node.type === BLOCK.IMAGE &&\n typeof node.value === \"object\" &&\n node?.value &&\n \"image\" in node.value &&\n node?.value?.image?.url\n ) {\n return { ...node, value: { ...node.value, url: node.value.image.url } };\n }\n\n if (\n node.type === BLOCK.VIDEO &&\n typeof node.value === \"object\" &&\n node?.value &&\n \"video\" in node.value &&\n node.value.video?.url\n ) {\n return { ...node, value: { ...node.value, url: node.value.video.url } };\n }\n\n return node;\n}\n","import React, { Fragment, type ReactNode } from \"react\";\nimport { Heading } from \"@purpur/heading\";\nimport { Link } from \"@purpur/link\";\nimport { Paragraph } from \"@purpur/paragraph\";\nimport { TextSpacing } from \"@purpur/text-spacing\";\n\nimport { BLOCK, MARK } from \"./constants\";\nimport { tableRenderer } from \"./renderers\";\nimport type {\n ImageProp,\n LinkProp,\n Mark,\n NodeTypes,\n RichTextNode,\n RichTextProps,\n Value,\n VideoPosterProp,\n} from \"./types\";\nimport { normalizeNode } from \"./utils\";\n\n// Inspired by https://github.com/contentful/rich-text/blob/master/packages/rich-text-react-renderer/src/index.tsx\nconst MARK_TYPES = {\n [MARK.BOLD]: (children: ReactNode) => <b>{children}</b>,\n [MARK.ITALIC]: (children: ReactNode) => <i>{children}</i>,\n [MARK.UNDERLINE]: (children: ReactNode) => <u>{children}</u>,\n [MARK.CODE]: (children: ReactNode) => <code>{children}</code>,\n};\n\nconst getNodeType = (node: RichTextNode) => {\n const type = node.type ?? node.nodeType!;\n if (type.startsWith(\"heading-\")) return type.replace(\"heading-\", \"header-\");\n if (type.startsWith(\"entry-hyperlink\")) return type.replace(\"entry-hyperlink\", \"hyperlink\");\n return type;\n};\n\nfunction getNodeTypes<T = Value>(\n link: LinkProp,\n image: ImageProp,\n videoPoster: VideoPosterProp\n): NodeTypes<T> {\n return {\n [BLOCK.RICHTEXTDOCUMENT]: (_, children) => children,\n [BLOCK.DOCUMENT]: (_, children) => children,\n [BLOCK.PARAGRAPH]: (_, children) => <Paragraph variant=\"paragraph-200\">{children}</Paragraph>,\n [BLOCK.TEXT]: (node) => {\n const { value: nodeValue, marks } = node;\n const value = typeof nodeValue === \"string\" ? nodeValue.replace(/\\n/g, \"<br />\") : nodeValue;\n\n const element = <span dangerouslySetInnerHTML={{ __html: value as string }} />;\n\n if (!marks) {\n return element;\n }\n return marks.reduce((accumulator: ReactNode, currentValue: Mark | { type: Mark }) => {\n return MARK_TYPES[typeof currentValue === \"string\" ? currentValue : currentValue.type](\n accumulator\n );\n }, element);\n },\n [BLOCK.HYPERLINK]: (node, children) => {\n const uri = node.uri ?? (node.data?.uri as string);\n\n if (link) {\n return <Link variant=\"text\">{link(children, uri)}</Link>;\n }\n return (\n <Link variant=\"text\">\n <a href={uri}>{children}</a>\n </Link>\n );\n },\n [BLOCK.HR]: () => <hr />,\n [BLOCK.HEADER_2]: (_, children) => (\n <Heading tag=\"h2\" variant=\"title-300\">\n {children}\n </Heading>\n ),\n [BLOCK.HEADER_3]: (_, children) => (\n <Heading tag=\"h3\" variant=\"title-200\">\n {children}\n </Heading>\n ),\n [BLOCK.HEADER_4]: (_, children) => (\n <Heading tag=\"h4\" variant=\"title-100\">\n {children}\n </Heading>\n ),\n [BLOCK.HEADER_5]: (_, children) => (\n <Heading tag=\"h5\" variant=\"title-100\">\n {children}\n </Heading>\n ),\n [BLOCK.HEADER_6]: (_, children) => (\n <Heading tag=\"h6\" variant=\"title-100\">\n {children}\n </Heading>\n ),\n [BLOCK.TABLE]: tableRenderer,\n [BLOCK.TABLE_ROW]: (_, children) => <tr>{children}</tr>,\n [BLOCK.TABLE_HEADER_CELL]: (_, children) => <th scope=\"col\">{children}</th>,\n [BLOCK.TABLE_CELL]: (_, children) => {\n return <td>{children}</td>;\n },\n [BLOCK.TABLE_BODY]: (_, children) => <tbody>{children}</tbody>,\n [BLOCK.LIST_ITEM]: (_, children) => <li>{children}</li>,\n [BLOCK.OL_LIST]: (_, children) => <ol>{children}</ol>,\n [BLOCK.UL_LIST]: (_, children) => <ul>{children}</ul>,\n [BLOCK.QUOTE]: (_, children) => <blockquote>&#8220;{children}&#8221;</blockquote>,\n [BLOCK.EMBEDDED_ENTRY]: (_, children) => children,\n [BLOCK.EMBEDDED_ASSET]: (_, children) => children,\n [BLOCK.IMAGE]: ({ value }) => {\n if (typeof value === \"object\" && value && \"url\" in value && value.url) {\n if (image) {\n return image(value.url, value.altText, value.image?.contentType);\n }\n return <img src={value.url} alt={value.altText ?? \"\"} loading=\"lazy\" />;\n }\n return null;\n },\n [BLOCK.VIDEO]: ({ value }) => {\n if (typeof value === \"object\" && value && \"posterImage\" in value) {\n const posterImage = value.posterImage?.url;\n\n return (\n // eslint-disable-next-line jsx-a11y/media-has-caption\n <video\n data-testid=\"rich text video\"\n controls\n src={value.url}\n poster={videoPoster && posterImage ? videoPoster(posterImage) : posterImage}\n />\n );\n }\n return null;\n },\n };\n}\n\nconst isValueWhitespaceOnly = (value: string): boolean => {\n return !value.replace(/\\s+/g, \"\");\n};\n\n/**\n * Strictly checks if a singular node value OR nested node content is an empty element.\n */\n\nconst isNodeOrContentEmpty = <T,>(node: RichTextNode<T>): boolean => {\n const { content, value } = node;\n\n if (!content) {\n return typeof value === \"string\" && isValueWhitespaceOnly(value);\n }\n\n for (const item of content) {\n if (getNodeType(item) === BLOCK.HYPERLINK) {\n return false;\n }\n }\n\n return (\n content.length > 0 &&\n typeof content[0].value === \"string\" &&\n isValueWhitespaceOnly(content[0].value)\n );\n};\n\nconst serializeRichText = <T,>(\n node: RichTextNode<T>,\n customNodeTypes?: NodeTypes<T>,\n link?: LinkProp,\n image?: ImageProp,\n videoPoster?: VideoPosterProp\n): ReactNode => {\n let index = 0; // nodes in rich text does not contain ids, we'll use index as keys for react\n\n const nodes = {\n ...getNodeTypes(link, image, videoPoster),\n ...customNodeTypes,\n };\n\n const renderNode = (node: RichTextNode<T>): ReactNode => {\n const renderFunc = nodes[getNodeType(node)];\n\n // node types that are missing from both default NODE_TYPES and custom are never rendered\n if (typeof renderFunc === \"undefined\") {\n return null;\n }\n\n if (isNodeOrContentEmpty(node)) {\n return null;\n }\n\n const children = node.content ? node.content.map(renderNode) : [];\n\n return <Fragment key={index++}>{renderFunc(normalizeNode(node), children)}</Fragment>;\n };\n\n return renderNode(node);\n};\n\n/* Not using a arrow function here since the default generic will mess with the highlighting\n and it still needs a eslint-disable-next-line because it still lints incorrect */\n\nfunction RichText<T = Value>({\n data,\n className,\n customNodeTypes,\n noTextSpacing = false,\n link,\n image,\n videoPoster,\n element: ElementTag = \"div\",\n ...rest\n}: RichTextProps<T>) {\n return data ? (\n noTextSpacing ? (\n <ElementTag className={className} {...rest}>\n {serializeRichText(data, customNodeTypes, link, image, videoPoster)}\n </ElementTag>\n ) : (\n <TextSpacing className={className} element={ElementTag} {...rest}>\n {serializeRichText(data, customNodeTypes, link, image, videoPoster)}\n </TextSpacing>\n )\n ) : null;\n}\n\nexport { getNodeTypes, RichText, serializeRichText };\n"],"names":["INLINE","BLOCK","MARK","isHeaderRow","row","node","tableRenderer","richTextNode","children","tableContent","headerRows","bodyRows","headers","body","headerRowChildren","bodyRowChildren","jsx","jsxs","hasValue","obj","value","isText","isBlock","isInline","safeJsonParse","jsonString","richToPlainText","data","blockDivisor","rootNode","acc","i","nodeTextValue","nextNode","divisor","normalizeNode","MARK_TYPES","getNodeType","type","getNodeTypes","link","image","videoPoster","_","Paragraph","nodeValue","marks","element","accumulator","currentValue","uri","Link","Heading","posterImage","isValueWhitespaceOnly","isNodeOrContentEmpty","content","item","serializeRichText","customNodeTypes","index","nodes","renderNode","renderFunc","Fragment","RichText","className","noTextSpacing","ElementTag","rest","TextSpacing"],"mappings":"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"}
1
+ {"version":3,"file":"RichText-jZ-sHV-u.mjs","sources":["../../../components/rich-text/src/constants.ts","../../../components/rich-text/src/renderers.tsx","../../../components/rich-text/src/utils.ts","../../../components/rich-text/src/RichText.tsx"],"sourcesContent":["export const INLINE = {\n HYPERLINK: \"hyperlink\",\n ENTRY_HYPERLINK: \"entry-hyperlink\",\n ASSET_HYPERLINK: \"asset-hyperlink\",\n RESOURCE_HYPERLINK: \"resource-hyperlink\",\n EMBEDDED_ENTRY: \"embedded-entry-inline\",\n} as const;\n\nexport const BLOCK = {\n DOCUMENT: \"document\",\n PARAGRAPH: \"paragraph\",\n TEXT: \"text\",\n HYPERLINK: \"hyperlink\",\n ENTRY_HYPERLINK: \"entry-hyperlink\",\n\n HEADER_1: \"header-1\",\n HEADER_2: \"header-2\",\n HEADER_3: \"header-3\",\n HEADER_4: \"header-4\",\n HEADER_5: \"header-5\",\n HEADER_6: \"header-6\",\n\n HEADING_1: \"heading-1\",\n HEADING_2: \"heading-2\",\n HEADING_3: \"heading-3\",\n HEADING_4: \"heading-4\",\n HEADING_5: \"heading-5\",\n HEADING_6: \"heading-6\",\n\n TABLE: \"table\",\n TABLE_ROW: \"table-row\",\n TABLE_HEADER_CELL: \"table-header-cell\",\n TABLE_CELL: \"table-cell\",\n TABLE_BODY: \"table-body\",\n\n OL_LIST: \"ordered-list\",\n UL_LIST: \"unordered-list\",\n LIST_ITEM: \"list-item\",\n\n HR: \"horizontal-row\",\n QUOTE: \"blockquote\",\n\n EMBEDDED_ENTRY: \"embedded-entity\",\n EMBEDDED_ASSET: \"embedded-asset-block\",\n\n IMAGE: \"image\",\n VIDEO: \"video\",\n RICHTEXTDOCUMENT: \"rich-text-document\",\n TEASER: \"teaser\",\n} as const;\n\nexport const MARK = {\n BOLD: \"bold\",\n ITALIC: \"italic\",\n UNDERLINE: \"underline\",\n CODE: \"code\",\n} as const;\n\nexport const ELEMENT = {\n DIV: \"div\",\n SPAN: \"span\",\n} as const;\n","import React, { type ReactNode } from \"react\";\n\nimport { BLOCK } from \"./constants\";\nimport { type RichTextNode } from \"./types\";\n\nconst isHeaderRow = (row: RichTextNode): boolean =>\n row.type === BLOCK.TABLE_ROW &&\n !!row.content?.every((node) => node.type === BLOCK.TABLE_HEADER_CELL);\n\n/**\n * Wrap the first rows with <thead /> if it consists of only <th> elements.\n * Wrap the rest of the rows with <tbody />.\n */\nexport const tableRenderer = (richTextNode: RichTextNode, children: ReactNode[]) => {\n if (richTextNode.type !== BLOCK.TABLE) {\n return children;\n }\n const { content: tableContent } = richTextNode;\n const [headerRows, bodyRows] = (tableContent || []).reduce<[RichTextNode[], RichTextNode[]]>(\n ([headers, body], row) => {\n return isHeaderRow(row) ? [[...headers, row], body] : [headers, [...body, row]];\n },\n [[], []]\n );\n const headerRowChildren = children.slice(0, headerRows.length);\n const bodyRowChildren = children.slice(headerRows.length, children.length);\n return (\n <div className=\"purpur-rich-text-table-scroll-container\">\n <div className=\"purpur-rich-text-table-inner-scroll-container\">\n <table>\n {headerRows.length > 0 && <thead>{headerRowChildren}</thead>}\n {bodyRows.length > 0 && <tbody>{bodyRowChildren}</tbody>}\n </table>\n </div>\n </div>\n );\n};\n","import { BLOCK, INLINE } from \"./constants\";\nimport { type Block, type Inline, type Mark, type RichTextNode, type Value } from \"./types\";\n\nexport type MarkNode = {\n type: Mark;\n};\n\ntype TextNode<T> = RichTextNode<T> & {\n type: \"text\";\n value: string;\n marks: MarkNode[];\n};\n\ntype InlineNode<T> = RichTextNode<T> & {\n type: Inline;\n content: Array<Inline | Text>;\n};\n\ntype BlockNode<T> = RichTextNode<T> & {\n type: Block;\n content: Array<Block | Inline | Text>;\n};\n\nconst hasValue = (obj: Record<string, unknown>, value: unknown) =>\n Object.values(obj).includes(value);\n\nconst isText = <T>(node: RichTextNode<T> | undefined): node is TextNode<T> => node?.type === \"text\";\n\nconst isBlock = <T>(node: RichTextNode<T> | undefined): node is BlockNode<T> =>\n !isInline(node) && !isText(node) && hasValue(BLOCK, node?.type);\n\nconst isInline = <T>(node: RichTextNode<T> | undefined): node is InlineNode<T> =>\n hasValue(INLINE, node?.type);\n\nexport const safeJsonParse = <T>(jsonString: string): T | null => {\n try {\n return JSON.parse(jsonString);\n } catch {\n return null;\n }\n};\n\n// This is equivalent to https://github.com/contentful/rich-text/tree/master/packages/rich-text-plain-text-renderer\nexport const richToPlainText = <T>(data: string, blockDivisor = \" \"): string => {\n const rootNode = safeJsonParse<RichTextNode<T>>(data);\n\n if (!rootNode || !rootNode.content) {\n return \"\";\n }\n\n return rootNode.content.reduce((acc: string, node: RichTextNode<T>, i) => {\n let nodeTextValue = \"\";\n\n if (isText(node)) {\n nodeTextValue = node.value;\n } else if (isBlock(node) || isInline(node)) {\n nodeTextValue = richToPlainText(JSON.stringify(node), blockDivisor);\n if (!nodeTextValue.length) {\n return acc;\n }\n }\n\n const nextNode = rootNode?.content?.[i + 1];\n const divisor = isBlock(nextNode) ? blockDivisor : \"\";\n\n return acc + nodeTextValue + divisor;\n }, \"\");\n};\n\nexport function normalizeNode<T = Value>(node: RichTextNode<T>) {\n if (\n node.type === BLOCK.IMAGE &&\n typeof node.value === \"object\" &&\n node?.value &&\n \"image\" in node.value &&\n node?.value?.image?.url\n ) {\n return { ...node, value: { ...node.value, url: node.value.image.url } };\n }\n\n if (\n node.type === BLOCK.VIDEO &&\n typeof node.value === \"object\" &&\n node?.value &&\n \"video\" in node.value &&\n node.value.video?.url\n ) {\n return { ...node, value: { ...node.value, url: node.value.video.url } };\n }\n\n return node;\n}\n","import React, { Fragment, type ReactNode } from \"react\";\nimport { Heading } from \"@purpur/heading\";\nimport { Link } from \"@purpur/link\";\nimport { Paragraph } from \"@purpur/paragraph\";\nimport { TextSpacing } from \"@purpur/text-spacing\";\n\nimport { BLOCK, MARK } from \"./constants\";\nimport { tableRenderer } from \"./renderers\";\nimport type {\n ImageProp,\n LinkProp,\n Mark,\n NodeTypes,\n RichTextNode,\n RichTextProps,\n Value,\n VideoPosterProp,\n} from \"./types\";\nimport { normalizeNode } from \"./utils\";\n\n// Inspired by https://github.com/contentful/rich-text/blob/master/packages/rich-text-react-renderer/src/index.tsx\nconst MARK_TYPES = {\n [MARK.BOLD]: (children: ReactNode) => <b>{children}</b>,\n [MARK.ITALIC]: (children: ReactNode) => <i>{children}</i>,\n [MARK.UNDERLINE]: (children: ReactNode) => <u>{children}</u>,\n [MARK.CODE]: (children: ReactNode) => <code>{children}</code>,\n};\n\nconst getNodeType = (node: RichTextNode) => {\n const type = node.type ?? node.nodeType!;\n if (type.startsWith(\"heading-\")) return type.replace(\"heading-\", \"header-\");\n if (type.startsWith(\"entry-hyperlink\")) return type.replace(\"entry-hyperlink\", \"hyperlink\");\n return type;\n};\n\nfunction getNodeTypes<T = Value>(\n link: LinkProp,\n image: ImageProp,\n videoPoster: VideoPosterProp\n): NodeTypes<T> {\n return {\n [BLOCK.RICHTEXTDOCUMENT]: (_, children) => children,\n [BLOCK.DOCUMENT]: (_, children) => children,\n [BLOCK.PARAGRAPH]: (_, children) => <Paragraph variant=\"paragraph-200\">{children}</Paragraph>,\n [BLOCK.TEXT]: (node) => {\n const { value: nodeValue, marks } = node;\n const value = typeof nodeValue === \"string\" ? nodeValue.replace(/\\n/g, \"<br />\") : nodeValue;\n\n const element = <span dangerouslySetInnerHTML={{ __html: value as string }} />;\n\n if (!marks) {\n return element;\n }\n return marks.reduce((accumulator: ReactNode, currentValue: Mark | { type: Mark }) => {\n return MARK_TYPES[typeof currentValue === \"string\" ? currentValue : currentValue.type](\n accumulator\n );\n }, element);\n },\n [BLOCK.HYPERLINK]: (node, children) => {\n const uri = node.uri ?? (node.data?.uri as string);\n\n if (link) {\n return <Link variant=\"text\">{link(children, uri)}</Link>;\n }\n return (\n <Link variant=\"text\">\n <a href={uri}>{children}</a>\n </Link>\n );\n },\n [BLOCK.HR]: () => <hr />,\n [BLOCK.HEADER_2]: (_, children) => (\n <Heading tag=\"h2\" variant=\"title-300\">\n {children}\n </Heading>\n ),\n [BLOCK.HEADER_3]: (_, children) => (\n <Heading tag=\"h3\" variant=\"title-200\">\n {children}\n </Heading>\n ),\n [BLOCK.HEADER_4]: (_, children) => (\n <Heading tag=\"h4\" variant=\"title-100\">\n {children}\n </Heading>\n ),\n [BLOCK.HEADER_5]: (_, children) => (\n <Heading tag=\"h5\" variant=\"title-100\">\n {children}\n </Heading>\n ),\n [BLOCK.HEADER_6]: (_, children) => (\n <Heading tag=\"h6\" variant=\"title-100\">\n {children}\n </Heading>\n ),\n [BLOCK.TABLE]: tableRenderer,\n [BLOCK.TABLE_ROW]: (_, children) => <tr>{children}</tr>,\n [BLOCK.TABLE_HEADER_CELL]: (_, children) => <th scope=\"col\">{children}</th>,\n [BLOCK.TABLE_CELL]: (_, children) => {\n return <td>{children}</td>;\n },\n [BLOCK.TABLE_BODY]: (_, children) => <tbody>{children}</tbody>,\n [BLOCK.LIST_ITEM]: (_, children) => <li>{children}</li>,\n [BLOCK.OL_LIST]: (_, children) => <ol>{children}</ol>,\n [BLOCK.UL_LIST]: (_, children) => <ul>{children}</ul>,\n [BLOCK.QUOTE]: (_, children) => <blockquote>&#8220;{children}&#8221;</blockquote>,\n [BLOCK.EMBEDDED_ENTRY]: (_, children) => children,\n [BLOCK.EMBEDDED_ASSET]: (_, children) => children,\n [BLOCK.IMAGE]: ({ value }) => {\n if (typeof value === \"object\" && value && \"url\" in value && value.url) {\n if (image) {\n return image(value.url, value.altText, value.image?.contentType);\n }\n return <img src={value.url} alt={value.altText ?? \"\"} loading=\"lazy\" />;\n }\n return null;\n },\n [BLOCK.VIDEO]: ({ value }) => {\n if (typeof value === \"object\" && value && \"posterImage\" in value) {\n const posterImage = value.posterImage?.url;\n\n return (\n // eslint-disable-next-line jsx-a11y/media-has-caption\n <video\n data-testid=\"rich text video\"\n controls\n src={value.url}\n poster={videoPoster && posterImage ? videoPoster(posterImage) : posterImage}\n />\n );\n }\n return null;\n },\n };\n}\n\nconst isValueWhitespaceOnly = (value: string): boolean => {\n return !value.replace(/\\s+/g, \"\");\n};\n\n/**\n * Strictly checks if a singular node value OR nested node content is an empty element.\n */\n\nconst isNodeOrContentEmpty = <T,>(node: RichTextNode<T>): boolean => {\n const { content, value } = node;\n\n if (!content) {\n return typeof value === \"string\" && isValueWhitespaceOnly(value);\n }\n\n for (const item of content) {\n if (getNodeType(item) === BLOCK.HYPERLINK) {\n return false;\n }\n }\n\n return (\n content.length > 0 &&\n typeof content[0].value === \"string\" &&\n isValueWhitespaceOnly(content[0].value)\n );\n};\n\nconst serializeRichText = <T,>(\n node: RichTextNode<T>,\n customNodeTypes?: NodeTypes<T>,\n link?: LinkProp,\n image?: ImageProp,\n videoPoster?: VideoPosterProp\n): ReactNode => {\n let index = 0; // nodes in rich text does not contain ids, we'll use index as keys for react\n\n const nodes = {\n ...getNodeTypes(link, image, videoPoster),\n ...customNodeTypes,\n };\n\n const renderNode = (node: RichTextNode<T>): ReactNode => {\n const renderFunc = nodes[getNodeType(node)];\n\n // node types that are missing from both default NODE_TYPES and custom are never rendered\n if (typeof renderFunc === \"undefined\") {\n return null;\n }\n\n if (isNodeOrContentEmpty(node)) {\n return null;\n }\n\n const children = node.content ? node.content.map(renderNode) : [];\n\n return <Fragment key={index++}>{renderFunc(normalizeNode(node), children)}</Fragment>;\n };\n\n return renderNode(node);\n};\n\n/* Not using a arrow function here since the default generic will mess with the highlighting\n and it still needs a eslint-disable-next-line because it still lints incorrect */\n\nfunction RichText<T = Value>({\n data,\n className,\n customNodeTypes,\n noTextSpacing = false,\n link,\n image,\n videoPoster,\n element: ElementTag = \"div\",\n ...rest\n}: RichTextProps<T>) {\n return data ? (\n noTextSpacing ? (\n <ElementTag className={className} {...rest}>\n {serializeRichText(data, customNodeTypes, link, image, videoPoster)}\n </ElementTag>\n ) : (\n <TextSpacing className={className} element={ElementTag} {...rest}>\n {serializeRichText(data, customNodeTypes, link, image, videoPoster)}\n </TextSpacing>\n )\n ) : null;\n}\n\nexport { getNodeTypes, RichText, serializeRichText };\n"],"names":["INLINE","BLOCK","MARK","isHeaderRow","row","node","tableRenderer","richTextNode","children","tableContent","headerRows","bodyRows","headers","body","headerRowChildren","bodyRowChildren","jsx","jsxs","hasValue","obj","value","isText","isBlock","isInline","safeJsonParse","jsonString","richToPlainText","data","blockDivisor","rootNode","acc","i","nodeTextValue","nextNode","divisor","normalizeNode","MARK_TYPES","getNodeType","type","getNodeTypes","link","image","videoPoster","_","Paragraph","nodeValue","marks","element","accumulator","currentValue","uri","Link","Heading","posterImage","isValueWhitespaceOnly","isNodeOrContentEmpty","content","item","serializeRichText","customNodeTypes","index","nodes","renderNode","renderFunc","Fragment","RichText","className","noTextSpacing","ElementTag","rest","TextSpacing"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";const n=require("react/jsx-runtime"),I=require("react"),h=require("./heading-drD5ugCC.js"),d=require("./link-DhWVrkTz.js"),H=require("./paragraph-BsI53OR0.js"),j=require("./text-spacing-CiGPZHuB.js"),f={HYPERLINK:"hyperlink",ENTRY_HYPERLINK:"entry-hyperlink",ASSET_HYPERLINK:"asset-hyperlink",RESOURCE_HYPERLINK:"resource-hyperlink",EMBEDDED_ENTRY:"embedded-entry-inline"},s={DOCUMENT:"document",PARAGRAPH:"paragraph",TEXT:"text",HYPERLINK:"hyperlink",ENTRY_HYPERLINK:"entry-hyperlink",HEADER_1:"header-1",HEADER_2:"header-2",HEADER_3:"header-3",HEADER_4:"header-4",HEADER_5:"header-5",HEADER_6:"header-6",HEADING_1:"heading-1",HEADING_2:"heading-2",HEADING_3:"heading-3",HEADING_4:"heading-4",HEADING_5:"heading-5",HEADING_6:"heading-6",TABLE:"table",TABLE_ROW:"table-row",TABLE_HEADER_CELL:"table-header-cell",TABLE_CELL:"table-cell",TABLE_BODY:"table-body",OL_LIST:"ordered-list",UL_LIST:"unordered-list",LIST_ITEM:"list-item",HR:"horizontal-row",QUOTE:"blockquote",EMBEDDED_ENTRY:"embedded-entity",EMBEDDED_ASSET:"embedded-asset-block",IMAGE:"image",VIDEO:"video",RICHTEXTDOCUMENT:"rich-text-document",TEASER:"teaser"},_={BOLD:"bold",ITALIC:"italic",UNDERLINE:"underline",CODE:"code"},N=e=>e.type===s.TABLE_ROW&&!!e.content?.every(i=>i.type===s.TABLE_HEADER_CELL),b=(e,i)=>{if(e.type!==s.TABLE)return i;const{content:l}=e,[r,t]=(l||[]).reduce(([u,a],o)=>N(o)?[[...u,o],a]:[u,[...a,o]],[[],[]]),E=i.slice(0,r.length),c=i.slice(r.length,i.length);return n.jsx("div",{className:"purpur-rich-text-table-scroll-container",children:n.jsx("div",{className:"purpur-rich-text-table-inner-scroll-container",children:n.jsxs("table",{children:[r.length>0&&n.jsx("thead",{children:E}),t.length>0&&n.jsx("tbody",{children:c})]})})})},x=(e,i)=>Object.values(e).includes(i),L=e=>e?.type==="text",T=e=>!g(e)&&!L(e)&&x(s,e?.type),g=e=>x(f,e?.type),O=e=>{try{return JSON.parse(e)}catch{return null}},A=(e,i=" ")=>{const l=O(e);return!l||!l.content?"":l.content.reduce((r,t,E)=>{let c="";if(L(t))c=t.value;else if((T(t)||g(t))&&(c=A(JSON.stringify(t),i),!c.length))return r;const u=l?.content?.[E+1],a=T(u)?i:"";return r+c+a},"")};function v(e){return e.type===s.IMAGE&&typeof e.value=="object"&&e?.value&&"image"in e.value&&e?.value?.image?.url?{...e,value:{...e.value,url:e.value.image.url}}:e.type===s.VIDEO&&typeof e.value=="object"&&e?.value&&"video"in e.value&&e.value.video?.url?{...e,value:{...e.value,url:e.value.video.url}}:e}const B={[_.BOLD]:e=>n.jsx("b",{children:e}),[_.ITALIC]:e=>n.jsx("i",{children:e}),[_.UNDERLINE]:e=>n.jsx("u",{children:e}),[_.CODE]:e=>n.jsx("code",{children:e})},y=e=>{const i=e.type??e.nodeType;return i.startsWith("heading-")?i.replace("heading-","header-"):i.startsWith("entry-hyperlink")?i.replace("entry-hyperlink","hyperlink"):i};function m(e,i,l){return{[s.RICHTEXTDOCUMENT]:(r,t)=>t,[s.DOCUMENT]:(r,t)=>t,[s.PARAGRAPH]:(r,t)=>n.jsx(H.Paragraph,{variant:"paragraph-200",children:t}),[s.TEXT]:r=>{const{value:t,marks:E}=r,c=typeof t=="string"?t.replace(/\n/g,"<br />"):t,u=n.jsx("span",{dangerouslySetInnerHTML:{__html:c}});return E?E.reduce((a,o)=>B[typeof o=="string"?o:o.type](a),u):u},[s.HYPERLINK]:(r,t)=>{const E=r.uri??r.data?.uri;return e?n.jsx(d.Link,{variant:"text",children:e(t,E)}):n.jsx(d.Link,{variant:"text",children:n.jsx("a",{href:E,children:t})})},[s.HR]:()=>n.jsx("hr",{}),[s.HEADER_2]:(r,t)=>n.jsx(h.Heading,{tag:"h2",variant:"title-300",children:t}),[s.HEADER_3]:(r,t)=>n.jsx(h.Heading,{tag:"h3",variant:"title-200",children:t}),[s.HEADER_4]:(r,t)=>n.jsx(h.Heading,{tag:"h4",variant:"title-100",children:t}),[s.HEADER_5]:(r,t)=>n.jsx(h.Heading,{tag:"h5",variant:"title-100",children:t}),[s.HEADER_6]:(r,t)=>n.jsx(h.Heading,{tag:"h6",variant:"title-100",children:t}),[s.TABLE]:b,[s.TABLE_ROW]:(r,t)=>n.jsx("tr",{children:t}),[s.TABLE_HEADER_CELL]:(r,t)=>n.jsx("th",{scope:"col",children:t}),[s.TABLE_CELL]:(r,t)=>n.jsx("td",{children:t}),[s.TABLE_BODY]:(r,t)=>n.jsx("tbody",{children:t}),[s.LIST_ITEM]:(r,t)=>n.jsx("li",{children:t}),[s.OL_LIST]:(r,t)=>n.jsx("ol",{children:t}),[s.UL_LIST]:(r,t)=>n.jsx("ul",{children:t}),[s.QUOTE]:(r,t)=>n.jsxs("blockquote",{children:["“",t,"”"]}),[s.EMBEDDED_ENTRY]:(r,t)=>t,[s.EMBEDDED_ASSET]:(r,t)=>t,[s.IMAGE]:({value:r})=>typeof r=="object"&&r&&"url"in r&&r.url?i?i(r.url,r.altText,r.image?.contentType):n.jsx("img",{src:r.url,alt:r.altText??"",loading:"lazy"}):null,[s.VIDEO]:({value:r})=>{if(typeof r=="object"&&r&&"posterImage"in r){const t=r.posterImage?.url;return n.jsx("video",{"data-testid":"rich text video",controls:!0,src:r.url,poster:l&&t?l(t):t})}return null}}}const p=e=>!e.replace(/\s+/g,""),C=e=>{const{content:i,value:l}=e;if(!i)return typeof l=="string"&&p(l);for(const r of i)if(y(r)===s.HYPERLINK)return!1;return i.length>0&&typeof i[0].value=="string"&&p(i[0].value)},R=(e,i,l,r,t)=>{let E=0;const c={...m(l,r,t),...i},u=a=>{const o=c[y(a)];if(typeof o>"u"||C(a))return null;const D=a.content?a.content.map(u):[];return n.jsx(I.Fragment,{children:o(v(a),D)},E++)};return u(e)};function S({data:e,className:i,customNodeTypes:l,noTextSpacing:r=!1,link:t,image:E,videoPoster:c,element:u="div",...a}){return e?r?n.jsx(u,{className:i,...a,children:R(e,l,t,E,c)}):n.jsx(j.TextSpacing,{className:i,element:u,...a,children:R(e,l,t,E,c)}):null}exports.RichText=S;exports.richToPlainText=A;
2
- //# sourceMappingURL=RichText-DNroJJXv.js.map
1
+ "use strict";const n=require("react/jsx-runtime"),I=require("react"),h=require("./heading-drD5ugCC.js"),d=require("./link-DhWVrkTz.js"),H=require("./paragraph-By4jMjnH.js"),j=require("./text-spacing-CiGPZHuB.js"),f={HYPERLINK:"hyperlink",ENTRY_HYPERLINK:"entry-hyperlink",ASSET_HYPERLINK:"asset-hyperlink",RESOURCE_HYPERLINK:"resource-hyperlink",EMBEDDED_ENTRY:"embedded-entry-inline"},s={DOCUMENT:"document",PARAGRAPH:"paragraph",TEXT:"text",HYPERLINK:"hyperlink",ENTRY_HYPERLINK:"entry-hyperlink",HEADER_1:"header-1",HEADER_2:"header-2",HEADER_3:"header-3",HEADER_4:"header-4",HEADER_5:"header-5",HEADER_6:"header-6",HEADING_1:"heading-1",HEADING_2:"heading-2",HEADING_3:"heading-3",HEADING_4:"heading-4",HEADING_5:"heading-5",HEADING_6:"heading-6",TABLE:"table",TABLE_ROW:"table-row",TABLE_HEADER_CELL:"table-header-cell",TABLE_CELL:"table-cell",TABLE_BODY:"table-body",OL_LIST:"ordered-list",UL_LIST:"unordered-list",LIST_ITEM:"list-item",HR:"horizontal-row",QUOTE:"blockquote",EMBEDDED_ENTRY:"embedded-entity",EMBEDDED_ASSET:"embedded-asset-block",IMAGE:"image",VIDEO:"video",RICHTEXTDOCUMENT:"rich-text-document",TEASER:"teaser"},_={BOLD:"bold",ITALIC:"italic",UNDERLINE:"underline",CODE:"code"},N=e=>e.type===s.TABLE_ROW&&!!e.content?.every(i=>i.type===s.TABLE_HEADER_CELL),b=(e,i)=>{if(e.type!==s.TABLE)return i;const{content:l}=e,[r,t]=(l||[]).reduce(([u,a],o)=>N(o)?[[...u,o],a]:[u,[...a,o]],[[],[]]),E=i.slice(0,r.length),c=i.slice(r.length,i.length);return n.jsx("div",{className:"purpur-rich-text-table-scroll-container",children:n.jsx("div",{className:"purpur-rich-text-table-inner-scroll-container",children:n.jsxs("table",{children:[r.length>0&&n.jsx("thead",{children:E}),t.length>0&&n.jsx("tbody",{children:c})]})})})},x=(e,i)=>Object.values(e).includes(i),L=e=>e?.type==="text",T=e=>!g(e)&&!L(e)&&x(s,e?.type),g=e=>x(f,e?.type),O=e=>{try{return JSON.parse(e)}catch{return null}},A=(e,i=" ")=>{const l=O(e);return!l||!l.content?"":l.content.reduce((r,t,E)=>{let c="";if(L(t))c=t.value;else if((T(t)||g(t))&&(c=A(JSON.stringify(t),i),!c.length))return r;const u=l?.content?.[E+1],a=T(u)?i:"";return r+c+a},"")};function v(e){return e.type===s.IMAGE&&typeof e.value=="object"&&e?.value&&"image"in e.value&&e?.value?.image?.url?{...e,value:{...e.value,url:e.value.image.url}}:e.type===s.VIDEO&&typeof e.value=="object"&&e?.value&&"video"in e.value&&e.value.video?.url?{...e,value:{...e.value,url:e.value.video.url}}:e}const B={[_.BOLD]:e=>n.jsx("b",{children:e}),[_.ITALIC]:e=>n.jsx("i",{children:e}),[_.UNDERLINE]:e=>n.jsx("u",{children:e}),[_.CODE]:e=>n.jsx("code",{children:e})},y=e=>{const i=e.type??e.nodeType;return i.startsWith("heading-")?i.replace("heading-","header-"):i.startsWith("entry-hyperlink")?i.replace("entry-hyperlink","hyperlink"):i};function m(e,i,l){return{[s.RICHTEXTDOCUMENT]:(r,t)=>t,[s.DOCUMENT]:(r,t)=>t,[s.PARAGRAPH]:(r,t)=>n.jsx(H.Paragraph,{variant:"paragraph-200",children:t}),[s.TEXT]:r=>{const{value:t,marks:E}=r,c=typeof t=="string"?t.replace(/\n/g,"<br />"):t,u=n.jsx("span",{dangerouslySetInnerHTML:{__html:c}});return E?E.reduce((a,o)=>B[typeof o=="string"?o:o.type](a),u):u},[s.HYPERLINK]:(r,t)=>{const E=r.uri??r.data?.uri;return e?n.jsx(d.Link,{variant:"text",children:e(t,E)}):n.jsx(d.Link,{variant:"text",children:n.jsx("a",{href:E,children:t})})},[s.HR]:()=>n.jsx("hr",{}),[s.HEADER_2]:(r,t)=>n.jsx(h.Heading,{tag:"h2",variant:"title-300",children:t}),[s.HEADER_3]:(r,t)=>n.jsx(h.Heading,{tag:"h3",variant:"title-200",children:t}),[s.HEADER_4]:(r,t)=>n.jsx(h.Heading,{tag:"h4",variant:"title-100",children:t}),[s.HEADER_5]:(r,t)=>n.jsx(h.Heading,{tag:"h5",variant:"title-100",children:t}),[s.HEADER_6]:(r,t)=>n.jsx(h.Heading,{tag:"h6",variant:"title-100",children:t}),[s.TABLE]:b,[s.TABLE_ROW]:(r,t)=>n.jsx("tr",{children:t}),[s.TABLE_HEADER_CELL]:(r,t)=>n.jsx("th",{scope:"col",children:t}),[s.TABLE_CELL]:(r,t)=>n.jsx("td",{children:t}),[s.TABLE_BODY]:(r,t)=>n.jsx("tbody",{children:t}),[s.LIST_ITEM]:(r,t)=>n.jsx("li",{children:t}),[s.OL_LIST]:(r,t)=>n.jsx("ol",{children:t}),[s.UL_LIST]:(r,t)=>n.jsx("ul",{children:t}),[s.QUOTE]:(r,t)=>n.jsxs("blockquote",{children:["“",t,"”"]}),[s.EMBEDDED_ENTRY]:(r,t)=>t,[s.EMBEDDED_ASSET]:(r,t)=>t,[s.IMAGE]:({value:r})=>typeof r=="object"&&r&&"url"in r&&r.url?i?i(r.url,r.altText,r.image?.contentType):n.jsx("img",{src:r.url,alt:r.altText??"",loading:"lazy"}):null,[s.VIDEO]:({value:r})=>{if(typeof r=="object"&&r&&"posterImage"in r){const t=r.posterImage?.url;return n.jsx("video",{"data-testid":"rich text video",controls:!0,src:r.url,poster:l&&t?l(t):t})}return null}}}const p=e=>!e.replace(/\s+/g,""),C=e=>{const{content:i,value:l}=e;if(!i)return typeof l=="string"&&p(l);for(const r of i)if(y(r)===s.HYPERLINK)return!1;return i.length>0&&typeof i[0].value=="string"&&p(i[0].value)},R=(e,i,l,r,t)=>{let E=0;const c={...m(l,r,t),...i},u=a=>{const o=c[y(a)];if(typeof o>"u"||C(a))return null;const D=a.content?a.content.map(u):[];return n.jsx(I.Fragment,{children:o(v(a),D)},E++)};return u(e)};function S({data:e,className:i,customNodeTypes:l,noTextSpacing:r=!1,link:t,image:E,videoPoster:c,element:u="div",...a}){return e?r?n.jsx(u,{className:i,...a,children:R(e,l,t,E,c)}):n.jsx(j.TextSpacing,{className:i,element:u,...a,children:R(e,l,t,E,c)}):null}exports.RichText=S;exports.richToPlainText=A;
2
+ //# sourceMappingURL=RichText-yobCUjTD.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"RichText-DNroJJXv.js","sources":["../../../components/rich-text/src/constants.ts","../../../components/rich-text/src/renderers.tsx","../../../components/rich-text/src/utils.ts","../../../components/rich-text/src/RichText.tsx"],"sourcesContent":["export const INLINE = {\n HYPERLINK: \"hyperlink\",\n ENTRY_HYPERLINK: \"entry-hyperlink\",\n ASSET_HYPERLINK: \"asset-hyperlink\",\n RESOURCE_HYPERLINK: \"resource-hyperlink\",\n EMBEDDED_ENTRY: \"embedded-entry-inline\",\n} as const;\n\nexport const BLOCK = {\n DOCUMENT: \"document\",\n PARAGRAPH: \"paragraph\",\n TEXT: \"text\",\n HYPERLINK: \"hyperlink\",\n ENTRY_HYPERLINK: \"entry-hyperlink\",\n\n HEADER_1: \"header-1\",\n HEADER_2: \"header-2\",\n HEADER_3: \"header-3\",\n HEADER_4: \"header-4\",\n HEADER_5: \"header-5\",\n HEADER_6: \"header-6\",\n\n HEADING_1: \"heading-1\",\n HEADING_2: \"heading-2\",\n HEADING_3: \"heading-3\",\n HEADING_4: \"heading-4\",\n HEADING_5: \"heading-5\",\n HEADING_6: \"heading-6\",\n\n TABLE: \"table\",\n TABLE_ROW: \"table-row\",\n TABLE_HEADER_CELL: \"table-header-cell\",\n TABLE_CELL: \"table-cell\",\n TABLE_BODY: \"table-body\",\n\n OL_LIST: \"ordered-list\",\n UL_LIST: \"unordered-list\",\n LIST_ITEM: \"list-item\",\n\n HR: \"horizontal-row\",\n QUOTE: \"blockquote\",\n\n EMBEDDED_ENTRY: \"embedded-entity\",\n EMBEDDED_ASSET: \"embedded-asset-block\",\n\n IMAGE: \"image\",\n VIDEO: \"video\",\n RICHTEXTDOCUMENT: \"rich-text-document\",\n TEASER: \"teaser\",\n} as const;\n\nexport const MARK = {\n BOLD: \"bold\",\n ITALIC: \"italic\",\n UNDERLINE: \"underline\",\n CODE: \"code\",\n} as const;\n\nexport const ELEMENT = {\n DIV: \"div\",\n SPAN: \"span\",\n} as const;\n","import React, { type ReactNode } from \"react\";\n\nimport { BLOCK } from \"./constants\";\nimport { type RichTextNode } from \"./types\";\n\nconst isHeaderRow = (row: RichTextNode): boolean =>\n row.type === BLOCK.TABLE_ROW &&\n !!row.content?.every((node) => node.type === BLOCK.TABLE_HEADER_CELL);\n\n/**\n * Wrap the first rows with <thead /> if it consists of only <th> elements.\n * Wrap the rest of the rows with <tbody />.\n */\nexport const tableRenderer = (richTextNode: RichTextNode, children: ReactNode[]) => {\n if (richTextNode.type !== BLOCK.TABLE) {\n return children;\n }\n const { content: tableContent } = richTextNode;\n const [headerRows, bodyRows] = (tableContent || []).reduce<[RichTextNode[], RichTextNode[]]>(\n ([headers, body], row) => {\n return isHeaderRow(row) ? [[...headers, row], body] : [headers, [...body, row]];\n },\n [[], []]\n );\n const headerRowChildren = children.slice(0, headerRows.length);\n const bodyRowChildren = children.slice(headerRows.length, children.length);\n return (\n <div className=\"purpur-rich-text-table-scroll-container\">\n <div className=\"purpur-rich-text-table-inner-scroll-container\">\n <table>\n {headerRows.length > 0 && <thead>{headerRowChildren}</thead>}\n {bodyRows.length > 0 && <tbody>{bodyRowChildren}</tbody>}\n </table>\n </div>\n </div>\n );\n};\n","import { BLOCK, INLINE } from \"./constants\";\nimport { type Block, type Inline, type Mark, type RichTextNode, type Value } from \"./types\";\n\nexport type MarkNode = {\n type: Mark;\n};\n\ntype TextNode<T> = RichTextNode<T> & {\n type: \"text\";\n value: string;\n marks: MarkNode[];\n};\n\ntype InlineNode<T> = RichTextNode<T> & {\n type: Inline;\n content: Array<Inline | Text>;\n};\n\ntype BlockNode<T> = RichTextNode<T> & {\n type: Block;\n content: Array<Block | Inline | Text>;\n};\n\nconst hasValue = (obj: Record<string, unknown>, value: unknown) =>\n Object.values(obj).includes(value);\n\nconst isText = <T>(node: RichTextNode<T> | undefined): node is TextNode<T> => node?.type === \"text\";\n\nconst isBlock = <T>(node: RichTextNode<T> | undefined): node is BlockNode<T> =>\n !isInline(node) && !isText(node) && hasValue(BLOCK, node?.type);\n\nconst isInline = <T>(node: RichTextNode<T> | undefined): node is InlineNode<T> =>\n hasValue(INLINE, node?.type);\n\nexport const safeJsonParse = <T>(jsonString: string): T | null => {\n try {\n return JSON.parse(jsonString);\n } catch {\n return null;\n }\n};\n\n// This is equivalent to https://github.com/contentful/rich-text/tree/master/packages/rich-text-plain-text-renderer\nexport const richToPlainText = <T>(data: string, blockDivisor = \" \"): string => {\n const rootNode = safeJsonParse<RichTextNode<T>>(data);\n\n if (!rootNode || !rootNode.content) {\n return \"\";\n }\n\n return rootNode.content.reduce((acc: string, node: RichTextNode<T>, i) => {\n let nodeTextValue = \"\";\n\n if (isText(node)) {\n nodeTextValue = node.value;\n } else if (isBlock(node) || isInline(node)) {\n nodeTextValue = richToPlainText(JSON.stringify(node), blockDivisor);\n if (!nodeTextValue.length) {\n return acc;\n }\n }\n\n const nextNode = rootNode?.content?.[i + 1];\n const divisor = isBlock(nextNode) ? blockDivisor : \"\";\n\n return acc + nodeTextValue + divisor;\n }, \"\");\n};\n\nexport function normalizeNode<T = Value>(node: RichTextNode<T>) {\n if (\n node.type === BLOCK.IMAGE &&\n typeof node.value === \"object\" &&\n node?.value &&\n \"image\" in node.value &&\n node?.value?.image?.url\n ) {\n return { ...node, value: { ...node.value, url: node.value.image.url } };\n }\n\n if (\n node.type === BLOCK.VIDEO &&\n typeof node.value === \"object\" &&\n node?.value &&\n \"video\" in node.value &&\n node.value.video?.url\n ) {\n return { ...node, value: { ...node.value, url: node.value.video.url } };\n }\n\n return node;\n}\n","import React, { Fragment, type ReactNode } from \"react\";\nimport { Heading } from \"@purpur/heading\";\nimport { Link } from \"@purpur/link\";\nimport { Paragraph } from \"@purpur/paragraph\";\nimport { TextSpacing } from \"@purpur/text-spacing\";\n\nimport { BLOCK, MARK } from \"./constants\";\nimport { tableRenderer } from \"./renderers\";\nimport type {\n ImageProp,\n LinkProp,\n Mark,\n NodeTypes,\n RichTextNode,\n RichTextProps,\n Value,\n VideoPosterProp,\n} from \"./types\";\nimport { normalizeNode } from \"./utils\";\n\n// Inspired by https://github.com/contentful/rich-text/blob/master/packages/rich-text-react-renderer/src/index.tsx\nconst MARK_TYPES = {\n [MARK.BOLD]: (children: ReactNode) => <b>{children}</b>,\n [MARK.ITALIC]: (children: ReactNode) => <i>{children}</i>,\n [MARK.UNDERLINE]: (children: ReactNode) => <u>{children}</u>,\n [MARK.CODE]: (children: ReactNode) => <code>{children}</code>,\n};\n\nconst getNodeType = (node: RichTextNode) => {\n const type = node.type ?? node.nodeType!;\n if (type.startsWith(\"heading-\")) return type.replace(\"heading-\", \"header-\");\n if (type.startsWith(\"entry-hyperlink\")) return type.replace(\"entry-hyperlink\", \"hyperlink\");\n return type;\n};\n\nfunction getNodeTypes<T = Value>(\n link: LinkProp,\n image: ImageProp,\n videoPoster: VideoPosterProp\n): NodeTypes<T> {\n return {\n [BLOCK.RICHTEXTDOCUMENT]: (_, children) => children,\n [BLOCK.DOCUMENT]: (_, children) => children,\n [BLOCK.PARAGRAPH]: (_, children) => <Paragraph variant=\"paragraph-200\">{children}</Paragraph>,\n [BLOCK.TEXT]: (node) => {\n const { value: nodeValue, marks } = node;\n const value = typeof nodeValue === \"string\" ? nodeValue.replace(/\\n/g, \"<br />\") : nodeValue;\n\n const element = <span dangerouslySetInnerHTML={{ __html: value as string }} />;\n\n if (!marks) {\n return element;\n }\n return marks.reduce((accumulator: ReactNode, currentValue: Mark | { type: Mark }) => {\n return MARK_TYPES[typeof currentValue === \"string\" ? currentValue : currentValue.type](\n accumulator\n );\n }, element);\n },\n [BLOCK.HYPERLINK]: (node, children) => {\n const uri = node.uri ?? (node.data?.uri as string);\n\n if (link) {\n return <Link variant=\"text\">{link(children, uri)}</Link>;\n }\n return (\n <Link variant=\"text\">\n <a href={uri}>{children}</a>\n </Link>\n );\n },\n [BLOCK.HR]: () => <hr />,\n [BLOCK.HEADER_2]: (_, children) => (\n <Heading tag=\"h2\" variant=\"title-300\">\n {children}\n </Heading>\n ),\n [BLOCK.HEADER_3]: (_, children) => (\n <Heading tag=\"h3\" variant=\"title-200\">\n {children}\n </Heading>\n ),\n [BLOCK.HEADER_4]: (_, children) => (\n <Heading tag=\"h4\" variant=\"title-100\">\n {children}\n </Heading>\n ),\n [BLOCK.HEADER_5]: (_, children) => (\n <Heading tag=\"h5\" variant=\"title-100\">\n {children}\n </Heading>\n ),\n [BLOCK.HEADER_6]: (_, children) => (\n <Heading tag=\"h6\" variant=\"title-100\">\n {children}\n </Heading>\n ),\n [BLOCK.TABLE]: tableRenderer,\n [BLOCK.TABLE_ROW]: (_, children) => <tr>{children}</tr>,\n [BLOCK.TABLE_HEADER_CELL]: (_, children) => <th scope=\"col\">{children}</th>,\n [BLOCK.TABLE_CELL]: (_, children) => {\n return <td>{children}</td>;\n },\n [BLOCK.TABLE_BODY]: (_, children) => <tbody>{children}</tbody>,\n [BLOCK.LIST_ITEM]: (_, children) => <li>{children}</li>,\n [BLOCK.OL_LIST]: (_, children) => <ol>{children}</ol>,\n [BLOCK.UL_LIST]: (_, children) => <ul>{children}</ul>,\n [BLOCK.QUOTE]: (_, children) => <blockquote>&#8220;{children}&#8221;</blockquote>,\n [BLOCK.EMBEDDED_ENTRY]: (_, children) => children,\n [BLOCK.EMBEDDED_ASSET]: (_, children) => children,\n [BLOCK.IMAGE]: ({ value }) => {\n if (typeof value === \"object\" && value && \"url\" in value && value.url) {\n if (image) {\n return image(value.url, value.altText, value.image?.contentType);\n }\n return <img src={value.url} alt={value.altText ?? \"\"} loading=\"lazy\" />;\n }\n return null;\n },\n [BLOCK.VIDEO]: ({ value }) => {\n if (typeof value === \"object\" && value && \"posterImage\" in value) {\n const posterImage = value.posterImage?.url;\n\n return (\n // eslint-disable-next-line jsx-a11y/media-has-caption\n <video\n data-testid=\"rich text video\"\n controls\n src={value.url}\n poster={videoPoster && posterImage ? videoPoster(posterImage) : posterImage}\n />\n );\n }\n return null;\n },\n };\n}\n\nconst isValueWhitespaceOnly = (value: string): boolean => {\n return !value.replace(/\\s+/g, \"\");\n};\n\n/**\n * Strictly checks if a singular node value OR nested node content is an empty element.\n */\n\nconst isNodeOrContentEmpty = <T,>(node: RichTextNode<T>): boolean => {\n const { content, value } = node;\n\n if (!content) {\n return typeof value === \"string\" && isValueWhitespaceOnly(value);\n }\n\n for (const item of content) {\n if (getNodeType(item) === BLOCK.HYPERLINK) {\n return false;\n }\n }\n\n return (\n content.length > 0 &&\n typeof content[0].value === \"string\" &&\n isValueWhitespaceOnly(content[0].value)\n );\n};\n\nconst serializeRichText = <T,>(\n node: RichTextNode<T>,\n customNodeTypes?: NodeTypes<T>,\n link?: LinkProp,\n image?: ImageProp,\n videoPoster?: VideoPosterProp\n): ReactNode => {\n let index = 0; // nodes in rich text does not contain ids, we'll use index as keys for react\n\n const nodes = {\n ...getNodeTypes(link, image, videoPoster),\n ...customNodeTypes,\n };\n\n const renderNode = (node: RichTextNode<T>): ReactNode => {\n const renderFunc = nodes[getNodeType(node)];\n\n // node types that are missing from both default NODE_TYPES and custom are never rendered\n if (typeof renderFunc === \"undefined\") {\n return null;\n }\n\n if (isNodeOrContentEmpty(node)) {\n return null;\n }\n\n const children = node.content ? node.content.map(renderNode) : [];\n\n return <Fragment key={index++}>{renderFunc(normalizeNode(node), children)}</Fragment>;\n };\n\n return renderNode(node);\n};\n\n/* Not using a arrow function here since the default generic will mess with the highlighting\n and it still needs a eslint-disable-next-line because it still lints incorrect */\n\nfunction RichText<T = Value>({\n data,\n className,\n customNodeTypes,\n noTextSpacing = false,\n link,\n image,\n videoPoster,\n element: ElementTag = \"div\",\n ...rest\n}: RichTextProps<T>) {\n return data ? (\n noTextSpacing ? (\n <ElementTag className={className} {...rest}>\n {serializeRichText(data, customNodeTypes, link, image, videoPoster)}\n </ElementTag>\n ) : (\n <TextSpacing className={className} element={ElementTag} {...rest}>\n {serializeRichText(data, customNodeTypes, link, image, videoPoster)}\n </TextSpacing>\n )\n ) : null;\n}\n\nexport { getNodeTypes, RichText, serializeRichText };\n"],"names":["INLINE","BLOCK","MARK","isHeaderRow","row","node","tableRenderer","richTextNode","children","tableContent","headerRows","bodyRows","headers","body","headerRowChildren","bodyRowChildren","jsx","jsxs","hasValue","obj","value","isText","isBlock","isInline","safeJsonParse","jsonString","richToPlainText","data","blockDivisor","rootNode","acc","i","nodeTextValue","nextNode","divisor","normalizeNode","MARK_TYPES","getNodeType","type","getNodeTypes","link","image","videoPoster","_","Paragraph","nodeValue","marks","element","accumulator","currentValue","uri","Link","Heading","posterImage","isValueWhitespaceOnly","isNodeOrContentEmpty","content","item","serializeRichText","customNodeTypes","index","nodes","renderNode","renderFunc","Fragment","RichText","className","noTextSpacing","ElementTag","rest","TextSpacing"],"mappings":"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"}
1
+ {"version":3,"file":"RichText-yobCUjTD.js","sources":["../../../components/rich-text/src/constants.ts","../../../components/rich-text/src/renderers.tsx","../../../components/rich-text/src/utils.ts","../../../components/rich-text/src/RichText.tsx"],"sourcesContent":["export const INLINE = {\n HYPERLINK: \"hyperlink\",\n ENTRY_HYPERLINK: \"entry-hyperlink\",\n ASSET_HYPERLINK: \"asset-hyperlink\",\n RESOURCE_HYPERLINK: \"resource-hyperlink\",\n EMBEDDED_ENTRY: \"embedded-entry-inline\",\n} as const;\n\nexport const BLOCK = {\n DOCUMENT: \"document\",\n PARAGRAPH: \"paragraph\",\n TEXT: \"text\",\n HYPERLINK: \"hyperlink\",\n ENTRY_HYPERLINK: \"entry-hyperlink\",\n\n HEADER_1: \"header-1\",\n HEADER_2: \"header-2\",\n HEADER_3: \"header-3\",\n HEADER_4: \"header-4\",\n HEADER_5: \"header-5\",\n HEADER_6: \"header-6\",\n\n HEADING_1: \"heading-1\",\n HEADING_2: \"heading-2\",\n HEADING_3: \"heading-3\",\n HEADING_4: \"heading-4\",\n HEADING_5: \"heading-5\",\n HEADING_6: \"heading-6\",\n\n TABLE: \"table\",\n TABLE_ROW: \"table-row\",\n TABLE_HEADER_CELL: \"table-header-cell\",\n TABLE_CELL: \"table-cell\",\n TABLE_BODY: \"table-body\",\n\n OL_LIST: \"ordered-list\",\n UL_LIST: \"unordered-list\",\n LIST_ITEM: \"list-item\",\n\n HR: \"horizontal-row\",\n QUOTE: \"blockquote\",\n\n EMBEDDED_ENTRY: \"embedded-entity\",\n EMBEDDED_ASSET: \"embedded-asset-block\",\n\n IMAGE: \"image\",\n VIDEO: \"video\",\n RICHTEXTDOCUMENT: \"rich-text-document\",\n TEASER: \"teaser\",\n} as const;\n\nexport const MARK = {\n BOLD: \"bold\",\n ITALIC: \"italic\",\n UNDERLINE: \"underline\",\n CODE: \"code\",\n} as const;\n\nexport const ELEMENT = {\n DIV: \"div\",\n SPAN: \"span\",\n} as const;\n","import React, { type ReactNode } from \"react\";\n\nimport { BLOCK } from \"./constants\";\nimport { type RichTextNode } from \"./types\";\n\nconst isHeaderRow = (row: RichTextNode): boolean =>\n row.type === BLOCK.TABLE_ROW &&\n !!row.content?.every((node) => node.type === BLOCK.TABLE_HEADER_CELL);\n\n/**\n * Wrap the first rows with <thead /> if it consists of only <th> elements.\n * Wrap the rest of the rows with <tbody />.\n */\nexport const tableRenderer = (richTextNode: RichTextNode, children: ReactNode[]) => {\n if (richTextNode.type !== BLOCK.TABLE) {\n return children;\n }\n const { content: tableContent } = richTextNode;\n const [headerRows, bodyRows] = (tableContent || []).reduce<[RichTextNode[], RichTextNode[]]>(\n ([headers, body], row) => {\n return isHeaderRow(row) ? [[...headers, row], body] : [headers, [...body, row]];\n },\n [[], []]\n );\n const headerRowChildren = children.slice(0, headerRows.length);\n const bodyRowChildren = children.slice(headerRows.length, children.length);\n return (\n <div className=\"purpur-rich-text-table-scroll-container\">\n <div className=\"purpur-rich-text-table-inner-scroll-container\">\n <table>\n {headerRows.length > 0 && <thead>{headerRowChildren}</thead>}\n {bodyRows.length > 0 && <tbody>{bodyRowChildren}</tbody>}\n </table>\n </div>\n </div>\n );\n};\n","import { BLOCK, INLINE } from \"./constants\";\nimport { type Block, type Inline, type Mark, type RichTextNode, type Value } from \"./types\";\n\nexport type MarkNode = {\n type: Mark;\n};\n\ntype TextNode<T> = RichTextNode<T> & {\n type: \"text\";\n value: string;\n marks: MarkNode[];\n};\n\ntype InlineNode<T> = RichTextNode<T> & {\n type: Inline;\n content: Array<Inline | Text>;\n};\n\ntype BlockNode<T> = RichTextNode<T> & {\n type: Block;\n content: Array<Block | Inline | Text>;\n};\n\nconst hasValue = (obj: Record<string, unknown>, value: unknown) =>\n Object.values(obj).includes(value);\n\nconst isText = <T>(node: RichTextNode<T> | undefined): node is TextNode<T> => node?.type === \"text\";\n\nconst isBlock = <T>(node: RichTextNode<T> | undefined): node is BlockNode<T> =>\n !isInline(node) && !isText(node) && hasValue(BLOCK, node?.type);\n\nconst isInline = <T>(node: RichTextNode<T> | undefined): node is InlineNode<T> =>\n hasValue(INLINE, node?.type);\n\nexport const safeJsonParse = <T>(jsonString: string): T | null => {\n try {\n return JSON.parse(jsonString);\n } catch {\n return null;\n }\n};\n\n// This is equivalent to https://github.com/contentful/rich-text/tree/master/packages/rich-text-plain-text-renderer\nexport const richToPlainText = <T>(data: string, blockDivisor = \" \"): string => {\n const rootNode = safeJsonParse<RichTextNode<T>>(data);\n\n if (!rootNode || !rootNode.content) {\n return \"\";\n }\n\n return rootNode.content.reduce((acc: string, node: RichTextNode<T>, i) => {\n let nodeTextValue = \"\";\n\n if (isText(node)) {\n nodeTextValue = node.value;\n } else if (isBlock(node) || isInline(node)) {\n nodeTextValue = richToPlainText(JSON.stringify(node), blockDivisor);\n if (!nodeTextValue.length) {\n return acc;\n }\n }\n\n const nextNode = rootNode?.content?.[i + 1];\n const divisor = isBlock(nextNode) ? blockDivisor : \"\";\n\n return acc + nodeTextValue + divisor;\n }, \"\");\n};\n\nexport function normalizeNode<T = Value>(node: RichTextNode<T>) {\n if (\n node.type === BLOCK.IMAGE &&\n typeof node.value === \"object\" &&\n node?.value &&\n \"image\" in node.value &&\n node?.value?.image?.url\n ) {\n return { ...node, value: { ...node.value, url: node.value.image.url } };\n }\n\n if (\n node.type === BLOCK.VIDEO &&\n typeof node.value === \"object\" &&\n node?.value &&\n \"video\" in node.value &&\n node.value.video?.url\n ) {\n return { ...node, value: { ...node.value, url: node.value.video.url } };\n }\n\n return node;\n}\n","import React, { Fragment, type ReactNode } from \"react\";\nimport { Heading } from \"@purpur/heading\";\nimport { Link } from \"@purpur/link\";\nimport { Paragraph } from \"@purpur/paragraph\";\nimport { TextSpacing } from \"@purpur/text-spacing\";\n\nimport { BLOCK, MARK } from \"./constants\";\nimport { tableRenderer } from \"./renderers\";\nimport type {\n ImageProp,\n LinkProp,\n Mark,\n NodeTypes,\n RichTextNode,\n RichTextProps,\n Value,\n VideoPosterProp,\n} from \"./types\";\nimport { normalizeNode } from \"./utils\";\n\n// Inspired by https://github.com/contentful/rich-text/blob/master/packages/rich-text-react-renderer/src/index.tsx\nconst MARK_TYPES = {\n [MARK.BOLD]: (children: ReactNode) => <b>{children}</b>,\n [MARK.ITALIC]: (children: ReactNode) => <i>{children}</i>,\n [MARK.UNDERLINE]: (children: ReactNode) => <u>{children}</u>,\n [MARK.CODE]: (children: ReactNode) => <code>{children}</code>,\n};\n\nconst getNodeType = (node: RichTextNode) => {\n const type = node.type ?? node.nodeType!;\n if (type.startsWith(\"heading-\")) return type.replace(\"heading-\", \"header-\");\n if (type.startsWith(\"entry-hyperlink\")) return type.replace(\"entry-hyperlink\", \"hyperlink\");\n return type;\n};\n\nfunction getNodeTypes<T = Value>(\n link: LinkProp,\n image: ImageProp,\n videoPoster: VideoPosterProp\n): NodeTypes<T> {\n return {\n [BLOCK.RICHTEXTDOCUMENT]: (_, children) => children,\n [BLOCK.DOCUMENT]: (_, children) => children,\n [BLOCK.PARAGRAPH]: (_, children) => <Paragraph variant=\"paragraph-200\">{children}</Paragraph>,\n [BLOCK.TEXT]: (node) => {\n const { value: nodeValue, marks } = node;\n const value = typeof nodeValue === \"string\" ? nodeValue.replace(/\\n/g, \"<br />\") : nodeValue;\n\n const element = <span dangerouslySetInnerHTML={{ __html: value as string }} />;\n\n if (!marks) {\n return element;\n }\n return marks.reduce((accumulator: ReactNode, currentValue: Mark | { type: Mark }) => {\n return MARK_TYPES[typeof currentValue === \"string\" ? currentValue : currentValue.type](\n accumulator\n );\n }, element);\n },\n [BLOCK.HYPERLINK]: (node, children) => {\n const uri = node.uri ?? (node.data?.uri as string);\n\n if (link) {\n return <Link variant=\"text\">{link(children, uri)}</Link>;\n }\n return (\n <Link variant=\"text\">\n <a href={uri}>{children}</a>\n </Link>\n );\n },\n [BLOCK.HR]: () => <hr />,\n [BLOCK.HEADER_2]: (_, children) => (\n <Heading tag=\"h2\" variant=\"title-300\">\n {children}\n </Heading>\n ),\n [BLOCK.HEADER_3]: (_, children) => (\n <Heading tag=\"h3\" variant=\"title-200\">\n {children}\n </Heading>\n ),\n [BLOCK.HEADER_4]: (_, children) => (\n <Heading tag=\"h4\" variant=\"title-100\">\n {children}\n </Heading>\n ),\n [BLOCK.HEADER_5]: (_, children) => (\n <Heading tag=\"h5\" variant=\"title-100\">\n {children}\n </Heading>\n ),\n [BLOCK.HEADER_6]: (_, children) => (\n <Heading tag=\"h6\" variant=\"title-100\">\n {children}\n </Heading>\n ),\n [BLOCK.TABLE]: tableRenderer,\n [BLOCK.TABLE_ROW]: (_, children) => <tr>{children}</tr>,\n [BLOCK.TABLE_HEADER_CELL]: (_, children) => <th scope=\"col\">{children}</th>,\n [BLOCK.TABLE_CELL]: (_, children) => {\n return <td>{children}</td>;\n },\n [BLOCK.TABLE_BODY]: (_, children) => <tbody>{children}</tbody>,\n [BLOCK.LIST_ITEM]: (_, children) => <li>{children}</li>,\n [BLOCK.OL_LIST]: (_, children) => <ol>{children}</ol>,\n [BLOCK.UL_LIST]: (_, children) => <ul>{children}</ul>,\n [BLOCK.QUOTE]: (_, children) => <blockquote>&#8220;{children}&#8221;</blockquote>,\n [BLOCK.EMBEDDED_ENTRY]: (_, children) => children,\n [BLOCK.EMBEDDED_ASSET]: (_, children) => children,\n [BLOCK.IMAGE]: ({ value }) => {\n if (typeof value === \"object\" && value && \"url\" in value && value.url) {\n if (image) {\n return image(value.url, value.altText, value.image?.contentType);\n }\n return <img src={value.url} alt={value.altText ?? \"\"} loading=\"lazy\" />;\n }\n return null;\n },\n [BLOCK.VIDEO]: ({ value }) => {\n if (typeof value === \"object\" && value && \"posterImage\" in value) {\n const posterImage = value.posterImage?.url;\n\n return (\n // eslint-disable-next-line jsx-a11y/media-has-caption\n <video\n data-testid=\"rich text video\"\n controls\n src={value.url}\n poster={videoPoster && posterImage ? videoPoster(posterImage) : posterImage}\n />\n );\n }\n return null;\n },\n };\n}\n\nconst isValueWhitespaceOnly = (value: string): boolean => {\n return !value.replace(/\\s+/g, \"\");\n};\n\n/**\n * Strictly checks if a singular node value OR nested node content is an empty element.\n */\n\nconst isNodeOrContentEmpty = <T,>(node: RichTextNode<T>): boolean => {\n const { content, value } = node;\n\n if (!content) {\n return typeof value === \"string\" && isValueWhitespaceOnly(value);\n }\n\n for (const item of content) {\n if (getNodeType(item) === BLOCK.HYPERLINK) {\n return false;\n }\n }\n\n return (\n content.length > 0 &&\n typeof content[0].value === \"string\" &&\n isValueWhitespaceOnly(content[0].value)\n );\n};\n\nconst serializeRichText = <T,>(\n node: RichTextNode<T>,\n customNodeTypes?: NodeTypes<T>,\n link?: LinkProp,\n image?: ImageProp,\n videoPoster?: VideoPosterProp\n): ReactNode => {\n let index = 0; // nodes in rich text does not contain ids, we'll use index as keys for react\n\n const nodes = {\n ...getNodeTypes(link, image, videoPoster),\n ...customNodeTypes,\n };\n\n const renderNode = (node: RichTextNode<T>): ReactNode => {\n const renderFunc = nodes[getNodeType(node)];\n\n // node types that are missing from both default NODE_TYPES and custom are never rendered\n if (typeof renderFunc === \"undefined\") {\n return null;\n }\n\n if (isNodeOrContentEmpty(node)) {\n return null;\n }\n\n const children = node.content ? node.content.map(renderNode) : [];\n\n return <Fragment key={index++}>{renderFunc(normalizeNode(node), children)}</Fragment>;\n };\n\n return renderNode(node);\n};\n\n/* Not using a arrow function here since the default generic will mess with the highlighting\n and it still needs a eslint-disable-next-line because it still lints incorrect */\n\nfunction RichText<T = Value>({\n data,\n className,\n customNodeTypes,\n noTextSpacing = false,\n link,\n image,\n videoPoster,\n element: ElementTag = \"div\",\n ...rest\n}: RichTextProps<T>) {\n return data ? (\n noTextSpacing ? (\n <ElementTag className={className} {...rest}>\n {serializeRichText(data, customNodeTypes, link, image, videoPoster)}\n </ElementTag>\n ) : (\n <TextSpacing className={className} element={ElementTag} {...rest}>\n {serializeRichText(data, customNodeTypes, link, image, videoPoster)}\n </TextSpacing>\n )\n ) : null;\n}\n\nexport { getNodeTypes, RichText, serializeRichText };\n"],"names":["INLINE","BLOCK","MARK","isHeaderRow","row","node","tableRenderer","richTextNode","children","tableContent","headerRows","bodyRows","headers","body","headerRowChildren","bodyRowChildren","jsx","jsxs","hasValue","obj","value","isText","isBlock","isInline","safeJsonParse","jsonString","richToPlainText","data","blockDivisor","rootNode","acc","i","nodeTextValue","nextNode","divisor","normalizeNode","MARK_TYPES","getNodeType","type","getNodeTypes","link","image","videoPoster","_","Paragraph","nodeValue","marks","element","accumulator","currentValue","uri","Link","Heading","posterImage","isValueWhitespaceOnly","isNodeOrContentEmpty","content","item","serializeRichText","customNodeTypes","index","nodes","renderNode","renderFunc","Fragment","RichText","className","noTextSpacing","ElementTag","rest","TextSpacing"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { jsx as g } from "react/jsx-runtime";
2
2
  import { useEffect as l, createContext as T, useContext as k, useState as d, useMemo as x } from "react";
3
- import { aC as m, az as f, aB as N, aA as y, aD as $, ay as P, au as E, av as O, an as b, ap as A, aq as H, ar as M, at as W, as as D, aj as h, ak as F, am as L, ao as w, al as R, aF as Q, ax as j, aH as q, aE as z, aw as G, aG as K, W as J, Y as U, X, V as Y, K as Z, U as V, R as _, H as rr, G as er, O as or, N as tr, J as ar, I as cr, T as ur, S as nr, Q as ir, P as sr, M as lr, L as pr, v as vr, m as gr, e as dr, x as Br, z as Sr, h as Cr, j as Ir, k as Tr, q as kr, s as xr, t as mr, p as fr, b as Nr, c as yr, a as $r, l as Pr, u as Er, d as Or, w as br, y as Ar, g as Hr, i as Mr, f as Wr, o as Dr, r as hr, n as Fr, B as Lr, F as wr, D as Rr, A as Qr, E as jr, C as qr, cF as zr, cE as Gr, cD as Kr, cB as Jr, cr as Ur, cp as Xr, cz as Yr, cm as Zr, cn as Vr, cl as _r, cv as re, cu as ee, cq as oe, co as te, cC as ae, cA as ce, cy as ue, cw as ne, ct as ie, cs as se, c6 as le, c8 as pe, c9 as ve, cb as ge, ce as de, cg as Be, ch as Se, ci as Ce, c3 as Ie, c5 as Te, c7 as ke, c4 as xe, ca as me, cd as fe, cf as Ne, cc as ye, cH as $e, ck as Pe, c2 as Ee, cG as Oe, cj as be, c1 as Ae, aP as He, aO as Me, aM as We, aI as De, aK as he, aN as Fe, aJ as Le, aL as we } from "./variables-CKp4o9Tn.mjs";
3
+ import { aC as m, az as f, aB as N, aA as y, aD as $, ay as P, au as E, av as O, an as b, ap as A, aq as H, ar as M, at as W, as as D, aj as h, ak as F, am as L, ao as w, al as R, aF as Q, ax as j, aH as q, aE as z, aw as G, aG as K, W as J, Y as U, X, V as Y, K as Z, U as V, R as _, H as rr, G as er, O as or, N as tr, J as ar, I as cr, T as ur, S as nr, Q as ir, P as sr, M as lr, L as pr, v as vr, m as gr, e as dr, x as Br, z as Sr, h as Cr, j as Ir, k as Tr, q as kr, s as xr, t as mr, p as fr, b as Nr, c as yr, a as $r, l as Pr, u as Er, d as Or, w as br, y as Ar, g as Hr, i as Mr, f as Wr, o as Dr, r as hr, n as Fr, B as Lr, F as wr, D as Rr, A as Qr, E as jr, C as qr, cG as zr, cF as Gr, cE as Kr, cC as Jr, cs as Ur, cq as Xr, cA as Yr, cn as Zr, co as Vr, cm as _r, cw as re, cv as ee, cr as oe, cp as te, cD as ae, cB as ce, cz as ue, cx as ne, cu as ie, ct as se, c6 as le, c8 as pe, c9 as ve, cb as ge, ce as de, cg as Be, ch as Se, ci as Ce, c3 as Ie, c5 as Te, c7 as ke, c4 as xe, ca as me, cd as fe, cf as Ne, cc as ye, cI as $e, cl as Pe, c2 as Ee, cH as Oe, ck as be, c1 as Ae, aP as He, aO as Me, aM as We, aI as De, aK as he, aN as Fe, aJ as Le, aL as we } from "./variables-B5hbV0Uy.mjs";
4
4
  const Re = "#f4e0ff", Qe = "#c461f7", je = "#29003e", qe = "#ede1d8", ze = "#4f4741", Ge = "#3b332d", Ke = "#ffffff", Je = "#202022", Ue = "rgba(255, 255, 255, 0.95)", Xe = "rgba(255, 255, 255, 0.66)", Ye = "rgba(255, 255, 255, 0.37)", Ze = "rgba(0, 0, 0, 0.8)", Ve = "rgba(0, 0, 0, 0.54)", _e = "rgba(0, 0, 0, 0.44)", ro = "#f4e0ff", eo = "#faf0ff", oo = "#ffffff", to = "#4e0174", ao = "#ffffff", co = "#6d02a3", uo = "#4e0174", no = "#29003e", io = "#ffffff", so = "#ffffff", lo = "#29003e", po = "#ffffff", vo = "#29003e", go = "#ffffff", Bo = "#ffffff", So = "#d58df9", Co = "#d58df9", Io = "#ffafc9", To = "#980233", ko = "#fb4885", xo = "#e4175c", mo = "#79d9a7", fo = "#02562b", No = "#1fa15e", yo = "#f9bb5b", $o = "#f39200", Po = "#a86602", Eo = "#91cdf4", Oo = "#3694d3", bo = "#ffffff", Ao = "#ffffff", Ho = "#4e0174", Mo = "#202022", Wo = "#29003e", Do = "#f4e0ff", ho = "#ffffff", Fo = "#121212", Lo = "#ffffff", wo = "#202022", Ro = "#f5f5fa", Qo = "rgba(0, 0, 0, 0.71)", jo = "rgba(255, 255, 255, 0.84)", qo = "#03385b", zo = "#f4e0ff", Go = "#e4b6fb", Ko = "#d58df9", Jo = "#4e0174", Uo = "#6d02a3", Xo = "#8c07d0", Yo = "#990ae3", Zo = "#c461f7", Vo = "#d58df9", _o = "#990ae3", rt = "#6d02a3", et = "#4e0174", ot = "rgba(255, 255, 255, 0.11)", tt = "rgba(0, 0, 0, 0.1)", at = "#4e0174", ct = "#e4b6fb", ut = "#6d02a3", nt = "#d58df9", it = "rgba(255, 255, 255, 0.16)", st = "rgba(0, 0, 0, 0.05)", lt = "rgba(255, 255, 255, 0.07)", pt = "rgba(0, 0, 0, 0.05)", vt = "#e4175c", gt = "#c00543", dt = "#980233", Bt = "#03385b", St = "#62b2e7", Ct = "#003e1e", It = "#3dbf7c", Tt = "#1fa15e", kt = "#700025", xt = "#ff80ab", mt = "#fb4885", ft = "#4c2f03", Nt = "#f39200", yt = "#f39200", $t = "#353537", Pt = "#6d02a3", Et = "#f4e0ff", Ot = "#ffffff", bt = "#f4e0ff", At = "#29003e", Ht = "#4f4741", Mt = "#2d2824", Wt = "rgba(255, 255, 255, 0.29)", Dt = "rgba(0, 0, 0, 0.33)", ht = "rgba(255, 255, 255, 0.46)", Ft = "rgba(0, 0, 0, 0.54)", Lt = "rgba(255, 255, 255, 0.16)", wt = "rgba(0, 0, 0, 0.16)", Rt = "#c461f7", Qt = "#f4e0ff", jt = "#6d02a3", qt = "#faf0ff", zt = "#ffffff", Gt = "#4e0174", Kt = "#29003e", Jt = "#990ae3", Ut = "#d58df9", Xt = "rgba(255, 255, 255, 0.37)", Yt = "rgba(0, 0, 0, 0.44)", Zt = "#e4b6fb", Vt = "#6d02a3", _t = "#fb4885", ra = "#e4175c", ea = "#f39200", oa = "#3694d3", ta = "#1fa15e", aa = "#018842", ca = {
5
5
  colorBrandDeepPurple: Re,
6
6
  colorBrandCorePurple: Qe,
@@ -334,4 +334,4 @@ export {
334
334
  B as t,
335
335
  ia as u
336
336
  };
337
- //# sourceMappingURL=ThemeProvider-bkyFCeo6.mjs.map
337
+ //# sourceMappingURL=ThemeProvider-CkX-BNWN.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ThemeProvider-CkX-BNWN.mjs","sources":["../../tokens/dist/color/variables.dark.js","../../theme/src/telia-dark.ts","../../theme/src/telia-light.ts","../../theme/src/telia-theme.ts","../../theme/src/useApplyTheme.ts","../../theme/src/ThemeProvider.tsx"],"sourcesContent":["export const purpurColorPurple50 = \"#faf0ff\";\nexport const purpurColorPurple100 = \"#f4e0ff\";\nexport const purpurColorPurple200 = \"#e4b6fb\";\nexport const purpurColorPurple300 = \"#d58df9\";\nexport const purpurColorPurple400 = \"#c461f7\";\nexport const purpurColorPurple500 = \"#b12df4\";\nexport const purpurColorPurple550 = \"#990ae3\";\nexport const purpurColorPurple600 = \"#8c07d0\";\nexport const purpurColorPurple700 = \"#6d02a3\";\nexport const purpurColorPurple800 = \"#4e0174\";\nexport const purpurColorPurple900 = \"#29003e\";\nexport const purpurColorPurple950 = \"#1f002e\";\nexport const purpurColorBeige50 = \"#f9f1ec\";\nexport const purpurColorBeige100 = \"#ede1d8\";\nexport const purpurColorBeige200 = \"#d7c3b5\";\nexport const purpurColorBeige300 = \"#bba494\";\nexport const purpurColorBeige400 = \"#a08877\";\nexport const purpurColorBeige500 = \"#807268\";\nexport const purpurColorBeige600 = \"#665e58\";\nexport const purpurColorBeige700 = \"#4f4741\";\nexport const purpurColorBeige800 = \"#3b332d\";\nexport const purpurColorBeige900 = \"#2d2824\";\nexport const purpurColorBeige950 = \"#170f09\";\nexport const purpurColorTeal50 = \"#edf5f5\";\nexport const purpurColorTeal100 = \"#d5eae9\";\nexport const purpurColorTeal200 = \"#a1cfcd\";\nexport const purpurColorTeal300 = \"#6eb5b2\";\nexport const purpurColorTeal400 = \"#3a9b96\";\nexport const purpurColorTeal500 = \"#00847e\";\nexport const purpurColorTeal600 = \"#006c67\";\nexport const purpurColorTeal700 = \"#02534f\";\nexport const purpurColorTeal800 = \"#063c39\";\nexport const purpurColorTeal900 = \"#032220\";\nexport const purpurColorTeal950 = \"#011413\";\nexport const purpurColorGray50 = \"#f5f5fa\";\nexport const purpurColorGray100 = \"#e5e5eb\";\nexport const purpurColorGray150 = \"#d6d6dd\";\nexport const purpurColorGray200 = \"#c6c6cd\";\nexport const purpurColorGray300 = \"#aaaab0\";\nexport const purpurColorGray400 = \"#8d8d94\";\nexport const purpurColorGray500 = \"#757579\";\nexport const purpurColorGray600 = \"#5f5f63\";\nexport const purpurColorGray700 = \"#4a4a4d\";\nexport const purpurColorGray800 = \"#353537\";\nexport const purpurColorGray850 = \"#2a2a2c\";\nexport const purpurColorGray900 = \"#202022\";\nexport const purpurColorGray950 = \"#121212\";\nexport const purpurColorGreen50 = \"#e1f9ec\";\nexport const purpurColorGreen100 = \"#c5efd9\";\nexport const purpurColorGreen200 = \"#79d9a7\";\nexport const purpurColorGreen300 = \"#3dbf7c\";\nexport const purpurColorGreen400 = \"#1fa15e\";\nexport const purpurColorGreen500 = \"#018842\";\nexport const purpurColorGreen600 = \"#017037\";\nexport const purpurColorGreen700 = \"#02562b\";\nexport const purpurColorGreen800 = \"#003e1e\";\nexport const purpurColorGreen900 = \"#002411\";\nexport const purpurColorGreen950 = \"#00150a\";\nexport const purpurColorRed50 = \"#fff0f5\";\nexport const purpurColorRed100 = \"#ffdde8\";\nexport const purpurColorRed200 = \"#ffafc9\";\nexport const purpurColorRed300 = \"#ff80ab\";\nexport const purpurColorRed400 = \"#fb4885\";\nexport const purpurColorRed500 = \"#e4175c\";\nexport const purpurColorRed600 = \"#c00543\";\nexport const purpurColorRed700 = \"#980233\";\nexport const purpurColorRed800 = \"#700025\";\nexport const purpurColorRed900 = \"#440016\";\nexport const purpurColorRed950 = \"#2c000e\";\nexport const purpurColorOrange50 = \"#fff2de\";\nexport const purpurColorOrange100 = \"#ffe1b3\";\nexport const purpurColorOrange200 = \"#f9bb5b\";\nexport const purpurColorOrange300 = \"#f39200\";\nexport const purpurColorOrange400 = \"#cc7a00\";\nexport const purpurColorOrange500 = \"#a86602\";\nexport const purpurColorOrange600 = \"#8b5301\";\nexport const purpurColorOrange700 = \"#6a4102\";\nexport const purpurColorOrange800 = \"#4c2f03\";\nexport const purpurColorOrange900 = \"#2b1b03\";\nexport const purpurColorOrange950 = \"#1a0f00\";\nexport const purpurColorBlue50 = \"#e8f6ff\";\nexport const purpurColorBlue100 = \"#caeaff\";\nexport const purpurColorBlue200 = \"#91cdf4\";\nexport const purpurColorBlue300 = \"#62b2e7\";\nexport const purpurColorBlue400 = \"#3694d3\";\nexport const purpurColorBlue500 = \"#0078cb\";\nexport const purpurColorBlue600 = \"#0063a6\";\nexport const purpurColorBlue700 = \"#014d80\";\nexport const purpurColorBlue800 = \"#03385b\";\nexport const purpurColorBlue900 = \"#002036\";\nexport const purpurColorBlue950 = \"#011320\";\nexport const purpurColorTransparentBlack50 = \"rgba(0, 0, 0, 0.05)\";\nexport const purpurColorTransparentBlack100 = \"rgba(0, 0, 0, 0.1)\";\nexport const purpurColorTransparentBlack150 = \"rgba(0, 0, 0, 0.16)\";\nexport const purpurColorTransparentBlack200 = \"rgba(0, 0, 0, 0.22)\";\nexport const purpurColorTransparentBlack300 = \"rgba(0, 0, 0, 0.33)\";\nexport const purpurColorTransparentBlack400 = \"rgba(0, 0, 0, 0.44)\";\nexport const purpurColorTransparentBlack500 = \"rgba(0, 0, 0, 0.54)\";\nexport const purpurColorTransparentBlack600 = \"rgba(0, 0, 0, 0.62)\";\nexport const purpurColorTransparentBlack700 = \"rgba(0, 0, 0, 0.71)\";\nexport const purpurColorTransparentBlack800 = \"rgba(0, 0, 0, 0.8)\";\nexport const purpurColorTransparentBlack850 = \"rgba(0, 0, 0, 0.84)\";\nexport const purpurColorTransparentBlack900 = \"rgba(0, 0, 0, 0.88)\";\nexport const purpurColorTransparentBlack950 = \"rgba(0, 0, 0, 0.93)\";\nexport const purpurColorTransparentWhite50 = \"rgba(255, 255, 255, 0.07)\";\nexport const purpurColorTransparentWhite100 = \"rgba(255, 255, 255, 0.11)\";\nexport const purpurColorTransparentWhite150 = \"rgba(255, 255, 255, 0.16)\";\nexport const purpurColorTransparentWhite200 = \"rgba(255, 255, 255, 0.21)\";\nexport const purpurColorTransparentWhite300 = \"rgba(255, 255, 255, 0.29)\";\nexport const purpurColorTransparentWhite400 = \"rgba(255, 255, 255, 0.37)\";\nexport const purpurColorTransparentWhite500 = \"rgba(255, 255, 255, 0.46)\";\nexport const purpurColorTransparentWhite600 = \"rgba(255, 255, 255, 0.55)\";\nexport const purpurColorTransparentWhite700 = \"rgba(255, 255, 255, 0.66)\";\nexport const purpurColorTransparentWhite800 = \"rgba(255, 255, 255, 0.79)\";\nexport const purpurColorTransparentWhite850 = \"rgba(255, 255, 255, 0.84)\";\nexport const purpurColorTransparentWhite900 = \"rgba(255, 255, 255, 0.89)\";\nexport const purpurColorTransparentWhite950 = \"rgba(255, 255, 255, 0.95)\";\nexport const purpurColorFunctionalBlack = \"#000000\";\nexport const purpurColorFunctionalWhite = \"#ffffff\";\nexport const purpurColorFunctionalTransparent = \"rgba(255, 255, 255, 0)\";\nexport const purpurColorBrandDeepPurple = \"#f4e0ff\";\nexport const purpurColorBrandCorePurple = \"#c461f7\";\nexport const purpurColorBrandLightPurple = \"#29003e\";\nexport const purpurColorBrandDeepBeige = \"#ede1d8\";\nexport const purpurColorBrandBeige = \"#4f4741\";\nexport const purpurColorBrandLightBeige = \"#3b332d\";\nexport const purpurColorBrandOffBlack = \"#ffffff\";\nexport const purpurColorBrandWhite = \"#202022\";\nexport const purpurColorTextDefault = \"rgba(255, 255, 255, 0.95)\";\nexport const purpurColorTextMedium = \"rgba(255, 255, 255, 0.66)\";\nexport const purpurColorTextWeak = \"rgba(255, 255, 255, 0.37)\";\nexport const purpurColorTextDefaultNegative = \"rgba(0, 0, 0, 0.8)\";\nexport const purpurColorTextMediumNegative = \"rgba(0, 0, 0, 0.54)\";\nexport const purpurColorTextWeakNegative = \"rgba(0, 0, 0, 0.44)\";\nexport const purpurColorTextInteractivePrimary = \"#f4e0ff\";\nexport const purpurColorTextInteractivePrimaryHover = \"#faf0ff\";\nexport const purpurColorTextInteractivePrimaryActive = \"#ffffff\";\nexport const purpurColorTextInteractiveOnPrimary = \"#4e0174\";\nexport const purpurColorTextInteractiveOnPrimaryNegative = \"#ffffff\";\nexport const purpurColorTextInteractivePrimaryNegative = \"#6d02a3\";\nexport const purpurColorTextInteractivePrimaryHoverNegative = \"#4e0174\";\nexport const purpurColorTextInteractivePrimaryActiveNegative = \"#29003e\";\nexport const purpurColorTextInteractiveOnExpressive = \"#ffffff\";\nexport const purpurColorTextInteractiveOnExpressiveNegative = \"#ffffff\";\nexport const purpurColorTextInteractiveOnExpressiveHover = \"#29003e\";\nexport const purpurColorTextInteractiveOnExpressiveHoverNegative = \"#ffffff\";\nexport const purpurColorTextInteractiveOnExpressiveActive = \"#29003e\";\nexport const purpurColorTextInteractiveOnExpressiveActiveNegative = \"#ffffff\";\nexport const purpurColorTextInteractiveOnDestructive = \"#ffffff\";\nexport const purpurColorTextInteractiveSelected = \"#d58df9\";\nexport const purpurColorTextInteractiveSelectedNegative = \"#990ae3\";\nexport const purpurColorTextStatusDiscount = \"#d58df9\";\nexport const purpurColorTextStatusErrorStrong = \"#ffafc9\";\nexport const purpurColorTextStatusErrorStrongNegative = \"#980233\";\nexport const purpurColorTextStatusErrorMedium = \"#fb4885\";\nexport const purpurColorTextStatusErrorMediumNegative = \"#e4175c\";\nexport const purpurColorTextStatusSuccessStrong = \"#79d9a7\";\nexport const purpurColorTextStatusSuccessStrongNegative = \"#02562b\";\nexport const purpurColorTextStatusSuccessMedium = \"#1fa15e\";\nexport const purpurColorTextStatusWarningStrong = \"#f9bb5b\";\nexport const purpurColorTextStatusWarningMedium = \"#f39200\";\nexport const purpurColorTextStatusWarningMediumNegative = \"#a86602\";\nexport const purpurColorTextStatusInfoStrong = \"#91cdf4\";\nexport const purpurColorTextStatusInfoMedium = \"#3694d3\";\nexport const purpurColorTextStatusNeutral = \"#ffffff\";\nexport const purpurColorTextStatusSpecial = \"#ffffff\";\nexport const purpurColorTextStatusAttention = \"#4e0174\";\nexport const purpurColorTextStatusBlackFriday = \"#202022\";\nexport const purpurColorTextToneOnTonePrimary = \"#29003e\";\nexport const purpurColorTextToneOnToneSecondary = \"#f4e0ff\";\nexport const purpurColorTextToneOnToneTertiary = \"#ffffff\";\nexport const purpurColorBackgroundPrimary = \"#121212\";\nexport const purpurColorBackgroundPrimaryNegative = \"#ffffff\";\nexport const purpurColorBackgroundSecondary = \"#202022\";\nexport const purpurColorBackgroundSecondaryNegative = \"#f5f5fa\";\nexport const purpurColorBackgroundOnImage = \"rgba(0, 0, 0, 0.71)\";\nexport const purpurColorBackgroundOnImageNegative = \"rgba(255, 255, 255, 0.84)\";\nexport const purpurColorBackgroundInteractiveAutoFill = \"#03385b\";\nexport const purpurColorBackgroundInteractivePrimary = \"#f4e0ff\";\nexport const purpurColorBackgroundInteractivePrimaryHover = \"#e4b6fb\";\nexport const purpurColorBackgroundInteractivePrimaryActive = \"#d58df9\";\nexport const purpurColorBackgroundInteractivePrimaryNegative = \"#4e0174\";\nexport const purpurColorBackgroundInteractivePrimaryHoverNegative = \"#6d02a3\";\nexport const purpurColorBackgroundInteractivePrimaryActiveNegative = \"#8c07d0\";\nexport const purpurColorBackgroundInteractiveExpressive = \"#990ae3\";\nexport const purpurColorBackgroundInteractiveExpressiveHover = \"#c461f7\";\nexport const purpurColorBackgroundInteractiveExpressiveActive = \"#d58df9\";\nexport const purpurColorBackgroundInteractiveExpressiveNegative = \"#990ae3\";\nexport const purpurColorBackgroundInteractiveExpressiveHoverNegative = \"#6d02a3\";\nexport const purpurColorBackgroundInteractiveExpressiveActiveNegative = \"#4e0174\";\nexport const purpurColorBackgroundInteractiveDisabled = \"rgba(255, 255, 255, 0.11)\";\nexport const purpurColorBackgroundInteractiveDisabledNegative = \"rgba(0, 0, 0, 0.1)\";\nexport const purpurColorBackgroundInteractiveTransparentHover = \"#4e0174\";\nexport const purpurColorBackgroundInteractiveTransparentHoverNegative = \"#e4b6fb\";\nexport const purpurColorBackgroundInteractiveTransparentActive = \"#6d02a3\";\nexport const purpurColorBackgroundInteractiveTransparentActiveNegative = \"#d58df9\";\nexport const purpurColorBackgroundInteractiveInactive = \"rgba(255, 255, 255, 0.16)\";\nexport const purpurColorBackgroundInteractiveInactiveNegative = \"rgba(0, 0, 0, 0.05)\";\nexport const purpurColorBackgroundInteractiveReadOnly = \"rgba(255, 255, 255, 0.07)\";\nexport const purpurColorBackgroundInteractiveReadOnlyNegative = \"rgba(0, 0, 0, 0.05)\";\nexport const purpurColorBackgroundInteractiveDestructive = \"#e4175c\";\nexport const purpurColorBackgroundInteractiveDestructiveHover = \"#c00543\";\nexport const purpurColorBackgroundInteractiveDestructiveActive = \"#980233\";\nexport const purpurColorBackgroundStatusInfoMedium = \"#03385b\";\nexport const purpurColorBackgroundStatusInfoStrong = \"#62b2e7\";\nexport const purpurColorBackgroundStatusSuccessMedium = \"#003e1e\";\nexport const purpurColorBackgroundStatusSuccessStrong = \"#3dbf7c\";\nexport const purpurColorBackgroundStatusSuccessStrongNegative = \"#1fa15e\";\nexport const purpurColorBackgroundStatusErrorMedium = \"#700025\";\nexport const purpurColorBackgroundStatusErrorStrong = \"#ff80ab\";\nexport const purpurColorBackgroundStatusErrorStrongNegative = \"#fb4885\";\nexport const purpurColorBackgroundStatusWarningMedium = \"#4c2f03\";\nexport const purpurColorBackgroundStatusWarningStrong = \"#f39200\";\nexport const purpurColorBackgroundStatusWarningStrongNegative = \"#f39200\";\nexport const purpurColorBackgroundStatusNeutral = \"#353537\";\nexport const purpurColorBackgroundStatusSpecial = \"#6d02a3\";\nexport const purpurColorBackgroundStatusAttention = \"#f4e0ff\";\nexport const purpurColorBackgroundStatusBlackFriday = \"#ffffff\";\nexport const purpurColorBackgroundToneOnTonePrimary = \"#f4e0ff\";\nexport const purpurColorBackgroundToneOnToneSecondary = \"#29003e\";\nexport const purpurColorBackgroundToneOnToneTertiary = \"#4f4741\";\nexport const purpurColorBackgroundToneOnToneQuaternary = \"#2d2824\";\nexport const purpurColorBorderMedium = \"rgba(255, 255, 255, 0.29)\";\nexport const purpurColorBorderMediumNegative = \"rgba(0, 0, 0, 0.33)\";\nexport const purpurColorBorderStrong = \"rgba(255, 255, 255, 0.46)\";\nexport const purpurColorBorderStrongNegative = \"rgba(0, 0, 0, 0.54)\";\nexport const purpurColorBorderWeak = \"rgba(255, 255, 255, 0.16)\";\nexport const purpurColorBorderWeakNegative = \"rgba(0, 0, 0, 0.16)\";\nexport const purpurColorBorderInteractiveFocus = \"#c461f7\";\nexport const purpurColorBorderInteractivePrimary = \"#f4e0ff\";\nexport const purpurColorBorderInteractivePrimaryNegative = \"#6d02a3\";\nexport const purpurColorBorderInteractivePrimaryHover = \"#faf0ff\";\nexport const purpurColorBorderInteractivePrimaryActive = \"#ffffff\";\nexport const purpurColorBorderInteractivePrimaryHoverNegative = \"#4e0174\";\nexport const purpurColorBorderInteractivePrimaryActiveNegative = \"#29003e\";\nexport const purpurColorBorderInteractiveExpressive = \"#990ae3\";\nexport const purpurColorBorderInteractiveSelected = \"#d58df9\";\nexport const purpurColorBorderInteractiveSubtle = \"rgba(255, 255, 255, 0.37)\";\nexport const purpurColorBorderInteractiveSubtleNegative = \"rgba(0, 0, 0, 0.44)\";\nexport const purpurColorBorderInteractiveSubtleHover = \"#e4b6fb\";\nexport const purpurColorBorderInteractiveSubtleHoverNegative = \"#6d02a3\";\nexport const purpurColorBorderStatusError = \"#fb4885\";\nexport const purpurColorBorderStatusErrorNegative = \"#e4175c\";\nexport const purpurColorBorderStatusWarning = \"#f39200\";\nexport const purpurColorBorderStatusInfo = \"#3694d3\";\nexport const purpurColorBorderStatusSuccess = \"#1fa15e\";\nexport const purpurColorBorderStatusSuccessNegative = \"#018842\";\nexport const purpurColorOverlayDefault = \"rgba(0, 0, 0, 0.71)\";\nexport const purpurColorGradientAiBottom = \"#62b2e7\";\nexport const purpurColorGradientAiBottomNegative = \"#3694d3\";\nexport const purpurColorGradientAiTop = \"#d58df9\";\nexport const purpurColorGradientAiTopNegative = \"#b12df4\";\n","import {\n purpurColorBackgroundInteractiveAutoFill,\n purpurColorBackgroundInteractiveDestructive,\n purpurColorBackgroundInteractiveDestructiveActive,\n purpurColorBackgroundInteractiveDestructiveHover,\n purpurColorBackgroundInteractiveDisabled,\n purpurColorBackgroundInteractiveDisabledNegative,\n purpurColorBackgroundInteractiveExpressive,\n purpurColorBackgroundInteractiveExpressiveActive,\n purpurColorBackgroundInteractiveExpressiveActiveNegative,\n purpurColorBackgroundInteractiveExpressiveHover,\n purpurColorBackgroundInteractiveExpressiveHoverNegative,\n purpurColorBackgroundInteractiveExpressiveNegative,\n purpurColorBackgroundInteractiveInactive,\n purpurColorBackgroundInteractiveInactiveNegative,\n purpurColorBackgroundInteractivePrimary,\n purpurColorBackgroundInteractivePrimaryActive,\n purpurColorBackgroundInteractivePrimaryActiveNegative,\n purpurColorBackgroundInteractivePrimaryHover,\n purpurColorBackgroundInteractivePrimaryHoverNegative,\n purpurColorBackgroundInteractivePrimaryNegative,\n purpurColorBackgroundInteractiveReadOnly,\n purpurColorBackgroundInteractiveReadOnlyNegative,\n purpurColorBackgroundInteractiveTransparentActive,\n purpurColorBackgroundInteractiveTransparentActiveNegative,\n purpurColorBackgroundInteractiveTransparentHover,\n purpurColorBackgroundInteractiveTransparentHoverNegative,\n purpurColorBackgroundOnImage,\n purpurColorBackgroundOnImageNegative,\n purpurColorBackgroundPrimary,\n purpurColorBackgroundPrimaryNegative,\n purpurColorBackgroundSecondary,\n purpurColorBackgroundSecondaryNegative,\n purpurColorBackgroundStatusAttention,\n purpurColorBackgroundStatusBlackFriday,\n purpurColorBackgroundStatusErrorMedium,\n purpurColorBackgroundStatusErrorStrong,\n purpurColorBackgroundStatusErrorStrongNegative,\n purpurColorBackgroundStatusInfoMedium,\n purpurColorBackgroundStatusInfoStrong,\n purpurColorBackgroundStatusNeutral,\n purpurColorBackgroundStatusSpecial,\n purpurColorBackgroundStatusSuccessMedium,\n purpurColorBackgroundStatusSuccessStrong,\n purpurColorBackgroundStatusSuccessStrongNegative,\n purpurColorBackgroundStatusWarningMedium,\n purpurColorBackgroundStatusWarningStrong,\n purpurColorBackgroundStatusWarningStrongNegative,\n purpurColorBackgroundToneOnTonePrimary,\n purpurColorBackgroundToneOnToneQuaternary,\n purpurColorBackgroundToneOnToneSecondary,\n purpurColorBackgroundToneOnToneTertiary,\n purpurColorBorderInteractiveExpressive,\n purpurColorBorderInteractiveFocus,\n purpurColorBorderInteractivePrimary,\n purpurColorBorderInteractivePrimaryActive,\n purpurColorBorderInteractivePrimaryActiveNegative,\n purpurColorBorderInteractivePrimaryHover,\n purpurColorBorderInteractivePrimaryHoverNegative,\n purpurColorBorderInteractivePrimaryNegative,\n purpurColorBorderInteractiveSelected,\n purpurColorBorderInteractiveSubtle,\n purpurColorBorderInteractiveSubtleHover,\n purpurColorBorderInteractiveSubtleHoverNegative,\n purpurColorBorderInteractiveSubtleNegative,\n purpurColorBorderMedium,\n purpurColorBorderMediumNegative,\n purpurColorBorderStatusError,\n purpurColorBorderStatusErrorNegative,\n purpurColorBorderStatusInfo,\n purpurColorBorderStatusSuccess,\n purpurColorBorderStatusSuccessNegative,\n purpurColorBorderStatusWarning,\n purpurColorBorderStrong,\n purpurColorBorderStrongNegative,\n purpurColorBorderWeak,\n purpurColorBorderWeakNegative,\n purpurColorBrandBeige,\n purpurColorBrandCorePurple,\n purpurColorBrandDeepBeige,\n purpurColorBrandDeepPurple,\n purpurColorBrandLightBeige,\n purpurColorBrandLightPurple,\n purpurColorBrandOffBlack,\n purpurColorBrandWhite,\n purpurColorTextDefault,\n purpurColorTextDefaultNegative,\n purpurColorTextInteractiveOnDestructive,\n purpurColorTextInteractiveOnExpressive,\n purpurColorTextInteractiveOnExpressiveActive,\n purpurColorTextInteractiveOnExpressiveActiveNegative,\n purpurColorTextInteractiveOnExpressiveHover,\n purpurColorTextInteractiveOnExpressiveHoverNegative,\n purpurColorTextInteractiveOnExpressiveNegative,\n purpurColorTextInteractiveOnPrimary,\n purpurColorTextInteractiveOnPrimaryNegative,\n purpurColorTextInteractivePrimary,\n purpurColorTextInteractivePrimaryActive,\n purpurColorTextInteractivePrimaryActiveNegative,\n purpurColorTextInteractivePrimaryHover,\n purpurColorTextInteractivePrimaryHoverNegative,\n purpurColorTextInteractivePrimaryNegative,\n purpurColorTextInteractiveSelected,\n purpurColorTextMedium,\n purpurColorTextMediumNegative,\n purpurColorTextStatusAttention,\n purpurColorTextStatusBlackFriday,\n purpurColorTextStatusDiscount,\n purpurColorTextStatusErrorMedium,\n purpurColorTextStatusErrorMediumNegative,\n purpurColorTextStatusErrorStrong,\n purpurColorTextStatusErrorStrongNegative,\n purpurColorTextStatusInfoMedium,\n purpurColorTextStatusInfoStrong,\n purpurColorTextStatusNeutral,\n purpurColorTextStatusSpecial,\n purpurColorTextStatusSuccessMedium,\n purpurColorTextStatusSuccessStrong,\n purpurColorTextStatusSuccessStrongNegative,\n purpurColorTextStatusWarningMedium,\n purpurColorTextStatusWarningMediumNegative,\n purpurColorTextStatusWarningStrong,\n purpurColorTextToneOnTonePrimary,\n purpurColorTextToneOnToneSecondary,\n purpurColorTextToneOnToneTertiary,\n purpurColorTextWeak,\n purpurColorTextWeakNegative,\n} from \"@purpur/tokens/dark\";\n\nimport type { ThemeProps } from \"./theme-props\";\n\nexport const dark = {\n colorBrandDeepPurple: purpurColorBrandDeepPurple,\n colorBrandCorePurple: purpurColorBrandCorePurple,\n colorBrandLightPurple: purpurColorBrandLightPurple,\n colorBrandDeepBeige: purpurColorBrandDeepBeige,\n colorBrandBeige: purpurColorBrandBeige,\n colorBrandLightBeige: purpurColorBrandLightBeige,\n colorBrandOffBlack: purpurColorBrandOffBlack,\n colorBrandWhite: purpurColorBrandWhite,\n\n colorTextDefault: purpurColorTextDefault,\n colorTextMedium: purpurColorTextMedium,\n colorTextWeak: purpurColorTextWeak,\n colorTextDefaultNegative: purpurColorTextDefaultNegative,\n colorTextMediumNegative: purpurColorTextMediumNegative,\n colorTextWeakNegative: purpurColorTextWeakNegative,\n\n colorTextInteractivePrimary: purpurColorTextInteractivePrimary,\n colorTextInteractivePrimaryHover: purpurColorTextInteractivePrimaryHover,\n colorTextInteractivePrimaryActive: purpurColorTextInteractivePrimaryActive,\n colorTextInteractiveOnPrimary: purpurColorTextInteractiveOnPrimary,\n colorTextInteractiveOnExpressive: purpurColorTextInteractiveOnExpressive,\n colorTextInteractiveOnExpressiveHover: purpurColorTextInteractiveOnExpressiveHover,\n colorTextInteractiveOnExpressiveActive: purpurColorTextInteractiveOnExpressiveActive,\n colorTextInteractiveOnDestructive: purpurColorTextInteractiveOnDestructive,\n colorTextInteractiveSelected: purpurColorTextInteractiveSelected,\n colorTextInteractivePrimaryNegative: purpurColorTextInteractivePrimaryNegative,\n colorTextInteractivePrimaryHoverNegative: purpurColorTextInteractivePrimaryHoverNegative,\n colorTextInteractivePrimaryActiveNegative: purpurColorTextInteractivePrimaryActiveNegative,\n colorTextInteractiveOnPrimaryNegative: purpurColorTextInteractiveOnPrimaryNegative,\n colorTextInteractiveOnExpressiveNegative: purpurColorTextInteractiveOnExpressiveNegative,\n colorTextInteractiveOnExpressiveHoverNegative:\n purpurColorTextInteractiveOnExpressiveHoverNegative,\n colorTextInteractiveOnExpressiveActiveNegative:\n purpurColorTextInteractiveOnExpressiveActiveNegative,\n\n colorTextStatusInfoMedium: purpurColorTextStatusInfoMedium,\n colorTextStatusInfoStrong: purpurColorTextStatusInfoStrong,\n colorTextStatusSuccessMedium: purpurColorTextStatusSuccessMedium,\n colorTextStatusSuccessStrong: purpurColorTextStatusSuccessStrong,\n colorTextStatusWarningMedium: purpurColorTextStatusWarningMedium,\n colorTextStatusWarningStrong: purpurColorTextStatusWarningStrong,\n colorTextStatusErrorMedium: purpurColorTextStatusErrorMedium,\n colorTextStatusErrorStrong: purpurColorTextStatusErrorStrong,\n colorTextStatusNeutral: purpurColorTextStatusNeutral,\n colorTextStatusSpecial: purpurColorTextStatusSpecial,\n colorTextStatusAttention: purpurColorTextStatusAttention,\n colorTextStatusDiscount: purpurColorTextStatusDiscount,\n colorTextStatusBlackFriday: purpurColorTextStatusBlackFriday,\n colorTextStatusSuccessStrongNegative: purpurColorTextStatusSuccessStrongNegative,\n colorTextStatusErrorMediumNegative: purpurColorTextStatusErrorMediumNegative,\n colorTextStatusErrorStrongNegative: purpurColorTextStatusErrorStrongNegative,\n colorTextStatusWarningMediumNegative: purpurColorTextStatusWarningMediumNegative,\n\n colorTextToneOnTonePrimary: purpurColorTextToneOnTonePrimary,\n colorTextToneOnToneSecondary: purpurColorTextToneOnToneSecondary,\n colorTextToneOnToneTertiary: purpurColorTextToneOnToneTertiary,\n\n colorBackgroundPrimary: purpurColorBackgroundPrimary,\n colorBackgroundSecondary: purpurColorBackgroundSecondary,\n colorBackgroundOnImage: purpurColorBackgroundOnImage,\n colorBackgroundPrimaryNegative: purpurColorBackgroundPrimaryNegative,\n colorBackgroundSecondaryNegative: purpurColorBackgroundSecondaryNegative,\n colorBackgroundOnImageNegative: purpurColorBackgroundOnImageNegative,\n\n colorBackgroundInteractivePrimary: purpurColorBackgroundInteractivePrimary,\n colorBackgroundInteractivePrimaryHover: purpurColorBackgroundInteractivePrimaryHover,\n colorBackgroundInteractivePrimaryActive: purpurColorBackgroundInteractivePrimaryActive,\n colorBackgroundInteractiveExpressive: purpurColorBackgroundInteractiveExpressive,\n colorBackgroundInteractiveExpressiveHover: purpurColorBackgroundInteractiveExpressiveHover,\n colorBackgroundInteractiveExpressiveActive: purpurColorBackgroundInteractiveExpressiveActive,\n colorBackgroundInteractiveTransparentHover: purpurColorBackgroundInteractiveTransparentHover,\n colorBackgroundInteractiveTransparentActive: purpurColorBackgroundInteractiveTransparentActive,\n colorBackgroundInteractiveDisabled: purpurColorBackgroundInteractiveDisabled,\n colorBackgroundInteractiveReadOnly: purpurColorBackgroundInteractiveReadOnly,\n colorBackgroundInteractiveInactive: purpurColorBackgroundInteractiveInactive,\n colorBackgroundInteractiveDestructive: purpurColorBackgroundInteractiveDestructive,\n colorBackgroundInteractiveDestructiveHover: purpurColorBackgroundInteractiveDestructiveHover,\n colorBackgroundInteractiveDestructiveActive: purpurColorBackgroundInteractiveDestructiveActive,\n colorBackgroundInteractiveAutoFill: purpurColorBackgroundInteractiveAutoFill,\n colorBackgroundInteractivePrimaryNegative: purpurColorBackgroundInteractivePrimaryNegative,\n colorBackgroundInteractivePrimaryHoverNegative:\n purpurColorBackgroundInteractivePrimaryHoverNegative,\n colorBackgroundInteractivePrimaryActiveNegative:\n purpurColorBackgroundInteractivePrimaryActiveNegative,\n colorBackgroundInteractiveExpressiveNegative: purpurColorBackgroundInteractiveExpressiveNegative,\n colorBackgroundInteractiveExpressiveHoverNegative:\n purpurColorBackgroundInteractiveExpressiveHoverNegative,\n colorBackgroundInteractiveExpressiveActiveNegative:\n purpurColorBackgroundInteractiveExpressiveActiveNegative,\n colorBackgroundInteractiveTransparentHoverNegative:\n purpurColorBackgroundInteractiveTransparentHoverNegative,\n colorBackgroundInteractiveTransparentActiveNegative:\n purpurColorBackgroundInteractiveTransparentActiveNegative,\n colorBackgroundInteractiveDisabledNegative: purpurColorBackgroundInteractiveDisabledNegative,\n colorBackgroundInteractiveInactiveNegative: purpurColorBackgroundInteractiveInactiveNegative,\n colorBackgroundInteractiveReadOnlyNegative: purpurColorBackgroundInteractiveReadOnlyNegative,\n\n colorBackgroundStatusInfoMedium: purpurColorBackgroundStatusInfoMedium,\n colorBackgroundStatusInfoStrong: purpurColorBackgroundStatusInfoStrong,\n colorBackgroundStatusSuccessMedium: purpurColorBackgroundStatusSuccessMedium,\n colorBackgroundStatusSuccessStrong: purpurColorBackgroundStatusSuccessStrong,\n colorBackgroundStatusWarningMedium: purpurColorBackgroundStatusWarningMedium,\n colorBackgroundStatusWarningStrong: purpurColorBackgroundStatusWarningStrong,\n colorBackgroundStatusErrorMedium: purpurColorBackgroundStatusErrorMedium,\n colorBackgroundStatusErrorStrong: purpurColorBackgroundStatusErrorStrong,\n colorBackgroundStatusNeutral: purpurColorBackgroundStatusNeutral,\n colorBackgroundStatusSpecial: purpurColorBackgroundStatusSpecial,\n colorBackgroundStatusAttention: purpurColorBackgroundStatusAttention,\n colorBackgroundStatusBlackFriday: purpurColorBackgroundStatusBlackFriday,\n colorBackgroundStatusSuccessStrongNegative: purpurColorBackgroundStatusSuccessStrongNegative,\n colorBackgroundStatusWarningStrongNegative: purpurColorBackgroundStatusWarningStrongNegative,\n colorBackgroundStatusErrorStrongNegative: purpurColorBackgroundStatusErrorStrongNegative,\n\n colorBackgroundToneOnTonePrimary: purpurColorBackgroundToneOnTonePrimary,\n colorBackgroundToneOnToneSecondary: purpurColorBackgroundToneOnToneSecondary,\n colorBackgroundToneOnToneTertiary: purpurColorBackgroundToneOnToneTertiary,\n colorBackgroundToneOnToneQuaternary: purpurColorBackgroundToneOnToneQuaternary,\n\n colorBorderWeak: purpurColorBorderWeak,\n colorBorderMedium: purpurColorBorderMedium,\n colorBorderStrong: purpurColorBorderStrong,\n colorBorderWeakNegative: purpurColorBorderWeakNegative,\n colorBorderMediumNegative: purpurColorBorderMediumNegative,\n colorBorderStrongNegative: purpurColorBorderStrongNegative,\n\n colorBorderInteractivePrimary: purpurColorBorderInteractivePrimary,\n colorBorderInteractivePrimaryHover: purpurColorBorderInteractivePrimaryHover,\n colorBorderInteractivePrimaryActive: purpurColorBorderInteractivePrimaryActive,\n colorBorderInteractiveFocus: purpurColorBorderInteractiveFocus,\n colorBorderInteractiveExpressive: purpurColorBorderInteractiveExpressive,\n colorBorderInteractiveSubtle: purpurColorBorderInteractiveSubtle,\n colorBorderInteractiveSubtleHover: purpurColorBorderInteractiveSubtleHover,\n colorBorderInteractiveSelected: purpurColorBorderInteractiveSelected,\n colorBorderInteractivePrimaryNegative: purpurColorBorderInteractivePrimaryNegative,\n colorBorderInteractivePrimaryHoverNegative: purpurColorBorderInteractivePrimaryHoverNegative,\n colorBorderInteractivePrimaryActiveNegative: purpurColorBorderInteractivePrimaryActiveNegative,\n colorBorderInteractiveSubtleNegative: purpurColorBorderInteractiveSubtleNegative,\n colorBorderInteractiveSubtleHoverNegative: purpurColorBorderInteractiveSubtleHoverNegative,\n\n colorBorderStatusError: purpurColorBorderStatusError,\n colorBorderStatusWarning: purpurColorBorderStatusWarning,\n colorBorderStatusInfo: purpurColorBorderStatusInfo,\n colorBorderStatusSuccess: purpurColorBorderStatusSuccess,\n colorBorderStatusErrorNegative: purpurColorBorderStatusErrorNegative,\n colorBorderStatusSuccessNegative: purpurColorBorderStatusSuccessNegative,\n} satisfies ThemeProps;\n","import {\n purpurColorBackgroundInteractiveAutoFill,\n purpurColorBackgroundInteractiveDestructive,\n purpurColorBackgroundInteractiveDestructiveActive,\n purpurColorBackgroundInteractiveDestructiveHover,\n purpurColorBackgroundInteractiveDisabled,\n purpurColorBackgroundInteractiveDisabledNegative,\n purpurColorBackgroundInteractiveExpressive,\n purpurColorBackgroundInteractiveExpressiveActive,\n purpurColorBackgroundInteractiveExpressiveActiveNegative,\n purpurColorBackgroundInteractiveExpressiveHover,\n purpurColorBackgroundInteractiveExpressiveHoverNegative,\n purpurColorBackgroundInteractiveExpressiveNegative,\n purpurColorBackgroundInteractiveInactive,\n purpurColorBackgroundInteractiveInactiveNegative,\n purpurColorBackgroundInteractivePrimary,\n purpurColorBackgroundInteractivePrimaryActive,\n purpurColorBackgroundInteractivePrimaryActiveNegative,\n purpurColorBackgroundInteractivePrimaryHover,\n purpurColorBackgroundInteractivePrimaryHoverNegative,\n purpurColorBackgroundInteractivePrimaryNegative,\n purpurColorBackgroundInteractiveReadOnly,\n purpurColorBackgroundInteractiveReadOnlyNegative,\n purpurColorBackgroundInteractiveTransparentActive,\n purpurColorBackgroundInteractiveTransparentActiveNegative,\n purpurColorBackgroundInteractiveTransparentHover,\n purpurColorBackgroundInteractiveTransparentHoverNegative,\n purpurColorBackgroundOnImage,\n purpurColorBackgroundOnImageNegative,\n purpurColorBackgroundPrimary,\n purpurColorBackgroundPrimaryNegative,\n purpurColorBackgroundSecondary,\n purpurColorBackgroundSecondaryNegative,\n purpurColorBackgroundStatusAttention,\n purpurColorBackgroundStatusBlackFriday,\n purpurColorBackgroundStatusErrorMedium,\n purpurColorBackgroundStatusErrorStrong,\n purpurColorBackgroundStatusErrorStrongNegative,\n purpurColorBackgroundStatusInfoMedium,\n purpurColorBackgroundStatusInfoStrong,\n purpurColorBackgroundStatusNeutral,\n purpurColorBackgroundStatusSpecial,\n purpurColorBackgroundStatusSuccessMedium,\n purpurColorBackgroundStatusSuccessStrong,\n purpurColorBackgroundStatusSuccessStrongNegative,\n purpurColorBackgroundStatusWarningMedium,\n purpurColorBackgroundStatusWarningStrong,\n purpurColorBackgroundStatusWarningStrongNegative,\n purpurColorBackgroundToneOnTonePrimary,\n purpurColorBackgroundToneOnToneQuaternary,\n purpurColorBackgroundToneOnToneSecondary,\n purpurColorBackgroundToneOnToneTertiary,\n purpurColorBorderInteractiveExpressive,\n purpurColorBorderInteractiveFocus,\n purpurColorBorderInteractivePrimary,\n purpurColorBorderInteractivePrimaryActive,\n purpurColorBorderInteractivePrimaryActiveNegative,\n purpurColorBorderInteractivePrimaryHover,\n purpurColorBorderInteractivePrimaryHoverNegative,\n purpurColorBorderInteractivePrimaryNegative,\n purpurColorBorderInteractiveSelected,\n purpurColorBorderInteractiveSubtle,\n purpurColorBorderInteractiveSubtleHover,\n purpurColorBorderInteractiveSubtleHoverNegative,\n purpurColorBorderInteractiveSubtleNegative,\n purpurColorBorderMedium,\n purpurColorBorderMediumNegative,\n purpurColorBorderStatusError,\n purpurColorBorderStatusErrorNegative,\n purpurColorBorderStatusInfo,\n purpurColorBorderStatusSuccess,\n purpurColorBorderStatusSuccessNegative,\n purpurColorBorderStatusWarning,\n purpurColorBorderStrong,\n purpurColorBorderStrongNegative,\n purpurColorBorderWeak,\n purpurColorBorderWeakNegative,\n purpurColorBrandBeige,\n purpurColorBrandCorePurple,\n purpurColorBrandDeepBeige,\n purpurColorBrandDeepPurple,\n purpurColorBrandLightBeige,\n purpurColorBrandLightPurple,\n purpurColorBrandOffBlack,\n purpurColorBrandWhite,\n purpurColorTextDefault,\n purpurColorTextDefaultNegative,\n purpurColorTextInteractiveOnDestructive,\n purpurColorTextInteractiveOnExpressive,\n purpurColorTextInteractiveOnExpressiveActive,\n purpurColorTextInteractiveOnExpressiveActiveNegative,\n purpurColorTextInteractiveOnExpressiveHover,\n purpurColorTextInteractiveOnExpressiveHoverNegative,\n purpurColorTextInteractiveOnExpressiveNegative,\n purpurColorTextInteractiveOnPrimary,\n purpurColorTextInteractiveOnPrimaryNegative,\n purpurColorTextInteractivePrimary,\n purpurColorTextInteractivePrimaryActive,\n purpurColorTextInteractivePrimaryActiveNegative,\n purpurColorTextInteractivePrimaryHover,\n purpurColorTextInteractivePrimaryHoverNegative,\n purpurColorTextInteractivePrimaryNegative,\n purpurColorTextInteractiveSelected,\n purpurColorTextMedium,\n purpurColorTextMediumNegative,\n purpurColorTextStatusAttention,\n purpurColorTextStatusBlackFriday,\n purpurColorTextStatusDiscount,\n purpurColorTextStatusErrorMedium,\n purpurColorTextStatusErrorMediumNegative,\n purpurColorTextStatusErrorStrong,\n purpurColorTextStatusErrorStrongNegative,\n purpurColorTextStatusInfoMedium,\n purpurColorTextStatusInfoStrong,\n purpurColorTextStatusNeutral,\n purpurColorTextStatusSpecial,\n purpurColorTextStatusSuccessMedium,\n purpurColorTextStatusSuccessStrong,\n purpurColorTextStatusSuccessStrongNegative,\n purpurColorTextStatusWarningMedium,\n purpurColorTextStatusWarningMediumNegative,\n purpurColorTextStatusWarningStrong,\n purpurColorTextToneOnTonePrimary,\n purpurColorTextToneOnToneSecondary,\n purpurColorTextToneOnToneTertiary,\n purpurColorTextWeak,\n purpurColorTextWeakNegative,\n} from \"@purpur/tokens\";\n\nimport type { ThemeProps } from \"./theme-props\";\n\nexport const light = {\n colorBrandDeepPurple: purpurColorBrandDeepPurple,\n colorBrandCorePurple: purpurColorBrandCorePurple,\n colorBrandLightPurple: purpurColorBrandLightPurple,\n colorBrandDeepBeige: purpurColorBrandDeepBeige,\n colorBrandBeige: purpurColorBrandBeige,\n colorBrandLightBeige: purpurColorBrandLightBeige,\n colorBrandOffBlack: purpurColorBrandOffBlack,\n colorBrandWhite: purpurColorBrandWhite,\n\n colorTextDefault: purpurColorTextDefault,\n colorTextMedium: purpurColorTextMedium,\n colorTextWeak: purpurColorTextWeak,\n colorTextDefaultNegative: purpurColorTextDefaultNegative,\n colorTextMediumNegative: purpurColorTextMediumNegative,\n colorTextWeakNegative: purpurColorTextWeakNegative,\n\n colorTextInteractivePrimary: purpurColorTextInteractivePrimary,\n colorTextInteractivePrimaryHover: purpurColorTextInteractivePrimaryHover,\n colorTextInteractivePrimaryActive: purpurColorTextInteractivePrimaryActive,\n colorTextInteractiveOnPrimary: purpurColorTextInteractiveOnPrimary,\n colorTextInteractiveOnExpressive: purpurColorTextInteractiveOnExpressive,\n colorTextInteractiveOnExpressiveHover: purpurColorTextInteractiveOnExpressiveHover,\n colorTextInteractiveOnExpressiveActive: purpurColorTextInteractiveOnExpressiveActive,\n colorTextInteractiveOnDestructive: purpurColorTextInteractiveOnDestructive,\n colorTextInteractiveSelected: purpurColorTextInteractiveSelected,\n colorTextInteractivePrimaryNegative: purpurColorTextInteractivePrimaryNegative,\n colorTextInteractivePrimaryHoverNegative: purpurColorTextInteractivePrimaryHoverNegative,\n colorTextInteractivePrimaryActiveNegative: purpurColorTextInteractivePrimaryActiveNegative,\n colorTextInteractiveOnPrimaryNegative: purpurColorTextInteractiveOnPrimaryNegative,\n colorTextInteractiveOnExpressiveNegative: purpurColorTextInteractiveOnExpressiveNegative,\n colorTextInteractiveOnExpressiveHoverNegative:\n purpurColorTextInteractiveOnExpressiveHoverNegative,\n colorTextInteractiveOnExpressiveActiveNegative:\n purpurColorTextInteractiveOnExpressiveActiveNegative,\n\n colorTextStatusInfoMedium: purpurColorTextStatusInfoMedium,\n colorTextStatusInfoStrong: purpurColorTextStatusInfoStrong,\n colorTextStatusSuccessMedium: purpurColorTextStatusSuccessMedium,\n colorTextStatusSuccessStrong: purpurColorTextStatusSuccessStrong,\n colorTextStatusWarningMedium: purpurColorTextStatusWarningMedium,\n colorTextStatusWarningStrong: purpurColorTextStatusWarningStrong,\n colorTextStatusErrorMedium: purpurColorTextStatusErrorMedium,\n colorTextStatusErrorStrong: purpurColorTextStatusErrorStrong,\n colorTextStatusNeutral: purpurColorTextStatusNeutral,\n colorTextStatusSpecial: purpurColorTextStatusSpecial,\n colorTextStatusAttention: purpurColorTextStatusAttention,\n colorTextStatusDiscount: purpurColorTextStatusDiscount,\n colorTextStatusBlackFriday: purpurColorTextStatusBlackFriday,\n colorTextStatusSuccessStrongNegative: purpurColorTextStatusSuccessStrongNegative,\n colorTextStatusErrorMediumNegative: purpurColorTextStatusErrorMediumNegative,\n colorTextStatusErrorStrongNegative: purpurColorTextStatusErrorStrongNegative,\n colorTextStatusWarningMediumNegative: purpurColorTextStatusWarningMediumNegative,\n\n colorTextToneOnTonePrimary: purpurColorTextToneOnTonePrimary,\n colorTextToneOnToneSecondary: purpurColorTextToneOnToneSecondary,\n colorTextToneOnToneTertiary: purpurColorTextToneOnToneTertiary,\n\n colorBackgroundPrimary: purpurColorBackgroundPrimary,\n colorBackgroundSecondary: purpurColorBackgroundSecondary,\n colorBackgroundOnImage: purpurColorBackgroundOnImage,\n colorBackgroundPrimaryNegative: purpurColorBackgroundPrimaryNegative,\n colorBackgroundSecondaryNegative: purpurColorBackgroundSecondaryNegative,\n colorBackgroundOnImageNegative: purpurColorBackgroundOnImageNegative,\n\n colorBackgroundInteractivePrimary: purpurColorBackgroundInteractivePrimary,\n colorBackgroundInteractivePrimaryHover: purpurColorBackgroundInteractivePrimaryHover,\n colorBackgroundInteractivePrimaryActive: purpurColorBackgroundInteractivePrimaryActive,\n colorBackgroundInteractiveExpressive: purpurColorBackgroundInteractiveExpressive,\n colorBackgroundInteractiveExpressiveHover: purpurColorBackgroundInteractiveExpressiveHover,\n colorBackgroundInteractiveExpressiveActive: purpurColorBackgroundInteractiveExpressiveActive,\n colorBackgroundInteractiveTransparentHover: purpurColorBackgroundInteractiveTransparentHover,\n colorBackgroundInteractiveTransparentActive: purpurColorBackgroundInteractiveTransparentActive,\n colorBackgroundInteractiveDisabled: purpurColorBackgroundInteractiveDisabled,\n colorBackgroundInteractiveReadOnly: purpurColorBackgroundInteractiveReadOnly,\n colorBackgroundInteractiveInactive: purpurColorBackgroundInteractiveInactive,\n colorBackgroundInteractiveDestructive: purpurColorBackgroundInteractiveDestructive,\n colorBackgroundInteractiveDestructiveHover: purpurColorBackgroundInteractiveDestructiveHover,\n colorBackgroundInteractiveDestructiveActive: purpurColorBackgroundInteractiveDestructiveActive,\n colorBackgroundInteractiveAutoFill: purpurColorBackgroundInteractiveAutoFill,\n colorBackgroundInteractivePrimaryNegative: purpurColorBackgroundInteractivePrimaryNegative,\n colorBackgroundInteractivePrimaryHoverNegative:\n purpurColorBackgroundInteractivePrimaryHoverNegative,\n colorBackgroundInteractivePrimaryActiveNegative:\n purpurColorBackgroundInteractivePrimaryActiveNegative,\n colorBackgroundInteractiveExpressiveNegative: purpurColorBackgroundInteractiveExpressiveNegative,\n colorBackgroundInteractiveExpressiveHoverNegative:\n purpurColorBackgroundInteractiveExpressiveHoverNegative,\n colorBackgroundInteractiveExpressiveActiveNegative:\n purpurColorBackgroundInteractiveExpressiveActiveNegative,\n colorBackgroundInteractiveTransparentHoverNegative:\n purpurColorBackgroundInteractiveTransparentHoverNegative,\n colorBackgroundInteractiveTransparentActiveNegative:\n purpurColorBackgroundInteractiveTransparentActiveNegative,\n colorBackgroundInteractiveDisabledNegative: purpurColorBackgroundInteractiveDisabledNegative,\n colorBackgroundInteractiveInactiveNegative: purpurColorBackgroundInteractiveInactiveNegative,\n colorBackgroundInteractiveReadOnlyNegative: purpurColorBackgroundInteractiveReadOnlyNegative,\n\n colorBackgroundStatusInfoMedium: purpurColorBackgroundStatusInfoMedium,\n colorBackgroundStatusInfoStrong: purpurColorBackgroundStatusInfoStrong,\n colorBackgroundStatusSuccessMedium: purpurColorBackgroundStatusSuccessMedium,\n colorBackgroundStatusSuccessStrong: purpurColorBackgroundStatusSuccessStrong,\n colorBackgroundStatusWarningMedium: purpurColorBackgroundStatusWarningMedium,\n colorBackgroundStatusWarningStrong: purpurColorBackgroundStatusWarningStrong,\n colorBackgroundStatusErrorMedium: purpurColorBackgroundStatusErrorMedium,\n colorBackgroundStatusErrorStrong: purpurColorBackgroundStatusErrorStrong,\n colorBackgroundStatusNeutral: purpurColorBackgroundStatusNeutral,\n colorBackgroundStatusSpecial: purpurColorBackgroundStatusSpecial,\n colorBackgroundStatusAttention: purpurColorBackgroundStatusAttention,\n colorBackgroundStatusBlackFriday: purpurColorBackgroundStatusBlackFriday,\n colorBackgroundStatusSuccessStrongNegative: purpurColorBackgroundStatusSuccessStrongNegative,\n colorBackgroundStatusWarningStrongNegative: purpurColorBackgroundStatusWarningStrongNegative,\n colorBackgroundStatusErrorStrongNegative: purpurColorBackgroundStatusErrorStrongNegative,\n\n colorBackgroundToneOnTonePrimary: purpurColorBackgroundToneOnTonePrimary,\n colorBackgroundToneOnToneSecondary: purpurColorBackgroundToneOnToneSecondary,\n colorBackgroundToneOnToneTertiary: purpurColorBackgroundToneOnToneTertiary,\n colorBackgroundToneOnToneQuaternary: purpurColorBackgroundToneOnToneQuaternary,\n\n colorBorderWeak: purpurColorBorderWeak,\n colorBorderMedium: purpurColorBorderMedium,\n colorBorderStrong: purpurColorBorderStrong,\n colorBorderWeakNegative: purpurColorBorderWeakNegative,\n colorBorderMediumNegative: purpurColorBorderMediumNegative,\n colorBorderStrongNegative: purpurColorBorderStrongNegative,\n\n colorBorderInteractivePrimary: purpurColorBorderInteractivePrimary,\n colorBorderInteractivePrimaryHover: purpurColorBorderInteractivePrimaryHover,\n colorBorderInteractivePrimaryActive: purpurColorBorderInteractivePrimaryActive,\n colorBorderInteractiveFocus: purpurColorBorderInteractiveFocus,\n colorBorderInteractiveExpressive: purpurColorBorderInteractiveExpressive,\n colorBorderInteractiveSubtle: purpurColorBorderInteractiveSubtle,\n colorBorderInteractiveSubtleHover: purpurColorBorderInteractiveSubtleHover,\n colorBorderInteractiveSelected: purpurColorBorderInteractiveSelected,\n colorBorderInteractivePrimaryNegative: purpurColorBorderInteractivePrimaryNegative,\n colorBorderInteractivePrimaryHoverNegative: purpurColorBorderInteractivePrimaryHoverNegative,\n colorBorderInteractivePrimaryActiveNegative: purpurColorBorderInteractivePrimaryActiveNegative,\n colorBorderInteractiveSubtleNegative: purpurColorBorderInteractiveSubtleNegative,\n colorBorderInteractiveSubtleHoverNegative: purpurColorBorderInteractiveSubtleHoverNegative,\n\n colorBorderStatusError: purpurColorBorderStatusError,\n colorBorderStatusWarning: purpurColorBorderStatusWarning,\n colorBorderStatusInfo: purpurColorBorderStatusInfo,\n colorBorderStatusSuccess: purpurColorBorderStatusSuccess,\n colorBorderStatusErrorNegative: purpurColorBorderStatusErrorNegative,\n colorBorderStatusSuccessNegative: purpurColorBorderStatusSuccessNegative,\n} satisfies ThemeProps;\n","import { dark } from \"./telia-dark\";\nimport { light } from \"./telia-light\";\nimport type { ThemeProps } from \"./theme-props\";\n\nexport const teliaTheme = {\n light,\n dark,\n} satisfies { light: ThemeProps; dark: ThemeProps };\n","import { useEffect } from \"react\";\n\nimport { teliaTheme } from \"./telia-theme\";\nimport type { ColorScheme, Theme } from \"./types\";\n\nconst toKebabCase = (str: string) => str.replace(/([a-z0-9])([A-Z])/g, \"$1-$2\").toLowerCase();\n\ntype Props = {\n theme?: Theme;\n cssVariablesSelector?: string;\n currentColorScheme?: ColorScheme;\n};\n\nexport const useApplyTheme = ({\n theme = teliaTheme,\n cssVariablesSelector,\n currentColorScheme,\n}: Props) => {\n useEffect(() => {\n if (currentColorScheme) {\n Object.entries(theme?.[currentColorScheme] ?? teliaTheme[currentColorScheme]).forEach(\n ([key, value]) => {\n const element = cssVariablesSelector\n ? (document.querySelector(cssVariablesSelector) as HTMLElement)\n : null;\n\n (element ?? document.documentElement).style.setProperty(\n `--purpur-${toKebabCase(key)}`,\n value\n );\n }\n );\n }\n }, [theme, cssVariablesSelector, currentColorScheme]);\n};\n","import React, {\n createContext,\n type ReactNode,\n useContext,\n useEffect,\n useMemo,\n useState,\n} from \"react\";\nimport type { BaseProps } from \"@purpur/common-types\";\n\nimport type { ThemeProps } from \"./theme-props\";\nimport type { ColorOptions, ColorScheme, ThemeContextType } from \"./types\";\nimport { useApplyTheme } from \"./useApplyTheme\";\n\nconst ThemeContext = createContext<ThemeContextType>({\n colorScheme: \"light\",\n currentColorScheme: \"light\",\n setColorScheme: () => {},\n options: {},\n});\n\ntype PropsBase = Omit<BaseProps, \"children\"> & {\n children: ReactNode;\n cssVariablesSelector?: string;\n options?: ThemeContextType[\"options\"];\n};\n\nexport type Props =\n | PropsBase &\n (\n | {\n theme: { light: ThemeProps; dark?: never };\n forceColorScheme: \"light\";\n }\n | {\n theme?: { light: ThemeProps; dark: ThemeProps };\n forceColorScheme?: ColorScheme;\n }\n );\n\nexport const ThemeProvider = ({\n cssVariablesSelector,\n forceColorScheme,\n theme,\n children,\n options = {},\n ...props\n}: Props) => {\n const [colorScheme, setColorScheme] = useState<ColorOptions>(forceColorScheme ?? \"auto\");\n const [currentColorScheme, setCurrentColorScheme] = useState<ColorScheme>(\n forceColorScheme ?? \"light\"\n );\n\n useEffect(() => {\n if (!forceColorScheme) {\n const savedColorScheme = localStorage.getItem(\"colorScheme\") as ColorOptions | null;\n if (savedColorScheme) {\n setColorScheme(savedColorScheme);\n }\n } else {\n setColorScheme(forceColorScheme);\n }\n }, [forceColorScheme]);\n\n useEffect(() => {\n const mediaQuery = window.matchMedia(\"(prefers-color-scheme: dark)\");\n\n if (colorScheme === \"auto\") {\n setCurrentColorScheme(mediaQuery.matches ? \"dark\" : \"light\");\n } else {\n setCurrentColorScheme(colorScheme);\n }\n\n const handleChange = (e: MediaQueryListEvent) => {\n if (!forceColorScheme && colorScheme === \"auto\") {\n setCurrentColorScheme(e.matches ? \"dark\" : \"light\");\n }\n };\n\n mediaQuery.addEventListener(\"change\", handleChange);\n\n return () => {\n mediaQuery.removeEventListener(\"change\", handleChange);\n };\n }, [colorScheme, forceColorScheme]);\n\n const isCustomTheme = theme !== undefined;\n\n useApplyTheme({\n theme,\n cssVariablesSelector,\n currentColorScheme: isCustomTheme ? currentColorScheme : undefined,\n });\n\n const contextValue = useMemo(\n () => ({\n colorScheme,\n currentColorScheme,\n setColorScheme: (scheme: ColorOptions) => {\n if (!forceColorScheme) {\n setColorScheme(scheme);\n localStorage.setItem(\"colorScheme\", scheme);\n }\n },\n }),\n [colorScheme, currentColorScheme, forceColorScheme]\n );\n\n return (\n <ThemeContext.Provider value={{ ...contextValue, options }}>\n <div data-color-scheme={currentColorScheme} className={currentColorScheme} {...props}>\n {children}\n </div>\n </ThemeContext.Provider>\n );\n};\n\nexport const useTheme = (): ThemeContextType => {\n const context = useContext(ThemeContext);\n if (!context) {\n throw new Error(\"useTheme must be used within a ThemeProvider\");\n }\n return context;\n};\n"],"names":["purpurColorBrandDeepPurple","purpurColorBrandCorePurple","purpurColorBrandLightPurple","purpurColorBrandDeepBeige","purpurColorBrandBeige","purpurColorBrandLightBeige","purpurColorBrandOffBlack","purpurColorBrandWhite","purpurColorTextDefault","purpurColorTextMedium","purpurColorTextWeak","purpurColorTextDefaultNegative","purpurColorTextMediumNegative","purpurColorTextWeakNegative","purpurColorTextInteractivePrimary","purpurColorTextInteractivePrimaryHover","purpurColorTextInteractivePrimaryActive","purpurColorTextInteractiveOnPrimary","purpurColorTextInteractiveOnPrimaryNegative","purpurColorTextInteractivePrimaryNegative","purpurColorTextInteractivePrimaryHoverNegative","purpurColorTextInteractivePrimaryActiveNegative","purpurColorTextInteractiveOnExpressive","purpurColorTextInteractiveOnExpressiveNegative","purpurColorTextInteractiveOnExpressiveHover","purpurColorTextInteractiveOnExpressiveHoverNegative","purpurColorTextInteractiveOnExpressiveActive","purpurColorTextInteractiveOnExpressiveActiveNegative","purpurColorTextInteractiveOnDestructive","purpurColorTextInteractiveSelected","purpurColorTextStatusDiscount","purpurColorTextStatusErrorStrong","purpurColorTextStatusErrorStrongNegative","purpurColorTextStatusErrorMedium","purpurColorTextStatusErrorMediumNegative","purpurColorTextStatusSuccessStrong","purpurColorTextStatusSuccessStrongNegative","purpurColorTextStatusSuccessMedium","purpurColorTextStatusWarningStrong","purpurColorTextStatusWarningMedium","purpurColorTextStatusWarningMediumNegative","purpurColorTextStatusInfoStrong","purpurColorTextStatusInfoMedium","purpurColorTextStatusNeutral","purpurColorTextStatusSpecial","purpurColorTextStatusAttention","purpurColorTextStatusBlackFriday","purpurColorTextToneOnTonePrimary","purpurColorTextToneOnToneSecondary","purpurColorTextToneOnToneTertiary","purpurColorBackgroundPrimary","purpurColorBackgroundPrimaryNegative","purpurColorBackgroundSecondary","purpurColorBackgroundSecondaryNegative","purpurColorBackgroundOnImage","purpurColorBackgroundOnImageNegative","purpurColorBackgroundInteractiveAutoFill","purpurColorBackgroundInteractivePrimary","purpurColorBackgroundInteractivePrimaryHover","purpurColorBackgroundInteractivePrimaryActive","purpurColorBackgroundInteractivePrimaryNegative","purpurColorBackgroundInteractivePrimaryHoverNegative","purpurColorBackgroundInteractivePrimaryActiveNegative","purpurColorBackgroundInteractiveExpressive","purpurColorBackgroundInteractiveExpressiveHover","purpurColorBackgroundInteractiveExpressiveActive","purpurColorBackgroundInteractiveExpressiveNegative","purpurColorBackgroundInteractiveExpressiveHoverNegative","purpurColorBackgroundInteractiveExpressiveActiveNegative","purpurColorBackgroundInteractiveDisabled","purpurColorBackgroundInteractiveDisabledNegative","purpurColorBackgroundInteractiveTransparentHover","purpurColorBackgroundInteractiveTransparentHoverNegative","purpurColorBackgroundInteractiveTransparentActive","purpurColorBackgroundInteractiveTransparentActiveNegative","purpurColorBackgroundInteractiveInactive","purpurColorBackgroundInteractiveInactiveNegative","purpurColorBackgroundInteractiveReadOnly","purpurColorBackgroundInteractiveReadOnlyNegative","purpurColorBackgroundInteractiveDestructive","purpurColorBackgroundInteractiveDestructiveHover","purpurColorBackgroundInteractiveDestructiveActive","purpurColorBackgroundStatusInfoMedium","purpurColorBackgroundStatusInfoStrong","purpurColorBackgroundStatusSuccessMedium","purpurColorBackgroundStatusSuccessStrong","purpurColorBackgroundStatusSuccessStrongNegative","purpurColorBackgroundStatusErrorMedium","purpurColorBackgroundStatusErrorStrong","purpurColorBackgroundStatusErrorStrongNegative","purpurColorBackgroundStatusWarningMedium","purpurColorBackgroundStatusWarningStrong","purpurColorBackgroundStatusWarningStrongNegative","purpurColorBackgroundStatusNeutral","purpurColorBackgroundStatusSpecial","purpurColorBackgroundStatusAttention","purpurColorBackgroundStatusBlackFriday","purpurColorBackgroundToneOnTonePrimary","purpurColorBackgroundToneOnToneSecondary","purpurColorBackgroundToneOnToneTertiary","purpurColorBackgroundToneOnToneQuaternary","purpurColorBorderMedium","purpurColorBorderMediumNegative","purpurColorBorderStrong","purpurColorBorderStrongNegative","purpurColorBorderWeak","purpurColorBorderWeakNegative","purpurColorBorderInteractiveFocus","purpurColorBorderInteractivePrimary","purpurColorBorderInteractivePrimaryNegative","purpurColorBorderInteractivePrimaryHover","purpurColorBorderInteractivePrimaryActive","purpurColorBorderInteractivePrimaryHoverNegative","purpurColorBorderInteractivePrimaryActiveNegative","purpurColorBorderInteractiveExpressive","purpurColorBorderInteractiveSelected","purpurColorBorderInteractiveSubtle","purpurColorBorderInteractiveSubtleNegative","purpurColorBorderInteractiveSubtleHover","purpurColorBorderInteractiveSubtleHoverNegative","purpurColorBorderStatusError","purpurColorBorderStatusErrorNegative","purpurColorBorderStatusWarning","purpurColorBorderStatusInfo","purpurColorBorderStatusSuccess","purpurColorBorderStatusSuccessNegative","dark","light","teliaTheme","toKebabCase","str","useApplyTheme","theme","cssVariablesSelector","currentColorScheme","useEffect","key","value","ThemeContext","createContext","ThemeProvider","forceColorScheme","children","options","props","colorScheme","setColorScheme","useState","setCurrentColorScheme","savedColorScheme","mediaQuery","handleChange","e","contextValue","useMemo","scheme","jsx","useTheme","context","useContext"],"mappings":"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"}