@jackuait/blok 0.19.1 → 0.20.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 (478) hide show
  1. package/dist/blok.cjs +1 -1
  2. package/dist/blok.iife.js +13 -13
  3. package/dist/blok.mjs +2 -2
  4. package/dist/blok.umd.js +30 -30
  5. package/dist/chunks/{APEv2Parser-WvRvu4zL.mjs → APEv2Parser-dFboX-HT.mjs} +5 -5
  6. package/dist/chunks/{AbstractID3Parser-DM9acVTg.mjs → AbstractID3Parser-qvoGRhB4.mjs} +5 -5
  7. package/dist/chunks/{AiffParser-C_VaWeb5.mjs → AiffParser-DVe3cNKY.mjs} +5 -5
  8. package/dist/chunks/{AsfParser-CH5F_9Wp.mjs → AsfParser-DrzvMHO9.mjs} +7 -7
  9. package/dist/chunks/{BasicParser-BFTgNkp-.mjs → BasicParser-BLAlEKys.mjs} +2 -2
  10. package/dist/chunks/{DsdiffParser-BAdYwB7y.mjs → DsdiffParser-uZBv6Bc_.mjs} +5 -5
  11. package/dist/chunks/{DsfParser-DWMLfBH1.mjs → DsfParser-DLra1i8X.mjs} +5 -5
  12. package/dist/chunks/{FlacParser-BdKXrY7L.mjs → FlacParser-DGd7sQuD.mjs} +6 -6
  13. package/dist/chunks/{ID3v1Parser-DoxlznrE.mjs → ID3v1Parser-CJMR_CT_.mjs} +3 -3
  14. package/dist/chunks/{ID3v2Parser-BIrxzjBm.mjs → ID3v2Parser-DIc0X1ee.mjs} +8 -8
  15. package/dist/chunks/{ID3v2Token-D5v9lCfb.mjs → ID3v2Token-BqnbpNYB.mjs} +3 -3
  16. package/dist/chunks/{MP4Parser-0KMJ-q2k.mjs → MP4Parser-BqrCfJyp.mjs} +6 -6
  17. package/dist/chunks/{MatroskaParser-fxFuCddu.mjs → MatroskaParser-CCbZmX7j.mjs} +5 -5
  18. package/dist/chunks/{MpegParser-R-6QiuhU.mjs → MpegParser-C-6l3Wrf.mjs} +6 -6
  19. package/dist/chunks/{MusepackParser-DFLoF47O.mjs → MusepackParser-C_PhW_BV.mjs} +5 -5
  20. package/dist/chunks/{OggParser-C1qP2qC7.mjs → OggParser-DJhcSH9h.mjs} +6 -6
  21. package/dist/chunks/{Util-DiBcLCh8.mjs → Util-B42SDwrM.mjs} +3 -3
  22. package/dist/chunks/{WavPackParser-Ck8xXsNf.mjs → WavPackParser-CuHju62S.mjs} +4 -4
  23. package/dist/chunks/{WaveParser-hxQlWijT.mjs → WaveParser-DvEqNnGt.mjs} +6 -6
  24. package/dist/chunks/{aiden0z-pptx-renderer.es-Y1OhS20L.mjs → aiden0z-pptx-renderer.es-Dfc1LJvS.mjs} +2 -2
  25. package/dist/chunks/{arc-Cu-PSKKo.mjs → arc-8pYAfiNC.mjs} +3 -3
  26. package/dist/chunks/architecture-7EHR7CIX-ByEay9F_.mjs +3 -0
  27. package/dist/chunks/{architectureDiagram-3BPJPVTR-BwW1QjqZ.mjs → architectureDiagram-3BPJPVTR-BiykAn02.mjs} +9 -9
  28. package/dist/chunks/{blockDiagram-GPEHLZMM-BAgQo64R.mjs → blockDiagram-GPEHLZMM-CozNEkEK.mjs} +13 -13
  29. package/dist/chunks/{blok-C52qeiPg.mjs → blok-C72PuzIT.mjs} +2514 -2109
  30. package/dist/chunks/{blok-gFn3FI95.cjs → blok-uBjibRae.cjs} +11 -11
  31. package/dist/chunks/{c4Diagram-AAUBKEIU-BQe-CDb8.mjs → c4Diagram-AAUBKEIU-DN5cpztO.mjs} +6 -6
  32. package/dist/chunks/channel-DCfRAw7p.mjs +5 -0
  33. package/dist/chunks/{chunk-2J33WTMH-CMyTQPbw.mjs → chunk-2J33WTMH-CHv7Whe1.mjs} +3 -3
  34. package/dist/chunks/{chunk-3OPIFGDE-_lgEHnzc.mjs → chunk-3OPIFGDE-BRLjwZDG.mjs} +8 -8
  35. package/dist/chunks/{chunk-4BX2VUAB-8PQvWn-w.mjs → chunk-4BX2VUAB-CrVP7ooQ.mjs} +2 -2
  36. package/dist/chunks/{chunk-4EGX6M5U-D4gnRnMD.mjs → chunk-4EGX6M5U-t1h05MXS.mjs} +2 -2
  37. package/dist/chunks/{chunk-55IACEB6-eQD6P1N8.mjs → chunk-55IACEB6-Cq7FTvxb.mjs} +2 -2
  38. package/dist/chunks/{chunk-5DO6E6H7-CN3lZIoE.mjs → chunk-5DO6E6H7-Z2pYCl69.mjs} +2 -2
  39. package/dist/chunks/{chunk-5ZQYHXKU-CPXVTQ_e.mjs → chunk-5ZQYHXKU-fs0GqOvF.mjs} +43 -43
  40. package/dist/chunks/{chunk-727SXJPM-DZUlPaIu.mjs → chunk-727SXJPM-BKsM41W3.mjs} +9 -9
  41. package/dist/chunks/{chunk-AQP2D5EJ-D7G094pS.mjs → chunk-AQP2D5EJ-YdXH_I-o.mjs} +7 -7
  42. package/dist/chunks/{chunk-BR22UD5L-B6NbSBJl.mjs → chunk-BR22UD5L-CqFDPfGM.mjs} +2 -2
  43. package/dist/chunks/{chunk-BSJP7CBP-C7FGlEZG.mjs → chunk-BSJP7CBP-DpGSyAQh.mjs} +2 -2
  44. package/dist/chunks/{chunk-CSCIHK7Q-C4qT3Yrk.mjs → chunk-CSCIHK7Q-BO7tl9ID.mjs} +4 -4
  45. package/dist/chunks/{chunk-FHYWG6QK-CgSYG-YQ.mjs → chunk-FHYWG6QK-5Het-98V.mjs} +2 -2
  46. package/dist/chunks/{chunk-FMBD7UC4-2p6fg26u.mjs → chunk-FMBD7UC4-P_kboMJT.mjs} +2 -2
  47. package/dist/chunks/{chunk-KSCS5N6A-BVWs3LbG.mjs → chunk-KSCS5N6A-CvZAQU-1.mjs} +11 -11
  48. package/dist/chunks/{chunk-L5ZTLDWV-BFEdycvM.mjs → chunk-L5ZTLDWV-DZEL0gsI.mjs} +4 -4
  49. package/dist/chunks/{chunk-LZXEDZCA-6drnUsNy.mjs → chunk-LZXEDZCA-CRJ7-DY6.mjs} +8 -8
  50. package/dist/chunks/{chunk-MPE355IW-DHYWughe.mjs → chunk-MPE355IW-DLg3CsBw.mjs} +2 -2
  51. package/dist/chunks/{chunk-MZUSXYTE-BmUr1KX3.mjs → chunk-MZUSXYTE-CvsgXeJO.mjs} +2 -2
  52. package/dist/chunks/{chunk-N66VUXT2-D_6jZ3Vo.mjs → chunk-N66VUXT2-DoC3ggTc.mjs} +2 -2
  53. package/dist/chunks/{chunk-ND2GUHAM-DooE8X6i.mjs → chunk-ND2GUHAM-BcJIrltI.mjs} +4 -4
  54. package/dist/chunks/{chunk-NNHCCRGN-rJnsUrWl.mjs → chunk-NNHCCRGN-CH81dTHf.mjs} +1 -1
  55. package/dist/chunks/{chunk-NZK2D7GU-JW_qgPqa.mjs → chunk-NZK2D7GU-BnVJr7kf.mjs} +3 -3
  56. package/dist/chunks/{chunk-O5CBEL6O-GY6nZ-N7.mjs → chunk-O5CBEL6O-BeYkA-8N.mjs} +16 -16
  57. package/dist/chunks/{chunk-PUPMXCY4-DCIdSRFi.mjs → chunk-PUPMXCY4-D3Ub4pDo.mjs} +2 -2
  58. package/dist/chunks/{chunk-QZHKN3VN-C3N0_vEC.mjs → chunk-QZHKN3VN-ChiFJWT0.mjs} +2 -2
  59. package/dist/chunks/{chunk-UIBZB4QT-pyTElNc2.mjs → chunk-UIBZB4QT-BwApNyrQ.mjs} +2 -2
  60. package/dist/chunks/{chunk-WCWK7LTN-ClqBpBku.mjs → chunk-WCWK7LTN-D4OBOUIK.mjs} +2 -2
  61. package/dist/chunks/{chunk-WU5MYG2G-DLQN-5vb.mjs → chunk-WU5MYG2G-wN4cJZ_G.mjs} +3 -3
  62. package/dist/chunks/{chunk-XPW4576I-IlnbQHaA.mjs → chunk-XPW4576I-yOZxg2iY.mjs} +2 -2
  63. package/dist/chunks/classDiagram-4FO5ZUOK-BgQLsKDL.mjs +29 -0
  64. package/dist/chunks/classDiagram-v2-Q7XG4LA2-DS7F_M1n.mjs +29 -0
  65. package/dist/chunks/constants-PI1xjAeG.cjs +606 -0
  66. package/dist/chunks/{constants-DzQOOvgv.mjs → constants-vvNFp6FG.mjs} +392 -267
  67. package/dist/chunks/{core-DdDpt2u7.mjs → core-CJGckLsY.mjs} +31 -31
  68. package/dist/chunks/{core-CqiEzfU3.mjs → core-DeCMWrgN.mjs} +4 -4
  69. package/dist/chunks/{cose-bilkent-S5V4N54A-BronfFB-.mjs → cose-bilkent-S5V4N54A-NIONAJnp.mjs} +3 -3
  70. package/dist/chunks/{cytoscape.esm-QxDq63HI.mjs → cytoscape.esm-fziZOrCG.mjs} +1 -1
  71. package/dist/chunks/{dagre-BM42HDAG-B4WVdKOZ.mjs → dagre-BM42HDAG-DcOrN3pc.mjs} +14 -14
  72. package/dist/chunks/{dagre-DzOGad9N.mjs → dagre-CILRucyd.mjs} +107 -107
  73. package/dist/chunks/default-DFm_GbQ-.mjs +4 -0
  74. package/dist/chunks/{defaultLocale-BJwYPC-h.mjs → defaultLocale-C2VD4mLA.mjs} +12 -12
  75. package/dist/chunks/{diagram-2AECGRRQ-C22ThgiO.mjs → diagram-2AECGRRQ-DDwBTlvz.mjs} +7 -7
  76. package/dist/chunks/{diagram-5GNKFQAL-COelHuJn.mjs → diagram-5GNKFQAL-1sbWUr5e.mjs} +8 -8
  77. package/dist/chunks/{diagram-KO2AKTUF-CjLVtM94.mjs → diagram-KO2AKTUF-DhTFFKgx.mjs} +7 -7
  78. package/dist/chunks/{diagram-LMA3HP47-DqkuYFi9.mjs → diagram-LMA3HP47-DRr_84ZZ.mjs} +7 -7
  79. package/dist/chunks/{diagram-OG6HWLK6-390_YOO-.mjs → diagram-OG6HWLK6-C_5eu9Kf.mjs} +32 -32
  80. package/dist/chunks/{dist-CCXeNeCQ.mjs → dist-DRqr67zQ.mjs} +2 -2
  81. package/dist/chunks/{docx-preview-ulpDsaxt.mjs → docx-preview-CQ4QUFrd.mjs} +2 -2
  82. package/dist/chunks/{erDiagram-TEJ5UH35-BH0f96Pn.mjs → erDiagram-TEJ5UH35-C3Ohfkqu.mjs} +14 -14
  83. package/dist/chunks/eventmodeling-FCH6USID-BqDo_Sav.mjs +3 -0
  84. package/dist/chunks/{flowDiagram-I6XJVG4X-kZaqJYK1.mjs → flowDiagram-I6XJVG4X-DyXB0QVM.mjs} +17 -17
  85. package/dist/chunks/{ganttDiagram-6RSMTGT7-C3uQIARG.mjs → ganttDiagram-6RSMTGT7-82Iyg78i.mjs} +27 -27
  86. package/dist/chunks/gitGraph-WXDBUCRP-D-utqQiN.mjs +3 -0
  87. package/dist/chunks/{gitGraphDiagram-PVQCEYII-DQSTvBjy.mjs → gitGraphDiagram-PVQCEYII-D9V6dxzm.mjs} +7 -7
  88. package/dist/chunks/{graphlib-B0ANG2M6.mjs → graphlib-RxhPMq8I.mjs} +135 -135
  89. package/dist/chunks/{i18next-gGTtSkQg.mjs → i18next-C2REZNw2.mjs} +1 -1
  90. package/dist/chunks/{i18next-loader-BBPMegxc.cjs → i18next-loader-DVakgVCy.cjs} +1 -1
  91. package/dist/chunks/{i18next-loader-K-ir8UKk.mjs → i18next-loader-Dh4fP9we.mjs} +2 -2
  92. package/dist/chunks/info-J43DQDTF-D72knbmq.mjs +3 -0
  93. package/dist/chunks/{infoDiagram-5YYISTIA-CGpT_mPZ.mjs → infoDiagram-5YYISTIA-BxEJ_ib3.mjs} +5 -5
  94. package/dist/chunks/{init-hkDiJKhJ.mjs → init-BR8veUec.mjs} +1 -1
  95. package/dist/chunks/{ishikawaDiagram-YF4QCWOH-Ch9fmsWb.mjs → ishikawaDiagram-YF4QCWOH-CXe2kJsO.mjs} +6 -6
  96. package/dist/chunks/{journeyDiagram-JHISSGLW-CWv40lgD.mjs → journeyDiagram-JHISSGLW-DBhSi7Qg.mjs} +6 -6
  97. package/dist/chunks/{jszip.min-DoBCcllU.mjs → jszip.min-BsbMNjJg.mjs} +1 -1
  98. package/dist/chunks/{kanban-definition-UN3LZRKU-DSbXvrBB.mjs → kanban-definition-UN3LZRKU-CE4yr6J6.mjs} +11 -11
  99. package/dist/chunks/{katex-BIACU78Y.mjs → katex-DxQaNCxg.mjs} +1 -1
  100. package/dist/chunks/{lightweight-i18n-LFW8S8u-.cjs → lightweight-i18n-BnIqQ5Cf.cjs} +1 -1
  101. package/dist/chunks/{lightweight-i18n-DJpMke7a.mjs → lightweight-i18n-Cj88c8gl.mjs} +15 -0
  102. package/dist/chunks/{line-DU9tI1Tb.mjs → line-CQUUULPd.mjs} +4 -4
  103. package/dist/chunks/{linear-CPgdjDZh.mjs → linear-CAfvVXJc.mjs} +23 -23
  104. package/dist/chunks/{mdast-util-math-BNabERqA.mjs → mdast-util-math-Cpp9XOMP.mjs} +3 -3
  105. package/dist/chunks/{mermaid-parser.core-CRFj5ZQJ.mjs → mermaid-parser.core-B92FGYsA.mjs} +22 -22
  106. package/dist/chunks/{mermaid.core-D_2I8mjo.mjs → mermaid.core-BA9GkGKf.mjs} +52 -52
  107. package/dist/{messages-BI5B9bxE.mjs → chunks/messages-0EAci1N0.mjs} +15 -0
  108. package/dist/chunks/{messages-BkgBVEiE.cjs → messages-1jzEPeW5.cjs} +1 -1
  109. package/dist/chunks/{messages-CATH_uz1.mjs → messages-4CqVAaCY.mjs} +16 -1
  110. package/dist/chunks/{messages-DFHNw6PQ.cjs → messages-4Qka94cm.cjs} +1 -1
  111. package/dist/chunks/{messages-CBbgEXuO.cjs → messages-7wDDggws.cjs} +1 -1
  112. package/dist/chunks/{messages-B7st3eF_.cjs → messages-9VzB9Djh.cjs} +1 -1
  113. package/dist/chunks/{messages-B_cHWyWC.cjs → messages-9bK437Rh.cjs} +1 -1
  114. package/dist/chunks/{messages-CZddldga.cjs → messages-AtTKtjsQ.cjs} +1 -1
  115. package/dist/{messages-BOWDzfkH.mjs → chunks/messages-B1inw201.mjs} +16 -1
  116. package/dist/chunks/{messages-B-u5B7tY.cjs → messages-B4ZVgIh5.cjs} +1 -1
  117. package/dist/chunks/{messages-CJFSq8Fl.cjs → messages-B5bSFRCa.cjs} +1 -1
  118. package/dist/chunks/{messages-BRTWvTAP.mjs → messages-B705gxqz.mjs} +16 -1
  119. package/dist/{messages-Dq_RdEny2.mjs → chunks/messages-B7F3tX4u.mjs} +16 -1
  120. package/dist/chunks/{messages-NJAjMFXd.cjs → messages-BDer7I67.cjs} +1 -1
  121. package/dist/chunks/{messages-BV22YIZ_.cjs → messages-BEEGgtPo.cjs} +1 -1
  122. package/dist/{messages-bN4Zmk2m.mjs → chunks/messages-BGlEWmsB.mjs} +16 -1
  123. package/dist/{messages-Ao2vCNAH2.mjs → chunks/messages-BJJsuZhy.mjs} +16 -1
  124. package/dist/chunks/{messages-DjrfovG0.cjs → messages-BJcc9h6p.cjs} +1 -1
  125. package/dist/chunks/{messages-Hfo6uCIC.cjs → messages-BL-E2Kw3.cjs} +1 -1
  126. package/dist/chunks/{messages-5339ApgH.mjs → messages-BLJGzntb.mjs} +16 -1
  127. package/dist/chunks/{messages-Au1UpgkX.cjs → messages-BLNieIb-.cjs} +1 -1
  128. package/dist/chunks/{messages-DQJcAz4s.cjs → messages-BRbGk1-Z.cjs} +1 -1
  129. package/dist/chunks/{messages-BwOUSDJR.mjs → messages-BUlZRNoO.mjs} +15 -0
  130. package/dist/{messages-BKGg4XYm2.mjs → chunks/messages-BWQF9y2r.mjs} +16 -1
  131. package/dist/chunks/{messages-UXS3zL9A2.cjs → messages-BWh9I5Jv2.cjs} +1 -1
  132. package/dist/chunks/{messages-B6dbtt1c.cjs → messages-BX86v7Ev.cjs} +1 -1
  133. package/dist/chunks/{messages-DIFwztFo.cjs → messages-BYpvkG9S.cjs} +1 -1
  134. package/dist/chunks/{messages-C8_r3iTR2.mjs → messages-Bdw_vAdq2.mjs} +16 -1
  135. package/dist/chunks/{messages-DIetNXTx.cjs → messages-BeQVEC9q.cjs} +1 -1
  136. package/dist/{messages-CusWGsl42.mjs → chunks/messages-BeTZTXZm.mjs} +16 -1
  137. package/dist/chunks/{messages-CmsAbu_A.cjs → messages-BhTlR4PP.cjs} +1 -1
  138. package/dist/{messages-B2YnZIU2.mjs → chunks/messages-BhnZTZbQ.mjs} +16 -1
  139. package/dist/{messages-BpwhHkFb2.mjs → chunks/messages-BqJdoBHm.mjs} +16 -1
  140. package/dist/chunks/{messages-zPUQsksJ.mjs → messages-BqPiH7QC.mjs} +16 -1
  141. package/dist/chunks/{messages-CjfEt9bg.cjs → messages-Br_qu_wR.cjs} +1 -1
  142. package/dist/chunks/{messages-DtaPHADA.cjs → messages-BscUmD6D.cjs} +1 -1
  143. package/dist/{messages-Cg6a88Bb2.mjs → chunks/messages-Btapuvxo.mjs} +16 -1
  144. package/dist/chunks/{messages-CEySIig9.cjs → messages-BwCw0TJ1.cjs} +1 -1
  145. package/dist/chunks/{messages-BO-L5oN9.mjs → messages-C3RDWmXV.mjs} +15 -0
  146. package/dist/chunks/{messages-CZJZ-au3.cjs → messages-C3SZsVB9.cjs} +1 -1
  147. package/dist/chunks/{messages-DQr7bXMD.mjs → messages-C65mLRVK.mjs} +16 -1
  148. package/dist/chunks/{messages-CT8djlV6.cjs → messages-C73dKqPT.cjs} +1 -1
  149. package/dist/chunks/{messages-DOqJ6ogK.cjs → messages-C8f4kUOB.cjs} +1 -1
  150. package/dist/chunks/{messages-CIBYzzFy.mjs → messages-C9vfrzKQ.mjs} +16 -1
  151. package/dist/{messages-Grhv5SE_.mjs → chunks/messages-CEbe34zh.mjs} +15 -0
  152. package/dist/chunks/{messages-CcsM8Q7g.cjs → messages-CHEpECGv.cjs} +1 -1
  153. package/dist/chunks/{messages-DEg5FAg1.cjs → messages-CHP0nYRn.cjs} +1 -1
  154. package/dist/chunks/{messages-CjCn5IsF.mjs → messages-CIbh-0oJ.mjs} +16 -1
  155. package/dist/chunks/{messages-BHCepNsI.cjs → messages-CJC94Hci.cjs} +1 -1
  156. package/dist/chunks/{messages-ByNR9m9W.cjs → messages-CMP5dbqQ.cjs} +1 -1
  157. package/dist/chunks/{messages-DpNmnBjK.cjs → messages-CMm8FeOL.cjs} +1 -1
  158. package/dist/chunks/{messages-Da8yFc7l.cjs → messages-CNMPtWiq.cjs} +1 -1
  159. package/dist/chunks/{messages-Xh-c7d4C.mjs → messages-CQUr4lBa.mjs} +16 -1
  160. package/dist/{messages-Cvq2EFPT2.mjs → chunks/messages-CUuOX1k3.mjs} +16 -1
  161. package/dist/chunks/{messages-BsTzdfZF.cjs → messages-CVerbLou.cjs} +1 -1
  162. package/dist/{messages-CGiVoFTi.mjs → chunks/messages-CWW9OwKO.mjs} +16 -1
  163. package/dist/{messages-Da1woCgt2.mjs → chunks/messages-CWqap54p.mjs} +16 -1
  164. package/dist/{messages-CEGqNXnP.mjs → chunks/messages-CXNQBFHp.mjs} +16 -1
  165. package/dist/chunks/{messages-DgF8OkNr.mjs → messages-CYDhuSF4.mjs} +16 -1
  166. package/dist/chunks/{messages-Bp0LdGKj.mjs → messages-CYy3Zd3F.mjs} +15 -0
  167. package/dist/chunks/{messages-DHv7knYB.mjs → messages-C_BM_XHo.mjs} +16 -1
  168. package/dist/chunks/{messages-IqNWRaNS.cjs → messages-CbKOqXT6.cjs} +1 -1
  169. package/dist/chunks/{messages-Bmq--WTx.mjs → messages-CbxXU_Um.mjs} +15 -0
  170. package/dist/chunks/{messages-CVrOxu3J.cjs → messages-CcO-3_4k.cjs} +1 -1
  171. package/dist/chunks/{messages-D41fO84y.cjs → messages-CcTkC677.cjs} +1 -1
  172. package/dist/chunks/{messages-Cy-2_lIA.cjs → messages-CdEZ98_p.cjs} +1 -1
  173. package/dist/{messages-KyJQtOkh2.mjs → chunks/messages-CeZ1lo-o.mjs} +16 -1
  174. package/dist/chunks/{messages-D7H9JUDr.cjs → messages-CgFAGUJX.cjs} +1 -1
  175. package/dist/chunks/{messages-Dwl878eS.mjs → messages-CprMp4Va.mjs} +16 -1
  176. package/dist/chunks/{messages-DuD4ut1b.mjs → messages-CtXDxPOq.mjs} +16 -1
  177. package/dist/chunks/{messages-B_d857cA.mjs → messages-Cutnm4AZ.mjs} +15 -0
  178. package/dist/chunks/{messages-cSBZ5qVe.mjs → messages-CwIC_sse.mjs} +16 -1
  179. package/dist/chunks/{messages-7LWW3BVh.mjs → messages-CwbTr9lL.mjs} +16 -1
  180. package/dist/chunks/{messages-ETJ7tQ9O.cjs → messages-CxIknrw4.cjs} +1 -1
  181. package/dist/chunks/{messages-DjZoCJ00.mjs → messages-D0Jj7Dtw.mjs} +15 -0
  182. package/dist/chunks/{messages-SozFksSf.cjs → messages-D0th-I9S.cjs} +1 -1
  183. package/dist/chunks/{messages-gh5G15J1.cjs → messages-D1XTyTJz.cjs} +1 -1
  184. package/dist/chunks/{messages-DNtAzacv.mjs → messages-D24EoKbO.mjs} +16 -1
  185. package/dist/{messages-BlvF3pot.mjs → chunks/messages-D2chjyLM.mjs} +16 -1
  186. package/dist/chunks/{messages-CqRtDVFO.cjs → messages-D6y13edn.cjs} +1 -1
  187. package/dist/chunks/{messages-EsX3eikv.cjs → messages-D86p1eQY.cjs} +1 -1
  188. package/dist/{messages-BwCgJUdq.mjs → chunks/messages-D8L_8amv.mjs} +16 -1
  189. package/dist/chunks/{messages-C2ptZOWh.cjs → messages-DC-yFRyF.cjs} +1 -1
  190. package/dist/chunks/{messages-D4u2PSQw.mjs → messages-DEPxxCNU.mjs} +16 -1
  191. package/dist/chunks/{messages-VeyvtTce.cjs → messages-DG9l5agQ.cjs} +1 -1
  192. package/dist/chunks/{messages-B6794_2J.cjs → messages-DIeUb2w-.cjs} +1 -1
  193. package/dist/chunks/{messages-COx3hDcP.cjs → messages-DJ-RX5EJ.cjs} +1 -1
  194. package/dist/chunks/{messages-Cvg_uTfy.mjs → messages-DJ7lbpBX.mjs} +16 -1
  195. package/dist/{messages-Cn3uvFq3.mjs → chunks/messages-DJH_kd46.mjs} +16 -1
  196. package/dist/chunks/{messages-CWFSMzug2.cjs → messages-DLYl6KdK2.cjs} +1 -1
  197. package/dist/chunks/{messages-3jkCmB_A.mjs → messages-DMcCkOtN.mjs} +16 -1
  198. package/dist/chunks/{messages-BdL8bmTL.mjs → messages-DQks74hq.mjs} +16 -1
  199. package/dist/{messages-UJx6PvCL.mjs → chunks/messages-DTiqggtG.mjs} +16 -1
  200. package/dist/chunks/{messages-typO_i_k.mjs → messages-DTsSYToI.mjs} +15 -0
  201. package/dist/{messages-CwvHO8gp2.mjs → chunks/messages-DU6TOz6v.mjs} +16 -1
  202. package/dist/chunks/{messages-DmjccFHq.cjs → messages-DUbZA-w_.cjs} +1 -1
  203. package/dist/chunks/{messages-DCwrXfck.cjs → messages-DVAU-8rH.cjs} +1 -1
  204. package/dist/chunks/{messages-Z4LYgfWc.cjs → messages-Df6vXDrY.cjs} +1 -1
  205. package/dist/chunks/{messages-9B1F-k48.cjs → messages-Dh79ToYM.cjs} +1 -1
  206. package/dist/chunks/{messages-CuMtymEs.cjs → messages-Dh9psewW.cjs} +1 -1
  207. package/dist/chunks/{messages-BjYhwRk7.cjs → messages-Dln2T0zJ.cjs} +1 -1
  208. package/dist/chunks/{messages-DT-JnTnw.cjs → messages-DoA0Ecoi.cjs} +1 -1
  209. package/dist/{messages-RXQKVFCJ.mjs → chunks/messages-Dre_MB7o.mjs} +16 -1
  210. package/dist/chunks/{messages-BveiGA2x.cjs → messages-Dv4oyF7T.cjs} +1 -1
  211. package/dist/chunks/{messages-CkosWGGH.mjs → messages-FMAQkmg4.mjs} +15 -0
  212. package/dist/{messages-CQzOV7VE2.mjs → chunks/messages-GownDU-J.mjs} +16 -1
  213. package/dist/chunks/{messages-CH9SBR-i.cjs → messages-JYea02IT.cjs} +1 -1
  214. package/dist/chunks/{messages-BXp_U3uS.cjs → messages-JyzorVPx.cjs} +1 -1
  215. package/dist/chunks/{messages-jEbEE90_.mjs → messages-L70TFQAY.mjs} +16 -1
  216. package/dist/chunks/{messages-C0swL9CY.mjs → messages-L8CslBBZ.mjs} +16 -1
  217. package/dist/chunks/{messages-CM8uUnPx.cjs → messages-LX9PuLsT.cjs} +1 -1
  218. package/dist/chunks/{messages-BUvlOqll.mjs → messages-NFUr7Sxk.mjs} +16 -1
  219. package/dist/chunks/{messages-CGdCpNZ62.cjs → messages-PpRvDwOa2.cjs} +1 -1
  220. package/dist/chunks/{messages-ZMG7qQ3D.mjs → messages-QQ5-ET8y.mjs} +16 -1
  221. package/dist/chunks/{messages-DiODNXET.mjs → messages-Stf6rn2I.mjs} +16 -1
  222. package/dist/chunks/{messages-D7sU-NqL.cjs → messages-T8hCmys7.cjs} +1 -1
  223. package/dist/{messages-lnxRz5rM.mjs → chunks/messages-TZtv60nI.mjs} +16 -1
  224. package/dist/chunks/{messages-CeLv1whu2.mjs → messages-V9bvFOFc2.mjs} +16 -1
  225. package/dist/chunks/{messages-tR0BdeVG.cjs → messages-Vp8CpYh3.cjs} +1 -1
  226. package/dist/chunks/{messages-DUWCkLYR.cjs → messages-XqCqLy0k.cjs} +1 -1
  227. package/dist/{messages-CcF4SO9W.mjs → chunks/messages-_1y6EX7X.mjs} +16 -1
  228. package/dist/chunks/{messages-CXk-iM-i.mjs → messages-aTZglEV9.mjs} +16 -1
  229. package/dist/chunks/{messages-BHdKd7pH.cjs → messages-cSHh8Zgv.cjs} +1 -1
  230. package/dist/{messages-P5B61L1J2.mjs → chunks/messages-e8gxPi7a.mjs} +16 -1
  231. package/dist/chunks/{messages-CI2W7P-j.mjs → messages-hiwlrrr-.mjs} +16 -1
  232. package/dist/{messages-CeqpzGl9.mjs → chunks/messages-icPZhZ81.mjs} +15 -0
  233. package/dist/{messages-4drvqPN8.mjs → chunks/messages-lbwOYFxS2.mjs} +16 -1
  234. package/dist/chunks/{messages-B6yMdb3B.cjs → messages-lvo-9Be0.cjs} +1 -1
  235. package/dist/chunks/{messages-B2iaIrIu.mjs → messages-rm6jXexA.mjs} +16 -1
  236. package/dist/chunks/{messages-Ciq5_PsP.cjs → messages-sTyGkmbu.cjs} +1 -1
  237. package/dist/{messages-CF5MeYEt2.mjs → chunks/messages-uBwK-Ze2.mjs} +16 -1
  238. package/dist/chunks/{messages-BaVZgTrw.cjs → messages-uOISsfmj.cjs} +1 -1
  239. package/dist/chunks/{messages-MPe9FjYe.mjs → messages-wq0vxJ3p.mjs} +16 -1
  240. package/dist/chunks/{messages-CQT8TtiF.cjs → messages-z2DzBRgO.cjs} +1 -1
  241. package/dist/chunks/{micromark-extension-math-CJDP6iIU.mjs → micromark-extension-math-COSLlhTC.mjs} +6 -6
  242. package/dist/chunks/{micromark-factory-space-C6wz33de.mjs → micromark-factory-space-CLWSfTEG.mjs} +2 -2
  243. package/dist/chunks/{mindmap-definition-RKZ34NQL-Bh7eb0sP.mjs → mindmap-definition-RKZ34NQL-Dklc3Py2.mjs} +16 -16
  244. package/dist/chunks/{native-RS5RJIVO.mjs → native-BE2uW7dn.mjs} +1 -1
  245. package/dist/chunks/{ordinal-FCgpEo3E.mjs → ordinal-Qrn6pSTz.mjs} +3 -3
  246. package/dist/chunks/packet-YPE3B663-BehYuyRA.mjs +3 -0
  247. package/dist/chunks/{path-CCKeP0zq.mjs → path-CMz47XM0.mjs} +3 -3
  248. package/dist/chunks/pie-LRSECV5Y-C85c3T2E.mjs +3 -0
  249. package/dist/chunks/{pieDiagram-4H26LBE5-Bn2IEjeH.mjs → pieDiagram-4H26LBE5-DgCAhu_N.mjs} +14 -14
  250. package/dist/chunks/{prism-bash-D4zr_u8t.mjs → prism-bash-C0O3w7uz.mjs} +1 -1
  251. package/dist/chunks/{prism-cpp-CrBJjuu5.mjs → prism-cpp-2GQhW27l.mjs} +1 -1
  252. package/dist/chunks/{prism-csharp-lrMxvYpL.mjs → prism-csharp-DL7dZG1j.mjs} +1 -1
  253. package/dist/chunks/{prism-css-VQTID_HR.mjs → prism-css-CNvzB07F.mjs} +1 -1
  254. package/dist/chunks/{prism-dart-Q-9Z_W9B.mjs → prism-dart-DfjFPoDv.mjs} +1 -1
  255. package/dist/chunks/{prism-docker-DWAQ3dDD.mjs → prism-docker-BYbfweTi.mjs} +1 -1
  256. package/dist/chunks/{prism-java-_m72Vn1f.mjs → prism-java-DVDstRX2.mjs} +1 -1
  257. package/dist/chunks/{prism-kotlin-BTT9anu1.mjs → prism-kotlin-B4yZP901.mjs} +1 -1
  258. package/dist/chunks/{prism-latex-CL8zDJwm.mjs → prism-latex-D6GsLRnS.mjs} +1 -1
  259. package/dist/chunks/{prism-lua-D6JJ7p-A.mjs → prism-lua-CJX1SQiz.mjs} +1 -1
  260. package/dist/chunks/{prism-markdown-D6D8BprH.mjs → prism-markdown-C4FwQHMu.mjs} +1 -1
  261. package/dist/chunks/{prism-markup-templating-DfRjv0mn.mjs → prism-markup-templating-CmFWyrMp.mjs} +1 -1
  262. package/dist/chunks/{prism-php-DffX-wRi.mjs → prism-php-D1En1wGd.mjs} +1 -1
  263. package/dist/chunks/{prism-r-CU9se1Na.mjs → prism-r-DmduEoWu.mjs} +1 -1
  264. package/dist/chunks/{prism-ruby-DuQ4syPd.mjs → prism-ruby-BX9M-ggZ.mjs} +1 -1
  265. package/dist/chunks/{prism-rust-DRurCx4W.mjs → prism-rust-CW_lhKyK.mjs} +1 -1
  266. package/dist/chunks/{prism-sql-Au3VVcw1.mjs → prism-sql-CsK4eHq9.mjs} +1 -1
  267. package/dist/chunks/{prism-typescript-BKj96rmj.mjs → prism-typescript-Ca1YH5jC.mjs} +1 -1
  268. package/dist/chunks/{prism-yaml-Bk31kvSd.mjs → prism-yaml-CA6Sp5jk.mjs} +1 -1
  269. package/dist/chunks/{purify.es-Cg3Sx1In.mjs → purify.es-W8MRy_-c.mjs} +1 -1
  270. package/dist/chunks/{quadrantDiagram-W4KKPZXB-CGpTgKv9.mjs → quadrantDiagram-W4KKPZXB-BwDXU7bs.mjs} +4 -4
  271. package/dist/chunks/radar-GUYGQ44K-DGjR4vAz.mjs +3 -0
  272. package/dist/chunks/{requirementDiagram-4Y6WPE33-CdEklBE5.mjs → requirementDiagram-4Y6WPE33-C8uQNZti.mjs} +13 -13
  273. package/dist/chunks/{rough.esm-D0yWqsMu.mjs → rough.esm-BMiXn97a.mjs} +1 -1
  274. package/dist/chunks/{sanitize-url-DzTIH3XF.mjs → sanitize-url-Pw_yecwg.mjs} +70 -70
  275. package/dist/chunks/{sankeyDiagram-5OEKKPKP-C7B8TYyO.mjs → sankeyDiagram-5OEKKPKP-BJwtjvLG.mjs} +18 -18
  276. package/dist/chunks/{sequenceDiagram-3UESZ5HK-Wb1gzfDh.mjs → sequenceDiagram-3UESZ5HK-BHEbMtdM.mjs} +8 -8
  277. package/dist/chunks/{src-BMRCbUmP.mjs → src-uHD1i8ix.mjs} +86 -86
  278. package/dist/chunks/{stateDiagram-AJRCARHV-B1UbFikz.mjs → stateDiagram-AJRCARHV-D2di7cb4.mjs} +17 -17
  279. package/dist/chunks/stateDiagram-v2-BHNVJYJU-uJvNkDGf.mjs +27 -0
  280. package/dist/chunks/{timeline-definition-PNZ67QCA-Dr0oEljt.mjs → timeline-definition-PNZ67QCA-CkldAvjX.mjs} +6 -6
  281. package/dist/chunks/tools-B6rEBe-4.cjs +208 -0
  282. package/dist/chunks/{tools-CelSzJoA.mjs → tools-BQo4iaMe.mjs} +2565 -2497
  283. package/dist/chunks/treeView-BLDUP644-DhLdRehp.mjs +3 -0
  284. package/dist/chunks/treemap-LRROVOQU-CgXHb4o7.mjs +3 -0
  285. package/dist/chunks/{types-gj36fzRQ.mjs → types-BdXoqAkw.mjs} +1 -1
  286. package/dist/chunks/{vennDiagram-CIIHVFJN-Bc4yalKA.mjs → vennDiagram-CIIHVFJN-BuYgzRtw.mjs} +7 -7
  287. package/dist/chunks/wardley-L42UT6IY-sN5mOUNm.mjs +3 -0
  288. package/dist/chunks/{wardleyDiagram-YWT4CUSO-Ce_btexJ.mjs → wardleyDiagram-YWT4CUSO-CN5Jfm2D.mjs} +7 -7
  289. package/dist/chunks/{webm-muxer-Doy8JtlV.mjs → webm-muxer-B4_guPR0.mjs} +1 -1
  290. package/dist/chunks/{xychartDiagram-2RQKCTM6-HhACbhVa.mjs → xychartDiagram-2RQKCTM6-DAcdK50J.mjs} +12 -12
  291. package/dist/full.cjs +1 -1
  292. package/dist/full.mjs +3 -3
  293. package/dist/locales.mjs +82 -67
  294. package/dist/markdown.mjs +2 -2
  295. package/dist/{chunks/messages-DDJkNbJy.mjs → messages--sHkn4PD.mjs} +16 -1
  296. package/dist/{chunks/messages-QCaF3d92.mjs → messages-4mxgsYKZ2.mjs} +16 -1
  297. package/dist/{messages-zOl6jpOa.mjs → messages-6fQMeTiI.mjs} +16 -1
  298. package/dist/{messages-BRLWpOnP.mjs → messages-B22G0fir.mjs} +16 -1
  299. package/dist/{chunks/messages-kqnzps-X.mjs → messages-B908tGhl.mjs} +16 -1
  300. package/dist/{messages-CDueJTe8.mjs → messages-BAUvKI0_.mjs} +16 -1
  301. package/dist/{chunks/messages-BpMWMH9_.mjs → messages-BAfMwQnT2.mjs} +16 -1
  302. package/dist/{messages-Bmu3rJwO.mjs → messages-BCk7o4Pz.mjs} +16 -1
  303. package/dist/{messages-D4dovFzY2.mjs → messages-BG2BE6Sg2.mjs} +16 -1
  304. package/dist/{messages-DR2JBU-H.mjs → messages-BGe6GS_j.mjs} +16 -1
  305. package/dist/{chunks/messages-CeIzWL_4.mjs → messages-BHLrVFmZ2.mjs} +16 -1
  306. package/dist/{chunks/messages-HJnG9r2l.mjs → messages-BJjffJIu.mjs} +16 -1
  307. package/dist/{messages-CUcUO5bC2.mjs → messages-BSGZSOH32.mjs} +16 -1
  308. package/dist/{messages-HVgCKIww2.mjs → messages-BT6TyDYQ2.mjs} +16 -1
  309. package/dist/{messages-jQsl7cga2.mjs → messages-BWZ0_zUi2.mjs} +16 -1
  310. package/dist/{chunks/messages-DDX6I6MX.mjs → messages-BWhJgyhl.mjs} +16 -1
  311. package/dist/{messages-CqZgsrVP2.mjs → messages-BXqLaS2g2.mjs} +16 -1
  312. package/dist/{messages-gTUy3xjb.mjs → messages-BZiuFv_O.mjs} +15 -0
  313. package/dist/{messages-DcQNeoPB.mjs → messages-Bb-XEtyl.mjs} +15 -0
  314. package/dist/{messages-C9Kq8259.mjs → messages-BkKAnFz_.mjs} +15 -0
  315. package/dist/{messages-BarhGl2S2.mjs → messages-BoLu5_Wp2.mjs} +16 -1
  316. package/dist/{chunks/messages-D-p-omWy.mjs → messages-BpqRzil6.mjs} +16 -1
  317. package/dist/{messages-C6R0bzW5.mjs → messages-C2E8rQjb.mjs} +15 -0
  318. package/dist/{messages-BIgvPd6I2.mjs → messages-C2JJxi5D2.mjs} +16 -1
  319. package/dist/{messages-jsrzDVZy2.mjs → messages-C4d1_z432.mjs} +16 -1
  320. package/dist/{messages-L4sYfXpM.mjs → messages-C5Igyij0.mjs} +16 -1
  321. package/dist/{messages-CAnOyxrm.mjs → messages-C8fscB2J.mjs} +16 -1
  322. package/dist/{chunks/messages-CX0tJpOb.mjs → messages-CD8CgT1F.mjs} +16 -1
  323. package/dist/{messages-BKG0QHVl.mjs → messages-CDxPk3xE.mjs} +15 -0
  324. package/dist/{messages-hGop1gbF.mjs → messages-CGXrIdHT.mjs} +15 -0
  325. package/dist/{chunks/messages-DuHFGMCJ.mjs → messages-CHfkCxGQ2.mjs} +16 -1
  326. package/dist/{messages-fAEKzdUq.mjs → messages-CMvNzksb.mjs} +16 -1
  327. package/dist/{chunks/messages-t26x8wxB.mjs → messages-CSIhcdDx2.mjs} +16 -1
  328. package/dist/{chunks/messages-D-QWtvWg.mjs → messages-CW5z5hSz.mjs} +16 -1
  329. package/dist/{chunks/messages-CUPup5e3.mjs → messages-CYvpDx4p2.mjs} +16 -1
  330. package/dist/{chunks/messages-Ca9zIrBo.mjs → messages-CcTlmrYs.mjs} +16 -1
  331. package/dist/{chunks/messages-B01D7aHY.mjs → messages-Ce8ShL0-.mjs} +16 -1
  332. package/dist/{chunks/messages-CbyVDo8y.mjs → messages-CgT32m3D.mjs} +15 -0
  333. package/dist/{chunks/messages-ypIHI9Fr.mjs → messages-CmCBnNtA2.mjs} +16 -1
  334. package/dist/{messages-DGAWjKQZ.mjs → messages-CneVTJSN.mjs} +16 -1
  335. package/dist/{messages-C5IE9mXm.mjs → messages-CpNerer8.mjs} +15 -0
  336. package/dist/{chunks/messages-D-s4_vnU.mjs → messages-Cs0L1gyv.mjs} +16 -1
  337. package/dist/{chunks/messages-BYCHzM7F.mjs → messages-CsGnp1wE2.mjs} +16 -1
  338. package/dist/{messages-BgPDPIkO.mjs → messages-CvbIxcr7.mjs} +16 -1
  339. package/dist/{messages-wmS6Z2m82.mjs → messages-Cx6oQfMR2.mjs} +16 -1
  340. package/dist/{messages-BvutXmgt.mjs → messages-DBESJOhQ.mjs} +16 -1
  341. package/dist/{chunks/messages-Cl_pM31G.mjs → messages-DGOBPnKC2.mjs} +16 -1
  342. package/dist/{messages-B13GEFFu.mjs → messages-DK2AwXAp.mjs} +16 -1
  343. package/dist/{messages-CUFac9Qe.mjs → messages-DMbnesQ9.mjs} +16 -1
  344. package/dist/{chunks/messages-Byn9-dhb2.mjs → messages-DOiSOenW.mjs} +16 -1
  345. package/dist/{messages-8__-vX3U.mjs → messages-DQqp_ANL.mjs} +16 -1
  346. package/dist/{chunks/messages-Ck1-ddbo.mjs → messages-DThG2jW-2.mjs} +16 -1
  347. package/dist/{chunks/messages-DQfi2DoY.mjs → messages-DXlB7Vpm.mjs} +16 -1
  348. package/dist/{messages-VIQ8vjvS.mjs → messages-De0NAxJt.mjs} +15 -0
  349. package/dist/{chunks/messages-Bb80Csl3.mjs → messages-Depz8d3Q.mjs} +15 -0
  350. package/dist/{messages-BQaiScU1.mjs → messages-Dfsw3a8v.mjs} +16 -1
  351. package/dist/{messages-D9qgYMU82.mjs → messages-Dhmmqob82.mjs} +16 -1
  352. package/dist/{messages-DbE-riR52.mjs → messages-DmNUAv0e2.mjs} +16 -1
  353. package/dist/{messages-Ch-SytN8.mjs → messages-DrQaJrDO.mjs} +16 -1
  354. package/dist/{chunks/messages-C3rGCBi_.mjs → messages-DsksuHtZ.mjs} +16 -1
  355. package/dist/{chunks/messages-m-A6ArIM.mjs → messages-DzOVTq3E2.mjs} +16 -1
  356. package/dist/{messages-CskLLTiG2.mjs → messages-Igpt5WIA2.mjs} +16 -1
  357. package/dist/{messages-yuNINyS1.mjs → messages-JhpGtjjS.mjs} +16 -1
  358. package/dist/{chunks/messages-BbZz_Anm.mjs → messages-WCy1wiGS2.mjs} +16 -1
  359. package/dist/{chunks/messages-CRUb9o5k.mjs → messages-XbA-jXKc.mjs} +15 -0
  360. package/dist/{chunks/messages-BeS9EOEO.mjs → messages-imHGm9SI2.mjs} +16 -1
  361. package/dist/{messages-BQhHthxq2.mjs → messages-yTNyxXRV2.mjs} +16 -1
  362. package/dist/react.cjs +1 -1
  363. package/dist/react.mjs +1 -1
  364. package/dist/tools.cjs +1 -1
  365. package/dist/tools.mjs +2 -2
  366. package/package.json +3 -3
  367. package/src/components/i18n/locales/am/messages.json +16 -1
  368. package/src/components/i18n/locales/ar/messages.json +16 -1
  369. package/src/components/i18n/locales/az/messages.json +16 -1
  370. package/src/components/i18n/locales/bg/messages.json +16 -1
  371. package/src/components/i18n/locales/bn/messages.json +16 -1
  372. package/src/components/i18n/locales/bs/messages.json +16 -1
  373. package/src/components/i18n/locales/cs/messages.json +16 -1
  374. package/src/components/i18n/locales/da/messages.json +16 -1
  375. package/src/components/i18n/locales/de/messages.json +16 -1
  376. package/src/components/i18n/locales/dv/messages.json +16 -1
  377. package/src/components/i18n/locales/el/messages.json +16 -1
  378. package/src/components/i18n/locales/en/messages.json +15 -0
  379. package/src/components/i18n/locales/es/messages.json +15 -0
  380. package/src/components/i18n/locales/et/messages.json +15 -0
  381. package/src/components/i18n/locales/fa/messages.json +15 -0
  382. package/src/components/i18n/locales/fi/messages.json +15 -0
  383. package/src/components/i18n/locales/fil/messages.json +15 -0
  384. package/src/components/i18n/locales/fr/messages.json +15 -0
  385. package/src/components/i18n/locales/gu/messages.json +15 -0
  386. package/src/components/i18n/locales/he/messages.json +15 -0
  387. package/src/components/i18n/locales/hi/messages.json +15 -0
  388. package/src/components/i18n/locales/hr/messages.json +15 -0
  389. package/src/components/i18n/locales/hu/messages.json +15 -0
  390. package/src/components/i18n/locales/hy/messages.json +16 -1
  391. package/src/components/i18n/locales/id/messages.json +16 -1
  392. package/src/components/i18n/locales/it/messages.json +16 -1
  393. package/src/components/i18n/locales/ja/messages.json +16 -1
  394. package/src/components/i18n/locales/ka/messages.json +16 -1
  395. package/src/components/i18n/locales/km/messages.json +16 -1
  396. package/src/components/i18n/locales/kn/messages.json +16 -1
  397. package/src/components/i18n/locales/ko/messages.json +16 -1
  398. package/src/components/i18n/locales/ku/messages.json +16 -1
  399. package/src/components/i18n/locales/lo/messages.json +16 -1
  400. package/src/components/i18n/locales/lt/messages.json +16 -1
  401. package/src/components/i18n/locales/lv/messages.json +16 -1
  402. package/src/components/i18n/locales/mk/messages.json +16 -1
  403. package/src/components/i18n/locales/ml/messages.json +16 -1
  404. package/src/components/i18n/locales/mn/messages.json +16 -1
  405. package/src/components/i18n/locales/mr/messages.json +16 -1
  406. package/src/components/i18n/locales/ms/messages.json +16 -1
  407. package/src/components/i18n/locales/my/messages.json +16 -1
  408. package/src/components/i18n/locales/ne/messages.json +16 -1
  409. package/src/components/i18n/locales/nl/messages.json +16 -1
  410. package/src/components/i18n/locales/no/messages.json +16 -1
  411. package/src/components/i18n/locales/pa/messages.json +16 -1
  412. package/src/components/i18n/locales/pl/messages.json +16 -1
  413. package/src/components/i18n/locales/ps/messages.json +16 -1
  414. package/src/components/i18n/locales/pt/messages.json +16 -1
  415. package/src/components/i18n/locales/ro/messages.json +16 -1
  416. package/src/components/i18n/locales/ru/messages.json +16 -1
  417. package/src/components/i18n/locales/sd/messages.json +16 -1
  418. package/src/components/i18n/locales/si/messages.json +16 -1
  419. package/src/components/i18n/locales/sk/messages.json +16 -1
  420. package/src/components/i18n/locales/sl/messages.json +16 -1
  421. package/src/components/i18n/locales/sq/messages.json +16 -1
  422. package/src/components/i18n/locales/sr/messages.json +16 -1
  423. package/src/components/i18n/locales/sv/messages.json +16 -1
  424. package/src/components/i18n/locales/sw/messages.json +16 -1
  425. package/src/components/i18n/locales/ta/messages.json +16 -1
  426. package/src/components/i18n/locales/te/messages.json +16 -1
  427. package/src/components/i18n/locales/th/messages.json +16 -1
  428. package/src/components/i18n/locales/tr/messages.json +16 -1
  429. package/src/components/i18n/locales/ug/messages.json +16 -1
  430. package/src/components/i18n/locales/uk/messages.json +16 -1
  431. package/src/components/i18n/locales/ur/messages.json +16 -1
  432. package/src/components/i18n/locales/vi/messages.json +16 -1
  433. package/src/components/i18n/locales/yi/messages.json +16 -1
  434. package/src/components/i18n/locales/zh/messages.json +16 -1
  435. package/src/components/modules/api/blocks.ts +1 -1
  436. package/src/components/modules/blockManager/blockManager.ts +2 -2
  437. package/src/components/modules/paste/index.ts +31 -2
  438. package/src/components/modules/paste/notion-blocks-v3.ts +654 -0
  439. package/src/components/modules/paste/notion-preprocessor.ts +67 -0
  440. package/src/components/modules/yjs/serializer.ts +1 -1
  441. package/src/components/utils/data-model-transform.ts +15 -15
  442. package/src/components/utils/media-empty-state.ts +48 -5
  443. package/src/components/utils/popover/popover-desktop.ts +6 -3
  444. package/src/components/utils/tooltip.ts +5 -38
  445. package/src/markdown/markdown-handler.ts +1 -2
  446. package/src/styles/audio.css +348 -36
  447. package/src/styles/tables.css +10 -0
  448. package/src/tools/audio/constants.ts +6 -0
  449. package/src/tools/audio/controls.ts +53 -7
  450. package/src/tools/audio/cover-picker.ts +126 -0
  451. package/src/tools/audio/disc.ts +137 -0
  452. package/src/tools/audio/index.ts +114 -6
  453. package/src/tools/audio/liveliness.ts +26 -8
  454. package/src/tools/audio/ui.ts +39 -4
  455. package/types/api/tooltip.d.ts +40 -1
  456. package/types/data-formats/output-data.d.ts +5 -2
  457. package/types/index.d.ts +1 -4
  458. package/types/tools/database.d.ts +1 -1
  459. package/types/tools/header.d.ts +2 -1
  460. package/types/tools/list.d.ts +2 -1
  461. package/types/utils/popover/popover.d.ts +42 -1
  462. package/dist/chunks/architecture-7EHR7CIX-CGYZJshv.mjs +0 -3
  463. package/dist/chunks/channel-dq5ps1Yn.mjs +0 -5
  464. package/dist/chunks/classDiagram-4FO5ZUOK-C3CxSQxy.mjs +0 -29
  465. package/dist/chunks/classDiagram-v2-Q7XG4LA2-Ci_JeHz0.mjs +0 -29
  466. package/dist/chunks/constants-DmKwEMyC.cjs +0 -606
  467. package/dist/chunks/default-qigT1Xpq.mjs +0 -4
  468. package/dist/chunks/eventmodeling-FCH6USID-nCBtSITo.mjs +0 -3
  469. package/dist/chunks/gitGraph-WXDBUCRP-CN_MBj94.mjs +0 -3
  470. package/dist/chunks/info-J43DQDTF-xmJNmT0e.mjs +0 -3
  471. package/dist/chunks/packet-YPE3B663-3bNcBJRE.mjs +0 -3
  472. package/dist/chunks/pie-LRSECV5Y-YTwc-ZG1.mjs +0 -3
  473. package/dist/chunks/radar-GUYGQ44K-vfGwdTFY.mjs +0 -3
  474. package/dist/chunks/stateDiagram-v2-BHNVJYJU-D6E4HlFi.mjs +0 -27
  475. package/dist/chunks/tools-BcF1rHBg.cjs +0 -208
  476. package/dist/chunks/treeView-BLDUP644-BptrPFA0.mjs +0 -3
  477. package/dist/chunks/treemap-LRROVOQU-BbiNBKy3.mjs +0 -3
  478. package/dist/chunks/wardley-L42UT6IY-Ck6iMjTG.mjs +0 -3
@@ -20,7 +20,10 @@
20
20
  --blok-audio-pad: var(--blok-space-3-5);
21
21
  --blok-audio-radius: var(--blok-radius-md);
22
22
  --blok-audio-wave-height: 56px;
23
- --blok-audio-bar-height: 3px;
23
+ --blok-audio-bar-height: 4px;
24
+ /* lift the slim slider thumbs (volume + speed) off the track so they read as
25
+ tactile pucks rather than flat dots */
26
+ --blok-audio-thumb-shadow: 0 1px 2px rgba(0, 0, 0, 0.28);
24
27
  --blok-audio-ctrl-size: 30px;
25
28
  --blok-audio-play-size: 36px;
26
29
  --blok-audio-bar: var(--blok-border-subtle);
@@ -33,6 +36,46 @@
33
36
  --blok-audio-speed-pct: 50%;
34
37
  --blok-audio-pulse-ring: color-mix(in srgb, var(--blok-text-primary) 20%, transparent);
35
38
 
39
+ /* no-cover vinyl placeholder — a glossy black record. The disc body is built
40
+ from --blok-overlay-dark (near-black in both themes) so it always reads as
41
+ vinyl, not a grey CD; grooves + sheen are white at low alpha, the label is
42
+ a cream-white puck, the spindle is a crisp dark dot. A fixed specular sits
43
+ above the disc (placeholder::after) so grooves shimmer *under* it as it spins. */
44
+ --blok-audio-disc-size: 92px;
45
+ --blok-audio-groove-w: 0.75px;
46
+ --blok-audio-groove-gap: 2px;
47
+ --blok-audio-cover-glow: color-mix(in srgb, var(--blok-bg-primary) 55%, transparent);
48
+ /* glossy black record body: a near-black face with a centre→edge vignette so it
49
+ reads as a curved, light-catching surface rather than a flat circle. */
50
+ --blok-audio-disc-base: var(--blok-overlay-dark);
51
+ --blok-audio-disc-deep: color-mix(in srgb, #000 42%, var(--blok-overlay-dark));
52
+ --blok-audio-disc-edge: color-mix(in srgb, var(--blok-text-on-dark) 6%, var(--blok-overlay-dark));
53
+ --blok-audio-disc-groove: color-mix(in srgb, var(--blok-text-on-dark) 8%, transparent);
54
+ --blok-audio-disc-rim: color-mix(in srgb, var(--blok-text-on-dark) 16%, transparent);
55
+ --blok-audio-disc-rim-light: color-mix(in srgb, var(--blok-text-on-dark) 26%, transparent);
56
+ /* fixed specular reflection — two bright bands of "light" the grooves shimmer
57
+ under as the disc spins (this is what sells real glossy vinyl). */
58
+ --blok-audio-disc-sheen: color-mix(in srgb, var(--blok-text-on-dark) 32%, transparent);
59
+ --blok-audio-disc-sheen-soft: color-mix(in srgb, var(--blok-text-on-dark) 12%, transparent);
60
+ /* a soft highlight wedge printed on the disc — sweeps round with the grooves so
61
+ the (otherwise radially-symmetric) spin actually reads as motion. */
62
+ --blok-audio-disc-shine: color-mix(in srgb, var(--blok-text-on-dark) 10%, transparent);
63
+ /* centre label — a matte, faintly warm cream puck (not a flat white disc) */
64
+ --blok-audio-disc-label: color-mix(in srgb, var(--blok-text-on-dark) 93%, var(--blok-overlay-dark));
65
+ --blok-audio-disc-label-hi: var(--blok-text-on-dark);
66
+ --blok-audio-disc-label-edge: color-mix(in srgb, var(--blok-text-on-dark) 72%, var(--blok-overlay-dark));
67
+ --blok-audio-disc-label-ring: color-mix(in srgb, var(--blok-overlay-dark) 24%, transparent);
68
+ --blok-audio-disc-hole: var(--blok-overlay-dark);
69
+ /* opaque fill for the reflection mask (only its alpha matters) */
70
+ --blok-audio-mask-solid: #000;
71
+ /* depth shadows for the disc rim, label lift and spindle catch-light */
72
+ --blok-audio-disc-inner-shadow: rgba(0, 0, 0, 0.5);
73
+ --blok-audio-label-shadow: rgba(0, 0, 0, 0.35);
74
+ --blok-audio-spindle-catch: rgba(255, 255, 255, 0.4);
75
+ /* cover overlay button — a semi-transparent dark scrim (same near-black as
76
+ the disc, blended down to ~45% opacity so the art shows through) */
77
+ --blok-audio-cover-scrim: color-mix(in srgb, var(--blok-overlay-dark) 50%, transparent);
78
+
36
79
  position: relative;
37
80
  margin: var(--blok-space-2-5) 0;
38
81
  font-family: var(--blok-font-family, var(--blok-font-sans));
@@ -70,6 +113,20 @@
70
113
  display: none;
71
114
  }
72
115
 
116
+ /* Top-of-card toolbar anchor — a zero-size marker the editor centers the +/tunes
117
+ buttons on. Pinned to the top-left of the grid; line-height stays a hair above 0
118
+ (the positioner floors a 0 line-height back to its 24px default), so the buttons
119
+ land flush with the top of the cover art. */
120
+ [data-blok-tool="audio"] .blok-audio-toolbar-anchor {
121
+ grid-column: 1;
122
+ grid-row: 1;
123
+ align-self: start;
124
+ width: 0;
125
+ height: 0;
126
+ line-height: 1px;
127
+ pointer-events: none;
128
+ }
129
+
73
130
  /* ----- block selection ------------------------------------ */
74
131
  [data-blok-element-content].bg-selection:has([data-blok-tool="audio"]) {
75
132
  background-color: transparent;
@@ -100,13 +157,215 @@
100
157
  object-fit: cover;
101
158
  display: block;
102
159
  }
160
+
161
+ /* ----- change-cover overlay button (edit mode only) -------- */
162
+ /* Stretches across the full cover panel; stays invisible until the cover
163
+ is hovered or the button receives keyboard focus — preventing it from
164
+ obscuring the art in read-only contexts. */
165
+ [data-blok-tool="audio"] .blok-audio-cover__change {
166
+ position: absolute;
167
+ inset: 0;
168
+ display: grid;
169
+ place-items: center;
170
+ border: 0;
171
+ margin: 0;
172
+ padding: 0;
173
+ cursor: pointer;
174
+ color: var(--blok-text-on-dark);
175
+ background: var(--blok-audio-cover-scrim);
176
+ opacity: 0;
177
+ transition: opacity var(--blok-duration-base) ease;
178
+ }
179
+ [data-blok-tool="audio"] .blok-audio-cover:hover .blok-audio-cover__change,
180
+ [data-blok-tool="audio"] .blok-audio-cover.is-picker-open .blok-audio-cover__change,
181
+ [data-blok-tool="audio"] .blok-audio-cover__change:focus-visible {
182
+ opacity: 1;
183
+ }
184
+ [data-blok-tool="audio"] .blok-audio-cover__change svg {
185
+ width: 20px;
186
+ height: 20px;
187
+ pointer-events: none;
188
+ }
189
+
190
+ /* ----- cover-picker dialog (top-layer promoted) ------------- */
191
+ /* The dialog is its own elevated surface so the media-empty card inside layers
192
+ correctly. Two UA/reset hazards to beat:
193
+ 1. The `[data-blok-top-layer][popover]` reset in main.css (specificity 0,0,2,0)
194
+ forces width:auto and strips border/padding — without an explicit width the
195
+ flex-column surface collapses to a ~2px sliver. So every box-model property
196
+ is re-asserted with matching specificity (mirrors the image-lightbox /
197
+ file-preview precedent).
198
+ 2. The UA `[popover]` rule paints `background: Canvas` (white) and the reset
199
+ does NOT clear it. The media-empty card uses --blok-bg-secondary, which in
200
+ the dark theme is a translucent white overlay meant to sit on a dark parent;
201
+ over the white canvas it reads white. Painting the dialog with the solid
202
+ --blok-bg-primary surface gives that overlay the dark backdrop it expects.
203
+ Width stays a plain length (not a --blok-space token) per the proven pattern;
204
+ the other surface tokens resolve fine on the promoted element (colors +
205
+ spacing are bridged to [data-blok-top-layer]). The base rule covers the
206
+ no-Popover-API fallback (element stays in normal flow, no reset applied). */
207
+ .blok-audio-cover-picker,
208
+ .blok-audio-cover-picker[data-blok-top-layer][popover] {
209
+ z-index: 1;
210
+ width: min(440px, calc(100vw - 32px));
211
+ padding: var(--blok-space-2);
212
+ background: var(--blok-bg-primary);
213
+ border: 1px solid var(--blok-border-subtle);
214
+ border-radius: var(--blok-radius-lg);
215
+ box-shadow: var(--blok-popover-box-shadow);
216
+ }
217
+ /* The picker lives at document.body, outside blok's scoped border-box reset, so
218
+ its subtree would default to content-box. The media-empty Upload/Link height-
219
+ swap animation measures the border-box height but animates the `height`
220
+ property — under content-box that adds the panel padding on top, overshooting
221
+ then snapping back (a visible height jump). Match the inline (border-box)
222
+ context the component was built for. */
223
+ .blok-audio-cover-picker,
224
+ .blok-audio-cover-picker * {
225
+ box-sizing: border-box;
226
+ }
227
+
228
+ /* Entrance — the picker rises + scales up from its top-left anchor corner so it
229
+ reads as growing out of the cover, matching the block's own mount language
230
+ (blok-audio-rise / --blok-ease-popover). The directional content slide between
231
+ the Upload/Link tabs is driven from media-empty-state.ts (WAAPI). */
232
+ .blok-audio-cover-picker {
233
+ transform-origin: top left;
234
+ animation: blok-audio-cover-picker-in var(--blok-duration-slow) var(--blok-ease-popover) both;
235
+ }
236
+
237
+ @keyframes blok-audio-cover-picker-in {
238
+ from { opacity: 0; transform: translateY(-6px) scale(0.96); }
239
+ to { opacity: 1; transform: translateY(0) scale(1); }
240
+ }
241
+
242
+ @media (prefers-reduced-motion: reduce) {
243
+ .blok-audio-cover-picker { animation: none; }
244
+ }
245
+
246
+ /* ----- no-cover placeholder: a glossy black vinyl record --- */
103
247
  [data-blok-tool="audio"] .blok-audio-cover__placeholder {
248
+ position: relative;
104
249
  display: flex;
250
+ align-items: center;
251
+ justify-content: center;
252
+ width: 100%;
253
+ height: 100%;
254
+ /* faint top-centre sheen so the panel has depth behind the disc */
255
+ background: radial-gradient(120% 90% at 50% 36%, var(--blok-audio-cover-glow), transparent 70%);
105
256
  }
106
- [data-blok-tool="audio"] .blok-audio-cover__placeholder svg {
107
- width: 34px;
108
- height: 34px;
109
- color: var(--blok-text-tertiary);
257
+
258
+ /* fixed specular glint pinned over the disc — it does NOT rotate, so the grooves
259
+ shimmer beneath it as the record spins (the bit that sells the motion). */
260
+ [data-blok-tool="audio"] .blok-audio-cover__placeholder::after {
261
+ content: "";
262
+ position: absolute;
263
+ top: 50%;
264
+ left: 50%;
265
+ width: var(--blok-audio-disc-size);
266
+ height: var(--blok-audio-disc-size);
267
+ transform: translate(-50%, -50%);
268
+ border-radius: var(--blok-radius-pill);
269
+ background:
270
+ /* bright crescent of light along the top rim */
271
+ radial-gradient(72% 50% at 50% 2%, var(--blok-audio-disc-sheen), transparent 60%),
272
+ /* the main gloss: two opposed soft bands (a vinyl "bow-tie" reflection) */
273
+ conic-gradient(
274
+ from 142deg at 50% 50%,
275
+ transparent 0 6%,
276
+ var(--blok-audio-disc-sheen) 15%,
277
+ transparent 30% 64%,
278
+ var(--blok-audio-disc-sheen-soft) 80%,
279
+ transparent 92% 100%
280
+ ),
281
+ /* faint bounce light in the lower-right quadrant */
282
+ radial-gradient(44% 36% at 72% 84%, var(--blok-audio-disc-sheen-soft), transparent 62%);
283
+ /* the gloss only lives on the vinyl — keep it off the matte paper label */
284
+ mask: radial-gradient(circle at center, transparent 30%, var(--blok-audio-mask-solid) 40%);
285
+ -webkit-mask: radial-gradient(circle at center, transparent 30%, var(--blok-audio-mask-solid) 40%);
286
+ pointer-events: none;
287
+ }
288
+
289
+ /* the record body: fine concentric grooves over a near-black radial face,
290
+ lifted off the panel by an inset rim + soft shadow. Its rotation is driven
291
+ imperatively by disc.ts (transform: rotate), which spins the platter up on
292
+ play and lets it coast down on pause — so the disc has real inertia rather
293
+ than snapping on/off with a CSS animation. */
294
+ [data-blok-tool="audio"] .blok-audio-cover__disc {
295
+ position: relative;
296
+ will-change: transform;
297
+ width: var(--blok-audio-disc-size);
298
+ height: var(--blok-audio-disc-size);
299
+ border-radius: var(--blok-radius-pill);
300
+ background:
301
+ /* soft shine wedge that rotates with the grooves (rotation feedback) */
302
+ conic-gradient(
303
+ from 210deg,
304
+ transparent 0 64%,
305
+ var(--blok-audio-disc-shine) 78%,
306
+ transparent 92% 100%
307
+ ),
308
+ /* a bright hairline run just inside the edge — the glossy outer bevel */
309
+ radial-gradient(
310
+ circle at center,
311
+ transparent 82%,
312
+ var(--blok-audio-disc-rim-light) 85% 87%,
313
+ transparent 90%
314
+ ),
315
+ /* fine concentric grooves */
316
+ repeating-radial-gradient(
317
+ circle at center,
318
+ var(--blok-audio-disc-groove) 0 var(--blok-audio-groove-w),
319
+ transparent var(--blok-audio-groove-w) var(--blok-audio-groove-gap)
320
+ ),
321
+ /* glossy black face with a centre→edge vignette (curved-surface shading) */
322
+ radial-gradient(
323
+ circle at center,
324
+ var(--blok-audio-disc-edge) 0 14%,
325
+ var(--blok-audio-disc-base) 44%,
326
+ var(--blok-audio-disc-base) 72%,
327
+ var(--blok-audio-disc-deep) 100%
328
+ );
329
+ box-shadow:
330
+ inset 0 0 0 1px var(--blok-audio-disc-rim),
331
+ inset 0 0 7px var(--blok-audio-disc-inner-shadow),
332
+ var(--blok-image-shadow-resting);
333
+ }
334
+
335
+ /* centre label — a small matte cream puck with a printed concentric ring */
336
+ [data-blok-tool="audio"] .blok-audio-cover__disc::before {
337
+ content: "";
338
+ position: absolute;
339
+ inset: 36%;
340
+ border-radius: var(--blok-radius-pill);
341
+ background:
342
+ /* a thin printed ring near the label rim */
343
+ radial-gradient(
344
+ circle at center,
345
+ transparent 58%,
346
+ var(--blok-audio-disc-label-ring) 60% 64%,
347
+ transparent 66%
348
+ ),
349
+ /* paper with a soft off-axis sheen */
350
+ radial-gradient(
351
+ circle at 40% 34%,
352
+ var(--blok-audio-disc-label-hi),
353
+ var(--blok-audio-disc-label) 52%,
354
+ var(--blok-audio-disc-label-edge)
355
+ );
356
+ box-shadow:
357
+ inset 0 0 0 1px var(--blok-audio-disc-rim),
358
+ 0 1px 1px var(--blok-audio-label-shadow);
359
+ }
360
+
361
+ /* spindle hole — a crisp dark dot with a tiny rim catch */
362
+ [data-blok-tool="audio"] .blok-audio-cover__disc::after {
363
+ content: "";
364
+ position: absolute;
365
+ inset: 47%;
366
+ border-radius: var(--blok-radius-pill);
367
+ background: var(--blok-audio-disc-hole);
368
+ box-shadow: inset 0 1px 1px var(--blok-audio-spindle-catch);
110
369
  }
111
370
 
112
371
  /* ----- right column (title + artist + waveform + controls) - */
@@ -180,8 +439,12 @@
180
439
  margin-top: var(--blok-space-1);
181
440
  }
182
441
 
183
- /* generic control button */
184
- [data-blok-tool="audio"] .blok-audio-controls [data-role] {
442
+ /* generic control button — scoped to <button> so the volume <input> and the
443
+ time <span> (both carry data-role) keep their own slim/text styling instead
444
+ of being clobbered into a 30px pill. Every button-specific rule below is also
445
+ anchored on `button[data-role…]` so they share this rule's specificity and
446
+ win on source order. */
447
+ [data-blok-tool="audio"] .blok-audio-controls button[data-role] {
185
448
  flex-shrink: 0;
186
449
  display: inline-grid;
187
450
  place-items: center;
@@ -195,20 +458,20 @@
195
458
  cursor: pointer;
196
459
  transition: background var(--blok-duration-base) ease, color var(--blok-duration-base) ease, transform var(--blok-duration-base) ease;
197
460
  }
198
- [data-blok-tool="audio"] .blok-audio-controls [data-role]:hover {
461
+ [data-blok-tool="audio"] .blok-audio-controls button[data-role]:hover {
199
462
  background: var(--blok-bg-hover);
200
463
  color: var(--blok-text-primary);
201
464
  }
202
- [data-blok-tool="audio"] .blok-audio-controls [data-role]:active {
465
+ [data-blok-tool="audio"] .blok-audio-controls button[data-role]:active {
203
466
  transform: scale(0.92);
204
467
  }
205
- [data-blok-tool="audio"] .blok-audio-controls [data-role] svg {
468
+ [data-blok-tool="audio"] .blok-audio-controls button[data-role] svg {
206
469
  width: 17px;
207
470
  height: 17px;
208
471
  }
209
472
 
210
473
  /* play / pause — filled black puck */
211
- [data-blok-tool="audio"] .blok-audio-controls [data-role="audio-play"] {
474
+ [data-blok-tool="audio"] .blok-audio-controls button[data-role="audio-play"] {
212
475
  width: var(--blok-audio-play-size);
213
476
  height: var(--blok-audio-play-size);
214
477
  margin-right: var(--blok-space-0-5);
@@ -216,15 +479,15 @@
216
479
  color: var(--blok-bg-primary);
217
480
  box-shadow: var(--blok-image-shadow-resting);
218
481
  }
219
- [data-blok-tool="audio"] .blok-audio-controls [data-role="audio-play"]:hover {
482
+ [data-blok-tool="audio"] .blok-audio-controls button[data-role="audio-play"]:hover {
220
483
  background: var(--blok-text-primary);
221
484
  color: var(--blok-bg-primary);
222
485
  transform: scale(1.05);
223
486
  }
224
- [data-blok-tool="audio"] .blok-audio-controls [data-role="audio-play"]:active {
487
+ [data-blok-tool="audio"] .blok-audio-controls button[data-role="audio-play"]:active {
225
488
  transform: scale(0.96);
226
489
  }
227
- [data-blok-tool="audio"] .blok-audio-controls [data-role="audio-play"] svg {
490
+ [data-blok-tool="audio"] .blok-audio-controls button[data-role="audio-play"] svg {
228
491
  width: 19px;
229
492
  height: 19px;
230
493
  }
@@ -278,6 +541,7 @@
278
541
  height: 12px;
279
542
  border-radius: var(--blok-radius-pill);
280
543
  background: var(--blok-text-primary);
544
+ box-shadow: var(--blok-audio-thumb-shadow);
281
545
  }
282
546
  [data-blok-tool="audio"] .blok-audio-controls__volume::-moz-range-thumb {
283
547
  width: 12px;
@@ -285,14 +549,15 @@
285
549
  border: 0;
286
550
  border-radius: var(--blok-radius-pill);
287
551
  background: var(--blok-text-primary);
552
+ box-shadow: var(--blok-audio-thumb-shadow);
288
553
  }
289
554
 
290
555
  /* loop active state — neutral black, no accent color */
291
- [data-blok-tool="audio"] .blok-audio-controls [data-role="audio-loop"][aria-pressed="true"] {
556
+ [data-blok-tool="audio"] .blok-audio-controls button[data-role="audio-loop"][aria-pressed="true"] {
292
557
  color: var(--blok-bg-primary);
293
558
  background: var(--blok-text-primary);
294
559
  }
295
- [data-blok-tool="audio"] .blok-audio-controls [data-role="audio-loop"][aria-pressed="true"]:hover {
560
+ [data-blok-tool="audio"] .blok-audio-controls button[data-role="audio-loop"][aria-pressed="true"]:hover {
296
561
  color: var(--blok-bg-primary);
297
562
  background: var(--blok-text-primary);
298
563
  }
@@ -303,7 +568,7 @@
303
568
  display: inline-flex;
304
569
  flex-shrink: 0;
305
570
  }
306
- [data-blok-tool="audio"] .blok-audio-controls [data-role="audio-speed"][aria-expanded="true"] {
571
+ [data-blok-tool="audio"] .blok-audio-controls button[data-role="audio-speed"][aria-expanded="true"] {
307
572
  background: var(--blok-bg-hover);
308
573
  color: var(--blok-text-primary);
309
574
  }
@@ -332,10 +597,50 @@
332
597
  margin-bottom: var(--blok-space-2);
333
598
  }
334
599
 
600
+ /* − [slider] + — flat icon steppers flank a flexible track (mirrors the video
601
+ player's speed control). */
602
+ [data-blok-tool="audio"] .blok-audio-controls__speed-slider-row {
603
+ display: flex;
604
+ align-items: center;
605
+ gap: var(--blok-space-1-5);
606
+ margin-bottom: var(--blok-space-2);
607
+ }
608
+ [data-blok-tool="audio"] .blok-audio-controls__speed-step {
609
+ display: grid;
610
+ place-items: center;
611
+ flex-shrink: 0;
612
+ width: 24px;
613
+ height: 24px;
614
+ padding: 0;
615
+ border: 0;
616
+ border-radius: var(--blok-radius-sm);
617
+ background: transparent;
618
+ color: var(--blok-text-tertiary);
619
+ cursor: pointer;
620
+ transition: background var(--blok-duration-base) ease, color var(--blok-duration-base) ease, transform var(--blok-duration-base) ease, opacity var(--blok-duration-base) ease;
621
+ }
622
+ [data-blok-tool="audio"] .blok-audio-controls__speed-step:hover {
623
+ background: var(--blok-bg-hover);
624
+ color: var(--blok-text-primary);
625
+ }
626
+ [data-blok-tool="audio"] .blok-audio-controls__speed-step:active {
627
+ transform: scale(0.92);
628
+ }
629
+ [data-blok-tool="audio"] .blok-audio-controls__speed-step:disabled {
630
+ opacity: 0.35;
631
+ cursor: default;
632
+ transform: none;
633
+ }
634
+ [data-blok-tool="audio"] .blok-audio-controls__speed-step svg {
635
+ width: 15px;
636
+ height: 15px;
637
+ }
638
+
335
639
  [data-blok-tool="audio"] .blok-audio-controls__speed-slider {
336
- width: 100%;
640
+ flex: 1 1 auto;
641
+ min-width: 0;
337
642
  height: var(--blok-audio-bar-height);
338
- margin: 0 0 var(--blok-space-2);
643
+ margin: 0;
339
644
  -webkit-appearance: none;
340
645
  appearance: none;
341
646
  background: linear-gradient(
@@ -353,6 +658,7 @@
353
658
  height: 12px;
354
659
  border-radius: var(--blok-radius-pill);
355
660
  background: var(--blok-text-primary);
661
+ box-shadow: var(--blok-audio-thumb-shadow);
356
662
  }
357
663
  [data-blok-tool="audio"] .blok-audio-controls__speed-slider::-moz-range-thumb {
358
664
  width: 12px;
@@ -360,6 +666,7 @@
360
666
  border: 0;
361
667
  border-radius: var(--blok-radius-pill);
362
668
  background: var(--blok-text-primary);
669
+ box-shadow: var(--blok-audio-thumb-shadow);
363
670
  }
364
671
 
365
672
  [data-blok-tool="audio"] .blok-audio-controls__speed-chips {
@@ -386,30 +693,29 @@
386
693
  }
387
694
 
388
695
  /* ----- caption row (full-width footer) --------------------
389
- The row is a single-track grid wrapper so it can collapse to zero height
390
- (grid-template-rows 1fr 0fr) when the caption is toggled, while the inner
391
- element holds the actual padding/border that fade out with it. */
696
+ The row claims its full height in a single layout step; the visible reveal
697
+ rides transform + opacity on the inner, keeping the whole animation on the
698
+ compositor. This is deliberate: animating the row's *height* would resize the
699
+ card every frame, forcing a re-raster of its 24px-blur box-shadow and the
700
+ high-DPI waveform canvas each frame — which is what made the toggle lag.
701
+ overflow:hidden clips the inner as it slides; padding/border live on the
702
+ caption child below so they're clipped too. */
392
703
  [data-blok-tool="audio"] .blok-audio-caption-row {
393
704
  grid-column: 1 / -1;
394
705
  grid-row: 2;
395
- display: grid;
396
- grid-template-rows: 1fr;
397
- transition:
398
- grid-template-rows var(--blok-duration-slow) var(--blok-ease-popover),
399
- opacity var(--blok-duration-slow) var(--blok-ease-popover);
400
- }
401
- [data-blok-tool="audio"] .blok-audio-caption-row.is-collapsed {
402
- grid-template-rows: 0fr;
403
- opacity: 0;
706
+ overflow: hidden;
404
707
  }
405
- /* overflow:hidden + min-height:0 lets the grid track collapse fully to 0; the
406
- padding/border live on the caption child below so they get clipped too. */
407
708
  [data-blok-tool="audio"] .blok-audio-caption-row__inner {
408
- min-height: 0;
409
- overflow: hidden;
410
709
  display: flex;
411
710
  align-items: flex-start;
412
711
  gap: var(--blok-space-2);
712
+ transition:
713
+ transform var(--blok-duration-slow) var(--blok-ease-popover),
714
+ opacity var(--blok-duration-slow) var(--blok-ease-popover);
715
+ }
716
+ [data-blok-tool="audio"] .blok-audio-caption-row.is-collapsed .blok-audio-caption-row__inner {
717
+ transform: translateY(6px);
718
+ opacity: 0;
413
719
  }
414
720
  [data-blok-tool="audio"] .blok-audio-caption {
415
721
  flex: 1 1 auto;
@@ -518,6 +824,9 @@
518
824
  50% { height: 96%; }
519
825
  }
520
826
 
827
+ /* The vinyl placeholder's spin is driven by disc.ts (inertial rotation via
828
+ transform), not a CSS animation — see the .blok-audio-cover__disc rule. */
829
+
521
830
  /* ----- 3. play puck heartbeat while playing ---------------------- */
522
831
  [data-blok-tool="audio"] .blok-audio-inner[data-playing="true"] .blok-audio-controls [data-role="audio-play"] {
523
832
  animation: blok-audio-pulse var(--blok-duration-rotation) var(--blok-ease-spring) infinite;
@@ -546,6 +855,9 @@
546
855
  }
547
856
  /* The badge still appears while playing — it just holds steady. */
548
857
  [data-blok-tool="audio"] .blok-audio-eq { transition: none; }
858
+ /* The record holds still under reduced motion (disc.ts skips the spin loop). */
549
859
  /* Caption appears/disappears instantly (JS also takes the instant path). */
550
- [data-blok-tool="audio"] .blok-audio-caption-row { transition: none; }
860
+ [data-blok-tool="audio"] .blok-audio-caption-row__inner { transition: none; }
861
+ /* Cover overlay button appears instantly — no fade. */
862
+ [data-blok-tool="audio"] .blok-audio-cover__change { transition: none; }
551
863
  }
@@ -152,3 +152,13 @@
152
152
  [data-blok-theme="dark"] [data-blok-interface] [data-blok-table-haze="right"] {
153
153
  background-image: linear-gradient(to left, var(--blok-dark), transparent);
154
154
  }
155
+
156
+ /* Table card pins its top toolbar anchor absolutely to the (position:relative)
157
+ wrapper top, so the +/tunes buttons sit flush with the table's top edge while
158
+ the marker stays out of the flow — it never becomes the wrapper's firstChild,
159
+ which the grid/scroll structure relies on. */
160
+ [data-blok-tool="table"] .blok-toolbar-top-anchor {
161
+ position: absolute;
162
+ top: 0;
163
+ left: 0;
164
+ }
@@ -19,3 +19,9 @@ export const COVER_DATA_URL_CAP_BYTES = 150 * 1024;
19
19
 
20
20
  /** Direct links to a playable audio file. */
21
21
  export const URL_PATTERN = /^https?:\/\/\S+\.(mp3|wav|ogg|oga|m4a|aac|flac|weba)(\?\S*)?$/i;
22
+
23
+ /** Accepted cover-image MIME types (family wildcard). */
24
+ export const COVER_TYPES = ['image/*'] as const;
25
+
26
+ /** Max cover-image size in bytes. */
27
+ export const COVER_MAX_SIZE = 10 * 1024 * 1024; // 10 MiB
@@ -1,4 +1,5 @@
1
1
  import {
2
+ IconMinus,
2
3
  IconPlayerLoop,
3
4
  IconPlayerPause,
4
5
  IconPlayerPlay,
@@ -6,7 +7,9 @@ import {
6
7
  IconPlayerSpeed,
7
8
  IconPlayerVolume,
8
9
  IconPlayerVolumeMute,
10
+ IconPlus,
9
11
  } from '../../components/icons';
12
+ import { createPlatterSpin } from './disc';
10
13
  import type { AudioData } from '../../../types/tools/audio';
11
14
 
12
15
  /** Minimal storage seam (localStorage-shaped) for volume + position persistence. */
@@ -99,11 +102,17 @@ export function attachControls({
99
102
 
100
103
  const state = { playing: false, selectedRate: 1 };
101
104
 
105
+ // Inertial spin for the no-cover vinyl record (no-op when a cover image is
106
+ // shown — the disc only exists in the placeholder). Spins up on play, coasts
107
+ // down on pause.
108
+ const platter = createPlatterSpin(figure);
109
+
102
110
  const setPlaying = (next: boolean): void => {
103
111
  state.playing = next;
104
112
  figure.setAttribute('data-playing', String(next));
105
113
  playToggle.innerHTML = next ? IconPlayerPause : IconPlayerPlay;
106
114
  playToggle.setAttribute('aria-label', next ? 'Pause' : 'Play');
115
+ if (next) platter.start(); else platter.stop();
107
116
  };
108
117
  setPlaying(false);
109
118
 
@@ -139,7 +148,10 @@ export function attachControls({
139
148
  muteToggle.innerHTML = muted ? IconPlayerVolumeMute : IconPlayerVolume;
140
149
  muteToggle.setAttribute('aria-label', muted ? 'Unmute' : 'Mute');
141
150
  volumeInput.value = muted ? '0' : String(media.volume);
142
- volumeInput.style.setProperty('--blok-vol-pct', `${Number(volumeInput.value) * 100}%`);
151
+ // audio.css paints the filled track from --blok-audio-vol-pct (same naming
152
+ // as the speed slider's --blok-audio-speed-pct); writing any other name
153
+ // freezes the fill at its 100% default, so muted looks identical to full.
154
+ volumeInput.style.setProperty('--blok-audio-vol-pct', `${Number(volumeInput.value) * 100}%`);
143
155
  };
144
156
 
145
157
  // ----- persistence -----
@@ -207,6 +219,20 @@ export function attachControls({
207
219
  speedReadout.setAttribute('aria-hidden', 'true');
208
220
  speedReadout.textContent = speedLabel(state.selectedRate);
209
221
 
222
+ // − [slider] + — flat steppers flank the track, mirroring the video player.
223
+ // Identified by class only (no data-role) so the generic button[data-role]
224
+ // control-button rule doesn't size them into 30px pills.
225
+ const speedStepper = (icon: string, label: string): HTMLButtonElement => {
226
+ const btn = document.createElement('button');
227
+ btn.type = 'button';
228
+ btn.className = 'blok-audio-controls__speed-step';
229
+ btn.setAttribute('aria-label', label);
230
+ btn.innerHTML = icon;
231
+ return btn;
232
+ };
233
+ const speedDec = speedStepper(IconMinus, 'Decrease playback speed');
234
+ const speedInc = speedStepper(IconPlus, 'Increase playback speed');
235
+
210
236
  const speedSlider = document.createElement('input');
211
237
  speedSlider.type = 'range';
212
238
  speedSlider.className = 'blok-audio-controls__speed-slider';
@@ -216,6 +242,12 @@ export function attachControls({
216
242
  speedSlider.value = String(state.selectedRate);
217
243
  speedSlider.setAttribute('aria-label', 'Playback speed');
218
244
 
245
+ // Drive the elapsed-fill gradient from JS so the painted track tracks the
246
+ // native knob exactly (same approach as the volume + video sliders).
247
+ const speedFillPct = (rate: number): string =>
248
+ `${((rate - SPEED_MIN) / (SPEED_MAX - SPEED_MIN)) * 100}%`;
249
+ speedSlider.style.setProperty('--blok-audio-speed-pct', speedFillPct(state.selectedRate));
250
+
219
251
  const setRate = (rate: number): void => {
220
252
  const next = clampRate(rate);
221
253
  state.selectedRate = next;
@@ -223,11 +255,25 @@ export function attachControls({
223
255
  speedReadout.textContent = speedLabel(next);
224
256
  speedSlider.value = String(next);
225
257
  speedSlider.setAttribute('aria-valuetext', speedLabel(next));
258
+ speedSlider.style.setProperty('--blok-audio-speed-pct', speedFillPct(next));
259
+ speedDec.disabled = next <= SPEED_MIN;
260
+ speedInc.disabled = next >= SPEED_MAX;
226
261
  };
227
262
 
228
263
  const onSpeedSliderInput = (): void => setRate(Number(speedSlider.value));
229
264
  speedSlider.addEventListener('input', onSpeedSliderInput);
230
-
265
+ speedDec.addEventListener('click', () => setRate(state.selectedRate - SPEED_SLIDER_STEP));
266
+ speedInc.addEventListener('click', () => setRate(state.selectedRate + SPEED_SLIDER_STEP));
267
+ speedDec.disabled = state.selectedRate <= SPEED_MIN;
268
+ speedInc.disabled = state.selectedRate >= SPEED_MAX;
269
+
270
+ const speedSliderRow = document.createElement('div');
271
+ speedSliderRow.className = 'blok-audio-controls__speed-slider-row';
272
+ speedSliderRow.append(speedDec, speedSlider, speedInc);
273
+
274
+ // Quiet quick-jump presets (mirrors the video player): every chip reads the
275
+ // same muted weight, lifting only on hover. The live rate is communicated by
276
+ // the readout + slider knob, not a filled "selected" chip.
231
277
  const speedChipRow = document.createElement('div');
232
278
  speedChipRow.className = 'blok-audio-controls__speed-chips';
233
279
  SPEED_PRESETS.forEach((rate) => {
@@ -235,14 +281,13 @@ export function attachControls({
235
281
  chip.type = 'button';
236
282
  chip.className = 'blok-audio-controls__speed-chip';
237
283
  chip.textContent = `${rate}×`;
238
- chip.addEventListener('click', () => {
239
- setRate(rate);
240
- closeSpeedMenu();
241
- });
284
+ // Apply the preset but leave the menu open so the user can keep nudging the
285
+ // rate (slider/steppers/other presets) without re-opening it each time.
286
+ chip.addEventListener('click', () => setRate(rate));
242
287
  speedChipRow.appendChild(chip);
243
288
  });
244
289
 
245
- speedMenu.append(speedReadout, speedSlider, speedChipRow);
290
+ speedMenu.append(speedReadout, speedSliderRow, speedChipRow);
246
291
 
247
292
  // Gear + menu share a positioned wrapper so the menu anchors directly above
248
293
  // the gear button (rather than the card corner).
@@ -391,6 +436,7 @@ export function attachControls({
391
436
 
392
437
  // ----- destroy -----
393
438
  const destroy = (): void => {
439
+ platter.destroy();
394
440
  closeSpeedMenu();
395
441
 
396
442
  playToggle.removeEventListener('click', togglePlay);