@mieweb/ui 0.10.0-dev.1 → 0.10.0-dev.10

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 (423) hide show
  1. package/agent/mieweb-ui.instructions.md +13 -1
  2. package/dist/CsvBlock-ROJCKJDP.cjs +16 -0
  3. package/dist/{CsvBlock-CVYA3HYS.cjs.map → CsvBlock-ROJCKJDP.cjs.map} +1 -1
  4. package/dist/CsvBlock-UWPMTLE2.js +7 -0
  5. package/dist/{CsvBlock-SM4NKSHA.js.map → CsvBlock-UWPMTLE2.js.map} +1 -1
  6. package/dist/HtmlPreviewBlock-DWFN6EUB.cjs +16 -0
  7. package/dist/{HtmlPreviewBlock-JF454L2L.cjs.map → HtmlPreviewBlock-DWFN6EUB.cjs.map} +1 -1
  8. package/dist/HtmlPreviewBlock-ME5U3XNS.js +7 -0
  9. package/dist/{HtmlPreviewBlock-FAMF4W24.js.map → HtmlPreviewBlock-ME5U3XNS.js.map} +1 -1
  10. package/dist/MermaidBlock-2B6CPD6Y.js +7 -0
  11. package/dist/{MermaidBlock-7V5G4K5A.js.map → MermaidBlock-2B6CPD6Y.js.map} +1 -1
  12. package/dist/MermaidBlock-D2UC5M55.cjs +16 -0
  13. package/dist/{MermaidBlock-FR5SQX4Q.cjs.map → MermaidBlock-D2UC5M55.cjs.map} +1 -1
  14. package/dist/SurveyBlock-4CD4AYMJ.cjs +16 -0
  15. package/dist/{SurveyBlock-MCJVWR7H.cjs.map → SurveyBlock-4CD4AYMJ.cjs.map} +1 -1
  16. package/dist/SurveyBlock-4DO62RBT.js +7 -0
  17. package/dist/{SurveyBlock-6K2POV7S.js.map → SurveyBlock-4DO62RBT.js.map} +1 -1
  18. package/dist/brands/index.cjs +20 -20
  19. package/dist/brands/index.js +4 -4
  20. package/dist/brands/types.cjs +4 -4
  21. package/dist/brands/types.d.cts +9 -0
  22. package/dist/brands/types.d.ts +9 -0
  23. package/dist/brands/types.js +1 -1
  24. package/dist/{chunk-XTHMC76F.cjs → chunk-2G75X6TS.cjs} +4 -4
  25. package/dist/{chunk-XTHMC76F.cjs.map → chunk-2G75X6TS.cjs.map} +1 -1
  26. package/dist/chunk-2IZLKPUW.js +412 -0
  27. package/dist/chunk-2IZLKPUW.js.map +1 -0
  28. package/dist/{chunk-VSVGMMNO.js → chunk-3M7TAXNR.js} +3 -3
  29. package/dist/{chunk-VSVGMMNO.js.map → chunk-3M7TAXNR.js.map} +1 -1
  30. package/dist/{chunk-5Z6UPVGC.cjs → chunk-3QEVGSFG.cjs} +5 -5
  31. package/dist/{chunk-5Z6UPVGC.cjs.map → chunk-3QEVGSFG.cjs.map} +1 -1
  32. package/dist/{chunk-PYHFVYVZ.js → chunk-3QGS6CXD.js} +3 -3
  33. package/dist/{chunk-PYHFVYVZ.js.map → chunk-3QGS6CXD.js.map} +1 -1
  34. package/dist/chunk-3YBS4WUQ.js +52 -0
  35. package/dist/chunk-3YBS4WUQ.js.map +1 -0
  36. package/dist/chunk-462XSCP3.cjs +199 -0
  37. package/dist/chunk-462XSCP3.cjs.map +1 -0
  38. package/dist/{chunk-X5YM3KXY.js → chunk-4A3W4TQF.js} +201 -4
  39. package/dist/chunk-4A3W4TQF.js.map +1 -0
  40. package/dist/chunk-4IS3QCOQ.cjs +453 -0
  41. package/dist/chunk-4IS3QCOQ.cjs.map +1 -0
  42. package/dist/chunk-4NCDU5IG.cjs +56 -0
  43. package/dist/chunk-4NCDU5IG.cjs.map +1 -0
  44. package/dist/{chunk-WOYUQ4AT.js → chunk-5GOWFNQ6.js} +9 -3
  45. package/dist/chunk-5GOWFNQ6.js.map +1 -0
  46. package/dist/chunk-5GUOOLPR.cjs +436 -0
  47. package/dist/chunk-5GUOOLPR.cjs.map +1 -0
  48. package/dist/{chunk-WUBMDOTG.js → chunk-5JJ2DAE4.js} +4 -4
  49. package/dist/{chunk-WUBMDOTG.js.map → chunk-5JJ2DAE4.js.map} +1 -1
  50. package/dist/{chunk-RSCA5AZW.cjs → chunk-5MCBWTIF.cjs} +4 -4
  51. package/dist/{chunk-RSCA5AZW.cjs.map → chunk-5MCBWTIF.cjs.map} +1 -1
  52. package/dist/chunk-6EN3IQQI.cjs +332 -0
  53. package/dist/chunk-6EN3IQQI.cjs.map +1 -0
  54. package/dist/chunk-74ENCTIK.js +162 -0
  55. package/dist/chunk-74ENCTIK.js.map +1 -0
  56. package/dist/chunk-76TBQDED.js +166 -0
  57. package/dist/chunk-76TBQDED.js.map +1 -0
  58. package/dist/{chunk-OAZUDUGX.js → chunk-7IBZA7G6.js} +4 -4
  59. package/dist/{chunk-OAZUDUGX.js.map → chunk-7IBZA7G6.js.map} +1 -1
  60. package/dist/{chunk-AUOTJQGO.cjs → chunk-7ZDPD5ZX.cjs} +4 -4
  61. package/dist/{chunk-AUOTJQGO.cjs.map → chunk-7ZDPD5ZX.cjs.map} +1 -1
  62. package/dist/{chunk-IB54SKWB.cjs → chunk-7ZXAQTV4.cjs} +8 -8
  63. package/dist/{chunk-IB54SKWB.cjs.map → chunk-7ZXAQTV4.cjs.map} +1 -1
  64. package/dist/{chunk-IIFQ6BSJ.js → chunk-ACCAXVOG.js} +6 -6
  65. package/dist/{chunk-IIFQ6BSJ.js.map → chunk-ACCAXVOG.js.map} +1 -1
  66. package/dist/{chunk-QO6PRHDX.cjs → chunk-AR7AKDM2.cjs} +2 -2
  67. package/dist/{chunk-QO6PRHDX.cjs.map → chunk-AR7AKDM2.cjs.map} +1 -1
  68. package/dist/{chunk-PY7XAG4D.cjs → chunk-ASSDGS4F.cjs} +201 -4
  69. package/dist/chunk-ASSDGS4F.cjs.map +1 -0
  70. package/dist/{chunk-24SEAAOH.js → chunk-AWJBOND5.js} +2 -2
  71. package/dist/{chunk-24SEAAOH.js.map → chunk-AWJBOND5.js.map} +1 -1
  72. package/dist/chunk-BM35CACB.js +148 -0
  73. package/dist/chunk-BM35CACB.js.map +1 -0
  74. package/dist/chunk-CR2SDI23.cjs +322 -0
  75. package/dist/chunk-CR2SDI23.cjs.map +1 -0
  76. package/dist/{chunk-OSPTA4UR.js → chunk-DEDN5HAG.js} +3 -3
  77. package/dist/{chunk-OSPTA4UR.js.map → chunk-DEDN5HAG.js.map} +1 -1
  78. package/dist/chunk-DZ5HFLRC.js +258 -0
  79. package/dist/chunk-DZ5HFLRC.js.map +1 -0
  80. package/dist/{chunk-PKD3JLS2.cjs → chunk-E4IBHYJ7.cjs} +9 -9
  81. package/dist/{chunk-PKD3JLS2.cjs.map → chunk-E4IBHYJ7.cjs.map} +1 -1
  82. package/dist/{chunk-QSVQABXD.js → chunk-ENKFJJZX.js} +7 -7
  83. package/dist/{chunk-QSVQABXD.js.map → chunk-ENKFJJZX.js.map} +1 -1
  84. package/dist/{chunk-MUIDWFYJ.js → chunk-FJ7YPVKV.js} +3 -3
  85. package/dist/{chunk-MUIDWFYJ.js.map → chunk-FJ7YPVKV.js.map} +1 -1
  86. package/dist/{chunk-3LHICE4I.cjs → chunk-FXO5ARBB.cjs} +5 -5
  87. package/dist/{chunk-3LHICE4I.cjs.map → chunk-FXO5ARBB.cjs.map} +1 -1
  88. package/dist/{chunk-QKAYRHWP.cjs → chunk-G3JX3UAU.cjs} +12 -12
  89. package/dist/{chunk-QKAYRHWP.cjs.map → chunk-G3JX3UAU.cjs.map} +1 -1
  90. package/dist/chunk-G4D6CLBT.js +333 -0
  91. package/dist/chunk-G4D6CLBT.js.map +1 -0
  92. package/dist/{chunk-OMAACCFW.cjs → chunk-GD7EBGC4.cjs} +19 -19
  93. package/dist/{chunk-OMAACCFW.cjs.map → chunk-GD7EBGC4.cjs.map} +1 -1
  94. package/dist/{chunk-KREUYVMZ.js → chunk-GOALNQZ2.js} +13 -4
  95. package/dist/chunk-GOALNQZ2.js.map +1 -0
  96. package/dist/{chunk-CK3KLRNF.js → chunk-H4ZXMQQW.js} +3 -3
  97. package/dist/{chunk-CK3KLRNF.js.map → chunk-H4ZXMQQW.js.map} +1 -1
  98. package/dist/chunk-IT775BYG.js +179 -0
  99. package/dist/chunk-IT775BYG.js.map +1 -0
  100. package/dist/{chunk-AHINB2TP.cjs → chunk-IX6KFB3K.cjs} +9 -9
  101. package/dist/{chunk-AHINB2TP.cjs.map → chunk-IX6KFB3K.cjs.map} +1 -1
  102. package/dist/chunk-IXFC7LK2.cjs +174 -0
  103. package/dist/chunk-IXFC7LK2.cjs.map +1 -0
  104. package/dist/{chunk-VNAREBLV.cjs → chunk-J5CSLNCN.cjs} +3 -3
  105. package/dist/{chunk-VNAREBLV.cjs.map → chunk-J5CSLNCN.cjs.map} +1 -1
  106. package/dist/{chunk-MM7QKUE3.cjs → chunk-JID7AZTO.cjs} +5 -5
  107. package/dist/{chunk-MM7QKUE3.cjs.map → chunk-JID7AZTO.cjs.map} +1 -1
  108. package/dist/{chunk-E3KC2XLN.cjs → chunk-KQUI4BGS.cjs} +51 -51
  109. package/dist/{chunk-E3KC2XLN.cjs.map → chunk-KQUI4BGS.cjs.map} +1 -1
  110. package/dist/{chunk-ZB54MTMQ.js → chunk-KZFBQ7GY.js} +3 -3
  111. package/dist/{chunk-ZB54MTMQ.js.map → chunk-KZFBQ7GY.js.map} +1 -1
  112. package/dist/{chunk-XBXDUAIM.js → chunk-LL6IWKI3.js} +4 -4
  113. package/dist/{chunk-XBXDUAIM.js.map → chunk-LL6IWKI3.js.map} +1 -1
  114. package/dist/{chunk-ON4JULCA.js → chunk-LMBXJZLG.js} +3 -3
  115. package/dist/{chunk-ON4JULCA.js.map → chunk-LMBXJZLG.js.map} +1 -1
  116. package/dist/{chunk-ZX2XRFE5.js → chunk-MNILXWVY.js} +7 -7
  117. package/dist/{chunk-ZX2XRFE5.js.map → chunk-MNILXWVY.js.map} +1 -1
  118. package/dist/chunk-MWVW4APN.cjs +260 -0
  119. package/dist/chunk-MWVW4APN.cjs.map +1 -0
  120. package/dist/{chunk-WIAQQNFU.cjs → chunk-MYHV2ND3.cjs} +37 -3
  121. package/dist/chunk-MYHV2ND3.cjs.map +1 -0
  122. package/dist/{chunk-BZAGP5W6.cjs → chunk-N6IY47YA.cjs} +8 -8
  123. package/dist/{chunk-BZAGP5W6.cjs.map → chunk-N6IY47YA.cjs.map} +1 -1
  124. package/dist/{chunk-OCV33S5Q.cjs → chunk-NFKX6QJP.cjs} +3 -3
  125. package/dist/{chunk-OCV33S5Q.cjs.map → chunk-NFKX6QJP.cjs.map} +1 -1
  126. package/dist/{chunk-J644FU54.cjs → chunk-NGQRS7AW.cjs} +9 -3
  127. package/dist/chunk-NGQRS7AW.cjs.map +1 -0
  128. package/dist/{chunk-QAKASRE6.js → chunk-NJ6MY6V5.js} +4 -4
  129. package/dist/{chunk-QAKASRE6.js.map → chunk-NJ6MY6V5.js.map} +1 -1
  130. package/dist/{chunk-P52GA3GJ.cjs → chunk-NM7O7RY5.cjs} +4 -2
  131. package/dist/chunk-NM7O7RY5.cjs.map +1 -0
  132. package/dist/chunk-OCSCBB52.cjs +188 -0
  133. package/dist/chunk-OCSCBB52.cjs.map +1 -0
  134. package/dist/{chunk-OFUKTVBN.cjs → chunk-OD47TTAW.cjs} +9 -9
  135. package/dist/{chunk-OFUKTVBN.cjs.map → chunk-OD47TTAW.cjs.map} +1 -1
  136. package/dist/{chunk-QKFJDQEK.js → chunk-OE5CKRUC.js} +4 -4
  137. package/dist/{chunk-QKFJDQEK.js.map → chunk-OE5CKRUC.js.map} +1 -1
  138. package/dist/chunk-OGNADPM4.cjs +170 -0
  139. package/dist/chunk-OGNADPM4.cjs.map +1 -0
  140. package/dist/{chunk-MBWF36DJ.js → chunk-P2CA3XGI.js} +3 -3
  141. package/dist/{chunk-MBWF36DJ.js.map → chunk-P2CA3XGI.js.map} +1 -1
  142. package/dist/chunk-POWS35OT.js +152 -0
  143. package/dist/chunk-POWS35OT.js.map +1 -0
  144. package/dist/chunk-PYJDVWXM.js +237 -0
  145. package/dist/chunk-PYJDVWXM.js.map +1 -0
  146. package/dist/{chunk-MTZPVOP6.js → chunk-Q77TE5DZ.js} +4 -2
  147. package/dist/chunk-Q77TE5DZ.js.map +1 -0
  148. package/dist/{chunk-L5W7TJQ5.js → chunk-RJ6NTJHC.js} +4 -4
  149. package/dist/{chunk-L5W7TJQ5.js.map → chunk-RJ6NTJHC.js.map} +1 -1
  150. package/dist/{chunk-C3DUS2VE.cjs → chunk-RS5VA6QU.cjs} +3 -3
  151. package/dist/{chunk-C3DUS2VE.cjs.map → chunk-RS5VA6QU.cjs.map} +1 -1
  152. package/dist/{chunk-IGNWT6RP.js → chunk-S7WCHDBO.js} +4 -4
  153. package/dist/{chunk-IGNWT6RP.js.map → chunk-S7WCHDBO.js.map} +1 -1
  154. package/dist/{chunk-RXPEZXAB.cjs → chunk-SGFYA22I.cjs} +5 -5
  155. package/dist/{chunk-RXPEZXAB.cjs.map → chunk-SGFYA22I.cjs.map} +1 -1
  156. package/dist/chunk-SQJFBZ42.js +297 -0
  157. package/dist/chunk-SQJFBZ42.js.map +1 -0
  158. package/dist/chunk-SUS3WFY3.js +156 -0
  159. package/dist/chunk-SUS3WFY3.js.map +1 -0
  160. package/dist/{chunk-H4AVMUOC.cjs → chunk-TAXD5ADA.cjs} +4 -4
  161. package/dist/{chunk-H4AVMUOC.cjs.map → chunk-TAXD5ADA.cjs.map} +1 -1
  162. package/dist/{chunk-NHN6A3ZO.js → chunk-TMMVIUUN.js} +4 -4
  163. package/dist/{chunk-NHN6A3ZO.js.map → chunk-TMMVIUUN.js.map} +1 -1
  164. package/dist/chunk-TPWKM7JH.js +196 -0
  165. package/dist/chunk-TPWKM7JH.js.map +1 -0
  166. package/dist/chunk-TU63764L.cjs +158 -0
  167. package/dist/chunk-TU63764L.cjs.map +1 -0
  168. package/dist/{chunk-7KWNY3HG.js → chunk-TVTIGV7Q.js} +9 -9
  169. package/dist/{chunk-7KWNY3HG.js.map → chunk-TVTIGV7Q.js.map} +1 -1
  170. package/dist/{chunk-22CYDCXA.js → chunk-TZJQB4P2.js} +37 -4
  171. package/dist/chunk-TZJQB4P2.js.map +1 -0
  172. package/dist/{chunk-X5QRRMGB.cjs → chunk-UAMXCMST.cjs} +4 -4
  173. package/dist/{chunk-X5QRRMGB.cjs.map → chunk-UAMXCMST.cjs.map} +1 -1
  174. package/dist/{chunk-QAQOCS2J.js → chunk-UBOVDAD7.js} +3 -3
  175. package/dist/{chunk-QAQOCS2J.js.map → chunk-UBOVDAD7.js.map} +1 -1
  176. package/dist/{chunk-IGSIWNX3.cjs → chunk-UQ3VVR6A.cjs} +4 -4
  177. package/dist/{chunk-IGSIWNX3.cjs.map → chunk-UQ3VVR6A.cjs.map} +1 -1
  178. package/dist/chunk-URAQIF67.cjs +356 -0
  179. package/dist/chunk-URAQIF67.cjs.map +1 -0
  180. package/dist/{chunk-6QKMMKRY.cjs → chunk-UV2FVNWT.cjs} +5 -5
  181. package/dist/{chunk-6QKMMKRY.cjs.map → chunk-UV2FVNWT.cjs.map} +1 -1
  182. package/dist/{chunk-EG7XFZ3W.js → chunk-V7D3YGUV.js} +4 -4
  183. package/dist/{chunk-EG7XFZ3W.js.map → chunk-V7D3YGUV.js.map} +1 -1
  184. package/dist/{chunk-Y6DFMDMH.js → chunk-VILW53UZ.js} +3 -3
  185. package/dist/{chunk-Y6DFMDMH.js.map → chunk-VILW53UZ.js.map} +1 -1
  186. package/dist/chunk-VINZZQBD.cjs +323 -0
  187. package/dist/chunk-VINZZQBD.cjs.map +1 -0
  188. package/dist/{chunk-5WOB4UBD.js → chunk-VKELAMAZ.js} +3 -3
  189. package/dist/{chunk-5WOB4UBD.js.map → chunk-VKELAMAZ.js.map} +1 -1
  190. package/dist/{chunk-IINZWUGK.cjs → chunk-VNYW4C4J.cjs} +13 -4
  191. package/dist/chunk-VNYW4C4J.cjs.map +1 -0
  192. package/dist/{chunk-RD3JDFYJ.js → chunk-VOKVG3ER.js} +4 -4
  193. package/dist/{chunk-RD3JDFYJ.js.map → chunk-VOKVG3ER.js.map} +1 -1
  194. package/dist/chunk-VPTASZ2O.cjs +171 -0
  195. package/dist/chunk-VPTASZ2O.cjs.map +1 -0
  196. package/dist/{chunk-37UZHCLM.cjs → chunk-VPWJCJCX.cjs} +3 -3
  197. package/dist/{chunk-37UZHCLM.cjs.map → chunk-VPWJCJCX.cjs.map} +1 -1
  198. package/dist/{chunk-3RB35GYK.js → chunk-VU6UTJRM.js} +4 -4
  199. package/dist/{chunk-3RB35GYK.js.map → chunk-VU6UTJRM.js.map} +1 -1
  200. package/dist/{chunk-6SAYPXHX.js → chunk-WGPLUCBD.js} +4 -4
  201. package/dist/{chunk-6SAYPXHX.js.map → chunk-WGPLUCBD.js.map} +1 -1
  202. package/dist/{chunk-KLJGJJHN.cjs → chunk-WNZAYBVB.cjs} +49 -49
  203. package/dist/{chunk-KLJGJJHN.cjs.map → chunk-WNZAYBVB.cjs.map} +1 -1
  204. package/dist/{chunk-BVMABVC4.cjs → chunk-WWJIW2IH.cjs} +3 -3
  205. package/dist/{chunk-BVMABVC4.cjs.map → chunk-WWJIW2IH.cjs.map} +1 -1
  206. package/dist/{chunk-OYQ7GYAA.cjs → chunk-X4XPNTCZ.cjs} +12 -12
  207. package/dist/{chunk-OYQ7GYAA.cjs.map → chunk-X4XPNTCZ.cjs.map} +1 -1
  208. package/dist/chunk-XDIMTPZU.cjs +202 -0
  209. package/dist/chunk-XDIMTPZU.cjs.map +1 -0
  210. package/dist/{chunk-IFDC4TXM.cjs → chunk-XEAT7XJG.cjs} +4 -4
  211. package/dist/{chunk-IFDC4TXM.cjs.map → chunk-XEAT7XJG.cjs.map} +1 -1
  212. package/dist/{chunk-S3BCHPXT.cjs → chunk-XI34EGK5.cjs} +9 -9
  213. package/dist/{chunk-S3BCHPXT.cjs.map → chunk-XI34EGK5.cjs.map} +1 -1
  214. package/dist/chunk-XVW5DPPP.js +429 -0
  215. package/dist/chunk-XVW5DPPP.js.map +1 -0
  216. package/dist/chunk-XZNN3S3S.cjs +281 -0
  217. package/dist/chunk-XZNN3S3S.cjs.map +1 -0
  218. package/dist/chunk-Y4QNLW7W.js +300 -0
  219. package/dist/chunk-Y4QNLW7W.js.map +1 -0
  220. package/dist/chunk-Y5HFM7LO.js +310 -0
  221. package/dist/chunk-Y5HFM7LO.js.map +1 -0
  222. package/dist/{chunk-LECJMLNE.js → chunk-YQDA366U.js} +3 -3
  223. package/dist/{chunk-LECJMLNE.js.map → chunk-YQDA366U.js.map} +1 -1
  224. package/dist/{chunk-PHK4XBO5.js → chunk-Z5V7SAZ4.js} +4 -4
  225. package/dist/{chunk-PHK4XBO5.js.map → chunk-Z5V7SAZ4.js.map} +1 -1
  226. package/dist/{chunk-TZX76ZNZ.js → chunk-ZGRCSNPK.js} +5 -5
  227. package/dist/{chunk-TZX76ZNZ.js.map → chunk-ZGRCSNPK.js.map} +1 -1
  228. package/dist/{chunk-AZP3DDBT.cjs → chunk-ZPSJ2UV6.cjs} +8 -8
  229. package/dist/{chunk-AZP3DDBT.cjs.map → chunk-ZPSJ2UV6.cjs.map} +1 -1
  230. package/dist/{chunk-SRA2L3SQ.cjs → chunk-ZSGEGISB.cjs} +4 -4
  231. package/dist/{chunk-SRA2L3SQ.cjs.map → chunk-ZSGEGISB.cjs.map} +1 -1
  232. package/dist/components/AlertDialog/index.cjs +6 -6
  233. package/dist/components/AlertDialog/index.js +5 -5
  234. package/dist/components/Autocomplete/index.cjs +3 -3
  235. package/dist/components/Autocomplete/index.js +2 -2
  236. package/dist/components/BoardView/index.cjs +24 -0
  237. package/dist/components/BoardView/index.cjs.map +1 -0
  238. package/dist/components/BoardView/index.d.cts +42 -0
  239. package/dist/components/BoardView/index.d.ts +42 -0
  240. package/dist/components/BoardView/index.js +7 -0
  241. package/dist/components/BoardView/index.js.map +1 -0
  242. package/dist/components/Button/index.cjs +3 -3
  243. package/dist/components/Button/index.d.cts +3 -0
  244. package/dist/components/Button/index.d.ts +3 -0
  245. package/dist/components/Button/index.js +1 -1
  246. package/dist/components/CalendarView/index.cjs +22 -0
  247. package/dist/components/CalendarView/index.cjs.map +1 -0
  248. package/dist/components/CalendarView/index.d.cts +40 -0
  249. package/dist/components/CalendarView/index.d.ts +40 -0
  250. package/dist/components/CalendarView/index.js +9 -0
  251. package/dist/components/CalendarView/index.js.map +1 -0
  252. package/dist/components/Collapsible/index.cjs +5 -5
  253. package/dist/components/Collapsible/index.js +2 -2
  254. package/dist/components/CountryCodeDropdown/index.cjs +6 -6
  255. package/dist/components/CountryCodeDropdown/index.js +3 -3
  256. package/dist/components/CustomizableDashboard/index.cjs +11 -11
  257. package/dist/components/CustomizableDashboard/index.js +4 -4
  258. package/dist/components/DateInput/index.cjs +4 -4
  259. package/dist/components/DateInput/index.js +3 -3
  260. package/dist/components/Dropdown/index.cjs +11 -11
  261. package/dist/components/Dropdown/index.js +4 -4
  262. package/dist/components/FloatingWindow/index.cjs +4 -4
  263. package/dist/components/FloatingWindow/index.js +2 -2
  264. package/dist/components/GanttView/index.cjs +20 -0
  265. package/dist/components/GanttView/index.cjs.map +1 -0
  266. package/dist/components/GanttView/index.d.cts +37 -0
  267. package/dist/components/GanttView/index.d.ts +37 -0
  268. package/dist/components/GanttView/index.js +7 -0
  269. package/dist/components/GanttView/index.js.map +1 -0
  270. package/dist/components/GlossaryTooltip/index.cjs +4 -4
  271. package/dist/components/GlossaryTooltip/index.js +3 -3
  272. package/dist/components/KeyboardShortcutsOverlay/index.cjs +6 -6
  273. package/dist/components/KeyboardShortcutsOverlay/index.js +4 -4
  274. package/dist/components/ListView/index.cjs +22 -0
  275. package/dist/components/ListView/index.cjs.map +1 -0
  276. package/dist/components/ListView/index.d.cts +37 -0
  277. package/dist/components/ListView/index.d.ts +37 -0
  278. package/dist/components/ListView/index.js +9 -0
  279. package/dist/components/ListView/index.js.map +1 -0
  280. package/dist/components/Markdown/index.cjs +19 -19
  281. package/dist/components/Markdown/index.js +7 -7
  282. package/dist/components/MediaEditor/index.cjs +16 -16
  283. package/dist/components/MediaEditor/index.js +11 -11
  284. package/dist/components/MediaPlayer/index.cjs +6 -6
  285. package/dist/components/MediaPlayer/index.js +3 -3
  286. package/dist/components/MegaMenu/index.cjs +23 -0
  287. package/dist/components/MegaMenu/index.cjs.map +1 -0
  288. package/dist/components/MegaMenu/index.d.cts +106 -0
  289. package/dist/components/MegaMenu/index.d.ts +106 -0
  290. package/dist/components/MegaMenu/index.js +6 -0
  291. package/dist/components/MegaMenu/index.js.map +1 -0
  292. package/dist/components/Modal/index.cjs +11 -11
  293. package/dist/components/Modal/index.js +3 -3
  294. package/dist/components/OrbitRing/index.cjs +14 -0
  295. package/dist/components/OrbitRing/index.cjs.map +1 -0
  296. package/dist/components/OrbitRing/index.d.cts +64 -0
  297. package/dist/components/OrbitRing/index.d.ts +64 -0
  298. package/dist/components/OrbitRing/index.js +5 -0
  299. package/dist/components/OrbitRing/index.js.map +1 -0
  300. package/dist/components/QuickAction/index.d.cts +1 -1
  301. package/dist/components/QuickAction/index.d.ts +1 -1
  302. package/dist/components/RadialExplorer/index.cjs +18 -0
  303. package/dist/components/RadialExplorer/index.cjs.map +1 -0
  304. package/dist/components/RadialExplorer/index.d.cts +83 -0
  305. package/dist/components/RadialExplorer/index.d.ts +83 -0
  306. package/dist/components/RadialExplorer/index.js +9 -0
  307. package/dist/components/RadialExplorer/index.js.map +1 -0
  308. package/dist/components/RichTextEditor/index.cjs +9 -9
  309. package/dist/components/RichTextEditor/index.js +6 -6
  310. package/dist/components/SectionSpyNav/index.cjs +4 -4
  311. package/dist/components/SectionSpyNav/index.js +3 -3
  312. package/dist/components/Select/index.cjs +5 -5
  313. package/dist/components/Select/index.js +3 -3
  314. package/dist/components/Sheet/index.cjs +11 -11
  315. package/dist/components/Sheet/index.js +2 -2
  316. package/dist/components/SliderCalculator/index.cjs +20 -0
  317. package/dist/components/SliderCalculator/index.cjs.map +1 -0
  318. package/dist/components/SliderCalculator/index.d.cts +100 -0
  319. package/dist/components/SliderCalculator/index.d.ts +100 -0
  320. package/dist/components/SliderCalculator/index.js +7 -0
  321. package/dist/components/SliderCalculator/index.js.map +1 -0
  322. package/dist/components/SourceTip/index.cjs +4 -4
  323. package/dist/components/SourceTip/index.js +3 -3
  324. package/dist/components/SuperChat/index.cjs +454 -279
  325. package/dist/components/SuperChat/index.cjs.map +1 -1
  326. package/dist/components/SuperChat/index.js +444 -269
  327. package/dist/components/SuperChat/index.js.map +1 -1
  328. package/dist/components/SuperChat/plugins/index.cjs +8 -8
  329. package/dist/components/SuperChat/plugins/index.js +7 -7
  330. package/dist/components/ThemeProvider/index.cjs +9 -9
  331. package/dist/components/ThemeProvider/index.js +3 -3
  332. package/dist/components/Tooltip/index.cjs +3 -3
  333. package/dist/components/Tooltip/index.js +2 -2
  334. package/dist/components/VideoCard/index.cjs +21 -0
  335. package/dist/components/VideoCard/index.cjs.map +1 -0
  336. package/dist/components/VideoCard/index.d.cts +75 -0
  337. package/dist/components/VideoCard/index.d.ts +75 -0
  338. package/dist/components/VideoCard/index.js +8 -0
  339. package/dist/components/VideoCard/index.js.map +1 -0
  340. package/dist/components/ViewSet/index.cjs +23 -0
  341. package/dist/components/ViewSet/index.cjs.map +1 -0
  342. package/dist/components/ViewSet/index.d.cts +89 -0
  343. package/dist/components/ViewSet/index.d.ts +89 -0
  344. package/dist/components/ViewSet/index.js +14 -0
  345. package/dist/components/ViewSet/index.js.map +1 -0
  346. package/dist/components/ViewSwitcher/index.cjs +20 -0
  347. package/dist/components/ViewSwitcher/index.cjs.map +1 -0
  348. package/dist/components/ViewSwitcher/index.d.cts +40 -0
  349. package/dist/components/ViewSwitcher/index.d.ts +40 -0
  350. package/dist/components/ViewSwitcher/index.js +7 -0
  351. package/dist/components/ViewSwitcher/index.js.map +1 -0
  352. package/dist/components/YearTimeline/index.cjs +26 -0
  353. package/dist/components/YearTimeline/index.cjs.map +1 -0
  354. package/dist/components/YearTimeline/index.d.cts +82 -0
  355. package/dist/components/YearTimeline/index.d.ts +82 -0
  356. package/dist/components/YearTimeline/index.js +5 -0
  357. package/dist/components/YearTimeline/index.js.map +1 -0
  358. package/dist/datavis.cjs +2 -2
  359. package/dist/datavis.js +1 -1
  360. package/dist/enterprise-health-ITUNXDIW.js +4 -0
  361. package/dist/{enterprise-health-CWLUB77O.js.map → enterprise-health-ITUNXDIW.js.map} +1 -1
  362. package/dist/enterprise-health-UHHPVPU6.cjs +19 -0
  363. package/dist/{enterprise-health-75VYWAVG.cjs.map → enterprise-health-UHHPVPU6.cjs.map} +1 -1
  364. package/dist/esheet.cjs +18 -18
  365. package/dist/esheet.js +15 -15
  366. package/dist/globe.cjs +306 -0
  367. package/dist/globe.cjs.map +1 -0
  368. package/dist/globe.d.cts +99 -0
  369. package/dist/globe.d.ts +99 -0
  370. package/dist/globe.js +279 -0
  371. package/dist/globe.js.map +1 -0
  372. package/dist/hooks/index.cjs +38 -24
  373. package/dist/hooks/index.d.cts +141 -1
  374. package/dist/hooks/index.d.ts +141 -1
  375. package/dist/hooks/index.js +6 -4
  376. package/dist/index.cjs +1510 -1205
  377. package/dist/index.cjs.map +1 -1
  378. package/dist/index.d.cts +97 -25
  379. package/dist/index.d.ts +97 -25
  380. package/dist/index.js +546 -379
  381. package/dist/index.js.map +1 -1
  382. package/dist/kerebron.cjs +58 -19
  383. package/dist/kerebron.cjs.map +1 -1
  384. package/dist/kerebron.d.cts +37 -0
  385. package/dist/kerebron.d.ts +37 -0
  386. package/dist/kerebron.js +58 -19
  387. package/dist/kerebron.js.map +1 -1
  388. package/dist/{speaker-verify-5GTWAN5Y.cjs → speaker-verify-4NEJAK6C.cjs} +57 -90
  389. package/dist/speaker-verify-4NEJAK6C.cjs.map +1 -0
  390. package/dist/{speaker-verify-R67P433H.js → speaker-verify-AWSKI6DI.js} +57 -90
  391. package/dist/speaker-verify-AWSKI6DI.js.map +1 -0
  392. package/dist/styles/effects.css +128 -0
  393. package/dist/styles/init.css +15 -0
  394. package/dist/styles.css +1 -1
  395. package/dist/tailwind-preset.cjs +4 -4
  396. package/dist/tailwind-preset.js +1 -1
  397. package/dist/types-CbWXIKbe.d.cts +119 -0
  398. package/dist/types-CbWXIKbe.d.ts +119 -0
  399. package/dist/utils/index.cjs +5 -5
  400. package/dist/utils/index.js +1 -1
  401. package/package.json +28 -2
  402. package/dist/CsvBlock-CVYA3HYS.cjs +0 -16
  403. package/dist/CsvBlock-SM4NKSHA.js +0 -7
  404. package/dist/HtmlPreviewBlock-FAMF4W24.js +0 -7
  405. package/dist/HtmlPreviewBlock-JF454L2L.cjs +0 -16
  406. package/dist/MermaidBlock-7V5G4K5A.js +0 -7
  407. package/dist/MermaidBlock-FR5SQX4Q.cjs +0 -16
  408. package/dist/SurveyBlock-6K2POV7S.js +0 -7
  409. package/dist/SurveyBlock-MCJVWR7H.cjs +0 -16
  410. package/dist/chunk-22CYDCXA.js.map +0 -1
  411. package/dist/chunk-IINZWUGK.cjs.map +0 -1
  412. package/dist/chunk-J644FU54.cjs.map +0 -1
  413. package/dist/chunk-KREUYVMZ.js.map +0 -1
  414. package/dist/chunk-MTZPVOP6.js.map +0 -1
  415. package/dist/chunk-P52GA3GJ.cjs.map +0 -1
  416. package/dist/chunk-PY7XAG4D.cjs.map +0 -1
  417. package/dist/chunk-WIAQQNFU.cjs.map +0 -1
  418. package/dist/chunk-WOYUQ4AT.js.map +0 -1
  419. package/dist/chunk-X5YM3KXY.js.map +0 -1
  420. package/dist/enterprise-health-75VYWAVG.cjs +0 -19
  421. package/dist/enterprise-health-CWLUB77O.js +0 -4
  422. package/dist/speaker-verify-5GTWAN5Y.cjs.map +0 -1
  423. package/dist/speaker-verify-R67P433H.js.map +0 -1
@@ -1,3 +1,6 @@
1
+ import { voiceprintStorageKey, clearVoiceprints, setVoiceprints, getVoiceprints } from './chunk-74ENCTIK.js';
2
+ import './chunk-PX6F3LHL.js';
3
+
1
4
  // src/components/AI/HeyOzwell/SpeakerVerify/lib/speaker-verify.js
2
5
  (function() {
3
6
  const SV_DIR = (function() {
@@ -23,7 +26,7 @@
23
26
  return "https://huggingface.co/jlocala/ozwell-voice-assets/resolve/main/sv-runtime";
24
27
  })();
25
28
  const MODEL = "./nemo_en_titanet_small.onnx";
26
- const LS_KEY = "ozwellDoctorVoiceprint";
29
+ const BASE_STORAGE_KEY = "ozwellDoctorVoiceprint";
27
30
  const DEFAULT_THRESHOLD = 0.45;
28
31
  let Module = null, handle = 0, dim = 0;
29
32
  let cohort = [];
@@ -70,74 +73,41 @@
70
73
  for (let i = 0; i < n; i++) d += a[i] * b[i];
71
74
  return d;
72
75
  }
73
- const IDB_DB = "ozwell-voice", IDB_STORE = "voiceprints";
74
- function idbOpen() {
75
- return new Promise((resolve, reject) => {
76
- const req = indexedDB.open(IDB_DB, 1);
77
- req.onupgradeneeded = () => {
78
- if (!req.result.objectStoreNames.contains(IDB_STORE)) req.result.createObjectStore(IDB_STORE);
79
- };
80
- req.onsuccess = () => resolve(req.result);
81
- req.onerror = () => reject(req.error);
82
- });
83
- }
84
- function idbReq(mode, run) {
85
- return idbOpen().then((db) => new Promise((resolve, reject) => {
86
- const tx = db.transaction(IDB_STORE, mode);
87
- const r = run(tx.objectStore(IDB_STORE));
88
- tx.oncomplete = () => {
89
- resolve(r && r.result);
90
- db.close();
91
- };
92
- tx.onerror = () => {
93
- reject(tx.error);
94
- db.close();
95
- };
96
- tx.onabort = () => {
97
- reject(tx.error);
98
- db.close();
99
- };
100
- }));
101
- }
102
- const idbGet = (key) => idbReq("readonly", (s) => s.get(key));
103
- const idbPut = (key, v) => idbReq("readwrite", (s) => s.put(v, key));
104
- const idbDel = (key) => idbReq("readwrite", (s) => s.delete(key));
105
- let _store = null;
76
+ const stores = /* @__PURE__ */ new Map();
77
+ const hydrations = /* @__PURE__ */ new Map();
106
78
  const normalizeWho = (o) => o && Array.isArray(o.centroid) ? {} : o || {};
107
- async function hydrateStore() {
79
+ async function hydrateStore(namespace) {
80
+ const storageKey = voiceprintStorageKey(BASE_STORAGE_KEY, namespace);
81
+ if (stores.has(storageKey)) return;
82
+ const pending = hydrations.get(storageKey);
83
+ if (pending) return pending;
84
+ const hydration = getVoiceprints(
85
+ storageKey,
86
+ namespace === void 0 ? (raw) => normalizeWho(JSON.parse(raw || "{}")) : void 0
87
+ ).then((value) => {
88
+ stores.set(storageKey, value || {});
89
+ });
90
+ hydrations.set(storageKey, hydration);
108
91
  try {
109
- let v = await idbGet(LS_KEY);
110
- if (v === void 0) {
111
- let raw = null;
112
- try {
113
- raw = localStorage.getItem(LS_KEY);
114
- } catch (e) {
115
- }
116
- if (raw != null) {
117
- v = normalizeWho(JSON.parse(raw || "{}"));
118
- await idbPut(LS_KEY, v);
119
- try {
120
- localStorage.removeItem(LS_KEY);
121
- } catch (e) {
122
- }
123
- }
124
- }
125
- _store = v || {};
126
- } catch (e) {
127
- _store = _store || {};
92
+ await hydration;
93
+ } finally {
94
+ hydrations.delete(storageKey);
128
95
  }
129
96
  }
130
- function loadAll() {
131
- if (_store) return _store;
97
+ function loadAll(namespace) {
98
+ const storageKey = voiceprintStorageKey(BASE_STORAGE_KEY, namespace);
99
+ if (stores.has(storageKey)) return stores.get(storageKey);
100
+ if (namespace !== void 0) return {};
132
101
  try {
133
- return normalizeWho(JSON.parse(localStorage.getItem(LS_KEY) || "{}"));
102
+ return normalizeWho(JSON.parse(localStorage.getItem(BASE_STORAGE_KEY) || "{}"));
134
103
  } catch (e) {
135
104
  return {};
136
105
  }
137
106
  }
138
- function saveAll(obj) {
139
- _store = obj;
140
- idbPut(LS_KEY, obj).catch((e) => console.warn("SV save failed", e));
107
+ function saveAll(obj, namespace) {
108
+ const storageKey = voiceprintStorageKey(BASE_STORAGE_KEY, namespace);
109
+ stores.set(storageKey, obj);
110
+ void setVoiceprints(storageKey, obj);
141
111
  }
142
112
  const DEFAULT_VOICE_ID = "you";
143
113
  function normPhrase(o) {
@@ -147,14 +117,15 @@
147
117
  if (Array.isArray(o.centroid)) return { voices: { [DEFAULT_VOICE_ID]: { label: "You", createdAt: 0, centroids: [o.centroid] } } };
148
118
  return { voices: {} };
149
119
  }
150
- function allCentroids(phrase) {
151
- const voices = normPhrase(loadAll()[phrase]).voices;
120
+ function allCentroids(phrase, namespace) {
121
+ const voices = normPhrase(loadAll(namespace)[phrase]).voices;
152
122
  const out = [];
153
123
  for (const id in voices) for (const c of voices[id].centroids || []) out.push(Float32Array.from(c));
154
124
  return out;
155
125
  }
156
126
  const SpeakerVerify = {
157
127
  ready: () => readyPromise,
128
+ loadNamespace: (namespace) => hydrateStore(namespace),
158
129
  isLoaded: () => handle !== 0,
159
130
  threshold: DEFAULT_THRESHOLD,
160
131
  // AS-norm (score normalization): normalize the raw cosine against a crowd of other voices, so the
@@ -170,7 +141,7 @@
170
141
  /** Enroll a VOICE for a phrase from N utterances → one condition-centroid under opts.voiceId
171
142
  * (default "you"). opts.append ADDS it as another condition for that voice; otherwise it replaces
172
143
  * that voice's conditions. opts.label names the voice. Capped to the most recent SV_CENTROID_CAP. */
173
- enroll(phrase, utterances, opts) {
144
+ enroll(phrase, utterances, opts, namespace) {
174
145
  if (!handle) throw new Error("SpeakerVerify not ready");
175
146
  const voiceId = opts && opts.voiceId || DEFAULT_VOICE_ID;
176
147
  const embs = utterances.map((u) => computeEmbedding(u.samples, u.sampleRate));
@@ -178,7 +149,7 @@
178
149
  for (const e of embs) for (let i = 0; i < dim; i++) c[i] += e[i];
179
150
  for (let i = 0; i < dim; i++) c[i] /= embs.length;
180
151
  l2normalize(c);
181
- const all = loadAll();
152
+ const all = loadAll(namespace);
182
153
  const entry = normPhrase(all[phrase]);
183
154
  const prevVoice = entry.voices[voiceId];
184
155
  const prev = opts && opts.append && prevVoice && Array.isArray(prevVoice.centroids) ? prevVoice.centroids.map((x) => Float32Array.from(x)) : [];
@@ -190,12 +161,12 @@
190
161
  centroids
191
162
  };
192
163
  all[phrase] = entry;
193
- saveAll(all);
164
+ saveAll(all, namespace);
194
165
  return { n: embs.length, conditions: centroids.length, voiceId };
195
166
  },
196
167
  /** Verify a live utterance against the BEST condition-centroid across ALL enrolled voices. */
197
- verify(phrase, samples, sampleRate) {
198
- const cents = allCentroids(phrase);
168
+ verify(phrase, samples, sampleRate, namespace) {
169
+ const cents = allCentroids(phrase, namespace);
199
170
  if (!cents.length) return { score: 0, znorm: null, pass: false, enrolled: false };
200
171
  const live = computeEmbedding(samples, sampleRate);
201
172
  let score = -1;
@@ -218,7 +189,7 @@
218
189
  return { score, znorm, pass, enrolled: true };
219
190
  },
220
191
  /** How many conditions are enrolled for a phrase, across ALL voices (0 = none). */
221
- conditionCount: (phrase) => allCentroids(phrase).length,
192
+ conditionCount: (phrase, namespace) => allCentroids(phrase, namespace).length,
222
193
  /** TitaNet speaker embedding for a raw utterance (Float32 + true sample rate). For diarization /
223
194
  * clustering. Returns the L2-normalized embedding, or null if the runtime isn't ready. */
224
195
  embed(samples, sampleRate) {
@@ -227,10 +198,10 @@
227
198
  /** Best-matching ENROLLED voice for a live utterance, across all voices + phrases (text-independent,
228
199
  * so conversational audio works). Returns { voiceId, label, score } (max cosine) or null if nothing
229
200
  * enrolled / not ready. The caller applies a threshold to decide whether to trust the name. */
230
- identify(samples, sampleRate) {
201
+ identify(samples, sampleRate, namespace) {
231
202
  if (!handle) return null;
232
203
  const live = computeEmbedding(samples, sampleRate);
233
- const all = loadAll();
204
+ const all = loadAll(namespace);
234
205
  const best = {};
235
206
  for (const phrase in all) {
236
207
  const voices = normPhrase(all[phrase]).voices;
@@ -248,8 +219,8 @@
248
219
  return top;
249
220
  },
250
221
  /** List enrolled voices aggregated across phrases: [{ id, label, createdAt, conditions }]. */
251
- listVoices() {
252
- const all = loadAll();
222
+ listVoices(namespace) {
223
+ const all = loadAll(namespace);
253
224
  const acc = {};
254
225
  for (const phrase in all) {
255
226
  const voices = normPhrase(all[phrase]).voices;
@@ -268,8 +239,8 @@
268
239
  },
269
240
  /** Remove a voice across all phrases — revokes that person's WHO match (the WHAT phrase-prints,
270
241
  * which are shared/speaker-independent, are left in voiceprintStore). */
271
- removeVoice(voiceId) {
272
- const all = loadAll();
242
+ removeVoice(voiceId, namespace) {
243
+ const all = loadAll(namespace);
273
244
  let changed = false;
274
245
  for (const phrase in all) {
275
246
  const entry = normPhrase(all[phrase]);
@@ -279,11 +250,11 @@
279
250
  changed = true;
280
251
  }
281
252
  }
282
- if (changed) saveAll(all);
253
+ if (changed) saveAll(all, namespace);
283
254
  },
284
255
  /** Rename a voice across all phrases. */
285
- renameVoice(voiceId, label) {
286
- const all = loadAll();
256
+ renameVoice(voiceId, label, namespace) {
257
+ const all = loadAll(namespace);
287
258
  let changed = false;
288
259
  for (const phrase in all) {
289
260
  const entry = normPhrase(all[phrase]);
@@ -293,19 +264,15 @@
293
264
  changed = true;
294
265
  }
295
266
  }
296
- if (changed) saveAll(all);
267
+ if (changed) saveAll(all, namespace);
297
268
  },
298
269
  // hasEnrollment(phrase) -> is that phrase enrolled; hasEnrollment() -> is anything enrolled.
299
- hasEnrollment: (phrase) => phrase ? allCentroids(phrase).length > 0 : Object.keys(loadAll()).some((p) => allCentroids(p).length > 0),
300
- enrolledPhrases: () => Object.keys(loadAll()),
301
- clearEnrollment: () => {
302
- _store = {};
303
- idbDel(LS_KEY).catch(() => {
304
- });
305
- try {
306
- localStorage.removeItem(LS_KEY);
307
- } catch (e) {
308
- }
270
+ hasEnrollment: (phrase, namespace) => phrase ? allCentroids(phrase, namespace).length > 0 : Object.keys(loadAll(namespace)).some((p) => allCentroids(p, namespace).length > 0),
271
+ enrolledPhrases: (namespace) => Object.keys(loadAll(namespace)),
272
+ clearEnrollment: (namespace) => {
273
+ const storageKey = voiceprintStorageKey(BASE_STORAGE_KEY, namespace);
274
+ stores.set(storageKey, {});
275
+ void clearVoiceprints(storageKey);
309
276
  }
310
277
  };
311
278
  async function init() {
@@ -351,5 +318,5 @@
351
318
  if (document.readyState === "loading") document.addEventListener("DOMContentLoaded", init);
352
319
  else init();
353
320
  })();
354
- //# sourceMappingURL=speaker-verify-R67P433H.js.map
355
- //# sourceMappingURL=speaker-verify-R67P433H.js.map
321
+ //# sourceMappingURL=speaker-verify-AWSKI6DI.js.map
322
+ //# sourceMappingURL=speaker-verify-AWSKI6DI.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/AI/HeyOzwell/SpeakerVerify/lib/speaker-verify.js"],"names":[],"mappings":"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","file":"speaker-verify-AWSKI6DI.js","sourcesContent":["import {\n clearVoiceprints,\n getVoiceprints,\n setVoiceprints,\n voiceprintStorageKey,\n} from '../../../voiceprintStore';\n\n/**\n * On-device speaker-verification gate (the \"only the enrolled doctor can wake it\" layer).\n *\n * Loads the custom single-threaded sherpa-onnx WASM build (in /sv-wasm/) that exports the\n * SpeakerEmbeddingExtractor C-API, runs TitaNet speaker embeddings fully in-browser, and\n * verifies a live utterance against enrolled per-voice centroids stored in IndexedDB (db `ozwell-voice`,\n * migrated from the old localStorage format on first read).\n *\n * Proven in the /sv-wasm/ spike: a ~1s \"hey ozwell\" gives genuine cosine ~0.66 / impostor\n * ~0.30 (enroll-centroid: ~0.75 vs ~0.22, EER ~1.3%). This is a DIFFERENT axis from the\n * content voiceprint in hey-buddy.js: that BOOSTS the doctor's accented phrase (recall);\n * this BLOCKS a non-doctor's clean phrase (act/no-act). They compose.\n *\n * Loaded via dynamic import by the `useSpeakerVerify` hook (NOT a classic <script>). Exposes window.SpeakerVerify.\n * Audio in == Float32Array; pass its TRUE sample rate (sherpa resamples to 16k internally).\n */\n(function () {\n // Production runtime artifacts live in their OWN folder so they never clobber the\n // frozen feasibility proof in /sv-wasm (test.html + mic-test.html, kept for the\n // progression demo / YouTube short). This loads the single-threaded slim build.\n // Where the sherpa runtime (.js glue + .wasm + .data) and the AS-norm cohort are served from.\n // Default \"/sv-runtime\" (Storybook static dir). Set window.__ozwellAssets (a base URL string, or\n // { base, svRuntime }) to fetch the ~50 MB off the repo from a host — see AI/MODEL-HOSTING.md.\n const SV_DIR = (function () {\n // Storybook runs in an iframe; a console-set window.__ozwellAssets often lands on the parent frame,\n // so check current -> parent -> top (all same-origin).\n var pick = function (w) { try { return w && w.__ozwellAssets; } catch (e) { return null; } };\n var g = (typeof window !== \"undefined\") ? (pick(window) || pick(window.parent) || pick(window.top)) : null;\n var strip = function (s) { return String(s).replace(/\\/$/, \"\"); };\n if (typeof g === \"string\") return strip(g) + \"/sv-runtime\";\n if (g && g.svRuntime) return strip(g.svRuntime);\n if (g && g.base) return strip(g.base) + \"/sv-runtime\";\n // localStorage fallback — shared across Storybook frames, survives reload (the reliable path).\n try { var ls = localStorage.getItem(\"ozwellAssetBase\"); if (ls) return strip(ls) + \"/sv-runtime\"; } catch (e) { /* ignore */ }\n // Default host: the runtime was moved off the repo (see AI/MODEL-HOSTING.md) so a fresh clone\n // fetches it from here with no config. Override via window.__ozwellAssets / localStorage.\n return \"https://huggingface.co/jlocala/ozwell-voice-assets/resolve/main/sv-runtime\";\n })();\n const MODEL = \"./nemo_en_titanet_small.onnx\"; // preloaded into the WASM filesystem\n const BASE_STORAGE_KEY = \"ozwellDoctorVoiceprint\"; // { centroid: number[], n: number }\n // Threshold from the spike's enroll-centroid distributions (genuine ~0.75 / impostor ~0.22).\n // 0.45 (2026-06-22): with mic DSP on + matched enrollment the genuine doctor scores ~0.75-0.93 clean,\n // so 0.45 passes with wide margin and rejects impostors harder. Heavy background can still drag the doctor\n // toward ~0.4 (then 0.45 rejects -> \"say it again\", a fail-safe miss in an unrealistic-noise case).\n // Re-tune live: window.SpeakerVerify.threshold = 0.4 / 0.35 for heavy noise (don't go below ~0.3 — impostors).\n const DEFAULT_THRESHOLD = 0.45;\n\n let Module = null, handle = 0, dim = 0;\n let cohort = []; // AS-norm crowd: other-voice embeddings; live/centroid scored against it cancels channel\n let readyResolve, readyReject;\n const readyPromise = new Promise((res, rej) => { readyResolve = res; readyReject = rej; });\n\n function loadScript(src) {\n return new Promise((res, rej) => {\n const s = document.createElement(\"script\");\n s.src = src; s.onload = res; s.onerror = () => rej(new Error(\"failed to load \" + src));\n document.head.appendChild(s);\n });\n }\n\n // --- speaker-embedding extraction over the WASM C-API (names confirmed from the build) ---\n function computeEmbedding(samples, sampleRate) {\n const M = Module;\n const stream = M._SherpaOnnxSpeakerEmbeddingExtractorCreateStream(handle);\n const ptr = M._malloc(samples.length * 4);\n M.HEAPF32.set(samples, ptr / 4);\n M._SherpaOnnxOnlineStreamAcceptWaveform(stream, sampleRate, ptr, samples.length); // stream-only\n M._free(ptr);\n M._SherpaOnnxOnlineStreamInputFinished(stream);\n const ep = M._SherpaOnnxSpeakerEmbeddingExtractorComputeEmbedding(handle, stream);\n const out = M.HEAPF32.subarray(ep / 4, ep / 4 + dim).slice();\n // free the embedding (exported in the slim rebuild); guard in case it's absent.\n if (M._SherpaOnnxSpeakerEmbeddingExtractorDestroyEmbedding) {\n M._SherpaOnnxSpeakerEmbeddingExtractorDestroyEmbedding(ep);\n }\n M._SherpaOnnxDestroyOnlineStream(stream);\n return l2normalize(out);\n }\n\n function l2normalize(v) {\n let s = 0; for (let i = 0; i < v.length; i++) s += v[i] * v[i];\n s = Math.sqrt(s); if (s > 0) for (let i = 0; i < v.length; i++) v[i] /= s;\n return v;\n }\n function cosine(a, b) { let d = 0; const n = Math.min(a.length, b.length); for (let i = 0; i < n; i++) d += a[i] * b[i]; return d; } // both L2-normalized\n\n // --- enrollment storage: PER-PHRASE centroids of the doctor's embeddings (vectors, not\n // audio). Per-phrase because on a ~1s clip a speaker embedding still carries a little of\n // WHAT was said, so the doctor's \"hey ozwell\" centroid scores their \"ozwell i'm done\"\n // too low. We enroll + gate each phrase against its own centroid. ---\n const stores = new Map(); // in-memory WHO maps, hydrated per namespace before use\n const hydrations = new Map(); // one IndexedDB read per namespace, shared by concurrent hooks\n // Ignore the old single-centroid format ({centroid, n}) from earlier builds.\n const normalizeWho = (o) => (o && Array.isArray(o.centroid)) ? {} : (o || {});\n\n async function hydrateStore(namespace) {\n const storageKey = voiceprintStorageKey(BASE_STORAGE_KEY, namespace);\n if (stores.has(storageKey)) return;\n const pending = hydrations.get(storageKey);\n if (pending) return pending;\n const hydration = getVoiceprints(\n storageKey,\n namespace === undefined ? (raw) => normalizeWho(JSON.parse(raw || \"{}\")) : undefined\n ).then((value) => {\n stores.set(storageKey, value || {});\n });\n hydrations.set(storageKey, hydration);\n try {\n await hydration;\n } finally {\n hydrations.delete(storageKey);\n }\n }\n function loadAll(namespace) {\n const storageKey = voiceprintStorageKey(BASE_STORAGE_KEY, namespace);\n if (stores.has(storageKey)) return stores.get(storageKey);\n // Pre-hydration fallback (verify/enroll only run after ready(), which awaits hydrateStore).\n if (namespace !== undefined) return {};\n try { return normalizeWho(JSON.parse(localStorage.getItem(BASE_STORAGE_KEY) || \"{}\")); } catch (e) { return {}; }\n }\n function saveAll(obj, namespace) {\n const storageKey = voiceprintStorageKey(BASE_STORAGE_KEY, namespace);\n stores.set(storageKey, obj);\n void setVoiceprints(storageKey, obj);\n }\n // Multi-VOICE, multi-condition: each phrase stores a map of voices, each with a LIST of condition\n // centroids. Verify passes if ANY voice's ANY condition matches (so the doctor AND an enrolled\n // assistant both wake it; adding \"across the room\"/\"with background\" extends a voice's coverage).\n // Backward-compatible: legacy flat shapes ({centroids} / {centroid}) normalize to a default \"You\" voice.\n const SV_CENTROID_CAP = 6; // keep the most recent N conditions per voice\n const DEFAULT_VOICE_ID = \"you\";\n // Normalize any legacy per-phrase entry into { voices: { [id]: { label, createdAt, centroids:number[][] } } }.\n function normPhrase(o) {\n if (!o) return { voices: {} };\n if (o.voices) return o; // already voice-keyed\n if (Array.isArray(o.centroids)) return { voices: { [DEFAULT_VOICE_ID]: { label: \"You\", createdAt: 0, centroids: o.centroids } } };\n if (Array.isArray(o.centroid)) return { voices: { [DEFAULT_VOICE_ID]: { label: \"You\", createdAt: 0, centroids: [o.centroid] } } };\n return { voices: {} };\n }\n // Flat list of EVERY enrolled voice's centroids for a phrase (verify passes if any matches).\n function allCentroids(phrase, namespace) {\n const voices = normPhrase(loadAll(namespace)[phrase]).voices;\n const out = [];\n for (const id in voices) for (const c of (voices[id].centroids || [])) out.push(Float32Array.from(c));\n return out;\n }\n\n const SpeakerVerify = {\n ready: () => readyPromise,\n loadNamespace: (namespace) => hydrateStore(namespace),\n isLoaded: () => handle !== 0,\n threshold: DEFAULT_THRESHOLD,\n // AS-norm (score normalization): normalize the raw cosine against a crowd of other voices, so the\n // threshold stays stable when a room/mic drags scores down. PRIMARY gate when a cohort is loaded (znorm\n // != null); falls back to raw cosine only when there's no cohort. Turned on after live diagnostics showed\n // the genuine speaker scoring z 2–3.4 (well clear of 1.5) while raw cosine sat at 0.33–0.43 — i.e. raw\n // cosine was rejecting the real speaker in a room/mic that differed from enrollment, and AS-norm fixes it.\n useAsnorm: true,\n znormThreshold: 1.5, // \"at least N std above the crowd\"; tune from genuine vs real-impostor z-scores\n cohortSize: () => cohort.length,\n embeddingDim: () => dim,\n\n /** Enroll a VOICE for a phrase from N utterances → one condition-centroid under opts.voiceId\n * (default \"you\"). opts.append ADDS it as another condition for that voice; otherwise it replaces\n * that voice's conditions. opts.label names the voice. Capped to the most recent SV_CENTROID_CAP. */\n enroll(phrase, utterances /* [{samples, sampleRate}] */, opts, namespace) {\n if (!handle) throw new Error(\"SpeakerVerify not ready\");\n const voiceId = (opts && opts.voiceId) || DEFAULT_VOICE_ID;\n const embs = utterances.map(u => computeEmbedding(u.samples, u.sampleRate));\n const c = new Float32Array(dim);\n for (const e of embs) for (let i = 0; i < dim; i++) c[i] += e[i];\n for (let i = 0; i < dim; i++) c[i] /= embs.length;\n l2normalize(c);\n const all = loadAll(namespace);\n const entry = normPhrase(all[phrase]);\n const prevVoice = entry.voices[voiceId];\n const prev = (opts && opts.append && prevVoice && Array.isArray(prevVoice.centroids))\n ? prevVoice.centroids.map((x) => Float32Array.from(x)) : [];\n const centroids = prev.concat([c]).slice(-SV_CENTROID_CAP).map((v) => Array.from(v));\n entry.voices[voiceId] = {\n // keep the existing label when appending; otherwise use the provided one (or a sensible default)\n label: (prevVoice && opts && opts.append) ? prevVoice.label : ((opts && opts.label) || (voiceId === DEFAULT_VOICE_ID ? \"You\" : \"Voice\")),\n createdAt: (prevVoice && prevVoice.createdAt) || Date.now(),\n centroids,\n };\n all[phrase] = entry; saveAll(all, namespace);\n return { n: embs.length, conditions: centroids.length, voiceId };\n },\n\n /** Verify a live utterance against the BEST condition-centroid across ALL enrolled voices. */\n verify(phrase, samples, sampleRate, namespace) {\n const cents = allCentroids(phrase, namespace);\n if (!cents.length) return { score: 0, znorm: null, pass: false, enrolled: false };\n const live = computeEmbedding(samples, sampleRate);\n let score = -1;\n for (const c of cents) { const s = cosine(live, c); if (s > score) score = s; }\n // AS-norm: z = how many std the raw score sits above the crowd's scores against this same live clip.\n // A weird room drags the crowd scores down too, so the offset cancels and z stays stable.\n let znorm = null;\n if (cohort.length) {\n let sum = 0, sum2 = 0;\n for (const cv of cohort) { const s = cosine(live, cv); sum += s; sum2 += s * s; }\n const m = cohort.length, mean = sum / m, std = Math.sqrt(Math.max(sum2 / m - mean * mean, 1e-9));\n znorm = (score - mean) / std;\n }\n const pass = (SpeakerVerify.useAsnorm && znorm !== null)\n ? (znorm >= SpeakerVerify.znormThreshold)\n : (score >= SpeakerVerify.threshold);\n return { score, znorm, pass, enrolled: true };\n },\n\n /** How many conditions are enrolled for a phrase, across ALL voices (0 = none). */\n conditionCount: (phrase, namespace) => allCentroids(phrase, namespace).length,\n\n /** TitaNet speaker embedding for a raw utterance (Float32 + true sample rate). For diarization /\n * clustering. Returns the L2-normalized embedding, or null if the runtime isn't ready. */\n embed(samples, sampleRate) {\n return handle ? computeEmbedding(samples, sampleRate) : null;\n },\n\n /** Best-matching ENROLLED voice for a live utterance, across all voices + phrases (text-independent,\n * so conversational audio works). Returns { voiceId, label, score } (max cosine) or null if nothing\n * enrolled / not ready. The caller applies a threshold to decide whether to trust the name. */\n identify(samples, sampleRate, namespace) {\n if (!handle) return null;\n const live = computeEmbedding(samples, sampleRate);\n const all = loadAll(namespace);\n const best = {}; // voiceId -> { label, score }\n for (const phrase in all) {\n const voices = normPhrase(all[phrase]).voices;\n for (const id in voices) {\n for (const c of (voices[id].centroids || [])) {\n const s = cosine(live, Float32Array.from(c));\n if (!best[id] || s > best[id].score) best[id] = { label: voices[id].label, score: s };\n }\n }\n }\n let top = null;\n for (const id in best) {\n if (!top || best[id].score > top.score) top = { voiceId: id, label: best[id].label, score: best[id].score };\n }\n return top;\n },\n\n /** List enrolled voices aggregated across phrases: [{ id, label, createdAt, conditions }]. */\n listVoices(namespace) {\n const all = loadAll(namespace);\n const acc = {};\n for (const phrase in all) {\n const voices = normPhrase(all[phrase]).voices;\n for (const id in voices) {\n const v = voices[id];\n const conds = (v.centroids || []).length;\n if (!acc[id]) acc[id] = { id, label: v.label || id, createdAt: v.createdAt || 0, conditions: conds };\n else {\n acc[id].conditions = Math.max(acc[id].conditions, conds);\n if (v.label) acc[id].label = v.label;\n if (v.createdAt && (!acc[id].createdAt || v.createdAt < acc[id].createdAt)) acc[id].createdAt = v.createdAt;\n }\n }\n }\n return Object.keys(acc).map((k) => acc[k]).sort((a, b) => a.createdAt - b.createdAt);\n },\n\n /** Remove a voice across all phrases — revokes that person's WHO match (the WHAT phrase-prints,\n * which are shared/speaker-independent, are left in voiceprintStore). */\n removeVoice(voiceId, namespace) {\n const all = loadAll(namespace);\n let changed = false;\n for (const phrase in all) {\n const entry = normPhrase(all[phrase]);\n if (entry.voices[voiceId]) { delete entry.voices[voiceId]; all[phrase] = entry; changed = true; }\n }\n if (changed) saveAll(all, namespace);\n },\n\n /** Rename a voice across all phrases. */\n renameVoice(voiceId, label, namespace) {\n const all = loadAll(namespace);\n let changed = false;\n for (const phrase in all) {\n const entry = normPhrase(all[phrase]);\n if (entry.voices[voiceId]) { entry.voices[voiceId].label = label; all[phrase] = entry; changed = true; }\n }\n if (changed) saveAll(all, namespace);\n },\n\n // hasEnrollment(phrase) -> is that phrase enrolled; hasEnrollment() -> is anything enrolled.\n hasEnrollment: (phrase, namespace) => phrase ? allCentroids(phrase, namespace).length > 0 : Object.keys(loadAll(namespace)).some((p) => allCentroids(p, namespace).length > 0),\n enrolledPhrases: (namespace) => Object.keys(loadAll(namespace)),\n clearEnrollment: (namespace) => {\n const storageKey = voiceprintStorageKey(BASE_STORAGE_KEY, namespace);\n stores.set(storageKey, {});\n void clearVoiceprints(storageKey);\n },\n };\n\n async function init() {\n // Save the existing Emscripten global so we can restore it — don't permanently clobber window.Module\n // for any other emscripten bundle the host loads.\n const prevModule = window.Module;\n try {\n // locateFile: the page is at \"/\" but the glue + .wasm/.data live in SV_DIR, so\n // tell emscripten exactly where to fetch them (otherwise it 404s and init hangs).\n window.Module = { locateFile: (path) => SV_DIR + \"/\" + path };\n const onRuntime = new Promise((res) => { window.Module.onRuntimeInitialized = res; });\n // order matters: config-marshaling helper, then the glue (which fires onRuntimeInitialized)\n await loadScript(SV_DIR + \"/sherpa-onnx-speaker-diarization.js\");\n await loadScript(SV_DIR + \"/sherpa-onnx-wasm-main-speaker-diarization.js\");\n await onRuntime;\n Module = window.Module;\n window.Module = prevModule; // restore the global; we keep our own ref in `Module`\n const cfg = initSherpaOnnxSpeakerEmbeddingExtractorConfig(\n { model: MODEL, numThreads: 1, debug: 0, provider: \"cpu\" }, Module);\n handle = Module._SherpaOnnxCreateSpeakerEmbeddingExtractor(cfg.ptr);\n Module._free(cfg.buffer); Module._free(cfg.ptr);\n if (!handle) throw new Error(\"CreateSpeakerEmbeddingExtractor returned null\");\n dim = Module._SherpaOnnxSpeakerEmbeddingExtractorDim(handle);\n console.log(\"[SpeakerVerify] ready — embedding dim\", dim);\n // Load the AS-norm cohort (other-voice embeddings, same model). Optional — gate works without it.\n try {\n const r = await fetch(SV_DIR + \"/sv-cohort.json\");\n if (r.ok) { cohort = (await r.json()).map((v) => Float32Array.from(v)); console.log(\"[SpeakerVerify] AS-norm cohort:\", cohort.length); }\n } catch (e) { console.warn(\"[SpeakerVerify] cohort load failed (AS-norm off):\", e); }\n await hydrateStore(); // preserve the existing unscoped API by default\n readyResolve(SpeakerVerify);\n } catch (e) {\n window.Module = prevModule; // restore the global even on failure\n console.error(\"[SpeakerVerify] init failed:\", e);\n readyReject(e);\n }\n }\n\n window.SpeakerVerify = SpeakerVerify;\n if (document.readyState === \"loading\") document.addEventListener(\"DOMContentLoaded\", init);\n else init();\n})();\n"]}
@@ -0,0 +1,128 @@
1
+ /**
2
+ * @mieweb/ui — Motion effects
3
+ *
4
+ * Opt-in hover/focus treatments that need pseudo-elements, masks or
5
+ * registered custom properties (things Tailwind utilities can't express).
6
+ * Ported from the Enterprise Health frontdoor `.btn--*` system and
7
+ * re-tokenised on `--mieweb-*` so every brand gets them for free.
8
+ *
9
+ * Consumed by <Button effect="sheen" | "orbit"> and reusable on any element.
10
+ */
11
+
12
+ /* ── Sheen: a soft skewed light band sweeps across the face on hover ──── */
13
+ .mie-fx-sheen {
14
+ position: relative;
15
+ overflow: hidden;
16
+ isolation: isolate;
17
+ }
18
+ .mie-fx-sheen::before {
19
+ content: '';
20
+ position: absolute;
21
+ top: 0;
22
+ left: -104%;
23
+ width: 88%;
24
+ height: 100%;
25
+ transform: skewX(-18deg);
26
+ background: linear-gradient(
27
+ 100deg,
28
+ transparent 0%,
29
+ color-mix(in srgb, #fff 42%, transparent) 50%,
30
+ transparent 100%
31
+ );
32
+ transition: left 0.8s ease;
33
+ z-index: -1;
34
+ pointer-events: none;
35
+ }
36
+ /* Light faces (secondary/ghost/outline/link) get a brand-tinted band —
37
+ a white sheen on a pale surface is invisible. */
38
+ .mie-fx-sheen:is(
39
+ [data-variant='secondary'],
40
+ [data-variant='ghost'],
41
+ [data-variant='outline'],
42
+ [data-variant='link']
43
+ )::before {
44
+ background: linear-gradient(
45
+ 100deg,
46
+ transparent 0%,
47
+ color-mix(in srgb, var(--mieweb-primary-500) 24%, transparent) 50%,
48
+ transparent 100%
49
+ );
50
+ }
51
+ .mie-fx-sheen:hover::before,
52
+ .mie-fx-sheen:focus-visible::before {
53
+ left: 120%;
54
+ }
55
+
56
+ /* ── Orbit: the border gives way to a brand ring with one accent glint that
57
+ orbits the element — an animated conic-gradient masked to the ring ─── */
58
+ @property --mie-orbit {
59
+ syntax: '<angle>';
60
+ inherits: false;
61
+ initial-value: 0deg;
62
+ }
63
+ .mie-fx-orbit {
64
+ position: relative;
65
+ isolation: isolate;
66
+ }
67
+ .mie-fx-orbit::after {
68
+ content: '';
69
+ position: absolute;
70
+ inset: 0;
71
+ border-radius: inherit;
72
+ padding: var(--mie-orbit-width, 2px);
73
+ background: conic-gradient(
74
+ from var(--mie-orbit),
75
+ var(--mieweb-primary-600) 0deg,
76
+ var(--mieweb-primary-600) 298deg,
77
+ var(--mieweb-accent, var(--mieweb-primary-300)) 330deg,
78
+ var(--mieweb-primary-400) 346deg,
79
+ var(--mieweb-primary-600) 360deg
80
+ );
81
+ -webkit-mask:
82
+ linear-gradient(#000 0 0) content-box,
83
+ linear-gradient(#000 0 0);
84
+ -webkit-mask-composite: xor;
85
+ mask-composite: exclude;
86
+ opacity: 0;
87
+ transition: opacity 0.25s;
88
+ pointer-events: none;
89
+ }
90
+ .mie-fx-orbit:hover,
91
+ .mie-fx-orbit:focus-visible {
92
+ border-color: transparent;
93
+ }
94
+ .mie-fx-orbit:hover::after,
95
+ .mie-fx-orbit:focus-visible::after {
96
+ opacity: 1;
97
+ animation: mie-orbit-spin 2.4s linear infinite;
98
+ }
99
+ @keyframes mie-orbit-spin {
100
+ to {
101
+ --mie-orbit: 360deg;
102
+ }
103
+ }
104
+ @media (prefers-reduced-motion: reduce) {
105
+ .mie-fx-orbit:hover::after,
106
+ .mie-fx-orbit:focus-visible::after {
107
+ animation: none;
108
+ }
109
+ }
110
+
111
+ /* ── Spin: slow continuous rotation for orbital rings (OrbitRing) ──────── */
112
+ @keyframes mie-spin {
113
+ to {
114
+ transform: rotate(360deg);
115
+ }
116
+ }
117
+
118
+ /* ── Fade-in: mount transition for swapped panels (MegaMenu featured) ──── */
119
+ @keyframes mie-fade-in {
120
+ from {
121
+ opacity: 0;
122
+ transform: translateY(4px);
123
+ }
124
+ to {
125
+ opacity: 1;
126
+ transform: none;
127
+ }
128
+ }
@@ -23,6 +23,8 @@
23
23
  * - @mieweb/ui/brands/bluehive.css (or another brand)
24
24
  */
25
25
 
26
+ @import './effects.css';
27
+
26
28
  /* ── Dark Mode Variant ───────────────────────────────────────────────── */
27
29
  @custom-variant dark (&:where(.dark, [data-theme=dark], .dark *, [data-theme=dark] *));
28
30
 
@@ -367,3 +369,16 @@ kbd {
367
369
  outline: 2px solid var(--mieweb-ring);
368
370
  outline-offset: 2px;
369
371
  }
372
+
373
+ /* ── Reduced Motion ──────────────────────────────────────────────────── */
374
+ /* Mirrors base.css: hover/transition effects (including effects.css) must
375
+ collapse for users who prefer reduced motion. */
376
+ @media (prefers-reduced-motion: reduce) {
377
+ *,
378
+ *::before,
379
+ *::after {
380
+ animation-duration: 0.01ms !important;
381
+ animation-iteration-count: 1 !important;
382
+ transition-duration: 0.01ms !important;
383
+ }
384
+ }