@mieweb/ui 0.9.0 → 0.10.0-dev.1

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 (347) hide show
  1. package/MIGRATION.md +112 -0
  2. package/agent/mieweb-ui.instructions.md +2 -1
  3. package/dist/{Animated-Cs-naa2g.d.cts → Animated-XmH6k8pZ.d.cts} +16 -3
  4. package/dist/{Animated-Cs-naa2g.d.ts → Animated-XmH6k8pZ.d.ts} +16 -3
  5. package/dist/{CsvBlock-QXXZ7ZUM.cjs → CsvBlock-CVYA3HYS.cjs} +3 -2
  6. package/dist/{CsvBlock-QXXZ7ZUM.cjs.map → CsvBlock-CVYA3HYS.cjs.map} +1 -1
  7. package/dist/{CsvBlock-D7Z6ZCRP.js → CsvBlock-SM4NKSHA.js} +3 -2
  8. package/dist/{CsvBlock-D7Z6ZCRP.js.map → CsvBlock-SM4NKSHA.js.map} +1 -1
  9. package/dist/{HtmlPreviewBlock-F5VDM2EN.js → HtmlPreviewBlock-FAMF4W24.js} +3 -2
  10. package/dist/{HtmlPreviewBlock-F5VDM2EN.js.map → HtmlPreviewBlock-FAMF4W24.js.map} +1 -1
  11. package/dist/{HtmlPreviewBlock-AADG7MVB.cjs → HtmlPreviewBlock-JF454L2L.cjs} +3 -2
  12. package/dist/{HtmlPreviewBlock-AADG7MVB.cjs.map → HtmlPreviewBlock-JF454L2L.cjs.map} +1 -1
  13. package/dist/{MermaidBlock-6PLITRBZ.js → MermaidBlock-7V5G4K5A.js} +3 -2
  14. package/dist/{MermaidBlock-6PLITRBZ.js.map → MermaidBlock-7V5G4K5A.js.map} +1 -1
  15. package/dist/{MermaidBlock-TQ2O5CLV.cjs → MermaidBlock-FR5SQX4Q.cjs} +3 -2
  16. package/dist/{MermaidBlock-TQ2O5CLV.cjs.map → MermaidBlock-FR5SQX4Q.cjs.map} +1 -1
  17. package/dist/{SurveyBlock-W5PSQ62F.js → SurveyBlock-6K2POV7S.js} +3 -2
  18. package/dist/{SurveyBlock-W5PSQ62F.js.map → SurveyBlock-6K2POV7S.js.map} +1 -1
  19. package/dist/{SurveyBlock-OYL3VNU5.cjs → SurveyBlock-MCJVWR7H.cjs} +3 -2
  20. package/dist/{SurveyBlock-OYL3VNU5.cjs.map → SurveyBlock-MCJVWR7H.cjs.map} +1 -1
  21. package/dist/ag-grid.cjs +1 -0
  22. package/dist/ag-grid.cjs.map +1 -1
  23. package/dist/ag-grid.js +1 -0
  24. package/dist/ag-grid.js.map +1 -1
  25. package/dist/brands/bluehive.cjs +1 -0
  26. package/dist/brands/bluehive.js +1 -0
  27. package/dist/brands/ccme.cjs +1 -0
  28. package/dist/brands/ccme.js +1 -0
  29. package/dist/brands/index.cjs +3 -2
  30. package/dist/brands/index.js +2 -1
  31. package/dist/brands/ozwell.cjs +1 -0
  32. package/dist/brands/ozwell.js +1 -0
  33. package/dist/brands/types.cjs +1 -0
  34. package/dist/brands/types.js +1 -0
  35. package/dist/{chunk-XUVEF2RQ.js → chunk-24SEAAOH.js} +2 -2
  36. package/dist/{chunk-XUVEF2RQ.js.map → chunk-24SEAAOH.js.map} +1 -1
  37. package/dist/{chunk-IUDY6S7I.cjs → chunk-37UZHCLM.cjs} +35 -14
  38. package/dist/chunk-37UZHCLM.cjs.map +1 -0
  39. package/dist/{chunk-ODYQYLO2.js → chunk-7KWNY3HG.js} +9 -5
  40. package/dist/chunk-7KWNY3HG.js.map +1 -0
  41. package/dist/{chunk-L52N6BEN.cjs → chunk-AUOTJQGO.cjs} +7 -7
  42. package/dist/{chunk-L52N6BEN.cjs.map → chunk-AUOTJQGO.cjs.map} +1 -1
  43. package/dist/{chunk-O7XHHTTP.cjs → chunk-AZP3DDBT.cjs} +6 -6
  44. package/dist/{chunk-O7XHHTTP.cjs.map → chunk-AZP3DDBT.cjs.map} +1 -1
  45. package/dist/chunk-C6CTTLH2.js +44645 -0
  46. package/dist/chunk-C6CTTLH2.js.map +1 -0
  47. package/dist/{chunk-6XDPJWSC.cjs → chunk-E3KC2XLN.cjs} +34 -30
  48. package/dist/chunk-E3KC2XLN.cjs.map +1 -0
  49. package/dist/chunk-EUAMEVVI.cjs +41 -0
  50. package/dist/chunk-EUAMEVVI.cjs.map +1 -0
  51. package/dist/{chunk-DFYMIRMW.js → chunk-IGNWT6RP.js} +7 -2
  52. package/dist/chunk-IGNWT6RP.js.map +1 -0
  53. package/dist/{chunk-XEEVDZDK.cjs → chunk-IGSIWNX3.cjs} +7 -2
  54. package/dist/chunk-IGSIWNX3.cjs.map +1 -0
  55. package/dist/chunk-IIFQ6BSJ.js +1888 -0
  56. package/dist/chunk-IIFQ6BSJ.js.map +1 -0
  57. package/dist/{chunk-FUFBRKOG.cjs → chunk-KLJGJJHN.cjs} +24 -24
  58. package/dist/{chunk-FUFBRKOG.cjs.map → chunk-KLJGJJHN.cjs.map} +1 -1
  59. package/dist/chunk-LECJMLNE.js +15 -0
  60. package/dist/{chunk-CYMZ2QS5.js.map → chunk-LECJMLNE.js.map} +1 -1
  61. package/dist/{chunk-BJKAVWED.js → chunk-MBWF36DJ.js} +35 -14
  62. package/dist/chunk-MBWF36DJ.js.map +1 -0
  63. package/dist/chunk-NV2CWBI2.cjs +290 -0
  64. package/dist/chunk-NV2CWBI2.cjs.map +1 -0
  65. package/dist/{chunk-FQBTGS3E.cjs → chunk-OFUKTVBN.cjs} +363 -285
  66. package/dist/chunk-OFUKTVBN.cjs.map +1 -0
  67. package/dist/{chunk-7KN6J7XV.cjs → chunk-OMAACCFW.cjs} +7 -7
  68. package/dist/{chunk-7KN6J7XV.cjs.map → chunk-OMAACCFW.cjs.map} +1 -1
  69. package/dist/chunk-OYQ7GYAA.cjs +1921 -0
  70. package/dist/chunk-OYQ7GYAA.cjs.map +1 -0
  71. package/dist/{chunk-YJP6DUFO.cjs → chunk-PKD3JLS2.cjs} +6 -6
  72. package/dist/{chunk-YJP6DUFO.cjs.map → chunk-PKD3JLS2.cjs.map} +1 -1
  73. package/dist/chunk-PN2PIE2L.cjs +44670 -0
  74. package/dist/chunk-PN2PIE2L.cjs.map +1 -0
  75. package/dist/chunk-PX6F3LHL.js +37 -0
  76. package/dist/chunk-PX6F3LHL.js.map +1 -0
  77. package/dist/{chunk-CXDMZT45.cjs → chunk-PY7XAG4D.cjs} +27 -4
  78. package/dist/chunk-PY7XAG4D.cjs.map +1 -0
  79. package/dist/{chunk-5H7SAEQO.js → chunk-QKFJDQEK.js} +3 -3
  80. package/dist/{chunk-5H7SAEQO.js.map → chunk-QKFJDQEK.js.map} +1 -1
  81. package/dist/{chunk-XJTFZLWH.cjs → chunk-QO6PRHDX.cjs} +2 -2
  82. package/dist/{chunk-XJTFZLWH.cjs.map → chunk-QO6PRHDX.cjs.map} +1 -1
  83. package/dist/{chunk-ONNY7UO4.js → chunk-QSVQABXD.js} +4 -4
  84. package/dist/{chunk-ONNY7UO4.js.map → chunk-QSVQABXD.js.map} +1 -1
  85. package/dist/{chunk-OHDIJOGG.js → chunk-RD3JDFYJ.js} +3 -3
  86. package/dist/{chunk-OHDIJOGG.js.map → chunk-RD3JDFYJ.js.map} +1 -1
  87. package/dist/{chunk-4SM3I7WE.cjs → chunk-RXPEZXAB.cjs} +67 -38
  88. package/dist/chunk-RXPEZXAB.cjs.map +1 -0
  89. package/dist/{chunk-VTR2KGLY.cjs → chunk-S3BCHPXT.cjs} +9 -9
  90. package/dist/{chunk-VTR2KGLY.cjs.map → chunk-S3BCHPXT.cjs.map} +1 -1
  91. package/dist/{chunk-KU3XRHWA.js → chunk-TZX76ZNZ.js} +67 -38
  92. package/dist/chunk-TZX76ZNZ.js.map +1 -0
  93. package/dist/chunk-VNAREBLV.cjs +17 -0
  94. package/dist/{chunk-SNEQXSC5.cjs.map → chunk-VNAREBLV.cjs.map} +1 -1
  95. package/dist/{chunk-MXQ7J4BB.js → chunk-VSVGMMNO.js} +361 -284
  96. package/dist/chunk-VSVGMMNO.js.map +1 -0
  97. package/dist/{chunk-Q7G56ZIO.js → chunk-WUBMDOTG.js} +3 -3
  98. package/dist/{chunk-Q7G56ZIO.js.map → chunk-WUBMDOTG.js.map} +1 -1
  99. package/dist/{chunk-DGRXAIWK.js → chunk-X5YM3KXY.js} +27 -4
  100. package/dist/chunk-X5YM3KXY.js.map +1 -0
  101. package/dist/chunk-XCP454Q6.js +263 -0
  102. package/dist/chunk-XCP454Q6.js.map +1 -0
  103. package/dist/{chunk-I3DQXUSC.js → chunk-Y6DFMDMH.js} +3 -3
  104. package/dist/{chunk-I3DQXUSC.js.map → chunk-Y6DFMDMH.js.map} +1 -1
  105. package/dist/{chunk-D25WH7MH.js → chunk-ZX2XRFE5.js} +6 -6
  106. package/dist/{chunk-D25WH7MH.js.map → chunk-ZX2XRFE5.js.map} +1 -1
  107. package/dist/{collabKit-Q4A36LDA.cjs → collabKit-GCRHP25F.cjs} +3 -3
  108. package/dist/{collabKit-Q4A36LDA.cjs.map → collabKit-GCRHP25F.cjs.map} +1 -1
  109. package/dist/{collabKit-A643VH2I.js → collabKit-SJPDPXU4.js} +3 -3
  110. package/dist/{collabKit-A643VH2I.js.map → collabKit-SJPDPXU4.js.map} +1 -1
  111. package/dist/components/Accordion/index.cjs +1 -0
  112. package/dist/components/Accordion/index.js +1 -0
  113. package/dist/components/Alert/index.cjs +1 -0
  114. package/dist/components/Alert/index.js +1 -0
  115. package/dist/components/AlertDialog/index.cjs +5 -4
  116. package/dist/components/AlertDialog/index.js +4 -3
  117. package/dist/components/AudioPlayer/index.cjs +1 -0
  118. package/dist/components/AudioPlayer/index.js +1 -0
  119. package/dist/components/AudioRecorder/index.cjs +1 -0
  120. package/dist/components/AudioRecorder/index.js +1 -0
  121. package/dist/components/Autocomplete/index.cjs +1 -0
  122. package/dist/components/Autocomplete/index.js +1 -0
  123. package/dist/components/Avatar/index.cjs +1 -0
  124. package/dist/components/Avatar/index.js +1 -0
  125. package/dist/components/Badge/index.cjs +1 -0
  126. package/dist/components/Badge/index.js +1 -0
  127. package/dist/components/Breadcrumb/index.cjs +1 -0
  128. package/dist/components/Breadcrumb/index.js +1 -0
  129. package/dist/components/Button/index.cjs +1 -0
  130. package/dist/components/Button/index.js +1 -0
  131. package/dist/components/Card/index.cjs +1 -0
  132. package/dist/components/Card/index.js +1 -0
  133. package/dist/components/Checkbox/index.cjs +1 -0
  134. package/dist/components/Checkbox/index.js +1 -0
  135. package/dist/components/ClampedText/index.cjs +1 -0
  136. package/dist/components/ClampedText/index.js +1 -0
  137. package/dist/components/CollabStatus/index.cjs +1 -0
  138. package/dist/components/CollabStatus/index.js +1 -0
  139. package/dist/components/Collapsible/index.cjs +7 -4
  140. package/dist/components/Collapsible/index.js +4 -1
  141. package/dist/components/CopyButton/index.cjs +1 -0
  142. package/dist/components/CopyButton/index.js +1 -0
  143. package/dist/components/CountryCodeDropdown/index.cjs +1 -0
  144. package/dist/components/CountryCodeDropdown/index.js +1 -0
  145. package/dist/components/CustomizableDashboard/index.cjs +1 -0
  146. package/dist/components/CustomizableDashboard/index.js +1 -0
  147. package/dist/components/DateInput/index.cjs +1 -0
  148. package/dist/components/DateInput/index.js +1 -0
  149. package/dist/components/Dropdown/index.cjs +10 -8
  150. package/dist/components/Dropdown/index.js +3 -1
  151. package/dist/components/FilterSummaryBar/index.cjs +1 -0
  152. package/dist/components/FilterSummaryBar/index.js +1 -0
  153. package/dist/components/FloatingWindow/index.cjs +1 -0
  154. package/dist/components/FloatingWindow/index.js +1 -0
  155. package/dist/components/FreshnessBadge/index.cjs +1 -0
  156. package/dist/components/FreshnessBadge/index.js +1 -0
  157. package/dist/components/GlossaryTooltip/index.cjs +1 -0
  158. package/dist/components/GlossaryTooltip/index.js +1 -0
  159. package/dist/components/Input/index.cjs +1 -0
  160. package/dist/components/Input/index.js +1 -0
  161. package/dist/components/KeyboardShortcutsOverlay/index.cjs +6 -5
  162. package/dist/components/KeyboardShortcutsOverlay/index.js +4 -3
  163. package/dist/components/Label/index.cjs +1 -0
  164. package/dist/components/Label/index.js +1 -0
  165. package/dist/components/Markdown/index.cjs +6 -5
  166. package/dist/components/Markdown/index.js +2 -1
  167. package/dist/components/MediaEditor/index.cjs +10 -9
  168. package/dist/components/MediaEditor/index.js +5 -4
  169. package/dist/components/MediaPlayer/index.cjs +1 -0
  170. package/dist/components/MediaPlayer/index.js +1 -0
  171. package/dist/components/Modal/index.cjs +11 -10
  172. package/dist/components/Modal/index.js +3 -2
  173. package/dist/components/Pagination/index.cjs +1 -0
  174. package/dist/components/Pagination/index.js +1 -0
  175. package/dist/components/PhoneInput/index.cjs +1 -0
  176. package/dist/components/PhoneInput/index.js +1 -0
  177. package/dist/components/Progress/index.cjs +1 -0
  178. package/dist/components/Progress/index.js +1 -0
  179. package/dist/components/Q/index.cjs +1 -0
  180. package/dist/components/Q/index.js +1 -0
  181. package/dist/components/QuickAction/index.cjs +1 -0
  182. package/dist/components/QuickAction/index.js +1 -0
  183. package/dist/components/Radio/index.cjs +1 -0
  184. package/dist/components/Radio/index.js +1 -0
  185. package/dist/components/ReadingProgressBar/index.cjs +1 -0
  186. package/dist/components/ReadingProgressBar/index.js +1 -0
  187. package/dist/components/RecordButton/index.cjs +1 -0
  188. package/dist/components/RecordButton/index.js +1 -0
  189. package/dist/components/RichTextEditor/index.cjs +7 -5
  190. package/dist/components/RichTextEditor/index.js +4 -2
  191. package/dist/components/SchedulePicker/index.cjs +1 -0
  192. package/dist/components/SchedulePicker/index.js +1 -0
  193. package/dist/components/ScrollArea/index.cjs +1 -0
  194. package/dist/components/ScrollArea/index.js +1 -0
  195. package/dist/components/SectionSpyNav/index.cjs +1 -0
  196. package/dist/components/SectionSpyNav/index.js +1 -0
  197. package/dist/components/Select/index.cjs +4 -3
  198. package/dist/components/Select/index.js +2 -1
  199. package/dist/components/Separator/index.cjs +1 -0
  200. package/dist/components/Separator/index.js +1 -0
  201. package/dist/components/Sheet/index.cjs +1 -0
  202. package/dist/components/Sheet/index.js +1 -0
  203. package/dist/components/Skeleton/index.cjs +1 -0
  204. package/dist/components/Skeleton/index.js +1 -0
  205. package/dist/components/Slider/index.cjs +1 -0
  206. package/dist/components/Slider/index.js +1 -0
  207. package/dist/components/SourceTip/index.cjs +1 -0
  208. package/dist/components/SourceTip/index.js +1 -0
  209. package/dist/components/Sparkline/index.cjs +1 -0
  210. package/dist/components/Sparkline/index.js +1 -0
  211. package/dist/components/Spinner/index.cjs +1 -0
  212. package/dist/components/Spinner/index.js +1 -0
  213. package/dist/components/SuperChat/index.cjs +41 -17
  214. package/dist/components/SuperChat/index.cjs.map +1 -1
  215. package/dist/components/SuperChat/index.d.cts +20 -7
  216. package/dist/components/SuperChat/index.d.ts +20 -7
  217. package/dist/components/SuperChat/index.js +36 -12
  218. package/dist/components/SuperChat/index.js.map +1 -1
  219. package/dist/components/SuperChat/plugins/index.cjs +12 -4
  220. package/dist/components/SuperChat/plugins/index.cjs.map +1 -1
  221. package/dist/components/SuperChat/plugins/index.d.cts +3 -3
  222. package/dist/components/SuperChat/plugins/index.d.ts +3 -3
  223. package/dist/components/SuperChat/plugins/index.js +11 -3
  224. package/dist/components/SuperChat/plugins/index.js.map +1 -1
  225. package/dist/components/Switch/index.cjs +1 -0
  226. package/dist/components/Switch/index.js +1 -0
  227. package/dist/components/Table/index.cjs +1 -0
  228. package/dist/components/Table/index.js +1 -0
  229. package/dist/components/Tabs/index.cjs +1 -0
  230. package/dist/components/Tabs/index.js +1 -0
  231. package/dist/components/Text/index.cjs +1 -0
  232. package/dist/components/Text/index.js +1 -0
  233. package/dist/components/Textarea/index.cjs +1 -0
  234. package/dist/components/Textarea/index.js +1 -0
  235. package/dist/components/ThemeProvider/index.cjs +1 -0
  236. package/dist/components/ThemeProvider/index.js +1 -0
  237. package/dist/components/Toggle/index.cjs +1 -0
  238. package/dist/components/Toggle/index.js +1 -0
  239. package/dist/components/Tooltip/index.cjs +1 -0
  240. package/dist/components/Tooltip/index.js +1 -0
  241. package/dist/components/TranscriptView/index.cjs +1 -0
  242. package/dist/components/TranscriptView/index.js +1 -0
  243. package/dist/components/VisuallyHidden/index.cjs +1 -0
  244. package/dist/components/VisuallyHidden/index.js +1 -0
  245. package/dist/datavis.cjs +13 -8
  246. package/dist/datavis.cjs.map +1 -1
  247. package/dist/datavis.d.cts +647 -22
  248. package/dist/datavis.d.ts +647 -22
  249. package/dist/datavis.js +6 -5
  250. package/dist/datavis.js.map +1 -1
  251. package/dist/{default-BTEIFIZJ.cjs → default-CCMUBXP6.cjs} +3 -2
  252. package/dist/{default-BTEIFIZJ.cjs.map → default-CCMUBXP6.cjs.map} +1 -1
  253. package/dist/default-N2LW7ZFU.js +4 -0
  254. package/dist/{default-ORBRVZRZ.js.map → default-N2LW7ZFU.js.map} +1 -1
  255. package/dist/{enterprise-health-UDI25OCV.cjs → enterprise-health-75VYWAVG.cjs} +3 -2
  256. package/dist/{enterprise-health-UDI25OCV.cjs.map → enterprise-health-75VYWAVG.cjs.map} +1 -1
  257. package/dist/enterprise-health-CWLUB77O.js +4 -0
  258. package/dist/{enterprise-health-ORQQOLM3.js.map → enterprise-health-CWLUB77O.js.map} +1 -1
  259. package/dist/esheet.cjs +8 -7
  260. package/dist/esheet.cjs.map +1 -1
  261. package/dist/esheet.js +5 -4
  262. package/dist/esheet.js.map +1 -1
  263. package/dist/{hey-buddy-CLUVAY2X.cjs → hey-buddy-INNUFFJJ.cjs} +3 -2
  264. package/dist/hey-buddy-INNUFFJJ.cjs.map +1 -0
  265. package/dist/{hey-buddy-NMSWZ4TN.js → hey-buddy-V6FC5UKB.js} +3 -2
  266. package/dist/hey-buddy-V6FC5UKB.js.map +1 -0
  267. package/dist/hooks/index.cjs +14 -13
  268. package/dist/hooks/index.js +2 -1
  269. package/dist/index.cjs +753 -1703
  270. package/dist/index.cjs.map +1 -1
  271. package/dist/index.d.cts +347 -347
  272. package/dist/index.d.ts +347 -347
  273. package/dist/index.js +465 -1410
  274. package/dist/index.js.map +1 -1
  275. package/dist/kerebron.cjs +2 -1
  276. package/dist/kerebron.cjs.map +1 -1
  277. package/dist/kerebron.js +2 -1
  278. package/dist/kerebron.js.map +1 -1
  279. package/dist/{mieweb-6JCRWKSO.cjs → mieweb-72YOL44I.cjs} +3 -2
  280. package/dist/{mieweb-6JCRWKSO.cjs.map → mieweb-72YOL44I.cjs.map} +1 -1
  281. package/dist/mieweb-EZDLSSA6.js +4 -0
  282. package/dist/{mieweb-GIKY6EMN.js.map → mieweb-EZDLSSA6.js.map} +1 -1
  283. package/dist/motion.cjs +8 -7
  284. package/dist/motion.cjs.map +1 -1
  285. package/dist/motion.d.cts +1 -1
  286. package/dist/motion.d.ts +1 -1
  287. package/dist/motion.js +3 -2
  288. package/dist/motion.js.map +1 -1
  289. package/dist/{nitroTableGrid-SIMT7635.js → nitroTableGrid-LVYKKCGF.js} +5 -4
  290. package/dist/nitroTableGrid-LVYKKCGF.js.map +1 -0
  291. package/dist/{nitroTableGrid-3J2GY6CK.cjs → nitroTableGrid-SQADULEY.cjs} +5 -4
  292. package/dist/nitroTableGrid-SQADULEY.cjs.map +1 -0
  293. package/dist/q.cjs +1 -0
  294. package/dist/q.js +1 -0
  295. package/dist/styles.css +1 -1
  296. package/dist/tailwind-preset.cjs +5 -4
  297. package/dist/tailwind-preset.js +2 -1
  298. package/dist/{types-DZDroUW8.d.cts → types-B97JNRNQ.d.cts} +1 -1
  299. package/dist/{types-B2RLmdVd.d.ts → types-CnPEwzlp.d.cts} +6 -2
  300. package/dist/{types-B2RLmdVd.d.cts → types-CnPEwzlp.d.ts} +6 -2
  301. package/dist/{types-9vK_YdEb.d.ts → types-gZXrfLj6.d.ts} +1 -1
  302. package/dist/utils/index.cjs +1 -0
  303. package/dist/utils/index.js +1 -0
  304. package/dist/{waggleline-I7QWD3YX.cjs → waggleline-5CBT4MNN.cjs} +3 -2
  305. package/dist/{waggleline-I7QWD3YX.cjs.map → waggleline-5CBT4MNN.cjs.map} +1 -1
  306. package/dist/waggleline-JMPCNV3J.js +4 -0
  307. package/dist/{waggleline-2MLRNVCV.js.map → waggleline-JMPCNV3J.js.map} +1 -1
  308. package/dist/webchart-2CVQ2TT3.js +4 -0
  309. package/dist/{webchart-72YMJ45P.js.map → webchart-2CVQ2TT3.js.map} +1 -1
  310. package/dist/{webchart-37OYZ42V.cjs → webchart-AXXOQHU6.cjs} +3 -2
  311. package/dist/{webchart-37OYZ42V.cjs.map → webchart-AXXOQHU6.cjs.map} +1 -1
  312. package/package.json +9 -14
  313. package/dist/chunk-4SM3I7WE.cjs.map +0 -1
  314. package/dist/chunk-5BVFVXHN.cjs +0 -1244
  315. package/dist/chunk-5BVFVXHN.cjs.map +0 -1
  316. package/dist/chunk-6XDPJWSC.cjs.map +0 -1
  317. package/dist/chunk-BJKAVWED.js.map +0 -1
  318. package/dist/chunk-BN75TLUN.cjs +0 -163
  319. package/dist/chunk-BN75TLUN.cjs.map +0 -1
  320. package/dist/chunk-CXDMZT45.cjs.map +0 -1
  321. package/dist/chunk-CYMZ2QS5.js +0 -15
  322. package/dist/chunk-DFYMIRMW.js.map +0 -1
  323. package/dist/chunk-DGRXAIWK.js.map +0 -1
  324. package/dist/chunk-FQBTGS3E.cjs.map +0 -1
  325. package/dist/chunk-IUDY6S7I.cjs.map +0 -1
  326. package/dist/chunk-KU3XRHWA.js.map +0 -1
  327. package/dist/chunk-MXQ7J4BB.js.map +0 -1
  328. package/dist/chunk-O6GJ4IYS.js +0 -1210
  329. package/dist/chunk-O6GJ4IYS.js.map +0 -1
  330. package/dist/chunk-ODYQYLO2.js.map +0 -1
  331. package/dist/chunk-SNEQXSC5.cjs +0 -17
  332. package/dist/chunk-VJOVJTFP.cjs +0 -370
  333. package/dist/chunk-VJOVJTFP.cjs.map +0 -1
  334. package/dist/chunk-WYMO3IIK.js +0 -136
  335. package/dist/chunk-WYMO3IIK.js.map +0 -1
  336. package/dist/chunk-XEEVDZDK.cjs.map +0 -1
  337. package/dist/chunk-YBLIDESO.js +0 -365
  338. package/dist/chunk-YBLIDESO.js.map +0 -1
  339. package/dist/default-ORBRVZRZ.js +0 -3
  340. package/dist/enterprise-health-ORQQOLM3.js +0 -3
  341. package/dist/hey-buddy-CLUVAY2X.cjs.map +0 -1
  342. package/dist/hey-buddy-NMSWZ4TN.js.map +0 -1
  343. package/dist/mieweb-GIKY6EMN.js +0 -3
  344. package/dist/nitroTableGrid-3J2GY6CK.cjs.map +0 -1
  345. package/dist/nitroTableGrid-SIMT7635.js.map +0 -1
  346. package/dist/waggleline-2MLRNVCV.js +0 -3
  347. package/dist/webchart-72YMJ45P.js +0 -3
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  export { VisuallyHidden } from './chunk-H2CIKJQI.js';
2
- export { brands } from './chunk-CYMZ2QS5.js';
2
+ export { brands } from './chunk-LECJMLNE.js';
3
3
  export { webchartBrand } from './chunk-CW66SO5O.js';
4
4
  export { defaultBrand } from './chunk-PSTGFXQG.js';
5
5
  export { enterpriseHealthBrand } from './chunk-MTZPVOP6.js';
@@ -27,13 +27,13 @@ import { Spinner, SpinnerWithLabel } from './chunk-UA7E7PDS.js';
27
27
  export { FullPageSpinner, Spinner, SpinnerWithLabel, spinnerVariants } from './chunk-UA7E7PDS.js';
28
28
  import { SparklesIcon, RefreshIcon, CloseIcon, AIMessageDisplay } from './chunk-22CYDCXA.js';
29
29
  export { AILogoIcon, AIMessageDisplay, AITypingIndicator, ChatBubble, ChevronIcon, CloseIcon, CollapsiblePill, MCPToolCallDisplay, MessageAvatar, RefreshIcon, ResourceLink, SendIcon, SparklesIcon, SpinnerIcon, ToolStatusIcon, getToolIcon } from './chunk-22CYDCXA.js';
30
- import { EmptyState } from './chunk-MXQ7J4BB.js';
31
- export { AttachmentPreview, ConversationHeader, ConversationListItem, ConversationListSkeleton, DateSeparator, EmptyState, LightboxModal, LoadMoreButton, MessageBubble, MessageList, MessageStatusIcon, MessageThread, MessagingSplitView, ReadReceiptIndicator, SkeletonMessage, TypingIndicator, bubbleVariants, formatDateLabel, formatFileSize, formatLastSeen, getConversationSubtitle, getConversationTitle, groupMessagesByDate, headerVariants, isSameSenderGroup, useMessageScroll, useMessages, useReadReceipts, useTypingIndicator } from './chunk-MXQ7J4BB.js';
32
- import { useMentionAutocomplete, validateFile, getFileType, generateAttachmentId, AttachmentPreviewItem, MentionMenu, DragDropZone, MessageComposer } from './chunk-O6GJ4IYS.js';
33
- export { AttachmentPicker, AttachmentPreviewItem, CameraButton, CharacterCounter, DragDropZone, MessageComposer, SendButton, generateAttachmentId, getFileType, sendButtonVariants, validateFile } from './chunk-O6GJ4IYS.js';
30
+ import { useTypingEmulation, EmptyState } from './chunk-VSVGMMNO.js';
31
+ export { AttachmentPreview, ConversationHeader, ConversationListItem, ConversationListSkeleton, DateSeparator, EmptyState, LightboxModal, LoadMoreButton, MessageBubble, MessageList, MessageStatusIcon, MessageThread, MessagingSplitView, ReadReceiptIndicator, SkeletonMessage, TypingIndicator, bubbleVariants, formatDateLabel, formatFileSize, formatLastSeen, getConversationSubtitle, getConversationTitle, groupMessagesByDate, headerVariants, isSameSenderGroup, useMessageScroll, useMessages, useReadReceipts, useTypingEmulation, useTypingIndicator } from './chunk-VSVGMMNO.js';
32
+ import { notifyComposerMigrationOnce, ChatComposer, DEFAULT_MAX_FILE_SIZE, DEFAULT_ACCEPTED_FILE_TYPES } from './chunk-IIFQ6BSJ.js';
33
+ export { AttachmentPicker, AttachmentPreviewItem, CameraButton, ChatComposer, ComposerModelSelector, DragDropZone, generateAttachmentId, getFileType, validateFile } from './chunk-IIFQ6BSJ.js';
34
34
  import { RecordButton } from './chunk-VNWJTCBQ.js';
35
35
  export { RecordButton, formatDuration, recordButtonVariants } from './chunk-VNWJTCBQ.js';
36
- export { RichTextEditor, convertAngleBracketsToMustache, processDictation } from './chunk-5H7SAEQO.js';
36
+ export { RichTextEditor, convertAngleBracketsToMustache, processDictation } from './chunk-QKFJDQEK.js';
37
37
  export { DateButton, DatePicker, RadioOption, SchedulePicker, TimeButton, TimePicker, dateButtonVariants, radioOptionVariants, timeButtonVariants } from './chunk-23AYDOCH.js';
38
38
  export { ScrollArea, scrollAreaVariants } from './chunk-HS25RPDW.js';
39
39
  export { SectionSpyNav } from './chunk-3RB35GYK.js';
@@ -46,18 +46,18 @@ export { QuickAction, QuickActionGroup, QuickActionIcons, quickActionIconVariant
46
46
  export { ReadingProgressBar } from './chunk-WKSUL2ZN.js';
47
47
  export { FreshnessBadge, FreshnessDot, daysSince, freshnessLevel } from './chunk-HQ3XPCHG.js';
48
48
  export { GlossaryTooltip } from './chunk-L5W7TJQ5.js';
49
- export { Kbd, KeyboardShortcutsOverlay } from './chunk-I3DQXUSC.js';
50
- export { CodeBlock, MarkdownRenderer, highlightCode, useMarkdown } from './chunk-D25WH7MH.js';
49
+ export { Kbd, KeyboardShortcutsOverlay } from './chunk-Y6DFMDMH.js';
50
+ export { CodeBlock, MarkdownRenderer, highlightCode, useMarkdown } from './chunk-ZX2XRFE5.js';
51
51
  export { CsvBlock } from './chunk-NHN6A3ZO.js';
52
52
  export { HtmlPreviewBlock } from './chunk-EG7XFZ3W.js';
53
53
  export { MermaidBlock } from './chunk-ZB54MTMQ.js';
54
54
  export { SurveyBlock } from './chunk-OSPTA4UR.js';
55
55
  export { FenceBlock } from './chunk-CK3KLRNF.js';
56
- export { FillerWordsModal, MediaEditor, SilenceSettingsModal, SpeedMarkerMenu, WordEditorModal } from './chunk-ONNY7UO4.js';
56
+ export { FillerWordsModal, MediaEditor, SilenceSettingsModal, SpeedMarkerMenu, WordEditorModal } from './chunk-QSVQABXD.js';
57
57
  export { Slider, sliderRangeVariants, sliderThumbVariants, sliderTrackVariants } from './chunk-2BPIVWAK.js';
58
58
  import './chunk-RISZWWEQ.js';
59
59
  export { MediaPlayer, inferMediaKind, mediaPlayerVariants } from './chunk-5WOB4UBD.js';
60
- export { Collapsible, CollapsibleContent, CollapsibleTrigger } from './chunk-BJKAVWED.js';
60
+ export { Collapsible, CollapsibleContent, CollapsibleTrigger } from './chunk-MBWF36DJ.js';
61
61
  export { CopyButton } from './chunk-5QZ73PZC.js';
62
62
  import { CountryDropdownBase } from './chunk-QAKASRE6.js';
63
63
  export { CountryCodeDropdown, formatE164, validatePhoneNumber } from './chunk-QAKASRE6.js';
@@ -65,8 +65,8 @@ export { CustomizableDashboard, DashboardCustomizePanel, consolidateColumns, mer
65
65
  import { Switch, switchThumbVariants, switchTrackVariants } from './chunk-AQ564XO7.js';
66
66
  export { Switch, switchThumbVariants, switchTrackVariants } from './chunk-AQ564XO7.js';
67
67
  export { Sheet, SheetBody, SheetClose, SheetDescription, SheetFooter, SheetHeader, SheetTitle, sheetContentVariants, sheetOverlayVariants } from './chunk-ON4JULCA.js';
68
- import { Dropdown, DropdownItem, DropdownSeparator, DropdownContent, DropdownHeader } from './chunk-KU3XRHWA.js';
69
- export { Dropdown, DropdownContent, DropdownHeader, DropdownItem, DropdownLabel, DropdownSeparator, DropdownSubmenu } from './chunk-KU3XRHWA.js';
68
+ import { Dropdown, DropdownItem, DropdownSeparator, DropdownContent, DropdownHeader } from './chunk-TZX76ZNZ.js';
69
+ export { Dropdown, DropdownContent, DropdownHeader, DropdownItem, DropdownLabel, DropdownSeparator, DropdownSubmenu } from './chunk-TZX76ZNZ.js';
70
70
  export { FilterSummaryBar } from './chunk-6SCQ7FKT.js';
71
71
  export { FloatingWindow, MinimizedWindow } from './chunk-PYHFVYVZ.js';
72
72
  import { Avatar } from './chunk-HZ4MBUC3.js';
@@ -81,19 +81,19 @@ export { CollabStatus, defaultCollabStatusLabels, useYjsCollabStatus } from './c
81
81
  import './chunk-7XUN3OQT.js';
82
82
  export { isHtmlEmpty, stripHtmlTags } from './chunk-ERLPVXOV.js';
83
83
  export { formatPhoneNumber, isPhoneNumberEmpty, isValidPhoneNumber, unformatPhoneNumber } from './chunk-ZVPJ2MH6.js';
84
- export { miewebUIPreset, miewebUISafelist } from './chunk-DGRXAIWK.js';
84
+ export { miewebUIPreset, miewebUISafelist } from './chunk-X5YM3KXY.js';
85
85
  export { Accordion } from './chunk-KRU6IGV7.js';
86
86
  import { Alert, AlertTitle, AlertDescription } from './chunk-3JWAABYI.js';
87
87
  export { Alert, AlertDescription, AlertTitle, alertVariants } from './chunk-3JWAABYI.js';
88
- import { AlertDialog } from './chunk-OHDIJOGG.js';
89
- export { AlertDialog } from './chunk-OHDIJOGG.js';
88
+ import { AlertDialog } from './chunk-RD3JDFYJ.js';
89
+ export { AlertDialog } from './chunk-RD3JDFYJ.js';
90
90
  export { AudioPlayer, ProgressBar, audioPlayerVariants, formatTime as formatAudioTime, playButtonVariants } from './chunk-VVDE4CHU.js';
91
91
  export { AudioRecorder, audioRecorderVariants, controlButtonVariants, formatTime, waveformContainerVariants } from './chunk-2DW4PUJD.js';
92
92
  export { Autocomplete } from './chunk-QAQOCS2J.js';
93
93
  import { evaluateDue, completedKeys, normalizeOrders } from './chunk-Y5KEFV5O.js';
94
94
  export { buildChartOrderRows, buildEncounterOrderRows, dueForOrder, evaluateDue, evaluateProgram, isApplicable } from './chunk-Y5KEFV5O.js';
95
- import { useCodeLookupConfig, RowActionToolbar, RowIconButton, toolbarKeyNav, parseSig, labelToMedicationFields, MedicationEditor } from './chunk-ODYQYLO2.js';
96
- export { ALLERGY_TYPE_LABELS, AllergyList, AllergyManager, CodeLookupProvider, MEDICATION_STATUS_LABELS, MedicationEditor, MedicationList, MedicationReconciliation, RowActionToolbar, RowIconButton, labelToMedicationFields, lookupToMedicationFields, parseMedicationLabel, parseSig, toolbarKeyNav, useCodeLookupConfig } from './chunk-ODYQYLO2.js';
95
+ import { useCodeLookupConfig, RowActionToolbar, RowIconButton, toolbarKeyNav, parseSig, labelToMedicationFields, MedicationEditor } from './chunk-7KWNY3HG.js';
96
+ export { ALLERGY_TYPE_LABELS, AllergyList, AllergyManager, CodeLookupProvider, MEDICATION_STATUS_LABELS, MedicationEditor, MedicationList, MedicationReconciliation, RowActionToolbar, RowIconButton, labelToMedicationFields, lookupToMedicationFields, parseMedicationLabel, parseSig, toolbarKeyNav, useCodeLookupConfig } from './chunk-7KWNY3HG.js';
97
97
  import { Textarea } from './chunk-H3YO5GBM.js';
98
98
  export { Textarea, textareaVariants } from './chunk-H3YO5GBM.js';
99
99
  import { Tooltip } from './chunk-MUIDWFYJ.js';
@@ -102,31 +102,31 @@ import { RadioGroup, Radio } from './chunk-EPSB4WTL.js';
102
102
  export { Radio, RadioGroup, radioVariants } from './chunk-EPSB4WTL.js';
103
103
  import { Label } from './chunk-I3WGZPI6.js';
104
104
  export { Label, labelVariants } from './chunk-I3WGZPI6.js';
105
- import { Select } from './chunk-DFYMIRMW.js';
106
- export { Select, selectTriggerVariants } from './chunk-DFYMIRMW.js';
105
+ import { Select } from './chunk-IGNWT6RP.js';
106
+ export { Select, selectTriggerVariants } from './chunk-IGNWT6RP.js';
107
107
  import { DateInput } from './chunk-OAZUDUGX.js';
108
108
  export { DateInput } from './chunk-OAZUDUGX.js';
109
109
  import { Card, CardHeader, CardContent, CardTitle } from './chunk-QYSUYB3S.js';
110
110
  export { Card, CardActions, CardBadge, CardCollapsible, CardContent, CardDescription, CardDivider, CardFooter, CardHeader, CardMedia, CardStat, CardTitle, cardAccentVariants, cardVariants } from './chunk-QYSUYB3S.js';
111
111
  import { dateToDisplayFormat, isValidDate, displayFormatToDateString } from './chunk-RC2YMOMS.js';
112
112
  export { calculateAge, dateToDisplayFormat, displayFormatToDateString, formatDateValue, isDateEmpty, isDateInFuture, isDateInPast, isValidDate, isValidDrivingAge, parseDateValue } from './chunk-RC2YMOMS.js';
113
- import { Modal, ModalHeader, ModalTitle, ModalClose, ModalBody, ModalFooter } from './chunk-Q7G56ZIO.js';
114
- export { Modal, ModalBody, ModalClose, ModalFooter, ModalHeader, ModalTitle, modalContentVariants, modalOverlayVariants } from './chunk-Q7G56ZIO.js';
113
+ import { Modal, ModalHeader, ModalTitle, ModalClose, ModalBody, ModalFooter } from './chunk-WUBMDOTG.js';
114
+ export { Modal, ModalBody, ModalClose, ModalFooter, ModalHeader, ModalTitle, modalContentVariants, modalOverlayVariants } from './chunk-WUBMDOTG.js';
115
115
  import './chunk-6NZXWKUE.js';
116
116
  import { Input, inputVariants } from './chunk-3IMM2PM4.js';
117
117
  export { Input, RequiredMark, floatingGroupLabelVariants, floatingGroupVariants, floatingLabelVariants, inputVariants } from './chunk-3IMM2PM4.js';
118
- import { Plus, GripVertical, RefreshCw, Pencil, AlertCircle, ArrowLeft, Users, FilePlus, CheckCircle, ChevronDown, AlertTriangle, Paperclip, Mic, Square, Loader2, ArrowUp, Check, Bot, ChevronUp, Clock, FileText, ClipboardList, Stethoscope, Mail, Phone, ClipboardCheck, Eye, Info, Link, History, StickyNote, ExternalLink, MoreVertical, Trash2, Send, Scan, TestTube2, Pill, Share, User, Download, ChevronRight as ChevronRight$1, Calendar, Printer, ClipboardPlus, FileCheck, Wheat, Bell, FileHeart, HeartPulse, HelpCircle, MoreHorizontal, Upload as Upload$1, Camera, X as X$1, ScanLine, Image } from './chunk-BKSPDTX4.js';
118
+ import { Plus, GripVertical, RefreshCw, Pencil, Trash2, AlertCircle, ArrowLeft, Users, FilePlus, CheckCircle, ChevronDown, Clock, FileText, ClipboardList, Stethoscope, Mail, Phone, ClipboardCheck, Eye, Info, Link, ChevronUp, History, StickyNote, ExternalLink, MoreVertical, Send, Scan, TestTube2, Pill, Share, User, Download, ChevronRight, Calendar, Printer, ClipboardPlus, FileCheck, Wheat, Bell, FileHeart, HeartPulse, Paperclip, HelpCircle, MoreHorizontal, AlertTriangle, Upload as Upload$1, Camera, Check as Check$1, X as X$1, ScanLine, Image } from './chunk-BKSPDTX4.js';
119
119
  export { Accessibility as AccessibilityIcon, Activity as ActivityIcon, AlertCircle as AlertCircleIcon, AlertTriangle as AlertTriangleIcon, Wheat as AllergyIcon, WheatOff as AllergyOffIcon, Ambulance as AmbulanceIcon, ArrowLeft as ArrowLeftIcon, ArrowRight as ArrowRightIcon, ArrowUpDown as ArrowUpDownIcon, ArrowUp as ArrowUpIcon, AtSign as AtSignIcon, Baby as BabyIcon, BadgeAlert as BadgeAlertIcon, BadgeCheck as BadgeCheckIcon, BadgeMinus as BadgeMinusIcon, BadgePlus as BadgePlusIcon, BadgeX as BadgeXIcon, Ban as BanIcon, Bandage as BandageIcon, BedDouble as BedDoubleIcon, Bed as BedIcon, BedSingle as BedSingleIcon, Bell as BellIcon, BellOff as BellOffIcon, Biohazard as BiohazardIcon, Bone as BoneIcon, BookOpenCheck as BookOpenCheckIcon, BookOpen as BookOpenIcon, Bookmark as BookmarkIcon, Bot as BotIcon, Brain as BrainIcon, Briefcase as BriefcaseIcon, BriefcaseMedical as BriefcaseMedicalIcon, Building as BuildingIcon, CalendarCheck as CalendarCheckIcon, Calendar as CalendarIcon, Camera as CameraIcon, Cannabis as CannabisIcon, BarChart3 as ChartIcon, CheckCircle as CheckCircleIcon, Check as CheckIcon, ChevronDown as ChevronDownIcon, ChevronLeft as ChevronLeftIcon, ChevronRight as ChevronRightIcon, ChevronUp as ChevronUpIcon, Cigarette as CigaretteIcon, CigaretteOff as CigaretteOffIcon, CircleDotDashed as CircleDotDashedIcon, CircleDot as CircleDotIcon, CircleUser as CircleUserIcon, ClipboardCheck as ClipboardCheckIcon, Clipboard as ClipboardIcon, ClipboardList as ClipboardListIcon, ClipboardPlus as ClipboardPlusIcon, Clock as ClockIcon, Cog as CogIcon, Columns as ColumnsIcon, Copy as CopyIcon, CreditCard as CreditCardIcon, Cross as CrossIcon, Dna as DnaIcon, DollarSign as DollarSignIcon, Download as DownloadIcon, Droplet as DropletIcon, Droplets as DropletsIcon, Ear as EarIcon, ExternalLink as ExternalLinkIcon, Eye as EyeIcon, EyeOff as EyeOffIcon, FileCheck2 as FileCheck2Icon, FileCheck as FileCheckIcon, FileHeart as FileHeartIcon, File as FileIcon, FilePlus2 as FilePlus2Icon, FilePlus as FilePlusIcon, FileText as FileTextIcon, Filter as FilterIcon, Fingerprint as FingerprintIcon, Flag as FlagIcon, FlaskConical as FlaskIcon, FlaskRound as FlaskRoundIcon, Folder as FolderIcon, FolderOpen as FolderOpenIcon, Footprints as FootprintsIcon, Glasses as GlassesIcon, Globe as GlobeIcon, LayoutGrid as GridIcon, GripVertical as GripVerticalIcon, Hand as HandIcon, HandMetal as HandMetalIcon, Hash as HashIcon, Heart as HeartIcon, HeartOff as HeartOffIcon, HeartPulse as HeartPulseIcon, HelpCircle as HelpCircleIcon, History as HistoryIcon, Home as HomeIcon, Hospital as HospitalIcon, Image as ImageIcon, Info as InfoIcon, Key as KeyIcon, Link as LinkIcon, List as ListIcon, Loader2 as LoaderIcon, Lock as LockIcon, LogIn as LogInIcon, LogOut as LogOutIcon, Mail as MailIcon, MapPin as MapPinIcon, Maximize as MaximizeIcon, Menu as MenuIcon, MessageSquare as MessageIcon, Mic as MicIcon, Microscope as MicroscopeIcon, Minimize as MinimizeIcon, Minus as MinusIcon, Monitor as MonitorIcon, Moon as MoonIcon, MoreHorizontal as MoreHorizontalIcon, MoreVertical as MoreVerticalIcon, NotebookPen as NotebookPenIcon, Palette as PaletteIcon, Paperclip as PaperclipIcon, CircleUserRound as PatientIcon, Pencil as PencilIcon, UserRound as PersonIcon, Phone as PhoneIcon, PieChart as PieChartIcon, Pill as PillIcon, Plus as PlusIcon, Printer as PrinterIcon, Radiation as RadiationIcon, Ruler as RulerIcon, Save as SaveIcon, Scale as ScaleIcon, Scaling as ScalingIcon, ScanEye as ScanEyeIcon, Scan as ScanIcon, ScanLine as ScanLineIcon, Search as SearchIcon, Settings as SettingsIcon, Share as ShareIcon, ShieldCheck as ShieldCheckIcon, Shield as ShieldIcon, ShieldPlus as ShieldPlusIcon, Sliders as SlidersIcon, Sparkle as SparkleIcon, Star as StarIcon, Stethoscope as StethoscopeIcon, StickyNote as StickyNoteIcon, Square as StopIcon, Sun as SunIcon, Syringe as SyringeIcon, Table as TableIcon, Tablets as TabletsIcon, Tag as TagIcon, TestTube2 as TestTubeIcon, TestTubes as TestTubesIcon, Thermometer as ThermometerIcon, ThermometerSun as ThermometerSunIcon, ThumbsDown as ThumbsDownIcon, ThumbsUp as ThumbsUpIcon, Timer as TimerIcon, Trash2 as TrashIcon, TrendingDown as TrendingDownIcon, TrendingUp as TrendingUpIcon, Truck as TruckIcon, Unlock as UnlockIcon, Upload as UploadIcon, UserCheck as UserCheckIcon, User as UserIcon, UserMinus as UserMinusIcon, UserPlus as UserPlusIcon, UserRoundCheck as UserRoundCheckIcon, UserRoundMinus as UserRoundMinusIcon, UserRoundPlus as UserRoundPlusIcon, UserRoundX as UserRoundXIcon, Users as UsersIcon, Weight as WeightIcon, Wrench as WrenchIcon, XCircle as XCircleIcon, X2 as XIcon, Zap as ZapIcon } from './chunk-BKSPDTX4.js';
120
120
  import { Badge } from './chunk-BMSG4NBH.js';
121
121
  export { Badge, badgeVariants } from './chunk-BMSG4NBH.js';
122
122
  import { Button, buttonVariants } from './chunk-KREUYVMZ.js';
123
123
  export { Button, buttonVariants } from './chunk-KREUYVMZ.js';
124
- import { AnimatedPresence, Animated } from './chunk-WYMO3IIK.js';
125
- export { Animated, AnimatedPresence, motionPresets, useMotionRuntime } from './chunk-WYMO3IIK.js';
124
+ import { AnimatedPresence, Animated } from './chunk-XCP454Q6.js';
125
+ export { Animated, AnimatedPresence, motionPresets, useMotionRuntime } from './chunk-XCP454Q6.js';
126
126
  import { cn } from './chunk-TQONQSJO.js';
127
127
  export { cn, miewebUITwMergeConflicts } from './chunk-TQONQSJO.js';
128
- import { useCommandK, useIsMobile, useMediaQuery, useDirection } from './chunk-XUVEF2RQ.js';
129
- export { RTL_LOCALES, isRtlLocale, useCommandK, useDirection, useIsDesktop, useIsLargeDesktop, useIsMobile, useIsMobileOrTablet, useIsSmallTablet, useIsTablet, useKeyboardShortcut, useMediaQuery } from './chunk-XUVEF2RQ.js';
128
+ import { useDirection, useCommandK, useIsMobile, useMediaQuery } from './chunk-24SEAAOH.js';
129
+ export { RTL_LOCALES, isRtlLocale, useCommandK, useDirection, useIsDesktop, useIsLargeDesktop, useIsMobile, useIsMobileOrTablet, useIsSmallTablet, useIsTablet, useKeyboardShortcut, useMediaQuery } from './chunk-24SEAAOH.js';
130
130
  export { useTheme } from './chunk-KJZNEVYM.js';
131
131
  import { useScrollSpy } from './chunk-WBGUYSWY.js';
132
132
  export { useScrollSpy } from './chunk-WBGUYSWY.js';
@@ -147,13 +147,14 @@ export { useClickOutside } from './chunk-62ZOA6PX.js';
147
147
  import { useAnchoredPosition } from './chunk-WSNMQQ4P.js';
148
148
  export { useAnchoredPosition } from './chunk-WSNMQQ4P.js';
149
149
  export { isDarkMode, useIsDarkMode } from './chunk-RUGHNFQG.js';
150
+ import './chunk-PX6F3LHL.js';
150
151
  import * as React13 from 'react';
151
152
  import React13__default, { createContext, useState, useEffect, useCallback, useMemo, useContext, useRef } from 'react';
152
153
  import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
153
154
  import { cva } from 'class-variance-authority';
154
155
  import * as ReactDOM from 'react-dom';
155
156
  import { createPortal } from 'react-dom';
156
- import { FileUp, X, AlertCircle as AlertCircle$1, ChevronUp as ChevronUp$1, Check as Check$1, ChevronRight, ChevronLeft, Calendar as Calendar$1, ChevronDown as ChevronDown$1, Maximize2, Minimize2, FolderUp, Upload, Edit2, Phone as Phone$1, Mail as Mail$1, Clock as Clock$1, MapPin, Shield, Building2, SlidersHorizontal, Trash2 as Trash2$1, Pencil as Pencil$1, Plus as Plus$1, Link as Link$1, AlertTriangle as AlertTriangle$1, RefreshCw as RefreshCw$1 } from 'lucide-react';
157
+ import { FileUp, X, AlertCircle as AlertCircle$1, Calendar as Calendar$1, ChevronLeft, ChevronRight as ChevronRight$1, ChevronDown as ChevronDown$1, Maximize2, Minimize2, FolderUp, Upload, Edit2, Check, ChevronUp as ChevronUp$1, Phone as Phone$1, Mail as Mail$1, Clock as Clock$1, MapPin, Shield, Building2, SlidersHorizontal, Trash2 as Trash2$1, Pencil as Pencil$1, Plus as Plus$1, Link as Link$1, AlertTriangle as AlertTriangle$1, RefreshCw as RefreshCw$1 } from 'lucide-react';
157
158
 
158
159
  var SEX_OPTIONS = [
159
160
  { value: "F", label: "Female" },
@@ -1464,6 +1465,7 @@ var chatVariants = cva("flex flex-col", {
1464
1465
  size: "full"
1465
1466
  }
1466
1467
  });
1468
+ var normalizeLegacySlot = (node) => node || void 0;
1467
1469
  function AIChat({
1468
1470
  session,
1469
1471
  messages: messagesProp,
@@ -1493,6 +1495,9 @@ function AIChat({
1493
1495
  renderMessageFooter
1494
1496
  }) {
1495
1497
  const messagesContainerRef = React13.useRef(null);
1498
+ React13.useEffect(() => {
1499
+ notifyComposerMigrationOnce("AIChat");
1500
+ }, []);
1496
1501
  const messages = React13.useMemo(
1497
1502
  () => session?.messages || messagesProp || [],
1498
1503
  [session?.messages, messagesProp]
@@ -1502,11 +1507,64 @@ function AIChat({
1502
1507
  const container = messagesContainerRef.current;
1503
1508
  if (container) container.scrollTop = container.scrollHeight;
1504
1509
  }, [messages]);
1505
- const handleSend = async (message) => {
1506
- if (message.content.trim() && onSendMessage) {
1507
- onSendMessage(message.content.trim());
1510
+ const {
1511
+ showAttachmentPicker,
1512
+ inputTrailing,
1513
+ onTypingStart,
1514
+ onTypingStop,
1515
+ value: hostValue,
1516
+ onValueChange: hostOnValueChange,
1517
+ onSend: hostOnSend,
1518
+ micSlot: hostMicSlot,
1519
+ ...composerRest
1520
+ } = composerProps ?? {};
1521
+ delete composerRest.showCameraButton;
1522
+ delete composerRest.variant;
1523
+ const hasInputTrailing = !!composerProps && "inputTrailing" in composerProps;
1524
+ const legacyAttachments = !!composerProps && "showAttachmentPicker" in composerProps ? showAttachmentPicker ?? true : false;
1525
+ const [draft, setDraft] = React13.useState("");
1526
+ const draftEpochRef = React13.useRef(0);
1527
+ const composerValue = hostValue ?? draft;
1528
+ const isHostControlled = hostValue !== void 0;
1529
+ const handleComposerValueChange = React13.useCallback(
1530
+ (value) => {
1531
+ draftEpochRef.current += 1;
1532
+ setDraft(value);
1533
+ if (isHostControlled) hostOnValueChange?.(value);
1534
+ },
1535
+ [isHostControlled, hostOnValueChange]
1536
+ );
1537
+ const { stopTyping } = useTypingEmulation({
1538
+ value: composerValue,
1539
+ onTypingStart,
1540
+ onTypingStop
1541
+ });
1542
+ const sendWithRestore = async (message, send) => {
1543
+ stopTyping();
1544
+ const epoch = draftEpochRef.current;
1545
+ try {
1546
+ await Promise.resolve(send(message));
1547
+ } catch (error) {
1548
+ if (draftEpochRef.current === epoch) {
1549
+ setDraft(message.content);
1550
+ if (isHostControlled) hostOnValueChange?.(message.content);
1551
+ }
1552
+ throw error;
1508
1553
  }
1509
1554
  };
1555
+ const handleSend = async (message) => {
1556
+ if (!onSendMessage) return;
1557
+ const content = message.content.trim();
1558
+ const attachments = message.attachments?.length ? message.attachments : void 0;
1559
+ if (!content && !attachments) return;
1560
+ await sendWithRestore(
1561
+ message,
1562
+ () => (
1563
+ // Keep the exact legacy call shape for text-only sends.
1564
+ attachments ? onSendMessage(content, attachments) : onSendMessage(content)
1565
+ )
1566
+ );
1567
+ };
1510
1568
  const handleSuggestionSelect = (action) => {
1511
1569
  if (onSuggestedAction) {
1512
1570
  onSuggestedAction(action);
@@ -1625,18 +1683,14 @@ function AIChat({
1625
1683
  onSelect: handleSuggestionSelect
1626
1684
  }
1627
1685
  ) }),
1628
- /* @__PURE__ */ jsx(
1629
- MessageComposer,
1686
+ /* @__PURE__ */ jsx("div", { "data-slot": "ai-chat-composer", className: "p-3", children: /* @__PURE__ */ jsx(
1687
+ ChatComposer,
1630
1688
  {
1631
- onSend: handleSend,
1689
+ onSend: hostOnSend ? (message) => sendWithRestore(message, hostOnSend) : handleSend,
1632
1690
  placeholder: inputPlaceholder,
1633
1691
  disabled: isGenerating,
1634
1692
  isSending: isGenerating,
1635
- showAttachmentPicker: false,
1636
- showCameraButton: false,
1637
- showCharacterCount: false,
1638
- variant: "minimal",
1639
- inputTrailing: talkToText ? /* @__PURE__ */ jsx(
1693
+ micSlot: hostMicSlot !== void 0 ? hostMicSlot : hasInputTrailing ? normalizeLegacySlot(inputTrailing) : talkToText ? /* @__PURE__ */ jsx(
1640
1694
  RecordButton,
1641
1695
  {
1642
1696
  variant: "ghost",
@@ -1648,9 +1702,16 @@ function AIChat({
1648
1702
  onRecordingComplete
1649
1703
  }
1650
1704
  ) : void 0,
1651
- ...composerProps
1705
+ ...composerRest,
1706
+ allowAttachments: composerRest.allowAttachments ?? legacyAttachments,
1707
+ maxLength: composerRest.maxLength ?? 1600,
1708
+ inputLabel: composerRest.inputLabel ?? "Message",
1709
+ acceptedFileTypes: composerRest.acceptedFileTypes ?? (legacyAttachments ? DEFAULT_ACCEPTED_FILE_TYPES : void 0),
1710
+ maxFileSize: composerRest.maxFileSize ?? (legacyAttachments ? DEFAULT_MAX_FILE_SIZE : void 0),
1711
+ value: composerValue,
1712
+ onValueChange: handleComposerValueChange
1652
1713
  }
1653
- )
1714
+ ) })
1654
1715
  ]
1655
1716
  }
1656
1717
  )
@@ -1909,7 +1970,6 @@ function Toast({
1909
1970
  className: cn(
1910
1971
  "flex items-start gap-3 rounded-lg border p-4 shadow-lg",
1911
1972
  "max-w-[420px] min-w-[300px]",
1912
- "animate-slide-in-right rtl:animate-slide-in-left",
1913
1973
  styles.container
1914
1974
  ),
1915
1975
  children: [
@@ -1954,17 +2014,27 @@ var positionStyles = {
1954
2014
  "bottom-left": "bottom-4 start-4 items-start",
1955
2015
  "bottom-right": "bottom-4 end-4 items-end"
1956
2016
  };
2017
+ function toastEdge(position, isRtl) {
2018
+ if (position === "top-center") return "top";
2019
+ if (position === "bottom-center") return "bottom";
2020
+ const isStart = position.endsWith("-start") || position.endsWith("-left");
2021
+ return isStart === isRtl ? "right" : "left";
2022
+ }
2023
+ var TOAST_FALLBACK_ANIMATION = "animate-slide-in-right rtl:animate-slide-in-left";
1957
2024
  function ToastContainer({
1958
2025
  toasts,
1959
2026
  position,
1960
2027
  onDismiss
1961
2028
  }) {
1962
2029
  const context = useOptionalToast();
2030
+ const containerRef = React13__default.useRef(null);
2031
+ const isRtl = useDirection(containerRef) === "rtl";
1963
2032
  const resolvedPosition = position ?? context?.position ?? "bottom-end";
1964
- if (toasts.length === 0) return null;
2033
+ const edge = toastEdge(resolvedPosition, isRtl);
1965
2034
  return /* @__PURE__ */ jsx(
1966
2035
  "div",
1967
2036
  {
2037
+ ref: containerRef,
1968
2038
  "data-slot": "toast-container",
1969
2039
  className: cn(
1970
2040
  "pointer-events-none fixed z-50 flex flex-col gap-2",
@@ -1972,533 +2042,21 @@ function ToastContainer({
1972
2042
  ),
1973
2043
  "aria-live": "polite",
1974
2044
  "aria-atomic": "true",
1975
- children: toasts.map((toast) => /* @__PURE__ */ jsx("div", { className: "pointer-events-auto", children: /* @__PURE__ */ jsx(Toast, { ...toast, onClose: () => onDismiss(toast.id) }) }, toast.id))
1976
- }
1977
- );
1978
- }
1979
- var MENU_OFFSET_PX = 6;
1980
- var MENU_MAX_HEIGHT_PX = 320;
1981
- function optionKey(option) {
1982
- return `${option.provider}\0${option.model}`;
1983
- }
1984
- function renderedOptionKey(option, index) {
1985
- return `${option.id ?? optionKey(option)}\0${index}`;
1986
- }
1987
- function groupByProvider(models) {
1988
- const groups = /* @__PURE__ */ new Map();
1989
- for (const model of models) {
1990
- const group = groups.get(model.provider);
1991
- if (group) {
1992
- group.push(model);
1993
- } else {
1994
- groups.set(model.provider, [model]);
1995
- }
1996
- }
1997
- return Array.from(groups, ([provider, options]) => ({ provider, options }));
1998
- }
1999
- function getProviderLabel(models, provider) {
2000
- return models.find((model) => model.provider === provider && model.providerLabel)?.providerLabel ?? provider;
2001
- }
2002
- function ComposerModelSelector({
2003
- models,
2004
- value,
2005
- providerFilter,
2006
- onProviderFilterChange,
2007
- onChange,
2008
- disabled = false,
2009
- variant = "default",
2010
- className,
2011
- boundaryRef,
2012
- placeholder = "Model",
2013
- anyLabel = "Any",
2014
- emptyLabel = "No models",
2015
- ariaLabel = "Model",
2016
- effortOptions,
2017
- effort = null,
2018
- defaultEffort,
2019
- onEffortChange,
2020
- effortLabel = "Effort",
2021
- effortHint,
2022
- defaultBadgeLabel = "Default",
2023
- backLabel = "Back"
2024
- }) {
2025
- const [open, setOpen] = React13.useState(false);
2026
- const [view, setView] = React13.useState("models");
2027
- const [effortHighlight, setEffortHighlight] = React13.useState(0);
2028
- const [internalProviderFilter, setInternalProviderFilter] = React13.useState(null);
2029
- const [highlightedIndex, setHighlightedIndex] = React13.useState(0);
2030
- const listRef = React13.useRef(null);
2031
- const effortListRef = React13.useRef(null);
2032
- const menuId = React13.useId();
2033
- const {
2034
- anchorRef: triggerRef,
2035
- floatingRef: menuRef,
2036
- style: menuStyle
2037
- } = useAnchoredPosition({
2038
- open,
2039
- placement: "top-start",
2040
- offset: MENU_OFFSET_PX,
2041
- matchMinWidth: true,
2042
- maxHeight: MENU_MAX_HEIGHT_PX,
2043
- allowFlip: false,
2044
- boundaryRef
2045
- });
2046
- const activeProviderFilter = providerFilter === void 0 ? internalProviderFilter : providerFilter;
2047
- const selectedKey = value ? optionKey(value) : null;
2048
- const selectedOption = models.find(
2049
- (model) => optionKey(model) === selectedKey
2050
- );
2051
- const providers = React13.useMemo(
2052
- () => Array.from(new Set(models.map((model) => model.provider))),
2053
- [models]
2054
- );
2055
- const providerLabels = React13.useMemo(
2056
- () => new Map(
2057
- providers.map((provider) => [
2058
- provider,
2059
- getProviderLabel(models, provider)
2060
- ])
2061
- ),
2062
- [models, providers]
2063
- );
2064
- const filteredModels = React13.useMemo(
2065
- () => activeProviderFilter === null ? models : models.filter((model) => model.provider === activeProviderFilter),
2066
- [activeProviderFilter, models]
2067
- );
2068
- const groupedModels = React13.useMemo(
2069
- () => groupByProvider(filteredModels),
2070
- [filteredModels]
2071
- );
2072
- const groupedRenderedModels = React13.useMemo(() => {
2073
- let index = 0;
2074
- return groupedModels.map((group) => ({
2075
- provider: group.provider,
2076
- options: group.options.map((option) => {
2077
- const rendered = {
2078
- option,
2079
- index,
2080
- key: renderedOptionKey(option, index)
2081
- };
2082
- index += 1;
2083
- return rendered;
2084
- })
2085
- }));
2086
- }, [groupedModels]);
2087
- const renderedModels = React13.useMemo(
2088
- () => groupedRenderedModels.flatMap((group) => group.options),
2089
- [groupedRenderedModels]
2090
- );
2091
- const getOptionId = React13.useCallback(
2092
- (index) => `${menuId}-option-${index}`,
2093
- [menuId]
2094
- );
2095
- const getEffortOptionId = React13.useCallback(
2096
- (index) => `${menuId}-effort-option-${index}`,
2097
- [menuId]
2098
- );
2099
- const activeOptionId = open && renderedModels[highlightedIndex] ? getOptionId(highlightedIndex) : void 0;
2100
- const selectedRenderedIndex = React13.useMemo(
2101
- () => selectedKey ? renderedModels.findIndex(
2102
- (renderedModel) => optionKey(renderedModel.option) === selectedKey
2103
- ) : -1,
2104
- [renderedModels, selectedKey]
2105
- );
2106
- const setProvider = React13.useCallback(
2107
- (provider) => {
2108
- if (providerFilter === void 0) {
2109
- setInternalProviderFilter(provider);
2110
- }
2111
- onProviderFilterChange?.(provider);
2112
- },
2113
- [onProviderFilterChange, providerFilter]
2114
- );
2115
- const close = React13.useCallback(
2116
- (restoreFocus = true) => {
2117
- setOpen(false);
2118
- if (restoreFocus) {
2119
- triggerRef.current?.focus({ preventScroll: true });
2120
- }
2121
- },
2122
- [triggerRef]
2123
- );
2124
- const selectModel = React13.useCallback(
2125
- (model) => {
2126
- onChange({ provider: model.provider, model: model.model });
2127
- close();
2128
- },
2129
- [close, onChange]
2130
- );
2131
- const efforts = React13.useMemo(() => effortOptions ?? [], [effortOptions]);
2132
- const activeEffortOptionId = open && efforts[effortHighlight] ? getEffortOptionId(effortHighlight) : void 0;
2133
- const selectedEffortOption = efforts.find(
2134
- (option) => option.value === effort
2135
- );
2136
- const selectEffort = React13.useCallback(
2137
- (value2) => {
2138
- onEffortChange?.(value2);
2139
- close();
2140
- },
2141
- [close, onEffortChange]
2142
- );
2143
- const handleEffortKeyDown = (event) => {
2144
- if (efforts.length === 0) return;
2145
- if (event.key === "ArrowDown") {
2146
- event.preventDefault();
2147
- setEffortHighlight((current) => (current + 1) % efforts.length);
2148
- }
2149
- if (event.key === "ArrowUp") {
2150
- event.preventDefault();
2151
- setEffortHighlight(
2152
- (current) => (current - 1 + efforts.length) % efforts.length
2153
- );
2154
- }
2155
- if (event.key === "Home") {
2156
- event.preventDefault();
2157
- setEffortHighlight(0);
2158
- }
2159
- if (event.key === "End") {
2160
- event.preventDefault();
2161
- setEffortHighlight(efforts.length - 1);
2162
- }
2163
- if (event.key === "ArrowLeft" || event.key === "Backspace") {
2164
- event.preventDefault();
2165
- setView("models");
2166
- }
2167
- if (event.key === "Enter" || event.key === " ") {
2168
- event.preventDefault();
2169
- const highlighted = efforts[effortHighlight];
2170
- if (highlighted) selectEffort(highlighted.value);
2045
+ children: /* @__PURE__ */ jsx(AnimatedPresence, { children: toasts.map((toast) => /* @__PURE__ */ jsx(
2046
+ Animated,
2047
+ {
2048
+ preset: "toast",
2049
+ mode: "presence",
2050
+ custom: edge,
2051
+ className: "pointer-events-auto",
2052
+ fallbackClassName: TOAST_FALLBACK_ANIMATION,
2053
+ children: /* @__PURE__ */ jsx(Toast, { ...toast, onClose: () => onDismiss(toast.id) })
2054
+ },
2055
+ toast.id
2056
+ )) })
2171
2057
  }
2172
- };
2173
- const outsideRefs = React13.useMemo(
2174
- () => [triggerRef, menuRef],
2175
- [triggerRef, menuRef]
2176
2058
  );
2177
- useClickOutside(outsideRefs, () => close(false), open);
2178
- useEscapeKey(close, open);
2179
- React13.useEffect(() => {
2180
- if (!open) return;
2181
- setHighlightedIndex(selectedRenderedIndex >= 0 ? selectedRenderedIndex : 0);
2182
- }, [activeProviderFilter, open, selectedRenderedIndex]);
2183
- React13.useEffect(() => {
2184
- if (!open) return;
2185
- setView("models");
2186
- }, [open]);
2187
- React13.useEffect(() => {
2188
- if (!open) return;
2189
- const current = efforts.findIndex((option) => option.value === effort);
2190
- setEffortHighlight(current >= 0 ? current : 0);
2191
- }, [effort, efforts, open]);
2192
- React13.useEffect(() => {
2193
- if (!open) return;
2194
- setHighlightedIndex(
2195
- (current) => Math.min(current, Math.max(renderedModels.length - 1, 0))
2196
- );
2197
- }, [open, renderedModels.length]);
2198
- React13.useEffect(() => {
2199
- if (!open) return;
2200
- requestAnimationFrame(() => {
2201
- const target = view === "effort" ? effortListRef.current : listRef.current;
2202
- target?.focus({ preventScroll: true });
2203
- });
2204
- }, [open, view]);
2205
- const handleTriggerKeyDown = (event) => {
2206
- if (event.key === "ArrowDown" || event.key === "ArrowUp") {
2207
- event.preventDefault();
2208
- setOpen(true);
2209
- }
2210
- };
2211
- const handleMenuKeyDown = (event) => {
2212
- if (renderedModels.length === 0) return;
2213
- if (event.key === "ArrowDown") {
2214
- event.preventDefault();
2215
- setHighlightedIndex((current) => (current + 1) % renderedModels.length);
2216
- }
2217
- if (event.key === "ArrowUp") {
2218
- event.preventDefault();
2219
- setHighlightedIndex(
2220
- (current) => (current - 1 + renderedModels.length) % renderedModels.length
2221
- );
2222
- }
2223
- if (event.key === "Home") {
2224
- event.preventDefault();
2225
- setHighlightedIndex(0);
2226
- }
2227
- if (event.key === "End") {
2228
- event.preventDefault();
2229
- setHighlightedIndex(renderedModels.length - 1);
2230
- }
2231
- if (event.key === "Enter" || event.key === " ") {
2232
- event.preventDefault();
2233
- const highlightedModel = renderedModels[highlightedIndex]?.option;
2234
- if (highlightedModel) {
2235
- selectModel(highlightedModel);
2236
- }
2237
- }
2238
- };
2239
- return /* @__PURE__ */ jsxs(Fragment, { children: [
2240
- /* @__PURE__ */ jsxs(
2241
- "button",
2242
- {
2243
- ref: triggerRef,
2244
- type: "button",
2245
- disabled,
2246
- "aria-haspopup": "listbox",
2247
- "aria-expanded": open,
2248
- "aria-controls": open ? menuId : void 0,
2249
- onClick: () => setOpen((current) => !current),
2250
- onKeyDown: handleTriggerKeyDown,
2251
- "data-slot": "composer-model-selector-trigger",
2252
- className: cn(
2253
- variant === "ghost" ? [
2254
- "inline-flex max-w-full min-w-0 items-center gap-1 rounded-md px-2 py-1 text-xs",
2255
- "text-neutral-600 dark:text-neutral-400",
2256
- "transition-colors duration-150",
2257
- "hover:bg-neutral-100 hover:text-neutral-900 dark:hover:bg-neutral-700 dark:hover:text-white",
2258
- "focus-visible:ring-primary-500 focus-visible:ring-2 focus-visible:outline-none",
2259
- "disabled:pointer-events-none disabled:opacity-40"
2260
- ] : [
2261
- "inline-flex h-8 max-w-full items-center gap-1.5 rounded-full border px-2.5 text-sm font-medium",
2262
- "border-border bg-background text-foreground shadow-sm",
2263
- "hover:bg-muted/50",
2264
- "focus-visible:ring-ring focus-visible:ring-2 focus-visible:outline-none",
2265
- "disabled:cursor-not-allowed disabled:opacity-50"
2266
- ],
2267
- className
2268
- ),
2269
- children: [
2270
- /* @__PURE__ */ jsx("span", { className: "min-w-0 truncate", children: selectedOption?.label ?? selectedOption?.model ?? placeholder }),
2271
- selectedEffortOption && /* @__PURE__ */ jsx(
2272
- "span",
2273
- {
2274
- "data-slot": "composer-model-selector-trigger-effort",
2275
- className: "text-muted-foreground min-w-0 truncate font-normal",
2276
- children: selectedEffortOption.label
2277
- }
2278
- ),
2279
- /* @__PURE__ */ jsx(
2280
- ChevronUp$1,
2281
- {
2282
- "aria-hidden": "true",
2283
- className: cn(
2284
- "shrink-0",
2285
- variant === "ghost" ? "h-3 w-3" : "h-3.5 w-3.5"
2286
- )
2287
- }
2288
- )
2289
- ]
2290
- }
2291
- ),
2292
- open && createPortal(
2293
- /* @__PURE__ */ jsxs(
2294
- "div",
2295
- {
2296
- ref: menuRef,
2297
- style: menuStyle,
2298
- "data-slot": "composer-model-selector-menu",
2299
- className: cn(
2300
- "border-border bg-card text-card-foreground flex w-80 max-w-full flex-col rounded-lg border shadow-lg",
2301
- "animate-in fade-in overflow-hidden duration-100"
2302
- ),
2303
- children: [
2304
- view === "models" && /* @__PURE__ */ jsxs(Fragment, { children: [
2305
- /* @__PURE__ */ jsx(
2306
- "div",
2307
- {
2308
- "data-slot": "composer-model-selector-provider-filter",
2309
- className: "border-border flex min-h-9 items-center gap-1 overflow-x-auto overflow-y-hidden border-b p-2",
2310
- children: [null, ...providers].map((provider) => {
2311
- const selected = activeProviderFilter === provider;
2312
- return /* @__PURE__ */ jsx(
2313
- "button",
2314
- {
2315
- type: "button",
2316
- "aria-pressed": selected,
2317
- onMouseDown: (event) => event.preventDefault(),
2318
- onClick: () => setProvider(provider),
2319
- className: cn(
2320
- "inline-flex h-6 shrink-0 items-center justify-center rounded-full px-2.5 text-xs font-medium whitespace-nowrap transition-colors",
2321
- "focus-visible:ring-ring focus-visible:ring-2 focus-visible:outline-none",
2322
- selected ? "bg-primary text-primary-foreground" : "text-muted-foreground hover:bg-muted hover:text-foreground"
2323
- ),
2324
- children: provider === null ? anyLabel : providerLabels.get(provider) ?? provider
2325
- },
2326
- provider ?? "all-providers"
2327
- );
2328
- })
2329
- }
2330
- ),
2331
- /* @__PURE__ */ jsx(
2332
- "div",
2333
- {
2334
- ref: listRef,
2335
- id: menuId,
2336
- role: "listbox",
2337
- "aria-label": ariaLabel,
2338
- "aria-activedescendant": activeOptionId,
2339
- tabIndex: -1,
2340
- onKeyDown: handleMenuKeyDown,
2341
- className: "min-h-0 flex-1 overflow-y-auto p-1",
2342
- children: groupedModels.length === 0 ? /* @__PURE__ */ jsx("div", { className: "text-muted-foreground px-3 py-4 text-center text-sm", children: emptyLabel }) : groupedRenderedModels.map((group) => /* @__PURE__ */ jsxs(
2343
- "div",
2344
- {
2345
- role: "group",
2346
- "aria-label": providerLabels.get(group.provider) ?? group.provider,
2347
- children: [
2348
- /* @__PURE__ */ jsx("div", { className: "text-muted-foreground px-3 py-1.5 text-xs font-semibold uppercase", children: providerLabels.get(group.provider) ?? group.provider }),
2349
- group.options.map((renderedModel) => {
2350
- const { index, key, option: model } = renderedModel;
2351
- const selected = optionKey(model) === selectedKey;
2352
- const highlighted = index === highlightedIndex;
2353
- return /* @__PURE__ */ jsxs(
2354
- "button",
2355
- {
2356
- id: getOptionId(index),
2357
- type: "button",
2358
- role: "option",
2359
- "aria-selected": selected,
2360
- onMouseDown: (event) => event.preventDefault(),
2361
- onClick: () => selectModel(model),
2362
- onMouseEnter: () => setHighlightedIndex(index),
2363
- className: cn(
2364
- "flex w-full items-center gap-2 rounded-md px-3 py-2 text-start text-sm",
2365
- "focus-visible:ring-ring transition-colors focus-visible:ring-2 focus-visible:outline-none",
2366
- highlighted && "bg-muted",
2367
- selected && "bg-primary/10 text-primary"
2368
- ),
2369
- children: [
2370
- /* @__PURE__ */ jsx("span", { className: "min-w-0 flex-1 truncate", children: model.label ?? model.model }),
2371
- selected && /* @__PURE__ */ jsx(
2372
- Check$1,
2373
- {
2374
- "aria-hidden": "true",
2375
- className: "text-primary h-4 w-4 shrink-0"
2376
- }
2377
- )
2378
- ]
2379
- },
2380
- key
2381
- );
2382
- })
2383
- ]
2384
- },
2385
- group.provider
2386
- ))
2387
- }
2388
- ),
2389
- efforts.length > 0 && /* @__PURE__ */ jsx("div", { className: "border-border border-t p-1", children: /* @__PURE__ */ jsxs(
2390
- "button",
2391
- {
2392
- type: "button",
2393
- "data-slot": "composer-model-selector-effort-row",
2394
- "aria-haspopup": "listbox",
2395
- onMouseDown: (event) => event.preventDefault(),
2396
- onClick: () => setView("effort"),
2397
- className: cn(
2398
- "flex w-full items-center gap-2 rounded-md px-3 py-2 text-start text-sm",
2399
- "hover:bg-muted transition-colors",
2400
- "focus-visible:ring-ring focus-visible:ring-2 focus-visible:outline-none"
2401
- ),
2402
- children: [
2403
- /* @__PURE__ */ jsx("span", { className: "min-w-0 flex-1 truncate", children: effortLabel }),
2404
- selectedEffortOption && /* @__PURE__ */ jsx("span", { className: "text-muted-foreground min-w-0 truncate", children: selectedEffortOption.label }),
2405
- /* @__PURE__ */ jsx(
2406
- ChevronRight,
2407
- {
2408
- "aria-hidden": "true",
2409
- className: "text-muted-foreground h-4 w-4 shrink-0 rtl:-scale-x-100"
2410
- }
2411
- )
2412
- ]
2413
- }
2414
- ) })
2415
- ] }),
2416
- view === "effort" && /* @__PURE__ */ jsxs(Fragment, { children: [
2417
- /* @__PURE__ */ jsx("div", { className: "border-border flex items-center gap-1 border-b p-2", children: /* @__PURE__ */ jsxs(
2418
- "button",
2419
- {
2420
- type: "button",
2421
- "data-slot": "composer-model-selector-effort-back",
2422
- "aria-label": backLabel,
2423
- onMouseDown: (event) => event.preventDefault(),
2424
- onClick: () => setView("models"),
2425
- className: cn(
2426
- "inline-flex h-6 shrink-0 items-center gap-1 rounded-full px-2 text-xs font-medium",
2427
- "text-muted-foreground hover:bg-muted hover:text-foreground transition-colors",
2428
- "focus-visible:ring-ring focus-visible:ring-2 focus-visible:outline-none"
2429
- ),
2430
- children: [
2431
- /* @__PURE__ */ jsx(
2432
- ChevronLeft,
2433
- {
2434
- "aria-hidden": "true",
2435
- className: "h-3.5 w-3.5 rtl:-scale-x-100"
2436
- }
2437
- ),
2438
- effortLabel
2439
- ]
2440
- }
2441
- ) }),
2442
- effortHint && /* @__PURE__ */ jsx("p", { className: "text-muted-foreground px-3 pt-2 text-xs", children: effortHint }),
2443
- /* @__PURE__ */ jsx(
2444
- "div",
2445
- {
2446
- ref: effortListRef,
2447
- id: menuId,
2448
- role: "listbox",
2449
- "aria-label": effortLabel,
2450
- "aria-activedescendant": activeEffortOptionId,
2451
- tabIndex: -1,
2452
- onKeyDown: handleEffortKeyDown,
2453
- className: "min-h-0 flex-1 overflow-y-auto p-1",
2454
- children: efforts.map((option, index) => {
2455
- const selected = option.value === effort;
2456
- const highlighted = index === effortHighlight;
2457
- return /* @__PURE__ */ jsxs(
2458
- "button",
2459
- {
2460
- id: getEffortOptionId(index),
2461
- type: "button",
2462
- role: "option",
2463
- "aria-selected": selected,
2464
- onMouseDown: (event) => event.preventDefault(),
2465
- onClick: () => selectEffort(option.value),
2466
- onMouseEnter: () => setEffortHighlight(index),
2467
- className: cn(
2468
- "flex w-full items-center gap-2 rounded-md px-3 py-2 text-start text-sm",
2469
- "focus-visible:ring-ring transition-colors focus-visible:ring-2 focus-visible:outline-none",
2470
- highlighted && "bg-muted",
2471
- selected && "bg-primary/10 text-primary"
2472
- ),
2473
- children: [
2474
- /* @__PURE__ */ jsxs("span", { className: "min-w-0 flex-1", children: [
2475
- /* @__PURE__ */ jsx("span", { className: "block truncate", children: option.label }),
2476
- option.description && /* @__PURE__ */ jsx("span", { className: "text-muted-foreground block truncate text-xs", children: option.description })
2477
- ] }),
2478
- option.value === defaultEffort && /* @__PURE__ */ jsx("span", { className: "bg-muted text-muted-foreground shrink-0 rounded px-1.5 py-0.5 text-xs", children: defaultBadgeLabel }),
2479
- selected && /* @__PURE__ */ jsx(
2480
- Check$1,
2481
- {
2482
- "aria-hidden": "true",
2483
- className: "text-primary h-4 w-4 shrink-0"
2484
- }
2485
- )
2486
- ]
2487
- },
2488
- option.value
2489
- );
2490
- })
2491
- }
2492
- )
2493
- ] })
2494
- ]
2495
- }
2496
- ),
2497
- document.body
2498
- )
2499
- ] });
2500
2059
  }
2501
- ComposerModelSelector.displayName = "ComposerModelSelector";
2502
2060
  var THINKING_OPTIONS = [
2503
2061
  {
2504
2062
  value: "never",
@@ -2619,20 +2177,17 @@ function OzwellChat({
2619
2177
  });
2620
2178
  setMessagesMenuOpen(false);
2621
2179
  };
2622
- const modelSelector = showModelSelector && models ? /* @__PURE__ */ jsx(
2623
- ComposerModelSelector,
2624
- {
2625
- models: models.options,
2626
- value: models.value,
2627
- onChange: models.onChange,
2628
- ...models.providerFilter !== void 0 ? {
2629
- providerFilter: models.providerFilter,
2630
- onProviderFilterChange: models.onProviderFilterChange
2631
- } : { onProviderFilterChange: models.onProviderFilterChange },
2632
- boundaryRef: shellRef,
2633
- className: "border-border bg-card text-foreground max-w-[min(142px,38vw)] shadow-sm"
2634
- }
2635
- ) : void 0;
2180
+ const modelSelectorProps = showModelSelector && models ? {
2181
+ models: models.options,
2182
+ value: models.value,
2183
+ onChange: models.onChange,
2184
+ ...models.providerFilter !== void 0 ? {
2185
+ providerFilter: models.providerFilter,
2186
+ onProviderFilterChange: models.onProviderFilterChange
2187
+ } : { onProviderFilterChange: models.onProviderFilterChange },
2188
+ boundaryRef: shellRef,
2189
+ className: "max-w-[min(160px,44vw)]"
2190
+ } : void 0;
2636
2191
  const startQueuedMessageEdit = () => {
2637
2192
  setQueuedMessageDraft(queuedMessage ?? "");
2638
2193
  setIsEditingQueuedMessage(true);
@@ -2678,7 +2233,7 @@ function OzwellChat({
2678
2233
  variant: "ghost",
2679
2234
  "aria-label": "Save queued message",
2680
2235
  onClick: saveQueuedMessage,
2681
- children: /* @__PURE__ */ jsx(Check, { size: 14, "aria-hidden": "true" })
2236
+ children: /* @__PURE__ */ jsx(Check$1, { size: 14, "aria-hidden": "true" })
2682
2237
  }
2683
2238
  ) }),
2684
2239
  /* @__PURE__ */ jsx(Tooltip, { content: "Cancel editing", children: /* @__PURE__ */ jsx(
@@ -2846,7 +2401,6 @@ function OzwellChat({
2846
2401
  {
2847
2402
  messages: chatMessages,
2848
2403
  isGenerating,
2849
- className: showModelSelector ? '[&_[data-slot="composer-input"]]:pe-[min(160px,44vw)]' : void 0,
2850
2404
  showHeader: false,
2851
2405
  height: "100%",
2852
2406
  variant: "embedded",
@@ -2856,9 +2410,9 @@ function OzwellChat({
2856
2410
  renderTextContent: renderMessageTextContent,
2857
2411
  renderMessageFooter: renderQueuedMessageFooter,
2858
2412
  composerProps: {
2859
- inputTrailing: modelSelector,
2860
2413
  disabled: false,
2861
- isSending: false
2414
+ isSending: false,
2415
+ ...modelSelectorProps ? { showModelSelector: true, modelSelectorProps } : {}
2862
2416
  }
2863
2417
  }
2864
2418
  ),
@@ -3557,7 +3111,7 @@ function useWakeWord(opts = {}) {
3557
3111
  try {
3558
3112
  await ensureOrt();
3559
3113
  if (cancelled) return;
3560
- const { HeyBuddy } = await import('./hey-buddy-NMSWZ4TN.js');
3114
+ const { HeyBuddy } = await import('./hey-buddy-V6FC5UKB.js');
3561
3115
  if (cancelled) return;
3562
3116
  const ASSET = resolveAssetBase(assetBase);
3563
3117
  const hb = new HeyBuddy({
@@ -6245,9 +5799,9 @@ function HandsFreeChat({
6245
5799
  // Controlled input (value/onValueChange) comes from the hook — it fills the box with the live
6246
5800
  // caption while dictating, else the typed text. We only add the mic button here.
6247
5801
  ...oz.chatProps.composerProps,
6248
- // The composer's OWN mic button, driven by our shared stream (controlled mode disables its
5802
+ // The composer's OWN mic slot, driven by our shared stream (controlled mode disables its
6249
5803
  // internal recorder). So the built-in mic and "hey ozwell" both do the same thing — one mic.
6250
- inputTrailing: /* @__PURE__ */ jsx(
5804
+ micSlot: /* @__PURE__ */ jsx(
6251
5805
  "span",
6252
5806
  {
6253
5807
  onClickCapture: () => {
@@ -8399,11 +7953,11 @@ function OrderRow({
8399
7953
  "aria-label": `Edit order ${order.display}`,
8400
7954
  className: "flex flex-1 flex-wrap items-center gap-1.5",
8401
7955
  children: [
8402
- /* @__PURE__ */ jsx(
8403
- "input",
7956
+ /* @__PURE__ */ jsx("div", { className: "min-w-40 flex-1", children: /* @__PURE__ */ jsx(
7957
+ Input,
8404
7958
  {
8405
- type: "text",
8406
7959
  autoFocus: true,
7960
+ size: "sm",
8407
7961
  value: editing.display,
8408
7962
  onChange: (e) => setEditing(
8409
7963
  (prev) => prev ? { ...prev, display: e.target.value } : prev
@@ -8413,17 +7967,13 @@ function OrderRow({
8413
7967
  else if (e.key === "Escape") setEditing(null);
8414
7968
  },
8415
7969
  "aria-label": "Order description",
8416
- className: cn(
8417
- "border-border bg-background text-foreground",
8418
- "h-7 min-w-40 flex-1 rounded-md border px-2 text-sm",
8419
- "focus:ring-ring focus:ring-2 focus:outline-none"
8420
- )
7970
+ className: "h-7"
8421
7971
  }
8422
- ),
8423
- /* @__PURE__ */ jsx(
8424
- "input",
7972
+ ) }),
7973
+ /* @__PURE__ */ jsx("div", { className: "w-40", children: /* @__PURE__ */ jsx(
7974
+ Input,
8425
7975
  {
8426
- type: "text",
7976
+ size: "sm",
8427
7977
  value: editing.detail,
8428
7978
  onChange: (e) => setEditing(
8429
7979
  (prev) => prev ? { ...prev, detail: e.target.value } : prev
@@ -8434,13 +7984,9 @@ function OrderRow({
8434
7984
  },
8435
7985
  placeholder: "detail (sig, timing\u2026)",
8436
7986
  "aria-label": "Order detail",
8437
- className: cn(
8438
- "border-border bg-background text-foreground placeholder:text-muted-foreground",
8439
- "h-7 w-40 rounded-md border px-2 text-xs",
8440
- "focus:ring-ring focus:ring-2 focus:outline-none"
8441
- )
7987
+ className: "h-7 text-xs"
8442
7988
  }
8443
- ),
7989
+ ) }),
8444
7990
  /* @__PURE__ */ jsx(
8445
7991
  Button,
8446
7992
  {
@@ -8559,6 +8105,7 @@ function OrderRow({
8559
8105
  );
8560
8106
  }
8561
8107
  function AddOrderForm({
8108
+ id,
8562
8109
  problemText,
8563
8110
  onSubmit,
8564
8111
  onCancel,
@@ -8593,6 +8140,7 @@ function AddOrderForm({
8593
8140
  return /* @__PURE__ */ jsxs(
8594
8141
  "div",
8595
8142
  {
8143
+ id,
8596
8144
  role: "form",
8597
8145
  "aria-label": `Add order for ${problemText}`,
8598
8146
  className: "border-border bg-muted/40 ms-2.5 mt-1.5 flex flex-wrap items-center gap-1.5 rounded-md border border-dashed p-2",
@@ -8631,12 +8179,11 @@ function AddOrderForm({
8631
8179
  });
8632
8180
  }
8633
8181
  }) }) : /* @__PURE__ */ jsxs(Fragment, { children: [
8634
- /* @__PURE__ */ jsx(
8635
- "input",
8182
+ /* @__PURE__ */ jsx("div", { className: "min-w-48 flex-1", children: /* @__PURE__ */ jsx(
8183
+ Input,
8636
8184
  {
8637
8185
  ref: inputRef,
8638
- type: "text",
8639
- "data-slot": "input",
8186
+ size: "sm",
8640
8187
  value: display,
8641
8188
  onChange: (e) => setDisplay(e.target.value),
8642
8189
  onKeyDown: (e) => {
@@ -8644,14 +8191,9 @@ function AddOrderForm({
8644
8191
  else if (e.key === "Escape") onCancel();
8645
8192
  },
8646
8193
  placeholder: "e.g. lisinopril 10 mg tablet \u2014 1 po daily",
8647
- "aria-label": "Order description",
8648
- className: cn(
8649
- "border-border bg-background text-foreground placeholder:text-muted-foreground",
8650
- "h-8 min-w-48 flex-1 rounded-md border px-2.5 text-sm",
8651
- "focus:ring-ring focus:ring-2 focus:outline-none"
8652
- )
8194
+ "aria-label": "Order description"
8653
8195
  }
8654
- ),
8196
+ ) }),
8655
8197
  /* @__PURE__ */ jsx(
8656
8198
  Button,
8657
8199
  {
@@ -8688,6 +8230,7 @@ var Assessment = React13.forwardRef(
8688
8230
  showPlan = true,
8689
8231
  onShowPlanChange,
8690
8232
  onAction,
8233
+ onRemoveAssessment,
8691
8234
  onAddOrder,
8692
8235
  onAddAssessment,
8693
8236
  onLinkOrder,
@@ -8704,6 +8247,7 @@ var Assessment = React13.forwardRef(
8704
8247
  "data-testid": dataTestId,
8705
8248
  ...props
8706
8249
  }, ref) => {
8250
+ const instanceId = React13.useId();
8707
8251
  const [addingFor, setAddingFor] = React13.useState(null);
8708
8252
  const [addMode, setAddMode] = React13.useState(
8709
8253
  defaultAddMode
@@ -8904,18 +8448,15 @@ var Assessment = React13.forwardRef(
8904
8448
  children: [
8905
8449
  title !== null && /* @__PURE__ */ jsxs(CardHeader, { className: "border-border bg-muted/50 flex flex-row items-center justify-between border-b px-4 py-3", children: [
8906
8450
  /* @__PURE__ */ jsx("h3", { className: "text-foreground text-sm font-semibold tracking-wide uppercase", children: title }),
8907
- onShowPlanChange && /* @__PURE__ */ jsxs("label", { className: "text-muted-foreground flex items-center gap-1.5 text-xs font-medium", children: [
8908
- /* @__PURE__ */ jsx(
8909
- "input",
8910
- {
8911
- type: "checkbox",
8912
- checked: showPlan,
8913
- onChange: (e) => onShowPlanChange(e.target.checked),
8914
- className: "accent-primary-600 h-3.5 w-3.5"
8915
- }
8916
- ),
8917
- "Show plan"
8918
- ] })
8451
+ onShowPlanChange && /* @__PURE__ */ jsx(
8452
+ Checkbox,
8453
+ {
8454
+ size: "sm",
8455
+ checked: showPlan,
8456
+ onChange: (e) => onShowPlanChange(e.target.checked),
8457
+ label: "Show plan"
8458
+ }
8459
+ )
8919
8460
  ] }),
8920
8461
  /* @__PURE__ */ jsxs(CardContent, { className: "space-y-4 px-4 py-4", children: [
8921
8462
  items.length === 0 && /* @__PURE__ */ jsx("p", { className: "text-muted-foreground text-sm", children: "No problems assessed this visit." }),
@@ -8927,6 +8468,7 @@ var Assessment = React13.forwardRef(
8927
8468
  );
8928
8469
  const bp = blockProps(item.concernId);
8929
8470
  const formOpen = addingFor === item.concernId;
8471
+ const addOrderFormId = `${instanceId}-add-order-${item.concernId}`;
8930
8472
  return /* @__PURE__ */ jsxs(
8931
8473
  "li",
8932
8474
  {
@@ -8967,36 +8509,62 @@ var Assessment = React13.forwardRef(
8967
8509
  /* @__PURE__ */ jsx("span", { className: "text-foreground font-medium", children: assertion.text }),
8968
8510
  assertion.verificationStatus !== "confirmed" && /* @__PURE__ */ jsx(Badge, { variant: "warning", size: "sm", children: assertion.verificationStatus }),
8969
8511
  /* @__PURE__ */ jsx(CodingChips, { coding: assertion.coding }),
8970
- !readOnly && /* @__PURE__ */ jsx(
8512
+ !readOnly && (onAction || onAddOrder || onRemoveAssessment) && /* @__PURE__ */ jsxs(
8971
8513
  RowActionToolbar,
8972
8514
  {
8973
8515
  label: `Actions for ${assertion.text}`,
8974
8516
  align: "top",
8975
- children: Object.keys(ACTION_META2).map(
8976
- (action) => {
8977
- const meta = ACTION_META2[action];
8978
- if (action === "add-order" && !onAddOrder && !onAction)
8979
- return null;
8980
- return /* @__PURE__ */ jsx(
8981
- RowIconButton,
8982
- {
8983
- label: meta.label,
8984
- icon: meta.icon,
8985
- size: "sm",
8986
- onClick: () => {
8987
- if (action === "add-order" && onAddOrder) {
8988
- setAddingFor(
8989
- (prev) => prev === item.concernId ? null : item.concernId
8990
- );
8991
- } else {
8992
- onAction?.(item, action);
8517
+ className: cn(
8518
+ "pointer-fine:group-has-[[data-order-id]:hover]:pointer-events-none",
8519
+ "pointer-fine:group-has-[[data-order-id]:hover]:opacity-0",
8520
+ "pointer-fine:group-has-[[data-order-id]:focus-within]:pointer-events-none",
8521
+ "pointer-fine:group-has-[[data-order-id]:focus-within]:opacity-0"
8522
+ ),
8523
+ children: [
8524
+ Object.keys(ACTION_META2).map(
8525
+ (action) => {
8526
+ const meta = ACTION_META2[action];
8527
+ if (action !== "add-order" && !onAction)
8528
+ return null;
8529
+ if (action === "add-order" && !onAddOrder && !onAction)
8530
+ return null;
8531
+ return /* @__PURE__ */ jsx(
8532
+ RowIconButton,
8533
+ {
8534
+ label: meta.label,
8535
+ icon: meta.icon,
8536
+ size: "sm",
8537
+ expanded: action === "add-order" && onAddOrder ? addingFor === item.concernId : void 0,
8538
+ controls: action === "add-order" && onAddOrder ? addOrderFormId : void 0,
8539
+ onClick: () => {
8540
+ if (action === "add-order" && onAddOrder) {
8541
+ setAddingFor(
8542
+ (prev) => prev === item.concernId ? null : item.concernId
8543
+ );
8544
+ } else {
8545
+ onAction?.(item, action);
8546
+ }
8993
8547
  }
8994
- }
8995
- },
8996
- action
8997
- );
8998
- }
8999
- )
8548
+ },
8549
+ action
8550
+ );
8551
+ }
8552
+ ),
8553
+ onRemoveAssessment && /* @__PURE__ */ jsx(
8554
+ RowIconButton,
8555
+ {
8556
+ label: `Remove ${assertion.text} from assessment`,
8557
+ icon: Trash2,
8558
+ size: "sm",
8559
+ onClick: () => {
8560
+ onRemoveAssessment(item);
8561
+ setAnnouncement(
8562
+ `${assertion.text} removed from assessment`
8563
+ );
8564
+ }
8565
+ }
8566
+ )
8567
+ ]
9000
8568
  }
9001
8569
  )
9002
8570
  ]
@@ -9022,8 +8590,15 @@ var Assessment = React13.forwardRef(
9022
8590
  !readOnly && onAddOrder && addingFor === item.concernId && /* @__PURE__ */ jsx(
9023
8591
  AddOrderForm,
9024
8592
  {
8593
+ id: addOrderFormId,
9025
8594
  problemText: assertion.text,
9026
- onSubmit: (order) => onAddOrder(item, order),
8595
+ onSubmit: (order) => {
8596
+ onAddOrder(item, order);
8597
+ setAnnouncement(
8598
+ `${order.display} added to ${assertion.text}`
8599
+ );
8600
+ setAddingFor(null);
8601
+ },
9027
8602
  onCancel: () => setAddingFor(null),
9028
8603
  renderSearch: effectiveRenderOrderSearch
9029
8604
  }
@@ -12499,599 +12074,6 @@ var CaseManagementHeader = React13.forwardRef(
12499
12074
  }
12500
12075
  );
12501
12076
  CaseManagementHeader.displayName = "CaseManagementHeader";
12502
- var iconButtonClasses = cn(
12503
- "flex h-8 w-8 shrink-0 items-center justify-center rounded-lg",
12504
- "text-neutral-500 dark:text-neutral-400",
12505
- "transition-colors duration-150",
12506
- "hover:bg-neutral-100 hover:text-neutral-900 dark:hover:bg-neutral-700 dark:hover:text-white",
12507
- "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-500",
12508
- "disabled:pointer-events-none disabled:opacity-40"
12509
- );
12510
- var selectorTriggerClasses = cn(
12511
- "flex min-w-0 items-center gap-1 rounded-md px-2 py-1 text-xs",
12512
- "text-neutral-600 dark:text-neutral-400",
12513
- "transition-colors duration-150",
12514
- "hover:bg-neutral-100 hover:text-neutral-900 dark:hover:bg-neutral-700 dark:hover:text-white",
12515
- "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-500",
12516
- "disabled:pointer-events-none disabled:opacity-40"
12517
- );
12518
- var MAX_INPUT_HEIGHT = 160;
12519
- var ChatComposer = React13.forwardRef(function ChatComposer2({
12520
- onSend,
12521
- value: controlledValue,
12522
- onValueChange,
12523
- placeholder = "Type a message\u2026",
12524
- disabled = false,
12525
- isSending = false,
12526
- autoFocus = false,
12527
- maxLength,
12528
- showCharacterCount = false,
12529
- canSendWhenEmpty = false,
12530
- maxHeight = MAX_INPUT_HEIGHT,
12531
- textareaProps,
12532
- addMenuItems,
12533
- allowAttachments = true,
12534
- acceptedFileTypes,
12535
- maxFileSize,
12536
- maxAttachments = 10,
12537
- mentionOptions,
12538
- showMic = false,
12539
- onMicClick,
12540
- micSlot,
12541
- micBehavior = "always",
12542
- isStreaming = false,
12543
- onStop,
12544
- showAgentSelector = false,
12545
- agents = [],
12546
- selectedAgent = null,
12547
- onAgentChange,
12548
- showModelSelector = false,
12549
- modelSelectorProps,
12550
- readOnly = false,
12551
- readOnlyMessage = "You have read-only access and cannot send messages.",
12552
- onError,
12553
- attachmentLimitLabel,
12554
- sendFailedLabel = "Failed to send message",
12555
- sendingLabel = "Sending message\u2026",
12556
- inputLabel = "Message input",
12557
- addMenuLabel = "Add to message",
12558
- attachFilesLabel = "Attach files",
12559
- micLabel = "Start voice input",
12560
- sendLabel = "Send message",
12561
- stopLabel = "Stop generating",
12562
- agentSelectorLabel = "Select agent",
12563
- mentionListLabel = "Mention",
12564
- dropFilesLabel = "Drop files here",
12565
- className
12566
- }, ref) {
12567
- const [internalValue, setInternalValue] = React13.useState("");
12568
- const isControlled = controlledValue !== void 0;
12569
- const value = isControlled ? controlledValue : internalValue;
12570
- const [attachments, setAttachments] = React13.useState([]);
12571
- const attachmentsRef = React13.useRef(attachments);
12572
- attachmentsRef.current = attachments;
12573
- const textareaRef = React13.useRef(null);
12574
- const fileInputRef = React13.useRef(null);
12575
- const [addMenuOpen, setAddMenuOpen] = React13.useState(false);
12576
- const [agentMenuOpen, setAgentMenuOpen] = React13.useState(false);
12577
- const hasText = value.trim().length > 0;
12578
- const hasContent = hasText || attachments.length > 0;
12579
- const isOverLimit = maxLength !== void 0 && value.length > maxLength;
12580
- const canSend = (hasContent || canSendWhenEmpty) && onSend !== void 0 && !disabled && !isSending && !isStreaming && !isOverLimit;
12581
- const setValue = React13.useCallback(
12582
- (next) => {
12583
- if (!isControlled) setInternalValue(next);
12584
- onValueChange?.(next);
12585
- },
12586
- [isControlled, onValueChange]
12587
- );
12588
- const mention = useMentionAutocomplete({
12589
- options: mentionOptions,
12590
- value,
12591
- setValue,
12592
- textareaRef
12593
- });
12594
- const resizeTextarea = React13.useCallback(() => {
12595
- const textarea = textareaRef.current;
12596
- if (!textarea) return;
12597
- textarea.style.height = "auto";
12598
- if (textarea.scrollHeight === 0) return;
12599
- textarea.style.height = `${textarea.scrollHeight}px`;
12600
- }, []);
12601
- React13.useLayoutEffect(resizeTextarea, [resizeTextarea, value]);
12602
- React13.useEffect(() => {
12603
- const textarea = textareaRef.current;
12604
- if (!textarea || typeof ResizeObserver === "undefined") return;
12605
- let frame = 0;
12606
- const observer = new ResizeObserver(() => {
12607
- cancelAnimationFrame(frame);
12608
- frame = requestAnimationFrame(resizeTextarea);
12609
- });
12610
- observer.observe(textarea);
12611
- return () => {
12612
- cancelAnimationFrame(frame);
12613
- observer.disconnect();
12614
- };
12615
- }, [resizeTextarea]);
12616
- const addFiles = React13.useCallback(
12617
- (files) => {
12618
- if (!allowAttachments || files.length === 0) return;
12619
- const limitMessage = attachmentLimitLabel ?? `Attachment limit reached (max ${maxAttachments})`;
12620
- const room = maxAttachments - attachmentsRef.current.length;
12621
- if (files.length > room) {
12622
- onError?.(limitMessage, { reason: "attachment-limit" });
12623
- if (room <= 0) return;
12624
- }
12625
- const staged = [];
12626
- for (const file of files.slice(0, Math.max(room, 0))) {
12627
- const typeCheck = validateFile(file, acceptedFileTypes, void 0);
12628
- if (!typeCheck.valid) {
12629
- onError?.(`${file.name}: ${typeCheck.error}`, {
12630
- reason: "file-type",
12631
- file
12632
- });
12633
- continue;
12634
- }
12635
- const sizeCheck = validateFile(file, void 0, maxFileSize);
12636
- if (!sizeCheck.valid) {
12637
- onError?.(`${file.name}: ${sizeCheck.error}`, {
12638
- reason: "file-size",
12639
- file
12640
- });
12641
- continue;
12642
- }
12643
- const type = getFileType(file.type);
12644
- staged.push({
12645
- id: generateAttachmentId(),
12646
- file,
12647
- type,
12648
- previewUrl: type === "image" || type === "video" ? URL.createObjectURL(file) : void 0
12649
- });
12650
- }
12651
- if (staged.length > 0) {
12652
- attachmentsRef.current = [...attachmentsRef.current, ...staged];
12653
- setAttachments((current) => [...current, ...staged]);
12654
- }
12655
- },
12656
- [
12657
- allowAttachments,
12658
- maxAttachments,
12659
- acceptedFileTypes,
12660
- maxFileSize,
12661
- onError,
12662
- attachmentLimitLabel
12663
- ]
12664
- );
12665
- const removeAttachment = React13.useCallback((id) => {
12666
- const target = attachmentsRef.current.find(
12667
- (attachment) => attachment.id === id
12668
- );
12669
- if (target?.previewUrl) URL.revokeObjectURL(target.previewUrl);
12670
- attachmentsRef.current = attachmentsRef.current.filter(
12671
- (attachment) => attachment.id !== id
12672
- );
12673
- setAttachments(
12674
- (current) => current.filter((attachment) => attachment.id !== id)
12675
- );
12676
- }, []);
12677
- React13.useEffect(() => {
12678
- return () => {
12679
- for (const attachment of attachmentsRef.current) {
12680
- if (attachment.previewUrl) URL.revokeObjectURL(attachment.previewUrl);
12681
- }
12682
- };
12683
- }, []);
12684
- const handleFileInputChange = (event) => {
12685
- const files = Array.from(event.target.files ?? []);
12686
- addFiles(files);
12687
- event.target.value = "";
12688
- };
12689
- const handlePaste = (event) => {
12690
- if (!allowAttachments) return;
12691
- const files = Array.from(event.clipboardData.files);
12692
- if (files.length > 0) {
12693
- event.preventDefault();
12694
- addFiles(files);
12695
- }
12696
- };
12697
- React13.useImperativeHandle(
12698
- ref,
12699
- () => ({
12700
- addFiles,
12701
- focus: () => textareaRef.current?.focus(),
12702
- getTextarea: () => textareaRef.current
12703
- }),
12704
- [addFiles]
12705
- );
12706
- const handleSend = () => {
12707
- if (!canSend || !onSend) return;
12708
- const message = {
12709
- content: value.trim(),
12710
- attachments: attachments.map((attachment) => attachment.file)
12711
- };
12712
- for (const attachment of attachments) {
12713
- if (attachment.previewUrl) URL.revokeObjectURL(attachment.previewUrl);
12714
- }
12715
- attachmentsRef.current = [];
12716
- setAttachments([]);
12717
- setValue("");
12718
- try {
12719
- Promise.resolve(onSend(message)).catch(() => {
12720
- onError?.(sendFailedLabel, { reason: "send-failed" });
12721
- });
12722
- } catch {
12723
- onError?.(sendFailedLabel, { reason: "send-failed" });
12724
- }
12725
- textareaRef.current?.focus();
12726
- };
12727
- const handleKeyDown = (event) => {
12728
- if (mention.handleKeyDown(event)) return;
12729
- if (event.key === "Enter" && !event.shiftKey) {
12730
- event.preventDefault();
12731
- handleSend();
12732
- }
12733
- };
12734
- if (readOnly) {
12735
- return /* @__PURE__ */ jsxs(
12736
- "div",
12737
- {
12738
- "data-slot": "chat-composer",
12739
- role: "status",
12740
- className: cn(
12741
- "flex items-center gap-2 rounded-xl border px-4 py-3 text-sm",
12742
- "border-amber-300 bg-amber-50 text-amber-900",
12743
- "dark:border-amber-700 dark:bg-amber-950 dark:text-amber-200",
12744
- className
12745
- ),
12746
- children: [
12747
- /* @__PURE__ */ jsx(AlertTriangle, { className: "h-4 w-4 shrink-0", "aria-hidden": "true" }),
12748
- /* @__PURE__ */ jsx("span", { "data-slot": "chat-composer-readonly", children: readOnlyMessage })
12749
- ]
12750
- }
12751
- );
12752
- }
12753
- const showAddMenu = allowAttachments || addMenuItems && addMenuItems.length > 0;
12754
- const micVisible = (showMic || onMicClick !== void 0 || micSlot !== void 0) && (micBehavior === "always" || !hasContent);
12755
- const showSelectorRow = showAgentSelector || showModelSelector;
12756
- const selectedAgentOption = agents.find((agent) => agent.id === selectedAgent) ?? null;
12757
- const cells = {
12758
- input: "col-span-3 col-start-1 row-start-1 px-1 pt-1 md:col-span-1 md:col-start-2 md:self-end md:px-0 md:py-1.5",
12759
- textarea: "px-2 pt-2 pb-1 md:py-1.5",
12760
- add: "col-start-1 row-start-2 pb-2 ps-2 md:row-start-1 md:self-end md:p-1.5 md:pe-0.5",
12761
- actions: "col-start-3 row-start-2 flex items-center gap-1 pb-2 pe-2 md:row-start-1 md:self-end md:gap-0.5 md:p-1.5 md:ps-0.5"
12762
- };
12763
- const composerCard = /* @__PURE__ */ jsxs(Fragment, { children: [
12764
- attachments.length > 0 && /* @__PURE__ */ jsx(
12765
- "div",
12766
- {
12767
- "data-slot": "chat-composer-attachments",
12768
- className: "flex flex-wrap gap-2 px-3 pt-3",
12769
- children: attachments.map((attachment) => /* @__PURE__ */ jsx(
12770
- AttachmentPreviewItem,
12771
- {
12772
- attachment: { ...attachment, state: "pending" },
12773
- onRemove: () => removeAttachment(attachment.id),
12774
- disabled
12775
- },
12776
- attachment.id
12777
- ))
12778
- }
12779
- ),
12780
- /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-[auto_minmax(0,1fr)_auto]", children: [
12781
- /* @__PURE__ */ jsxs("div", { className: cells.input, ref: mention.anchorRef, children: [
12782
- /* @__PURE__ */ jsx(
12783
- MentionMenu,
12784
- {
12785
- mention,
12786
- label: mentionListLabel,
12787
- dataSlot: "chat-composer-mention-list"
12788
- }
12789
- ),
12790
- /* @__PURE__ */ jsx(
12791
- "textarea",
12792
- {
12793
- ...textareaProps,
12794
- ref: textareaRef,
12795
- "data-slot": "chat-composer-input",
12796
- value,
12797
- onChange: (event) => {
12798
- textareaProps?.onChange?.(event);
12799
- setValue(event.target.value);
12800
- mention.sync(
12801
- event.target.value,
12802
- event.target.selectionStart ?? event.target.value.length
12803
- );
12804
- },
12805
- onKeyDown: (event) => {
12806
- textareaProps?.onKeyDown?.(event);
12807
- if (event.defaultPrevented) return;
12808
- handleKeyDown(event);
12809
- },
12810
- onClick: (event) => {
12811
- textareaProps?.onClick?.(event);
12812
- if (event.defaultPrevented) return;
12813
- const el = event.currentTarget;
12814
- mention.sync(el.value, el.selectionStart ?? el.value.length);
12815
- },
12816
- onPaste: (event) => {
12817
- textareaProps?.onPaste?.(event);
12818
- if (event.defaultPrevented) return;
12819
- handlePaste(event);
12820
- },
12821
- placeholder,
12822
- disabled,
12823
- autoFocus,
12824
- rows: 1,
12825
- "aria-label": inputLabel,
12826
- ...mention.inputProps,
12827
- style: {
12828
- ...textareaProps?.style,
12829
- maxHeight: typeof maxHeight === "number" ? `${maxHeight}px` : maxHeight
12830
- },
12831
- className: cn(
12832
- "block w-full resize-none bg-transparent",
12833
- "rounded-lg text-sm",
12834
- cells.textarea,
12835
- "text-neutral-900 placeholder:text-neutral-400 dark:text-white dark:placeholder:text-neutral-500",
12836
- // Ring the input itself on focus rather than the whole shell.
12837
- "focus:ring-primary-500 focus:ring-1 focus:outline-none",
12838
- "disabled:cursor-not-allowed",
12839
- textareaProps?.className
12840
- )
12841
- }
12842
- )
12843
- ] }),
12844
- showAddMenu && /* @__PURE__ */ jsx("div", { className: cells.add, children: /* @__PURE__ */ jsxs(
12845
- Dropdown,
12846
- {
12847
- placement: "top-start",
12848
- open: addMenuOpen,
12849
- onOpenChange: setAddMenuOpen,
12850
- trigger: /* @__PURE__ */ jsx(
12851
- "button",
12852
- {
12853
- type: "button",
12854
- "data-slot": "chat-composer-add-button",
12855
- "aria-label": addMenuLabel,
12856
- disabled,
12857
- className: iconButtonClasses,
12858
- children: /* @__PURE__ */ jsx(Plus, { className: "h-4 w-4", "aria-hidden": "true" })
12859
- }
12860
- ),
12861
- children: [
12862
- allowAttachments && /* @__PURE__ */ jsx(
12863
- DropdownItem,
12864
- {
12865
- icon: /* @__PURE__ */ jsx(Paperclip, { className: "h-4 w-4", "aria-hidden": "true" }),
12866
- onClick: () => {
12867
- setAddMenuOpen(false);
12868
- fileInputRef.current?.click();
12869
- },
12870
- children: attachFilesLabel
12871
- }
12872
- ),
12873
- allowAttachments && addMenuItems && addMenuItems.length > 0 && /* @__PURE__ */ jsx(DropdownSeparator, {}),
12874
- addMenuItems?.map((item) => /* @__PURE__ */ jsx(
12875
- DropdownItem,
12876
- {
12877
- icon: item.icon,
12878
- disabled: item.disabled,
12879
- variant: item.variant,
12880
- checked: item.checked,
12881
- onClick: () => {
12882
- setAddMenuOpen(false);
12883
- item.onSelect?.();
12884
- },
12885
- children: /* @__PURE__ */ jsx("span", { className: "min-w-0 truncate", children: item.label })
12886
- },
12887
- item.id
12888
- ))
12889
- ]
12890
- }
12891
- ) }),
12892
- allowAttachments && /* @__PURE__ */ jsx(
12893
- "input",
12894
- {
12895
- ref: fileInputRef,
12896
- type: "file",
12897
- multiple: true,
12898
- accept: acceptedFileTypes?.join(","),
12899
- onChange: handleFileInputChange,
12900
- className: "hidden",
12901
- "aria-hidden": "true",
12902
- tabIndex: -1
12903
- }
12904
- ),
12905
- /* @__PURE__ */ jsxs("div", { className: cells.actions, children: [
12906
- showCharacterCount && maxLength !== void 0 && /* @__PURE__ */ jsxs(
12907
- "span",
12908
- {
12909
- "data-slot": "chat-composer-char-count",
12910
- "aria-live": "polite",
12911
- className: cn(
12912
- "pe-1 text-xs tabular-nums",
12913
- isOverLimit ? "font-medium text-red-700 dark:text-red-400" : "text-neutral-500 dark:text-neutral-400"
12914
- ),
12915
- children: [
12916
- value.length,
12917
- "/",
12918
- maxLength
12919
- ]
12920
- }
12921
- ),
12922
- micVisible && (micSlot != null ? (
12923
- // Normalize slot content (e.g. a RecordButton) to the 32px
12924
- // control row: taller content overflow-centers instead of
12925
- // inflating the pill and pushing the other cells apart. A div
12926
- // so block-level slot content stays valid HTML.
12927
- /* @__PURE__ */ jsx(
12928
- "div",
12929
- {
12930
- "data-slot": "chat-composer-mic-slot",
12931
- className: "flex h-8 shrink-0 items-center",
12932
- children: micSlot
12933
- }
12934
- )
12935
- ) : /* @__PURE__ */ jsx(
12936
- "button",
12937
- {
12938
- type: "button",
12939
- "data-slot": "chat-composer-mic-button",
12940
- "aria-label": micLabel,
12941
- disabled,
12942
- onClick: onMicClick,
12943
- className: iconButtonClasses,
12944
- children: /* @__PURE__ */ jsx(Mic, { className: "h-4 w-4", "aria-hidden": "true" })
12945
- }
12946
- )),
12947
- isStreaming && onStop ? /* @__PURE__ */ jsx(
12948
- "button",
12949
- {
12950
- type: "button",
12951
- "data-slot": "chat-composer-stop-button",
12952
- "aria-label": stopLabel,
12953
- disabled,
12954
- onClick: onStop,
12955
- className: cn(
12956
- iconButtonClasses,
12957
- "text-neutral-700 dark:text-neutral-200"
12958
- ),
12959
- children: /* @__PURE__ */ jsx(
12960
- Square,
12961
- {
12962
- className: "h-3.5 w-3.5 fill-current",
12963
- "aria-hidden": "true"
12964
- }
12965
- )
12966
- }
12967
- ) : /* @__PURE__ */ jsx(
12968
- "button",
12969
- {
12970
- type: "button",
12971
- "data-slot": "chat-composer-send-button",
12972
- "aria-label": isSending ? sendingLabel : sendLabel,
12973
- "aria-busy": isSending || void 0,
12974
- disabled: !canSend,
12975
- onClick: handleSend,
12976
- className: cn(
12977
- iconButtonClasses,
12978
- canSend && "bg-primary-800 hover:bg-primary-700 dark:bg-primary-600 dark:hover:bg-primary-500 text-white hover:text-white dark:hover:text-white"
12979
- ),
12980
- children: isSending ? /* @__PURE__ */ jsx(
12981
- Loader2,
12982
- {
12983
- className: "h-4 w-4 animate-spin",
12984
- "aria-hidden": "true"
12985
- }
12986
- ) : /* @__PURE__ */ jsx(ArrowUp, { className: "h-4 w-4", "aria-hidden": "true" })
12987
- }
12988
- )
12989
- ] })
12990
- ] })
12991
- ] });
12992
- const selectorsRow = showSelectorRow && /* @__PURE__ */ jsxs(
12993
- "div",
12994
- {
12995
- "data-slot": "chat-composer-selectors",
12996
- className: "flex items-center justify-between gap-2 px-2 pt-1",
12997
- children: [
12998
- showAgentSelector ? /* @__PURE__ */ jsx(
12999
- Dropdown,
13000
- {
13001
- placement: "top-start",
13002
- open: agentMenuOpen,
13003
- onOpenChange: setAgentMenuOpen,
13004
- trigger: /* @__PURE__ */ jsxs(
13005
- "button",
13006
- {
13007
- type: "button",
13008
- "data-slot": "chat-composer-agent-trigger",
13009
- "aria-label": selectedAgentOption ? `${agentSelectorLabel}: ${selectedAgentOption.label}` : agentSelectorLabel,
13010
- disabled,
13011
- className: selectorTriggerClasses,
13012
- children: [
13013
- selectedAgentOption?.icon ?? /* @__PURE__ */ jsx(Bot, { className: "h-3.5 w-3.5", "aria-hidden": "true" }),
13014
- /* @__PURE__ */ jsx("span", { className: "min-w-0 truncate", children: selectedAgentOption?.label ?? agentSelectorLabel }),
13015
- /* @__PURE__ */ jsx(ChevronUp, { className: "h-3 w-3 shrink-0", "aria-hidden": "true" })
13016
- ]
13017
- }
13018
- ),
13019
- children: agents.map((agent) => /* @__PURE__ */ jsx(
13020
- DropdownItem,
13021
- {
13022
- icon: agent.icon,
13023
- role: "menuitemradio",
13024
- "aria-checked": agent.id === selectedAgent,
13025
- onClick: () => {
13026
- setAgentMenuOpen(false);
13027
- onAgentChange?.(agent.id);
13028
- },
13029
- children: /* @__PURE__ */ jsxs("span", { className: "flex w-full items-center justify-between gap-2", children: [
13030
- /* @__PURE__ */ jsxs("span", { className: "min-w-0", children: [
13031
- /* @__PURE__ */ jsx("span", { className: "block truncate", children: agent.label }),
13032
- agent.description && /* @__PURE__ */ jsx("span", { className: "block truncate text-xs text-neutral-500 dark:text-neutral-400", children: agent.description })
13033
- ] }),
13034
- agent.id === selectedAgent && /* @__PURE__ */ jsx(
13035
- Check,
13036
- {
13037
- className: "text-primary-600 dark:text-primary-400 h-4 w-4 shrink-0",
13038
- "aria-hidden": "true"
13039
- }
13040
- )
13041
- ] })
13042
- },
13043
- agent.id
13044
- ))
13045
- }
13046
- ) : /* @__PURE__ */ jsx("span", { "aria-hidden": "true" }),
13047
- showModelSelector && modelSelectorProps && /* @__PURE__ */ jsx(
13048
- ComposerModelSelector,
13049
- {
13050
- variant: "ghost",
13051
- ...modelSelectorProps,
13052
- disabled: disabled || modelSelectorProps.disabled
13053
- }
13054
- )
13055
- ]
13056
- }
13057
- );
13058
- const card = /* @__PURE__ */ jsx(
13059
- "div",
13060
- {
13061
- "data-slot": "chat-composer-card",
13062
- className: cn(
13063
- "rounded-2xl border border-neutral-200 bg-white shadow-sm",
13064
- "dark:border-[#2e2e30] dark:bg-[#1c1c1e]"
13065
- ),
13066
- children: composerCard
13067
- }
13068
- );
13069
- return /* @__PURE__ */ jsxs(
13070
- "div",
13071
- {
13072
- "data-slot": "chat-composer",
13073
- className: cn(
13074
- "flex w-full flex-col",
13075
- disabled && "opacity-60",
13076
- className
13077
- ),
13078
- children: [
13079
- allowAttachments ? /* @__PURE__ */ jsx(
13080
- DragDropZone,
13081
- {
13082
- onFilesDropped: addFiles,
13083
- maxFiles: Number.MAX_SAFE_INTEGER,
13084
- disabled,
13085
- overlayLabel: dropFilesLabel,
13086
- children: card
13087
- }
13088
- ) : card,
13089
- selectorsRow
13090
- ]
13091
- }
13092
- );
13093
- });
13094
- ChatComposer.displayName = "ChatComposer";
13095
12077
  var MODE_META = {
13096
12078
  add: { title: "Add problem", changeType: void 0 },
13097
12079
  observe: { title: "Progress observation", changeType: void 0 },
@@ -13114,13 +12096,24 @@ var RELATIONSHIP_OPTIONS = [
13114
12096
  ];
13115
12097
  var SEVERITIES = ["mild", "moderate", "severe"];
13116
12098
  var CONFIDENCES = ["low", "medium", "high"];
13117
- function systemForCodetype(codetype) {
12099
+ function normalizeConditionCodingSystem(codetype) {
13118
12100
  const ct = codetype.toUpperCase().replace(/[^A-Z0-9]/g, "");
13119
12101
  if (ct === "ICD10" || ct === "ICD10CM") return "ICD-10-CM";
13120
12102
  if (ct === "ICD11") return "ICD-11";
13121
- if (ct === "SNOMED" || ct === "SNOMEDCT") return "SNOMED";
12103
+ if (ct === "SNOMED" || ct === "SNOMEDCT" || ct === "SNOMEDUS") {
12104
+ return "SNOMED";
12105
+ }
13122
12106
  return codetype;
13123
12107
  }
12108
+ function withSinglePrimary(coding) {
12109
+ if (coding.length === 0) return coding;
12110
+ const primaryIndex = coding.findIndex((entry) => entry.primary);
12111
+ const selectedIndex = primaryIndex >= 0 ? primaryIndex : 0;
12112
+ return coding.map((entry, index) => ({
12113
+ ...entry,
12114
+ primary: index === selectedIndex
12115
+ }));
12116
+ }
13124
12117
  function contextConditionCodeSearch(ctx) {
13125
12118
  const ContextConditionCodeSearch = ({
13126
12119
  placeholder,
@@ -13174,7 +12167,7 @@ function FieldFlag({
13174
12167
  ),
13175
12168
  className: cn(
13176
12169
  "rounded-full border px-2 py-0.5 text-[11px] font-medium transition-colors",
13177
- unknown ? "border-amber-400 bg-amber-100 text-amber-900 dark:border-amber-600 dark:bg-amber-950 dark:text-amber-200" : "border-border text-muted-foreground hover:text-foreground"
12170
+ unknown ? "border-warning/50 bg-warning/10 text-warning-800 dark:text-warning-200" : "border-border text-muted-foreground hover:text-foreground"
13178
12171
  ),
13179
12172
  children: "Unknown"
13180
12173
  }
@@ -13247,13 +12240,14 @@ function ConditionEditor({
13247
12240
  React13.useEffect(() => {
13248
12241
  if (!open) return;
13249
12242
  setText(prior?.text ?? "");
13250
- setCoding(prior?.coding ?? []);
12243
+ setCoding(withSinglePrimary(prior?.coding ?? []));
13251
12244
  setVerification(
13252
12245
  mode === "add" ? "unconfirmed" : prior?.verificationStatus ?? "confirmed"
13253
12246
  );
13254
12247
  setSeverity(prior?.severity);
13255
- setOnsetDate(prior?.onset?.date ?? "");
13256
- setOnsetFuzzy(prior?.onset?.fuzzy ?? "");
12248
+ const priorOnsetDate = prior?.onset?.date;
12249
+ setOnsetDate(priorOnsetDate ? dateToDisplayFormat(priorOnsetDate) : "");
12250
+ setOnsetFuzzy(priorOnsetDate ? "" : prior?.onset?.fuzzy ?? "");
13257
12251
  setNote("");
13258
12252
  setProgression(false);
13259
12253
  setFields(prior?.uncertainty?.fields ?? {});
@@ -13269,18 +12263,14 @@ function ConditionEditor({
13269
12263
  });
13270
12264
  const updateCoding = (i, patch) => setCoding((prev) => prev.map((c, j) => j === i ? { ...c, ...patch } : c));
13271
12265
  const codingUnknown = fields.coding?.known === false;
12266
+ const hasInvalidOnsetDate = fields.onset?.known !== false && Boolean(onsetDate) && !isValidDate(onsetDate);
13272
12267
  const handleCodePick = (pick) => {
13273
- const system = systemForCodetype(pick.codetype);
12268
+ const system = normalizeConditionCodingSystem(pick.codetype);
13274
12269
  setCoding(
13275
- (prev) => prev.some((c) => c.system === system && c.code === pick.fullcode) ? prev : [
12270
+ (prev) => prev.some((c) => c.system === system && c.code === pick.fullcode) ? prev : withSinglePrimary([
13276
12271
  ...prev,
13277
- {
13278
- system,
13279
- code: pick.fullcode,
13280
- display: pick.label,
13281
- primary: prev.length === 0
13282
- }
13283
- ]
12272
+ { system, code: pick.fullcode, display: pick.label }
12273
+ ])
13284
12274
  );
13285
12275
  setText((prev) => prev || pick.label);
13286
12276
  setFields((prev) => {
@@ -13303,7 +12293,7 @@ function ConditionEditor({
13303
12293
  onOpenChange(false);
13304
12294
  return;
13305
12295
  }
13306
- if (!text.trim()) return;
12296
+ if (!text.trim() || hasInvalidOnsetDate) return;
13307
12297
  if (observation.trim()) onAddObservation?.(observation.trim());
13308
12298
  const uncertainty = Object.keys(fields).length > 0 ? { fields } : void 0;
13309
12299
  onSave?.({
@@ -13312,41 +12302,46 @@ function ConditionEditor({
13312
12302
  // checks downstream. A field marked explicitly unknown must not carry a
13313
12303
  // value (e.g. one seeded from the prior assertion): value + "unknown"
13314
12304
  // would be contradictory, so unknown wins and the value is dropped.
13315
- coding: fields.coding?.known === false ? [] : coding.filter((c) => c.code.trim()).map((c) => ({
13316
- ...c,
13317
- code: c.code.trim(),
13318
- display: c.display?.trim() || void 0,
13319
- mappedFrom: c.mappedFrom?.trim() || void 0
13320
- })),
12305
+ coding: fields.coding?.known === false ? [] : withSinglePrimary(
12306
+ coding.filter((c) => c.code.trim()).map((c) => ({
12307
+ ...c,
12308
+ code: c.code.trim(),
12309
+ display: c.display?.trim() || void 0,
12310
+ mappedFrom: c.mappedFrom?.trim() || void 0
12311
+ }))
12312
+ ),
13321
12313
  verificationStatus: verification,
13322
12314
  changeType: mode === "refine" ? progression ? "progression" : "refinement" : MODE_META[mode].changeType,
13323
12315
  supersedes: prior?.id,
13324
12316
  severity: fields.severity?.known === false ? void 0 : severity,
13325
- onset: fields.onset?.known === false ? void 0 : onsetDate || onsetFuzzy ? { date: onsetDate || void 0, fuzzy: onsetFuzzy || void 0 } : void 0,
12317
+ onset: fields.onset?.known === false ? void 0 : onsetDate || onsetFuzzy ? {
12318
+ date: onsetDate ? displayFormatToDateString(onsetDate) : void 0,
12319
+ fuzzy: onsetFuzzy || void 0
12320
+ } : void 0,
13326
12321
  uncertainty,
13327
12322
  note: note.trim() || void 0
13328
12323
  });
13329
12324
  onOpenChange(false);
13330
12325
  };
13331
- const saveDisabled = mode === "relate" ? !relTarget : mode === "observe" ? !observation.trim() : !text.trim();
12326
+ const saveDisabled = mode === "relate" ? !relTarget : mode === "observe" ? !observation.trim() : !text.trim() || hasInvalidOnsetDate;
13332
12327
  return /* @__PURE__ */ jsxs(
13333
12328
  Modal,
13334
12329
  {
13335
12330
  open,
13336
12331
  onOpenChange,
13337
- size: "lg",
12332
+ size: "2xl",
13338
12333
  className,
13339
12334
  children: [
13340
12335
  /* @__PURE__ */ jsx(ModalHeader, { children: /* @__PURE__ */ jsxs(ModalTitle, { children: [
13341
12336
  MODE_META[mode].title,
13342
12337
  prior ? ` \u2014 ${prior.text}` : ""
13343
12338
  ] }) }),
13344
- /* @__PURE__ */ jsx(ModalBody, { "data-testid": dataTestId, children: /* @__PURE__ */ jsxs("div", { className: "space-y-4", children: [
12339
+ /* @__PURE__ */ jsx(ModalBody, { "data-testid": dataTestId, className: "space-y-5", children: /* @__PURE__ */ jsxs("div", { className: "space-y-5", children: [
13345
12340
  mode === "revise" && /* @__PURE__ */ jsxs(
13346
12341
  "div",
13347
12342
  {
13348
12343
  role: "alert",
13349
- className: "flex items-start gap-2 rounded-md border border-amber-300 bg-amber-50 px-3 py-2 text-sm text-amber-900 dark:border-amber-700 dark:bg-amber-950 dark:text-amber-200",
12344
+ className: "border-warning/30 bg-warning/10 text-warning-800 dark:text-warning-200 flex items-start gap-2 rounded-md border px-3 py-2 text-sm",
13350
12345
  children: [
13351
12346
  /* @__PURE__ */ jsx(AlertTriangle, { size: 16 }),
13352
12347
  /* @__PURE__ */ jsxs("span", { children: [
@@ -13419,21 +12414,19 @@ function ConditionEditor({
13419
12414
  placeholder: "e.g. Type 1 diabetes mellitus with neuropathy"
13420
12415
  }
13421
12416
  ),
13422
- mode === "refine" && /* @__PURE__ */ jsxs("label", { className: "flex items-center gap-2 text-sm", children: [
13423
- /* @__PURE__ */ jsx(
13424
- "input",
13425
- {
13426
- type: "checkbox",
13427
- checked: progression,
13428
- onChange: (e) => setProgression(e.target.checked),
13429
- className: "accent-primary-600 h-4 w-4"
13430
- }
13431
- ),
13432
- "Disease progressed (e.g. new complication) rather than a more specific diagnosis"
13433
- ] }),
13434
- /* @__PURE__ */ jsxs("fieldset", { className: "space-y-2", children: [
13435
- /* @__PURE__ */ jsxs("legend", { className: "flex w-full items-center justify-between text-sm font-medium", children: [
13436
- /* @__PURE__ */ jsxs("span", { className: "flex items-center gap-2", children: [
12417
+ mode === "refine" && /* @__PURE__ */ jsx(
12418
+ Checkbox,
12419
+ {
12420
+ size: "sm",
12421
+ checked: progression,
12422
+ onChange: (e) => setProgression(e.target.checked),
12423
+ label: "Disease progressed (e.g. new complication) rather than a more specific diagnosis"
12424
+ }
12425
+ ),
12426
+ /* @__PURE__ */ jsxs("fieldset", { className: "space-y-3", children: [
12427
+ /* @__PURE__ */ jsx("legend", { className: "sr-only", children: "Coding" }),
12428
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-wrap items-center justify-between gap-2", children: [
12429
+ /* @__PURE__ */ jsxs("span", { className: "flex flex-wrap items-center gap-2 text-sm font-medium", children: [
13437
12430
  "Coding",
13438
12431
  /* @__PURE__ */ jsx(
13439
12432
  FieldFlag,
@@ -13460,82 +12453,136 @@ function ConditionEditor({
13460
12453
  }
13461
12454
  ]),
13462
12455
  leftIcon: /* @__PURE__ */ jsx(Plus, { size: 12 }),
13463
- className: "h-7 text-xs",
12456
+ className: "h-8 shrink-0 text-xs",
13464
12457
  children: "Add code"
13465
12458
  }
13466
12459
  )
13467
12460
  ] }),
13468
- effectiveRenderCodeSearch && !(mode === "add" && !text.trim()) && /* @__PURE__ */ jsx("div", { className: "max-w-md", children: effectiveRenderCodeSearch({
12461
+ effectiveRenderCodeSearch && !(mode === "add" && !text.trim()) && /* @__PURE__ */ jsx("div", { children: effectiveRenderCodeSearch({
13469
12462
  placeholder: "Search codes \u2014 ICD-10-CM / SNOMED\u2026",
13470
12463
  onPick: handleCodePick,
13471
12464
  onFreeText: (t) => setText((prev) => prev || t)
13472
12465
  }) }),
13473
12466
  coding.length === 0 && /* @__PURE__ */ jsx("p", { className: "text-muted-foreground text-xs", children: "Optional \u2014 a name-only problem is valid. Codes can be added any time." }),
13474
- coding.map((c, i) => /* @__PURE__ */ jsxs("div", { className: "flex flex-wrap items-center gap-1.5", children: [
13475
- /* @__PURE__ */ jsx(
13476
- Select,
13477
- {
13478
- "aria-label": `Coding system ${i + 1}`,
13479
- options: CODING_SYSTEMS.map((s) => ({
13480
- value: s,
13481
- label: s
13482
- })),
13483
- value: c.system,
13484
- onValueChange: (v) => updateCoding(i, { system: v }),
13485
- disabled: codingUnknown,
13486
- className: "w-32"
13487
- }
13488
- ),
13489
- /* @__PURE__ */ jsx(
13490
- Input,
13491
- {
13492
- "aria-label": `Code ${i + 1}`,
13493
- value: c.code,
13494
- onChange: (e) => updateCoding(i, { code: e.target.value }),
13495
- placeholder: "Code",
13496
- disabled: codingUnknown,
13497
- className: "w-28 font-mono"
13498
- }
13499
- ),
13500
- /* @__PURE__ */ jsx(
13501
- Input,
13502
- {
13503
- "aria-label": `Display ${i + 1}`,
13504
- value: c.display ?? "",
13505
- onChange: (e) => updateCoding(i, { display: e.target.value }),
13506
- placeholder: "Display",
13507
- disabled: codingUnknown,
13508
- className: "min-w-32 flex-1"
13509
- }
13510
- ),
13511
- /* @__PURE__ */ jsxs("label", { className: "flex items-center gap-1 text-xs", children: [
13512
- /* @__PURE__ */ jsx(
13513
- "input",
13514
- {
13515
- type: "radio",
13516
- name: "primary-coding",
13517
- checked: Boolean(c.primary),
13518
- disabled: codingUnknown,
13519
- onChange: () => setCoding(
13520
- (prev) => prev.map((cc, j) => ({ ...cc, primary: j === i }))
13521
- ),
13522
- className: "accent-primary-600"
13523
- }
12467
+ coding.length > 0 && /* @__PURE__ */ jsxs(
12468
+ "div",
12469
+ {
12470
+ "aria-hidden": "true",
12471
+ "data-slot": "condition-coding-header",
12472
+ className: "text-muted-foreground hidden grid-cols-[minmax(8rem,1.1fr)_minmax(7rem,0.9fr)_minmax(10rem,1.5fr)_5.5rem_2.5rem] items-center gap-2 px-1 text-xs font-medium sm:!grid",
12473
+ children: [
12474
+ /* @__PURE__ */ jsx("span", { children: "System" }),
12475
+ /* @__PURE__ */ jsx("span", { children: "Code" }),
12476
+ /* @__PURE__ */ jsx("span", { children: "Display" }),
12477
+ /* @__PURE__ */ jsx("span", { className: "text-center", children: "Primary code" }),
12478
+ /* @__PURE__ */ jsx("span", { className: "sr-only", children: "Actions" })
12479
+ ]
12480
+ }
12481
+ ),
12482
+ coding.length > 0 && /* @__PURE__ */ jsx(
12483
+ RadioGroup,
12484
+ {
12485
+ name: "primary-coding",
12486
+ label: "Primary display code",
12487
+ value: String(
12488
+ Math.max(
12489
+ 0,
12490
+ coding.findIndex((entry) => entry.primary)
12491
+ )
13524
12492
  ),
13525
- "primary"
13526
- ] }),
13527
- /* @__PURE__ */ jsx(
13528
- Button,
13529
- {
13530
- variant: "ghost",
13531
- size: "icon",
13532
- "aria-label": `Remove code ${i + 1}`,
13533
- onClick: () => setCoding((prev) => prev.filter((_, j) => j !== i)),
13534
- className: "h-7 w-7",
13535
- children: /* @__PURE__ */ jsx(Trash2, { size: 14 })
13536
- }
13537
- )
13538
- ] }, i))
12493
+ onValueChange: (value) => {
12494
+ const selectedIndex = Number(value);
12495
+ setCoding(
12496
+ (prev) => prev.map((entry, index) => ({
12497
+ ...entry,
12498
+ primary: index === selectedIndex
12499
+ }))
12500
+ );
12501
+ },
12502
+ size: "sm",
12503
+ className: "gap-2 [&_[data-slot=radio-group-items]]:gap-2 sm:[&_[data-slot=radio-group-legend]]:sr-only",
12504
+ children: coding.map((c, i) => /* @__PURE__ */ jsxs(
12505
+ "div",
12506
+ {
12507
+ "data-slot": "condition-coding-row",
12508
+ className: "border-border/70 grid grid-cols-1 gap-2 rounded-md border p-2 sm:grid-cols-[minmax(8rem,1.1fr)_minmax(7rem,0.9fr)_minmax(10rem,1.5fr)_5.5rem_2.5rem] sm:items-center sm:border-0 sm:p-0",
12509
+ children: [
12510
+ /* @__PURE__ */ jsxs("div", { className: "space-y-1", children: [
12511
+ /* @__PURE__ */ jsx("span", { className: "text-muted-foreground text-xs sm:hidden", children: "System" }),
12512
+ /* @__PURE__ */ jsx(
12513
+ Select,
12514
+ {
12515
+ "aria-label": `Coding system ${i + 1}`,
12516
+ options: CODING_SYSTEMS.map((s) => ({
12517
+ value: s,
12518
+ label: s
12519
+ })),
12520
+ value: c.system,
12521
+ onValueChange: (v) => updateCoding(i, { system: v }),
12522
+ disabled: codingUnknown
12523
+ }
12524
+ )
12525
+ ] }),
12526
+ /* @__PURE__ */ jsxs("div", { className: "space-y-1", children: [
12527
+ /* @__PURE__ */ jsx("span", { className: "text-muted-foreground text-xs sm:hidden", children: "Code" }),
12528
+ /* @__PURE__ */ jsx(
12529
+ Input,
12530
+ {
12531
+ "aria-label": `Code ${i + 1}`,
12532
+ value: c.code,
12533
+ onChange: (e) => updateCoding(i, { code: e.target.value }),
12534
+ placeholder: "Code",
12535
+ disabled: codingUnknown,
12536
+ className: "font-mono"
12537
+ }
12538
+ )
12539
+ ] }),
12540
+ /* @__PURE__ */ jsxs("div", { className: "space-y-1", children: [
12541
+ /* @__PURE__ */ jsx("span", { className: "text-muted-foreground text-xs sm:hidden", children: "Display" }),
12542
+ /* @__PURE__ */ jsx(
12543
+ Input,
12544
+ {
12545
+ "aria-label": `Display ${i + 1}`,
12546
+ value: c.display ?? "",
12547
+ onChange: (e) => updateCoding(i, { display: e.target.value }),
12548
+ placeholder: "Display",
12549
+ disabled: codingUnknown
12550
+ }
12551
+ )
12552
+ ] }),
12553
+ /* @__PURE__ */ jsxs("div", { className: "flex min-h-10 items-center gap-1.5 text-xs sm:justify-center", children: [
12554
+ /* @__PURE__ */ jsx(
12555
+ Radio,
12556
+ {
12557
+ value: String(i),
12558
+ "aria-label": `Primary code: ${c.system} ${c.code || `row ${i + 1}`}`,
12559
+ disabled: codingUnknown
12560
+ }
12561
+ ),
12562
+ /* @__PURE__ */ jsx("span", { className: "sm:sr-only", children: "Primary code" })
12563
+ ] }),
12564
+ /* @__PURE__ */ jsx(
12565
+ Button,
12566
+ {
12567
+ variant: "ghost",
12568
+ size: "icon",
12569
+ "aria-label": `Remove code ${i + 1}`,
12570
+ disabled: codingUnknown,
12571
+ onClick: () => setCoding(
12572
+ (prev) => withSinglePrimary(
12573
+ prev.filter((_, index) => index !== i)
12574
+ )
12575
+ ),
12576
+ className: "h-10 w-10 justify-self-start sm:justify-self-center",
12577
+ children: /* @__PURE__ */ jsx(Trash2, { size: 14 })
12578
+ }
12579
+ )
12580
+ ]
12581
+ },
12582
+ i
12583
+ ))
12584
+ }
12585
+ )
13539
12586
  ] }),
13540
12587
  /* @__PURE__ */ jsx(
13541
12588
  Select,
@@ -13546,9 +12593,39 @@ function ConditionEditor({
13546
12593
  onValueChange: (v) => setVerification(v)
13547
12594
  }
13548
12595
  ),
13549
- /* @__PURE__ */ jsxs("div", { className: "space-y-1", children: [
13550
- /* @__PURE__ */ jsxs("span", { className: "flex items-center gap-2 text-sm font-medium", children: [
13551
- "Severity",
12596
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-wrap items-end gap-x-4 gap-y-2", children: [
12597
+ /* @__PURE__ */ jsxs("div", { className: "space-y-1", children: [
12598
+ /* @__PURE__ */ jsx("span", { className: "block text-sm font-medium", children: "Severity" }),
12599
+ /* @__PURE__ */ jsx(
12600
+ "div",
12601
+ {
12602
+ role: "group",
12603
+ "aria-label": "Severity",
12604
+ className: "border-border inline-flex items-center overflow-hidden rounded-md border",
12605
+ children: SEVERITIES.map((s) => {
12606
+ const active = severity === s;
12607
+ return /* @__PURE__ */ jsx(
12608
+ "button",
12609
+ {
12610
+ type: "button",
12611
+ "aria-pressed": active,
12612
+ disabled: fields.severity?.known === false,
12613
+ onClick: () => setSeverity(active ? void 0 : s),
12614
+ className: cn(
12615
+ "border-border border-s px-2.5 py-1 text-xs font-medium capitalize transition-colors first:border-s-0",
12616
+ "disabled:opacity-40",
12617
+ active ? "bg-primary-600 text-white" : "bg-background text-muted-foreground hover:text-foreground"
12618
+ ),
12619
+ children: s
12620
+ },
12621
+ s
12622
+ );
12623
+ })
12624
+ }
12625
+ )
12626
+ ] }),
12627
+ /* @__PURE__ */ jsxs("div", { className: "space-y-1", children: [
12628
+ /* @__PURE__ */ jsx("span", { className: "block text-sm font-medium", children: "Certainty" }),
13552
12629
  /* @__PURE__ */ jsx(
13553
12630
  FieldFlag,
13554
12631
  {
@@ -13558,34 +12635,7 @@ function ConditionEditor({
13558
12635
  hasValue: Boolean(severity)
13559
12636
  }
13560
12637
  )
13561
- ] }),
13562
- /* @__PURE__ */ jsx(
13563
- "div",
13564
- {
13565
- role: "group",
13566
- "aria-label": "Severity",
13567
- className: "border-border inline-flex items-center overflow-hidden rounded-md border",
13568
- children: SEVERITIES.map((s) => {
13569
- const active = severity === s;
13570
- return /* @__PURE__ */ jsx(
13571
- "button",
13572
- {
13573
- type: "button",
13574
- "aria-pressed": active,
13575
- disabled: fields.severity?.known === false,
13576
- onClick: () => setSeverity(active ? void 0 : s),
13577
- className: cn(
13578
- "border-border border-s px-2.5 py-1 text-xs font-medium capitalize transition-colors first:border-s-0",
13579
- "disabled:opacity-40",
13580
- active ? "bg-primary-600 text-white" : "bg-background text-muted-foreground hover:text-foreground"
13581
- ),
13582
- children: s
13583
- },
13584
- s
13585
- );
13586
- })
13587
- }
13588
- )
12638
+ ] })
13589
12639
  ] }),
13590
12640
  /* @__PURE__ */ jsxs("div", { className: "space-y-1", children: [
13591
12641
  /* @__PURE__ */ jsxs("span", { className: "flex items-center gap-2 text-sm font-medium", children: [
@@ -13600,28 +12650,33 @@ function ConditionEditor({
13600
12650
  }
13601
12651
  )
13602
12652
  ] }),
13603
- /* @__PURE__ */ jsxs("div", { className: "flex flex-wrap items-center gap-1.5", children: [
12653
+ /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-1 items-end gap-2 sm:grid-cols-[minmax(10rem,0.8fr)_auto_minmax(14rem,1.2fr)]", children: [
13604
12654
  /* @__PURE__ */ jsx(
13605
- Input,
12655
+ DateInput,
13606
12656
  {
13607
- type: "date",
13608
12657
  "aria-label": "Onset date (exact)",
13609
12658
  value: onsetDate,
13610
- onChange: (e) => setOnsetDate(e.target.value),
12659
+ onChange: (value) => {
12660
+ setOnsetDate(value);
12661
+ if (value) setOnsetFuzzy("");
12662
+ },
13611
12663
  disabled: fields.onset?.known === false,
13612
- className: "w-40"
12664
+ validateOnBlur: true,
12665
+ width: "full"
13613
12666
  }
13614
12667
  ),
13615
- /* @__PURE__ */ jsx("span", { className: "text-muted-foreground text-xs", children: "or" }),
12668
+ /* @__PURE__ */ jsx("span", { className: "text-muted-foreground pb-3 text-center text-xs", children: "or" }),
13616
12669
  /* @__PURE__ */ jsx(
13617
12670
  Input,
13618
12671
  {
13619
12672
  "aria-label": "Onset (fuzzy)",
13620
12673
  value: onsetFuzzy,
13621
- onChange: (e) => setOnsetFuzzy(e.target.value),
12674
+ onChange: (e) => {
12675
+ setOnsetFuzzy(e.target.value);
12676
+ if (e.target.value) setOnsetDate("");
12677
+ },
13622
12678
  disabled: fields.onset?.known === false,
13623
- placeholder: 'Fuzzy \u2014 "since her twenties", "~3 months ago"',
13624
- className: "min-w-48 flex-1"
12679
+ placeholder: 'Fuzzy \u2014 "since her twenties", "~3 months ago"'
13625
12680
  }
13626
12681
  )
13627
12682
  ] })
@@ -13642,7 +12697,7 @@ function ConditionEditor({
13642
12697
  "Uncertainty recorded:",
13643
12698
  " ",
13644
12699
  Object.entries(fields).map(
13645
- ([k, f]) => f?.known === false ? `${k} unknown` : `${k} ${f?.confidence ?? "soft"}`
12700
+ ([k, f]) => f?.known === false ? `${k} unknown` : `${f?.confidence ?? "unspecified"} confidence in ${k}`
13646
12701
  ).join(", ")
13647
12702
  ] })
13648
12703
  ] })
@@ -17845,7 +16900,7 @@ function DateRangePicker({
17845
16900
  className: "hover:bg-muted rounded-md p-1 transition-colors",
17846
16901
  "aria-label": "Next month",
17847
16902
  "data-slot": "date-range-nav",
17848
- children: /* @__PURE__ */ jsx(ChevronRight, { className: "h-4 w-4 rtl:-scale-x-100" })
16903
+ children: /* @__PURE__ */ jsx(ChevronRight$1, { className: "h-4 w-4 rtl:-scale-x-100" })
17849
16904
  }
17850
16905
  )
17851
16906
  ]
@@ -17976,7 +17031,7 @@ function DateRangePicker({
17976
17031
  className: "hover:bg-muted rounded-md p-1 transition-colors md:hidden",
17977
17032
  "aria-label": "Next month",
17978
17033
  "data-slot": "date-range-nav",
17979
- children: /* @__PURE__ */ jsx(ChevronRight, { className: "h-4 w-4 rtl:-scale-x-100" })
17034
+ children: /* @__PURE__ */ jsx(ChevronRight$1, { className: "h-4 w-4 rtl:-scale-x-100" })
17980
17035
  }
17981
17036
  )
17982
17037
  ]
@@ -18011,7 +17066,7 @@ function DateRangePicker({
18011
17066
  className: "hover:bg-muted rounded-md p-1 transition-colors",
18012
17067
  "aria-label": "Next month",
18013
17068
  "data-slot": "date-range-nav",
18014
- children: /* @__PURE__ */ jsx(ChevronRight, { className: "h-4 w-4 rtl:-scale-x-100" })
17069
+ children: /* @__PURE__ */ jsx(ChevronRight$1, { className: "h-4 w-4 rtl:-scale-x-100" })
18015
17070
  }
18016
17071
  )
18017
17072
  ]
@@ -18976,7 +18031,7 @@ function PhotoPreview({
18976
18031
  {
18977
18032
  variant: "primary",
18978
18033
  onClick: onConfirm,
18979
- leftIcon: /* @__PURE__ */ jsx(Check, { className: "h-4 w-4" }),
18034
+ leftIcon: /* @__PURE__ */ jsx(Check$1, { className: "h-4 w-4" }),
18980
18035
  children: "Use this photo"
18981
18036
  }
18982
18037
  )
@@ -19207,7 +18262,7 @@ function WebcamModal({
19207
18262
  WebcamModal.displayName = "WebcamModal";
19208
18263
 
19209
18264
  // src/components/DocumentScanner/types.ts
19210
- var DEFAULT_ACCEPTED_FILE_TYPES = [
18265
+ var DEFAULT_ACCEPTED_FILE_TYPES2 = [
19211
18266
  "image/jpeg",
19212
18267
  "image/jpg",
19213
18268
  "image/png",
@@ -19243,7 +18298,7 @@ function createPreviewUrl(file) {
19243
18298
  return URL.createObjectURL(file);
19244
18299
  }
19245
18300
  function useFileUpload({
19246
- acceptedFileTypes = [...DEFAULT_ACCEPTED_FILE_TYPES],
18301
+ acceptedFileTypes = [...DEFAULT_ACCEPTED_FILE_TYPES2],
19247
18302
  maxFileSizeMb = DEFAULT_MAX_FILE_SIZE_MB,
19248
18303
  multiple = false,
19249
18304
  onValidationError
@@ -19326,7 +18381,7 @@ function DocumentScanner({
19326
18381
  onScan,
19327
18382
  onResult,
19328
18383
  multiple = false,
19329
- acceptedFileTypes = [...DEFAULT_ACCEPTED_FILE_TYPES],
18384
+ acceptedFileTypes = [...DEFAULT_ACCEPTED_FILE_TYPES2],
19330
18385
  maxFileSizeMb = DEFAULT_MAX_FILE_SIZE_MB,
19331
18386
  disabled = false,
19332
18387
  enableWebcam = true,
@@ -21825,7 +20880,7 @@ function EmployeeProfileCard({
21825
20880
  "flex h-5 w-5 items-center justify-center rounded-full text-white",
21826
20881
  employee.isActive ? "bg-success" : "bg-destructive"
21827
20882
  ),
21828
- children: employee.isActive ? /* @__PURE__ */ jsx(Check$1, { className: "h-3 w-3" }) : /* @__PURE__ */ jsx(X, { className: "h-3 w-3" })
20883
+ children: employee.isActive ? /* @__PURE__ */ jsx(Check, { className: "h-3 w-3" }) : /* @__PURE__ */ jsx(X, { className: "h-3 w-3" })
21829
20884
  }
21830
20885
  ),
21831
20886
  /* @__PURE__ */ jsx("h3", { className: "text-lg font-semibold", children: fullName })
@@ -21939,7 +20994,7 @@ function EmployeeProfileCard({
21939
20994
  "data-cy": "header-payment-status",
21940
20995
  "data-slot": "employee-card-detail-row",
21941
20996
  children: employee.isPaid ? /* @__PURE__ */ jsxs(Fragment, { children: [
21942
- /* @__PURE__ */ jsx(Check$1, { className: "text-success-700 dark:text-success-400 h-4 w-4" }),
20997
+ /* @__PURE__ */ jsx(Check, { className: "text-success-700 dark:text-success-400 h-4 w-4" }),
21943
20998
  /* @__PURE__ */ jsx("span", { className: "text-success-700 dark:text-success-400", children: paid })
21944
20999
  ] }) : /* @__PURE__ */ jsxs(Fragment, { children: [
21945
21000
  /* @__PURE__ */ jsx(Clock$1, { className: "text-muted-foreground h-4 w-4" }),
@@ -24252,7 +23307,7 @@ var HealthSurveillance = React13.forwardRef(
24252
23307
  "aria-expanded": isOpen,
24253
23308
  "aria-label": `${isOpen ? "Hide" : "Show"} orders for ${programLabel(item.key)}`,
24254
23309
  className: "text-muted-foreground hover:text-foreground shrink-0",
24255
- children: isOpen ? /* @__PURE__ */ jsx(ChevronDown, { size: 14 }) : /* @__PURE__ */ jsx(ChevronRight$1, { size: 14, className: "rtl:-scale-x-100" })
23310
+ children: isOpen ? /* @__PURE__ */ jsx(ChevronDown, { size: 14 }) : /* @__PURE__ */ jsx(ChevronRight, { size: 14, className: "rtl:-scale-x-100" })
24256
23311
  }
24257
23312
  ) : /* @__PURE__ */ jsx("span", { className: "w-3.5 shrink-0" }),
24258
23313
  /* @__PURE__ */ jsx(Badge, { variant: badge.variant, size: "sm", children: badge.label }),
@@ -31660,7 +30715,7 @@ function PermissionItem({
31660
30715
  "aria-expanded": isExpanded,
31661
30716
  "aria-label": isExpanded ? `Collapse ${permission.name}` : `Expand ${permission.name}`,
31662
30717
  "data-slot": "perm-item-toggle",
31663
- children: isExpanded ? /* @__PURE__ */ jsx(ChevronDown$1, { className: "text-muted-foreground h-4 w-4" }) : /* @__PURE__ */ jsx(ChevronRight, { className: "text-muted-foreground h-4 w-4 rtl:-scale-x-100" })
30718
+ children: isExpanded ? /* @__PURE__ */ jsx(ChevronDown$1, { className: "text-muted-foreground h-4 w-4" }) : /* @__PURE__ */ jsx(ChevronRight$1, { className: "text-muted-foreground h-4 w-4 rtl:-scale-x-100" })
31664
30719
  }
31665
30720
  ),
31666
30721
  !hasChildren && /* @__PURE__ */ jsx("span", { className: "w-5" }),
@@ -31804,7 +30859,7 @@ function PermissionsEditor({
31804
30859
  className: "hover:bg-muted/50 -ms-2 flex w-full items-center gap-2 rounded py-2 ps-2 text-start",
31805
30860
  "data-slot": "perm-group-header",
31806
30861
  children: [
31807
- expandedGroups.has(group.id) ? /* @__PURE__ */ jsx(ChevronDown$1, { className: "text-muted-foreground h-4 w-4" }) : /* @__PURE__ */ jsx(ChevronRight, { className: "text-muted-foreground h-4 w-4 rtl:-scale-x-100" }),
30862
+ expandedGroups.has(group.id) ? /* @__PURE__ */ jsx(ChevronDown$1, { className: "text-muted-foreground h-4 w-4" }) : /* @__PURE__ */ jsx(ChevronRight$1, { className: "text-muted-foreground h-4 w-4 rtl:-scale-x-100" }),
31808
30863
  /* @__PURE__ */ jsx("span", { className: "font-semibold", "data-slot": "perm-group-name", children: group.name })
31809
30864
  ]
31810
30865
  }
@@ -44852,7 +43907,7 @@ function WebChartReportViewer({
44852
43907
  className: "flex items-center gap-3",
44853
43908
  children: [
44854
43909
  /* @__PURE__ */ jsx(ModalTitle, { children: currentReport?.name || "Report Results" }),
44855
- reportResult?.error ? /* @__PURE__ */ jsx(AlertTriangle$1, { className: "h-5 w-5 text-yellow-500" }) : reportResult?.success ? /* @__PURE__ */ jsx(Check$1, { className: "h-5 w-5 text-green-500" }) : null
43910
+ reportResult?.error ? /* @__PURE__ */ jsx(AlertTriangle$1, { className: "h-5 w-5 text-yellow-500" }) : reportResult?.success ? /* @__PURE__ */ jsx(Check, { className: "h-5 w-5 text-green-500" }) : null
44856
43911
  ]
44857
43912
  }
44858
43913
  ),
@@ -45310,6 +44365,6 @@ function WebsiteInputGroup({
45310
44365
  }
45311
44366
  WebsiteInputGroup.displayName = "WebsiteInputGroup";
45312
44367
 
45313
- 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, ChatComposer, CheckrIntegration, ClaimListingButton, ClaimProviderForm, CodingChips, CommandPalette, CommandPaletteProvider, CommandPaletteTrigger, CompactCookieBanner, CompactFilterBar, CompactHeader, CompactHours, CompactProviderHeader, ComposerModelSelector, 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, 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 };
44368
+ export { AIChat, AIChatModal, AIChatTrigger, AIReconciliationPanel, AccessDeniedPage, ActionButton2 as ActionButton, ActionButtonsBar, ActiveFilters, AddContactModal, AddServiceCard, AdditionalFields, Address, AddressCard, AddressCompact, AddressDisplay, AddressForm, AddressInline, AppHeader, AppHeaderActions, AppHeaderBrand, AppHeaderDivider, AppHeaderIconButton, AppHeaderSearch, AppHeaderSection, AppHeaderTitle, AppHeaderUserMenu, Assessment, AuthButtons, AuthDialog, BookAppointmentButton, BookingDialog, BusinessHours, BusinessHoursEditor, ButtonGroup, CHANGE_TYPE_LABELS, CONCERN_STATUS_LABELS, CSVColumnMapper, CSVFileUpload, CardSkeleton, CaseContextBar, CaseManagementHeader, CheckrIntegration, ClaimListingButton, ClaimProviderForm, CodingChips, CommandPalette, CommandPaletteProvider, CommandPaletteTrigger, CompactCookieBanner, CompactFilterBar, CompactHeader, CompactHours, CompactProviderHeader, ConditionEditor, ConnectionStatusBadge, ConnectionStatusBar, ConnectionStatusOverlay, ConsentSwitch, CookieConsentBanner, CopyrightText, CountBadge, CountryDropdown, CreateInvoiceModal, CreateReferralModal, DEFAULT_ERROR_CONFIGS, DEFAULT_LANGUAGES, DEFAULT_RADIUS_OPTIONS, DEFAULT_SOCIAL_PROVIDERS, DOTBadge, DashboardWidget, DashboardWidgetActions, DashboardWidgetDataCards, DashboardWidgetInfo, DashboardWidgetTable, DateRangeFilter, DateRangePicker, DialogOverlay, DisclaimerText, DockablePanel, DocumentDetectionOverlay, DocumentScanner, DropZone, DropzoneOverlay, EditUserRoleModal, EmployeeForm, EmployeeProfileCard, EmployerContactCard, EmployerList, EmployerPricingCard, EmployerServiceModal, EmployerView, ErrorPage, FileManager, FilePreview, FloatingAIChat, FloatingInput, FooterLinkSection, SocialMediaLinks2 as FooterSocialLinks, HRISProviderSelector, HandsFreeChat, HealthSurveillance, HelpSupportPanel, HeroSearchBar, HeyOzwell, HeyOzwellToggle, HoursSummary, ImagingOrderEditor, InlineBookingForm, InventoryManager, InviteUserModal, InvoiceList, InvoicePaymentPage, InvoiceView, LabOrderEditor, LanguageSelector, LanguageSelectorInline, LanguageSelectorNative, LegalLinks, LoadingBar, LoadingDots, LoadingOverlay, LoadingPage, LoadingSkeleton, MODEL_MANIFEST, MaintenancePage, MobileBackButton, MobileMenuButton, MobileMenuPanel, ModelInfoList, NavLinks, NewsletterForm, NotFoundPage, NotificationCenter, ORDER_TYPE_META, ORDER_TYPE_SEARCH_DOMAINS, OfflinePage, OnboardingCompletion, OnboardingStepQuestion, OnboardingWizard, OpenStatusBadge, OrderCard, OrderConfirmation, OrderConfirmationWizard, OrderDetailSidebar, OrderEditor, OrderList, OrderLookupForm, OrderSidebar, OrderSidebarTabs, OzwellChat, OzwellSettingsMenu, PageHeader, PatientHeader, PaymentHistoryTable, PaymentMethodBank, PaymentMethodCard, PaymentMethodList, PendingClaimsTable, PermissionsEditor, PillSelect, PresentingProblems, ProblemList, ProcedureOrderEditor, ProductVersion, ProductVersionBadge, Breadcrumb2 as ProviderBreadcrumb, ProviderCard, ProviderCardGrid, ProviderCardSkeleton, ProviderDetailHeader, ProviderDetailHeaderSkeleton, ProviderLogo2 as ProviderLogo, ProviderOverview, ProviderSearchBar, ProviderSearchFilters, ProviderSelector, ProviderSettings, SocialMediaLinks as ProviderSocialLinks, ProviderUsersTable, QuickBookCard, QuickLinksCard, RELEVANCE_LABELS, RecurringServiceAddCard, RecurringServiceCard, RecurringServiceGrid, RecurringServiceSetupModal, ReferralEditor, RejectionModal, ReportDashboard, ReportDatePicker, ReportLink, ReportTimeRange, ResultsEntryCard, ResultsEntryForm, ResultsEntryModal, SSOConfigForm, ScheduleCalendar, SearchResultsMessage, SelectedServicesBadges, ServerErrorPage, ServiceAccordion, ServiceBadge, ServiceBadgeGroup, ServiceCard, ServiceCategoryBadge, ServiceGeneralSettings, ServiceGrid, ServiceLink, ServiceList, ServiceMultiSelect, ServicePicker, ServicePricingManager, ServiceSelect, ServiceShippingSettings, ServiceTagCloud, ServiceTagCloudBadges, SetupServiceModal, Sidebar, SidebarContent, SidebarFooter, SidebarHeader, SidebarMobileToggle, SidebarNav, SidebarNavGroup, SidebarNavItem, SidebarProvider, SidebarSearch, SidebarToggle, SimpleFooter, SiteFooter, SiteHeader, SiteLogo, StepIndicator, StripeBadge, StripeSecureBadge, SuggestedActions, TableOfContents, TimelineEventList, TimelineProgress, Toast, ToastContainer, ToastProvider, UncertaintyBadge, UpdateAvailableOverlay, UserMenu, VerifiedBadge2 as VerifiedBadge, VisitScribe, VoiceManager, VoiceSetup, WEBSITE_TYPES, WebChartReportViewer, WebcamModal, WebsiteInput, WebsiteInputGroup, askOzwell, askOzwellStream, attributeSegments, calculateDateRange, centroid, chime, clearVoiceprints, clearWhatPrints, clusterEmbeddings, concernGroupKey, concernHistoryContent, cosine, countBadgeVariants, countChipVariants, create24HourSchedule, createDefaultSchedule, createWeekdaySchedule, currentAssertion, decodeTo16kMono, defaultCaseManagementHeaderLabels, defaultOrderTabs, defaultReconciliationIsEqual, endsWithDone, formatAddressLines, formatAddressSingleLine, formatCityState, formatCityStateZip, generateId, getDefaultPresets, getDictationLoad, getExtendedPresets, getGoogleMapsSearchUrl, getGoogleMapsUrl, getOzwellConfig, getVoiceprints, getWakeWarm, inferSpeakerRoles, isConditionCodetype, isOzwellConfigured, isValidUrl, isWhisperLoaded, labelClusters, loadWhatPrints, medicationToOrder, mergeTurns, normalizeConditionCodingSystem, openRollingRecorder, orderToMedication, orderTypeForCodetype, panelVariants as reconciliationPanelVariants, saveWhatPrints, setVoiceprints, stripStopPhrase, subscribeDictationLoad, subscribeWakeWarm, toOzwellMessages, transcribeBlob, transcribeGate, transcribeSamples, transcribeSegments, transcribeServer, trimTrailingStopPhrase, useCamera, useCommandPalette, useConnectionStatus, useCookieConsent, useDiarization, useDocumentDetection, useDropzone, useFileUpload, useHeyOzwell, useOptionalToast, useSidebar, useSpeakerVerify, useToast, useVisitScribe, useVoiceSetup, useWakeWord, warmStopGate, warmWakeModels, warmWhisper, widgetVariants };
45314
44369
  //# sourceMappingURL=index.js.map
45315
44370
  //# sourceMappingURL=index.js.map