@lostgradient/cinder 0.6.0 → 0.8.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 (1842) hide show
  1. package/CHANGELOG.md +30 -0
  2. package/README.md +6 -1
  3. package/components.json +3 -3
  4. package/dist/_internal/strict-stable-context.d.ts +9 -0
  5. package/dist/components/access-gate/index.js +26 -24
  6. package/dist/components/accordion/accordion.context.d.ts +2 -3
  7. package/dist/components/accordion/index.js +22 -8
  8. package/dist/components/accordion-item/index.js +22 -8
  9. package/dist/components/action-row/index.js +29 -28
  10. package/dist/components/alert/index.js +19 -18
  11. package/dist/components/alert-dialog/index.js +62 -62
  12. package/dist/components/approval-card/index.js +342 -342
  13. package/dist/components/area-chart/index.js +65 -67
  14. package/dist/components/aspect-ratio/index.js +12 -11
  15. package/dist/components/autocomplete/index.js +60 -59
  16. package/dist/components/avatar/index.js +31 -29
  17. package/dist/components/avatar-group/index.js +69 -65
  18. package/dist/components/backdrop/index.js +16 -15
  19. package/dist/components/badge/index.js +21 -20
  20. package/dist/components/banner/index.js +19 -18
  21. package/dist/components/bar-chart/index.js +63 -66
  22. package/dist/components/bento-cell/index.js +16 -15
  23. package/dist/components/bento-grid/index.js +30 -28
  24. package/dist/components/blog-section/index.js +70 -66
  25. package/dist/components/breadcrumbs/index.js +9 -9
  26. package/dist/components/button/index.js +40 -41
  27. package/dist/components/button-group/index.js +12 -11
  28. package/dist/components/calendar/index.js +25 -24
  29. package/dist/components/callout/index.js +23 -24
  30. package/dist/components/capability-gate/index.js +33 -32
  31. package/dist/components/card/index.js +32 -31
  32. package/dist/components/carousel/index.js +40 -44
  33. package/dist/components/chat/chat.schema.js +6 -1
  34. package/dist/components/chat/chat.svelte.d.ts +2 -0
  35. package/dist/components/chat/chat.types.d.ts +6 -0
  36. package/dist/components/chat/container/chat.svelte.d.ts +2 -0
  37. package/dist/components/chat/index.d.ts +1 -1
  38. package/dist/components/chat/index.js +4479 -7891
  39. package/dist/components/chat/input/chat-input.svelte.d.ts +3 -0
  40. package/dist/components/chat-conversation-header/index.js +123 -120
  41. package/dist/components/chat-conversation-list/index.js +28 -28
  42. package/dist/components/checkbox/index.js +29 -28
  43. package/dist/components/checkbox-group/index.js +9 -9
  44. package/dist/components/chip/index.js +11 -12
  45. package/dist/components/choice-grid/index.js +17 -16
  46. package/dist/components/click-away-listener/index.js +11 -10
  47. package/dist/components/code-block/index.js +24 -24
  48. package/dist/components/collapsible/index.js +23 -22
  49. package/dist/components/color-field/index.js +49 -48
  50. package/dist/components/color-picker/index.js +13 -13
  51. package/dist/components/color-swatch-picker/index.js +5 -5
  52. package/dist/components/combobox/index.js +34 -33
  53. package/dist/components/command-item/index.js +9 -9
  54. package/dist/components/command-menu/index.js +14 -13
  55. package/dist/components/command-palette/index.js +7 -7
  56. package/dist/components/confirm-dialog/index.js +62 -62
  57. package/dist/components/container/index.js +13 -12
  58. package/dist/components/context-menu/index.js +84 -77
  59. package/dist/components/context-menu-trigger/index.js +17 -16
  60. package/dist/components/copy-button/index.js +15 -14
  61. package/dist/components/cta-section/index.js +74 -73
  62. package/dist/components/data-grid/index.js +41 -40
  63. package/dist/components/data-list/index.js +17 -16
  64. package/dist/components/data-table/index.js +133 -130
  65. package/dist/components/date-picker/index.js +72 -69
  66. package/dist/components/date-range-field/index.js +100 -96
  67. package/dist/components/description-list/index.js +15 -14
  68. package/dist/components/diff-statistics/index.js +32 -31
  69. package/dist/components/diff-viewer/index.js +263 -246
  70. package/dist/components/divider/index.js +19 -19
  71. package/dist/components/drawer/index.js +43 -41
  72. package/dist/components/dropdown/index.js +100 -92
  73. package/dist/components/dropdown-group/index.js +11 -10
  74. package/dist/components/dropdown-item/index.js +22 -21
  75. package/dist/components/dropdown-label/index.js +3 -2
  76. package/dist/components/dropdown-menu/index.js +23 -21
  77. package/dist/components/dropdown-separator/index.js +3 -2
  78. package/dist/components/dropdown-trigger/index.js +15 -14
  79. package/dist/components/empty-state/index.js +21 -20
  80. package/dist/components/event-stream-viewer/index.js +108 -107
  81. package/dist/components/event-timeline/index.js +27 -26
  82. package/dist/components/experimental/json-viewer/index.js +25 -27
  83. package/dist/components/experimental/message/index.js +19 -18
  84. package/dist/components/faceted-filter-bar/index.js +101 -101
  85. package/dist/components/feature-section/index.js +42 -40
  86. package/dist/components/feed/index.js +31 -29
  87. package/dist/components/feed-event/index.js +22 -21
  88. package/dist/components/file-upload/index.js +45 -44
  89. package/dist/components/floating-action-button/index.js +22 -21
  90. package/dist/components/focus-trap/index.js +13 -12
  91. package/dist/components/footer/index.js +35 -35
  92. package/dist/components/form-field/index.js +9 -9
  93. package/dist/components/form-section/index.js +10 -11
  94. package/dist/components/grid/index.js +29 -27
  95. package/dist/components/grid-item/index.js +15 -14
  96. package/dist/components/grid-list/index.js +37 -35
  97. package/dist/components/grid-list-item/index.js +28 -27
  98. package/dist/components/hero-section/index.js +42 -40
  99. package/dist/components/hover-card/index.js +18 -17
  100. package/dist/components/image/index.js +23 -22
  101. package/dist/components/inline-loading/index.js +18 -16
  102. package/dist/components/input/index.js +45 -44
  103. package/dist/components/invocation-rule-builder/index.js +58 -61
  104. package/dist/components/json-schema-editor/index.js +527 -503
  105. package/dist/components/json-viewer/index.js +25 -27
  106. package/dist/components/kanban-board/index.js +24 -25
  107. package/dist/components/kbd/index.js +11 -10
  108. package/dist/components/keyboard-shortcuts/index.js +33 -31
  109. package/dist/components/label/index.js +16 -15
  110. package/dist/components/line-chart/index.js +66 -68
  111. package/dist/components/link/index.js +21 -20
  112. package/dist/components/load-more/index.js +7 -7
  113. package/dist/components/logo-cloud/index.js +39 -37
  114. package/dist/components/markdown-editor/index.js +368 -340
  115. package/dist/components/marquee/index.js +15 -14
  116. package/dist/components/masonry/index.js +12 -11
  117. package/dist/components/matrix-chart/index.js +50 -50
  118. package/dist/components/media-controls/index.js +33 -32
  119. package/dist/components/mega-menu/index.js +41 -43
  120. package/dist/components/menu-bar/index.js +89 -85
  121. package/dist/components/message/index.js +19 -18
  122. package/dist/components/meter/index.js +5 -5
  123. package/dist/components/modal/index.js +19 -18
  124. package/dist/components/multi-select/index.js +27 -27
  125. package/dist/components/navigation-bar/index.js +75 -37
  126. package/dist/components/navigation-item/index.js +20 -19
  127. package/dist/components/newsletter-section/index.js +121 -119
  128. package/dist/components/number-input/index.js +36 -36
  129. package/dist/components/page-header/index.js +17 -16
  130. package/dist/components/pagination/index.js +21 -20
  131. package/dist/components/payload-inspector/index.js +132 -136
  132. package/dist/components/permission-matrix/index.js +39 -39
  133. package/dist/components/phone-input/index.js +13 -13
  134. package/dist/components/pin-input/index.js +13 -13
  135. package/dist/components/popover/index.js +18 -17
  136. package/dist/components/portal/index.js +12 -11
  137. package/dist/components/pricing-card/index.js +62 -62
  138. package/dist/components/pricing-section/index.js +96 -94
  139. package/dist/components/progress/index.js +13 -13
  140. package/dist/components/qr-code/index.js +23 -22
  141. package/dist/components/radio-group/index.js +26 -25
  142. package/dist/components/rating/index.js +16 -17
  143. package/dist/components/resizable-panels/index.js +21 -20
  144. package/dist/components/review-editor/index.js +768 -743
  145. package/dist/components/run-step-timeline/index.js +127 -122
  146. package/dist/components/schema-form/index.js +200 -195
  147. package/dist/components/scroll-area/index.js +15 -14
  148. package/dist/components/search-field/index.js +24 -23
  149. package/dist/components/secret-value-field/index.js +35 -34
  150. package/dist/components/section-heading/index.js +11 -11
  151. package/dist/components/segment/index.js +37 -22
  152. package/dist/components/segmented-control/index.d.ts +3 -1
  153. package/dist/components/segmented-control/index.js +188 -74
  154. package/dist/components/segmented-control/segmented-control-state.svelte.d.ts +2 -1
  155. package/dist/components/select/index.js +29 -29
  156. package/dist/components/selection-popover/index.js +32 -30
  157. package/dist/components/share-card/index.js +37 -38
  158. package/dist/components/sheet/index.js +44 -42
  159. package/dist/components/shortcut-hint/index.js +29 -28
  160. package/dist/components/side-navigation/index.js +57 -53
  161. package/dist/components/side-navigation-group/index.js +21 -20
  162. package/dist/components/side-navigation-item/index.js +24 -22
  163. package/dist/components/sidebar/index.js +74 -69
  164. package/dist/components/sidebar/sidebar.css +4 -0
  165. package/dist/components/skip-link/index.js +11 -10
  166. package/dist/components/slider/index.js +15 -15
  167. package/dist/components/sortable-list/index.js +5 -5
  168. package/dist/components/source-diff-viewer/index.js +35 -34
  169. package/dist/components/sparkbar/index.js +20 -19
  170. package/dist/components/spectrogram/index.js +44 -44
  171. package/dist/components/spectrum-chart/index.js +39 -39
  172. package/dist/components/speed-dial/index.js +54 -51
  173. package/dist/components/speed-dial-action/index.js +39 -37
  174. package/dist/components/spinner/index.js +3 -2
  175. package/dist/components/stacked-list-item/index.js +30 -29
  176. package/dist/components/stat/index.js +21 -20
  177. package/dist/components/stat-group/index.js +34 -32
  178. package/dist/components/stats-section/index.js +65 -61
  179. package/dist/components/status-dot/index.js +21 -20
  180. package/dist/components/steps/index.d.ts +1 -1
  181. package/dist/components/steps/index.js +77 -63
  182. package/dist/components/steps/steps.css +15 -1
  183. package/dist/components/steps/steps.schema.js +6 -1
  184. package/dist/components/steps/steps.svelte.d.ts +2 -2
  185. package/dist/components/steps/steps.types.d.ts +12 -0
  186. package/dist/components/surface/index.js +10 -9
  187. package/dist/components/tab/index.js +5 -5
  188. package/dist/components/tab-panel/index.js +3 -3
  189. package/dist/components/table/index.js +64 -60
  190. package/dist/components/table-cell/index.js +11 -10
  191. package/dist/components/table-header-cell/index.js +17 -16
  192. package/dist/components/table-of-contents/index.js +21 -20
  193. package/dist/components/table-row/index.js +21 -20
  194. package/dist/components/tabs/index.d.ts +10 -4
  195. package/dist/components/tabs/index.js +13 -10
  196. package/dist/components/tag-input/index.js +36 -35
  197. package/dist/components/team-section/index.js +143 -136
  198. package/dist/components/testimonial-section/index.js +100 -95
  199. package/dist/components/textarea/index.js +30 -29
  200. package/dist/components/time-field/index.js +40 -40
  201. package/dist/components/timeline/index.js +40 -38
  202. package/dist/components/toast-region/index.js +24 -25
  203. package/dist/components/toggle/index.js +5 -5
  204. package/dist/components/toolbar/index.js +28 -25
  205. package/dist/components/tooltip/index.js +12 -11
  206. package/dist/components/transfer-list/index.js +22 -22
  207. package/dist/components/tree/index.js +83 -82
  208. package/dist/components/tree-item/index.js +21 -21
  209. package/dist/components/typography/index.js +13 -12
  210. package/dist/components/virtual-list/index.js +20 -19
  211. package/dist/components/visually-hidden/index.js +11 -10
  212. package/dist/components/waveform/index.js +38 -38
  213. package/dist/index.d.ts +1 -1
  214. package/dist/index.js +21360 -22817
  215. package/dist/server/components/access-gate/index.js +1 -1
  216. package/dist/server/components/accordion/index.js +4 -3
  217. package/dist/server/components/accordion-item/index.js +4 -3
  218. package/dist/server/components/approval-card/index.js +1 -1
  219. package/dist/server/components/chat/index.js +2 -16
  220. package/dist/server/components/color-field/index.js +2 -2
  221. package/dist/server/components/color-picker/index.js +1 -1
  222. package/dist/server/components/command-menu/index.js +1 -1
  223. package/dist/server/components/command-palette/index.js +1 -1
  224. package/dist/server/components/diff-viewer/index.js +6 -6
  225. package/dist/server/components/json-schema-editor/index.js +7 -7
  226. package/dist/server/components/markdown-editor/index.js +5 -5
  227. package/dist/server/components/navigation-bar/index.js +1 -1
  228. package/dist/server/components/review-editor/index.js +17 -17
  229. package/dist/server/components/segment/index.js +3 -3
  230. package/dist/server/components/segmented-control/index.js +9 -5
  231. package/dist/server/components/sidebar/index.js +1 -1
  232. package/dist/server/components/steps/index.js +1 -1
  233. package/dist/server/components/tabs/index.js +14 -5
  234. package/dist/server/index.js +23 -24
  235. package/dist/server/index.server-4nk7gy0q.js +294 -0
  236. package/dist/server/index.server-4ztq565m.js +9 -0
  237. package/dist/server/index.server-5d01cn4f.js +52 -0
  238. package/dist/server/index.server-5tf22d6e.js +221 -0
  239. package/dist/server/index.server-69epaape.js +144 -0
  240. package/dist/server/index.server-a2hz77tt.js +458 -0
  241. package/dist/server/index.server-bn02606y.js +19 -0
  242. package/dist/server/index.server-cf6pxeyg.js +9 -0
  243. package/dist/server/index.server-e3fnv1g6.js +223 -0
  244. package/dist/server/index.server-ejyf7e48.js +9 -0
  245. package/dist/server/index.server-hfx487zj.js +42 -0
  246. package/dist/server/index.server-j3ddzcaa.js +1028 -0
  247. package/dist/server/index.server-jeqg2d22.js +123 -0
  248. package/dist/server/index.server-jtj3r53y.js +9 -0
  249. package/dist/server/index.server-jync915v.js +2309 -0
  250. package/dist/server/index.server-pe929n15.js +107 -0
  251. package/dist/server/index.server-v4zabrsx.js +3822 -0
  252. package/dist/server/index.server-w83kmcrx.js +1163 -0
  253. package/package.json +2211 -1594
  254. package/src/_internal/anchored-overlay.svelte.ts +158 -198
  255. package/src/_internal/chart/chart-interaction.svelte.ts +134 -166
  256. package/src/_internal/strict-stable-context.ts +27 -0
  257. package/src/_internal/tree-drag-controller.svelte.ts +256 -315
  258. package/src/_internal/tree-registry.svelte.ts +154 -222
  259. package/src/_internal/use-virtualizer.svelte.ts +168 -217
  260. package/src/components/_internal/command-list-context.ts +79 -0
  261. package/src/components/_internal/create-command-list-state.svelte.ts +144 -0
  262. package/src/components/_internal/create-sliding-dialog-state.svelte.ts +146 -0
  263. package/src/components/_internal/side-navigation-group-context.ts +48 -0
  264. package/src/components/_radio/index.ts +6 -0
  265. package/src/components/_radio/radio.schema.ts +41 -0
  266. package/src/components/_radio/radio.svelte +65 -0
  267. package/src/components/_radio/radio.types.ts +27 -0
  268. package/src/components/_radio/radio.variables.ts +3 -0
  269. package/src/components/_sortable-item.svelte +519 -0
  270. package/src/components/_timeline-item/index.ts +5 -0
  271. package/src/components/_timeline-item/timeline-item.svelte +46 -0
  272. package/src/components/_timeline-item/timeline-item.types.ts +51 -0
  273. package/src/components/_tree-expand-all/index.ts +5 -0
  274. package/src/components/_tree-expand-all/tree-expand-all.svelte +58 -0
  275. package/src/components/_tree-expand-all/tree-expand-all.types.ts +15 -0
  276. package/src/components/_tree-select-all/index.ts +5 -0
  277. package/src/components/_tree-select-all/tree-select-all.schema.ts +43 -0
  278. package/src/components/_tree-select-all/tree-select-all.svelte +41 -0
  279. package/src/components/_tree-select-all/tree-select-all.types.ts +15 -0
  280. package/src/components/_tree-select-all/tree-select-all.variables.ts +3 -0
  281. package/src/components/_visually-hidden-live-region.svelte +65 -0
  282. package/src/components/access-gate/access-gate-inline.svelte +336 -0
  283. package/src/components/access-gate/access-gate.schema.ts +43 -0
  284. package/src/components/access-gate/access-gate.svelte +52 -0
  285. package/src/components/access-gate/access-gate.types.ts +46 -0
  286. package/src/components/access-gate/access-gate.variables.ts +3 -0
  287. package/src/components/access-gate/index.ts +6 -0
  288. package/src/components/accordion/accordion.context.ts +16 -0
  289. package/src/components/accordion/accordion.schema.ts +30 -0
  290. package/src/components/accordion/accordion.svelte +34 -0
  291. package/src/components/accordion/accordion.types.ts +37 -0
  292. package/src/components/accordion/accordion.variables.ts +3 -0
  293. package/src/components/accordion/index.ts +16 -0
  294. package/src/components/accordion-item/accordion-item.schema.ts +39 -0
  295. package/src/components/accordion-item/accordion-item.svelte +60 -0
  296. package/src/components/accordion-item/accordion-item.types.ts +33 -0
  297. package/src/components/accordion-item/accordion-item.variables.ts +3 -0
  298. package/src/components/accordion-item/index.ts +6 -0
  299. package/src/components/action-row/action-row.schema.ts +74 -0
  300. package/src/components/action-row/action-row.svelte +51 -0
  301. package/src/components/action-row/action-row.types.ts +50 -0
  302. package/src/components/action-row/action-row.variables.ts +3 -0
  303. package/src/components/action-row/index.ts +11 -0
  304. package/src/components/alert/alert.schema.ts +43 -0
  305. package/src/components/alert/alert.svelte +108 -0
  306. package/src/components/alert/alert.types.ts +58 -0
  307. package/src/components/alert/alert.variables.ts +3 -0
  308. package/src/components/alert/index.ts +6 -0
  309. package/src/components/alert-dialog/alert-dialog.schema.ts +60 -0
  310. package/src/components/alert-dialog/alert-dialog.svelte +50 -0
  311. package/src/components/alert-dialog/alert-dialog.types.ts +19 -0
  312. package/src/components/alert-dialog/alert-dialog.variables.ts +3 -0
  313. package/src/components/alert-dialog/index.ts +6 -0
  314. package/src/components/approval-card/approval-card-state.ts +24 -0
  315. package/src/components/approval-card/approval-card.schema.ts +219 -0
  316. package/src/components/approval-card/approval-card.svelte +575 -0
  317. package/src/components/approval-card/approval-card.types.ts +202 -0
  318. package/src/components/approval-card/approval-card.variables.ts +3 -0
  319. package/src/components/approval-card/index.ts +18 -0
  320. package/src/components/area-chart/area-chart.schema.ts +149 -0
  321. package/src/components/area-chart/area-chart.svelte +337 -0
  322. package/src/components/area-chart/area-chart.types.ts +61 -0
  323. package/src/components/area-chart/area-chart.variables.ts +3 -0
  324. package/src/components/area-chart/index.ts +6 -0
  325. package/src/components/aspect-ratio/aspect-ratio.schema.ts +147 -0
  326. package/src/components/aspect-ratio/aspect-ratio.svelte +23 -0
  327. package/src/components/aspect-ratio/aspect-ratio.types.ts +53 -0
  328. package/src/components/aspect-ratio/aspect-ratio.variables.ts +3 -0
  329. package/src/components/aspect-ratio/index.ts +10 -0
  330. package/src/components/autocomplete/autocomplete.schema.ts +90 -0
  331. package/src/components/autocomplete/autocomplete.svelte +488 -0
  332. package/src/components/autocomplete/autocomplete.types.ts +74 -0
  333. package/src/components/autocomplete/autocomplete.variables.ts +3 -0
  334. package/src/components/autocomplete/index.ts +11 -0
  335. package/src/components/avatar/avatar.schema.ts +41 -0
  336. package/src/components/avatar/avatar.svelte +48 -0
  337. package/src/components/avatar/avatar.types.ts +33 -0
  338. package/src/components/avatar/avatar.variables.ts +3 -0
  339. package/src/components/avatar/index.ts +6 -0
  340. package/src/components/avatar-group/avatar-group.schema.ts +74 -0
  341. package/src/components/avatar-group/avatar-group.svelte +138 -0
  342. package/src/components/avatar-group/avatar-group.types.ts +97 -0
  343. package/src/components/avatar-group/avatar-group.variables.ts +3 -0
  344. package/src/components/avatar-group/index.ts +6 -0
  345. package/src/components/backdrop/backdrop.schema.ts +52 -0
  346. package/src/components/backdrop/backdrop.svelte +80 -0
  347. package/src/components/backdrop/backdrop.types.ts +30 -0
  348. package/src/components/backdrop/backdrop.variables.ts +3 -0
  349. package/src/components/backdrop/index.ts +6 -0
  350. package/src/components/badge/badge.schema.ts +46 -0
  351. package/src/components/badge/badge.svelte +75 -0
  352. package/src/components/badge/badge.types.ts +67 -0
  353. package/src/components/badge/badge.variables.ts +3 -0
  354. package/src/components/badge/index.ts +6 -0
  355. package/src/components/banner/banner.schema.ts +44 -0
  356. package/src/components/banner/banner.svelte +117 -0
  357. package/src/components/banner/banner.types.ts +46 -0
  358. package/src/components/banner/banner.variables.ts +3 -0
  359. package/src/components/banner/index.ts +6 -0
  360. package/src/components/bar-chart/bar-chart.schema.ts +153 -0
  361. package/src/components/bar-chart/bar-chart.svelte +350 -0
  362. package/src/components/bar-chart/bar-chart.types.ts +62 -0
  363. package/src/components/bar-chart/bar-chart.variables.ts +3 -0
  364. package/src/components/bar-chart/index.ts +6 -0
  365. package/src/components/bento-cell/bento-cell.schema.ts +109 -0
  366. package/src/components/bento-cell/bento-cell.svelte +32 -0
  367. package/src/components/bento-cell/bento-cell.types.ts +24 -0
  368. package/src/components/bento-cell/bento-cell.variables.ts +3 -0
  369. package/src/components/bento-cell/index.ts +6 -0
  370. package/src/components/bento-grid/bento-grid.schema.ts +60 -0
  371. package/src/components/bento-grid/bento-grid.svelte +67 -0
  372. package/src/components/bento-grid/bento-grid.types.ts +33 -0
  373. package/src/components/bento-grid/bento-grid.variables.ts +3 -0
  374. package/src/components/bento-grid/index.ts +12 -0
  375. package/src/components/blog-section/blog-section.schema.ts +86 -0
  376. package/src/components/blog-section/blog-section.svelte +79 -0
  377. package/src/components/blog-section/blog-section.types.ts +59 -0
  378. package/src/components/blog-section/blog-section.variables.ts +3 -0
  379. package/src/components/blog-section/index.ts +6 -0
  380. package/src/components/breadcrumbs/breadcrumbs.schema.ts +25 -0
  381. package/src/components/breadcrumbs/breadcrumbs.svelte +31 -0
  382. package/src/components/breadcrumbs/breadcrumbs.types.ts +43 -0
  383. package/src/components/breadcrumbs/breadcrumbs.variables.ts +3 -0
  384. package/src/components/breadcrumbs/index.ts +6 -0
  385. package/src/components/button/button.constraints.ts +102 -0
  386. package/src/components/button/button.schema.ts +68 -0
  387. package/src/components/button/button.svelte +154 -0
  388. package/src/components/button/button.types.ts +120 -0
  389. package/src/components/button/button.variables.ts +3 -0
  390. package/src/components/button/index.ts +6 -0
  391. package/src/components/button-group/button-group.schema.ts +39 -0
  392. package/src/components/button-group/button-group.svelte +96 -0
  393. package/src/components/button-group/button-group.types.ts +34 -0
  394. package/src/components/button-group/button-group.variables.ts +3 -0
  395. package/src/components/button-group/index.ts +6 -0
  396. package/src/components/calendar/calendar.schema.ts +65 -0
  397. package/src/components/calendar/calendar.svelte +308 -0
  398. package/src/components/calendar/calendar.types.ts +31 -0
  399. package/src/components/calendar/calendar.variables.ts +3 -0
  400. package/src/components/calendar/index.ts +6 -0
  401. package/src/components/callout/callout.schema.ts +46 -0
  402. package/src/components/callout/callout.svelte +78 -0
  403. package/src/components/callout/callout.types.ts +92 -0
  404. package/src/components/callout/callout.variables.ts +3 -0
  405. package/src/components/callout/index.ts +6 -0
  406. package/src/components/capability-gate/capability-gate.schema.ts +76 -0
  407. package/src/components/capability-gate/capability-gate.svelte +137 -0
  408. package/src/components/capability-gate/capability-gate.types.ts +83 -0
  409. package/src/components/capability-gate/capability-gate.variables.ts +3 -0
  410. package/src/components/capability-gate/index.ts +10 -0
  411. package/src/components/card/card.schema.ts +71 -0
  412. package/src/components/card/card.svelte +73 -0
  413. package/src/components/card/card.types.ts +58 -0
  414. package/src/components/card/card.variables.ts +3 -0
  415. package/src/components/card/index.ts +12 -0
  416. package/src/components/carousel/carousel.schema.ts +50 -0
  417. package/src/components/carousel/carousel.svelte +221 -0
  418. package/src/components/carousel/carousel.types.ts +47 -0
  419. package/src/components/carousel/carousel.variables.ts +3 -0
  420. package/src/components/carousel/index.ts +11 -0
  421. package/src/components/chart.types.ts +116 -0
  422. package/src/components/chat/adapter/chat-adapter.ts +132 -0
  423. package/src/components/chat/adapter/index.ts +15 -0
  424. package/src/components/chat/artifact/artifact-panel.svelte +112 -0
  425. package/src/components/chat/artifact/artifact-viewer.svelte +101 -0
  426. package/src/components/chat/artifact/chat-artifact-layout.svelte +56 -0
  427. package/src/components/chat/artifact/index.ts +3 -0
  428. package/src/components/chat/builders.ts +33 -0
  429. package/src/components/chat/chat.schema.json +5 -0
  430. package/src/components/chat/chat.schema.ts +292 -0
  431. package/src/components/chat/chat.svelte +55 -0
  432. package/src/components/chat/chat.types.ts +252 -0
  433. package/src/components/chat/chat.variables.ts +3 -0
  434. package/src/components/chat/container/chat-events.ts +26 -0
  435. package/src/components/chat/container/chat-history-trigger.svelte +95 -0
  436. package/src/components/chat/container/chat-jump-controls.svelte +191 -0
  437. package/src/components/chat/container/chat-participant-typing.svelte +128 -0
  438. package/src/components/chat/container/chat-search-bar.svelte +219 -0
  439. package/src/components/chat/container/chat-status-announcer.svelte +22 -0
  440. package/src/components/chat/container/chat.svelte +1809 -0
  441. package/src/components/chat/container/index.ts +64 -0
  442. package/src/components/chat/container/scroll-utilities.ts +204 -0
  443. package/src/components/chat/container/use-chat-disclosure-state.svelte.ts +62 -0
  444. package/src/components/chat/container/use-chat-keyboard-nav.svelte.ts +153 -0
  445. package/src/components/chat/container/use-chat-message-groups.svelte.ts +146 -0
  446. package/src/components/chat/container/use-chat-read-receipts.svelte.ts +62 -0
  447. package/src/components/chat/container/use-chat-scroll-state.svelte.ts +292 -0
  448. package/src/components/chat/container/use-chat-search.svelte.ts +116 -0
  449. package/src/components/chat/container/use-chat-typing-indicator.svelte.ts +153 -0
  450. package/src/components/chat/container/use-chat-unread-state.svelte.ts +170 -0
  451. package/src/components/chat/container/use-chat-virtualizer.svelte.ts +260 -0
  452. package/src/components/chat/conversation-model.ts +44 -0
  453. package/src/components/chat/export/conversation-export-actions.svelte +174 -0
  454. package/src/components/chat/export/index.ts +9 -0
  455. package/src/components/chat/index.ts +125 -0
  456. package/src/components/chat/input/attachment-kind.ts +28 -0
  457. package/src/components/chat/input/chat-attachment-preview.svelte +223 -0
  458. package/src/components/chat/input/chat-attachment.ts +12 -0
  459. package/src/components/chat/input/chat-input.svelte +793 -0
  460. package/src/components/chat/input/index.ts +4 -0
  461. package/src/components/chat/message/chat-date-separator.svelte +87 -0
  462. package/src/components/chat/message/chat-message-parts-renderer.svelte +139 -0
  463. package/src/components/chat/message/chat-message-parts.ts +163 -0
  464. package/src/components/chat/message/chat-message.svelte +861 -0
  465. package/src/components/chat/message/chat-read-receipt.svelte +85 -0
  466. package/src/components/chat/message/image-lightbox.svelte +255 -0
  467. package/src/components/chat/message/index.ts +6 -0
  468. package/src/components/chat/message/markdown-preview.svelte +77 -0
  469. package/src/components/chat/message/message-attachments.svelte +178 -0
  470. package/src/components/chat/message/message-content.svelte +132 -0
  471. package/src/components/chat/message/parts/image-part.svelte +11 -0
  472. package/src/components/chat/message/parts/markdown-part.svelte +17 -0
  473. package/src/components/chat/message/parts/reasoning-part.svelte +274 -0
  474. package/src/components/chat/message/parts/step-part.svelte +127 -0
  475. package/src/components/chat/message/parts/suggestion-part.svelte +83 -0
  476. package/src/components/chat/message/parts/tool-approval-part.svelte +298 -0
  477. package/src/components/chat/message/parts/tool-call-part.svelte +19 -0
  478. package/src/components/chat/message/parts/tool-result-part.svelte +65 -0
  479. package/src/components/chat/message/tool-call-group.svelte +274 -0
  480. package/src/components/chat/message/tool-payload-code.svelte +35 -0
  481. package/src/components/chat/utilities/conversation.ts +26 -0
  482. package/src/components/chat/utilities/index.ts +33 -0
  483. package/src/components/chat/utilities/types.ts +288 -0
  484. package/src/components/chat/utilities/utilities.ts +507 -0
  485. package/src/components/chat-conversation-header/chat-conversation-header.schema.ts +38 -0
  486. package/src/components/chat-conversation-header/chat-conversation-header.svelte +49 -0
  487. package/src/components/chat-conversation-header/chat-conversation-header.types.ts +20 -0
  488. package/src/components/chat-conversation-header/chat-conversation-header.variables.ts +3 -0
  489. package/src/components/chat-conversation-header/index.ts +9 -0
  490. package/src/components/chat-conversation-list/chat-conversation-list.schema.ts +52 -0
  491. package/src/components/chat-conversation-list/chat-conversation-list.svelte +75 -0
  492. package/src/components/chat-conversation-list/chat-conversation-list.types.ts +18 -0
  493. package/src/components/chat-conversation-list/chat-conversation-list.variables.ts +3 -0
  494. package/src/components/chat-conversation-list/conversation-summary.ts +88 -0
  495. package/src/components/chat-conversation-list/index.ts +11 -0
  496. package/src/components/checkbox/checkbox.schema.ts +59 -0
  497. package/src/components/checkbox/checkbox.svelte +126 -0
  498. package/src/components/checkbox/checkbox.types.ts +39 -0
  499. package/src/components/checkbox/checkbox.variables.ts +3 -0
  500. package/src/components/checkbox/index.ts +6 -0
  501. package/src/components/checkbox-group/checkbox-group.schema.ts +54 -0
  502. package/src/components/checkbox-group/checkbox-group.svelte +69 -0
  503. package/src/components/checkbox-group/checkbox-group.types.ts +58 -0
  504. package/src/components/checkbox-group/checkbox-group.variables.ts +3 -0
  505. package/src/components/checkbox-group/index.ts +6 -0
  506. package/src/components/chip/chip.schema.ts +68 -0
  507. package/src/components/chip/chip.svelte +156 -0
  508. package/src/components/chip/chip.types.ts +89 -0
  509. package/src/components/chip/chip.variables.ts +3 -0
  510. package/src/components/chip/index.ts +15 -0
  511. package/src/components/choice-grid/choice-grid-context.ts +30 -0
  512. package/src/components/choice-grid/choice-grid.schema.ts +73 -0
  513. package/src/components/choice-grid/choice-grid.svelte +205 -0
  514. package/src/components/choice-grid/choice-grid.types.ts +152 -0
  515. package/src/components/choice-grid/choice-grid.variables.ts +3 -0
  516. package/src/components/choice-grid/index.ts +22 -0
  517. package/src/components/choice-grid-item/choice-grid-item.schema.ts +40 -0
  518. package/src/components/choice-grid-item/choice-grid-item.svelte +102 -0
  519. package/src/components/choice-grid-item/choice-grid-item.types.ts +30 -0
  520. package/src/components/choice-grid-item/choice-grid-item.variables.ts +3 -0
  521. package/src/components/choice-grid-item/index.ts +6 -0
  522. package/src/components/click-away-listener/click-away-listener.schema.ts +37 -0
  523. package/src/components/click-away-listener/click-away-listener.svelte +49 -0
  524. package/src/components/click-away-listener/click-away-listener.types.ts +28 -0
  525. package/src/components/click-away-listener/click-away-listener.variables.ts +3 -0
  526. package/src/components/click-away-listener/index.ts +5 -0
  527. package/src/components/code-block/code-block-default-highlighter.ts +63 -0
  528. package/src/components/code-block/code-block.schema.ts +44 -0
  529. package/src/components/code-block/code-block.svelte +117 -0
  530. package/src/components/code-block/code-block.types.ts +54 -0
  531. package/src/components/code-block/code-block.variables.ts +3 -0
  532. package/src/components/code-block/index.ts +6 -0
  533. package/src/components/collapsible/collapsible-bindable-harness.svelte +18 -0
  534. package/src/components/collapsible/collapsible-open-prop-harness.svelte +18 -0
  535. package/src/components/collapsible/collapsible-snippet-trigger-harness.svelte +16 -0
  536. package/src/components/collapsible/collapsible.schema.ts +57 -0
  537. package/src/components/collapsible/collapsible.svelte +89 -0
  538. package/src/components/collapsible/collapsible.types.ts +75 -0
  539. package/src/components/collapsible/collapsible.variables.ts +3 -0
  540. package/src/components/collapsible/index.ts +6 -0
  541. package/src/components/color-field/color-field.schema.ts +92 -0
  542. package/src/components/color-field/color-field.svelte +396 -0
  543. package/src/components/color-field/color-field.types.ts +60 -0
  544. package/src/components/color-field/color-field.variables.ts +3 -0
  545. package/src/components/color-field/index.ts +6 -0
  546. package/src/components/color-picker/color-picker.schema.ts +62 -0
  547. package/src/components/color-picker/color-picker.svelte +629 -0
  548. package/src/components/color-picker/color-picker.types.ts +27 -0
  549. package/src/components/color-picker/color-picker.variables.ts +3 -0
  550. package/src/components/color-picker/index.ts +6 -0
  551. package/src/components/color-swatch-picker/color-swatch-picker.schema.ts +67 -0
  552. package/src/components/color-swatch-picker/color-swatch-picker.svelte +168 -0
  553. package/src/components/color-swatch-picker/color-swatch-picker.types.ts +55 -0
  554. package/src/components/color-swatch-picker/color-swatch-picker.variables.ts +3 -0
  555. package/src/components/color-swatch-picker/index.ts +6 -0
  556. package/src/components/combobox/combobox.schema.ts +83 -0
  557. package/src/components/combobox/combobox.svelte +376 -0
  558. package/src/components/combobox/combobox.types.ts +80 -0
  559. package/src/components/combobox/combobox.variables.ts +3 -0
  560. package/src/components/combobox/index.ts +6 -0
  561. package/src/components/command-item/command-item.schema.ts +66 -0
  562. package/src/components/command-item/command-item.svelte +100 -0
  563. package/src/components/command-item/command-item.types.ts +42 -0
  564. package/src/components/command-item/command-item.variables.ts +3 -0
  565. package/src/components/command-item/index.ts +6 -0
  566. package/src/components/command-menu/caret-rect.svelte.ts +78 -0
  567. package/src/components/command-menu/command-menu-trigger.ts +41 -0
  568. package/src/components/command-menu/command-menu.schema.ts +85 -0
  569. package/src/components/command-menu/command-menu.svelte +129 -0
  570. package/src/components/command-menu/command-menu.types.ts +49 -0
  571. package/src/components/command-menu/command-menu.variables.ts +3 -0
  572. package/src/components/command-menu/index.ts +12 -0
  573. package/src/components/command-palette/command-palette.schema.ts +64 -0
  574. package/src/components/command-palette/command-palette.svelte +194 -0
  575. package/src/components/command-palette/command-palette.types.ts +30 -0
  576. package/src/components/command-palette/command-palette.variables.ts +3 -0
  577. package/src/components/command-palette/index.ts +6 -0
  578. package/src/components/confirm-dialog/confirm-dialog.schema.ts +66 -0
  579. package/src/components/confirm-dialog/confirm-dialog.svelte +43 -0
  580. package/src/components/confirm-dialog/confirm-dialog.types.ts +52 -0
  581. package/src/components/confirm-dialog/confirm-dialog.variables.ts +3 -0
  582. package/src/components/confirm-dialog/index.ts +6 -0
  583. package/src/components/container/container.schema.ts +144 -0
  584. package/src/components/container/container.svelte +19 -0
  585. package/src/components/container/container.types.ts +54 -0
  586. package/src/components/container/container.variables.ts +3 -0
  587. package/src/components/container/index.ts +6 -0
  588. package/src/components/context-menu/context-menu.context.ts +22 -0
  589. package/src/components/context-menu/context-menu.schema.ts +57 -0
  590. package/src/components/context-menu/context-menu.svelte +175 -0
  591. package/src/components/context-menu/context-menu.types.ts +24 -0
  592. package/src/components/context-menu/context-menu.variables.ts +3 -0
  593. package/src/components/context-menu/index.ts +21 -0
  594. package/src/components/context-menu-trigger/context-menu-trigger.schema.ts +24 -0
  595. package/src/components/context-menu-trigger/context-menu-trigger.svelte +134 -0
  596. package/src/components/context-menu-trigger/context-menu-trigger.types.ts +8 -0
  597. package/src/components/context-menu-trigger/context-menu-trigger.variables.ts +3 -0
  598. package/src/components/context-menu-trigger/index.ts +5 -0
  599. package/src/components/copy-button/__test-helpers__/copy-state-wrapper.svelte +21 -0
  600. package/src/components/copy-button/copy-button.schema.ts +52 -0
  601. package/src/components/copy-button/copy-button.svelte +78 -0
  602. package/src/components/copy-button/copy-button.types.ts +49 -0
  603. package/src/components/copy-button/copy-button.variables.ts +3 -0
  604. package/src/components/copy-button/index.ts +6 -0
  605. package/src/components/copy-button/use-copy-state.svelte.ts +76 -0
  606. package/src/components/cta-section/cta-section.schema.ts +71 -0
  607. package/src/components/cta-section/cta-section.svelte +36 -0
  608. package/src/components/cta-section/cta-section.types.ts +55 -0
  609. package/src/components/cta-section/cta-section.variables.ts +3 -0
  610. package/src/components/cta-section/index.ts +6 -0
  611. package/src/components/data-grid/_internal/column-model.svelte.ts +126 -0
  612. package/src/components/data-grid/_internal/geometry.ts +87 -0
  613. package/src/components/data-grid/_internal/keyboard-model.ts +131 -0
  614. package/src/components/data-grid/_internal/selection-model.svelte.ts +130 -0
  615. package/src/components/data-grid/_internal/sort-model.ts +134 -0
  616. package/src/components/data-grid/_internal/virtualization-adapter.svelte.ts +393 -0
  617. package/src/components/data-grid/data-grid-selection-bind-probe.ts +15 -0
  618. package/src/components/data-grid/data-grid.schema.ts +114 -0
  619. package/src/components/data-grid/data-grid.svelte +835 -0
  620. package/src/components/data-grid/data-grid.types.ts +124 -0
  621. package/src/components/data-grid/data-grid.variables.ts +3 -0
  622. package/src/components/data-grid/index.ts +16 -0
  623. package/src/components/data-list/data-list.schema.ts +50 -0
  624. package/src/components/data-list/data-list.svelte +35 -0
  625. package/src/components/data-list/data-list.types.ts +53 -0
  626. package/src/components/data-list/data-list.variables.ts +3 -0
  627. package/src/components/data-list/index.ts +6 -0
  628. package/src/components/data-table/data-table.schema.ts +112 -0
  629. package/src/components/data-table/data-table.svelte +455 -0
  630. package/src/components/data-table/data-table.types.ts +150 -0
  631. package/src/components/data-table/data-table.variables.ts +3 -0
  632. package/src/components/data-table/index.ts +11 -0
  633. package/src/components/date-picker/date-picker.schema.ts +65 -0
  634. package/src/components/date-picker/date-picker.svelte +209 -0
  635. package/src/components/date-picker/date-picker.types.ts +33 -0
  636. package/src/components/date-picker/date-picker.variables.ts +3 -0
  637. package/src/components/date-picker/index.ts +6 -0
  638. package/src/components/date-range-field/date-range-field.schema.ts +75 -0
  639. package/src/components/date-range-field/date-range-field.svelte +323 -0
  640. package/src/components/date-range-field/date-range-field.types.ts +84 -0
  641. package/src/components/date-range-field/date-range-field.variables.ts +3 -0
  642. package/src/components/date-range-field/index.ts +11 -0
  643. package/src/components/description-list/description-list.schema.ts +35 -0
  644. package/src/components/description-list/description-list.svelte +62 -0
  645. package/src/components/description-list/description-list.types.ts +37 -0
  646. package/src/components/description-list/description-list.variables.ts +3 -0
  647. package/src/components/description-list/index.ts +11 -0
  648. package/src/components/diff-statistics/diff-statistics.schema.ts +42 -0
  649. package/src/components/diff-statistics/diff-statistics.svelte +78 -0
  650. package/src/components/diff-statistics/diff-statistics.types.ts +32 -0
  651. package/src/components/diff-statistics/diff-statistics.variables.ts +3 -0
  652. package/src/components/diff-statistics/index.ts +10 -0
  653. package/src/components/diff-viewer/diff-controller.svelte.ts +250 -0
  654. package/src/components/diff-viewer/diff-front-matter.svelte +52 -0
  655. package/src/components/diff-viewer/diff-line.svelte +340 -0
  656. package/src/components/diff-viewer/diff-summary-bar.svelte +106 -0
  657. package/src/components/diff-viewer/diff-toolbar.svelte +182 -0
  658. package/src/components/diff-viewer/diff-viewer.schema.ts +70 -0
  659. package/src/components/diff-viewer/diff-viewer.svelte +400 -0
  660. package/src/components/diff-viewer/diff-viewer.types.ts +56 -0
  661. package/src/components/diff-viewer/diff-viewer.variables.ts +3 -0
  662. package/src/components/diff-viewer/front-matter-header.svelte +137 -0
  663. package/src/components/diff-viewer/index.ts +5 -0
  664. package/src/components/divider/divider.schema.ts +35 -0
  665. package/src/components/divider/divider.svelte +54 -0
  666. package/src/components/divider/divider.types.ts +75 -0
  667. package/src/components/divider/divider.variables.ts +3 -0
  668. package/src/components/divider/index.ts +6 -0
  669. package/src/components/drawer/drawer.schema.ts +64 -0
  670. package/src/components/drawer/drawer.svelte +159 -0
  671. package/src/components/drawer/drawer.types.ts +52 -0
  672. package/src/components/drawer/drawer.variables.ts +3 -0
  673. package/src/components/drawer/index.ts +6 -0
  674. package/src/components/dropdown/dropdown.context.ts +23 -0
  675. package/src/components/dropdown/dropdown.schema.ts +40 -0
  676. package/src/components/dropdown/dropdown.svelte +209 -0
  677. package/src/components/dropdown/dropdown.types.ts +48 -0
  678. package/src/components/dropdown/dropdown.variables.ts +3 -0
  679. package/src/components/dropdown/index.ts +32 -0
  680. package/src/components/dropdown-group/dropdown-group.schema.ts +34 -0
  681. package/src/components/dropdown-group/dropdown-group.svelte +43 -0
  682. package/src/components/dropdown-group/dropdown-group.types.ts +26 -0
  683. package/src/components/dropdown-group/dropdown-group.variables.ts +3 -0
  684. package/src/components/dropdown-group/index.ts +5 -0
  685. package/src/components/dropdown-item/dropdown-item.schema.ts +62 -0
  686. package/src/components/dropdown-item/dropdown-item.svelte +95 -0
  687. package/src/components/dropdown-item/dropdown-item.types.ts +75 -0
  688. package/src/components/dropdown-item/dropdown-item.variables.ts +3 -0
  689. package/src/components/dropdown-item/index.ts +10 -0
  690. package/src/components/dropdown-label/dropdown-label.schema.ts +23 -0
  691. package/src/components/dropdown-label/dropdown-label.svelte +16 -0
  692. package/src/components/dropdown-label/dropdown-label.types.ts +7 -0
  693. package/src/components/dropdown-label/dropdown-label.variables.ts +3 -0
  694. package/src/components/dropdown-label/index.ts +5 -0
  695. package/src/components/dropdown-menu/dropdown-menu.schema.ts +23 -0
  696. package/src/components/dropdown-menu/dropdown-menu.svelte +188 -0
  697. package/src/components/dropdown-menu/dropdown-menu.types.ts +7 -0
  698. package/src/components/dropdown-menu/dropdown-menu.variables.ts +3 -0
  699. package/src/components/dropdown-menu/index.ts +5 -0
  700. package/src/components/dropdown-separator/dropdown-separator.schema.ts +15 -0
  701. package/src/components/dropdown-separator/dropdown-separator.svelte +18 -0
  702. package/src/components/dropdown-separator/dropdown-separator.types.ts +5 -0
  703. package/src/components/dropdown-separator/dropdown-separator.variables.ts +3 -0
  704. package/src/components/dropdown-separator/index.ts +5 -0
  705. package/src/components/dropdown-trigger/dropdown-trigger.schema.ts +27 -0
  706. package/src/components/dropdown-trigger/dropdown-trigger.svelte +56 -0
  707. package/src/components/dropdown-trigger/dropdown-trigger.types.ts +9 -0
  708. package/src/components/dropdown-trigger/dropdown-trigger.variables.ts +3 -0
  709. package/src/components/dropdown-trigger/index.ts +5 -0
  710. package/src/components/empty-state/empty-state.schema.ts +42 -0
  711. package/src/components/empty-state/empty-state.svelte +41 -0
  712. package/src/components/empty-state/empty-state.types.ts +18 -0
  713. package/src/components/empty-state/empty-state.variables.ts +3 -0
  714. package/src/components/empty-state/index.ts +6 -0
  715. package/src/components/event-stream-viewer/event-stream-viewer-keys.ts +74 -0
  716. package/src/components/event-stream-viewer/event-stream-viewer.schema.ts +150 -0
  717. package/src/components/event-stream-viewer/event-stream-viewer.svelte +390 -0
  718. package/src/components/event-stream-viewer/event-stream-viewer.types.ts +212 -0
  719. package/src/components/event-stream-viewer/event-stream-viewer.variables.ts +3 -0
  720. package/src/components/event-stream-viewer/index.ts +17 -0
  721. package/src/components/event-timeline/event-timeline.schema.ts +99 -0
  722. package/src/components/event-timeline/event-timeline.svelte +141 -0
  723. package/src/components/event-timeline/event-timeline.types.ts +80 -0
  724. package/src/components/event-timeline/event-timeline.variables.ts +3 -0
  725. package/src/components/event-timeline/index.ts +12 -0
  726. package/src/components/experimental/json-viewer/index.ts +19 -0
  727. package/src/components/experimental/message/index.ts +19 -0
  728. package/src/components/faceted-filter-bar/faceted-filter-bar.schema.ts +71 -0
  729. package/src/components/faceted-filter-bar/faceted-filter-bar.svelte +166 -0
  730. package/src/components/faceted-filter-bar/faceted-filter-bar.types.ts +98 -0
  731. package/src/components/faceted-filter-bar/faceted-filter-bar.variables.ts +3 -0
  732. package/src/components/faceted-filter-bar/index.ts +13 -0
  733. package/src/components/feature-section/feature-section.schema.ts +86 -0
  734. package/src/components/feature-section/feature-section.svelte +53 -0
  735. package/src/components/feature-section/feature-section.types.ts +63 -0
  736. package/src/components/feature-section/feature-section.variables.ts +3 -0
  737. package/src/components/feature-section/index.ts +11 -0
  738. package/src/components/feed/feed.schema.ts +30 -0
  739. package/src/components/feed/feed.svelte +13 -0
  740. package/src/components/feed/feed.types.ts +15 -0
  741. package/src/components/feed/feed.variables.ts +3 -0
  742. package/src/components/feed/index.ts +16 -0
  743. package/src/components/feed-event/feed-event.schema.ts +51 -0
  744. package/src/components/feed-event/feed-event.svelte +26 -0
  745. package/src/components/feed-event/feed-event.types.ts +58 -0
  746. package/src/components/feed-event/feed-event.variables.ts +3 -0
  747. package/src/components/feed-event/index.ts +5 -0
  748. package/src/components/file-upload/file-upload.schema.ts +74 -0
  749. package/src/components/file-upload/file-upload.svelte +377 -0
  750. package/src/components/file-upload/file-upload.types.ts +60 -0
  751. package/src/components/file-upload/file-upload.variables.ts +8 -0
  752. package/src/components/file-upload/index.ts +12 -0
  753. package/src/components/floating-action-button/floating-action-button.schema.ts +49 -0
  754. package/src/components/floating-action-button/floating-action-button.svelte +86 -0
  755. package/src/components/floating-action-button/floating-action-button.types.ts +100 -0
  756. package/src/components/floating-action-button/floating-action-button.variables.ts +3 -0
  757. package/src/components/floating-action-button/index.ts +11 -0
  758. package/src/components/focus-trap/focus-trap.schema.ts +58 -0
  759. package/src/components/focus-trap/focus-trap.svelte +22 -0
  760. package/src/components/focus-trap/focus-trap.types.ts +28 -0
  761. package/src/components/focus-trap/focus-trap.utilities.svelte.ts +249 -0
  762. package/src/components/focus-trap/focus-trap.variables.ts +3 -0
  763. package/src/components/focus-trap/index.ts +6 -0
  764. package/src/components/footer/footer.schema.ts +45 -0
  765. package/src/components/footer/footer.svelte +54 -0
  766. package/src/components/footer/footer.types.ts +30 -0
  767. package/src/components/footer/footer.variables.ts +3 -0
  768. package/src/components/footer/index.ts +6 -0
  769. package/src/components/form-field/form-field.schema.ts +52 -0
  770. package/src/components/form-field/form-field.svelte +68 -0
  771. package/src/components/form-field/form-field.types.ts +19 -0
  772. package/src/components/form-field/form-field.variables.ts +3 -0
  773. package/src/components/form-field/index.ts +6 -0
  774. package/src/components/form-section/form-section.schema.ts +45 -0
  775. package/src/components/form-section/form-section.svelte +65 -0
  776. package/src/components/form-section/form-section.types.ts +34 -0
  777. package/src/components/form-section/form-section.variables.ts +3 -0
  778. package/src/components/form-section/index.ts +6 -0
  779. package/src/components/grid/grid.schema.ts +59 -0
  780. package/src/components/grid/grid.svelte +34 -0
  781. package/src/components/grid/grid.types.ts +31 -0
  782. package/src/components/grid/grid.variables.ts +3 -0
  783. package/src/components/grid/index.ts +17 -0
  784. package/src/components/grid-item/grid-item.schema.ts +84 -0
  785. package/src/components/grid-item/grid-item.svelte +29 -0
  786. package/src/components/grid-item/grid-item.types.ts +22 -0
  787. package/src/components/grid-item/grid-item.variables.ts +3 -0
  788. package/src/components/grid-item/index.ts +5 -0
  789. package/src/components/grid-list/grid-list.schema.ts +31 -0
  790. package/src/components/grid-list/grid-list.svelte +18 -0
  791. package/src/components/grid-list/grid-list.types.ts +15 -0
  792. package/src/components/grid-list/grid-list.variables.ts +3 -0
  793. package/src/components/grid-list/index.ts +16 -0
  794. package/src/components/grid-list-item/grid-list-item.schema.ts +69 -0
  795. package/src/components/grid-list-item/grid-list-item.svelte +56 -0
  796. package/src/components/grid-list-item/grid-list-item.types.ts +53 -0
  797. package/src/components/grid-list-item/grid-list-item.variables.ts +3 -0
  798. package/src/components/grid-list-item/index.ts +5 -0
  799. package/src/components/hero-section/hero-section.schema.ts +67 -0
  800. package/src/components/hero-section/hero-section.svelte +47 -0
  801. package/src/components/hero-section/hero-section.types.ts +51 -0
  802. package/src/components/hero-section/hero-section.variables.ts +3 -0
  803. package/src/components/hero-section/index.ts +10 -0
  804. package/src/components/hover-card/hover-card.schema.ts +83 -0
  805. package/src/components/hover-card/hover-card.svelte +201 -0
  806. package/src/components/hover-card/hover-card.types.ts +38 -0
  807. package/src/components/hover-card/hover-card.variables.ts +3 -0
  808. package/src/components/hover-card/index.ts +6 -0
  809. package/src/components/icons/index.ts +47 -0
  810. package/src/components/image/image.schema.ts +72 -0
  811. package/src/components/image/image.svelte +77 -0
  812. package/src/components/image/image.types.ts +58 -0
  813. package/src/components/image/image.variables.ts +3 -0
  814. package/src/components/image/index.ts +6 -0
  815. package/src/components/inline-loading/index.ts +6 -0
  816. package/src/components/inline-loading/inline-loading.schema.ts +35 -0
  817. package/src/components/inline-loading/inline-loading.svelte +96 -0
  818. package/src/components/inline-loading/inline-loading.types.ts +41 -0
  819. package/src/components/inline-loading/inline-loading.variables.ts +3 -0
  820. package/src/components/input/index.ts +6 -0
  821. package/src/components/input/input.constraints.ts +58 -0
  822. package/src/components/input/input.schema.ts +86 -0
  823. package/src/components/input/input.svelte +169 -0
  824. package/src/components/input/input.types.ts +62 -0
  825. package/src/components/input/input.variables.ts +3 -0
  826. package/src/components/invocation-rule-builder/index.ts +14 -0
  827. package/src/components/invocation-rule-builder/invocation-rule-builder.schema.ts +173 -0
  828. package/src/components/invocation-rule-builder/invocation-rule-builder.svelte +500 -0
  829. package/src/components/invocation-rule-builder/invocation-rule-builder.types.ts +235 -0
  830. package/src/components/invocation-rule-builder/invocation-rule-builder.variables.ts +3 -0
  831. package/src/components/json-schema-editor/composition-branch-keys.ts +35 -0
  832. package/src/components/json-schema-editor/diff-view.svelte +39 -0
  833. package/src/components/json-schema-editor/form-view.svelte +50 -0
  834. package/src/components/json-schema-editor/index.ts +19 -0
  835. package/src/components/json-schema-editor/json-schema-editor-impl.svelte +212 -0
  836. package/src/components/json-schema-editor/json-schema-editor-state.svelte.ts +443 -0
  837. package/src/components/json-schema-editor/json-schema-editor-state.types.ts +21 -0
  838. package/src/components/json-schema-editor/json-schema-editor-types.ts +110 -0
  839. package/src/components/json-schema-editor/json-schema-editor.schema.ts +67 -0
  840. package/src/components/json-schema-editor/json-schema-editor.svelte +12 -0
  841. package/src/components/json-schema-editor/json-schema-editor.types.ts +47 -0
  842. package/src/components/json-schema-editor/json-schema-editor.variables.ts +3 -0
  843. package/src/components/json-schema-editor/json-schema-toolbar.svelte +175 -0
  844. package/src/components/json-schema-editor/json-schema-validator.ts +345 -0
  845. package/src/components/json-schema-editor/json-view.svelte +68 -0
  846. package/src/components/json-schema-editor/property-editor.svelte +566 -0
  847. package/src/components/json-schema-editor/property-list-validation.ts +10 -0
  848. package/src/components/json-schema-editor/property-list.svelte +306 -0
  849. package/src/components/json-viewer/_json-viewer-node.svelte +134 -0
  850. package/src/components/json-viewer/index.ts +6 -0
  851. package/src/components/json-viewer/json-viewer.schema.ts +38 -0
  852. package/src/components/json-viewer/json-viewer.svelte +113 -0
  853. package/src/components/json-viewer/json-viewer.types.ts +25 -0
  854. package/src/components/json-viewer/json-viewer.variables.ts +3 -0
  855. package/src/components/kanban-board/index.ts +15 -0
  856. package/src/components/kanban-board/kanban-board-helpers.ts +210 -0
  857. package/src/components/kanban-board/kanban-board.schema.ts +70 -0
  858. package/src/components/kanban-board/kanban-board.svelte +572 -0
  859. package/src/components/kanban-board/kanban-board.types.ts +75 -0
  860. package/src/components/kanban-board/kanban-board.variables.ts +8 -0
  861. package/src/components/kbd/index.ts +6 -0
  862. package/src/components/kbd/kbd.schema.ts +33 -0
  863. package/src/components/kbd/kbd.svelte +12 -0
  864. package/src/components/kbd/kbd.types.ts +46 -0
  865. package/src/components/kbd/kbd.variables.ts +3 -0
  866. package/src/components/keyboard-shortcuts/index.ts +10 -0
  867. package/src/components/keyboard-shortcuts/keyboard-shortcuts.schema.ts +34 -0
  868. package/src/components/keyboard-shortcuts/keyboard-shortcuts.svelte +66 -0
  869. package/src/components/keyboard-shortcuts/keyboard-shortcuts.types.ts +46 -0
  870. package/src/components/keyboard-shortcuts/keyboard-shortcuts.variables.ts +3 -0
  871. package/src/components/label/index.ts +6 -0
  872. package/src/components/label/label.schema.ts +40 -0
  873. package/src/components/label/label.svelte +23 -0
  874. package/src/components/label/label.types.ts +22 -0
  875. package/src/components/label/label.variables.ts +3 -0
  876. package/src/components/line-chart/index.ts +6 -0
  877. package/src/components/line-chart/line-chart.schema.ts +145 -0
  878. package/src/components/line-chart/line-chart.svelte +351 -0
  879. package/src/components/line-chart/line-chart.types.ts +56 -0
  880. package/src/components/line-chart/line-chart.variables.ts +3 -0
  881. package/src/components/link/index.ts +6 -0
  882. package/src/components/link/link.schema.ts +72 -0
  883. package/src/components/link/link.svelte +84 -0
  884. package/src/components/link/link.types.ts +69 -0
  885. package/src/components/link/link.variables.ts +3 -0
  886. package/src/components/load-more/index.ts +6 -0
  887. package/src/components/load-more/load-more.schema.ts +64 -0
  888. package/src/components/load-more/load-more.svelte +101 -0
  889. package/src/components/load-more/load-more.types.ts +29 -0
  890. package/src/components/load-more/load-more.variables.ts +3 -0
  891. package/src/components/locale-provider/index.ts +5 -0
  892. package/src/components/locale-provider/locale-provider.schema.ts +28 -0
  893. package/src/components/locale-provider/locale-provider.svelte +20 -0
  894. package/src/components/locale-provider/locale-provider.types.ts +21 -0
  895. package/src/components/locale-provider/locale-provider.variables.ts +3 -0
  896. package/src/components/logo-cloud/index.ts +6 -0
  897. package/src/components/logo-cloud/logo-cloud.schema.ts +67 -0
  898. package/src/components/logo-cloud/logo-cloud.svelte +49 -0
  899. package/src/components/logo-cloud/logo-cloud.types.ts +51 -0
  900. package/src/components/logo-cloud/logo-cloud.variables.ts +3 -0
  901. package/src/components/markdown-editor/editor-skeleton.svelte +85 -0
  902. package/src/components/markdown-editor/editor-toolbar/editor-toolbar.svelte +318 -0
  903. package/src/components/markdown-editor/editor-toolbar/index.ts +18 -0
  904. package/src/components/markdown-editor/editor-toolbar/link-popover.svelte +314 -0
  905. package/src/components/markdown-editor/editor-toolbar/toolbar-button.svelte +97 -0
  906. package/src/components/markdown-editor/editor-toolbar/toolbar-dropdown.svelte +106 -0
  907. package/src/components/markdown-editor/editor-toolbar/toolbar-separator.svelte +30 -0
  908. package/src/components/markdown-editor/editor-toolbar/types.ts +15 -0
  909. package/src/components/markdown-editor/index.ts +10 -0
  910. package/src/components/markdown-editor/markdown-editor.schema.ts +122 -0
  911. package/src/components/markdown-editor/markdown-editor.svelte +872 -0
  912. package/src/components/markdown-editor/markdown-editor.types.ts +124 -0
  913. package/src/components/markdown-editor/markdown-editor.variables.ts +3 -0
  914. package/src/components/marquee/index.ts +6 -0
  915. package/src/components/marquee/marquee.schema.ts +54 -0
  916. package/src/components/marquee/marquee.svelte +214 -0
  917. package/src/components/marquee/marquee.types.ts +44 -0
  918. package/src/components/marquee/marquee.variables.ts +7 -0
  919. package/src/components/masonry/index.ts +6 -0
  920. package/src/components/masonry/masonry.schema.ts +39 -0
  921. package/src/components/masonry/masonry.svelte +18 -0
  922. package/src/components/masonry/masonry.types.ts +38 -0
  923. package/src/components/masonry/masonry.variables.ts +3 -0
  924. package/src/components/matrix-chart/index.ts +10 -0
  925. package/src/components/matrix-chart/matrix-chart.schema.ts +95 -0
  926. package/src/components/matrix-chart/matrix-chart.svelte +273 -0
  927. package/src/components/matrix-chart/matrix-chart.types.ts +69 -0
  928. package/src/components/matrix-chart/matrix-chart.variables.ts +3 -0
  929. package/src/components/media-controls/index.ts +6 -0
  930. package/src/components/media-controls/media-controls.schema.ts +72 -0
  931. package/src/components/media-controls/media-controls.svelte +202 -0
  932. package/src/components/media-controls/media-controls.types.ts +83 -0
  933. package/src/components/media-controls/media-controls.variables.ts +3 -0
  934. package/src/components/mega-menu/index.ts +11 -0
  935. package/src/components/mega-menu/mega-menu.schema.ts +41 -0
  936. package/src/components/mega-menu/mega-menu.svelte +370 -0
  937. package/src/components/mega-menu/mega-menu.types.ts +48 -0
  938. package/src/components/mega-menu/mega-menu.variables.ts +3 -0
  939. package/src/components/menu-bar/index.ts +16 -0
  940. package/src/components/menu-bar/menu-bar-dropdown-context.svelte +13 -0
  941. package/src/components/menu-bar/menu-bar.schema.ts +38 -0
  942. package/src/components/menu-bar/menu-bar.svelte +726 -0
  943. package/src/components/menu-bar/menu-bar.types.ts +73 -0
  944. package/src/components/menu-bar/menu-bar.variables.ts +3 -0
  945. package/src/components/message/index.ts +6 -0
  946. package/src/components/message/message.schema.ts +44 -0
  947. package/src/components/message/message.svelte +32 -0
  948. package/src/components/message/message.types.ts +31 -0
  949. package/src/components/message/message.variables.ts +3 -0
  950. package/src/components/meter/index.ts +6 -0
  951. package/src/components/meter/meter.schema.ts +59 -0
  952. package/src/components/meter/meter.svelte +147 -0
  953. package/src/components/meter/meter.types.ts +50 -0
  954. package/src/components/meter/meter.variables.ts +3 -0
  955. package/src/components/modal/index.ts +6 -0
  956. package/src/components/modal/modal.constraints.ts +72 -0
  957. package/src/components/modal/modal.schema.ts +8 -0
  958. package/src/components/modal/modal.svelte +223 -0
  959. package/src/components/modal/modal.types.ts +41 -0
  960. package/src/components/modal/modal.variables.ts +3 -0
  961. package/src/components/multi-select/index.ts +11 -0
  962. package/src/components/multi-select/multi-select.schema.ts +93 -0
  963. package/src/components/multi-select/multi-select.svelte +529 -0
  964. package/src/components/multi-select/multi-select.types.ts +53 -0
  965. package/src/components/multi-select/multi-select.variables.ts +3 -0
  966. package/src/components/navigation-bar/index.ts +14 -0
  967. package/src/components/navigation-bar/navigation-bar.schema.ts +66 -0
  968. package/src/components/navigation-bar/navigation-bar.svelte +247 -0
  969. package/src/components/navigation-bar/navigation-bar.types.ts +54 -0
  970. package/src/components/navigation-bar/navigation-bar.variables.ts +3 -0
  971. package/src/components/navigation-item/index.ts +6 -0
  972. package/src/components/navigation-item/navigation-item.schema.ts +55 -0
  973. package/src/components/navigation-item/navigation-item.svelte +85 -0
  974. package/src/components/navigation-item/navigation-item.types.ts +60 -0
  975. package/src/components/navigation-item/navigation-item.variables.ts +3 -0
  976. package/src/components/newsletter-section/index.ts +6 -0
  977. package/src/components/newsletter-section/newsletter-section.schema.ts +66 -0
  978. package/src/components/newsletter-section/newsletter-section.svelte +58 -0
  979. package/src/components/newsletter-section/newsletter-section.types.ts +50 -0
  980. package/src/components/newsletter-section/newsletter-section.variables.ts +3 -0
  981. package/src/components/number-input/index.ts +6 -0
  982. package/src/components/number-input/number-input.schema.ts +103 -0
  983. package/src/components/number-input/number-input.svelte +509 -0
  984. package/src/components/number-input/number-input.types.ts +56 -0
  985. package/src/components/number-input/number-input.variables.ts +3 -0
  986. package/src/components/page-header/index.ts +6 -0
  987. package/src/components/page-header/page-header.schema.ts +33 -0
  988. package/src/components/page-header/page-header.svelte +23 -0
  989. package/src/components/page-header/page-header.types.ts +14 -0
  990. package/src/components/page-header/page-header.variables.ts +3 -0
  991. package/src/components/pagination/index.ts +6 -0
  992. package/src/components/pagination/pagination.schema.ts +39 -0
  993. package/src/components/pagination/pagination.svelte +143 -0
  994. package/src/components/pagination/pagination.types.ts +16 -0
  995. package/src/components/pagination/pagination.variables.ts +3 -0
  996. package/src/components/payload-inspector/index.ts +12 -0
  997. package/src/components/payload-inspector/payload-inspector.schema.ts +76 -0
  998. package/src/components/payload-inspector/payload-inspector.svelte +344 -0
  999. package/src/components/payload-inspector/payload-inspector.types.ts +123 -0
  1000. package/src/components/payload-inspector/payload-inspector.variables.ts +3 -0
  1001. package/src/components/permission-matrix/index.ts +12 -0
  1002. package/src/components/permission-matrix/permission-matrix.schema.ts +74 -0
  1003. package/src/components/permission-matrix/permission-matrix.svelte +128 -0
  1004. package/src/components/permission-matrix/permission-matrix.types.ts +73 -0
  1005. package/src/components/permission-matrix/permission-matrix.variables.ts +3 -0
  1006. package/src/components/phone-input/index.ts +12 -0
  1007. package/src/components/phone-input/phone-input-formatting.ts +229 -0
  1008. package/src/components/phone-input/phone-input.schema.ts +579 -0
  1009. package/src/components/phone-input/phone-input.svelte +420 -0
  1010. package/src/components/phone-input/phone-input.types.ts +91 -0
  1011. package/src/components/phone-input/phone-input.variables.ts +3 -0
  1012. package/src/components/pin-input/index.ts +6 -0
  1013. package/src/components/pin-input/pin-input.schema.ts +91 -0
  1014. package/src/components/pin-input/pin-input.svelte +290 -0
  1015. package/src/components/pin-input/pin-input.types.ts +68 -0
  1016. package/src/components/pin-input/pin-input.variables.ts +3 -0
  1017. package/src/components/popover/index.ts +6 -0
  1018. package/src/components/popover/popover.schema.ts +93 -0
  1019. package/src/components/popover/popover.svelte +253 -0
  1020. package/src/components/popover/popover.types.ts +60 -0
  1021. package/src/components/popover/popover.variables.ts +3 -0
  1022. package/src/components/portal/index.ts +6 -0
  1023. package/src/components/portal/portal.schema.ts +46 -0
  1024. package/src/components/portal/portal.svelte +34 -0
  1025. package/src/components/portal/portal.types.ts +25 -0
  1026. package/src/components/portal/portal.utilities.svelte.ts +211 -0
  1027. package/src/components/portal/portal.variables.ts +3 -0
  1028. package/src/components/pricing-card/index.ts +6 -0
  1029. package/src/components/pricing-card/pricing-card.schema.ts +54 -0
  1030. package/src/components/pricing-card/pricing-card.svelte +68 -0
  1031. package/src/components/pricing-card/pricing-card.types.ts +49 -0
  1032. package/src/components/pricing-card/pricing-card.variables.ts +3 -0
  1033. package/src/components/pricing-section/index.ts +6 -0
  1034. package/src/components/pricing-section/pricing-section.schema.ts +86 -0
  1035. package/src/components/pricing-section/pricing-section.svelte +53 -0
  1036. package/src/components/pricing-section/pricing-section.types.ts +55 -0
  1037. package/src/components/pricing-section/pricing-section.variables.ts +3 -0
  1038. package/src/components/progress/index.ts +6 -0
  1039. package/src/components/progress/progress.schema.ts +46 -0
  1040. package/src/components/progress/progress.svelte +86 -0
  1041. package/src/components/progress/progress.types.ts +45 -0
  1042. package/src/components/progress/progress.variables.ts +3 -0
  1043. package/src/components/qr-code/index.ts +6 -0
  1044. package/src/components/qr-code/qr-code.schema.ts +40 -0
  1045. package/src/components/qr-code/qr-code.svelte +116 -0
  1046. package/src/components/qr-code/qr-code.types.ts +36 -0
  1047. package/src/components/qr-code/qr-code.variables.ts +3 -0
  1048. package/src/components/radio-group/index.ts +22 -0
  1049. package/src/components/radio-group/radio-group-context.ts +33 -0
  1050. package/src/components/radio-group/radio-group.schema.ts +61 -0
  1051. package/src/components/radio-group/radio-group.svelte +87 -0
  1052. package/src/components/radio-group/radio-group.types.ts +47 -0
  1053. package/src/components/radio-group/radio-group.variables.ts +3 -0
  1054. package/src/components/rating/index.ts +6 -0
  1055. package/src/components/rating/rating.schema.ts +85 -0
  1056. package/src/components/rating/rating.svelte +324 -0
  1057. package/src/components/rating/rating.types.ts +59 -0
  1058. package/src/components/rating/rating.variables.ts +3 -0
  1059. package/src/components/resizable-panels/index.ts +16 -0
  1060. package/src/components/resizable-panels/resizable-panels-sizing.ts +706 -0
  1061. package/src/components/resizable-panels/resizable-panels.schema.ts +60 -0
  1062. package/src/components/resizable-panels/resizable-panels.svelte +363 -0
  1063. package/src/components/resizable-panels/resizable-panels.types.ts +79 -0
  1064. package/src/components/resizable-panels/resizable-panels.variables.ts +3 -0
  1065. package/src/components/review-editor/comment-composer.svelte +271 -0
  1066. package/src/components/review-editor/comment-list.svelte +311 -0
  1067. package/src/components/review-editor/comment-sidebar.svelte +449 -0
  1068. package/src/components/review-editor/export-actions.svelte +188 -0
  1069. package/src/components/review-editor/focus-navigation.ts +220 -0
  1070. package/src/components/review-editor/front-matter-fields.svelte +159 -0
  1071. package/src/components/review-editor/index.ts +59 -0
  1072. package/src/components/review-editor/live-region.svelte +109 -0
  1073. package/src/components/review-editor/review-editor-anchors.svelte.ts +219 -0
  1074. package/src/components/review-editor/review-editor-controls.svelte +201 -0
  1075. package/src/components/review-editor/review-editor-exports.ts +145 -0
  1076. package/src/components/review-editor/review-editor-front-matter.ts +237 -0
  1077. package/src/components/review-editor/review-editor-impl.svelte +1509 -0
  1078. package/src/components/review-editor/review-editor-selection-geometry.ts +31 -0
  1079. package/src/components/review-editor/review-editor-selection-types.ts +68 -0
  1080. package/src/components/review-editor/review-editor-selection.svelte.ts +292 -0
  1081. package/src/components/review-editor/review-editor-state.svelte.ts +117 -0
  1082. package/src/components/review-editor/review-editor-threads.svelte.ts +435 -0
  1083. package/src/components/review-editor/review-editor.schema.ts +88 -0
  1084. package/src/components/review-editor/review-editor.svelte +18 -0
  1085. package/src/components/review-editor/review-editor.types.ts +92 -0
  1086. package/src/components/review-editor/review-editor.variables.ts +3 -0
  1087. package/src/components/review-editor/thread-popover.svelte +261 -0
  1088. package/src/components/run-step-timeline/index.ts +17 -0
  1089. package/src/components/run-step-timeline/run-step-timeline.schema.ts +439 -0
  1090. package/src/components/run-step-timeline/run-step-timeline.svelte +377 -0
  1091. package/src/components/run-step-timeline/run-step-timeline.types.ts +310 -0
  1092. package/src/components/run-step-timeline/run-step-timeline.variables.ts +3 -0
  1093. package/src/components/schema-form/index.ts +13 -0
  1094. package/src/components/schema-form/schema-form-body.svelte +553 -0
  1095. package/src/components/schema-form/schema-form-model.ts +369 -0
  1096. package/src/components/schema-form/schema-form-validation.ts +235 -0
  1097. package/src/components/schema-form/schema-form.schema.ts +44 -0
  1098. package/src/components/schema-form/schema-form.svelte +34 -0
  1099. package/src/components/schema-form/schema-form.types.ts +40 -0
  1100. package/src/components/schema-form/schema-form.variables.ts +3 -0
  1101. package/src/components/scroll-area/index.ts +10 -0
  1102. package/src/components/scroll-area/scroll-area.schema.ts +51 -0
  1103. package/src/components/scroll-area/scroll-area.svelte +34 -0
  1104. package/src/components/scroll-area/scroll-area.types.ts +57 -0
  1105. package/src/components/scroll-area/scroll-area.variables.ts +3 -0
  1106. package/src/components/search-field/index.ts +6 -0
  1107. package/src/components/search-field/search-field.schema.ts +69 -0
  1108. package/src/components/search-field/search-field.svelte +104 -0
  1109. package/src/components/search-field/search-field.types.ts +46 -0
  1110. package/src/components/search-field/search-field.variables.ts +3 -0
  1111. package/src/components/secret-value-field/index.ts +6 -0
  1112. package/src/components/secret-value-field/secret-value-field.schema.ts +64 -0
  1113. package/src/components/secret-value-field/secret-value-field.svelte +195 -0
  1114. package/src/components/secret-value-field/secret-value-field.types.ts +47 -0
  1115. package/src/components/secret-value-field/secret-value-field.variables.ts +3 -0
  1116. package/src/components/section-heading/index.ts +6 -0
  1117. package/src/components/section-heading/section-heading.schema.ts +52 -0
  1118. package/src/components/section-heading/section-heading.svelte +40 -0
  1119. package/src/components/section-heading/section-heading.types.ts +37 -0
  1120. package/src/components/section-heading/section-heading.variables.ts +3 -0
  1121. package/src/components/segment/index.ts +5 -0
  1122. package/src/components/segment/segment.schema.ts +50 -0
  1123. package/src/components/segment/segment.svelte +73 -0
  1124. package/src/components/segment/segment.types.ts +39 -0
  1125. package/src/components/segment/segment.variables.ts +3 -0
  1126. package/src/components/segmented-control/index.ts +8 -0
  1127. package/src/components/segmented-control/segmented-control-state.svelte.ts +170 -0
  1128. package/src/components/segmented-control/segmented-control.schema.ts +93 -0
  1129. package/src/components/segmented-control/segmented-control.svelte +122 -0
  1130. package/src/components/segmented-control/segmented-control.types.ts +89 -0
  1131. package/src/components/segmented-control/segmented-control.variables.ts +3 -0
  1132. package/src/components/select/index.ts +6 -0
  1133. package/src/components/select/select.schema.ts +57 -0
  1134. package/src/components/select/select.svelte +89 -0
  1135. package/src/components/select/select.types.ts +28 -0
  1136. package/src/components/select/select.variables.ts +3 -0
  1137. package/src/components/selection-popover/index.ts +6 -0
  1138. package/src/components/selection-popover/selection-popover.schema.ts +54 -0
  1139. package/src/components/selection-popover/selection-popover.svelte +225 -0
  1140. package/src/components/selection-popover/selection-popover.types.ts +31 -0
  1141. package/src/components/selection-popover/selection-popover.variables.ts +3 -0
  1142. package/src/components/share-card/index.ts +6 -0
  1143. package/src/components/share-card/share-card.schema.ts +60 -0
  1144. package/src/components/share-card/share-card.svelte +309 -0
  1145. package/src/components/share-card/share-card.types.ts +69 -0
  1146. package/src/components/share-card/share-card.variables.ts +3 -0
  1147. package/src/components/sheet/index.ts +6 -0
  1148. package/src/components/sheet/sheet.schema.ts +61 -0
  1149. package/src/components/sheet/sheet.svelte +141 -0
  1150. package/src/components/sheet/sheet.types.ts +55 -0
  1151. package/src/components/sheet/sheet.variables.ts +3 -0
  1152. package/src/components/shortcut-hint/index.ts +6 -0
  1153. package/src/components/shortcut-hint/shortcut-hint.schema.ts +41 -0
  1154. package/src/components/shortcut-hint/shortcut-hint.svelte +40 -0
  1155. package/src/components/shortcut-hint/shortcut-hint.types.ts +35 -0
  1156. package/src/components/shortcut-hint/shortcut-hint.variables.ts +3 -0
  1157. package/src/components/side-navigation/index.ts +19 -0
  1158. package/src/components/side-navigation/side-navigation.schema.ts +32 -0
  1159. package/src/components/side-navigation/side-navigation.svelte +20 -0
  1160. package/src/components/side-navigation/side-navigation.types.ts +14 -0
  1161. package/src/components/side-navigation/side-navigation.variables.ts +3 -0
  1162. package/src/components/side-navigation-group/_contains-active-harness.svelte +23 -0
  1163. package/src/components/side-navigation-group/index.ts +6 -0
  1164. package/src/components/side-navigation-group/side-navigation-group.schema.ts +56 -0
  1165. package/src/components/side-navigation-group/side-navigation-group.svelte +110 -0
  1166. package/src/components/side-navigation-group/side-navigation-group.types.ts +21 -0
  1167. package/src/components/side-navigation-group/side-navigation-group.variables.ts +3 -0
  1168. package/src/components/side-navigation-item/index.ts +5 -0
  1169. package/src/components/side-navigation-item/side-navigation-item.schema.ts +54 -0
  1170. package/src/components/side-navigation-item/side-navigation-item.svelte +43 -0
  1171. package/src/components/side-navigation-item/side-navigation-item.types.ts +22 -0
  1172. package/src/components/side-navigation-item/side-navigation-item.variables.ts +3 -0
  1173. package/src/components/sidebar/index.ts +6 -0
  1174. package/src/components/sidebar/sidebar.css +4 -0
  1175. package/src/components/sidebar/sidebar.schema.ts +45 -0
  1176. package/src/components/sidebar/sidebar.svelte +93 -0
  1177. package/src/components/sidebar/sidebar.types.ts +36 -0
  1178. package/src/components/sidebar/sidebar.variables.ts +3 -0
  1179. package/src/components/skeleton/index.ts +6 -0
  1180. package/src/components/skeleton/skeleton.schema.ts +30 -0
  1181. package/src/components/skeleton/skeleton.svelte +17 -0
  1182. package/src/components/skeleton/skeleton.types.ts +11 -0
  1183. package/src/components/skeleton/skeleton.variables.ts +3 -0
  1184. package/src/components/skip-link/index.ts +5 -0
  1185. package/src/components/skip-link/skip-link.schema.ts +29 -0
  1186. package/src/components/skip-link/skip-link.svelte +56 -0
  1187. package/src/components/skip-link/skip-link.types.ts +40 -0
  1188. package/src/components/skip-link/skip-link.variables.ts +3 -0
  1189. package/src/components/slider/index.ts +12 -0
  1190. package/src/components/slider/slider.schema.ts +88 -0
  1191. package/src/components/slider/slider.svelte +485 -0
  1192. package/src/components/slider/slider.types.ts +65 -0
  1193. package/src/components/slider/slider.variables.ts +3 -0
  1194. package/src/components/sortable-list/index.ts +6 -0
  1195. package/src/components/sortable-list/sortable-list.schema.ts +71 -0
  1196. package/src/components/sortable-list/sortable-list.svelte +113 -0
  1197. package/src/components/sortable-list/sortable-list.types.ts +41 -0
  1198. package/src/components/sortable-list/sortable-list.variables.ts +3 -0
  1199. package/src/components/source-diff-viewer/index.ts +18 -0
  1200. package/src/components/source-diff-viewer/source-diff-viewer.schema.ts +40 -0
  1201. package/src/components/source-diff-viewer/source-diff-viewer.svelte +88 -0
  1202. package/src/components/source-diff-viewer/source-diff-viewer.types.ts +50 -0
  1203. package/src/components/source-diff-viewer/source-diff-viewer.utilities.ts +898 -0
  1204. package/src/components/source-diff-viewer/source-diff-viewer.variables.ts +3 -0
  1205. package/src/components/sparkbar/index.ts +6 -0
  1206. package/src/components/sparkbar/sparkbar.schema.ts +49 -0
  1207. package/src/components/sparkbar/sparkbar.svelte +42 -0
  1208. package/src/components/sparkbar/sparkbar.types.ts +48 -0
  1209. package/src/components/sparkbar/sparkbar.variables.ts +3 -0
  1210. package/src/components/spectrogram/index.ts +10 -0
  1211. package/src/components/spectrogram/spectrogram.schema.ts +86 -0
  1212. package/src/components/spectrogram/spectrogram.svelte +207 -0
  1213. package/src/components/spectrogram/spectrogram.types.ts +74 -0
  1214. package/src/components/spectrogram/spectrogram.variables.ts +3 -0
  1215. package/src/components/spectrum-chart/index.ts +10 -0
  1216. package/src/components/spectrum-chart/spectrum-chart.schema.ts +73 -0
  1217. package/src/components/spectrum-chart/spectrum-chart.svelte +186 -0
  1218. package/src/components/spectrum-chart/spectrum-chart.types.ts +53 -0
  1219. package/src/components/spectrum-chart/spectrum-chart.variables.ts +3 -0
  1220. package/src/components/speed-dial/index.ts +25 -0
  1221. package/src/components/speed-dial/speed-dial.context.ts +16 -0
  1222. package/src/components/speed-dial/speed-dial.schema.ts +51 -0
  1223. package/src/components/speed-dial/speed-dial.svelte +161 -0
  1224. package/src/components/speed-dial/speed-dial.types.ts +59 -0
  1225. package/src/components/speed-dial/speed-dial.variables.ts +3 -0
  1226. package/src/components/speed-dial-action/index.ts +8 -0
  1227. package/src/components/speed-dial-action/speed-dial-action.schema.ts +45 -0
  1228. package/src/components/speed-dial-action/speed-dial-action.svelte +49 -0
  1229. package/src/components/speed-dial-action/speed-dial-action.types.ts +50 -0
  1230. package/src/components/speed-dial-action/speed-dial-action.variables.ts +3 -0
  1231. package/src/components/spinner/index.ts +6 -0
  1232. package/src/components/spinner/spinner.schema.ts +25 -0
  1233. package/src/components/spinner/spinner.svelte +18 -0
  1234. package/src/components/spinner/spinner.types.ts +27 -0
  1235. package/src/components/spinner/spinner.variables.ts +3 -0
  1236. package/src/components/stacked-list-item/index.ts +6 -0
  1237. package/src/components/stacked-list-item/stacked-list-item.schema.ts +84 -0
  1238. package/src/components/stacked-list-item/stacked-list-item.svelte +97 -0
  1239. package/src/components/stacked-list-item/stacked-list-item.types.ts +47 -0
  1240. package/src/components/stacked-list-item/stacked-list-item.variables.ts +3 -0
  1241. package/src/components/stat/index.ts +6 -0
  1242. package/src/components/stat/stat.schema.ts +55 -0
  1243. package/src/components/stat/stat.svelte +59 -0
  1244. package/src/components/stat/stat.types.ts +35 -0
  1245. package/src/components/stat/stat.variables.ts +3 -0
  1246. package/src/components/stat-group/index.ts +16 -0
  1247. package/src/components/stat-group/stat-group.schema.ts +41 -0
  1248. package/src/components/stat-group/stat-group.svelte +21 -0
  1249. package/src/components/stat-group/stat-group.types.ts +30 -0
  1250. package/src/components/stat-group/stat-group.variables.ts +3 -0
  1251. package/src/components/stats-section/index.ts +6 -0
  1252. package/src/components/stats-section/stats-section.schema.ts +87 -0
  1253. package/src/components/stats-section/stats-section.svelte +47 -0
  1254. package/src/components/stats-section/stats-section.types.ts +61 -0
  1255. package/src/components/stats-section/stats-section.variables.ts +3 -0
  1256. package/src/components/status-dot/index.ts +11 -0
  1257. package/src/components/status-dot/status-dot.schema.ts +45 -0
  1258. package/src/components/status-dot/status-dot.svelte +67 -0
  1259. package/src/components/status-dot/status-dot.types.ts +74 -0
  1260. package/src/components/status-dot/status-dot.variables.ts +3 -0
  1261. package/src/components/steps/index.ts +6 -0
  1262. package/src/components/steps/steps.css +15 -1
  1263. package/src/components/steps/steps.examples.json +6 -0
  1264. package/src/components/steps/steps.schema.json +4 -0
  1265. package/src/components/steps/steps.schema.ts +49 -0
  1266. package/src/components/steps/steps.svelte +106 -0
  1267. package/src/components/steps/steps.types.ts +54 -0
  1268. package/src/components/steps/steps.variables.ts +3 -0
  1269. package/src/components/surface/index.ts +6 -0
  1270. package/src/components/surface/surface.schema.ts +29 -0
  1271. package/src/components/surface/surface.svelte +19 -0
  1272. package/src/components/surface/surface.types.ts +20 -0
  1273. package/src/components/surface/surface.variables.ts +3 -0
  1274. package/src/components/tab/index.ts +6 -0
  1275. package/src/components/tab/tab.schema.ts +44 -0
  1276. package/src/components/tab/tab.svelte +94 -0
  1277. package/src/components/tab/tab.types.ts +25 -0
  1278. package/src/components/tab/tab.variables.ts +3 -0
  1279. package/src/components/tab-list/index.ts +6 -0
  1280. package/src/components/tab-list/tab-list.schema.ts +33 -0
  1281. package/src/components/tab-list/tab-list.svelte +21 -0
  1282. package/src/components/tab-list/tab-list.types.ts +11 -0
  1283. package/src/components/tab-list/tab-list.variables.ts +3 -0
  1284. package/src/components/tab-panel/index.ts +6 -0
  1285. package/src/components/tab-panel/tab-panel-aria-labelledby-harness.svelte +18 -0
  1286. package/src/components/tab-panel/tab-panel.schema.ts +35 -0
  1287. package/src/components/tab-panel/tab-panel.svelte +33 -0
  1288. package/src/components/tab-panel/tab-panel.types.ts +16 -0
  1289. package/src/components/tab-panel/tab-panel.variables.ts +3 -0
  1290. package/src/components/table/index.ts +33 -0
  1291. package/src/components/table/table.context.ts +65 -0
  1292. package/src/components/table/table.schema.ts +49 -0
  1293. package/src/components/table/table.svelte +61 -0
  1294. package/src/components/table/table.types.ts +82 -0
  1295. package/src/components/table/table.variables.ts +3 -0
  1296. package/src/components/table-body/index.ts +6 -0
  1297. package/src/components/table-body/table-body.schema.ts +25 -0
  1298. package/src/components/table-body/table-body.svelte +14 -0
  1299. package/src/components/table-body/table-body.types.ts +7 -0
  1300. package/src/components/table-body/table-body.variables.ts +3 -0
  1301. package/src/components/table-cell/index.ts +6 -0
  1302. package/src/components/table-cell/table-cell.schema.ts +34 -0
  1303. package/src/components/table-cell/table-cell.svelte +18 -0
  1304. package/src/components/table-cell/table-cell.types.ts +32 -0
  1305. package/src/components/table-cell/table-cell.variables.ts +3 -0
  1306. package/src/components/table-header/index.ts +6 -0
  1307. package/src/components/table-header/table-header.schema.ts +46 -0
  1308. package/src/components/table-header/table-header.svelte +44 -0
  1309. package/src/components/table-header/table-header.types.ts +24 -0
  1310. package/src/components/table-header/table-header.variables.ts +3 -0
  1311. package/src/components/table-header-cell/index.ts +6 -0
  1312. package/src/components/table-header-cell/table-header-cell.schema.ts +43 -0
  1313. package/src/components/table-header-cell/table-header-cell.svelte +73 -0
  1314. package/src/components/table-header-cell/table-header-cell.types.ts +30 -0
  1315. package/src/components/table-header-cell/table-header-cell.variables.ts +3 -0
  1316. package/src/components/table-of-contents/index.ts +6 -0
  1317. package/src/components/table-of-contents/table-of-contents.schema.ts +43 -0
  1318. package/src/components/table-of-contents/table-of-contents.svelte +484 -0
  1319. package/src/components/table-of-contents/table-of-contents.types.ts +70 -0
  1320. package/src/components/table-of-contents/table-of-contents.variables.ts +9 -0
  1321. package/src/components/table-row/index.ts +6 -0
  1322. package/src/components/table-row/table-row.schema.ts +44 -0
  1323. package/src/components/table-row/table-row.svelte +94 -0
  1324. package/src/components/table-row/table-row.types.ts +51 -0
  1325. package/src/components/table-row/table-row.variables.ts +3 -0
  1326. package/src/components/tabs/index.ts +24 -0
  1327. package/src/components/tabs/tabs-context.ts +29 -0
  1328. package/src/components/tabs/tabs.schema.ts +49 -0
  1329. package/src/components/tabs/tabs.svelte +216 -0
  1330. package/src/components/tabs/tabs.types.ts +80 -0
  1331. package/src/components/tabs/tabs.variables.ts +3 -0
  1332. package/src/components/tag-input/index.ts +6 -0
  1333. package/src/components/tag-input/tag-input.schema.ts +172 -0
  1334. package/src/components/tag-input/tag-input.svelte +348 -0
  1335. package/src/components/tag-input/tag-input.types.ts +98 -0
  1336. package/src/components/tag-input/tag-input.variables.ts +3 -0
  1337. package/src/components/team-section/index.ts +6 -0
  1338. package/src/components/team-section/team-section.schema.ts +80 -0
  1339. package/src/components/team-section/team-section.svelte +70 -0
  1340. package/src/components/team-section/team-section.types.ts +59 -0
  1341. package/src/components/team-section/team-section.variables.ts +3 -0
  1342. package/src/components/testimonial-section/index.ts +10 -0
  1343. package/src/components/testimonial-section/testimonial-section.schema.ts +75 -0
  1344. package/src/components/testimonial-section/testimonial-section.svelte +56 -0
  1345. package/src/components/testimonial-section/testimonial-section.types.ts +57 -0
  1346. package/src/components/testimonial-section/testimonial-section.variables.ts +3 -0
  1347. package/src/components/textarea/index.ts +6 -0
  1348. package/src/components/textarea/textarea.schema.ts +65 -0
  1349. package/src/components/textarea/textarea.svelte +69 -0
  1350. package/src/components/textarea/textarea.types.ts +37 -0
  1351. package/src/components/textarea/textarea.variables.ts +3 -0
  1352. package/src/components/textarea-count.ts +19 -0
  1353. package/src/components/time-field/index.ts +6 -0
  1354. package/src/components/time-field/time-field.schema.ts +81 -0
  1355. package/src/components/time-field/time-field.svelte +219 -0
  1356. package/src/components/time-field/time-field.types.ts +70 -0
  1357. package/src/components/time-field/time-field.variables.ts +3 -0
  1358. package/src/components/timeline/index.ts +14 -0
  1359. package/src/components/timeline/timeline-groups.ts +158 -0
  1360. package/src/components/timeline/timeline.schema.ts +97 -0
  1361. package/src/components/timeline/timeline.svelte +51 -0
  1362. package/src/components/timeline/timeline.types.ts +80 -0
  1363. package/src/components/timeline/timeline.variables.ts +3 -0
  1364. package/src/components/toast-region/index.ts +14 -0
  1365. package/src/components/toast-region/toast-region.schema.ts +37 -0
  1366. package/src/components/toast-region/toast-region.svelte +627 -0
  1367. package/src/components/toast-region/toast-region.types.ts +31 -0
  1368. package/src/components/toast-region/toast-region.variables.ts +3 -0
  1369. package/src/components/toggle/index.ts +6 -0
  1370. package/src/components/toggle/toggle.schema.ts +64 -0
  1371. package/src/components/toggle/toggle.svelte +73 -0
  1372. package/src/components/toggle/toggle.types.ts +49 -0
  1373. package/src/components/toggle/toggle.variables.ts +3 -0
  1374. package/src/components/toolbar/index.ts +18 -0
  1375. package/src/components/toolbar/toolbar-group.svelte +27 -0
  1376. package/src/components/toolbar/toolbar-spacer.svelte +23 -0
  1377. package/src/components/toolbar/toolbar.schema.ts +31 -0
  1378. package/src/components/toolbar/toolbar.svelte +350 -0
  1379. package/src/components/toolbar/toolbar.types.ts +59 -0
  1380. package/src/components/toolbar/toolbar.variables.ts +3 -0
  1381. package/src/components/tooltip/index.ts +6 -0
  1382. package/src/components/tooltip/tooltip.schema.ts +38 -0
  1383. package/src/components/tooltip/tooltip.svelte +192 -0
  1384. package/src/components/tooltip/tooltip.types.ts +14 -0
  1385. package/src/components/tooltip/tooltip.variables.ts +3 -0
  1386. package/src/components/transfer-list/index.ts +10 -0
  1387. package/src/components/transfer-list/transfer-list.schema.ts +68 -0
  1388. package/src/components/transfer-list/transfer-list.svelte +358 -0
  1389. package/src/components/transfer-list/transfer-list.types.ts +58 -0
  1390. package/src/components/transfer-list/transfer-list.variables.ts +3 -0
  1391. package/src/components/tree/index.ts +38 -0
  1392. package/src/components/tree/tree-selection.ts +88 -0
  1393. package/src/components/tree/tree.schema.ts +141 -0
  1394. package/src/components/tree/tree.svelte +1205 -0
  1395. package/src/components/tree/tree.types.ts +106 -0
  1396. package/src/components/tree/tree.variables.ts +7 -0
  1397. package/src/components/tree-item/index.ts +5 -0
  1398. package/src/components/tree-item/tree-item.schema.ts +75 -0
  1399. package/src/components/tree-item/tree-item.svelte +831 -0
  1400. package/src/components/tree-item/tree-item.types.ts +53 -0
  1401. package/src/components/tree-item/tree-item.variables.ts +3 -0
  1402. package/src/components/typography/index.ts +6 -0
  1403. package/src/components/typography/typography.schema.ts +158 -0
  1404. package/src/components/typography/typography.svelte +45 -0
  1405. package/src/components/typography/typography.types.ts +117 -0
  1406. package/src/components/typography/typography.variables.ts +3 -0
  1407. package/src/components/virtual-list/index.ts +16 -0
  1408. package/src/components/virtual-list/virtual-list.schema.ts +61 -0
  1409. package/src/components/virtual-list/virtual-list.svelte +130 -0
  1410. package/src/components/virtual-list/virtual-list.types.ts +60 -0
  1411. package/src/components/virtual-list/virtual-list.variables.ts +3 -0
  1412. package/src/components/visually-hidden/index.ts +5 -0
  1413. package/src/components/visually-hidden/visually-hidden.schema.ts +136 -0
  1414. package/src/components/visually-hidden/visually-hidden.svelte +11 -0
  1415. package/src/components/visually-hidden/visually-hidden.types.ts +70 -0
  1416. package/src/components/visually-hidden/visually-hidden.variables.ts +3 -0
  1417. package/src/components/waveform/index.ts +6 -0
  1418. package/src/components/waveform/waveform.schema.ts +67 -0
  1419. package/src/components/waveform/waveform.svelte +235 -0
  1420. package/src/components/waveform/waveform.types.ts +54 -0
  1421. package/src/components/waveform/waveform.variables.ts +3 -0
  1422. package/src/index.ts +6 -1
  1423. package/src/utilities/change-tracker.svelte.ts +130 -151
  1424. package/src/utilities/sortable-controller.svelte.ts +112 -141
  1425. package/src/utilities/use-announcer.svelte.ts +100 -113
  1426. package/src/utilities/use-history.svelte.ts +141 -168
  1427. package/src/utilities/use-intersection.svelte.ts +36 -51
  1428. package/src/utilities/use-mutation-observer.svelte.ts +51 -69
  1429. package/src/utilities/use-reduced-motion.svelte.ts +21 -24
  1430. package/src/utilities/use-resize-observer.svelte.ts +29 -41
  1431. package/dist/components/schema-form/schema-form-async.fixture.d.ts +0 -1
  1432. package/dist/server/components/access-gate/access-gate.schema.js +0 -47
  1433. package/dist/server/components/access-gate/access-gate.variables.js +0 -10
  1434. package/dist/server/components/accordion/accordion.schema.js +0 -35
  1435. package/dist/server/components/accordion/accordion.variables.js +0 -10
  1436. package/dist/server/components/accordion-item/accordion-item.schema.js +0 -44
  1437. package/dist/server/components/accordion-item/accordion-item.variables.js +0 -10
  1438. package/dist/server/components/action-row/action-row.schema.js +0 -75
  1439. package/dist/server/components/action-row/action-row.variables.js +0 -10
  1440. package/dist/server/components/alert/alert.schema.js +0 -47
  1441. package/dist/server/components/alert/alert.variables.js +0 -10
  1442. package/dist/server/components/alert-dialog/alert-dialog.schema.js +0 -62
  1443. package/dist/server/components/alert-dialog/alert-dialog.variables.js +0 -10
  1444. package/dist/server/components/approval-card/approval-card.schema.js +0 -220
  1445. package/dist/server/components/approval-card/approval-card.variables.js +0 -10
  1446. package/dist/server/components/area-chart/area-chart.schema.js +0 -152
  1447. package/dist/server/components/area-chart/area-chart.variables.js +0 -10
  1448. package/dist/server/components/aspect-ratio/aspect-ratio.schema.js +0 -152
  1449. package/dist/server/components/aspect-ratio/aspect-ratio.variables.js +0 -10
  1450. package/dist/server/components/autocomplete/autocomplete.schema.js +0 -88
  1451. package/dist/server/components/autocomplete/autocomplete.variables.js +0 -10
  1452. package/dist/server/components/avatar/avatar.schema.js +0 -45
  1453. package/dist/server/components/avatar/avatar.variables.js +0 -10
  1454. package/dist/server/components/avatar-group/avatar-group.schema.js +0 -78
  1455. package/dist/server/components/avatar-group/avatar-group.variables.js +0 -10
  1456. package/dist/server/components/backdrop/backdrop.schema.js +0 -55
  1457. package/dist/server/components/backdrop/backdrop.variables.js +0 -10
  1458. package/dist/server/components/badge/badge.schema.js +0 -48
  1459. package/dist/server/components/badge/badge.variables.js +0 -10
  1460. package/dist/server/components/banner/banner.schema.js +0 -48
  1461. package/dist/server/components/banner/banner.variables.js +0 -10
  1462. package/dist/server/components/bar-chart/bar-chart.schema.js +0 -153
  1463. package/dist/server/components/bar-chart/bar-chart.variables.js +0 -10
  1464. package/dist/server/components/bento-cell/bento-cell.schema.js +0 -114
  1465. package/dist/server/components/bento-cell/bento-cell.variables.js +0 -10
  1466. package/dist/server/components/bento-grid/bento-grid.schema.js +0 -64
  1467. package/dist/server/components/bento-grid/bento-grid.variables.js +0 -10
  1468. package/dist/server/components/blog-section/blog-section.schema.js +0 -91
  1469. package/dist/server/components/blog-section/blog-section.variables.js +0 -10
  1470. package/dist/server/components/breadcrumbs/breadcrumbs.schema.js +0 -30
  1471. package/dist/server/components/breadcrumbs/breadcrumbs.variables.js +0 -10
  1472. package/dist/server/components/button/button.schema.js +0 -71
  1473. package/dist/server/components/button/button.variables.js +0 -10
  1474. package/dist/server/components/button-group/button-group.schema.js +0 -42
  1475. package/dist/server/components/button-group/button-group.variables.js +0 -10
  1476. package/dist/server/components/calendar/calendar.schema.js +0 -70
  1477. package/dist/server/components/calendar/calendar.variables.js +0 -10
  1478. package/dist/server/components/callout/callout.schema.js +0 -47
  1479. package/dist/server/components/callout/callout.variables.js +0 -10
  1480. package/dist/server/components/capability-gate/capability-gate.schema.js +0 -81
  1481. package/dist/server/components/capability-gate/capability-gate.variables.js +0 -10
  1482. package/dist/server/components/card/card.schema.js +0 -73
  1483. package/dist/server/components/card/card.variables.js +0 -10
  1484. package/dist/server/components/carousel/carousel.schema.js +0 -55
  1485. package/dist/server/components/carousel/carousel.variables.js +0 -10
  1486. package/dist/server/components/chat/chat.schema.js +0 -268
  1487. package/dist/server/components/chat/chat.variables.js +0 -10
  1488. package/dist/server/components/chat-conversation-header/chat-conversation-header.schema.js +0 -43
  1489. package/dist/server/components/chat-conversation-header/chat-conversation-header.variables.js +0 -10
  1490. package/dist/server/components/chat-conversation-list/chat-conversation-list.schema.js +0 -54
  1491. package/dist/server/components/chat-conversation-list/chat-conversation-list.variables.js +0 -10
  1492. package/dist/server/components/checkbox/checkbox.schema.js +0 -62
  1493. package/dist/server/components/checkbox/checkbox.variables.js +0 -10
  1494. package/dist/server/components/checkbox-group/checkbox-group.schema.js +0 -54
  1495. package/dist/server/components/checkbox-group/checkbox-group.variables.js +0 -10
  1496. package/dist/server/components/chip/chip.schema.js +0 -69
  1497. package/dist/server/components/chip/chip.variables.js +0 -10
  1498. package/dist/server/components/choice-grid/choice-grid.schema.js +0 -73
  1499. package/dist/server/components/choice-grid/choice-grid.variables.js +0 -10
  1500. package/dist/server/components/choice-grid-item/choice-grid-item.schema.js +0 -44
  1501. package/dist/server/components/choice-grid-item/choice-grid-item.variables.js +0 -10
  1502. package/dist/server/components/click-away-listener/click-away-listener.schema.js +0 -42
  1503. package/dist/server/components/click-away-listener/click-away-listener.variables.js +0 -10
  1504. package/dist/server/components/code-block/code-block.schema.js +0 -46
  1505. package/dist/server/components/code-block/code-block.variables.js +0 -10
  1506. package/dist/server/components/collapsible/collapsible.schema.js +0 -58
  1507. package/dist/server/components/collapsible/collapsible.variables.js +0 -10
  1508. package/dist/server/components/color-field/color-field.schema.js +0 -90
  1509. package/dist/server/components/color-field/color-field.variables.js +0 -10
  1510. package/dist/server/components/color-picker/color-picker.schema.js +0 -65
  1511. package/dist/server/components/color-picker/color-picker.variables.js +0 -10
  1512. package/dist/server/components/color-swatch-picker/color-swatch-picker.schema.js +0 -74
  1513. package/dist/server/components/color-swatch-picker/color-swatch-picker.variables.js +0 -10
  1514. package/dist/server/components/combobox/combobox.schema.js +0 -90
  1515. package/dist/server/components/combobox/combobox.variables.js +0 -10
  1516. package/dist/server/components/command-item/command-item.schema.js +0 -70
  1517. package/dist/server/components/command-item/command-item.variables.js +0 -10
  1518. package/dist/server/components/command-menu/command-menu.schema.js +0 -90
  1519. package/dist/server/components/command-menu/command-menu.variables.js +0 -10
  1520. package/dist/server/components/command-palette/command-palette.schema.js +0 -69
  1521. package/dist/server/components/command-palette/command-palette.variables.js +0 -10
  1522. package/dist/server/components/confirm-dialog/confirm-dialog.schema.js +0 -75
  1523. package/dist/server/components/confirm-dialog/confirm-dialog.variables.js +0 -10
  1524. package/dist/server/components/container/container.schema.js +0 -149
  1525. package/dist/server/components/container/container.variables.js +0 -10
  1526. package/dist/server/components/context-menu/context-menu.schema.js +0 -59
  1527. package/dist/server/components/context-menu/context-menu.variables.js +0 -10
  1528. package/dist/server/components/context-menu-trigger/context-menu-trigger.schema.js +0 -29
  1529. package/dist/server/components/context-menu-trigger/context-menu-trigger.variables.js +0 -10
  1530. package/dist/server/components/copy-button/copy-button.schema.js +0 -56
  1531. package/dist/server/components/copy-button/copy-button.variables.js +0 -10
  1532. package/dist/server/components/cta-section/cta-section.schema.js +0 -76
  1533. package/dist/server/components/cta-section/cta-section.variables.js +0 -10
  1534. package/dist/server/components/data-grid/data-grid.schema.js +0 -115
  1535. package/dist/server/components/data-grid/data-grid.variables.js +0 -10
  1536. package/dist/server/components/data-list/data-list.schema.js +0 -58
  1537. package/dist/server/components/data-list/data-list.variables.js +0 -10
  1538. package/dist/server/components/data-table/data-table.schema.js +0 -112
  1539. package/dist/server/components/data-table/data-table.variables.js +0 -10
  1540. package/dist/server/components/date-picker/date-picker.schema.js +0 -70
  1541. package/dist/server/components/date-picker/date-picker.variables.js +0 -10
  1542. package/dist/server/components/date-range-field/date-range-field.schema.js +0 -78
  1543. package/dist/server/components/date-range-field/date-range-field.variables.js +0 -10
  1544. package/dist/server/components/description-list/description-list.schema.js +0 -38
  1545. package/dist/server/components/description-list/description-list.variables.js +0 -10
  1546. package/dist/server/components/diff-statistics/diff-statistics.schema.js +0 -45
  1547. package/dist/server/components/diff-statistics/diff-statistics.variables.js +0 -10
  1548. package/dist/server/components/diff-viewer/diff-viewer.schema.js +0 -78
  1549. package/dist/server/components/diff-viewer/diff-viewer.variables.js +0 -10
  1550. package/dist/server/components/divider/divider.schema.js +0 -40
  1551. package/dist/server/components/divider/divider.variables.js +0 -10
  1552. package/dist/server/components/drawer/drawer.schema.js +0 -68
  1553. package/dist/server/components/drawer/drawer.variables.js +0 -10
  1554. package/dist/server/components/dropdown/dropdown.schema.js +0 -44
  1555. package/dist/server/components/dropdown/dropdown.variables.js +0 -10
  1556. package/dist/server/components/dropdown-group/dropdown-group.schema.js +0 -37
  1557. package/dist/server/components/dropdown-group/dropdown-group.variables.js +0 -10
  1558. package/dist/server/components/dropdown-item/dropdown-item.schema.js +0 -60
  1559. package/dist/server/components/dropdown-item/dropdown-item.variables.js +0 -10
  1560. package/dist/server/components/dropdown-label/dropdown-label.schema.js +0 -28
  1561. package/dist/server/components/dropdown-label/dropdown-label.variables.js +0 -10
  1562. package/dist/server/components/dropdown-menu/dropdown-menu.schema.js +0 -28
  1563. package/dist/server/components/dropdown-menu/dropdown-menu.variables.js +0 -10
  1564. package/dist/server/components/dropdown-separator/dropdown-separator.schema.js +0 -20
  1565. package/dist/server/components/dropdown-separator/dropdown-separator.variables.js +0 -10
  1566. package/dist/server/components/dropdown-trigger/dropdown-trigger.schema.js +0 -32
  1567. package/dist/server/components/dropdown-trigger/dropdown-trigger.variables.js +0 -10
  1568. package/dist/server/components/empty-state/empty-state.schema.js +0 -46
  1569. package/dist/server/components/empty-state/empty-state.variables.js +0 -10
  1570. package/dist/server/components/event-stream-viewer/event-stream-viewer.schema.js +0 -144
  1571. package/dist/server/components/event-stream-viewer/event-stream-viewer.variables.js +0 -10
  1572. package/dist/server/components/event-timeline/event-timeline.schema.js +0 -104
  1573. package/dist/server/components/event-timeline/event-timeline.variables.js +0 -10
  1574. package/dist/server/components/faceted-filter-bar/faceted-filter-bar.schema.js +0 -76
  1575. package/dist/server/components/faceted-filter-bar/faceted-filter-bar.variables.js +0 -10
  1576. package/dist/server/components/feature-section/feature-section.schema.js +0 -91
  1577. package/dist/server/components/feature-section/feature-section.variables.js +0 -10
  1578. package/dist/server/components/feed/feed.schema.js +0 -34
  1579. package/dist/server/components/feed/feed.variables.js +0 -10
  1580. package/dist/server/components/feed-event/feed-event.schema.js +0 -59
  1581. package/dist/server/components/feed-event/feed-event.variables.js +0 -10
  1582. package/dist/server/components/file-upload/file-upload.schema.js +0 -79
  1583. package/dist/server/components/file-upload/file-upload.variables.js +0 -15
  1584. package/dist/server/components/floating-action-button/floating-action-button.schema.js +0 -53
  1585. package/dist/server/components/floating-action-button/floating-action-button.variables.js +0 -10
  1586. package/dist/server/components/focus-trap/focus-trap.schema.js +0 -59
  1587. package/dist/server/components/focus-trap/focus-trap.variables.js +0 -10
  1588. package/dist/server/components/footer/footer.schema.js +0 -50
  1589. package/dist/server/components/footer/footer.variables.js +0 -10
  1590. package/dist/server/components/form-field/form-field.schema.js +0 -55
  1591. package/dist/server/components/form-field/form-field.variables.js +0 -10
  1592. package/dist/server/components/form-section/form-section.schema.js +0 -50
  1593. package/dist/server/components/form-section/form-section.variables.js +0 -10
  1594. package/dist/server/components/grid/grid.schema.js +0 -62
  1595. package/dist/server/components/grid/grid.variables.js +0 -10
  1596. package/dist/server/components/grid-item/grid-item.schema.js +0 -89
  1597. package/dist/server/components/grid-item/grid-item.variables.js +0 -10
  1598. package/dist/server/components/grid-list/grid-list.schema.js +0 -35
  1599. package/dist/server/components/grid-list/grid-list.variables.js +0 -10
  1600. package/dist/server/components/grid-list-item/grid-list-item.schema.js +0 -69
  1601. package/dist/server/components/grid-list-item/grid-list-item.variables.js +0 -10
  1602. package/dist/server/components/hero-section/hero-section.schema.js +0 -72
  1603. package/dist/server/components/hero-section/hero-section.variables.js +0 -10
  1604. package/dist/server/components/hover-card/hover-card.schema.js +0 -83
  1605. package/dist/server/components/hover-card/hover-card.variables.js +0 -10
  1606. package/dist/server/components/image/image.schema.js +0 -73
  1607. package/dist/server/components/image/image.variables.js +0 -10
  1608. package/dist/server/components/inline-loading/inline-loading.schema.js +0 -38
  1609. package/dist/server/components/inline-loading/inline-loading.variables.js +0 -10
  1610. package/dist/server/components/input/input.schema.js +0 -84
  1611. package/dist/server/components/input/input.variables.js +0 -10
  1612. package/dist/server/components/invocation-rule-builder/invocation-rule-builder.schema.js +0 -178
  1613. package/dist/server/components/invocation-rule-builder/invocation-rule-builder.variables.js +0 -10
  1614. package/dist/server/components/json-schema-editor/json-schema-editor.schema.js +0 -72
  1615. package/dist/server/components/json-schema-editor/json-schema-editor.variables.js +0 -10
  1616. package/dist/server/components/json-viewer/json-viewer.schema.js +0 -42
  1617. package/dist/server/components/json-viewer/json-viewer.variables.js +0 -10
  1618. package/dist/server/components/kanban-board/kanban-board.schema.js +0 -73
  1619. package/dist/server/components/kanban-board/kanban-board.variables.js +0 -15
  1620. package/dist/server/components/kbd/kbd.schema.js +0 -38
  1621. package/dist/server/components/kbd/kbd.variables.js +0 -10
  1622. package/dist/server/components/keyboard-shortcuts/keyboard-shortcuts.schema.js +0 -39
  1623. package/dist/server/components/keyboard-shortcuts/keyboard-shortcuts.variables.js +0 -10
  1624. package/dist/server/components/label/label.schema.js +0 -44
  1625. package/dist/server/components/label/label.variables.js +0 -10
  1626. package/dist/server/components/line-chart/line-chart.schema.js +0 -148
  1627. package/dist/server/components/line-chart/line-chart.variables.js +0 -10
  1628. package/dist/server/components/link/link.schema.js +0 -70
  1629. package/dist/server/components/link/link.variables.js +0 -10
  1630. package/dist/server/components/load-more/load-more.schema.js +0 -70
  1631. package/dist/server/components/load-more/load-more.variables.js +0 -10
  1632. package/dist/server/components/locale-provider/locale-provider.schema.js +0 -33
  1633. package/dist/server/components/locale-provider/locale-provider.variables.js +0 -10
  1634. package/dist/server/components/logo-cloud/logo-cloud.schema.js +0 -72
  1635. package/dist/server/components/logo-cloud/logo-cloud.variables.js +0 -10
  1636. package/dist/server/components/markdown-editor/markdown-editor.schema.js +0 -126
  1637. package/dist/server/components/markdown-editor/markdown-editor.variables.js +0 -10
  1638. package/dist/server/components/marquee/marquee.schema.js +0 -59
  1639. package/dist/server/components/marquee/marquee.variables.js +0 -14
  1640. package/dist/server/components/masonry/masonry.schema.js +0 -43
  1641. package/dist/server/components/masonry/masonry.variables.js +0 -10
  1642. package/dist/server/components/matrix-chart/matrix-chart.schema.js +0 -99
  1643. package/dist/server/components/matrix-chart/matrix-chart.variables.js +0 -10
  1644. package/dist/server/components/media-controls/media-controls.schema.js +0 -77
  1645. package/dist/server/components/media-controls/media-controls.variables.js +0 -10
  1646. package/dist/server/components/mega-menu/mega-menu.schema.js +0 -46
  1647. package/dist/server/components/mega-menu/mega-menu.variables.js +0 -10
  1648. package/dist/server/components/menu-bar/menu-bar.schema.js +0 -41
  1649. package/dist/server/components/menu-bar/menu-bar.variables.js +0 -10
  1650. package/dist/server/components/message/message.schema.js +0 -47
  1651. package/dist/server/components/message/message.variables.js +0 -10
  1652. package/dist/server/components/meter/meter.schema.js +0 -63
  1653. package/dist/server/components/meter/meter.variables.js +0 -10
  1654. package/dist/server/components/modal/modal.schema.js +0 -96
  1655. package/dist/server/components/modal/modal.variables.js +0 -10
  1656. package/dist/server/components/multi-select/multi-select.schema.js +0 -97
  1657. package/dist/server/components/multi-select/multi-select.variables.js +0 -10
  1658. package/dist/server/components/navigation-bar/navigation-bar.schema.js +0 -66
  1659. package/dist/server/components/navigation-bar/navigation-bar.variables.js +0 -10
  1660. package/dist/server/components/navigation-item/navigation-item.schema.js +0 -57
  1661. package/dist/server/components/navigation-item/navigation-item.variables.js +0 -10
  1662. package/dist/server/components/newsletter-section/newsletter-section.schema.js +0 -71
  1663. package/dist/server/components/newsletter-section/newsletter-section.variables.js +0 -10
  1664. package/dist/server/components/number-input/number-input.schema.js +0 -100
  1665. package/dist/server/components/number-input/number-input.variables.js +0 -10
  1666. package/dist/server/components/page-header/page-header.schema.js +0 -38
  1667. package/dist/server/components/page-header/page-header.variables.js +0 -10
  1668. package/dist/server/components/pagination/pagination.schema.js +0 -42
  1669. package/dist/server/components/pagination/pagination.variables.js +0 -10
  1670. package/dist/server/components/payload-inspector/payload-inspector.schema.js +0 -86
  1671. package/dist/server/components/payload-inspector/payload-inspector.variables.js +0 -10
  1672. package/dist/server/components/permission-matrix/permission-matrix.schema.js +0 -79
  1673. package/dist/server/components/permission-matrix/permission-matrix.variables.js +0 -10
  1674. package/dist/server/components/phone-input/phone-input.schema.js +0 -581
  1675. package/dist/server/components/phone-input/phone-input.variables.js +0 -10
  1676. package/dist/server/components/pin-input/pin-input.schema.js +0 -99
  1677. package/dist/server/components/pin-input/pin-input.variables.js +0 -10
  1678. package/dist/server/components/popover/popover.schema.js +0 -97
  1679. package/dist/server/components/popover/popover.variables.js +0 -10
  1680. package/dist/server/components/portal/portal.schema.js +0 -48
  1681. package/dist/server/components/portal/portal.variables.js +0 -10
  1682. package/dist/server/components/pricing-card/pricing-card.schema.js +0 -59
  1683. package/dist/server/components/pricing-card/pricing-card.variables.js +0 -10
  1684. package/dist/server/components/pricing-section/pricing-section.schema.js +0 -91
  1685. package/dist/server/components/pricing-section/pricing-section.variables.js +0 -10
  1686. package/dist/server/components/progress/progress.schema.js +0 -48
  1687. package/dist/server/components/progress/progress.variables.js +0 -10
  1688. package/dist/server/components/qr-code/qr-code.schema.js +0 -45
  1689. package/dist/server/components/qr-code/qr-code.variables.js +0 -10
  1690. package/dist/server/components/radio-group/radio-group.schema.js +0 -63
  1691. package/dist/server/components/radio-group/radio-group.variables.js +0 -10
  1692. package/dist/server/components/rating/rating.schema.js +0 -94
  1693. package/dist/server/components/rating/rating.variables.js +0 -10
  1694. package/dist/server/components/resizable-panels/resizable-panels.schema.js +0 -62
  1695. package/dist/server/components/resizable-panels/resizable-panels.variables.js +0 -10
  1696. package/dist/server/components/review-editor/review-editor.schema.js +0 -92
  1697. package/dist/server/components/review-editor/review-editor.variables.js +0 -10
  1698. package/dist/server/components/run-step-timeline/run-step-timeline.schema.js +0 -438
  1699. package/dist/server/components/run-step-timeline/run-step-timeline.variables.js +0 -10
  1700. package/dist/server/components/schema-form/schema-form.schema.js +0 -55
  1701. package/dist/server/components/schema-form/schema-form.variables.js +0 -10
  1702. package/dist/server/components/scroll-area/scroll-area.schema.js +0 -61
  1703. package/dist/server/components/scroll-area/scroll-area.variables.js +0 -10
  1704. package/dist/server/components/search-field/search-field.schema.js +0 -72
  1705. package/dist/server/components/search-field/search-field.variables.js +0 -10
  1706. package/dist/server/components/secret-value-field/secret-value-field.schema.js +0 -66
  1707. package/dist/server/components/secret-value-field/secret-value-field.variables.js +0 -10
  1708. package/dist/server/components/section-heading/section-heading.schema.js +0 -53
  1709. package/dist/server/components/section-heading/section-heading.variables.js +0 -10
  1710. package/dist/server/components/segment/segment.schema.js +0 -54
  1711. package/dist/server/components/segment/segment.variables.js +0 -10
  1712. package/dist/server/components/segmented-control/segmented-control.schema.js +0 -94
  1713. package/dist/server/components/segmented-control/segmented-control.variables.js +0 -10
  1714. package/dist/server/components/select/select.schema.js +0 -61
  1715. package/dist/server/components/select/select.variables.js +0 -10
  1716. package/dist/server/components/selection-popover/selection-popover.schema.js +0 -59
  1717. package/dist/server/components/selection-popover/selection-popover.variables.js +0 -10
  1718. package/dist/server/components/share-card/share-card.schema.js +0 -64
  1719. package/dist/server/components/share-card/share-card.variables.js +0 -10
  1720. package/dist/server/components/sheet/sheet.schema.js +0 -64
  1721. package/dist/server/components/sheet/sheet.variables.js +0 -10
  1722. package/dist/server/components/shortcut-hint/shortcut-hint.schema.js +0 -46
  1723. package/dist/server/components/shortcut-hint/shortcut-hint.variables.js +0 -10
  1724. package/dist/server/components/side-navigation/side-navigation.schema.js +0 -36
  1725. package/dist/server/components/side-navigation/side-navigation.variables.js +0 -10
  1726. package/dist/server/components/side-navigation-group/side-navigation-group.schema.js +0 -58
  1727. package/dist/server/components/side-navigation-group/side-navigation-group.variables.js +0 -10
  1728. package/dist/server/components/side-navigation-item/side-navigation-item.schema.js +0 -57
  1729. package/dist/server/components/side-navigation-item/side-navigation-item.variables.js +0 -10
  1730. package/dist/server/components/sidebar/sidebar.schema.js +0 -47
  1731. package/dist/server/components/sidebar/sidebar.variables.js +0 -10
  1732. package/dist/server/components/skeleton/skeleton.schema.js +0 -32
  1733. package/dist/server/components/skeleton/skeleton.variables.js +0 -10
  1734. package/dist/server/components/skip-link/skip-link.schema.js +0 -34
  1735. package/dist/server/components/skip-link/skip-link.variables.js +0 -10
  1736. package/dist/server/components/slider/slider.schema.js +0 -91
  1737. package/dist/server/components/slider/slider.variables.js +0 -10
  1738. package/dist/server/components/sortable-list/sortable-list.schema.js +0 -76
  1739. package/dist/server/components/sortable-list/sortable-list.variables.js +0 -10
  1740. package/dist/server/components/source-diff-viewer/source-diff-viewer.schema.js +0 -45
  1741. package/dist/server/components/source-diff-viewer/source-diff-viewer.variables.js +0 -10
  1742. package/dist/server/components/sparkbar/sparkbar.schema.js +0 -53
  1743. package/dist/server/components/sparkbar/sparkbar.variables.js +0 -10
  1744. package/dist/server/components/spectrogram/spectrogram.schema.js +0 -91
  1745. package/dist/server/components/spectrogram/spectrogram.variables.js +0 -10
  1746. package/dist/server/components/spectrum-chart/spectrum-chart.schema.js +0 -78
  1747. package/dist/server/components/spectrum-chart/spectrum-chart.variables.js +0 -10
  1748. package/dist/server/components/speed-dial/speed-dial.schema.js +0 -55
  1749. package/dist/server/components/speed-dial/speed-dial.variables.js +0 -10
  1750. package/dist/server/components/speed-dial-action/speed-dial-action.schema.js +0 -50
  1751. package/dist/server/components/speed-dial-action/speed-dial-action.variables.js +0 -10
  1752. package/dist/server/components/spinner/spinner.schema.js +0 -30
  1753. package/dist/server/components/spinner/spinner.variables.js +0 -10
  1754. package/dist/server/components/stacked-list-item/stacked-list-item.schema.js +0 -85
  1755. package/dist/server/components/stacked-list-item/stacked-list-item.variables.js +0 -10
  1756. package/dist/server/components/stat/stat.schema.js +0 -59
  1757. package/dist/server/components/stat/stat.variables.js +0 -10
  1758. package/dist/server/components/stat-group/stat-group.schema.js +0 -44
  1759. package/dist/server/components/stat-group/stat-group.variables.js +0 -10
  1760. package/dist/server/components/stats-section/stats-section.schema.js +0 -92
  1761. package/dist/server/components/stats-section/stats-section.variables.js +0 -10
  1762. package/dist/server/components/status-dot/status-dot.schema.js +0 -46
  1763. package/dist/server/components/status-dot/status-dot.variables.js +0 -10
  1764. package/dist/server/components/steps/steps.schema.js +0 -48
  1765. package/dist/server/components/steps/steps.variables.js +0 -10
  1766. package/dist/server/components/surface/surface.schema.js +0 -34
  1767. package/dist/server/components/surface/surface.variables.js +0 -10
  1768. package/dist/server/components/tab/tab.schema.js +0 -48
  1769. package/dist/server/components/tab/tab.variables.js +0 -10
  1770. package/dist/server/components/tab-list/tab-list.schema.js +0 -38
  1771. package/dist/server/components/tab-list/tab-list.variables.js +0 -10
  1772. package/dist/server/components/tab-panel/tab-panel.schema.js +0 -39
  1773. package/dist/server/components/tab-panel/tab-panel.variables.js +0 -10
  1774. package/dist/server/components/table/table.schema.js +0 -51
  1775. package/dist/server/components/table/table.variables.js +0 -10
  1776. package/dist/server/components/table-body/table-body.schema.js +0 -30
  1777. package/dist/server/components/table-body/table-body.variables.js +0 -10
  1778. package/dist/server/components/table-cell/table-cell.schema.js +0 -44
  1779. package/dist/server/components/table-cell/table-cell.variables.js +0 -10
  1780. package/dist/server/components/table-header/table-header.schema.js +0 -47
  1781. package/dist/server/components/table-header/table-header.variables.js +0 -10
  1782. package/dist/server/components/table-header-cell/table-header-cell.schema.js +0 -46
  1783. package/dist/server/components/table-header-cell/table-header-cell.variables.js +0 -10
  1784. package/dist/server/components/table-of-contents/table-of-contents.schema.js +0 -48
  1785. package/dist/server/components/table-of-contents/table-of-contents.variables.js +0 -16
  1786. package/dist/server/components/table-row/table-row.schema.js +0 -49
  1787. package/dist/server/components/table-row/table-row.variables.js +0 -10
  1788. package/dist/server/components/tabs/tabs.schema.js +0 -54
  1789. package/dist/server/components/tabs/tabs.variables.js +0 -10
  1790. package/dist/server/components/tag-input/tag-input.schema.js +0 -171
  1791. package/dist/server/components/tag-input/tag-input.variables.js +0 -10
  1792. package/dist/server/components/team-section/team-section.schema.js +0 -85
  1793. package/dist/server/components/team-section/team-section.variables.js +0 -10
  1794. package/dist/server/components/testimonial-section/testimonial-section.schema.js +0 -80
  1795. package/dist/server/components/testimonial-section/testimonial-section.variables.js +0 -10
  1796. package/dist/server/components/textarea/textarea.schema.js +0 -67
  1797. package/dist/server/components/textarea/textarea.variables.js +0 -10
  1798. package/dist/server/components/time-field/time-field.schema.js +0 -86
  1799. package/dist/server/components/time-field/time-field.variables.js +0 -10
  1800. package/dist/server/components/timeline/timeline.schema.js +0 -99
  1801. package/dist/server/components/timeline/timeline.variables.js +0 -10
  1802. package/dist/server/components/toast-region/toast-region.schema.js +0 -41
  1803. package/dist/server/components/toast-region/toast-region.variables.js +0 -10
  1804. package/dist/server/components/toggle/toggle.schema.js +0 -62
  1805. package/dist/server/components/toggle/toggle.variables.js +0 -10
  1806. package/dist/server/components/toolbar/toolbar.schema.js +0 -35
  1807. package/dist/server/components/toolbar/toolbar.variables.js +0 -10
  1808. package/dist/server/components/tooltip/tooltip.schema.js +0 -43
  1809. package/dist/server/components/tooltip/tooltip.variables.js +0 -10
  1810. package/dist/server/components/transfer-list/transfer-list.schema.js +0 -70
  1811. package/dist/server/components/transfer-list/transfer-list.variables.js +0 -10
  1812. package/dist/server/components/tree/tree.schema.js +0 -137
  1813. package/dist/server/components/tree/tree.variables.js +0 -14
  1814. package/dist/server/components/tree-item/tree-item.schema.js +0 -77
  1815. package/dist/server/components/tree-item/tree-item.variables.js +0 -10
  1816. package/dist/server/components/typography/typography.schema.js +0 -163
  1817. package/dist/server/components/typography/typography.variables.js +0 -10
  1818. package/dist/server/components/virtual-list/virtual-list.schema.js +0 -67
  1819. package/dist/server/components/virtual-list/virtual-list.variables.js +0 -10
  1820. package/dist/server/components/visually-hidden/visually-hidden.schema.js +0 -140
  1821. package/dist/server/components/visually-hidden/visually-hidden.variables.js +0 -10
  1822. package/dist/server/components/waveform/waveform.schema.js +0 -70
  1823. package/dist/server/components/waveform/waveform.variables.js +0 -10
  1824. package/dist/server/index.server-0jw824y0.js +0 -9
  1825. package/dist/server/index.server-2a789g24.js +0 -1163
  1826. package/dist/server/index.server-2ef5byty.js +0 -41
  1827. package/dist/server/index.server-2ssdpqz0.js +0 -458
  1828. package/dist/server/index.server-30zw3bv3.js +0 -52
  1829. package/dist/server/index.server-3qdm4kcn.js +0 -1028
  1830. package/dist/server/index.server-6dfav8r0.js +0 -142
  1831. package/dist/server/index.server-98zf89h7.js +0 -3842
  1832. package/dist/server/index.server-a3dhq5t8.js +0 -2309
  1833. package/dist/server/index.server-e9eyxk7a.js +0 -9
  1834. package/dist/server/index.server-ndss6byn.js +0 -123
  1835. package/dist/server/index.server-pp6vn6z6.js +0 -294
  1836. package/dist/server/index.server-qwknp759.js +0 -141
  1837. package/dist/server/index.server-tbxe02px.js +0 -9
  1838. package/dist/server/index.server-xpad931e.js +0 -85
  1839. package/dist/server/index.server-yb5b3hnv.js +0 -9
  1840. package/dist/server/index.server-ze9xj0kf.js +0 -100
  1841. package/dist/server/index.server-zeqv7nrz.js +0 -184
  1842. /package/dist/{index.browser.css → components/markdown-editor/index.css} +0 -0
@@ -0,0 +1,1809 @@
1
+ <script lang="ts" module>
2
+ export {};
3
+ </script>
4
+
5
+ <script lang="ts">
6
+ import { tick, untrack } from 'svelte';
7
+ import { classNames } from '../../../utilities/class-names.ts';
8
+ import { getMessages, pairToolCallsWithResults, resolveMessageReasoning, resolveMessageSteps, resolveMessageSuggestions, } from '../utilities';
9
+ import { ChatMessage, ChatDateSeparator } from '../message';
10
+ import { ChatInput } from '../input';
11
+ import { DEFAULT_SCROLL_CONFIGURATION } from './scroll-utilities';
12
+ import { useChatScrollState } from './use-chat-scroll-state.svelte';
13
+ import { useChatUnreadState } from './use-chat-unread-state.svelte';
14
+ import { useChatKeyboardNav } from './use-chat-keyboard-nav.svelte';
15
+ import { useChatSearch } from './use-chat-search.svelte';
16
+ import { useIntersection } from '../../../utilities/use-intersection.svelte.ts';
17
+ import ChatJumpControls from './chat-jump-controls.svelte';
18
+ import ChatHistoryTrigger from './chat-history-trigger.svelte';
19
+ import ChatStatusAnnouncer from './chat-status-announcer.svelte';
20
+ import ChatSearchBar from './chat-search-bar.svelte';
21
+ import { buildChatRenderRows, buildMessagesWithDateSeparators, chatRenderRowKey, findPairedToolResultIds, findRenderRowIndexByMessageId, } from './use-chat-message-groups.svelte.ts';
22
+ import { ChatVirtualizer } from './use-chat-virtualizer.svelte.ts';
23
+ import { useChatDisclosureState } from './use-chat-disclosure-state.svelte.ts';
24
+ import { useChatTypingIndicator } from './use-chat-typing-indicator.svelte.ts';
25
+ import { useChatReadReceipts } from './use-chat-read-receipts.svelte.ts';
26
+ import ChatParticipantTyping from './chat-participant-typing.svelte';
27
+ import ChatReadReceipt from '../message/chat-read-receipt.svelte';
28
+ const noopAttachment = () => { };
29
+ let { id, conversation, atBottom = $bindable(true), unreadCount = $bindable(0), newMessageIndicatorVisible = $bindable(false), class: className, surfaceMode = 'default', density = 'comfortable', variant = 'bubble', bottomThreshold = DEFAULT_SCROLL_CONFIGURATION.bottomThreshold, jumpThreshold = DEFAULT_SCROLL_CONFIGURATION.jumpThreshold, streaming = false, streamingStatus, capabilities, virtualized = false, virtualizationEstimatedRowHeight = 88, virtualizationOverscan = 3, virtualizationInitialHeight = 640, moreHistoryAvailable = true, loadEarlierLabel = 'Load earlier messages', loadingEarlierLabel = 'Loading earlier messages', header, empty, emptyPrompts, messageActions, messageStatus, row, messagePart, viewportAttachment, typingParticipants, readReceipts, adapter, onadaptererror, onpushmessage, ontypingchange, onreadreceipt, onsubmit, onretry, onedit, onapprove, ondeny, messageReasoning, messageSteps, messageSuggestions, onsuggestionselect, onloadhistory, onstopgenerating, onjumptolatest, onscrollstatechange, onunreadindicatorchange, onexpandedchange, onattachmentadd, onattachmentremove, onattachmentfailure, oncomposerinput, ...rest } = $props();
30
+ // ==========================================================================
31
+ // Refs and Internal State
32
+ // ==========================================================================
33
+ let viewport = $state(null);
34
+ let containerRef = $state(null);
35
+ let inputRef;
36
+ let searchBarRef = $state(undefined);
37
+ let historyTriggerRef = $state(undefined);
38
+ // Container-level drag-and-drop state for full-window drop zone
39
+ let isContainerDragOver = $state(false);
40
+ // Streaming state: separate from the Conversation to avoid re-rendering the message list
41
+ let streamingContent = $state('');
42
+ let streamingMessageId = $state(null);
43
+ let streamingRowElement = $state(null);
44
+ // Token buffer: accumulate tokens as an array; joined and flushed once per animation frame
45
+ // to avoid O(n²) string work from calling join() on every push.
46
+ let tokenBuffer = [];
47
+ // rAF handle for batching token flushes and scroll throttling during streaming
48
+ let streamingScrollRaf;
49
+ // C3 — tool approval state. Keyed by tool call id. Both sets are UI-only and
50
+ // are never written back to the transcript. A pending tool-approval part has
51
+ // its call id in neither set (approved === undefined). Once the consumer or
52
+ // adapter resolves the approval, the id moves into one of the sets and the
53
+ // part re-derives to show the resolved state.
54
+ let approvedToolCallIds = $state(new Set());
55
+ let deniedToolCallIds = $state(new Set());
56
+ // Per-message disclosure state (reasoning blocks + tool-call cards). UI-only;
57
+ // never written to the transcript. Both are collapsed by default; toggling
58
+ // triggers a virtualizer remeasure so the row's height tracks the expanded
59
+ // content. Kept as separate instances so a message carrying both a reasoning
60
+ // block and a tool-call card discloses each independently.
61
+ function remeasureRow(messageId) {
62
+ if (!isVirtualized || !viewport)
63
+ return;
64
+ // Find the message row DOM node via the stable id and re-measure it so
65
+ // the virtualizer updates the row's height after the disclosure transitions.
66
+ const rowNode = viewport.querySelector(`#message-${CSS.escape(messageId)}`);
67
+ if (rowNode) {
68
+ chatVirtualizer.measureElementNode(rowNode);
69
+ }
70
+ }
71
+ const reasoningState = useChatDisclosureState({ onRemeasureRow: remeasureRow });
72
+ const toolCallState = useChatDisclosureState({ onRemeasureRow: remeasureRow });
73
+ // Reset UI-only approval/disclosure/typing/receipt state on conversation change
74
+ // so stale approved/denied sets, expanded reasoning/tool-call disclosures,
75
+ // adapter-derived typing state, and accumulated read receipts from the previous conversation
76
+ // are cleared (their message ids can collide). The void reference to
77
+ // `conversationId` at the start of the effect body is the Svelte 5 pattern for
78
+ // declaring a reactive dependency on a derived without reading its value.
79
+ $effect(() => {
80
+ conversationId;
81
+ approvedToolCallIds = new Set();
82
+ deniedToolCallIds = new Set();
83
+ reasoningState.reset();
84
+ toolCallState.reset();
85
+ typingIndicatorState.reset();
86
+ readReceiptsState.reset();
87
+ });
88
+ let isLoadingHistory = $state(false);
89
+ let adapterHasMoreHistory = $state(undefined);
90
+ let historyAnnouncement = $state('');
91
+ let pendingHistoryScroll = $state(null);
92
+ let deferredAdapterHasMoreHistory = null;
93
+ let historyAnchorMessageId = $state(null);
94
+ let historyAnchorViewportOffset = $state(null);
95
+ let historyAnchorRestoredScrollTop = null;
96
+ let previousHistoryConversationId;
97
+ let previousHistoryAdapter;
98
+ // ==========================================================================
99
+ // Initialize Helpers
100
+ // ==========================================================================
101
+ const scrollState = useChatScrollState({
102
+ getBottomThreshold: () => bottomThreshold,
103
+ getJumpThreshold: () => jumpThreshold,
104
+ onScrollStateChange: handleScrollStateChange,
105
+ onReachBottom: () => {
106
+ // The sentinel fires when the user reaches the bottom via
107
+ // IntersectionObserver, which does not emit onScrollStateChange.
108
+ // Update the bindable prop here so it stays in sync with the sentinel path.
109
+ atBottom = true;
110
+ if (unreadState.unreadCount > 0 || unreadState.newMessageIndicatorVisible) {
111
+ unreadState.markAllAsRead();
112
+ }
113
+ },
114
+ });
115
+ const unreadState = useChatUnreadState({
116
+ onUnreadIndicatorChange: (event) => {
117
+ // Update the bindable props at the mutation site rather than via a $effect.
118
+ unreadCount = event.unreadCount;
119
+ newMessageIndicatorVisible = event.newMessageIndicatorVisible;
120
+ onunreadindicatorchange?.(event);
121
+ },
122
+ });
123
+ const keyboardNav = useChatKeyboardNav({
124
+ onJumpToLatest: handleJumpToLatest,
125
+ onJumpToStart: () => {
126
+ if (isVirtualized) {
127
+ chatVirtualizer.scrollToOffset(0, { behavior: scrollState.getScrollBehavior() });
128
+ }
129
+ },
130
+ getScrollBehavior: scrollState.getScrollBehavior,
131
+ getHistoryTrigger: () => (showHistoryTrigger ? historyTriggerRef : null),
132
+ onVirtualMessageNavigation: (direction) => navigateVirtualMessage(direction),
133
+ });
134
+ const messages = $derived(getMessages(conversation));
135
+ // C5 — suggested replies are a per-TURN affordance shown only beneath the last
136
+ // message, not on every historical message that still carries the metadata.
137
+ const lastMessageId = $derived(messages.at(-1)?.id);
138
+ let previousAutoScrollMessageCount = getMessages(conversation).length;
139
+ // The conversation id as a stable VALUE dependency. The subscribe effect keys
140
+ // on this (not on `conversation.id` read inline) so a consumer passing a fresh
141
+ // `conversation` snapshot on every transcript update — but with the same id —
142
+ // does not tear down and reopen the real-time subscription each render.
143
+ const conversationId = $derived(conversation.id);
144
+ const showTypingIndicator = $derived(streaming && !streamingMessageId);
145
+ // Expand capabilities object with per-feature defaults.
146
+ const allowAttachments = $derived(capabilities?.attachments ?? true);
147
+ const allowSearch = $derived(capabilities?.search ?? true);
148
+ const allowCopy = $derived(capabilities?.copy ?? true);
149
+ const allowEditing = $derived(capabilities?.editing ?? true);
150
+ const allowRetry = $derived(capabilities?.retry ?? true);
151
+ const toolCallPairsByCallId = $derived.by(() => {
152
+ const toolCallPairs = pairToolCallsWithResults(messages);
153
+ const map = new Map();
154
+ for (const pair of toolCallPairs) {
155
+ const existing = map.get(pair.call.id);
156
+ if (existing) {
157
+ existing.push(pair);
158
+ }
159
+ else {
160
+ map.set(pair.call.id, [pair]);
161
+ }
162
+ }
163
+ return map;
164
+ });
165
+ const renderRows = $derived.by(() => {
166
+ const pairedToolResultIds = findPairedToolResultIds(messages);
167
+ const messagesWithDates = buildMessagesWithDateSeparators(messages, pairedToolResultIds);
168
+ return buildChatRenderRows(messagesWithDates, {
169
+ firstUnreadId: unreadState.firstUnreadId,
170
+ showTypingIndicator,
171
+ });
172
+ });
173
+ let hasMounted = $state(false);
174
+ $effect(() => {
175
+ hasMounted = true;
176
+ });
177
+ const isVirtualized = $derived(virtualized && hasMounted && messages.length > 0);
178
+ const timelineResetIdentity = $derived(`${conversationId}:${isVirtualized ? 'virtualized' : 'full'}`);
179
+ const staticRowsResetIdentity = $derived(messages[0]?.id ?? '');
180
+ const chatVirtualizer = new ChatVirtualizer({
181
+ getScrollElement: () => viewport,
182
+ getCount: () => (isVirtualized ? renderRows.length : 0),
183
+ getItemKey: (index) => chatRenderRowKey(renderRows[index] ?? { type: 'typing' }),
184
+ getEstimatedSize: () => virtualizationEstimatedRowHeight,
185
+ getOverscan: () => virtualizationOverscan,
186
+ getInitialHeight: () => virtualizationInitialHeight,
187
+ getScrollPaddingStart: () => virtualSpacerOffsetTop(),
188
+ });
189
+ const virtualRows = $derived.by(() => {
190
+ if (!isVirtualized)
191
+ return [];
192
+ const renderedIndexes = new Set();
193
+ const rows = [];
194
+ for (const virtualItem of chatVirtualizer.virtualItems) {
195
+ const row = renderRows[virtualItem.index];
196
+ if (!row)
197
+ continue;
198
+ renderedIndexes.add(virtualItem.index);
199
+ rows.push({ row, virtualItem: pinHistoryAnchorVirtualItem(row, virtualItem) });
200
+ }
201
+ if (streamingMessageId) {
202
+ const streamingIndex = findRenderRowIndexByMessageId(renderRows, streamingMessageId);
203
+ if (streamingIndex >= 0 && !renderedIndexes.has(streamingIndex)) {
204
+ const virtualItem = chatVirtualizer.getVirtualItem(streamingIndex);
205
+ if (!virtualItem)
206
+ return rows;
207
+ rows.push({
208
+ row: renderRows[streamingIndex],
209
+ virtualItem,
210
+ });
211
+ }
212
+ }
213
+ if (historyAnchorMessageId) {
214
+ const historyAnchorIndex = findRenderRowIndexByMessageId(renderRows, historyAnchorMessageId);
215
+ if (historyAnchorIndex >= 0 && !renderedIndexes.has(historyAnchorIndex)) {
216
+ const virtualItem = chatVirtualizer.getVirtualItem(historyAnchorIndex);
217
+ if (!virtualItem)
218
+ return rows;
219
+ const row = renderRows[historyAnchorIndex];
220
+ if (row) {
221
+ rows.push({
222
+ row,
223
+ virtualItem: pinHistoryAnchorVirtualItem(row, virtualItem),
224
+ });
225
+ }
226
+ }
227
+ }
228
+ rows.sort((a, b) => a.virtualItem.index - b.virtualItem.index);
229
+ return rows;
230
+ });
231
+ function pinHistoryAnchorVirtualItem(row, virtualItem) {
232
+ if (historyAnchorViewportOffset === null ||
233
+ row.type !== 'message' ||
234
+ row.message.id !== historyAnchorMessageId) {
235
+ return virtualItem;
236
+ }
237
+ const scrollTop = viewport?.scrollTop ?? chatVirtualizer.scrollOffset;
238
+ const start = Math.max(0, scrollTop - chatVirtualizer.scrollPaddingStart + historyAnchorViewportOffset);
239
+ return {
240
+ ...virtualItem,
241
+ start,
242
+ end: start + virtualItem.size,
243
+ };
244
+ }
245
+ const searchState = useChatSearch({
246
+ getMessages: () => messages,
247
+ });
248
+ // ==========================================================================
249
+ // C6 — Per-participant typing indicators + read receipts (out-of-band state)
250
+ // ==========================================================================
251
+ const typingIndicatorState = useChatTypingIndicator({
252
+ getTypingParticipants: () => typingParticipants,
253
+ });
254
+ const readReceiptsState = useChatReadReceipts({
255
+ getReadReceipts: () => readReceipts,
256
+ });
257
+ // ==========================================================================
258
+ // Derived Values
259
+ // ==========================================================================
260
+ const viewportAttach = $derived(viewportAttachment ?? noopAttachment);
261
+ const effectiveHasMoreHistory = $derived(adapterHasMoreHistory ?? moreHistoryAvailable);
262
+ const hasHistoryLoader = $derived(onloadhistory !== undefined || adapter?.loadOlderMessages !== undefined);
263
+ const showHistoryTrigger = $derived(hasHistoryLoader && effectiveHasMoreHistory);
264
+ $effect(() => {
265
+ chatVirtualizer.setScrollElement(isVirtualized ? viewport : null);
266
+ });
267
+ $effect(() => {
268
+ for (const renderRow of renderRows) {
269
+ chatRenderRowKey(renderRow);
270
+ }
271
+ chatVirtualizer.syncOptions();
272
+ });
273
+ $effect(() => {
274
+ const currentConversationId = conversationId;
275
+ const currentAdapter = adapter;
276
+ if (previousHistoryConversationId === undefined) {
277
+ previousHistoryConversationId = currentConversationId;
278
+ previousHistoryAdapter = currentAdapter;
279
+ return;
280
+ }
281
+ if (currentConversationId !== previousHistoryConversationId ||
282
+ currentAdapter !== previousHistoryAdapter) {
283
+ adapterHasMoreHistory = undefined;
284
+ pendingHistoryScroll = null;
285
+ deferredAdapterHasMoreHistory = null;
286
+ clearHistoryAnchor();
287
+ }
288
+ previousHistoryConversationId = currentConversationId;
289
+ previousHistoryAdapter = currentAdapter;
290
+ });
291
+ // A retry/edit affordance shows when EITHER a callback OR the adapter can
292
+ // handle it — so an adapter-only consumer (no `onretry`/`onedit`) still gets
293
+ // working buttons, and a callback-only consumer is unchanged.
294
+ const canRetry = $derived(onretry !== undefined || adapter?.retryMessage !== undefined);
295
+ const canEdit = $derived(onedit !== undefined || adapter?.editMessage !== undefined);
296
+ // Stable bottom-sentinel attachment. Wrapping useIntersection in $derived (matching
297
+ // load-more) means the IntersectionObserver is only torn down + recreated when
298
+ // `viewport` or `bottomThreshold` actually change — NOT on every chat re-render
299
+ // (which is frequent during streaming and would otherwise make bottom detection flicker).
300
+ const sentinelAttach = $derived(isVirtualized
301
+ ? noopAttachment
302
+ : useIntersection(scrollState.handleSentinelEntry, {
303
+ root: viewport,
304
+ rootMargin: `0px 0px ${bottomThreshold}px 0px`,
305
+ }));
306
+ // Accessibility IDs
307
+ const timelineId = $derived(`${id}-timeline`);
308
+ const inputId = $derived(`${id}-input`);
309
+ const statusId = $derived(`${id}-status`);
310
+ // C3 — assertive announcement for action-required tool approvals. Derived from
311
+ // the first pending tool-approval part in the current transcript. When a new
312
+ // tool-approval part appears (outcome === 'action_required' + action present),
313
+ // this updates and the assertive live region interrupts screen readers.
314
+ const toolApprovalAssertiveMessage = $derived.by(() => {
315
+ for (const message of messages) {
316
+ if (message.role === 'tool-result' &&
317
+ message.toolResult?.outcome === 'action_required' &&
318
+ message.toolResult.action &&
319
+ !approvedToolCallIds.has(message.toolResult.callId) &&
320
+ !deniedToolCallIds.has(message.toolResult.callId)) {
321
+ const actionMessage = message.toolResult.action.message ??
322
+ 'This tool call requires your approval before it can continue.';
323
+ return `Action required: ${actionMessage}`;
324
+ }
325
+ }
326
+ return '';
327
+ });
328
+ // ==========================================================================
329
+ // Scroll Anchoring via $effect.pre
330
+ // ==========================================================================
331
+ /**
332
+ * $effect.pre runs BEFORE DOM updates.
333
+ * We capture scroll state here and schedule scroll-to-bottom after DOM updates.
334
+ *
335
+ * Key pattern: Read `messages.length` synchronously to register dependency,
336
+ * then use `tick()` to wait for DOM updates before scrolling.
337
+ */
338
+ $effect.pre(() => {
339
+ if (!viewport)
340
+ return undefined;
341
+ // Register dependency on message count
342
+ const currentCount = messages.length;
343
+ const isTranscriptAppend = currentCount > previousAutoScrollMessageCount;
344
+ previousAutoScrollMessageCount = currentCount;
345
+ // Keep the scroll extent as a dependency so virtual row measurement can
346
+ // trigger one final bottom correction after the appended row is measured.
347
+ const currentScrollExtent = isVirtualized ? chatVirtualizer.scrollSize : viewport.scrollHeight;
348
+ void currentScrollExtent;
349
+ // Read atBottom without making it a dependency (prevents loops)
350
+ const atBottom = untrack(() => scrollState.atBottom);
351
+ // Skip if user initiated a smooth scroll (e.g., via jump button)
352
+ if (scrollState.isUserScrolling)
353
+ return undefined;
354
+ // Explicit history anchoring owns scroll restoration while a prepend is pending
355
+ // and until the user scrolls away from the restored anchor.
356
+ const hasActiveHistoryAnchor = untrack(() => pendingHistoryScroll !== null || historyAnchorMessageId !== null);
357
+ if (hasActiveHistoryAnchor)
358
+ return undefined;
359
+ if (atBottom && currentCount > 0) {
360
+ let cancelled = false;
361
+ const waitForBottomTarget = isTranscriptAppend ? waitForLayoutFrame() : tick();
362
+ void waitForBottomTarget.then(() => {
363
+ if (cancelled || !viewport || pendingHistoryScroll || historyAnchorMessageId !== null) {
364
+ return;
365
+ }
366
+ if (isVirtualized) {
367
+ chatVirtualizer.scrollToOffset(chatVirtualizer.scrollSize, { behavior: 'instant' });
368
+ }
369
+ else {
370
+ viewport?.scrollTo({ top: viewport.scrollHeight, behavior: 'instant' });
371
+ }
372
+ });
373
+ return () => {
374
+ cancelled = true;
375
+ };
376
+ }
377
+ return undefined;
378
+ });
379
+ $effect.pre(() => {
380
+ if (!viewport || !pendingHistoryScroll)
381
+ return;
382
+ const pending = pendingHistoryScroll;
383
+ messages.length;
384
+ messages[0]?.id;
385
+ void restorePendingHistoryScrollAfterLayout(pending);
386
+ });
387
+ async function waitForLayoutFrame() {
388
+ await tick();
389
+ if (typeof requestAnimationFrame !== 'function')
390
+ return;
391
+ await new Promise((resolve) => {
392
+ requestAnimationFrame(() => resolve());
393
+ });
394
+ }
395
+ async function restorePendingHistoryScrollAfterLayout(pending) {
396
+ await waitForLayoutFrame();
397
+ if (pendingHistoryScroll !== pending)
398
+ return false;
399
+ return restoreHistoryScroll(pending);
400
+ }
401
+ function restoreHistoryScroll(pending) {
402
+ if (!viewport)
403
+ return false;
404
+ const currentFirstMessageId = messages[0]?.id ?? null;
405
+ const currentCount = messages.length;
406
+ if (currentCount <= pending.previousCount ||
407
+ currentFirstMessageId === pending.previousFirstTranscriptMessageId) {
408
+ return false;
409
+ }
410
+ const prependedCount = currentCount - pending.previousCount;
411
+ pendingHistoryScroll = null;
412
+ finishDeferredAdapterHistoryLoading();
413
+ if (isVirtualized) {
414
+ setHistoryAnchor(pending);
415
+ }
416
+ if (isVirtualized) {
417
+ const newTotalSize = chatVirtualizer.scrollSize;
418
+ const delta = newTotalSize - pending.previousTotalSize;
419
+ const targetScrollTop = pending.previousScrollTop + delta;
420
+ chatVirtualizer.scrollToOffset(targetScrollTop, { behavior: 'instant' });
421
+ historyAnchorRestoredScrollTop = viewport?.scrollTop ?? chatVirtualizer.scrollOffset;
422
+ }
423
+ else {
424
+ clearHistoryAnchor();
425
+ const newTotalSize = viewport.scrollHeight;
426
+ const delta = newTotalSize - pending.previousScrollHeight;
427
+ viewport.scrollTo({
428
+ top: pending.previousScrollTop + delta,
429
+ behavior: 'instant',
430
+ });
431
+ }
432
+ const announcement = prependedCount === 1
433
+ ? '1 earlier message loaded.'
434
+ : `${prependedCount} earlier messages loaded.`;
435
+ historyAnnouncement = announcement;
436
+ setTimeout(() => {
437
+ if (historyAnnouncement === announcement) {
438
+ historyAnnouncement = '';
439
+ }
440
+ }, 1000);
441
+ void tick().then(() => {
442
+ focusAfterHistoryRestore(pending);
443
+ });
444
+ return true;
445
+ }
446
+ function setHistoryAnchor(pending) {
447
+ historyAnchorMessageId = pending.previousFirstMessageId;
448
+ historyAnchorViewportOffset = pending.previousFirstMessageViewportOffset;
449
+ historyAnchorRestoredScrollTop = null;
450
+ }
451
+ function clearHistoryAnchor() {
452
+ historyAnchorMessageId = null;
453
+ historyAnchorViewportOffset = null;
454
+ historyAnchorRestoredScrollTop = null;
455
+ }
456
+ function clearHistoryAnchorAfterScroll(scrollTop) {
457
+ if (historyAnchorMessageId !== null &&
458
+ historyAnchorRestoredScrollTop !== null &&
459
+ Math.abs(scrollTop - historyAnchorRestoredScrollTop) > 2) {
460
+ clearHistoryAnchor();
461
+ }
462
+ }
463
+ function handleScrollStateChange(event) {
464
+ clearHistoryAnchorAfterScroll(event.scrollTop);
465
+ // Update the bindable prop at the mutation site rather than via a $effect.
466
+ atBottom = event.atBottom;
467
+ onscrollstatechange?.(event);
468
+ }
469
+ function virtualSpacerOffsetTop() {
470
+ if (!viewport)
471
+ return 0;
472
+ const spacer = viewport.querySelector('.chat-virtual-spacer');
473
+ if (!spacer)
474
+ return 0;
475
+ const offsetTop = spacer.offsetTop;
476
+ const spacerRect = spacer.getBoundingClientRect();
477
+ const viewportRect = viewport.getBoundingClientRect();
478
+ const hasLayoutBox = spacerRect.top !== 0 ||
479
+ spacerRect.bottom !== 0 ||
480
+ viewportRect.top !== 0 ||
481
+ viewportRect.bottom !== 0;
482
+ if (!hasLayoutBox)
483
+ return Math.max(0, offsetTop);
484
+ const rectOffset = spacerRect.top - viewportRect.top + viewport.scrollTop;
485
+ return Math.max(0, Number.isFinite(rectOffset) ? rectOffset : offsetTop);
486
+ }
487
+ function focusAfterHistoryRestore(pending) {
488
+ if (!viewport)
489
+ return;
490
+ if (showHistoryTrigger && historyTriggerRef) {
491
+ historyTriggerRef.focus({ preventScroll: true });
492
+ return;
493
+ }
494
+ const anchor = pending.previousFirstMessageId
495
+ ? viewport.querySelector(`#message-${CSS.escape(pending.previousFirstMessageId)}`)
496
+ : null;
497
+ const target = anchor ?? viewport.querySelector('.chat-message');
498
+ target?.focus({ preventScroll: true });
499
+ }
500
+ // ==========================================================================
501
+ // Process Messages for Unread Detection
502
+ // ==========================================================================
503
+ $effect(() => {
504
+ // Pass a getter function for scrollState.atBottom to avoid creating a scroll dependency.
505
+ // The effect should only re-run when messages change, not on every scroll.
506
+ unreadState.processMessages(messages, conversation.id, () => scrollState.atBottom);
507
+ });
508
+ // ==========================================================================
509
+ // Streaming rAF Cleanup
510
+ // ==========================================================================
511
+ // Cancel any pending animation frame when the component unmounts during active streaming.
512
+ // Without this, the rAF callback fires after destruction and mutates orphaned $state.
513
+ $effect(() => {
514
+ return () => {
515
+ if (streamingScrollRaf !== undefined) {
516
+ cancelAnimationFrame(streamingScrollRaf);
517
+ streamingScrollRaf = undefined;
518
+ }
519
+ };
520
+ });
521
+ // ==========================================================================
522
+ // Adapter Real-Time Subscription
523
+ // ==========================================================================
524
+ // When an adapter exposes `subscribe`, open a real-time subscription keyed on
525
+ // the conversation id and tear it down on cleanup. `$effect` never runs on the
526
+ // server, so no browser guard is needed. Streaming pushes drive Chat's own
527
+ // imperative buffer (so a push-driven stream is self-contained); transcript /
528
+ // peripheral pushes forward to the consumer (Chat never mutates `conversation`).
529
+ //
530
+ // The effect re-subscribes ONLY when the adapter reference or the
531
+ // `conversationId` VALUE changes — keying on the derived id value (not on
532
+ // `conversation.id` read inline) means a new `conversation` snapshot bearing
533
+ // the same id does not churn the subscription. The forwarding callbacks are
534
+ // read through `untrack` at invocation time so a consumer passing inline arrow
535
+ // functions (whose identity churns every render) does not tear down and reopen
536
+ // the transport on every render — each handler still calls the LATEST callback,
537
+ // it just isn't a dependency of the subscription effect.
538
+ $effect(() => {
539
+ const resolvedAdapter = adapter;
540
+ if (!resolvedAdapter?.subscribe)
541
+ return;
542
+ const currentConversationId = conversationId;
543
+ const handlers = {
544
+ onMessage: (message) => untrack(() => onpushmessage)?.(message),
545
+ onTypingChange: (isTyping) => {
546
+ // Drive the C6 per-participant typing indicator via the adapter path.
547
+ typingIndicatorState.handleAdapterTypingChange(isTyping);
548
+ untrack(() => ontypingchange)?.(isTyping);
549
+ },
550
+ onReadReceipt: (event) => {
551
+ // Accumulate the receipt into C6 read receipt state.
552
+ readReceiptsState.handleAdapterReadReceipt(event);
553
+ untrack(() => onreadreceipt)?.(event);
554
+ },
555
+ onStreamBegin: (messageId) => beginStreaming(messageId),
556
+ onTokenPush: (token) => pushToken(token),
557
+ onStreamEnd: () => endStreaming(),
558
+ };
559
+ const unsubscribe = resolvedAdapter.subscribe(currentConversationId, handlers);
560
+ // Teardown: close the transport (guarding a contract-violating non-function
561
+ // return so a bad adapter can't crash Svelte's cleanup), clear the imperative
562
+ // streaming buffer, AND clear the adapter-derived C6 typing/receipt state.
563
+ // Without the `endStreaming()`, a resubscribe or conversation switch mid-stream
564
+ // (no `onStreamEnd` fired) would leave `streamingMessageId`/`streamingContent`
565
+ // driving a row. Without the typing/receipt resets, an adapter that changed or
566
+ // was removed for the SAME conversation would leave a synthetic typing
567
+ // participant, a pending live-region timer, and accumulated receipts alive
568
+ // (the conversation-change effect above only fires on an id change).
569
+ return () => {
570
+ if (typeof unsubscribe === 'function')
571
+ unsubscribe();
572
+ endStreaming();
573
+ typingIndicatorState.reset();
574
+ readReceiptsState.reset();
575
+ };
576
+ });
577
+ // ==========================================================================
578
+ // Create Scroll Attachment
579
+ // ==========================================================================
580
+ const scrollAttachment = scrollState.createScrollAttachment();
581
+ const historyAnchorScrollAttachment = $derived(historyAnchorMessageId === null || historyAnchorRestoredScrollTop === null
582
+ ? noopAttachment
583
+ : (node) => {
584
+ const handleScroll = () => clearHistoryAnchorAfterScroll(node.scrollTop);
585
+ node.addEventListener('scroll', handleScroll, { passive: true });
586
+ return () => node.removeEventListener('scroll', handleScroll);
587
+ });
588
+ // ==========================================================================
589
+ // Actions
590
+ // ==========================================================================
591
+ function handleJumpToLatest() {
592
+ if (isVirtualized) {
593
+ chatVirtualizer.scrollToIndex(Math.max(0, renderRows.length - 1), {
594
+ align: 'end',
595
+ behavior: scrollState.getScrollBehavior(),
596
+ });
597
+ unreadState.markAllAsRead();
598
+ onjumptolatest?.();
599
+ tick().then(() => {
600
+ const lastMessage = viewport?.querySelector(`.chat-message-wrapper:last-of-type .chat-message`);
601
+ lastMessage?.focus();
602
+ });
603
+ return;
604
+ }
605
+ scrollState.jumpToLatest(viewport, () => {
606
+ unreadState.markAllAsRead();
607
+ onjumptolatest?.();
608
+ });
609
+ }
610
+ // ==========================================================================
611
+ // Command Dispatch (callbacks + optional adapter, one path)
612
+ // ==========================================================================
613
+ // One internal path for every user command so callback-driven and
614
+ // adapter-driven usage behave identically. The adapter method takes
615
+ // precedence when present (a transport owner); otherwise the callback fires.
616
+ //
617
+ // "Present" is decided by `runAdapterMethod` returning a value (not by the
618
+ // method's own return value): the call site returns `undefined` ONLY when the
619
+ // adapter lacks that optional method, and otherwise returns the method's
620
+ // result wrapped in `Promise.resolve(...)`. This means a synchronously-
621
+ // returning adapter method (one that resolves to `undefined` rather than a
622
+ // promise) is still treated as "handled" — the callback does NOT also fire, so
623
+ // there's no double-dispatch even for a type-violating sync method.
624
+ //
625
+ // The whole adapter path is wrapped so BOTH a rejected promise AND a
626
+ // synchronous throw from the adapter route to `onadaptererror` rather than
627
+ // escaping. `onadaptererror` is scoped to ADAPTER failures only — the fallback
628
+ // callback path is the consumer's own code, so a throw there propagates
629
+ // synchronously rather than being converted into a rejected dispatcher promise.
630
+ function dispatchCommand(command, runAdapterMethod, callback) {
631
+ if (adapter) {
632
+ try {
633
+ const run = runAdapterMethod(adapter);
634
+ // `undefined` means the adapter has no such method → fall through to the
635
+ // callback. Any other return (a promise, including one wrapping a sync
636
+ // `undefined` result) means the adapter handled it — never fire the callback.
637
+ if (run !== undefined) {
638
+ return run.catch((error) => {
639
+ onadaptererror?.({ command, error });
640
+ });
641
+ }
642
+ }
643
+ catch (error) {
644
+ onadaptererror?.({ command, error });
645
+ return;
646
+ }
647
+ }
648
+ callback?.();
649
+ }
650
+ function handleSubmit(message, attachments) {
651
+ // Fire-and-forget the command (the dispatcher owns awaiting + error routing);
652
+ // scroll immediately so the round-trip latency never delays the auto-scroll.
653
+ // `Promise.resolve(...)` normalizes a sync-returning method to a promise so
654
+ // the dispatcher always treats a present method as "handled" (sendMessage is
655
+ // required, so it's always present here).
656
+ void dispatchCommand('sendMessage', (resolvedAdapter) => Promise.resolve(resolvedAdapter.sendMessage(message, attachments)), () => onsubmit?.({ message, attachments }));
657
+ // Auto-scroll after sending.
658
+ // Also update the bindable prop so the parent binding reflects the new
659
+ // atBottom=true state immediately — scrollState.setAtBottom() only
660
+ // updates the internal helper state; the bindable must be written explicitly
661
+ // (matching the pattern in handleScrollStateChange and onReachBottom).
662
+ scrollState.setAtBottom(true);
663
+ atBottom = true;
664
+ tick().then(() => {
665
+ if (isVirtualized) {
666
+ chatVirtualizer.scrollToOffset(chatVirtualizer.scrollSize, { behavior: 'instant' });
667
+ }
668
+ else {
669
+ viewport?.scrollTo({ top: viewport.scrollHeight, behavior: 'instant' });
670
+ }
671
+ });
672
+ }
673
+ function captureHistoryScroll() {
674
+ const previousFirstTranscriptMessageId = messages[0]?.id ?? null;
675
+ const visibleAnchor = firstVisibleRenderedMessage();
676
+ const previousFirstMessageId = visibleAnchor?.messageId ?? previousFirstTranscriptMessageId;
677
+ const previousScrollTop = viewport?.scrollTop ?? chatVirtualizer.scrollOffset;
678
+ const previousFirstMessageElement = previousFirstMessageId !== null ? renderedMessageById(previousFirstMessageId) : null;
679
+ const previousFirstMessageViewportOffset = visibleAnchor?.viewportOffset ??
680
+ (previousFirstMessageElement && viewport
681
+ ? previousFirstMessageElement.getBoundingClientRect().top -
682
+ viewport.getBoundingClientRect().top
683
+ : 0);
684
+ pendingHistoryScroll = {
685
+ previousFirstMessageId,
686
+ previousFirstTranscriptMessageId,
687
+ previousFirstMessageViewportOffset,
688
+ previousCount: messages.length,
689
+ previousScrollTop,
690
+ previousScrollHeight: viewport?.scrollHeight ?? 0,
691
+ previousTotalSize: chatVirtualizer.scrollSize,
692
+ };
693
+ }
694
+ async function settlePendingHistoryScroll(pending) {
695
+ for (let attempt = 0; attempt < 5; attempt += 1) {
696
+ if (pendingHistoryScroll !== pending)
697
+ return;
698
+ if (await restorePendingHistoryScrollAfterLayout(pending))
699
+ return;
700
+ }
701
+ if (pendingHistoryScroll === pending) {
702
+ pendingHistoryScroll = null;
703
+ finishDeferredAdapterHistoryLoading();
704
+ }
705
+ }
706
+ function finishDeferredAdapterHistoryLoading() {
707
+ if (deferredAdapterHasMoreHistory === null)
708
+ return;
709
+ adapterHasMoreHistory = deferredAdapterHasMoreHistory;
710
+ deferredAdapterHasMoreHistory = null;
711
+ isLoadingHistory = false;
712
+ }
713
+ function historyTranscriptChanged(pending) {
714
+ return (messages.length > pending.previousCount ||
715
+ messages[0]?.id !== pending.previousFirstTranscriptMessageId);
716
+ }
717
+ async function handleLoadHistory() {
718
+ if (isLoadingHistory || !showHistoryTrigger)
719
+ return;
720
+ isLoadingHistory = true;
721
+ captureHistoryScroll();
722
+ const pending = pendingHistoryScroll;
723
+ if (pending === null) {
724
+ isLoadingHistory = false;
725
+ return;
726
+ }
727
+ if (adapter?.loadOlderMessages) {
728
+ let nextHasMoreHistory;
729
+ try {
730
+ const result = await adapter.loadOlderMessages(conversationId);
731
+ nextHasMoreHistory = result.hasMore;
732
+ }
733
+ catch (error) {
734
+ pendingHistoryScroll = null;
735
+ isLoadingHistory = false;
736
+ onadaptererror?.({ command: 'loadOlderMessages', error });
737
+ return;
738
+ }
739
+ const transcriptChanged = historyTranscriptChanged(pending);
740
+ if (isVirtualized && !transcriptChanged) {
741
+ deferredAdapterHasMoreHistory = nextHasMoreHistory ?? null;
742
+ await tick();
743
+ if (historyTranscriptChanged(pending)) {
744
+ await settlePendingHistoryScroll(pending);
745
+ }
746
+ else if (pendingHistoryScroll === pending) {
747
+ pendingHistoryScroll = null;
748
+ finishDeferredAdapterHistoryLoading();
749
+ }
750
+ else {
751
+ finishDeferredAdapterHistoryLoading();
752
+ }
753
+ return;
754
+ }
755
+ if (isVirtualized || transcriptChanged) {
756
+ await settlePendingHistoryScroll(pending);
757
+ }
758
+ else {
759
+ pendingHistoryScroll = null;
760
+ }
761
+ adapterHasMoreHistory = nextHasMoreHistory;
762
+ isLoadingHistory = false;
763
+ return;
764
+ }
765
+ try {
766
+ await onloadhistory?.();
767
+ await settlePendingHistoryScroll(pending);
768
+ }
769
+ catch (error) {
770
+ pendingHistoryScroll = null;
771
+ throw error;
772
+ }
773
+ finally {
774
+ isLoadingHistory = false;
775
+ }
776
+ }
777
+ function handleRetry(messageId) {
778
+ void dispatchCommand('retryMessage',
779
+ // Return `undefined` ONLY when the optional method is absent; otherwise
780
+ // wrap its result so a present-but-sync method still counts as handled.
781
+ (resolvedAdapter) => resolvedAdapter.retryMessage
782
+ ? Promise.resolve(resolvedAdapter.retryMessage(messageId))
783
+ : undefined, () => onretry?.(messageId));
784
+ }
785
+ function handleEdit(event) {
786
+ void dispatchCommand('editMessage', (resolvedAdapter) => resolvedAdapter.editMessage
787
+ ? Promise.resolve(resolvedAdapter.editMessage(event))
788
+ : undefined, () => onedit?.(event));
789
+ }
790
+ // C5 — suggestion selection handler. Calls the consumer callback then
791
+ // moves focus to the composer so keyboard users are not left stranded on a
792
+ // chip button that gets removed from the DOM when the suggestion set clears.
793
+ function handleSuggestionSelect(label) {
794
+ onsuggestionselect?.(label);
795
+ inputRef?.focus();
796
+ }
797
+ // C3 — an approve/deny affordance only resolves when SOMETHING can handle it —
798
+ // the adapter command OR the consumer callback. `canApprove`/`canDeny` gate
799
+ // both the button-enabled state (passed to ToolApprovalPart) and the resolve
800
+ // guard, so a consumer that wires neither path gets disabled buttons rather
801
+ // than a click that commits UI-only state to nowhere (matches canRetry/canEdit).
802
+ const canApprove = $derived(onapprove !== undefined || adapter?.approveToolCall !== undefined);
803
+ const canDeny = $derived(ondeny !== undefined || adapter?.denyToolCall !== undefined);
804
+ // C3 — tool approval handlers. The resolution is recorded optimistically in the
805
+ // UI-only id sets for immediate feedback, then the adapter command (if present)
806
+ // runs and, on SUCCESS, the consumer callback fires (adapter-first-then-callback
807
+ // contract). Guard double-resolution: if the call id is already in either set,
808
+ // skip so a second tap/Escape cannot flip a resolved state. If the ADAPTER
809
+ // command REJECTS (or throws), the optimistic resolution is rolled back so the
810
+ // prompt returns to pending instead of being stuck "approved"/"denied" on a
811
+ // transport failure — the error routes to onadaptererror and the callback does
812
+ // NOT fire. With no adapter method, the callback fires synchronously.
813
+ function resolveToolApproval(toolCallId, command, canHandle, commit, rollback, runAdapter, callback) {
814
+ if (!canHandle)
815
+ return;
816
+ if (approvedToolCallIds.has(toolCallId) || deniedToolCallIds.has(toolCallId))
817
+ return;
818
+ commit(toolCallId);
819
+ if (adapter) {
820
+ let run;
821
+ try {
822
+ run = runAdapter(adapter);
823
+ }
824
+ catch (error) {
825
+ rollback(toolCallId);
826
+ onadaptererror?.({ command, error });
827
+ return;
828
+ }
829
+ if (run !== undefined) {
830
+ void run.then(() => callback?.(), (error) => {
831
+ rollback(toolCallId);
832
+ onadaptererror?.({ command, error });
833
+ });
834
+ return;
835
+ }
836
+ }
837
+ callback?.();
838
+ }
839
+ function handleApprove(toolCallId) {
840
+ resolveToolApproval(toolCallId, 'approveToolCall', canApprove, (id) => (approvedToolCallIds = new Set([...approvedToolCallIds, id])), (id) => (approvedToolCallIds = removeFromSet(approvedToolCallIds, id)), (resolvedAdapter) => resolvedAdapter.approveToolCall
841
+ ? Promise.resolve(resolvedAdapter.approveToolCall(toolCallId))
842
+ : undefined, () => onapprove?.(toolCallId));
843
+ }
844
+ function handleDeny(toolCallId) {
845
+ resolveToolApproval(toolCallId, 'denyToolCall', canDeny, (id) => (deniedToolCallIds = new Set([...deniedToolCallIds, id])), (id) => (deniedToolCallIds = removeFromSet(deniedToolCallIds, id)), (resolvedAdapter) => resolvedAdapter.denyToolCall
846
+ ? Promise.resolve(resolvedAdapter.denyToolCall(toolCallId))
847
+ : undefined, () => ondeny?.(toolCallId));
848
+ }
849
+ function removeFromSet(set, value) {
850
+ const next = new Set(set);
851
+ next.delete(value);
852
+ return next;
853
+ }
854
+ function handleStopGenerating() {
855
+ // Find the streaming message (last assistant message)
856
+ // Using backwards loop instead of findLast() for broader browser compatibility
857
+ let streamingMessage;
858
+ for (let i = messages.length - 1; i >= 0; i--) {
859
+ const message = messages[i];
860
+ if (message?.role === 'assistant') {
861
+ streamingMessage = message;
862
+ break;
863
+ }
864
+ }
865
+ if (streamingMessage) {
866
+ // Local name avoids shadowing the module-level `streamingMessageId` $state.
867
+ const targetMessageId = streamingMessage.id;
868
+ void dispatchCommand('stopGenerating', (resolvedAdapter) => resolvedAdapter.stopGenerating
869
+ ? Promise.resolve(resolvedAdapter.stopGenerating(targetMessageId))
870
+ : undefined, () => onstopgenerating?.({ messageId: targetMessageId }));
871
+ }
872
+ }
873
+ function handlePromptClick(prompt) {
874
+ // Filter to only ready attachments — pending ones have not yet resolved their
875
+ // textContent, so forwarding them would produce an inconsistent payload compared
876
+ // to the regular send-button flow which also filters on 'ready'.
877
+ const currentAttachments = (inputRef?.getAttachments() ?? []).filter((a) => a.status === 'ready');
878
+ handleSubmit({ role: 'user', content: prompt }, currentAttachments);
879
+ inputRef?.clear();
880
+ }
881
+ function handleKeyDown(event) {
882
+ // Intercept Ctrl+F / Cmd+F to open in-app search instead of browser search.
883
+ // If the search bar is already open, refocus its input rather than being a no-op.
884
+ if (allowSearch && (event.ctrlKey || event.metaKey) && event.key === 'f') {
885
+ event.preventDefault();
886
+ if (searchState.isOpen) {
887
+ searchBarRef?.focusInput();
888
+ }
889
+ else {
890
+ searchState.open();
891
+ }
892
+ return;
893
+ }
894
+ // Let the chat keyboard nav helper handle all other shortcuts.
895
+ // The keyboard nav only handles Home/End/PageUp/PageDown/Arrow keys, so
896
+ // Enter and Escape pass through without conflict when the search bar is open.
897
+ // The search bar's own onkeydown handles Enter/Escape directly on its input.
898
+ keyboardNav.handleKeyDown(event, viewport);
899
+ }
900
+ function messageIdFromElement(element) {
901
+ if (!element.id.startsWith('message-'))
902
+ return null;
903
+ return element.id.slice('message-'.length);
904
+ }
905
+ function renderedMessageById(messageId) {
906
+ return viewport?.querySelector(`#message-${CSS.escape(messageId)}`) ?? null;
907
+ }
908
+ function firstVisibleRenderedMessage() {
909
+ if (!viewport)
910
+ return null;
911
+ const viewportRect = viewport.getBoundingClientRect();
912
+ for (const message of viewport.querySelectorAll('.chat-message')) {
913
+ const messageId = messageIdFromElement(message);
914
+ if (!messageId)
915
+ continue;
916
+ const rect = message.getBoundingClientRect();
917
+ if (rect.bottom <= viewportRect.top || rect.top >= viewportRect.bottom)
918
+ continue;
919
+ return {
920
+ messageId,
921
+ viewportOffset: rect.top - viewportRect.top,
922
+ };
923
+ }
924
+ return null;
925
+ }
926
+ async function focusVirtualMessage(messageId) {
927
+ const existing = renderedMessageById(messageId);
928
+ if (existing) {
929
+ existing.focus();
930
+ existing.scrollIntoView({ behavior: scrollState.getScrollBehavior(), block: 'nearest' });
931
+ return;
932
+ }
933
+ const targetIndex = findRenderRowIndexByMessageId(renderRows, messageId);
934
+ if (targetIndex < 0)
935
+ return;
936
+ chatVirtualizer.scrollToIndex(targetIndex, {
937
+ align: 'auto',
938
+ behavior: scrollState.getScrollBehavior(),
939
+ });
940
+ await tick();
941
+ const target = renderedMessageById(messageId);
942
+ target?.focus();
943
+ target?.scrollIntoView({ behavior: scrollState.getScrollBehavior(), block: 'nearest' });
944
+ }
945
+ function navigateVirtualMessage(direction) {
946
+ if (!isVirtualized || !viewport)
947
+ return false;
948
+ const activeElement = document.activeElement instanceof HTMLElement ? document.activeElement : null;
949
+ if (!activeElement?.classList.contains('chat-message'))
950
+ return false;
951
+ const currentMessageId = messageIdFromElement(activeElement);
952
+ if (!currentMessageId)
953
+ return false;
954
+ const currentIndex = findRenderRowIndexByMessageId(renderRows, currentMessageId);
955
+ if (currentIndex < 0)
956
+ return false;
957
+ const step = direction === 'next' ? 1 : -1;
958
+ for (let targetIndex = currentIndex + step; targetIndex >= 0 && targetIndex < renderRows.length; targetIndex += step) {
959
+ const targetRow = renderRows[targetIndex];
960
+ if (targetRow?.type !== 'message')
961
+ continue;
962
+ void focusVirtualMessage(targetRow.message.id);
963
+ return true;
964
+ }
965
+ return true;
966
+ }
967
+ // Scroll to the currently matched message when the current match changes
968
+ $effect(() => {
969
+ const match = searchState.currentMatch;
970
+ if (!match || !viewport)
971
+ return;
972
+ void scrollCurrentSearchMatch(match.message.id);
973
+ });
974
+ async function scrollCurrentSearchMatch(messageId) {
975
+ if (!viewport)
976
+ return;
977
+ if (isVirtualized) {
978
+ const targetIndex = findRenderRowIndexByMessageId(renderRows, messageId);
979
+ if (targetIndex >= 0) {
980
+ chatVirtualizer.scrollToIndex(targetIndex, { align: 'center', behavior: 'auto' });
981
+ await tick();
982
+ }
983
+ }
984
+ const messageElement = viewport.querySelector(`#message-${CSS.escape(messageId)}`);
985
+ if (messageElement) {
986
+ messageElement.scrollIntoView({ behavior: 'auto', block: 'nearest' });
987
+ }
988
+ }
989
+ // ==========================================================================
990
+ // Container-Level Drag and Drop
991
+ // ==========================================================================
992
+ function handleContainerDrop(event) {
993
+ // Only intercept file drops — text/URL drops should not have their
994
+ // default behavior suppressed, matching the dragover guard above.
995
+ if (!event.dataTransfer?.types.includes('Files'))
996
+ return;
997
+ isContainerDragOver = false;
998
+ if (!allowAttachments)
999
+ return;
1000
+ event.preventDefault();
1001
+ const files = event.dataTransfer.files;
1002
+ if (files.length > 0) {
1003
+ inputRef?.addFiles(Array.from(files));
1004
+ }
1005
+ }
1006
+ function handleContainerDragOver(event) {
1007
+ // Only intercept file drags — text/URL drags should not show the file drop overlay
1008
+ // or have their default behavior suppressed.
1009
+ if (!event.dataTransfer?.types.includes('Files'))
1010
+ return;
1011
+ if (!allowAttachments)
1012
+ return;
1013
+ event.preventDefault();
1014
+ event.dataTransfer.dropEffect = 'copy';
1015
+ isContainerDragOver = true;
1016
+ }
1017
+ function handleContainerDragLeave(event) {
1018
+ // Only clear if leaving the container entirely (not entering a child)
1019
+ const container = event.currentTarget;
1020
+ if (!container.contains(event.relatedTarget)) {
1021
+ isContainerDragOver = false;
1022
+ }
1023
+ }
1024
+ // Capture-phase drop listener: resets the overlay even when a child (e.g. ChatInput)
1025
+ // calls stopPropagation() on the drop event, which prevents the bubbling ondrop handler
1026
+ // on this container from ever firing.
1027
+ $effect(() => {
1028
+ if (!containerRef)
1029
+ return;
1030
+ function resetDragOver(event) {
1031
+ if (event.dataTransfer?.types.includes('Files')) {
1032
+ isContainerDragOver = false;
1033
+ }
1034
+ }
1035
+ containerRef.addEventListener('drop', resetDragOver, { capture: true });
1036
+ return () => {
1037
+ containerRef?.removeEventListener('drop', resetDragOver, { capture: true });
1038
+ };
1039
+ });
1040
+ // ==========================================================================
1041
+ // Imperative API
1042
+ // ==========================================================================
1043
+ export function scrollToBottom() {
1044
+ if (isVirtualized) {
1045
+ chatVirtualizer.scrollToOffset(chatVirtualizer.scrollSize, {
1046
+ behavior: scrollState.getScrollBehavior(),
1047
+ });
1048
+ }
1049
+ else {
1050
+ scrollState.scrollToBottom(viewport);
1051
+ }
1052
+ }
1053
+ export function scrollToTop() {
1054
+ if (isVirtualized) {
1055
+ chatVirtualizer.scrollToOffset(0, { behavior: scrollState.getScrollBehavior() });
1056
+ }
1057
+ else {
1058
+ scrollState.scrollToTop(viewport);
1059
+ }
1060
+ }
1061
+ export function focusInput() {
1062
+ inputRef?.focus();
1063
+ }
1064
+ /** Clear the composer's current content. */
1065
+ export function clearInput() {
1066
+ inputRef?.clear();
1067
+ }
1068
+ /** Read the composer's current plain-text value. */
1069
+ export function getComposerValue() {
1070
+ return inputRef?.getValue() ?? '';
1071
+ }
1072
+ /**
1073
+ * Begin streaming content for a specific message.
1074
+ * The message should already exist in the conversation.
1075
+ * Replaces the typing indicator dots with actual content.
1076
+ * Cancels any pending rAF from a prior pushToken call so a stale flush does
1077
+ * not overwrite the fresh stream if beginStreaming is called without a
1078
+ * preceding endStreaming.
1079
+ */
1080
+ export function beginStreaming(messageId) {
1081
+ if (streamingScrollRaf !== undefined) {
1082
+ cancelAnimationFrame(streamingScrollRaf);
1083
+ streamingScrollRaf = undefined;
1084
+ }
1085
+ streamingMessageId = messageId;
1086
+ streamingContent = '';
1087
+ tokenBuffer = [];
1088
+ }
1089
+ /**
1090
+ * Append a token to the streaming content buffer.
1091
+ * Tokens are accumulated in an array and flushed (joined once) per animation frame,
1092
+ * avoiding O(n²) work from calling join() on every individual token push.
1093
+ * Scroll updates are batched in the same frame to avoid excessive layout work.
1094
+ */
1095
+ export function pushToken(token) {
1096
+ tokenBuffer.push(token);
1097
+ // Batch the join + scroll update to once per animation frame.
1098
+ // Without this, join() is O(n) per push → O(n²) total across the stream.
1099
+ if (streamingScrollRaf === undefined) {
1100
+ streamingScrollRaf = requestAnimationFrame(() => {
1101
+ streamingScrollRaf = undefined;
1102
+ // Flush: join the entire buffer once per frame
1103
+ streamingContent = tokenBuffer.join('');
1104
+ if (streamingRowElement) {
1105
+ tick().then(() => {
1106
+ if (streamingRowElement) {
1107
+ chatVirtualizer.measureElementNode(streamingRowElement);
1108
+ }
1109
+ });
1110
+ }
1111
+ // Auto-scroll if at bottom
1112
+ if (scrollState.atBottom && viewport) {
1113
+ if (isVirtualized) {
1114
+ chatVirtualizer.scrollToOffset(chatVirtualizer.scrollSize, { behavior: 'instant' });
1115
+ }
1116
+ else {
1117
+ viewport.scrollTo({ top: viewport.scrollHeight, behavior: 'instant' });
1118
+ }
1119
+ }
1120
+ });
1121
+ }
1122
+ }
1123
+ /**
1124
+ * End streaming for the current message.
1125
+ * The message's final content should already be committed to the Conversation.
1126
+ * Cancels any pending rAF flush so the stale buffer is not written after endStreaming.
1127
+ */
1128
+ export function endStreaming() {
1129
+ if (streamingScrollRaf !== undefined) {
1130
+ cancelAnimationFrame(streamingScrollRaf);
1131
+ streamingScrollRaf = undefined;
1132
+ }
1133
+ streamingMessageId = null;
1134
+ streamingContent = '';
1135
+ tokenBuffer = [];
1136
+ }
1137
+ function virtualizedSpacerStyle() {
1138
+ return `height: ${chatVirtualizer.totalSize}px; position: relative; width: 100%;`;
1139
+ }
1140
+ function virtualizedRowStyle(virtualItem) {
1141
+ return `position: absolute; inset-inline: 0; top: 0; transform: translateY(${virtualItem.start}px);`;
1142
+ }
1143
+ function virtualRowAttachment(row) {
1144
+ return (node) => {
1145
+ const detachMeasurement = chatVirtualizer.measureElement(node);
1146
+ if (row.type === 'message' && row.message.id === streamingMessageId) {
1147
+ streamingRowElement = node;
1148
+ }
1149
+ return () => {
1150
+ detachMeasurement?.();
1151
+ if (streamingRowElement === node) {
1152
+ streamingRowElement = null;
1153
+ }
1154
+ };
1155
+ };
1156
+ }
1157
+ </script>
1158
+
1159
+ <div
1160
+ bind:this={containerRef}
1161
+ {id}
1162
+ class={classNames('cinder-chat', 'chat-container', className)}
1163
+ data-surface-mode={surfaceMode}
1164
+ data-cinder-density={density}
1165
+ data-cinder-variant={variant}
1166
+ role="region"
1167
+ aria-label="Chat conversation"
1168
+ onkeydown={handleKeyDown}
1169
+ ondrop={handleContainerDrop}
1170
+ ondragover={handleContainerDragOver}
1171
+ ondragleave={handleContainerDragLeave}
1172
+ {...rest}
1173
+ >
1174
+ {#if isContainerDragOver && allowAttachments}
1175
+ <div class="chat-drop-overlay" aria-hidden="true">
1176
+ <span class="chat-drop-label">Drop files here</span>
1177
+ </div>
1178
+ {/if}
1179
+ {#if header}
1180
+ <div class="chat-header">
1181
+ {@render header()}
1182
+ </div>
1183
+ {/if}
1184
+
1185
+ {#if allowSearch && searchState.isOpen}
1186
+ <ChatSearchBar
1187
+ bind:this={searchBarRef}
1188
+ instanceId={id}
1189
+ query={searchState.query}
1190
+ matchCount={searchState.matchCount}
1191
+ currentMatchIndex={searchState.currentMatchIndex}
1192
+ onquerychange={searchState.setQuery}
1193
+ onnext={searchState.nextMatch}
1194
+ onprevious={searchState.previousMatch}
1195
+ onclose={searchState.close}
1196
+ />
1197
+ {/if}
1198
+
1199
+ {#snippet renderTypingIndicator()}
1200
+ <div
1201
+ class="chat-typing-indicator"
1202
+ role="status"
1203
+ aria-label={streamingStatus ?? 'Assistant is typing'}
1204
+ >
1205
+ {#if streamingStatus}
1206
+ <span class="chat-typing-status">{streamingStatus}</span>
1207
+ {:else}
1208
+ <span class="chat-typing-dot" aria-hidden="true"></span>
1209
+ <span class="chat-typing-dot" aria-hidden="true"></span>
1210
+ <span class="chat-typing-dot" aria-hidden="true"></span>
1211
+ {/if}
1212
+ </div>
1213
+ {/snippet}
1214
+
1215
+ {#snippet renderMessageRow(messageRow: ChatMessageRenderRow)}
1216
+ {@const message = messageRow.message}
1217
+ {@const pairs = message.toolCall?.id
1218
+ ? (toolCallPairsByCallId.get(message.toolCall.id) ?? [])
1219
+ : []}
1220
+ {@const isStreamingMessage = streamingMessageId === message.id}
1221
+ {@const isCurrentSearchMatch =
1222
+ searchState.isOpen &&
1223
+ searchState.currentMatch !== null &&
1224
+ searchState.currentMatch.message.id === message.id}
1225
+ <!-- C4/C5: resolve reasoning/steps/suggestions overlays. Each prefers an
1226
+ explicit per-message prop over `cinder:`-namespaced metadata, validates
1227
+ both paths identically, and guards consumer-callback throws — so a
1228
+ malformed callback can never break the chat render (see resolve* in
1229
+ chat/utilities). A plain transcript yields `undefined` for all three. -->
1230
+ {@const derivedReasoning = resolveMessageReasoning(message, messageReasoning)}
1231
+ {@const derivedSteps = resolveMessageSteps(message, messageSteps)}
1232
+ {@const derivedSuggestions =
1233
+ message.id === lastMessageId
1234
+ ? resolveMessageSuggestions(message, messageSuggestions)
1235
+ : undefined}
1236
+
1237
+ <!-- The built-in row. Wrapped in a snippet so the optional `row`
1238
+ override can render it (inversion of control) or replace it. The
1239
+ per-part `messagePart` override flows through into the message's
1240
+ parts renderer. -->
1241
+ {#snippet renderDefaultRow()}
1242
+ {@const receipt =
1243
+ message.role === 'user' ? readReceiptsState.getReceipt(message.id) : undefined}
1244
+ <ChatMessage
1245
+ {message}
1246
+ toolCallPairs={pairs}
1247
+ {messagePart}
1248
+ onretry={allowRetry && canRetry ? handleRetry : undefined}
1249
+ onedit={allowEditing && canEdit ? handleEdit : undefined}
1250
+ showDefaultActions={allowCopy}
1251
+ {onexpandedchange}
1252
+ streaming={isStreamingMessage}
1253
+ overrideContent={isStreamingMessage ? streamingContent : undefined}
1254
+ searchMatch={isCurrentSearchMatch}
1255
+ tabindex={-1}
1256
+ approvedToolCallIds={approvedToolCallIds.size > 0 ? approvedToolCallIds : undefined}
1257
+ deniedToolCallIds={deniedToolCallIds.size > 0 ? deniedToolCallIds : undefined}
1258
+ onapprove={canApprove ? handleApprove : undefined}
1259
+ ondeny={canDeny ? handleDeny : undefined}
1260
+ reasoning={derivedReasoning}
1261
+ steps={derivedSteps}
1262
+ suggestions={derivedSuggestions}
1263
+ reasoningExpanded={reasoningState.isExpanded(message.id)}
1264
+ onreasoning={() => reasoningState.toggle(message.id)}
1265
+ toolCallExpanded={toolCallState.isExpanded(message.id)}
1266
+ ontoolcalltoggle={() => toolCallState.toggle(message.id)}
1267
+ onsuggestionselect={handleSuggestionSelect}
1268
+ >
1269
+ {#snippet actions()}
1270
+ {#if messageActions}
1271
+ {@render messageActions(message)}
1272
+ {/if}
1273
+ {/snippet}
1274
+ {#snippet status()}
1275
+ {#if messageStatus}
1276
+ {@render messageStatus(message)}
1277
+ {:else if receipt}
1278
+ <ChatReadReceipt {receipt} />
1279
+ {/if}
1280
+ {/snippet}
1281
+ </ChatMessage>
1282
+ {/snippet}
1283
+
1284
+ {#if row}
1285
+ {@render row(message, renderDefaultRow)}
1286
+ {:else}
1287
+ {@render renderDefaultRow()}
1288
+ {/if}
1289
+ {/snippet}
1290
+
1291
+ {#snippet renderChatRow(renderRow: ChatRenderRow)}
1292
+ {#if renderRow.type === 'date'}
1293
+ <ChatDateSeparator date={renderRow.date} />
1294
+ {:else if renderRow.type === 'unread-divider'}
1295
+ <div class="chat-unread-divider" role="separator" aria-label="New messages below">
1296
+ <span class="chat-unread-divider-line" aria-hidden="true"></span>
1297
+ <span class="chat-unread-divider-label">New</span>
1298
+ <span class="chat-unread-divider-line" aria-hidden="true"></span>
1299
+ </div>
1300
+ {:else if renderRow.type === 'typing'}
1301
+ {@render renderTypingIndicator()}
1302
+ {:else}
1303
+ {@render renderMessageRow(renderRow)}
1304
+ {/if}
1305
+ {/snippet}
1306
+
1307
+ {#key timelineResetIdentity}
1308
+ <!-- svelte-ignore a11y_no_noninteractive_tabindex -->
1309
+ <div
1310
+ bind:this={viewport}
1311
+ id={timelineId}
1312
+ class="chat-timeline"
1313
+ role="log"
1314
+ aria-label="Messages"
1315
+ aria-describedby={statusId}
1316
+ aria-live={isVirtualized ? 'off' : 'polite'}
1317
+ aria-relevant={isVirtualized ? undefined : 'additions'}
1318
+ data-cinder-virtualized={isVirtualized ? '' : undefined}
1319
+ tabindex="0"
1320
+ {@attach scrollAttachment}
1321
+ {@attach historyAnchorScrollAttachment}
1322
+ {@attach viewportAttach}
1323
+ >
1324
+ {#if showHistoryTrigger}
1325
+ <ChatHistoryTrigger
1326
+ bind:this={historyTriggerRef}
1327
+ loading={isLoadingHistory}
1328
+ label={loadEarlierLabel}
1329
+ loadingLabel={loadingEarlierLabel}
1330
+ onload={() => void handleLoadHistory()}
1331
+ />
1332
+ {/if}
1333
+
1334
+ {#if messages.length === 0}
1335
+ {#if empty}
1336
+ {@render empty()}
1337
+ {:else}
1338
+ <div class="chat-empty" role="status">
1339
+ <p>No messages yet</p>
1340
+ {#if emptyPrompts && emptyPrompts.length > 0}
1341
+ <div class="chat-empty-prompts" role="group" aria-label="Suggested prompts">
1342
+ {#each emptyPrompts as prompt, index (index)}
1343
+ <button
1344
+ type="button"
1345
+ class="chat-empty-prompt"
1346
+ onclick={() => handlePromptClick(prompt)}
1347
+ >
1348
+ {prompt}
1349
+ </button>
1350
+ {/each}
1351
+ </div>
1352
+ {/if}
1353
+ </div>
1354
+ {/if}
1355
+ {:else if isVirtualized}
1356
+ <div class="chat-virtual-spacer" style={virtualizedSpacerStyle()}>
1357
+ {#each virtualRows as virtualRow (chatRenderRowKey(virtualRow.row))}
1358
+ <div
1359
+ class="chat-virtual-row"
1360
+ data-cinder-virtual-index={virtualRow.virtualItem.index}
1361
+ style={virtualizedRowStyle(virtualRow.virtualItem)}
1362
+ {@attach virtualRowAttachment(virtualRow.row)}
1363
+ >
1364
+ {@render renderChatRow(virtualRow.row)}
1365
+ </div>
1366
+ {/each}
1367
+ </div>
1368
+ {:else}
1369
+ {#key staticRowsResetIdentity}
1370
+ {#each renderRows as renderRow (chatRenderRowKey(renderRow))}
1371
+ {@render renderChatRow(renderRow)}
1372
+ {/each}
1373
+ {/key}
1374
+ {/if}
1375
+
1376
+ <!-- Per-participant typing indicator: above the bottom sentinel.
1377
+ Always in DOM regardless of message count — the aria-live region must
1378
+ exist before the first update fires so screen readers receive the
1379
+ announcement even in an empty chat. The outer wrapper is always rendered;
1380
+ the inner indicator mounts/unmounts via {#if isActive} inside the
1381
+ component to replay the entrance animation on each typing start.
1382
+ Virtualized path: sits outside the virtual spacer so it does not affect
1383
+ row measurement. The sentinel remains the last element so
1384
+ IntersectionObserver fires correctly when the typing region gains height. -->
1385
+ <ChatParticipantTyping
1386
+ typingLabel={typingIndicatorState.typingLabel}
1387
+ participantCount={typingIndicatorState.participantCount}
1388
+ />
1389
+
1390
+ <!-- Bottom sentinel for IntersectionObserver -->
1391
+ <div class="chat-bottom-sentinel" aria-hidden="true" {@attach sentinelAttach}></div>
1392
+ </div>
1393
+ {/key}
1394
+
1395
+ <!-- Input Area with Jump Buttons -->
1396
+ <div class="chat-input-wrapper">
1397
+ <ChatJumpControls
1398
+ showJumpButton={scrollState.showJumpButton}
1399
+ hasNewMessageIndicator={unreadState.newMessageIndicatorVisible}
1400
+ unreadCount={unreadState.unreadCount}
1401
+ displayUnreadCount={unreadState.displayUnreadCount}
1402
+ hasLargeCount={unreadState.hasLargeCount}
1403
+ onjumptolatest={handleJumpToLatest}
1404
+ />
1405
+
1406
+ <!-- Input Area -->
1407
+ <div class="chat-input-area">
1408
+ <ChatInput
1409
+ id={inputId}
1410
+ bind:this={inputRef}
1411
+ onsubmit={(message, attachments) => handleSubmit(message, attachments)}
1412
+ disabled={streaming}
1413
+ sending={streaming}
1414
+ {allowAttachments}
1415
+ onstop={streaming ? handleStopGenerating : undefined}
1416
+ {oncomposerinput}
1417
+ {onattachmentadd}
1418
+ {onattachmentremove}
1419
+ {onattachmentfailure}
1420
+ />
1421
+ </div>
1422
+ </div>
1423
+
1424
+ <ChatStatusAnnouncer
1425
+ {statusId}
1426
+ messageCount={messages.length}
1427
+ announcerMessage={historyAnnouncement || unreadState.announcerMessage}
1428
+ assertiveMessage={toolApprovalAssertiveMessage}
1429
+ />
1430
+
1431
+ <!-- Typing-participant live region: outside role="log" to avoid double announcement.
1432
+ (ChatStatusAnnouncer is similarly placed outside the log for the same reason.)
1433
+ Text is empty when nobody is typing, debounced for brief-burst suppression. -->
1434
+ <div class="cinder-sr-only" aria-live="polite" aria-atomic="true">
1435
+ {typingIndicatorState.announcedLabel}
1436
+ </div>
1437
+ </div>
1438
+
1439
+ <style>
1440
+ .chat-container {
1441
+ container-type: inline-size;
1442
+ display: flex;
1443
+ flex-direction: column;
1444
+ height: 100%;
1445
+ position: relative;
1446
+ background: var(--cinder-surface);
1447
+ }
1448
+
1449
+ .chat-container[data-surface-mode='transparent'] {
1450
+ background: transparent;
1451
+ }
1452
+
1453
+ /* ==========================================================================
1454
+ * Density tokens — intermediate contract between container and its children.
1455
+ * ONLY the container reads `data-cinder-density`; children consume the
1456
+ * custom properties below. The defaults match the historical hard-coded
1457
+ * --cinder-space values (comfortable = no visual change from before).
1458
+ * ========================================================================== */
1459
+
1460
+ .chat-container {
1461
+ --cinder-chat-message-gap: var(--cinder-space-3);
1462
+ --cinder-chat-message-padding-inline: var(--cinder-space-4);
1463
+ --cinder-chat-timeline-padding: var(--cinder-space-4);
1464
+ /* Narrow-viewport tokens: tighter padding/gap at ≤480px (comfortable density). */
1465
+ --cinder-chat-narrow-padding: var(--cinder-space-3);
1466
+ --cinder-chat-narrow-gap: var(--cinder-space-2);
1467
+ }
1468
+
1469
+ .chat-container[data-cinder-density='compact'] {
1470
+ --cinder-chat-message-gap: var(--cinder-space-1-5);
1471
+ --cinder-chat-message-padding-inline: var(--cinder-space-2);
1472
+ --cinder-chat-timeline-padding: var(--cinder-space-2);
1473
+ /* Narrow-viewport tokens: proportionally tighter for compact density. */
1474
+ --cinder-chat-narrow-padding: var(--cinder-space-1-5);
1475
+ --cinder-chat-narrow-gap: var(--cinder-space-1);
1476
+ }
1477
+
1478
+ /* Full-window drop zone overlay */
1479
+ .chat-drop-overlay {
1480
+ position: absolute;
1481
+ inset: 0;
1482
+ z-index: 100;
1483
+ display: flex;
1484
+ align-items: center;
1485
+ justify-content: center;
1486
+ background: color-mix(in oklch, var(--cinder-accent), transparent 90%);
1487
+ border: 2px dashed var(--cinder-accent);
1488
+ border-radius: var(--cinder-radius-md);
1489
+ pointer-events: none;
1490
+ }
1491
+
1492
+ .chat-drop-label {
1493
+ font-size: var(--cinder-text-lg);
1494
+ font-weight: var(--cinder-font-medium);
1495
+ color: var(--cinder-accent-text);
1496
+ background: var(--cinder-surface);
1497
+ padding: var(--cinder-space-2) var(--cinder-space-4);
1498
+ border-radius: var(--cinder-radius-md);
1499
+ }
1500
+
1501
+ .chat-header {
1502
+ flex-shrink: 0;
1503
+ border-bottom: 1px solid var(--cinder-border);
1504
+ }
1505
+
1506
+ /* Timeline / Message Area */
1507
+ .chat-timeline {
1508
+ flex: 1;
1509
+ overflow-y: auto;
1510
+ overflow-anchor: auto;
1511
+ padding: var(--cinder-chat-timeline-padding);
1512
+ display: flex;
1513
+ flex-direction: column;
1514
+ gap: var(--cinder-chat-message-gap);
1515
+ }
1516
+
1517
+ .chat-timeline[data-cinder-virtualized] {
1518
+ display: block;
1519
+ overflow-anchor: none;
1520
+ }
1521
+
1522
+ .chat-timeline[data-cinder-virtualized] > :global(.chat-history-trigger) {
1523
+ margin-block-end: var(--cinder-chat-message-gap);
1524
+ }
1525
+
1526
+ .chat-virtual-spacer {
1527
+ flex-shrink: 0;
1528
+ }
1529
+
1530
+ .chat-virtual-row {
1531
+ box-sizing: border-box;
1532
+ width: 100%;
1533
+ padding-block-end: var(--cinder-chat-message-gap);
1534
+ }
1535
+
1536
+ /* Inset surface separates assistant bubbles (--cinder-surface) from the
1537
+ * page-level background. Only applied in default surfaceMode; embedded
1538
+ * contexts using surfaceMode="transparent" inherit their host's background. */
1539
+ .chat-container[data-surface-mode='default'] .chat-timeline {
1540
+ background: var(--cinder-surface-inset);
1541
+ }
1542
+
1543
+ /* The timeline is a scrollable region; an outset ring is clipped by its own
1544
+ overflow, so paint an INSET ring (Strategy B-inset). */
1545
+ .chat-timeline:focus-visible {
1546
+ outline: var(--cinder-ring-width) solid transparent;
1547
+ box-shadow: inset 0 0 0 var(--cinder-ring-width)
1548
+ var(--_cinder-chat-timeline-ring, var(--cinder-ring-color));
1549
+ }
1550
+
1551
+ @media (forced-colors: active) {
1552
+ .chat-timeline:focus-visible {
1553
+ outline: var(--cinder-ring-width) solid ButtonText;
1554
+ outline-offset: calc(var(--cinder-ring-width) * -1);
1555
+ }
1556
+ }
1557
+
1558
+ /* Prevent non-last messages from being scroll anchors */
1559
+ .chat-timeline > :not(:last-child) {
1560
+ overflow-anchor: none;
1561
+ }
1562
+
1563
+ /* Empty State */
1564
+ .chat-empty {
1565
+ flex: 1;
1566
+ display: flex;
1567
+ flex-direction: column;
1568
+ align-items: center;
1569
+ justify-content: center;
1570
+ gap: var(--cinder-space-4);
1571
+ text-align: center;
1572
+ color: var(--cinder-text-muted);
1573
+ }
1574
+
1575
+ .chat-empty-prompts {
1576
+ display: flex;
1577
+ flex-wrap: wrap;
1578
+ gap: var(--cinder-space-2);
1579
+ justify-content: center;
1580
+ max-width: 36rem;
1581
+ padding: 0 var(--cinder-space-4);
1582
+ }
1583
+
1584
+ .chat-empty-prompt {
1585
+ padding: var(--cinder-space-2) var(--cinder-space-3);
1586
+ font-size: var(--cinder-text-sm);
1587
+ color: var(--cinder-text);
1588
+ background: var(--cinder-surface-raised);
1589
+ border: 1px solid var(--cinder-border);
1590
+ border-radius: var(--cinder-radius-lg);
1591
+ cursor: pointer;
1592
+ transition:
1593
+ background var(--cinder-duration-fast) var(--cinder-ease-standard),
1594
+ border-color var(--cinder-duration-fast) var(--cinder-ease-standard);
1595
+ }
1596
+
1597
+ @media (hover: hover) {
1598
+ .chat-empty-prompt:hover {
1599
+ background: var(--cinder-surface-hover);
1600
+ border-color: var(--cinder-accent);
1601
+ }
1602
+ }
1603
+
1604
+ .chat-empty-prompt:focus-visible {
1605
+ outline: var(--cinder-ring-width) solid transparent;
1606
+ box-shadow: var(--_cinder-focus-ring-shadow);
1607
+ }
1608
+
1609
+ @media (forced-colors: active) {
1610
+ .chat-empty-prompt:focus-visible {
1611
+ outline: var(--cinder-ring-width) solid ButtonText;
1612
+ outline-offset: 3px;
1613
+ }
1614
+ }
1615
+
1616
+ /* Unread Divider */
1617
+ .chat-unread-divider {
1618
+ display: flex;
1619
+ align-items: center;
1620
+ gap: var(--cinder-space-3);
1621
+ padding: var(--cinder-space-2) 0;
1622
+ }
1623
+
1624
+ .chat-unread-divider-line {
1625
+ flex: 1;
1626
+ height: 1px;
1627
+ background: var(--cinder-accent);
1628
+ }
1629
+
1630
+ .chat-unread-divider-label {
1631
+ display: inline-flex;
1632
+ align-items: center;
1633
+ padding: var(--cinder-space-0-5) var(--cinder-space-2);
1634
+ font-size: var(--cinder-text-xs);
1635
+ font-weight: var(--cinder-font-medium);
1636
+ color: var(--cinder-accent-text);
1637
+ background: color-mix(in oklch, var(--cinder-accent), transparent 92%);
1638
+ border-radius: var(--cinder-radius-full);
1639
+ }
1640
+
1641
+ /* Bottom Sentinel (invisible) */
1642
+ .chat-bottom-sentinel {
1643
+ height: 1px;
1644
+ flex-shrink: 0;
1645
+ }
1646
+
1647
+ /* Typing Indicator */
1648
+ .chat-typing-indicator {
1649
+ display: flex;
1650
+ align-items: center;
1651
+ gap: var(--cinder-space-1);
1652
+ padding: var(--cinder-space-3) var(--cinder-space-4);
1653
+ max-width: max-content;
1654
+ background: var(--cinder-surface-raised);
1655
+ border-radius: var(--cinder-radius-lg);
1656
+ animation: typing-indicator-enter var(--cinder-duration) var(--cinder-ease-decelerate);
1657
+ }
1658
+
1659
+ @keyframes typing-indicator-enter {
1660
+ from {
1661
+ opacity: 0;
1662
+ transform: translateY(0.5rem);
1663
+ }
1664
+ to {
1665
+ opacity: 1;
1666
+ transform: translateY(0);
1667
+ }
1668
+ }
1669
+
1670
+ .chat-typing-status {
1671
+ font-size: var(--cinder-text-sm);
1672
+ color: var(--cinder-text-muted);
1673
+ font-style: italic;
1674
+ }
1675
+
1676
+ .chat-typing-dot {
1677
+ width: 0.5rem;
1678
+ height: 0.5rem;
1679
+ background: var(--cinder-text-muted);
1680
+ border-radius: var(--cinder-radius-full);
1681
+ animation: typing-bounce 1.4s ease-in-out infinite;
1682
+ }
1683
+
1684
+ .chat-typing-dot:nth-child(1) {
1685
+ animation-delay: 0s;
1686
+ }
1687
+
1688
+ .chat-typing-dot:nth-child(2) {
1689
+ animation-delay: 0.2s;
1690
+ }
1691
+
1692
+ .chat-typing-dot:nth-child(3) {
1693
+ animation-delay: 0.4s;
1694
+ }
1695
+
1696
+ @keyframes typing-bounce {
1697
+ 0%,
1698
+ 60%,
1699
+ 100% {
1700
+ opacity: 0.4;
1701
+ transform: translateY(0);
1702
+ }
1703
+ 30% {
1704
+ opacity: 1;
1705
+ transform: translateY(-0.25rem);
1706
+ }
1707
+ }
1708
+
1709
+ @media (prefers-reduced-motion: reduce) {
1710
+ .chat-typing-dot {
1711
+ animation: typing-pulse 1.4s ease-in-out infinite;
1712
+ }
1713
+
1714
+ @keyframes typing-pulse {
1715
+ 0%,
1716
+ 100% {
1717
+ opacity: 0.4;
1718
+ }
1719
+ 50% {
1720
+ opacity: 1;
1721
+ }
1722
+ }
1723
+
1724
+ /* Disable entrance animations for reduced motion */
1725
+ .chat-typing-indicator {
1726
+ animation: none;
1727
+ }
1728
+ }
1729
+
1730
+ /* Input Wrapper - positions jump buttons relative to input */
1731
+ .chat-input-wrapper {
1732
+ position: relative;
1733
+ flex-shrink: 0;
1734
+ }
1735
+
1736
+ /* Input Area */
1737
+ .chat-input-area {
1738
+ flex-shrink: 0;
1739
+ padding: var(--cinder-chat-timeline-padding);
1740
+ border-top: 1px solid var(--cinder-border);
1741
+ background: var(--cinder-surface);
1742
+ }
1743
+
1744
+ .chat-container[data-surface-mode='transparent'] .chat-input-area {
1745
+ background: transparent;
1746
+ }
1747
+
1748
+ /* Responsive adjustments: tighten padding at narrow widths.
1749
+ Uses --cinder-chat-narrow-* tokens so each density gets an appropriate
1750
+ reduced value (comfortable → space-3/space-2; compact → space-1-5/space-1). */
1751
+ @container (max-width: 480px) {
1752
+ .chat-timeline {
1753
+ padding: var(--cinder-chat-narrow-padding);
1754
+ gap: var(--cinder-chat-narrow-gap);
1755
+ }
1756
+
1757
+ .chat-input-area {
1758
+ padding: var(--cinder-chat-narrow-padding);
1759
+ }
1760
+ }
1761
+
1762
+ /* ==========================================================================
1763
+ * Variant — flat: remove bubble backgrounds; role is communicated via
1764
+ * alignment and role label only. Text renders on --cinder-surface-inset
1765
+ * (the timeline background in default surfaceMode), which meets WCAG AA
1766
+ * for --cinder-text. The `:global()` reach is required because bubble CSS
1767
+ * lives in chat-message.svelte (a child component).
1768
+ * ========================================================================== */
1769
+
1770
+ /* Strip user bubble background + distinctive border radius */
1771
+ .chat-container[data-cinder-variant='flat']
1772
+ :global(.chat-message-wrapper[data-role='user'] .chat-message) {
1773
+ background: transparent;
1774
+ border-radius: var(--cinder-radius-lg);
1775
+ }
1776
+
1777
+ /* Strip assistant bubble background + border + shadow */
1778
+ .chat-container[data-cinder-variant='flat']
1779
+ :global(.chat-message-wrapper[data-role='assistant'] .chat-message) {
1780
+ background: transparent;
1781
+ border: none;
1782
+ box-shadow: none;
1783
+ border-radius: var(--cinder-radius-lg);
1784
+ }
1785
+
1786
+ /* In flat mode, the user header must flow in-document (not absolutely
1787
+ positioned) so the role label appears above the message content.
1788
+ The label itself is un-clipped below so it reads as visible text. */
1789
+ .chat-container[data-cinder-variant='flat']
1790
+ :global(.chat-message-wrapper[data-role='user'] .chat-message-header) {
1791
+ position: static;
1792
+ inset: unset;
1793
+ }
1794
+
1795
+ /* Un-hide the role label for user messages: in bubble mode alignment
1796
+ communicates role; in flat mode there is no colored background, so the
1797
+ label is the primary visible role signal. */
1798
+ .chat-container[data-cinder-variant='flat']
1799
+ :global(.chat-message-wrapper[data-role='user'] .chat-message-role) {
1800
+ position: static;
1801
+ width: auto;
1802
+ height: auto;
1803
+ padding: 0;
1804
+ margin: 0;
1805
+ overflow: visible;
1806
+ clip: auto;
1807
+ white-space: normal;
1808
+ }
1809
+ </style>