@mieweb/ui 0.6.1 → 0.7.0-dev.178

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 (450) hide show
  1. package/README.md +90 -53
  2. package/dist/CsvBlock-2A5VEDD3.cjs +15 -0
  3. package/dist/CsvBlock-2A5VEDD3.cjs.map +1 -0
  4. package/dist/CsvBlock-D6PWAJ5X.js +6 -0
  5. package/dist/CsvBlock-D6PWAJ5X.js.map +1 -0
  6. package/dist/HtmlPreviewBlock-PEHTJ6C3.js +6 -0
  7. package/dist/HtmlPreviewBlock-PEHTJ6C3.js.map +1 -0
  8. package/dist/HtmlPreviewBlock-SYXCV5RH.cjs +15 -0
  9. package/dist/HtmlPreviewBlock-SYXCV5RH.cjs.map +1 -0
  10. package/dist/MedicationEditor-Bp4NLy7y.d.cts +352 -0
  11. package/dist/MedicationEditor-Bp4NLy7y.d.ts +352 -0
  12. package/dist/MermaidBlock-7NK3AVK2.js +6 -0
  13. package/dist/MermaidBlock-7NK3AVK2.js.map +1 -0
  14. package/dist/MermaidBlock-AFXNP5NK.cjs +15 -0
  15. package/dist/MermaidBlock-AFXNP5NK.cjs.map +1 -0
  16. package/dist/SurveyBlock-6KRNKFH5.cjs +15 -0
  17. package/dist/SurveyBlock-6KRNKFH5.cjs.map +1 -0
  18. package/dist/SurveyBlock-NNDGXGG4.js +6 -0
  19. package/dist/SurveyBlock-NNDGXGG4.js.map +1 -0
  20. package/dist/ag-grid.cjs +6 -6
  21. package/dist/ag-grid.cjs.map +1 -1
  22. package/dist/ag-grid.js +2 -2
  23. package/dist/ag-grid.js.map +1 -1
  24. package/dist/brands/index.cjs +17 -17
  25. package/dist/brands/index.js +4 -4
  26. package/dist/chunk-372IIHUA.cjs +2017 -0
  27. package/dist/chunk-372IIHUA.cjs.map +1 -0
  28. package/dist/{chunk-2DS3RJ2D.js → chunk-3TERETXH.js} +112 -3
  29. package/dist/chunk-3TERETXH.js.map +1 -0
  30. package/dist/chunk-44CK4CT2.cjs +336 -0
  31. package/dist/chunk-44CK4CT2.cjs.map +1 -0
  32. package/dist/{chunk-FSBFQBNE.cjs → chunk-4GXECTPS.cjs} +2 -2
  33. package/dist/{chunk-FSBFQBNE.cjs.map → chunk-4GXECTPS.cjs.map} +1 -1
  34. package/dist/chunk-4LVPQ44A.js +228 -0
  35. package/dist/chunk-4LVPQ44A.js.map +1 -0
  36. package/dist/{chunk-6555OYRU.js → chunk-5BQE6BEL.js} +2 -2
  37. package/dist/{chunk-6555OYRU.js.map → chunk-5BQE6BEL.js.map} +1 -1
  38. package/dist/chunk-62ZOA6PX.js +31 -0
  39. package/dist/chunk-62ZOA6PX.js.map +1 -0
  40. package/dist/chunk-63KVQHGQ.cjs +1802 -0
  41. package/dist/chunk-63KVQHGQ.cjs.map +1 -0
  42. package/dist/chunk-6AHYYWVB.js +78 -0
  43. package/dist/chunk-6AHYYWVB.js.map +1 -0
  44. package/dist/chunk-6I7IDZ4A.js +51 -0
  45. package/dist/chunk-6I7IDZ4A.js.map +1 -0
  46. package/dist/chunk-6ZYE6JUK.cjs +80 -0
  47. package/dist/chunk-6ZYE6JUK.cjs.map +1 -0
  48. package/dist/chunk-7QXG5BBB.cjs +164 -0
  49. package/dist/chunk-7QXG5BBB.cjs.map +1 -0
  50. package/dist/chunk-7WMSUXOQ.js +182 -0
  51. package/dist/chunk-7WMSUXOQ.js.map +1 -0
  52. package/dist/chunk-7XUN3OQT.js +3 -0
  53. package/dist/{chunk-V2DF2GUE.js.map → chunk-7XUN3OQT.js.map} +1 -1
  54. package/dist/chunk-7ZVTLTJF.js +109 -0
  55. package/dist/chunk-7ZVTLTJF.js.map +1 -0
  56. package/dist/chunk-AES2BKEW.cjs +229 -0
  57. package/dist/chunk-AES2BKEW.cjs.map +1 -0
  58. package/dist/chunk-AFKKJEV5.cjs +72 -0
  59. package/dist/chunk-AFKKJEV5.cjs.map +1 -0
  60. package/dist/chunk-AT732HC6.cjs +4 -0
  61. package/dist/{chunk-74K3RRU7.cjs.map → chunk-AT732HC6.cjs.map} +1 -1
  62. package/dist/chunk-BB4WQ4LV.cjs +137 -0
  63. package/dist/chunk-BB4WQ4LV.cjs.map +1 -0
  64. package/dist/chunk-BIT27PPD.js +49 -0
  65. package/dist/chunk-BIT27PPD.js.map +1 -0
  66. package/dist/chunk-BLPCYP4D.cjs +537 -0
  67. package/dist/chunk-BLPCYP4D.cjs.map +1 -0
  68. package/dist/chunk-BT3ZQJGT.cjs +130 -0
  69. package/dist/chunk-BT3ZQJGT.cjs.map +1 -0
  70. package/dist/chunk-BX6BTDTR.js +34 -0
  71. package/dist/chunk-BX6BTDTR.js.map +1 -0
  72. package/dist/chunk-C2544GKZ.js +313 -0
  73. package/dist/chunk-C2544GKZ.js.map +1 -0
  74. package/dist/chunk-C7RVKV25.cjs +25 -0
  75. package/dist/chunk-C7RVKV25.cjs.map +1 -0
  76. package/dist/chunk-CKD554XR.cjs +100 -0
  77. package/dist/chunk-CKD554XR.cjs.map +1 -0
  78. package/dist/chunk-CVC4NWFA.cjs +154 -0
  79. package/dist/chunk-CVC4NWFA.cjs.map +1 -0
  80. package/dist/{chunk-K3IVCUPP.js → chunk-CYMZ2QS5.js} +2 -2
  81. package/dist/{chunk-K3IVCUPP.js.map → chunk-CYMZ2QS5.js.map} +1 -1
  82. package/dist/{chunk-FRT6RQND.cjs → chunk-DAPZPT5N.cjs} +92 -56
  83. package/dist/chunk-DAPZPT5N.cjs.map +1 -0
  84. package/dist/chunk-DHKYGVP7.js +3 -0
  85. package/dist/{chunk-LEMY57MI.js.map → chunk-DHKYGVP7.js.map} +1 -1
  86. package/dist/chunk-DLNJLCNO.cjs +101 -0
  87. package/dist/chunk-DLNJLCNO.cjs.map +1 -0
  88. package/dist/chunk-DUPR6FEL.js +43 -0
  89. package/dist/chunk-DUPR6FEL.js.map +1 -0
  90. package/dist/{chunk-4FALCEJI.cjs → chunk-EL2RSQTJ.cjs} +2 -2
  91. package/dist/{chunk-4FALCEJI.cjs.map → chunk-EL2RSQTJ.cjs.map} +1 -1
  92. package/dist/chunk-ERLPVXOV.js +22 -0
  93. package/dist/chunk-ERLPVXOV.js.map +1 -0
  94. package/dist/chunk-FIWKHLWY.js +197 -0
  95. package/dist/chunk-FIWKHLWY.js.map +1 -0
  96. package/dist/chunk-FJH7P5WG.js +513 -0
  97. package/dist/chunk-FJH7P5WG.js.map +1 -0
  98. package/dist/chunk-FSGEDDF2.cjs +33 -0
  99. package/dist/chunk-FSGEDDF2.cjs.map +1 -0
  100. package/dist/chunk-GLXTVCHN.cjs +4 -0
  101. package/dist/{chunk-4ZU53GNR.cjs.map → chunk-GLXTVCHN.cjs.map} +1 -1
  102. package/dist/chunk-HRS6W74P.js +1568 -0
  103. package/dist/chunk-HRS6W74P.js.map +1 -0
  104. package/dist/chunk-I2W24RHW.js +196 -0
  105. package/dist/chunk-I2W24RHW.js.map +1 -0
  106. package/dist/chunk-I6CY5C6A.js +12 -0
  107. package/dist/chunk-I6CY5C6A.js.map +1 -0
  108. package/dist/chunk-IQ4KQJAO.js +3 -0
  109. package/dist/chunk-IQ4KQJAO.js.map +1 -0
  110. package/dist/chunk-IWDQPSJN.cjs +1452 -0
  111. package/dist/chunk-IWDQPSJN.cjs.map +1 -0
  112. package/dist/chunk-J7KWQJOB.js +14 -0
  113. package/dist/chunk-J7KWQJOB.js.map +1 -0
  114. package/dist/{chunk-R25H4N4Z.js → chunk-J7Z7467B.js} +92 -56
  115. package/dist/chunk-J7Z7467B.js.map +1 -0
  116. package/dist/{chunk-NINI4WVS.cjs → chunk-JC6Y3LGF.cjs} +297 -84
  117. package/dist/chunk-JC6Y3LGF.cjs.map +1 -0
  118. package/dist/chunk-JCNPVK74.cjs +347 -0
  119. package/dist/chunk-JCNPVK74.cjs.map +1 -0
  120. package/dist/chunk-JFLC7SHM.cjs +35 -0
  121. package/dist/chunk-JFLC7SHM.cjs.map +1 -0
  122. package/dist/chunk-JHYFHEHS.js +1967 -0
  123. package/dist/chunk-JHYFHEHS.js.map +1 -0
  124. package/dist/{chunk-IBZXDX4L.cjs → chunk-JQEY53SH.cjs} +112 -3
  125. package/dist/chunk-JQEY53SH.cjs.map +1 -0
  126. package/dist/chunk-JTBQNOSL.cjs +1605 -0
  127. package/dist/chunk-JTBQNOSL.cjs.map +1 -0
  128. package/dist/chunk-JYZW2PZS.cjs +166 -0
  129. package/dist/chunk-JYZW2PZS.cjs.map +1 -0
  130. package/dist/chunk-KBEKQMVY.cjs +198 -0
  131. package/dist/chunk-KBEKQMVY.cjs.map +1 -0
  132. package/dist/chunk-KJ5BSGEO.cjs +258 -0
  133. package/dist/chunk-KJ5BSGEO.cjs.map +1 -0
  134. package/dist/{chunk-DNPRRYPQ.js → chunk-KL2S36FM.js} +2 -2
  135. package/dist/chunk-KL2S36FM.js.map +1 -0
  136. package/dist/chunk-LIH3IZYK.js +689 -0
  137. package/dist/chunk-LIH3IZYK.js.map +1 -0
  138. package/dist/chunk-MAMY5HTT.cjs +1177 -0
  139. package/dist/chunk-MAMY5HTT.cjs.map +1 -0
  140. package/dist/{chunk-WFS6R2F5.js → chunk-MKWGKASO.js} +114 -101
  141. package/dist/chunk-MKWGKASO.js.map +1 -0
  142. package/dist/{chunk-CV4CVGLO.cjs → chunk-MZPF2QGM.cjs} +95 -74
  143. package/dist/chunk-MZPF2QGM.cjs.map +1 -0
  144. package/dist/chunk-NQME7MCK.js +1416 -0
  145. package/dist/chunk-NQME7MCK.js.map +1 -0
  146. package/dist/chunk-NTYGCBCL.js +543 -0
  147. package/dist/chunk-NTYGCBCL.js.map +1 -0
  148. package/dist/chunk-OF7NTZ2I.js +3 -0
  149. package/dist/chunk-OF7NTZ2I.js.map +1 -0
  150. package/dist/chunk-OXYFTCRW.cjs +57 -0
  151. package/dist/chunk-OXYFTCRW.cjs.map +1 -0
  152. package/dist/chunk-QA6ZDHFP.js +117 -0
  153. package/dist/chunk-QA6ZDHFP.js.map +1 -0
  154. package/dist/chunk-RHNPILZQ.cjs +4 -0
  155. package/dist/chunk-RHNPILZQ.cjs.map +1 -0
  156. package/dist/chunk-RHYIFIT5.js +98 -0
  157. package/dist/chunk-RHYIFIT5.js.map +1 -0
  158. package/dist/chunk-RI56YPED.cjs +201 -0
  159. package/dist/chunk-RI56YPED.cjs.map +1 -0
  160. package/dist/chunk-RISZWWEQ.js +3 -0
  161. package/dist/chunk-RISZWWEQ.js.map +1 -0
  162. package/dist/chunk-S6Z3KDEM.js +140 -0
  163. package/dist/chunk-S6Z3KDEM.js.map +1 -0
  164. package/dist/chunk-S7JQ3FV5.cjs +16 -0
  165. package/dist/chunk-S7JQ3FV5.cjs.map +1 -0
  166. package/dist/{chunk-OXGUG57G.cjs → chunk-SNEQXSC5.cjs} +2 -2
  167. package/dist/{chunk-OXGUG57G.cjs.map → chunk-SNEQXSC5.cjs.map} +1 -1
  168. package/dist/chunk-SQHMGT4W.js +164 -0
  169. package/dist/chunk-SQHMGT4W.js.map +1 -0
  170. package/dist/{chunk-JHPFOG2N.cjs → chunk-ST2RE5UB.cjs} +30 -18
  171. package/dist/chunk-ST2RE5UB.cjs.map +1 -0
  172. package/dist/{chunk-QVJBUWJQ.js → chunk-STPK44AU.js} +46 -12
  173. package/dist/chunk-STPK44AU.js.map +1 -0
  174. package/dist/chunk-T3C4RNJ4.js +106 -0
  175. package/dist/chunk-T3C4RNJ4.js.map +1 -0
  176. package/dist/chunk-T3RWXOCM.js +148 -0
  177. package/dist/chunk-T3RWXOCM.js.map +1 -0
  178. package/dist/{chunk-DCER2QQB.js → chunk-T42BCIUA.js} +2 -2
  179. package/dist/{chunk-DCER2QQB.js.map → chunk-T42BCIUA.js.map} +1 -1
  180. package/dist/{chunk-OYKS2JBB.cjs → chunk-TN33E2VN.cjs} +2 -2
  181. package/dist/chunk-TN33E2VN.cjs.map +1 -0
  182. package/dist/{chunk-K7IGBNZA.cjs → chunk-TR2OJKQ4.cjs} +46 -12
  183. package/dist/chunk-TR2OJKQ4.cjs.map +1 -0
  184. package/dist/chunk-UFYXU7KV.js +135 -0
  185. package/dist/chunk-UFYXU7KV.js.map +1 -0
  186. package/dist/chunk-UM6NA7HL.js +1145 -0
  187. package/dist/chunk-UM6NA7HL.js.map +1 -0
  188. package/dist/chunk-UO3KEUYK.cjs +220 -0
  189. package/dist/chunk-UO3KEUYK.cjs.map +1 -0
  190. package/dist/chunk-UOOH356R.cjs +66 -0
  191. package/dist/chunk-UOOH356R.cjs.map +1 -0
  192. package/dist/{chunk-4ZU53GNR.cjs → chunk-UTYUT5YY.cjs} +62 -2
  193. package/dist/chunk-UTYUT5YY.cjs.map +1 -0
  194. package/dist/chunk-UVSODK6V.cjs +53 -0
  195. package/dist/chunk-UVSODK6V.cjs.map +1 -0
  196. package/dist/chunk-V25Z5GR6.cjs +184 -0
  197. package/dist/chunk-V25Z5GR6.cjs.map +1 -0
  198. package/dist/chunk-VBWRH4UW.cjs +4 -0
  199. package/dist/chunk-VBWRH4UW.cjs.map +1 -0
  200. package/dist/chunk-VJOVJTFP.cjs +370 -0
  201. package/dist/chunk-VJOVJTFP.cjs.map +1 -0
  202. package/dist/{chunk-7BARESXI.cjs → chunk-VPNURIAY.cjs} +114 -101
  203. package/dist/chunk-VPNURIAY.cjs.map +1 -0
  204. package/dist/{chunk-I56VBDSC.js → chunk-XDFDVF2O.js} +30 -18
  205. package/dist/chunk-XDFDVF2O.js.map +1 -0
  206. package/dist/chunk-XL7TTKHP.js +327 -0
  207. package/dist/chunk-XL7TTKHP.js.map +1 -0
  208. package/dist/chunk-Y2S6QMKU.js +78 -0
  209. package/dist/chunk-Y2S6QMKU.js.map +1 -0
  210. package/dist/chunk-Y4ESBDQ5.cjs +552 -0
  211. package/dist/chunk-Y4ESBDQ5.cjs.map +1 -0
  212. package/dist/chunk-Y5KEFV5O.js +192 -0
  213. package/dist/chunk-Y5KEFV5O.js.map +1 -0
  214. package/dist/chunk-YBLIDESO.js +365 -0
  215. package/dist/chunk-YBLIDESO.js.map +1 -0
  216. package/dist/chunk-YVLP3ATI.js +1776 -0
  217. package/dist/chunk-YVLP3ATI.js.map +1 -0
  218. package/dist/chunk-YVPC65ZJ.cjs +134 -0
  219. package/dist/chunk-YVPC65ZJ.cjs.map +1 -0
  220. package/dist/{chunk-MPOWJVV4.js → chunk-YZT62IMX.js} +95 -74
  221. package/dist/chunk-YZT62IMX.js.map +1 -0
  222. package/dist/chunk-ZAIEQWRA.js +207 -0
  223. package/dist/chunk-ZAIEQWRA.js.map +1 -0
  224. package/dist/chunk-ZDEYV373.cjs +139 -0
  225. package/dist/chunk-ZDEYV373.cjs.map +1 -0
  226. package/dist/{chunk-Q7NBJFEB.js → chunk-ZGSC2CB2.js} +2 -2
  227. package/dist/{chunk-Q7NBJFEB.js.map → chunk-ZGSC2CB2.js.map} +1 -1
  228. package/dist/{chunk-3M4P2KMG.cjs → chunk-ZHBANUBI.cjs} +2 -2
  229. package/dist/{chunk-3M4P2KMG.cjs.map → chunk-ZHBANUBI.cjs.map} +1 -1
  230. package/dist/components/AlertDialog/index.cjs +18 -0
  231. package/dist/components/AlertDialog/index.cjs.map +1 -0
  232. package/dist/components/AlertDialog/index.d.cts +56 -0
  233. package/dist/components/AlertDialog/index.d.ts +56 -0
  234. package/dist/components/AlertDialog/index.js +9 -0
  235. package/dist/components/AlertDialog/index.js.map +1 -0
  236. package/dist/components/AudioRecorder/index.d.cts +1 -1
  237. package/dist/components/AudioRecorder/index.d.ts +1 -1
  238. package/dist/components/Autocomplete/index.cjs +16 -0
  239. package/dist/components/Autocomplete/index.cjs.map +1 -0
  240. package/dist/components/Autocomplete/index.d.cts +77 -0
  241. package/dist/components/Autocomplete/index.d.ts +77 -0
  242. package/dist/components/Autocomplete/index.js +7 -0
  243. package/dist/components/Autocomplete/index.js.map +1 -0
  244. package/dist/components/Badge/index.cjs +4 -3
  245. package/dist/components/Badge/index.js +2 -1
  246. package/dist/components/Card/index.cjs +16 -15
  247. package/dist/components/Card/index.js +2 -1
  248. package/dist/components/Collapsible/index.cjs +21 -0
  249. package/dist/components/Collapsible/index.cjs.map +1 -0
  250. package/dist/components/Collapsible/index.d.cts +33 -0
  251. package/dist/components/Collapsible/index.d.ts +33 -0
  252. package/dist/components/Collapsible/index.js +4 -0
  253. package/dist/components/Collapsible/index.js.map +1 -0
  254. package/dist/components/CountryCodeDropdown/index.cjs +6 -5
  255. package/dist/components/CountryCodeDropdown/index.js +3 -2
  256. package/dist/components/DateInput/index.cjs +2 -2
  257. package/dist/components/DateInput/index.d.cts +8 -2
  258. package/dist/components/DateInput/index.d.ts +8 -2
  259. package/dist/components/DateInput/index.js +1 -1
  260. package/dist/components/Dropdown/index.cjs +9 -8
  261. package/dist/components/Dropdown/index.d.cts +2 -1
  262. package/dist/components/Dropdown/index.d.ts +2 -1
  263. package/dist/components/Dropdown/index.js +3 -2
  264. package/dist/components/FloatingWindow/index.cjs +18 -0
  265. package/dist/components/FloatingWindow/index.cjs.map +1 -0
  266. package/dist/components/FloatingWindow/index.d.cts +64 -0
  267. package/dist/components/FloatingWindow/index.d.ts +64 -0
  268. package/dist/components/FloatingWindow/index.js +5 -0
  269. package/dist/components/FloatingWindow/index.js.map +1 -0
  270. package/dist/components/Label/index.cjs +17 -0
  271. package/dist/components/Label/index.cjs.map +1 -0
  272. package/dist/components/Label/index.d.cts +23 -0
  273. package/dist/components/Label/index.d.ts +23 -0
  274. package/dist/components/Label/index.js +4 -0
  275. package/dist/components/Label/index.js.map +1 -0
  276. package/dist/components/Markdown/index.cjs +51 -0
  277. package/dist/components/Markdown/index.cjs.map +1 -0
  278. package/dist/components/Markdown/index.css +331 -0
  279. package/dist/components/Markdown/index.css.map +1 -0
  280. package/dist/components/Markdown/index.d.cts +82 -0
  281. package/dist/components/Markdown/index.d.ts +82 -0
  282. package/dist/components/Markdown/index.js +10 -0
  283. package/dist/components/Markdown/index.js.map +1 -0
  284. package/dist/components/Markdown/styles.css +354 -0
  285. package/dist/components/MediaEditor/index.cjs +44 -0
  286. package/dist/components/MediaEditor/index.cjs.map +1 -0
  287. package/dist/components/MediaEditor/index.d.cts +151 -0
  288. package/dist/components/MediaEditor/index.d.ts +151 -0
  289. package/dist/components/MediaEditor/index.js +19 -0
  290. package/dist/components/MediaEditor/index.js.map +1 -0
  291. package/dist/components/MediaPlayer/index.cjs +24 -0
  292. package/dist/components/MediaPlayer/index.cjs.map +1 -0
  293. package/dist/components/MediaPlayer/index.d.cts +71 -0
  294. package/dist/components/MediaPlayer/index.d.ts +71 -0
  295. package/dist/components/MediaPlayer/index.js +7 -0
  296. package/dist/components/MediaPlayer/index.js.map +1 -0
  297. package/dist/components/RecordButton/index.cjs +4 -4
  298. package/dist/components/RecordButton/index.js +1 -1
  299. package/dist/components/RichTextEditor/index.cjs +33 -0
  300. package/dist/components/RichTextEditor/index.cjs.map +1 -0
  301. package/dist/components/RichTextEditor/index.d.cts +62 -0
  302. package/dist/components/RichTextEditor/index.d.ts +62 -0
  303. package/dist/components/RichTextEditor/index.js +12 -0
  304. package/dist/components/RichTextEditor/index.js.map +1 -0
  305. package/dist/components/ScrollArea/index.cjs +17 -0
  306. package/dist/components/ScrollArea/index.cjs.map +1 -0
  307. package/dist/components/ScrollArea/index.d.cts +22 -0
  308. package/dist/components/ScrollArea/index.d.ts +22 -0
  309. package/dist/components/ScrollArea/index.js +4 -0
  310. package/dist/components/ScrollArea/index.js.map +1 -0
  311. package/dist/components/Select/index.cjs +5 -3
  312. package/dist/components/Select/index.js +3 -1
  313. package/dist/components/Separator/index.cjs +17 -0
  314. package/dist/components/Separator/index.cjs.map +1 -0
  315. package/dist/components/Separator/index.d.cts +27 -0
  316. package/dist/components/Separator/index.d.ts +27 -0
  317. package/dist/components/Separator/index.js +4 -0
  318. package/dist/components/Separator/index.js.map +1 -0
  319. package/dist/components/Sheet/index.cjs +48 -0
  320. package/dist/components/Sheet/index.cjs.map +1 -0
  321. package/dist/components/Sheet/index.d.cts +62 -0
  322. package/dist/components/Sheet/index.d.ts +62 -0
  323. package/dist/components/Sheet/index.js +7 -0
  324. package/dist/components/Sheet/index.js.map +1 -0
  325. package/dist/components/SuperChat/index.cjs +1373 -0
  326. package/dist/components/SuperChat/index.cjs.map +1 -0
  327. package/dist/components/SuperChat/index.d.cts +189 -0
  328. package/dist/components/SuperChat/index.d.ts +189 -0
  329. package/dist/components/SuperChat/index.js +1336 -0
  330. package/dist/components/SuperChat/index.js.map +1 -0
  331. package/dist/components/SuperChat/plugins/index.cjs +1292 -0
  332. package/dist/components/SuperChat/plugins/index.cjs.map +1 -0
  333. package/dist/components/SuperChat/plugins/index.d.cts +233 -0
  334. package/dist/components/SuperChat/plugins/index.d.ts +233 -0
  335. package/dist/components/SuperChat/plugins/index.js +1252 -0
  336. package/dist/components/SuperChat/plugins/index.js.map +1 -0
  337. package/dist/components/Table/index.cjs +9 -9
  338. package/dist/components/Table/index.d.cts +4 -0
  339. package/dist/components/Table/index.d.ts +4 -0
  340. package/dist/components/Table/index.js +1 -1
  341. package/dist/components/ThemeProvider/index.cjs +7 -7
  342. package/dist/components/ThemeProvider/index.js +1 -1
  343. package/dist/components/Toggle/index.cjs +17 -0
  344. package/dist/components/Toggle/index.cjs.map +1 -0
  345. package/dist/components/Toggle/index.d.cts +28 -0
  346. package/dist/components/Toggle/index.d.ts +28 -0
  347. package/dist/components/Toggle/index.js +4 -0
  348. package/dist/components/Toggle/index.js.map +1 -0
  349. package/dist/components/TranscriptView/index.cjs +21 -0
  350. package/dist/components/TranscriptView/index.cjs.map +1 -0
  351. package/dist/components/TranscriptView/index.d.cts +55 -0
  352. package/dist/components/TranscriptView/index.d.ts +55 -0
  353. package/dist/components/TranscriptView/index.js +4 -0
  354. package/dist/components/TranscriptView/index.js.map +1 -0
  355. package/dist/datavis.cjs +268 -227
  356. package/dist/datavis.cjs.map +1 -1
  357. package/dist/datavis.d.cts +83 -9
  358. package/dist/datavis.d.ts +83 -9
  359. package/dist/datavis.js +235 -229
  360. package/dist/datavis.js.map +1 -1
  361. package/dist/esheet.cjs +184 -0
  362. package/dist/esheet.cjs.map +1 -1
  363. package/dist/esheet.d.cts +117 -0
  364. package/dist/esheet.d.ts +117 -0
  365. package/dist/esheet.js +163 -0
  366. package/dist/esheet.js.map +1 -1
  367. package/dist/hey-buddy-CLUVAY2X.cjs +1133 -0
  368. package/dist/hey-buddy-CLUVAY2X.cjs.map +1 -0
  369. package/dist/hey-buddy-NMSWZ4TN.js +1131 -0
  370. package/dist/hey-buddy-NMSWZ4TN.js.map +1 -0
  371. package/dist/hooks/index.cjs +76 -16
  372. package/dist/hooks/index.d.cts +151 -2
  373. package/dist/hooks/index.d.ts +151 -2
  374. package/dist/hooks/index.js +6 -2
  375. package/dist/html-MdxqSzjD.d.cts +13 -0
  376. package/dist/html-MdxqSzjD.d.ts +13 -0
  377. package/dist/index.cjs +10394 -6565
  378. package/dist/index.cjs.map +1 -1
  379. package/dist/index.css +331 -0
  380. package/dist/index.css.map +1 -0
  381. package/dist/index.d.cts +2020 -249
  382. package/dist/index.d.ts +2020 -249
  383. package/dist/index.js +9223 -5969
  384. package/dist/index.js.map +1 -1
  385. package/dist/kerebron.cjs +119 -0
  386. package/dist/kerebron.cjs.map +1 -0
  387. package/dist/kerebron.css +11 -0
  388. package/dist/kerebron.d.cts +23 -0
  389. package/dist/kerebron.d.ts +23 -0
  390. package/dist/kerebron.js +116 -0
  391. package/dist/kerebron.js.map +1 -0
  392. package/dist/nitroTableGrid-3J2GY6CK.cjs +47 -0
  393. package/dist/nitroTableGrid-3J2GY6CK.cjs.map +1 -0
  394. package/dist/nitroTableGrid-SIMT7635.js +25 -0
  395. package/dist/nitroTableGrid-SIMT7635.js.map +1 -0
  396. package/dist/orderRows-BUJYgSc7.d.cts +221 -0
  397. package/dist/orderRows-BUJYgSc7.d.ts +221 -0
  398. package/dist/speaker-verify-5GTWAN5Y.cjs +357 -0
  399. package/dist/speaker-verify-5GTWAN5Y.cjs.map +1 -0
  400. package/dist/speaker-verify-R67P433H.js +355 -0
  401. package/dist/speaker-verify-R67P433H.js.map +1 -0
  402. package/dist/styles/init.css +5 -0
  403. package/dist/styles.css +1 -1
  404. package/dist/tailwind-preset.cjs +4 -4
  405. package/dist/tailwind-preset.js +1 -1
  406. package/dist/transcript-oaWqY3yr.d.cts +81 -0
  407. package/dist/transcript-oaWqY3yr.d.ts +81 -0
  408. package/dist/types-BYnLjEFg.d.cts +248 -0
  409. package/dist/types-BYnLjEFg.d.ts +248 -0
  410. package/dist/types-CBh8Zlje.d.cts +240 -0
  411. package/dist/types-CyCwYBlr.d.ts +240 -0
  412. package/dist/useAnchoredPosition-nXdSFKHf.d.cts +65 -0
  413. package/dist/useAnchoredPosition-nXdSFKHf.d.ts +65 -0
  414. package/dist/useTranscriptEdits-BUylQFg0.d.cts +168 -0
  415. package/dist/useTranscriptEdits-CWYnjbGP.d.ts +168 -0
  416. package/dist/utils/index.cjs +27 -18
  417. package/dist/utils/index.d.cts +1 -0
  418. package/dist/utils/index.d.ts +1 -0
  419. package/dist/utils/index.js +3 -2
  420. package/package.json +180 -55
  421. package/dist/chunk-2DS3RJ2D.js.map +0 -1
  422. package/dist/chunk-74K3RRU7.cjs +0 -4
  423. package/dist/chunk-7BARESXI.cjs.map +0 -1
  424. package/dist/chunk-CV4CVGLO.cjs.map +0 -1
  425. package/dist/chunk-DNPRRYPQ.js.map +0 -1
  426. package/dist/chunk-FRT6RQND.cjs.map +0 -1
  427. package/dist/chunk-HYEJLKXI.js +0 -476
  428. package/dist/chunk-HYEJLKXI.js.map +0 -1
  429. package/dist/chunk-I56VBDSC.js.map +0 -1
  430. package/dist/chunk-IBZXDX4L.cjs.map +0 -1
  431. package/dist/chunk-IKMR2ADM.cjs +0 -25
  432. package/dist/chunk-IKMR2ADM.cjs.map +0 -1
  433. package/dist/chunk-JHPFOG2N.cjs.map +0 -1
  434. package/dist/chunk-K7IGBNZA.cjs.map +0 -1
  435. package/dist/chunk-LEMY57MI.js +0 -3
  436. package/dist/chunk-MPOWJVV4.js.map +0 -1
  437. package/dist/chunk-NINI4WVS.cjs.map +0 -1
  438. package/dist/chunk-OKBR6PX4.js +0 -23
  439. package/dist/chunk-OKBR6PX4.js.map +0 -1
  440. package/dist/chunk-OYKS2JBB.cjs.map +0 -1
  441. package/dist/chunk-QVJBUWJQ.js.map +0 -1
  442. package/dist/chunk-R25H4N4Z.js.map +0 -1
  443. package/dist/chunk-V2DF2GUE.js +0 -3
  444. package/dist/chunk-WFS6R2F5.js.map +0 -1
  445. package/dist/ozwell.cjs +0 -385
  446. package/dist/ozwell.cjs.map +0 -1
  447. package/dist/ozwell.d.cts +0 -15
  448. package/dist/ozwell.d.ts +0 -15
  449. package/dist/ozwell.js +0 -360
  450. package/dist/ozwell.js.map +0 -1
@@ -0,0 +1,1145 @@
1
+ import { useAnchoredPosition } from './chunk-QA6ZDHFP.js';
2
+ import { cn } from './chunk-F3SOEIN2.js';
3
+ import * as React2 from 'react';
4
+ import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
5
+ import { createPortal } from 'react-dom';
6
+ import { cva } from 'class-variance-authority';
7
+
8
+ function getFileType(mimeType) {
9
+ if (mimeType.startsWith("image/")) return "image";
10
+ if (mimeType.startsWith("video/")) return "video";
11
+ if (mimeType.startsWith("audio/")) return "audio";
12
+ if (mimeType.includes("pdf") || mimeType.includes("document") || mimeType.includes("text")) {
13
+ return "document";
14
+ }
15
+ return "file";
16
+ }
17
+ function formatFileSize(bytes) {
18
+ if (bytes < 1024) return `${bytes} B`;
19
+ if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KB`;
20
+ return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;
21
+ }
22
+ function validateFile(file, acceptedTypes, maxSize) {
23
+ if (acceptedTypes && acceptedTypes.length > 0) {
24
+ const isAccepted = acceptedTypes.some((type) => {
25
+ if (type.startsWith(".")) {
26
+ return file.name.toLowerCase().endsWith(type.toLowerCase());
27
+ }
28
+ if (type.endsWith("/*")) {
29
+ return file.type.startsWith(type.replace("/*", "/"));
30
+ }
31
+ return file.type === type;
32
+ });
33
+ if (!isAccepted) {
34
+ return { valid: false, error: "File type not supported" };
35
+ }
36
+ }
37
+ if (maxSize && file.size > maxSize) {
38
+ return {
39
+ valid: false,
40
+ error: `File too large (max ${formatFileSize(maxSize)})`
41
+ };
42
+ }
43
+ return { valid: true };
44
+ }
45
+ function generateAttachmentId() {
46
+ return `attachment-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;
47
+ }
48
+ function AttachmentPreviewItem({
49
+ attachment,
50
+ onRemove,
51
+ onRetry,
52
+ className
53
+ }) {
54
+ const { file, previewUrl, type, state, progress } = attachment;
55
+ const isImage = type === "image";
56
+ const isVideo = type === "video";
57
+ const isUploading = state === "uploading";
58
+ const isFailed = state === "failed";
59
+ return /* @__PURE__ */ jsxs(
60
+ "div",
61
+ {
62
+ className: cn(
63
+ "group relative overflow-hidden rounded-lg",
64
+ "bg-neutral-100 dark:bg-neutral-800",
65
+ "border border-neutral-200 dark:border-neutral-700",
66
+ isFailed && "border-red-500",
67
+ className
68
+ ),
69
+ children: [
70
+ (isImage || isVideo) && previewUrl ? /* @__PURE__ */ jsxs("div", { className: "relative h-20 w-20", children: [
71
+ /* @__PURE__ */ jsx(
72
+ "img",
73
+ {
74
+ src: previewUrl,
75
+ alt: file.name,
76
+ className: cn(
77
+ "h-full w-full object-cover",
78
+ (isUploading || isFailed) && "opacity-50"
79
+ )
80
+ }
81
+ ),
82
+ isVideo && /* @__PURE__ */ jsx("div", { className: "absolute inset-0 flex items-center justify-center", children: /* @__PURE__ */ jsx(
83
+ "svg",
84
+ {
85
+ "aria-hidden": "true",
86
+ className: "h-6 w-6 text-white drop-shadow",
87
+ fill: "currentColor",
88
+ viewBox: "0 0 24 24",
89
+ children: /* @__PURE__ */ jsx("path", { d: "M8 5v14l11-7z" })
90
+ }
91
+ ) })
92
+ ] }) : (
93
+ /* File preview */
94
+ /* @__PURE__ */ jsxs("div", { className: "flex h-20 w-20 flex-col items-center justify-center p-2", children: [
95
+ /* @__PURE__ */ jsx(
96
+ "svg",
97
+ {
98
+ "aria-hidden": "true",
99
+ className: "h-8 w-8 text-neutral-500",
100
+ fill: "none",
101
+ viewBox: "0 0 24 24",
102
+ stroke: "currentColor",
103
+ children: /* @__PURE__ */ jsx(
104
+ "path",
105
+ {
106
+ strokeLinecap: "round",
107
+ strokeLinejoin: "round",
108
+ strokeWidth: 2,
109
+ d: "M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"
110
+ }
111
+ )
112
+ }
113
+ ),
114
+ /* @__PURE__ */ jsx("span", { className: "mt-1 max-w-full truncate px-1 text-xs text-neutral-500", children: file.name.split(".").pop()?.toUpperCase() })
115
+ ] })
116
+ ),
117
+ isUploading && progress !== void 0 && /* @__PURE__ */ jsx("div", { className: "absolute inset-0 flex items-center justify-center bg-black/50", children: /* @__PURE__ */ jsxs("div", { className: "text-center text-white", children: [
118
+ /* @__PURE__ */ jsxs(
119
+ "svg",
120
+ {
121
+ "aria-hidden": "true",
122
+ className: "mx-auto h-6 w-6 animate-spin",
123
+ fill: "none",
124
+ viewBox: "0 0 24 24",
125
+ children: [
126
+ /* @__PURE__ */ jsx(
127
+ "circle",
128
+ {
129
+ className: "opacity-25",
130
+ cx: "12",
131
+ cy: "12",
132
+ r: "10",
133
+ stroke: "currentColor",
134
+ strokeWidth: "4"
135
+ }
136
+ ),
137
+ /* @__PURE__ */ jsx(
138
+ "path",
139
+ {
140
+ className: "opacity-75",
141
+ fill: "currentColor",
142
+ d: "M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z"
143
+ }
144
+ )
145
+ ]
146
+ }
147
+ ),
148
+ /* @__PURE__ */ jsxs("span", { className: "mt-1 text-xs", children: [
149
+ progress,
150
+ "%"
151
+ ] })
152
+ ] }) }),
153
+ isFailed && /* @__PURE__ */ jsx("div", { className: "absolute inset-0 flex items-center justify-center bg-black/50", children: /* @__PURE__ */ jsxs("div", { className: "text-center", children: [
154
+ /* @__PURE__ */ jsx(
155
+ "svg",
156
+ {
157
+ "aria-hidden": "true",
158
+ className: "mx-auto h-6 w-6 text-red-400",
159
+ fill: "none",
160
+ viewBox: "0 0 24 24",
161
+ stroke: "currentColor",
162
+ children: /* @__PURE__ */ jsx(
163
+ "path",
164
+ {
165
+ strokeLinecap: "round",
166
+ strokeLinejoin: "round",
167
+ strokeWidth: 2,
168
+ d: "M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z"
169
+ }
170
+ )
171
+ }
172
+ ),
173
+ onRetry && /* @__PURE__ */ jsx(
174
+ "button",
175
+ {
176
+ type: "button",
177
+ onClick: onRetry,
178
+ className: "mt-1 text-xs text-white underline hover:no-underline",
179
+ children: "Retry"
180
+ }
181
+ )
182
+ ] }) }),
183
+ /* @__PURE__ */ jsx(
184
+ "button",
185
+ {
186
+ type: "button",
187
+ onClick: onRemove,
188
+ className: cn(
189
+ "absolute -top-1 -right-1 z-10",
190
+ "rounded-full p-1",
191
+ "bg-neutral-900 text-white",
192
+ "opacity-0 group-hover:opacity-100",
193
+ "focus:ring-primary-500 focus:opacity-100 focus:ring-2 focus:outline-none",
194
+ "transition-opacity"
195
+ ),
196
+ "aria-label": `Remove ${file.name}`,
197
+ children: /* @__PURE__ */ jsx(
198
+ "svg",
199
+ {
200
+ "aria-hidden": "true",
201
+ className: "h-3 w-3",
202
+ fill: "none",
203
+ viewBox: "0 0 24 24",
204
+ stroke: "currentColor",
205
+ children: /* @__PURE__ */ jsx(
206
+ "path",
207
+ {
208
+ strokeLinecap: "round",
209
+ strokeLinejoin: "round",
210
+ strokeWidth: 2,
211
+ d: "M6 18L18 6M6 6l12 12"
212
+ }
213
+ )
214
+ }
215
+ )
216
+ }
217
+ ),
218
+ /* @__PURE__ */ jsx(
219
+ "div",
220
+ {
221
+ className: cn(
222
+ "absolute right-0 bottom-0 left-0",
223
+ "bg-black/70 px-1 py-0.5",
224
+ "opacity-0 group-hover:opacity-100",
225
+ "transition-opacity"
226
+ ),
227
+ children: /* @__PURE__ */ jsx("p", { className: "truncate text-xs text-white", children: file.name })
228
+ }
229
+ )
230
+ ]
231
+ }
232
+ );
233
+ }
234
+ AttachmentPreviewItem.displayName = "AttachmentPreviewItem";
235
+ var AttachmentPicker = React2.forwardRef(
236
+ ({
237
+ onFilesSelected,
238
+ acceptedTypes = ["image/*", "video/*", ".pdf", ".doc", ".docx"],
239
+ maxFileSize = 25 * 1024 * 1024,
240
+ // 25MB
241
+ maxFiles = 10,
242
+ multiple = true,
243
+ disabled = false,
244
+ onError,
245
+ className,
246
+ children
247
+ }, ref) => {
248
+ const inputRef = React2.useRef(null);
249
+ React2.useImperativeHandle(ref, () => inputRef.current);
250
+ const handleClick = () => {
251
+ inputRef.current?.click();
252
+ };
253
+ const handleChange = (event) => {
254
+ const files = Array.from(event.target.files || []);
255
+ if (files.length === 0) return;
256
+ const validFiles = [];
257
+ for (const file of files.slice(0, maxFiles)) {
258
+ const validation = validateFile(file, acceptedTypes, maxFileSize);
259
+ if (validation.valid) {
260
+ validFiles.push(file);
261
+ } else if (onError) {
262
+ onError(`${file.name}: ${validation.error}`);
263
+ }
264
+ }
265
+ if (files.length > maxFiles && onError) {
266
+ onError(`Maximum ${maxFiles} files allowed`);
267
+ }
268
+ if (validFiles.length > 0) {
269
+ onFilesSelected(validFiles);
270
+ }
271
+ event.target.value = "";
272
+ };
273
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
274
+ /* @__PURE__ */ jsx(
275
+ "input",
276
+ {
277
+ ref: inputRef,
278
+ type: "file",
279
+ accept: acceptedTypes.join(","),
280
+ multiple,
281
+ onChange: handleChange,
282
+ disabled,
283
+ className: "sr-only",
284
+ "aria-label": "Select files to attach"
285
+ }
286
+ ),
287
+ /* @__PURE__ */ jsx(
288
+ "button",
289
+ {
290
+ type: "button",
291
+ onClick: handleClick,
292
+ disabled,
293
+ "data-slot": "attachment-picker-button",
294
+ className: cn(
295
+ "inline-flex items-center justify-center",
296
+ "rounded-full p-2",
297
+ "text-neutral-500 hover:text-neutral-700",
298
+ "dark:text-neutral-400 dark:hover:text-neutral-200",
299
+ "hover:bg-neutral-100 dark:hover:bg-neutral-800",
300
+ "focus:ring-primary-500 focus:ring-2 focus:outline-none",
301
+ "disabled:cursor-not-allowed disabled:opacity-50",
302
+ "transition-colors",
303
+ className
304
+ ),
305
+ "aria-label": "Attach files",
306
+ children: children || /* @__PURE__ */ jsx(
307
+ "svg",
308
+ {
309
+ "aria-hidden": "true",
310
+ className: "h-5 w-5",
311
+ fill: "none",
312
+ viewBox: "0 0 24 24",
313
+ stroke: "currentColor",
314
+ children: /* @__PURE__ */ jsx(
315
+ "path",
316
+ {
317
+ strokeLinecap: "round",
318
+ strokeLinejoin: "round",
319
+ strokeWidth: 2,
320
+ d: "M15.172 7l-6.586 6.586a2 2 0 102.828 2.828l6.414-6.586a4 4 0 00-5.656-5.656l-6.415 6.585a6 6 0 108.486 8.486L20.5 13"
321
+ }
322
+ )
323
+ }
324
+ )
325
+ }
326
+ )
327
+ ] });
328
+ }
329
+ );
330
+ AttachmentPicker.displayName = "AttachmentPicker";
331
+ function DragDropZone({
332
+ onFilesDropped,
333
+ acceptedTypes,
334
+ maxFileSize,
335
+ maxFiles = 10,
336
+ disabled = false,
337
+ onError,
338
+ children,
339
+ className
340
+ }) {
341
+ const [isDragging, setIsDragging] = React2.useState(false);
342
+ const dragCounterRef = React2.useRef(0);
343
+ const handleDragEnter = (event) => {
344
+ event.preventDefault();
345
+ event.stopPropagation();
346
+ if (disabled) return;
347
+ dragCounterRef.current++;
348
+ if (event.dataTransfer.items && event.dataTransfer.items.length > 0) {
349
+ setIsDragging(true);
350
+ }
351
+ };
352
+ const handleDragLeave = (event) => {
353
+ event.preventDefault();
354
+ event.stopPropagation();
355
+ if (disabled) return;
356
+ dragCounterRef.current--;
357
+ if (dragCounterRef.current === 0) {
358
+ setIsDragging(false);
359
+ }
360
+ };
361
+ const handleDragOver = (event) => {
362
+ event.preventDefault();
363
+ event.stopPropagation();
364
+ };
365
+ const handleDrop = (event) => {
366
+ event.preventDefault();
367
+ event.stopPropagation();
368
+ if (disabled) return;
369
+ setIsDragging(false);
370
+ dragCounterRef.current = 0;
371
+ const files = Array.from(event.dataTransfer.files);
372
+ if (files.length === 0) return;
373
+ const validFiles = [];
374
+ for (const file of files.slice(0, maxFiles)) {
375
+ const validation = validateFile(file, acceptedTypes, maxFileSize);
376
+ if (validation.valid) {
377
+ validFiles.push(file);
378
+ } else if (onError) {
379
+ onError(`${file.name}: ${validation.error}`);
380
+ }
381
+ }
382
+ if (files.length > maxFiles && onError) {
383
+ onError(`Maximum ${maxFiles} files allowed`);
384
+ }
385
+ if (validFiles.length > 0) {
386
+ onFilesDropped(validFiles);
387
+ }
388
+ };
389
+ return /* @__PURE__ */ jsxs(
390
+ "div",
391
+ {
392
+ onDragEnter: handleDragEnter,
393
+ onDragLeave: handleDragLeave,
394
+ onDragOver: handleDragOver,
395
+ onDrop: handleDrop,
396
+ className: cn("relative", className),
397
+ children: [
398
+ children,
399
+ isDragging && /* @__PURE__ */ jsx(
400
+ "div",
401
+ {
402
+ className: cn(
403
+ "absolute inset-0 z-50",
404
+ "flex items-center justify-center",
405
+ "bg-primary-50/90 dark:bg-primary-900/90",
406
+ "border-primary-500 border-2 border-dashed",
407
+ "rounded-lg"
408
+ ),
409
+ children: /* @__PURE__ */ jsxs("div", { className: "text-center", children: [
410
+ /* @__PURE__ */ jsx(
411
+ "svg",
412
+ {
413
+ "aria-hidden": "true",
414
+ className: "text-primary-800 mx-auto h-12 w-12",
415
+ fill: "none",
416
+ viewBox: "0 0 24 24",
417
+ stroke: "currentColor",
418
+ children: /* @__PURE__ */ jsx(
419
+ "path",
420
+ {
421
+ strokeLinecap: "round",
422
+ strokeLinejoin: "round",
423
+ strokeWidth: 2,
424
+ d: "M7 16a4 4 0 01-.88-7.903A5 5 0 1115.9 6L16 6a5 5 0 011 9.9M15 13l-3-3m0 0l-3 3m3-3v12"
425
+ }
426
+ )
427
+ }
428
+ ),
429
+ /* @__PURE__ */ jsx("p", { className: "text-primary-700 dark:text-primary-300 mt-2 text-sm font-medium", children: "Drop files here" })
430
+ ] })
431
+ }
432
+ )
433
+ ]
434
+ }
435
+ );
436
+ }
437
+ DragDropZone.displayName = "DragDropZone";
438
+ function CameraButton({
439
+ onCapture,
440
+ useFrontCamera = false,
441
+ disabled = false,
442
+ className
443
+ }) {
444
+ const inputRef = React2.useRef(null);
445
+ const handleClick = () => {
446
+ inputRef.current?.click();
447
+ };
448
+ const handleChange = (event) => {
449
+ const file = event.target.files?.[0];
450
+ if (file) {
451
+ onCapture(file);
452
+ }
453
+ event.target.value = "";
454
+ };
455
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
456
+ /* @__PURE__ */ jsx(
457
+ "input",
458
+ {
459
+ ref: inputRef,
460
+ type: "file",
461
+ accept: "image/*",
462
+ capture: useFrontCamera ? "user" : "environment",
463
+ onChange: handleChange,
464
+ disabled,
465
+ className: "sr-only",
466
+ "aria-label": "Take a photo"
467
+ }
468
+ ),
469
+ /* @__PURE__ */ jsx(
470
+ "button",
471
+ {
472
+ type: "button",
473
+ onClick: handleClick,
474
+ disabled,
475
+ className: cn(
476
+ "inline-flex items-center justify-center",
477
+ "rounded-full p-2",
478
+ "text-neutral-500 hover:text-neutral-700",
479
+ "dark:text-neutral-400 dark:hover:text-neutral-200",
480
+ "hover:bg-neutral-100 dark:hover:bg-neutral-800",
481
+ "focus:ring-primary-500 focus:ring-2 focus:outline-none",
482
+ "disabled:cursor-not-allowed disabled:opacity-50",
483
+ "transition-colors",
484
+ className
485
+ ),
486
+ "aria-label": "Take a photo",
487
+ children: /* @__PURE__ */ jsxs(
488
+ "svg",
489
+ {
490
+ "aria-hidden": "true",
491
+ className: "h-5 w-5",
492
+ fill: "none",
493
+ viewBox: "0 0 24 24",
494
+ stroke: "currentColor",
495
+ children: [
496
+ /* @__PURE__ */ jsx(
497
+ "path",
498
+ {
499
+ strokeLinecap: "round",
500
+ strokeLinejoin: "round",
501
+ strokeWidth: 2,
502
+ d: "M3 9a2 2 0 012-2h.93a2 2 0 001.664-.89l.812-1.22A2 2 0 0110.07 4h3.86a2 2 0 011.664.89l.812 1.22A2 2 0 0018.07 7H19a2 2 0 012 2v9a2 2 0 01-2 2H5a2 2 0 01-2-2V9z"
503
+ }
504
+ ),
505
+ /* @__PURE__ */ jsx(
506
+ "path",
507
+ {
508
+ strokeLinecap: "round",
509
+ strokeLinejoin: "round",
510
+ strokeWidth: 2,
511
+ d: "M15 13a3 3 0 11-6 0 3 3 0 016 0z"
512
+ }
513
+ )
514
+ ]
515
+ }
516
+ )
517
+ }
518
+ )
519
+ ] });
520
+ }
521
+ CameraButton.displayName = "CameraButton";
522
+ function activeMentionQuery(value, caret) {
523
+ const upToCaret = value.slice(0, caret);
524
+ const match = /(^|\s)@([^\s@]*)$/.exec(upToCaret);
525
+ if (!match) return null;
526
+ const query = match[2];
527
+ return { query, start: caret - query.length - 1 };
528
+ }
529
+ function isFileAccepted(file, accepted) {
530
+ if (!accepted || accepted.length === 0) return true;
531
+ const mime = file.type;
532
+ const name = file.name.toLowerCase();
533
+ return accepted.some((token) => {
534
+ if (token.startsWith(".")) return name.endsWith(token.toLowerCase());
535
+ if (token.endsWith("/*")) return mime.startsWith(token.slice(0, -1));
536
+ if (token.includes("/")) return mime === token;
537
+ return false;
538
+ });
539
+ }
540
+ function CharacterCounter({
541
+ current,
542
+ max,
543
+ showWarningAt = 0.9,
544
+ className
545
+ }) {
546
+ const percentage = current / max;
547
+ const isWarning = percentage >= showWarningAt && percentage < 1;
548
+ const isOver = current > max;
549
+ return /* @__PURE__ */ jsxs(
550
+ "span",
551
+ {
552
+ className: cn(
553
+ "text-xs tabular-nums",
554
+ isOver ? "font-medium text-red-700 dark:text-red-400" : isWarning ? "text-amber-700 dark:text-amber-400" : "text-neutral-600 dark:text-neutral-400",
555
+ className
556
+ ),
557
+ "aria-live": "polite",
558
+ "aria-label": `${current} of ${max} characters`,
559
+ children: [
560
+ current,
561
+ "/",
562
+ max
563
+ ]
564
+ }
565
+ );
566
+ }
567
+ CharacterCounter.displayName = "CharacterCounter";
568
+ var sendButtonVariants = cva(
569
+ [
570
+ "inline-flex items-center justify-center",
571
+ "rounded-full p-3 self-start",
572
+ "transition-all duration-200",
573
+ "focus:outline-none focus:ring-2 focus:ring-primary-500",
574
+ "disabled:opacity-50 disabled:cursor-not-allowed"
575
+ ],
576
+ {
577
+ variants: {
578
+ variant: {
579
+ primary: [
580
+ "bg-primary-800 text-white",
581
+ "hover:bg-primary-900",
582
+ "active:scale-95"
583
+ ],
584
+ subtle: [
585
+ "bg-transparent text-primary-800",
586
+ "hover:bg-primary-50 dark:hover:bg-primary-900/20"
587
+ ]
588
+ },
589
+ canSend: {
590
+ true: "",
591
+ false: "opacity-50 cursor-not-allowed"
592
+ }
593
+ },
594
+ defaultVariants: {
595
+ variant: "primary",
596
+ canSend: false
597
+ }
598
+ }
599
+ );
600
+ var SendButton = React2.forwardRef(
601
+ ({ className, variant, canSend, isLoading, disabled, ...props }, ref) => {
602
+ return /* @__PURE__ */ jsx(
603
+ "button",
604
+ {
605
+ ref,
606
+ type: "submit",
607
+ disabled: disabled || !canSend || isLoading,
608
+ "data-slot": "composer-send-button",
609
+ className: cn(sendButtonVariants({ variant, canSend }), className),
610
+ "aria-label": isLoading ? "Sending message" : "Send message",
611
+ ...props,
612
+ children: isLoading ? /* @__PURE__ */ jsxs(
613
+ "svg",
614
+ {
615
+ "aria-hidden": "true",
616
+ className: "h-5 w-5 animate-spin",
617
+ fill: "none",
618
+ viewBox: "0 0 24 24",
619
+ children: [
620
+ /* @__PURE__ */ jsx(
621
+ "circle",
622
+ {
623
+ className: "opacity-25",
624
+ cx: "12",
625
+ cy: "12",
626
+ r: "10",
627
+ stroke: "currentColor",
628
+ strokeWidth: "4"
629
+ }
630
+ ),
631
+ /* @__PURE__ */ jsx(
632
+ "path",
633
+ {
634
+ className: "opacity-75",
635
+ fill: "currentColor",
636
+ d: "M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z"
637
+ }
638
+ )
639
+ ]
640
+ }
641
+ ) : /* @__PURE__ */ jsx(
642
+ "svg",
643
+ {
644
+ "aria-hidden": "true",
645
+ className: "h-5 w-5",
646
+ fill: "none",
647
+ viewBox: "0 0 24 24",
648
+ stroke: "currentColor",
649
+ children: /* @__PURE__ */ jsx(
650
+ "path",
651
+ {
652
+ strokeLinecap: "round",
653
+ strokeLinejoin: "round",
654
+ strokeWidth: 2,
655
+ d: "M12 19l9 2-9-18-9 18 9-2zm0 0v-8"
656
+ }
657
+ )
658
+ }
659
+ )
660
+ }
661
+ );
662
+ }
663
+ );
664
+ SendButton.displayName = "SendButton";
665
+ var MessageComposer = React2.forwardRef(
666
+ ({
667
+ onSend,
668
+ onTypingStart,
669
+ onTypingStop,
670
+ value: controlledValue,
671
+ onValueChange,
672
+ placeholder = "Type a message...",
673
+ maxLength = 1600,
674
+ showCharacterCount = false,
675
+ disabled = false,
676
+ isSending = false,
677
+ showAttachmentPicker = true,
678
+ showCameraButton = false,
679
+ acceptedFileTypes = ["image/*", "video/*", ".pdf", ".doc", ".docx"],
680
+ maxFileSize = 25 * 1024 * 1024,
681
+ maxAttachments = 10,
682
+ onError,
683
+ autoFocus = false,
684
+ replyTo = null,
685
+ onCancelReply,
686
+ variant = "default",
687
+ inputTrailing,
688
+ mentionOptions,
689
+ className
690
+ }, ref) => {
691
+ const textareaRef = React2.useRef(null);
692
+ const [internalContent, setInternalContent] = React2.useState("");
693
+ const isControlled = controlledValue !== void 0;
694
+ const content = isControlled ? controlledValue : internalContent;
695
+ const setContent = React2.useCallback(
696
+ (val) => {
697
+ if (isControlled) {
698
+ const newVal = typeof val === "function" ? val(controlledValue) : val;
699
+ onValueChange?.(newVal);
700
+ } else {
701
+ setInternalContent(val);
702
+ }
703
+ },
704
+ [isControlled, controlledValue, onValueChange]
705
+ );
706
+ const [attachments, setAttachments] = React2.useState(
707
+ []
708
+ );
709
+ const [isTyping, setIsTyping] = React2.useState(false);
710
+ const typingTimeoutRef = React2.useRef(null);
711
+ React2.useImperativeHandle(ref, () => textareaRef.current);
712
+ React2.useEffect(() => {
713
+ const textarea = textareaRef.current;
714
+ if (textarea) {
715
+ textarea.style.height = "auto";
716
+ textarea.style.height = `${Math.min(textarea.scrollHeight, 150)}px`;
717
+ }
718
+ }, [content]);
719
+ React2.useEffect(() => {
720
+ if (content.length > 0 && !isTyping) {
721
+ setIsTyping(true);
722
+ onTypingStart?.();
723
+ }
724
+ if (typingTimeoutRef.current) {
725
+ clearTimeout(typingTimeoutRef.current);
726
+ }
727
+ typingTimeoutRef.current = setTimeout(() => {
728
+ if (isTyping) {
729
+ setIsTyping(false);
730
+ onTypingStop?.();
731
+ }
732
+ }, 2e3);
733
+ return () => {
734
+ if (typingTimeoutRef.current) {
735
+ clearTimeout(typingTimeoutRef.current);
736
+ }
737
+ };
738
+ }, [content, isTyping, onTypingStart, onTypingStop]);
739
+ React2.useEffect(() => {
740
+ if (autoFocus) {
741
+ textareaRef.current?.focus();
742
+ }
743
+ }, [autoFocus]);
744
+ React2.useEffect(() => {
745
+ if (replyTo) {
746
+ textareaRef.current?.focus();
747
+ }
748
+ }, [replyTo]);
749
+ const mentionsEnabled = !!mentionOptions && mentionOptions.length > 0;
750
+ const [mention, setMention] = React2.useState(null);
751
+ const [mentionHighlight, setMentionHighlight] = React2.useState(0);
752
+ const mentionListId = React2.useId();
753
+ const mentionOptionId = (i) => `${mentionListId}-option-${i}`;
754
+ const mentionSuggestions = React2.useMemo(() => {
755
+ if (!mention || !mentionOptions) return [];
756
+ const q = mention.query.toLowerCase();
757
+ return mentionOptions.filter((o) => o.label.toLowerCase().includes(q));
758
+ }, [mention, mentionOptions]);
759
+ const mentionMenuOpen = mentionsEnabled && mention !== null && mentionSuggestions.length > 0;
760
+ const {
761
+ anchorRef: mentionAnchorRef,
762
+ floatingRef: mentionFloatingRef,
763
+ style: mentionStyle
764
+ } = useAnchoredPosition({
765
+ open: mentionMenuOpen,
766
+ placement: "top-start",
767
+ maxHeight: 224
768
+ });
769
+ const clampedMentionHighlight = mentionMenuOpen ? Math.min(mentionHighlight, mentionSuggestions.length - 1) : -1;
770
+ const activeMentionOptionId = mentionMenuOpen ? mentionOptionId(clampedMentionHighlight) : void 0;
771
+ const syncMention = React2.useCallback(
772
+ (value, caret) => {
773
+ if (!mentionsEnabled) return;
774
+ setMention(activeMentionQuery(value, caret));
775
+ setMentionHighlight(0);
776
+ },
777
+ [mentionsEnabled]
778
+ );
779
+ const insertMention = (option) => {
780
+ if (!mention) return;
781
+ const insertValue = option.value ?? option.label.split(" ")[0];
782
+ const before = content.slice(0, mention.start);
783
+ const after = content.slice(mention.start + 1 + mention.query.length);
784
+ const insert = `@${insertValue} `;
785
+ setContent(before + insert + after);
786
+ setMention(null);
787
+ const caret = before.length + insert.length;
788
+ requestAnimationFrame(() => {
789
+ const el = textareaRef.current;
790
+ if (el) {
791
+ el.focus();
792
+ el.setSelectionRange(caret, caret);
793
+ }
794
+ });
795
+ };
796
+ const canSend = (content.trim().length > 0 || attachments.length > 0) && content.length <= maxLength && !disabled && !isSending;
797
+ const handleSubmit = async (event) => {
798
+ event.preventDefault();
799
+ if (!canSend) return;
800
+ const message = {
801
+ content: content.trim(),
802
+ attachments: attachments.map((a) => a.file),
803
+ replyToId: replyTo?.id
804
+ };
805
+ setContent("");
806
+ setAttachments([]);
807
+ setIsTyping(false);
808
+ onTypingStop?.();
809
+ try {
810
+ await onSend(message);
811
+ } catch {
812
+ setContent(message.content);
813
+ onError?.("Failed to send message");
814
+ }
815
+ };
816
+ const handleKeyDown = (event) => {
817
+ if (mentionMenuOpen) {
818
+ if (event.key === "ArrowDown") {
819
+ event.preventDefault();
820
+ setMentionHighlight((h) => (h + 1) % mentionSuggestions.length);
821
+ return;
822
+ }
823
+ if (event.key === "ArrowUp") {
824
+ event.preventDefault();
825
+ setMentionHighlight(
826
+ (h) => (h - 1 + mentionSuggestions.length) % mentionSuggestions.length
827
+ );
828
+ return;
829
+ }
830
+ if (event.key === "Enter" || event.key === "Tab") {
831
+ event.preventDefault();
832
+ const chosen = mentionSuggestions[mentionHighlight] ?? mentionSuggestions[0];
833
+ if (chosen) insertMention(chosen);
834
+ return;
835
+ }
836
+ if (event.key === "Escape") {
837
+ event.preventDefault();
838
+ setMention(null);
839
+ return;
840
+ }
841
+ }
842
+ if (event.key === "Enter" && !event.shiftKey) {
843
+ event.preventDefault();
844
+ if (canSend) {
845
+ handleSubmit(event);
846
+ }
847
+ }
848
+ };
849
+ const handleFilesSelected = (files) => {
850
+ const remainingSlots = maxAttachments - attachments.length;
851
+ const filesToAdd = files.slice(0, remainingSlots);
852
+ if (files.length > remainingSlots) {
853
+ onError?.(`Maximum ${maxAttachments} attachments allowed`);
854
+ }
855
+ const newAttachments = filesToAdd.map((file) => {
856
+ const type = getFileType(file.type);
857
+ let previewUrl;
858
+ if (type === "image" || type === "video") {
859
+ previewUrl = URL.createObjectURL(file);
860
+ }
861
+ return {
862
+ id: generateAttachmentId(),
863
+ file,
864
+ previewUrl,
865
+ type,
866
+ state: "pending"
867
+ };
868
+ });
869
+ setAttachments((prev) => [...prev, ...newAttachments]);
870
+ };
871
+ const handlePaste = (event) => {
872
+ if (!showAttachmentPicker || disabled) return;
873
+ const pasted = Array.from(event.clipboardData.items).filter((item) => item.kind === "file").map((item) => item.getAsFile()).filter((f) => f !== null).filter((f) => isFileAccepted(f, acceptedFileTypes));
874
+ if (pasted.length === 0) return;
875
+ event.preventDefault();
876
+ handleFilesSelected(pasted);
877
+ };
878
+ const handleRemoveAttachment = (attachmentId) => {
879
+ setAttachments((prev) => {
880
+ const attachment = prev.find((a) => a.id === attachmentId);
881
+ if (attachment?.previewUrl) {
882
+ URL.revokeObjectURL(attachment.previewUrl);
883
+ }
884
+ return prev.filter((a) => a.id !== attachmentId);
885
+ });
886
+ };
887
+ React2.useEffect(() => {
888
+ const currentAttachments = attachments;
889
+ return () => {
890
+ currentAttachments.forEach((a) => {
891
+ if (a.previewUrl) {
892
+ URL.revokeObjectURL(a.previewUrl);
893
+ }
894
+ });
895
+ };
896
+ }, [attachments]);
897
+ return /* @__PURE__ */ jsx(
898
+ DragDropZone,
899
+ {
900
+ onFilesDropped: handleFilesSelected,
901
+ acceptedTypes: acceptedFileTypes,
902
+ maxFileSize,
903
+ maxFiles: maxAttachments - attachments.length,
904
+ disabled: disabled || attachments.length >= maxAttachments,
905
+ onError,
906
+ className: cn("w-full", className),
907
+ children: /* @__PURE__ */ jsxs(
908
+ "form",
909
+ {
910
+ onSubmit: handleSubmit,
911
+ "data-slot": "message-composer",
912
+ className: "w-full",
913
+ children: [
914
+ replyTo && /* @__PURE__ */ jsxs(
915
+ "div",
916
+ {
917
+ "data-slot": "composer-reply-preview",
918
+ className: cn(
919
+ "flex items-center gap-2 px-4 py-2",
920
+ "bg-neutral-50 dark:bg-neutral-800/50",
921
+ "border-primary-500 border-l-4"
922
+ ),
923
+ children: [
924
+ /* @__PURE__ */ jsxs("div", { className: "min-w-0 flex-1", children: [
925
+ /* @__PURE__ */ jsxs("span", { className: "text-primary-800 dark:text-primary-400 text-xs font-medium", children: [
926
+ "Replying to ",
927
+ replyTo.senderName
928
+ ] }),
929
+ /* @__PURE__ */ jsx("p", { className: "truncate text-sm text-neutral-600 dark:text-neutral-300", children: replyTo.content })
930
+ ] }),
931
+ /* @__PURE__ */ jsx(
932
+ "button",
933
+ {
934
+ type: "button",
935
+ onClick: onCancelReply,
936
+ className: cn(
937
+ "shrink-0 rounded p-1",
938
+ "text-neutral-500 hover:text-neutral-700",
939
+ "dark:text-neutral-400 dark:hover:text-neutral-200",
940
+ "focus:ring-primary-500 focus:ring-2 focus:outline-none"
941
+ ),
942
+ "aria-label": "Cancel reply",
943
+ children: /* @__PURE__ */ jsx(
944
+ "svg",
945
+ {
946
+ "aria-hidden": "true",
947
+ className: "h-4 w-4",
948
+ fill: "none",
949
+ viewBox: "0 0 24 24",
950
+ stroke: "currentColor",
951
+ children: /* @__PURE__ */ jsx(
952
+ "path",
953
+ {
954
+ strokeLinecap: "round",
955
+ strokeLinejoin: "round",
956
+ strokeWidth: 2,
957
+ d: "M6 18L18 6M6 6l12 12"
958
+ }
959
+ )
960
+ }
961
+ )
962
+ }
963
+ )
964
+ ]
965
+ }
966
+ ),
967
+ attachments.length > 0 && /* @__PURE__ */ jsx(
968
+ "div",
969
+ {
970
+ "data-slot": "composer-attachments",
971
+ className: cn(
972
+ "flex flex-wrap gap-2 p-3",
973
+ "border-t border-neutral-200 dark:border-neutral-700"
974
+ ),
975
+ children: attachments.map((attachment) => /* @__PURE__ */ jsx(
976
+ AttachmentPreviewItem,
977
+ {
978
+ attachment,
979
+ onRemove: () => handleRemoveAttachment(attachment.id)
980
+ },
981
+ attachment.id
982
+ ))
983
+ }
984
+ ),
985
+ /* @__PURE__ */ jsxs(
986
+ "div",
987
+ {
988
+ "data-slot": "composer-input-area",
989
+ className: cn(
990
+ "flex items-center gap-2 p-3",
991
+ "bg-white dark:bg-neutral-900",
992
+ variant === "default" && "border-t border-neutral-200 dark:border-neutral-700"
993
+ ),
994
+ children: [
995
+ showAttachmentPicker && /* @__PURE__ */ jsx(
996
+ AttachmentPicker,
997
+ {
998
+ onFilesSelected: handleFilesSelected,
999
+ acceptedTypes: acceptedFileTypes,
1000
+ maxFileSize,
1001
+ maxFiles: maxAttachments - attachments.length,
1002
+ disabled: disabled || attachments.length >= maxAttachments,
1003
+ onError
1004
+ }
1005
+ ),
1006
+ showCameraButton && /* @__PURE__ */ jsx(
1007
+ CameraButton,
1008
+ {
1009
+ onCapture: (file) => handleFilesSelected([file]),
1010
+ disabled: disabled || attachments.length >= maxAttachments
1011
+ }
1012
+ ),
1013
+ /* @__PURE__ */ jsxs(
1014
+ "div",
1015
+ {
1016
+ "data-slot": "composer-input-wrapper",
1017
+ className: "relative flex-1",
1018
+ ref: mentionAnchorRef,
1019
+ children: [
1020
+ mentionMenuOpen && createPortal(
1021
+ /* @__PURE__ */ jsx(
1022
+ "ul",
1023
+ {
1024
+ ref: mentionFloatingRef,
1025
+ style: mentionStyle,
1026
+ id: mentionListId,
1027
+ role: "listbox",
1028
+ "aria-label": "Mention",
1029
+ "data-slot": "composer-mention-list",
1030
+ className: "w-64 overflow-y-auto rounded-lg border border-neutral-200 bg-white py-1 shadow-lg dark:border-neutral-700 dark:bg-neutral-800",
1031
+ children: mentionSuggestions.map((option, i) => /* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsxs(
1032
+ "button",
1033
+ {
1034
+ type: "button",
1035
+ id: mentionOptionId(i),
1036
+ role: "option",
1037
+ "aria-selected": i === clampedMentionHighlight,
1038
+ onMouseDown: (e) => {
1039
+ e.preventDefault();
1040
+ insertMention(option);
1041
+ },
1042
+ onMouseEnter: () => setMentionHighlight(i),
1043
+ className: cn(
1044
+ "flex w-full items-center gap-2 px-3 py-1.5 text-left text-sm",
1045
+ i === clampedMentionHighlight ? "bg-primary-100 text-primary-900 dark:bg-primary-900/40 dark:text-primary-100" : "text-neutral-700 dark:text-neutral-200"
1046
+ ),
1047
+ children: [
1048
+ option.icon,
1049
+ /* @__PURE__ */ jsxs("span", { className: "min-w-0 flex-1 truncate", children: [
1050
+ /* @__PURE__ */ jsx("span", { className: "font-medium", children: option.label }),
1051
+ option.description && /* @__PURE__ */ jsx("span", { className: "ml-1 text-xs text-neutral-400", children: option.description })
1052
+ ] }),
1053
+ option.meta && /* @__PURE__ */ jsx("span", { className: "text-[10px] text-neutral-400", children: option.meta })
1054
+ ]
1055
+ }
1056
+ ) }, option.id))
1057
+ }
1058
+ ),
1059
+ document.body
1060
+ ),
1061
+ /* @__PURE__ */ jsx(
1062
+ "textarea",
1063
+ {
1064
+ ref: textareaRef,
1065
+ "data-slot": "composer-input",
1066
+ value: content,
1067
+ onChange: (e) => {
1068
+ setContent(e.target.value);
1069
+ syncMention(
1070
+ e.target.value,
1071
+ e.target.selectionStart ?? e.target.value.length
1072
+ );
1073
+ },
1074
+ onClick: (e) => {
1075
+ const el = e.currentTarget;
1076
+ syncMention(el.value, el.selectionStart ?? el.value.length);
1077
+ },
1078
+ onKeyDown: handleKeyDown,
1079
+ onPaste: handlePaste,
1080
+ placeholder,
1081
+ disabled: disabled || isSending,
1082
+ rows: 1,
1083
+ className: cn(
1084
+ "w-full resize-none rounded-2xl py-2.5",
1085
+ inputTrailing ? "pr-10 pl-4" : "px-4",
1086
+ "bg-neutral-100 dark:bg-neutral-800",
1087
+ "text-neutral-900 dark:text-neutral-100",
1088
+ "placeholder:text-neutral-400 dark:placeholder:text-neutral-500",
1089
+ "focus:ring-primary-500 focus:ring-2 focus:outline-none",
1090
+ "disabled:cursor-not-allowed disabled:opacity-50",
1091
+ "transition-colors",
1092
+ "max-h-[150px]"
1093
+ ),
1094
+ "aria-label": "Message",
1095
+ "aria-describedby": showCharacterCount ? "char-count" : void 0,
1096
+ ...mentionsEnabled ? {
1097
+ "aria-controls": mentionMenuOpen ? mentionListId : void 0,
1098
+ "aria-activedescendant": activeMentionOptionId,
1099
+ "aria-autocomplete": "list"
1100
+ } : {}
1101
+ }
1102
+ ),
1103
+ inputTrailing && /* @__PURE__ */ jsx(
1104
+ "div",
1105
+ {
1106
+ "data-slot": "composer-input-trailing",
1107
+ className: "pointer-events-none absolute top-0 right-1 flex h-[44px] items-center [&>*]:pointer-events-auto",
1108
+ children: inputTrailing
1109
+ }
1110
+ ),
1111
+ showCharacterCount && /* @__PURE__ */ jsx(
1112
+ "div",
1113
+ {
1114
+ "data-slot": "composer-char-count",
1115
+ id: "char-count",
1116
+ className: "absolute right-3 bottom-1.5",
1117
+ children: /* @__PURE__ */ jsx(CharacterCounter, { current: content.length, max: maxLength })
1118
+ }
1119
+ )
1120
+ ]
1121
+ }
1122
+ ),
1123
+ /* @__PURE__ */ jsx(
1124
+ SendButton,
1125
+ {
1126
+ canSend,
1127
+ isLoading: isSending,
1128
+ disabled
1129
+ }
1130
+ )
1131
+ ]
1132
+ }
1133
+ )
1134
+ ]
1135
+ }
1136
+ )
1137
+ }
1138
+ );
1139
+ }
1140
+ );
1141
+ MessageComposer.displayName = "MessageComposer";
1142
+
1143
+ export { AttachmentPicker, AttachmentPreviewItem, CameraButton, CharacterCounter, DragDropZone, MessageComposer, SendButton, generateAttachmentId, getFileType, sendButtonVariants, validateFile };
1144
+ //# sourceMappingURL=chunk-UM6NA7HL.js.map
1145
+ //# sourceMappingURL=chunk-UM6NA7HL.js.map