veryfront 0.1.997 → 0.1.998

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 (374) hide show
  1. package/esm/cli/templates/manifest.js +1 -1
  2. package/esm/deno.d.ts +7 -0
  3. package/esm/deno.js +11 -3
  4. package/esm/deps/esm.sh/react-dom@19.2.4.d.ts +2 -0
  5. package/esm/deps/esm.sh/react-dom@19.2.4.d.ts.map +1 -0
  6. package/esm/deps/esm.sh/react-dom@19.2.4.js +3 -0
  7. package/esm/react/react-dom.d.ts +3 -0
  8. package/esm/react/react-dom.d.ts.map +1 -0
  9. package/esm/react/react-dom.js +2 -0
  10. package/esm/src/agent/ag-ui/host-support.d.ts.map +1 -1
  11. package/esm/src/agent/ag-ui/host-support.js +12 -0
  12. package/esm/src/agent/react/index.d.ts +4 -2
  13. package/esm/src/agent/react/index.d.ts.map +1 -1
  14. package/esm/src/agent/react/index.js +2 -1
  15. package/esm/src/agent/react/use-agent-metadata.d.ts +5 -0
  16. package/esm/src/agent/react/use-agent-metadata.d.ts.map +1 -1
  17. package/esm/src/agent/react/use-agent-metadata.js +18 -9
  18. package/esm/src/agent/react/use-agents.d.ts +33 -0
  19. package/esm/src/agent/react/use-agents.d.ts.map +1 -0
  20. package/esm/src/agent/react/use-agents.js +72 -0
  21. package/esm/src/agent/react/use-chat/index.d.ts +1 -1
  22. package/esm/src/agent/react/use-chat/index.d.ts.map +1 -1
  23. package/esm/src/agent/react/use-chat/types.d.ts +3 -2
  24. package/esm/src/agent/react/use-chat/types.d.ts.map +1 -1
  25. package/esm/src/agent/react/use-chat/use-chat.d.ts +12 -1
  26. package/esm/src/agent/react/use-chat/use-chat.d.ts.map +1 -1
  27. package/esm/src/agent/react/use-chat/use-chat.js +47 -7
  28. package/esm/src/agent/react/use-chat/utils.d.ts.map +1 -1
  29. package/esm/src/agent/react/use-chat/utils.js +4 -0
  30. package/esm/src/agent/runtime/message-adapter.d.ts.map +1 -1
  31. package/esm/src/agent/runtime/message-adapter.js +3 -1
  32. package/esm/src/agent/runtime/text-generation-runtime-message-converter.d.ts.map +1 -1
  33. package/esm/src/agent/runtime/text-generation-runtime-message-converter.js +6 -2
  34. package/esm/src/chat/index.d.ts +17 -7
  35. package/esm/src/chat/index.d.ts.map +1 -1
  36. package/esm/src/chat/index.js +33 -7
  37. package/esm/src/chat/protocol.d.ts +13 -1
  38. package/esm/src/chat/protocol.d.ts.map +1 -1
  39. package/esm/src/chat/upload-handler.d.ts +55 -0
  40. package/esm/src/chat/upload-handler.d.ts.map +1 -0
  41. package/esm/src/chat/upload-handler.js +180 -0
  42. package/esm/src/discovery/import-rewriter.d.ts +1 -1
  43. package/esm/src/discovery/import-rewriter.d.ts.map +1 -1
  44. package/esm/src/discovery/import-rewriter.js +2 -0
  45. package/esm/src/discovery/transpiler.d.ts.map +1 -1
  46. package/esm/src/discovery/transpiler.js +2 -0
  47. package/esm/src/react/components/chat/agent-card.d.ts +84 -11
  48. package/esm/src/react/components/chat/agent-card.d.ts.map +1 -1
  49. package/esm/src/react/components/chat/agent-card.js +151 -57
  50. package/esm/src/react/components/chat/agent-picker.d.ts +166 -0
  51. package/esm/src/react/components/chat/agent-picker.d.ts.map +1 -0
  52. package/esm/src/react/components/chat/agent-picker.js +183 -0
  53. package/esm/src/react/components/chat/chat/components/animations.js +1 -1
  54. package/esm/src/react/components/chat/chat/components/attachment-pill.d.ts +125 -3
  55. package/esm/src/react/components/chat/chat/components/attachment-pill.d.ts.map +1 -1
  56. package/esm/src/react/components/chat/chat/components/attachment-pill.js +209 -25
  57. package/esm/src/react/components/chat/chat/components/attachments-panel.d.ts +149 -0
  58. package/esm/src/react/components/chat/chat/components/attachments-panel.d.ts.map +1 -0
  59. package/esm/src/react/components/chat/chat/components/attachments-panel.js +187 -0
  60. package/esm/src/react/components/chat/chat/components/branch-picker.d.ts +13 -2
  61. package/esm/src/react/components/chat/chat/components/branch-picker.d.ts.map +1 -1
  62. package/esm/src/react/components/chat/chat/components/branch-picker.js +6 -8
  63. package/esm/src/react/components/chat/chat/components/chat-messages-skeleton.d.ts +20 -0
  64. package/esm/src/react/components/chat/chat/components/chat-messages-skeleton.d.ts.map +1 -0
  65. package/esm/src/react/components/chat/chat/components/chat-messages-skeleton.js +31 -0
  66. package/esm/src/react/components/chat/chat/components/code-block.d.ts +9 -1
  67. package/esm/src/react/components/chat/chat/components/code-block.d.ts.map +1 -1
  68. package/esm/src/react/components/chat/chat/components/code-block.js +14 -6
  69. package/esm/src/react/components/chat/chat/components/drop-zone.d.ts +11 -4
  70. package/esm/src/react/components/chat/chat/components/drop-zone.d.ts.map +1 -1
  71. package/esm/src/react/components/chat/chat/components/drop-zone.js +10 -8
  72. package/esm/src/react/components/chat/chat/components/empty-state.d.ts +2 -1
  73. package/esm/src/react/components/chat/chat/components/empty-state.d.ts.map +1 -1
  74. package/esm/src/react/components/chat/chat/components/empty-state.js +7 -8
  75. package/esm/src/react/components/chat/chat/components/inference-badge.d.ts +6 -2
  76. package/esm/src/react/components/chat/chat/components/inference-badge.d.ts.map +1 -1
  77. package/esm/src/react/components/chat/chat/components/inference-badge.js +5 -4
  78. package/esm/src/react/components/chat/chat/components/inline-citation.d.ts +9 -1
  79. package/esm/src/react/components/chat/chat/components/inline-citation.d.ts.map +1 -1
  80. package/esm/src/react/components/chat/chat/components/inline-citation.js +19 -20
  81. package/esm/src/react/components/chat/chat/components/message-actions.d.ts +28 -5
  82. package/esm/src/react/components/chat/chat/components/message-actions.d.ts.map +1 -1
  83. package/esm/src/react/components/chat/chat/components/message-actions.js +24 -36
  84. package/esm/src/react/components/chat/chat/components/message-edit-form.d.ts +7 -2
  85. package/esm/src/react/components/chat/chat/components/message-edit-form.d.ts.map +1 -1
  86. package/esm/src/react/components/chat/chat/components/message-edit-form.js +5 -5
  87. package/esm/src/react/components/chat/chat/components/message-feedback.d.ts +11 -1
  88. package/esm/src/react/components/chat/chat/components/message-feedback.d.ts.map +1 -1
  89. package/esm/src/react/components/chat/chat/components/message-feedback.js +9 -11
  90. package/esm/src/react/components/chat/chat/components/quick-actions.d.ts.map +1 -1
  91. package/esm/src/react/components/chat/chat/components/quick-actions.js +3 -1
  92. package/esm/src/react/components/chat/chat/components/reasoning.d.ts +66 -3
  93. package/esm/src/react/components/chat/chat/components/reasoning.d.ts.map +1 -1
  94. package/esm/src/react/components/chat/chat/components/reasoning.js +95 -21
  95. package/esm/src/react/components/chat/chat/components/sidebar.d.ts +178 -12
  96. package/esm/src/react/components/chat/chat/components/sidebar.d.ts.map +1 -1
  97. package/esm/src/react/components/chat/chat/components/sidebar.js +228 -45
  98. package/esm/src/react/components/chat/chat/components/skill-badge.d.ts +6 -1
  99. package/esm/src/react/components/chat/chat/components/skill-badge.d.ts.map +1 -1
  100. package/esm/src/react/components/chat/chat/components/skill-badge.js +6 -5
  101. package/esm/src/react/components/chat/chat/components/skill-tool.d.ts +37 -0
  102. package/esm/src/react/components/chat/chat/components/skill-tool.d.ts.map +1 -0
  103. package/esm/src/react/components/chat/chat/components/skill-tool.js +46 -0
  104. package/esm/src/react/components/chat/chat/components/sources.d.ts +55 -3
  105. package/esm/src/react/components/chat/chat/components/sources.d.ts.map +1 -1
  106. package/esm/src/react/components/chat/chat/components/sources.js +50 -16
  107. package/esm/src/react/components/chat/chat/components/step-indicator.d.ts +42 -3
  108. package/esm/src/react/components/chat/chat/components/step-indicator.d.ts.map +1 -1
  109. package/esm/src/react/components/chat/chat/components/step-indicator.js +55 -12
  110. package/esm/src/react/components/chat/chat/components/tab-switcher.d.ts +1 -1
  111. package/esm/src/react/components/chat/chat/components/tab-switcher.d.ts.map +1 -1
  112. package/esm/src/react/components/chat/chat/components/tab-switcher.js +3 -3
  113. package/esm/src/react/components/chat/chat/components/tool-ui.d.ts +96 -3
  114. package/esm/src/react/components/chat/chat/components/tool-ui.d.ts.map +1 -1
  115. package/esm/src/react/components/chat/chat/components/tool-ui.js +158 -36
  116. package/esm/src/react/components/chat/chat/composition/api.d.ts +4 -2
  117. package/esm/src/react/components/chat/chat/composition/api.d.ts.map +1 -1
  118. package/esm/src/react/components/chat/chat/composition/api.js +4 -2
  119. package/esm/src/react/components/chat/chat/composition/chat-composer.d.ts +112 -5
  120. package/esm/src/react/components/chat/chat/composition/chat-composer.d.ts.map +1 -1
  121. package/esm/src/react/components/chat/chat/composition/chat-composer.js +251 -61
  122. package/esm/src/react/components/chat/chat/composition/chat-empty-state.d.ts +78 -0
  123. package/esm/src/react/components/chat/chat/composition/chat-empty-state.d.ts.map +1 -0
  124. package/esm/src/react/components/chat/chat/composition/chat-empty-state.js +63 -0
  125. package/esm/src/react/components/chat/chat/composition/chat-empty.d.ts +4 -1
  126. package/esm/src/react/components/chat/chat/composition/chat-empty.d.ts.map +1 -1
  127. package/esm/src/react/components/chat/chat/composition/chat-empty.js +11 -10
  128. package/esm/src/react/components/chat/chat/composition/chat-message-list.d.ts +11 -3
  129. package/esm/src/react/components/chat/chat/composition/chat-message-list.d.ts.map +1 -1
  130. package/esm/src/react/components/chat/chat/composition/chat-message-list.js +81 -111
  131. package/esm/src/react/components/chat/chat/composition/chat-root.d.ts +4 -0
  132. package/esm/src/react/components/chat/chat/composition/chat-root.d.ts.map +1 -1
  133. package/esm/src/react/components/chat/chat/composition/chat-root.js +3 -1
  134. package/esm/src/react/components/chat/chat/composition/error-banner.d.ts +4 -0
  135. package/esm/src/react/components/chat/chat/composition/error-banner.d.ts.map +1 -1
  136. package/esm/src/react/components/chat/chat/composition/error-banner.js +10 -7
  137. package/esm/src/react/components/chat/chat/composition/message.d.ts +123 -5
  138. package/esm/src/react/components/chat/chat/composition/message.d.ts.map +1 -1
  139. package/esm/src/react/components/chat/chat/composition/message.js +332 -53
  140. package/esm/src/react/components/chat/chat/composition/model-avatar.d.ts +6 -1
  141. package/esm/src/react/components/chat/chat/composition/model-avatar.d.ts.map +1 -1
  142. package/esm/src/react/components/chat/chat/composition/model-avatar.js +3 -4
  143. package/esm/src/react/components/chat/chat/composition/pending-message.d.ts +31 -0
  144. package/esm/src/react/components/chat/chat/composition/pending-message.d.ts.map +1 -0
  145. package/esm/src/react/components/chat/chat/composition/pending-message.js +31 -0
  146. package/esm/src/react/components/chat/chat/contexts/chat-context.d.ts +4 -0
  147. package/esm/src/react/components/chat/chat/contexts/chat-context.d.ts.map +1 -1
  148. package/esm/src/react/components/chat/chat/contexts/composer-context.d.ts +1 -0
  149. package/esm/src/react/components/chat/chat/contexts/composer-context.d.ts.map +1 -1
  150. package/esm/src/react/components/chat/chat/contexts/conversations-context.d.ts +29 -0
  151. package/esm/src/react/components/chat/chat/contexts/conversations-context.d.ts.map +1 -0
  152. package/esm/src/react/components/chat/chat/contexts/conversations-context.js +39 -0
  153. package/esm/src/react/components/chat/chat/contexts/index.d.ts +1 -1
  154. package/esm/src/react/components/chat/chat/contexts/index.d.ts.map +1 -1
  155. package/esm/src/react/components/chat/chat/contexts/index.js +1 -1
  156. package/esm/src/react/components/chat/chat/contexts/message-context.d.ts +2 -0
  157. package/esm/src/react/components/chat/chat/contexts/message-context.d.ts.map +1 -1
  158. package/esm/src/react/components/chat/chat/hooks/use-clipboard.d.ts +10 -0
  159. package/esm/src/react/components/chat/chat/hooks/use-clipboard.d.ts.map +1 -0
  160. package/esm/src/react/components/chat/chat/hooks/use-clipboard.js +34 -0
  161. package/esm/src/react/components/chat/chat/hooks/use-conversation.d.ts +21 -0
  162. package/esm/src/react/components/chat/chat/hooks/use-conversation.d.ts.map +1 -0
  163. package/esm/src/react/components/chat/chat/hooks/use-conversation.js +54 -0
  164. package/esm/src/react/components/chat/chat/hooks/use-conversations.d.ts +67 -0
  165. package/esm/src/react/components/chat/chat/hooks/use-conversations.d.ts.map +1 -0
  166. package/esm/src/react/components/chat/chat/hooks/use-conversations.js +317 -0
  167. package/esm/src/react/components/chat/chat/hooks/use-drop-zone.d.ts +27 -0
  168. package/esm/src/react/components/chat/chat/hooks/use-drop-zone.d.ts.map +1 -0
  169. package/esm/src/react/components/chat/chat/hooks/use-drop-zone.js +50 -0
  170. package/esm/src/react/components/chat/chat/hooks/use-stick-to-bottom.d.ts +49 -0
  171. package/esm/src/react/components/chat/chat/hooks/use-stick-to-bottom.d.ts.map +1 -0
  172. package/esm/src/react/components/chat/chat/hooks/use-stick-to-bottom.js +120 -0
  173. package/esm/src/react/components/chat/chat/hooks/use-upload.d.ts +34 -0
  174. package/esm/src/react/components/chat/chat/hooks/use-upload.d.ts.map +1 -0
  175. package/esm/src/react/components/chat/chat/hooks/use-upload.js +147 -0
  176. package/esm/src/react/components/chat/chat/hooks/use-uploads-registry.d.ts +37 -0
  177. package/esm/src/react/components/chat/chat/hooks/use-uploads-registry.d.ts.map +1 -0
  178. package/esm/src/react/components/chat/chat/hooks/use-uploads-registry.js +178 -0
  179. package/esm/src/react/components/chat/chat/index.d.ts +171 -31
  180. package/esm/src/react/components/chat/chat/index.d.ts.map +1 -1
  181. package/esm/src/react/components/chat/chat/index.js +371 -77
  182. package/esm/src/react/components/chat/chat/persistence/conversation-store.d.ts +63 -0
  183. package/esm/src/react/components/chat/chat/persistence/conversation-store.d.ts.map +1 -0
  184. package/esm/src/react/components/chat/chat/persistence/conversation-store.js +1 -0
  185. package/esm/src/react/components/chat/chat/persistence/local-conversation-store.d.ts +13 -0
  186. package/esm/src/react/components/chat/chat/persistence/local-conversation-store.d.ts.map +1 -0
  187. package/esm/src/react/components/chat/chat/persistence/local-conversation-store.js +102 -0
  188. package/esm/src/react/components/chat/chat/persistence/memory-conversation-store.d.ts +11 -0
  189. package/esm/src/react/components/chat/chat/persistence/memory-conversation-store.d.ts.map +1 -0
  190. package/esm/src/react/components/chat/chat/persistence/memory-conversation-store.js +33 -0
  191. package/esm/src/react/components/chat/chat/utils/message-parts.d.ts +4 -1
  192. package/esm/src/react/components/chat/chat/utils/message-parts.d.ts.map +1 -1
  193. package/esm/src/react/components/chat/chat/utils/message-parts.js +4 -0
  194. package/esm/src/react/components/chat/chat-actions.d.ts +164 -0
  195. package/esm/src/react/components/chat/chat-actions.d.ts.map +1 -0
  196. package/esm/src/react/components/chat/chat-actions.js +191 -0
  197. package/esm/src/react/components/chat/chat-agent-picker.d.ts +50 -0
  198. package/esm/src/react/components/chat/chat-agent-picker.d.ts.map +1 -0
  199. package/esm/src/react/components/chat/chat-agent-picker.js +40 -0
  200. package/esm/src/react/components/chat/chat-theme-scope.d.ts +26 -0
  201. package/esm/src/react/components/chat/chat-theme-scope.d.ts.map +1 -0
  202. package/esm/src/react/components/chat/chat-theme-scope.js +27 -0
  203. package/esm/src/react/components/chat/chat-tokens-style.d.ts +21 -0
  204. package/esm/src/react/components/chat/chat-tokens-style.d.ts.map +1 -0
  205. package/esm/src/react/components/chat/chat-tokens-style.js +24 -0
  206. package/esm/src/react/components/chat/chat.d.ts +5 -5
  207. package/esm/src/react/components/chat/chat.d.ts.map +1 -1
  208. package/esm/src/react/components/chat/chat.js +5 -5
  209. package/esm/src/react/components/chat/color-mode.d.ts +46 -0
  210. package/esm/src/react/components/chat/color-mode.d.ts.map +1 -0
  211. package/esm/src/react/components/chat/color-mode.js +123 -0
  212. package/esm/src/react/components/chat/error-boundary.js +2 -2
  213. package/esm/src/react/components/chat/icons/index.d.ts +8 -0
  214. package/esm/src/react/components/chat/icons/index.d.ts.map +1 -1
  215. package/esm/src/react/components/chat/icons/index.js +64 -0
  216. package/esm/src/react/components/chat/markdown.d.ts +24 -1
  217. package/esm/src/react/components/chat/markdown.d.ts.map +1 -1
  218. package/esm/src/react/components/chat/markdown.js +122 -38
  219. package/esm/src/react/components/chat/model-selector.d.ts +130 -8
  220. package/esm/src/react/components/chat/model-selector.d.ts.map +1 -1
  221. package/esm/src/react/components/chat/model-selector.js +148 -121
  222. package/esm/src/react/components/chat/theme.d.ts +9 -12
  223. package/esm/src/react/components/chat/theme.d.ts.map +1 -1
  224. package/esm/src/react/components/chat/theme.js +149 -93
  225. package/esm/src/react/components/chat/ui/alert.d.ts +30 -0
  226. package/esm/src/react/components/chat/ui/alert.d.ts.map +1 -0
  227. package/esm/src/react/components/chat/ui/alert.js +35 -0
  228. package/esm/src/react/components/chat/ui/app-shell.d.ts +155 -0
  229. package/esm/src/react/components/chat/ui/app-shell.d.ts.map +1 -0
  230. package/esm/src/react/components/chat/ui/app-shell.js +276 -0
  231. package/esm/src/react/components/chat/ui/avatar.d.ts +24 -0
  232. package/esm/src/react/components/chat/ui/avatar.d.ts.map +1 -0
  233. package/esm/src/react/components/chat/ui/avatar.js +44 -0
  234. package/esm/src/react/components/chat/ui/badge.d.ts +24 -0
  235. package/esm/src/react/components/chat/ui/badge.d.ts.map +1 -0
  236. package/esm/src/react/components/chat/ui/badge.js +30 -0
  237. package/esm/src/react/components/chat/ui/button.d.ts +44 -0
  238. package/esm/src/react/components/chat/ui/button.d.ts.map +1 -0
  239. package/esm/src/react/components/chat/ui/button.js +108 -0
  240. package/esm/src/react/components/chat/ui/card.d.ts +42 -0
  241. package/esm/src/react/components/chat/ui/card.d.ts.map +1 -0
  242. package/esm/src/react/components/chat/ui/card.js +55 -0
  243. package/esm/src/react/components/chat/ui/checkbox.d.ts +28 -0
  244. package/esm/src/react/components/chat/ui/checkbox.d.ts.map +1 -0
  245. package/esm/src/react/components/chat/ui/checkbox.js +36 -0
  246. package/esm/src/react/components/chat/ui/code-block.d.ts +89 -0
  247. package/esm/src/react/components/chat/ui/code-block.d.ts.map +1 -0
  248. package/esm/src/react/components/chat/ui/code-block.js +277 -0
  249. package/esm/src/react/components/chat/ui/collapsible.d.ts +30 -0
  250. package/esm/src/react/components/chat/ui/collapsible.d.ts.map +1 -0
  251. package/esm/src/react/components/chat/ui/collapsible.js +44 -0
  252. package/esm/src/react/components/chat/ui/command.d.ts +65 -0
  253. package/esm/src/react/components/chat/ui/command.d.ts.map +1 -0
  254. package/esm/src/react/components/chat/ui/command.js +121 -0
  255. package/esm/src/react/components/chat/ui/cva.d.ts +36 -0
  256. package/esm/src/react/components/chat/ui/cva.d.ts.map +1 -0
  257. package/esm/src/react/components/chat/ui/cva.js +45 -0
  258. package/esm/src/react/components/chat/ui/dialog.d.ts +55 -0
  259. package/esm/src/react/components/chat/ui/dialog.d.ts.map +1 -0
  260. package/esm/src/react/components/chat/ui/dialog.js +116 -0
  261. package/esm/src/react/components/chat/ui/drawer.d.ts +41 -0
  262. package/esm/src/react/components/chat/ui/drawer.d.ts.map +1 -0
  263. package/esm/src/react/components/chat/ui/drawer.js +92 -0
  264. package/esm/src/react/components/chat/ui/dropdown-menu.d.ts +63 -0
  265. package/esm/src/react/components/chat/ui/dropdown-menu.d.ts.map +1 -0
  266. package/esm/src/react/components/chat/ui/dropdown-menu.js +76 -0
  267. package/esm/src/react/components/chat/ui/file-type.d.ts +26 -0
  268. package/esm/src/react/components/chat/ui/file-type.d.ts.map +1 -0
  269. package/esm/src/react/components/chat/ui/file-type.js +235 -0
  270. package/esm/src/react/components/chat/ui/floating.d.ts +29 -0
  271. package/esm/src/react/components/chat/ui/floating.d.ts.map +1 -0
  272. package/esm/src/react/components/chat/ui/floating.js +90 -0
  273. package/esm/src/react/components/chat/ui/icon-button.d.ts +19 -0
  274. package/esm/src/react/components/chat/ui/icon-button.d.ts.map +1 -0
  275. package/esm/src/react/components/chat/ui/icon-button.js +20 -0
  276. package/esm/src/react/components/chat/ui/index.d.ts +43 -0
  277. package/esm/src/react/components/chat/ui/index.d.ts.map +1 -0
  278. package/esm/src/react/components/chat/ui/index.js +42 -0
  279. package/esm/src/react/components/chat/ui/input.d.ts +27 -0
  280. package/esm/src/react/components/chat/ui/input.d.ts.map +1 -0
  281. package/esm/src/react/components/chat/ui/input.js +41 -0
  282. package/esm/src/react/components/chat/ui/label.d.ts +29 -0
  283. package/esm/src/react/components/chat/ui/label.d.ts.map +1 -0
  284. package/esm/src/react/components/chat/ui/label.js +40 -0
  285. package/esm/src/react/components/chat/ui/list.d.ts +47 -0
  286. package/esm/src/react/components/chat/ui/list.d.ts.map +1 -0
  287. package/esm/src/react/components/chat/ui/list.js +40 -0
  288. package/esm/src/react/components/chat/ui/pill.d.ts +26 -0
  289. package/esm/src/react/components/chat/ui/pill.d.ts.map +1 -0
  290. package/esm/src/react/components/chat/ui/pill.js +39 -0
  291. package/esm/src/react/components/chat/ui/popover.d.ts +47 -0
  292. package/esm/src/react/components/chat/ui/popover.d.ts.map +1 -0
  293. package/esm/src/react/components/chat/ui/popover.js +68 -0
  294. package/esm/src/react/components/chat/ui/progress-bar.d.ts +20 -0
  295. package/esm/src/react/components/chat/ui/progress-bar.d.ts.map +1 -0
  296. package/esm/src/react/components/chat/ui/progress-bar.js +31 -0
  297. package/esm/src/react/components/chat/ui/radio.d.ts +25 -0
  298. package/esm/src/react/components/chat/ui/radio.d.ts.map +1 -0
  299. package/esm/src/react/components/chat/ui/radio.js +29 -0
  300. package/esm/src/react/components/chat/ui/scroll-fade.d.ts +23 -0
  301. package/esm/src/react/components/chat/ui/scroll-fade.d.ts.map +1 -0
  302. package/esm/src/react/components/chat/ui/scroll-fade.js +40 -0
  303. package/esm/src/react/components/chat/ui/select.d.ts +64 -0
  304. package/esm/src/react/components/chat/ui/select.d.ts.map +1 -0
  305. package/esm/src/react/components/chat/ui/select.js +148 -0
  306. package/esm/src/react/components/chat/ui/shimmer.d.ts +25 -0
  307. package/esm/src/react/components/chat/ui/shimmer.d.ts.map +1 -0
  308. package/esm/src/react/components/chat/ui/shimmer.js +24 -0
  309. package/esm/src/react/components/chat/ui/skeleton.d.ts +14 -0
  310. package/esm/src/react/components/chat/ui/skeleton.d.ts.map +1 -0
  311. package/esm/src/react/components/chat/ui/skeleton.js +12 -0
  312. package/esm/src/react/components/chat/ui/slot.d.ts +21 -0
  313. package/esm/src/react/components/chat/ui/slot.d.ts.map +1 -0
  314. package/esm/src/react/components/chat/ui/slot.js +70 -0
  315. package/esm/src/react/components/chat/ui/status.d.ts +28 -0
  316. package/esm/src/react/components/chat/ui/status.d.ts.map +1 -0
  317. package/esm/src/react/components/chat/ui/status.js +23 -0
  318. package/esm/src/react/components/chat/ui/switch.d.ts +34 -0
  319. package/esm/src/react/components/chat/ui/switch.d.ts.map +1 -0
  320. package/esm/src/react/components/chat/ui/switch.js +58 -0
  321. package/esm/src/react/components/chat/ui/tabs.d.ts +44 -0
  322. package/esm/src/react/components/chat/ui/tabs.d.ts.map +1 -0
  323. package/esm/src/react/components/chat/ui/tabs.js +51 -0
  324. package/esm/src/react/components/chat/ui/tag.d.ts +22 -0
  325. package/esm/src/react/components/chat/ui/tag.d.ts.map +1 -0
  326. package/esm/src/react/components/chat/ui/tag.js +27 -0
  327. package/esm/src/react/components/chat/ui/textarea.d.ts +22 -0
  328. package/esm/src/react/components/chat/ui/textarea.d.ts.map +1 -0
  329. package/esm/src/react/components/chat/ui/textarea.js +35 -0
  330. package/esm/src/react/components/chat/ui/tooltip.d.ts +40 -0
  331. package/esm/src/react/components/chat/ui/tooltip.d.ts.map +1 -0
  332. package/esm/src/react/components/chat/ui/tooltip.js +132 -0
  333. package/esm/src/react/primitives/input-box.d.ts.map +1 -1
  334. package/esm/src/react/primitives/input-box.js +17 -4
  335. package/esm/src/server/handlers/dev/framework-candidates.generated.d.ts.map +1 -1
  336. package/esm/src/server/handlers/dev/framework-candidates.generated.js +9437 -1064
  337. package/esm/src/server/handlers/dev/projects/html-shell.d.ts +1 -1
  338. package/esm/src/server/handlers/dev/projects/html-shell.d.ts.map +1 -1
  339. package/esm/src/server/handlers/dev/projects/html-shell.js +1 -12
  340. package/esm/src/server/handlers/request/public-agents-list.handler.d.ts +18 -0
  341. package/esm/src/server/handlers/request/public-agents-list.handler.d.ts.map +1 -0
  342. package/esm/src/server/handlers/request/public-agents-list.handler.js +44 -0
  343. package/esm/src/server/runtime-handler/index.d.ts +1 -1
  344. package/esm/src/server/runtime-handler/index.d.ts.map +1 -1
  345. package/esm/src/server/runtime-handler/index.js +3 -0
  346. package/esm/src/studio/bridge/bridge-bundle.generated.d.ts +1 -1
  347. package/esm/src/studio/bridge/bridge-bundle.generated.d.ts.map +1 -1
  348. package/esm/src/studio/bridge/bridge-bundle.generated.js +3 -2
  349. package/esm/src/utils/version-constant.d.ts +1 -1
  350. package/esm/src/utils/version-constant.js +1 -1
  351. package/esm/src/workflow/blob/local-storage.d.ts +32 -0
  352. package/esm/src/workflow/blob/local-storage.d.ts.map +1 -0
  353. package/esm/src/workflow/blob/local-storage.js +179 -0
  354. package/esm/src/workflow/blob/types.d.ts +5 -0
  355. package/esm/src/workflow/blob/types.d.ts.map +1 -1
  356. package/esm/src/workflow/blob/veryfront-cloud-storage.d.ts +11 -0
  357. package/esm/src/workflow/blob/veryfront-cloud-storage.d.ts.map +1 -1
  358. package/esm/src/workflow/blob/veryfront-cloud-storage.js +36 -0
  359. package/package.json +5 -1
  360. package/esm/src/react/components/chat/chat/components/uploads-panel.d.ts +0 -20
  361. package/esm/src/react/components/chat/chat/components/uploads-panel.d.ts.map +0 -1
  362. package/esm/src/react/components/chat/chat/components/uploads-panel.js +0 -49
  363. package/esm/src/react/components/chat/chat/contexts/thread-list-context.d.ts +0 -28
  364. package/esm/src/react/components/chat/chat/contexts/thread-list-context.d.ts.map +0 -1
  365. package/esm/src/react/components/chat/chat/contexts/thread-list-context.js +0 -27
  366. package/esm/src/react/components/chat/chat/hooks/use-threads.d.ts +0 -28
  367. package/esm/src/react/components/chat/chat/hooks/use-threads.d.ts.map +0 -1
  368. package/esm/src/react/components/chat/chat/hooks/use-threads.js +0 -151
  369. package/esm/src/react/components/chat/chat-with-sidebar.d.ts +0 -110
  370. package/esm/src/react/components/chat/chat-with-sidebar.d.ts.map +0 -1
  371. package/esm/src/react/components/chat/chat-with-sidebar.js +0 -167
  372. package/esm/src/react/components/chat/message.d.ts +0 -42
  373. package/esm/src/react/components/chat/message.d.ts.map +0 -1
  374. package/esm/src/react/components/chat/message.js +0 -69
@@ -1,14 +1,39 @@
1
1
  /**
2
- * ModelSelector - Dropdown for switching models at runtime
2
+ * ModelSelector Popover + Command combobox for switching models at runtime.
3
3
  *
4
- * Opens upward from the trigger using fixed positioning
5
- * so it never affects the surrounding layout.
4
+ * Built on the same primitives as `AgentPicker` (Popover → Command), so the
5
+ * dropdown portals via `Floating` (never clips in the composer/iframe) and gets
6
+ * keyboard nav + search for free. Rows show the real provider logo from
7
+ * models.dev. Two trigger styles via `variant`: `pill` (logo + label + chevron)
8
+ * or `icon` (logo only, like Studio's desktop picker).
6
9
  *
7
- * Implements WAI-ARIA listbox pattern with full keyboard navigation.
10
+ * @module react/components/chat/model-selector
8
11
  */
9
12
  import * as React from "../../../../react/react.js";
10
13
  import { cn } from "./theme.js";
11
- import { ChevronDownIcon } from "./icons/index.js";
14
+ import { Command, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, } from "./ui/command.js";
15
+ import { Popover, PopoverContent, PopoverTrigger } from "./ui/popover.js";
16
+ import { Pill } from "./ui/pill.js";
17
+ import { CheckIcon, ChevronDownIcon, SparklesIcon } from "./icons/index.js";
18
+ import { COMPONENT_ERROR } from "../../../errors/error-registry.js";
19
+ /** Provider slug for a model (explicit `provider`, else the `value` prefix). */
20
+ function providerOf(model) {
21
+ return model?.provider ?? model?.value.split("/")[0];
22
+ }
23
+ /**
24
+ * Real provider logo from models.dev (`dark:invert` for dark mode, same source
25
+ * as Studio). Falls back to a generic glyph if the slug has no logo.
26
+ */
27
+ function ProviderLogo({ provider, className }) {
28
+ const [failed, setFailed] = React.useState(false);
29
+ const key = provider?.toLowerCase();
30
+ if (!key || failed) {
31
+ return React.createElement(SparklesIcon, { className: cn("size-4.5 text-[var(--faint)]", className) });
32
+ }
33
+ return (React.createElement("img", { alt: "", "aria-hidden": "true", referrerPolicy: "no-referrer", onError: () => setFailed(true), className: cn("size-5 shrink-0 object-contain dark:invert", className), src: `https://models.dev/logos/${key}.svg` }));
34
+ }
35
+ /** Search box appears once the model count crosses this. */
36
+ const SEARCH_THRESHOLD = 6;
12
37
  function groupByProvider(models) {
13
38
  const groups = new Map();
14
39
  for (const model of models) {
@@ -23,124 +48,126 @@ function groupByProvider(models) {
23
48
  }
24
49
  return groups;
25
50
  }
26
- /** Render model selector. */
27
- export function ModelSelector({ models, value, onChange, className, disabled, }) {
28
- const [open, setOpen] = React.useState(false);
29
- const triggerRef = React.useRef(null);
30
- const dropdownRef = React.useRef(null);
31
- const [pos, setPos] = React.useState(null);
32
- const [focusedIndex, setFocusedIndex] = React.useState(-1);
33
- const selected = models.find((m) => m.value === value) ?? models[0];
34
- const listboxId = React.useId();
35
- // Measure trigger and position dropdown above it, right-aligned
36
- React.useEffect(() => {
37
- if (!open || !triggerRef.current)
38
- return;
39
- const r = triggerRef.current.getBoundingClientRect();
40
- setPos({
41
- bottom: globalThis.innerHeight - r.top + 6,
42
- right: globalThis.innerWidth - r.right,
51
+ const ModelSelectorContext = React.createContext(null);
52
+ /**
53
+ * Read the enclosing `ModelSelector` selection + open state. Throws when used
54
+ * outside a `<ModelSelector>`.
55
+ */
56
+ export function useModelSelector() {
57
+ const ctx = React.useContext(ModelSelectorContext);
58
+ if (!ctx) {
59
+ throw COMPONENT_ERROR.create({
60
+ detail: "useModelSelector must be used within a ModelSelector",
43
61
  });
44
- // Focus the selected item when opening
45
- const selectedIdx = models.findIndex((m) => m.value === (value ?? selected?.value));
46
- setFocusedIndex(selectedIdx >= 0 ? selectedIdx : 0);
47
- }, [open, models, value, selected?.value]);
48
- // Close on outside click
49
- React.useEffect(() => {
50
- if (!open)
51
- return;
52
- function handleMouseDown(e) {
53
- const target = e.target;
54
- if (triggerRef.current?.contains(target) ||
55
- dropdownRef.current?.contains(target)) {
56
- return;
57
- }
58
- setOpen(false);
59
- }
60
- document.addEventListener("mousedown", handleMouseDown);
61
- return () => document.removeEventListener("mousedown", handleMouseDown);
62
- }, [open]);
63
- // Keyboard navigation
64
- React.useEffect(() => {
65
- if (!open)
66
- return;
67
- function handleKeyDown(e) {
68
- switch (e.key) {
69
- case "Escape":
70
- setOpen(false);
71
- triggerRef.current?.focus();
72
- break;
73
- case "ArrowDown":
74
- e.preventDefault();
75
- setFocusedIndex((prev) => (prev + 1) % models.length);
76
- break;
77
- case "ArrowUp":
78
- e.preventDefault();
79
- setFocusedIndex((prev) => (prev - 1 + models.length) % models.length);
80
- break;
81
- case "Home":
82
- e.preventDefault();
83
- setFocusedIndex(0);
84
- break;
85
- case "End":
86
- e.preventDefault();
87
- setFocusedIndex(models.length - 1);
88
- break;
89
- case "Enter":
90
- case " ":
91
- e.preventDefault();
92
- if (focusedIndex >= 0 && focusedIndex < models.length) {
93
- onChange(models[focusedIndex].value);
94
- setOpen(false);
95
- triggerRef.current?.focus();
96
- }
97
- break;
98
- }
99
- }
100
- document.addEventListener("keydown", handleKeyDown);
101
- return () => document.removeEventListener("keydown", handleKeyDown);
102
- }, [open, focusedIndex, models, onChange]);
103
- // Scroll focused item into view
104
- React.useEffect(() => {
105
- if (!open || focusedIndex < 0)
106
- return;
107
- const option = dropdownRef.current?.querySelector(`[data-index="${focusedIndex}"]`);
108
- option?.scrollIntoView({ block: "nearest" });
109
- }, [open, focusedIndex]);
62
+ }
63
+ return ctx;
64
+ }
65
+ /** The pill (or icon) combobox trigger. Toggles the popover. */
66
+ function ModelSelectorTrigger({ variant = "pill", children, className }) {
67
+ const { selected, disabled } = useModelSelector();
68
+ const trigger = children
69
+ ? (React.createElement("button", { type: "button", disabled: disabled, className: className }, children))
70
+ : variant === "icon"
71
+ ? (React.createElement("button", { type: "button", disabled: disabled, "aria-label": selected?.label ?? "Select model", className: cn("flex size-9 items-center justify-center rounded-full text-[var(--foreground)] transition-colors hover:bg-[var(--tertiary)]", "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--edge-medium)]", "disabled:opacity-50 disabled:cursor-not-allowed", className) },
72
+ React.createElement(ProviderLogo, { provider: providerOf(selected), className: "size-5" })))
73
+ : (React.createElement(Pill, { className: cn("min-w-0 max-w-full", disabled && "opacity-50 pointer-events-none", className) },
74
+ React.createElement(ProviderLogo, { provider: providerOf(selected), className: "size-4" }),
75
+ React.createElement("span", { className: "min-w-0 truncate" }, selected?.label ?? "Select model"),
76
+ React.createElement(ChevronDownIcon, { className: "ml-auto" })));
77
+ return React.createElement(PopoverTrigger, { asChild: true }, trigger);
78
+ }
79
+ ModelSelectorTrigger.displayName = "ModelSelector.Trigger";
80
+ /** The popover surface wrapping a `Command` (search + list region). */
81
+ function ModelSelectorContent({ showSearch = false, searchPlaceholder = "Search models...", children, className, }) {
82
+ return (React.createElement(PopoverContent, { align: "start", className: cn("min-w-[260px] p-0! rounded-lg", className) },
83
+ React.createElement(Command, { className: "bg-transparent" },
84
+ showSearch && React.createElement(CommandInput, { placeholder: searchPlaceholder }),
85
+ children)));
86
+ }
87
+ ModelSelectorContent.displayName = "ModelSelector.Content";
88
+ /** The scrollable `Command` list region. */
89
+ function ModelSelectorList({ children, className }) {
90
+ return (React.createElement(CommandList, { className: cn("max-h-[320px]", className) }, children));
91
+ }
92
+ ModelSelectorList.displayName = "ModelSelector.List";
93
+ /** A single model row (provider logo + label + optional badge + check). */
94
+ function ModelSelectorItem({ model, selected, className }) {
95
+ const { value, selected: selectedModel, onSelect } = useModelSelector();
96
+ const selectedValue = value ?? selectedModel?.value;
97
+ const isSelected = selected ?? model.value === selectedValue;
98
+ return (React.createElement(CommandItem, { value: model.label, onSelect: () => onSelect(model.value), className: className },
99
+ React.createElement(ProviderLogo, { provider: providerOf(model), className: "size-4.5" }),
100
+ React.createElement("span", { className: "min-w-0 flex-1 truncate" }, model.label),
101
+ model.badge && (React.createElement("span", { className: "rounded-full border border-[var(--outline-border)] px-1.5 py-0.5 text-[10px] font-medium text-[var(--faint)]" }, model.badge)),
102
+ isSelected && React.createElement(CheckIcon, { className: "ml-auto opacity-70" })));
103
+ }
104
+ ModelSelectorItem.displayName = "ModelSelector.Item";
105
+ /** The default preset body — provider-grouped model rows. */
106
+ function ModelSelectorPresetBody({ models, selectedValue, renderRow, onSelect, }) {
110
107
  const hasGroups = models.some((m) => m.provider);
111
108
  const groups = hasGroups ? groupByProvider(models) : null;
112
- function handleSelect(model) {
113
- onChange(model.value);
114
- setOpen(false);
115
- triggerRef.current?.focus();
116
- }
117
- function renderItem(model, flatIndex) {
118
- const isActive = model.value === (value ?? selected?.value);
119
- const isFocused = flatIndex === focusedIndex;
120
- return (React.createElement("div", { key: model.value, role: "option", "aria-selected": isActive, "data-index": flatIndex, onClick: () => handleSelect(model), onMouseEnter: () => setFocusedIndex(flatIndex), className: cn("w-full text-left px-3 py-2 text-sm transition-all rounded-lg cursor-pointer", isActive
121
- ? "bg-[var(--foreground)]/[0.05] text-[var(--foreground)]"
122
- : "text-[var(--card-foreground)] hover:bg-[var(--foreground)]/[0.05] hover:text-[var(--foreground)]", isFocused && !isActive && "bg-[var(--foreground)]/[0.05]") },
123
- React.createElement("div", { className: "flex items-center gap-2" },
124
- React.createElement("span", { className: "font-medium" }, model.label),
125
- model.badge && (React.createElement("span", { className: "px-1.5 py-0.5 text-[10px] font-medium rounded-full bg-[var(--foreground)]/[0.07] text-[var(--muted-foreground)]" }, model.badge))),
126
- model.description && (React.createElement("p", { className: "text-xs text-[var(--muted-foreground)] mt-0.5" }, model.description))));
109
+ function renderModel(model) {
110
+ const isSelected = model.value === selectedValue;
111
+ if (renderRow) {
112
+ return (React.createElement(React.Fragment, { key: model.value }, renderRow({
113
+ model,
114
+ selected: isSelected,
115
+ onSelect: () => onSelect(model.value),
116
+ })));
117
+ }
118
+ return (React.createElement(ModelSelectorItem, { key: model.value, model: model, selected: isSelected }));
127
119
  }
128
- // Build flat index mapping for grouped layout
129
- let flatIndex = 0;
130
- const dropdownContent = groups
131
- ? Array.from(groups.entries()).map(([provider, items], groupIndex) => (React.createElement("div", { key: provider || "__ungrouped", role: "group", "aria-label": provider || undefined },
132
- groupIndex > 0 && React.createElement("div", { className: "h-px bg-[var(--border)] my-1" }),
133
- provider && (React.createElement("div", { className: "px-3 py-1.5 text-[10px] font-semibold uppercase tracking-wider text-[var(--input-placeholder)]" }, provider)),
134
- items.map((item) => renderItem(item, flatIndex++)))))
135
- : models.map((item) => renderItem(item, flatIndex++));
136
- return (React.createElement("div", { className: cn("inline-block", className) },
137
- React.createElement("button", { ref: triggerRef, type: "button", onClick: () => !disabled && setOpen((prev) => !prev), disabled: disabled, "aria-haspopup": "listbox", "aria-expanded": open, "aria-controls": open ? listboxId : undefined, className: cn("inline-flex items-center gap-1.5 text-xs px-3 py-1.5 rounded-full", "border border-[var(--border)]", "bg-[var(--card)]", "text-[var(--card-foreground)]", "hover:bg-[var(--foreground)]/[0.05] hover:text-[var(--foreground)]", "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)] focus-visible:ring-offset-2", "transition-all disabled:opacity-50 disabled:cursor-not-allowed") },
138
- React.createElement("span", null, selected?.label ?? "Select model"),
139
- React.createElement(ChevronDownIcon, { className: cn("size-3 transition-transform rotate-180", open && "rotate-0") })),
140
- open && pos && (React.createElement("div", { ref: dropdownRef, id: listboxId, role: "listbox", "aria-label": "Select model", className: "min-w-[220px] max-h-[320px] overflow-auto rounded-xl border border-[var(--border)] bg-[var(--card)] shadow-xl p-1", style: {
141
- position: "fixed",
142
- bottom: pos.bottom,
143
- right: pos.right,
144
- zIndex: 9999,
145
- } }, dropdownContent))));
120
+ return (React.createElement(React.Fragment, null,
121
+ React.createElement(CommandEmpty, null, "No models found."),
122
+ groups
123
+ ? Array.from(groups.entries()).map(([provider, items]) => (React.createElement(CommandGroup, { key: provider || "__ungrouped", heading: provider || undefined }, items.map((model) => renderModel(model)))))
124
+ : (React.createElement(CommandGroup, null, models.map((model) => renderModel(model))))));
125
+ }
126
+ /**
127
+ * `ModelSelector.Root` context provider + the popover shell. No children
128
+ * renders the default data-driven preset; pass children to recompose from
129
+ * `ModelSelector.Trigger` / `Content` / `List` / `Item`.
130
+ */
131
+ function ModelSelectorRoot({ models, value, onChange, className, disabled, variant = "pill", renderTrigger, renderRow, children, }) {
132
+ const [open, setOpen] = React.useState(false);
133
+ const selected = models.find((m) => m.value === value) ?? models[0];
134
+ const selectedValue = value ?? selected?.value;
135
+ const showSearch = models.length > SEARCH_THRESHOLD;
136
+ const handleSelect = React.useCallback((modelValue) => {
137
+ setOpen(false);
138
+ onChange(modelValue);
139
+ }, [onChange]);
140
+ const context = {
141
+ value,
142
+ selected,
143
+ onSelect: handleSelect,
144
+ open,
145
+ setOpen,
146
+ disabled,
147
+ };
148
+ // Back-compat: `renderTrigger` fully replaces the default trigger element and
149
+ // is rendered directly inside `PopoverTrigger asChild`.
150
+ const presetTrigger = renderTrigger
151
+ ? React.createElement(PopoverTrigger, { asChild: true }, renderTrigger({ model: selected, open }))
152
+ : React.createElement(ModelSelectorTrigger, { variant: variant, className: className });
153
+ return (React.createElement(ModelSelectorContext.Provider, { value: context },
154
+ React.createElement(Popover, { open: open, onOpenChange: disabled ? undefined : setOpen }, children ?? (React.createElement(React.Fragment, null,
155
+ presetTrigger,
156
+ React.createElement(ModelSelectorContent, { showSearch: showSearch },
157
+ React.createElement(ModelSelectorList, null,
158
+ React.createElement(ModelSelectorPresetBody, { models: models, selectedValue: selectedValue, renderRow: renderRow, onSelect: handleSelect }))))))));
146
159
  }
160
+ ModelSelectorRoot.displayName = "ModelSelector.Root";
161
+ /**
162
+ * ModelSelector — render `<ModelSelector models={...} .../>` for the default
163
+ * data-driven combobox, or compose `ModelSelector.Trigger` / `Content` /
164
+ * `List` / `Item` for a custom menu. Mirrors the `ToolCall` compound: render
165
+ * it, or compose it.
166
+ */
167
+ export const ModelSelector = Object.assign(ModelSelectorRoot, {
168
+ Root: ModelSelectorRoot,
169
+ Trigger: ModelSelectorTrigger,
170
+ Content: ModelSelectorContent,
171
+ List: ModelSelectorList,
172
+ Item: ModelSelectorItem,
173
+ });
@@ -7,18 +7,6 @@
7
7
  * injected via <style> on the chat root element.
8
8
  */
9
9
  import { type ClassValue } from "../../../utils/clsx.js";
10
- /**
11
- * Generates scoped CSS for the chat UI design tokens.
12
- * Uses [data-vf-chat] as scope so tokens don't leak to the page.
13
- *
14
- * If a host application (e.g. Studio) already defines these CSS custom
15
- * properties on :root, the host values cascade through and our fallbacks
16
- * are never reached — because we set them on [data-vf-chat] which has
17
- * lower specificity for inherited vars. We intentionally only set them
18
- * on the chat root so parent-defined tokens take precedence.
19
- *
20
- * Dark mode: supports prefers-color-scheme, .dark, and [data-theme="dark"].
21
- */
22
10
  export declare function generateTokenCSS(): string;
23
11
  /** Public API contract for chat theme. */
24
12
  export interface ChatTheme {
@@ -57,6 +45,14 @@ export declare const defaultAgentTheme: AgentTheme;
57
45
  export declare function mergeThemes<T>(defaultTheme: T, userTheme?: Partial<T>): T;
58
46
  /**
59
47
  * Utility to combine class names.
48
+ *
49
+ * NOTE: this is `clsx` only — it does NOT tailwind-merge. A `className` passed by
50
+ * a consumer is *appended*, not deduped, so it does not automatically beat a base
51
+ * utility of the same property (both end up in the class list, last-wins by
52
+ * CSS-source order, which is usually the base). To override a base utility from
53
+ * userland, use the `!` important suffix — e.g. `px-8!`, `rounded-xl!`, `size-6!`.
54
+ * Every cva-based primitive (Button, Card, Input, Textarea, Badge, Pill, Select,
55
+ * Tabs) inherits this behaviour.
60
56
  */
61
57
  export declare function cn(...inputs: ClassValue[]): string;
62
58
  type VariantMap = Record<string, Record<string, ClassValue>>;
@@ -88,6 +84,7 @@ export declare const chatButtonVariants: VariantClassFunction<{
88
84
  "icon-xs": string;
89
85
  "icon-sm": string;
90
86
  "icon-default": string;
87
+ "icon-lg": string;
91
88
  };
92
89
  }>;
93
90
  export declare const chatContainerVariants: VariantClassFunction<{
@@ -1 +1 @@
1
- {"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../../../../../src/src/react/components/chat/theme.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,KAAK,UAAU,EAAQ,MAAM,wBAAwB,CAAC;AAiF/D;;;;;;;;;;;GAWG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,CAWzC;AAMD,0CAA0C;AAC1C,MAAM,WAAW,SAAS;IACxB,uBAAuB;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6BAA6B;IAC7B,OAAO,CAAC,EAAE;QACR,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;IACF,mBAAmB;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oBAAoB;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,+BAA+B;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,SAe9B,CAAC;AAEF,2CAA2C;AAC3C,MAAM,WAAW,UAAU;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,eAAO,MAAM,iBAAiB,EAAE,UAO/B,CAAC;AAMF;;GAEG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAC3B,YAAY,EAAE,CAAC,EACf,SAAS,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,GACrB,CAAC,CAsBH;AAED;;GAEG;AACH,wBAAgB,EAAE,CAAC,GAAG,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,CAElD;AAMD,KAAK,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;AAE7D,KAAK,cAAc,CAAC,SAAS,SAAS,UAAU,IAC5C;KACC,IAAI,IAAI,MAAM,SAAS,CAAC,CAAC,EAAE,MAAM,SAAS,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,SAAS;CACrE,GACC;IACA,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,SAAS,CAAC,EAAE,UAAU,CAAC;CACxB,CAAC;AAEJ,KAAK,oBAAoB,CAAC,SAAS,SAAS,UAAU,IAAI,CACxD,OAAO,CAAC,EAAE,cAAc,CAAC,SAAS,CAAC,KAChC,MAAM,CAAC;AA8BZ,eAAO,MAAM,eAAe;;;;;;;EAc1B,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;EAgC9B,CAAC;AAEF,eAAO,MAAM,qBAAqB;;;;;;EAYhC,CAAC"}
1
+ {"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../../../../../src/src/react/components/chat/theme.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,KAAK,UAAU,EAAQ,MAAM,wBAAwB,CAAC;AAkI/D,wBAAgB,gBAAgB,IAAI,MAAM,CAoBzC;AAMD,0CAA0C;AAC1C,MAAM,WAAW,SAAS;IACxB,uBAAuB;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6BAA6B;IAC7B,OAAO,CAAC,EAAE;QACR,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;IACF,mBAAmB;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oBAAoB;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,+BAA+B;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,SAgB9B,CAAC;AAEF,2CAA2C;AAC3C,MAAM,WAAW,UAAU;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,eAAO,MAAM,iBAAiB,EAAE,UAS/B,CAAC;AAMF;;GAEG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAC3B,YAAY,EAAE,CAAC,EACf,SAAS,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,GACrB,CAAC,CAsBH;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,EAAE,CAAC,GAAG,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,CAElD;AAMD,KAAK,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;AAE7D,KAAK,cAAc,CAAC,SAAS,SAAS,UAAU,IAC5C;KACC,IAAI,IAAI,MAAM,SAAS,CAAC,CAAC,EAAE,MAAM,SAAS,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,SAAS;CACrE,GACC;IACA,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,SAAS,CAAC,EAAE,UAAU,CAAC;CACxB,CAAC;AAEJ,KAAK,oBAAoB,CAAC,SAAS,SAAS,UAAU,IAAI,CACxD,OAAO,CAAC,EAAE,cAAc,CAAC,SAAS,CAAC,KAChC,MAAM,CAAC;AAgCZ,eAAO,MAAM,eAAe;;;;;;;EAc1B,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;EAkC9B,CAAC;AAEF,eAAO,MAAM,qBAAqB;;;;;;EAejC,CAAC"}