@mieweb/ui 0.10.0-dev.2 → 0.10.0-dev.20

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 (398) hide show
  1. package/agent/mieweb-ui.instructions.md +13 -1
  2. package/dist/CsvBlock-FX5YNGNE.cjs +17 -0
  3. package/dist/{CsvBlock-ROJCKJDP.cjs.map → CsvBlock-FX5YNGNE.cjs.map} +1 -1
  4. package/dist/CsvBlock-VLMG7GUO.js +8 -0
  5. package/dist/{CsvBlock-UWPMTLE2.js.map → CsvBlock-VLMG7GUO.js.map} +1 -1
  6. package/dist/HtmlPreviewBlock-5JE7L3GR.js +8 -0
  7. package/dist/{HtmlPreviewBlock-ME5U3XNS.js.map → HtmlPreviewBlock-5JE7L3GR.js.map} +1 -1
  8. package/dist/HtmlPreviewBlock-UO37JQ3K.cjs +17 -0
  9. package/dist/{HtmlPreviewBlock-DWFN6EUB.cjs.map → HtmlPreviewBlock-UO37JQ3K.cjs.map} +1 -1
  10. package/dist/Input-yN516s5_.d.cts +3 -0
  11. package/dist/Input-yN516s5_.d.ts +3 -0
  12. package/dist/MermaidBlock-3XHFBAMV.js +8 -0
  13. package/dist/{MermaidBlock-2B6CPD6Y.js.map → MermaidBlock-3XHFBAMV.js.map} +1 -1
  14. package/dist/MermaidBlock-RZ75RPZA.cjs +17 -0
  15. package/dist/{MermaidBlock-D2UC5M55.cjs.map → MermaidBlock-RZ75RPZA.cjs.map} +1 -1
  16. package/dist/SurveyBlock-MUVJ3JUI.js +8 -0
  17. package/dist/{SurveyBlock-4DO62RBT.js.map → SurveyBlock-MUVJ3JUI.js.map} +1 -1
  18. package/dist/SurveyBlock-VH47YXZC.cjs +17 -0
  19. package/dist/{SurveyBlock-4CD4AYMJ.cjs.map → SurveyBlock-VH47YXZC.cjs.map} +1 -1
  20. package/dist/ag-grid.d.cts +142 -1
  21. package/dist/ag-grid.d.ts +142 -1
  22. package/dist/{chunk-ACCAXVOG.js → chunk-2ABWFQQH.js} +133 -55
  23. package/dist/chunk-2ABWFQQH.js.map +1 -0
  24. package/dist/{chunk-Y5HFM7LO.js → chunk-2BARVD4C.js} +3 -3
  25. package/dist/{chunk-Y5HFM7LO.js.map → chunk-2BARVD4C.js.map} +1 -1
  26. package/dist/{chunk-G3JX3UAU.cjs → chunk-3KPDQG5O.cjs} +5 -5
  27. package/dist/{chunk-G3JX3UAU.cjs.map → chunk-3KPDQG5O.cjs.map} +1 -1
  28. package/dist/chunk-3YBS4WUQ.js +52 -0
  29. package/dist/chunk-3YBS4WUQ.js.map +1 -0
  30. package/dist/chunk-4HC2IBOX.js +258 -0
  31. package/dist/chunk-4HC2IBOX.js.map +1 -0
  32. package/dist/chunk-4IS3QCOQ.cjs +453 -0
  33. package/dist/chunk-4IS3QCOQ.cjs.map +1 -0
  34. package/dist/chunk-4NCDU5IG.cjs +56 -0
  35. package/dist/chunk-4NCDU5IG.cjs.map +1 -0
  36. package/dist/{chunk-E4IBHYJ7.cjs → chunk-6N6LIAUJ.cjs} +9 -9
  37. package/dist/{chunk-E4IBHYJ7.cjs.map → chunk-6N6LIAUJ.cjs.map} +1 -1
  38. package/dist/chunk-74ENCTIK.js +162 -0
  39. package/dist/chunk-74ENCTIK.js.map +1 -0
  40. package/dist/{chunk-GOALNQZ2.js → chunk-7YO7DNUV.js} +4 -83
  41. package/dist/chunk-7YO7DNUV.js.map +1 -0
  42. package/dist/{chunk-VILW53UZ.js → chunk-BIQ7GSO2.js} +3 -3
  43. package/dist/{chunk-VILW53UZ.js.map → chunk-BIQ7GSO2.js.map} +1 -1
  44. package/dist/chunk-BM35CACB.js +148 -0
  45. package/dist/chunk-BM35CACB.js.map +1 -0
  46. package/dist/{chunk-XI34EGK5.cjs → chunk-CPPUT74P.cjs} +9 -9
  47. package/dist/{chunk-XI34EGK5.cjs.map → chunk-CPPUT74P.cjs.map} +1 -1
  48. package/dist/{chunk-WNM7IZJ7.js → chunk-DSB4DKWG.js} +7 -7
  49. package/dist/{chunk-WNM7IZJ7.js.map → chunk-DSB4DKWG.js.map} +1 -1
  50. package/dist/chunk-DXEPYK3I.cjs +92 -0
  51. package/dist/chunk-DXEPYK3I.cjs.map +1 -0
  52. package/dist/{chunk-JI244Y7C.js → chunk-EK3BCET6.js} +57 -4
  53. package/dist/chunk-EK3BCET6.js.map +1 -0
  54. package/dist/{chunk-5JJ2DAE4.js → chunk-ENMXHZNE.js} +3 -3
  55. package/dist/{chunk-5JJ2DAE4.js.map → chunk-ENMXHZNE.js.map} +1 -1
  56. package/dist/{chunk-XCP454Q6.js → chunk-F4N67NAF.js} +12 -3
  57. package/dist/chunk-F4N67NAF.js.map +1 -0
  58. package/dist/{chunk-VKELAMAZ.js → chunk-FBLVPM2K.js} +3 -3
  59. package/dist/{chunk-VKELAMAZ.js.map → chunk-FBLVPM2K.js.map} +1 -1
  60. package/dist/{chunk-VU6UTJRM.js → chunk-FIKO4WR6.js} +3 -3
  61. package/dist/{chunk-VU6UTJRM.js.map → chunk-FIKO4WR6.js.map} +1 -1
  62. package/dist/{chunk-DEDN5HAG.js → chunk-FZURBQJ2.js} +3 -3
  63. package/dist/{chunk-DEDN5HAG.js.map → chunk-FZURBQJ2.js.map} +1 -1
  64. package/dist/{chunk-ENKFJJZX.js → chunk-G45FBKKV.js} +5 -5
  65. package/dist/{chunk-ENKFJJZX.js.map → chunk-G45FBKKV.js.map} +1 -1
  66. package/dist/{chunk-JHULS3EC.js → chunk-GBUVIGD5.js} +89 -3
  67. package/dist/chunk-GBUVIGD5.js.map +1 -0
  68. package/dist/chunk-GU5OS7JJ.cjs +281 -0
  69. package/dist/chunk-GU5OS7JJ.cjs.map +1 -0
  70. package/dist/{chunk-V7D3YGUV.js → chunk-GVLNXPJX.js} +4 -4
  71. package/dist/{chunk-V7D3YGUV.js.map → chunk-GVLNXPJX.js.map} +1 -1
  72. package/dist/chunk-GVM6DTR5.js +90 -0
  73. package/dist/chunk-GVM6DTR5.js.map +1 -0
  74. package/dist/{chunk-3QEVGSFG.cjs → chunk-GYXUS65N.cjs} +5 -5
  75. package/dist/{chunk-3QEVGSFG.cjs.map → chunk-GYXUS65N.cjs.map} +1 -1
  76. package/dist/{chunk-WGPLUCBD.js → chunk-H2IAMSHK.js} +3 -3
  77. package/dist/{chunk-WGPLUCBD.js.map → chunk-H2IAMSHK.js.map} +1 -1
  78. package/dist/{chunk-7ZXAQTV4.cjs → chunk-HIZWOAWY.cjs} +8 -8
  79. package/dist/{chunk-7ZXAQTV4.cjs.map → chunk-HIZWOAWY.cjs.map} +1 -1
  80. package/dist/{chunk-ELPW32ZI.cjs → chunk-HQ4CGVWX.cjs} +41 -41
  81. package/dist/{chunk-ELPW32ZI.cjs.map → chunk-HQ4CGVWX.cjs.map} +1 -1
  82. package/dist/{chunk-6EN3IQQI.cjs → chunk-I4LXSHKO.cjs} +4 -4
  83. package/dist/{chunk-6EN3IQQI.cjs.map → chunk-I4LXSHKO.cjs.map} +1 -1
  84. package/dist/{chunk-NV2CWBI2.cjs → chunk-IEY3ZJIT.cjs} +12 -3
  85. package/dist/chunk-IEY3ZJIT.cjs.map +1 -0
  86. package/dist/{chunk-2YCERQWC.js → chunk-IH55BEB3.js} +4 -4
  87. package/dist/{chunk-2YCERQWC.js.map → chunk-IH55BEB3.js.map} +1 -1
  88. package/dist/chunk-IT775BYG.js +179 -0
  89. package/dist/chunk-IT775BYG.js.map +1 -0
  90. package/dist/chunk-IYWG72DM.js +166 -0
  91. package/dist/chunk-IYWG72DM.js.map +1 -0
  92. package/dist/{chunk-IX6KFB3K.cjs → chunk-JELTRRR5.cjs} +9 -9
  93. package/dist/{chunk-IX6KFB3K.cjs.map → chunk-JELTRRR5.cjs.map} +1 -1
  94. package/dist/{chunk-FXO5ARBB.cjs → chunk-KDW6BD4O.cjs} +4 -4
  95. package/dist/{chunk-FXO5ARBB.cjs.map → chunk-KDW6BD4O.cjs.map} +1 -1
  96. package/dist/chunk-KHSFJTEX.js +1924 -0
  97. package/dist/chunk-KHSFJTEX.js.map +1 -0
  98. package/dist/{chunk-UV2FVNWT.cjs → chunk-LFPJ3OUM.cjs} +5 -5
  99. package/dist/{chunk-UV2FVNWT.cjs.map → chunk-LFPJ3OUM.cjs.map} +1 -1
  100. package/dist/{chunk-WNAA6CLE.cjs → chunk-LHBWRMNC.cjs} +94 -2
  101. package/dist/chunk-LHBWRMNC.cjs.map +1 -0
  102. package/dist/{chunk-X4XPNTCZ.cjs → chunk-LJZKEMAH.cjs} +135 -57
  103. package/dist/chunk-LJZKEMAH.cjs.map +1 -0
  104. package/dist/{chunk-2QKBTPUC.cjs → chunk-MQPG3KVK.cjs} +8 -8
  105. package/dist/{chunk-2QKBTPUC.cjs.map → chunk-MQPG3KVK.cjs.map} +1 -1
  106. package/dist/{chunk-WIAQQNFU.cjs → chunk-MYHV2ND3.cjs} +37 -3
  107. package/dist/chunk-MYHV2ND3.cjs.map +1 -0
  108. package/dist/{chunk-OE5CKRUC.js → chunk-MZNCLXXU.js} +4 -4
  109. package/dist/{chunk-OE5CKRUC.js.map → chunk-MZNCLXXU.js.map} +1 -1
  110. package/dist/{chunk-XEAT7XJG.cjs → chunk-N2CJJHHB.cjs} +4 -4
  111. package/dist/{chunk-XEAT7XJG.cjs.map → chunk-N2CJJHHB.cjs.map} +1 -1
  112. package/dist/chunk-N7C4OEP7.cjs +356 -0
  113. package/dist/chunk-N7C4OEP7.cjs.map +1 -0
  114. package/dist/chunk-OGNADPM4.cjs +170 -0
  115. package/dist/chunk-OGNADPM4.cjs.map +1 -0
  116. package/dist/{chunk-5GUOOLPR.cjs → chunk-P5CMZZRZ.cjs} +5 -5
  117. package/dist/{chunk-5GUOOLPR.cjs.map → chunk-P5CMZZRZ.cjs.map} +1 -1
  118. package/dist/{chunk-U42F3HLE.cjs → chunk-QNDP6PE5.cjs} +57 -4
  119. package/dist/chunk-QNDP6PE5.cjs.map +1 -0
  120. package/dist/{chunk-H4ZXMQQW.js → chunk-QOVJ6Z6R.js} +3 -3
  121. package/dist/{chunk-H4ZXMQQW.js.map → chunk-QOVJ6Z6R.js.map} +1 -1
  122. package/dist/{chunk-GD7EBGC4.cjs → chunk-R2O72G6Z.cjs} +19 -19
  123. package/dist/{chunk-GD7EBGC4.cjs.map → chunk-R2O72G6Z.cjs.map} +1 -1
  124. package/dist/{chunk-TMMVIUUN.js → chunk-R6KPWIGO.js} +4 -4
  125. package/dist/{chunk-TMMVIUUN.js.map → chunk-R6KPWIGO.js.map} +1 -1
  126. package/dist/{chunk-VPWJCJCX.cjs → chunk-S45EERW3.cjs} +5 -5
  127. package/dist/{chunk-VPWJCJCX.cjs.map → chunk-S45EERW3.cjs.map} +1 -1
  128. package/dist/{chunk-WNZAYBVB.cjs → chunk-SQ2D7AON.cjs} +45 -45
  129. package/dist/{chunk-WNZAYBVB.cjs.map → chunk-SQ2D7AON.cjs.map} +1 -1
  130. package/dist/{chunk-P2CA3XGI.js → chunk-SYRLCTDV.js} +3 -3
  131. package/dist/{chunk-P2CA3XGI.js.map → chunk-SYRLCTDV.js.map} +1 -1
  132. package/dist/{chunk-7ZDPD5ZX.cjs → chunk-T4L7Q5FA.cjs} +7 -7
  133. package/dist/{chunk-7ZDPD5ZX.cjs.map → chunk-T4L7Q5FA.cjs.map} +1 -1
  134. package/dist/{chunk-ZGRCSNPK.js → chunk-TF7YWJHU.js} +3 -3
  135. package/dist/{chunk-ZGRCSNPK.js.map → chunk-TF7YWJHU.js.map} +1 -1
  136. package/dist/{chunk-2IZLKPUW.js → chunk-THLIL6PY.js} +3 -3
  137. package/dist/{chunk-2IZLKPUW.js.map → chunk-THLIL6PY.js.map} +1 -1
  138. package/dist/{chunk-N6IY47YA.cjs → chunk-TTSSUOEV.cjs} +8 -8
  139. package/dist/{chunk-N6IY47YA.cjs.map → chunk-TTSSUOEV.cjs.map} +1 -1
  140. package/dist/{chunk-5MCBWTIF.cjs → chunk-TYE5K5WV.cjs} +4 -4
  141. package/dist/{chunk-5MCBWTIF.cjs.map → chunk-TYE5K5WV.cjs.map} +1 -1
  142. package/dist/{chunk-22CYDCXA.js → chunk-TZJQB4P2.js} +37 -4
  143. package/dist/chunk-TZJQB4P2.js.map +1 -0
  144. package/dist/{chunk-VOKVG3ER.js → chunk-UBSH27C2.js} +4 -4
  145. package/dist/{chunk-VOKVG3ER.js.map → chunk-UBSH27C2.js.map} +1 -1
  146. package/dist/chunk-VINZZQBD.cjs +323 -0
  147. package/dist/chunk-VINZZQBD.cjs.map +1 -0
  148. package/dist/chunk-VPTASZ2O.cjs +171 -0
  149. package/dist/chunk-VPTASZ2O.cjs.map +1 -0
  150. package/dist/{chunk-SGFYA22I.cjs → chunk-VYPPQPSZ.cjs} +7 -7
  151. package/dist/{chunk-SGFYA22I.cjs.map → chunk-VYPPQPSZ.cjs.map} +1 -1
  152. package/dist/chunk-WCDJFMZO.cjs +1967 -0
  153. package/dist/chunk-WCDJFMZO.cjs.map +1 -0
  154. package/dist/{chunk-VNYW4C4J.cjs → chunk-X6A27RGO.cjs} +4 -84
  155. package/dist/chunk-X6A27RGO.cjs.map +1 -0
  156. package/dist/chunk-XBTKZCZF.js +333 -0
  157. package/dist/chunk-XBTKZCZF.js.map +1 -0
  158. package/dist/chunk-XDIMTPZU.cjs +202 -0
  159. package/dist/chunk-XDIMTPZU.cjs.map +1 -0
  160. package/dist/chunk-XVW5DPPP.js +429 -0
  161. package/dist/chunk-XVW5DPPP.js.map +1 -0
  162. package/dist/chunk-Y4E2WRUR.cjs +188 -0
  163. package/dist/chunk-Y4E2WRUR.cjs.map +1 -0
  164. package/dist/chunk-Y4QNLW7W.js +300 -0
  165. package/dist/chunk-Y4QNLW7W.js.map +1 -0
  166. package/dist/{chunk-KZFBQ7GY.js → chunk-YU55JD35.js} +3 -3
  167. package/dist/{chunk-KZFBQ7GY.js.map → chunk-YU55JD35.js.map} +1 -1
  168. package/dist/{chunk-OD47TTAW.cjs → chunk-Z4JR23IB.cjs} +9 -9
  169. package/dist/{chunk-OD47TTAW.cjs.map → chunk-Z4JR23IB.cjs.map} +1 -1
  170. package/dist/{chunk-3M7TAXNR.js → chunk-ZTW4KODY.js} +3 -3
  171. package/dist/{chunk-3M7TAXNR.js.map → chunk-ZTW4KODY.js.map} +1 -1
  172. package/dist/{chunk-3QGS6CXD.js → chunk-ZYL4SNOR.js} +3 -3
  173. package/dist/{chunk-3QGS6CXD.js.map → chunk-ZYL4SNOR.js.map} +1 -1
  174. package/dist/components/Alert/index.d.cts +1 -1
  175. package/dist/components/Alert/index.d.ts +1 -1
  176. package/dist/components/AlertDialog/index.cjs +6 -5
  177. package/dist/components/AlertDialog/index.d.cts +28 -3
  178. package/dist/components/AlertDialog/index.d.ts +28 -3
  179. package/dist/components/AlertDialog/index.js +5 -4
  180. package/dist/components/AudioRecorder/index.d.cts +2 -2
  181. package/dist/components/AudioRecorder/index.d.ts +2 -2
  182. package/dist/components/Autocomplete/index.d.cts +8 -2
  183. package/dist/components/Autocomplete/index.d.ts +8 -2
  184. package/dist/components/Avatar/index.d.cts +1 -1
  185. package/dist/components/Avatar/index.d.ts +1 -1
  186. package/dist/components/Badge/index.d.cts +1 -1
  187. package/dist/components/Badge/index.d.ts +1 -1
  188. package/dist/components/BoardView/index.cjs +24 -0
  189. package/dist/components/BoardView/index.cjs.map +1 -0
  190. package/dist/components/BoardView/index.d.cts +129 -0
  191. package/dist/components/BoardView/index.d.ts +129 -0
  192. package/dist/components/BoardView/index.js +7 -0
  193. package/dist/components/BoardView/index.js.map +1 -0
  194. package/dist/components/Button/index.cjs +4 -3
  195. package/dist/components/Button/index.d.cts +2 -1
  196. package/dist/components/Button/index.d.ts +2 -1
  197. package/dist/components/Button/index.js +2 -1
  198. package/dist/components/CalendarView/index.cjs +23 -0
  199. package/dist/components/CalendarView/index.cjs.map +1 -0
  200. package/dist/components/CalendarView/index.d.cts +39 -0
  201. package/dist/components/CalendarView/index.d.ts +39 -0
  202. package/dist/components/CalendarView/index.js +10 -0
  203. package/dist/components/CalendarView/index.js.map +1 -0
  204. package/dist/components/Card/index.d.cts +3 -3
  205. package/dist/components/Card/index.d.ts +3 -3
  206. package/dist/components/Collapsible/index.cjs +5 -5
  207. package/dist/components/Collapsible/index.js +2 -2
  208. package/dist/components/CustomizableDashboard/index.cjs +10 -9
  209. package/dist/components/CustomizableDashboard/index.js +3 -2
  210. package/dist/components/Dropdown/index.cjs +9 -9
  211. package/dist/components/Dropdown/index.d.cts +2 -1
  212. package/dist/components/Dropdown/index.d.ts +2 -1
  213. package/dist/components/Dropdown/index.js +2 -2
  214. package/dist/components/FloatingWindow/index.cjs +5 -4
  215. package/dist/components/FloatingWindow/index.js +3 -2
  216. package/dist/components/GanttView/index.cjs +20 -0
  217. package/dist/components/GanttView/index.cjs.map +1 -0
  218. package/dist/components/GanttView/index.d.cts +36 -0
  219. package/dist/components/GanttView/index.d.ts +36 -0
  220. package/dist/components/GanttView/index.js +7 -0
  221. package/dist/components/GanttView/index.js.map +1 -0
  222. package/dist/components/KeyboardShortcutsOverlay/index.cjs +5 -5
  223. package/dist/components/KeyboardShortcutsOverlay/index.js +3 -3
  224. package/dist/components/ListView/index.cjs +23 -0
  225. package/dist/components/ListView/index.cjs.map +1 -0
  226. package/dist/components/ListView/index.d.cts +124 -0
  227. package/dist/components/ListView/index.d.ts +124 -0
  228. package/dist/components/ListView/index.js +10 -0
  229. package/dist/components/ListView/index.js.map +1 -0
  230. package/dist/components/Markdown/index.cjs +20 -19
  231. package/dist/components/Markdown/index.js +8 -7
  232. package/dist/components/MediaEditor/index.cjs +11 -10
  233. package/dist/components/MediaEditor/index.d.cts +91 -2
  234. package/dist/components/MediaEditor/index.d.ts +91 -2
  235. package/dist/components/MediaEditor/index.js +6 -5
  236. package/dist/components/MediaPlayer/index.cjs +6 -5
  237. package/dist/components/MediaPlayer/index.d.cts +1 -1
  238. package/dist/components/MediaPlayer/index.d.ts +1 -1
  239. package/dist/components/MediaPlayer/index.js +3 -2
  240. package/dist/components/MegaMenu/index.cjs +6 -5
  241. package/dist/components/MegaMenu/index.js +3 -2
  242. package/dist/components/Modal/index.cjs +10 -10
  243. package/dist/components/Modal/index.js +2 -2
  244. package/dist/components/Pagination/index.d.cts +1 -1
  245. package/dist/components/Pagination/index.d.ts +1 -1
  246. package/dist/components/PhoneInput/index.d.cts +36 -3
  247. package/dist/components/PhoneInput/index.d.ts +36 -3
  248. package/dist/components/Progress/index.d.cts +1 -1
  249. package/dist/components/Progress/index.d.ts +1 -1
  250. package/dist/components/Q/index.d.cts +2 -2
  251. package/dist/components/Q/index.d.ts +2 -2
  252. package/dist/components/QuickAction/index.d.cts +1 -1
  253. package/dist/components/QuickAction/index.d.ts +1 -1
  254. package/dist/components/RadialExplorer/index.cjs +4 -3
  255. package/dist/components/RadialExplorer/index.js +3 -2
  256. package/dist/components/RecordButton/index.d.cts +1 -1
  257. package/dist/components/RecordButton/index.d.ts +1 -1
  258. package/dist/components/RichTextEditor/index.cjs +8 -7
  259. package/dist/components/RichTextEditor/index.d.cts +7 -2
  260. package/dist/components/RichTextEditor/index.d.ts +7 -2
  261. package/dist/components/RichTextEditor/index.js +5 -4
  262. package/dist/components/ScrollArea/index.d.cts +1 -1
  263. package/dist/components/ScrollArea/index.d.ts +1 -1
  264. package/dist/components/SectionSpyNav/index.cjs +4 -3
  265. package/dist/components/SectionSpyNav/index.js +3 -2
  266. package/dist/components/Select/index.d.cts +1 -2
  267. package/dist/components/Select/index.d.ts +1 -2
  268. package/dist/components/Skeleton/index.d.cts +1 -1
  269. package/dist/components/Skeleton/index.d.ts +1 -1
  270. package/dist/components/Slider/index.d.cts +2 -2
  271. package/dist/components/Slider/index.d.ts +2 -2
  272. package/dist/components/Spinner/index.d.cts +2 -2
  273. package/dist/components/Spinner/index.d.ts +2 -2
  274. package/dist/components/SuperChat/index.cjs +478 -281
  275. package/dist/components/SuperChat/index.cjs.map +1 -1
  276. package/dist/components/SuperChat/index.d.cts +2 -4
  277. package/dist/components/SuperChat/index.d.ts +2 -4
  278. package/dist/components/SuperChat/index.js +468 -271
  279. package/dist/components/SuperChat/index.js.map +1 -1
  280. package/dist/components/SuperChat/plugins/index.cjs +5 -5
  281. package/dist/components/SuperChat/plugins/index.d.cts +2 -3
  282. package/dist/components/SuperChat/plugins/index.d.ts +2 -3
  283. package/dist/components/SuperChat/plugins/index.js +4 -4
  284. package/dist/components/Text/index.d.cts +3 -3
  285. package/dist/components/Text/index.d.ts +3 -3
  286. package/dist/components/Textarea/index.d.cts +1 -2
  287. package/dist/components/Textarea/index.d.ts +1 -2
  288. package/dist/components/ThemeProvider/index.d.cts +3 -1
  289. package/dist/components/ThemeProvider/index.d.ts +3 -1
  290. package/dist/components/TranscriptView/index.d.cts +85 -4
  291. package/dist/components/TranscriptView/index.d.ts +85 -4
  292. package/dist/components/ViewSet/index.cjs +24 -0
  293. package/dist/components/ViewSet/index.cjs.map +1 -0
  294. package/dist/components/ViewSet/index.d.cts +300 -0
  295. package/dist/components/ViewSet/index.d.ts +300 -0
  296. package/dist/components/ViewSet/index.js +15 -0
  297. package/dist/components/ViewSet/index.js.map +1 -0
  298. package/dist/components/ViewSwitcher/index.cjs +20 -0
  299. package/dist/components/ViewSwitcher/index.cjs.map +1 -0
  300. package/dist/components/ViewSwitcher/index.d.cts +57 -0
  301. package/dist/components/ViewSwitcher/index.d.ts +57 -0
  302. package/dist/components/ViewSwitcher/index.js +7 -0
  303. package/dist/components/ViewSwitcher/index.js.map +1 -0
  304. package/dist/datavis.cjs +3 -2
  305. package/dist/datavis.cjs.map +1 -1
  306. package/dist/datavis.d.cts +167 -13
  307. package/dist/datavis.d.ts +167 -13
  308. package/dist/datavis.js +2 -1
  309. package/dist/datavis.js.map +1 -1
  310. package/dist/esheet.cjs +9 -8
  311. package/dist/esheet.cjs.map +1 -1
  312. package/dist/esheet.d.cts +183 -1
  313. package/dist/esheet.d.ts +183 -1
  314. package/dist/esheet.js +6 -5
  315. package/dist/esheet.js.map +1 -1
  316. package/dist/hooks/index.cjs +49 -16
  317. package/dist/hooks/index.d.cts +590 -31
  318. package/dist/hooks/index.d.ts +590 -31
  319. package/dist/hooks/index.js +3 -2
  320. package/dist/index.cjs +1375 -1088
  321. package/dist/index.cjs.map +1 -1
  322. package/dist/index.d.cts +8596 -683
  323. package/dist/index.d.ts +8596 -683
  324. package/dist/index.js +433 -340
  325. package/dist/index.js.map +1 -1
  326. package/dist/kerebron.cjs +58 -19
  327. package/dist/kerebron.cjs.map +1 -1
  328. package/dist/kerebron.d.cts +37 -0
  329. package/dist/kerebron.d.ts +37 -0
  330. package/dist/kerebron.js +58 -19
  331. package/dist/kerebron.js.map +1 -1
  332. package/dist/motion.cjs +7 -7
  333. package/dist/motion.d.cts +186 -2
  334. package/dist/motion.d.ts +186 -2
  335. package/dist/motion.js +2 -2
  336. package/dist/q.d.cts +25 -3
  337. package/dist/q.d.ts +25 -3
  338. package/dist/{speaker-verify-5GTWAN5Y.cjs → speaker-verify-4NEJAK6C.cjs} +57 -90
  339. package/dist/speaker-verify-4NEJAK6C.cjs.map +1 -0
  340. package/dist/{speaker-verify-R67P433H.js → speaker-verify-AWSKI6DI.js} +57 -90
  341. package/dist/speaker-verify-AWSKI6DI.js.map +1 -0
  342. package/dist/styles/effects.css +33 -0
  343. package/dist/styles.css +1 -1
  344. package/dist/tailwind-preset.cjs +4 -4
  345. package/dist/tailwind-preset.js +1 -1
  346. package/dist/templates.cjs +103 -0
  347. package/dist/templates.cjs.map +1 -0
  348. package/dist/templates.d.cts +560 -0
  349. package/dist/templates.d.ts +560 -0
  350. package/dist/templates.js +10 -0
  351. package/dist/templates.js.map +1 -0
  352. package/dist/types-C3HQe74F.d.cts +86 -0
  353. package/dist/types-C3HQe74F.d.ts +86 -0
  354. package/dist/{types-B97JNRNQ.d.cts → types-DOxdTwmq.d.cts} +170 -2
  355. package/dist/{types-gZXrfLj6.d.ts → types-DOxdTwmq.d.ts} +170 -2
  356. package/dist/utils/index.d.cts +13 -2
  357. package/dist/utils/index.d.ts +13 -2
  358. package/package.json +21 -4
  359. package/dist/Animated-XmH6k8pZ.d.cts +0 -188
  360. package/dist/Animated-XmH6k8pZ.d.ts +0 -188
  361. package/dist/CsvBlock-ROJCKJDP.cjs +0 -16
  362. package/dist/CsvBlock-UWPMTLE2.js +0 -7
  363. package/dist/HtmlPreviewBlock-DWFN6EUB.cjs +0 -16
  364. package/dist/HtmlPreviewBlock-ME5U3XNS.js +0 -7
  365. package/dist/MedicationEditor-Bp4NLy7y.d.cts +0 -352
  366. package/dist/MedicationEditor-Bp4NLy7y.d.ts +0 -352
  367. package/dist/MermaidBlock-2B6CPD6Y.js +0 -7
  368. package/dist/MermaidBlock-D2UC5M55.cjs +0 -16
  369. package/dist/SurveyBlock-4CD4AYMJ.cjs +0 -16
  370. package/dist/SurveyBlock-4DO62RBT.js +0 -7
  371. package/dist/chunk-22CYDCXA.js.map +0 -1
  372. package/dist/chunk-ACCAXVOG.js.map +0 -1
  373. package/dist/chunk-GOALNQZ2.js.map +0 -1
  374. package/dist/chunk-JHULS3EC.js.map +0 -1
  375. package/dist/chunk-JI244Y7C.js.map +0 -1
  376. package/dist/chunk-NV2CWBI2.cjs.map +0 -1
  377. package/dist/chunk-U42F3HLE.cjs.map +0 -1
  378. package/dist/chunk-VNYW4C4J.cjs.map +0 -1
  379. package/dist/chunk-WIAQQNFU.cjs.map +0 -1
  380. package/dist/chunk-WNAA6CLE.cjs.map +0 -1
  381. package/dist/chunk-X4XPNTCZ.cjs.map +0 -1
  382. package/dist/chunk-XCP454Q6.js.map +0 -1
  383. package/dist/html-MdxqSzjD.d.cts +0 -13
  384. package/dist/html-MdxqSzjD.d.ts +0 -13
  385. package/dist/orderRows-BUJYgSc7.d.cts +0 -221
  386. package/dist/orderRows-BUJYgSc7.d.ts +0 -221
  387. package/dist/speaker-verify-5GTWAN5Y.cjs.map +0 -1
  388. package/dist/speaker-verify-R67P433H.js.map +0 -1
  389. package/dist/transcript-Cg7uSW-C.d.cts +0 -84
  390. package/dist/transcript-Cg7uSW-C.d.ts +0 -84
  391. package/dist/types-CnPEwzlp.d.cts +0 -254
  392. package/dist/types-CnPEwzlp.d.ts +0 -254
  393. package/dist/useAnchoredPosition-CKwLSQW8.d.cts +0 -76
  394. package/dist/useAnchoredPosition-CKwLSQW8.d.ts +0 -76
  395. package/dist/useTheme-B9SWu6ui.d.cts +0 -24
  396. package/dist/useTheme-B9SWu6ui.d.ts +0 -24
  397. package/dist/useTranscriptEdits-CGzlemHT.d.cts +0 -182
  398. package/dist/useTranscriptEdits-D32bLs0l.d.ts +0 -182
package/dist/index.js CHANGED
@@ -1,3 +1,12 @@
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-IYWG72DM.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';
8
+ export { VisuallyHidden } from './chunk-H2CIKJQI.js';
9
+ export { MONTH_LETTERS, MONTH_NAMES, YearTimeline, resolveCurrent } from './chunk-SQJFBZ42.js';
1
10
  export { brands } from './chunk-YQDA366U.js';
2
11
  export { defaultBrand } from './chunk-PSTGFXQG.js';
3
12
  export { enterpriseHealthBrand } from './chunk-Q77TE5DZ.js';
@@ -8,88 +17,92 @@ export { createBrandPreset, generateBrandCSS, generateTailwindTheme } from './ch
8
17
  export { bluehiveBrand } from './chunk-3T7QGLNB.js';
9
18
  export { ccmeBrand } from './chunk-SCQRJPSV.js';
10
19
  export { ozwellBrand } from './chunk-5YUBQIC7.js';
11
- import { getModelBytes } from './chunk-6I7IDZ4A.js';
12
- export { ThemeProvider, ThemeProviderContext, ThemeToggle, themeToggleIconVariants, themeToggleVariants, useThemeContext } from './chunk-LL6IWKI3.js';
13
- export { Toggle, toggleVariants } from './chunk-PTZB2GKL.js';
14
- export { TranscriptView, formatTimestampMs } from './chunk-LAEIVOIY.js';
15
- export { PlayButton, VideoCard } from './chunk-TPWKM7JH.js';
16
- export { VisuallyHidden } from './chunk-H2CIKJQI.js';
17
- export { MONTH_LETTERS, MONTH_NAMES, YearTimeline, resolveCurrent } from './chunk-SQJFBZ42.js';
18
- export { Sparkline } from './chunk-CG4ZKJLE.js';
19
- import { Spinner, SpinnerWithLabel } from './chunk-UA7E7PDS.js';
20
- export { FullPageSpinner, Spinner, SpinnerWithLabel, spinnerVariants } from './chunk-UA7E7PDS.js';
21
- import { SparklesIcon, RefreshIcon, CloseIcon, AIMessageDisplay } from './chunk-22CYDCXA.js';
22
- export { AILogoIcon, AIMessageDisplay, AITypingIndicator, ChatBubble, ChevronIcon, CloseIcon, CollapsiblePill, MCPToolCallDisplay, MessageAvatar, RefreshIcon, ResourceLink, SendIcon, SparklesIcon, SpinnerIcon, ToolStatusIcon, getToolIcon } from './chunk-22CYDCXA.js';
23
- import { useTypingEmulation, EmptyState } from './chunk-3M7TAXNR.js';
24
- 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';
25
- import { notifyComposerMigrationOnce, ChatComposer, DEFAULT_MAX_FILE_SIZE, DEFAULT_ACCEPTED_FILE_TYPES } from './chunk-ACCAXVOG.js';
26
- export { AttachmentPicker, AttachmentPreviewItem, CameraButton, ChatComposer, ComposerModelSelector, DragDropZone, generateAttachmentId, getFileType, validateFile } from './chunk-ACCAXVOG.js';
20
+ import { useTypingEmulation, EmptyState } from './chunk-ZTW4KODY.js';
21
+ 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-ZTW4KODY.js';
27
22
  import { Table, TableHeader, TableRow, TableHead, TableBody, TableCell } from './chunk-TNUL4LGG.js';
28
23
  export { Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow } from './chunk-TNUL4LGG.js';
29
24
  import { Tabs, TabsList, TabsTrigger, TabsContent } from './chunk-DVOQ3JNO.js';
30
25
  export { Tabs, TabsContent, TabsList, TabsTrigger, tabsListVariants, tabsTriggerVariants } from './chunk-DVOQ3JNO.js';
31
26
  import { Text } from './chunk-3YSIZ2CK.js';
32
27
  export { SmallMuted, Text, textVariants } from './chunk-3YSIZ2CK.js';
33
- export { SectionSpyNav } from './chunk-VU6UTJRM.js';
34
- export { AnimatedNumber, SliderCalculator } from './chunk-PYJDVWXM.js';
28
+ export { ThemeProvider, ThemeProviderContext, ThemeToggle, themeToggleIconVariants, themeToggleVariants, useThemeContext } from './chunk-LL6IWKI3.js';
29
+ export { Toggle, toggleVariants } from './chunk-PTZB2GKL.js';
35
30
  import { Skeleton } from './chunk-ZIUADGAR.js';
36
31
  export { Skeleton, SkeletonCard, SkeletonTable, SkeletonText, skeletonVariants } from './chunk-ZIUADGAR.js';
37
32
  export { SourceTip } from './chunk-Z5V7SAZ4.js';
38
- export { QuickAction, QuickActionGroup, QuickActionIcons, quickActionIconVariants, quickActionVariants } from './chunk-TQDZLRIE.js';
33
+ export { Sparkline } from './chunk-CG4ZKJLE.js';
34
+ import { SparklesIcon, RefreshIcon, CloseIcon, JumpToBottomButton, AIMessageDisplay } from './chunk-TZJQB4P2.js';
35
+ export { AILogoIcon, AIMessageDisplay, AITypingIndicator, ChatBubble, ChevronIcon, CloseIcon, CollapsiblePill, MCPToolCallDisplay, MessageAvatar, RefreshIcon, ResourceLink, SendIcon, SparklesIcon, SpinnerIcon, ToolStatusIcon, getToolIcon } from './chunk-TZJQB4P2.js';
36
+ import { notifyComposerMigrationOnce, ChatComposer, DEFAULT_MAX_FILE_SIZE, DEFAULT_ACCEPTED_FILE_TYPES } from './chunk-2ABWFQQH.js';
37
+ export { AttachmentPicker, AttachmentPreviewItem, CameraButton, ChatComposer, ComposerModelSelector, DragDropZone, generateAttachmentId, getFileType, validateFile } from './chunk-2ABWFQQH.js';
39
38
  export { ReadingProgressBar } from './chunk-WKSUL2ZN.js';
40
39
  import { RecordButton } from './chunk-VNWJTCBQ.js';
41
40
  export { RecordButton, formatDuration, recordButtonVariants } from './chunk-VNWJTCBQ.js';
42
- export { RichTextEditor, convertAngleBracketsToMustache, processDictation } from './chunk-OE5CKRUC.js';
41
+ export { RichTextEditor, convertAngleBracketsToMustache, processDictation } from './chunk-MZNCLXXU.js';
43
42
  export { Separator, separatorVariants } from './chunk-OQWZYKJM.js';
44
43
  export { DateButton, DatePicker, RadioOption, SchedulePicker, TimeButton, TimePicker, dateButtonVariants, radioOptionVariants, timeButtonVariants } from './chunk-23AYDOCH.js';
45
44
  export { ScrollArea, scrollAreaVariants } from './chunk-HS25RPDW.js';
46
- import './chunk-RISZWWEQ.js';
47
- import { normalizePath, MegaMenuBar } from './chunk-2IZLKPUW.js';
48
- export { MegaMenu, MegaMenuBar, normalizePath } from './chunk-2IZLKPUW.js';
45
+ export { SectionSpyNav } from './chunk-FIKO4WR6.js';
46
+ export { AnimatedNumber, SliderCalculator } from './chunk-PYJDVWXM.js';
49
47
  export { OrbitRing } from './chunk-SUS3WFY3.js';
50
- export { RadialExplorer } from './chunk-Y5HFM7LO.js';
48
+ export { RadialExplorer } from './chunk-2BARVD4C.js';
51
49
  export { Pagination, SimplePagination, paginationButtonVariants } from './chunk-PFKRHNYV.js';
52
50
  export { PhoneInput, PhoneInputGroup } from './chunk-XOIIUO6O.js';
53
51
  import { Progress } from './chunk-CEQJGUAS.js';
54
52
  export { CircularProgress, Progress, circularProgressVariants, progressBarFillVariants, progressBarTrackVariants } from './chunk-CEQJGUAS.js';
55
- export { FloatingWindow, MinimizedWindow } from './chunk-3QGS6CXD.js';
53
+ export { QuickAction, QuickActionGroup, QuickActionIcons, quickActionIconVariants, quickActionVariants } from './chunk-TQDZLRIE.js';
54
+ export { Kbd, KeyboardShortcutsOverlay } from './chunk-BIQ7GSO2.js';
55
+ export { ListView, itemVariants as listViewItemVariants } from './chunk-4HC2IBOX.js';
56
+ export { CodeBlock, MarkdownRenderer, highlightCode, useMarkdown } from './chunk-DSB4DKWG.js';
57
+ export { MermaidBlock } from './chunk-YU55JD35.js';
58
+ export { SurveyBlock } from './chunk-FZURBQJ2.js';
59
+ export { CsvBlock } from './chunk-R6KPWIGO.js';
60
+ export { HtmlPreviewBlock } from './chunk-GVLNXPJX.js';
61
+ export { FenceBlock } from './chunk-QOVJ6Z6R.js';
62
+ export { FillerWordsModal, MediaEditor, SilenceSettingsModal, SpeedMarkerMenu, WordEditorModal } from './chunk-G45FBKKV.js';
63
+ export { Slider, sliderRangeVariants, sliderThumbVariants, sliderTrackVariants } from './chunk-2BPIVWAK.js';
64
+ import './chunk-RISZWWEQ.js';
65
+ export { MediaPlayer, inferMediaKind, mediaPlayerVariants } from './chunk-FBLVPM2K.js';
66
+ import { normalizePath, MegaMenuBar } from './chunk-THLIL6PY.js';
67
+ export { MegaMenu, MegaMenuBar, normalizePath } from './chunk-THLIL6PY.js';
68
+ import { Dropdown, DropdownItem, DropdownSeparator, DropdownContent, DropdownHeader } from './chunk-TF7YWJHU.js';
69
+ export { Dropdown, DropdownContent, DropdownHeader, DropdownItem, DropdownLabel, DropdownSeparator, DropdownSubmenu } from './chunk-TF7YWJHU.js';
70
+ export { FilterSummaryBar } from './chunk-6SCQ7FKT.js';
71
+ export { FloatingWindow, MinimizedWindow } from './chunk-ZYL4SNOR.js';
56
72
  export { FreshnessBadge, FreshnessDot, daysSince, freshnessLevel } from './chunk-HQ3XPCHG.js';
73
+ export { GanttView, defaultGanttLabels } from './chunk-Y4QNLW7W.js';
57
74
  export { GlossaryTooltip } from './chunk-RJ6NTJHC.js';
58
- export { Kbd, KeyboardShortcutsOverlay } from './chunk-VILW53UZ.js';
59
- export { CodeBlock, MarkdownRenderer, highlightCode, useMarkdown } from './chunk-WNM7IZJ7.js';
60
- export { HtmlPreviewBlock } from './chunk-V7D3YGUV.js';
61
- export { MermaidBlock } from './chunk-KZFBQ7GY.js';
62
- export { SurveyBlock } from './chunk-DEDN5HAG.js';
63
- export { CsvBlock } from './chunk-TMMVIUUN.js';
64
- export { FenceBlock } from './chunk-H4ZXMQQW.js';
65
- export { FillerWordsModal, MediaEditor, SilenceSettingsModal, SpeedMarkerMenu, WordEditorModal } from './chunk-ENKFJJZX.js';
66
- export { Slider, sliderRangeVariants, sliderThumbVariants, sliderTrackVariants } from './chunk-2BPIVWAK.js';
67
- export { MediaPlayer, inferMediaKind, mediaPlayerVariants } from './chunk-VKELAMAZ.js';
75
+ export { CalendarView, defaultCalendarLabels } from './chunk-XBTKZCZF.js';
76
+ import { Checkbox } from './chunk-753Z3NXL.js';
77
+ export { Checkbox, CheckboxGroup, checkboxVariants } from './chunk-753Z3NXL.js';
78
+ export { ClampedText } from './chunk-L6MDULYB.js';
68
79
  export { CollabStatus, defaultCollabStatusLabels, useYjsCollabStatus } from './chunk-SVSHA7XV.js';
69
- export { Collapsible, CollapsibleContent, CollapsibleTrigger } from './chunk-P2CA3XGI.js';
80
+ export { Collapsible, CollapsibleContent, CollapsibleTrigger } from './chunk-SYRLCTDV.js';
70
81
  export { CopyButton } from './chunk-5QZ73PZC.js';
71
82
  import { CountryDropdownBase } from './chunk-NJ6MY6V5.js';
72
83
  export { CountryCodeDropdown, formatE164, validatePhoneNumber } from './chunk-NJ6MY6V5.js';
73
- export { CustomizableDashboard, DashboardCustomizePanel, consolidateColumns, mergeColumnOrder, moveAcrossColumns, reorderOnDrop, requiredColumns } from './chunk-WGPLUCBD.js';
84
+ export { CustomizableDashboard, DashboardCustomizePanel, consolidateColumns, mergeColumnOrder, moveAcrossColumns, reorderOnDrop, requiredColumns } from './chunk-H2IAMSHK.js';
74
85
  import { Switch, switchThumbVariants, switchTrackVariants } from './chunk-AQ564XO7.js';
75
86
  export { Switch, switchThumbVariants, switchTrackVariants } from './chunk-AQ564XO7.js';
76
87
  export { Sheet, SheetBody, SheetClose, SheetDescription, SheetFooter, SheetHeader, SheetTitle, sheetContentVariants, sheetOverlayVariants } from './chunk-LMBXJZLG.js';
77
- import { Dropdown, DropdownItem, DropdownSeparator, DropdownContent, DropdownHeader } from './chunk-ZGRCSNPK.js';
78
- export { Dropdown, DropdownContent, DropdownHeader, DropdownItem, DropdownLabel, DropdownSeparator, DropdownSubmenu } from './chunk-ZGRCSNPK.js';
79
- export { FilterSummaryBar } from './chunk-6SCQ7FKT.js';
88
+ export { AudioRecorder, audioRecorderVariants, controlButtonVariants, formatTime, waveformContainerVariants } from './chunk-2DW4PUJD.js';
80
89
  export { Autocomplete } from './chunk-UBOVDAD7.js';
81
90
  import { Avatar } from './chunk-HZ4MBUC3.js';
82
91
  export { Avatar, AvatarGroup, avatarVariants, getInitials } from './chunk-HZ4MBUC3.js';
83
- import './chunk-IQ4KQJAO.js';
92
+ export { BoardView, cardVariants as boardViewCardVariants, defaultBoardLabels } from './chunk-XVW5DPPP.js';
93
+ export { accentClasses, defaultViewLabels, toDateTime } from './chunk-3YBS4WUQ.js';
94
+ import { Spinner, SpinnerWithLabel } from './chunk-UA7E7PDS.js';
95
+ export { FullPageSpinner, Spinner, SpinnerWithLabel, spinnerVariants } from './chunk-UA7E7PDS.js';
84
96
  export { Breadcrumb, BreadcrumbSlash } from './chunk-SCXELRRZ.js';
85
97
  import './chunk-OF7NTZ2I.js';
86
- import { Checkbox } from './chunk-753Z3NXL.js';
87
- export { Checkbox, CheckboxGroup, checkboxVariants } from './chunk-753Z3NXL.js';
88
- export { ClampedText } from './chunk-L6MDULYB.js';
89
- import { useDirection, useCommandK, useIsMobile, useMediaQuery } from './chunk-JHULS3EC.js';
90
- export { RTL_LOCALES, isRtlLocale, useCommandK, useDirection, useIsDesktop, useIsLargeDesktop, useIsMobile, useIsMobileOrTablet, useIsSmallTablet, useIsTablet, useKeyboardShortcut, useMediaQuery } from './chunk-JHULS3EC.js';
91
- export { useTheme } from './chunk-KJZNEVYM.js';
98
+ export { ComparisonSection, CtaSection, FaqSection, FeatureGridSection, HeroSection, LandingPage, LeadFormSection, LogoCloudSection, PricingSection, ProcessStepsSection, ResourceCardsSection, SectionHeading, SectionShell, SplitContentSection, StatsSection, TemplateIcon, TestimonialSection, VideoSection, defaultLeadFormFields, landingPresets, templateIcons, validateLandingPage } from './chunk-KHSFJTEX.js';
99
+ import './chunk-IQ4KQJAO.js';
100
+ import { useDirection, useCommandK, useIsMobile, useMediaQuery } from './chunk-GBUVIGD5.js';
101
+ export { KEYBOARD_INSET_VAR, KEYBOARD_OPEN_ATTRIBUTE, KEYBOARD_SOURCE_ATTRIBUTE, RTL_LOCALES, VISUAL_VIEWPORT_HEIGHT_VAR, VISUAL_VIEWPORT_OFFSET_TOP_VAR, isRtlLocale, useCommandK, useDirection, useIsDesktop, useIsLargeDesktop, useIsMobile, useIsMobileOrTablet, useIsSmallTablet, useIsTablet, useKeyboardInset, useKeyboardShortcut, useMediaQuery } from './chunk-GBUVIGD5.js';
92
102
  export { useYouTubeHoverPreview } from './chunk-POWS35OT.js';
103
+ export { useTheme } from './chunk-KJZNEVYM.js';
104
+ import { useStickToBottom, useStreamEndedBelowFold } from './chunk-BM35CACB.js';
105
+ export { useStickToBottom, useStreamEndedBelowFold } from './chunk-BM35CACB.js';
93
106
  import { useScrollSpy } from './chunk-WBGUYSWY.js';
94
107
  export { useScrollSpy } from './chunk-WBGUYSWY.js';
95
108
  export { DEFAULT_FILLER_WORDS, DEFAULT_MIN_SILENCE_MS, DEFAULT_NL_SILENCE_MS, buildPlaybackSegments, getSpeedAtIndex, initEditableWords, insertSilences, useTranscriptEdits } from './chunk-UUI7WXI5.js';
@@ -98,18 +111,17 @@ export { useMediaTransport } from './chunk-SQHMGT4W.js';
98
111
  import './chunk-7XUN3OQT.js';
99
112
  export { isHtmlEmpty, stripHtmlTags } from './chunk-ERLPVXOV.js';
100
113
  export { formatPhoneNumber, isPhoneNumberEmpty, isValidPhoneNumber, unformatPhoneNumber } from './chunk-ZVPJ2MH6.js';
101
- export { miewebUIPreset, miewebUISafelist } from './chunk-JI244Y7C.js';
114
+ export { miewebUIPreset, miewebUISafelist } from './chunk-EK3BCET6.js';
102
115
  export { Accordion } from './chunk-KRU6IGV7.js';
103
116
  import { Alert, AlertTitle, AlertDescription } from './chunk-3JWAABYI.js';
104
117
  export { Alert, AlertDescription, AlertTitle, alertVariants } from './chunk-3JWAABYI.js';
105
- import { AlertDialog } from './chunk-VOKVG3ER.js';
106
- export { AlertDialog } from './chunk-VOKVG3ER.js';
118
+ import { AlertDialog } from './chunk-UBSH27C2.js';
119
+ export { AlertDialog } from './chunk-UBSH27C2.js';
107
120
  export { AudioPlayer, ProgressBar, audioPlayerVariants, formatTime as formatAudioTime, playButtonVariants } from './chunk-VVDE4CHU.js';
108
- export { AudioRecorder, audioRecorderVariants, controlButtonVariants, formatTime, waveformContainerVariants } from './chunk-2DW4PUJD.js';
109
121
  import { evaluateDue, completedKeys, normalizeOrders } from './chunk-Y5KEFV5O.js';
110
122
  export { buildChartOrderRows, buildEncounterOrderRows, dueForOrder, evaluateDue, evaluateProgram, isApplicable } from './chunk-Y5KEFV5O.js';
111
- import { useCodeLookupConfig, RowActionToolbar, RowIconButton, toolbarKeyNav, parseSig, labelToMedicationFields, MedicationEditor } from './chunk-2YCERQWC.js';
112
- export { ALLERGY_TYPE_LABELS, AllergyList, AllergyManager, CodeLookupProvider, MEDICATION_STATUS_LABELS, MedicationEditor, MedicationList, MedicationReconciliation, RowActionToolbar, RowIconButton, labelToMedicationFields, lookupToMedicationFields, parseMedicationLabel, parseSig, toolbarKeyNav, useCodeLookupConfig } from './chunk-2YCERQWC.js';
123
+ import { useCodeLookupConfig, RowActionToolbar, RowIconButton, toolbarKeyNav, parseSig, labelToMedicationFields, MedicationEditor } from './chunk-IH55BEB3.js';
124
+ export { ALLERGY_TYPE_LABELS, AllergyList, AllergyManager, CodeLookupProvider, MEDICATION_STATUS_LABELS, MedicationEditor, MedicationList, MedicationReconciliation, RowActionToolbar, RowIconButton, labelToMedicationFields, lookupToMedicationFields, parseMedicationLabel, parseSig, toolbarKeyNav, useCodeLookupConfig } from './chunk-IH55BEB3.js';
113
125
  import { Textarea } from './chunk-H3YO5GBM.js';
114
126
  export { Textarea, textareaVariants } from './chunk-H3YO5GBM.js';
115
127
  import { Tooltip } from './chunk-FJ7YPVKV.js';
@@ -122,9 +134,9 @@ import { Select } from './chunk-S7WCHDBO.js';
122
134
  export { Select, selectTriggerVariants } from './chunk-S7WCHDBO.js';
123
135
  import { DateInput } from './chunk-7IBZA7G6.js';
124
136
  export { DateInput } from './chunk-7IBZA7G6.js';
125
- import './chunk-6NZXWKUE.js';
126
137
  import { Card, CardHeader, CardContent, CardTitle } from './chunk-QYSUYB3S.js';
127
138
  export { Card, CardActions, CardBadge, CardCollapsible, CardContent, CardDescription, CardDivider, CardFooter, CardHeader, CardMedia, CardStat, CardTitle, cardAccentVariants, cardVariants } from './chunk-QYSUYB3S.js';
139
+ import './chunk-6NZXWKUE.js';
128
140
  import { Input, inputVariants } from './chunk-3IMM2PM4.js';
129
141
  export { Input, RequiredMark, floatingGroupLabelVariants, floatingGroupVariants, floatingLabelVariants, inputVariants } from './chunk-3IMM2PM4.js';
130
142
  import { useLiveAnnouncement, useDragReorder, dragIndicatorClasses, reorderIds } from './chunk-7ZVTLTJF.js';
@@ -135,8 +147,8 @@ import { useAnchoredPosition } from './chunk-WSNMQQ4P.js';
135
147
  export { useAnchoredPosition } from './chunk-WSNMQQ4P.js';
136
148
  import { dateToDisplayFormat, isValidDate, displayFormatToDateString } from './chunk-RC2YMOMS.js';
137
149
  export { calculateAge, dateToDisplayFormat, displayFormatToDateString, formatDateValue, isDateEmpty, isDateInFuture, isDateInPast, isValidDate, isValidDrivingAge, parseDateValue } from './chunk-RC2YMOMS.js';
138
- import { Modal, ModalHeader, ModalTitle, ModalClose, ModalBody, ModalFooter } from './chunk-5JJ2DAE4.js';
139
- export { Modal, ModalBody, ModalClose, ModalFooter, ModalHeader, ModalTitle, modalContentVariants, modalOverlayVariants } from './chunk-5JJ2DAE4.js';
150
+ import { Modal, ModalHeader, ModalTitle, ModalClose, ModalBody, ModalFooter } from './chunk-ENMXHZNE.js';
151
+ export { Modal, ModalBody, ModalClose, ModalFooter, ModalHeader, ModalTitle, modalContentVariants, modalOverlayVariants } from './chunk-ENMXHZNE.js';
140
152
  import { useFocusTrap } from './chunk-4SMSH4OY.js';
141
153
  export { useFocusTrap } from './chunk-4SMSH4OY.js';
142
154
  import { useEscapeKey } from './chunk-T4ME7QCT.js';
@@ -145,19 +157,22 @@ import { isStorybookDocsMode } from './chunk-VSQF22GL.js';
145
157
  export { isStorybookDocsMode } from './chunk-VSQF22GL.js';
146
158
  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';
147
159
  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';
160
+ import { usePrefersReducedMotion } from './chunk-HB7C7NB5.js';
148
161
  export { usePrefersReducedMotion } from './chunk-HB7C7NB5.js';
149
162
  import { Badge } from './chunk-BMSG4NBH.js';
150
163
  export { Badge, badgeVariants } from './chunk-BMSG4NBH.js';
151
- import { Button, buttonVariants } from './chunk-GOALNQZ2.js';
152
- export { Button, buttonVariants } from './chunk-GOALNQZ2.js';
164
+ import { Button } from './chunk-7YO7DNUV.js';
165
+ export { Button } from './chunk-7YO7DNUV.js';
166
+ import { buttonVariants } from './chunk-GVM6DTR5.js';
167
+ export { buttonVariants } from './chunk-GVM6DTR5.js';
153
168
  export { isDarkMode, useIsDarkMode } from './chunk-RUGHNFQG.js';
154
- import { AnimatedPresence, Animated } from './chunk-XCP454Q6.js';
155
- export { Animated, AnimatedPresence, motionPresets, useMotionRuntime } from './chunk-XCP454Q6.js';
169
+ import { AnimatedPresence, Animated } from './chunk-F4N67NAF.js';
170
+ export { Animated, AnimatedPresence, motionPresets, useMotionRuntime } from './chunk-F4N67NAF.js';
156
171
  import { cn } from './chunk-TQONQSJO.js';
157
172
  export { cn, miewebUITwMergeConflicts } from './chunk-TQONQSJO.js';
158
173
  import './chunk-PX6F3LHL.js';
159
174
  import * as React13 from 'react';
160
- import React13__default, { createContext, useState, useEffect, useCallback, useMemo, useContext, useRef } from 'react';
175
+ import React13__default, { createContext, useState, useEffect, useCallback, useMemo, useContext, useRef, useId } from 'react';
161
176
  import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
162
177
  import { cva } from 'class-variance-authority';
163
178
  import * as ReactDOM from 'react-dom';
@@ -1502,7 +1517,6 @@ function AIChat({
1502
1517
  renderTextContent,
1503
1518
  renderMessageFooter
1504
1519
  }) {
1505
- const messagesContainerRef = React13.useRef(null);
1506
1520
  React13.useEffect(() => {
1507
1521
  notifyComposerMigrationOnce("AIChat");
1508
1522
  }, []);
@@ -1511,10 +1525,108 @@ function AIChat({
1511
1525
  [session?.messages, messagesProp]
1512
1526
  );
1513
1527
  const isGenerating = session?.isGenerating || isGeneratingProp || false;
1528
+ const prefersReducedMotion = usePrefersReducedMotion();
1529
+ const {
1530
+ containerRef: messagesContainerRef,
1531
+ contentRef: messagesContentRef,
1532
+ isAtBottom,
1533
+ scrollToBottom,
1534
+ anchorToTurnStart,
1535
+ followIfPinned,
1536
+ stopFollowing
1537
+ } = useStickToBottom();
1538
+ const [hasNewBelow, setHasNewBelow] = React13.useState(false);
1539
+ const [turnStartId, setTurnStartId] = React13.useState(null);
1540
+ const [turnMinHeight, setTurnMinHeight] = React13.useState();
1541
+ const anchoredTurnRef = React13.useRef(null);
1542
+ React13.useEffect(() => {
1543
+ setTurnStartId(null);
1544
+ anchoredTurnRef.current = null;
1545
+ scrollToBottom("auto");
1546
+ setHasNewBelow(false);
1547
+ }, [session?.id, scrollToBottom]);
1548
+ const messageCount = messages.length;
1549
+ const prevMessageCountRef = React13.useRef(messageCount);
1550
+ const policySessionRef = React13.useRef(session?.id);
1551
+ const policyBaselinedRef = React13.useRef(false);
1514
1552
  React13.useEffect(() => {
1553
+ if (!policyBaselinedRef.current || policySessionRef.current !== session?.id) {
1554
+ policyBaselinedRef.current = true;
1555
+ policySessionRef.current = session?.id;
1556
+ prevMessageCountRef.current = messageCount;
1557
+ if (messages.at(-1)?.status === "streaming") stopFollowing();
1558
+ return;
1559
+ }
1560
+ const prevCount = prevMessageCountRef.current;
1561
+ if (messageCount === prevCount) return;
1562
+ const grew = messageCount > prevCount;
1563
+ prevMessageCountRef.current = messageCount;
1564
+ const ownMessage = grew ? messages.slice(prevCount).filter((m) => m.role === "user").at(-1) : void 0;
1565
+ if (ownMessage) {
1566
+ setTurnStartId(ownMessage.id);
1567
+ } else if (grew && messages.at(-1)?.status === "streaming") {
1568
+ followIfPinned("auto");
1569
+ stopFollowing();
1570
+ } else if (!followIfPinned("auto") && grew) {
1571
+ setHasNewBelow(true);
1572
+ }
1573
+ }, [messageCount, isAtBottom, session?.id]);
1574
+ React13.useLayoutEffect(() => {
1575
+ if (!turnStartId || anchoredTurnRef.current === turnStartId) return;
1515
1576
  const container = messagesContainerRef.current;
1516
- if (container) container.scrollTop = container.scrollHeight;
1517
- }, [messages]);
1577
+ if (!container) return;
1578
+ const reserve = Math.max(0, container.clientHeight - 32);
1579
+ if (turnMinHeight !== reserve) {
1580
+ setTurnMinHeight(reserve);
1581
+ return;
1582
+ }
1583
+ const target = container.querySelector(
1584
+ '[data-slot="ai-chat-turn"]'
1585
+ );
1586
+ if (target) {
1587
+ anchorToTurnStart(target, prefersReducedMotion ? "auto" : "smooth");
1588
+ anchoredTurnRef.current = turnStartId;
1589
+ }
1590
+ }, [
1591
+ turnStartId,
1592
+ turnMinHeight,
1593
+ anchorToTurnStart,
1594
+ prefersReducedMotion,
1595
+ messagesContainerRef
1596
+ ]);
1597
+ const turnIndex = React13.useMemo(
1598
+ () => turnStartId ? messages.findIndex((m) => m.id === turnStartId) : -1,
1599
+ [messages, turnStartId]
1600
+ );
1601
+ React13.useEffect(() => {
1602
+ if (isAtBottom) setHasNewBelow(false);
1603
+ }, [isAtBottom]);
1604
+ const raiseNewBelow = React13.useCallback(() => setHasNewBelow(true), []);
1605
+ const resumeFollowing = React13.useCallback(
1606
+ () => scrollToBottom("auto"),
1607
+ [scrollToBottom]
1608
+ );
1609
+ useStreamEndedBelowFold(
1610
+ messages.at(-1),
1611
+ isAtBottom,
1612
+ raiseNewBelow,
1613
+ resumeFollowing
1614
+ );
1615
+ const handleJumpToBottom = React13.useCallback(() => {
1616
+ scrollToBottom(prefersReducedMotion ? "auto" : "smooth");
1617
+ }, [scrollToBottom, prefersReducedMotion]);
1618
+ const renderMessageItem = (message) => /* @__PURE__ */ jsx(
1619
+ AIMessageDisplay,
1620
+ {
1621
+ message,
1622
+ userName,
1623
+ showTimestamp: showTimestamps,
1624
+ onLinkClick: handleLinkClick,
1625
+ renderTextContent,
1626
+ renderMessageFooter
1627
+ },
1628
+ message.id
1629
+ );
1518
1630
  const {
1519
1631
  showAttachmentPicker,
1520
1632
  inputTrailing,
@@ -1652,30 +1764,47 @@ function AIChat({
1652
1764
  ]
1653
1765
  }
1654
1766
  ),
1655
- /* @__PURE__ */ jsx(
1767
+ /* @__PURE__ */ jsxs(
1656
1768
  "div",
1657
1769
  {
1658
- ref: messagesContainerRef,
1659
- "data-slot": "ai-chat-messages",
1660
- className: "flex-1 overflow-y-auto px-4 py-4",
1661
- children: messages.length === 0 ? /* @__PURE__ */ jsx(
1662
- AIEmptyState,
1663
- {
1664
- suggestions,
1665
- onSuggestionSelect: handleSuggestionSelect
1666
- }
1667
- ) : /* @__PURE__ */ jsx("div", { className: "space-y-4", children: messages.map((message) => /* @__PURE__ */ jsx(
1668
- AIMessageDisplay,
1669
- {
1670
- message,
1671
- userName,
1672
- showTimestamp: showTimestamps,
1673
- onLinkClick: handleLinkClick,
1674
- renderTextContent,
1675
- renderMessageFooter
1676
- },
1677
- message.id
1678
- )) })
1770
+ "data-slot": "ai-chat-messages-viewport",
1771
+ className: "relative flex min-h-0 flex-1 flex-col",
1772
+ children: [
1773
+ /* @__PURE__ */ jsx(
1774
+ "div",
1775
+ {
1776
+ ref: messagesContainerRef,
1777
+ "data-slot": "ai-chat-messages",
1778
+ className: "flex-1 overflow-y-auto px-4 py-4",
1779
+ children: /* @__PURE__ */ jsx("div", { ref: messagesContentRef, children: messages.length === 0 ? /* @__PURE__ */ jsx(
1780
+ AIEmptyState,
1781
+ {
1782
+ suggestions,
1783
+ onSuggestionSelect: handleSuggestionSelect
1784
+ }
1785
+ ) : /* @__PURE__ */ jsxs("div", { className: "space-y-4", children: [
1786
+ (turnIndex === -1 ? messages : messages.slice(0, turnIndex)).map(renderMessageItem),
1787
+ turnIndex !== -1 && /* @__PURE__ */ jsx(
1788
+ "div",
1789
+ {
1790
+ "data-slot": "ai-chat-turn",
1791
+ className: "space-y-4",
1792
+ style: { minHeight: turnMinHeight },
1793
+ children: messages.slice(turnIndex).map(renderMessageItem)
1794
+ }
1795
+ )
1796
+ ] }) })
1797
+ }
1798
+ ),
1799
+ !isAtBottom && /* @__PURE__ */ jsx(
1800
+ JumpToBottomButton,
1801
+ {
1802
+ dataSlot: "ai-chat-jump-to-bottom",
1803
+ hasNewMessages: hasNewBelow,
1804
+ onClick: handleJumpToBottom
1805
+ }
1806
+ )
1807
+ ]
1679
1808
  }
1680
1809
  ),
1681
1810
  /* @__PURE__ */ jsxs(
@@ -3938,21 +4067,27 @@ function endsWithDone(text) {
3938
4067
  );
3939
4068
  }
3940
4069
  function useSpeakerVerify(opts = {}) {
3941
- const { enabled = true } = opts;
4070
+ const { enabled = true, voiceprintNamespace } = opts;
3942
4071
  const [ready, setReady] = React13.useState(false);
4072
+ const [loadedNamespace, setLoadedNamespace] = React13.useState();
3943
4073
  const [error, setError] = React13.useState(null);
3944
4074
  const svRef = React13.useRef(null);
3945
4075
  React13.useEffect(() => {
3946
4076
  if (!enabled) return;
4077
+ setReady(false);
4078
+ setError(null);
4079
+ svRef.current = null;
3947
4080
  let cancelled = false;
3948
4081
  (async () => {
3949
4082
  try {
3950
- await import('./speaker-verify-R67P433H.js');
4083
+ await import('./speaker-verify-AWSKI6DI.js');
3951
4084
  const sv = window.SpeakerVerify;
3952
4085
  if (!sv) throw new Error("SpeakerVerify failed to initialize");
3953
4086
  await sv.ready();
4087
+ await sv.loadNamespace(voiceprintNamespace);
3954
4088
  if (cancelled) return;
3955
4089
  svRef.current = sv;
4090
+ setLoadedNamespace(voiceprintNamespace);
3956
4091
  console.log("[speaker] TitaNet ready");
3957
4092
  setReady(true);
3958
4093
  } catch (e) {
@@ -3962,21 +4097,22 @@ function useSpeakerVerify(opts = {}) {
3962
4097
  return () => {
3963
4098
  cancelled = true;
3964
4099
  };
3965
- }, [enabled]);
4100
+ }, [enabled, voiceprintNamespace]);
4101
+ const scopedApi = enabled && ready && loadedNamespace === voiceprintNamespace ? svRef.current : null;
3966
4102
  return {
3967
- ready,
4103
+ ready: scopedApi !== null,
3968
4104
  error,
3969
- enroll: (phrase, utterances, opts2) => svRef.current?.enroll(phrase, utterances, opts2) ?? null,
3970
- verify: (phrase, samples, sampleRate) => svRef.current?.verify(phrase, samples, sampleRate) ?? null,
3971
- conditionCount: (phrase) => svRef.current?.conditionCount(phrase) ?? 0,
3972
- embed: (samples, sampleRate) => svRef.current?.embed(samples, sampleRate) ?? null,
3973
- identify: (samples, sampleRate) => svRef.current?.identify(samples, sampleRate) ?? null,
3974
- listVoices: () => svRef.current?.listVoices() ?? [],
3975
- removeVoice: (voiceId) => svRef.current?.removeVoice(voiceId),
3976
- renameVoice: (voiceId, label) => svRef.current?.renameVoice(voiceId, label),
3977
- clear: () => svRef.current?.clearEnrollment(),
4105
+ enroll: (phrase, utterances, opts2) => scopedApi?.enroll(phrase, utterances, opts2, voiceprintNamespace) ?? null,
4106
+ verify: (phrase, samples, sampleRate) => scopedApi?.verify(phrase, samples, sampleRate, voiceprintNamespace) ?? null,
4107
+ conditionCount: (phrase) => scopedApi?.conditionCount(phrase, voiceprintNamespace) ?? 0,
4108
+ embed: (samples, sampleRate) => scopedApi?.embed(samples, sampleRate) ?? null,
4109
+ identify: (samples, sampleRate) => scopedApi?.identify(samples, sampleRate, voiceprintNamespace) ?? null,
4110
+ listVoices: () => scopedApi?.listVoices(voiceprintNamespace) ?? [],
4111
+ removeVoice: (voiceId) => scopedApi?.removeVoice(voiceId, voiceprintNamespace),
4112
+ renameVoice: (voiceId, label) => scopedApi?.renameVoice(voiceId, label, voiceprintNamespace),
4113
+ clear: () => scopedApi?.clearEnrollment(voiceprintNamespace),
3978
4114
  setGates: (g) => {
3979
- const sv = svRef.current;
4115
+ const sv = scopedApi;
3980
4116
  if (!sv) return;
3981
4117
  if (g.cosine != null) sv.threshold = g.cosine;
3982
4118
  if (g.znorm != null) sv.znormThreshold = g.znorm;
@@ -4159,11 +4295,14 @@ function useDiarization(options = {}) {
4159
4295
  merge = true,
4160
4296
  inferRoles = false,
4161
4297
  enabled = true,
4162
- minSegmentSeconds = 1
4298
+ minSegmentSeconds = 1,
4299
+ voiceprintNamespace
4163
4300
  } = options;
4164
- const sv = useSpeakerVerify({ enabled });
4301
+ const sv = useSpeakerVerify({ enabled, voiceprintNamespace });
4165
4302
  const svRef = React13.useRef(sv);
4166
4303
  svRef.current = sv;
4304
+ const nsRef = React13.useRef(voiceprintNamespace);
4305
+ nsRef.current = voiceprintNamespace;
4167
4306
  const [busy, setBusy] = React13.useState(false);
4168
4307
  const [error, setError] = React13.useState(null);
4169
4308
  const [result, setResult] = React13.useState(null);
@@ -4176,10 +4315,16 @@ function useDiarization(options = {}) {
4176
4315
  setError(null);
4177
4316
  try {
4178
4317
  const svh = svRef.current;
4318
+ const passNamespace = nsRef.current;
4319
+ const assertNamespace = () => {
4320
+ if (nsRef.current !== passNamespace)
4321
+ throw new Error("voiceprint namespace changed during diarization");
4322
+ };
4179
4323
  const [segments, samples] = await Promise.all([
4180
4324
  transcribeSegments(blob),
4181
4325
  decodeTo16kMono(blob)
4182
4326
  ]);
4327
+ assertNamespace();
4183
4328
  if (!segments.length) {
4184
4329
  setResult([]);
4185
4330
  return [];
@@ -4234,6 +4379,7 @@ function useDiarization(options = {}) {
4234
4379
  }
4235
4380
  }
4236
4381
  if (merge) out = mergeTurns(out);
4382
+ assertNamespace();
4237
4383
  setResult(out);
4238
4384
  return out;
4239
4385
  } catch (e) {
@@ -4256,158 +4402,6 @@ function useDiarization(options = {}) {
4256
4402
  return { ready: sv.ready, busy, error, result, diarize };
4257
4403
  }
4258
4404
 
4259
- // src/components/AI/voiceprintStore.ts
4260
- var DB_NAME = "ozwell-voice";
4261
- var STORE = "voiceprints";
4262
- var DB_VERSION = 1;
4263
- function openDb() {
4264
- return new Promise((resolve, reject) => {
4265
- const req = indexedDB.open(DB_NAME, DB_VERSION);
4266
- req.onupgradeneeded = () => {
4267
- if (!req.result.objectStoreNames.contains(STORE))
4268
- req.result.createObjectStore(STORE);
4269
- };
4270
- req.onsuccess = () => resolve(req.result);
4271
- req.onerror = () => reject(req.error);
4272
- req.onblocked = () => reject(
4273
- new Error("IndexedDB open blocked (another tab holds an upgrade lock)")
4274
- );
4275
- });
4276
- }
4277
- function idbGet(key) {
4278
- return openDb().then(
4279
- (db) => new Promise((resolve, reject) => {
4280
- const req = db.transaction(STORE, "readonly").objectStore(STORE).get(key);
4281
- req.onsuccess = () => {
4282
- resolve(req.result);
4283
- db.close();
4284
- };
4285
- req.onerror = () => {
4286
- reject(req.error);
4287
- db.close();
4288
- };
4289
- })
4290
- );
4291
- }
4292
- function idbSet(key, value) {
4293
- return openDb().then(
4294
- (db) => new Promise((resolve, reject) => {
4295
- const tx = db.transaction(STORE, "readwrite");
4296
- tx.objectStore(STORE).put(value, key);
4297
- tx.oncomplete = () => {
4298
- resolve();
4299
- db.close();
4300
- };
4301
- tx.onerror = () => {
4302
- reject(tx.error);
4303
- db.close();
4304
- };
4305
- tx.onabort = () => {
4306
- reject(tx.error);
4307
- db.close();
4308
- };
4309
- })
4310
- );
4311
- }
4312
- function idbDel(key) {
4313
- return openDb().then(
4314
- (db) => new Promise((resolve, reject) => {
4315
- const tx = db.transaction(STORE, "readwrite");
4316
- tx.objectStore(STORE).delete(key);
4317
- tx.oncomplete = () => {
4318
- resolve();
4319
- db.close();
4320
- };
4321
- tx.onerror = () => {
4322
- reject(tx.error);
4323
- db.close();
4324
- };
4325
- tx.onabort = () => {
4326
- reject(tx.error);
4327
- db.close();
4328
- };
4329
- })
4330
- );
4331
- }
4332
- async function getVoiceprints(key, migrateLegacy) {
4333
- try {
4334
- const existing = await idbGet(key);
4335
- if (existing !== void 0) return existing;
4336
- if (migrateLegacy) {
4337
- let raw = null;
4338
- try {
4339
- raw = localStorage.getItem(key);
4340
- } catch {
4341
- }
4342
- if (raw != null) {
4343
- let migrated;
4344
- try {
4345
- migrated = migrateLegacy(raw);
4346
- } catch {
4347
- try {
4348
- localStorage.removeItem(key);
4349
- } catch {
4350
- }
4351
- return void 0;
4352
- }
4353
- try {
4354
- await idbSet(key, migrated);
4355
- } catch {
4356
- }
4357
- try {
4358
- localStorage.removeItem(key);
4359
- } catch {
4360
- }
4361
- return migrated;
4362
- }
4363
- }
4364
- return void 0;
4365
- } catch {
4366
- return void 0;
4367
- }
4368
- }
4369
- async function setVoiceprints(key, value) {
4370
- try {
4371
- await idbSet(key, value);
4372
- } catch {
4373
- }
4374
- }
4375
- async function clearVoiceprints(key) {
4376
- try {
4377
- await idbDel(key);
4378
- } catch {
4379
- }
4380
- try {
4381
- localStorage.removeItem(key);
4382
- } catch {
4383
- }
4384
- }
4385
- var WHAT_KEY = "ozwellWhatPrints";
4386
- function parseLegacyWhat(raw) {
4387
- let o;
4388
- try {
4389
- o = JSON.parse(raw || "{}") || {};
4390
- } catch {
4391
- return {};
4392
- }
4393
- const out = /* @__PURE__ */ Object.create(null);
4394
- for (const k of Object.keys(o))
4395
- out[k] = (o[k] || []).map((a) => Float32Array.from(a));
4396
- return out;
4397
- }
4398
- function loadWhatPrints() {
4399
- return getVoiceprints(
4400
- WHAT_KEY,
4401
- parseLegacyWhat
4402
- ).then((v) => v ?? {});
4403
- }
4404
- function saveWhatPrints(map) {
4405
- return setVoiceprints(WHAT_KEY, map);
4406
- }
4407
- function clearWhatPrints() {
4408
- return clearVoiceprints(WHAT_KEY);
4409
- }
4410
-
4411
4405
  // src/components/AI/HeyOzwell/audio.ts
4412
4406
  function openRollingRecorder(stream, maxSeconds = 2) {
4413
4407
  const Ctx = window.AudioContext || window.webkitAudioContext;
@@ -4575,6 +4569,7 @@ function useRoomLevel(getStream, ready) {
4575
4569
  }
4576
4570
  function useHeyOzwell(options = {}) {
4577
4571
  const {
4572
+ voiceprintNamespace,
4578
4573
  autoDictateOnWake = false,
4579
4574
  closeChatOnDone = false,
4580
4575
  transcription = "browser",
@@ -4634,13 +4629,14 @@ function useHeyOzwell(options = {}) {
4634
4629
  setLiveText("");
4635
4630
  }, []);
4636
4631
  const wakeRef = React13.useRef(null);
4637
- const sv = useSpeakerVerify({ enabled: requireDoctor });
4632
+ const sv = useSpeakerVerify({ enabled: requireDoctor, voiceprintNamespace });
4638
4633
  const svRef = React13.useRef(sv);
4639
4634
  svRef.current = sv;
4640
4635
  const rollRef = React13.useRef(null);
4641
4636
  const diar = useDiarization({
4642
4637
  ...diarizationOptions,
4643
- enabled: conversationMode
4638
+ enabled: conversationMode,
4639
+ voiceprintNamespace
4644
4640
  });
4645
4641
  const diarRef = React13.useRef(diar);
4646
4642
  diarRef.current = diar;
@@ -4648,6 +4644,7 @@ function useHeyOzwell(options = {}) {
4648
4644
  (name) => {
4649
4645
  if (!requireDoctor) return true;
4650
4646
  const svh = svRef.current;
4647
+ if (!svh.ready) return false;
4651
4648
  const enrolled = svh.conditionCount(name) > 0;
4652
4649
  if (!enrolled) return true;
4653
4650
  const roll = rollRef.current;
@@ -4852,9 +4849,14 @@ function useHeyOzwell(options = {}) {
4852
4849
  if (!requireDoctor || !active || !wake.ready) return;
4853
4850
  let cancelled = false;
4854
4851
  let tries = 0;
4855
- void loadWhatPrints().then((loaded) => {
4852
+ const applied = /* @__PURE__ */ new Set(["hey-ozwell", "ozwell-i'm-done"]);
4853
+ for (const k of applied) wakeRef.current?.setVoiceprint(k, []);
4854
+ void loadWhatPrints(voiceprintNamespace).then((loaded) => {
4856
4855
  if (cancelled) return;
4857
- for (const k in loaded) wakeRef.current?.setVoiceprint(k, loaded[k]);
4856
+ for (const k in loaded) {
4857
+ applied.add(k);
4858
+ wakeRef.current?.setVoiceprint(k, loaded[k]);
4859
+ }
4858
4860
  });
4859
4861
  const tryOpen = () => {
4860
4862
  if (cancelled || rollRef.current) return;
@@ -4865,10 +4867,11 @@ function useHeyOzwell(options = {}) {
4865
4867
  tryOpen();
4866
4868
  return () => {
4867
4869
  cancelled = true;
4870
+ for (const k of applied) wakeRef.current?.setVoiceprint(k, []);
4868
4871
  rollRef.current?.close();
4869
4872
  rollRef.current = null;
4870
4873
  };
4871
- }, [requireDoctor, active, wake.ready]);
4874
+ }, [requireDoctor, active, wake.ready, voiceprintNamespace]);
4872
4875
  const hasListenedRef = React13.useRef(false);
4873
4876
  React13.useEffect(() => {
4874
4877
  if (listening) hasListenedRef.current = true;
@@ -5160,11 +5163,11 @@ var REPS = 3;
5160
5163
  var TIMEOUT_MS = 5e3;
5161
5164
  var delay = (ms) => new Promise((r) => setTimeout(r, ms));
5162
5165
  function useVoiceSetup(options = {}) {
5163
- const { startAdding = false, voiceId, label } = options;
5166
+ const { startAdding = false, voiceId, label, voiceprintNamespace } = options;
5164
5167
  const [enrollVoiceId] = React13.useState(
5165
5168
  () => voiceId || (startAdding ? `voice-${Date.now()}-${Math.floor(Math.random() * 1e4)}` : "you")
5166
5169
  );
5167
- const sv = useSpeakerVerify();
5170
+ const sv = useSpeakerVerify({ voiceprintNamespace });
5168
5171
  const expectRef = React13.useRef(null);
5169
5172
  const resolveRef = React13.useRef(null);
5170
5173
  const whatRef = React13.useRef({});
@@ -5186,10 +5189,19 @@ function useVoiceSetup(options = {}) {
5186
5189
  const total = PHRASES2.length * REPS;
5187
5190
  React13.useEffect(() => {
5188
5191
  warmWhisper();
5189
- void loadWhatPrints().then((w) => {
5190
- whatRef.current = w;
5192
+ let cancelled = false;
5193
+ whatRef.current = {};
5194
+ void loadWhatPrints(voiceprintNamespace).then((w) => {
5195
+ if (!cancelled) whatRef.current = w;
5191
5196
  });
5192
- }, []);
5197
+ return () => {
5198
+ cancelled = true;
5199
+ abortRef.current = true;
5200
+ resolveRef.current?.("__cancelled__");
5201
+ setPhase("intro");
5202
+ setStep(0);
5203
+ };
5204
+ }, [voiceprintNamespace]);
5193
5205
  React13.useEffect(() => {
5194
5206
  if (!wake.ready) {
5195
5207
  setLevel(0);
@@ -5301,10 +5313,10 @@ function useVoiceSetup(options = {}) {
5301
5313
  whatRef.current[ph.key] = merged;
5302
5314
  wakeRef.current.setVoiceprint(ph.key, merged);
5303
5315
  }
5304
- void saveWhatPrints(whatRef.current);
5316
+ void saveWhatPrints(whatRef.current, voiceprintNamespace);
5305
5317
  setAdding(false);
5306
5318
  setPhase("done");
5307
- }, [bothReady, phase, adding, sv, enrollVoiceId, label]);
5319
+ }, [bothReady, phase, adding, sv, enrollVoiceId, label, voiceprintNamespace]);
5308
5320
  const addAnotherSpot = React13.useCallback(() => {
5309
5321
  setAdding(true);
5310
5322
  setPhase("intro");
@@ -5337,6 +5349,7 @@ var SUCCESS = "var(--mieweb-success, hsl(142.1 76.2% 36.3%))";
5337
5349
  var ozA2 = (pct) => `color-mix(in srgb, ${OZ2} ${pct}%, transparent)`;
5338
5350
  var ozBtn = "bg-ozwell hover:bg-ozwell active:bg-ozwell text-ozwell-foreground hover:brightness-95 active:brightness-90";
5339
5351
  function VoiceSetup({
5352
+ voiceprintNamespace,
5340
5353
  mode = "enroll",
5341
5354
  voiceId,
5342
5355
  label,
@@ -5344,7 +5357,12 @@ function VoiceSetup({
5344
5357
  onDone,
5345
5358
  onCancel
5346
5359
  }) {
5347
- const oz = useVoiceSetup({ startAdding: mode === "add", voiceId, label });
5360
+ const oz = useVoiceSetup({
5361
+ startAdding: mode === "add",
5362
+ voiceId,
5363
+ label,
5364
+ voiceprintNamespace
5365
+ });
5348
5366
  const { phase, phrase, step, total, adding, level, ready, error } = oz;
5349
5367
  const octoScale = 1 + Math.min(0.32, level * 2.2);
5350
5368
  const glowOpacity = 0.35 + Math.min(0.6, level * 4);
@@ -5555,8 +5573,11 @@ function VoiceSetup({
5555
5573
  var OZ3 = "var(--mieweb-ozwell, #0BA0E0)";
5556
5574
  var ozBtn2 = "bg-ozwell hover:bg-ozwell active:bg-ozwell text-ozwell-foreground hover:brightness-95 active:brightness-90";
5557
5575
  var dangerOutline = "border-destructive text-destructive hover:bg-destructive/10 hover:text-destructive";
5558
- function VoiceManager({ logoSrc }) {
5559
- const sv = useSpeakerVerify();
5576
+ function VoiceManager({
5577
+ logoSrc,
5578
+ voiceprintNamespace
5579
+ }) {
5580
+ const sv = useSpeakerVerify({ voiceprintNamespace });
5560
5581
  const [inSetup, setInSetup] = React13.useState(null);
5561
5582
  const [, setTick] = React13.useState(0);
5562
5583
  const [addName, setAddName] = React13.useState("");
@@ -5568,6 +5589,7 @@ function VoiceManager({ logoSrc }) {
5568
5589
  return /* @__PURE__ */ jsx(
5569
5590
  VoiceSetup,
5570
5591
  {
5592
+ voiceprintNamespace,
5571
5593
  mode: inSetup.mode,
5572
5594
  voiceId: inSetup.voiceId,
5573
5595
  label: inSetup.label,
@@ -5599,7 +5621,7 @@ function VoiceManager({ logoSrc }) {
5599
5621
  };
5600
5622
  const clearAll = () => {
5601
5623
  sv.clear();
5602
- void clearWhatPrints();
5624
+ void clearWhatPrints(voiceprintNamespace);
5603
5625
  setTick((t) => t + 1);
5604
5626
  };
5605
5627
  return /* @__PURE__ */ jsxs("div", { className: "bg-background text-foreground flex min-h-full flex-col items-center justify-center p-6 text-center", children: [
@@ -5749,6 +5771,7 @@ function VoiceManager({ logoSrc }) {
5749
5771
  ] });
5750
5772
  }
5751
5773
  function HandsFreeChat({
5774
+ voiceprintNamespace,
5752
5775
  title = "Ozwell Assistant \u2014 hands-free",
5753
5776
  suggestions,
5754
5777
  userName,
@@ -5761,6 +5784,7 @@ function HandsFreeChat({
5761
5784
  autoDictateOnWake = true
5762
5785
  }) {
5763
5786
  const oz = useHeyOzwell({
5787
+ voiceprintNamespace,
5764
5788
  autoStart: true,
5765
5789
  // always listening while mounted
5766
5790
  autoDictateOnWake,
@@ -5839,7 +5863,13 @@ function HandsFreeChat({
5839
5863
  /* @__PURE__ */ jsx(ModalTitle, { children: "Your voice" }),
5840
5864
  /* @__PURE__ */ jsx(ModalClose, {})
5841
5865
  ] }),
5842
- /* @__PURE__ */ jsx(ModalBody, { children: /* @__PURE__ */ jsx(VoiceManager, { logoSrc }) })
5866
+ /* @__PURE__ */ jsx(ModalBody, { children: /* @__PURE__ */ jsx(
5867
+ VoiceManager,
5868
+ {
5869
+ logoSrc,
5870
+ voiceprintNamespace
5871
+ }
5872
+ ) })
5843
5873
  ] })
5844
5874
  ] });
5845
5875
  }
@@ -13927,7 +13957,7 @@ var overlayVariants = cva(
13927
13957
  }
13928
13958
  }
13929
13959
  );
13930
- var cardVariants2 = cva(
13960
+ var cardVariants3 = cva(
13931
13961
  "mx-4 w-full max-w-lg rounded-xl bg-white p-6 shadow-2xl dark:bg-gray-800",
13932
13962
  {
13933
13963
  variants: {
@@ -13966,7 +13996,7 @@ function ConnectionStatusOverlay({
13966
13996
  "div",
13967
13997
  {
13968
13998
  "data-slot": "connection-overlay-card",
13969
- className: cn(cardVariants2({ animate })),
13999
+ className: cn(cardVariants3({ animate })),
13970
14000
  children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col items-center gap-4 text-center md:flex-row md:text-start", children: [
13971
14001
  /* @__PURE__ */ jsx("div", { className: "shrink-0", children: /* @__PURE__ */ jsx(ConnectionIcon, { status: connection.status, className: "h-12 w-12" }) }),
13972
14002
  /* @__PURE__ */ jsxs("div", { "data-slot": "connection-overlay-content", className: "flex-1", children: [
@@ -14019,7 +14049,7 @@ function UpdateAvailableOverlay({
14019
14049
  "div",
14020
14050
  {
14021
14051
  "data-slot": "update-overlay-card",
14022
- className: cn(cardVariants2({ animate: true })),
14052
+ className: cn(cardVariants3({ animate: true })),
14023
14053
  children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col items-center gap-4 text-center md:flex-row md:text-start", children: [
14024
14054
  /* @__PURE__ */ jsx("div", { className: "shrink-0", children: logoUrl ? /* @__PURE__ */ jsx(
14025
14055
  "img",
@@ -40808,86 +40838,149 @@ function SidebarNavGroup({
40808
40838
  children,
40809
40839
  defaultExpanded = false,
40810
40840
  groupId,
40811
- className
40841
+ className,
40842
+ forceMount
40812
40843
  }) {
40813
40844
  const { isCollapsed, isMobileViewport, expandedGroup, toggleGroup } = useSidebar();
40814
40845
  const showCollapsed = !isMobileViewport && isCollapsed;
40846
+ const prefersReducedMotion = usePrefersReducedMotion();
40847
+ const contentId = useId();
40848
+ const groupRef = useRef(null);
40849
+ const triggerRef = useRef(null);
40815
40850
  const isExpanded = groupId ? expandedGroup === groupId : defaultExpanded;
40816
40851
  const [localExpanded, setLocalExpanded] = useState(defaultExpanded);
40817
40852
  const effectiveExpanded = groupId ? isExpanded : localExpanded;
40853
+ const itemsVisible = !showCollapsed && effectiveExpanded;
40854
+ const focusWasInsideRef = useRef(false);
40855
+ const captureFocusInside = useCallback(() => {
40856
+ const active = document.activeElement;
40857
+ focusWasInsideRef.current = active !== triggerRef.current && groupRef.current?.contains(active) === true;
40858
+ }, []);
40859
+ useEffect(() => {
40860
+ if (!itemsVisible) return;
40861
+ function trackFocus(event) {
40862
+ const target = event.target;
40863
+ focusWasInsideRef.current = target !== triggerRef.current && groupRef.current?.contains(target) === true;
40864
+ }
40865
+ document.addEventListener("focusin", trackFocus);
40866
+ return () => document.removeEventListener("focusin", trackFocus);
40867
+ }, [itemsVisible]);
40868
+ useEffect(() => {
40869
+ if (itemsVisible) return;
40870
+ if (focusWasInsideRef.current) {
40871
+ focusWasInsideRef.current = false;
40872
+ triggerRef.current?.focus();
40873
+ }
40874
+ }, [itemsVisible]);
40818
40875
  const handleToggle = useCallback(() => {
40876
+ captureFocusInside();
40819
40877
  if (groupId) {
40820
40878
  toggleGroup(groupId);
40821
40879
  } else {
40822
40880
  setLocalExpanded((prev) => !prev);
40823
40881
  }
40824
- }, [groupId, toggleGroup]);
40825
- return /* @__PURE__ */ jsxs("div", { "data-slot": "sidebar-nav-group", className: cn("mb-2", className), children: [
40826
- /* @__PURE__ */ jsxs(
40827
- "button",
40828
- {
40829
- "data-slot": "sidebar-nav-group-button",
40830
- onClick: handleToggle,
40831
- className: cn(
40832
- "flex w-full items-center rounded-lg px-3 py-2 text-sm font-semibold",
40833
- "text-neutral-700 dark:text-neutral-300",
40834
- "transition-colors hover:bg-neutral-100 dark:hover:bg-neutral-800",
40835
- showCollapsed && "justify-center"
40836
- ),
40837
- title: showCollapsed ? label : void 0,
40838
- "aria-label": showCollapsed ? label : void 0,
40839
- children: [
40840
- icon && /* @__PURE__ */ jsx(
40841
- "span",
40842
- {
40843
- className: cn(
40844
- "text-muted-foreground h-5 w-5 flex-shrink-0",
40845
- !showCollapsed && "me-3"
40846
- ),
40847
- children: icon
40848
- }
40849
- ),
40850
- /* @__PURE__ */ jsxs(AnimatedPresence, { initial: false, children: [
40851
- !showCollapsed && /* @__PURE__ */ jsx(
40852
- Animated,
40853
- {
40854
- as: "span",
40855
- preset: "sidebarLabel",
40856
- mode: "presence",
40857
- className: "flex-1 truncate text-start",
40858
- children: label
40859
- },
40860
- "label"
40882
+ }, [captureFocusInside, groupId, toggleGroup]);
40883
+ const items = /* @__PURE__ */ jsx("div", { className: "mt-1 ps-2", children });
40884
+ const panelInDom = forceMount || itemsVisible;
40885
+ return /* @__PURE__ */ jsxs(
40886
+ "div",
40887
+ {
40888
+ ref: groupRef,
40889
+ "data-slot": "sidebar-nav-group",
40890
+ className: cn("mb-2", className),
40891
+ children: [
40892
+ /* @__PURE__ */ jsxs(
40893
+ "button",
40894
+ {
40895
+ ref: triggerRef,
40896
+ "data-slot": "sidebar-nav-group-button",
40897
+ onClick: handleToggle,
40898
+ "aria-expanded": itemsVisible,
40899
+ "aria-controls": panelInDom ? contentId : void 0,
40900
+ className: cn(
40901
+ "flex w-full items-center rounded-lg px-3 py-2 text-sm font-semibold",
40902
+ "text-neutral-700 dark:text-neutral-300",
40903
+ "transition-colors hover:bg-neutral-100 dark:hover:bg-neutral-800",
40904
+ showCollapsed && "justify-center"
40861
40905
  ),
40862
- !showCollapsed && /* @__PURE__ */ jsx(
40863
- Animated,
40864
- {
40865
- as: "span",
40866
- preset: "sidebarLabel",
40867
- mode: "presence",
40868
- className: cn(
40869
- "ms-2 flex-shrink-0 transition-transform duration-200",
40870
- effectiveExpanded && "rotate-180"
40906
+ title: showCollapsed ? label : void 0,
40907
+ "aria-label": showCollapsed ? label : void 0,
40908
+ children: [
40909
+ icon && /* @__PURE__ */ jsx(
40910
+ "span",
40911
+ {
40912
+ className: cn(
40913
+ "text-muted-foreground h-5 w-5 flex-shrink-0",
40914
+ !showCollapsed && "me-3"
40915
+ ),
40916
+ children: icon
40917
+ }
40918
+ ),
40919
+ /* @__PURE__ */ jsxs(AnimatedPresence, { initial: false, children: [
40920
+ !showCollapsed && /* @__PURE__ */ jsx(
40921
+ Animated,
40922
+ {
40923
+ as: "span",
40924
+ preset: "sidebarLabel",
40925
+ mode: "presence",
40926
+ className: "flex-1 truncate text-start",
40927
+ children: label
40928
+ },
40929
+ "label"
40871
40930
  ),
40872
- children: /* @__PURE__ */ jsx(ChevronDownIcon4, {})
40873
- },
40874
- "chevron"
40875
- )
40876
- ] })
40877
- ]
40878
- }
40879
- ),
40880
- !showCollapsed && /* @__PURE__ */ jsx(
40881
- "div",
40882
- {
40883
- className: cn(
40884
- "overflow-hidden transition-all duration-300",
40885
- effectiveExpanded ? "mt-1 max-h-[1000px] opacity-100" : "max-h-0 opacity-0"
40931
+ !showCollapsed && /* @__PURE__ */ jsx(
40932
+ Animated,
40933
+ {
40934
+ as: "span",
40935
+ preset: "sidebarLabel",
40936
+ mode: "presence",
40937
+ className: cn(
40938
+ "ms-2 flex-shrink-0 transition-transform duration-200",
40939
+ effectiveExpanded && "rotate-180"
40940
+ ),
40941
+ children: /* @__PURE__ */ jsx(ChevronDownIcon4, {})
40942
+ },
40943
+ "chevron"
40944
+ )
40945
+ ] })
40946
+ ]
40947
+ }
40886
40948
  ),
40887
- children: /* @__PURE__ */ jsx("div", { className: "ps-2", children })
40888
- }
40889
- )
40890
- ] });
40949
+ forceMount ? (
40950
+ /*
40951
+ * Deliberately outside the rail-collapsed gate. Gating it there would
40952
+ * unmount the items whenever the sidebar collapsed, destroying exactly
40953
+ * the state this prop exists to preserve — the prop would hold its
40954
+ * promise for the group's own toggle and quietly break it for the
40955
+ * rail's, which is worse than not offering it.
40956
+ */
40957
+ /* @__PURE__ */ jsx(
40958
+ "div",
40959
+ {
40960
+ id: contentId,
40961
+ "data-slot": "sidebar-nav-group-items",
40962
+ "data-state": itemsVisible ? "open" : "closed",
40963
+ hidden: !itemsVisible,
40964
+ children: items
40965
+ }
40966
+ )
40967
+ ) : !showCollapsed && /* @__PURE__ */ jsx(AnimatedPresence, { initial: false, children: effectiveExpanded && /* @__PURE__ */ jsx(
40968
+ Animated,
40969
+ {
40970
+ id: contentId,
40971
+ "data-slot": "sidebar-nav-group-items",
40972
+ "data-state": "open",
40973
+ preset: "collapse",
40974
+ mode: "presence",
40975
+ enabled: !prefersReducedMotion,
40976
+ className: "overflow-hidden",
40977
+ children: items
40978
+ },
40979
+ "items"
40980
+ ) })
40981
+ ]
40982
+ }
40983
+ );
40891
40984
  }
40892
40985
  function SidebarNavItem({
40893
40986
  label,
@@ -44442,6 +44535,6 @@ function WebsiteInputGroup({
44442
44535
  }
44443
44536
  WebsiteInputGroup.displayName = "WebsiteInputGroup";
44444
44537
 
44445
- 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 };
44538
+ 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 };
44446
44539
  //# sourceMappingURL=index.js.map
44447
44540
  //# sourceMappingURL=index.js.map