entasis 0.10.2 → 0.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (841) hide show
  1. package/README.md +1 -1
  2. package/dist/attachments/disclosurePanel.svelte.d.ts +84 -0
  3. package/dist/attachments/disclosurePanel.svelte.js +277 -0
  4. package/dist/attachments/portal.d.ts +17 -1
  5. package/dist/attachments/portal.js +39 -2
  6. package/dist/attachments/spinnerOverlay.svelte.js +12 -0
  7. package/dist/attachments/transitionSize.d.ts +6 -0
  8. package/dist/attachments/transitionSize.js +30 -0
  9. package/dist/components/AIAskUserQuestion/AIAskUserQuestion.svelte +131 -17
  10. package/dist/components/AIAskUserQuestion/AIAskUserQuestionFileStep.svelte +26 -6
  11. package/dist/components/AIAskUserQuestion/AIAskUserQuestionFileStep.svelte.d.ts +6 -0
  12. package/dist/components/AIAskUserQuestion/AIAskUserQuestionFooter.svelte +27 -53
  13. package/dist/components/AIAskUserQuestion/AIAskUserQuestionFooter.svelte.d.ts +3 -4
  14. package/dist/components/AIAskUserQuestion/AIAskUserQuestionHeader.svelte +19 -16
  15. package/dist/components/AIAskUserQuestion/AIAskUserQuestionStep.svelte +180 -21
  16. package/dist/components/AIAskUserQuestion/AIAskUserQuestionStep.svelte.d.ts +9 -1
  17. package/dist/components/AIAskUserQuestion/AIAskUserQuestionSummary.svelte +56 -0
  18. package/dist/components/AIAskUserQuestion/AIAskUserQuestionSummary.svelte.d.ts +4 -0
  19. package/dist/components/AIAskUserQuestion/aiAskUserQuestion.mcp.d.ts +1 -1
  20. package/dist/components/AIAskUserQuestion/aiAskUserQuestion.mcp.js +26 -8
  21. package/dist/components/AIAskUserQuestion/aiAskUserQuestion.props.d.ts +62 -5
  22. package/dist/components/AIAskUserQuestion/aiAskUserQuestion.theme.d.ts +42 -0
  23. package/dist/components/AIAskUserQuestion/aiAskUserQuestion.theme.js +53 -12
  24. package/dist/components/AIAskUserQuestion/aiAskUserQuestionAnswers.d.ts +17 -1
  25. package/dist/components/AIAskUserQuestion/aiAskUserQuestionAnswers.js +56 -8
  26. package/dist/components/AIAskUserQuestion/index.d.ts +3 -1
  27. package/dist/components/AIAskUserQuestion/index.js +2 -0
  28. package/dist/components/AIAskUserQuestion/schemas.d.ts +44 -0
  29. package/dist/components/AIAskUserQuestion/schemas.js +10 -3
  30. package/dist/components/AIChat/AIChat.svelte +10 -0
  31. package/dist/components/AIChat/AIChat.svelte.d.ts +2 -2
  32. package/dist/components/AIChat/AIChatComposerSurface.svelte +23 -5
  33. package/dist/components/AIChat/AIChatComposerSurface.svelte.d.ts +5 -0
  34. package/dist/components/AIChat/AIChatSkeleton.svelte +29 -37
  35. package/dist/components/AIChat/AIChatSurface.svelte +30 -2
  36. package/dist/components/AIChat/AIChatSurface.svelte.d.ts +1 -1
  37. package/dist/components/AIChat/AIChatThreadSurface.svelte +11 -1
  38. package/dist/components/AIChat/AIChatThreadSurface.svelte.d.ts +3 -1
  39. package/dist/components/AIChat/aiChat.mcp.d.ts +1 -1
  40. package/dist/components/AIChat/aiChat.mcp.js +31 -15
  41. package/dist/components/AIChat/aiChat.props.d.ts +36 -10
  42. package/dist/components/AIChat/aiChat.theme.d.ts +9 -0
  43. package/dist/components/AIChat/aiChat.theme.js +21 -4
  44. package/dist/components/AIChat/aiChatSkeleton.props.d.ts +5 -0
  45. package/dist/components/AIChat/index.d.ts +1 -1
  46. package/dist/components/AIComposer/AIComposer.svelte +102 -5
  47. package/dist/components/AIComposer/AIComposer.svelte.d.ts +1 -0
  48. package/dist/components/AIComposer/AIComposerFooter.svelte +54 -12
  49. package/dist/components/AIComposer/AIComposerFooter.svelte.d.ts +2 -0
  50. package/dist/components/AIComposer/AIComposerQueue.svelte +8 -3
  51. package/dist/components/AIComposer/aiComposer.editor.theme.js +13 -2
  52. package/dist/components/AIComposer/aiComposer.mcp.d.ts +1 -1
  53. package/dist/components/AIComposer/aiComposer.mcp.js +15 -7
  54. package/dist/components/AIComposer/aiComposer.props.d.ts +27 -7
  55. package/dist/components/AIComposer/aiComposer.theme.d.ts +42 -3
  56. package/dist/components/AIComposer/aiComposer.theme.js +37 -5
  57. package/dist/components/AIComposer/aiComposerFileController.svelte.d.ts +20 -0
  58. package/dist/components/AIComposer/aiComposerFileController.svelte.js +75 -9
  59. package/dist/components/AIComposer/aiComposerSourceAdapter.js +22 -4
  60. package/dist/components/AIComposer/aiComposerSubmitController.svelte.d.ts +12 -0
  61. package/dist/components/AIComposer/aiComposerSubmitController.svelte.js +16 -6
  62. package/dist/components/AIContext/AIContext.svelte +7 -3
  63. package/dist/components/AIContext/aiContext.mcp.d.ts +1 -1
  64. package/dist/components/AIContext/aiContext.mcp.js +1 -1
  65. package/dist/components/AIContext/aiContext.props.d.ts +4 -1
  66. package/dist/components/AIContext/aiContext.theme.d.ts +3 -0
  67. package/dist/components/AIContext/aiContext.theme.js +7 -2
  68. package/dist/components/AIConversation/AIConversation.svelte.d.ts +2 -2
  69. package/dist/components/AIFilePreview/aiFilePreview.theme.js +1 -1
  70. package/dist/components/AIMarker/AIMarker.svelte +2 -0
  71. package/dist/components/AIMarker/aiMarker.mcp.d.ts +1 -1
  72. package/dist/components/AIMarker/aiMarker.mcp.js +2 -0
  73. package/dist/components/AIMarker/aiMarker.props.d.ts +3 -0
  74. package/dist/components/AIMarker/aiMarker.theme.js +2 -2
  75. package/dist/components/AIMessage/AIMessage.svelte +38 -16
  76. package/dist/components/AIMessage/aiMessage.mcp.d.ts +1 -1
  77. package/dist/components/AIMessage/aiMessage.mcp.js +20 -6
  78. package/dist/components/AIMessage/aiMessage.props.d.ts +18 -2
  79. package/dist/components/AIMessage/aiMessage.theme.d.ts +51 -6
  80. package/dist/components/AIMessage/aiMessage.theme.js +91 -32
  81. package/dist/components/AIMessageActions/AIMessageActions.svelte +19 -9
  82. package/dist/components/AIMessageActions/aiMessageActions.mcp.d.ts +1 -1
  83. package/dist/components/AIMessageActions/aiMessageActions.mcp.js +11 -3
  84. package/dist/components/AIMessageActions/aiMessageActions.theme.js +36 -9
  85. package/dist/components/AIModelSelector/AIModelSelector.svelte +25 -10
  86. package/dist/components/AIModelSelector/aiModelSelector.mcp.d.ts +1 -1
  87. package/dist/components/AIModelSelector/aiModelSelector.mcp.js +1 -1
  88. package/dist/components/AIModelSelector/aiModelSelector.theme.d.ts +3 -0
  89. package/dist/components/AIModelSelector/aiModelSelector.theme.js +7 -3
  90. package/dist/components/AIReasoning/AIReasoning.svelte +135 -38
  91. package/dist/components/AIReasoning/aiReasoning.mcp.d.ts +1 -1
  92. package/dist/components/AIReasoning/aiReasoning.mcp.js +11 -5
  93. package/dist/components/AIReasoning/aiReasoning.props.d.ts +15 -4
  94. package/dist/components/AIReasoning/aiReasoning.theme.d.ts +45 -0
  95. package/dist/components/AIReasoning/aiReasoning.theme.js +47 -7
  96. package/dist/components/AISuggestion/AISuggestion.svelte +2 -1
  97. package/dist/components/AISuggestion/AISuggestions.svelte +2 -1
  98. package/dist/components/AISuggestion/aiSuggestion.mcp.d.ts +1 -1
  99. package/dist/components/AISuggestion/aiSuggestion.mcp.js +8 -1
  100. package/dist/components/AISuggestion/aiSuggestion.props.d.ts +4 -1
  101. package/dist/components/AISuggestion/aiSuggestion.theme.js +1 -1
  102. package/dist/components/AISuggestion/aiSuggestions.props.d.ts +7 -0
  103. package/dist/components/AIThread/AIThread.svelte +378 -95
  104. package/dist/components/AIThread/AIThreadAskUserQuestion.svelte +1 -0
  105. package/dist/components/AIThread/AIThreadItems.svelte +266 -64
  106. package/dist/components/AIThread/AIThreadItems.svelte.d.ts +7 -3
  107. package/dist/components/AIThread/AIThreadMarker.svelte +8 -1
  108. package/dist/components/AIThread/AIThreadMarker.svelte.d.ts +1 -0
  109. package/dist/components/AIThread/aiThread.mcp.d.ts +1 -1
  110. package/dist/components/AIThread/aiThread.mcp.js +34 -20
  111. package/dist/components/AIThread/aiThread.props.d.ts +73 -8
  112. package/dist/components/AIThread/aiThread.theme.d.ts +78 -0
  113. package/dist/components/AIThread/aiThread.theme.js +108 -9
  114. package/dist/components/AIThread/index.d.ts +1 -1
  115. package/dist/components/AIThread/threadAskUserQuestion.d.ts +4 -1
  116. package/dist/components/AIThread/threadAskUserQuestion.js +8 -4
  117. package/dist/components/AIThread/threadRenderItems.d.ts +74 -3
  118. package/dist/components/AIThread/threadRenderItems.js +265 -77
  119. package/dist/components/AIThread/threadScrollController.d.ts +0 -8
  120. package/dist/components/AIThread/threadScrollController.js +2 -39
  121. package/dist/components/AIThread/threadTools.d.ts +11 -0
  122. package/dist/components/AIThread/threadTools.js +79 -0
  123. package/dist/components/AIThreadToc/AIThreadToc.svelte +188 -18
  124. package/dist/components/AIThreadToc/AIThreadTocPreview.svelte +25 -2
  125. package/dist/components/AIThreadToc/AIThreadTocPreview.svelte.d.ts +3 -0
  126. package/dist/components/AIThreadToc/aiThreadToc.d.ts +4 -2
  127. package/dist/components/AIThreadToc/aiThreadToc.js +17 -5
  128. package/dist/components/AIThreadToc/aiThreadToc.mcp.d.ts +1 -1
  129. package/dist/components/AIThreadToc/aiThreadToc.mcp.js +13 -3
  130. package/dist/components/AIThreadToc/aiThreadToc.props.d.ts +11 -0
  131. package/dist/components/AIThreadToc/aiThreadToc.theme.d.ts +3 -0
  132. package/dist/components/AIThreadToc/aiThreadToc.theme.js +15 -6
  133. package/dist/components/AITool/AITool.svelte +56 -21
  134. package/dist/components/AITool/AIToolCallList.svelte +79 -29
  135. package/dist/components/AITool/AIToolCallList.svelte.d.ts +6 -2
  136. package/dist/components/AITool/AIToolStatusMark.svelte +52 -0
  137. package/dist/components/AITool/AIToolStatusMark.svelte.d.ts +14 -0
  138. package/dist/components/AITool/AIToolValueSection.svelte +126 -28
  139. package/dist/components/AITool/AIToolValueSection.svelte.d.ts +6 -2
  140. package/dist/components/AITool/AIToolValueTree.svelte +11 -16
  141. package/dist/components/AITool/AIToolValueTree.svelte.d.ts +2 -3
  142. package/dist/components/AITool/aiTool.mcp.d.ts +1 -1
  143. package/dist/components/AITool/aiTool.mcp.js +36 -8
  144. package/dist/components/AITool/aiTool.props.d.ts +52 -6
  145. package/dist/components/AITool/aiTool.theme.d.ts +117 -39
  146. package/dist/components/AITool/aiTool.theme.js +144 -140
  147. package/dist/components/AITool/aiToolClock.svelte.d.ts +18 -0
  148. package/dist/components/AITool/aiToolClock.svelte.js +62 -0
  149. package/dist/components/AITool/aiToolPrimitiveThemes.d.ts +0 -2
  150. package/dist/components/AITool/aiToolPrimitiveThemes.js +0 -10
  151. package/dist/components/AITool/index.d.ts +2 -1
  152. package/dist/components/AITool/index.js +1 -0
  153. package/dist/components/AITool/toolRendering.d.ts +33 -1
  154. package/dist/components/AITool/toolRendering.js +179 -15
  155. package/dist/components/AITool/toolValueTree.d.ts +14 -1
  156. package/dist/components/AITool/toolValueTree.js +126 -27
  157. package/dist/components/Accordion/Accordion.svelte +109 -109
  158. package/dist/components/Accordion/Accordion.svelte.d.ts +0 -1
  159. package/dist/components/Accordion/AccordionPanel.svelte +64 -0
  160. package/dist/components/Accordion/AccordionPanel.svelte.d.ts +20 -0
  161. package/dist/components/Accordion/accordion.attributes.d.ts +24 -0
  162. package/dist/components/Accordion/accordion.attributes.js +20 -0
  163. package/dist/components/Accordion/accordion.mcp.d.ts +1 -1
  164. package/dist/components/Accordion/accordion.mcp.js +78 -22
  165. package/dist/components/Accordion/accordion.props.d.ts +54 -10
  166. package/dist/components/Accordion/accordion.theme.d.ts +3 -0
  167. package/dist/components/Accordion/accordion.theme.js +4 -0
  168. package/dist/components/Accordion/index.d.ts +1 -0
  169. package/dist/components/Accordion/index.js +1 -0
  170. package/dist/components/AudioPlayer/audioPlayerVolumeControl.slider.theme.d.ts +31 -1
  171. package/dist/components/Avatar/Avatar.svelte +60 -10
  172. package/dist/components/Avatar/AvatarGroup.svelte +9 -0
  173. package/dist/components/Avatar/avatar.mcp.d.ts +1 -1
  174. package/dist/components/Avatar/avatar.mcp.js +13 -5
  175. package/dist/components/Avatar/avatar.props.d.ts +28 -1
  176. package/dist/components/Avatar/avatar.theme.js +3 -3
  177. package/dist/components/Avatar/index.d.ts +1 -1
  178. package/dist/components/Breadcrumbs/breadcrumbs.mcp.d.ts +1 -1
  179. package/dist/components/Breadcrumbs/breadcrumbs.mcp.js +1 -1
  180. package/dist/components/Button/Button.svelte +35 -15
  181. package/dist/components/Button/button.mcp.d.ts +1 -1
  182. package/dist/components/Button/button.mcp.js +8 -4
  183. package/dist/components/Button/button.props.d.ts +23 -8
  184. package/dist/components/Button/button.theme.d.ts +12 -0
  185. package/dist/components/Button/button.theme.js +17 -4
  186. package/dist/components/ButtonGroup/buttonGroup.mcp.d.ts +1 -1
  187. package/dist/components/ButtonGroup/buttonGroup.mcp.js +1 -1
  188. package/dist/components/ButtonGroup/buttonGroup.props.d.ts +4 -1
  189. package/dist/components/Collapsible/Collapsible.svelte +125 -19
  190. package/dist/components/Collapsible/collapsible.attributes.d.ts +21 -0
  191. package/dist/components/Collapsible/collapsible.attributes.js +17 -0
  192. package/dist/components/Collapsible/collapsible.mcp.d.ts +1 -1
  193. package/dist/components/Collapsible/collapsible.mcp.js +62 -12
  194. package/dist/components/Collapsible/collapsible.props.d.ts +39 -8
  195. package/dist/components/Collapsible/collapsible.theme.js +3 -1
  196. package/dist/components/Collapsible/index.d.ts +1 -0
  197. package/dist/components/Collapsible/index.js +1 -0
  198. package/dist/components/Command/Command.svelte +56 -14
  199. package/dist/components/Command/command.mcp.d.ts +1 -1
  200. package/dist/components/Command/command.mcp.js +12 -6
  201. package/dist/components/Command/command.props.d.ts +39 -6
  202. package/dist/components/Command/command.state.svelte.d.ts +40 -11
  203. package/dist/components/Command/command.state.svelte.js +75 -28
  204. package/dist/components/Command/command.theme.js +4 -3
  205. package/dist/components/Confirmation/Confirmation.svelte +72 -31
  206. package/dist/components/Confirmation/confirmation.mcp.d.ts +1 -1
  207. package/dist/components/Confirmation/confirmation.mcp.js +5 -4
  208. package/dist/components/ContextMenu/ContextMenu.svelte +126 -16
  209. package/dist/components/ContextMenu/contextMenu.mcp.d.ts +1 -1
  210. package/dist/components/ContextMenu/contextMenu.mcp.js +10 -7
  211. package/dist/components/ContextMenu/contextMenu.props.d.ts +13 -4
  212. package/dist/components/ContextMenu/contextMenu.theme.d.ts +3 -3
  213. package/dist/components/ContextMenu/contextMenu.theme.js +3 -2
  214. package/dist/components/DataTable/DataTable.svelte +4 -9
  215. package/dist/components/DataTable/DataTableEditor.svelte +5 -0
  216. package/dist/components/DataTable/DataTableFilter.svelte +1 -0
  217. package/dist/components/DataTable/DataTableToolbar.svelte +1 -0
  218. package/dist/components/DataTable/dataTable.mcp.d.ts +1 -1
  219. package/dist/components/DataTable/dataTable.mcp.js +4 -2
  220. package/dist/components/DataTable/dataTable.theme.d.ts +0 -3
  221. package/dist/components/DataTable/dataTable.theme.js +9 -6
  222. package/dist/components/Dialog/Dialog.svelte +120 -35
  223. package/dist/components/Dialog/Dialog.svelte.d.ts +1 -1
  224. package/dist/components/Dialog/DialogBackdrop.svelte +21 -1
  225. package/dist/components/Dialog/dialog.api.d.ts +65 -0
  226. package/dist/components/Dialog/dialog.api.js +1 -0
  227. package/dist/components/Dialog/dialog.attributes.d.ts +23 -0
  228. package/dist/components/Dialog/dialog.attributes.js +19 -0
  229. package/dist/components/Dialog/dialog.indent.d.ts +6 -0
  230. package/dist/components/Dialog/dialog.indent.js +16 -0
  231. package/dist/components/Dialog/dialog.mcp.d.ts +1 -1
  232. package/dist/components/Dialog/dialog.mcp.js +195 -22
  233. package/dist/components/Dialog/dialog.props.d.ts +102 -19
  234. package/dist/components/Dialog/dialog.snap.d.ts +40 -0
  235. package/dist/components/Dialog/dialog.snap.js +78 -0
  236. package/dist/components/Dialog/dialog.state.svelte.d.ts +122 -10
  237. package/dist/components/Dialog/dialog.state.svelte.js +525 -66
  238. package/dist/components/Dialog/dialog.theme.d.ts +48 -0
  239. package/dist/components/Dialog/dialog.theme.js +32 -9
  240. package/dist/components/Dialog/index.d.ts +4 -1
  241. package/dist/components/Dialog/index.js +1 -0
  242. package/dist/components/DocumentViewer/DocumentSearchControl.svelte +5 -3
  243. package/dist/components/DocumentViewer/documentOutput.js +2 -1
  244. package/dist/components/FloatingWindow/FloatingWindow.svelte +20 -32
  245. package/dist/components/FloatingWindow/FloatingWindow.svelte.d.ts +1 -1
  246. package/dist/components/FloatingWindow/floatingWindow.mcp.d.ts +1 -1
  247. package/dist/components/FloatingWindow/floatingWindow.mcp.js +3 -3
  248. package/dist/components/FloatingWindow/floatingWindow.props.d.ts +9 -4
  249. package/dist/components/FloatingWindow/floatingWindow.state.svelte.d.ts +8 -2
  250. package/dist/components/FloatingWindow/floatingWindow.state.svelte.js +18 -7
  251. package/dist/components/Form/Ask/Ask.svelte +9 -13
  252. package/dist/components/Form/Ask/ask.mcp.d.ts +1 -1
  253. package/dist/components/Form/Ask/ask.mcp.js +1 -1
  254. package/dist/components/Form/Ask/ask.props.d.ts +1 -1
  255. package/dist/components/Form/Autocomplete/Autocomplete.svelte +418 -0
  256. package/dist/components/Form/Autocomplete/Autocomplete.svelte.d.ts +4 -0
  257. package/dist/components/Form/Autocomplete/autocomplete.items.d.ts +30 -0
  258. package/dist/components/Form/Autocomplete/autocomplete.items.js +64 -0
  259. package/dist/components/Form/Autocomplete/autocomplete.mcp.d.ts +1 -0
  260. package/dist/components/Form/Autocomplete/autocomplete.mcp.js +134 -0
  261. package/dist/components/Form/Autocomplete/autocomplete.props.d.ts +146 -0
  262. package/dist/components/Form/Autocomplete/autocomplete.props.js +1 -0
  263. package/dist/components/Form/Autocomplete/autocomplete.theme.d.ts +213 -0
  264. package/dist/components/Form/Autocomplete/autocomplete.theme.js +119 -0
  265. package/dist/components/Form/Autocomplete/index.d.ts +3 -0
  266. package/dist/components/Form/Autocomplete/index.js +2 -0
  267. package/dist/components/Form/Calendar/CalendarInput.svelte +9 -0
  268. package/dist/components/Form/Calendar/CalendarMonthYearPicker.svelte +3 -0
  269. package/dist/components/Form/Calendar/CalendarPrimitive.svelte +5 -0
  270. package/dist/components/Form/Calendar/calendar.mcp.d.ts +1 -1
  271. package/dist/components/Form/Calendar/calendar.mcp.js +2 -1
  272. package/dist/components/Form/Calendar/calendarInput.props.d.ts +2 -0
  273. package/dist/components/Form/Calendar/useCalendar.svelte.d.ts +3 -0
  274. package/dist/components/Form/Calendar/useCalendar.svelte.js +3 -0
  275. package/dist/components/Form/Checkbox/Checkbox.svelte +17 -2
  276. package/dist/components/Form/Checkbox/checkbox.mcp.d.ts +1 -1
  277. package/dist/components/Form/Checkbox/checkbox.mcp.js +11 -1
  278. package/dist/components/Form/Checkbox/checkbox.props.d.ts +12 -1
  279. package/dist/components/Form/CheckboxesInput/CheckboxLine.svelte +69 -32
  280. package/dist/components/Form/CheckboxesInput/CheckboxLine.svelte.d.ts +10 -2
  281. package/dist/components/Form/CheckboxesInput/CheckboxesInput.svelte +123 -74
  282. package/dist/components/Form/CheckboxesInput/CheckboxesInput.svelte.d.ts +12 -12
  283. package/dist/components/Form/CheckboxesInput/checkboxesInput.mcp.d.ts +1 -1
  284. package/dist/components/Form/CheckboxesInput/checkboxesInput.mcp.js +11 -7
  285. package/dist/components/Form/CheckboxesInput/checkboxesInput.props.d.ts +25 -9
  286. package/dist/components/Form/CheckboxesInput/checkboxesInput.theme.d.ts +12 -0
  287. package/dist/components/Form/CheckboxesInput/checkboxesInput.theme.js +9 -4
  288. package/dist/components/Form/CheckboxesInput/choiceEnter.d.ts +11 -0
  289. package/dist/components/Form/CheckboxesInput/choiceEnter.js +27 -0
  290. package/dist/components/Form/ColorInput/ColorInput.svelte +12 -3
  291. package/dist/components/Form/ColorInput/colorInput.mcp.d.ts +1 -1
  292. package/dist/components/Form/ColorInput/colorInput.mcp.js +1 -0
  293. package/dist/components/Form/ColorPicker/ColorPicker.svelte +11 -2
  294. package/dist/components/Form/ColorPicker/ColorPickerInput.svelte +9 -0
  295. package/dist/components/Form/ColorPicker/colorPicker.mcp.d.ts +1 -1
  296. package/dist/components/Form/ColorPicker/colorPicker.mcp.js +1 -0
  297. package/dist/components/Form/ColorPicker/colorPicker.props.d.ts +2 -0
  298. package/dist/components/Form/ColorPicker/colorPicker.state.svelte.d.ts +4 -0
  299. package/dist/components/Form/ColorPicker/colorPicker.state.svelte.js +12 -8
  300. package/dist/components/Form/Combobox/Combobox.svelte +145 -185
  301. package/dist/components/Form/Combobox/Combobox.svelte.d.ts +1 -1
  302. package/dist/components/Form/Combobox/ComboboxPopup.svelte +128 -0
  303. package/dist/components/Form/Combobox/ComboboxPopup.svelte.d.ts +28 -0
  304. package/dist/components/Form/Combobox/combobox.attributes.d.ts +34 -0
  305. package/dist/components/Form/Combobox/combobox.attributes.js +25 -0
  306. package/dist/components/Form/Combobox/combobox.items.d.ts +28 -0
  307. package/dist/components/Form/Combobox/combobox.items.js +68 -0
  308. package/dist/components/Form/Combobox/combobox.mcp.d.ts +1 -1
  309. package/dist/components/Form/Combobox/combobox.mcp.js +104 -13
  310. package/dist/components/Form/Combobox/combobox.props.d.ts +113 -19
  311. package/dist/components/Form/Combobox/combobox.state.svelte.d.ts +137 -0
  312. package/dist/components/Form/Combobox/combobox.state.svelte.js +375 -0
  313. package/dist/components/Form/Combobox/combobox.theme.d.ts +63 -0
  314. package/dist/components/Form/Combobox/combobox.theme.js +37 -1
  315. package/dist/components/Form/Combobox/index.d.ts +2 -1
  316. package/dist/components/Form/Combobox/index.js +1 -0
  317. package/dist/components/Form/DateInput/DateInput.svelte +11 -3
  318. package/dist/components/Form/DateInput/dateInput.mcp.d.ts +1 -1
  319. package/dist/components/Form/DateInput/dateInput.mcp.js +5 -0
  320. package/dist/components/Form/DateSelector/DateSelector.svelte +5 -2
  321. package/dist/components/Form/DateSelector/DateSelectorInput.svelte +9 -0
  322. package/dist/components/Form/DateSelector/dateSelector.mcp.d.ts +1 -1
  323. package/dist/components/Form/DateSelector/dateSelector.mcp.js +2 -2
  324. package/dist/components/Form/DateSelector/dateSelector.props.d.ts +2 -0
  325. package/dist/components/Form/Field/Field.svelte +258 -32
  326. package/dist/components/Form/Field/Field.svelte.d.ts +15 -6
  327. package/dist/components/Form/Field/FieldGroup.svelte +29 -0
  328. package/dist/components/Form/Field/FieldGroup.svelte.d.ts +11 -0
  329. package/dist/components/Form/Field/FieldHiddenInputs.svelte +187 -0
  330. package/dist/components/Form/Field/FieldHiddenInputs.svelte.d.ts +26 -0
  331. package/dist/components/Form/Field/field.d.ts +75 -10
  332. package/dist/components/Form/Field/field.mcp.d.ts +1 -1
  333. package/dist/components/Form/Field/field.mcp.js +158 -18
  334. package/dist/components/Form/Field/field.messages.d.ts +47 -0
  335. package/dist/components/Form/Field/field.messages.js +64 -0
  336. package/dist/components/Form/Field/field.state.svelte.d.ts +117 -40
  337. package/dist/components/Form/Field/field.state.svelte.js +525 -16
  338. package/dist/components/Form/Field/field.theme.d.ts +46 -0
  339. package/dist/components/Form/Field/field.theme.js +33 -0
  340. package/dist/components/Form/Field/fieldHiddenInputs.props.d.ts +61 -0
  341. package/dist/components/Form/Field/fieldHiddenInputs.props.js +1 -0
  342. package/dist/components/Form/Field/fieldNativeForm.svelte.d.ts +14 -0
  343. package/dist/components/Form/Field/fieldNativeForm.svelte.js +113 -0
  344. package/dist/components/Form/Field/index.d.ts +5 -2
  345. package/dist/components/Form/Field/index.js +1 -0
  346. package/dist/components/Form/Field/schemas.js +7 -2
  347. package/dist/components/Form/File/FileInput.svelte +24 -3
  348. package/dist/components/Form/File/fileInput.mcp.d.ts +1 -1
  349. package/dist/components/Form/File/fileInput.mcp.js +1 -0
  350. package/dist/components/Form/Form/Form.svelte +49 -15
  351. package/dist/components/Form/Form/FormActions.svelte +3 -1
  352. package/dist/components/Form/Form/FormActions.svelte.d.ts +42 -2
  353. package/dist/components/Form/Form/FormFieldRenderer.svelte +96 -12
  354. package/dist/components/Form/Form/FormFieldRenderer.svelte.d.ts +3 -2
  355. package/dist/components/Form/Form/FormInputRenderer.svelte +7 -0
  356. package/dist/components/Form/Form/form.d.ts +84 -11
  357. package/dist/components/Form/Form/form.mcp.d.ts +1 -1
  358. package/dist/components/Form/Form/form.mcp.js +178 -12
  359. package/dist/components/Form/Form/form.props.d.ts +32 -1
  360. package/dist/components/Form/Form/form.registry.d.ts +28 -0
  361. package/dist/components/Form/Form/form.registry.js +59 -0
  362. package/dist/components/Form/Form/form.state.svelte.d.ts +1186 -420
  363. package/dist/components/Form/Form/form.state.svelte.js +322 -28
  364. package/dist/components/Form/Form/index.d.ts +4 -1
  365. package/dist/components/Form/Form/index.js +1 -0
  366. package/dist/components/Form/Form/visibility.d.ts +3130 -1863
  367. package/dist/components/Form/KeyValueInput/KeyValueInput.svelte +22 -10
  368. package/dist/components/Form/KeyValueInput/keyValueInput.mcp.d.ts +1 -1
  369. package/dist/components/Form/KeyValueInput/keyValueInput.mcp.js +1 -0
  370. package/dist/components/Form/MultiStepForm/MultiStepForm.svelte +12 -5
  371. package/dist/components/Form/MultiStepForm/multiStepForm.mcp.d.ts +1 -1
  372. package/dist/components/Form/MultiStepForm/multiStepForm.mcp.js +5 -3
  373. package/dist/components/Form/MultiStepForm/multiStepForm.props.d.ts +5 -0
  374. package/dist/components/Form/MultiStepForm/multiStepForm.state.svelte.d.ts +1050 -408
  375. package/dist/components/Form/MultiStepForm/multiStepForm.state.svelte.js +48 -24
  376. package/dist/components/Form/NumberInput/NumberInput.svelte +365 -46
  377. package/dist/components/Form/NumberInput/index.d.ts +1 -1
  378. package/dist/components/Form/NumberInput/numberInput.mcp.d.ts +1 -1
  379. package/dist/components/Form/NumberInput/numberInput.mcp.js +55 -30
  380. package/dist/components/Form/NumberInput/numberInput.props.d.ts +64 -4
  381. package/dist/components/Form/PasswordInput/Password.svelte +28 -1
  382. package/dist/components/Form/PasswordInput/index.d.ts +1 -1
  383. package/dist/components/Form/PasswordInput/passwordInput.mcp.d.ts +1 -1
  384. package/dist/components/Form/PasswordInput/passwordInput.mcp.js +20 -2
  385. package/dist/components/Form/PasswordInput/passwordInput.props.d.ts +23 -0
  386. package/dist/components/Form/PhoneInput/PhoneInput.svelte +11 -4
  387. package/dist/components/Form/PhoneInput/PhoneInputCountryPicker.svelte +47 -21
  388. package/dist/components/Form/PhoneInput/phoneInput-cdn.js +2 -1
  389. package/dist/components/Form/PhoneInput/phoneInput.mcp.d.ts +1 -1
  390. package/dist/components/Form/PhoneInput/phoneInput.mcp.js +6 -2
  391. package/dist/components/Form/PhoneInput/phoneInputCountry.d.ts +9 -3
  392. package/dist/components/Form/PhoneInput/phoneInputCountry.js +34 -24
  393. package/dist/components/Form/PinInput/PinInput.svelte +44 -9
  394. package/dist/components/Form/PinInput/PinInputCells.svelte +22 -1
  395. package/dist/components/Form/PinInput/PinInputCells.svelte.d.ts +1 -0
  396. package/dist/components/Form/PinInput/index.d.ts +1 -1
  397. package/dist/components/Form/PinInput/pinInput.mcp.d.ts +1 -1
  398. package/dist/components/Form/PinInput/pinInput.mcp.js +29 -6
  399. package/dist/components/Form/PinInput/pinInput.props.d.ts +38 -4
  400. package/dist/components/Form/PinInput/pinInput.state.svelte.d.ts +41 -0
  401. package/dist/components/Form/PinInput/pinInput.state.svelte.js +227 -24
  402. package/dist/components/Form/PinInput/pinInput.theme.d.ts +39 -3
  403. package/dist/components/Form/PinInput/pinInput.theme.js +27 -1
  404. package/dist/components/Form/RadioInput/RadioInput.svelte +94 -32
  405. package/dist/components/Form/RadioInput/RadioInput.svelte.d.ts +12 -12
  406. package/dist/components/Form/RadioInput/radioInput.mcp.d.ts +1 -1
  407. package/dist/components/Form/RadioInput/radioInput.mcp.js +12 -9
  408. package/dist/components/Form/RadioInput/radioInput.props.d.ts +22 -6
  409. package/dist/components/Form/RadioInput/radioInput.theme.d.ts +12 -0
  410. package/dist/components/Form/RadioInput/radioInput.theme.js +10 -5
  411. package/dist/components/Form/RatingInput/RatingInput.svelte +13 -4
  412. package/dist/components/Form/RatingInput/ratingInput.mcp.d.ts +1 -1
  413. package/dist/components/Form/RatingInput/ratingInput.mcp.js +3 -3
  414. package/dist/components/Form/RatingInput/ratingInput.props.d.ts +1 -1
  415. package/dist/components/Form/Select/Select.svelte +186 -48
  416. package/dist/components/Form/Select/Select.svelte.d.ts +23 -2
  417. package/dist/components/Form/Select/SelectOptionRow.svelte +69 -0
  418. package/dist/components/Form/Select/SelectOptionRow.svelte.d.ts +18 -0
  419. package/dist/components/Form/Select/index.d.ts +2 -1
  420. package/dist/components/Form/Select/index.js +1 -0
  421. package/dist/components/Form/Select/select.align.d.ts +5 -0
  422. package/dist/components/Form/Select/select.align.js +19 -5
  423. package/dist/components/Form/Select/select.attributes.d.ts +36 -0
  424. package/dist/components/Form/Select/select.attributes.js +27 -0
  425. package/dist/components/Form/Select/select.mcp.d.ts +1 -1
  426. package/dist/components/Form/Select/select.mcp.js +103 -18
  427. package/dist/components/Form/Select/select.props.d.ts +87 -10
  428. package/dist/components/Form/Select/select.state.svelte.d.ts +108 -17
  429. package/dist/components/Form/Select/select.state.svelte.js +354 -59
  430. package/dist/components/Form/Select/select.theme.d.ts +21 -0
  431. package/dist/components/Form/Select/select.theme.js +22 -0
  432. package/dist/components/Form/Slider/Slider.svelte +54 -14
  433. package/dist/components/Form/Slider/SliderMarks.svelte +1 -1
  434. package/dist/components/Form/Slider/SliderThumb.svelte +49 -19
  435. package/dist/components/Form/Slider/SliderThumb.svelte.d.ts +8 -2
  436. package/dist/components/Form/Slider/SliderTrack.svelte +33 -12
  437. package/dist/components/Form/Slider/SliderTrack.svelte.d.ts +6 -2
  438. package/dist/components/Form/Slider/index.d.ts +1 -1
  439. package/dist/components/Form/Slider/slider.mcp.d.ts +1 -1
  440. package/dist/components/Form/Slider/slider.mcp.js +55 -11
  441. package/dist/components/Form/Slider/slider.props.d.ts +35 -2
  442. package/dist/components/Form/Slider/slider.state.svelte.d.ts +66 -5
  443. package/dist/components/Form/Slider/slider.state.svelte.js +273 -49
  444. package/dist/components/Form/Slider/slider.theme.d.ts +36 -0
  445. package/dist/components/Form/Slider/slider.theme.js +35 -17
  446. package/dist/components/Form/Switch/Switch.svelte +61 -38
  447. package/dist/components/Form/Switch/switch.mcp.d.ts +1 -1
  448. package/dist/components/Form/Switch/switch.mcp.js +25 -5
  449. package/dist/components/Form/Switch/switch.props.d.ts +14 -1
  450. package/dist/components/Form/Switch/switch.theme.d.ts +12 -0
  451. package/dist/components/Form/Switch/switch.theme.js +8 -3
  452. package/dist/components/Form/TagGroup/TagGroup.svelte +8 -0
  453. package/dist/components/Form/TagGroup/tagGroup.mcp.d.ts +1 -1
  454. package/dist/components/Form/TagGroup/tagGroup.mcp.js +1 -0
  455. package/dist/components/Form/TagsInput/TagsInput.svelte +277 -275
  456. package/dist/components/Form/TagsInput/TagsInput.svelte.d.ts +1 -1
  457. package/dist/components/Form/TagsInput/tagsInput.mcp.d.ts +1 -1
  458. package/dist/components/Form/TagsInput/tagsInput.mcp.js +31 -11
  459. package/dist/components/Form/TagsInput/tagsInput.props.d.ts +6 -26
  460. package/dist/components/Form/TagsInput/tagsInput.theme.d.ts +63 -0
  461. package/dist/components/Form/TagsInput/tagsInput.theme.js +37 -1
  462. package/dist/components/Form/TextArea/TextArea.svelte +8 -0
  463. package/dist/components/Form/TextArea/textArea.mcp.d.ts +1 -1
  464. package/dist/components/Form/TextArea/textArea.mcp.js +1 -0
  465. package/dist/components/Form/TextInput/TextInput.svelte +8 -1
  466. package/dist/components/Form/TextInput/textInput.mcp.d.ts +1 -1
  467. package/dist/components/Form/TextInput/textInput.mcp.js +5 -0
  468. package/dist/components/Form/TimeInput/TimeInput.svelte +9 -1
  469. package/dist/components/Form/TimeInput/timeInput.mcp.d.ts +1 -1
  470. package/dist/components/Form/TimeInput/timeInput.mcp.js +31 -0
  471. package/dist/components/Form/VoiceInput/VoiceInput.svelte +10 -2
  472. package/dist/components/Form/VoiceInput/voiceInput.mcp.d.ts +1 -1
  473. package/dist/components/Form/VoiceInput/voiceInput.mcp.js +1 -0
  474. package/dist/components/GanttChart/GanttDependencyControl.svelte +4 -4
  475. package/dist/components/HoverCard/HoverCard.svelte +100 -10
  476. package/dist/components/HoverCard/hoverCard.attributes.d.ts +33 -0
  477. package/dist/components/HoverCard/hoverCard.attributes.js +24 -0
  478. package/dist/components/HoverCard/hoverCard.mcp.d.ts +1 -1
  479. package/dist/components/HoverCard/hoverCard.mcp.js +61 -2
  480. package/dist/components/HoverCard/hoverCard.props.d.ts +19 -0
  481. package/dist/components/HoverCard/hoverCard.theme.d.ts +12 -0
  482. package/dist/components/HoverCard/hoverCard.theme.js +9 -2
  483. package/dist/components/HoverCard/index.d.ts +1 -0
  484. package/dist/components/HoverCard/index.js +1 -0
  485. package/dist/components/ImageGallery/imageGallery.state.svelte.d.ts +1 -1
  486. package/dist/components/ImageZoom/imageZoom.lightbox.js +40 -6
  487. package/dist/components/ImageZoom/imageZoom.mcp.d.ts +1 -1
  488. package/dist/components/ImageZoom/imageZoom.mcp.js +3 -3
  489. package/dist/components/ImageZoom/imageZoom.props.d.ts +10 -4
  490. package/dist/components/ImageZoom/imageZoom.state.svelte.d.ts +16 -4
  491. package/dist/components/ImageZoom/imageZoom.state.svelte.js +38 -9
  492. package/dist/components/Kanban/kanban.theme.js +7 -3
  493. package/dist/components/Layout/layoutSpacing.d.ts +2 -2
  494. package/dist/components/LinkPreview/LinkPreview.svelte +7 -1
  495. package/dist/components/LinkPreview/linkPreview.mcp.d.ts +1 -1
  496. package/dist/components/LinkPreview/linkPreview.mcp.js +4 -1
  497. package/dist/components/LinkPreview/linkPreview.props.d.ts +15 -0
  498. package/dist/components/LinkPreview/linkPreview.theme.d.ts +12 -0
  499. package/dist/components/LinkPreview/linkPreview.theme.js +9 -2
  500. package/dist/components/Map/maplibre-cdn.js +3 -2
  501. package/dist/components/Markdown/markdown.mcp.d.ts +1 -1
  502. package/dist/components/Markdown/markdown.mcp.js +2 -1
  503. package/dist/components/Markdown/markdown.theme.js +18 -9
  504. package/dist/components/MediaVolume/MediaVolumeControl.svelte +4 -3
  505. package/dist/components/Menu/Menu.svelte +3 -3
  506. package/dist/components/Menu/Menu.svelte.d.ts +1 -1
  507. package/dist/components/Menu/MenuCheckboxItem.svelte +87 -0
  508. package/dist/components/Menu/MenuCheckboxItem.svelte.d.ts +16 -0
  509. package/dist/components/Menu/MenuFloating.svelte +421 -74
  510. package/dist/components/Menu/MenuFloating.svelte.d.ts +1 -1
  511. package/dist/components/Menu/MenuMirroredIcon.svelte +9 -0
  512. package/dist/components/Menu/MenuMirroredIcon.svelte.d.ts +7 -0
  513. package/dist/components/Menu/MenuRadioGroup.svelte +102 -0
  514. package/dist/components/Menu/MenuRadioGroup.svelte.d.ts +18 -0
  515. package/dist/components/Menu/MenuSearchField.svelte +54 -0
  516. package/dist/components/Menu/MenuSearchField.svelte.d.ts +20 -0
  517. package/dist/components/Menu/MenuStacked.svelte +404 -158
  518. package/dist/components/Menu/MenuStacked.svelte.d.ts +1 -1
  519. package/dist/components/Menu/MenuStackedBackHeader.svelte +6 -1
  520. package/dist/components/Menu/index.d.ts +2 -1
  521. package/dist/components/Menu/index.js +1 -0
  522. package/dist/components/Menu/menu.attributes.d.ts +37 -0
  523. package/dist/components/Menu/menu.attributes.js +28 -0
  524. package/dist/components/Menu/menu.filter.svelte.d.ts +52 -0
  525. package/dist/components/Menu/menu.filter.svelte.js +143 -0
  526. package/dist/components/Menu/menu.mcp.d.ts +1 -1
  527. package/dist/components/Menu/menu.mcp.js +227 -17
  528. package/dist/components/Menu/menu.platform.d.ts +5 -0
  529. package/dist/components/Menu/menu.platform.js +11 -0
  530. package/dist/components/Menu/menu.props.d.ts +172 -9
  531. package/dist/components/Menu/menu.theme.d.ts +147 -0
  532. package/dist/components/Menu/menu.theme.js +101 -0
  533. package/dist/components/Menu/menuTree.d.ts +35 -1
  534. package/dist/components/Menu/menuTree.js +158 -1
  535. package/dist/components/MenuBar/menuBar.mcp.d.ts +1 -1
  536. package/dist/components/MenuBar/menuBar.mcp.js +4 -2
  537. package/dist/components/MenuBar/menuBar.state.svelte.js +28 -10
  538. package/dist/components/MenuOption/MenuOption.svelte +5 -1
  539. package/dist/components/MenuOption/menuOption.mcp.d.ts +1 -1
  540. package/dist/components/MenuOption/menuOption.mcp.js +8 -0
  541. package/dist/components/MenuOption/menuOption.props.d.ts +12 -0
  542. package/dist/components/MenuOption/menuOption.theme.d.ts +18 -0
  543. package/dist/components/MenuOption/menuOption.theme.js +24 -4
  544. package/dist/components/Mermaid/mermaid.mcp.d.ts +1 -1
  545. package/dist/components/Mermaid/mermaid.mcp.js +8 -8
  546. package/dist/components/Mermaid/mermaid.props.d.ts +3 -4
  547. package/dist/components/Mermaid/mermaid.state.svelte.d.ts +20 -19
  548. package/dist/components/Mermaid/mermaid.state.svelte.js +80 -243
  549. package/dist/components/Mermaid/mermaid.theme.js +26 -1
  550. package/dist/components/MetadataList/MetadataList.svelte.d.ts +1 -1
  551. package/dist/components/Meter/Meter.svelte +110 -24
  552. package/dist/components/Meter/Meter.svelte.d.ts +12 -12
  553. package/dist/components/Meter/meter.mcp.d.ts +1 -1
  554. package/dist/components/Meter/meter.mcp.js +23 -37
  555. package/dist/components/Meter/meter.props.d.ts +36 -44
  556. package/dist/components/NavigationMenu/NavigationMenu.svelte +181 -0
  557. package/dist/components/NavigationMenu/NavigationMenu.svelte.d.ts +25 -0
  558. package/dist/components/NavigationMenu/NavigationMenuContent.svelte +141 -0
  559. package/dist/components/NavigationMenu/NavigationMenuContent.svelte.d.ts +13 -0
  560. package/dist/components/NavigationMenu/NavigationMenuTrigger.svelte +75 -0
  561. package/dist/components/NavigationMenu/NavigationMenuTrigger.svelte.d.ts +13 -0
  562. package/dist/components/NavigationMenu/index.d.ts +4 -0
  563. package/dist/components/NavigationMenu/index.js +3 -0
  564. package/dist/components/NavigationMenu/navigationMenu.attributes.d.ts +24 -0
  565. package/dist/components/NavigationMenu/navigationMenu.attributes.js +21 -0
  566. package/dist/components/NavigationMenu/navigationMenu.mcp.d.ts +1 -0
  567. package/dist/components/NavigationMenu/navigationMenu.mcp.js +138 -0
  568. package/dist/components/NavigationMenu/navigationMenu.props.d.ts +129 -0
  569. package/dist/components/NavigationMenu/navigationMenu.props.js +1 -0
  570. package/dist/components/NavigationMenu/navigationMenu.state.svelte.d.ts +163 -0
  571. package/dist/components/NavigationMenu/navigationMenu.state.svelte.js +721 -0
  572. package/dist/components/NavigationMenu/navigationMenu.theme.d.ts +326 -0
  573. package/dist/components/NavigationMenu/navigationMenu.theme.js +239 -0
  574. package/dist/components/Overlay/Overlay.svelte +19 -30
  575. package/dist/components/Overlay/index.d.ts +1 -0
  576. package/dist/components/Overlay/index.js +1 -0
  577. package/dist/components/Overlay/overlay.attributes.d.ts +16 -0
  578. package/dist/components/Overlay/overlay.attributes.js +14 -0
  579. package/dist/components/Overlay/overlay.mcp.d.ts +1 -1
  580. package/dist/components/Overlay/overlay.mcp.js +21 -3
  581. package/dist/components/Overlay/overlay.props.d.ts +8 -4
  582. package/dist/components/Popover/Popover.svelte +163 -52
  583. package/dist/components/Popover/Popover.svelte.d.ts +23 -2
  584. package/dist/components/Popover/PopoverSession.svelte +12 -0
  585. package/dist/components/Popover/PopoverSession.svelte.d.ts +7 -0
  586. package/dist/components/Popover/index.d.ts +10 -2
  587. package/dist/components/Popover/index.js +4 -1
  588. package/dist/components/Popover/popover.api.d.ts +83 -0
  589. package/dist/components/Popover/popover.api.js +1 -0
  590. package/dist/components/Popover/popover.attributes.d.ts +32 -0
  591. package/dist/components/Popover/popover.attributes.js +28 -0
  592. package/dist/components/Popover/popover.claims.d.ts +19 -0
  593. package/dist/components/Popover/popover.claims.js +45 -0
  594. package/dist/components/Popover/popover.mcp.d.ts +1 -1
  595. package/dist/components/Popover/popover.mcp.js +163 -31
  596. package/dist/components/Popover/popover.position.d.ts +226 -0
  597. package/dist/components/Popover/popover.position.js +402 -0
  598. package/dist/components/Popover/popover.props.d.ts +179 -24
  599. package/dist/components/Popover/popover.state.svelte.d.ts +169 -37
  600. package/dist/components/Popover/popover.state.svelte.js +1034 -194
  601. package/dist/components/Popover/popover.theme.d.ts +15 -0
  602. package/dist/components/Popover/popover.theme.js +27 -2
  603. package/dist/components/PopupMenu/PopupMenu.svelte +193 -22
  604. package/dist/components/PopupMenu/PopupMenu.svelte.d.ts +2 -2
  605. package/dist/components/PopupMenu/popupMenu.context.d.ts +42 -0
  606. package/dist/components/PopupMenu/popupMenu.context.js +52 -0
  607. package/dist/components/PopupMenu/popupMenu.mcp.d.ts +1 -1
  608. package/dist/components/PopupMenu/popupMenu.mcp.js +46 -6
  609. package/dist/components/PopupMenu/popupMenu.props.d.ts +29 -2
  610. package/dist/components/Progress/Progress.svelte +160 -0
  611. package/dist/components/Progress/Progress.svelte.d.ts +4 -0
  612. package/dist/components/Progress/index.d.ts +3 -0
  613. package/dist/components/Progress/index.js +2 -0
  614. package/dist/components/Progress/progress.mcp.d.ts +1 -0
  615. package/dist/components/Progress/progress.mcp.js +101 -0
  616. package/dist/components/Progress/progress.props.d.ts +79 -0
  617. package/dist/components/Progress/progress.props.js +1 -0
  618. package/dist/components/Progress/progress.theme.d.ts +129 -0
  619. package/dist/components/Progress/progress.theme.js +83 -0
  620. package/dist/components/ProgressCircle/ProgressCircle.svelte +51 -6
  621. package/dist/components/ProgressCircle/progressCircle.mcp.d.ts +1 -1
  622. package/dist/components/ProgressCircle/progressCircle.mcp.js +18 -4
  623. package/dist/components/ProgressCircle/progressCircle.props.d.ts +32 -2
  624. package/dist/components/ProgressCircle/progressCircle.theme.d.ts +15 -3
  625. package/dist/components/ProgressCircle/progressCircle.theme.js +7 -2
  626. package/dist/components/RichTextInput/RichTextInput.svelte +19 -1
  627. package/dist/components/RichTextInput/RichTextInputChrome.svelte +5 -1
  628. package/dist/components/RichTextInput/RichTextInputChrome.svelte.d.ts +2 -0
  629. package/dist/components/RichTextInput/RichTextInputViewport.svelte +3 -1
  630. package/dist/components/RichTextInput/RichTextInputViewport.svelte.d.ts +1 -0
  631. package/dist/components/RichTextInput/richTextInput.mcp.d.ts +1 -1
  632. package/dist/components/RichTextInput/richTextInput.mcp.js +1 -0
  633. package/dist/components/RichTextInput/suggestions.js +2 -0
  634. package/dist/components/ScrollArea/ScrollArea.svelte +166 -27
  635. package/dist/components/ScrollArea/index.d.ts +2 -1
  636. package/dist/components/ScrollArea/index.js +1 -0
  637. package/dist/components/ScrollArea/scrollArea.attributes.d.ts +25 -0
  638. package/dist/components/ScrollArea/scrollArea.attributes.js +21 -0
  639. package/dist/components/ScrollArea/scrollArea.mcp.d.ts +1 -1
  640. package/dist/components/ScrollArea/scrollArea.mcp.js +47 -3
  641. package/dist/components/ScrollArea/scrollArea.props.d.ts +33 -6
  642. package/dist/components/ScrollArea/scrollArea.svelte.d.ts +56 -12
  643. package/dist/components/ScrollArea/scrollArea.svelte.js +281 -71
  644. package/dist/components/ScrollArea/scrollArea.theme.js +5 -2
  645. package/dist/components/SegmentedControl/SegmentedControl.svelte +4 -3
  646. package/dist/components/SegmentedControl/segmentedControl.mcp.d.ts +1 -1
  647. package/dist/components/SegmentedControl/segmentedControl.mcp.js +3 -2
  648. package/dist/components/SelectionMenu/SelectionMenu.svelte +4 -2
  649. package/dist/components/Sidebar/SidebarAction.svelte +13 -3
  650. package/dist/components/Sidebar/SidebarAction.svelte.d.ts +2 -1
  651. package/dist/components/Sidebar/SidebarActivityBar.svelte +14 -7
  652. package/dist/components/Sidebar/SidebarFlyout.svelte +97 -0
  653. package/dist/components/Sidebar/SidebarFlyout.svelte.d.ts +32 -0
  654. package/dist/components/Sidebar/SidebarGroup.svelte +39 -15
  655. package/dist/components/Sidebar/SidebarMenuButton.svelte +6 -3
  656. package/dist/components/Sidebar/SidebarMenuItem.svelte +134 -31
  657. package/dist/components/Sidebar/SidebarMenuSubItem.svelte +30 -14
  658. package/dist/components/Sidebar/SidebarTreeNode.svelte +41 -61
  659. package/dist/components/Sidebar/index.d.ts +1 -0
  660. package/dist/components/Sidebar/index.js +1 -0
  661. package/dist/components/Sidebar/sidebar-position.d.ts +37 -2
  662. package/dist/components/Sidebar/sidebar-position.js +31 -2
  663. package/dist/components/Sidebar/sidebar.attributes.d.ts +33 -0
  664. package/dist/components/Sidebar/sidebar.attributes.js +29 -0
  665. package/dist/components/Sidebar/sidebar.mcp.d.ts +1 -1
  666. package/dist/components/Sidebar/sidebar.mcp.js +45 -10
  667. package/dist/components/Sidebar/sidebar.props.d.ts +28 -7
  668. package/dist/components/Sidebar/sidebar.theme.d.ts +51 -21
  669. package/dist/components/Sidebar/sidebar.theme.js +113 -62
  670. package/dist/components/Sidebar/sidebar.views.svelte.js +11 -18
  671. package/dist/components/Stepper/Stepper.svelte +2 -0
  672. package/dist/components/Stepper/stepper.mcp.d.ts +1 -1
  673. package/dist/components/Stepper/stepper.mcp.js +1 -0
  674. package/dist/components/Stepper/stepper.props.d.ts +5 -0
  675. package/dist/components/Stepper/stepper.state.svelte.d.ts +2 -0
  676. package/dist/components/Stepper/stepper.state.svelte.js +31 -12
  677. package/dist/components/Tabbar/Tabbar.svelte +55 -16
  678. package/dist/components/Tabbar/index.d.ts +1 -1
  679. package/dist/components/Tabbar/tabbar.mcp.d.ts +1 -1
  680. package/dist/components/Tabbar/tabbar.mcp.js +26 -9
  681. package/dist/components/Tabbar/tabbar.props.d.ts +34 -5
  682. package/dist/components/Tabbar/tabbar.selection.svelte.d.ts +79 -0
  683. package/dist/components/Tabbar/tabbar.selection.svelte.js +99 -0
  684. package/dist/components/TableOfContents/tableOfContents.state.svelte.js +9 -7
  685. package/dist/components/Tabs/Tabs.svelte +73 -16
  686. package/dist/components/Tabs/index.d.ts +2 -1
  687. package/dist/components/Tabs/tabs.direction.svelte.d.ts +25 -0
  688. package/dist/components/Tabs/tabs.direction.svelte.js +40 -0
  689. package/dist/components/Tabs/tabs.mcp.d.ts +1 -1
  690. package/dist/components/Tabs/tabs.mcp.js +22 -4
  691. package/dist/components/Tabs/tabs.props.d.ts +39 -12
  692. package/dist/components/Tabs/tabs.theme.js +3 -1
  693. package/dist/components/Theme/Theme.svelte +44 -27
  694. package/dist/components/Theme/helper.d.ts +16 -2
  695. package/dist/components/Theme/helper.js +46 -4
  696. package/dist/components/Theme/theme.mcp.d.ts +1 -1
  697. package/dist/components/Theme/theme.mcp.js +103 -0
  698. package/dist/components/Theme/theme.props.d.ts +16 -0
  699. package/dist/components/Theme/theme.state.svelte.d.ts +14 -1
  700. package/dist/components/Theme/theme.state.svelte.js +18 -1
  701. package/dist/components/Toast/Toast.svelte +184 -39
  702. package/dist/components/Toast/Toaster.svelte +14 -10
  703. package/dist/components/Toast/index.d.ts +1 -0
  704. package/dist/components/Toast/toast.mcp.d.ts +1 -1
  705. package/dist/components/Toast/toast.mcp.js +47 -6
  706. package/dist/components/Toast/toast.state.svelte.d.ts +172 -6
  707. package/dist/components/Toast/toast.state.svelte.js +513 -68
  708. package/dist/components/Toast/toast.theme.js +1 -1
  709. package/dist/components/ToggleButton/ToggleButton.svelte +23 -1
  710. package/dist/components/ToggleButton/toggleButton.mcp.d.ts +1 -1
  711. package/dist/components/ToggleButton/toggleButton.mcp.js +3 -1
  712. package/dist/components/ToggleButton/toggleButton.props.d.ts +13 -1
  713. package/dist/components/ToggleButton/toggleButton.theme.d.ts +12 -0
  714. package/dist/components/ToggleButton/toggleButton.theme.js +15 -3
  715. package/dist/components/ToggleButtonGroup/ToggleButtonGroup.svelte +29 -9
  716. package/dist/components/ToggleButtonGroup/index.d.ts +1 -1
  717. package/dist/components/ToggleButtonGroup/toggleButtonGroup.mcp.d.ts +1 -1
  718. package/dist/components/ToggleButtonGroup/toggleButtonGroup.mcp.js +5 -2
  719. package/dist/components/ToggleButtonGroup/toggleButtonGroup.props.d.ts +19 -1
  720. package/dist/components/ToggleButtonGroup/toggleButtonGroup.theme.d.ts +12 -0
  721. package/dist/components/ToggleButtonGroup/toggleButtonGroup.theme.js +21 -2
  722. package/dist/components/ToggleMenu/ToggleMenu.svelte +57 -43
  723. package/dist/components/ToggleMenu/ToggleMenuGroup.svelte +1 -0
  724. package/dist/components/ToggleMenu/ToggleMenuMenu.svelte +9 -3
  725. package/dist/components/ToggleMenu/ToggleMenuRadioGroup.svelte +7 -2
  726. package/dist/components/ToggleMenu/toggleMenu.mcp.d.ts +1 -1
  727. package/dist/components/ToggleMenu/toggleMenu.mcp.js +3 -2
  728. package/dist/components/ToggleMenu/toggleMenu.props.d.ts +4 -1
  729. package/dist/components/Tooltip/Tooltip.svelte +4 -12
  730. package/dist/components/Tooltip/TooltipHost.svelte +136 -15
  731. package/dist/components/Tooltip/index.d.ts +1 -0
  732. package/dist/components/Tooltip/index.js +1 -0
  733. package/dist/components/Tooltip/tooltip.attachment.svelte.d.ts +5 -0
  734. package/dist/components/Tooltip/tooltip.attachment.svelte.js +215 -33
  735. package/dist/components/Tooltip/tooltip.attributes.d.ts +32 -0
  736. package/dist/components/Tooltip/tooltip.attributes.js +28 -0
  737. package/dist/components/Tooltip/tooltip.mcp.d.ts +1 -1
  738. package/dist/components/Tooltip/tooltip.mcp.js +111 -10
  739. package/dist/components/Tooltip/tooltip.props.d.ts +33 -2
  740. package/dist/components/Tooltip/tooltip.surface.d.ts +24 -0
  741. package/dist/components/Tooltip/tooltip.surface.js +42 -0
  742. package/dist/components/Tree/TreeContextMenuSurface.svelte +16 -3
  743. package/dist/components/Utils/BeforeHydratation.svelte +14 -3
  744. package/dist/components/Utils/BeforeHydratation.svelte.d.ts +2 -0
  745. package/dist/components/VideoPlayer/VideoPlayer.svelte.d.ts +1 -1
  746. package/dist/components/VideoPlayer/VideoPlayerSettings.svelte +2 -0
  747. package/dist/generated/componentAliases.d.ts +3 -0
  748. package/dist/generated/componentAliases.js +3 -0
  749. package/dist/generated/componentContract.d.ts +79 -34
  750. package/dist/generated/componentContract.js +231 -6
  751. package/dist/generated/componentMcpRegistry.js +6 -0
  752. package/dist/i18n/ar.js +107 -3
  753. package/dist/i18n/context.svelte.d.ts +6 -0
  754. package/dist/i18n/context.svelte.js +12 -0
  755. package/dist/i18n/de.js +101 -3
  756. package/dist/i18n/en.d.ts +91 -2
  757. package/dist/i18n/en.js +101 -3
  758. package/dist/i18n/es.js +101 -3
  759. package/dist/i18n/fr.js +101 -3
  760. package/dist/i18n/ja.js +101 -3
  761. package/dist/i18n/pt.js +101 -3
  762. package/dist/i18n/zh.js +101 -3
  763. package/dist/tailwind/geometry.js +7 -0
  764. package/dist/tailwind/global.js +31 -0
  765. package/dist/types/index.d.ts +1 -0
  766. package/dist/types/types.mcp.d.ts +1 -1
  767. package/dist/types/types.mcp.js +23 -0
  768. package/dist/utils/cspNonce.d.ts +16 -0
  769. package/dist/utils/cspNonce.js +39 -0
  770. package/dist/utils/cva/merge.d.ts +5 -1
  771. package/dist/utils/cva/merge.js +6 -4
  772. package/dist/utils/focus.d.ts +34 -0
  773. package/dist/utils/focus.js +93 -0
  774. package/dist/utils/focusHistory.d.ts +21 -0
  775. package/dist/utils/focusHistory.js +99 -0
  776. package/dist/utils/handlers.d.ts +7 -0
  777. package/dist/utils/handlers.js +14 -0
  778. package/dist/utils/hoverIntent.d.ts +42 -0
  779. package/dist/utils/hoverIntent.js +57 -0
  780. package/dist/utils/id.d.ts +7 -0
  781. package/dist/utils/id.js +15 -0
  782. package/dist/utils/layers.svelte.d.ts +32 -4
  783. package/dist/utils/layers.svelte.js +214 -21
  784. package/dist/utils/listFilter.d.ts +44 -0
  785. package/dist/utils/listFilter.js +130 -0
  786. package/dist/utils/match.d.ts +35 -0
  787. package/dist/utils/match.js +36 -0
  788. package/dist/utils/number.d.ts +126 -0
  789. package/dist/utils/number.js +401 -0
  790. package/dist/utils/openChange.d.ts +88 -0
  791. package/dist/utils/openChange.js +71 -0
  792. package/dist/utils/openLifecycle.svelte.d.ts +41 -0
  793. package/dist/utils/openLifecycle.svelte.js +134 -0
  794. package/dist/utils/pointerDrag.d.ts +10 -0
  795. package/dist/utils/pointerDrag.js +37 -2
  796. package/dist/utils/pragmaticDragAndDrop.d.ts +2 -1
  797. package/dist/utils/pragmaticDragAndDrop.js +8 -3
  798. package/dist/utils/range.d.ts +62 -0
  799. package/dist/utils/range.js +70 -0
  800. package/dist/utils/requestNativeSubmit.d.ts +17 -0
  801. package/dist/utils/requestNativeSubmit.js +47 -0
  802. package/dist/utils/safeArea.svelte.d.ts +10 -1
  803. package/dist/utils/safeArea.svelte.js +19 -11
  804. package/dist/utils/stateAttributes.d.ts +108 -0
  805. package/dist/utils/stateAttributes.js +78 -0
  806. package/dist/utils/swipeVelocity.d.ts +32 -0
  807. package/dist/utils/swipeVelocity.js +59 -0
  808. package/dist/utils/timer.svelte.d.ts +65 -2
  809. package/dist/utils/timer.svelte.js +159 -25
  810. package/dist/utils/trigger.d.ts +41 -0
  811. package/dist/utils/trigger.js +103 -0
  812. package/dist/utils/typeahead.d.ts +9 -0
  813. package/dist/utils/typeahead.js +21 -9
  814. package/dist/utils/useDndList.svelte.d.ts +1 -1
  815. package/dist/utils/useDndList.svelte.js +6 -23
  816. package/dist/utils/useFocusScope.svelte.d.ts +29 -0
  817. package/dist/utils/useFocusScope.svelte.js +189 -27
  818. package/dist/utils/useHoverAction.svelte.d.ts +44 -4
  819. package/dist/utils/useHoverAction.svelte.js +161 -51
  820. package/dist/utils/useKeyDown.svelte.d.ts +19 -2
  821. package/dist/utils/useKeyDown.svelte.js +19 -12
  822. package/dist/utils/useListNavigation.svelte.d.ts +94 -13
  823. package/dist/utils/useListNavigation.svelte.js +261 -35
  824. package/dist/utils/useLiveAnnouncer.svelte.d.ts +77 -2
  825. package/dist/utils/useLiveAnnouncer.svelte.js +119 -2
  826. package/dist/utils/useNavigation.svelte.d.ts +36 -3
  827. package/dist/utils/useNavigation.svelte.js +699 -332
  828. package/dist/utils/usePressAndHold.svelte.d.ts +38 -0
  829. package/dist/utils/usePressAndHold.svelte.js +191 -0
  830. package/dist/utils/useScrollLock.svelte.d.ts +20 -1
  831. package/dist/utils/useScrollLock.svelte.js +54 -13
  832. package/dist/utils/useSlidingIndicator.svelte.d.ts +2 -0
  833. package/dist/utils/useSlidingIndicator.svelte.js +27 -5
  834. package/dist/utils/useTabBridge.svelte.d.ts +20 -0
  835. package/dist/utils/useTabBridge.svelte.js +109 -0
  836. package/dist/utils/values.d.ts +15 -0
  837. package/dist/utils/values.js +49 -0
  838. package/package.json +31 -2
  839. package/dist/generated/componentMcpRegistry.d.ts +0 -142
  840. package/dist/utils/useDrag.svelte.d.ts +0 -11
  841. package/dist/utils/useDrag.svelte.js +0 -55
@@ -1,27 +1,23 @@
1
1
  <script lang="ts" module>
2
+ // Assistant replies are flat prose of varying length; user turns are short bubbles.
2
3
  const assistantRows = [
3
- { primary: 'w-4/5 max-w-lg', secondary: 'w-2/3 max-w-md', tertiary: 'w-1/2 max-w-sm' },
4
- { primary: 'w-3/4 max-w-xl', secondary: 'w-4/5 max-w-lg', tertiary: 'w-2/5 max-w-xs' },
5
- { primary: 'w-2/3 max-w-md', secondary: 'w-1/2 max-w-sm', tertiary: 'w-3/5 max-w-md' }
6
- ] as const;
7
- const userRows = [
8
- { primary: 'w-2/5 max-w-sm', secondary: 'w-1/3 max-w-xs' },
9
- { primary: 'w-1/2 max-w-md', secondary: 'w-1/4 max-w-40' }
4
+ ['w-full', 'w-11/12', 'w-3/5'],
5
+ ['w-full', 'w-4/5'],
6
+ ['w-full', 'w-full', 'w-10/12', 'w-2/5']
10
7
  ] as const;
11
8
 
12
9
  function createSkeletonRows(messageCount: number) {
13
10
  const finiteCount = Number.isFinite(messageCount) ? messageCount : 4;
14
11
  const count = Math.min(8, Math.max(1, Math.trunc(finiteCount)));
15
- return Array.from({ length: count }, (_, index) => {
16
- if (index % 3 === 1) {
17
- return { id: index, side: 'user' as const, layout: userRows[index % userRows.length]! };
18
- }
19
- return {
20
- id: index,
21
- side: 'assistant' as const,
22
- layout: assistantRows[index % assistantRows.length]!
23
- };
24
- });
12
+ return Array.from({ length: count }, (_, index) =>
13
+ index % 2 === 0
14
+ ? { id: index, side: 'user' as const, lines: [] as readonly string[] }
15
+ : {
16
+ id: index,
17
+ side: 'assistant' as const,
18
+ lines: assistantRows[Math.floor(index / 2) % assistantRows.length]!
19
+ }
20
+ );
25
21
  }
26
22
  </script>
27
23
 
@@ -37,6 +33,7 @@
37
33
  showHeader = false,
38
34
  showComposer = true,
39
35
  showFooter = false,
36
+ contentWidth = '48rem',
40
37
  role = 'status',
41
38
  'aria-label': label,
42
39
  'aria-busy': ariaBusy = 'true',
@@ -47,6 +44,9 @@
47
44
  const t = $derived(useI18n());
48
45
  const rows = $derived(createSkeletonRows(messageCount));
49
46
  const classes = $derived(useAIChatTheme(theme));
47
+ const resolvedContentWidth = $derived(
48
+ typeof contentWidth === 'number' ? `${contentWidth}px` : contentWidth
49
+ );
50
50
  </script>
51
51
 
52
52
  <div
@@ -57,6 +57,7 @@
57
57
  aria-label={label ?? t.aiChatConnecting}
58
58
  aria-busy={ariaBusy}
59
59
  class={classes.root({ className })}
60
+ style:--ai-chat-content-width={resolvedContentWidth}
60
61
  >
61
62
  {#if showHeader}
62
63
  <div data-slot="ai-chat-skeleton-header" aria-hidden="true" class={classes.header()}>
@@ -74,20 +75,12 @@
74
75
  <div class={classes.skeletonMessages()}>
75
76
  {#each rows as row (row.id)}
76
77
  {#if row.side === 'user'}
77
- <div class="flex justify-end">
78
- <div class="flex w-full max-w-[82%] flex-col items-end gap-2">
79
- <Skeleton class={`h-4 ${row.layout.primary}`} />
80
- <Skeleton class={`h-4 ${row.layout.secondary}`} />
81
- </div>
82
- </div>
78
+ <Skeleton data-slot="ai-chat-skeleton-user" class={classes.skeletonUser()} />
83
79
  {:else}
84
- <div class="flex gap-3">
85
- <Skeleton class="size-8 shrink-0 rounded-full" />
86
- <div class="flex min-w-0 flex-1 flex-col gap-2 pt-1">
87
- <Skeleton class={`h-4 ${row.layout.primary}`} />
88
- <Skeleton class={`h-4 ${row.layout.secondary}`} />
89
- <Skeleton class={`h-4 ${row.layout.tertiary}`} />
90
- </div>
80
+ <div data-slot="ai-chat-skeleton-assistant" class={classes.skeletonAssistant()}>
81
+ {#each row.lines as width, line (line)}
82
+ <Skeleton class={`h-4 ${width}`} />
83
+ {/each}
91
84
  </div>
92
85
  {/if}
93
86
  {/each}
@@ -96,15 +89,14 @@
96
89
 
97
90
  {#if showComposer}
98
91
  <div data-slot="ai-chat-skeleton-composer" aria-hidden="true" class={classes.composer()}>
99
- <div class="grid min-h-24 gap-3">
100
- <Skeleton class="h-4 w-3/4" />
92
+ <div class={classes.skeletonComposer()}>
101
93
  <Skeleton class="h-4 w-1/2" />
102
- <div class="mt-2 flex items-center justify-between gap-3">
103
- <div class="flex min-w-0 items-center gap-2">
104
- <Skeleton class="size-8" />
105
- <Skeleton class="h-8 w-24" />
94
+ <div class="flex items-center justify-between gap-3">
95
+ <Skeleton class="size-7 rounded-md" />
96
+ <div class="flex items-center gap-2">
97
+ <Skeleton class="h-7 w-20 rounded-md" />
98
+ <Skeleton class="size-7 rounded-md" />
106
99
  </div>
107
- <Skeleton class="size-8 shrink-0" />
108
100
  </div>
109
101
  </div>
110
102
  </div>
@@ -26,6 +26,9 @@
26
26
  | 'density'
27
27
  | 'messageSize'
28
28
  | 'messageVariant'
29
+ | 'messageColor'
30
+ | 'contentWidth'
31
+ | 'showFollowUps'
29
32
  | 'messageActions'
30
33
  | 'messageActionsVisibility'
31
34
  | 'messageCopyable'
@@ -59,6 +62,8 @@
59
62
  | 'onQueuedMessageEditCancel'
60
63
  | 'onQueuedMessageReorder'
61
64
  | 'onSteer'
65
+ | 'submitShortcut'
66
+ | 'toolbar'
62
67
  | 'header'
63
68
  | 'beforeThread'
64
69
  | 'controls'
@@ -95,6 +100,9 @@
95
100
  density,
96
101
  messageSize,
97
102
  messageVariant,
103
+ messageColor,
104
+ contentWidth = '48rem',
105
+ showFollowUps,
98
106
  messageActions,
99
107
  messageActionsVisibility,
100
108
  messageCopyable,
@@ -128,6 +136,8 @@
128
136
  onQueuedMessageEditCancel,
129
137
  onQueuedMessageReorder,
130
138
  onSteer,
139
+ submitShortcut,
140
+ toolbar,
131
141
  header,
132
142
  beforeThread,
133
143
  controls,
@@ -153,6 +163,12 @@
153
163
  let composerSurface = $state<{ focus: () => void }>();
154
164
  const classes = $derived(useAIChatTheme(theme));
155
165
  const t = $derived(useI18n());
166
+ const resolvedContentWidth = $derived(
167
+ typeof contentWidth === 'number' ? `${contentWidth}px` : contentWidth
168
+ );
169
+ // The default thread shows the error as a row where the reply failed, with a Retry button. An
170
+ // `errorRegion` replacement, or a replaced thread, keeps the error above the transcript.
171
+ const errorInThread = $derived(!errorRegion && !thread);
156
172
 
157
173
  function displayError(value: unknown): string {
158
174
  if (value instanceof Error && value.message) return value.message;
@@ -164,13 +180,20 @@
164
180
  {#if children}
165
181
  <Slot render={children} payload={conversation} />
166
182
  {:else}
167
- <div bind:this={ref} data-slot="ai-chat" class={classes.root({ className })} {...attachments}>
183
+ <div
184
+ bind:this={ref}
185
+ data-slot="ai-chat"
186
+ data-density={density === 'compact' || density === 'comfortable' ? density : 'normal'}
187
+ class={classes.root({ className })}
188
+ {...attachments}
189
+ style:--ai-chat-content-width={resolvedContentWidth}
190
+ >
168
191
  {#if header}
169
192
  <div data-slot="ai-chat-header" class={classes.header()}>
170
193
  <Slot render={header} payload={conversation} />
171
194
  </div>
172
195
  {/if}
173
- {#if conversation.error !== undefined}
196
+ {#if conversation.error !== undefined && !errorInThread}
174
197
  <div data-slot="ai-chat-error" class={classes.error()}>
175
198
  {#if errorRegion}
176
199
  <Slot render={errorRegion} payload={conversation} />
@@ -203,6 +226,9 @@
203
226
  {density}
204
227
  {messageSize}
205
228
  {messageVariant}
229
+ {messageColor}
230
+ {showFollowUps}
231
+ showError={errorInThread}
206
232
  {messageActions}
207
233
  {messageActionsVisibility}
208
234
  {messageCopyable}
@@ -257,6 +283,8 @@
257
283
  {onQueuedMessageEditCancel}
258
284
  {onQueuedMessageReorder}
259
285
  {onSteer}
286
+ {submitShortcut}
287
+ {toolbar}
260
288
  {theme}
261
289
  />
262
290
  {#if footer}
@@ -2,7 +2,7 @@ import type { WithAttachments } from '../../types/props.js';
2
2
  import type { AIConversationState } from '../AIConversation/aiConversation.state.svelte.js';
3
3
  import type { AIThreadItem } from '../AIThread/aiThread.props.js';
4
4
  import type { AIChatProps } from './aiChat.props.js';
5
- type Props<TMessage extends AIThreadItem> = WithAttachments<Pick<AIChatProps<TMessage>, 'ref' | 'queue' | 'models' | 'modelGroups' | 'maxTokens' | 'showContext' | 'showModelSelector' | 'showToc' | 'tocSide' | 'density' | 'messageSize' | 'messageVariant' | 'messageActions' | 'messageActionsVisibility' | 'messageCopyable' | 'messageEditable' | 'messageRetryable' | 'onMessageCopy' | 'onMessageEdit' | 'onMessageRetry' | 'disabled' | 'queueWhileBusy' | 'fileDropzone' | 'fileMultiple' | 'accept' | 'maxFiles' | 'maxFileSize' | 'commands' | 'mentions' | 'references' | 'skills' | 'onSelect' | 'onFilesRejected' | 'onFileReject' | 'onAttachmentAdd' | 'onAttachmentRetry' | 'onAttachmentRemove' | 'onQueueChange' | 'onQueuedMessageAdd' | 'onQueuedMessageCancel' | 'onQueuedMessageEditStart' | 'onQueuedMessageEditCommit' | 'onQueuedMessageEditCancel' | 'onQueuedMessageReorder' | 'onSteer' | 'header' | 'beforeThread' | 'controls' | 'context' | 'modelSelector' | 'children' | 'thread' | 'afterThread' | 'errorRegion' | 'empty' | 'message' | 'tool' | 'marker' | 'suggestionsRegion' | 'toc' | 'composer' | 'footer' | 'class' | 'theme'> & {
5
+ type Props<TMessage extends AIThreadItem> = WithAttachments<Pick<AIChatProps<TMessage>, 'ref' | 'queue' | 'models' | 'modelGroups' | 'maxTokens' | 'showContext' | 'showModelSelector' | 'showToc' | 'tocSide' | 'density' | 'messageSize' | 'messageVariant' | 'messageColor' | 'contentWidth' | 'showFollowUps' | 'messageActions' | 'messageActionsVisibility' | 'messageCopyable' | 'messageEditable' | 'messageRetryable' | 'onMessageCopy' | 'onMessageEdit' | 'onMessageRetry' | 'disabled' | 'queueWhileBusy' | 'fileDropzone' | 'fileMultiple' | 'accept' | 'maxFiles' | 'maxFileSize' | 'commands' | 'mentions' | 'references' | 'skills' | 'onSelect' | 'onFilesRejected' | 'onFileReject' | 'onAttachmentAdd' | 'onAttachmentRetry' | 'onAttachmentRemove' | 'onQueueChange' | 'onQueuedMessageAdd' | 'onQueuedMessageCancel' | 'onQueuedMessageEditStart' | 'onQueuedMessageEditCommit' | 'onQueuedMessageEditCancel' | 'onQueuedMessageReorder' | 'onSteer' | 'submitShortcut' | 'toolbar' | 'header' | 'beforeThread' | 'controls' | 'context' | 'modelSelector' | 'children' | 'thread' | 'afterThread' | 'errorRegion' | 'empty' | 'message' | 'tool' | 'marker' | 'suggestionsRegion' | 'toc' | 'composer' | 'footer' | 'class' | 'theme'> & {
6
6
  conversation: AIConversationState<TMessage>;
7
7
  }>;
8
8
  declare function $$render<TMessage extends AIThreadItem = AIThreadItem>(): {
@@ -24,6 +24,8 @@
24
24
  | 'density'
25
25
  | 'messageSize'
26
26
  | 'messageVariant'
27
+ | 'messageColor'
28
+ | 'showFollowUps'
27
29
  | 'messageActions'
28
30
  | 'messageActionsVisibility'
29
31
  | 'messageCopyable'
@@ -37,6 +39,8 @@
37
39
  > & {
38
40
  conversation: AIConversationState<TMessage>;
39
41
  onComposerFocus?: () => void;
42
+ /** Shows the conversation error as a transcript row. */
43
+ showError?: boolean;
40
44
  };
41
45
 
42
46
  let {
@@ -52,7 +56,10 @@
52
56
  tocSide = 'right',
53
57
  density = 'normal',
54
58
  messageSize = 'normal',
55
- messageVariant = 'bubble',
59
+ messageVariant = 'minimal',
60
+ messageColor,
61
+ showFollowUps = true,
62
+ showError = true,
56
63
  messageActions,
57
64
  messageActionsVisibility,
58
65
  messageCopyable = true,
@@ -114,6 +121,9 @@
114
121
  {density}
115
122
  {messageSize}
116
123
  {messageVariant}
124
+ {messageColor}
125
+ {showFollowUps}
126
+ {showError}
117
127
  {messageActions}
118
128
  {messageActionsVisibility}
119
129
  {messageCopyable}
@@ -1,9 +1,11 @@
1
1
  import type { AIConversationState } from '../AIConversation/aiConversation.state.svelte.js';
2
2
  import type { AIThreadItem } from '../AIThread/aiThread.props.js';
3
3
  import type { AIChatProps } from './aiChat.props.js';
4
- type Props<TMessage extends AIThreadItem> = Pick<AIChatProps<TMessage>, 'thread' | 'empty' | 'message' | 'tool' | 'marker' | 'suggestionsRegion' | 'toc' | 'showToc' | 'tocSide' | 'density' | 'messageSize' | 'messageVariant' | 'messageActions' | 'messageActionsVisibility' | 'messageCopyable' | 'messageEditable' | 'messageRetryable' | 'onMessageCopy' | 'onMessageEdit' | 'onMessageRetry' | 'onSelect' | 'theme'> & {
4
+ type Props<TMessage extends AIThreadItem> = Pick<AIChatProps<TMessage>, 'thread' | 'empty' | 'message' | 'tool' | 'marker' | 'suggestionsRegion' | 'toc' | 'showToc' | 'tocSide' | 'density' | 'messageSize' | 'messageVariant' | 'messageColor' | 'showFollowUps' | 'messageActions' | 'messageActionsVisibility' | 'messageCopyable' | 'messageEditable' | 'messageRetryable' | 'onMessageCopy' | 'onMessageEdit' | 'onMessageRetry' | 'onSelect' | 'theme'> & {
5
5
  conversation: AIConversationState<TMessage>;
6
6
  onComposerFocus?: () => void;
7
+ /** Shows the conversation error as a transcript row. */
8
+ showError?: boolean;
7
9
  };
8
10
  declare function $$render<TMessage extends AIThreadItem = AIThreadItem>(): {
9
11
  props: Props<TMessage>;
@@ -1 +1 @@
1
- export declare const aiChatDescription = "\n# AIChat\n\nAssembled AI conversation surface built from AIConversation, AIThread, AIComposer, AIContext, AIModelSelector, and AIAskUserQuestion. It owns no transport.\n\n## Requires\n\nAIChat renders AIComposer, which is built on Lexical. Those packages are optional peer dependencies of entasis, so install them alongside it:\n\n`pnpm add lexical @lexical/history @lexical/link @lexical/list @lexical/markdown @lexical/rich-text @lexical/selection @lexical/utils`\n\n## Import\n\n```svelte\n<script lang=\"ts\">\n import { AIChat, AIChatSkeleton, type AIChatProps } from './index.ts';\n</script>\n```\n\n## Basic usage\n\n```svelte\n<AIChat\n bind:api\n bind:messages\n bind:selectedModel\n {models}\n {contextUsage}\n {suggestions}\n onSubmit={({ message, meta, conversation }) => sendMessage(message, meta, conversation)}\n onStop={(payload) => stopGeneration(payload)}\n/>\n```\n\nAIChat exposes every AIConversation bindable and event: `api` (the conversation instance handle), `status`, `error`, `messages`, `queuedMessage`, `currentInput`, `files`, `attachments`, `liveText`, `suggestions`, `contextUsage`, `selectedModel`, `streaming`, `activeAskUserQuestion`, `labels`, and all conversation mutation/lifecycle callbacks. `queue` is the bindable ordered AIComposer queue.\n\n## Regions\n\nProduct-level snippets receive the central `AIConversationState` instance directly:\n\n- `children` replaces the complete default surface while retaining the provider.\n- `header`, `beforeThread`, `thread`, `afterThread`, `composer`, and `footer` replace or insert complete surface regions.\n- `errorRegion` replaces the default error alert.\n- `context` and `modelSelector` replace their individual composer controls; `controls` replaces both together.\n- `empty` replaces the transcript empty state; `suggestionsRegion` replaces suggestions inside that empty state.\n- `message`, `tool`, and `marker` customize transcript renderers with their row payloads.\n Message payloads include the thread-resolved `actionsVisibility` value so custom AIMessage\n composition does not make intermediate actions permanently visible.\n- `toc` receives the complete `AIThreadTocState`.\n\n```svelte\n<AIChat {messages} {models}>\n {#snippet beforeThread(state)}\n\t<div>{state.status}</div>\n {/snippet}\n\n {#snippet context(state)}\n\t<span>{state.contextUsage?.totalTokens ?? 0} tokens</span>\n {/snippet}\n\n {#snippet afterThread(state)}\n\t<div>{state.messages.length} messages</div>\n {/snippet}\n</AIChat>\n```\n\n## Thread controls\n\nUse `density` for transcript spacing, `messageSize` for the default message scale, and\n`messageVariant` (`bubble` or `minimal`) for default message presentation. Use `showToc`,\n`tocSide`, and `toc` for user-turn navigation. Custom message snippets own their message\npresentation. Configure advanced virtualizer tuning on `AIThread` through direct composition.\n\nUse `messageActions`, `messageActionsVisibility` (`hover`, `always`, or `none`), `messageCopyable`, `messageEditable`, `messageRetryable`, `onMessageCopy`, `onMessageEdit`, and `onMessageRetry` for default message actions. Explicit message-action callbacks take precedence over conversation fallbacks.\nIntermediate assistant segments that continue through tools into another assistant segment omit the\naction region; actions attach to the terminal assistant response for the turn.\n\n## Context and model controls\n\n`models` and `modelGroups` populate the default selector. `maxTokens` defaults to 128000. `showContext` and `showModelSelector` default to true; the model selector renders only when at least one model exists. Custom `context` and `modelSelector` snippets render regardless of those visibility flags. `controls` has precedence over both individual regions.\n\n## Composer behavior\n\nThe default AIComposer remains connected to the central conversation state. AIChat exposes product-level source, file, and queue behavior:\n\n- Queueing: `disabled`, `queueWhileBusy`, `queue`, `onQueueChange`, `onQueuedMessageAdd`, `onQueuedMessageCancel`, `onQueuedMessageEditStart`, `onQueuedMessageEditCommit`, `onQueuedMessageEditCancel`, `onQueuedMessageReorder`, and `onSteer`.\n- Files: `fileDropzone`, `fileMultiple`, `accept`, `maxFiles`, `maxFileSize`, `onFilesRejected`, `onFileReject`, `onAttachmentAdd`, `onAttachmentRetry`, and `onAttachmentRemove`. AIChat defaults `fileDropzone` to true.\n- Suggestions in the editor: `commands`, `mentions`, `references`, and `skills`.\nUse `AIConversation` with `AIThread` and `AIComposer` directly for editor formatting, toolbar, shortcut, and other primitive-level tuning.\n\nConversation `onSubmit`, `onStop`, and `onFilesChange` remain central state events rather than bypassing or duplicating the Composer path.\n\n## Questions and suggestions\n\nAn active `activeAskUserQuestion` replaces both a custom or default composer. The complete request is rendered with every question, initial values, title, requester, context, navigation labels, submit label, and discard label. Answers are retained by request key, and completion or dismissal resolves the captured request through `AIConversationState.resolveAskUserQuestion`.\n\nPrompt `suggestions` render only inside an empty transcript. An explicit `empty` region has precedence. An explicit `onSelect` callback -- the pick event for a suggestion -- has precedence over the default behavior; without it, picking a suggestion updates `currentInput` and focuses the default composer.\n\n## Skeleton\n\nAIChatSkeleton accepts native div attributes plus `messageCount`, `showHeader`, `showComposer`, `showFooter`, `class`, and `theme`. `messageCount` defaults to 4 and is clamped from 1 to 8. Header and footer default off; composer defaults on. The root defaults to `role=\"status\"`, `aria-label=\"Connecting chat\"`, and `aria-busy=\"true\"`, all overridable with native attributes.\n\n```svelte\n<AIChatSkeleton\n messageCount={6}\n showHeader\n showFooter\n aria-label=\"Loading support conversation\"\n/>\n```\n\n## Theme\n\nUse `theme` or `setAIChatTheme` to override `root`, `header`, `error`, `beforeThread`, `thread`, `afterThread`, `suggestions`, `composer`, `controls`, `footer`, and `skeletonMessages` parts.\n";
1
+ export declare const aiChatDescription = "\n# AIChat\n\nAssembled AI conversation surface built from AIConversation, AIThread, AIComposer, AIContext, AIModelSelector, and AIAskUserQuestion. It owns no transport.\n\n## Requires\n\nAIChat renders AIComposer, which is built on Lexical. Those packages are optional peer dependencies of entasis, so install them alongside it:\n\n`pnpm add lexical @lexical/history @lexical/link @lexical/list @lexical/markdown @lexical/rich-text @lexical/selection @lexical/utils`\n\n## Import\n\n```svelte\n<script lang=\"ts\">\n import { AIChat, AIChatSkeleton, type AIChatProps } from './index.ts';\n</script>\n```\n\n## Basic usage\n\n```svelte\n<AIChat\n bind:api\n bind:messages\n bind:selectedModel\n {models}\n {contextUsage}\n {suggestions}\n onSubmit={({ message, meta, conversation }) => sendMessage(message, meta, conversation)}\n onStop={(payload) => stopGeneration(payload)}\n/>\n```\n\nAIChat exposes every AIConversation bindable and event: `api` (the conversation instance handle), `status`, `error`, `messages`, `queuedMessage`, `currentInput`, `files`, `attachments`, `liveText`, `suggestions`, `contextUsage`, `selectedModel`, `streaming`, `activeAskUserQuestion`, `labels`, and all conversation mutation/lifecycle callbacks. `queue` is the bindable ordered AIComposer queue.\n\n## Regions\n\nProduct-level snippets receive the central `AIConversationState` instance directly:\n\n- `children` replaces the complete default surface while retaining the provider.\n- `header`, `beforeThread`, `thread`, `afterThread`, `composer`, and `footer` replace or insert complete surface regions.\n- `errorRegion` replaces the default error. Without it, a conversation `error` shows as a row at the end of the transcript, where the reply failed, with a Retry button that calls the conversation's `retry` on the last message (so `onRetry` receives `{ target: { index } }`) and clears the error. An empty transcript shows the error instead of the greeting. A replacement `errorRegion`, or a replaced `thread`, renders above the transcript.\n- `context` and `modelSelector` replace their individual composer controls; `controls` replaces both together.\n- `empty` replaces the transcript empty state (a vertically centred greeting with wrapping suggestion chips); `suggestionsRegion` replaces suggestions inside that empty state and turns off the follow-ups.\n- `message`, `tool`, and `marker` customize transcript renderers with their row payloads.\n Message payloads include the thread-resolved `actionsVisibility` value so custom AIMessage\n composition does not make intermediate actions permanently visible.\n- `toc` receives the complete `AIThreadTocState`.\n\n```svelte\n<AIChat {messages} {models}>\n {#snippet beforeThread(state)}\n\t<div>{state.status}</div>\n {/snippet}\n\n {#snippet context(state)}\n\t<span>{state.contextUsage?.totalTokens ?? 0} tokens</span>\n {/snippet}\n\n {#snippet afterThread(state)}\n\t<div>{state.messages.length} messages</div>\n {/snippet}\n</AIChat>\n```\n\n## Layout and thread controls\n\nThe transcript rows and the composer share one centred reading column. `contentWidth` (default\n`'48rem'`; a number is pixels, `'none'` spans the chat) sets the CSS variable\n`--ai-chat-content-width` on the root, which AIThread rows and AIComposer both read.\n\nUse `density` for transcript spacing, `messageSize` for the default message scale (normal reads\nat 14px, large at 16px), `messageVariant` (`minimal`, the default: flat full-width assistant prose; or\n`bubble`: framed assistant replies) and `messageColor` (the user bubble: `neutral` grey by\ndefault, any other role paints a solid bubble \u2014 `primary` gives the previous saturated look). Use\n`showToc`, `tocSide`, and `toc` for user-turn navigation; the table of contents steps aside\nin a thread narrower than 480px. Custom message snippets own their message presentation. Configure\nadvanced virtualizer tuning on `AIThread` through direct composition.\n\nWhile a reply streams and the last item is a user turn, the transcript shows a pending assistant\nrow (\"Thinking\u2026\" or `liveText`, with the `shimmer` utility); the streaming reply shows a caret.\nAI SDK `reasoning`, tool (including approval states), `source-url`/`source-document` and\n`file` parts render in the transcript, and an answered ask-user-question leaves a compact\nquestion \u2192 answer summary.\n\nUse `messageActions`, `messageActionsVisibility` (`latest`, the default, `hover`, `always`, or `none`), `messageCopyable`, `messageEditable`, `messageRetryable`, `onMessageCopy`, `onMessageEdit`, and `onMessageRetry` for default message actions. Explicit message-action callbacks take precedence over conversation fallbacks.\nA turn is one unit: reasoning, tools and text up to the next user message share a single action bar\nat the end of the turn, whose copy takes the whole turn's text. `latest` keeps the final assistant\nturn's bar visible and reveals the others on hover or focus; touch screens always show them. The\nbar of a reply that is still streaming appears when it ends.\n\n## Context and model controls\n\n`models` and `modelGroups` populate the default selector. The default context indicator renders only when there is something to measure: `maxTokens` is set or the conversation reports `contextUsage`. With usage but no `maxTokens`, the percentage is computed against 128000. `showContext` and `showModelSelector` default to true; the model selector renders only when at least one model exists. Custom `context` and `modelSelector` snippets render regardless of those visibility flags. `controls` has precedence over both individual regions. These controls render at the end of the composer footer, next to the send button.\n\n## Composer behavior\n\nThe default AIComposer remains connected to the central conversation state. AIChat exposes product-level source, file, and queue behavior:\n\n- Queueing: `disabled`, `queueWhileBusy`, `queue`, `onQueueChange`, `onQueuedMessageAdd`, `onQueuedMessageCancel`, `onQueuedMessageEditStart`, `onQueuedMessageEditCommit`, `onQueuedMessageEditCancel`, `onQueuedMessageReorder`, and `onSteer`.\n- Files: `fileDropzone`, `fileMultiple`, `accept`, `maxFiles`, `maxFileSize`, `onFilesRejected`, `onFileReject`, `onAttachmentAdd`, `onAttachmentRetry`, and `onAttachmentRemove`. AIChat defaults `fileDropzone` to true.\n- Suggestions in the editor: `commands`, `mentions`, `references`, and `skills`.\n- Editor: `submitShortcut` (AIComposer's default `'enter'`: Enter sends, Shift+Enter adds a line) and `toolbar` (AIComposer's default `'none'`).\nUse `AIConversation` with `AIThread` and `AIComposer` directly for other primitive-level tuning.\n\nConversation `onSubmit`, `onStop`, and `onFilesChange` remain central state events rather than bypassing or duplicating the Composer path.\n\n## Questions and suggestions\n\nAn active `activeAskUserQuestion` replaces both a custom or default composer. The complete request is rendered with every question, initial values, title, requester, context, navigation labels, submit label, and discard label. Answers are retained by request key, and completion or dismissal resolves the captured request through `AIConversationState.resolveAskUserQuestion`.\n\nPrompt `suggestions` render as chips under the empty-state greeting, then as follow-ups above the composer (one row that scrolls sideways on narrow screens) once an assistant turn has finished (not while streaming, during a question, or under an error); `showFollowUps={false}` keeps them to the empty state. An explicit `empty` region has precedence. An explicit `onSelect` callback -- the pick event for a suggestion -- has precedence over the default behavior; without it, picking a suggestion updates `currentInput` and focuses the default composer.\n\n## Skeleton\n\nAIChatSkeleton mirrors the default chat \u2014 user turns as end-aligned bubbles, assistant turns as flat lines, the composer as a bordered card, all in the centred column \u2014 so nothing jumps when the chat replaces it. It accepts native div attributes plus `messageCount`, `showHeader`, `showComposer`, `showFooter`, `contentWidth` (default `'48rem'`, match the chat's), `class`, and `theme`. `messageCount` defaults to 4 and is clamped from 1 to 8. Header and footer default off; composer defaults on. The root defaults to `role=\"status\"`, `aria-label=\"Connecting chat\"`, and `aria-busy=\"true\"`, all overridable with native attributes.\n\n```svelte\n<AIChatSkeleton\n messageCount={6}\n showHeader\n showFooter\n aria-label=\"Loading support conversation\"\n/>\n```\n\n## Theme\n\nUse `theme` or `setAIChatTheme` to override `root`, `header`, `error`, `beforeThread`, `thread`, `afterThread`, `suggestions`, `composer`, `controls`, `footer`, `skeletonMessages`, `skeletonUser`, `skeletonAssistant`, and `skeletonComposer` parts.\n";
@@ -40,9 +40,9 @@ Product-level snippets receive the central \`AIConversationState\` instance dire
40
40
 
41
41
  - \`children\` replaces the complete default surface while retaining the provider.
42
42
  - \`header\`, \`beforeThread\`, \`thread\`, \`afterThread\`, \`composer\`, and \`footer\` replace or insert complete surface regions.
43
- - \`errorRegion\` replaces the default error alert.
43
+ - \`errorRegion\` replaces the default error. Without it, a conversation \`error\` shows as a row at the end of the transcript, where the reply failed, with a Retry button that calls the conversation's \`retry\` on the last message (so \`onRetry\` receives \`{ target: { index } }\`) and clears the error. An empty transcript shows the error instead of the greeting. A replacement \`errorRegion\`, or a replaced \`thread\`, renders above the transcript.
44
44
  - \`context\` and \`modelSelector\` replace their individual composer controls; \`controls\` replaces both together.
45
- - \`empty\` replaces the transcript empty state; \`suggestionsRegion\` replaces suggestions inside that empty state.
45
+ - \`empty\` replaces the transcript empty state (a vertically centred greeting with wrapping suggestion chips); \`suggestionsRegion\` replaces suggestions inside that empty state and turns off the follow-ups.
46
46
  - \`message\`, \`tool\`, and \`marker\` customize transcript renderers with their row payloads.
47
47
  Message payloads include the thread-resolved \`actionsVisibility\` value so custom AIMessage
48
48
  composition does not make intermediate actions permanently visible.
@@ -64,20 +64,35 @@ Product-level snippets receive the central \`AIConversationState\` instance dire
64
64
  </AIChat>
65
65
  \`\`\`
66
66
 
67
- ## Thread controls
67
+ ## Layout and thread controls
68
68
 
69
- Use \`density\` for transcript spacing, \`messageSize\` for the default message scale, and
70
- \`messageVariant\` (\`bubble\` or \`minimal\`) for default message presentation. Use \`showToc\`,
71
- \`tocSide\`, and \`toc\` for user-turn navigation. Custom message snippets own their message
72
- presentation. Configure advanced virtualizer tuning on \`AIThread\` through direct composition.
69
+ The transcript rows and the composer share one centred reading column. \`contentWidth\` (default
70
+ \`'48rem'\`; a number is pixels, \`'none'\` spans the chat) sets the CSS variable
71
+ \`--ai-chat-content-width\` on the root, which AIThread rows and AIComposer both read.
73
72
 
74
- Use \`messageActions\`, \`messageActionsVisibility\` (\`hover\`, \`always\`, or \`none\`), \`messageCopyable\`, \`messageEditable\`, \`messageRetryable\`, \`onMessageCopy\`, \`onMessageEdit\`, and \`onMessageRetry\` for default message actions. Explicit message-action callbacks take precedence over conversation fallbacks.
75
- Intermediate assistant segments that continue through tools into another assistant segment omit the
76
- action region; actions attach to the terminal assistant response for the turn.
73
+ Use \`density\` for transcript spacing, \`messageSize\` for the default message scale (normal reads
74
+ at 14px, large at 16px), \`messageVariant\` (\`minimal\`, the default: flat full-width assistant prose; or
75
+ \`bubble\`: framed assistant replies) and \`messageColor\` (the user bubble: \`neutral\` grey by
76
+ default, any other role paints a solid bubble — \`primary\` gives the previous saturated look). Use
77
+ \`showToc\`, \`tocSide\`, and \`toc\` for user-turn navigation; the table of contents steps aside
78
+ in a thread narrower than 480px. Custom message snippets own their message presentation. Configure
79
+ advanced virtualizer tuning on \`AIThread\` through direct composition.
80
+
81
+ While a reply streams and the last item is a user turn, the transcript shows a pending assistant
82
+ row ("Thinking…" or \`liveText\`, with the \`shimmer\` utility); the streaming reply shows a caret.
83
+ AI SDK \`reasoning\`, tool (including approval states), \`source-url\`/\`source-document\` and
84
+ \`file\` parts render in the transcript, and an answered ask-user-question leaves a compact
85
+ question → answer summary.
86
+
87
+ Use \`messageActions\`, \`messageActionsVisibility\` (\`latest\`, the default, \`hover\`, \`always\`, or \`none\`), \`messageCopyable\`, \`messageEditable\`, \`messageRetryable\`, \`onMessageCopy\`, \`onMessageEdit\`, and \`onMessageRetry\` for default message actions. Explicit message-action callbacks take precedence over conversation fallbacks.
88
+ A turn is one unit: reasoning, tools and text up to the next user message share a single action bar
89
+ at the end of the turn, whose copy takes the whole turn's text. \`latest\` keeps the final assistant
90
+ turn's bar visible and reveals the others on hover or focus; touch screens always show them. The
91
+ bar of a reply that is still streaming appears when it ends.
77
92
 
78
93
  ## Context and model controls
79
94
 
80
- \`models\` and \`modelGroups\` populate the default selector. \`maxTokens\` defaults to 128000. \`showContext\` and \`showModelSelector\` default to true; the model selector renders only when at least one model exists. Custom \`context\` and \`modelSelector\` snippets render regardless of those visibility flags. \`controls\` has precedence over both individual regions.
95
+ \`models\` and \`modelGroups\` populate the default selector. The default context indicator renders only when there is something to measure: \`maxTokens\` is set or the conversation reports \`contextUsage\`. With usage but no \`maxTokens\`, the percentage is computed against 128000. \`showContext\` and \`showModelSelector\` default to true; the model selector renders only when at least one model exists. Custom \`context\` and \`modelSelector\` snippets render regardless of those visibility flags. \`controls\` has precedence over both individual regions. These controls render at the end of the composer footer, next to the send button.
81
96
 
82
97
  ## Composer behavior
83
98
 
@@ -86,7 +101,8 @@ The default AIComposer remains connected to the central conversation state. AICh
86
101
  - Queueing: \`disabled\`, \`queueWhileBusy\`, \`queue\`, \`onQueueChange\`, \`onQueuedMessageAdd\`, \`onQueuedMessageCancel\`, \`onQueuedMessageEditStart\`, \`onQueuedMessageEditCommit\`, \`onQueuedMessageEditCancel\`, \`onQueuedMessageReorder\`, and \`onSteer\`.
87
102
  - Files: \`fileDropzone\`, \`fileMultiple\`, \`accept\`, \`maxFiles\`, \`maxFileSize\`, \`onFilesRejected\`, \`onFileReject\`, \`onAttachmentAdd\`, \`onAttachmentRetry\`, and \`onAttachmentRemove\`. AIChat defaults \`fileDropzone\` to true.
88
103
  - Suggestions in the editor: \`commands\`, \`mentions\`, \`references\`, and \`skills\`.
89
- Use \`AIConversation\` with \`AIThread\` and \`AIComposer\` directly for editor formatting, toolbar, shortcut, and other primitive-level tuning.
104
+ - Editor: \`submitShortcut\` (AIComposer's default \`'enter'\`: Enter sends, Shift+Enter adds a line) and \`toolbar\` (AIComposer's default \`'none'\`).
105
+ Use \`AIConversation\` with \`AIThread\` and \`AIComposer\` directly for other primitive-level tuning.
90
106
 
91
107
  Conversation \`onSubmit\`, \`onStop\`, and \`onFilesChange\` remain central state events rather than bypassing or duplicating the Composer path.
92
108
 
@@ -94,11 +110,11 @@ Conversation \`onSubmit\`, \`onStop\`, and \`onFilesChange\` remain central stat
94
110
 
95
111
  An active \`activeAskUserQuestion\` replaces both a custom or default composer. The complete request is rendered with every question, initial values, title, requester, context, navigation labels, submit label, and discard label. Answers are retained by request key, and completion or dismissal resolves the captured request through \`AIConversationState.resolveAskUserQuestion\`.
96
112
 
97
- Prompt \`suggestions\` render only inside an empty transcript. An explicit \`empty\` region has precedence. An explicit \`onSelect\` callback -- the pick event for a suggestion -- has precedence over the default behavior; without it, picking a suggestion updates \`currentInput\` and focuses the default composer.
113
+ Prompt \`suggestions\` render as chips under the empty-state greeting, then as follow-ups above the composer (one row that scrolls sideways on narrow screens) once an assistant turn has finished (not while streaming, during a question, or under an error); \`showFollowUps={false}\` keeps them to the empty state. An explicit \`empty\` region has precedence. An explicit \`onSelect\` callback -- the pick event for a suggestion -- has precedence over the default behavior; without it, picking a suggestion updates \`currentInput\` and focuses the default composer.
98
114
 
99
115
  ## Skeleton
100
116
 
101
- AIChatSkeleton accepts native div attributes plus \`messageCount\`, \`showHeader\`, \`showComposer\`, \`showFooter\`, \`class\`, and \`theme\`. \`messageCount\` defaults to 4 and is clamped from 1 to 8. Header and footer default off; composer defaults on. The root defaults to \`role="status"\`, \`aria-label="Connecting chat"\`, and \`aria-busy="true"\`, all overridable with native attributes.
117
+ AIChatSkeleton mirrors the default chat — user turns as end-aligned bubbles, assistant turns as flat lines, the composer as a bordered card, all in the centred column — so nothing jumps when the chat replaces it. It accepts native div attributes plus \`messageCount\`, \`showHeader\`, \`showComposer\`, \`showFooter\`, \`contentWidth\` (default \`'48rem'\`, match the chat's), \`class\`, and \`theme\`. \`messageCount\` defaults to 4 and is clamped from 1 to 8. Header and footer default off; composer defaults on. The root defaults to \`role="status"\`, \`aria-label="Connecting chat"\`, and \`aria-busy="true"\`, all overridable with native attributes.
102
118
 
103
119
  \`\`\`svelte
104
120
  <AIChatSkeleton
@@ -111,5 +127,5 @@ AIChatSkeleton accepts native div attributes plus \`messageCount\`, \`showHeader
111
127
 
112
128
  ## Theme
113
129
 
114
- Use \`theme\` or \`setAIChatTheme\` to override \`root\`, \`header\`, \`error\`, \`beforeThread\`, \`thread\`, \`afterThread\`, \`suggestions\`, \`composer\`, \`controls\`, \`footer\`, and \`skeletonMessages\` parts.
130
+ Use \`theme\` or \`setAIChatTheme\` to override \`root\`, \`header\`, \`error\`, \`beforeThread\`, \`thread\`, \`afterThread\`, \`suggestions\`, \`composer\`, \`controls\`, \`footer\`, \`skeletonMessages\`, \`skeletonUser\`, \`skeletonAssistant\`, and \`skeletonComposer\` parts.
115
131
  `;
@@ -4,9 +4,10 @@ import type { AIComposerAttachment, AIComposerProps, AIComposerQueuedMessage } f
4
4
  import type { AIContextUsage } from '../AIContext/aiContext.props.js';
5
5
  import type { AIConversationApi } from '../AIConversation/aiConversation.props.js';
6
6
  import type { AIConversationLabelOverrides, AIConversationState, AIConversationStateEvents, AIConversationStatus } from '../AIConversation/aiConversation.state.svelte.js';
7
- import type { AIMessageActionHandler, AIMessageActionState, AIMessageActionVisibility } from '../AIMessageActions/aiMessageActions.props.js';
7
+ import type { AIMessageActionHandler, AIMessageActionState } from '../AIMessageActions/aiMessageActions.props.js';
8
8
  import type { AIModelSelectorGroup, AIModelSelectorModel } from '../AIModelSelector/aiModelSelector.props.js';
9
- import type { AIThreadDensity, AIThreadAskUserQuestion, AIThreadItem, AIThreadMessageRenderPayload, AIThreadRenderPayload, AIThreadTocSide, AIThreadTocState } from '../AIThread/aiThread.props.js';
9
+ import type { Colors } from '../../types/theme.js';
10
+ import type { AIThreadDensity, AIThreadAskUserQuestion, AIThreadMessageActionsVisibility, AIThreadItem, AIThreadMessageRenderPayload, AIThreadRenderPayload, AIThreadTocSide, AIThreadTocState } from '../AIThread/aiThread.props.js';
10
11
  import type { AIMessageSize, AIMessageVariant } from '../AIMessage/aiMessage.props.js';
11
12
  import type { AIToolCall } from '../AITool/aiTool.props.js';
12
13
  import type { AIChatThemeProps } from './aiChat.theme.js';
@@ -18,7 +19,7 @@ export type AIChatToolPayload<TMessage extends AIThreadItem = AIThreadItem> = {
18
19
  message: TMessage;
19
20
  index: number;
20
21
  };
21
- type AIChatComposerBehaviorProps = Pick<AIComposerProps, 'disabled' | 'queueWhileBusy' | 'fileDropzone' | 'fileMultiple' | 'accept' | 'maxFiles' | 'maxFileSize' | 'commands' | 'mentions' | 'references' | 'skills' | 'onFilesRejected' | 'onFileReject' | 'onAttachmentAdd' | 'onAttachmentRetry' | 'onAttachmentRemove' | 'onQueueChange' | 'onQueuedMessageAdd' | 'onQueuedMessageCancel' | 'onQueuedMessageEditStart' | 'onQueuedMessageEditCommit' | 'onQueuedMessageEditCancel' | 'onQueuedMessageReorder' | 'onSteer'>;
22
+ type AIChatComposerBehaviorProps = Pick<AIComposerProps, 'disabled' | 'queueWhileBusy' | 'fileDropzone' | 'fileMultiple' | 'accept' | 'maxFiles' | 'maxFileSize' | 'commands' | 'mentions' | 'references' | 'skills' | 'onFilesRejected' | 'onFileReject' | 'onAttachmentAdd' | 'onAttachmentRetry' | 'onAttachmentRemove' | 'onQueueChange' | 'onQueuedMessageAdd' | 'onQueuedMessageCancel' | 'onQueuedMessageEditStart' | 'onQueuedMessageEditCommit' | 'onQueuedMessageEditCancel' | 'onQueuedMessageReorder' | 'onSteer' | 'submitShortcut' | 'toolbar'>;
22
23
  type AIChatRootAttributes = Omit<HTMLAttributes<HTMLDivElement>, 'children' | 'class'>;
23
24
  type AIChatBaseProps<TMessage extends AIThreadItem> = AIChatComposerBehaviorProps & {
24
25
  /** Bindable reference to the assembled chat root. */
@@ -43,7 +44,10 @@ type AIChatBaseProps<TMessage extends AIThreadItem> = AIChatComposerBehaviorProp
43
44
  queue?: AIComposerQueuedMessage[];
44
45
  /** Assistant text that is still streaming. */
45
46
  liveText?: string;
46
- /** Prompt suggestions displayed only by the empty transcript state. */
47
+ /**
48
+ * Prompt suggestions: chips under the empty-state greeting, then follow-ups above the composer
49
+ * after a finished assistant turn.
50
+ */
47
51
  suggestions?: string[];
48
52
  /** Context-window usage displayed by `AIContext`. */
49
53
  contextUsage?: AIContextUsage;
@@ -59,7 +63,10 @@ type AIChatBaseProps<TMessage extends AIThreadItem> = AIChatComposerBehaviorProp
59
63
  models?: readonly AIModelSelectorModel[];
60
64
  /** Nested model groups shown by the default model selector. */
61
65
  modelGroups?: readonly AIModelSelectorGroup[];
62
- /** Context-window limit used by the default context indicator. */
66
+ /**
67
+ * Context-window limit used by the default context indicator. The indicator renders only when
68
+ * this is set or the conversation reports `contextUsage` (then measured against 128000).
69
+ */
63
70
  maxTokens?: number;
64
71
  /** Displays the default context indicator when no `context` snippet is provided. */
65
72
  showContext?: boolean;
@@ -73,12 +80,28 @@ type AIChatBaseProps<TMessage extends AIThreadItem> = AIChatComposerBehaviorProp
73
80
  density?: AIThreadDensity;
74
81
  /** Size forwarded to default message rows. @default 'normal' */
75
82
  messageSize?: AIMessageSize;
76
- /** Presentation forwarded to default message rows. @default 'bubble' */
83
+ /** Presentation forwarded to default message rows. @default 'minimal' */
77
84
  messageVariant?: AIMessageVariant;
85
+ /**
86
+ * User-bubble colour forwarded to default message rows. Neutral is a quiet grey bubble; any
87
+ * other role paints a solid bubble. Defaults to the theme's default colour.
88
+ */
89
+ messageColor?: Colors;
90
+ /**
91
+ * Maximum width of the centred column shared by the transcript and the composer, as a CSS
92
+ * length or pixels. Exposed as `--ai-chat-content-width`; `'none'` spans the chat.
93
+ * @default '48rem'
94
+ */
95
+ contentWidth?: string | number;
96
+ /** Shows `suggestions` as follow-ups above the composer after an assistant turn. @default true */
97
+ showFollowUps?: boolean;
78
98
  /** Custom action renderer shared by default message rows. */
79
99
  messageActions?: Slot<AIMessageActionState<TMessage>> | false;
80
- /** Controls whether default message actions are always shown, hover-revealed, or omitted. */
81
- messageActionsVisibility?: AIMessageActionVisibility;
100
+ /**
101
+ * When default message actions show. `latest` keeps the final assistant turn's bar visible and
102
+ * reveals the rest on hover or focus (always on touch screens). @default 'latest'
103
+ */
104
+ messageActionsVisibility?: AIThreadMessageActionsVisibility;
82
105
  /** Enables or disables default copy actions. */
83
106
  messageCopyable?: boolean;
84
107
  /** Enables or disables default edit actions. */
@@ -91,7 +114,7 @@ type AIChatBaseProps<TMessage extends AIThreadItem> = AIChatComposerBehaviorProp
91
114
  onMessageEdit?: AIMessageActionHandler<TMessage>;
92
115
  /** Handles message retry actions. */
93
116
  onMessageRetry?: AIMessageActionHandler<TMessage>;
94
- /** Called instead of the default input update when an empty-state suggestion is selected. */
117
+ /** Called instead of the default input update when a suggestion or follow-up is selected. */
95
118
  onSelect?: (suggestion: string) => void;
96
119
  /** Replaces the complete default surface while retaining the conversation provider. */
97
120
  children?: Slot<AIChatState<TMessage>>;
@@ -105,7 +128,10 @@ type AIChatBaseProps<TMessage extends AIThreadItem> = AIChatComposerBehaviorProp
105
128
  context?: Slot<AIChatState<TMessage>>;
106
129
  /** Replaces the default model selector. */
107
130
  modelSelector?: Slot<AIChatState<TMessage>>;
108
- /** Replaces the default error alert. */
131
+ /**
132
+ * Replaces the default error, which otherwise shows as a row at the end of the transcript with
133
+ * a Retry button wired to the conversation's `retry`. A replacement renders above the transcript.
134
+ */
109
135
  errorRegion?: Slot<AIChatState<TMessage>>;
110
136
  /** Replaces the complete transcript region. */
111
137
  thread?: Slot<AIChatState<TMessage>>;
@@ -11,6 +11,9 @@ export declare const aiChatTheme: {
11
11
  controls: (props?: import("../../utils/cva/types.js").CVAClassProp | undefined) => string;
12
12
  footer: (props?: import("../../utils/cva/types.js").CVAClassProp | undefined) => string;
13
13
  skeletonMessages: (props?: import("../../utils/cva/types.js").CVAClassProp | undefined) => string;
14
+ skeletonUser: (props?: import("../../utils/cva/types.js").CVAClassProp | undefined) => string;
15
+ skeletonAssistant: (props?: import("../../utils/cva/types.js").CVAClassProp | undefined) => string;
16
+ skeletonComposer: (props?: import("../../utils/cva/types.js").CVAClassProp | undefined) => string;
14
17
  };
15
18
  export type AIChatTheme = typeof aiChatTheme;
16
19
  export type AIChatThemeProps = InferComponentTheme<AIChatTheme>;
@@ -26,6 +29,9 @@ export declare const setAIChatTheme: (theme: InferComponentTheme<{
26
29
  controls: (props?: import("../../utils/cva/types.js").CVAClassProp | undefined) => string;
27
30
  footer: (props?: import("../../utils/cva/types.js").CVAClassProp | undefined) => string;
28
31
  skeletonMessages: (props?: import("../../utils/cva/types.js").CVAClassProp | undefined) => string;
32
+ skeletonUser: (props?: import("../../utils/cva/types.js").CVAClassProp | undefined) => string;
33
+ skeletonAssistant: (props?: import("../../utils/cva/types.js").CVAClassProp | undefined) => string;
34
+ skeletonComposer: (props?: import("../../utils/cva/types.js").CVAClassProp | undefined) => string;
29
35
  }>) => void;
30
36
  export declare const useAIChatTheme: import("../../utils/cva/theme.js").UseComponentTheme<{
31
37
  root: (props?: import("../../utils/cva/types.js").CVAClassProp | undefined) => string;
@@ -39,4 +45,7 @@ export declare const useAIChatTheme: import("../../utils/cva/theme.js").UseCompo
39
45
  controls: (props?: import("../../utils/cva/types.js").CVAClassProp | undefined) => string;
40
46
  footer: (props?: import("../../utils/cva/types.js").CVAClassProp | undefined) => string;
41
47
  skeletonMessages: (props?: import("../../utils/cva/types.js").CVAClassProp | undefined) => string;
48
+ skeletonUser: (props?: import("../../utils/cva/types.js").CVAClassProp | undefined) => string;
49
+ skeletonAssistant: (props?: import("../../utils/cva/types.js").CVAClassProp | undefined) => string;
50
+ skeletonComposer: (props?: import("../../utils/cva/types.js").CVAClassProp | undefined) => string;
42
51
  }>;
@@ -1,6 +1,6 @@
1
1
  import { cva, setComponentTheme, useComponentTheme } from '../../utils/cva/index.js';
2
2
  const defaultRoot = cva({
3
- base: 'flex h-full min-h-0 min-w-0 flex-col overflow-hidden rounded-lg border border-neutral-muted bg-surface'
3
+ base: 'group/ai-chat flex h-full min-h-0 min-w-0 flex-col overflow-hidden rounded-lg border border-neutral-muted bg-surface'
4
4
  });
5
5
  const defaultHeader = cva({ base: 'shrink-0 border-b border-neutral-muted px-xl py-lg' });
6
6
  const defaultError = cva({ base: 'shrink-0 px-xl pt-lg' });
@@ -8,11 +8,25 @@ const defaultBeforeThread = cva({ base: 'shrink-0' });
8
8
  const defaultThread = cva({ base: 'min-h-0 flex-1' });
9
9
  const defaultAfterThread = cva({ base: 'shrink-0' });
10
10
  const defaultSuggestions = cva({ base: 'border-t border-neutral-muted px-lg py-md' });
11
- const defaultComposer = cva({ base: 'shrink-0 border-t border-neutral-muted p-lg' });
11
+ // The composer is its own raised card, so its band has no rule above it: the card separates
12
+ // itself from the transcript. Its inline inset matches the thread rows at the chat's density, so
13
+ // the card and the transcript share their edges at every width.
14
+ const defaultComposer = cva({
15
+ base: 'shrink-0 px-xl pt-xs pb-lg group-data-[density=compact]/ai-chat:px-lg group-data-[density=comfortable]/ai-chat:px-layout-sm'
16
+ });
12
17
  const defaultControls = cva({ base: 'flex min-w-0 items-center gap-md' });
13
18
  const defaultFooter = cva({ base: 'shrink-0 border-t border-neutral-muted px-xl py-md' });
19
+ // The skeleton mirrors the default chat: rows in the centred column, user turns as end-aligned
20
+ // bubbles, assistant turns as flat lines of prose, and the composer as a bordered card.
14
21
  const defaultSkeletonMessages = cva({
15
- base: 'grid h-full min-h-0 content-end gap-layout-sm overflow-hidden p-layout-sm'
22
+ base: 'mx-auto grid h-full min-h-0 w-full max-w-[var(--ai-chat-content-width,none)] content-end gap-layout-sm overflow-hidden px-xl py-layout-sm'
23
+ });
24
+ const defaultSkeletonUser = cva({
25
+ base: 'ms-auto h-control-lg w-2/5 max-w-sm rounded-lg rounded-ee-sm'
26
+ });
27
+ const defaultSkeletonAssistant = cva({ base: 'flex min-w-0 flex-col gap-sm' });
28
+ const defaultSkeletonComposer = cva({
29
+ base: 'mx-auto grid w-full max-w-[var(--ai-chat-content-width,none)] gap-md rounded-lg border border-neutral-muted bg-surface-raised p-sm lift-2'
16
30
  });
17
31
  export const aiChatTheme = {
18
32
  root: defaultRoot,
@@ -25,7 +39,10 @@ export const aiChatTheme = {
25
39
  composer: defaultComposer,
26
40
  controls: defaultControls,
27
41
  footer: defaultFooter,
28
- skeletonMessages: defaultSkeletonMessages
42
+ skeletonMessages: defaultSkeletonMessages,
43
+ skeletonUser: defaultSkeletonUser,
44
+ skeletonAssistant: defaultSkeletonAssistant,
45
+ skeletonComposer: defaultSkeletonComposer
29
46
  };
30
47
  export const setAIChatTheme = setComponentTheme('ai-chat');
31
48
  export const useAIChatTheme = useComponentTheme('ai-chat', aiChatTheme);
@@ -13,6 +13,11 @@ export type AIChatSkeletonProps = WithAttachments<AIChatSkeletonRootAttributes &
13
13
  showComposer?: boolean;
14
14
  /** Displays a chat-footer placeholder. */
15
15
  showFooter?: boolean;
16
+ /**
17
+ * Width of the centred column, matching AIChat's `contentWidth` so the skeleton lines up with
18
+ * the chat that replaces it. @default '48rem'
19
+ */
20
+ contentWidth?: string | number;
16
21
  /** Class applied to the skeleton root. */
17
22
  class?: string;
18
23
  /** AI chat theme overrides reused by the skeleton layout. */
@@ -2,6 +2,6 @@ export { default as AIChat } from './AIChat.svelte';
2
2
  export { default as AIChatSkeleton } from './AIChatSkeleton.svelte';
3
3
  export type { AIChatProps, AIChatState, AIChatToolPayload } from './aiChat.props.js';
4
4
  export type { AIMessageSize, AIMessageVariant } from '../AIMessage/aiMessage.props.js';
5
- export type { AIThreadDensity } from '../AIThread/aiThread.props.js';
5
+ export type { AIThreadDensity, AIThreadMessageActionsVisibility } from '../AIThread/aiThread.props.js';
6
6
  export type { AIChatSkeletonProps } from './aiChatSkeleton.props.js';
7
7
  export { aiChatTheme, setAIChatTheme, useAIChatTheme, type AIChatTheme, type AIChatThemeProps } from './aiChat.theme.js';