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

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
package/dist/index.js CHANGED
@@ -1,155 +1,175 @@
1
+ import { getModelBytes } from './chunk-6I7IDZ4A.js';
2
+ import { loadWhatPrints, saveWhatPrints, clearWhatPrints } from './chunk-74ENCTIK.js';
3
+ export { clearVoiceprints, clearWhatPrints, getVoiceprints, loadWhatPrints, saveWhatPrints, setVoiceprints } from './chunk-74ENCTIK.js';
4
+ export { ViewSet } from './chunk-76TBQDED.js';
5
+ export { ViewSwitcher, viewSwitcherVariants } from './chunk-IT775BYG.js';
6
+ export { TranscriptView, formatTimestampMs } from './chunk-LAEIVOIY.js';
7
+ export { PlayButton, VideoCard } from './chunk-TPWKM7JH.js';
1
8
  export { VisuallyHidden } from './chunk-H2CIKJQI.js';
2
- export { brands } from './chunk-LECJMLNE.js';
3
- export { webchartBrand } from './chunk-CW66SO5O.js';
9
+ export { MONTH_LETTERS, MONTH_NAMES, YearTimeline, resolveCurrent } from './chunk-SQJFBZ42.js';
10
+ export { brands } from './chunk-YQDA366U.js';
4
11
  export { defaultBrand } from './chunk-PSTGFXQG.js';
5
- export { enterpriseHealthBrand } from './chunk-MTZPVOP6.js';
12
+ export { enterpriseHealthBrand } from './chunk-Q77TE5DZ.js';
6
13
  export { miewebBrand } from './chunk-NERS5ZT6.js';
7
14
  export { wagglelineBrand } from './chunk-2NTYAALC.js';
8
- export { createBrandPreset, generateBrandCSS, generateTailwindTheme } from './chunk-WOYUQ4AT.js';
15
+ export { webchartBrand } from './chunk-CW66SO5O.js';
9
16
  export { bluehiveBrand } from './chunk-3T7QGLNB.js';
10
17
  export { ccmeBrand } from './chunk-SCQRJPSV.js';
11
18
  export { ozwellBrand } from './chunk-5YUBQIC7.js';
12
- import { getModelBytes } from './chunk-6I7IDZ4A.js';
19
+ export { createBrandPreset, generateBrandCSS, generateTailwindTheme } from './chunk-5GOWFNQ6.js';
13
20
  import { Table, TableHeader, TableRow, TableHead, TableBody, TableCell } from './chunk-TNUL4LGG.js';
14
21
  export { Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow } from './chunk-TNUL4LGG.js';
15
22
  import { Tabs, TabsList, TabsTrigger, TabsContent } from './chunk-DVOQ3JNO.js';
16
23
  export { Tabs, TabsContent, TabsList, TabsTrigger, tabsListVariants, tabsTriggerVariants } from './chunk-DVOQ3JNO.js';
17
24
  import { Text } from './chunk-3YSIZ2CK.js';
18
25
  export { SmallMuted, Text, textVariants } from './chunk-3YSIZ2CK.js';
19
- export { ThemeProvider, ThemeProviderContext, ThemeToggle, themeToggleIconVariants, themeToggleVariants, useThemeContext } from './chunk-XBXDUAIM.js';
26
+ export { ThemeProvider, ThemeProviderContext, ThemeToggle, themeToggleIconVariants, themeToggleVariants, useThemeContext } from './chunk-LL6IWKI3.js';
20
27
  export { Toggle, toggleVariants } from './chunk-PTZB2GKL.js';
21
- export { TranscriptView, formatTimestampMs } from './chunk-LAEIVOIY.js';
22
28
  import { Skeleton } from './chunk-ZIUADGAR.js';
23
29
  export { Skeleton, SkeletonCard, SkeletonTable, SkeletonText, skeletonVariants } from './chunk-ZIUADGAR.js';
24
- export { SourceTip } from './chunk-PHK4XBO5.js';
30
+ export { SourceTip } from './chunk-Z5V7SAZ4.js';
25
31
  export { Sparkline } from './chunk-CG4ZKJLE.js';
26
- import { Spinner, SpinnerWithLabel } from './chunk-UA7E7PDS.js';
27
- export { FullPageSpinner, Spinner, SpinnerWithLabel, spinnerVariants } from './chunk-UA7E7PDS.js';
28
- import { SparklesIcon, RefreshIcon, CloseIcon, AIMessageDisplay } from './chunk-22CYDCXA.js';
29
- export { AILogoIcon, AIMessageDisplay, AITypingIndicator, ChatBubble, ChevronIcon, CloseIcon, CollapsiblePill, MCPToolCallDisplay, MessageAvatar, RefreshIcon, ResourceLink, SendIcon, SparklesIcon, SpinnerIcon, ToolStatusIcon, getToolIcon } from './chunk-22CYDCXA.js';
30
- import { useTypingEmulation, EmptyState } from './chunk-VSVGMMNO.js';
31
- export { AttachmentPreview, ConversationHeader, ConversationListItem, ConversationListSkeleton, DateSeparator, EmptyState, LightboxModal, LoadMoreButton, MessageBubble, MessageList, MessageStatusIcon, MessageThread, MessagingSplitView, ReadReceiptIndicator, SkeletonMessage, TypingIndicator, bubbleVariants, formatDateLabel, formatFileSize, formatLastSeen, getConversationSubtitle, getConversationTitle, groupMessagesByDate, headerVariants, isSameSenderGroup, useMessageScroll, useMessages, useReadReceipts, useTypingEmulation, useTypingIndicator } from './chunk-VSVGMMNO.js';
32
- import { notifyComposerMigrationOnce, ChatComposer, DEFAULT_MAX_FILE_SIZE, DEFAULT_ACCEPTED_FILE_TYPES } from './chunk-IIFQ6BSJ.js';
33
- export { AttachmentPicker, AttachmentPreviewItem, CameraButton, ChatComposer, ComposerModelSelector, DragDropZone, generateAttachmentId, getFileType, validateFile } from './chunk-IIFQ6BSJ.js';
32
+ import { SparklesIcon, RefreshIcon, CloseIcon, JumpToBottomButton, AIMessageDisplay } from './chunk-TZJQB4P2.js';
33
+ export { AILogoIcon, AIMessageDisplay, AITypingIndicator, ChatBubble, ChevronIcon, CloseIcon, CollapsiblePill, MCPToolCallDisplay, MessageAvatar, RefreshIcon, ResourceLink, SendIcon, SparklesIcon, SpinnerIcon, ToolStatusIcon, getToolIcon } from './chunk-TZJQB4P2.js';
34
+ import { useTypingEmulation, EmptyState } from './chunk-3M7TAXNR.js';
35
+ export { AttachmentPreview, ConversationHeader, ConversationListItem, ConversationListSkeleton, DateSeparator, EmptyState, LightboxModal, LoadMoreButton, MessageBubble, MessageList, MessageStatusIcon, MessageThread, MessagingSplitView, ReadReceiptIndicator, SkeletonMessage, TypingIndicator, bubbleVariants, formatDateLabel, formatFileSize, formatLastSeen, getConversationSubtitle, getConversationTitle, groupMessagesByDate, headerVariants, isSameSenderGroup, useMessageScroll, useMessages, useReadReceipts, useTypingEmulation, useTypingIndicator } from './chunk-3M7TAXNR.js';
36
+ import { notifyComposerMigrationOnce, ChatComposer, DEFAULT_MAX_FILE_SIZE, DEFAULT_ACCEPTED_FILE_TYPES } from './chunk-ACCAXVOG.js';
37
+ export { AttachmentPicker, AttachmentPreviewItem, CameraButton, ChatComposer, ComposerModelSelector, DragDropZone, generateAttachmentId, getFileType, validateFile } from './chunk-ACCAXVOG.js';
34
38
  import { RecordButton } from './chunk-VNWJTCBQ.js';
35
39
  export { RecordButton, formatDuration, recordButtonVariants } from './chunk-VNWJTCBQ.js';
36
- export { RichTextEditor, convertAngleBracketsToMustache, processDictation } from './chunk-QKFJDQEK.js';
40
+ export { RichTextEditor, convertAngleBracketsToMustache, processDictation } from './chunk-OE5CKRUC.js';
37
41
  export { DateButton, DatePicker, RadioOption, SchedulePicker, TimeButton, TimePicker, dateButtonVariants, radioOptionVariants, timeButtonVariants } from './chunk-23AYDOCH.js';
38
42
  export { ScrollArea, scrollAreaVariants } from './chunk-HS25RPDW.js';
39
- export { SectionSpyNav } from './chunk-3RB35GYK.js';
43
+ export { SectionSpyNav } from './chunk-VU6UTJRM.js';
44
+ export { AnimatedNumber, SliderCalculator } from './chunk-PYJDVWXM.js';
40
45
  export { Separator, separatorVariants } from './chunk-OQWZYKJM.js';
46
+ export { RadialExplorer } from './chunk-Y5HFM7LO.js';
41
47
  export { Pagination, SimplePagination, paginationButtonVariants } from './chunk-PFKRHNYV.js';
42
48
  export { PhoneInput, PhoneInputGroup } from './chunk-XOIIUO6O.js';
43
49
  import { Progress } from './chunk-CEQJGUAS.js';
44
50
  export { CircularProgress, Progress, circularProgressVariants, progressBarFillVariants, progressBarTrackVariants } from './chunk-CEQJGUAS.js';
45
51
  export { QuickAction, QuickActionGroup, QuickActionIcons, quickActionIconVariants, quickActionVariants } from './chunk-TQDZLRIE.js';
46
52
  export { ReadingProgressBar } from './chunk-WKSUL2ZN.js';
47
- export { FreshnessBadge, FreshnessDot, daysSince, freshnessLevel } from './chunk-HQ3XPCHG.js';
48
- export { GlossaryTooltip } from './chunk-L5W7TJQ5.js';
49
- export { Kbd, KeyboardShortcutsOverlay } from './chunk-Y6DFMDMH.js';
50
- export { CodeBlock, MarkdownRenderer, highlightCode, useMarkdown } from './chunk-ZX2XRFE5.js';
51
- export { CsvBlock } from './chunk-NHN6A3ZO.js';
52
- export { HtmlPreviewBlock } from './chunk-EG7XFZ3W.js';
53
- export { MermaidBlock } from './chunk-ZB54MTMQ.js';
54
- export { SurveyBlock } from './chunk-OSPTA4UR.js';
55
- export { FenceBlock } from './chunk-CK3KLRNF.js';
56
- export { FillerWordsModal, MediaEditor, SilenceSettingsModal, SpeedMarkerMenu, WordEditorModal } from './chunk-QSVQABXD.js';
53
+ export { ListView, itemVariants as listViewItemVariants } from './chunk-DZ5HFLRC.js';
54
+ export { CodeBlock, MarkdownRenderer, highlightCode, useMarkdown } from './chunk-MNILXWVY.js';
55
+ export { SurveyBlock } from './chunk-DEDN5HAG.js';
56
+ export { CsvBlock } from './chunk-TMMVIUUN.js';
57
+ export { HtmlPreviewBlock } from './chunk-V7D3YGUV.js';
58
+ export { MermaidBlock } from './chunk-KZFBQ7GY.js';
59
+ export { FenceBlock } from './chunk-H4ZXMQQW.js';
60
+ export { FillerWordsModal, MediaEditor, SilenceSettingsModal, SpeedMarkerMenu, WordEditorModal } from './chunk-ENKFJJZX.js';
57
61
  export { Slider, sliderRangeVariants, sliderThumbVariants, sliderTrackVariants } from './chunk-2BPIVWAK.js';
58
62
  import './chunk-RISZWWEQ.js';
59
- export { MediaPlayer, inferMediaKind, mediaPlayerVariants } from './chunk-5WOB4UBD.js';
60
- export { Collapsible, CollapsibleContent, CollapsibleTrigger } from './chunk-MBWF36DJ.js';
63
+ export { MediaPlayer, inferMediaKind, mediaPlayerVariants } from './chunk-VKELAMAZ.js';
64
+ import { normalizePath, MegaMenuBar } from './chunk-2IZLKPUW.js';
65
+ export { MegaMenu, MegaMenuBar, normalizePath } from './chunk-2IZLKPUW.js';
66
+ export { OrbitRing } from './chunk-SUS3WFY3.js';
67
+ import { Dropdown, DropdownItem, DropdownSeparator, DropdownContent, DropdownHeader } from './chunk-ZGRCSNPK.js';
68
+ export { Dropdown, DropdownContent, DropdownHeader, DropdownItem, DropdownLabel, DropdownSeparator, DropdownSubmenu } from './chunk-ZGRCSNPK.js';
69
+ export { FilterSummaryBar } from './chunk-6SCQ7FKT.js';
70
+ export { FloatingWindow, MinimizedWindow } from './chunk-3QGS6CXD.js';
71
+ export { FreshnessBadge, FreshnessDot, daysSince, freshnessLevel } from './chunk-HQ3XPCHG.js';
72
+ export { GanttView, defaultGanttLabels } from './chunk-Y4QNLW7W.js';
73
+ export { GlossaryTooltip } from './chunk-RJ6NTJHC.js';
74
+ export { Kbd, KeyboardShortcutsOverlay } from './chunk-VILW53UZ.js';
75
+ import { Checkbox } from './chunk-753Z3NXL.js';
76
+ export { Checkbox, CheckboxGroup, checkboxVariants } from './chunk-753Z3NXL.js';
77
+ export { ClampedText } from './chunk-L6MDULYB.js';
78
+ export { CollabStatus, defaultCollabStatusLabels, useYjsCollabStatus } from './chunk-SVSHA7XV.js';
79
+ export { Collapsible, CollapsibleContent, CollapsibleTrigger } from './chunk-P2CA3XGI.js';
61
80
  export { CopyButton } from './chunk-5QZ73PZC.js';
62
- import { CountryDropdownBase } from './chunk-QAKASRE6.js';
63
- export { CountryCodeDropdown, formatE164, validatePhoneNumber } from './chunk-QAKASRE6.js';
64
- export { CustomizableDashboard, DashboardCustomizePanel, consolidateColumns, mergeColumnOrder, moveAcrossColumns, reorderOnDrop, requiredColumns } from './chunk-6SAYPXHX.js';
81
+ import { CountryDropdownBase } from './chunk-NJ6MY6V5.js';
82
+ export { CountryCodeDropdown, formatE164, validatePhoneNumber } from './chunk-NJ6MY6V5.js';
83
+ export { CustomizableDashboard, DashboardCustomizePanel, consolidateColumns, mergeColumnOrder, moveAcrossColumns, reorderOnDrop, requiredColumns } from './chunk-WGPLUCBD.js';
65
84
  import { Switch, switchThumbVariants, switchTrackVariants } from './chunk-AQ564XO7.js';
66
85
  export { Switch, switchThumbVariants, switchTrackVariants } from './chunk-AQ564XO7.js';
67
- export { Sheet, SheetBody, SheetClose, SheetDescription, SheetFooter, SheetHeader, SheetTitle, sheetContentVariants, sheetOverlayVariants } from './chunk-ON4JULCA.js';
68
- import { Dropdown, DropdownItem, DropdownSeparator, DropdownContent, DropdownHeader } from './chunk-TZX76ZNZ.js';
69
- export { Dropdown, DropdownContent, DropdownHeader, DropdownItem, DropdownLabel, DropdownSeparator, DropdownSubmenu } from './chunk-TZX76ZNZ.js';
70
- export { FilterSummaryBar } from './chunk-6SCQ7FKT.js';
71
- export { FloatingWindow, MinimizedWindow } from './chunk-PYHFVYVZ.js';
86
+ export { Sheet, SheetBody, SheetClose, SheetDescription, SheetFooter, SheetHeader, SheetTitle, sheetContentVariants, sheetOverlayVariants } from './chunk-LMBXJZLG.js';
87
+ export { Autocomplete } from './chunk-UBOVDAD7.js';
72
88
  import { Avatar } from './chunk-HZ4MBUC3.js';
73
89
  export { Avatar, AvatarGroup, avatarVariants, getInitials } from './chunk-HZ4MBUC3.js';
74
90
  import './chunk-IQ4KQJAO.js';
91
+ export { BoardView, cardVariants as boardViewCardVariants, defaultBoardLabels } from './chunk-XVW5DPPP.js';
75
92
  export { Breadcrumb, BreadcrumbSlash } from './chunk-SCXELRRZ.js';
76
93
  import './chunk-OF7NTZ2I.js';
77
- import { Checkbox } from './chunk-753Z3NXL.js';
78
- export { Checkbox, CheckboxGroup, checkboxVariants } from './chunk-753Z3NXL.js';
79
- export { ClampedText } from './chunk-L6MDULYB.js';
80
- export { CollabStatus, defaultCollabStatusLabels, useYjsCollabStatus } from './chunk-SVSHA7XV.js';
94
+ export { CalendarView, defaultCalendarLabels } from './chunk-G4D6CLBT.js';
95
+ export { accentClasses, defaultViewLabels, toDateTime } from './chunk-3YBS4WUQ.js';
96
+ import { Spinner, SpinnerWithLabel } from './chunk-UA7E7PDS.js';
97
+ export { FullPageSpinner, Spinner, SpinnerWithLabel, spinnerVariants } from './chunk-UA7E7PDS.js';
98
+ import { useDirection, useCommandK, useIsMobile, useMediaQuery } from './chunk-AWJBOND5.js';
99
+ export { RTL_LOCALES, isRtlLocale, useCommandK, useDirection, useIsDesktop, useIsLargeDesktop, useIsMobile, useIsMobileOrTablet, useIsSmallTablet, useIsTablet, useKeyboardShortcut, useMediaQuery } from './chunk-AWJBOND5.js';
100
+ export { useYouTubeHoverPreview } from './chunk-POWS35OT.js';
101
+ export { useTheme } from './chunk-KJZNEVYM.js';
102
+ import { useStickToBottom, useStreamEndedBelowFold } from './chunk-BM35CACB.js';
103
+ export { useStickToBottom, useStreamEndedBelowFold } from './chunk-BM35CACB.js';
104
+ import { useScrollSpy } from './chunk-WBGUYSWY.js';
105
+ export { useScrollSpy } from './chunk-WBGUYSWY.js';
106
+ export { DEFAULT_FILLER_WORDS, DEFAULT_MIN_SILENCE_MS, DEFAULT_NL_SILENCE_MS, buildPlaybackSegments, getSpeedAtIndex, initEditableWords, insertSilences, useTranscriptEdits } from './chunk-UUI7WXI5.js';
107
+ export { PLAYBACK_SPEEDS } from './chunk-6CGM5H4J.js';
108
+ export { useMediaTransport } from './chunk-SQHMGT4W.js';
81
109
  import './chunk-7XUN3OQT.js';
82
110
  export { isHtmlEmpty, stripHtmlTags } from './chunk-ERLPVXOV.js';
83
111
  export { formatPhoneNumber, isPhoneNumberEmpty, isValidPhoneNumber, unformatPhoneNumber } from './chunk-ZVPJ2MH6.js';
84
- export { miewebUIPreset, miewebUISafelist } from './chunk-X5YM3KXY.js';
112
+ export { miewebUIPreset, miewebUISafelist } from './chunk-4A3W4TQF.js';
85
113
  export { Accordion } from './chunk-KRU6IGV7.js';
86
114
  import { Alert, AlertTitle, AlertDescription } from './chunk-3JWAABYI.js';
87
115
  export { Alert, AlertDescription, AlertTitle, alertVariants } from './chunk-3JWAABYI.js';
88
- import { AlertDialog } from './chunk-RD3JDFYJ.js';
89
- export { AlertDialog } from './chunk-RD3JDFYJ.js';
116
+ import { AlertDialog } from './chunk-VOKVG3ER.js';
117
+ export { AlertDialog } from './chunk-VOKVG3ER.js';
90
118
  export { AudioPlayer, ProgressBar, audioPlayerVariants, formatTime as formatAudioTime, playButtonVariants } from './chunk-VVDE4CHU.js';
91
119
  export { AudioRecorder, audioRecorderVariants, controlButtonVariants, formatTime, waveformContainerVariants } from './chunk-2DW4PUJD.js';
92
- export { Autocomplete } from './chunk-QAQOCS2J.js';
93
120
  import { evaluateDue, completedKeys, normalizeOrders } from './chunk-Y5KEFV5O.js';
94
121
  export { buildChartOrderRows, buildEncounterOrderRows, dueForOrder, evaluateDue, evaluateProgram, isApplicable } from './chunk-Y5KEFV5O.js';
95
- import { useCodeLookupConfig, RowActionToolbar, RowIconButton, toolbarKeyNav, parseSig, labelToMedicationFields, MedicationEditor } from './chunk-7KWNY3HG.js';
96
- export { ALLERGY_TYPE_LABELS, AllergyList, AllergyManager, CodeLookupProvider, MEDICATION_STATUS_LABELS, MedicationEditor, MedicationList, MedicationReconciliation, RowActionToolbar, RowIconButton, labelToMedicationFields, lookupToMedicationFields, parseMedicationLabel, parseSig, toolbarKeyNav, useCodeLookupConfig } from './chunk-7KWNY3HG.js';
122
+ import { useCodeLookupConfig, RowActionToolbar, RowIconButton, toolbarKeyNav, parseSig, labelToMedicationFields, MedicationEditor } from './chunk-TVTIGV7Q.js';
123
+ export { ALLERGY_TYPE_LABELS, AllergyList, AllergyManager, CodeLookupProvider, MEDICATION_STATUS_LABELS, MedicationEditor, MedicationList, MedicationReconciliation, RowActionToolbar, RowIconButton, labelToMedicationFields, lookupToMedicationFields, parseMedicationLabel, parseSig, toolbarKeyNav, useCodeLookupConfig } from './chunk-TVTIGV7Q.js';
97
124
  import { Textarea } from './chunk-H3YO5GBM.js';
98
125
  export { Textarea, textareaVariants } from './chunk-H3YO5GBM.js';
99
- import { Tooltip } from './chunk-MUIDWFYJ.js';
100
- export { Tooltip } from './chunk-MUIDWFYJ.js';
126
+ import { Tooltip } from './chunk-FJ7YPVKV.js';
127
+ export { Tooltip } from './chunk-FJ7YPVKV.js';
101
128
  import { RadioGroup, Radio } from './chunk-EPSB4WTL.js';
102
129
  export { Radio, RadioGroup, radioVariants } from './chunk-EPSB4WTL.js';
103
130
  import { Label } from './chunk-I3WGZPI6.js';
104
131
  export { Label, labelVariants } from './chunk-I3WGZPI6.js';
105
- import { Select } from './chunk-IGNWT6RP.js';
106
- export { Select, selectTriggerVariants } from './chunk-IGNWT6RP.js';
107
- import { DateInput } from './chunk-OAZUDUGX.js';
108
- export { DateInput } from './chunk-OAZUDUGX.js';
109
- import { Card, CardHeader, CardContent, CardTitle } from './chunk-QYSUYB3S.js';
110
- export { Card, CardActions, CardBadge, CardCollapsible, CardContent, CardDescription, CardDivider, CardFooter, CardHeader, CardMedia, CardStat, CardTitle, cardAccentVariants, cardVariants } from './chunk-QYSUYB3S.js';
111
- import { dateToDisplayFormat, isValidDate, displayFormatToDateString } from './chunk-RC2YMOMS.js';
112
- export { calculateAge, dateToDisplayFormat, displayFormatToDateString, formatDateValue, isDateEmpty, isDateInFuture, isDateInPast, isValidDate, isValidDrivingAge, parseDateValue } from './chunk-RC2YMOMS.js';
113
- import { Modal, ModalHeader, ModalTitle, ModalClose, ModalBody, ModalFooter } from './chunk-WUBMDOTG.js';
114
- export { Modal, ModalBody, ModalClose, ModalFooter, ModalHeader, ModalTitle, modalContentVariants, modalOverlayVariants } from './chunk-WUBMDOTG.js';
132
+ import { Select } from './chunk-S7WCHDBO.js';
133
+ export { Select, selectTriggerVariants } from './chunk-S7WCHDBO.js';
134
+ import { DateInput } from './chunk-7IBZA7G6.js';
135
+ export { DateInput } from './chunk-7IBZA7G6.js';
115
136
  import './chunk-6NZXWKUE.js';
116
137
  import { Input, inputVariants } from './chunk-3IMM2PM4.js';
117
138
  export { Input, RequiredMark, floatingGroupLabelVariants, floatingGroupVariants, floatingLabelVariants, inputVariants } from './chunk-3IMM2PM4.js';
118
- import { Plus, GripVertical, RefreshCw, Pencil, Trash2, AlertCircle, ArrowLeft, Users, FilePlus, CheckCircle, ChevronDown, Clock, FileText, ClipboardList, Stethoscope, Mail, Phone, ClipboardCheck, Eye, Info, Link, ChevronUp, History, StickyNote, ExternalLink, MoreVertical, Send, Scan, TestTube2, Pill, Share, User, Download, ChevronRight, Calendar, Printer, ClipboardPlus, FileCheck, Wheat, Bell, FileHeart, HeartPulse, Paperclip, HelpCircle, MoreHorizontal, AlertTriangle, Upload as Upload$1, Camera, Check as Check$1, X as X$1, ScanLine, Image } from './chunk-BKSPDTX4.js';
119
- export { Accessibility as AccessibilityIcon, Activity as ActivityIcon, AlertCircle as AlertCircleIcon, AlertTriangle as AlertTriangleIcon, Wheat as AllergyIcon, WheatOff as AllergyOffIcon, Ambulance as AmbulanceIcon, ArrowLeft as ArrowLeftIcon, ArrowRight as ArrowRightIcon, ArrowUpDown as ArrowUpDownIcon, ArrowUp as ArrowUpIcon, AtSign as AtSignIcon, Baby as BabyIcon, BadgeAlert as BadgeAlertIcon, BadgeCheck as BadgeCheckIcon, BadgeMinus as BadgeMinusIcon, BadgePlus as BadgePlusIcon, BadgeX as BadgeXIcon, Ban as BanIcon, Bandage as BandageIcon, BedDouble as BedDoubleIcon, Bed as BedIcon, BedSingle as BedSingleIcon, Bell as BellIcon, BellOff as BellOffIcon, Biohazard as BiohazardIcon, Bone as BoneIcon, BookOpenCheck as BookOpenCheckIcon, BookOpen as BookOpenIcon, Bookmark as BookmarkIcon, Bot as BotIcon, Brain as BrainIcon, Briefcase as BriefcaseIcon, BriefcaseMedical as BriefcaseMedicalIcon, Building as BuildingIcon, CalendarCheck as CalendarCheckIcon, Calendar as CalendarIcon, Camera as CameraIcon, Cannabis as CannabisIcon, BarChart3 as ChartIcon, CheckCircle as CheckCircleIcon, Check as CheckIcon, ChevronDown as ChevronDownIcon, ChevronLeft as ChevronLeftIcon, ChevronRight as ChevronRightIcon, ChevronUp as ChevronUpIcon, Cigarette as CigaretteIcon, CigaretteOff as CigaretteOffIcon, CircleDotDashed as CircleDotDashedIcon, CircleDot as CircleDotIcon, CircleUser as CircleUserIcon, ClipboardCheck as ClipboardCheckIcon, Clipboard as ClipboardIcon, ClipboardList as ClipboardListIcon, ClipboardPlus as ClipboardPlusIcon, Clock as ClockIcon, Cog as CogIcon, Columns as ColumnsIcon, Copy as CopyIcon, CreditCard as CreditCardIcon, Cross as CrossIcon, Dna as DnaIcon, DollarSign as DollarSignIcon, Download as DownloadIcon, Droplet as DropletIcon, Droplets as DropletsIcon, Ear as EarIcon, ExternalLink as ExternalLinkIcon, Eye as EyeIcon, EyeOff as EyeOffIcon, FileCheck2 as FileCheck2Icon, FileCheck as FileCheckIcon, FileHeart as FileHeartIcon, File as FileIcon, FilePlus2 as FilePlus2Icon, FilePlus as FilePlusIcon, FileText as FileTextIcon, Filter as FilterIcon, Fingerprint as FingerprintIcon, Flag as FlagIcon, FlaskConical as FlaskIcon, FlaskRound as FlaskRoundIcon, Folder as FolderIcon, FolderOpen as FolderOpenIcon, Footprints as FootprintsIcon, Glasses as GlassesIcon, Globe as GlobeIcon, LayoutGrid as GridIcon, GripVertical as GripVerticalIcon, Hand as HandIcon, HandMetal as HandMetalIcon, Hash as HashIcon, Heart as HeartIcon, HeartOff as HeartOffIcon, HeartPulse as HeartPulseIcon, HelpCircle as HelpCircleIcon, History as HistoryIcon, Home as HomeIcon, Hospital as HospitalIcon, Image as ImageIcon, Info as InfoIcon, Key as KeyIcon, Link as LinkIcon, List as ListIcon, Loader2 as LoaderIcon, Lock as LockIcon, LogIn as LogInIcon, LogOut as LogOutIcon, Mail as MailIcon, MapPin as MapPinIcon, Maximize as MaximizeIcon, Menu as MenuIcon, MessageSquare as MessageIcon, Mic as MicIcon, Microscope as MicroscopeIcon, Minimize as MinimizeIcon, Minus as MinusIcon, Monitor as MonitorIcon, Moon as MoonIcon, MoreHorizontal as MoreHorizontalIcon, MoreVertical as MoreVerticalIcon, NotebookPen as NotebookPenIcon, Palette as PaletteIcon, Paperclip as PaperclipIcon, CircleUserRound as PatientIcon, Pencil as PencilIcon, UserRound as PersonIcon, Phone as PhoneIcon, PieChart as PieChartIcon, Pill as PillIcon, Plus as PlusIcon, Printer as PrinterIcon, Radiation as RadiationIcon, Ruler as RulerIcon, Save as SaveIcon, Scale as ScaleIcon, Scaling as ScalingIcon, ScanEye as ScanEyeIcon, Scan as ScanIcon, ScanLine as ScanLineIcon, Search as SearchIcon, Settings as SettingsIcon, Share as ShareIcon, ShieldCheck as ShieldCheckIcon, Shield as ShieldIcon, ShieldPlus as ShieldPlusIcon, Sliders as SlidersIcon, Sparkle as SparkleIcon, Star as StarIcon, Stethoscope as StethoscopeIcon, StickyNote as StickyNoteIcon, Square as StopIcon, Sun as SunIcon, Syringe as SyringeIcon, Table as TableIcon, Tablets as TabletsIcon, Tag as TagIcon, TestTube2 as TestTubeIcon, TestTubes as TestTubesIcon, Thermometer as ThermometerIcon, ThermometerSun as ThermometerSunIcon, ThumbsDown as ThumbsDownIcon, ThumbsUp as ThumbsUpIcon, Timer as TimerIcon, Trash2 as TrashIcon, TrendingDown as TrendingDownIcon, TrendingUp as TrendingUpIcon, Truck as TruckIcon, Unlock as UnlockIcon, Upload as UploadIcon, UserCheck as UserCheckIcon, User as UserIcon, UserMinus as UserMinusIcon, UserPlus as UserPlusIcon, UserRoundCheck as UserRoundCheckIcon, UserRoundMinus as UserRoundMinusIcon, UserRoundPlus as UserRoundPlusIcon, UserRoundX as UserRoundXIcon, Users as UsersIcon, Weight as WeightIcon, Wrench as WrenchIcon, XCircle as XCircleIcon, X2 as XIcon, Zap as ZapIcon } from './chunk-BKSPDTX4.js';
120
- import { Badge } from './chunk-BMSG4NBH.js';
121
- export { Badge, badgeVariants } from './chunk-BMSG4NBH.js';
122
- import { Button, buttonVariants } from './chunk-KREUYVMZ.js';
123
- export { Button, buttonVariants } from './chunk-KREUYVMZ.js';
124
- import { AnimatedPresence, Animated } from './chunk-XCP454Q6.js';
125
- export { Animated, AnimatedPresence, motionPresets, useMotionRuntime } from './chunk-XCP454Q6.js';
126
- import { cn } from './chunk-TQONQSJO.js';
127
- export { cn, miewebUITwMergeConflicts } from './chunk-TQONQSJO.js';
128
- import { useDirection, useCommandK, useIsMobile, useMediaQuery } from './chunk-24SEAAOH.js';
129
- export { RTL_LOCALES, isRtlLocale, useCommandK, useDirection, useIsDesktop, useIsLargeDesktop, useIsMobile, useIsMobileOrTablet, useIsSmallTablet, useIsTablet, useKeyboardShortcut, useMediaQuery } from './chunk-24SEAAOH.js';
130
- export { useTheme } from './chunk-KJZNEVYM.js';
131
- import { useScrollSpy } from './chunk-WBGUYSWY.js';
132
- export { useScrollSpy } from './chunk-WBGUYSWY.js';
133
- export { DEFAULT_FILLER_WORDS, DEFAULT_MIN_SILENCE_MS, DEFAULT_NL_SILENCE_MS, buildPlaybackSegments, getSpeedAtIndex, initEditableWords, insertSilences, useTranscriptEdits } from './chunk-UUI7WXI5.js';
134
- export { PLAYBACK_SPEEDS } from './chunk-6CGM5H4J.js';
135
- export { useMediaTransport } from './chunk-SQHMGT4W.js';
139
+ import { Card, CardHeader, CardContent, CardTitle } from './chunk-QYSUYB3S.js';
140
+ export { Card, CardActions, CardBadge, CardCollapsible, CardContent, CardDescription, CardDivider, CardFooter, CardHeader, CardMedia, CardStat, CardTitle, cardAccentVariants, cardVariants } from './chunk-QYSUYB3S.js';
136
141
  import { useLiveAnnouncement, useDragReorder, dragIndicatorClasses, reorderIds } from './chunk-7ZVTLTJF.js';
137
142
  export { dragIndicatorClasses, reorderIds, useDragReorder, useLiveAnnouncement } from './chunk-7ZVTLTJF.js';
138
- export { usePrefersReducedMotion } from './chunk-HB7C7NB5.js';
143
+ import { useClickOutside } from './chunk-62ZOA6PX.js';
144
+ export { useClickOutside } from './chunk-62ZOA6PX.js';
145
+ import { useAnchoredPosition } from './chunk-WSNMQQ4P.js';
146
+ export { useAnchoredPosition } from './chunk-WSNMQQ4P.js';
147
+ import { dateToDisplayFormat, isValidDate, displayFormatToDateString } from './chunk-RC2YMOMS.js';
148
+ export { calculateAge, dateToDisplayFormat, displayFormatToDateString, formatDateValue, isDateEmpty, isDateInFuture, isDateInPast, isValidDate, isValidDrivingAge, parseDateValue } from './chunk-RC2YMOMS.js';
149
+ import { Modal, ModalHeader, ModalTitle, ModalClose, ModalBody, ModalFooter } from './chunk-5JJ2DAE4.js';
150
+ export { Modal, ModalBody, ModalClose, ModalFooter, ModalHeader, ModalTitle, modalContentVariants, modalOverlayVariants } from './chunk-5JJ2DAE4.js';
139
151
  import { useFocusTrap } from './chunk-4SMSH4OY.js';
140
152
  export { useFocusTrap } from './chunk-4SMSH4OY.js';
141
153
  import { useEscapeKey } from './chunk-T4ME7QCT.js';
142
154
  export { useEscapeKey } from './chunk-T4ME7QCT.js';
143
155
  import { isStorybookDocsMode } from './chunk-VSQF22GL.js';
144
156
  export { isStorybookDocsMode } from './chunk-VSQF22GL.js';
145
- import { useClickOutside } from './chunk-62ZOA6PX.js';
146
- export { useClickOutside } from './chunk-62ZOA6PX.js';
147
- import { useAnchoredPosition } from './chunk-WSNMQQ4P.js';
148
- export { useAnchoredPosition } from './chunk-WSNMQQ4P.js';
157
+ import { Plus, GripVertical, RefreshCw, Pencil, Trash2, AlertCircle, ArrowLeft, Users, FilePlus, CheckCircle, ChevronDown, Clock, FileText, ClipboardList, Stethoscope, Mail, Phone, ClipboardCheck, Eye, Info, Link, ChevronUp, History, StickyNote, ExternalLink, MoreVertical, Send, Scan, TestTube2, Pill, Share, User, Download, ChevronRight, Calendar, Printer, ClipboardPlus, FileCheck, Wheat, Bell, FileHeart, HeartPulse, Paperclip, HelpCircle, MoreHorizontal, AlertTriangle, Upload as Upload$1, Camera, Check as Check$1, X as X$1, ScanLine, Image } from './chunk-BKSPDTX4.js';
158
+ export { Accessibility as AccessibilityIcon, Activity as ActivityIcon, AlertCircle as AlertCircleIcon, AlertTriangle as AlertTriangleIcon, Wheat as AllergyIcon, WheatOff as AllergyOffIcon, Ambulance as AmbulanceIcon, ArrowLeft as ArrowLeftIcon, ArrowRight as ArrowRightIcon, ArrowUpDown as ArrowUpDownIcon, ArrowUp as ArrowUpIcon, AtSign as AtSignIcon, Baby as BabyIcon, BadgeAlert as BadgeAlertIcon, BadgeCheck as BadgeCheckIcon, BadgeMinus as BadgeMinusIcon, BadgePlus as BadgePlusIcon, BadgeX as BadgeXIcon, Ban as BanIcon, Bandage as BandageIcon, BedDouble as BedDoubleIcon, Bed as BedIcon, BedSingle as BedSingleIcon, Bell as BellIcon, BellOff as BellOffIcon, Biohazard as BiohazardIcon, Bone as BoneIcon, BookOpenCheck as BookOpenCheckIcon, BookOpen as BookOpenIcon, Bookmark as BookmarkIcon, Bot as BotIcon, Brain as BrainIcon, Briefcase as BriefcaseIcon, BriefcaseMedical as BriefcaseMedicalIcon, Building as BuildingIcon, CalendarCheck as CalendarCheckIcon, Calendar as CalendarIcon, Camera as CameraIcon, Cannabis as CannabisIcon, BarChart3 as ChartIcon, CheckCircle as CheckCircleIcon, Check as CheckIcon, ChevronDown as ChevronDownIcon, ChevronLeft as ChevronLeftIcon, ChevronRight as ChevronRightIcon, ChevronUp as ChevronUpIcon, Cigarette as CigaretteIcon, CigaretteOff as CigaretteOffIcon, CircleDotDashed as CircleDotDashedIcon, CircleDot as CircleDotIcon, CircleUser as CircleUserIcon, ClipboardCheck as ClipboardCheckIcon, Clipboard as ClipboardIcon, ClipboardList as ClipboardListIcon, ClipboardPlus as ClipboardPlusIcon, Clock as ClockIcon, Cog as CogIcon, Columns as ColumnsIcon, Copy as CopyIcon, CreditCard as CreditCardIcon, Cross as CrossIcon, Dna as DnaIcon, DollarSign as DollarSignIcon, Download as DownloadIcon, Droplet as DropletIcon, Droplets as DropletsIcon, Ear as EarIcon, ExternalLink as ExternalLinkIcon, Eye as EyeIcon, EyeOff as EyeOffIcon, FileCheck2 as FileCheck2Icon, FileCheck as FileCheckIcon, FileHeart as FileHeartIcon, File as FileIcon, FilePlus2 as FilePlus2Icon, FilePlus as FilePlusIcon, FileText as FileTextIcon, Filter as FilterIcon, Fingerprint as FingerprintIcon, Flag as FlagIcon, FlaskConical as FlaskIcon, FlaskRound as FlaskRoundIcon, Folder as FolderIcon, FolderOpen as FolderOpenIcon, Footprints as FootprintsIcon, Glasses as GlassesIcon, Globe as GlobeIcon, LayoutGrid as GridIcon, GripVertical as GripVerticalIcon, Hand as HandIcon, HandMetal as HandMetalIcon, Hash as HashIcon, Heart as HeartIcon, HeartOff as HeartOffIcon, HeartPulse as HeartPulseIcon, HelpCircle as HelpCircleIcon, History as HistoryIcon, Home as HomeIcon, Hospital as HospitalIcon, Image as ImageIcon, Info as InfoIcon, Key as KeyIcon, Link as LinkIcon, List as ListIcon, Loader2 as LoaderIcon, Lock as LockIcon, LogIn as LogInIcon, LogOut as LogOutIcon, Mail as MailIcon, MapPin as MapPinIcon, Maximize as MaximizeIcon, Menu as MenuIcon, MessageSquare as MessageIcon, Mic as MicIcon, Microscope as MicroscopeIcon, Minimize as MinimizeIcon, Minus as MinusIcon, Monitor as MonitorIcon, Moon as MoonIcon, MoreHorizontal as MoreHorizontalIcon, MoreVertical as MoreVerticalIcon, NotebookPen as NotebookPenIcon, Palette as PaletteIcon, Paperclip as PaperclipIcon, CircleUserRound as PatientIcon, Pencil as PencilIcon, UserRound as PersonIcon, Phone as PhoneIcon, PieChart as PieChartIcon, Pill as PillIcon, Plus as PlusIcon, Printer as PrinterIcon, Radiation as RadiationIcon, Ruler as RulerIcon, Save as SaveIcon, Scale as ScaleIcon, Scaling as ScalingIcon, ScanEye as ScanEyeIcon, Scan as ScanIcon, ScanLine as ScanLineIcon, Search as SearchIcon, Settings as SettingsIcon, Share as ShareIcon, ShieldCheck as ShieldCheckIcon, Shield as ShieldIcon, ShieldPlus as ShieldPlusIcon, Sliders as SlidersIcon, Sparkle as SparkleIcon, Star as StarIcon, Stethoscope as StethoscopeIcon, StickyNote as StickyNoteIcon, Square as StopIcon, Sun as SunIcon, Syringe as SyringeIcon, Table as TableIcon, Tablets as TabletsIcon, Tag as TagIcon, TestTube2 as TestTubeIcon, TestTubes as TestTubesIcon, Thermometer as ThermometerIcon, ThermometerSun as ThermometerSunIcon, ThumbsDown as ThumbsDownIcon, ThumbsUp as ThumbsUpIcon, Timer as TimerIcon, Trash2 as TrashIcon, TrendingDown as TrendingDownIcon, TrendingUp as TrendingUpIcon, Truck as TruckIcon, Unlock as UnlockIcon, Upload as UploadIcon, UserCheck as UserCheckIcon, User as UserIcon, UserMinus as UserMinusIcon, UserPlus as UserPlusIcon, UserRoundCheck as UserRoundCheckIcon, UserRoundMinus as UserRoundMinusIcon, UserRoundPlus as UserRoundPlusIcon, UserRoundX as UserRoundXIcon, Users as UsersIcon, Weight as WeightIcon, Wrench as WrenchIcon, XCircle as XCircleIcon, X2 as XIcon, Zap as ZapIcon } from './chunk-BKSPDTX4.js';
159
+ import { usePrefersReducedMotion } from './chunk-HB7C7NB5.js';
160
+ export { usePrefersReducedMotion } from './chunk-HB7C7NB5.js';
161
+ import { Badge } from './chunk-BMSG4NBH.js';
162
+ export { Badge, badgeVariants } from './chunk-BMSG4NBH.js';
163
+ import { Button, buttonVariants } from './chunk-GOALNQZ2.js';
164
+ export { Button, buttonVariants } from './chunk-GOALNQZ2.js';
149
165
  export { isDarkMode, useIsDarkMode } from './chunk-RUGHNFQG.js';
166
+ import { AnimatedPresence, Animated } from './chunk-XCP454Q6.js';
167
+ export { Animated, AnimatedPresence, motionPresets, useMotionRuntime } from './chunk-XCP454Q6.js';
168
+ import { cn } from './chunk-TQONQSJO.js';
169
+ export { cn, miewebUITwMergeConflicts } from './chunk-TQONQSJO.js';
150
170
  import './chunk-PX6F3LHL.js';
151
171
  import * as React13 from 'react';
152
- import React13__default, { createContext, useState, useEffect, useCallback, useMemo, useContext, useRef } from 'react';
172
+ import React13__default, { createContext, useState, useEffect, useCallback, useMemo, useContext, useRef, useId } from 'react';
153
173
  import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
154
174
  import { cva } from 'class-variance-authority';
155
175
  import * as ReactDOM from 'react-dom';
@@ -1494,7 +1514,6 @@ function AIChat({
1494
1514
  renderTextContent,
1495
1515
  renderMessageFooter
1496
1516
  }) {
1497
- const messagesContainerRef = React13.useRef(null);
1498
1517
  React13.useEffect(() => {
1499
1518
  notifyComposerMigrationOnce("AIChat");
1500
1519
  }, []);
@@ -1503,10 +1522,108 @@ function AIChat({
1503
1522
  [session?.messages, messagesProp]
1504
1523
  );
1505
1524
  const isGenerating = session?.isGenerating || isGeneratingProp || false;
1525
+ const prefersReducedMotion = usePrefersReducedMotion();
1526
+ const {
1527
+ containerRef: messagesContainerRef,
1528
+ contentRef: messagesContentRef,
1529
+ isAtBottom,
1530
+ scrollToBottom,
1531
+ anchorToTurnStart,
1532
+ followIfPinned,
1533
+ stopFollowing
1534
+ } = useStickToBottom();
1535
+ const [hasNewBelow, setHasNewBelow] = React13.useState(false);
1536
+ const [turnStartId, setTurnStartId] = React13.useState(null);
1537
+ const [turnMinHeight, setTurnMinHeight] = React13.useState();
1538
+ const anchoredTurnRef = React13.useRef(null);
1506
1539
  React13.useEffect(() => {
1540
+ setTurnStartId(null);
1541
+ anchoredTurnRef.current = null;
1542
+ scrollToBottom("auto");
1543
+ setHasNewBelow(false);
1544
+ }, [session?.id, scrollToBottom]);
1545
+ const messageCount = messages.length;
1546
+ const prevMessageCountRef = React13.useRef(messageCount);
1547
+ const policySessionRef = React13.useRef(session?.id);
1548
+ const policyBaselinedRef = React13.useRef(false);
1549
+ React13.useEffect(() => {
1550
+ if (!policyBaselinedRef.current || policySessionRef.current !== session?.id) {
1551
+ policyBaselinedRef.current = true;
1552
+ policySessionRef.current = session?.id;
1553
+ prevMessageCountRef.current = messageCount;
1554
+ if (messages.at(-1)?.status === "streaming") stopFollowing();
1555
+ return;
1556
+ }
1557
+ const prevCount = prevMessageCountRef.current;
1558
+ if (messageCount === prevCount) return;
1559
+ const grew = messageCount > prevCount;
1560
+ prevMessageCountRef.current = messageCount;
1561
+ const ownMessage = grew ? messages.slice(prevCount).filter((m) => m.role === "user").at(-1) : void 0;
1562
+ if (ownMessage) {
1563
+ setTurnStartId(ownMessage.id);
1564
+ } else if (grew && messages.at(-1)?.status === "streaming") {
1565
+ followIfPinned("auto");
1566
+ stopFollowing();
1567
+ } else if (!followIfPinned("auto") && grew) {
1568
+ setHasNewBelow(true);
1569
+ }
1570
+ }, [messageCount, isAtBottom, session?.id]);
1571
+ React13.useLayoutEffect(() => {
1572
+ if (!turnStartId || anchoredTurnRef.current === turnStartId) return;
1507
1573
  const container = messagesContainerRef.current;
1508
- if (container) container.scrollTop = container.scrollHeight;
1509
- }, [messages]);
1574
+ if (!container) return;
1575
+ const reserve = Math.max(0, container.clientHeight - 32);
1576
+ if (turnMinHeight !== reserve) {
1577
+ setTurnMinHeight(reserve);
1578
+ return;
1579
+ }
1580
+ const target = container.querySelector(
1581
+ '[data-slot="ai-chat-turn"]'
1582
+ );
1583
+ if (target) {
1584
+ anchorToTurnStart(target, prefersReducedMotion ? "auto" : "smooth");
1585
+ anchoredTurnRef.current = turnStartId;
1586
+ }
1587
+ }, [
1588
+ turnStartId,
1589
+ turnMinHeight,
1590
+ anchorToTurnStart,
1591
+ prefersReducedMotion,
1592
+ messagesContainerRef
1593
+ ]);
1594
+ const turnIndex = React13.useMemo(
1595
+ () => turnStartId ? messages.findIndex((m) => m.id === turnStartId) : -1,
1596
+ [messages, turnStartId]
1597
+ );
1598
+ React13.useEffect(() => {
1599
+ if (isAtBottom) setHasNewBelow(false);
1600
+ }, [isAtBottom]);
1601
+ const raiseNewBelow = React13.useCallback(() => setHasNewBelow(true), []);
1602
+ const resumeFollowing = React13.useCallback(
1603
+ () => scrollToBottom("auto"),
1604
+ [scrollToBottom]
1605
+ );
1606
+ useStreamEndedBelowFold(
1607
+ messages.at(-1),
1608
+ isAtBottom,
1609
+ raiseNewBelow,
1610
+ resumeFollowing
1611
+ );
1612
+ const handleJumpToBottom = React13.useCallback(() => {
1613
+ scrollToBottom(prefersReducedMotion ? "auto" : "smooth");
1614
+ }, [scrollToBottom, prefersReducedMotion]);
1615
+ const renderMessageItem = (message) => /* @__PURE__ */ jsx(
1616
+ AIMessageDisplay,
1617
+ {
1618
+ message,
1619
+ userName,
1620
+ showTimestamp: showTimestamps,
1621
+ onLinkClick: handleLinkClick,
1622
+ renderTextContent,
1623
+ renderMessageFooter
1624
+ },
1625
+ message.id
1626
+ );
1510
1627
  const {
1511
1628
  showAttachmentPicker,
1512
1629
  inputTrailing,
@@ -1644,30 +1761,47 @@ function AIChat({
1644
1761
  ]
1645
1762
  }
1646
1763
  ),
1647
- /* @__PURE__ */ jsx(
1764
+ /* @__PURE__ */ jsxs(
1648
1765
  "div",
1649
1766
  {
1650
- ref: messagesContainerRef,
1651
- "data-slot": "ai-chat-messages",
1652
- className: "flex-1 overflow-y-auto px-4 py-4",
1653
- children: messages.length === 0 ? /* @__PURE__ */ jsx(
1654
- AIEmptyState,
1655
- {
1656
- suggestions,
1657
- onSuggestionSelect: handleSuggestionSelect
1658
- }
1659
- ) : /* @__PURE__ */ jsx("div", { className: "space-y-4", children: messages.map((message) => /* @__PURE__ */ jsx(
1660
- AIMessageDisplay,
1661
- {
1662
- message,
1663
- userName,
1664
- showTimestamp: showTimestamps,
1665
- onLinkClick: handleLinkClick,
1666
- renderTextContent,
1667
- renderMessageFooter
1668
- },
1669
- message.id
1670
- )) })
1767
+ "data-slot": "ai-chat-messages-viewport",
1768
+ className: "relative flex min-h-0 flex-1 flex-col",
1769
+ children: [
1770
+ /* @__PURE__ */ jsx(
1771
+ "div",
1772
+ {
1773
+ ref: messagesContainerRef,
1774
+ "data-slot": "ai-chat-messages",
1775
+ className: "flex-1 overflow-y-auto px-4 py-4",
1776
+ children: /* @__PURE__ */ jsx("div", { ref: messagesContentRef, children: messages.length === 0 ? /* @__PURE__ */ jsx(
1777
+ AIEmptyState,
1778
+ {
1779
+ suggestions,
1780
+ onSuggestionSelect: handleSuggestionSelect
1781
+ }
1782
+ ) : /* @__PURE__ */ jsxs("div", { className: "space-y-4", children: [
1783
+ (turnIndex === -1 ? messages : messages.slice(0, turnIndex)).map(renderMessageItem),
1784
+ turnIndex !== -1 && /* @__PURE__ */ jsx(
1785
+ "div",
1786
+ {
1787
+ "data-slot": "ai-chat-turn",
1788
+ className: "space-y-4",
1789
+ style: { minHeight: turnMinHeight },
1790
+ children: messages.slice(turnIndex).map(renderMessageItem)
1791
+ }
1792
+ )
1793
+ ] }) })
1794
+ }
1795
+ ),
1796
+ !isAtBottom && /* @__PURE__ */ jsx(
1797
+ JumpToBottomButton,
1798
+ {
1799
+ dataSlot: "ai-chat-jump-to-bottom",
1800
+ hasNewMessages: hasNewBelow,
1801
+ onClick: handleJumpToBottom
1802
+ }
1803
+ )
1804
+ ]
1671
1805
  }
1672
1806
  ),
1673
1807
  /* @__PURE__ */ jsxs(
@@ -3930,21 +4064,27 @@ function endsWithDone(text) {
3930
4064
  );
3931
4065
  }
3932
4066
  function useSpeakerVerify(opts = {}) {
3933
- const { enabled = true } = opts;
4067
+ const { enabled = true, voiceprintNamespace } = opts;
3934
4068
  const [ready, setReady] = React13.useState(false);
4069
+ const [loadedNamespace, setLoadedNamespace] = React13.useState();
3935
4070
  const [error, setError] = React13.useState(null);
3936
4071
  const svRef = React13.useRef(null);
3937
4072
  React13.useEffect(() => {
3938
4073
  if (!enabled) return;
4074
+ setReady(false);
4075
+ setError(null);
4076
+ svRef.current = null;
3939
4077
  let cancelled = false;
3940
4078
  (async () => {
3941
4079
  try {
3942
- await import('./speaker-verify-R67P433H.js');
4080
+ await import('./speaker-verify-AWSKI6DI.js');
3943
4081
  const sv = window.SpeakerVerify;
3944
4082
  if (!sv) throw new Error("SpeakerVerify failed to initialize");
3945
4083
  await sv.ready();
4084
+ await sv.loadNamespace(voiceprintNamespace);
3946
4085
  if (cancelled) return;
3947
4086
  svRef.current = sv;
4087
+ setLoadedNamespace(voiceprintNamespace);
3948
4088
  console.log("[speaker] TitaNet ready");
3949
4089
  setReady(true);
3950
4090
  } catch (e) {
@@ -3954,21 +4094,22 @@ function useSpeakerVerify(opts = {}) {
3954
4094
  return () => {
3955
4095
  cancelled = true;
3956
4096
  };
3957
- }, [enabled]);
4097
+ }, [enabled, voiceprintNamespace]);
4098
+ const scopedApi = enabled && ready && loadedNamespace === voiceprintNamespace ? svRef.current : null;
3958
4099
  return {
3959
- ready,
4100
+ ready: scopedApi !== null,
3960
4101
  error,
3961
- enroll: (phrase, utterances, opts2) => svRef.current?.enroll(phrase, utterances, opts2) ?? null,
3962
- verify: (phrase, samples, sampleRate) => svRef.current?.verify(phrase, samples, sampleRate) ?? null,
3963
- conditionCount: (phrase) => svRef.current?.conditionCount(phrase) ?? 0,
3964
- embed: (samples, sampleRate) => svRef.current?.embed(samples, sampleRate) ?? null,
3965
- identify: (samples, sampleRate) => svRef.current?.identify(samples, sampleRate) ?? null,
3966
- listVoices: () => svRef.current?.listVoices() ?? [],
3967
- removeVoice: (voiceId) => svRef.current?.removeVoice(voiceId),
3968
- renameVoice: (voiceId, label) => svRef.current?.renameVoice(voiceId, label),
3969
- clear: () => svRef.current?.clearEnrollment(),
4102
+ enroll: (phrase, utterances, opts2) => scopedApi?.enroll(phrase, utterances, opts2, voiceprintNamespace) ?? null,
4103
+ verify: (phrase, samples, sampleRate) => scopedApi?.verify(phrase, samples, sampleRate, voiceprintNamespace) ?? null,
4104
+ conditionCount: (phrase) => scopedApi?.conditionCount(phrase, voiceprintNamespace) ?? 0,
4105
+ embed: (samples, sampleRate) => scopedApi?.embed(samples, sampleRate) ?? null,
4106
+ identify: (samples, sampleRate) => scopedApi?.identify(samples, sampleRate, voiceprintNamespace) ?? null,
4107
+ listVoices: () => scopedApi?.listVoices(voiceprintNamespace) ?? [],
4108
+ removeVoice: (voiceId) => scopedApi?.removeVoice(voiceId, voiceprintNamespace),
4109
+ renameVoice: (voiceId, label) => scopedApi?.renameVoice(voiceId, label, voiceprintNamespace),
4110
+ clear: () => scopedApi?.clearEnrollment(voiceprintNamespace),
3970
4111
  setGates: (g) => {
3971
- const sv = svRef.current;
4112
+ const sv = scopedApi;
3972
4113
  if (!sv) return;
3973
4114
  if (g.cosine != null) sv.threshold = g.cosine;
3974
4115
  if (g.znorm != null) sv.znormThreshold = g.znorm;
@@ -4151,11 +4292,14 @@ function useDiarization(options = {}) {
4151
4292
  merge = true,
4152
4293
  inferRoles = false,
4153
4294
  enabled = true,
4154
- minSegmentSeconds = 1
4295
+ minSegmentSeconds = 1,
4296
+ voiceprintNamespace
4155
4297
  } = options;
4156
- const sv = useSpeakerVerify({ enabled });
4298
+ const sv = useSpeakerVerify({ enabled, voiceprintNamespace });
4157
4299
  const svRef = React13.useRef(sv);
4158
4300
  svRef.current = sv;
4301
+ const nsRef = React13.useRef(voiceprintNamespace);
4302
+ nsRef.current = voiceprintNamespace;
4159
4303
  const [busy, setBusy] = React13.useState(false);
4160
4304
  const [error, setError] = React13.useState(null);
4161
4305
  const [result, setResult] = React13.useState(null);
@@ -4168,10 +4312,16 @@ function useDiarization(options = {}) {
4168
4312
  setError(null);
4169
4313
  try {
4170
4314
  const svh = svRef.current;
4315
+ const passNamespace = nsRef.current;
4316
+ const assertNamespace = () => {
4317
+ if (nsRef.current !== passNamespace)
4318
+ throw new Error("voiceprint namespace changed during diarization");
4319
+ };
4171
4320
  const [segments, samples] = await Promise.all([
4172
4321
  transcribeSegments(blob),
4173
4322
  decodeTo16kMono(blob)
4174
4323
  ]);
4324
+ assertNamespace();
4175
4325
  if (!segments.length) {
4176
4326
  setResult([]);
4177
4327
  return [];
@@ -4226,6 +4376,7 @@ function useDiarization(options = {}) {
4226
4376
  }
4227
4377
  }
4228
4378
  if (merge) out = mergeTurns(out);
4379
+ assertNamespace();
4229
4380
  setResult(out);
4230
4381
  return out;
4231
4382
  } catch (e) {
@@ -4248,158 +4399,6 @@ function useDiarization(options = {}) {
4248
4399
  return { ready: sv.ready, busy, error, result, diarize };
4249
4400
  }
4250
4401
 
4251
- // src/components/AI/voiceprintStore.ts
4252
- var DB_NAME = "ozwell-voice";
4253
- var STORE = "voiceprints";
4254
- var DB_VERSION = 1;
4255
- function openDb() {
4256
- return new Promise((resolve, reject) => {
4257
- const req = indexedDB.open(DB_NAME, DB_VERSION);
4258
- req.onupgradeneeded = () => {
4259
- if (!req.result.objectStoreNames.contains(STORE))
4260
- req.result.createObjectStore(STORE);
4261
- };
4262
- req.onsuccess = () => resolve(req.result);
4263
- req.onerror = () => reject(req.error);
4264
- req.onblocked = () => reject(
4265
- new Error("IndexedDB open blocked (another tab holds an upgrade lock)")
4266
- );
4267
- });
4268
- }
4269
- function idbGet(key) {
4270
- return openDb().then(
4271
- (db) => new Promise((resolve, reject) => {
4272
- const req = db.transaction(STORE, "readonly").objectStore(STORE).get(key);
4273
- req.onsuccess = () => {
4274
- resolve(req.result);
4275
- db.close();
4276
- };
4277
- req.onerror = () => {
4278
- reject(req.error);
4279
- db.close();
4280
- };
4281
- })
4282
- );
4283
- }
4284
- function idbSet(key, value) {
4285
- return openDb().then(
4286
- (db) => new Promise((resolve, reject) => {
4287
- const tx = db.transaction(STORE, "readwrite");
4288
- tx.objectStore(STORE).put(value, key);
4289
- tx.oncomplete = () => {
4290
- resolve();
4291
- db.close();
4292
- };
4293
- tx.onerror = () => {
4294
- reject(tx.error);
4295
- db.close();
4296
- };
4297
- tx.onabort = () => {
4298
- reject(tx.error);
4299
- db.close();
4300
- };
4301
- })
4302
- );
4303
- }
4304
- function idbDel(key) {
4305
- return openDb().then(
4306
- (db) => new Promise((resolve, reject) => {
4307
- const tx = db.transaction(STORE, "readwrite");
4308
- tx.objectStore(STORE).delete(key);
4309
- tx.oncomplete = () => {
4310
- resolve();
4311
- db.close();
4312
- };
4313
- tx.onerror = () => {
4314
- reject(tx.error);
4315
- db.close();
4316
- };
4317
- tx.onabort = () => {
4318
- reject(tx.error);
4319
- db.close();
4320
- };
4321
- })
4322
- );
4323
- }
4324
- async function getVoiceprints(key, migrateLegacy) {
4325
- try {
4326
- const existing = await idbGet(key);
4327
- if (existing !== void 0) return existing;
4328
- if (migrateLegacy) {
4329
- let raw = null;
4330
- try {
4331
- raw = localStorage.getItem(key);
4332
- } catch {
4333
- }
4334
- if (raw != null) {
4335
- let migrated;
4336
- try {
4337
- migrated = migrateLegacy(raw);
4338
- } catch {
4339
- try {
4340
- localStorage.removeItem(key);
4341
- } catch {
4342
- }
4343
- return void 0;
4344
- }
4345
- try {
4346
- await idbSet(key, migrated);
4347
- } catch {
4348
- }
4349
- try {
4350
- localStorage.removeItem(key);
4351
- } catch {
4352
- }
4353
- return migrated;
4354
- }
4355
- }
4356
- return void 0;
4357
- } catch {
4358
- return void 0;
4359
- }
4360
- }
4361
- async function setVoiceprints(key, value) {
4362
- try {
4363
- await idbSet(key, value);
4364
- } catch {
4365
- }
4366
- }
4367
- async function clearVoiceprints(key) {
4368
- try {
4369
- await idbDel(key);
4370
- } catch {
4371
- }
4372
- try {
4373
- localStorage.removeItem(key);
4374
- } catch {
4375
- }
4376
- }
4377
- var WHAT_KEY = "ozwellWhatPrints";
4378
- function parseLegacyWhat(raw) {
4379
- let o;
4380
- try {
4381
- o = JSON.parse(raw || "{}") || {};
4382
- } catch {
4383
- return {};
4384
- }
4385
- const out = /* @__PURE__ */ Object.create(null);
4386
- for (const k of Object.keys(o))
4387
- out[k] = (o[k] || []).map((a) => Float32Array.from(a));
4388
- return out;
4389
- }
4390
- function loadWhatPrints() {
4391
- return getVoiceprints(
4392
- WHAT_KEY,
4393
- parseLegacyWhat
4394
- ).then((v) => v ?? {});
4395
- }
4396
- function saveWhatPrints(map) {
4397
- return setVoiceprints(WHAT_KEY, map);
4398
- }
4399
- function clearWhatPrints() {
4400
- return clearVoiceprints(WHAT_KEY);
4401
- }
4402
-
4403
4402
  // src/components/AI/HeyOzwell/audio.ts
4404
4403
  function openRollingRecorder(stream, maxSeconds = 2) {
4405
4404
  const Ctx = window.AudioContext || window.webkitAudioContext;
@@ -4567,6 +4566,7 @@ function useRoomLevel(getStream, ready) {
4567
4566
  }
4568
4567
  function useHeyOzwell(options = {}) {
4569
4568
  const {
4569
+ voiceprintNamespace,
4570
4570
  autoDictateOnWake = false,
4571
4571
  closeChatOnDone = false,
4572
4572
  transcription = "browser",
@@ -4626,13 +4626,14 @@ function useHeyOzwell(options = {}) {
4626
4626
  setLiveText("");
4627
4627
  }, []);
4628
4628
  const wakeRef = React13.useRef(null);
4629
- const sv = useSpeakerVerify({ enabled: requireDoctor });
4629
+ const sv = useSpeakerVerify({ enabled: requireDoctor, voiceprintNamespace });
4630
4630
  const svRef = React13.useRef(sv);
4631
4631
  svRef.current = sv;
4632
4632
  const rollRef = React13.useRef(null);
4633
4633
  const diar = useDiarization({
4634
4634
  ...diarizationOptions,
4635
- enabled: conversationMode
4635
+ enabled: conversationMode,
4636
+ voiceprintNamespace
4636
4637
  });
4637
4638
  const diarRef = React13.useRef(diar);
4638
4639
  diarRef.current = diar;
@@ -4640,6 +4641,7 @@ function useHeyOzwell(options = {}) {
4640
4641
  (name) => {
4641
4642
  if (!requireDoctor) return true;
4642
4643
  const svh = svRef.current;
4644
+ if (!svh.ready) return false;
4643
4645
  const enrolled = svh.conditionCount(name) > 0;
4644
4646
  if (!enrolled) return true;
4645
4647
  const roll = rollRef.current;
@@ -4844,9 +4846,14 @@ function useHeyOzwell(options = {}) {
4844
4846
  if (!requireDoctor || !active || !wake.ready) return;
4845
4847
  let cancelled = false;
4846
4848
  let tries = 0;
4847
- void loadWhatPrints().then((loaded) => {
4849
+ const applied = /* @__PURE__ */ new Set(["hey-ozwell", "ozwell-i'm-done"]);
4850
+ for (const k of applied) wakeRef.current?.setVoiceprint(k, []);
4851
+ void loadWhatPrints(voiceprintNamespace).then((loaded) => {
4848
4852
  if (cancelled) return;
4849
- for (const k in loaded) wakeRef.current?.setVoiceprint(k, loaded[k]);
4853
+ for (const k in loaded) {
4854
+ applied.add(k);
4855
+ wakeRef.current?.setVoiceprint(k, loaded[k]);
4856
+ }
4850
4857
  });
4851
4858
  const tryOpen = () => {
4852
4859
  if (cancelled || rollRef.current) return;
@@ -4857,10 +4864,11 @@ function useHeyOzwell(options = {}) {
4857
4864
  tryOpen();
4858
4865
  return () => {
4859
4866
  cancelled = true;
4867
+ for (const k of applied) wakeRef.current?.setVoiceprint(k, []);
4860
4868
  rollRef.current?.close();
4861
4869
  rollRef.current = null;
4862
4870
  };
4863
- }, [requireDoctor, active, wake.ready]);
4871
+ }, [requireDoctor, active, wake.ready, voiceprintNamespace]);
4864
4872
  const hasListenedRef = React13.useRef(false);
4865
4873
  React13.useEffect(() => {
4866
4874
  if (listening) hasListenedRef.current = true;
@@ -5152,11 +5160,11 @@ var REPS = 3;
5152
5160
  var TIMEOUT_MS = 5e3;
5153
5161
  var delay = (ms) => new Promise((r) => setTimeout(r, ms));
5154
5162
  function useVoiceSetup(options = {}) {
5155
- const { startAdding = false, voiceId, label } = options;
5163
+ const { startAdding = false, voiceId, label, voiceprintNamespace } = options;
5156
5164
  const [enrollVoiceId] = React13.useState(
5157
5165
  () => voiceId || (startAdding ? `voice-${Date.now()}-${Math.floor(Math.random() * 1e4)}` : "you")
5158
5166
  );
5159
- const sv = useSpeakerVerify();
5167
+ const sv = useSpeakerVerify({ voiceprintNamespace });
5160
5168
  const expectRef = React13.useRef(null);
5161
5169
  const resolveRef = React13.useRef(null);
5162
5170
  const whatRef = React13.useRef({});
@@ -5178,10 +5186,19 @@ function useVoiceSetup(options = {}) {
5178
5186
  const total = PHRASES2.length * REPS;
5179
5187
  React13.useEffect(() => {
5180
5188
  warmWhisper();
5181
- void loadWhatPrints().then((w) => {
5182
- whatRef.current = w;
5189
+ let cancelled = false;
5190
+ whatRef.current = {};
5191
+ void loadWhatPrints(voiceprintNamespace).then((w) => {
5192
+ if (!cancelled) whatRef.current = w;
5183
5193
  });
5184
- }, []);
5194
+ return () => {
5195
+ cancelled = true;
5196
+ abortRef.current = true;
5197
+ resolveRef.current?.("__cancelled__");
5198
+ setPhase("intro");
5199
+ setStep(0);
5200
+ };
5201
+ }, [voiceprintNamespace]);
5185
5202
  React13.useEffect(() => {
5186
5203
  if (!wake.ready) {
5187
5204
  setLevel(0);
@@ -5293,10 +5310,10 @@ function useVoiceSetup(options = {}) {
5293
5310
  whatRef.current[ph.key] = merged;
5294
5311
  wakeRef.current.setVoiceprint(ph.key, merged);
5295
5312
  }
5296
- void saveWhatPrints(whatRef.current);
5313
+ void saveWhatPrints(whatRef.current, voiceprintNamespace);
5297
5314
  setAdding(false);
5298
5315
  setPhase("done");
5299
- }, [bothReady, phase, adding, sv, enrollVoiceId, label]);
5316
+ }, [bothReady, phase, adding, sv, enrollVoiceId, label, voiceprintNamespace]);
5300
5317
  const addAnotherSpot = React13.useCallback(() => {
5301
5318
  setAdding(true);
5302
5319
  setPhase("intro");
@@ -5329,6 +5346,7 @@ var SUCCESS = "var(--mieweb-success, hsl(142.1 76.2% 36.3%))";
5329
5346
  var ozA2 = (pct) => `color-mix(in srgb, ${OZ2} ${pct}%, transparent)`;
5330
5347
  var ozBtn = "bg-ozwell hover:bg-ozwell active:bg-ozwell text-ozwell-foreground hover:brightness-95 active:brightness-90";
5331
5348
  function VoiceSetup({
5349
+ voiceprintNamespace,
5332
5350
  mode = "enroll",
5333
5351
  voiceId,
5334
5352
  label,
@@ -5336,7 +5354,12 @@ function VoiceSetup({
5336
5354
  onDone,
5337
5355
  onCancel
5338
5356
  }) {
5339
- const oz = useVoiceSetup({ startAdding: mode === "add", voiceId, label });
5357
+ const oz = useVoiceSetup({
5358
+ startAdding: mode === "add",
5359
+ voiceId,
5360
+ label,
5361
+ voiceprintNamespace
5362
+ });
5340
5363
  const { phase, phrase, step, total, adding, level, ready, error } = oz;
5341
5364
  const octoScale = 1 + Math.min(0.32, level * 2.2);
5342
5365
  const glowOpacity = 0.35 + Math.min(0.6, level * 4);
@@ -5547,8 +5570,11 @@ function VoiceSetup({
5547
5570
  var OZ3 = "var(--mieweb-ozwell, #0BA0E0)";
5548
5571
  var ozBtn2 = "bg-ozwell hover:bg-ozwell active:bg-ozwell text-ozwell-foreground hover:brightness-95 active:brightness-90";
5549
5572
  var dangerOutline = "border-destructive text-destructive hover:bg-destructive/10 hover:text-destructive";
5550
- function VoiceManager({ logoSrc }) {
5551
- const sv = useSpeakerVerify();
5573
+ function VoiceManager({
5574
+ logoSrc,
5575
+ voiceprintNamespace
5576
+ }) {
5577
+ const sv = useSpeakerVerify({ voiceprintNamespace });
5552
5578
  const [inSetup, setInSetup] = React13.useState(null);
5553
5579
  const [, setTick] = React13.useState(0);
5554
5580
  const [addName, setAddName] = React13.useState("");
@@ -5560,6 +5586,7 @@ function VoiceManager({ logoSrc }) {
5560
5586
  return /* @__PURE__ */ jsx(
5561
5587
  VoiceSetup,
5562
5588
  {
5589
+ voiceprintNamespace,
5563
5590
  mode: inSetup.mode,
5564
5591
  voiceId: inSetup.voiceId,
5565
5592
  label: inSetup.label,
@@ -5591,7 +5618,7 @@ function VoiceManager({ logoSrc }) {
5591
5618
  };
5592
5619
  const clearAll = () => {
5593
5620
  sv.clear();
5594
- void clearWhatPrints();
5621
+ void clearWhatPrints(voiceprintNamespace);
5595
5622
  setTick((t) => t + 1);
5596
5623
  };
5597
5624
  return /* @__PURE__ */ jsxs("div", { className: "bg-background text-foreground flex min-h-full flex-col items-center justify-center p-6 text-center", children: [
@@ -5741,6 +5768,7 @@ function VoiceManager({ logoSrc }) {
5741
5768
  ] });
5742
5769
  }
5743
5770
  function HandsFreeChat({
5771
+ voiceprintNamespace,
5744
5772
  title = "Ozwell Assistant \u2014 hands-free",
5745
5773
  suggestions,
5746
5774
  userName,
@@ -5753,6 +5781,7 @@ function HandsFreeChat({
5753
5781
  autoDictateOnWake = true
5754
5782
  }) {
5755
5783
  const oz = useHeyOzwell({
5784
+ voiceprintNamespace,
5756
5785
  autoStart: true,
5757
5786
  // always listening while mounted
5758
5787
  autoDictateOnWake,
@@ -5831,7 +5860,13 @@ function HandsFreeChat({
5831
5860
  /* @__PURE__ */ jsx(ModalTitle, { children: "Your voice" }),
5832
5861
  /* @__PURE__ */ jsx(ModalClose, {})
5833
5862
  ] }),
5834
- /* @__PURE__ */ jsx(ModalBody, { children: /* @__PURE__ */ jsx(VoiceManager, { logoSrc }) })
5863
+ /* @__PURE__ */ jsx(ModalBody, { children: /* @__PURE__ */ jsx(
5864
+ VoiceManager,
5865
+ {
5866
+ logoSrc,
5867
+ voiceprintNamespace
5868
+ }
5869
+ ) })
5835
5870
  ] })
5836
5871
  ] });
5837
5872
  }
@@ -13919,7 +13954,7 @@ var overlayVariants = cva(
13919
13954
  }
13920
13955
  }
13921
13956
  );
13922
- var cardVariants2 = cva(
13957
+ var cardVariants3 = cva(
13923
13958
  "mx-4 w-full max-w-lg rounded-xl bg-white p-6 shadow-2xl dark:bg-gray-800",
13924
13959
  {
13925
13960
  variants: {
@@ -13958,7 +13993,7 @@ function ConnectionStatusOverlay({
13958
13993
  "div",
13959
13994
  {
13960
13995
  "data-slot": "connection-overlay-card",
13961
- className: cn(cardVariants2({ animate })),
13996
+ className: cn(cardVariants3({ animate })),
13962
13997
  children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col items-center gap-4 text-center md:flex-row md:text-start", children: [
13963
13998
  /* @__PURE__ */ jsx("div", { className: "shrink-0", children: /* @__PURE__ */ jsx(ConnectionIcon, { status: connection.status, className: "h-12 w-12" }) }),
13964
13999
  /* @__PURE__ */ jsxs("div", { "data-slot": "connection-overlay-content", className: "flex-1", children: [
@@ -14011,7 +14046,7 @@ function UpdateAvailableOverlay({
14011
14046
  "div",
14012
14047
  {
14013
14048
  "data-slot": "update-overlay-card",
14014
- className: cn(cardVariants2({ animate: true })),
14049
+ className: cn(cardVariants3({ animate: true })),
14015
14050
  children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col items-center gap-4 text-center md:flex-row md:text-start", children: [
14016
14051
  /* @__PURE__ */ jsx("div", { className: "shrink-0", children: logoUrl ? /* @__PURE__ */ jsx(
14017
14052
  "img",
@@ -40800,86 +40835,149 @@ function SidebarNavGroup({
40800
40835
  children,
40801
40836
  defaultExpanded = false,
40802
40837
  groupId,
40803
- className
40838
+ className,
40839
+ forceMount
40804
40840
  }) {
40805
40841
  const { isCollapsed, isMobileViewport, expandedGroup, toggleGroup } = useSidebar();
40806
40842
  const showCollapsed = !isMobileViewport && isCollapsed;
40843
+ const prefersReducedMotion = usePrefersReducedMotion();
40844
+ const contentId = useId();
40845
+ const groupRef = useRef(null);
40846
+ const triggerRef = useRef(null);
40807
40847
  const isExpanded = groupId ? expandedGroup === groupId : defaultExpanded;
40808
40848
  const [localExpanded, setLocalExpanded] = useState(defaultExpanded);
40809
40849
  const effectiveExpanded = groupId ? isExpanded : localExpanded;
40850
+ const itemsVisible = !showCollapsed && effectiveExpanded;
40851
+ const focusWasInsideRef = useRef(false);
40852
+ const captureFocusInside = useCallback(() => {
40853
+ const active = document.activeElement;
40854
+ focusWasInsideRef.current = active !== triggerRef.current && groupRef.current?.contains(active) === true;
40855
+ }, []);
40856
+ useEffect(() => {
40857
+ if (!itemsVisible) return;
40858
+ function trackFocus(event) {
40859
+ const target = event.target;
40860
+ focusWasInsideRef.current = target !== triggerRef.current && groupRef.current?.contains(target) === true;
40861
+ }
40862
+ document.addEventListener("focusin", trackFocus);
40863
+ return () => document.removeEventListener("focusin", trackFocus);
40864
+ }, [itemsVisible]);
40865
+ useEffect(() => {
40866
+ if (itemsVisible) return;
40867
+ if (focusWasInsideRef.current) {
40868
+ focusWasInsideRef.current = false;
40869
+ triggerRef.current?.focus();
40870
+ }
40871
+ }, [itemsVisible]);
40810
40872
  const handleToggle = useCallback(() => {
40873
+ captureFocusInside();
40811
40874
  if (groupId) {
40812
40875
  toggleGroup(groupId);
40813
40876
  } else {
40814
40877
  setLocalExpanded((prev) => !prev);
40815
40878
  }
40816
- }, [groupId, toggleGroup]);
40817
- return /* @__PURE__ */ jsxs("div", { "data-slot": "sidebar-nav-group", className: cn("mb-2", className), children: [
40818
- /* @__PURE__ */ jsxs(
40819
- "button",
40820
- {
40821
- "data-slot": "sidebar-nav-group-button",
40822
- onClick: handleToggle,
40823
- className: cn(
40824
- "flex w-full items-center rounded-lg px-3 py-2 text-sm font-semibold",
40825
- "text-neutral-700 dark:text-neutral-300",
40826
- "transition-colors hover:bg-neutral-100 dark:hover:bg-neutral-800",
40827
- showCollapsed && "justify-center"
40828
- ),
40829
- title: showCollapsed ? label : void 0,
40830
- "aria-label": showCollapsed ? label : void 0,
40831
- children: [
40832
- icon && /* @__PURE__ */ jsx(
40833
- "span",
40834
- {
40835
- className: cn(
40836
- "text-muted-foreground h-5 w-5 flex-shrink-0",
40837
- !showCollapsed && "me-3"
40838
- ),
40839
- children: icon
40840
- }
40841
- ),
40842
- /* @__PURE__ */ jsxs(AnimatedPresence, { initial: false, children: [
40843
- !showCollapsed && /* @__PURE__ */ jsx(
40844
- Animated,
40845
- {
40846
- as: "span",
40847
- preset: "sidebarLabel",
40848
- mode: "presence",
40849
- className: "flex-1 truncate text-start",
40850
- children: label
40851
- },
40852
- "label"
40879
+ }, [captureFocusInside, groupId, toggleGroup]);
40880
+ const items = /* @__PURE__ */ jsx("div", { className: "mt-1 ps-2", children });
40881
+ const panelInDom = forceMount || itemsVisible;
40882
+ return /* @__PURE__ */ jsxs(
40883
+ "div",
40884
+ {
40885
+ ref: groupRef,
40886
+ "data-slot": "sidebar-nav-group",
40887
+ className: cn("mb-2", className),
40888
+ children: [
40889
+ /* @__PURE__ */ jsxs(
40890
+ "button",
40891
+ {
40892
+ ref: triggerRef,
40893
+ "data-slot": "sidebar-nav-group-button",
40894
+ onClick: handleToggle,
40895
+ "aria-expanded": itemsVisible,
40896
+ "aria-controls": panelInDom ? contentId : void 0,
40897
+ className: cn(
40898
+ "flex w-full items-center rounded-lg px-3 py-2 text-sm font-semibold",
40899
+ "text-neutral-700 dark:text-neutral-300",
40900
+ "transition-colors hover:bg-neutral-100 dark:hover:bg-neutral-800",
40901
+ showCollapsed && "justify-center"
40853
40902
  ),
40854
- !showCollapsed && /* @__PURE__ */ jsx(
40855
- Animated,
40856
- {
40857
- as: "span",
40858
- preset: "sidebarLabel",
40859
- mode: "presence",
40860
- className: cn(
40861
- "ms-2 flex-shrink-0 transition-transform duration-200",
40862
- effectiveExpanded && "rotate-180"
40903
+ title: showCollapsed ? label : void 0,
40904
+ "aria-label": showCollapsed ? label : void 0,
40905
+ children: [
40906
+ icon && /* @__PURE__ */ jsx(
40907
+ "span",
40908
+ {
40909
+ className: cn(
40910
+ "text-muted-foreground h-5 w-5 flex-shrink-0",
40911
+ !showCollapsed && "me-3"
40912
+ ),
40913
+ children: icon
40914
+ }
40915
+ ),
40916
+ /* @__PURE__ */ jsxs(AnimatedPresence, { initial: false, children: [
40917
+ !showCollapsed && /* @__PURE__ */ jsx(
40918
+ Animated,
40919
+ {
40920
+ as: "span",
40921
+ preset: "sidebarLabel",
40922
+ mode: "presence",
40923
+ className: "flex-1 truncate text-start",
40924
+ children: label
40925
+ },
40926
+ "label"
40863
40927
  ),
40864
- children: /* @__PURE__ */ jsx(ChevronDownIcon4, {})
40865
- },
40866
- "chevron"
40867
- )
40868
- ] })
40869
- ]
40870
- }
40871
- ),
40872
- !showCollapsed && /* @__PURE__ */ jsx(
40873
- "div",
40874
- {
40875
- className: cn(
40876
- "overflow-hidden transition-all duration-300",
40877
- effectiveExpanded ? "mt-1 max-h-[1000px] opacity-100" : "max-h-0 opacity-0"
40928
+ !showCollapsed && /* @__PURE__ */ jsx(
40929
+ Animated,
40930
+ {
40931
+ as: "span",
40932
+ preset: "sidebarLabel",
40933
+ mode: "presence",
40934
+ className: cn(
40935
+ "ms-2 flex-shrink-0 transition-transform duration-200",
40936
+ effectiveExpanded && "rotate-180"
40937
+ ),
40938
+ children: /* @__PURE__ */ jsx(ChevronDownIcon4, {})
40939
+ },
40940
+ "chevron"
40941
+ )
40942
+ ] })
40943
+ ]
40944
+ }
40878
40945
  ),
40879
- children: /* @__PURE__ */ jsx("div", { className: "ps-2", children })
40880
- }
40881
- )
40882
- ] });
40946
+ forceMount ? (
40947
+ /*
40948
+ * Deliberately outside the rail-collapsed gate. Gating it there would
40949
+ * unmount the items whenever the sidebar collapsed, destroying exactly
40950
+ * the state this prop exists to preserve — the prop would hold its
40951
+ * promise for the group's own toggle and quietly break it for the
40952
+ * rail's, which is worse than not offering it.
40953
+ */
40954
+ /* @__PURE__ */ jsx(
40955
+ "div",
40956
+ {
40957
+ id: contentId,
40958
+ "data-slot": "sidebar-nav-group-items",
40959
+ "data-state": itemsVisible ? "open" : "closed",
40960
+ hidden: !itemsVisible,
40961
+ children: items
40962
+ }
40963
+ )
40964
+ ) : !showCollapsed && /* @__PURE__ */ jsx(AnimatedPresence, { initial: false, children: effectiveExpanded && /* @__PURE__ */ jsx(
40965
+ Animated,
40966
+ {
40967
+ id: contentId,
40968
+ "data-slot": "sidebar-nav-group-items",
40969
+ "data-state": "open",
40970
+ preset: "collapse",
40971
+ mode: "presence",
40972
+ enabled: !prefersReducedMotion,
40973
+ className: "overflow-hidden",
40974
+ children: items
40975
+ },
40976
+ "items"
40977
+ ) })
40978
+ ]
40979
+ }
40980
+ );
40883
40981
  }
40884
40982
  function SidebarNavItem({
40885
40983
  label,
@@ -42010,6 +42108,8 @@ function MobileMenuPanel({
42010
42108
  isOpen,
42011
42109
  onClose,
42012
42110
  links,
42111
+ menus = [],
42112
+ currentPath,
42013
42113
  user,
42014
42114
  onLogin,
42015
42115
  onSignUp,
@@ -42017,6 +42117,33 @@ function MobileMenuPanel({
42017
42117
  className
42018
42118
  }) {
42019
42119
  if (!isOpen) return null;
42120
+ const curPath = currentPath ? normalizePath(currentPath) : null;
42121
+ const isCurrent = (href) => curPath !== null && normalizePath(href) === curPath;
42122
+ const sectionLinkClass = "text-muted-foreground block rounded-lg px-4 py-2 text-xs font-bold tracking-wider uppercase hover:bg-gray-100 dark:hover:bg-gray-800";
42123
+ const itemLinkClass = "flex items-center gap-2 rounded-lg px-4 py-2.5 text-gray-700 hover:bg-gray-100 dark:text-gray-300 dark:hover:bg-gray-800";
42124
+ const renderItem = (it) => /* @__PURE__ */ jsx(
42125
+ "a",
42126
+ {
42127
+ href: it.href,
42128
+ target: it.external ? "_blank" : void 0,
42129
+ rel: it.external ? "noopener noreferrer" : void 0,
42130
+ "aria-current": isCurrent(it.href) ? "page" : void 0,
42131
+ onClick: onClose,
42132
+ className: itemLinkClass,
42133
+ children: it.label
42134
+ },
42135
+ it.href
42136
+ );
42137
+ const renderSectionLabel = (label, href) => href ? /* @__PURE__ */ jsx(
42138
+ "a",
42139
+ {
42140
+ href,
42141
+ onClick: onClose,
42142
+ "aria-current": isCurrent(href) ? "page" : void 0,
42143
+ className: sectionLinkClass,
42144
+ children: label
42145
+ }
42146
+ ) : /* @__PURE__ */ jsx("p", { className: cn(sectionLinkClass, "hover:bg-transparent"), children: label });
42020
42147
  return /* @__PURE__ */ jsxs(Fragment, { children: [
42021
42148
  /* @__PURE__ */ jsx(
42022
42149
  "div",
@@ -42047,21 +42174,40 @@ function MobileMenuPanel({
42047
42174
  }
42048
42175
  )
42049
42176
  ] }),
42050
- /* @__PURE__ */ jsx("nav", { className: "space-y-1 p-4", children: links.map((link) => /* @__PURE__ */ jsxs(
42051
- "a",
42052
- {
42053
- href: link.href,
42054
- target: link.external ? "_blank" : void 0,
42055
- rel: link.external ? "noopener noreferrer" : void 0,
42056
- className: "flex items-center gap-2 rounded-lg px-4 py-3 text-gray-700 hover:bg-gray-100 dark:text-gray-300 dark:hover:bg-gray-800",
42057
- onClick: onClose,
42058
- children: [
42059
- link.label,
42060
- link.external && /* @__PURE__ */ jsx(ExternalLinkIcon2, { className: "h-4 w-4 opacity-50" })
42061
- ]
42062
- },
42063
- link.href
42064
- )) }),
42177
+ /* @__PURE__ */ jsxs("nav", { className: "max-h-[calc(100dvh-10rem)] space-y-1 overflow-y-auto p-4", children: [
42178
+ menus.map((menu) => /* @__PURE__ */ jsxs("div", { className: "pb-2", children: [
42179
+ renderSectionLabel(menu.label, menu.href),
42180
+ menu.groups ? (
42181
+ // Preserve each group's heading (and heading link) so the
42182
+ // grouped menu keeps its section context in the drawer.
42183
+ menu.groups.map((g) => /* @__PURE__ */ jsxs("div", { className: "pb-1", children: [
42184
+ renderSectionLabel(g.label, g.href),
42185
+ g.items.map(renderItem)
42186
+ ] }, g.label))
42187
+ ) : (menu.items ?? []).map(renderItem),
42188
+ menu.allHref && renderItem({
42189
+ label: menu.allLabel ?? "Browse all",
42190
+ href: menu.allHref
42191
+ }),
42192
+ menu.ctaHref && menu.ctaLabel && renderItem({ label: menu.ctaLabel, href: menu.ctaHref })
42193
+ ] }, menu.key)),
42194
+ links.map((link) => /* @__PURE__ */ jsxs(
42195
+ "a",
42196
+ {
42197
+ href: link.href,
42198
+ target: link.external ? "_blank" : void 0,
42199
+ rel: link.external ? "noopener noreferrer" : void 0,
42200
+ "aria-current": isCurrent(link.href) ? "page" : void 0,
42201
+ className: "flex items-center gap-2 rounded-lg px-4 py-3 text-gray-700 hover:bg-gray-100 dark:text-gray-300 dark:hover:bg-gray-800",
42202
+ onClick: onClose,
42203
+ children: [
42204
+ link.label,
42205
+ link.external && /* @__PURE__ */ jsx(ExternalLinkIcon2, { className: "h-4 w-4 opacity-50" })
42206
+ ]
42207
+ },
42208
+ link.href
42209
+ ))
42210
+ ] }),
42065
42211
  /* @__PURE__ */ jsx("div", { className: "absolute start-0 end-0 bottom-0 border-t border-gray-200 p-4 dark:border-gray-700", children: user ? /* @__PURE__ */ jsxs("div", { className: "space-y-3", children: [
42066
42212
  /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-3 px-2", children: [
42067
42213
  /* @__PURE__ */ jsx("div", { className: "bg-primary-100 text-primary-900 dark:bg-primary-900/30 dark:text-primary-400 flex h-10 w-10 items-center justify-center rounded-full font-medium", children: user.name.split(" ").map((w) => w[0]).join("").slice(0, 2) }),
@@ -42129,6 +42275,8 @@ var headerVariants3 = cva("fixed top-0 start-0 end-0 z-40 transition-colors", {
42129
42275
  function SiteHeader({
42130
42276
  logo = {},
42131
42277
  links = [],
42278
+ menus,
42279
+ currentPath,
42132
42280
  user,
42133
42281
  variant,
42134
42282
  onLogin,
@@ -42170,7 +42318,24 @@ function SiteHeader({
42170
42318
  variant: colorVariant
42171
42319
  }
42172
42320
  ),
42173
- /* @__PURE__ */ jsx(NavLinks, { links, variant: colorVariant }),
42321
+ menus?.length ? /* @__PURE__ */ jsxs("div", { className: "hidden items-center gap-1 md:flex", children: [
42322
+ /* @__PURE__ */ jsx(
42323
+ MegaMenuBar,
42324
+ {
42325
+ menus,
42326
+ currentPath,
42327
+ variant: colorVariant
42328
+ }
42329
+ ),
42330
+ links.length > 0 && /* @__PURE__ */ jsx(
42331
+ NavLinks,
42332
+ {
42333
+ links,
42334
+ variant: colorVariant,
42335
+ "aria-label": "Secondary navigation"
42336
+ }
42337
+ )
42338
+ ] }) : /* @__PURE__ */ jsx(NavLinks, { links, variant: colorVariant }),
42174
42339
  /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
42175
42340
  /* @__PURE__ */ jsx("div", { className: "hidden md:block", children: user ? /* @__PURE__ */ jsx(
42176
42341
  UserMenu,
@@ -42212,6 +42377,8 @@ function SiteHeader({
42212
42377
  isOpen: mobileMenuOpen,
42213
42378
  onClose: () => setMobileMenuOpen(false),
42214
42379
  links,
42380
+ menus,
42381
+ currentPath,
42215
42382
  user,
42216
42383
  onLogin,
42217
42384
  onSignUp,
@@ -44365,6 +44532,6 @@ function WebsiteInputGroup({
44365
44532
  }
44366
44533
  WebsiteInputGroup.displayName = "WebsiteInputGroup";
44367
44534
 
44368
- export { AIChat, AIChatModal, AIChatTrigger, AIReconciliationPanel, AccessDeniedPage, ActionButton2 as ActionButton, ActionButtonsBar, ActiveFilters, AddContactModal, AddServiceCard, AdditionalFields, Address, AddressCard, AddressCompact, AddressDisplay, AddressForm, AddressInline, AppHeader, AppHeaderActions, AppHeaderBrand, AppHeaderDivider, AppHeaderIconButton, AppHeaderSearch, AppHeaderSection, AppHeaderTitle, AppHeaderUserMenu, Assessment, AuthButtons, AuthDialog, BookAppointmentButton, BookingDialog, BusinessHours, BusinessHoursEditor, ButtonGroup, CHANGE_TYPE_LABELS, CONCERN_STATUS_LABELS, CSVColumnMapper, CSVFileUpload, CardSkeleton, CaseContextBar, CaseManagementHeader, CheckrIntegration, ClaimListingButton, ClaimProviderForm, CodingChips, CommandPalette, CommandPaletteProvider, CommandPaletteTrigger, CompactCookieBanner, CompactFilterBar, CompactHeader, CompactHours, CompactProviderHeader, ConditionEditor, ConnectionStatusBadge, ConnectionStatusBar, ConnectionStatusOverlay, ConsentSwitch, CookieConsentBanner, CopyrightText, CountBadge, CountryDropdown, CreateInvoiceModal, CreateReferralModal, DEFAULT_ERROR_CONFIGS, DEFAULT_LANGUAGES, DEFAULT_RADIUS_OPTIONS, DEFAULT_SOCIAL_PROVIDERS, DOTBadge, DashboardWidget, DashboardWidgetActions, DashboardWidgetDataCards, DashboardWidgetInfo, DashboardWidgetTable, DateRangeFilter, DateRangePicker, DialogOverlay, DisclaimerText, DockablePanel, DocumentDetectionOverlay, DocumentScanner, DropZone, DropzoneOverlay, EditUserRoleModal, EmployeeForm, EmployeeProfileCard, EmployerContactCard, EmployerList, EmployerPricingCard, EmployerServiceModal, EmployerView, ErrorPage, FileManager, FilePreview, FloatingAIChat, FloatingInput, FooterLinkSection, SocialMediaLinks2 as FooterSocialLinks, HRISProviderSelector, HandsFreeChat, HealthSurveillance, HelpSupportPanel, HeroSearchBar, HeyOzwell, HeyOzwellToggle, HoursSummary, ImagingOrderEditor, InlineBookingForm, InventoryManager, InviteUserModal, InvoiceList, InvoicePaymentPage, InvoiceView, LabOrderEditor, LanguageSelector, LanguageSelectorInline, LanguageSelectorNative, LegalLinks, LoadingBar, LoadingDots, LoadingOverlay, LoadingPage, LoadingSkeleton, MODEL_MANIFEST, MaintenancePage, MobileBackButton, MobileMenuButton, MobileMenuPanel, ModelInfoList, NavLinks, NewsletterForm, NotFoundPage, NotificationCenter, ORDER_TYPE_META, ORDER_TYPE_SEARCH_DOMAINS, OfflinePage, OnboardingCompletion, OnboardingStepQuestion, OnboardingWizard, OpenStatusBadge, OrderCard, OrderConfirmation, OrderConfirmationWizard, OrderDetailSidebar, OrderEditor, OrderList, OrderLookupForm, OrderSidebar, OrderSidebarTabs, OzwellChat, OzwellSettingsMenu, PageHeader, PatientHeader, PaymentHistoryTable, PaymentMethodBank, PaymentMethodCard, PaymentMethodList, PendingClaimsTable, PermissionsEditor, PillSelect, PresentingProblems, ProblemList, ProcedureOrderEditor, ProductVersion, ProductVersionBadge, Breadcrumb2 as ProviderBreadcrumb, ProviderCard, ProviderCardGrid, ProviderCardSkeleton, ProviderDetailHeader, ProviderDetailHeaderSkeleton, ProviderLogo2 as ProviderLogo, ProviderOverview, ProviderSearchBar, ProviderSearchFilters, ProviderSelector, ProviderSettings, SocialMediaLinks as ProviderSocialLinks, ProviderUsersTable, QuickBookCard, QuickLinksCard, RELEVANCE_LABELS, RecurringServiceAddCard, RecurringServiceCard, RecurringServiceGrid, RecurringServiceSetupModal, ReferralEditor, RejectionModal, ReportDashboard, ReportDatePicker, ReportLink, ReportTimeRange, ResultsEntryCard, ResultsEntryForm, ResultsEntryModal, SSOConfigForm, ScheduleCalendar, SearchResultsMessage, SelectedServicesBadges, ServerErrorPage, ServiceAccordion, ServiceBadge, ServiceBadgeGroup, ServiceCard, ServiceCategoryBadge, ServiceGeneralSettings, ServiceGrid, ServiceLink, ServiceList, ServiceMultiSelect, ServicePicker, ServicePricingManager, ServiceSelect, ServiceShippingSettings, ServiceTagCloud, ServiceTagCloudBadges, SetupServiceModal, Sidebar, SidebarContent, SidebarFooter, SidebarHeader, SidebarMobileToggle, SidebarNav, SidebarNavGroup, SidebarNavItem, SidebarProvider, SidebarSearch, SidebarToggle, SimpleFooter, SiteFooter, SiteHeader, SiteLogo, StepIndicator, StripeBadge, StripeSecureBadge, SuggestedActions, TableOfContents, TimelineEventList, TimelineProgress, Toast, ToastContainer, ToastProvider, UncertaintyBadge, UpdateAvailableOverlay, UserMenu, VerifiedBadge2 as VerifiedBadge, VisitScribe, VoiceManager, VoiceSetup, WEBSITE_TYPES, WebChartReportViewer, WebcamModal, WebsiteInput, WebsiteInputGroup, askOzwell, askOzwellStream, attributeSegments, calculateDateRange, centroid, chime, clearVoiceprints, clearWhatPrints, clusterEmbeddings, concernGroupKey, concernHistoryContent, cosine, countBadgeVariants, countChipVariants, create24HourSchedule, createDefaultSchedule, createWeekdaySchedule, currentAssertion, decodeTo16kMono, defaultCaseManagementHeaderLabels, defaultOrderTabs, defaultReconciliationIsEqual, endsWithDone, formatAddressLines, formatAddressSingleLine, formatCityState, formatCityStateZip, generateId, getDefaultPresets, getDictationLoad, getExtendedPresets, getGoogleMapsSearchUrl, getGoogleMapsUrl, getOzwellConfig, getVoiceprints, getWakeWarm, inferSpeakerRoles, isConditionCodetype, isOzwellConfigured, isValidUrl, isWhisperLoaded, labelClusters, loadWhatPrints, medicationToOrder, mergeTurns, normalizeConditionCodingSystem, openRollingRecorder, orderToMedication, orderTypeForCodetype, panelVariants as reconciliationPanelVariants, saveWhatPrints, setVoiceprints, stripStopPhrase, subscribeDictationLoad, subscribeWakeWarm, toOzwellMessages, transcribeBlob, transcribeGate, transcribeSamples, transcribeSegments, transcribeServer, trimTrailingStopPhrase, useCamera, useCommandPalette, useConnectionStatus, useCookieConsent, useDiarization, useDocumentDetection, useDropzone, useFileUpload, useHeyOzwell, useOptionalToast, useSidebar, useSpeakerVerify, useToast, useVisitScribe, useVoiceSetup, useWakeWord, warmStopGate, warmWakeModels, warmWhisper, widgetVariants };
44535
+ export { AIChat, AIChatModal, AIChatTrigger, AIReconciliationPanel, AccessDeniedPage, ActionButton2 as ActionButton, ActionButtonsBar, ActiveFilters, AddContactModal, AddServiceCard, AdditionalFields, Address, AddressCard, AddressCompact, AddressDisplay, AddressForm, AddressInline, AppHeader, AppHeaderActions, AppHeaderBrand, AppHeaderDivider, AppHeaderIconButton, AppHeaderSearch, AppHeaderSection, AppHeaderTitle, AppHeaderUserMenu, Assessment, AuthButtons, AuthDialog, BookAppointmentButton, BookingDialog, BusinessHours, BusinessHoursEditor, ButtonGroup, CHANGE_TYPE_LABELS, CONCERN_STATUS_LABELS, CSVColumnMapper, CSVFileUpload, CardSkeleton, CaseContextBar, CaseManagementHeader, CheckrIntegration, ClaimListingButton, ClaimProviderForm, CodingChips, CommandPalette, CommandPaletteProvider, CommandPaletteTrigger, CompactCookieBanner, CompactFilterBar, CompactHeader, CompactHours, CompactProviderHeader, ConditionEditor, ConnectionStatusBadge, ConnectionStatusBar, ConnectionStatusOverlay, ConsentSwitch, CookieConsentBanner, CopyrightText, CountBadge, CountryDropdown, CreateInvoiceModal, CreateReferralModal, DEFAULT_ERROR_CONFIGS, DEFAULT_LANGUAGES, DEFAULT_RADIUS_OPTIONS, DEFAULT_SOCIAL_PROVIDERS, DOTBadge, DashboardWidget, DashboardWidgetActions, DashboardWidgetDataCards, DashboardWidgetInfo, DashboardWidgetTable, DateRangeFilter, DateRangePicker, DialogOverlay, DisclaimerText, DockablePanel, DocumentDetectionOverlay, DocumentScanner, DropZone, DropzoneOverlay, EditUserRoleModal, EmployeeForm, EmployeeProfileCard, EmployerContactCard, EmployerList, EmployerPricingCard, EmployerServiceModal, EmployerView, ErrorPage, FileManager, FilePreview, FloatingAIChat, FloatingInput, FooterLinkSection, SocialMediaLinks2 as FooterSocialLinks, HRISProviderSelector, HandsFreeChat, HealthSurveillance, HelpSupportPanel, HeroSearchBar, HeyOzwell, HeyOzwellToggle, HoursSummary, ImagingOrderEditor, InlineBookingForm, InventoryManager, InviteUserModal, InvoiceList, InvoicePaymentPage, InvoiceView, LabOrderEditor, LanguageSelector, LanguageSelectorInline, LanguageSelectorNative, LegalLinks, LoadingBar, LoadingDots, LoadingOverlay, LoadingPage, LoadingSkeleton, MODEL_MANIFEST, MaintenancePage, MobileBackButton, MobileMenuButton, MobileMenuPanel, ModelInfoList, NavLinks, NewsletterForm, NotFoundPage, NotificationCenter, ORDER_TYPE_META, ORDER_TYPE_SEARCH_DOMAINS, OfflinePage, OnboardingCompletion, OnboardingStepQuestion, OnboardingWizard, OpenStatusBadge, OrderCard, OrderConfirmation, OrderConfirmationWizard, OrderDetailSidebar, OrderEditor, OrderList, OrderLookupForm, OrderSidebar, OrderSidebarTabs, OzwellChat, OzwellSettingsMenu, PageHeader, PatientHeader, PaymentHistoryTable, PaymentMethodBank, PaymentMethodCard, PaymentMethodList, PendingClaimsTable, PermissionsEditor, PillSelect, PresentingProblems, ProblemList, ProcedureOrderEditor, ProductVersion, ProductVersionBadge, Breadcrumb2 as ProviderBreadcrumb, ProviderCard, ProviderCardGrid, ProviderCardSkeleton, ProviderDetailHeader, ProviderDetailHeaderSkeleton, ProviderLogo2 as ProviderLogo, ProviderOverview, ProviderSearchBar, ProviderSearchFilters, ProviderSelector, ProviderSettings, SocialMediaLinks as ProviderSocialLinks, ProviderUsersTable, QuickBookCard, QuickLinksCard, RELEVANCE_LABELS, RecurringServiceAddCard, RecurringServiceCard, RecurringServiceGrid, RecurringServiceSetupModal, ReferralEditor, RejectionModal, ReportDashboard, ReportDatePicker, ReportLink, ReportTimeRange, ResultsEntryCard, ResultsEntryForm, ResultsEntryModal, SSOConfigForm, ScheduleCalendar, SearchResultsMessage, SelectedServicesBadges, ServerErrorPage, ServiceAccordion, ServiceBadge, ServiceBadgeGroup, ServiceCard, ServiceCategoryBadge, ServiceGeneralSettings, ServiceGrid, ServiceLink, ServiceList, ServiceMultiSelect, ServicePicker, ServicePricingManager, ServiceSelect, ServiceShippingSettings, ServiceTagCloud, ServiceTagCloudBadges, SetupServiceModal, Sidebar, SidebarContent, SidebarFooter, SidebarHeader, SidebarMobileToggle, SidebarNav, SidebarNavGroup, SidebarNavItem, SidebarProvider, SidebarSearch, SidebarToggle, SimpleFooter, SiteFooter, SiteHeader, SiteLogo, StepIndicator, StripeBadge, StripeSecureBadge, SuggestedActions, TableOfContents, TimelineEventList, TimelineProgress, Toast, ToastContainer, ToastProvider, UncertaintyBadge, UpdateAvailableOverlay, UserMenu, VerifiedBadge2 as VerifiedBadge, VisitScribe, VoiceManager, VoiceSetup, WEBSITE_TYPES, WebChartReportViewer, WebcamModal, WebsiteInput, WebsiteInputGroup, askOzwell, askOzwellStream, attributeSegments, calculateDateRange, centroid, chime, clusterEmbeddings, concernGroupKey, concernHistoryContent, cosine, countBadgeVariants, countChipVariants, create24HourSchedule, createDefaultSchedule, createWeekdaySchedule, currentAssertion, decodeTo16kMono, defaultCaseManagementHeaderLabels, defaultOrderTabs, defaultReconciliationIsEqual, endsWithDone, formatAddressLines, formatAddressSingleLine, formatCityState, formatCityStateZip, generateId, getDefaultPresets, getDictationLoad, getExtendedPresets, getGoogleMapsSearchUrl, getGoogleMapsUrl, getOzwellConfig, getWakeWarm, inferSpeakerRoles, isConditionCodetype, isOzwellConfigured, isValidUrl, isWhisperLoaded, labelClusters, medicationToOrder, mergeTurns, normalizeConditionCodingSystem, openRollingRecorder, orderToMedication, orderTypeForCodetype, panelVariants as reconciliationPanelVariants, stripStopPhrase, subscribeDictationLoad, subscribeWakeWarm, toOzwellMessages, transcribeBlob, transcribeGate, transcribeSamples, transcribeSegments, transcribeServer, trimTrailingStopPhrase, useCamera, useCommandPalette, useConnectionStatus, useCookieConsent, useDiarization, useDocumentDetection, useDropzone, useFileUpload, useHeyOzwell, useOptionalToast, useSidebar, useSpeakerVerify, useToast, useVisitScribe, useVoiceSetup, useWakeWord, warmStopGate, warmWakeModels, warmWhisper, widgetVariants };
44369
44536
  //# sourceMappingURL=index.js.map
44370
44537
  //# sourceMappingURL=index.js.map