@mieweb/ui 0.8.0 → 0.9.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 (384) hide show
  1. package/README.md +162 -739
  2. package/agent/mieweb-ui.instructions.md +34 -16
  3. package/dist/Animated-Cs-naa2g.d.cts +175 -0
  4. package/dist/Animated-Cs-naa2g.d.ts +175 -0
  5. package/dist/CsvBlock-D7Z6ZCRP.js +6 -0
  6. package/dist/{CsvBlock-PUSTBQ5B.js.map → CsvBlock-D7Z6ZCRP.js.map} +1 -1
  7. package/dist/CsvBlock-QXXZ7ZUM.cjs +15 -0
  8. package/dist/{CsvBlock-OTFG3PYZ.cjs.map → CsvBlock-QXXZ7ZUM.cjs.map} +1 -1
  9. package/dist/HtmlPreviewBlock-AADG7MVB.cjs +15 -0
  10. package/dist/{HtmlPreviewBlock-QHLSIMWJ.cjs.map → HtmlPreviewBlock-AADG7MVB.cjs.map} +1 -1
  11. package/dist/HtmlPreviewBlock-F5VDM2EN.js +6 -0
  12. package/dist/{HtmlPreviewBlock-YF2YVKKX.js.map → HtmlPreviewBlock-F5VDM2EN.js.map} +1 -1
  13. package/dist/MermaidBlock-6PLITRBZ.js +6 -0
  14. package/dist/{MermaidBlock-H3TWNC4D.js.map → MermaidBlock-6PLITRBZ.js.map} +1 -1
  15. package/dist/MermaidBlock-TQ2O5CLV.cjs +15 -0
  16. package/dist/{MermaidBlock-ZLLBO3VY.cjs.map → MermaidBlock-TQ2O5CLV.cjs.map} +1 -1
  17. package/dist/SurveyBlock-OYL3VNU5.cjs +15 -0
  18. package/dist/{SurveyBlock-M2ZRTGVJ.cjs.map → SurveyBlock-OYL3VNU5.cjs.map} +1 -1
  19. package/dist/SurveyBlock-W5PSQ62F.js +6 -0
  20. package/dist/{SurveyBlock-JLHS3YQD.js.map → SurveyBlock-W5PSQ62F.js.map} +1 -1
  21. package/dist/ag-grid.cjs +5 -5
  22. package/dist/ag-grid.js +1 -1
  23. package/dist/brands/index.cjs +7 -7
  24. package/dist/brands/index.js +2 -2
  25. package/dist/{chunk-XS35KPBZ.cjs → chunk-2A2FLQJC.cjs} +1140 -14
  26. package/dist/chunk-2A2FLQJC.cjs.map +1 -0
  27. package/dist/{chunk-OTQ72WX3.js → chunk-2BPIVWAK.js} +3 -3
  28. package/dist/{chunk-OTQ72WX3.js.map → chunk-2BPIVWAK.js.map} +1 -1
  29. package/dist/{chunk-6EWJGRC3.js → chunk-3JWAABYI.js} +6 -6
  30. package/dist/chunk-3JWAABYI.js.map +1 -0
  31. package/dist/{chunk-5JZIDILK.cjs → chunk-3LHICE4I.cjs} +6 -6
  32. package/dist/chunk-3LHICE4I.cjs.map +1 -0
  33. package/dist/{chunk-JHZW3Y62.js → chunk-3RB35GYK.js} +5 -5
  34. package/dist/chunk-3RB35GYK.js.map +1 -0
  35. package/dist/{chunk-BOW7ZGI2.cjs → chunk-4SM3I7WE.cjs} +170 -10
  36. package/dist/chunk-4SM3I7WE.cjs.map +1 -0
  37. package/dist/{chunk-QHTDWIED.js → chunk-5H7SAEQO.js} +5 -5
  38. package/dist/{chunk-QHTDWIED.js.map → chunk-5H7SAEQO.js.map} +1 -1
  39. package/dist/chunk-5VXRKOPR.cjs +735 -0
  40. package/dist/chunk-5VXRKOPR.cjs.map +1 -0
  41. package/dist/{chunk-EMMYFHOT.js → chunk-5WOB4UBD.js} +3 -3
  42. package/dist/{chunk-EMMYFHOT.js.map → chunk-5WOB4UBD.js.map} +1 -1
  43. package/dist/{chunk-4CUFXCC5.cjs → chunk-5Z6UPVGC.cjs} +6 -6
  44. package/dist/{chunk-4CUFXCC5.cjs.map → chunk-5Z6UPVGC.cjs.map} +1 -1
  45. package/dist/{chunk-YIXTGWT4.cjs → chunk-6QKMMKRY.cjs} +5 -5
  46. package/dist/{chunk-YIXTGWT4.cjs.map → chunk-6QKMMKRY.cjs.map} +1 -1
  47. package/dist/{chunk-F57VRLKP.js → chunk-6SAYPXHX.js} +4 -4
  48. package/dist/{chunk-F57VRLKP.js.map → chunk-6SAYPXHX.js.map} +1 -1
  49. package/dist/{chunk-SK7H3Z67.cjs → chunk-6XDPJWSC.cjs} +99 -83
  50. package/dist/chunk-6XDPJWSC.cjs.map +1 -0
  51. package/dist/{chunk-4AE2L6AO.cjs → chunk-7FTBPLA6.cjs} +8 -8
  52. package/dist/chunk-7FTBPLA6.cjs.map +1 -0
  53. package/dist/{chunk-KVE7PQ5P.cjs → chunk-7KN6J7XV.cjs} +20 -20
  54. package/dist/{chunk-KVE7PQ5P.cjs.map → chunk-7KN6J7XV.cjs.map} +1 -1
  55. package/dist/{chunk-K4S4FAYX.cjs → chunk-AHINB2TP.cjs} +11 -11
  56. package/dist/{chunk-K4S4FAYX.cjs.map → chunk-AHINB2TP.cjs.map} +1 -1
  57. package/dist/{chunk-MYFZYUPR.cjs → chunk-AOHJILLU.cjs} +38 -3
  58. package/dist/chunk-AOHJILLU.cjs.map +1 -0
  59. package/dist/chunk-BKSPDTX4.js +3 -0
  60. package/dist/{chunk-3PXOIAF6.js.map → chunk-BKSPDTX4.js.map} +1 -1
  61. package/dist/chunk-BN75TLUN.cjs +163 -0
  62. package/dist/chunk-BN75TLUN.cjs.map +1 -0
  63. package/dist/{chunk-WWJIW2IH.cjs → chunk-BVMABVC4.cjs} +3 -3
  64. package/dist/{chunk-WWJIW2IH.cjs.map → chunk-BVMABVC4.cjs.map} +1 -1
  65. package/dist/{chunk-H7QSGFMZ.cjs → chunk-BZAGP5W6.cjs} +17 -10
  66. package/dist/chunk-BZAGP5W6.cjs.map +1 -0
  67. package/dist/{chunk-RS5VA6QU.cjs → chunk-C3DUS2VE.cjs} +3 -3
  68. package/dist/{chunk-RS5VA6QU.cjs.map → chunk-C3DUS2VE.cjs.map} +1 -1
  69. package/dist/{chunk-NLBT5O2X.js → chunk-CK3KLRNF.js} +3 -3
  70. package/dist/{chunk-NLBT5O2X.js.map → chunk-CK3KLRNF.js.map} +1 -1
  71. package/dist/{chunk-L6D4CKLV.cjs → chunk-CXDMZT45.cjs} +135 -4
  72. package/dist/chunk-CXDMZT45.cjs.map +1 -0
  73. package/dist/{chunk-TXRQQMG5.js → chunk-CYMZ2QS5.js} +2 -2
  74. package/dist/{chunk-TXRQQMG5.js.map → chunk-CYMZ2QS5.js.map} +1 -1
  75. package/dist/{chunk-DX64KLSN.js → chunk-D25WH7MH.js} +7 -7
  76. package/dist/{chunk-DX64KLSN.js.map → chunk-D25WH7MH.js.map} +1 -1
  77. package/dist/{chunk-XBKOZRDO.js → chunk-DFYMIRMW.js} +4 -4
  78. package/dist/{chunk-XBKOZRDO.js.map → chunk-DFYMIRMW.js.map} +1 -1
  79. package/dist/{chunk-AESFOMSH.js → chunk-DGRXAIWK.js} +135 -4
  80. package/dist/chunk-DGRXAIWK.js.map +1 -0
  81. package/dist/{chunk-UZ5NGGMI.js → chunk-EG7XFZ3W.js} +4 -4
  82. package/dist/{chunk-UZ5NGGMI.js.map → chunk-EG7XFZ3W.js.map} +1 -1
  83. package/dist/{chunk-LQHI44OZ.cjs → chunk-FUFBRKOG.cjs} +59 -59
  84. package/dist/{chunk-LQHI44OZ.cjs.map → chunk-FUFBRKOG.cjs.map} +1 -1
  85. package/dist/{chunk-DG7KE4YJ.cjs → chunk-FYAKUU2A.cjs} +38 -21
  86. package/dist/chunk-FYAKUU2A.cjs.map +1 -0
  87. package/dist/{chunk-7L7OPISJ.cjs → chunk-H4AVMUOC.cjs} +12 -6
  88. package/dist/chunk-H4AVMUOC.cjs.map +1 -0
  89. package/dist/{chunk-I2ECTLON.cjs → chunk-HXSA6QC5.cjs} +3 -3
  90. package/dist/{chunk-I2ECTLON.cjs.map → chunk-HXSA6QC5.cjs.map} +1 -1
  91. package/dist/{chunk-DCBMTFLE.js → chunk-HZ4MBUC3.js} +3 -3
  92. package/dist/{chunk-DCBMTFLE.js.map → chunk-HZ4MBUC3.js.map} +1 -1
  93. package/dist/{chunk-X5ZPYYMS.js → chunk-I3DQXUSC.js} +3 -3
  94. package/dist/{chunk-X5ZPYYMS.js.map → chunk-I3DQXUSC.js.map} +1 -1
  95. package/dist/{chunk-FN6VHMLM.cjs → chunk-IB54SKWB.cjs} +8 -8
  96. package/dist/{chunk-FN6VHMLM.cjs.map → chunk-IB54SKWB.cjs.map} +1 -1
  97. package/dist/chunk-IF3X2WZP.js +705 -0
  98. package/dist/chunk-IF3X2WZP.js.map +1 -0
  99. package/dist/{chunk-JP5SGIXA.cjs → chunk-IFDC4TXM.cjs} +4 -4
  100. package/dist/{chunk-JP5SGIXA.cjs.map → chunk-IFDC4TXM.cjs.map} +1 -1
  101. package/dist/{chunk-RDGRKYQ5.cjs → chunk-IINZWUGK.cjs} +58 -6
  102. package/dist/chunk-IINZWUGK.cjs.map +1 -0
  103. package/dist/{chunk-U3JU6BI5.cjs → chunk-JEIW7BSV.cjs} +3 -3
  104. package/dist/{chunk-U3JU6BI5.cjs.map → chunk-JEIW7BSV.cjs.map} +1 -1
  105. package/dist/{chunk-RZJXCI53.js → chunk-KATEJG2F.js} +1138 -14
  106. package/dist/chunk-KATEJG2F.js.map +1 -0
  107. package/dist/{chunk-D2GID3YK.js → chunk-KREUYVMZ.js} +58 -6
  108. package/dist/chunk-KREUYVMZ.js.map +1 -0
  109. package/dist/{chunk-Y6YSJPVC.js → chunk-KRU6IGV7.js} +11 -3
  110. package/dist/chunk-KRU6IGV7.js.map +1 -0
  111. package/dist/{chunk-LZU7YBXG.js → chunk-KU3XRHWA.js} +169 -10
  112. package/dist/chunk-KU3XRHWA.js.map +1 -0
  113. package/dist/{chunk-P2VTQ5AR.cjs → chunk-L52N6BEN.cjs} +39 -23
  114. package/dist/chunk-L52N6BEN.cjs.map +1 -0
  115. package/dist/{chunk-XWYKLEKG.js → chunk-L5W7TJQ5.js} +11 -5
  116. package/dist/chunk-L5W7TJQ5.js.map +1 -0
  117. package/dist/{chunk-PAM5UUBL.cjs → chunk-L7L5S2HO.cjs} +18 -2
  118. package/dist/{chunk-PAM5UUBL.cjs.map → chunk-L7L5S2HO.cjs.map} +1 -1
  119. package/dist/{chunk-SEPYBAML.js → chunk-LAEIVOIY.js} +38 -21
  120. package/dist/chunk-LAEIVOIY.js.map +1 -0
  121. package/dist/{chunk-Z5KFXHDP.cjs → chunk-MM7QKUE3.cjs} +5 -5
  122. package/dist/{chunk-Z5KFXHDP.cjs.map → chunk-MM7QKUE3.cjs.map} +1 -1
  123. package/dist/{chunk-FJ7YPVKV.js → chunk-MUIDWFYJ.js} +3 -3
  124. package/dist/{chunk-FJ7YPVKV.js.map → chunk-MUIDWFYJ.js.map} +1 -1
  125. package/dist/{chunk-YMHOF6WA.cjs → chunk-MYAU2ZUC.cjs} +3 -3
  126. package/dist/{chunk-YMHOF6WA.cjs.map → chunk-MYAU2ZUC.cjs.map} +1 -1
  127. package/dist/{chunk-5J5PEUUA.js → chunk-NHN6A3ZO.js} +6 -6
  128. package/dist/{chunk-5J5PEUUA.js.map → chunk-NHN6A3ZO.js.map} +1 -1
  129. package/dist/{chunk-EPQPUFS6.cjs → chunk-NYJIXR4Y.cjs} +6 -6
  130. package/dist/chunk-NYJIXR4Y.cjs.map +1 -0
  131. package/dist/{chunk-RYQ3S3KO.cjs → chunk-O425FKDI.cjs} +581 -70
  132. package/dist/chunk-O425FKDI.cjs.map +1 -0
  133. package/dist/{chunk-WIYQI35R.cjs → chunk-O7XHHTTP.cjs} +8 -8
  134. package/dist/{chunk-WIYQI35R.cjs.map → chunk-O7XHHTTP.cjs.map} +1 -1
  135. package/dist/{chunk-IILJGFI5.js → chunk-OAZUDUGX.js} +8 -6
  136. package/dist/chunk-OAZUDUGX.js.map +1 -0
  137. package/dist/{chunk-JHGMZX4I.cjs → chunk-OCV33S5Q.cjs} +6 -6
  138. package/dist/{chunk-JHGMZX4I.cjs.map → chunk-OCV33S5Q.cjs.map} +1 -1
  139. package/dist/{chunk-IYXCFIMP.js → chunk-ODYQYLO2.js} +33 -17
  140. package/dist/chunk-ODYQYLO2.js.map +1 -0
  141. package/dist/{chunk-FPVRQCCL.js → chunk-OHDIJOGG.js} +4 -4
  142. package/dist/{chunk-FPVRQCCL.js.map → chunk-OHDIJOGG.js.map} +1 -1
  143. package/dist/{chunk-GQVL2JKQ.cjs → chunk-OHKO5THF.cjs} +3 -3
  144. package/dist/{chunk-GQVL2JKQ.cjs.map → chunk-OHKO5THF.cjs.map} +1 -1
  145. package/dist/{chunk-LMBXJZLG.js → chunk-ON4JULCA.js} +3 -3
  146. package/dist/{chunk-LMBXJZLG.js.map → chunk-ON4JULCA.js.map} +1 -1
  147. package/dist/{chunk-A5YOIJKL.js → chunk-ONNY7UO4.js} +15 -15
  148. package/dist/{chunk-A5YOIJKL.js.map → chunk-ONNY7UO4.js.map} +1 -1
  149. package/dist/{chunk-DWCYEPTT.js → chunk-OSPTA4UR.js} +4 -4
  150. package/dist/{chunk-DWCYEPTT.js.map → chunk-OSPTA4UR.js.map} +1 -1
  151. package/dist/{chunk-FDUA6OGN.js → chunk-PFKRHNYV.js} +8 -8
  152. package/dist/chunk-PFKRHNYV.js.map +1 -0
  153. package/dist/{chunk-XMECP2MD.js → chunk-PHK4XBO5.js} +4 -4
  154. package/dist/{chunk-XMECP2MD.js.map → chunk-PHK4XBO5.js.map} +1 -1
  155. package/dist/{chunk-ZZJ4ZVYR.cjs → chunk-PJ6CC53R.cjs} +3 -3
  156. package/dist/{chunk-ZZJ4ZVYR.cjs.map → chunk-PJ6CC53R.cjs.map} +1 -1
  157. package/dist/{chunk-N3Y43KOB.js → chunk-PYHFVYVZ.js} +12 -5
  158. package/dist/chunk-PYHFVYVZ.js.map +1 -0
  159. package/dist/{chunk-XMCIXHGH.js → chunk-Q7G56ZIO.js} +39 -23
  160. package/dist/chunk-Q7G56ZIO.js.map +1 -0
  161. package/dist/{chunk-4PIW3Y5M.js → chunk-QAKASRE6.js} +34 -26
  162. package/dist/chunk-QAKASRE6.js.map +1 -0
  163. package/dist/{chunk-QGZC43L7.js → chunk-QAQOCS2J.js} +5 -5
  164. package/dist/{chunk-QGZC43L7.js.map → chunk-QAQOCS2J.js.map} +1 -1
  165. package/dist/{chunk-YVIH26FG.cjs → chunk-QKAYRHWP.cjs} +12 -12
  166. package/dist/{chunk-YVIH26FG.cjs.map → chunk-QKAYRHWP.cjs.map} +1 -1
  167. package/dist/{chunk-FDV7EQWH.js → chunk-RPG2ZP2T.js} +575 -68
  168. package/dist/chunk-RPG2ZP2T.js.map +1 -0
  169. package/dist/{chunk-P3JEMF6E.cjs → chunk-RSCA5AZW.cjs} +4 -4
  170. package/dist/{chunk-P3JEMF6E.cjs.map → chunk-RSCA5AZW.cjs.map} +1 -1
  171. package/dist/{chunk-5Y5FSR4N.js → chunk-SCXELRRZ.js} +3 -3
  172. package/dist/{chunk-5Y5FSR4N.js.map → chunk-SCXELRRZ.js.map} +1 -1
  173. package/dist/{chunk-JWTCEWQ4.cjs → chunk-SNEQXSC5.cjs} +2 -2
  174. package/dist/{chunk-JWTCEWQ4.cjs.map → chunk-SNEQXSC5.cjs.map} +1 -1
  175. package/dist/{chunk-U5TTXN45.cjs → chunk-SRA2L3SQ.cjs} +9 -7
  176. package/dist/chunk-SRA2L3SQ.cjs.map +1 -0
  177. package/dist/{chunk-5U6GETAW.js → chunk-TQDZLRIE.js} +3 -3
  178. package/dist/chunk-TQDZLRIE.js.map +1 -0
  179. package/dist/{chunk-HK3AMH3Q.cjs → chunk-VROIMIHB.cjs} +11 -3
  180. package/dist/chunk-VROIMIHB.cjs.map +1 -0
  181. package/dist/{chunk-3SHLOF4V.cjs → chunk-VTR2KGLY.cjs} +9 -9
  182. package/dist/{chunk-3SHLOF4V.cjs.map → chunk-VTR2KGLY.cjs.map} +1 -1
  183. package/dist/{chunk-XO3WLK65.js → chunk-VVDE4CHU.js} +3 -3
  184. package/dist/{chunk-XO3WLK65.js.map → chunk-VVDE4CHU.js.map} +1 -1
  185. package/dist/{chunk-BOOJDRJO.js → chunk-WSNMQQ4P.js} +38 -3
  186. package/dist/chunk-WSNMQQ4P.js.map +1 -0
  187. package/dist/chunk-WYMO3IIK.js +136 -0
  188. package/dist/chunk-WYMO3IIK.js.map +1 -0
  189. package/dist/{chunk-SPWVKDGC.cjs → chunk-X5QRRMGB.cjs} +35 -27
  190. package/dist/chunk-X5QRRMGB.cjs.map +1 -0
  191. package/dist/{chunk-SH6B4MG5.js → chunk-XBXDUAIM.js} +4 -4
  192. package/dist/{chunk-SH6B4MG5.js.map → chunk-XBXDUAIM.js.map} +1 -1
  193. package/dist/{chunk-56QJHQ5C.cjs → chunk-XEEVDZDK.cjs} +5 -5
  194. package/dist/{chunk-56QJHQ5C.cjs.map → chunk-XEEVDZDK.cjs.map} +1 -1
  195. package/dist/{chunk-GXODR6V4.js → chunk-XOIIUO6O.js} +3 -3
  196. package/dist/{chunk-GXODR6V4.js.map → chunk-XOIIUO6O.js.map} +1 -1
  197. package/dist/{chunk-ELYGV32O.cjs → chunk-XTHMC76F.cjs} +5 -5
  198. package/dist/{chunk-ELYGV32O.cjs.map → chunk-XTHMC76F.cjs.map} +1 -1
  199. package/dist/{chunk-FF235PKY.cjs → chunk-XWZEECEX.cjs} +3 -3
  200. package/dist/chunk-XWZEECEX.cjs.map +1 -0
  201. package/dist/{chunk-TVLZZI5Q.cjs → chunk-YJP6DUFO.cjs} +9 -9
  202. package/dist/{chunk-TVLZZI5Q.cjs.map → chunk-YJP6DUFO.cjs.map} +1 -1
  203. package/dist/{chunk-EHQ77LL5.js → chunk-ZB54MTMQ.js} +3 -3
  204. package/dist/{chunk-EHQ77LL5.js.map → chunk-ZB54MTMQ.js.map} +1 -1
  205. package/dist/components/Accordion/index.cjs +2 -2
  206. package/dist/components/Accordion/index.js +1 -1
  207. package/dist/components/Alert/index.cjs +5 -5
  208. package/dist/components/Alert/index.d.cts +1 -1
  209. package/dist/components/Alert/index.d.ts +1 -1
  210. package/dist/components/Alert/index.js +1 -1
  211. package/dist/components/AlertDialog/index.cjs +6 -5
  212. package/dist/components/AlertDialog/index.js +5 -4
  213. package/dist/components/AudioPlayer/index.cjs +6 -6
  214. package/dist/components/AudioPlayer/index.js +1 -1
  215. package/dist/components/Autocomplete/index.cjs +4 -4
  216. package/dist/components/Autocomplete/index.js +3 -3
  217. package/dist/components/Avatar/index.cjs +5 -5
  218. package/dist/components/Avatar/index.js +1 -1
  219. package/dist/components/Badge/index.d.cts +1 -1
  220. package/dist/components/Badge/index.d.ts +1 -1
  221. package/dist/components/Breadcrumb/index.cjs +3 -3
  222. package/dist/components/Breadcrumb/index.js +1 -1
  223. package/dist/components/Button/index.cjs +3 -3
  224. package/dist/components/Button/index.js +1 -1
  225. package/dist/components/Card/index.d.cts +2 -2
  226. package/dist/components/Card/index.d.ts +2 -2
  227. package/dist/components/CountryCodeDropdown/index.cjs +6 -6
  228. package/dist/components/CountryCodeDropdown/index.d.cts +11 -1
  229. package/dist/components/CountryCodeDropdown/index.d.ts +11 -1
  230. package/dist/components/CountryCodeDropdown/index.js +3 -3
  231. package/dist/components/CustomizableDashboard/index.cjs +11 -11
  232. package/dist/components/CustomizableDashboard/index.js +4 -4
  233. package/dist/components/DateInput/index.cjs +4 -4
  234. package/dist/components/DateInput/index.js +3 -3
  235. package/dist/components/Dropdown/index.cjs +13 -9
  236. package/dist/components/Dropdown/index.d.cts +38 -2
  237. package/dist/components/Dropdown/index.d.ts +38 -2
  238. package/dist/components/Dropdown/index.js +3 -3
  239. package/dist/components/FloatingWindow/index.cjs +4 -4
  240. package/dist/components/FloatingWindow/index.js +2 -2
  241. package/dist/components/GlossaryTooltip/index.cjs +4 -4
  242. package/dist/components/GlossaryTooltip/index.js +3 -3
  243. package/dist/components/KeyboardShortcutsOverlay/index.cjs +6 -5
  244. package/dist/components/KeyboardShortcutsOverlay/index.js +4 -3
  245. package/dist/components/Markdown/index.cjs +19 -19
  246. package/dist/components/Markdown/index.js +7 -7
  247. package/dist/components/MediaEditor/index.cjs +15 -14
  248. package/dist/components/MediaEditor/index.js +10 -9
  249. package/dist/components/MediaPlayer/index.cjs +6 -6
  250. package/dist/components/MediaPlayer/index.js +3 -3
  251. package/dist/components/Modal/index.cjs +11 -10
  252. package/dist/components/Modal/index.d.cts +1 -1
  253. package/dist/components/Modal/index.d.ts +1 -1
  254. package/dist/components/Modal/index.js +3 -2
  255. package/dist/components/Pagination/index.cjs +4 -4
  256. package/dist/components/Pagination/index.d.cts +1 -1
  257. package/dist/components/Pagination/index.d.ts +1 -1
  258. package/dist/components/Pagination/index.js +1 -1
  259. package/dist/components/PhoneInput/index.cjs +4 -4
  260. package/dist/components/PhoneInput/index.js +2 -2
  261. package/dist/components/Progress/index.d.cts +1 -1
  262. package/dist/components/Progress/index.d.ts +1 -1
  263. package/dist/components/QuickAction/index.cjs +6 -6
  264. package/dist/components/QuickAction/index.js +1 -1
  265. package/dist/components/RecordButton/index.d.cts +1 -1
  266. package/dist/components/RecordButton/index.d.ts +1 -1
  267. package/dist/components/RichTextEditor/index.cjs +9 -9
  268. package/dist/components/RichTextEditor/index.js +6 -6
  269. package/dist/components/SectionSpyNav/index.cjs +4 -4
  270. package/dist/components/SectionSpyNav/index.js +3 -3
  271. package/dist/components/Select/index.cjs +5 -5
  272. package/dist/components/Select/index.js +3 -3
  273. package/dist/components/Sheet/index.cjs +11 -11
  274. package/dist/components/Sheet/index.js +2 -2
  275. package/dist/components/Slider/index.cjs +5 -5
  276. package/dist/components/Slider/index.d.cts +2 -2
  277. package/dist/components/Slider/index.d.ts +2 -2
  278. package/dist/components/Slider/index.js +1 -1
  279. package/dist/components/SourceTip/index.cjs +4 -4
  280. package/dist/components/SourceTip/index.js +3 -3
  281. package/dist/components/SuperChat/index.cjs +292 -115
  282. package/dist/components/SuperChat/index.cjs.map +1 -1
  283. package/dist/components/SuperChat/index.d.cts +29 -8
  284. package/dist/components/SuperChat/index.d.ts +29 -8
  285. package/dist/components/SuperChat/index.js +284 -107
  286. package/dist/components/SuperChat/index.js.map +1 -1
  287. package/dist/components/SuperChat/plugins/index.cjs +7 -7
  288. package/dist/components/SuperChat/plugins/index.cjs.map +1 -1
  289. package/dist/components/SuperChat/plugins/index.d.cts +2 -2
  290. package/dist/components/SuperChat/plugins/index.d.ts +2 -2
  291. package/dist/components/SuperChat/plugins/index.js +6 -6
  292. package/dist/components/SuperChat/plugins/index.js.map +1 -1
  293. package/dist/components/Text/index.d.cts +1 -1
  294. package/dist/components/Text/index.d.ts +1 -1
  295. package/dist/components/ThemeProvider/index.cjs +9 -9
  296. package/dist/components/ThemeProvider/index.d.cts +1 -1
  297. package/dist/components/ThemeProvider/index.d.ts +1 -1
  298. package/dist/components/ThemeProvider/index.js +3 -3
  299. package/dist/components/Toggle/index.d.cts +1 -1
  300. package/dist/components/Toggle/index.d.ts +1 -1
  301. package/dist/components/Tooltip/index.cjs +3 -3
  302. package/dist/components/Tooltip/index.js +2 -2
  303. package/dist/components/TranscriptView/index.cjs +3 -3
  304. package/dist/components/TranscriptView/index.js +1 -1
  305. package/dist/datavis.cjs +2 -2
  306. package/dist/datavis.js +1 -1
  307. package/dist/esheet.cjs +15 -14
  308. package/dist/esheet.cjs.map +1 -1
  309. package/dist/esheet.js +12 -11
  310. package/dist/esheet.js.map +1 -1
  311. package/dist/hooks/index.cjs +3 -3
  312. package/dist/hooks/index.d.cts +1 -1
  313. package/dist/hooks/index.d.ts +1 -1
  314. package/dist/hooks/index.js +2 -2
  315. package/dist/index.cjs +2509 -2860
  316. package/dist/index.cjs.map +1 -1
  317. package/dist/index.d.cts +278 -43
  318. package/dist/index.d.ts +278 -43
  319. package/dist/index.js +1305 -1700
  320. package/dist/index.js.map +1 -1
  321. package/dist/motion.cjs +87 -0
  322. package/dist/motion.cjs.map +1 -0
  323. package/dist/motion.d.cts +52 -0
  324. package/dist/motion.d.ts +52 -0
  325. package/dist/motion.js +50 -0
  326. package/dist/motion.js.map +1 -0
  327. package/dist/styles/init.css +25 -0
  328. package/dist/styles.css +1 -1
  329. package/dist/tailwind-preset.cjs +4 -4
  330. package/dist/tailwind-preset.js +1 -1
  331. package/dist/{types-BoTeTPdH.d.ts → types-9vK_YdEb.d.ts} +12 -1
  332. package/dist/{types-DyIB9HYT.d.cts → types-DZDroUW8.d.cts} +12 -1
  333. package/dist/{useAnchoredPosition-C7PNglzD.d.ts → useAnchoredPosition-CKwLSQW8.d.cts} +10 -3
  334. package/dist/{useAnchoredPosition-C7PNglzD.d.cts → useAnchoredPosition-CKwLSQW8.d.ts} +10 -3
  335. package/package.json +21 -2
  336. package/dist/CsvBlock-OTFG3PYZ.cjs +0 -15
  337. package/dist/CsvBlock-PUSTBQ5B.js +0 -6
  338. package/dist/HtmlPreviewBlock-QHLSIMWJ.cjs +0 -15
  339. package/dist/HtmlPreviewBlock-YF2YVKKX.js +0 -6
  340. package/dist/MermaidBlock-H3TWNC4D.js +0 -6
  341. package/dist/MermaidBlock-ZLLBO3VY.cjs +0 -15
  342. package/dist/SurveyBlock-JLHS3YQD.js +0 -6
  343. package/dist/SurveyBlock-M2ZRTGVJ.cjs +0 -15
  344. package/dist/chunk-26DPQUSB.cjs +0 -1177
  345. package/dist/chunk-26DPQUSB.cjs.map +0 -1
  346. package/dist/chunk-3PXOIAF6.js +0 -3
  347. package/dist/chunk-4AE2L6AO.cjs.map +0 -1
  348. package/dist/chunk-4PIW3Y5M.js.map +0 -1
  349. package/dist/chunk-5JZIDILK.cjs.map +0 -1
  350. package/dist/chunk-5U6GETAW.js.map +0 -1
  351. package/dist/chunk-6EWJGRC3.js.map +0 -1
  352. package/dist/chunk-7L7OPISJ.cjs.map +0 -1
  353. package/dist/chunk-AESFOMSH.js.map +0 -1
  354. package/dist/chunk-BOOJDRJO.js.map +0 -1
  355. package/dist/chunk-BOW7ZGI2.cjs.map +0 -1
  356. package/dist/chunk-D2GID3YK.js.map +0 -1
  357. package/dist/chunk-DG7KE4YJ.cjs.map +0 -1
  358. package/dist/chunk-EKRT7K2K.js +0 -1145
  359. package/dist/chunk-EKRT7K2K.js.map +0 -1
  360. package/dist/chunk-EPQPUFS6.cjs.map +0 -1
  361. package/dist/chunk-FDUA6OGN.js.map +0 -1
  362. package/dist/chunk-FDV7EQWH.js.map +0 -1
  363. package/dist/chunk-FF235PKY.cjs.map +0 -1
  364. package/dist/chunk-H7QSGFMZ.cjs.map +0 -1
  365. package/dist/chunk-HK3AMH3Q.cjs.map +0 -1
  366. package/dist/chunk-IILJGFI5.js.map +0 -1
  367. package/dist/chunk-IYXCFIMP.js.map +0 -1
  368. package/dist/chunk-JHZW3Y62.js.map +0 -1
  369. package/dist/chunk-L6D4CKLV.cjs.map +0 -1
  370. package/dist/chunk-LZU7YBXG.js.map +0 -1
  371. package/dist/chunk-MYFZYUPR.cjs.map +0 -1
  372. package/dist/chunk-N3Y43KOB.js.map +0 -1
  373. package/dist/chunk-P2VTQ5AR.cjs.map +0 -1
  374. package/dist/chunk-RDGRKYQ5.cjs.map +0 -1
  375. package/dist/chunk-RYQ3S3KO.cjs.map +0 -1
  376. package/dist/chunk-RZJXCI53.js.map +0 -1
  377. package/dist/chunk-SEPYBAML.js.map +0 -1
  378. package/dist/chunk-SK7H3Z67.cjs.map +0 -1
  379. package/dist/chunk-SPWVKDGC.cjs.map +0 -1
  380. package/dist/chunk-U5TTXN45.cjs.map +0 -1
  381. package/dist/chunk-XMCIXHGH.js.map +0 -1
  382. package/dist/chunk-XS35KPBZ.cjs.map +0 -1
  383. package/dist/chunk-XWYKLEKG.js.map +0 -1
  384. package/dist/chunk-Y6YSJPVC.js.map +0 -1
@@ -1,20 +1,21 @@
1
1
  'use strict';
2
2
 
3
3
  var chunkJFLC7SHM_cjs = require('../../chunk-JFLC7SHM.cjs');
4
- var chunkXS35KPBZ_cjs = require('../../chunk-XS35KPBZ.cjs');
5
- var chunk26DPQUSB_cjs = require('../../chunk-26DPQUSB.cjs');
6
- var chunkBOW7ZGI2_cjs = require('../../chunk-BOW7ZGI2.cjs');
4
+ var chunk2A2FLQJC_cjs = require('../../chunk-2A2FLQJC.cjs');
5
+ require('../../chunk-5VXRKOPR.cjs');
6
+ var chunk4SM3I7WE_cjs = require('../../chunk-4SM3I7WE.cjs');
7
+ var chunkJEIW7BSV_cjs = require('../../chunk-JEIW7BSV.cjs');
7
8
  require('../../chunk-VBWRH4UW.cjs');
8
- require('../../chunk-ZZJ4ZVYR.cjs');
9
- var chunkU3JU6BI5_cjs = require('../../chunk-U3JU6BI5.cjs');
9
+ require('../../chunk-PJ6CC53R.cjs');
10
10
  require('../../chunk-I44YNYI6.cjs');
11
11
  require('../../chunk-Z5S5JEJD.cjs');
12
+ require('../../chunk-L7L5S2HO.cjs');
12
13
  var chunkYVL3XATO_cjs = require('../../chunk-YVL3XATO.cjs');
14
+ var chunkS5RVSXDV_cjs = require('../../chunk-S5RVSXDV.cjs');
13
15
  require('../../chunk-FHY3K6PL.cjs');
14
16
  require('../../chunk-FSGEDDF2.cjs');
15
- require('../../chunk-MYFZYUPR.cjs');
16
- var chunkS5RVSXDV_cjs = require('../../chunk-S5RVSXDV.cjs');
17
- var React4 = require('react');
17
+ require('../../chunk-AOHJILLU.cjs');
18
+ var React2 = require('react');
18
19
  var Markdown = require('react-markdown');
19
20
  var remarkGfm = require('remark-gfm');
20
21
  var rehypeSanitize = require('rehype-sanitize');
@@ -43,7 +44,7 @@ function _interopNamespace(e) {
43
44
  return Object.freeze(n);
44
45
  }
45
46
 
46
- var React4__namespace = /*#__PURE__*/_interopNamespace(React4);
47
+ var React2__namespace = /*#__PURE__*/_interopNamespace(React2);
47
48
  var Markdown__default = /*#__PURE__*/_interopDefault(Markdown);
48
49
  var remarkGfm__default = /*#__PURE__*/_interopDefault(remarkGfm);
49
50
  var rehypeSanitize__default = /*#__PURE__*/_interopDefault(rehypeSanitize);
@@ -178,7 +179,7 @@ function baseComponents() {
178
179
  {
179
180
  ...props,
180
181
  className: chunkS5RVSXDV_cjs.cn(
181
- "w-full border-collapse text-sm [&_td]:border [&_td]:border-neutral-200 [&_td]:px-2 [&_td]:py-1 dark:[&_td]:border-neutral-700 [&_th]:border [&_th]:border-neutral-200 [&_th]:px-2 [&_th]:py-1 [&_th]:text-left dark:[&_th]:border-neutral-700",
182
+ "w-full border-collapse text-sm [&_td]:border [&_td]:border-neutral-200 [&_td]:px-2 [&_td]:py-1 dark:[&_td]:border-neutral-700 [&_th]:border [&_th]:border-neutral-200 [&_th]:px-2 [&_th]:py-1 [&_th]:text-start dark:[&_th]:border-neutral-700",
182
183
  props.className
183
184
  )
184
185
  }
@@ -292,7 +293,7 @@ var transformUrl = (url, key, node) => {
292
293
  }
293
294
  return Markdown.defaultUrlTransform(url);
294
295
  };
295
- var MarkdownContent = React4__namespace.memo(function MarkdownContent2({
296
+ var MarkdownContent = React2__namespace.memo(function MarkdownContent2({
296
297
  text,
297
298
  messageId,
298
299
  streaming,
@@ -396,13 +397,13 @@ function ParticipantAvatar({
396
397
  const isAgent = participant?.kind === "agent";
397
398
  const backgroundColor = participant?.color ?? (isAgent ? "var(--mieweb-primary-700, #1f2937)" : "#64748b");
398
399
  return /* @__PURE__ */ jsxRuntime.jsx(
399
- chunkU3JU6BI5_cjs.Avatar,
400
+ chunkJEIW7BSV_cjs.Avatar,
400
401
  {
401
402
  size: "xs",
402
403
  src: participant?.avatar,
403
404
  alt: "",
404
405
  name: participant?.name ?? "?",
405
- fallback: isAgent ? /* @__PURE__ */ jsxRuntime.jsx(chunkXS35KPBZ_cjs.SparklesIcon, { size: "sm" }) : void 0,
406
+ fallback: isAgent ? /* @__PURE__ */ jsxRuntime.jsx(chunk2A2FLQJC_cjs.SparklesIcon, { size: "sm" }) : void 0,
406
407
  style: { backgroundColor },
407
408
  "aria-hidden": "true",
408
409
  className: "shrink-0"
@@ -487,13 +488,19 @@ function filesToComposerAttachments(files) {
487
488
  )
488
489
  );
489
490
  }
490
- function CopyMenu({ isSelf, markdown, getHtml, getText }) {
491
- const [open, setOpen] = React4__namespace.useState(false);
492
- const [copied, setCopied] = React4__namespace.useState(false);
493
- const copiedTimer = React4__namespace.useRef(
491
+ var actionRevealClass = "opacity-0 transition-opacity group-focus-within:opacity-100 group-hover:opacity-100 focus-visible:opacity-100 [@media(pointer:coarse)]:opacity-100";
492
+ var actionButtonClass = "rounded p-1 text-neutral-400 hover:text-neutral-600 dark:hover:text-neutral-200";
493
+ function useMessageCopy({
494
+ markdown,
495
+ getHtml,
496
+ getText,
497
+ defaultFormat
498
+ }) {
499
+ const [copied, setCopied] = React2__namespace.useState(false);
500
+ const copiedTimer = React2__namespace.useRef(
494
501
  void 0
495
502
  );
496
- React4__namespace.useEffect(() => () => window.clearTimeout(copiedTimer.current), []);
503
+ React2__namespace.useEffect(() => () => window.clearTimeout(copiedTimer.current), []);
497
504
  const flash = () => {
498
505
  setCopied(true);
499
506
  window.clearTimeout(copiedTimer.current);
@@ -524,21 +531,111 @@ function CopyMenu({ isSelf, markdown, getHtml, getText }) {
524
531
  }
525
532
  };
526
533
  const run = (fn) => {
527
- setOpen(false);
528
534
  void fn().then(flash, () => {
529
535
  });
530
536
  };
537
+ const copyRich = () => run(writeBoth);
538
+ const copyMarkdown = () => run(() => writeText(markdown || getText()));
539
+ const copyPlain = () => run(() => writeText(getText()));
540
+ const copyDefault = defaultFormat === "markdown" ? copyMarkdown : defaultFormat === "plain" ? copyPlain : copyRich;
541
+ return { copied, copyDefault, copyRich, copyMarkdown, copyPlain };
542
+ }
543
+ function ActionMenuItem({
544
+ item,
545
+ onSelect
546
+ }) {
547
+ return /* @__PURE__ */ jsxRuntime.jsx(chunk4SM3I7WE_cjs.DropdownItem, { onClick: () => onSelect(item.onSelect), children: item.description ? /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "flex flex-col items-start", children: [
548
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: item.label }),
549
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] font-normal text-neutral-400", children: item.description })
550
+ ] }) : item.label });
551
+ }
552
+ function FooterActionButton({
553
+ action,
554
+ isSelf
555
+ }) {
556
+ const [open, setOpen] = React2__namespace.useState(false);
557
+ const onClickCapture = action.submenu ? (e) => {
558
+ if (e.metaKey || e.ctrlKey) {
559
+ e.preventDefault();
560
+ e.stopPropagation();
561
+ action.onSelect();
562
+ }
563
+ } : void 0;
564
+ const button = /* @__PURE__ */ jsxRuntime.jsx(
565
+ "button",
566
+ {
567
+ type: "button",
568
+ "data-slot": `superchat-action-${action.id}`,
569
+ "aria-label": action.label,
570
+ title: action.title ?? action.label,
571
+ onClick: action.submenu ? void 0 : action.onSelect,
572
+ onClickCapture,
573
+ className: actionButtonClass,
574
+ children: action.icon
575
+ }
576
+ );
577
+ if (!action.submenu) return button;
578
+ return /* @__PURE__ */ jsxRuntime.jsx(
579
+ chunk4SM3I7WE_cjs.Dropdown,
580
+ {
581
+ open,
582
+ onOpenChange: setOpen,
583
+ placement: isSelf ? "top-end" : "top-start",
584
+ trigger: button,
585
+ children: action.submenu.items.map((item) => /* @__PURE__ */ jsxRuntime.jsx(
586
+ ActionMenuItem,
587
+ {
588
+ item,
589
+ onSelect: (fn) => {
590
+ setOpen(false);
591
+ fn();
592
+ }
593
+ },
594
+ item.id
595
+ ))
596
+ }
597
+ );
598
+ }
599
+ var MessageActionsBar = React2__namespace.forwardRef(function MessageActionsBar2({ actions, isSelf }, ref) {
600
+ return /* @__PURE__ */ jsxRuntime.jsx(
601
+ "div",
602
+ {
603
+ ref,
604
+ "data-slot": "superchat-message-actions",
605
+ className: chunkS5RVSXDV_cjs.cn(
606
+ "flex items-center gap-0.5",
607
+ isSelf && "justify-end",
608
+ actionRevealClass
609
+ ),
610
+ children: actions.map((action) => /* @__PURE__ */ jsxRuntime.jsx(FooterActionButton, { action, isSelf }, action.id))
611
+ }
612
+ );
613
+ });
614
+ function MessageOverflowMenu({
615
+ isSelf,
616
+ actions,
617
+ footerVisible
618
+ }) {
619
+ const [open, setOpen] = React2__namespace.useState(false);
620
+ const select = (fn) => {
621
+ setOpen(false);
622
+ fn();
623
+ };
531
624
  return /* @__PURE__ */ jsxRuntime.jsx(
532
625
  "div",
533
626
  {
534
627
  className: chunkS5RVSXDV_cjs.cn(
535
- "sticky bottom-2 shrink-0 self-end",
628
+ "sticky bottom-2 shrink-0 self-end transition-opacity",
536
629
  // Rich content (e.g. NITRO tables) layers internals up to z-50, so the
537
630
  // open menu's stacking context must clear that.
538
- open ? "z-[60]" : "z-10"
631
+ open ? "z-[60]" : "z-10",
632
+ // Hand off to the footer bar when it's visible. `invisible` (not
633
+ // just opacity) drops the hidden button from the tab order so
634
+ // keyboard users can't focus an unseen control.
635
+ footerVisible && !open && "pointer-events-none invisible opacity-0"
539
636
  ),
540
- children: /* @__PURE__ */ jsxRuntime.jsxs(
541
- chunkBOW7ZGI2_cjs.Dropdown,
637
+ children: /* @__PURE__ */ jsxRuntime.jsx(
638
+ chunk4SM3I7WE_cjs.Dropdown,
542
639
  {
543
640
  open,
544
641
  onOpenChange: setOpen,
@@ -547,32 +644,32 @@ function CopyMenu({ isSelf, markdown, getHtml, getText }) {
547
644
  "button",
548
645
  {
549
646
  type: "button",
550
- "data-slot": "superchat-copy-button",
551
- "aria-label": "Copy message",
552
- className: "rounded p-1 text-neutral-400 opacity-0 transition-opacity group-focus-within:opacity-100 group-hover:opacity-100 hover:text-neutral-600 focus-visible:opacity-100 dark:hover:text-neutral-200",
553
- children: copied ? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Check, { size: 14, "aria-hidden": "true" }) : /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Clipboard, { size: 14, "aria-hidden": "true" })
647
+ "data-slot": "superchat-overflow-button",
648
+ "aria-label": "Message actions",
649
+ className: chunkS5RVSXDV_cjs.cn(actionButtonClass, actionRevealClass),
650
+ children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Ellipsis, { size: 14, "aria-hidden": "true" })
554
651
  }
555
652
  ),
556
- children: [
557
- /* @__PURE__ */ jsxRuntime.jsx(chunkBOW7ZGI2_cjs.DropdownItem, { onClick: () => run(writeBoth), children: /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "flex flex-col items-start", children: [
558
- /* @__PURE__ */ jsxRuntime.jsx("span", { children: "Copy" }),
559
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] font-normal text-neutral-400", children: "Rich text + Markdown" })
560
- ] }) }),
561
- /* @__PURE__ */ jsxRuntime.jsx(
562
- chunkBOW7ZGI2_cjs.DropdownItem,
653
+ children: actions.map(
654
+ (action) => action.submenu ? (
655
+ // Actions with variants collapse to just their submenu — a
656
+ // top-level default item would duplicate the flyout's options.
657
+ /* @__PURE__ */ jsxRuntime.jsx(chunk4SM3I7WE_cjs.DropdownSubmenu, { label: action.submenu.label, children: action.submenu.items.map((item) => /* @__PURE__ */ jsxRuntime.jsx(ActionMenuItem, { item, onSelect: select }, item.id)) }, action.id)
658
+ ) : /* @__PURE__ */ jsxRuntime.jsx(
659
+ chunk4SM3I7WE_cjs.DropdownItem,
563
660
  {
564
- onClick: () => run(() => writeText(markdown || getText())),
565
- children: "Copy as Markdown"
566
- }
567
- ),
568
- /* @__PURE__ */ jsxRuntime.jsx(chunkBOW7ZGI2_cjs.DropdownItem, { onClick: () => run(() => writeText(getText())), children: "Copy as plain text" })
569
- ]
661
+ onClick: () => select(action.onSelect),
662
+ children: action.label
663
+ },
664
+ action.id
665
+ )
666
+ )
570
667
  }
571
668
  )
572
669
  }
573
670
  );
574
671
  }
575
- var MessageRow = React4__namespace.memo(function MessageRow2({
672
+ var MessageRow = React2__namespace.memo(function MessageRow2({
576
673
  message,
577
674
  participant,
578
675
  isSelf,
@@ -580,21 +677,22 @@ var MessageRow = React4__namespace.memo(function MessageRow2({
580
677
  linkBuilder,
581
678
  onReferenceClick,
582
679
  editable,
583
- onMessageEdited
680
+ onMessageEdited,
681
+ defaultCopyFormat = "rich"
584
682
  }) {
585
683
  const streaming = message.status === "streaming";
586
684
  const hasBody = !!message.text || (message.content?.length ?? 0) > 0;
587
- const [isEditing, setIsEditing] = React4__namespace.useState(false);
588
- const [draft, setDraft] = React4__namespace.useState(message.text ?? "");
589
- const editRef = React4__namespace.useRef(null);
590
- const bubbleRef = React4__namespace.useRef(null);
591
- const autosize = React4__namespace.useCallback(() => {
685
+ const [isEditing, setIsEditing] = React2__namespace.useState(false);
686
+ const [draft, setDraft] = React2__namespace.useState(message.text ?? "");
687
+ const editRef = React2__namespace.useRef(null);
688
+ const bubbleRef = React2__namespace.useRef(null);
689
+ const autosize = React2__namespace.useCallback(() => {
592
690
  const el = editRef.current;
593
691
  if (!el) return;
594
692
  el.style.height = "auto";
595
693
  el.style.height = `${el.scrollHeight}px`;
596
694
  }, []);
597
- React4__namespace.useEffect(() => {
695
+ React2__namespace.useEffect(() => {
598
696
  if (!isEditing) return;
599
697
  const el = editRef.current;
600
698
  if (!el) return;
@@ -602,6 +700,37 @@ var MessageRow = React4__namespace.memo(function MessageRow2({
602
700
  el.setSelectionRange(el.value.length, el.value.length);
603
701
  autosize();
604
702
  }, [isEditing, autosize]);
703
+ const canEdit = !!editable && isSelf && !streaming && typeof message.text === "string" && !message.content?.length;
704
+ const markdownSource = typeof message.text === "string" && message.text ? message.text : message.content?.map((block) => {
705
+ if (block.type === "code" && block.text) {
706
+ return `\`\`\`${block.language ?? ""}
707
+ ${block.text}
708
+ \`\`\``;
709
+ }
710
+ if ((block.type === "text" || block.type === "thinking") && block.text) {
711
+ return block.text;
712
+ }
713
+ return "";
714
+ }).filter(Boolean).join("\n\n") ?? "";
715
+ const canCopy = !isEditing && (!!message.content?.length || typeof message.text === "string" && message.text.length > 0);
716
+ const hasActions = canCopy || canEdit && !isEditing;
717
+ const copy = useMessageCopy({
718
+ markdown: markdownSource,
719
+ getHtml: () => bubbleRef.current?.innerHTML ?? "",
720
+ getText: () => bubbleRef.current?.textContent ?? "",
721
+ defaultFormat: defaultCopyFormat
722
+ });
723
+ const actionsBarRef = React2__namespace.useRef(null);
724
+ const [footerVisible, setFooterVisible] = React2__namespace.useState(true);
725
+ React2__namespace.useEffect(() => {
726
+ const el = actionsBarRef.current;
727
+ if (!el || typeof globalThis.IntersectionObserver === "undefined") return;
728
+ const observer = new globalThis.IntersectionObserver(([entry]) => {
729
+ setFooterVisible(entry?.isIntersecting ?? false);
730
+ });
731
+ observer.observe(el);
732
+ return () => observer.disconnect();
733
+ }, [hasActions]);
605
734
  if (message.type === "system") {
606
735
  return /* @__PURE__ */ jsxRuntime.jsx(
607
736
  "div",
@@ -633,7 +762,6 @@ var MessageRow = React4__namespace.memo(function MessageRow2({
633
762
  const accent = participant?.color;
634
763
  const accentTextColor = accessibleAccentTextColor(accent);
635
764
  const authorName = participant?.name ?? "Unknown";
636
- const canEdit = !!editable && isSelf && !streaming && typeof message.text === "string" && !message.content?.length;
637
765
  const startEdit = () => {
638
766
  setDraft(message.text ?? "");
639
767
  setIsEditing(true);
@@ -677,18 +805,46 @@ var MessageRow = React4__namespace.memo(function MessageRow2({
677
805
  requestAnimationFrame(autosize);
678
806
  });
679
807
  };
680
- const markdownSource = typeof message.text === "string" && message.text ? message.text : message.content?.map((block) => {
681
- if (block.type === "code" && block.text) {
682
- return `\`\`\`${block.language ?? ""}
683
- ${block.text}
684
- \`\`\``;
685
- }
686
- if ((block.type === "text" || block.type === "thinking") && block.text) {
687
- return block.text;
688
- }
689
- return "";
690
- }).filter(Boolean).join("\n\n") ?? "";
691
- const canCopy = !isEditing && (!!message.content?.length || typeof message.text === "string" && message.text.length > 0);
808
+ const actions = [
809
+ ...canCopy ? [
810
+ {
811
+ id: "copy",
812
+ label: "Copy message",
813
+ title: "Copy message (\u2318/Ctrl-click: default format)",
814
+ icon: copy.copied ? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Check, { size: 14, "aria-hidden": "true" }) : /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Clipboard, { size: 14, "aria-hidden": "true" }),
815
+ onSelect: copy.copyDefault,
816
+ submenu: {
817
+ label: "Copy as",
818
+ items: [
819
+ {
820
+ id: "copy-rich",
821
+ label: "Copy as rich text",
822
+ description: "Rich text + Markdown",
823
+ onSelect: copy.copyRich
824
+ },
825
+ {
826
+ id: "copy-markdown",
827
+ label: "Copy as Markdown",
828
+ onSelect: copy.copyMarkdown
829
+ },
830
+ {
831
+ id: "copy-plain",
832
+ label: "Copy as plain text",
833
+ onSelect: copy.copyPlain
834
+ }
835
+ ]
836
+ }
837
+ }
838
+ ] : [],
839
+ ...canEdit && !isEditing ? [
840
+ {
841
+ id: "edit",
842
+ label: "Edit message",
843
+ icon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Pencil, { size: 14, "aria-hidden": "true" }),
844
+ onSelect: startEdit
845
+ }
846
+ ] : []
847
+ ];
692
848
  return /* @__PURE__ */ jsxRuntime.jsxs(
693
849
  "div",
694
850
  {
@@ -726,17 +882,6 @@ ${block.text}
726
882
  title: `Edited ${formatTime(message.editedAt)}`,
727
883
  children: "(edited)"
728
884
  }
729
- ),
730
- canEdit && !isEditing && /* @__PURE__ */ jsxRuntime.jsx(
731
- "button",
732
- {
733
- type: "button",
734
- "data-slot": "superchat-edit-button",
735
- onClick: startEdit,
736
- "aria-label": "Edit message",
737
- className: "rounded p-0.5 text-neutral-400 opacity-0 transition-opacity group-focus-within:opacity-100 group-hover:opacity-100 hover:text-neutral-600 focus-visible:opacity-100 dark:hover:text-neutral-200",
738
- children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Pencil, { size: 14, "aria-hidden": "true" })
739
- }
740
885
  )
741
886
  ]
742
887
  }
@@ -749,17 +894,16 @@ ${block.text}
749
894
  isSelf ? "flex-row-reverse" : "flex-row"
750
895
  ),
751
896
  children: [
752
- canCopy && /* @__PURE__ */ jsxRuntime.jsx(
753
- CopyMenu,
897
+ hasActions && /* @__PURE__ */ jsxRuntime.jsx(
898
+ MessageOverflowMenu,
754
899
  {
755
900
  isSelf,
756
- markdown: markdownSource,
757
- getHtml: () => bubbleRef.current?.innerHTML ?? "",
758
- getText: () => bubbleRef.current?.textContent ?? ""
901
+ actions,
902
+ footerVisible
759
903
  }
760
904
  ),
761
905
  /* @__PURE__ */ jsxRuntime.jsx(
762
- chunkXS35KPBZ_cjs.ChatBubble,
906
+ chunk2A2FLQJC_cjs.ChatBubble,
763
907
  {
764
908
  ref: bubbleRef,
765
909
  "data-slot": "superchat-bubble",
@@ -822,7 +966,7 @@ ${block.text}
822
966
  ) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
823
967
  message.content?.map((block, i) => {
824
968
  if (block.type === "tool_use" && block.toolCall) {
825
- return /* @__PURE__ */ jsxRuntime.jsx(chunkXS35KPBZ_cjs.MCPToolCallDisplay, { toolCall: block.toolCall }, i);
969
+ return /* @__PURE__ */ jsxRuntime.jsx(chunk2A2FLQJC_cjs.MCPToolCallDisplay, { toolCall: block.toolCall }, i);
826
970
  }
827
971
  if ((block.type === "text" || block.type === "thinking") && block.text) {
828
972
  return /* @__PURE__ */ jsxRuntime.jsx(
@@ -862,12 +1006,20 @@ ${block.text}
862
1006
  streaming,
863
1007
  role: participant?.kind === "human" ? "user" : "assistant"
864
1008
  }) }),
865
- streaming && !hasBody && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(chunkXS35KPBZ_cjs.AITypingIndicator, {}) })
1009
+ streaming && !hasBody && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(chunk2A2FLQJC_cjs.AITypingIndicator, {}) })
866
1010
  ] })
867
1011
  }
868
1012
  )
869
1013
  ]
870
1014
  }
1015
+ ),
1016
+ hasActions && /* @__PURE__ */ jsxRuntime.jsx(
1017
+ MessageActionsBar,
1018
+ {
1019
+ ref: actionsBarRef,
1020
+ actions,
1021
+ isSelf
1022
+ }
871
1023
  )
872
1024
  ] })
873
1025
  ]
@@ -875,7 +1027,7 @@ ${block.text}
875
1027
  );
876
1028
  });
877
1029
  var sidebarItem = classVarianceAuthority.cva(
878
- "flex w-full items-center gap-2 rounded-lg px-3 py-2 text-left text-sm transition-colors",
1030
+ "flex w-full items-center gap-2 rounded-lg px-3 py-2 text-start text-sm transition-colors",
879
1031
  {
880
1032
  variants: {
881
1033
  active: {
@@ -895,11 +1047,12 @@ function VirtualThread({
895
1047
  onReferenceClick,
896
1048
  editable,
897
1049
  onMessageEdited,
1050
+ defaultCopyFormat,
898
1051
  order,
899
1052
  conversationId,
900
1053
  containerProps
901
1054
  }) {
902
- const parentRef = React4__namespace.useRef(null);
1055
+ const parentRef = React2__namespace.useRef(null);
903
1056
  const virtualizer = reactVirtual.useVirtualizer({
904
1057
  count: items.length,
905
1058
  getScrollElement: () => parentRef.current,
@@ -909,7 +1062,7 @@ function VirtualThread({
909
1062
  getItemKey: (index) => items[index]?.id ?? index
910
1063
  });
911
1064
  const count = items.length;
912
- React4__namespace.useEffect(() => {
1065
+ React2__namespace.useEffect(() => {
913
1066
  if (count === 0) return;
914
1067
  if (order === "desc") {
915
1068
  virtualizer.scrollToIndex(0, { align: "start" });
@@ -951,7 +1104,8 @@ function VirtualThread({
951
1104
  linkBuilder,
952
1105
  onReferenceClick,
953
1106
  editable,
954
- onMessageEdited
1107
+ onMessageEdited,
1108
+ defaultCopyFormat
955
1109
  }
956
1110
  ) })
957
1111
  },
@@ -972,6 +1126,7 @@ function SuperChat({
972
1126
  order = "asc",
973
1127
  virtualized = false,
974
1128
  linkBuilder,
1129
+ defaultCopyFormat,
975
1130
  className,
976
1131
  onMessageSent,
977
1132
  onMessageEdited,
@@ -979,35 +1134,35 @@ function SuperChat({
979
1134
  onReferenceClick,
980
1135
  onBack
981
1136
  }) {
982
- const headingId = React4__namespace.useId();
983
- const renderText = React4__namespace.useMemo(
1137
+ const headingId = React2__namespace.useId();
1138
+ const renderText = React2__namespace.useMemo(
984
1139
  () => renderTextContent ?? createMarkdownRenderer({
985
1140
  plugins: renderPlugins,
986
1141
  trusted: trustedContent
987
1142
  }),
988
1143
  [renderTextContent, renderPlugins, trustedContent]
989
1144
  );
990
- const threadRef = React4__namespace.useRef(null);
991
- React4__namespace.useEffect(() => {
1145
+ const threadRef = React2__namespace.useRef(null);
1146
+ React2__namespace.useEffect(() => {
992
1147
  if (virtualized) return;
993
1148
  const el = threadRef.current;
994
1149
  if (!el) return;
995
1150
  el.scrollTop = order === "desc" ? 0 : el.scrollHeight;
996
1151
  }, [conversation.thread.length, conversation.id, order, virtualized]);
997
- const participantById = React4__namespace.useMemo(() => {
1152
+ const participantById = React2__namespace.useMemo(() => {
998
1153
  const map = /* @__PURE__ */ new Map();
999
1154
  conversation.participants.forEach((p) => map.set(p.id, p));
1000
1155
  return map;
1001
1156
  }, [conversation]);
1002
- const orderedThread = React4__namespace.useMemo(() => {
1157
+ const orderedThread = React2__namespace.useMemo(() => {
1003
1158
  const sorted = [...conversation.thread].sort(byTime);
1004
1159
  return order === "desc" ? sorted.reverse() : sorted;
1005
1160
  }, [conversation, order]);
1006
- const onMessageEditedRef = React4__namespace.useRef(onMessageEdited);
1161
+ const onMessageEditedRef = React2__namespace.useRef(onMessageEdited);
1007
1162
  onMessageEditedRef.current = onMessageEdited;
1008
- const conversationRef = React4__namespace.useRef(conversation);
1163
+ const conversationRef = React2__namespace.useRef(conversation);
1009
1164
  conversationRef.current = conversation;
1010
- const handleMessageEdited = React4__namespace.useCallback(
1165
+ const handleMessageEdited = React2__namespace.useCallback(
1011
1166
  (messageId, text) => {
1012
1167
  onMessageEditedRef.current?.(messageId, text, {
1013
1168
  conversation: conversationRef.current
@@ -1016,7 +1171,7 @@ function SuperChat({
1016
1171
  []
1017
1172
  );
1018
1173
  const editable = !readOnly && !!onMessageEdited;
1019
- const mentionOptions = React4__namespace.useMemo(
1174
+ const mentionOptions = React2__namespace.useMemo(
1020
1175
  () => conversation.participants.filter((p) => p.kind !== "system").map((p) => ({
1021
1176
  id: p.id,
1022
1177
  label: p.name,
@@ -1026,18 +1181,33 @@ function SuperChat({
1026
1181
  })),
1027
1182
  [conversation.participants]
1028
1183
  );
1029
- const composerAccept = React4__namespace.useMemo(
1184
+ const composerAccept = React2__namespace.useMemo(
1030
1185
  () => acceptTokensFor(acceptedFileTypes),
1031
1186
  [acceptedFileTypes]
1032
1187
  );
1033
- const handleComposerSend = React4__namespace.useCallback(
1188
+ const [draft, setDraft] = React2__namespace.useState("");
1189
+ const draftEpochRef = React2__namespace.useRef(0);
1190
+ const handleDraftChange = React2__namespace.useCallback((value) => {
1191
+ draftEpochRef.current += 1;
1192
+ setDraft(value);
1193
+ }, []);
1194
+ const handleComposerSend = React2__namespace.useCallback(
1034
1195
  async (message) => {
1035
- const text = message.content;
1036
- const mentions = detectMentions(text, conversation.participants);
1037
- const attachments = await filesToComposerAttachments(
1038
- message.attachments ?? []
1039
- );
1040
- onMessageSent?.(text, { conversation, mentions, attachments });
1196
+ const epoch = draftEpochRef.current;
1197
+ try {
1198
+ const text = message.content;
1199
+ const mentions = detectMentions(text, conversation.participants);
1200
+ const attachments = await filesToComposerAttachments(
1201
+ message.attachments ?? []
1202
+ );
1203
+ await Promise.resolve(
1204
+ onMessageSent?.(text, { conversation, mentions, attachments })
1205
+ );
1206
+ } catch {
1207
+ if (draftEpochRef.current === epoch) {
1208
+ setDraft(message.content);
1209
+ }
1210
+ }
1041
1211
  },
1042
1212
  [conversation, onMessageSent]
1043
1213
  );
@@ -1065,7 +1235,7 @@ function SuperChat({
1065
1235
  type: "button",
1066
1236
  onClick: onBack,
1067
1237
  "aria-label": "Back to conversations",
1068
- className: "-ml-1 shrink-0 rounded-md p-1 text-neutral-500 hover:bg-neutral-100 sm:hidden dark:text-neutral-300 dark:hover:bg-neutral-800",
1238
+ className: "-ms-1 shrink-0 rounded-md p-1 text-neutral-500 hover:bg-neutral-100 sm:hidden dark:text-neutral-300 dark:hover:bg-neutral-800",
1069
1239
  children: /* @__PURE__ */ jsxRuntime.jsx(
1070
1240
  "svg",
1071
1241
  {
@@ -1111,7 +1281,7 @@ function SuperChat({
1111
1281
  onClick: () => onConversationClosed(conversation),
1112
1282
  "aria-label": "Close conversation",
1113
1283
  className: "rounded-md p-1 text-neutral-400 hover:bg-neutral-100 dark:hover:bg-neutral-800",
1114
- children: /* @__PURE__ */ jsxRuntime.jsx(chunkXS35KPBZ_cjs.CloseIcon, {})
1284
+ children: /* @__PURE__ */ jsxRuntime.jsx(chunk2A2FLQJC_cjs.CloseIcon, {})
1115
1285
  }
1116
1286
  )
1117
1287
  ]
@@ -1128,6 +1298,7 @@ function SuperChat({
1128
1298
  onReferenceClick,
1129
1299
  editable,
1130
1300
  onMessageEdited: handleMessageEdited,
1301
+ defaultCopyFormat,
1131
1302
  order,
1132
1303
  conversationId: conversation.id,
1133
1304
  containerProps: {
@@ -1160,23 +1331,27 @@ function SuperChat({
1160
1331
  linkBuilder,
1161
1332
  onReferenceClick,
1162
1333
  editable,
1163
- onMessageEdited: handleMessageEdited
1334
+ onMessageEdited: handleMessageEdited,
1335
+ defaultCopyFormat
1164
1336
  },
1165
1337
  m.id
1166
1338
  ))
1167
1339
  }
1168
1340
  ),
1169
1341
  /* @__PURE__ */ jsxRuntime.jsx(
1170
- chunk26DPQUSB_cjs.MessageComposer,
1342
+ chunk2A2FLQJC_cjs.ChatComposer,
1171
1343
  {
1344
+ value: draft,
1345
+ onValueChange: handleDraftChange,
1172
1346
  onSend: handleComposerSend,
1173
1347
  disabled: readOnly,
1174
1348
  placeholder: readOnly ? "Read-only conversation" : "Type a message\u2026 use @ to address an agent",
1175
1349
  mentionOptions,
1176
- showAttachmentPicker: !readOnly,
1177
- showCameraButton: false,
1350
+ allowAttachments: !readOnly,
1178
1351
  acceptedFileTypes: composerAccept,
1179
- maxLength: 1e5
1352
+ maxFileSize: 25 * 1024 * 1024,
1353
+ maxLength: 1e5,
1354
+ inputLabel: "Message"
1180
1355
  }
1181
1356
  )
1182
1357
  ]
@@ -1191,12 +1366,12 @@ function SuperChatConversations({
1191
1366
  onConversationOpened,
1192
1367
  onNewConversation
1193
1368
  }) {
1194
- const [internalActive, setInternalActive] = React4__namespace.useState(
1369
+ const [internalActive, setInternalActive] = React2__namespace.useState(
1195
1370
  defaultActiveConversationId ?? conversations[0]?.id
1196
1371
  );
1197
1372
  const requestedId = activeConversationId ?? internalActive;
1198
1373
  const activeId = conversations.some((c) => c.id === requestedId) ? requestedId : conversations[0]?.id;
1199
- const sortedConversations = React4__namespace.useMemo(
1374
+ const sortedConversations = React2__namespace.useMemo(
1200
1375
  () => [...conversations].sort((a, b) => lastActivityOf(b) - lastActivityOf(a)),
1201
1376
  [conversations]
1202
1377
  );
@@ -1210,7 +1385,7 @@ function SuperChatConversations({
1210
1385
  "data-slot": "superchat-conversations",
1211
1386
  "aria-label": "Conversations",
1212
1387
  className: chunkS5RVSXDV_cjs.cn(
1213
- "flex w-64 shrink-0 flex-col border-r border-neutral-200 dark:border-neutral-700",
1388
+ "flex w-64 shrink-0 flex-col border-e border-neutral-200 dark:border-neutral-700",
1214
1389
  className
1215
1390
  ),
1216
1391
  children: [
@@ -1248,7 +1423,7 @@ function SuperChatConversations({
1248
1423
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "block truncate font-medium", children: c.title }),
1249
1424
  last?.text && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "block truncate text-xs text-neutral-600 dark:text-neutral-400", children: last.text })
1250
1425
  ] }),
1251
- !!c.unread && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "bg-primary-600 ml-1 inline-flex h-5 min-w-5 items-center justify-center rounded-full px-1.5 text-[10px] font-semibold text-white", children: [
1426
+ !!c.unread && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "bg-primary-600 ms-1 inline-flex h-5 min-w-5 items-center justify-center rounded-full px-1.5 text-[10px] font-semibold text-white", children: [
1252
1427
  c.unread,
1253
1428
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "sr-only", children: " unread messages" })
1254
1429
  ] })
@@ -1276,6 +1451,7 @@ function SuperChatInbox({
1276
1451
  virtualized,
1277
1452
  showSidebar = true,
1278
1453
  linkBuilder,
1454
+ defaultCopyFormat,
1279
1455
  className,
1280
1456
  onMessageSent,
1281
1457
  onMessageEdited,
@@ -1284,13 +1460,13 @@ function SuperChatInbox({
1284
1460
  onNewConversation,
1285
1461
  onReferenceClick
1286
1462
  }) {
1287
- const [internalActive, setInternalActive] = React4__namespace.useState(
1463
+ const [internalActive, setInternalActive] = React2__namespace.useState(
1288
1464
  defaultActiveConversationId ?? conversations[0]?.id
1289
1465
  );
1290
1466
  const requestedId = activeConversationId ?? internalActive;
1291
1467
  const active = conversations.find((c) => c.id === requestedId) ?? conversations[0];
1292
1468
  const activeId = active?.id;
1293
- const [mobileView, setMobileView] = React4__namespace.useState("list");
1469
+ const [mobileView, setMobileView] = React2__namespace.useState("list");
1294
1470
  const handleOpen = (c) => {
1295
1471
  if (activeConversationId === void 0) setInternalActive(c.id);
1296
1472
  setMobileView("chat");
@@ -1333,6 +1509,7 @@ function SuperChatInbox({
1333
1509
  order,
1334
1510
  virtualized,
1335
1511
  linkBuilder,
1512
+ defaultCopyFormat,
1336
1513
  onMessageSent,
1337
1514
  onMessageEdited,
1338
1515
  onConversationClosed,