@mieweb/ui 0.8.0 → 0.9.0

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 (380) 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-RZJXCI53.js → chunk-22CYDCXA.js} +3 -3
  26. package/dist/{chunk-RZJXCI53.js.map → chunk-22CYDCXA.js.map} +1 -1
  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-26DPQUSB.cjs → chunk-5BVFVXHN.cjs} +224 -157
  38. package/dist/chunk-5BVFVXHN.cjs.map +1 -0
  39. package/dist/{chunk-QHTDWIED.js → chunk-5H7SAEQO.js} +5 -5
  40. package/dist/{chunk-QHTDWIED.js.map → chunk-5H7SAEQO.js.map} +1 -1
  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-RYQ3S3KO.cjs → chunk-FQBTGS3E.cjs} +23 -20
  84. package/dist/chunk-FQBTGS3E.cjs.map +1 -0
  85. package/dist/{chunk-LQHI44OZ.cjs → chunk-FUFBRKOG.cjs} +59 -59
  86. package/dist/{chunk-LQHI44OZ.cjs.map → chunk-FUFBRKOG.cjs.map} +1 -1
  87. package/dist/{chunk-DG7KE4YJ.cjs → chunk-FYAKUU2A.cjs} +38 -21
  88. package/dist/chunk-FYAKUU2A.cjs.map +1 -0
  89. package/dist/{chunk-7L7OPISJ.cjs → chunk-H4AVMUOC.cjs} +12 -6
  90. package/dist/chunk-H4AVMUOC.cjs.map +1 -0
  91. package/dist/{chunk-I2ECTLON.cjs → chunk-HXSA6QC5.cjs} +3 -3
  92. package/dist/{chunk-I2ECTLON.cjs.map → chunk-HXSA6QC5.cjs.map} +1 -1
  93. package/dist/{chunk-DCBMTFLE.js → chunk-HZ4MBUC3.js} +3 -3
  94. package/dist/{chunk-DCBMTFLE.js.map → chunk-HZ4MBUC3.js.map} +1 -1
  95. package/dist/{chunk-X5ZPYYMS.js → chunk-I3DQXUSC.js} +3 -3
  96. package/dist/{chunk-X5ZPYYMS.js.map → chunk-I3DQXUSC.js.map} +1 -1
  97. package/dist/{chunk-FN6VHMLM.cjs → chunk-IB54SKWB.cjs} +8 -8
  98. package/dist/{chunk-FN6VHMLM.cjs.map → chunk-IB54SKWB.cjs.map} +1 -1
  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-D2GID3YK.js → chunk-KREUYVMZ.js} +58 -6
  106. package/dist/chunk-KREUYVMZ.js.map +1 -0
  107. package/dist/{chunk-Y6YSJPVC.js → chunk-KRU6IGV7.js} +11 -3
  108. package/dist/chunk-KRU6IGV7.js.map +1 -0
  109. package/dist/{chunk-LZU7YBXG.js → chunk-KU3XRHWA.js} +169 -10
  110. package/dist/chunk-KU3XRHWA.js.map +1 -0
  111. package/dist/{chunk-P2VTQ5AR.cjs → chunk-L52N6BEN.cjs} +39 -23
  112. package/dist/chunk-L52N6BEN.cjs.map +1 -0
  113. package/dist/{chunk-XWYKLEKG.js → chunk-L5W7TJQ5.js} +11 -5
  114. package/dist/chunk-L5W7TJQ5.js.map +1 -0
  115. package/dist/{chunk-PAM5UUBL.cjs → chunk-L7L5S2HO.cjs} +18 -2
  116. package/dist/{chunk-PAM5UUBL.cjs.map → chunk-L7L5S2HO.cjs.map} +1 -1
  117. package/dist/{chunk-SEPYBAML.js → chunk-LAEIVOIY.js} +38 -21
  118. package/dist/chunk-LAEIVOIY.js.map +1 -0
  119. package/dist/{chunk-Z5KFXHDP.cjs → chunk-MM7QKUE3.cjs} +5 -5
  120. package/dist/{chunk-Z5KFXHDP.cjs.map → chunk-MM7QKUE3.cjs.map} +1 -1
  121. package/dist/{chunk-FJ7YPVKV.js → chunk-MUIDWFYJ.js} +3 -3
  122. package/dist/{chunk-FJ7YPVKV.js.map → chunk-MUIDWFYJ.js.map} +1 -1
  123. package/dist/{chunk-FDV7EQWH.js → chunk-MXQ7J4BB.js} +21 -18
  124. package/dist/chunk-MXQ7J4BB.js.map +1 -0
  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-EKRT7K2K.js → chunk-O6GJ4IYS.js} +222 -157
  132. package/dist/chunk-O6GJ4IYS.js.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-P3JEMF6E.cjs → chunk-RSCA5AZW.cjs} +4 -4
  168. package/dist/{chunk-P3JEMF6E.cjs.map → chunk-RSCA5AZW.cjs.map} +1 -1
  169. package/dist/{chunk-5Y5FSR4N.js → chunk-SCXELRRZ.js} +3 -3
  170. package/dist/{chunk-5Y5FSR4N.js.map → chunk-SCXELRRZ.js.map} +1 -1
  171. package/dist/{chunk-JWTCEWQ4.cjs → chunk-SNEQXSC5.cjs} +2 -2
  172. package/dist/{chunk-JWTCEWQ4.cjs.map → chunk-SNEQXSC5.cjs.map} +1 -1
  173. package/dist/{chunk-U5TTXN45.cjs → chunk-SRA2L3SQ.cjs} +9 -7
  174. package/dist/chunk-SRA2L3SQ.cjs.map +1 -0
  175. package/dist/{chunk-5U6GETAW.js → chunk-TQDZLRIE.js} +3 -3
  176. package/dist/chunk-TQDZLRIE.js.map +1 -0
  177. package/dist/{chunk-HK3AMH3Q.cjs → chunk-VROIMIHB.cjs} +11 -3
  178. package/dist/chunk-VROIMIHB.cjs.map +1 -0
  179. package/dist/{chunk-3SHLOF4V.cjs → chunk-VTR2KGLY.cjs} +9 -9
  180. package/dist/{chunk-3SHLOF4V.cjs.map → chunk-VTR2KGLY.cjs.map} +1 -1
  181. package/dist/{chunk-XO3WLK65.js → chunk-VVDE4CHU.js} +3 -3
  182. package/dist/{chunk-XO3WLK65.js.map → chunk-VVDE4CHU.js.map} +1 -1
  183. package/dist/{chunk-XS35KPBZ.cjs → chunk-WIAQQNFU.cjs} +4 -4
  184. package/dist/{chunk-XS35KPBZ.cjs.map → chunk-WIAQQNFU.cjs.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 +264 -106
  282. package/dist/components/SuperChat/index.cjs.map +1 -1
  283. package/dist/components/SuperChat/index.d.cts +13 -5
  284. package/dist/components/SuperChat/index.d.ts +13 -5
  285. package/dist/components/SuperChat/index.js +255 -97
  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 +2399 -1640
  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 +1296 -574
  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.map +0 -1
  345. package/dist/chunk-3PXOIAF6.js +0 -3
  346. package/dist/chunk-4AE2L6AO.cjs.map +0 -1
  347. package/dist/chunk-4PIW3Y5M.js.map +0 -1
  348. package/dist/chunk-5JZIDILK.cjs.map +0 -1
  349. package/dist/chunk-5U6GETAW.js.map +0 -1
  350. package/dist/chunk-6EWJGRC3.js.map +0 -1
  351. package/dist/chunk-7L7OPISJ.cjs.map +0 -1
  352. package/dist/chunk-AESFOMSH.js.map +0 -1
  353. package/dist/chunk-BOOJDRJO.js.map +0 -1
  354. package/dist/chunk-BOW7ZGI2.cjs.map +0 -1
  355. package/dist/chunk-D2GID3YK.js.map +0 -1
  356. package/dist/chunk-DG7KE4YJ.cjs.map +0 -1
  357. package/dist/chunk-EKRT7K2K.js.map +0 -1
  358. package/dist/chunk-EPQPUFS6.cjs.map +0 -1
  359. package/dist/chunk-FDUA6OGN.js.map +0 -1
  360. package/dist/chunk-FDV7EQWH.js.map +0 -1
  361. package/dist/chunk-FF235PKY.cjs.map +0 -1
  362. package/dist/chunk-H7QSGFMZ.cjs.map +0 -1
  363. package/dist/chunk-HK3AMH3Q.cjs.map +0 -1
  364. package/dist/chunk-IILJGFI5.js.map +0 -1
  365. package/dist/chunk-IYXCFIMP.js.map +0 -1
  366. package/dist/chunk-JHZW3Y62.js.map +0 -1
  367. package/dist/chunk-L6D4CKLV.cjs.map +0 -1
  368. package/dist/chunk-LZU7YBXG.js.map +0 -1
  369. package/dist/chunk-MYFZYUPR.cjs.map +0 -1
  370. package/dist/chunk-N3Y43KOB.js.map +0 -1
  371. package/dist/chunk-P2VTQ5AR.cjs.map +0 -1
  372. package/dist/chunk-RDGRKYQ5.cjs.map +0 -1
  373. package/dist/chunk-RYQ3S3KO.cjs.map +0 -1
  374. package/dist/chunk-SEPYBAML.js.map +0 -1
  375. package/dist/chunk-SK7H3Z67.cjs.map +0 -1
  376. package/dist/chunk-SPWVKDGC.cjs.map +0 -1
  377. package/dist/chunk-U5TTXN45.cjs.map +0 -1
  378. package/dist/chunk-XMCIXHGH.js.map +0 -1
  379. package/dist/chunk-XWYKLEKG.js.map +0 -1
  380. package/dist/chunk-Y6YSJPVC.js.map +0 -1
@@ -1,20 +1,20 @@
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 chunkWIAQQNFU_cjs = require('../../chunk-WIAQQNFU.cjs');
5
+ var chunk5BVFVXHN_cjs = require('../../chunk-5BVFVXHN.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
12
  var chunkYVL3XATO_cjs = require('../../chunk-YVL3XATO.cjs');
13
+ var chunkS5RVSXDV_cjs = require('../../chunk-S5RVSXDV.cjs');
13
14
  require('../../chunk-FHY3K6PL.cjs');
14
15
  require('../../chunk-FSGEDDF2.cjs');
15
- require('../../chunk-MYFZYUPR.cjs');
16
- var chunkS5RVSXDV_cjs = require('../../chunk-S5RVSXDV.cjs');
17
- var React4 = require('react');
16
+ require('../../chunk-AOHJILLU.cjs');
17
+ var React2 = require('react');
18
18
  var Markdown = require('react-markdown');
19
19
  var remarkGfm = require('remark-gfm');
20
20
  var rehypeSanitize = require('rehype-sanitize');
@@ -43,7 +43,7 @@ function _interopNamespace(e) {
43
43
  return Object.freeze(n);
44
44
  }
45
45
 
46
- var React4__namespace = /*#__PURE__*/_interopNamespace(React4);
46
+ var React2__namespace = /*#__PURE__*/_interopNamespace(React2);
47
47
  var Markdown__default = /*#__PURE__*/_interopDefault(Markdown);
48
48
  var remarkGfm__default = /*#__PURE__*/_interopDefault(remarkGfm);
49
49
  var rehypeSanitize__default = /*#__PURE__*/_interopDefault(rehypeSanitize);
@@ -178,7 +178,7 @@ function baseComponents() {
178
178
  {
179
179
  ...props,
180
180
  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",
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-start dark:[&_th]:border-neutral-700",
182
182
  props.className
183
183
  )
184
184
  }
@@ -292,7 +292,7 @@ var transformUrl = (url, key, node) => {
292
292
  }
293
293
  return Markdown.defaultUrlTransform(url);
294
294
  };
295
- var MarkdownContent = React4__namespace.memo(function MarkdownContent2({
295
+ var MarkdownContent = React2__namespace.memo(function MarkdownContent2({
296
296
  text,
297
297
  messageId,
298
298
  streaming,
@@ -396,13 +396,13 @@ function ParticipantAvatar({
396
396
  const isAgent = participant?.kind === "agent";
397
397
  const backgroundColor = participant?.color ?? (isAgent ? "var(--mieweb-primary-700, #1f2937)" : "#64748b");
398
398
  return /* @__PURE__ */ jsxRuntime.jsx(
399
- chunkU3JU6BI5_cjs.Avatar,
399
+ chunkJEIW7BSV_cjs.Avatar,
400
400
  {
401
401
  size: "xs",
402
402
  src: participant?.avatar,
403
403
  alt: "",
404
404
  name: participant?.name ?? "?",
405
- fallback: isAgent ? /* @__PURE__ */ jsxRuntime.jsx(chunkXS35KPBZ_cjs.SparklesIcon, { size: "sm" }) : void 0,
405
+ fallback: isAgent ? /* @__PURE__ */ jsxRuntime.jsx(chunkWIAQQNFU_cjs.SparklesIcon, { size: "sm" }) : void 0,
406
406
  style: { backgroundColor },
407
407
  "aria-hidden": "true",
408
408
  className: "shrink-0"
@@ -487,13 +487,19 @@ function filesToComposerAttachments(files) {
487
487
  )
488
488
  );
489
489
  }
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(
490
+ var actionRevealClass = "opacity-0 transition-opacity group-focus-within:opacity-100 group-hover:opacity-100 focus-visible:opacity-100 [@media(pointer:coarse)]:opacity-100";
491
+ var actionButtonClass = "rounded p-1 text-neutral-400 hover:text-neutral-600 dark:hover:text-neutral-200";
492
+ function useMessageCopy({
493
+ markdown,
494
+ getHtml,
495
+ getText,
496
+ defaultFormat
497
+ }) {
498
+ const [copied, setCopied] = React2__namespace.useState(false);
499
+ const copiedTimer = React2__namespace.useRef(
494
500
  void 0
495
501
  );
496
- React4__namespace.useEffect(() => () => window.clearTimeout(copiedTimer.current), []);
502
+ React2__namespace.useEffect(() => () => window.clearTimeout(copiedTimer.current), []);
497
503
  const flash = () => {
498
504
  setCopied(true);
499
505
  window.clearTimeout(copiedTimer.current);
@@ -524,21 +530,111 @@ function CopyMenu({ isSelf, markdown, getHtml, getText }) {
524
530
  }
525
531
  };
526
532
  const run = (fn) => {
527
- setOpen(false);
528
533
  void fn().then(flash, () => {
529
534
  });
530
535
  };
536
+ const copyRich = () => run(writeBoth);
537
+ const copyMarkdown = () => run(() => writeText(markdown || getText()));
538
+ const copyPlain = () => run(() => writeText(getText()));
539
+ const copyDefault = defaultFormat === "markdown" ? copyMarkdown : defaultFormat === "plain" ? copyPlain : copyRich;
540
+ return { copied, copyDefault, copyRich, copyMarkdown, copyPlain };
541
+ }
542
+ function ActionMenuItem({
543
+ item,
544
+ onSelect
545
+ }) {
546
+ 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: [
547
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: item.label }),
548
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] font-normal text-neutral-400", children: item.description })
549
+ ] }) : item.label });
550
+ }
551
+ function FooterActionButton({
552
+ action,
553
+ isSelf
554
+ }) {
555
+ const [open, setOpen] = React2__namespace.useState(false);
556
+ const onClickCapture = action.submenu ? (e) => {
557
+ if (e.metaKey || e.ctrlKey) {
558
+ e.preventDefault();
559
+ e.stopPropagation();
560
+ action.onSelect();
561
+ }
562
+ } : void 0;
563
+ const button = /* @__PURE__ */ jsxRuntime.jsx(
564
+ "button",
565
+ {
566
+ type: "button",
567
+ "data-slot": `superchat-action-${action.id}`,
568
+ "aria-label": action.label,
569
+ title: action.title ?? action.label,
570
+ onClick: action.submenu ? void 0 : action.onSelect,
571
+ onClickCapture,
572
+ className: actionButtonClass,
573
+ children: action.icon
574
+ }
575
+ );
576
+ if (!action.submenu) return button;
577
+ return /* @__PURE__ */ jsxRuntime.jsx(
578
+ chunk4SM3I7WE_cjs.Dropdown,
579
+ {
580
+ open,
581
+ onOpenChange: setOpen,
582
+ placement: isSelf ? "top-end" : "top-start",
583
+ trigger: button,
584
+ children: action.submenu.items.map((item) => /* @__PURE__ */ jsxRuntime.jsx(
585
+ ActionMenuItem,
586
+ {
587
+ item,
588
+ onSelect: (fn) => {
589
+ setOpen(false);
590
+ fn();
591
+ }
592
+ },
593
+ item.id
594
+ ))
595
+ }
596
+ );
597
+ }
598
+ var MessageActionsBar = React2__namespace.forwardRef(function MessageActionsBar2({ actions, isSelf }, ref) {
531
599
  return /* @__PURE__ */ jsxRuntime.jsx(
532
600
  "div",
533
601
  {
602
+ ref,
603
+ "data-slot": "superchat-message-actions",
534
604
  className: chunkS5RVSXDV_cjs.cn(
535
- "sticky bottom-2 shrink-0 self-end",
605
+ "flex items-center gap-0.5",
606
+ isSelf && "justify-end",
607
+ actionRevealClass
608
+ ),
609
+ children: actions.map((action) => /* @__PURE__ */ jsxRuntime.jsx(FooterActionButton, { action, isSelf }, action.id))
610
+ }
611
+ );
612
+ });
613
+ function MessageOverflowMenu({
614
+ isSelf,
615
+ actions,
616
+ footerVisible
617
+ }) {
618
+ const [open, setOpen] = React2__namespace.useState(false);
619
+ const select = (fn) => {
620
+ setOpen(false);
621
+ fn();
622
+ };
623
+ return /* @__PURE__ */ jsxRuntime.jsx(
624
+ "div",
625
+ {
626
+ className: chunkS5RVSXDV_cjs.cn(
627
+ "sticky bottom-2 shrink-0 self-end transition-opacity",
536
628
  // Rich content (e.g. NITRO tables) layers internals up to z-50, so the
537
629
  // open menu's stacking context must clear that.
538
- open ? "z-[60]" : "z-10"
630
+ open ? "z-[60]" : "z-10",
631
+ // Hand off to the footer bar when it's visible. `invisible` (not
632
+ // just opacity) drops the hidden button from the tab order so
633
+ // keyboard users can't focus an unseen control.
634
+ footerVisible && !open && "pointer-events-none invisible opacity-0"
539
635
  ),
540
- children: /* @__PURE__ */ jsxRuntime.jsxs(
541
- chunkBOW7ZGI2_cjs.Dropdown,
636
+ children: /* @__PURE__ */ jsxRuntime.jsx(
637
+ chunk4SM3I7WE_cjs.Dropdown,
542
638
  {
543
639
  open,
544
640
  onOpenChange: setOpen,
@@ -547,32 +643,32 @@ function CopyMenu({ isSelf, markdown, getHtml, getText }) {
547
643
  "button",
548
644
  {
549
645
  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" })
646
+ "data-slot": "superchat-overflow-button",
647
+ "aria-label": "Message actions",
648
+ className: chunkS5RVSXDV_cjs.cn(actionButtonClass, actionRevealClass),
649
+ children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Ellipsis, { size: 14, "aria-hidden": "true" })
554
650
  }
555
651
  ),
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,
652
+ children: actions.map(
653
+ (action) => action.submenu ? (
654
+ // Actions with variants collapse to just their submenu — a
655
+ // top-level default item would duplicate the flyout's options.
656
+ /* @__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)
657
+ ) : /* @__PURE__ */ jsxRuntime.jsx(
658
+ chunk4SM3I7WE_cjs.DropdownItem,
563
659
  {
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
- ]
660
+ onClick: () => select(action.onSelect),
661
+ children: action.label
662
+ },
663
+ action.id
664
+ )
665
+ )
570
666
  }
571
667
  )
572
668
  }
573
669
  );
574
670
  }
575
- var MessageRow = React4__namespace.memo(function MessageRow2({
671
+ var MessageRow = React2__namespace.memo(function MessageRow2({
576
672
  message,
577
673
  participant,
578
674
  isSelf,
@@ -580,21 +676,22 @@ var MessageRow = React4__namespace.memo(function MessageRow2({
580
676
  linkBuilder,
581
677
  onReferenceClick,
582
678
  editable,
583
- onMessageEdited
679
+ onMessageEdited,
680
+ defaultCopyFormat = "rich"
584
681
  }) {
585
682
  const streaming = message.status === "streaming";
586
683
  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(() => {
684
+ const [isEditing, setIsEditing] = React2__namespace.useState(false);
685
+ const [draft, setDraft] = React2__namespace.useState(message.text ?? "");
686
+ const editRef = React2__namespace.useRef(null);
687
+ const bubbleRef = React2__namespace.useRef(null);
688
+ const autosize = React2__namespace.useCallback(() => {
592
689
  const el = editRef.current;
593
690
  if (!el) return;
594
691
  el.style.height = "auto";
595
692
  el.style.height = `${el.scrollHeight}px`;
596
693
  }, []);
597
- React4__namespace.useEffect(() => {
694
+ React2__namespace.useEffect(() => {
598
695
  if (!isEditing) return;
599
696
  const el = editRef.current;
600
697
  if (!el) return;
@@ -602,6 +699,37 @@ var MessageRow = React4__namespace.memo(function MessageRow2({
602
699
  el.setSelectionRange(el.value.length, el.value.length);
603
700
  autosize();
604
701
  }, [isEditing, autosize]);
702
+ const canEdit = !!editable && isSelf && !streaming && typeof message.text === "string" && !message.content?.length;
703
+ const markdownSource = typeof message.text === "string" && message.text ? message.text : message.content?.map((block) => {
704
+ if (block.type === "code" && block.text) {
705
+ return `\`\`\`${block.language ?? ""}
706
+ ${block.text}
707
+ \`\`\``;
708
+ }
709
+ if ((block.type === "text" || block.type === "thinking") && block.text) {
710
+ return block.text;
711
+ }
712
+ return "";
713
+ }).filter(Boolean).join("\n\n") ?? "";
714
+ const canCopy = !isEditing && (!!message.content?.length || typeof message.text === "string" && message.text.length > 0);
715
+ const hasActions = canCopy || canEdit && !isEditing;
716
+ const copy = useMessageCopy({
717
+ markdown: markdownSource,
718
+ getHtml: () => bubbleRef.current?.innerHTML ?? "",
719
+ getText: () => bubbleRef.current?.textContent ?? "",
720
+ defaultFormat: defaultCopyFormat
721
+ });
722
+ const actionsBarRef = React2__namespace.useRef(null);
723
+ const [footerVisible, setFooterVisible] = React2__namespace.useState(true);
724
+ React2__namespace.useEffect(() => {
725
+ const el = actionsBarRef.current;
726
+ if (!el || typeof globalThis.IntersectionObserver === "undefined") return;
727
+ const observer = new globalThis.IntersectionObserver(([entry]) => {
728
+ setFooterVisible(entry?.isIntersecting ?? false);
729
+ });
730
+ observer.observe(el);
731
+ return () => observer.disconnect();
732
+ }, [hasActions]);
605
733
  if (message.type === "system") {
606
734
  return /* @__PURE__ */ jsxRuntime.jsx(
607
735
  "div",
@@ -633,7 +761,6 @@ var MessageRow = React4__namespace.memo(function MessageRow2({
633
761
  const accent = participant?.color;
634
762
  const accentTextColor = accessibleAccentTextColor(accent);
635
763
  const authorName = participant?.name ?? "Unknown";
636
- const canEdit = !!editable && isSelf && !streaming && typeof message.text === "string" && !message.content?.length;
637
764
  const startEdit = () => {
638
765
  setDraft(message.text ?? "");
639
766
  setIsEditing(true);
@@ -677,18 +804,46 @@ var MessageRow = React4__namespace.memo(function MessageRow2({
677
804
  requestAnimationFrame(autosize);
678
805
  });
679
806
  };
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);
807
+ const actions = [
808
+ ...canCopy ? [
809
+ {
810
+ id: "copy",
811
+ label: "Copy message",
812
+ title: "Copy message (\u2318/Ctrl-click: default format)",
813
+ icon: copy.copied ? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Check, { size: 14, "aria-hidden": "true" }) : /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Clipboard, { size: 14, "aria-hidden": "true" }),
814
+ onSelect: copy.copyDefault,
815
+ submenu: {
816
+ label: "Copy as",
817
+ items: [
818
+ {
819
+ id: "copy-rich",
820
+ label: "Copy as rich text",
821
+ description: "Rich text + Markdown",
822
+ onSelect: copy.copyRich
823
+ },
824
+ {
825
+ id: "copy-markdown",
826
+ label: "Copy as Markdown",
827
+ onSelect: copy.copyMarkdown
828
+ },
829
+ {
830
+ id: "copy-plain",
831
+ label: "Copy as plain text",
832
+ onSelect: copy.copyPlain
833
+ }
834
+ ]
835
+ }
836
+ }
837
+ ] : [],
838
+ ...canEdit && !isEditing ? [
839
+ {
840
+ id: "edit",
841
+ label: "Edit message",
842
+ icon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Pencil, { size: 14, "aria-hidden": "true" }),
843
+ onSelect: startEdit
844
+ }
845
+ ] : []
846
+ ];
692
847
  return /* @__PURE__ */ jsxRuntime.jsxs(
693
848
  "div",
694
849
  {
@@ -726,17 +881,6 @@ ${block.text}
726
881
  title: `Edited ${formatTime(message.editedAt)}`,
727
882
  children: "(edited)"
728
883
  }
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
884
  )
741
885
  ]
742
886
  }
@@ -749,17 +893,16 @@ ${block.text}
749
893
  isSelf ? "flex-row-reverse" : "flex-row"
750
894
  ),
751
895
  children: [
752
- canCopy && /* @__PURE__ */ jsxRuntime.jsx(
753
- CopyMenu,
896
+ hasActions && /* @__PURE__ */ jsxRuntime.jsx(
897
+ MessageOverflowMenu,
754
898
  {
755
899
  isSelf,
756
- markdown: markdownSource,
757
- getHtml: () => bubbleRef.current?.innerHTML ?? "",
758
- getText: () => bubbleRef.current?.textContent ?? ""
900
+ actions,
901
+ footerVisible
759
902
  }
760
903
  ),
761
904
  /* @__PURE__ */ jsxRuntime.jsx(
762
- chunkXS35KPBZ_cjs.ChatBubble,
905
+ chunkWIAQQNFU_cjs.ChatBubble,
763
906
  {
764
907
  ref: bubbleRef,
765
908
  "data-slot": "superchat-bubble",
@@ -822,7 +965,7 @@ ${block.text}
822
965
  ) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
823
966
  message.content?.map((block, i) => {
824
967
  if (block.type === "tool_use" && block.toolCall) {
825
- return /* @__PURE__ */ jsxRuntime.jsx(chunkXS35KPBZ_cjs.MCPToolCallDisplay, { toolCall: block.toolCall }, i);
968
+ return /* @__PURE__ */ jsxRuntime.jsx(chunkWIAQQNFU_cjs.MCPToolCallDisplay, { toolCall: block.toolCall }, i);
826
969
  }
827
970
  if ((block.type === "text" || block.type === "thinking") && block.text) {
828
971
  return /* @__PURE__ */ jsxRuntime.jsx(
@@ -862,12 +1005,20 @@ ${block.text}
862
1005
  streaming,
863
1006
  role: participant?.kind === "human" ? "user" : "assistant"
864
1007
  }) }),
865
- streaming && !hasBody && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(chunkXS35KPBZ_cjs.AITypingIndicator, {}) })
1008
+ streaming && !hasBody && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(chunkWIAQQNFU_cjs.AITypingIndicator, {}) })
866
1009
  ] })
867
1010
  }
868
1011
  )
869
1012
  ]
870
1013
  }
1014
+ ),
1015
+ hasActions && /* @__PURE__ */ jsxRuntime.jsx(
1016
+ MessageActionsBar,
1017
+ {
1018
+ ref: actionsBarRef,
1019
+ actions,
1020
+ isSelf
1021
+ }
871
1022
  )
872
1023
  ] })
873
1024
  ]
@@ -875,7 +1026,7 @@ ${block.text}
875
1026
  );
876
1027
  });
877
1028
  var sidebarItem = classVarianceAuthority.cva(
878
- "flex w-full items-center gap-2 rounded-lg px-3 py-2 text-left text-sm transition-colors",
1029
+ "flex w-full items-center gap-2 rounded-lg px-3 py-2 text-start text-sm transition-colors",
879
1030
  {
880
1031
  variants: {
881
1032
  active: {
@@ -895,11 +1046,12 @@ function VirtualThread({
895
1046
  onReferenceClick,
896
1047
  editable,
897
1048
  onMessageEdited,
1049
+ defaultCopyFormat,
898
1050
  order,
899
1051
  conversationId,
900
1052
  containerProps
901
1053
  }) {
902
- const parentRef = React4__namespace.useRef(null);
1054
+ const parentRef = React2__namespace.useRef(null);
903
1055
  const virtualizer = reactVirtual.useVirtualizer({
904
1056
  count: items.length,
905
1057
  getScrollElement: () => parentRef.current,
@@ -909,7 +1061,7 @@ function VirtualThread({
909
1061
  getItemKey: (index) => items[index]?.id ?? index
910
1062
  });
911
1063
  const count = items.length;
912
- React4__namespace.useEffect(() => {
1064
+ React2__namespace.useEffect(() => {
913
1065
  if (count === 0) return;
914
1066
  if (order === "desc") {
915
1067
  virtualizer.scrollToIndex(0, { align: "start" });
@@ -951,7 +1103,8 @@ function VirtualThread({
951
1103
  linkBuilder,
952
1104
  onReferenceClick,
953
1105
  editable,
954
- onMessageEdited
1106
+ onMessageEdited,
1107
+ defaultCopyFormat
955
1108
  }
956
1109
  ) })
957
1110
  },
@@ -972,6 +1125,7 @@ function SuperChat({
972
1125
  order = "asc",
973
1126
  virtualized = false,
974
1127
  linkBuilder,
1128
+ defaultCopyFormat,
975
1129
  className,
976
1130
  onMessageSent,
977
1131
  onMessageEdited,
@@ -979,35 +1133,35 @@ function SuperChat({
979
1133
  onReferenceClick,
980
1134
  onBack
981
1135
  }) {
982
- const headingId = React4__namespace.useId();
983
- const renderText = React4__namespace.useMemo(
1136
+ const headingId = React2__namespace.useId();
1137
+ const renderText = React2__namespace.useMemo(
984
1138
  () => renderTextContent ?? createMarkdownRenderer({
985
1139
  plugins: renderPlugins,
986
1140
  trusted: trustedContent
987
1141
  }),
988
1142
  [renderTextContent, renderPlugins, trustedContent]
989
1143
  );
990
- const threadRef = React4__namespace.useRef(null);
991
- React4__namespace.useEffect(() => {
1144
+ const threadRef = React2__namespace.useRef(null);
1145
+ React2__namespace.useEffect(() => {
992
1146
  if (virtualized) return;
993
1147
  const el = threadRef.current;
994
1148
  if (!el) return;
995
1149
  el.scrollTop = order === "desc" ? 0 : el.scrollHeight;
996
1150
  }, [conversation.thread.length, conversation.id, order, virtualized]);
997
- const participantById = React4__namespace.useMemo(() => {
1151
+ const participantById = React2__namespace.useMemo(() => {
998
1152
  const map = /* @__PURE__ */ new Map();
999
1153
  conversation.participants.forEach((p) => map.set(p.id, p));
1000
1154
  return map;
1001
1155
  }, [conversation]);
1002
- const orderedThread = React4__namespace.useMemo(() => {
1156
+ const orderedThread = React2__namespace.useMemo(() => {
1003
1157
  const sorted = [...conversation.thread].sort(byTime);
1004
1158
  return order === "desc" ? sorted.reverse() : sorted;
1005
1159
  }, [conversation, order]);
1006
- const onMessageEditedRef = React4__namespace.useRef(onMessageEdited);
1160
+ const onMessageEditedRef = React2__namespace.useRef(onMessageEdited);
1007
1161
  onMessageEditedRef.current = onMessageEdited;
1008
- const conversationRef = React4__namespace.useRef(conversation);
1162
+ const conversationRef = React2__namespace.useRef(conversation);
1009
1163
  conversationRef.current = conversation;
1010
- const handleMessageEdited = React4__namespace.useCallback(
1164
+ const handleMessageEdited = React2__namespace.useCallback(
1011
1165
  (messageId, text) => {
1012
1166
  onMessageEditedRef.current?.(messageId, text, {
1013
1167
  conversation: conversationRef.current
@@ -1016,7 +1170,7 @@ function SuperChat({
1016
1170
  []
1017
1171
  );
1018
1172
  const editable = !readOnly && !!onMessageEdited;
1019
- const mentionOptions = React4__namespace.useMemo(
1173
+ const mentionOptions = React2__namespace.useMemo(
1020
1174
  () => conversation.participants.filter((p) => p.kind !== "system").map((p) => ({
1021
1175
  id: p.id,
1022
1176
  label: p.name,
@@ -1026,11 +1180,11 @@ function SuperChat({
1026
1180
  })),
1027
1181
  [conversation.participants]
1028
1182
  );
1029
- const composerAccept = React4__namespace.useMemo(
1183
+ const composerAccept = React2__namespace.useMemo(
1030
1184
  () => acceptTokensFor(acceptedFileTypes),
1031
1185
  [acceptedFileTypes]
1032
1186
  );
1033
- const handleComposerSend = React4__namespace.useCallback(
1187
+ const handleComposerSend = React2__namespace.useCallback(
1034
1188
  async (message) => {
1035
1189
  const text = message.content;
1036
1190
  const mentions = detectMentions(text, conversation.participants);
@@ -1065,7 +1219,7 @@ function SuperChat({
1065
1219
  type: "button",
1066
1220
  onClick: onBack,
1067
1221
  "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",
1222
+ 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
1223
  children: /* @__PURE__ */ jsxRuntime.jsx(
1070
1224
  "svg",
1071
1225
  {
@@ -1111,7 +1265,7 @@ function SuperChat({
1111
1265
  onClick: () => onConversationClosed(conversation),
1112
1266
  "aria-label": "Close conversation",
1113
1267
  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, {})
1268
+ children: /* @__PURE__ */ jsxRuntime.jsx(chunkWIAQQNFU_cjs.CloseIcon, {})
1115
1269
  }
1116
1270
  )
1117
1271
  ]
@@ -1128,6 +1282,7 @@ function SuperChat({
1128
1282
  onReferenceClick,
1129
1283
  editable,
1130
1284
  onMessageEdited: handleMessageEdited,
1285
+ defaultCopyFormat,
1131
1286
  order,
1132
1287
  conversationId: conversation.id,
1133
1288
  containerProps: {
@@ -1160,14 +1315,15 @@ function SuperChat({
1160
1315
  linkBuilder,
1161
1316
  onReferenceClick,
1162
1317
  editable,
1163
- onMessageEdited: handleMessageEdited
1318
+ onMessageEdited: handleMessageEdited,
1319
+ defaultCopyFormat
1164
1320
  },
1165
1321
  m.id
1166
1322
  ))
1167
1323
  }
1168
1324
  ),
1169
1325
  /* @__PURE__ */ jsxRuntime.jsx(
1170
- chunk26DPQUSB_cjs.MessageComposer,
1326
+ chunk5BVFVXHN_cjs.MessageComposer,
1171
1327
  {
1172
1328
  onSend: handleComposerSend,
1173
1329
  disabled: readOnly,
@@ -1191,12 +1347,12 @@ function SuperChatConversations({
1191
1347
  onConversationOpened,
1192
1348
  onNewConversation
1193
1349
  }) {
1194
- const [internalActive, setInternalActive] = React4__namespace.useState(
1350
+ const [internalActive, setInternalActive] = React2__namespace.useState(
1195
1351
  defaultActiveConversationId ?? conversations[0]?.id
1196
1352
  );
1197
1353
  const requestedId = activeConversationId ?? internalActive;
1198
1354
  const activeId = conversations.some((c) => c.id === requestedId) ? requestedId : conversations[0]?.id;
1199
- const sortedConversations = React4__namespace.useMemo(
1355
+ const sortedConversations = React2__namespace.useMemo(
1200
1356
  () => [...conversations].sort((a, b) => lastActivityOf(b) - lastActivityOf(a)),
1201
1357
  [conversations]
1202
1358
  );
@@ -1210,7 +1366,7 @@ function SuperChatConversations({
1210
1366
  "data-slot": "superchat-conversations",
1211
1367
  "aria-label": "Conversations",
1212
1368
  className: chunkS5RVSXDV_cjs.cn(
1213
- "flex w-64 shrink-0 flex-col border-r border-neutral-200 dark:border-neutral-700",
1369
+ "flex w-64 shrink-0 flex-col border-e border-neutral-200 dark:border-neutral-700",
1214
1370
  className
1215
1371
  ),
1216
1372
  children: [
@@ -1248,7 +1404,7 @@ function SuperChatConversations({
1248
1404
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "block truncate font-medium", children: c.title }),
1249
1405
  last?.text && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "block truncate text-xs text-neutral-600 dark:text-neutral-400", children: last.text })
1250
1406
  ] }),
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: [
1407
+ !!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
1408
  c.unread,
1253
1409
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "sr-only", children: " unread messages" })
1254
1410
  ] })
@@ -1276,6 +1432,7 @@ function SuperChatInbox({
1276
1432
  virtualized,
1277
1433
  showSidebar = true,
1278
1434
  linkBuilder,
1435
+ defaultCopyFormat,
1279
1436
  className,
1280
1437
  onMessageSent,
1281
1438
  onMessageEdited,
@@ -1284,13 +1441,13 @@ function SuperChatInbox({
1284
1441
  onNewConversation,
1285
1442
  onReferenceClick
1286
1443
  }) {
1287
- const [internalActive, setInternalActive] = React4__namespace.useState(
1444
+ const [internalActive, setInternalActive] = React2__namespace.useState(
1288
1445
  defaultActiveConversationId ?? conversations[0]?.id
1289
1446
  );
1290
1447
  const requestedId = activeConversationId ?? internalActive;
1291
1448
  const active = conversations.find((c) => c.id === requestedId) ?? conversations[0];
1292
1449
  const activeId = active?.id;
1293
- const [mobileView, setMobileView] = React4__namespace.useState("list");
1450
+ const [mobileView, setMobileView] = React2__namespace.useState("list");
1294
1451
  const handleOpen = (c) => {
1295
1452
  if (activeConversationId === void 0) setInternalActive(c.id);
1296
1453
  setMobileView("chat");
@@ -1333,6 +1490,7 @@ function SuperChatInbox({
1333
1490
  order,
1334
1491
  virtualized,
1335
1492
  linkBuilder,
1493
+ defaultCopyFormat,
1336
1494
  onMessageSent,
1337
1495
  onMessageEdited,
1338
1496
  onConversationClosed,