@astryx-vue/core 0.2.0 → 0.2.2

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 (225) hide show
  1. package/dist/AppShell/index.js +1 -1
  2. package/dist/{AppShell-EiGyPFbA.js → AppShell-Cb41gIAj.js} +2 -2
  3. package/dist/Avatar/index.d.ts +1 -1
  4. package/dist/Avatar/index.js +1 -1
  5. package/dist/Avatar-jmHInHwj.js +244 -0
  6. package/dist/AvatarGroup/index.d.ts +1 -1
  7. package/dist/AvatarGroup/index.js +1 -1
  8. package/dist/{AvatarGroup-CZcgAMjM.js → AvatarGroup-QyzSrpYA.js} +8 -7
  9. package/dist/Badge/index.d.ts +2 -1
  10. package/dist/Badge/index.js +1 -1
  11. package/dist/Badge-CjDQPF5g.js +30 -0
  12. package/dist/Banner/index.d.ts +1 -1
  13. package/dist/Breadcrumbs/index.d.ts +2 -2
  14. package/dist/Breadcrumbs/index.js +1 -1
  15. package/dist/{Breadcrumbs-C3YZFQ9w.js → Breadcrumbs-CTQ7fjDn.js} +45 -11
  16. package/dist/ButtonGroup/index.d.ts +1 -1
  17. package/dist/Calendar/index.d.ts +2 -2
  18. package/dist/Calendar/index.js +1 -1
  19. package/dist/Calendar-BFaI5AMv.js +352 -0
  20. package/dist/Card/index.d.ts +1 -1
  21. package/dist/Carousel/index.js +1 -1
  22. package/dist/{Carousel-BTtHkKea.js → Carousel-X0cuQkvg.js} +2 -2
  23. package/dist/Chat/index.d.ts +2 -2
  24. package/dist/Chat/index.js +2 -2
  25. package/dist/Chat-M0tiGrNT.js +3148 -0
  26. package/dist/CheckboxInput/index.d.ts +1 -1
  27. package/dist/CheckboxList/index.d.ts +1 -1
  28. package/dist/CheckboxList/index.js +1 -1
  29. package/dist/Citation/index.js +1 -1
  30. package/dist/{Citation-DijdbUUu.js → Citation-C1veUk5p.js} +2 -2
  31. package/dist/ClickableCard/index.d.ts +1 -1
  32. package/dist/Code/index.js +1 -1
  33. package/dist/{CodeBlock-CxTb6j9_.js → CodeBlock-DesTJAkm.js} +1 -1
  34. package/dist/Collapsible/index.js +1 -1
  35. package/dist/{Collapsible-9MC08X39.js → Collapsible-BestK35V.js} +1 -1
  36. package/dist/CommandPalette/index.js +1 -1
  37. package/dist/{CommandPalette-BD2iODF5.js → CommandPalette-BArt97V8.js} +1 -1
  38. package/dist/ComplexSelector/index.d.ts +1 -1
  39. package/dist/ComplexSelector/index.js +1 -1
  40. package/dist/{ComplexSelector-D9iXd5cH.js → ComplexSelector-CAoig1RK.js} +2 -2
  41. package/dist/ContextMenu/index.d.ts +2 -2
  42. package/dist/ContextMenu/index.js +1 -1
  43. package/dist/{ContextMenu-HS_WqYIg.js → ContextMenu-9Im6i43E.js} +101 -63
  44. package/dist/DateInput/index.d.ts +2 -2
  45. package/dist/DateInput/index.js +1 -1
  46. package/dist/DateInput-BLocxqC3.js +376 -0
  47. package/dist/DateRangeInput/index.d.ts +1 -1
  48. package/dist/DateRangeInput/index.js +1 -1
  49. package/dist/{DateRangeInput-1bhPGG2s.js → DateRangeInput-DwDy3eRo.js} +2 -2
  50. package/dist/DateTimeInput/index.d.ts +1 -1
  51. package/dist/DateTimeInput/index.js +1 -1
  52. package/dist/{DateTimeInput-SnPdgk6P.js → DateTimeInput-BYiaC9bn.js} +5 -3
  53. package/dist/DropdownMenu/index.d.ts +3 -2
  54. package/dist/DropdownMenu/index.js +3 -2
  55. package/dist/DropdownMenu-Ddfr-aEC.js +164 -0
  56. package/dist/{DropdownMenu-UJGych6v.js → DropdownMenu-Dh-WAHKb.js} +63 -16
  57. package/dist/FileInput/index.d.ts +1 -1
  58. package/dist/FileInput/index.js +1 -1
  59. package/dist/{FileInput-BQiwE-GB.js → FileInput-DLO6V12n.js} +2 -2
  60. package/dist/Icon/index.d.ts +4 -3
  61. package/dist/Icon/index.js +3 -2
  62. package/dist/Icon/plugin.d.ts +45 -0
  63. package/dist/Icon/plugin.js +177 -0
  64. package/dist/Icon-CJKjdJy-.js +198 -0
  65. package/dist/Lightbox/index.js +1 -1
  66. package/dist/{Lightbox-CshKoB0r.js → Lightbox-CdFCS_EA.js} +2 -2
  67. package/dist/Link/index.d.ts +1 -1
  68. package/dist/Link/index.js +1 -1
  69. package/dist/Link-DqdQZ37C.js +141 -0
  70. package/dist/Markdown/index.js +1 -1
  71. package/dist/{Markdown-D-Ua055V.js → Markdown-BqKloI3w.js} +3 -3
  72. package/dist/MetadataList/index.js +1 -1
  73. package/dist/{MetadataList-sYph_d8Q.js → MetadataList-CvZkmisf.js} +1 -1
  74. package/dist/MobileNav/index.js +1 -1
  75. package/dist/{MobileNavToggle-DD9D01aj.js → MobileNavToggle-Bwi0qXXM.js} +1 -1
  76. package/dist/MoreMenu/index.d.ts +1 -1
  77. package/dist/MoreMenu/index.js +1 -1
  78. package/dist/{MoreMenu-BVrK5kkk.js → MoreMenu-BwJaJrkB.js} +2 -2
  79. package/dist/MultiSelector/index.js +1 -1
  80. package/dist/{MultiSelector-DiYov9sF.js → MultiSelector-C-ETfFy_.js} +2 -2
  81. package/dist/NumberInput/index.d.ts +2 -2
  82. package/dist/NumberInput/index.js +1 -1
  83. package/dist/NumberInput-DjetVB8O.js +210 -0
  84. package/dist/Outline/index.js +1 -1
  85. package/dist/{Outline-DQfEBxlc.js → Outline-Bz9c-u5y.js} +1 -1
  86. package/dist/OverflowList/index.d.ts +1 -1
  87. package/dist/OverflowList/index.js +1 -1
  88. package/dist/{OverflowList-BU5VCntl.js → OverflowList-ED-KN9Y5.js} +1 -1
  89. package/dist/Overlay/index.d.ts +1 -1
  90. package/dist/Pagination/index.d.ts +2 -2
  91. package/dist/Pagination/index.js +1 -1
  92. package/dist/{Pagination-HdhtykeF.js → Pagination-Cb66HMEf.js} +76 -22
  93. package/dist/PowerSearch/index.d.ts +2 -0
  94. package/dist/PowerSearch/index.js +2 -0
  95. package/dist/PowerSearch-CjU8y4mi.js +2386 -0
  96. package/dist/ProgressBar/index.d.ts +1 -1
  97. package/dist/ProgressBar/index.js +1 -1
  98. package/dist/{ProgressBar-ChDp-7oe.js → ProgressBar-DO9Chic6.js} +31 -11
  99. package/dist/Radio/index.d.ts +1 -1
  100. package/dist/RadioList/index.d.ts +1 -1
  101. package/dist/Resizable/index.d.ts +1 -1
  102. package/dist/Resizable/index.js +1 -1
  103. package/dist/{Resizable-BhSMfO5B.js → Resizable-D-TBCg0Y.js} +1 -1
  104. package/dist/ScrollableArea/index.d.ts +1 -1
  105. package/dist/SelectableCard/index.d.ts +1 -1
  106. package/dist/Selector/index.d.ts +2 -2
  107. package/dist/Selector/index.js +1 -1
  108. package/dist/Selector-DE2IEFML.js +468 -0
  109. package/dist/SideNav/index.d.ts +1 -1
  110. package/dist/SideNav/index.js +1 -1
  111. package/dist/{SideNav-B-Om6Bz3.js → SideNav-DonEfiAx.js} +17 -17
  112. package/dist/Stepper/index.js +1 -1
  113. package/dist/{Stepper-BZ_8SEZt.js → Stepper-D2ZIcUNx.js} +1 -1
  114. package/dist/Switch/index.d.ts +1 -1
  115. package/dist/TabList/index.d.ts +1 -1
  116. package/dist/TabList/index.js +1 -1
  117. package/dist/{TabList-Cnc2Hs1H.js → TabList-D3F-stq-.js} +10 -3
  118. package/dist/Table/index.d.ts +3 -3
  119. package/dist/Table/index.js +2 -2
  120. package/dist/Table-CrP2Uffq.js +1982 -0
  121. package/dist/TextArea/index.d.ts +1 -1
  122. package/dist/TextArea/index.js +1 -1
  123. package/dist/{TextArea-Cv9UVbzS.js → TextArea-CPwSytdO.js} +12 -6
  124. package/dist/TextInput/index.d.ts +1 -1
  125. package/dist/Thumbnail/index.js +1 -1
  126. package/dist/{Thumbnail-Dc1UpykG.js → Thumbnail-BC5JGPGZ.js} +11 -11
  127. package/dist/{TimeField-C7t9Knq9.js → TimeField-DpHFrNv0.js} +2 -2
  128. package/dist/TimeInput/index.d.ts +1 -1
  129. package/dist/TimeInput/index.js +1 -1
  130. package/dist/{TimeInput-BXxCOY98.js → TimeInput-DJLV0_4z.js} +1 -1
  131. package/dist/Timestamp/index.d.ts +1 -1
  132. package/dist/Timestamp/index.js +2 -1
  133. package/dist/{Timestamp-DlZSmgCJ.js → Timestamp-GKNjjt5g.js} +4 -121
  134. package/dist/Toast/index.d.ts +2 -2
  135. package/dist/Toast/index.js +1 -1
  136. package/dist/{Toast-BKXPvEMp.js → Toast-C2ML-bmi.js} +37 -7
  137. package/dist/ToggleButton/index.d.ts +1 -1
  138. package/dist/Token/index.js +1 -1
  139. package/dist/{Token-wt4e80IM.js → Token-Chu_eCVs.js} +1 -1
  140. package/dist/Tokenizer/index.js +1 -1
  141. package/dist/{Tokenizer-nmTqdS9n.js → Tokenizer-DRDpvQ_l.js} +3 -3
  142. package/dist/Toolbar/index.d.ts +1 -1
  143. package/dist/TopNav/index.d.ts +1 -1
  144. package/dist/TopNav/index.js +1 -1
  145. package/dist/{TopNav-notp-mJx.js → TopNav-CEyWddtA.js} +3 -3
  146. package/dist/TreeList/index.js +1 -1
  147. package/dist/{TreeList-s1xBQ0qq.js → TreeList-COS8US8e.js} +3 -3
  148. package/dist/Typeahead/index.js +1 -1
  149. package/dist/{Typeahead-VAuiCurV.js → Typeahead-P7cCqtaQ.js} +3 -3
  150. package/dist/{useTypeaheadMenu-Ba7XpcZl.js → TypeaheadMenu-CGvo0Tud.js} +107 -107
  151. package/dist/composables/index.d.ts +3 -3
  152. package/dist/{context-Dbo22sck.js → context-CiKncNSH.js} +184 -6
  153. package/dist/formatInstant-BDWUIxS7.js +119 -0
  154. package/dist/{index-SMh42NI8.d.ts → index-B1TG2GPS.d.ts} +2 -2
  155. package/dist/{index-DRmb-oUa.d.ts → index-B9WzWqzk.d.ts} +3 -29
  156. package/dist/{index-BuubzuE8.d.ts → index-BDZCJ9ri.d.ts} +2 -2
  157. package/dist/{index-z4p2k9VR.d.ts → index-Bgv4ZmBl.d.ts} +20 -2
  158. package/dist/{index-BoRIw-bP.d.ts → index-Bt7ewoz2.d.ts} +32 -2
  159. package/dist/{index-uQrLBZfF.d.ts → index-Bu3oXIIS.d.ts} +24 -0
  160. package/dist/index-CJlBAXwj.d.ts +100 -0
  161. package/dist/{index-DT9S92sh.d.ts → index-CNjbOgty.d.ts} +15 -0
  162. package/dist/{index-DXSs3rwa.d.ts → index-CngORuiq.d.ts} +137 -2
  163. package/dist/index-Cs5pcwY3.d.ts +416 -0
  164. package/dist/{index-NzLDrOkk.d.ts → index-D4I_obqR.d.ts} +14 -1
  165. package/dist/{index-BtPZKO20.d.ts → index-DGXviOlp.d.ts} +49 -7
  166. package/dist/{index-CTolyeii.d.ts → index-DN7MXPHM.d.ts} +15 -1
  167. package/dist/{index-C6iJwTL0.d.ts → index-DNRBbwp_.d.ts} +165 -55
  168. package/dist/{index-C59PdX9L.d.ts → index-DWH_HzXi.d.ts} +1 -1
  169. package/dist/{index-BfOtLyNH.d.ts → index-D_nYxnNv.d.ts} +1 -1
  170. package/dist/{index-Bn_odHQ9.d.ts → index-Dg3ZmwEg.d.ts} +12 -1
  171. package/dist/{index-BiMGXtD-.d.ts → index-DimuSES0.d.ts} +14 -1
  172. package/dist/{index-DEeJowZf.d.ts → index-cGagYM1g.d.ts} +15 -2
  173. package/dist/{index-Ck8qy6Rf.d.ts → index-c_TaW8mM.d.ts} +24 -2
  174. package/dist/index-kVhSuA9t.d.ts +902 -0
  175. package/dist/{index-1uRMrk63.d.ts → index-nCEmW6wa.d.ts} +1 -1
  176. package/dist/{index-DoFCm2Q2.d.ts → index-qiZtHnGK.d.ts} +26 -0
  177. package/dist/{index-Bainr_3n.d.ts → index-u5ozu0G7.d.ts} +2 -2
  178. package/dist/index.d.ts +79 -76
  179. package/dist/index.js +111 -100
  180. package/dist/locale/index.d.ts +1 -1
  181. package/dist/locale/index.js +1 -1
  182. package/dist/power-search-DrDfcoL1.d.ts +68 -0
  183. package/dist/registry-B1ObuP--.d.ts +45 -0
  184. package/dist/registry-C7OZb0PJ.js +135 -0
  185. package/dist/{types-JktRxujg.d.ts → types-Cp4liug-.d.ts} +66 -3
  186. package/dist/{index-B8MbfMwV.d.ts → types-DDAAT1Xd.d.ts} +36 -82
  187. package/dist/types-DIYwbkpe.d.ts +33 -0
  188. package/dist/{types-DZoEm_DG.d.ts → types-pnljWjEE.d.ts} +23 -6
  189. package/dist/{useResizable-CeESZS1v.d.ts → useResizable-CUoNPmUw.d.ts} +1 -1
  190. package/package.json +10 -1
  191. package/styles/avatar.css +14 -0
  192. package/styles/badge.css +8 -0
  193. package/styles/breadcrumbs.css +6 -1
  194. package/styles/button.css +13 -0
  195. package/styles/calendar.css +16 -0
  196. package/styles/card.css +2 -0
  197. package/styles/chat.css +474 -3
  198. package/styles/dropdown-menu.css +11 -0
  199. package/styles/icon.css +58 -8
  200. package/styles/link.css +5 -0
  201. package/styles/number-input.css +22 -0
  202. package/styles/pagination.css +45 -1
  203. package/styles/power-search.css +303 -0
  204. package/styles/progress-bar.css +4 -0
  205. package/styles/selector.css +58 -0
  206. package/styles/tab-list.css +15 -0
  207. package/styles/table.css +304 -1
  208. package/styles/text-area.css +17 -0
  209. package/styles/text-input.css +5 -0
  210. package/styles/toast.css +7 -0
  211. package/styles/toolbar.css +11 -0
  212. package/styles.css +1 -0
  213. package/dist/Avatar-5s3HSrtN.js +0 -136
  214. package/dist/Badge-Ba0EwsTj.js +0 -19
  215. package/dist/Calendar-BG7wEsro.js +0 -277
  216. package/dist/Chat-DjNxw5gv.js +0 -1051
  217. package/dist/DateInput-DE2TN1Rq.js +0 -250
  218. package/dist/Icon-Dfr4k6-S.js +0 -86
  219. package/dist/Link-CprjOuTI.js +0 -92
  220. package/dist/NumberInput-CTYiQxHq.js +0 -147
  221. package/dist/Selector-Da-2BO3q.js +0 -325
  222. package/dist/Table-D-LhAy_J.js +0 -967
  223. package/dist/index-DJo-BmXZ.d.ts +0 -431
  224. package/dist/index-DtjAdYEc.d.ts +0 -68
  225. package/dist/{CheckboxList-EsIEXjK_.js → CheckboxList-BbCPiend.js} +1 -1
@@ -0,0 +1,902 @@
1
+ import { n as SpacingStep } from "./types-D7QNSqoN.js";
2
+ import { n as BadgeVariant } from "./types-DIYwbkpe.js";
3
+ import { a as SearchableItem, i as SearchSource } from "./useAsyncSource-xpQovjV_.js";
4
+ import { ComputedRef, InjectionKey, Ref, VNode } from "vue";
5
+ //#region src/Chat/types.d.ts
6
+ /** Who sent a message row. `system` is centered and ignores avatar, name, and metadata. */
7
+ type ChatMessageSender = 'user' | 'assistant' | 'system';
8
+ /** Spacing and width preset shared by the layout, the list, and each message. */
9
+ type ChatDensity = 'compact' | 'balanced' | 'spacious';
10
+ type ChatMessageBubbleVariant = 'filled' | 'ghost';
11
+ type ChatMessageBubbleGroup = 'first' | 'middle' | 'last';
12
+ type ChatMessageStatus = 'sending' | 'sent' | 'delivered' | 'read' | 'error';
13
+ type ChatSystemMessageVariant = 'default' | 'divider';
14
+ type ChatToolCallStatus = 'pending' | 'running' | 'complete' | 'error';
15
+ /** One tool invocation. The shape matches what an LLM response already returns. */
16
+ interface ChatToolCallItem {
17
+ /** Tool or function name. */
18
+ name: string;
19
+ /** Current execution status. @default 'complete' */
20
+ status?: ChatToolCallStatus;
21
+ /** What the tool acted on, such as a file name or a query. */
22
+ target?: string;
23
+ /** How long the call took, shown once it completes. For example `1.2s`. */
24
+ duration?: string;
25
+ /** Sandbox or worker name, shown as a neutral badge. */
26
+ node?: string;
27
+ /** Lines or characters added. Rendered as `+12`. */
28
+ additions?: number;
29
+ /** Lines or characters removed. Rendered as `-3`. */
30
+ deletions?: number;
31
+ /** Extra plain text after the label. */
32
+ stats?: string;
33
+ /**
34
+ * Error detail when `status` is `error`. Spoken to assistive tech and shown
35
+ * as the status icon's tooltip.
36
+ */
37
+ errorMessage?: string;
38
+ /** Stable identity. Derived from the other fields when omitted. */
39
+ key?: string;
40
+ /** Plain-text detail revealed when the row is expanded. */
41
+ detail?: string;
42
+ }
43
+ interface ChatLayoutProps {
44
+ /**
45
+ * Spacing, bubble width, and the frosted dock.
46
+ * @default 'balanced'
47
+ */
48
+ density?: ChatDensity;
49
+ /**
50
+ * Element that should scroll instead of the layout root.
51
+ * Leave it unset and the layout itself scrolls.
52
+ */
53
+ scrollRef?: HTMLElement | null;
54
+ /**
55
+ * Renders the built-in scroll-to-bottom button.
56
+ * Set this to `false` when the `scrollButton` slot should be the only control,
57
+ * or when the button should be absent.
58
+ * @default true
59
+ */
60
+ showScrollButton?: boolean;
61
+ }
62
+ interface ChatLayoutSlots {
63
+ /** Transcript. Usually one `ChatMessageList`. */
64
+ default?: () => VNode[];
65
+ /** Pinned to the bottom of the layout, above the frosted scrim. */
66
+ composer?: () => VNode[];
67
+ /** Shown when the default slot is omitted. */
68
+ empty?: () => VNode[];
69
+ /**
70
+ * Replaces the built-in scroll button.
71
+ * Receives the current visibility, the new-message label, and a function
72
+ * that dismisses that label and scrolls to the bottom.
73
+ */
74
+ scrollButton?: (props: ChatLayoutScrollSlotProps) => VNode[];
75
+ }
76
+ interface ChatLayoutScrollSlotProps {
77
+ isVisible: boolean;
78
+ label?: string;
79
+ scrollToBottom: () => void;
80
+ }
81
+ interface ChatLayoutScrollButtonProps {
82
+ /** Whether the button is shown. A hidden button stays mounted so it can fade. */
83
+ isVisible: boolean;
84
+ /** Expands the pill. Omit it for the icon-only down arrow. */
85
+ label?: string;
86
+ }
87
+ interface ChatLayoutScrollButtonEmits {
88
+ click: [];
89
+ }
90
+ interface ChatMessageListProps {
91
+ /**
92
+ * Visual density passed down to messages that do not set their own.
93
+ * @default 'balanced'
94
+ */
95
+ density?: ChatDensity;
96
+ /**
97
+ * Gap between top-level rows, on the spacing scale.
98
+ * Overrides the density gap without changing padding.
99
+ */
100
+ gap?: SpacingStep;
101
+ /**
102
+ * Loads older messages when the top of the list scrolls into view.
103
+ * A spinner is shown at the top while the promise is pending.
104
+ */
105
+ scrollToTopAction?: () => Promise<void>;
106
+ /**
107
+ * Marks the log busy while an assistant message is still streaming, so a
108
+ * screen reader waits and announces the finished message once.
109
+ * @default false
110
+ */
111
+ isStreaming?: boolean;
112
+ /** Accessible name of the log. Defaults to the localized "Messages". */
113
+ label?: string;
114
+ }
115
+ interface ChatMessageListSlots {
116
+ /** Message rows, system lines, and unread dividers. */
117
+ default?: () => VNode[];
118
+ /** Shown when the default slot is omitted. */
119
+ empty?: () => VNode[];
120
+ }
121
+ interface ChatMessageProps {
122
+ sender: ChatMessageSender;
123
+ /**
124
+ * Plain sender name above the body.
125
+ * Prefer the `name` slot, or `ChatMessageBubble`'s `name`, when the first
126
+ * child is a bubble — a bubble name lines up with the bubble padding.
127
+ */
128
+ name?: string;
129
+ /**
130
+ * Density for this row. Falls back to the surrounding list, then `balanced`.
131
+ */
132
+ density?: ChatDensity;
133
+ }
134
+ interface ChatMessageSlots {
135
+ /** Body. Bubbles, reasoning, tool calls, or plain text. */
136
+ default?: () => VNode[];
137
+ /** Avatar. Ignored when `sender` is `system`. */
138
+ avatar?: () => VNode[];
139
+ /** Sender name. Replaces the `name` prop. */
140
+ name?: () => VNode[];
141
+ /** Metadata under the body when the last child is not a bubble. */
142
+ metadata?: () => VNode[];
143
+ }
144
+ interface ChatMessageBubbleProps {
145
+ /**
146
+ * `filled` paints the sender surface. `ghost` keeps the padding and drops
147
+ * the background, so mixed content still lines up. A bubble whose only
148
+ * child is a code block, or an element with class `astryx-chat-card`,
149
+ * drops that padding and background so the card lines up with the bubble.
150
+ * @default 'filled'
151
+ */
152
+ variant?: ChatMessageBubbleVariant;
153
+ /** Sender name aligned to the bubble's inline padding. */
154
+ name?: string;
155
+ /**
156
+ * Which corner tightens when several bubbles are stacked.
157
+ * Leave it unset for a standalone bubble.
158
+ */
159
+ group?: ChatMessageBubbleGroup;
160
+ /**
161
+ * Overrides the default cap (`max(80%, 280px)`).
162
+ * Pass `100%` when in-bubble content should span the message column.
163
+ */
164
+ width?: string;
165
+ }
166
+ interface ChatMessageBubbleSlots {
167
+ /** Bubble body. Plain text in this suite; markdown belongs to the caller. */
168
+ default?: () => VNode[];
169
+ /** Replaces the `name` prop. */
170
+ name?: () => VNode[];
171
+ /** Metadata aligned to the bubble padding. Usually `ChatMessageMetadata`. */
172
+ metadata?: () => VNode[];
173
+ }
174
+ interface ChatMessageMetadataProps {
175
+ /** Time or other short text. */
176
+ timestamp?: string;
177
+ /** Secondary text, such as a model name. */
178
+ footer?: string;
179
+ /** Delivery state. Renders nothing when timestamp, footer, and status are all absent. */
180
+ status?: ChatMessageStatus;
181
+ }
182
+ interface ChatMessageMetadataSlots {
183
+ /** Replaces the `timestamp` prop. */
184
+ timestamp?: () => VNode[];
185
+ /** Replaces the `footer` prop. */
186
+ footer?: () => VNode[];
187
+ }
188
+ interface ChatSystemMessageProps {
189
+ /**
190
+ * `default` is a centered line. `divider` draws a rule on each side.
191
+ * @default 'default'
192
+ */
193
+ variant?: ChatSystemMessageVariant;
194
+ }
195
+ interface ChatSystemMessageSlots {
196
+ default?: () => VNode[];
197
+ /** Icon before the text. Ignored for the divider variant. */
198
+ icon?: () => VNode[];
199
+ }
200
+ interface ChatToolCallsProps {
201
+ /** Tool calls from one assistant turn. An empty array renders nothing. */
202
+ calls: ChatToolCallItem[];
203
+ /** Summary shown while a group is expanded. Defaults to a localized count. */
204
+ label?: string;
205
+ /** Controlled expanded state, bound with `v-model:is-expanded`. */
206
+ isExpanded?: boolean;
207
+ /**
208
+ * Expanded state used while `isExpanded` is unbound.
209
+ * @default false
210
+ */
211
+ defaultIsExpanded?: boolean;
212
+ }
213
+ interface ChatToolCallsEmits {
214
+ /** The expanded state the header is asking for. */
215
+ expandedChange: [isExpanded: boolean];
216
+ }
217
+ interface ChatToolCallsSlots {
218
+ /** Rich detail for one call. Falls back to `call.detail` when omitted. */
219
+ detail?: (props: {
220
+ call: ChatToolCallItem;
221
+ }) => VNode[];
222
+ }
223
+ interface ChatReasoningProps {
224
+ /** Header label. Defaults to the localized "Thinking". */
225
+ label?: string;
226
+ /** Duration shown after the label once streaming has finished, such as `12s`. */
227
+ duration?: string;
228
+ /** Paints a shimmer on the label and hides the one-line preview. @default false */
229
+ isStreaming?: boolean;
230
+ /** Controlled expanded state, bound with `v-model:is-expanded`. */
231
+ isExpanded?: boolean;
232
+ /** Expanded state used while `isExpanded` is unbound. @default false */
233
+ defaultIsExpanded?: boolean;
234
+ }
235
+ interface ChatReasoningEmits {
236
+ expandedChange: [isExpanded: boolean];
237
+ }
238
+ interface ChatReasoningSlots {
239
+ /** Full reasoning. A plain string is also reused as the collapsed preview. */
240
+ default?: () => VNode[];
241
+ }
242
+ interface ChatTypingIndicatorProps {
243
+ /**
244
+ * People currently typing.
245
+ * One name, two names, and three or more each get their own sentence.
246
+ * An empty list renders the dots only.
247
+ */
248
+ names?: string[];
249
+ }
250
+ interface ChatUnreadDividerProps {
251
+ /** Short label at the end of the rule. Defaults to the localized "New". */
252
+ label?: string;
253
+ }
254
+ /** Visual density of the composer shell. `spacious` uses the same spacing as `balanced`. */
255
+ type ChatComposerDensity = ChatDensity;
256
+ /** Resting elevation of the composer body. */
257
+ type ChatComposerElevation = 'none' | 'low';
258
+ interface ChatComposerStatus {
259
+ type: 'error' | 'warning';
260
+ message?: string;
261
+ }
262
+ interface ChatComposerProps {
263
+ /**
264
+ * Controlled draft. Omit it and the composer keeps the draft itself.
265
+ * Bind with `v-model`.
266
+ */
267
+ modelValue?: string;
268
+ /** Placeholder shown while the draft is empty. */
269
+ placeholder?: string;
270
+ /** Disables editing and sending. A visible stop button stays reachable. @default false */
271
+ isDisabled?: boolean;
272
+ /** Spacing inside the body. @default 'balanced' */
273
+ density?: ChatComposerDensity;
274
+ /**
275
+ * `low` is raised and deepens on hover and focus.
276
+ * `none` is flat, with a border. Keyboard focus in the editor adds the
277
+ * shared focus ring either way; pointer focus does not.
278
+ * @default 'low'
279
+ */
280
+ elevation?: ChatComposerElevation;
281
+ /** Shows the stop action instead of send. @default false */
282
+ isStopShown?: boolean;
283
+ /** Error or warning rendered above or below the body. */
284
+ status?: ChatComposerStatus;
285
+ /** Which side of the body the status sits on. @default 'bottom' */
286
+ statusPosition?: 'top' | 'bottom';
287
+ }
288
+ interface ChatComposerEmits {
289
+ /** A trimmed, non-empty draft was submitted. The draft is then cleared. */
290
+ 'submit': [value: string];
291
+ /** The stop action was activated. */
292
+ 'stop': [];
293
+ /** The draft changed, including the clear after a successful submit. */
294
+ 'change': [value: string];
295
+ 'update:modelValue': [value: string];
296
+ }
297
+ interface ChatComposerSlots {
298
+ /** Collapsible content above the body. Usually `ChatComposerDrawer`. */
299
+ drawer?: () => VNode[];
300
+ /** Start side of the header. Icon buttons at the small size line up with the row. */
301
+ headerActions?: () => VNode[];
302
+ /** End side of the header. Context such as a usage meter. */
303
+ headerContext?: () => VNode[];
304
+ /** Replaces the default token input. Read the draft from `useChatComposerContext`. */
305
+ input?: () => VNode[];
306
+ /** Start side of the footer. Medium buttons match the send button. */
307
+ footerActions?: () => VNode[];
308
+ /** Sits just before the send button. */
309
+ sendActions?: () => VNode[];
310
+ /** Replaces the default send and stop button. */
311
+ sendButton?: () => VNode[];
312
+ }
313
+ /** What the composer can ask its input to do, without knowing the editor's markup. */
314
+ interface ChatComposerInputControl {
315
+ /** Move the caret to the end of the draft. Used when the body padding is clicked. */
316
+ focus: () => void;
317
+ }
318
+ interface ChatComposerInputHandle {
319
+ /** Insert a chip at the caret. Returns the chip id. */
320
+ insertToken: (token: ChatComposerToken) => string | undefined;
321
+ /** Replace a chip with the text it serializes to. */
322
+ expandToken: (id: string) => void;
323
+ /** Insert plain text at the caret. */
324
+ insertText: (text: string) => void;
325
+ /** Focus the editor and keep a caret the user already had inside it. */
326
+ focus: () => void;
327
+ /** Serialized draft, including chip values. */
328
+ getValue: () => string;
329
+ }
330
+ /** A chip drawn as a badge. `value` is what the submitted string contains. */
331
+ interface ChatComposerTokenBadge {
332
+ value: string;
333
+ /** Visible label. Falls back to `value`. */
334
+ label?: string | number;
335
+ variant?: BadgeVariant;
336
+ /**
337
+ * Artwork in the badge. A built-in glyph such as `check`, or an Iconify
338
+ * name such as `carbon:user`.
339
+ */
340
+ icon?: string;
341
+ }
342
+ /** A chip with its own markup. `value` is still what the submitted string contains. */
343
+ interface ChatComposerTokenCustom {
344
+ value: string;
345
+ render: () => VNode;
346
+ }
347
+ type ChatComposerToken = ChatComposerTokenBadge | ChatComposerTokenCustom;
348
+ interface ChatComposerTokenElementProps {
349
+ token: ChatComposerToken;
350
+ }
351
+ type ChatComposerTriggerItem = SearchableItem;
352
+ interface ChatComposerTrigger {
353
+ /** Character that opens the menu, such as `@` or `/`. */
354
+ character: string;
355
+ /** Same search source a typeahead uses. `createStaticSource` covers a fixed list. */
356
+ searchSource: SearchSource;
357
+ /** Row contents. The default is the item label. */
358
+ renderItem?: (item: SearchableItem) => VNode;
359
+ /** Plain text is inserted as-is. A token becomes a chip. */
360
+ onSelect: (item: SearchableItem) => string | ChatComposerToken;
361
+ /**
362
+ * Turn a serialized value back into a chip when a saved draft is loaded.
363
+ * The input stores the value; callers use this when they rebuild chips.
364
+ */
365
+ deserialize?: (value: string) => ChatComposerToken | null;
366
+ /**
367
+ * Shown when the query matches nothing.
368
+ * `null` and omission use the localized default. An empty string shows nothing.
369
+ */
370
+ emptySearchText?: string | VNode | null;
371
+ /** Shown while an async search is in flight. */
372
+ loadingText?: string;
373
+ /** Accessible name of the list. */
374
+ menuLabel?: string;
375
+ }
376
+ interface ChatComposerInputProps {
377
+ /** Controlled draft. Inside `ChatComposer`, the shell's draft is used when this is omitted. */
378
+ modelValue?: string;
379
+ placeholder?: string;
380
+ /** Lines before the editor scrolls. @default 8 */
381
+ maxRows?: number;
382
+ /** Trigger characters that open a suggestion list. */
383
+ triggers?: ChatComposerTrigger[];
384
+ /**
385
+ * Delay before an async trigger search. Sync sources are not delayed.
386
+ * @default 150
387
+ */
388
+ debounceMs?: number;
389
+ /** Arrow keys at the ends of the draft recall earlier submissions. @default true */
390
+ hasHistory?: boolean;
391
+ /** Accessible name of the editor. */
392
+ label?: string;
393
+ /** Disables editing. Falls back to the surrounding composer. */
394
+ isDisabled?: boolean;
395
+ /**
396
+ * Long pastes become chips. Pass a `useChatPasteAsToken` result to change
397
+ * the threshold, or `false` to insert the text as-is.
398
+ */
399
+ pasteAsToken?: {
400
+ onPaste: (text: string) => boolean;
401
+ } | false;
402
+ /**
403
+ * First chance at a plain-text paste. Return true to keep the input from
404
+ * inserting the text itself.
405
+ */
406
+ pasteAction?: (event: ClipboardEvent, text: string) => boolean | void;
407
+ }
408
+ interface ChatComposerInputEmits {
409
+ 'change': [value: string];
410
+ 'update:modelValue': [value: string];
411
+ /** Enter without Shift. Shift+Enter inserts a newline. */
412
+ 'submit': [value: string];
413
+ /** Files from a paste or a drop. A file drop does not navigate away. */
414
+ 'files': [files: File[]];
415
+ /**
416
+ * Keydown after an open trigger menu has declined the event.
417
+ * `preventDefault()` skips Enter-to-send and history recall.
418
+ */
419
+ 'keydown': [event: KeyboardEvent];
420
+ }
421
+ interface ChatSendButtonProps {
422
+ /** Stop instead of send. Falls back to the surrounding composer. */
423
+ isStopShown?: boolean;
424
+ /** Disables send. Does not disable stop. Falls back to the inverse of whether the draft can be sent. */
425
+ isDisabled?: boolean;
426
+ /** @default 'md' */
427
+ size?: 'sm' | 'md';
428
+ }
429
+ interface ChatSendButtonEmits {
430
+ /** Send was activated. Inside a composer this also submits the current draft. */
431
+ send: [];
432
+ /** Stop was activated. */
433
+ stop: [];
434
+ /** Follows the send or stop action. */
435
+ click: [event: MouseEvent];
436
+ }
437
+ interface ChatSendButtonSlots {
438
+ /** Replaces the up arrow. */
439
+ sendIcon?: () => VNode[];
440
+ /** Replaces the stop square. */
441
+ stopIcon?: () => VNode[];
442
+ }
443
+ interface ChatComposerDrawerProps {
444
+ /** Enables collapse and is shown in the default summary. Omit it and the drawer stays open. */
445
+ count?: number;
446
+ /** Name used in the summary and in the expand and collapse labels. */
447
+ label?: string;
448
+ /** Controlled collapsed state. Bind with `v-model:is-collapsed`. */
449
+ isCollapsed?: boolean;
450
+ /** Initial collapsed state while `isCollapsed` is unbound. @default false */
451
+ defaultIsCollapsed?: boolean;
452
+ }
453
+ interface ChatComposerDrawerEmits {
454
+ collapsedChange: [isCollapsed: boolean];
455
+ }
456
+ interface ChatComposerDrawerSlots {
457
+ default?: () => VNode[];
458
+ /** Replaces the count badge and label. The button still owns the disclosure name. */
459
+ collapsedSummary?: () => VNode[];
460
+ }
461
+ interface ChatDictationButtonProps {
462
+ /** Return value of `useChatDictation` or `useSpeechRecognition`. */
463
+ dictation: {
464
+ isSupported: boolean;
465
+ isListening: boolean;
466
+ bands: readonly number[];
467
+ volume: number;
468
+ toggle: () => void;
469
+ };
470
+ /** @default 'md' */
471
+ size?: 'sm' | 'md';
472
+ /**
473
+ * Hide the control when speech recognition is missing.
474
+ * When false, the control stays visible and disabled.
475
+ * @default true
476
+ */
477
+ isHiddenWhenUnsupported?: boolean;
478
+ /** Accessible name. Defaults to the localized start or stop dictation label. */
479
+ label?: string;
480
+ }
481
+ interface ChatTokenizedTextProps {
482
+ /** Message text that may contain serialized token values. */
483
+ text?: string;
484
+ /**
485
+ * Chips to substitute. Each non-empty `value` is matched literally.
486
+ * The same objects a trigger's `onSelect` returns can be reused here.
487
+ */
488
+ tokens?: ChatComposerToken[];
489
+ }
490
+ //#endregion
491
+ //#region src/Chat/ChatComposer.vue.d.ts
492
+ type __VLS_Slots$10 = ChatComposerSlots;
493
+ declare const __VLS_base$10: import("vue").DefineComponent<ChatComposerProps, {
494
+ element: Readonly<import("vue").ShallowRef<HTMLDivElement | null>>;
495
+ }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
496
+ submit: (value: string) => any;
497
+ change: (value: string) => any;
498
+ "update:modelValue": (value: string) => any;
499
+ stop: () => any;
500
+ }, string, import("vue").PublicProps, Readonly<ChatComposerProps> & Readonly<{
501
+ onSubmit?: ((value: string) => any) | undefined;
502
+ onChange?: ((value: string) => any) | undefined;
503
+ "onUpdate:modelValue"?: ((value: string) => any) | undefined;
504
+ onStop?: (() => any) | undefined;
505
+ }>, {
506
+ elevation: ChatComposerElevation;
507
+ density: ChatDensity;
508
+ statusPosition: "top" | "bottom";
509
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
510
+ declare const __VLS_export$17: __VLS_WithSlots$10<typeof __VLS_base$10, __VLS_Slots$10>;
511
+ declare const _default$17: typeof __VLS_export$17;
512
+ type __VLS_WithSlots$10<T, S> = T & {
513
+ new (): {
514
+ $slots: S;
515
+ };
516
+ };
517
+ //#endregion
518
+ //#region src/Chat/ChatComposerDrawer.vue.d.ts
519
+ type __VLS_Props$2 = Omit<ChatComposerDrawerProps, 'isCollapsed'>;
520
+ type __VLS_Slots$9 = ChatComposerDrawerSlots;
521
+ type __VLS_ModelProps$2 = {
522
+ 'isCollapsed'?: boolean | undefined;
523
+ };
524
+ type __VLS_PublicProps$2 = __VLS_Props$2 & __VLS_ModelProps$2;
525
+ declare const __VLS_base$9: import("vue").DefineComponent<__VLS_PublicProps$2, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
526
+ "update:isCollapsed": (value: boolean | undefined) => any;
527
+ collapsedChange: (isCollapsed: boolean) => any;
528
+ }, string, import("vue").PublicProps, Readonly<__VLS_PublicProps$2> & Readonly<{
529
+ "onUpdate:isCollapsed"?: ((value: boolean | undefined) => any) | undefined;
530
+ onCollapsedChange?: ((isCollapsed: boolean) => any) | undefined;
531
+ }>, {
532
+ defaultIsCollapsed: boolean;
533
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
534
+ declare const __VLS_export$16: __VLS_WithSlots$9<typeof __VLS_base$9, __VLS_Slots$9>;
535
+ declare const _default$16: typeof __VLS_export$16;
536
+ type __VLS_WithSlots$9<T, S> = T & {
537
+ new (): {
538
+ $slots: S;
539
+ };
540
+ };
541
+ //#endregion
542
+ //#region src/Chat/ChatComposerInput.vue.d.ts
543
+ declare const __VLS_export$15: import("vue").DefineComponent<ChatComposerInputProps, ChatComposerInputHandle, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
544
+ submit: (value: string) => any;
545
+ change: (value: string) => any;
546
+ "update:modelValue": (value: string) => any;
547
+ keydown: (event: KeyboardEvent) => any;
548
+ files: (files: File[]) => any;
549
+ }, string, import("vue").PublicProps, Readonly<ChatComposerInputProps> & Readonly<{
550
+ onSubmit?: ((value: string) => any) | undefined;
551
+ onChange?: ((value: string) => any) | undefined;
552
+ "onUpdate:modelValue"?: ((value: string) => any) | undefined;
553
+ onKeydown?: ((event: KeyboardEvent) => any) | undefined;
554
+ onFiles?: ((files: File[]) => any) | undefined;
555
+ }>, {
556
+ debounceMs: number;
557
+ maxRows: number;
558
+ hasHistory: boolean;
559
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
560
+ declare const _default$15: typeof __VLS_export$15;
561
+ //#endregion
562
+ //#region src/Chat/ChatComposerTokenElement.vue.d.ts
563
+ declare const __VLS_export$14: import("vue").DefineComponent<ChatComposerTokenElementProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<ChatComposerTokenElementProps> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
564
+ declare const _default$14: typeof __VLS_export$14;
565
+ //#endregion
566
+ //#region src/Chat/ChatDictationButton.vue.d.ts
567
+ declare const __VLS_export$13: import("vue").DefineComponent<ChatDictationButtonProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<ChatDictationButtonProps> & Readonly<{}>, {
568
+ size: "sm" | "md";
569
+ isHiddenWhenUnsupported: boolean;
570
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
571
+ declare const _default$13: typeof __VLS_export$13;
572
+ //#endregion
573
+ //#region src/Chat/ChatLayout.vue.d.ts
574
+ type __VLS_Slots$8 = ChatLayoutSlots;
575
+ declare function scrollToBottom(): void;
576
+ declare const __VLS_base$8: import("vue").DefineComponent<ChatLayoutProps, {
577
+ element: Readonly<import("vue").ShallowRef<HTMLDivElement | null>>;
578
+ scrollToBottom: typeof scrollToBottom;
579
+ }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<ChatLayoutProps> & Readonly<{}>, {
580
+ density: ChatDensity;
581
+ showScrollButton: boolean;
582
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
583
+ declare const __VLS_export$12: __VLS_WithSlots$8<typeof __VLS_base$8, __VLS_Slots$8>;
584
+ declare const _default$12: typeof __VLS_export$12;
585
+ type __VLS_WithSlots$8<T, S> = T & {
586
+ new (): {
587
+ $slots: S;
588
+ };
589
+ };
590
+ //#endregion
591
+ //#region src/Chat/ChatLayoutScrollButton.vue.d.ts
592
+ declare const __VLS_export$11: import("vue").DefineComponent<ChatLayoutScrollButtonProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
593
+ click: () => any;
594
+ }, string, import("vue").PublicProps, Readonly<ChatLayoutScrollButtonProps> & Readonly<{
595
+ onClick?: (() => any) | undefined;
596
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
597
+ declare const _default$11: typeof __VLS_export$11;
598
+ //#endregion
599
+ //#region src/Chat/ChatMessage.vue.d.ts
600
+ type __VLS_Slots$7 = ChatMessageSlots;
601
+ declare const __VLS_base$7: import("vue").DefineComponent<ChatMessageProps, {
602
+ element: Readonly<import("vue").ShallowRef<HTMLElement | null>>;
603
+ }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<ChatMessageProps> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
604
+ declare const __VLS_export$10: __VLS_WithSlots$7<typeof __VLS_base$7, __VLS_Slots$7>;
605
+ declare const _default$10: typeof __VLS_export$10;
606
+ type __VLS_WithSlots$7<T, S> = T & {
607
+ new (): {
608
+ $slots: S;
609
+ };
610
+ };
611
+ //#endregion
612
+ //#region src/Chat/ChatMessageBubble.vue.d.ts
613
+ type __VLS_Slots$6 = ChatMessageBubbleSlots;
614
+ declare const __VLS_base$6: import("vue").DefineComponent<ChatMessageBubbleProps, {
615
+ element: Readonly<import("vue").ShallowRef<HTMLDivElement | null>>;
616
+ }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<ChatMessageBubbleProps> & Readonly<{}>, {
617
+ variant: ChatMessageBubbleVariant;
618
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
619
+ declare const __VLS_export$9: __VLS_WithSlots$6<typeof __VLS_base$6, __VLS_Slots$6>;
620
+ declare const _default$9: typeof __VLS_export$9;
621
+ type __VLS_WithSlots$6<T, S> = T & {
622
+ new (): {
623
+ $slots: S;
624
+ };
625
+ };
626
+ //#endregion
627
+ //#region src/Chat/ChatMessageList.vue.d.ts
628
+ type __VLS_Slots$5 = ChatMessageListSlots;
629
+ declare const __VLS_base$5: import("vue").DefineComponent<ChatMessageListProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<ChatMessageListProps> & Readonly<{}>, {
630
+ density: ChatDensity;
631
+ isStreaming: boolean;
632
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
633
+ declare const __VLS_export$8: __VLS_WithSlots$5<typeof __VLS_base$5, __VLS_Slots$5>;
634
+ declare const _default$8: typeof __VLS_export$8;
635
+ type __VLS_WithSlots$5<T, S> = T & {
636
+ new (): {
637
+ $slots: S;
638
+ };
639
+ };
640
+ //#endregion
641
+ //#region src/Chat/ChatMessageMetadata.vue.d.ts
642
+ type __VLS_Slots$4 = ChatMessageMetadataSlots;
643
+ declare const __VLS_base$4: import("vue").DefineComponent<ChatMessageMetadataProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<ChatMessageMetadataProps> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
644
+ declare const __VLS_export$7: __VLS_WithSlots$4<typeof __VLS_base$4, __VLS_Slots$4>;
645
+ declare const _default$7: typeof __VLS_export$7;
646
+ type __VLS_WithSlots$4<T, S> = T & {
647
+ new (): {
648
+ $slots: S;
649
+ };
650
+ };
651
+ //#endregion
652
+ //#region src/Chat/ChatReasoning.vue.d.ts
653
+ type __VLS_Props$1 = Omit<ChatReasoningProps, 'isExpanded'>;
654
+ type __VLS_Slots$3 = ChatReasoningSlots;
655
+ type __VLS_ModelProps$1 = {
656
+ 'isExpanded'?: boolean | undefined;
657
+ };
658
+ type __VLS_PublicProps$1 = __VLS_Props$1 & __VLS_ModelProps$1;
659
+ declare const __VLS_base$3: import("vue").DefineComponent<__VLS_PublicProps$1, {
660
+ element: Readonly<import("vue").ShallowRef<HTMLDivElement | null>>;
661
+ }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
662
+ "update:isExpanded": (value: boolean | undefined) => any;
663
+ expandedChange: (isExpanded: boolean) => any;
664
+ }, string, import("vue").PublicProps, Readonly<__VLS_PublicProps$1> & Readonly<{
665
+ "onUpdate:isExpanded"?: ((value: boolean | undefined) => any) | undefined;
666
+ onExpandedChange?: ((isExpanded: boolean) => any) | undefined;
667
+ }>, {
668
+ isStreaming: boolean;
669
+ defaultIsExpanded: boolean;
670
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
671
+ declare const __VLS_export$6: __VLS_WithSlots$3<typeof __VLS_base$3, __VLS_Slots$3>;
672
+ declare const _default$6: typeof __VLS_export$6;
673
+ type __VLS_WithSlots$3<T, S> = T & {
674
+ new (): {
675
+ $slots: S;
676
+ };
677
+ };
678
+ //#endregion
679
+ //#region src/Chat/ChatSendButton.vue.d.ts
680
+ type __VLS_Slots$2 = ChatSendButtonSlots;
681
+ declare const __VLS_base$2: import("vue").DefineComponent<ChatSendButtonProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
682
+ click: (event: MouseEvent) => any;
683
+ stop: () => any;
684
+ send: () => any;
685
+ }, string, import("vue").PublicProps, Readonly<ChatSendButtonProps> & Readonly<{
686
+ onClick?: ((event: MouseEvent) => any) | undefined;
687
+ onStop?: (() => any) | undefined;
688
+ onSend?: (() => any) | undefined;
689
+ }>, {
690
+ size: "sm" | "md";
691
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
692
+ declare const __VLS_export$5: __VLS_WithSlots$2<typeof __VLS_base$2, __VLS_Slots$2>;
693
+ declare const _default$5: typeof __VLS_export$5;
694
+ type __VLS_WithSlots$2<T, S> = T & {
695
+ new (): {
696
+ $slots: S;
697
+ };
698
+ };
699
+ //#endregion
700
+ //#region src/Chat/ChatSystemMessage.vue.d.ts
701
+ type __VLS_Slots$1 = ChatSystemMessageSlots;
702
+ declare const __VLS_base$1: import("vue").DefineComponent<ChatSystemMessageProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<ChatSystemMessageProps> & Readonly<{}>, {
703
+ variant: ChatSystemMessageVariant;
704
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
705
+ declare const __VLS_export$4: __VLS_WithSlots$1<typeof __VLS_base$1, __VLS_Slots$1>;
706
+ declare const _default$4: typeof __VLS_export$4;
707
+ type __VLS_WithSlots$1<T, S> = T & {
708
+ new (): {
709
+ $slots: S;
710
+ };
711
+ };
712
+ //#endregion
713
+ //#region src/Chat/ChatTokenizedText.vue.d.ts
714
+ declare const __VLS_export$3: import("vue").DefineComponent<ChatTokenizedTextProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<ChatTokenizedTextProps> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
715
+ declare const _default$3: typeof __VLS_export$3;
716
+ //#endregion
717
+ //#region src/Chat/ChatToolCalls.vue.d.ts
718
+ type __VLS_Props = Omit<ChatToolCallsProps, 'isExpanded'>;
719
+ type __VLS_Slots = ChatToolCallsSlots;
720
+ type __VLS_ModelProps = {
721
+ 'isExpanded'?: boolean | undefined;
722
+ };
723
+ type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
724
+ declare const __VLS_base: import("vue").DefineComponent<__VLS_PublicProps, {
725
+ element: Readonly<import("vue").ShallowRef<HTMLDivElement | null>>;
726
+ }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
727
+ "update:isExpanded": (value: boolean | undefined) => any;
728
+ expandedChange: (isExpanded: boolean) => any;
729
+ }, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
730
+ "onUpdate:isExpanded"?: ((value: boolean | undefined) => any) | undefined;
731
+ onExpandedChange?: ((isExpanded: boolean) => any) | undefined;
732
+ }>, {
733
+ defaultIsExpanded: boolean;
734
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
735
+ declare const __VLS_export$2: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
736
+ declare const _default$2: typeof __VLS_export$2;
737
+ type __VLS_WithSlots<T, S> = T & {
738
+ new (): {
739
+ $slots: S;
740
+ };
741
+ };
742
+ //#endregion
743
+ //#region src/Chat/ChatTypingIndicator.vue.d.ts
744
+ declare const __VLS_export$1: import("vue").DefineComponent<ChatTypingIndicatorProps, {
745
+ element: Readonly<import("vue").ShallowRef<HTMLDivElement | null>>;
746
+ }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<ChatTypingIndicatorProps> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
747
+ declare const _default$1: typeof __VLS_export$1;
748
+ //#endregion
749
+ //#region src/Chat/ChatUnreadDivider.vue.d.ts
750
+ declare const __VLS_export: import("vue").DefineComponent<ChatUnreadDividerProps, {
751
+ element: Readonly<import("vue").ShallowRef<HTMLDivElement | null>>;
752
+ }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<ChatUnreadDividerProps> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
753
+ declare const _default: typeof __VLS_export;
754
+ //#endregion
755
+ //#region src/Chat/context.d.ts
756
+ /** What a `ChatMessage` tells the bubble and metadata inside it. */
757
+ interface ChatMessageContextValue {
758
+ sender: ComputedRef<ChatMessageSender>;
759
+ density: ComputedRef<ChatDensity>;
760
+ }
761
+ declare function useChatMessageContext(): ChatMessageContextValue | undefined;
762
+ /** What a `ChatMessageList` tells the messages inside it. */
763
+ interface ChatListContextValue {
764
+ density: ComputedRef<ChatDensity>;
765
+ }
766
+ declare function useChatListContext(): ChatListContextValue | undefined;
767
+ /** What a `ChatLayout` tells the message list so scroll and resize stay in sync. */
768
+ interface ChatLayoutContextValue {
769
+ /** The element that actually scrolls. */
770
+ scrollContainer: Ref<HTMLElement | null>;
771
+ /** Attach to the element whose height should be observed. */
772
+ contentRef: (el: HTMLElement | null) => void;
773
+ }
774
+ declare function useChatLayoutContext(): ChatLayoutContextValue | undefined;
775
+ /** Draft and actions shared by the composer shell, its input, and the send button. */
776
+ interface ChatComposerContextValue {
777
+ value: ComputedRef<string>;
778
+ placeholder: ComputedRef<string>;
779
+ isDisabled: ComputedRef<boolean>;
780
+ isStopShown: ComputedRef<boolean>;
781
+ canSend: ComputedRef<boolean>;
782
+ onChange: (value: string) => void;
783
+ onSubmit: (value: string) => void;
784
+ onStop: () => void;
785
+ /** The input assigns this on mount and clears it on unmount. */
786
+ inputControl: Ref<ChatComposerInputControl | null>;
787
+ }
788
+ declare function useChatComposerContext(): ChatComposerContextValue | undefined;
789
+ //#endregion
790
+ //#region src/Chat/useChatComposerTokens.d.ts
791
+ interface TokenPortal {
792
+ id: string;
793
+ span: HTMLSpanElement;
794
+ token: ChatComposerToken;
795
+ }
796
+ interface UseChatComposerTokensOptions {
797
+ editable: Ref<HTMLElement | null>;
798
+ onEmitChange: () => void;
799
+ }
800
+ interface UseChatComposerTokensReturn {
801
+ portals: Ref<TokenPortal[]>;
802
+ insertToken: (token: ChatComposerToken) => string | undefined;
803
+ expandToken: (id: string) => void;
804
+ handleKeyDown: (event: KeyboardEvent) => boolean;
805
+ handlePaste: (event: ClipboardEvent) => boolean;
806
+ cleanupPortals: () => void;
807
+ clearPortals: () => void;
808
+ }
809
+ /**
810
+ * Inline chips inside the composer. The DOM span is the source of truth for
811
+ * serialization; Vue teleports the visible badge into it.
812
+ */
813
+ declare function useChatComposerTokens(options: UseChatComposerTokensOptions): UseChatComposerTokensReturn;
814
+ //#endregion
815
+ //#region src/Chat/useSpeechRecognition.d.ts
816
+ interface SpeechRecognitionError {
817
+ error: string;
818
+ message?: string;
819
+ }
820
+ interface UseSpeechRecognitionOptions {
821
+ /** BCP-47 language tag. Defaults to the active Astryx locale. */
822
+ lang?: string;
823
+ /** Keep listening until stop is called. @default true */
824
+ continuous?: boolean;
825
+ /** Report partial transcripts. @default true */
826
+ interimResults?: boolean;
827
+ /** Shared audio context. A lazy singleton is used when omitted. */
828
+ audioContext?: AudioContext;
829
+ /** Rewrite a transcript before it is reported. Runs before dictation's caps lock. */
830
+ transformTranscript?: (text: string) => string;
831
+ onTranscript?: (transcript: string, isFinal: boolean) => void;
832
+ onResult?: (transcript: string) => void;
833
+ onError?: (error: SpeechRecognitionError) => void;
834
+ onStart?: () => void;
835
+ onEnd?: () => void;
836
+ /** Called on each animation frame while the microphone is open. */
837
+ onVolumeSample?: (volume: number) => void;
838
+ /**
839
+ * Open one microphone analyser for volume and frequency bands.
840
+ * Dictation listens through `onVolumeSample` and does not open a second microphone.
841
+ * @default true
842
+ */
843
+ trackVolume?: boolean;
844
+ }
845
+ interface UseSpeechRecognitionReturn {
846
+ isSupported: ComputedRef<boolean>;
847
+ isListening: ComputedRef<boolean>;
848
+ isSpeaking: ComputedRef<boolean>;
849
+ volume: ComputedRef<number>;
850
+ bands: ComputedRef<number[]>;
851
+ rawBands: ComputedRef<number[]>;
852
+ interimTranscript: ComputedRef<string>;
853
+ start: () => void;
854
+ stop: () => void;
855
+ abort: () => void;
856
+ toggle: () => void;
857
+ }
858
+ /**
859
+ * Browser speech recognition plus a microphone level.
860
+ * No speech service is bundled: unsupported browsers report `isSupported` false.
861
+ */
862
+ declare function useSpeechRecognition(options?: UseSpeechRecognitionOptions): UseSpeechRecognitionReturn;
863
+ //#endregion
864
+ //#region src/Chat/useChatDictation.d.ts
865
+ interface UseChatDictationOptions extends Omit<UseSpeechRecognitionOptions, 'trackVolume' | 'onVolumeSample'> {
866
+ /** Play a short tone when listening starts and stops. @default false */
867
+ hasSounds?: boolean;
868
+ /**
869
+ * When set, interim words appear in the composer and a final phrase is inserted.
870
+ * Omit it to receive transcripts only through the callbacks.
871
+ */
872
+ input?: Ref<ChatComposerInputHandle | null>;
873
+ }
874
+ /**
875
+ * Voice input for the composer.
876
+ *
877
+ * Uses the browser SpeechRecognition API. Sustained loud speech is written in
878
+ * capitals. Pass `input` to drop interim text into ChatComposerInput.
879
+ */
880
+ declare function useChatDictation(options?: UseChatDictationOptions): UseSpeechRecognitionReturn;
881
+ //#endregion
882
+ //#region src/Chat/useChatPasteAsToken.d.ts
883
+ declare const PASTE_TOKEN_THRESHOLD = 200;
884
+ interface UseChatPasteAsTokenOptions {
885
+ /** Imperative handle of the composer input the chip is inserted into. */
886
+ input: Ref<ChatComposerInputHandle | null>;
887
+ /**
888
+ * Pastes longer than this many characters become a chip.
889
+ * @default 200
890
+ */
891
+ threshold?: number;
892
+ /** Builds the chip. The default is a neutral badge with a length label. */
893
+ toToken?: (text: string) => ChatComposerToken;
894
+ }
895
+ interface UseChatPasteAsTokenReturn {
896
+ /** Return true when the paste was turned into a chip. */
897
+ onPaste: (text: string) => boolean;
898
+ }
899
+ declare function pastedTextLabel(text: string): string;
900
+ declare function useChatPasteAsToken(options: UseChatPasteAsTokenOptions): UseChatPasteAsTokenReturn;
901
+ //#endregion
902
+ export { ChatComposerTokenBadge as $, _default$9 as A, ChatSystemMessageSlots as At, ChatComposerDrawerEmits as B, _default$2 as C, ChatReasoningEmits as Ct, _default$6 as D, ChatSendButtonProps as Dt, _default$5 as E, ChatSendButtonEmits as Et, _default$14 as F, ChatToolCallsEmits as Ft, ChatComposerInputControl as G, ChatComposerDrawerSlots as H, _default$15 as I, ChatToolCallsProps as It, ChatComposerInputProps as J, ChatComposerInputEmits as K, _default$16 as L, ChatToolCallsSlots as Lt, _default$11 as M, ChatTokenizedTextProps as Mt, _default$12 as N, ChatToolCallItem as Nt, _default$7 as O, ChatSendButtonSlots as Ot, _default$13 as P, ChatToolCallStatus as Pt, ChatComposerToken as Q, _default$17 as R, ChatTypingIndicatorProps as Rt, _default$1 as S, ChatMessageStatus as St, _default$4 as T, ChatReasoningSlots as Tt, ChatComposerElevation as U, ChatComposerDrawerProps as V, ChatComposerEmits as W, ChatComposerSlots as X, ChatComposerProps as Y, ChatComposerStatus as Z, useChatComposerContext as _, ChatMessageMetadataProps as _t, useChatPasteAsToken as a, ChatDictationButtonProps as at, useChatMessageContext as b, ChatMessageSender as bt, SpeechRecognitionError as c, ChatLayoutScrollButtonProps as ct, useSpeechRecognition as d, ChatMessageBubbleGroup as dt, ChatComposerTokenCustom as et, TokenPortal as f, ChatMessageBubbleProps as ft, ChatComposerContextValue as g, ChatMessageListSlots as gt, useChatComposerTokens as h, ChatMessageListProps as ht, pastedTextLabel as i, ChatDensity as it, _default$10 as j, ChatSystemMessageVariant as jt, _default$8 as k, ChatSystemMessageProps as kt, UseSpeechRecognitionOptions as l, ChatLayoutScrollSlotProps as lt, UseChatComposerTokensReturn as m, ChatMessageBubbleVariant as mt, UseChatPasteAsTokenOptions as n, ChatComposerTrigger as nt, UseChatDictationOptions as o, ChatLayoutProps as ot, UseChatComposerTokensOptions as p, ChatMessageBubbleSlots as pt, ChatComposerInputHandle as q, UseChatPasteAsTokenReturn as r, ChatComposerTriggerItem as rt, useChatDictation as s, ChatLayoutScrollButtonEmits as st, PASTE_TOKEN_THRESHOLD as t, ChatComposerTokenElementProps as tt, UseSpeechRecognitionReturn as u, ChatLayoutSlots as ut, useChatLayoutContext as v, ChatMessageMetadataSlots as vt, _default$3 as w, ChatReasoningProps as wt, _default as x, ChatMessageSlots as xt, useChatListContext as y, ChatMessageProps as yt, ChatComposerDensity as z, ChatUnreadDividerProps as zt };