@lostgradient/cinder 0.3.0 → 0.4.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 (921) hide show
  1. package/CHANGELOG.md +146 -0
  2. package/README.md +2 -2
  3. package/components.json +138 -86
  4. package/dist/_internal/locale-context.d.ts +9 -0
  5. package/dist/_internal/text-direction.d.ts +4 -0
  6. package/dist/_internal/tree-context.d.ts +2 -0
  7. package/dist/api-contract.d.ts +1 -1
  8. package/dist/components/_internal/create-command-list-state.svelte.d.ts +43 -0
  9. package/dist/components/_internal/create-sliding-dialog-state.svelte.d.ts +26 -0
  10. package/dist/components/access-gate/index.js +379 -513
  11. package/dist/components/alert/alert.css +1 -1
  12. package/dist/components/alert/alert.schema.js +4 -4
  13. package/dist/components/alert/alert.types.d.ts +4 -4
  14. package/dist/components/alert/index.js +4 -4
  15. package/dist/components/alert-dialog/index.js +9 -3
  16. package/dist/components/approval-card/approval-card-state.d.ts +3 -0
  17. package/dist/components/approval-card/approval-card.css +239 -0
  18. package/dist/components/approval-card/approval-card.schema.js +236 -0
  19. package/dist/components/approval-card/approval-card.svelte.d.ts +21 -0
  20. package/dist/components/approval-card/approval-card.types.d.ts +155 -0
  21. package/dist/components/{subscription-badge/subscription-badge.variables.js → approval-card/approval-card.variables.js} +4 -4
  22. package/dist/components/approval-card/index.d.ts +5 -0
  23. package/dist/components/approval-card/index.js +3794 -0
  24. package/dist/components/autocomplete/autocomplete.css +12 -1
  25. package/dist/components/autocomplete/index.js +106 -81
  26. package/dist/components/avatar-group/index.js +3 -2
  27. package/dist/components/badge/badge.schema.js +6 -3
  28. package/dist/components/badge/badge.svelte.d.ts +4 -0
  29. package/dist/components/badge/badge.types.d.ts +18 -4
  30. package/dist/components/badge/index.d.ts +1 -1
  31. package/dist/components/badge/index.js +99 -3
  32. package/dist/components/banner/banner.schema.js +2 -2
  33. package/dist/components/banner/banner.types.d.ts +1 -1
  34. package/dist/components/banner/index.js +3 -3
  35. package/dist/components/button/button.css +1 -1
  36. package/dist/components/capability-gate/capability-gate.css +15 -2
  37. package/dist/components/capability-gate/capability-gate.schema.js +4 -4
  38. package/dist/components/capability-gate/capability-gate.types.d.ts +6 -6
  39. package/dist/components/capability-gate/index.js +7 -7
  40. package/dist/components/chat/chat.schema.js +11 -26
  41. package/dist/components/chat/chat.types.d.ts +30 -15
  42. package/dist/components/chat/container/chat-events.d.ts +2 -2
  43. package/dist/components/chat/container/chat-history-trigger.svelte.d.ts +1 -1
  44. package/dist/components/chat/container/chat.svelte.d.ts +1 -1
  45. package/dist/components/chat/container/use-chat-scroll-state.svelte.d.ts +4 -4
  46. package/dist/components/chat/container/use-chat-unread-state.svelte.d.ts +6 -6
  47. package/dist/components/chat/index.d.ts +1 -1
  48. package/dist/components/chat/index.js +2257 -1913
  49. package/dist/components/chat/input/chat-input.svelte.d.ts +3 -1
  50. package/dist/components/chat-conversation-header/index.js +261 -29
  51. package/dist/components/chat-conversation-list/chat-conversation-list.css +13 -0
  52. package/dist/components/checkbox/checkbox.css +3 -0
  53. package/dist/components/checkbox/checkbox.schema.js +6 -1
  54. package/dist/components/checkbox/checkbox.types.d.ts +2 -0
  55. package/dist/components/checkbox/index.js +78 -22
  56. package/dist/components/checkbox-group/checkbox-group.css +3 -0
  57. package/dist/components/checkbox-group/checkbox-group.schema.js +4 -4
  58. package/dist/components/checkbox-group/checkbox-group.types.d.ts +12 -7
  59. package/dist/components/checkbox-group/index.js +50 -21
  60. package/dist/components/choice-grid/index.js +2 -2
  61. package/dist/components/choice-grid-item/index.js +2 -2
  62. package/dist/components/click-away-listener/click-away-listener.schema.js +3 -3
  63. package/dist/components/click-away-listener/click-away-listener.types.d.ts +3 -3
  64. package/dist/components/click-away-listener/index.js +3 -3
  65. package/dist/components/code-block/code-block.css +4 -3
  66. package/dist/components/code-block/index.js +6 -5
  67. package/dist/components/collapsible/collapsible.schema.js +2 -2
  68. package/dist/components/collapsible/collapsible.types.d.ts +2 -2
  69. package/dist/components/collapsible/index.js +3 -3
  70. package/dist/components/color-field/color-field.schema.js +3 -3
  71. package/dist/components/color-field/color-field.types.d.ts +2 -2
  72. package/dist/components/color-field/index.js +133 -69
  73. package/dist/components/color-picker/index.js +29 -18
  74. package/dist/components/color-swatch-picker/index.js +29 -18
  75. package/dist/components/combobox/combobox.schema.js +6 -2
  76. package/dist/components/combobox/combobox.types.d.ts +7 -1
  77. package/dist/components/combobox/index.js +112 -60
  78. package/dist/components/command-item/command-item.css +10 -0
  79. package/dist/components/command-item/command-item.schema.js +9 -1
  80. package/dist/components/command-item/command-item.types.d.ts +4 -0
  81. package/dist/components/command-item/index.js +9 -1
  82. package/dist/components/command-menu/index.js +257 -161
  83. package/dist/components/command-palette/command-palette.schema.js +2 -3
  84. package/dist/components/command-palette/command-palette.types.d.ts +1 -2
  85. package/dist/components/command-palette/index.js +282 -192
  86. package/dist/components/confirm-dialog/index.js +9 -3
  87. package/dist/components/context-menu/context-menu.context.d.ts +2 -0
  88. package/dist/components/context-menu/index.js +300 -40
  89. package/dist/components/context-menu-trigger/index.js +11 -8
  90. package/dist/components/copy-button/index.js +6 -5
  91. package/dist/components/data-grid/_internal/column-model.svelte.d.ts +1 -0
  92. package/dist/components/data-grid/data-grid.css +25 -0
  93. package/dist/components/data-grid/data-grid.schema.js +3 -3
  94. package/dist/components/data-grid/data-grid.types.d.ts +8 -2
  95. package/dist/components/data-grid/index.js +11 -8
  96. package/dist/components/data-list/data-list.schema.js +7 -10
  97. package/dist/components/data-list/data-list.types.d.ts +5 -9
  98. package/dist/components/data-list/index.js +15 -39
  99. package/dist/components/data-table/data-table.css +13 -0
  100. package/dist/components/data-table/index.js +32 -19
  101. package/dist/components/date-range-field/date-range-field.schema.js +7 -3
  102. package/dist/components/date-range-field/date-range-field.svelte.d.ts +2 -2
  103. package/dist/components/date-range-field/date-range-field.types.d.ts +15 -10
  104. package/dist/components/date-range-field/index.d.ts +1 -1
  105. package/dist/components/date-range-field/index.js +160 -17
  106. package/dist/components/diff-viewer/diff-front-matter.svelte.d.ts +2 -2
  107. package/dist/components/diff-viewer/diff-line.svelte.d.ts +2 -2
  108. package/dist/components/diff-viewer/diff-toolbar.svelte.d.ts +2 -2
  109. package/dist/components/diff-viewer/diff-viewer.svelte.d.ts +1 -1
  110. package/dist/components/diff-viewer/diff-viewer.types.d.ts +3 -3
  111. package/dist/components/diff-viewer/index.d.ts +1 -1
  112. package/dist/components/diff-viewer/index.js +171 -67
  113. package/dist/components/drawer/index.js +353 -283
  114. package/dist/components/dropdown/dropdown.css +7 -1
  115. package/dist/components/dropdown/dropdown.types.d.ts +3 -0
  116. package/dist/components/dropdown/index.js +267 -35
  117. package/dist/components/dropdown-group/dropdown-group.schema.js +4 -4
  118. package/dist/components/dropdown-group/dropdown-group.types.d.ts +4 -4
  119. package/dist/components/dropdown-group/index.js +7 -7
  120. package/dist/components/dropdown-item/dropdown-item.schema.js +9 -1
  121. package/dist/components/dropdown-item/dropdown-item.types.d.ts +5 -0
  122. package/dist/components/dropdown-item/index.js +13 -8
  123. package/dist/components/dropdown-menu/index.js +236 -14
  124. package/dist/components/dropdown-trigger/index.js +11 -12
  125. package/dist/components/event-stream-viewer/event-stream-viewer-keys.d.ts +6 -0
  126. package/dist/components/event-stream-viewer/event-stream-viewer.css +46 -0
  127. package/dist/components/event-stream-viewer/event-stream-viewer.schema.js +83 -10
  128. package/dist/components/event-stream-viewer/event-stream-viewer.svelte.d.ts +3 -3
  129. package/dist/components/event-stream-viewer/event-stream-viewer.types.d.ts +124 -3
  130. package/dist/components/event-stream-viewer/index.d.ts +1 -1
  131. package/dist/components/event-stream-viewer/index.js +764 -409
  132. package/dist/components/faceted-filter-bar/faceted-filter-bar.css +9 -0
  133. package/dist/components/faceted-filter-bar/index.js +25 -6
  134. package/dist/components/file-upload/file-upload.css +5 -5
  135. package/dist/components/floating-action-button/floating-action-button.css +22 -22
  136. package/dist/components/floating-action-button/floating-action-button.schema.js +5 -5
  137. package/dist/components/floating-action-button/floating-action-button.svelte.d.ts +1 -1
  138. package/dist/components/floating-action-button/floating-action-button.types.d.ts +21 -21
  139. package/dist/components/floating-action-button/index.d.ts +1 -1
  140. package/dist/components/floating-action-button/index.js +8 -8
  141. package/dist/components/form-field/form-field.css +3 -13
  142. package/dist/components/form-field/index.js +2 -2
  143. package/dist/components/hover-card/index.js +3 -2
  144. package/dist/components/input/index.js +131 -67
  145. package/dist/components/input/input.schema.js +6 -1
  146. package/dist/components/input/input.types.d.ts +2 -0
  147. package/dist/components/invocation-rule-builder/index.d.ts +1 -1
  148. package/dist/components/invocation-rule-builder/index.js +184 -107
  149. package/dist/components/invocation-rule-builder/invocation-rule-builder.css +63 -6
  150. package/dist/components/invocation-rule-builder/invocation-rule-builder.schema.js +133 -35
  151. package/dist/components/invocation-rule-builder/invocation-rule-builder.svelte.d.ts +2 -2
  152. package/dist/components/invocation-rule-builder/invocation-rule-builder.types.d.ts +85 -8
  153. package/dist/components/json-schema-editor/form-view.svelte.d.ts +1 -0
  154. package/dist/components/json-schema-editor/index.js +677 -357
  155. package/dist/components/json-schema-editor/json-schema-editor.css +6 -1
  156. package/dist/components/json-schema-editor/json-schema-toolbar.svelte.d.ts +1 -0
  157. package/dist/components/json-schema-editor/property-editor.svelte.d.ts +2 -0
  158. package/dist/components/json-schema-editor/property-list-validation.d.ts +1 -0
  159. package/dist/components/json-schema-editor/property-list.svelte.d.ts +1 -0
  160. package/dist/components/json-viewer/_json-viewer-node.svelte.d.ts +3 -0
  161. package/dist/components/json-viewer/index.js +112 -26
  162. package/dist/components/json-viewer/json-viewer.css +11 -0
  163. package/dist/components/kanban-board/index.js +18 -13
  164. package/dist/components/kanban-board/kanban-board.css +56 -3
  165. package/dist/components/keyboard-shortcuts/index.js +2 -2
  166. package/dist/components/keyboard-shortcuts/keyboard-shortcuts.css +2 -2
  167. package/dist/components/label/index.js +2 -2
  168. package/dist/components/label/label.css +2 -9
  169. package/dist/components/load-more/index.js +4 -4
  170. package/dist/components/load-more/load-more.css +13 -5
  171. package/dist/components/load-more/load-more.schema.js +4 -4
  172. package/dist/components/load-more/load-more.types.d.ts +3 -3
  173. package/dist/components/locale-provider/index.d.ts +4 -0
  174. package/dist/components/locale-provider/index.js +76 -0
  175. package/dist/components/{connection-indicator/connection-indicator.schema.js → locale-provider/locale-provider.schema.js} +18 -14
  176. package/dist/components/locale-provider/locale-provider.svelte.d.ts +17 -0
  177. package/dist/components/locale-provider/locale-provider.types.d.ts +17 -0
  178. package/dist/components/{connection-indicator/connection-indicator.variables.js → locale-provider/locale-provider.variables.js} +4 -4
  179. package/dist/components/markdown-editor/editor-toolbar/editor-toolbar.svelte.d.ts +2 -0
  180. package/dist/components/markdown-editor/index.js +437 -128
  181. package/dist/components/markdown-editor/markdown-editor.schema.js +4 -4
  182. package/dist/components/markdown-editor/markdown-editor.types.d.ts +4 -4
  183. package/dist/components/masonry/masonry.schema.js +4 -3
  184. package/dist/components/masonry/masonry.types.d.ts +13 -2
  185. package/dist/components/matrix-chart/index.js +245 -224
  186. package/dist/components/media-controls/index.js +7 -7
  187. package/dist/components/media-controls/media-controls.css +15 -4
  188. package/dist/components/media-controls/media-controls.schema.js +4 -4
  189. package/dist/components/media-controls/media-controls.types.d.ts +7 -7
  190. package/dist/components/menu-bar/menu-bar.css +11 -0
  191. package/dist/components/menu-bar/menu-bar.svelte.d.ts +1 -0
  192. package/dist/components/modal/index.js +9 -3
  193. package/dist/components/navigation-bar/index.js +4 -4
  194. package/dist/components/navigation-bar/navigation-bar.schema.js +2 -2
  195. package/dist/components/navigation-bar/navigation-bar.types.d.ts +1 -1
  196. package/dist/components/number-input/index.js +88 -42
  197. package/dist/components/number-input/number-input.schema.js +4 -3
  198. package/dist/components/number-input/number-input.types.d.ts +16 -5
  199. package/dist/components/payload-inspector/index.d.ts +1 -1
  200. package/dist/components/payload-inspector/index.js +271 -64
  201. package/dist/components/payload-inspector/payload-inspector.css +6 -0
  202. package/dist/components/payload-inspector/payload-inspector.schema.js +27 -15
  203. package/dist/components/payload-inspector/payload-inspector.svelte.d.ts +2 -2
  204. package/dist/components/payload-inspector/payload-inspector.types.d.ts +52 -3
  205. package/dist/components/permission-matrix/permission-matrix.css +10 -0
  206. package/dist/components/phone-input/index.js +56 -33
  207. package/dist/components/phone-input/phone-input.schema.js +2 -2
  208. package/dist/components/phone-input/phone-input.types.d.ts +3 -2
  209. package/dist/components/pin-input/index.js +46 -41
  210. package/dist/components/pin-input/pin-input.schema.js +9 -2
  211. package/dist/components/pin-input/pin-input.types.d.ts +10 -1
  212. package/dist/components/popover/index.js +11 -4
  213. package/dist/components/portal/index.js +3 -2
  214. package/dist/components/pricing-card/index.js +22 -7
  215. package/dist/components/radio-group/index.js +51 -21
  216. package/dist/components/radio-group/radio-group.css +3 -0
  217. package/dist/components/radio-group/radio-group.schema.js +3 -3
  218. package/dist/components/radio-group/radio-group.types.d.ts +6 -2
  219. package/dist/components/rating/index.js +1 -6
  220. package/dist/components/rating/rating.schema.js +9 -2
  221. package/dist/components/rating/rating.types.d.ts +6 -0
  222. package/dist/components/review-editor/comment-list.svelte.d.ts +1 -1
  223. package/dist/components/review-editor/index.d.ts +1 -1
  224. package/dist/components/review-editor/index.js +789 -314
  225. package/dist/components/review-editor/review-editor-controls.svelte.d.ts +1 -1
  226. package/dist/components/review-editor/review-editor-impl.svelte.d.ts +4 -4
  227. package/dist/components/review-editor/review-editor-selection-types.d.ts +1 -1
  228. package/dist/components/review-editor/review-editor-state.svelte.d.ts +1 -1
  229. package/dist/components/review-editor/review-editor-threads.svelte.d.ts +2 -2
  230. package/dist/components/review-editor/review-editor.svelte.d.ts +2 -1
  231. package/dist/components/review-editor/review-editor.types.d.ts +77 -3
  232. package/dist/components/review-editor/thread-popover.svelte.d.ts +1 -1
  233. package/dist/components/run-step-timeline/index.d.ts +1 -1
  234. package/dist/components/run-step-timeline/index.js +747 -273
  235. package/dist/components/run-step-timeline/run-step-timeline.css +25 -5
  236. package/dist/components/run-step-timeline/run-step-timeline.schema.js +351 -21
  237. package/dist/components/run-step-timeline/run-step-timeline.svelte.d.ts +1 -1
  238. package/dist/components/run-step-timeline/run-step-timeline.types.d.ts +184 -3
  239. package/dist/components/schema-form/index.d.ts +1 -1
  240. package/dist/components/schema-form/index.js +1916 -474
  241. package/dist/components/schema-form/schema-form-async.fixture.d.ts +1 -0
  242. package/dist/components/schema-form/schema-form-body.svelte.d.ts +25 -0
  243. package/dist/components/schema-form/schema-form-model.d.ts +1 -4
  244. package/dist/components/schema-form/schema-form-validation.d.ts +1 -2
  245. package/dist/components/schema-form/schema-form.css +12 -74
  246. package/dist/components/schema-form/schema-form.schema.js +10 -3
  247. package/dist/components/schema-form/schema-form.svelte.d.ts +3 -3
  248. package/dist/components/schema-form/schema-form.types.d.ts +15 -8
  249. package/dist/components/scroll-area/index.js +3 -3
  250. package/dist/components/scroll-area/scroll-area.schema.js +2 -2
  251. package/dist/components/scroll-area/scroll-area.types.d.ts +1 -1
  252. package/dist/components/secret-value-field/index.js +10 -4
  253. package/dist/components/secret-value-field/secret-value-field.svelte.d.ts +1 -1
  254. package/dist/components/segmented-control/segmented-control.css +22 -1
  255. package/dist/components/select/index.js +37 -24
  256. package/dist/components/select/select.css +9 -2
  257. package/dist/components/selection-popover/index.js +11 -4
  258. package/dist/components/share-card/index.js +3 -4
  259. package/dist/components/share-card/share-card.css +15 -4
  260. package/dist/components/sheet/index.js +365 -300
  261. package/dist/components/shortcut-hint/index.js +3 -3
  262. package/dist/components/sidebar/index.js +423 -353
  263. package/dist/components/sidebar/sidebar.schema.js +2 -2
  264. package/dist/components/sidebar/sidebar.types.d.ts +1 -1
  265. package/dist/components/slider/index.js +211 -9
  266. package/dist/components/slider/slider.css +14 -9
  267. package/dist/components/sortable-list/sortable-list.css +1 -1
  268. package/dist/components/spectrogram/index.js +224 -203
  269. package/dist/components/spectrum-chart/index.js +208 -187
  270. package/dist/components/speed-dial/index.js +11 -11
  271. package/dist/components/speed-dial/speed-dial.css +3 -3
  272. package/dist/components/speed-dial-action/index.js +9 -9
  273. package/dist/components/stat/index.js +26 -4
  274. package/dist/components/stat/stat.schema.js +2 -2
  275. package/dist/components/stat/stat.types.d.ts +2 -2
  276. package/dist/components/stat-group/index.js +26 -4
  277. package/dist/components/stat-group/stat-group.css +1 -1
  278. package/dist/components/status-dot/index.d.ts +1 -1
  279. package/dist/components/status-dot/index.js +47 -8
  280. package/dist/components/status-dot/status-dot.css +45 -1
  281. package/dist/components/status-dot/status-dot.schema.js +12 -5
  282. package/dist/components/status-dot/status-dot.svelte.d.ts +5 -1
  283. package/dist/components/status-dot/status-dot.types.d.ts +16 -6
  284. package/dist/components/steps/steps.css +3 -3
  285. package/dist/components/table/index.js +23 -17
  286. package/dist/components/table/table.css +10 -0
  287. package/dist/components/table/table.types.d.ts +3 -3
  288. package/dist/components/table-header/index.js +5 -5
  289. package/dist/components/table-header/table-header.schema.js +3 -3
  290. package/dist/components/table-header/table-header.types.d.ts +2 -2
  291. package/dist/components/table-header-cell/index.js +11 -5
  292. package/dist/components/table-row/index.js +7 -7
  293. package/dist/components/table-row/table-row.schema.js +3 -3
  294. package/dist/components/table-row/table-row.types.d.ts +6 -6
  295. package/dist/components/tabs/index.js +17 -4
  296. package/dist/components/tabs/tabs.schema.js +6 -1
  297. package/dist/components/tabs/tabs.types.d.ts +2 -0
  298. package/dist/components/textarea/index.js +37 -24
  299. package/dist/components/textarea/textarea.css +16 -1
  300. package/dist/components/time-field/index.d.ts +5 -0
  301. package/dist/components/time-field/index.js +456 -0
  302. package/dist/components/time-field/time-field.css +60 -0
  303. package/dist/components/time-field/time-field.schema.d.ts +3 -0
  304. package/dist/components/time-field/time-field.schema.js +107 -0
  305. package/dist/components/time-field/time-field.svelte.d.ts +18 -0
  306. package/dist/components/time-field/time-field.types.d.ts +63 -0
  307. package/dist/components/time-field/time-field.variables.d.ts +2 -0
  308. package/dist/components/{experimental/connection-indicator/index.js → time-field/time-field.variables.js} +5 -14
  309. package/dist/components/toggle/index.js +39 -7
  310. package/dist/components/toggle/toggle.schema.js +11 -2
  311. package/dist/components/toggle/toggle.types.d.ts +2 -0
  312. package/dist/components/tooltip/index.js +3 -2
  313. package/dist/components/transfer-list/index.js +41 -11
  314. package/dist/components/transfer-list/transfer-list.css +22 -0
  315. package/dist/components/transfer-list/transfer-list.schema.js +2 -2
  316. package/dist/components/transfer-list/transfer-list.types.d.ts +2 -2
  317. package/dist/components/tree/index.js +238 -153
  318. package/dist/components/tree/tree.css +69 -0
  319. package/dist/components/tree/tree.schema.js +3 -3
  320. package/dist/components/tree/tree.types.d.ts +2 -2
  321. package/dist/components/tree-item/index.js +107 -68
  322. package/dist/components/tree-item/tree-item.schema.js +5 -5
  323. package/dist/components/tree-item/tree-item.types.d.ts +4 -4
  324. package/dist/components/virtual-list/index.js +98 -63
  325. package/dist/components/waveform/index.js +185 -164
  326. package/dist/editor/attach.d.ts +2 -2
  327. package/dist/editor/attach.js +10 -16
  328. package/dist/editor/editor.js +6 -6
  329. package/dist/editor/keymap-plugin.d.ts +2 -2
  330. package/dist/editor/keymap-plugin.js +4 -4
  331. package/dist/editor/types.d.ts +11 -11
  332. package/dist/index.d.ts +14 -12
  333. package/dist/index.js +106 -105
  334. package/dist/server/components/access-gate/index.js +176 -305
  335. package/dist/server/components/alert/alert.schema.js +4 -4
  336. package/dist/server/components/alert/index.css +1 -1
  337. package/dist/server/components/alert/index.js +4 -4
  338. package/dist/server/components/alert-dialog/index.js +9 -3
  339. package/dist/server/components/approval-card/approval-card.schema.js +217 -0
  340. package/dist/server/components/approval-card/approval-card.variables.js +12 -0
  341. package/dist/server/components/approval-card/index.css +1767 -0
  342. package/dist/server/components/approval-card/index.js +2499 -0
  343. package/dist/server/components/autocomplete/index.css +12 -1
  344. package/dist/server/components/autocomplete/index.js +34 -24
  345. package/dist/server/components/badge/badge.schema.js +6 -3
  346. package/dist/server/components/badge/index.js +71 -4
  347. package/dist/server/components/banner/banner.schema.js +2 -2
  348. package/dist/server/components/banner/index.js +3 -3
  349. package/dist/server/components/button/index.css +1 -1
  350. package/dist/server/components/capability-gate/capability-gate.schema.js +4 -4
  351. package/dist/server/components/capability-gate/index.css +10 -2
  352. package/dist/server/components/capability-gate/index.js +5 -5
  353. package/dist/server/components/chat/chat.schema.js +11 -26
  354. package/dist/server/components/chat/index.js +695 -438
  355. package/dist/server/components/chat-conversation-header/index.css +7 -1
  356. package/dist/server/components/chat-conversation-header/index.js +215 -17
  357. package/dist/server/components/chat-conversation-list/index.css +8 -0
  358. package/dist/server/components/checkbox/checkbox.schema.js +6 -1
  359. package/dist/server/components/checkbox/index.css +3 -0
  360. package/dist/server/components/checkbox/index.js +41 -4
  361. package/dist/server/components/checkbox-group/checkbox-group.schema.js +4 -4
  362. package/dist/server/components/checkbox-group/index.css +3 -0
  363. package/dist/server/components/checkbox-group/index.js +23 -4
  364. package/dist/server/components/choice-grid/index.js +2 -2
  365. package/dist/server/components/choice-grid-item/index.js +2 -2
  366. package/dist/server/components/click-away-listener/click-away-listener.schema.js +3 -3
  367. package/dist/server/components/click-away-listener/index.js +2 -2
  368. package/dist/server/components/code-block/index.css +4 -3
  369. package/dist/server/components/code-block/index.js +1 -6
  370. package/dist/server/components/collapsible/collapsible.schema.js +2 -2
  371. package/dist/server/components/collapsible/index.js +3 -3
  372. package/dist/server/components/color-field/color-field.schema.js +3 -3
  373. package/dist/server/components/color-field/index.js +61 -17
  374. package/dist/server/components/color-picker/index.js +29 -12
  375. package/dist/server/components/color-swatch-picker/index.js +29 -12
  376. package/dist/server/components/combobox/combobox.schema.js +6 -2
  377. package/dist/server/components/combobox/index.js +61 -12
  378. package/dist/server/components/command-item/command-item.schema.js +9 -1
  379. package/dist/server/components/command-item/index.css +1 -0
  380. package/dist/server/components/command-item/index.js +10 -2
  381. package/dist/server/components/command-menu/index.css +1 -0
  382. package/dist/server/components/command-menu/index.js +193 -102
  383. package/dist/server/components/command-palette/command-palette.schema.js +2 -3
  384. package/dist/server/components/command-palette/index.css +1 -0
  385. package/dist/server/components/command-palette/index.js +190 -106
  386. package/dist/server/components/confirm-dialog/index.js +9 -3
  387. package/dist/server/components/context-menu/index.css +7 -1
  388. package/dist/server/components/context-menu/index.js +244 -26
  389. package/dist/server/components/context-menu-trigger/index.js +7 -4
  390. package/dist/server/components/copy-button/index.js +1 -6
  391. package/dist/server/components/data-grid/data-grid.schema.js +3 -3
  392. package/dist/server/components/data-grid/index.css +23 -0
  393. package/dist/server/components/data-grid/index.js +9 -7
  394. package/dist/server/components/data-list/data-list.schema.js +7 -10
  395. package/dist/server/components/data-list/index.js +7 -21
  396. package/dist/server/components/data-table/index.css +20 -0
  397. package/dist/server/components/data-table/index.js +26 -16
  398. package/dist/server/components/date-range-field/date-range-field.schema.js +7 -3
  399. package/dist/server/components/date-range-field/index.js +146 -12
  400. package/dist/server/components/diff-viewer/index.js +79 -7
  401. package/dist/server/components/drawer/index.js +260 -193
  402. package/dist/server/components/dropdown/index.css +7 -1
  403. package/dist/server/components/dropdown/index.js +221 -23
  404. package/dist/server/components/dropdown-group/dropdown-group.schema.js +4 -4
  405. package/dist/server/components/dropdown-group/index.js +7 -7
  406. package/dist/server/components/dropdown-item/dropdown-item.schema.js +9 -1
  407. package/dist/server/components/dropdown-item/index.js +12 -7
  408. package/dist/server/components/dropdown-menu/index.js +197 -13
  409. package/dist/server/components/dropdown-trigger/index.js +5 -2
  410. package/dist/server/components/event-stream-viewer/event-stream-viewer.schema.js +83 -10
  411. package/dist/server/components/event-stream-viewer/index.css +323 -0
  412. package/dist/server/components/event-stream-viewer/index.js +406 -139
  413. package/dist/server/components/faceted-filter-bar/index.css +10 -1
  414. package/dist/server/components/faceted-filter-bar/index.js +24 -6
  415. package/dist/server/components/file-upload/index.css +3 -3
  416. package/dist/server/components/floating-action-button/floating-action-button.schema.js +5 -5
  417. package/dist/server/components/floating-action-button/index.css +16 -16
  418. package/dist/server/components/floating-action-button/index.js +5 -5
  419. package/dist/server/components/form-field/index.css +0 -10
  420. package/dist/server/components/form-field/index.js +2 -2
  421. package/dist/server/components/input/index.js +59 -15
  422. package/dist/server/components/input/input.schema.js +6 -1
  423. package/dist/server/components/invocation-rule-builder/index.css +51 -6
  424. package/dist/server/components/invocation-rule-builder/index.js +56 -17
  425. package/dist/server/components/invocation-rule-builder/invocation-rule-builder.schema.js +133 -35
  426. package/dist/server/components/json-schema-editor/index.css +4 -1
  427. package/dist/server/components/json-schema-editor/index.js +282 -52
  428. package/dist/server/components/json-viewer/index.css +7 -1
  429. package/dist/server/components/json-viewer/index.js +83 -11
  430. package/dist/server/components/kanban-board/index.css +42 -3
  431. package/dist/server/components/kanban-board/index.js +7 -6
  432. package/dist/server/components/keyboard-shortcuts/index.css +2 -2
  433. package/dist/server/components/keyboard-shortcuts/index.js +2 -2
  434. package/dist/server/components/label/index.css +0 -10
  435. package/dist/server/components/label/index.js +2 -2
  436. package/dist/server/components/load-more/index.css +12 -4
  437. package/dist/server/components/load-more/index.js +5 -5
  438. package/dist/server/components/load-more/load-more.schema.js +4 -4
  439. package/dist/server/components/locale-provider/index.js +55 -0
  440. package/dist/server/components/locale-provider/locale-provider.schema.js +35 -0
  441. package/dist/server/components/locale-provider/locale-provider.variables.js +12 -0
  442. package/dist/server/components/markdown-editor/index.js +297 -60
  443. package/dist/server/components/markdown-editor/markdown-editor.schema.js +4 -4
  444. package/dist/server/components/masonry/masonry.schema.js +4 -3
  445. package/dist/server/components/matrix-chart/index.js +62 -39
  446. package/dist/server/components/media-controls/index.css +11 -3
  447. package/dist/server/components/media-controls/index.js +7 -7
  448. package/dist/server/components/media-controls/media-controls.schema.js +4 -4
  449. package/dist/server/components/menu-bar/index.css +15 -1
  450. package/dist/server/components/modal/index.js +9 -3
  451. package/dist/server/components/navigation-bar/index.js +3 -3
  452. package/dist/server/components/navigation-bar/navigation-bar.schema.js +2 -2
  453. package/dist/server/components/number-input/index.js +56 -18
  454. package/dist/server/components/number-input/number-input.schema.js +4 -3
  455. package/dist/server/components/payload-inspector/index.css +616 -0
  456. package/dist/server/components/payload-inspector/index.js +181 -22
  457. package/dist/server/components/payload-inspector/payload-inspector.schema.js +27 -15
  458. package/dist/server/components/permission-matrix/index.css +8 -0
  459. package/dist/server/components/phone-input/index.js +21 -3
  460. package/dist/server/components/phone-input/phone-input.schema.js +2 -2
  461. package/dist/server/components/pin-input/index.js +12 -7
  462. package/dist/server/components/pin-input/pin-input.schema.js +9 -2
  463. package/dist/server/components/popover/index.js +9 -3
  464. package/dist/server/components/pricing-card/index.js +22 -7
  465. package/dist/server/components/radio-group/index.css +3 -0
  466. package/dist/server/components/radio-group/index.js +24 -3
  467. package/dist/server/components/radio-group/radio-group.schema.js +3 -3
  468. package/dist/server/components/rating/rating.schema.js +9 -2
  469. package/dist/server/components/review-editor/index.js +426 -80
  470. package/dist/server/components/run-step-timeline/index.css +503 -6
  471. package/dist/server/components/run-step-timeline/index.js +455 -109
  472. package/dist/server/components/run-step-timeline/run-step-timeline.schema.js +351 -21
  473. package/dist/server/components/schema-form/index.css +11 -69
  474. package/dist/server/components/schema-form/index.js +1291 -218
  475. package/dist/server/components/schema-form/schema-form.schema.js +10 -3
  476. package/dist/server/components/scroll-area/index.js +3 -3
  477. package/dist/server/components/scroll-area/scroll-area.schema.js +2 -2
  478. package/dist/server/components/secret-value-field/index.js +4 -4
  479. package/dist/server/components/segmented-control/index.css +15 -1
  480. package/dist/server/components/select/index.css +9 -2
  481. package/dist/server/components/select/index.js +9 -2
  482. package/dist/server/components/selection-popover/index.js +9 -3
  483. package/dist/server/components/share-card/index.css +11 -3
  484. package/dist/server/components/share-card/index.js +1 -5
  485. package/dist/server/components/sheet/index.js +265 -195
  486. package/dist/server/components/sidebar/index.js +274 -207
  487. package/dist/server/components/sidebar/sidebar.schema.js +2 -2
  488. package/dist/server/components/slider/index.css +13 -9
  489. package/dist/server/components/slider/index.js +173 -4
  490. package/dist/server/components/sortable-list/index.css +1 -1
  491. package/dist/server/components/spectrogram/index.js +68 -45
  492. package/dist/server/components/spectrum-chart/index.js +54 -31
  493. package/dist/server/components/speed-dial/index.css +3 -3
  494. package/dist/server/components/speed-dial/index.js +8 -8
  495. package/dist/server/components/speed-dial-action/index.js +6 -6
  496. package/dist/server/components/stat/index.js +26 -4
  497. package/dist/server/components/stat/stat.schema.js +2 -2
  498. package/dist/server/components/stat-group/index.css +1 -1
  499. package/dist/server/components/stat-group/index.js +26 -4
  500. package/dist/server/components/status-dot/index.css +45 -1
  501. package/dist/server/components/status-dot/index.js +35 -7
  502. package/dist/server/components/status-dot/status-dot.schema.js +12 -5
  503. package/dist/server/components/steps/index.css +3 -3
  504. package/dist/server/components/table/index.css +8 -0
  505. package/dist/server/components/table/index.js +22 -16
  506. package/dist/server/components/table-header/index.js +6 -6
  507. package/dist/server/components/table-header/table-header.schema.js +3 -3
  508. package/dist/server/components/table-header-cell/index.js +9 -3
  509. package/dist/server/components/table-row/index.js +7 -7
  510. package/dist/server/components/table-row/table-row.schema.js +3 -3
  511. package/dist/server/components/tabs/index.js +18 -4
  512. package/dist/server/components/tabs/tabs.schema.js +6 -1
  513. package/dist/server/components/textarea/index.css +16 -1
  514. package/dist/server/components/textarea/index.js +9 -2
  515. package/dist/server/components/time-field/index.css +58 -0
  516. package/dist/server/components/time-field/index.js +291 -0
  517. package/dist/server/components/time-field/time-field.schema.js +88 -0
  518. package/dist/server/components/time-field/time-field.variables.js +12 -0
  519. package/dist/server/components/toggle/index.js +40 -7
  520. package/dist/server/components/toggle/toggle.schema.js +11 -2
  521. package/dist/server/components/transfer-list/index.css +16 -0
  522. package/dist/server/components/transfer-list/index.js +37 -11
  523. package/dist/server/components/transfer-list/transfer-list.schema.js +2 -2
  524. package/dist/server/components/tree/index.css +68 -0
  525. package/dist/server/components/tree/index.js +67 -20
  526. package/dist/server/components/tree/tree.schema.js +3 -3
  527. package/dist/server/components/tree-item/index.js +34 -13
  528. package/dist/server/components/tree-item/tree-item.schema.js +5 -5
  529. package/dist/server/components/virtual-list/index.js +36 -13
  530. package/dist/server/components/waveform/index.js +51 -28
  531. package/dist/server/editor/attach.d.ts +2 -2
  532. package/dist/server/editor/attach.js +10 -16
  533. package/dist/server/editor/editor.js +6 -6
  534. package/dist/server/editor/keymap-plugin.d.ts +2 -2
  535. package/dist/server/editor/keymap-plugin.js +4 -4
  536. package/dist/server/editor/types.d.ts +11 -11
  537. package/dist/server/index.css +2033 -1463
  538. package/dist/server/index.js +7203 -5135
  539. package/dist/utilities/attachments.d.ts +6 -6
  540. package/dist/utilities/value-change.d.ts +2 -0
  541. package/package.json +96 -63
  542. package/src/_internal/locale-context.ts +21 -0
  543. package/src/_internal/text-direction.ts +213 -0
  544. package/src/_internal/tree-context.ts +2 -0
  545. package/src/components/_internal/create-command-list-state.svelte.ts +171 -0
  546. package/src/components/_internal/create-sliding-dialog-state.svelte.ts +170 -0
  547. package/src/components/_radio/README.md +1 -1
  548. package/src/components/access-gate/access-gate-inline.svelte +3 -1
  549. package/src/components/alert/README.md +8 -8
  550. package/src/components/alert/alert.css +1 -1
  551. package/src/components/alert/alert.examples.json +4 -4
  552. package/src/components/alert/alert.svelte +3 -5
  553. package/src/components/alert/alert.types.ts +4 -4
  554. package/src/components/approval-card/README.md +92 -0
  555. package/src/components/approval-card/approval-card-state.ts +24 -0
  556. package/src/components/approval-card/approval-card.css +239 -0
  557. package/src/components/approval-card/approval-card.examples.json +25 -0
  558. package/src/components/approval-card/approval-card.svelte +583 -0
  559. package/src/components/approval-card/approval-card.types.ts +180 -0
  560. package/src/components/approval-card/index.ts +16 -0
  561. package/src/components/autocomplete/autocomplete.css +12 -1
  562. package/src/components/autocomplete/autocomplete.svelte +53 -27
  563. package/src/components/badge/README.md +8 -7
  564. package/src/components/badge/badge.svelte +80 -3
  565. package/src/components/badge/badge.types.ts +36 -13
  566. package/src/components/badge/index.ts +1 -1
  567. package/src/components/banner/README.md +2 -2
  568. package/src/components/banner/banner.examples.json +19 -0
  569. package/src/components/banner/banner.svelte +2 -2
  570. package/src/components/banner/banner.types.ts +1 -1
  571. package/src/components/button/button.css +1 -1
  572. package/src/components/callout/callout.examples.json +19 -0
  573. package/src/components/capability-gate/README.md +3 -3
  574. package/src/components/capability-gate/capability-gate.css +15 -2
  575. package/src/components/capability-gate/capability-gate.examples.json +1 -1
  576. package/src/components/capability-gate/capability-gate.svelte +7 -7
  577. package/src/components/capability-gate/capability-gate.types.ts +6 -6
  578. package/src/components/chat/README.md +6 -10
  579. package/src/components/chat/chat.examples.json +8 -8
  580. package/src/components/chat/chat.types.ts +31 -15
  581. package/src/components/chat/container/chat-events.ts +2 -2
  582. package/src/components/chat/container/chat-history-trigger.svelte +9 -1
  583. package/src/components/chat/container/chat.svelte +47 -46
  584. package/src/components/chat/container/use-chat-scroll-state.svelte.ts +21 -18
  585. package/src/components/chat/container/use-chat-unread-state.svelte.ts +19 -19
  586. package/src/components/chat/index.ts +1 -1
  587. package/src/components/chat/input/chat-input.svelte +35 -13
  588. package/src/components/chat/message/image-lightbox.svelte +38 -15
  589. package/src/components/chat/message/message-attachments.svelte +1 -1
  590. package/src/components/chat/message/parts/reasoning-part.svelte +8 -0
  591. package/src/components/chat/message/parts/tool-approval-part.svelte +22 -9
  592. package/src/components/chat-conversation-list/chat-conversation-list.css +13 -0
  593. package/src/components/checkbox/README.md +1 -0
  594. package/src/components/checkbox/checkbox.css +3 -0
  595. package/src/components/checkbox/checkbox.svelte +44 -2
  596. package/src/components/checkbox/checkbox.types.ts +2 -0
  597. package/src/components/checkbox-group/README.md +2 -2
  598. package/src/components/checkbox-group/checkbox-group.css +3 -0
  599. package/src/components/checkbox-group/checkbox-group.examples.json +13 -0
  600. package/src/components/checkbox-group/checkbox-group.svelte +23 -2
  601. package/src/components/checkbox-group/checkbox-group.types.ts +12 -7
  602. package/src/components/choice-grid-item/choice-grid-item.svelte +1 -1
  603. package/src/components/click-away-listener/README.md +2 -2
  604. package/src/components/click-away-listener/click-away-listener.examples.json +1 -1
  605. package/src/components/click-away-listener/click-away-listener.svelte +2 -2
  606. package/src/components/click-away-listener/click-away-listener.types.ts +3 -3
  607. package/src/components/code-block/code-block.css +4 -3
  608. package/src/components/collapsible/README.md +2 -2
  609. package/src/components/collapsible/collapsible.svelte +2 -2
  610. package/src/components/collapsible/collapsible.types.ts +5 -2
  611. package/src/components/color-field/README.md +18 -18
  612. package/src/components/color-field/color-field.svelte +2 -2
  613. package/src/components/color-field/color-field.types.ts +2 -2
  614. package/src/components/color-swatch-picker/color-swatch-picker.examples.json +13 -0
  615. package/src/components/color-swatch-picker/color-swatch-picker.svelte +38 -24
  616. package/src/components/combobox/README.md +2 -1
  617. package/src/components/combobox/combobox.svelte +38 -17
  618. package/src/components/combobox/combobox.types.ts +7 -1
  619. package/src/components/command-item/README.md +13 -11
  620. package/src/components/command-item/command-item.css +10 -0
  621. package/src/components/command-item/command-item.svelte +11 -0
  622. package/src/components/command-item/command-item.types.ts +4 -0
  623. package/src/components/command-menu/command-menu.svelte +21 -102
  624. package/src/components/command-palette/README.md +12 -12
  625. package/src/components/command-palette/command-palette.examples.json +3 -3
  626. package/src/components/command-palette/command-palette.svelte +17 -134
  627. package/src/components/command-palette/command-palette.types.ts +1 -2
  628. package/src/components/context-menu/context-menu.context.ts +2 -0
  629. package/src/components/context-menu/context-menu.svelte +35 -9
  630. package/src/components/context-menu-trigger/context-menu-trigger.svelte +9 -6
  631. package/src/components/copy-button/copy-button.svelte +4 -3
  632. package/src/components/data-grid/README.md +3 -3
  633. package/src/components/data-grid/_internal/column-model.svelte.ts +2 -0
  634. package/src/components/data-grid/data-grid.css +25 -0
  635. package/src/components/data-grid/data-grid.svelte +7 -7
  636. package/src/components/data-grid/data-grid.types.ts +8 -2
  637. package/src/components/data-list/README.md +9 -9
  638. package/src/components/data-list/data-list.examples.json +1 -1
  639. package/src/components/data-list/data-list.svelte +3 -9
  640. package/src/components/data-list/data-list.types.ts +5 -9
  641. package/src/components/data-table/data-table.css +13 -0
  642. package/src/components/data-table/data-table.svelte +13 -3
  643. package/src/components/date-range-field/README.md +9 -8
  644. package/src/components/date-range-field/date-range-field.svelte +193 -19
  645. package/src/components/date-range-field/date-range-field.types.ts +16 -10
  646. package/src/components/date-range-field/index.ts +1 -0
  647. package/src/components/diff-viewer/diff-front-matter.svelte +2 -2
  648. package/src/components/diff-viewer/diff-line.svelte +32 -8
  649. package/src/components/diff-viewer/diff-toolbar.svelte +3 -3
  650. package/src/components/diff-viewer/diff-viewer.svelte +4 -4
  651. package/src/components/diff-viewer/diff-viewer.types.ts +3 -3
  652. package/src/components/diff-viewer/index.ts +1 -1
  653. package/src/components/drawer/drawer.svelte +26 -145
  654. package/src/components/dropdown/dropdown.css +7 -1
  655. package/src/components/dropdown/dropdown.types.ts +3 -0
  656. package/src/components/dropdown-group/README.md +6 -6
  657. package/src/components/dropdown-group/dropdown-group.svelte +8 -8
  658. package/src/components/dropdown-group/dropdown-group.types.ts +4 -4
  659. package/src/components/dropdown-item/README.md +2 -0
  660. package/src/components/dropdown-item/dropdown-item.svelte +14 -11
  661. package/src/components/dropdown-item/dropdown-item.types.ts +5 -0
  662. package/src/components/dropdown-menu/dropdown-menu.svelte +42 -9
  663. package/src/components/dropdown-trigger/dropdown-trigger.svelte +4 -6
  664. package/src/components/event-stream-viewer/README.md +38 -16
  665. package/src/components/event-stream-viewer/event-stream-viewer-keys.ts +74 -0
  666. package/src/components/event-stream-viewer/event-stream-viewer.css +46 -0
  667. package/src/components/event-stream-viewer/event-stream-viewer.examples.json +6 -0
  668. package/src/components/event-stream-viewer/event-stream-viewer.svelte +262 -69
  669. package/src/components/event-stream-viewer/event-stream-viewer.types.ts +130 -3
  670. package/src/components/event-stream-viewer/index.ts +6 -0
  671. package/src/components/faceted-filter-bar/faceted-filter-bar.css +9 -0
  672. package/src/components/faceted-filter-bar/faceted-filter-bar.svelte +31 -5
  673. package/src/components/file-upload/file-upload.css +5 -5
  674. package/src/components/file-upload/file-upload.examples.json +13 -0
  675. package/src/components/floating-action-button/README.md +9 -9
  676. package/src/components/floating-action-button/floating-action-button.css +22 -22
  677. package/src/components/floating-action-button/floating-action-button.examples.json +1 -1
  678. package/src/components/floating-action-button/floating-action-button.svelte +7 -7
  679. package/src/components/floating-action-button/floating-action-button.types.ts +21 -21
  680. package/src/components/floating-action-button/index.ts +1 -1
  681. package/src/components/form-field/form-field.css +3 -13
  682. package/src/components/form-field/form-field.svelte +4 -1
  683. package/src/components/image/image.examples.json +13 -0
  684. package/src/components/input/README.md +16 -15
  685. package/src/components/input/input.examples.json +1 -1
  686. package/src/components/input/input.svelte +65 -28
  687. package/src/components/input/input.types.ts +2 -0
  688. package/src/components/invocation-rule-builder/README.md +14 -14
  689. package/src/components/invocation-rule-builder/index.ts +1 -0
  690. package/src/components/invocation-rule-builder/invocation-rule-builder.css +63 -6
  691. package/src/components/invocation-rule-builder/invocation-rule-builder.svelte +73 -16
  692. package/src/components/invocation-rule-builder/invocation-rule-builder.types.ts +99 -8
  693. package/src/components/json-schema-editor/form-view.svelte +3 -1
  694. package/src/components/json-schema-editor/json-schema-editor-impl.svelte +30 -18
  695. package/src/components/json-schema-editor/json-schema-editor.css +6 -1
  696. package/src/components/json-schema-editor/json-schema-toolbar.svelte +6 -0
  697. package/src/components/json-schema-editor/json-view.svelte +1 -1
  698. package/src/components/json-schema-editor/property-editor.svelte +38 -2
  699. package/src/components/json-schema-editor/property-list-validation.ts +10 -0
  700. package/src/components/json-schema-editor/property-list.svelte +48 -3
  701. package/src/components/json-viewer/_json-viewer-node.svelte +55 -9
  702. package/src/components/json-viewer/json-viewer.css +11 -0
  703. package/src/components/json-viewer/json-viewer.svelte +63 -1
  704. package/src/components/kanban-board/kanban-board.css +56 -3
  705. package/src/components/kanban-board/kanban-board.svelte +10 -3
  706. package/src/components/keyboard-shortcuts/keyboard-shortcuts.css +2 -2
  707. package/src/components/keyboard-shortcuts/keyboard-shortcuts.svelte +1 -1
  708. package/src/components/label/README.md +1 -1
  709. package/src/components/label/label.css +2 -9
  710. package/src/components/label/label.svelte +4 -2
  711. package/src/components/load-more/README.md +4 -4
  712. package/src/components/load-more/load-more.css +13 -5
  713. package/src/components/load-more/load-more.examples.json +2 -2
  714. package/src/components/load-more/load-more.svelte +4 -4
  715. package/src/components/load-more/load-more.types.ts +3 -3
  716. package/src/components/locale-provider/README.md +43 -0
  717. package/src/components/locale-provider/index.ts +5 -0
  718. package/src/components/locale-provider/locale-provider.svelte +40 -0
  719. package/src/components/locale-provider/locale-provider.types.ts +21 -0
  720. package/src/components/markdown-editor/README.md +3 -3
  721. package/src/components/markdown-editor/editor-toolbar/editor-toolbar.svelte +5 -2
  722. package/src/components/markdown-editor/editor-toolbar/link-popover.svelte +13 -0
  723. package/src/components/markdown-editor/editor-toolbar/toolbar-dropdown.svelte +2 -0
  724. package/src/components/markdown-editor/markdown-editor.svelte +14 -12
  725. package/src/components/markdown-editor/markdown-editor.types.ts +4 -4
  726. package/src/components/masonry/README.md +7 -7
  727. package/src/components/masonry/masonry.types.ts +24 -2
  728. package/src/components/matrix-chart/matrix-chart.svelte +7 -21
  729. package/src/components/media-controls/README.md +3 -3
  730. package/src/components/media-controls/media-controls.css +15 -4
  731. package/src/components/media-controls/media-controls.examples.json +1 -1
  732. package/src/components/media-controls/media-controls.svelte +6 -6
  733. package/src/components/media-controls/media-controls.types.ts +10 -7
  734. package/src/components/menu-bar/menu-bar.css +11 -0
  735. package/src/components/menu-bar/menu-bar.svelte +81 -12
  736. package/src/components/navigation-bar/README.md +1 -1
  737. package/src/components/navigation-bar/navigation-bar.examples.json +1 -1
  738. package/src/components/navigation-bar/navigation-bar.svelte +2 -2
  739. package/src/components/navigation-bar/navigation-bar.types.ts +1 -1
  740. package/src/components/number-input/README.md +18 -18
  741. package/src/components/number-input/number-input.examples.json +13 -0
  742. package/src/components/number-input/number-input.svelte +77 -38
  743. package/src/components/number-input/number-input.types.ts +15 -5
  744. package/src/components/pagination/README.md +3 -1
  745. package/src/components/payload-inspector/README.md +11 -11
  746. package/src/components/payload-inspector/index.ts +2 -0
  747. package/src/components/payload-inspector/payload-inspector.css +6 -0
  748. package/src/components/payload-inspector/payload-inspector.svelte +22 -4
  749. package/src/components/payload-inspector/payload-inspector.types.ts +54 -3
  750. package/src/components/permission-matrix/permission-matrix.css +10 -0
  751. package/src/components/phone-input/README.md +1 -1
  752. package/src/components/phone-input/phone-input.svelte +7 -1
  753. package/src/components/phone-input/phone-input.types.ts +3 -2
  754. package/src/components/pin-input/README.md +19 -19
  755. package/src/components/pin-input/pin-input.svelte +16 -12
  756. package/src/components/pin-input/pin-input.types.ts +10 -1
  757. package/src/components/portal/portal.utilities.svelte.ts +4 -1
  758. package/src/components/pricing-card/pricing-card.svelte +26 -1
  759. package/src/components/radio-group/README.md +12 -12
  760. package/src/components/radio-group/radio-group.css +3 -0
  761. package/src/components/radio-group/radio-group.examples.json +3 -3
  762. package/src/components/radio-group/radio-group.svelte +22 -2
  763. package/src/components/radio-group/radio-group.types.ts +6 -2
  764. package/src/components/rating/README.md +18 -18
  765. package/src/components/rating/rating.svelte +0 -8
  766. package/src/components/rating/rating.types.ts +6 -0
  767. package/src/components/review-editor/comment-list.svelte +1 -1
  768. package/src/components/review-editor/index.ts +1 -1
  769. package/src/components/review-editor/review-editor-controls.svelte +8 -3
  770. package/src/components/review-editor/review-editor-impl.svelte +11 -7
  771. package/src/components/review-editor/review-editor-selection-types.ts +1 -1
  772. package/src/components/review-editor/review-editor-selection.svelte.ts +1 -1
  773. package/src/components/review-editor/review-editor-state.svelte.ts +1 -1
  774. package/src/components/review-editor/review-editor-threads.svelte.ts +2 -2
  775. package/src/components/review-editor/review-editor.types.ts +91 -3
  776. package/src/components/review-editor/thread-popover.svelte +1 -1
  777. package/src/components/run-step-timeline/README.md +53 -6
  778. package/src/components/run-step-timeline/index.ts +6 -0
  779. package/src/components/run-step-timeline/run-step-timeline.css +25 -5
  780. package/src/components/run-step-timeline/run-step-timeline.examples.json +3 -3
  781. package/src/components/run-step-timeline/run-step-timeline.svelte +314 -78
  782. package/src/components/run-step-timeline/run-step-timeline.types.ts +190 -3
  783. package/src/components/schema-form/README.md +9 -9
  784. package/src/components/schema-form/index.ts +0 -1
  785. package/src/components/schema-form/schema-form-async.fixture.ts +101 -0
  786. package/src/components/schema-form/schema-form-body.svelte +646 -0
  787. package/src/components/schema-form/schema-form-model.ts +4 -44
  788. package/src/components/schema-form/schema-form-validation.ts +83 -46
  789. package/src/components/schema-form/schema-form.css +12 -74
  790. package/src/components/schema-form/schema-form.examples.json +0 -6
  791. package/src/components/schema-form/schema-form.svelte +30 -598
  792. package/src/components/schema-form/schema-form.types.ts +16 -12
  793. package/src/components/scroll-area/README.md +1 -1
  794. package/src/components/scroll-area/scroll-area.examples.json +3 -3
  795. package/src/components/scroll-area/scroll-area.svelte +5 -5
  796. package/src/components/scroll-area/scroll-area.types.ts +1 -1
  797. package/src/components/secret-value-field/secret-value-field.svelte +10 -6
  798. package/src/components/segmented-control/segmented-control.css +22 -1
  799. package/src/components/segmented-control/segmented-control.examples.json +2 -2
  800. package/src/components/select/select.css +9 -2
  801. package/src/components/select/select.svelte +6 -1
  802. package/src/components/selection-popover/selection-popover.examples.json +1 -1
  803. package/src/components/share-card/share-card.css +15 -4
  804. package/src/components/share-card/share-card.svelte +2 -4
  805. package/src/components/sheet/sheet.svelte +30 -145
  806. package/src/components/shortcut-hint/shortcut-hint.svelte +1 -1
  807. package/src/components/side-navigation/side-navigation.examples.json +1 -1
  808. package/src/components/sidebar/README.md +6 -2
  809. package/src/components/sidebar/sidebar.examples.json +1 -1
  810. package/src/components/sidebar/sidebar.svelte +4 -4
  811. package/src/components/sidebar/sidebar.types.ts +1 -1
  812. package/src/components/slider/slider.css +14 -9
  813. package/src/components/slider/slider.svelte +33 -2
  814. package/src/components/sortable-list/README.md +18 -1
  815. package/src/components/sortable-list/sortable-list.css +1 -1
  816. package/src/components/sortable-list/sortable-list.examples.json +13 -0
  817. package/src/components/spectrogram/spectrogram.examples.json +1 -0
  818. package/src/components/spectrogram/spectrogram.svelte +7 -19
  819. package/src/components/spectrum-chart/spectrum-chart.svelte +8 -20
  820. package/src/components/speed-dial/speed-dial.css +3 -3
  821. package/src/components/speed-dial/speed-dial.examples.json +1 -1
  822. package/src/components/speed-dial/speed-dial.svelte +2 -2
  823. package/src/components/speed-dial-action/speed-dial-action.svelte +1 -1
  824. package/src/components/stacked-list-item/stacked-list-item.examples.json +1 -1
  825. package/src/components/stat/README.md +1 -1
  826. package/src/components/stat/stat.svelte +7 -2
  827. package/src/components/stat/stat.types.ts +2 -2
  828. package/src/components/stat-group/stat-group.css +1 -1
  829. package/src/components/status-dot/README.md +9 -7
  830. package/src/components/status-dot/index.ts +6 -1
  831. package/src/components/status-dot/status-dot.css +45 -1
  832. package/src/components/status-dot/status-dot.examples.json +1 -1
  833. package/src/components/status-dot/status-dot.svelte +57 -8
  834. package/src/components/status-dot/status-dot.types.ts +17 -6
  835. package/src/components/steps/steps.css +3 -3
  836. package/src/components/table/table.css +10 -0
  837. package/src/components/table/table.examples.json +1 -1
  838. package/src/components/table/table.svelte +2 -2
  839. package/src/components/table/table.types.ts +3 -3
  840. package/src/components/table-header/README.md +2 -2
  841. package/src/components/table-header/table-header.svelte +5 -5
  842. package/src/components/table-header/table-header.types.ts +2 -2
  843. package/src/components/table-header-cell/table-header-cell.svelte +13 -2
  844. package/src/components/table-row/README.md +2 -2
  845. package/src/components/table-row/table-row.svelte +6 -6
  846. package/src/components/table-row/table-row.types.ts +6 -6
  847. package/src/components/tabs/README.md +1 -0
  848. package/src/components/tabs/tabs.svelte +11 -3
  849. package/src/components/tabs/tabs.types.ts +2 -0
  850. package/src/components/textarea/textarea.css +16 -1
  851. package/src/components/textarea/textarea.svelte +6 -1
  852. package/src/components/time-field/README.md +60 -0
  853. package/src/components/time-field/index.ts +6 -0
  854. package/src/components/time-field/time-field.css +60 -0
  855. package/src/components/time-field/time-field.examples.json +13 -0
  856. package/src/components/time-field/time-field.svelte +277 -0
  857. package/src/components/time-field/time-field.types.ts +70 -0
  858. package/src/components/toggle/README.md +12 -11
  859. package/src/components/toggle/toggle.svelte +19 -6
  860. package/src/components/toggle/toggle.types.ts +2 -0
  861. package/src/components/transfer-list/README.md +1 -1
  862. package/src/components/transfer-list/transfer-list.css +22 -0
  863. package/src/components/transfer-list/transfer-list.svelte +44 -10
  864. package/src/components/transfer-list/transfer-list.types.ts +5 -2
  865. package/src/components/tree/README.md +2 -2
  866. package/src/components/tree/tree.css +69 -0
  867. package/src/components/tree/tree.examples.json +1 -1
  868. package/src/components/tree/tree.svelte +52 -9
  869. package/src/components/tree/tree.types.ts +2 -2
  870. package/src/components/tree-item/README.md +4 -4
  871. package/src/components/tree-item/tree-item.svelte +42 -12
  872. package/src/components/tree-item/tree-item.types.ts +4 -4
  873. package/src/components/virtual-list/virtual-list.svelte +5 -5
  874. package/src/components/waveform/waveform.svelte +7 -19
  875. package/src/index.ts +40 -16
  876. package/src/styles/components/_field-label.css +20 -0
  877. package/src/styles/components/_input-frame.css +2 -1
  878. package/src/styles/components.css +3 -2
  879. package/src/styles/index.css +1 -0
  880. package/src/styles/tokens-base.css +3 -0
  881. package/src/utilities/attachments.ts +15 -12
  882. package/src/utilities/value-change.ts +11 -0
  883. package/dist/components/connection-indicator/connection-indicator.css +0 -63
  884. package/dist/components/connection-indicator/connection-indicator.svelte.d.ts +0 -18
  885. package/dist/components/connection-indicator/connection-indicator.types.d.ts +0 -14
  886. package/dist/components/connection-indicator/index.d.ts +0 -5
  887. package/dist/components/connection-indicator/index.js +0 -75
  888. package/dist/components/experimental/connection-indicator/index.d.ts +0 -2
  889. package/dist/components/review-editor/review-editor-types.d.ts +0 -77
  890. package/dist/components/subscription-badge/index.d.ts +0 -5
  891. package/dist/components/subscription-badge/index.js +0 -353
  892. package/dist/components/subscription-badge/subscription-badge.css +0 -18
  893. package/dist/components/subscription-badge/subscription-badge.schema.js +0 -47
  894. package/dist/components/subscription-badge/subscription-badge.svelte.d.ts +0 -19
  895. package/dist/components/subscription-badge/subscription-badge.types.d.ts +0 -28
  896. package/dist/server/components/connection-indicator/connection-indicator.schema.js +0 -31
  897. package/dist/server/components/connection-indicator/connection-indicator.variables.js +0 -12
  898. package/dist/server/components/connection-indicator/index.css +0 -60
  899. package/dist/server/components/connection-indicator/index.js +0 -42
  900. package/dist/server/components/experimental/connection-indicator/index.js +0 -23
  901. package/dist/server/components/subscription-badge/index.css +0 -2
  902. package/dist/server/components/subscription-badge/index.js +0 -308
  903. package/dist/server/components/subscription-badge/subscription-badge.schema.js +0 -28
  904. package/dist/server/components/subscription-badge/subscription-badge.variables.js +0 -12
  905. package/src/components/connection-indicator/README.md +0 -41
  906. package/src/components/connection-indicator/connection-indicator.css +0 -63
  907. package/src/components/connection-indicator/connection-indicator.svelte +0 -44
  908. package/src/components/connection-indicator/connection-indicator.types.ts +0 -18
  909. package/src/components/connection-indicator/index.ts +0 -6
  910. package/src/components/experimental/connection-indicator/index.ts +0 -20
  911. package/src/components/review-editor/review-editor-types.ts +0 -92
  912. package/src/components/subscription-badge/README.md +0 -50
  913. package/src/components/subscription-badge/index.ts +0 -6
  914. package/src/components/subscription-badge/subscription-badge.css +0 -18
  915. package/src/components/subscription-badge/subscription-badge.examples.json +0 -19
  916. package/src/components/subscription-badge/subscription-badge.svelte +0 -69
  917. package/src/components/subscription-badge/subscription-badge.types.ts +0 -37
  918. /package/dist/components/{connection-indicator/connection-indicator.schema.d.ts → approval-card/approval-card.schema.d.ts} +0 -0
  919. /package/dist/components/{connection-indicator/connection-indicator.variables.d.ts → approval-card/approval-card.variables.d.ts} +0 -0
  920. /package/dist/components/{subscription-badge/subscription-badge.schema.d.ts → locale-provider/locale-provider.schema.d.ts} +0 -0
  921. /package/dist/components/{subscription-badge/subscription-badge.variables.d.ts → locale-provider/locale-provider.variables.d.ts} +0 -0
@@ -342,7 +342,7 @@ import * as $100 from "svelte/internal/server";
342
342
 
343
343
  // src/components/chat/container/chat.svelte
344
344
  import * as $99 from "svelte/internal/server";
345
- import { onMount, tick as tick3, untrack as untrack4 } from "svelte";
345
+ import { tick as tick4, untrack as untrack4 } from "svelte";
346
346
 
347
347
  // src/components/chat/utilities/conversation.ts
348
348
  function getMessages(conversation, options) {
@@ -612,7 +612,7 @@ function Chat_date_separator($$renderer, $$props) {
612
612
  });
613
613
  }
614
614
  // src/components/chat/message/chat-message.svelte
615
- import * as $35 from "svelte/internal/server";
615
+ import * as $36 from "svelte/internal/server";
616
616
 
617
617
  // ../../node_modules/lucide-svelte/dist/icons/pencil.svelte
618
618
  import * as $7 from "svelte/internal/server";
@@ -738,7 +738,6 @@ function Rotate_ccw($$renderer, $$props) {
738
738
  }
739
739
  // src/components/copy-button/copy-button.svelte
740
740
  import * as $12 from "svelte/internal/server";
741
- import { onDestroy } from "svelte";
742
741
 
743
742
  // ../../node_modules/lucide-svelte/dist/icons/check.svelte
744
743
  import * as $9 from "svelte/internal/server";
@@ -876,10 +875,6 @@ function Copy_button($$renderer, $$props) {
876
875
  copied = false;
877
876
  }, confirmDuration);
878
877
  }
879
- onDestroy(() => {
880
- if (resetTimer)
881
- clearTimeout(resetTimer);
882
- });
883
878
  $$renderer2.push(`<button${$12.attributes({
884
879
  ...rest,
885
880
  type: "button",
@@ -915,7 +910,7 @@ function Copy_button($$renderer, $$props) {
915
910
  }
916
911
 
917
912
  // src/components/chat/message/chat-message-parts-renderer.svelte
918
- import * as $34 from "svelte/internal/server";
913
+ import * as $35 from "svelte/internal/server";
919
914
 
920
915
  // src/components/chat/message/chat-message-parts.ts
921
916
  function toRenderUnits(parts) {
@@ -1598,13 +1593,13 @@ function Suggestion_part($$renderer, $$props) {
1598
1593
  }
1599
1594
 
1600
1595
  // src/components/chat/message/parts/image-part.svelte
1601
- import * as $33 from "svelte/internal/server";
1596
+ import * as $34 from "svelte/internal/server";
1602
1597
 
1603
1598
  // src/components/chat/message/message-attachments.svelte
1604
- import * as $32 from "svelte/internal/server";
1599
+ import * as $33 from "svelte/internal/server";
1605
1600
 
1606
1601
  // src/components/chat/message/image-lightbox.svelte
1607
- import * as $31 from "svelte/internal/server";
1602
+ import * as $32 from "svelte/internal/server";
1608
1603
  import { fade } from "svelte/transition";
1609
1604
 
1610
1605
  // ../../node_modules/lucide-svelte/dist/icons/chevron-left.svelte
@@ -1706,6 +1701,10 @@ function captureFocus() {
1706
1701
  }
1707
1702
 
1708
1703
  // src/utilities/attachments.ts
1704
+ function isInsideEventPath(event, element2) {
1705
+ const path = event.composedPath();
1706
+ return path.some((entry) => entry instanceof Node && element2.contains(entry));
1707
+ }
1709
1708
  function createClickOutside(options) {
1710
1709
  const { handler, enabled = true, eventType = "click", capture = true, ignoreRefs } = options;
1711
1710
  return (node) => {
@@ -1713,17 +1712,19 @@ function createClickOutside(options) {
1713
1712
  const isEnabled = typeof enabled === "function" ? enabled() : enabled;
1714
1713
  if (!isEnabled)
1715
1714
  return;
1715
+ if (event.type === "touchstart" && !event.cancelable)
1716
+ return;
1716
1717
  const target = event.target;
1717
1718
  if (!(target instanceof Node)) {
1718
1719
  handler();
1719
1720
  return;
1720
1721
  }
1721
- if (node.contains(target))
1722
+ if (isInsideEventPath(event, node))
1722
1723
  return;
1723
1724
  if (ignoreRefs) {
1724
1725
  for (const ref of ignoreRefs) {
1725
1726
  const element2 = ref();
1726
- if (element2 && element2.contains(target))
1727
+ if (element2 && isInsideEventPath(event, element2))
1727
1728
  return;
1728
1729
  }
1729
1730
  }
@@ -1802,24 +1803,44 @@ function overflowFade() {
1802
1803
  };
1803
1804
  }
1804
1805
 
1806
+ // src/utilities/use-reduced-motion.svelte.ts
1807
+ import * as $31 from "svelte/internal/server";
1808
+ import { MediaQuery } from "svelte/reactivity";
1809
+ function useReducedMotion() {
1810
+ if (typeof window === "undefined" || typeof window.matchMedia !== "function") {
1811
+ return { current: false };
1812
+ }
1813
+ const query = new MediaQuery("(prefers-reduced-motion: reduce)", false);
1814
+ return {
1815
+ get current() {
1816
+ return query.current;
1817
+ }
1818
+ };
1819
+ }
1820
+
1805
1821
  // src/components/chat/message/image-lightbox.svelte
1806
1822
  function Image_lightbox($$renderer, $$props) {
1807
1823
  $$renderer.component(($$renderer2) => {
1808
1824
  let { images, initialIndex = 0, open = false, onclose } = $$props;
1809
- let currentIndex = 0;
1810
- let previousOpen = false;
1811
- const hasMultiple = $31.derived(() => images.length > 1);
1812
- const currentImage = $31.derived(() => images[currentIndex]);
1813
- const counterText = $31.derived(() => `${currentIndex + 1} of ${images.length}`);
1825
+ const reducedMotion = useReducedMotion();
1826
+ const LIGHTBOX_FADE_MS = 150;
1827
+ const fadeDuration = $32.derived(() => reducedMotion.current ? 0 : LIGHTBOX_FADE_MS);
1828
+ const clampedInitialIndex = $32.derived(() => images.length > 0 ? Math.max(0, Math.min(initialIndex, images.length - 1)) : 0);
1829
+ let navigationIndex = null;
1830
+ const effectiveIndex = $32.derived(() => open ? navigationIndex ?? clampedInitialIndex() : clampedInitialIndex());
1831
+ const hasMultiple = $32.derived(() => images.length > 1);
1832
+ const currentImage = $32.derived(() => images[effectiveIndex()]);
1833
+ const counterText = $32.derived(() => `${effectiveIndex() + 1} of ${images.length}`);
1814
1834
  function close() {
1835
+ navigationIndex = null;
1815
1836
  open = false;
1816
1837
  onclose?.();
1817
1838
  }
1818
1839
  function previous() {
1819
- currentIndex = (currentIndex - 1 + images.length) % images.length;
1840
+ navigationIndex = (effectiveIndex() - 1 + images.length) % images.length;
1820
1841
  }
1821
1842
  function next() {
1822
- currentIndex = (currentIndex + 1) % images.length;
1843
+ navigationIndex = (effectiveIndex() + 1) % images.length;
1823
1844
  }
1824
1845
  function handleOverlayClick(event) {
1825
1846
  if (event.target === event.currentTarget) {
@@ -1859,12 +1880,12 @@ function Image_lightbox($$renderer, $$props) {
1859
1880
  } else {
1860
1881
  $$renderer2.push("<!--[-1-->");
1861
1882
  }
1862
- $$renderer2.push(`<!--]--> <div class="lightbox-image-container svelte-nzg1o2"><img${$31.attr("src", currentImage().src)}${$31.attr("alt", currentImage().alt)} class="lightbox-image svelte-nzg1o2" decoding="async"/></div> `);
1883
+ $$renderer2.push(`<!--]--> <div class="lightbox-image-container svelte-nzg1o2"><img${$32.attr("src", currentImage().src)}${$32.attr("alt", currentImage().alt)} class="lightbox-image svelte-nzg1o2" decoding="async"/></div> `);
1863
1884
  if (hasMultiple()) {
1864
1885
  $$renderer2.push("<!--[0-->");
1865
1886
  $$renderer2.push(`<button type="button" class="lightbox-nav lightbox-nav-next svelte-nzg1o2" aria-label="Next image">`);
1866
1887
  Chevron_right($$renderer2, { size: 24 });
1867
- $$renderer2.push(`<!----></button> <div class="lightbox-counter svelte-nzg1o2" aria-live="polite" aria-atomic="true">${$31.escape(counterText())}</div>`);
1888
+ $$renderer2.push(`<!----></button> <div class="lightbox-counter svelte-nzg1o2" aria-live="polite" aria-atomic="true">${$32.escape(counterText())}</div>`);
1868
1889
  } else {
1869
1890
  $$renderer2.push("<!--[-1-->");
1870
1891
  }
@@ -1873,7 +1894,7 @@ function Image_lightbox($$renderer, $$props) {
1873
1894
  $$renderer2.push("<!--[-1-->");
1874
1895
  }
1875
1896
  $$renderer2.push(`<!--]-->`);
1876
- $31.bind_props($$props, { open });
1897
+ $32.bind_props($$props, { open });
1877
1898
  });
1878
1899
  }
1879
1900
 
@@ -1890,10 +1911,10 @@ function Message_attachments($$renderer, $$props) {
1890
1911
  $$events,
1891
1912
  ...rest
1892
1913
  } = $$props;
1893
- const validImages = $32.derived(() => images.filter((item) => item.type === "image").map((image) => ({ image, url: getImageUrlFromContent(image) })).filter((item) => item.url !== ""));
1914
+ const validImages = $33.derived(() => images.filter((item) => item.type === "image").map((image) => ({ image, url: getImageUrlFromContent(image) })).filter((item) => item.url !== ""));
1894
1915
  let lightboxOpen = false;
1895
1916
  let lightboxIndex = 0;
1896
- const lightboxImages = $32.derived(() => validImages().map(({ image, url }, index) => ({ src: url, alt: getAltText(image, index + 1) })));
1917
+ const lightboxImages = $33.derived(() => validImages().map(({ image, url }, index) => ({ src: url, alt: getAltText(image, index + 1) })));
1897
1918
  function getImageUrlFromContent(image) {
1898
1919
  if (image.type !== "image")
1899
1920
  return "";
@@ -1919,22 +1940,22 @@ function Message_attachments($$renderer, $$props) {
1919
1940
  let $$settled = true;
1920
1941
  let $$inner_renderer;
1921
1942
  function $$render_inner($$renderer3) {
1922
- $$renderer3.push(`<div${$32.attributes({
1923
- class: $32.clsx(classNames("message-attachments", className)),
1943
+ $$renderer3.push(`<div${$33.attributes({
1944
+ class: $33.clsx(classNames("message-attachments", className)),
1924
1945
  role: "list",
1925
1946
  "aria-label": "Message attachments",
1926
1947
  "data-count": validImages().length,
1927
1948
  ...rest
1928
1949
  }, "svelte-mmlgnv")}><!--[-->`);
1929
- const each_array = $32.ensure_array_like(validImages());
1950
+ const each_array = $33.ensure_array_like(validImages());
1930
1951
  for (let loopIndex = 0, $$length = each_array.length;loopIndex < $$length; loopIndex++) {
1931
1952
  let { image, url } = each_array[loopIndex];
1932
1953
  const displayIndex = loopIndex + 1;
1933
1954
  const alt = getAltText(image, displayIndex);
1934
- $$renderer3.push(`<figure class="message-attachment svelte-mmlgnv" role="listitem"><button type="button" class="message-attachment-button svelte-mmlgnv"${$32.attr("aria-label", `View image: ${alt}`)}><img${$32.attr("src", url)}${$32.attr("alt", alt)}${$32.attr("loading", loading)} decoding="async" class="message-attachment-image svelte-mmlgnv" onload="this.__e=event" onerror="this.__e=event"/></button> `);
1955
+ $$renderer3.push(`<figure class="message-attachment svelte-mmlgnv" role="listitem"><button type="button" class="message-attachment-button svelte-mmlgnv"${$33.attr("aria-label", `View image: ${alt}`)}><img${$33.attr("src", url)}${$33.attr("alt", alt)}${$33.attr("loading", loading)} decoding="async" class="message-attachment-image svelte-mmlgnv" onload="this.__e=event" onerror="this.__e=event"/></button> `);
1935
1956
  if (alt && alt !== `Image attachment ${displayIndex}`) {
1936
1957
  $$renderer3.push("<!--[0-->");
1937
- $$renderer3.push(`<figcaption class="sr-only svelte-mmlgnv">${$32.escape(alt)}</figcaption>`);
1958
+ $$renderer3.push(`<figcaption class="sr-only svelte-mmlgnv">${$33.escape(alt)}</figcaption>`);
1938
1959
  } else {
1939
1960
  $$renderer3.push("<!--[-1-->");
1940
1961
  }
@@ -1967,7 +1988,7 @@ function Message_attachments($$renderer, $$props) {
1967
1988
  function Image_part($$renderer, $$props) {
1968
1989
  $$renderer.component(($$renderer2) => {
1969
1990
  let { parts } = $$props;
1970
- const images = $33.derived(() => parts.map((part) => part.image));
1991
+ const images = $34.derived(() => parts.map((part) => part.image));
1971
1992
  Message_attachments($$renderer2, { images: images() });
1972
1993
  });
1973
1994
  }
@@ -1986,7 +2007,7 @@ function Chat_message_parts_renderer($$renderer, $$props) {
1986
2007
  onreasoning,
1987
2008
  onsuggestionselect
1988
2009
  } = $$props;
1989
- const units = $34.derived(() => toRenderUnits(parts));
2010
+ const units = $35.derived(() => toRenderUnits(parts));
1990
2011
  let activeIndex = 0;
1991
2012
  function activeChipIndex(count) {
1992
2013
  return count === 0 ? 0 : Math.min(activeIndex, count - 1);
@@ -2035,7 +2056,7 @@ function Chat_message_parts_renderer($$renderer, $$props) {
2035
2056
  $$renderer3.push(`<!--]-->`);
2036
2057
  }
2037
2058
  $$renderer2.push(`<!--[-->`);
2038
- const each_array = $34.ensure_array_like(units());
2059
+ const each_array = $35.ensure_array_like(units());
2039
2060
  for (let $$index_2 = 0, $$length = each_array.length;$$index_2 < $$length; $$index_2++) {
2040
2061
  let unit = each_array[$$index_2];
2041
2062
  if (unit.kind === "images") {
@@ -2044,7 +2065,7 @@ function Chat_message_parts_renderer($$renderer, $$props) {
2044
2065
  } else if (unit.kind === "steps") {
2045
2066
  $$renderer2.push("<!--[1-->");
2046
2067
  $$renderer2.push(`<ol class="chat-step-list svelte-16hfc7o" aria-label="Steps"><!--[-->`);
2047
- const each_array_1 = $34.ensure_array_like(unit.steps);
2068
+ const each_array_1 = $35.ensure_array_like(unit.steps);
2048
2069
  for (let $$index = 0, $$length2 = each_array_1.length;$$index < $$length2; $$index++) {
2049
2070
  let step = each_array_1[$$index];
2050
2071
  Step_part($$renderer2, { part: step });
@@ -2053,7 +2074,7 @@ function Chat_message_parts_renderer($$renderer, $$props) {
2053
2074
  } else if (unit.kind === "suggestions") {
2054
2075
  $$renderer2.push("<!--[2-->");
2055
2076
  $$renderer2.push(`<div class="chat-suggestions svelte-16hfc7o" role="toolbar" aria-label="Suggested replies" data-cinder-suggested-replies=""><!--[-->`);
2056
- const each_array_2 = $34.ensure_array_like(unit.suggestions);
2077
+ const each_array_2 = $35.ensure_array_like(unit.suggestions);
2057
2078
  for (let index = 0, $$length2 = each_array_2.length;index < $$length2; index++) {
2058
2079
  let suggestion = each_array_2[index];
2059
2080
  Suggestion_part($$renderer2, {
@@ -2121,7 +2142,7 @@ function Chat_message($$renderer, $$props) {
2121
2142
  } = $$props;
2122
2143
  let isEditing = false;
2123
2144
  let editContent = "";
2124
- const canEdit = $35.derived(() => message.role === "user" && onedit !== undefined && !streaming);
2145
+ const canEdit = $36.derived(() => message.role === "user" && onedit !== undefined && !streaming);
2125
2146
  function startEditing() {
2126
2147
  editContent = textContent();
2127
2148
  isEditing = true;
@@ -2148,17 +2169,17 @@ function Chat_message($$renderer, $$props) {
2148
2169
  saveEdit();
2149
2170
  }
2150
2171
  }
2151
- const deliveryStatus = $35.derived(() => message.metadata?.["_deliveryStatus"]);
2152
- const isFailed = $35.derived(() => deliveryStatus() === "failed");
2153
- const textContent = $35.derived(() => getMessageText(message));
2154
- const roleLabel = $35.derived(() => ROLE_LABELS[message.role] ?? message.role);
2155
- const isToolCall = $35.derived(() => message.role === "tool-call");
2156
- const toolPair = $35.derived(() => {
2172
+ const deliveryStatus = $36.derived(() => message.metadata?.["_deliveryStatus"]);
2173
+ const isFailed = $36.derived(() => deliveryStatus() === "failed");
2174
+ const textContent = $36.derived(() => getMessageText(message));
2175
+ const roleLabel = $36.derived(() => ROLE_LABELS[message.role] ?? message.role);
2176
+ const isToolCall = $36.derived(() => message.role === "tool-call");
2177
+ const toolPair = $36.derived(() => {
2157
2178
  if (!isToolCall() || !message.toolCall)
2158
2179
  return null;
2159
2180
  return toolCallPairs.find((pair) => pair.call.id === message.toolCall?.id) ?? null;
2160
2181
  });
2161
- const messageParts = $35.derived(() => deriveMessageParts(message, {
2182
+ const messageParts = $36.derived(() => deriveMessageParts(message, {
2162
2183
  toolCallPair: toolPair() ?? undefined,
2163
2184
  overrideContent,
2164
2185
  streaming,
@@ -2169,25 +2190,25 @@ function Chat_message($$renderer, $$props) {
2169
2190
  steps,
2170
2191
  suggestions
2171
2192
  }));
2172
- const hasMarkdownBody = $35.derived(() => messageParts().some((part) => part.type === "markdown"));
2173
- const bodyParts = $35.derived(() => messageParts().filter((part) => part.type !== "image"));
2174
- const imageParts = $35.derived(() => messageParts().filter((part) => part.type === "image"));
2193
+ const hasMarkdownBody = $36.derived(() => messageParts().some((part) => part.type === "markdown"));
2194
+ const bodyParts = $36.derived(() => messageParts().filter((part) => part.type !== "image"));
2195
+ const imageParts = $36.derived(() => messageParts().filter((part) => part.type === "image"));
2175
2196
  const TRUNCATE_THRESHOLD = 500;
2176
- const messageId = $35.derived(() => `message-${message.id}`);
2177
- const roleId = $35.derived(() => `${messageId()}-role`);
2197
+ const messageId = $36.derived(() => `message-${message.id}`);
2198
+ const roleId = $36.derived(() => `${messageId()}-role`);
2178
2199
  function toggleExpanded() {
2179
2200
  expanded = !expanded;
2180
2201
  onexpandedchange?.(expanded);
2181
2202
  }
2182
- $$renderer2.push(`<div${$35.attributes({
2183
- class: $35.clsx(classNames("chat-message-wrapper", className)),
2203
+ $$renderer2.push(`<div${$36.attributes({
2204
+ class: $36.clsx(classNames("chat-message-wrapper", className)),
2184
2205
  "data-role": message.role,
2185
2206
  "data-hidden": message.hidden || undefined,
2186
2207
  "data-failed": isFailed() || undefined,
2187
2208
  "data-search-match": searchMatch || undefined,
2188
2209
  "data-tool-pair": isToolCall() && toolPair() ? "" : undefined,
2189
2210
  ...rest
2190
- }, "svelte-1sxbmxn")}><article${$35.attr("id", messageId())} class="chat-message svelte-1sxbmxn"${$35.attr("aria-labelledby", isToolCall() && toolPair() ? undefined : roleId())}${$35.attr("aria-label", isToolCall() && toolPair() ? `Tool call: ${toolPair().call.name}` : undefined)}${$35.attr("tabindex", tabindex)}><header class="chat-message-header svelte-1sxbmxn"><span${$35.attr("id", roleId())} class="chat-message-role svelte-1sxbmxn">${$35.escape(roleLabel())}</span> `);
2211
+ }, "svelte-1sxbmxn")}><article${$36.attr("id", messageId())} class="chat-message svelte-1sxbmxn"${$36.attr("aria-labelledby", isToolCall() && toolPair() ? undefined : roleId())}${$36.attr("aria-label", isToolCall() && toolPair() ? `Tool call: ${toolPair().call.name}` : undefined)}${$36.attr("tabindex", tabindex)}><header class="chat-message-header svelte-1sxbmxn"><span${$36.attr("id", roleId())} class="chat-message-role svelte-1sxbmxn">${$36.escape(roleLabel())}</span> `);
2191
2212
  if (status) {
2192
2213
  $$renderer2.push("<!--[0-->");
2193
2214
  $$renderer2.push(`<div class="chat-message-status svelte-1sxbmxn">`);
@@ -2199,9 +2220,9 @@ function Chat_message($$renderer, $$props) {
2199
2220
  $$renderer2.push(`<!--]--></header> <div class="chat-message-body svelte-1sxbmxn">`);
2200
2221
  if (isEditing) {
2201
2222
  $$renderer2.push("<!--[0-->");
2202
- $$renderer2.push(`<div class="chat-message-edit svelte-1sxbmxn"><textarea class="chat-message-edit-textarea svelte-1sxbmxn" autofocus="" aria-label="Edit message content"${$35.attr("rows", Math.min(Math.max(editContent.split(`
2223
+ $$renderer2.push(`<div class="chat-message-edit svelte-1sxbmxn"><textarea class="chat-message-edit-textarea svelte-1sxbmxn" autofocus="" aria-label="Edit message content"${$36.attr("rows", Math.min(Math.max(editContent.split(`
2203
2224
  `).length, 2), 10))}>`);
2204
- const $$body = $35.escape(editContent);
2225
+ const $$body = $36.escape(editContent);
2205
2226
  if ($$body) {
2206
2227
  $$renderer2.push(`${$$body}`);
2207
2228
  } else {}
@@ -2222,7 +2243,7 @@ function Chat_message($$renderer, $$props) {
2222
2243
  $$renderer2.push(`<!----> `);
2223
2244
  if (hasMarkdownBody() && textContent().length > TRUNCATE_THRESHOLD) {
2224
2245
  $$renderer2.push("<!--[0-->");
2225
- $$renderer2.push(`<button type="button" class="chat-message-expand svelte-1sxbmxn">${$35.escape(expanded ? "Show less" : "Show more")}</button>`);
2246
+ $$renderer2.push(`<button type="button" class="chat-message-expand svelte-1sxbmxn">${$36.escape(expanded ? "Show less" : "Show more")}</button>`);
2226
2247
  } else {
2227
2248
  $$renderer2.push("<!--[-1-->");
2228
2249
  }
@@ -2283,7 +2304,7 @@ function Chat_message($$renderer, $$props) {
2283
2304
  $$renderer2.push("<!--[-1-->");
2284
2305
  }
2285
2306
  $$renderer2.push(`<!--]--></div>`);
2286
- $35.bind_props($$props, { expanded });
2307
+ $36.bind_props($$props, { expanded });
2287
2308
  });
2288
2309
  }
2289
2310
  // src/components/chat/input/attachment-kind.ts
@@ -2306,7 +2327,7 @@ function deriveAttachmentKind(mimeType) {
2306
2327
  return "document";
2307
2328
  }
2308
2329
  // src/components/chat/input/chat-attachment-preview.svelte
2309
- import * as $38 from "svelte/internal/server";
2330
+ import * as $39 from "svelte/internal/server";
2310
2331
 
2311
2332
  // src/utilities/format-bytes.ts
2312
2333
  function formatBytes(bytes) {
@@ -2318,9 +2339,9 @@ function formatBytes(bytes) {
2318
2339
  }
2319
2340
 
2320
2341
  // ../../node_modules/lucide-svelte/dist/icons/file-code.svelte
2321
- import * as $36 from "svelte/internal/server";
2342
+ import * as $37 from "svelte/internal/server";
2322
2343
  function File_code($$renderer, $$props) {
2323
- const $$sanitized_props = $36.sanitize_props($$props);
2344
+ const $$sanitized_props = $37.sanitize_props($$props);
2324
2345
  const iconNode = [
2325
2346
  ["path", { d: "M10 12.5 8 15l2 2.5" }],
2326
2347
  ["path", { d: "m14 12.5 2 2.5-2 2.5" }],
@@ -2332,14 +2353,14 @@ function File_code($$renderer, $$props) {
2332
2353
  }
2333
2354
  ]
2334
2355
  ];
2335
- Icon($$renderer, $36.spread_props([
2356
+ Icon($$renderer, $37.spread_props([
2336
2357
  { name: "file-code" },
2337
2358
  $$sanitized_props,
2338
2359
  {
2339
2360
  iconNode,
2340
2361
  children: ($$renderer2) => {
2341
2362
  $$renderer2.push(`<!--[-->`);
2342
- $36.slot($$renderer2, $$props, "default", {}, null);
2363
+ $37.slot($$renderer2, $$props, "default", {}, null);
2343
2364
  $$renderer2.push(`<!--]-->`);
2344
2365
  },
2345
2366
  $$slots: { default: true }
@@ -2347,9 +2368,9 @@ function File_code($$renderer, $$props) {
2347
2368
  ]));
2348
2369
  }
2349
2370
  // ../../node_modules/lucide-svelte/dist/icons/file-text.svelte
2350
- import * as $37 from "svelte/internal/server";
2371
+ import * as $38 from "svelte/internal/server";
2351
2372
  function File_text($$renderer, $$props) {
2352
- const $$sanitized_props = $37.sanitize_props($$props);
2373
+ const $$sanitized_props = $38.sanitize_props($$props);
2353
2374
  const iconNode = [
2354
2375
  [
2355
2376
  "path",
@@ -2362,14 +2383,14 @@ function File_text($$renderer, $$props) {
2362
2383
  ["path", { d: "M16 13H8" }],
2363
2384
  ["path", { d: "M16 17H8" }]
2364
2385
  ];
2365
- Icon($$renderer, $37.spread_props([
2386
+ Icon($$renderer, $38.spread_props([
2366
2387
  { name: "file-text" },
2367
2388
  $$sanitized_props,
2368
2389
  {
2369
2390
  iconNode,
2370
2391
  children: ($$renderer2) => {
2371
2392
  $$renderer2.push(`<!--[-->`);
2372
- $37.slot($$renderer2, $$props, "default", {}, null);
2393
+ $38.slot($$renderer2, $$props, "default", {}, null);
2373
2394
  $$renderer2.push(`<!--]-->`);
2374
2395
  },
2375
2396
  $$slots: { default: true }
@@ -2380,8 +2401,8 @@ function File_text($$renderer, $$props) {
2380
2401
  function Chat_attachment_preview($$renderer, $$props) {
2381
2402
  $$renderer.component(($$renderer2) => {
2382
2403
  let { attachment, class: className } = $$props;
2383
- const extension = $38.derived(() => attachment.file.name.includes(".") ? attachment.file.name.slice(attachment.file.name.lastIndexOf(".")) : "");
2384
- const truncatedName = $38.derived(() => {
2404
+ const extension = $39.derived(() => attachment.file.name.includes(".") ? attachment.file.name.slice(attachment.file.name.lastIndexOf(".")) : "");
2405
+ const truncatedName = $39.derived(() => {
2385
2406
  const name = attachment.file.name;
2386
2407
  const maxLength = 18;
2387
2408
  if (name.length <= maxLength)
@@ -2393,10 +2414,10 @@ function Chat_attachment_preview($$renderer, $$props) {
2393
2414
  return name.slice(0, maxLength - 1) + "…";
2394
2415
  return base.slice(0, availableLength) + "…" + ext;
2395
2416
  });
2396
- $$renderer2.push(`<div${$38.attr_class($38.clsx(classNames("chat-attachment-preview", className)), "svelte-1svhxp5")}${$38.attr("data-kind", attachment.kind)}${$38.attr("data-error", attachment.status === "error" || undefined)}${$38.attr("data-pending", attachment.status === "pending" || undefined)}>`);
2417
+ $$renderer2.push(`<div${$39.attr_class($39.clsx(classNames("chat-attachment-preview", className)), "svelte-1svhxp5")}${$39.attr("data-kind", attachment.kind)}${$39.attr("data-error", attachment.status === "error" || undefined)}${$39.attr("data-pending", attachment.status === "pending" || undefined)}>`);
2397
2418
  if (attachment.kind === "image") {
2398
2419
  $$renderer2.push("<!--[0-->");
2399
- $$renderer2.push(`<img${$38.attr("src", attachment.previewUrl)}${$38.attr("alt", attachment.file.name)} class="chat-attachment-preview-image svelte-1svhxp5"/>`);
2420
+ $$renderer2.push(`<img${$39.attr("src", attachment.previewUrl)}${$39.attr("alt", attachment.file.name)} class="chat-attachment-preview-image svelte-1svhxp5"/>`);
2400
2421
  } else {
2401
2422
  $$renderer2.push("<!--[-1-->");
2402
2423
  $$renderer2.push(`<div class="chat-attachment-preview-file svelte-1svhxp5"><div class="chat-attachment-preview-icon svelte-1svhxp5">`);
@@ -2407,19 +2428,19 @@ function Chat_attachment_preview($$renderer, $$props) {
2407
2428
  $$renderer2.push("<!--[-1-->");
2408
2429
  File_text($$renderer2, { class: "icon-sm" });
2409
2430
  }
2410
- $$renderer2.push(`<!--]--></div> <div class="chat-attachment-preview-info svelte-1svhxp5"><span class="chat-attachment-preview-name svelte-1svhxp5"${$38.attr("title", attachment.file.name)}>${$38.escape(truncatedName())}</span> <span class="chat-attachment-preview-meta svelte-1svhxp5">`);
2431
+ $$renderer2.push(`<!--]--></div> <div class="chat-attachment-preview-info svelte-1svhxp5"><span class="chat-attachment-preview-name svelte-1svhxp5"${$39.attr("title", attachment.file.name)}>${$39.escape(truncatedName())}</span> <span class="chat-attachment-preview-meta svelte-1svhxp5">`);
2411
2432
  if (extension()) {
2412
2433
  $$renderer2.push("<!--[0-->");
2413
- $$renderer2.push(`<span class="chat-attachment-preview-ext svelte-1svhxp5">${$38.escape(extension())}</span>`);
2434
+ $$renderer2.push(`<span class="chat-attachment-preview-ext svelte-1svhxp5">${$39.escape(extension())}</span>`);
2414
2435
  } else {
2415
2436
  $$renderer2.push("<!--[-1-->");
2416
2437
  }
2417
- $$renderer2.push(`<!--]--> <span class="chat-attachment-preview-size svelte-1svhxp5">${$38.escape(formatBytes(attachment.file.size))}</span></span></div></div>`);
2438
+ $$renderer2.push(`<!--]--> <span class="chat-attachment-preview-size svelte-1svhxp5">${$39.escape(formatBytes(attachment.file.size))}</span></span></div></div>`);
2418
2439
  }
2419
2440
  $$renderer2.push(`<!--]--> `);
2420
2441
  if (attachment.status === "error") {
2421
2442
  $$renderer2.push("<!--[0-->");
2422
- $$renderer2.push(`<span class="chat-attachment-preview-error-badge svelte-1svhxp5"${$38.attr("aria-label", attachment.error ?? "Attachment error")}>!</span>`);
2443
+ $$renderer2.push(`<span class="chat-attachment-preview-error-badge svelte-1svhxp5"${$39.attr("aria-label", attachment.error ?? "Attachment error")}>!</span>`);
2423
2444
  } else {
2424
2445
  $$renderer2.push("<!--[-1-->");
2425
2446
  }
@@ -2434,11 +2455,11 @@ function Chat_attachment_preview($$renderer, $$props) {
2434
2455
  });
2435
2456
  }
2436
2457
  // src/components/chat/input/chat-input.svelte
2437
- import * as $78 from "svelte/internal/server";
2438
- import { onDestroy as onDestroy3 } from "svelte";
2458
+ import * as $79 from "svelte/internal/server";
2459
+ import { onDestroy as onDestroy2 } from "svelte";
2439
2460
 
2440
2461
  // src/utilities/use-announcer.svelte.ts
2441
- import * as $39 from "svelte/internal/server";
2462
+ import * as $40 from "svelte/internal/server";
2442
2463
  function useAnnouncer(options) {
2443
2464
  const { clearDelay = 1000, debounceMs = 0 } = options ?? {};
2444
2465
  let message = "";
@@ -2533,21 +2554,21 @@ function useStableId(seed) {
2533
2554
  }
2534
2555
 
2535
2556
  // ../../node_modules/lucide-svelte/dist/icons/arrow-up.svelte
2536
- import * as $40 from "svelte/internal/server";
2557
+ import * as $41 from "svelte/internal/server";
2537
2558
  function Arrow_up($$renderer, $$props) {
2538
- const $$sanitized_props = $40.sanitize_props($$props);
2559
+ const $$sanitized_props = $41.sanitize_props($$props);
2539
2560
  const iconNode = [
2540
2561
  ["path", { d: "m5 12 7-7 7 7" }],
2541
2562
  ["path", { d: "M12 19V5" }]
2542
2563
  ];
2543
- Icon($$renderer, $40.spread_props([
2564
+ Icon($$renderer, $41.spread_props([
2544
2565
  { name: "arrow-up" },
2545
2566
  $$sanitized_props,
2546
2567
  {
2547
2568
  iconNode,
2548
2569
  children: ($$renderer2) => {
2549
2570
  $$renderer2.push(`<!--[-->`);
2550
- $40.slot($$renderer2, $$props, "default", {}, null);
2571
+ $41.slot($$renderer2, $$props, "default", {}, null);
2551
2572
  $$renderer2.push(`<!--]-->`);
2552
2573
  },
2553
2574
  $$slots: { default: true }
@@ -2555,9 +2576,9 @@ function Arrow_up($$renderer, $$props) {
2555
2576
  ]));
2556
2577
  }
2557
2578
  // ../../node_modules/lucide-svelte/dist/icons/paperclip.svelte
2558
- import * as $41 from "svelte/internal/server";
2579
+ import * as $42 from "svelte/internal/server";
2559
2580
  function Paperclip($$renderer, $$props) {
2560
- const $$sanitized_props = $41.sanitize_props($$props);
2581
+ const $$sanitized_props = $42.sanitize_props($$props);
2561
2582
  const iconNode = [
2562
2583
  ["path", { d: "M13.234 20.252 21 12.3" }],
2563
2584
  [
@@ -2567,14 +2588,14 @@ function Paperclip($$renderer, $$props) {
2567
2588
  }
2568
2589
  ]
2569
2590
  ];
2570
- Icon($$renderer, $41.spread_props([
2591
+ Icon($$renderer, $42.spread_props([
2571
2592
  { name: "paperclip" },
2572
2593
  $$sanitized_props,
2573
2594
  {
2574
2595
  iconNode,
2575
2596
  children: ($$renderer2) => {
2576
2597
  $$renderer2.push(`<!--[-->`);
2577
- $41.slot($$renderer2, $$props, "default", {}, null);
2598
+ $42.slot($$renderer2, $$props, "default", {}, null);
2578
2599
  $$renderer2.push(`<!--]-->`);
2579
2600
  },
2580
2601
  $$slots: { default: true }
@@ -2582,23 +2603,23 @@ function Paperclip($$renderer, $$props) {
2582
2603
  ]));
2583
2604
  }
2584
2605
  // ../../node_modules/lucide-svelte/dist/icons/square.svelte
2585
- import * as $42 from "svelte/internal/server";
2606
+ import * as $43 from "svelte/internal/server";
2586
2607
  function Square($$renderer, $$props) {
2587
- const $$sanitized_props = $42.sanitize_props($$props);
2608
+ const $$sanitized_props = $43.sanitize_props($$props);
2588
2609
  const iconNode = [
2589
2610
  [
2590
2611
  "rect",
2591
2612
  { width: "18", height: "18", x: "3", y: "3", rx: "2" }
2592
2613
  ]
2593
2614
  ];
2594
- Icon($$renderer, $42.spread_props([
2615
+ Icon($$renderer, $43.spread_props([
2595
2616
  { name: "square" },
2596
2617
  $$sanitized_props,
2597
2618
  {
2598
2619
  iconNode,
2599
2620
  children: ($$renderer2) => {
2600
2621
  $$renderer2.push(`<!--[-->`);
2601
- $42.slot($$renderer2, $$props, "default", {}, null);
2622
+ $43.slot($$renderer2, $$props, "default", {}, null);
2602
2623
  $$renderer2.push(`<!--]-->`);
2603
2624
  },
2604
2625
  $$slots: { default: true }
@@ -2606,7 +2627,7 @@ function Square($$renderer, $$props) {
2606
2627
  ]));
2607
2628
  }
2608
2629
  // src/components/button/button.svelte
2609
- import * as $43 from "svelte/internal/server";
2630
+ import * as $44 from "svelte/internal/server";
2610
2631
  function Button($$renderer, $$props) {
2611
2632
  $$renderer.component(($$renderer2) => {
2612
2633
  const {
@@ -2633,23 +2654,23 @@ function Button($$renderer, $$props) {
2633
2654
  $$events,
2634
2655
  ...rest
2635
2656
  } = $$props;
2636
- const mergedClassName = $43.derived(() => classNames("cinder-button", customClassName));
2637
- const dataAttributes = $43.derived(() => ({
2657
+ const mergedClassName = $44.derived(() => classNames("cinder-button", customClassName));
2658
+ const dataAttributes = $44.derived(() => ({
2638
2659
  "data-cinder-variant": variant,
2639
2660
  "data-cinder-size": size,
2640
2661
  "data-cinder-full-width": fullWidth ? "" : undefined,
2641
2662
  "data-cinder-loading": loading ? "" : undefined,
2642
2663
  "data-cinder-icon-only": iconOnly ? "" : undefined
2643
2664
  }));
2644
- const resolvedAriaDisabled = $43.derived(() => loading ? "true" : consumerAriaDisabled);
2645
- const resolvedAriaBusy = $43.derived(() => loading ? "true" : consumerAriaBusy);
2646
- const resolvedAriaLabel = $43.derived(() => typeof ariaLabel === "string" && ariaLabel.trim().length > 0 ? ariaLabel : undefined);
2647
- const resolvedAriaLabelledBy = $43.derived(() => typeof ariaLabelledBy === "string" && ariaLabelledBy.trim().length > 0 ? ariaLabelledBy : undefined);
2665
+ const resolvedAriaDisabled = $44.derived(() => loading ? "true" : consumerAriaDisabled);
2666
+ const resolvedAriaBusy = $44.derived(() => loading ? "true" : consumerAriaBusy);
2667
+ const resolvedAriaLabel = $44.derived(() => typeof ariaLabel === "string" && ariaLabel.trim().length > 0 ? ariaLabel : undefined);
2668
+ const resolvedAriaLabelledBy = $44.derived(() => typeof ariaLabelledBy === "string" && ariaLabelledBy.trim().length > 0 ? ariaLabelledBy : undefined);
2648
2669
  const anchorAttributes = rest;
2649
2670
  const buttonAttributes = rest;
2650
- const anchorTabIndex = $43.derived(() => rest.tabindex);
2651
- const buttonType = $43.derived(() => rest.type);
2652
- const buttonDisabled = $43.derived(() => rest.disabled ?? false);
2671
+ const anchorTabIndex = $44.derived(() => rest.tabindex);
2672
+ const buttonType = $44.derived(() => rest.type);
2673
+ const buttonDisabled = $44.derived(() => rest.disabled ?? false);
2653
2674
  function handleClick(event) {
2654
2675
  if (loading) {
2655
2676
  event.preventDefault();
@@ -2673,7 +2694,7 @@ function Button($$renderer, $$props) {
2673
2694
  $$renderer3.push("<!--[0-->");
2674
2695
  if (!resolvedAriaLabel() && !resolvedAriaLabelledBy() && label) {
2675
2696
  $$renderer3.push("<!--[0-->");
2676
- $$renderer3.push(`<span class="cinder-sr-only">${$43.escape(label)}</span>`);
2697
+ $$renderer3.push(`<span class="cinder-sr-only">${$44.escape(label)}</span>`);
2677
2698
  } else {
2678
2699
  $$renderer3.push("<!--[-1-->");
2679
2700
  }
@@ -2693,7 +2714,7 @@ function Button($$renderer, $$props) {
2693
2714
  $$renderer3.push(`<!---->`);
2694
2715
  } else {
2695
2716
  $$renderer3.push("<!--[-1-->");
2696
- $$renderer3.push(`${$43.escape(label)}`);
2717
+ $$renderer3.push(`${$44.escape(label)}`);
2697
2718
  }
2698
2719
  $$renderer3.push(`<!--]--> `);
2699
2720
  if (trailingIcon) {
@@ -2708,11 +2729,11 @@ function Button($$renderer, $$props) {
2708
2729
  }
2709
2730
  if (href !== undefined) {
2710
2731
  $$renderer2.push("<!--[0-->");
2711
- $$renderer2.push(`<a${$43.attributes({
2732
+ $$renderer2.push(`<a${$44.attributes({
2712
2733
  ...anchorAttributes,
2713
2734
  href: loading ? undefined : href,
2714
2735
  tabindex: loading ? -1 : anchorTabIndex(),
2715
- class: $43.clsx(mergedClassName()),
2736
+ class: $44.clsx(mergedClassName()),
2716
2737
  ...dataAttributes(),
2717
2738
  "aria-disabled": resolvedAriaDisabled(),
2718
2739
  "aria-busy": resolvedAriaBusy(),
@@ -2726,10 +2747,10 @@ function Button($$renderer, $$props) {
2726
2747
  $$renderer2.push(`<!----></a>`);
2727
2748
  } else {
2728
2749
  $$renderer2.push("<!--[-1-->");
2729
- $$renderer2.push(`<button${$43.attributes({
2750
+ $$renderer2.push(`<button${$44.attributes({
2730
2751
  ...buttonAttributes,
2731
2752
  type: buttonType() ?? "button",
2732
- class: $43.clsx(mergedClassName()),
2753
+ class: $44.clsx(mergedClassName()),
2733
2754
  ...dataAttributes(),
2734
2755
  disabled: buttonDisabled() || loading,
2735
2756
  "aria-disabled": resolvedAriaDisabled(),
@@ -2748,8 +2769,8 @@ function Button($$renderer, $$props) {
2748
2769
  }
2749
2770
 
2750
2771
  // src/components/markdown-editor/markdown-editor.svelte
2751
- import * as $77 from "svelte/internal/server";
2752
- import { onDestroy as onDestroy2 } from "svelte";
2772
+ import * as $78 from "svelte/internal/server";
2773
+ import { onDestroy } from "svelte";
2753
2774
  import {
2754
2775
  createEditorAttachment,
2755
2776
  setEditorReadonly,
@@ -2769,11 +2790,11 @@ import {
2769
2790
  } from "@lostgradient/cinder/editor/component-runtime";
2770
2791
 
2771
2792
  // src/components/segment/segment.svelte
2772
- import * as $45 from "svelte/internal/server";
2793
+ import * as $46 from "svelte/internal/server";
2773
2794
  import { untrack } from "svelte";
2774
2795
 
2775
2796
  // src/components/segmented-control/segmented-control-state.svelte.ts
2776
- import * as $44 from "svelte/internal/server";
2797
+ import * as $45 from "svelte/internal/server";
2777
2798
  import { createContext } from "svelte";
2778
2799
 
2779
2800
  // src/utilities/document-order.ts
@@ -3019,11 +3040,11 @@ function Segment($$renderer, $$props) {
3019
3040
  }
3020
3041
  }));
3021
3042
  };
3022
- const isSelected = $45.derived(() => context.isSelected(value));
3023
- const isFocusable = $45.derived(() => context.isFocusable(value));
3024
- const effectiveDisabled = $45.derived(() => disabled || context.controlDisabled);
3025
- const role = $45.derived(() => context.selectionMode === "multiple" ? undefined : context.variant === "tablist" ? "tab" : "radio");
3026
- $$renderer2.push(`<button${$45.attributes({
3043
+ const isSelected = $46.derived(() => context.isSelected(value));
3044
+ const isFocusable = $46.derived(() => context.isFocusable(value));
3045
+ const effectiveDisabled = $46.derived(() => disabled || context.controlDisabled);
3046
+ const role = $46.derived(() => context.selectionMode === "multiple" ? undefined : context.variant === "tablist" ? "tab" : "radio");
3047
+ $$renderer2.push(`<button${$46.attributes({
3027
3048
  ...rest,
3028
3049
  type: "button",
3029
3050
  role: role(),
@@ -3035,7 +3056,7 @@ function Segment($$renderer, $$props) {
3035
3056
  "aria-disabled": effectiveDisabled() ? "true" : undefined,
3036
3057
  disabled: context.selectionMode === "multiple" ? effectiveDisabled() : undefined,
3037
3058
  tabindex: isFocusable() ? 0 : -1,
3038
- class: $45.clsx(classNames("cinder-segmented-control-option", customClassName)),
3059
+ class: $46.clsx(classNames("cinder-segmented-control-option", customClassName)),
3039
3060
  "data-cinder-selected": isSelected() ? "" : undefined,
3040
3061
  "data-cinder-pressed": context.selectionMode === "multiple" && isSelected() ? "" : undefined
3041
3062
  })}>`);
@@ -3063,7 +3084,7 @@ function Segment($$renderer, $$props) {
3063
3084
  }
3064
3085
 
3065
3086
  // src/components/segmented-control/segmented-control.svelte
3066
- import * as $46 from "svelte/internal/server";
3087
+ import * as $47 from "svelte/internal/server";
3067
3088
  function Segmented_control($$renderer, $$props) {
3068
3089
  $$renderer.component(($$renderer2) => {
3069
3090
  let {
@@ -3115,9 +3136,9 @@ function Segmented_control($$renderer, $$props) {
3115
3136
  toggle: (segmentValue) => controller.toggle(segmentValue)
3116
3137
  };
3117
3138
  setSegmentedControlContext(contextValue);
3118
- const groupRole = $46.derived(() => selectionMode === "multiple" ? "group" : variant === "tablist" ? "tablist" : "radiogroup");
3119
- const effectiveSize = $46.derived(() => density === "toolbar" ? "sm" : size);
3120
- $$renderer2.push(`<div class="cinder-segmented-control-container"><span${$46.attr("id", `${id}-label`)}${$46.attr_class($46.clsx(classNames("cinder-segmented-control-label", hideLabel && "cinder-sr-only")))}>${$46.escape(label)}</span> <div${$46.attributes({
3139
+ const groupRole = $47.derived(() => selectionMode === "multiple" ? "group" : variant === "tablist" ? "tablist" : "radiogroup");
3140
+ const effectiveSize = $47.derived(() => density === "toolbar" ? "sm" : size);
3141
+ $$renderer2.push(`<div class="cinder-segmented-control-container"><span${$47.attr("id", `${id}-label`)}${$47.attr_class($47.clsx(classNames("cinder-segmented-control-label", hideLabel && "cinder-sr-only")))}>${$47.escape(label)}</span> <div${$47.attributes({
3121
3142
  ...rest,
3122
3143
  id,
3123
3144
  role: groupRole(),
@@ -3131,49 +3152,49 @@ function Segmented_control($$renderer, $$props) {
3131
3152
  "data-cinder-detached": detached ? "" : undefined,
3132
3153
  "data-cinder-full-width": fullWidth ? "" : undefined,
3133
3154
  "data-cinder-variant": variant,
3134
- class: $46.clsx(classNames("cinder-segmented-control", customClassName))
3155
+ class: $47.clsx(classNames("cinder-segmented-control", customClassName))
3135
3156
  })}>`);
3136
3157
  children($$renderer2);
3137
3158
  $$renderer2.push(`<!----></div></div>`);
3138
- $46.bind_props($$props, { value });
3159
+ $47.bind_props($$props, { value });
3139
3160
  });
3140
3161
  }
3141
3162
 
3142
3163
  // src/components/markdown-editor/editor-skeleton.svelte
3143
- import * as $47 from "svelte/internal/server";
3164
+ import * as $48 from "svelte/internal/server";
3144
3165
  function Editor_skeleton($$renderer, $$props) {
3145
3166
  $$renderer.component(($$renderer2) => {
3146
3167
  let { lines = 8, class: className, $$slots, $$events, ...rest } = $$props;
3147
3168
  const SHIMMER_WIDTHS = [68, 84, 56, 92, 72, 80, 60, 88];
3148
- const lineWidths = $47.derived(() => Array.from({ length: lines }, (_, i) => {
3169
+ const lineWidths = $48.derived(() => Array.from({ length: lines }, (_, i) => {
3149
3170
  if (i === 0)
3150
3171
  return 45;
3151
3172
  if (i === lines - 1)
3152
3173
  return 30;
3153
3174
  return SHIMMER_WIDTHS[i % SHIMMER_WIDTHS.length] ?? 68;
3154
3175
  }));
3155
- $$renderer2.push(`<div${$47.attributes({
3156
- class: $47.clsx(classNames("editor-skeleton", "surface", className)),
3176
+ $$renderer2.push(`<div${$48.attributes({
3177
+ class: $48.clsx(classNames("editor-skeleton", "surface", className)),
3157
3178
  role: "status",
3158
3179
  "aria-label": "Loading editor",
3159
3180
  ...rest
3160
3181
  }, "svelte-1h3fabh")}><span class="sr-only svelte-1h3fabh">Loading editor...</span> <div class="skeleton-content svelte-1h3fabh"><!--[-->`);
3161
- const each_array = $47.ensure_array_like(lineWidths());
3182
+ const each_array = $48.ensure_array_like(lineWidths());
3162
3183
  for (let i = 0, $$length = each_array.length;i < $$length; i++) {
3163
3184
  let width = each_array[i];
3164
- $$renderer2.push(`<div class="skeleton-line svelte-1h3fabh"${$47.attr_style("", { "--skeleton-line-width": `${$47.stringify(width)}%` })}></div>`);
3185
+ $$renderer2.push(`<div class="skeleton-line svelte-1h3fabh"${$48.attr_style("", { "--skeleton-line-width": `${$48.stringify(width)}%` })}></div>`);
3165
3186
  }
3166
3187
  $$renderer2.push(`<!--]--></div></div>`);
3167
3188
  });
3168
3189
  }
3169
3190
 
3170
3191
  // src/components/markdown-editor/editor-toolbar/editor-toolbar.svelte
3171
- import * as $73 from "svelte/internal/server";
3192
+ import * as $74 from "svelte/internal/server";
3172
3193
 
3173
3194
  // ../../node_modules/lucide-svelte/dist/icons/bold.svelte
3174
- import * as $48 from "svelte/internal/server";
3195
+ import * as $49 from "svelte/internal/server";
3175
3196
  function Bold($$renderer, $$props) {
3176
- const $$sanitized_props = $48.sanitize_props($$props);
3197
+ const $$sanitized_props = $49.sanitize_props($$props);
3177
3198
  const iconNode = [
3178
3199
  [
3179
3200
  "path",
@@ -3182,14 +3203,14 @@ function Bold($$renderer, $$props) {
3182
3203
  }
3183
3204
  ]
3184
3205
  ];
3185
- Icon($$renderer, $48.spread_props([
3206
+ Icon($$renderer, $49.spread_props([
3186
3207
  { name: "bold" },
3187
3208
  $$sanitized_props,
3188
3209
  {
3189
3210
  iconNode,
3190
3211
  children: ($$renderer2) => {
3191
3212
  $$renderer2.push(`<!--[-->`);
3192
- $48.slot($$renderer2, $$props, "default", {}, null);
3213
+ $49.slot($$renderer2, $$props, "default", {}, null);
3193
3214
  $$renderer2.push(`<!--]-->`);
3194
3215
  },
3195
3216
  $$slots: { default: true }
@@ -3197,21 +3218,21 @@ function Bold($$renderer, $$props) {
3197
3218
  ]));
3198
3219
  }
3199
3220
  // ../../node_modules/lucide-svelte/dist/icons/code.svelte
3200
- import * as $49 from "svelte/internal/server";
3221
+ import * as $50 from "svelte/internal/server";
3201
3222
  function Code($$renderer, $$props) {
3202
- const $$sanitized_props = $49.sanitize_props($$props);
3223
+ const $$sanitized_props = $50.sanitize_props($$props);
3203
3224
  const iconNode = [
3204
3225
  ["polyline", { points: "16 18 22 12 16 6" }],
3205
3226
  ["polyline", { points: "8 6 2 12 8 18" }]
3206
3227
  ];
3207
- Icon($$renderer, $49.spread_props([
3228
+ Icon($$renderer, $50.spread_props([
3208
3229
  { name: "code" },
3209
3230
  $$sanitized_props,
3210
3231
  {
3211
3232
  iconNode,
3212
3233
  children: ($$renderer2) => {
3213
3234
  $$renderer2.push(`<!--[-->`);
3214
- $49.slot($$renderer2, $$props, "default", {}, null);
3235
+ $50.slot($$renderer2, $$props, "default", {}, null);
3215
3236
  $$renderer2.push(`<!--]-->`);
3216
3237
  },
3217
3238
  $$slots: { default: true }
@@ -3219,23 +3240,23 @@ function Code($$renderer, $$props) {
3219
3240
  ]));
3220
3241
  }
3221
3242
  // ../../node_modules/lucide-svelte/dist/icons/heading-1.svelte
3222
- import * as $50 from "svelte/internal/server";
3243
+ import * as $51 from "svelte/internal/server";
3223
3244
  function Heading_1($$renderer, $$props) {
3224
- const $$sanitized_props = $50.sanitize_props($$props);
3245
+ const $$sanitized_props = $51.sanitize_props($$props);
3225
3246
  const iconNode = [
3226
3247
  ["path", { d: "M4 12h8" }],
3227
3248
  ["path", { d: "M4 18V6" }],
3228
3249
  ["path", { d: "M12 18V6" }],
3229
3250
  ["path", { d: "m17 12 3-2v8" }]
3230
3251
  ];
3231
- Icon($$renderer, $50.spread_props([
3252
+ Icon($$renderer, $51.spread_props([
3232
3253
  { name: "heading-1" },
3233
3254
  $$sanitized_props,
3234
3255
  {
3235
3256
  iconNode,
3236
3257
  children: ($$renderer2) => {
3237
3258
  $$renderer2.push(`<!--[-->`);
3238
- $50.slot($$renderer2, $$props, "default", {}, null);
3259
+ $51.slot($$renderer2, $$props, "default", {}, null);
3239
3260
  $$renderer2.push(`<!--]-->`);
3240
3261
  },
3241
3262
  $$slots: { default: true }
@@ -3243,23 +3264,23 @@ function Heading_1($$renderer, $$props) {
3243
3264
  ]));
3244
3265
  }
3245
3266
  // ../../node_modules/lucide-svelte/dist/icons/heading-2.svelte
3246
- import * as $51 from "svelte/internal/server";
3267
+ import * as $52 from "svelte/internal/server";
3247
3268
  function Heading_2($$renderer, $$props) {
3248
- const $$sanitized_props = $51.sanitize_props($$props);
3269
+ const $$sanitized_props = $52.sanitize_props($$props);
3249
3270
  const iconNode = [
3250
3271
  ["path", { d: "M4 12h8" }],
3251
3272
  ["path", { d: "M4 18V6" }],
3252
3273
  ["path", { d: "M12 18V6" }],
3253
3274
  ["path", { d: "M21 18h-4c0-4 4-3 4-6 0-1.5-2-2.5-4-1" }]
3254
3275
  ];
3255
- Icon($$renderer, $51.spread_props([
3276
+ Icon($$renderer, $52.spread_props([
3256
3277
  { name: "heading-2" },
3257
3278
  $$sanitized_props,
3258
3279
  {
3259
3280
  iconNode,
3260
3281
  children: ($$renderer2) => {
3261
3282
  $$renderer2.push(`<!--[-->`);
3262
- $51.slot($$renderer2, $$props, "default", {}, null);
3283
+ $52.slot($$renderer2, $$props, "default", {}, null);
3263
3284
  $$renderer2.push(`<!--]-->`);
3264
3285
  },
3265
3286
  $$slots: { default: true }
@@ -3267,9 +3288,9 @@ function Heading_2($$renderer, $$props) {
3267
3288
  ]));
3268
3289
  }
3269
3290
  // ../../node_modules/lucide-svelte/dist/icons/heading-3.svelte
3270
- import * as $52 from "svelte/internal/server";
3291
+ import * as $53 from "svelte/internal/server";
3271
3292
  function Heading_3($$renderer, $$props) {
3272
- const $$sanitized_props = $52.sanitize_props($$props);
3293
+ const $$sanitized_props = $53.sanitize_props($$props);
3273
3294
  const iconNode = [
3274
3295
  ["path", { d: "M4 12h8" }],
3275
3296
  ["path", { d: "M4 18V6" }],
@@ -3280,14 +3301,14 @@ function Heading_3($$renderer, $$props) {
3280
3301
  ],
3281
3302
  ["path", { d: "M17 17.5c2 1.5 4 .3 4-1.5a2 2 0 0 0-2-2" }]
3282
3303
  ];
3283
- Icon($$renderer, $52.spread_props([
3304
+ Icon($$renderer, $53.spread_props([
3284
3305
  { name: "heading-3" },
3285
3306
  $$sanitized_props,
3286
3307
  {
3287
3308
  iconNode,
3288
3309
  children: ($$renderer2) => {
3289
3310
  $$renderer2.push(`<!--[-->`);
3290
- $52.slot($$renderer2, $$props, "default", {}, null);
3311
+ $53.slot($$renderer2, $$props, "default", {}, null);
3291
3312
  $$renderer2.push(`<!--]-->`);
3292
3313
  },
3293
3314
  $$slots: { default: true }
@@ -3295,22 +3316,22 @@ function Heading_3($$renderer, $$props) {
3295
3316
  ]));
3296
3317
  }
3297
3318
  // ../../node_modules/lucide-svelte/dist/icons/italic.svelte
3298
- import * as $53 from "svelte/internal/server";
3319
+ import * as $54 from "svelte/internal/server";
3299
3320
  function Italic($$renderer, $$props) {
3300
- const $$sanitized_props = $53.sanitize_props($$props);
3321
+ const $$sanitized_props = $54.sanitize_props($$props);
3301
3322
  const iconNode = [
3302
3323
  ["line", { x1: "19", x2: "10", y1: "4", y2: "4" }],
3303
3324
  ["line", { x1: "14", x2: "5", y1: "20", y2: "20" }],
3304
3325
  ["line", { x1: "15", x2: "9", y1: "4", y2: "20" }]
3305
3326
  ];
3306
- Icon($$renderer, $53.spread_props([
3327
+ Icon($$renderer, $54.spread_props([
3307
3328
  { name: "italic" },
3308
3329
  $$sanitized_props,
3309
3330
  {
3310
3331
  iconNode,
3311
3332
  children: ($$renderer2) => {
3312
3333
  $$renderer2.push(`<!--[-->`);
3313
- $53.slot($$renderer2, $$props, "default", {}, null);
3334
+ $54.slot($$renderer2, $$props, "default", {}, null);
3314
3335
  $$renderer2.push(`<!--]-->`);
3315
3336
  },
3316
3337
  $$slots: { default: true }
@@ -3318,9 +3339,9 @@ function Italic($$renderer, $$props) {
3318
3339
  ]));
3319
3340
  }
3320
3341
  // ../../node_modules/lucide-svelte/dist/icons/link.svelte
3321
- import * as $54 from "svelte/internal/server";
3342
+ import * as $55 from "svelte/internal/server";
3322
3343
  function Link($$renderer, $$props) {
3323
- const $$sanitized_props = $54.sanitize_props($$props);
3344
+ const $$sanitized_props = $55.sanitize_props($$props);
3324
3345
  const iconNode = [
3325
3346
  [
3326
3347
  "path",
@@ -3335,14 +3356,14 @@ function Link($$renderer, $$props) {
3335
3356
  }
3336
3357
  ]
3337
3358
  ];
3338
- Icon($$renderer, $54.spread_props([
3359
+ Icon($$renderer, $55.spread_props([
3339
3360
  { name: "link" },
3340
3361
  $$sanitized_props,
3341
3362
  {
3342
3363
  iconNode,
3343
3364
  children: ($$renderer2) => {
3344
3365
  $$renderer2.push(`<!--[-->`);
3345
- $54.slot($$renderer2, $$props, "default", {}, null);
3366
+ $55.slot($$renderer2, $$props, "default", {}, null);
3346
3367
  $$renderer2.push(`<!--]-->`);
3347
3368
  },
3348
3369
  $$slots: { default: true }
@@ -3350,9 +3371,9 @@ function Link($$renderer, $$props) {
3350
3371
  ]));
3351
3372
  }
3352
3373
  // ../../node_modules/lucide-svelte/dist/icons/list.svelte
3353
- import * as $55 from "svelte/internal/server";
3374
+ import * as $56 from "svelte/internal/server";
3354
3375
  function List($$renderer, $$props) {
3355
- const $$sanitized_props = $55.sanitize_props($$props);
3376
+ const $$sanitized_props = $56.sanitize_props($$props);
3356
3377
  const iconNode = [
3357
3378
  ["path", { d: "M3 12h.01" }],
3358
3379
  ["path", { d: "M3 18h.01" }],
@@ -3361,14 +3382,14 @@ function List($$renderer, $$props) {
3361
3382
  ["path", { d: "M8 18h13" }],
3362
3383
  ["path", { d: "M8 6h13" }]
3363
3384
  ];
3364
- Icon($$renderer, $55.spread_props([
3385
+ Icon($$renderer, $56.spread_props([
3365
3386
  { name: "list" },
3366
3387
  $$sanitized_props,
3367
3388
  {
3368
3389
  iconNode,
3369
3390
  children: ($$renderer2) => {
3370
3391
  $$renderer2.push(`<!--[-->`);
3371
- $55.slot($$renderer2, $$props, "default", {}, null);
3392
+ $56.slot($$renderer2, $$props, "default", {}, null);
3372
3393
  $$renderer2.push(`<!--]-->`);
3373
3394
  },
3374
3395
  $$slots: { default: true }
@@ -3376,9 +3397,9 @@ function List($$renderer, $$props) {
3376
3397
  ]));
3377
3398
  }
3378
3399
  // ../../node_modules/lucide-svelte/dist/icons/list-ordered.svelte
3379
- import * as $56 from "svelte/internal/server";
3400
+ import * as $57 from "svelte/internal/server";
3380
3401
  function List_ordered($$renderer, $$props) {
3381
- const $$sanitized_props = $56.sanitize_props($$props);
3402
+ const $$sanitized_props = $57.sanitize_props($$props);
3382
3403
  const iconNode = [
3383
3404
  ["path", { d: "M10 12h11" }],
3384
3405
  ["path", { d: "M10 18h11" }],
@@ -3387,14 +3408,14 @@ function List_ordered($$renderer, $$props) {
3387
3408
  ["path", { d: "M4 6h1v4" }],
3388
3409
  ["path", { d: "M6 18H4c0-1 2-2 2-3s-1-1.5-2-1" }]
3389
3410
  ];
3390
- Icon($$renderer, $56.spread_props([
3411
+ Icon($$renderer, $57.spread_props([
3391
3412
  { name: "list-ordered" },
3392
3413
  $$sanitized_props,
3393
3414
  {
3394
3415
  iconNode,
3395
3416
  children: ($$renderer2) => {
3396
3417
  $$renderer2.push(`<!--[-->`);
3397
- $56.slot($$renderer2, $$props, "default", {}, null);
3418
+ $57.slot($$renderer2, $$props, "default", {}, null);
3398
3419
  $$renderer2.push(`<!--]-->`);
3399
3420
  },
3400
3421
  $$slots: { default: true }
@@ -3402,22 +3423,22 @@ function List_ordered($$renderer, $$props) {
3402
3423
  ]));
3403
3424
  }
3404
3425
  // ../../node_modules/lucide-svelte/dist/icons/pilcrow.svelte
3405
- import * as $57 from "svelte/internal/server";
3426
+ import * as $58 from "svelte/internal/server";
3406
3427
  function Pilcrow($$renderer, $$props) {
3407
- const $$sanitized_props = $57.sanitize_props($$props);
3428
+ const $$sanitized_props = $58.sanitize_props($$props);
3408
3429
  const iconNode = [
3409
3430
  ["path", { d: "M13 4v16" }],
3410
3431
  ["path", { d: "M17 4v16" }],
3411
3432
  ["path", { d: "M19 4H9.5a4.5 4.5 0 0 0 0 9H13" }]
3412
3433
  ];
3413
- Icon($$renderer, $57.spread_props([
3434
+ Icon($$renderer, $58.spread_props([
3414
3435
  { name: "pilcrow" },
3415
3436
  $$sanitized_props,
3416
3437
  {
3417
3438
  iconNode,
3418
3439
  children: ($$renderer2) => {
3419
3440
  $$renderer2.push(`<!--[-->`);
3420
- $57.slot($$renderer2, $$props, "default", {}, null);
3441
+ $58.slot($$renderer2, $$props, "default", {}, null);
3421
3442
  $$renderer2.push(`<!--]-->`);
3422
3443
  },
3423
3444
  $$slots: { default: true }
@@ -3425,9 +3446,9 @@ function Pilcrow($$renderer, $$props) {
3425
3446
  ]));
3426
3447
  }
3427
3448
  // ../../node_modules/lucide-svelte/dist/icons/quote.svelte
3428
- import * as $58 from "svelte/internal/server";
3449
+ import * as $59 from "svelte/internal/server";
3429
3450
  function Quote($$renderer, $$props) {
3430
- const $$sanitized_props = $58.sanitize_props($$props);
3451
+ const $$sanitized_props = $59.sanitize_props($$props);
3431
3452
  const iconNode = [
3432
3453
  [
3433
3454
  "path",
@@ -3442,14 +3463,14 @@ function Quote($$renderer, $$props) {
3442
3463
  }
3443
3464
  ]
3444
3465
  ];
3445
- Icon($$renderer, $58.spread_props([
3466
+ Icon($$renderer, $59.spread_props([
3446
3467
  { name: "quote" },
3447
3468
  $$sanitized_props,
3448
3469
  {
3449
3470
  iconNode,
3450
3471
  children: ($$renderer2) => {
3451
3472
  $$renderer2.push(`<!--[-->`);
3452
- $58.slot($$renderer2, $$props, "default", {}, null);
3473
+ $59.slot($$renderer2, $$props, "default", {}, null);
3453
3474
  $$renderer2.push(`<!--]-->`);
3454
3475
  },
3455
3476
  $$slots: { default: true }
@@ -3457,9 +3478,9 @@ function Quote($$renderer, $$props) {
3457
3478
  ]));
3458
3479
  }
3459
3480
  // ../../node_modules/lucide-svelte/dist/icons/redo-2.svelte
3460
- import * as $59 from "svelte/internal/server";
3481
+ import * as $60 from "svelte/internal/server";
3461
3482
  function Redo_2($$renderer, $$props) {
3462
- const $$sanitized_props = $59.sanitize_props($$props);
3483
+ const $$sanitized_props = $60.sanitize_props($$props);
3463
3484
  const iconNode = [
3464
3485
  ["path", { d: "m15 14 5-5-5-5" }],
3465
3486
  [
@@ -3469,14 +3490,14 @@ function Redo_2($$renderer, $$props) {
3469
3490
  }
3470
3491
  ]
3471
3492
  ];
3472
- Icon($$renderer, $59.spread_props([
3493
+ Icon($$renderer, $60.spread_props([
3473
3494
  { name: "redo-2" },
3474
3495
  $$sanitized_props,
3475
3496
  {
3476
3497
  iconNode,
3477
3498
  children: ($$renderer2) => {
3478
3499
  $$renderer2.push(`<!--[-->`);
3479
- $59.slot($$renderer2, $$props, "default", {}, null);
3500
+ $60.slot($$renderer2, $$props, "default", {}, null);
3480
3501
  $$renderer2.push(`<!--]-->`);
3481
3502
  },
3482
3503
  $$slots: { default: true }
@@ -3484,22 +3505,22 @@ function Redo_2($$renderer, $$props) {
3484
3505
  ]));
3485
3506
  }
3486
3507
  // ../../node_modules/lucide-svelte/dist/icons/strikethrough.svelte
3487
- import * as $60 from "svelte/internal/server";
3508
+ import * as $61 from "svelte/internal/server";
3488
3509
  function Strikethrough($$renderer, $$props) {
3489
- const $$sanitized_props = $60.sanitize_props($$props);
3510
+ const $$sanitized_props = $61.sanitize_props($$props);
3490
3511
  const iconNode = [
3491
3512
  ["path", { d: "M16 4H9a3 3 0 0 0-2.83 4" }],
3492
3513
  ["path", { d: "M14 12a4 4 0 0 1 0 8H6" }],
3493
3514
  ["line", { x1: "4", x2: "20", y1: "12", y2: "12" }]
3494
3515
  ];
3495
- Icon($$renderer, $60.spread_props([
3516
+ Icon($$renderer, $61.spread_props([
3496
3517
  { name: "strikethrough" },
3497
3518
  $$sanitized_props,
3498
3519
  {
3499
3520
  iconNode,
3500
3521
  children: ($$renderer2) => {
3501
3522
  $$renderer2.push(`<!--[-->`);
3502
- $60.slot($$renderer2, $$props, "default", {}, null);
3523
+ $61.slot($$renderer2, $$props, "default", {}, null);
3503
3524
  $$renderer2.push(`<!--]-->`);
3504
3525
  },
3505
3526
  $$slots: { default: true }
@@ -3507,9 +3528,9 @@ function Strikethrough($$renderer, $$props) {
3507
3528
  ]));
3508
3529
  }
3509
3530
  // ../../node_modules/lucide-svelte/dist/icons/undo-2.svelte
3510
- import * as $61 from "svelte/internal/server";
3531
+ import * as $62 from "svelte/internal/server";
3511
3532
  function Undo_2($$renderer, $$props) {
3512
- const $$sanitized_props = $61.sanitize_props($$props);
3533
+ const $$sanitized_props = $62.sanitize_props($$props);
3513
3534
  const iconNode = [
3514
3535
  ["path", { d: "M9 14 4 9l5-5" }],
3515
3536
  [
@@ -3519,14 +3540,14 @@ function Undo_2($$renderer, $$props) {
3519
3540
  }
3520
3541
  ]
3521
3542
  ];
3522
- Icon($$renderer, $61.spread_props([
3543
+ Icon($$renderer, $62.spread_props([
3523
3544
  { name: "undo-2" },
3524
3545
  $$sanitized_props,
3525
3546
  {
3526
3547
  iconNode,
3527
3548
  children: ($$renderer2) => {
3528
3549
  $$renderer2.push(`<!--[-->`);
3529
- $61.slot($$renderer2, $$props, "default", {}, null);
3550
+ $62.slot($$renderer2, $$props, "default", {}, null);
3530
3551
  $$renderer2.push(`<!--]-->`);
3531
3552
  },
3532
3553
  $$slots: { default: true }
@@ -3548,12 +3569,12 @@ import {
3548
3569
  } from "@lostgradient/cinder/editor/component-runtime";
3549
3570
 
3550
3571
  // src/components/toolbar/toolbar.svelte
3551
- import * as $63 from "svelte/internal/server";
3572
+ import * as $64 from "svelte/internal/server";
3552
3573
  import { untrack as untrack2 } from "svelte";
3553
3574
  import { on } from "svelte/events";
3554
3575
 
3555
3576
  // src/utilities/use-mutation-observer.svelte.ts
3556
- import * as $62 from "svelte/internal/server";
3577
+ import * as $63 from "svelte/internal/server";
3557
3578
  function useMutationObserver(onMutate, options = {}) {
3558
3579
  const {
3559
3580
  childList,
@@ -3925,13 +3946,13 @@ function Toolbar($$renderer, $$props) {
3925
3946
  restoreDepartedItems([]);
3926
3947
  };
3927
3948
  }
3928
- $$renderer2.push(`<div${$63.attributes({
3949
+ $$renderer2.push(`<div${$64.attributes({
3929
3950
  ...rest,
3930
3951
  role: "toolbar",
3931
3952
  "aria-label": ariaLabel,
3932
3953
  "aria-labelledby": ariaLabelledBy,
3933
3954
  "aria-orientation": orientation === "vertical" ? "vertical" : undefined,
3934
- class: $63.clsx(classNames("cinder-toolbar", className)),
3955
+ class: $64.clsx(classNames("cinder-toolbar", className)),
3935
3956
  "data-cinder-orientation": orientation,
3936
3957
  "data-cinder-name-source": resolveAccessibleNameSource()
3937
3958
  })}>`);
@@ -3941,13 +3962,13 @@ function Toolbar($$renderer, $$props) {
3941
3962
  }
3942
3963
 
3943
3964
  // src/components/markdown-editor/editor-toolbar/toolbar-button.svelte
3944
- import * as $66 from "svelte/internal/server";
3965
+ import * as $67 from "svelte/internal/server";
3945
3966
 
3946
3967
  // src/components/tooltip/tooltip.svelte
3947
- import * as $65 from "svelte/internal/server";
3968
+ import * as $66 from "svelte/internal/server";
3948
3969
 
3949
3970
  // src/_internal/anchored-overlay.svelte.ts
3950
- import * as $64 from "svelte/internal/server";
3971
+ import * as $65 from "svelte/internal/server";
3951
3972
  var DEFAULT_PLACEMENT = "bottom-start";
3952
3973
  function createAnchoredOverlay(options) {
3953
3974
  let positionReady = false;
@@ -3973,7 +3994,7 @@ function createAnchoredOverlay(options) {
3973
3994
  // src/components/tooltip/tooltip.svelte
3974
3995
  function Tooltip($$renderer, $$props) {
3975
3996
  $$renderer.component(($$renderer2) => {
3976
- const tooltipId = $65.props_id($$renderer2);
3997
+ const tooltipId = $66.props_id($$renderer2);
3977
3998
  let {
3978
3999
  text,
3979
4000
  placement = "top",
@@ -4092,10 +4113,10 @@ function Tooltip($$renderer, $$props) {
4092
4113
  offset: () => 8,
4093
4114
  widthMode: () => "none"
4094
4115
  });
4095
- const isTooltipExposed = $65.derived(() => visible && anchoredOverlay.positionReady);
4096
- $$renderer2.push(`<span${$65.attr_class($65.clsx(classNames("cinder-tooltip-wrapper", className)))} role="presentation"${$65.attr("data-cinder-placement", visible ? anchoredOverlay.resolvedPlacement : placement)}>`);
4116
+ const isTooltipExposed = $66.derived(() => visible && anchoredOverlay.positionReady);
4117
+ $$renderer2.push(`<span${$66.attr_class($66.clsx(classNames("cinder-tooltip-wrapper", className)))} role="presentation"${$66.attr("data-cinder-placement", visible ? anchoredOverlay.resolvedPlacement : placement)}>`);
4097
4118
  children($$renderer2);
4098
- $$renderer2.push(`<!----> <span${$65.attr("id", tooltipId)} role="tooltip" class="cinder-tooltip"${$65.attr("aria-hidden", !isTooltipExposed())}${$65.attr("data-cinder-placement", visible ? anchoredOverlay.resolvedPlacement : placement)}${$65.attr("data-cinder-position-ready", anchoredOverlay.positionReady)}${$65.attr_style(anchoredOverlay.positionStyle)}>${$65.escape(text)}</span></span>`);
4119
+ $$renderer2.push(`<!----> <span${$66.attr("id", tooltipId)} role="tooltip" class="cinder-tooltip"${$66.attr("aria-hidden", !isTooltipExposed())}${$66.attr("data-cinder-placement", visible ? anchoredOverlay.resolvedPlacement : placement)}${$66.attr("data-cinder-position-ready", anchoredOverlay.positionReady)}${$66.attr_style(anchoredOverlay.positionStyle)}>${$66.escape(text)}</span></span>`);
4099
4120
  });
4100
4121
  }
4101
4122
 
@@ -4115,14 +4136,14 @@ function Toolbar_button($$renderer, $$props) {
4115
4136
  $$events,
4116
4137
  ...rest
4117
4138
  } = $$props;
4118
- const tooltipLabel = $66.derived(() => shortcut ? `${label} (${shortcut})` : label);
4139
+ const tooltipLabel = $67.derived(() => shortcut ? `${label} (${shortcut})` : label);
4119
4140
  Tooltip($$renderer2, {
4120
4141
  text: tooltipLabel(),
4121
4142
  placement: "bottom",
4122
4143
  children: ($$renderer3) => {
4123
- $$renderer3.push(`<button${$66.attributes({
4144
+ $$renderer3.push(`<button${$67.attributes({
4124
4145
  type: "button",
4125
- class: $66.clsx(classNames("toolbar-button", className)),
4146
+ class: $67.clsx(classNames("toolbar-button", className)),
4126
4147
  "aria-label": label,
4127
4148
  "aria-pressed": toggle ? pressed : undefined,
4128
4149
  "data-active": toggle && pressed ? "" : undefined,
@@ -4145,12 +4166,12 @@ function Toolbar_button($$renderer, $$props) {
4145
4166
  }
4146
4167
 
4147
4168
  // src/components/markdown-editor/editor-toolbar/toolbar-separator.svelte
4148
- import * as $67 from "svelte/internal/server";
4169
+ import * as $68 from "svelte/internal/server";
4149
4170
  function Toolbar_separator($$renderer, $$props) {
4150
4171
  $$renderer.component(($$renderer2) => {
4151
4172
  let { class: className, $$slots, $$events, ...rest } = $$props;
4152
- $$renderer2.push(`<div${$67.attributes({
4153
- class: $67.clsx(classNames("toolbar-separator", className)),
4173
+ $$renderer2.push(`<div${$68.attributes({
4174
+ class: $68.clsx(classNames("toolbar-separator", className)),
4154
4175
  role: "separator",
4155
4176
  "aria-orientation": "vertical",
4156
4177
  "aria-hidden": "true",
@@ -4160,10 +4181,10 @@ function Toolbar_separator($$renderer, $$props) {
4160
4181
  }
4161
4182
 
4162
4183
  // src/components/markdown-editor/editor-toolbar/toolbar-dropdown.svelte
4163
- import * as $72 from "svelte/internal/server";
4184
+ import * as $73 from "svelte/internal/server";
4164
4185
 
4165
4186
  // src/components/dropdown/dropdown.svelte
4166
- import * as $68 from "svelte/internal/server";
4187
+ import * as $69 from "svelte/internal/server";
4167
4188
 
4168
4189
  // src/components/dropdown/dropdown.context.ts
4169
4190
  import { createContext as createContext2 } from "svelte";
@@ -4179,7 +4200,7 @@ var getDropdownSetOpen = getDropdownSetOpenStrict;
4179
4200
  // src/components/dropdown/dropdown.svelte
4180
4201
  function Dropdown($$renderer, $$props) {
4181
4202
  $$renderer.component(($$renderer2) => {
4182
- const generatedId = $68.props_id($$renderer2);
4203
+ const generatedId = $69.props_id($$renderer2);
4183
4204
  let {
4184
4205
  id = generatedId,
4185
4206
  open = false,
@@ -4198,8 +4219,8 @@ function Dropdown($$renderer, $$props) {
4198
4219
  const menuId = `${generatedId}-menu`;
4199
4220
  let menuElement = undefined;
4200
4221
  let triggerWrapper = undefined;
4201
- const compoundMenuId = $68.derived(() => `${id}-menu`);
4202
- const usesLegacySnippetApi = $68.derived(() => Boolean(trigger));
4222
+ const compoundMenuId = $69.derived(() => `${id}-menu`);
4223
+ const usesLegacySnippetApi = $69.derived(() => Boolean(trigger));
4203
4224
  function closeCompoundMenu() {
4204
4225
  compoundMenuElement?.hidePopover?.();
4205
4226
  compoundOpen = false;
@@ -4254,7 +4275,7 @@ function Dropdown($$renderer, $$props) {
4254
4275
  focusCompoundTrigger();
4255
4276
  }
4256
4277
  }
4257
- const dismissOnOutsideClick = $68.derived(() => createClickOutside({
4278
+ const dismissOnOutsideClick = $69.derived(() => createClickOutside({
4258
4279
  handler: () => {
4259
4280
  open = false;
4260
4281
  compoundOpen = false;
@@ -4267,15 +4288,15 @@ function Dropdown($$renderer, $$props) {
4267
4288
  const toggleEvent = event;
4268
4289
  open = toggleEvent.newState === "open";
4269
4290
  }
4270
- $$renderer2.push(`<div${$68.attributes({
4291
+ $$renderer2.push(`<div${$69.attributes({
4271
4292
  id,
4272
- class: $68.clsx(classNames("cinder-dropdown", customClassName)),
4293
+ class: $69.clsx(classNames("cinder-dropdown", customClassName)),
4273
4294
  "data-cinder-placement": placement,
4274
4295
  ...rest
4275
4296
  })}>`);
4276
4297
  if (usesLegacySnippetApi()) {
4277
4298
  $$renderer2.push("<!--[0-->");
4278
- $$renderer2.push(`<div class="cinder-dropdown__trigger" role="presentation"${$68.attr_style(`anchor-name: --${menuId};`)}>`);
4299
+ $$renderer2.push(`<div class="cinder-dropdown__trigger" role="presentation"${$69.attr_style(`anchor-name: --${menuId};`)}>`);
4279
4300
  if (trigger) {
4280
4301
  $$renderer2.push("<!--[0-->");
4281
4302
  trigger($$renderer2);
@@ -4286,7 +4307,7 @@ function Dropdown($$renderer, $$props) {
4286
4307
  $$renderer2.push(`<!--]--></div> `);
4287
4308
  if (supportsPopover) {
4288
4309
  $$renderer2.push("<!--[0-->");
4289
- $$renderer2.push(`<div${$68.attr("id", menuId)} class="cinder-dropdown__menu" popover="auto" role="menu"${$68.attr("data-cinder-placement", placement)}${$68.attr_style(`position-anchor: --${menuId};`)}>`);
4310
+ $$renderer2.push(`<div${$69.attr("id", menuId)} class="cinder-dropdown__menu" popover="auto" role="menu"${$69.attr("data-cinder-placement", placement)}${$69.attr_style(`position-anchor: --${menuId};`)}>`);
4290
4311
  if (children) {
4291
4312
  $$renderer2.push("<!--[0-->");
4292
4313
  children($$renderer2);
@@ -4297,7 +4318,7 @@ function Dropdown($$renderer, $$props) {
4297
4318
  $$renderer2.push(`<!--]--></div>`);
4298
4319
  } else if (open) {
4299
4320
  $$renderer2.push("<!--[1-->");
4300
- $$renderer2.push(`<div${$68.attr("id", menuId)} class="cinder-dropdown__menu" role="menu"${$68.attr("data-cinder-placement", placement)}>`);
4321
+ $$renderer2.push(`<div${$69.attr("id", menuId)} class="cinder-dropdown__menu" role="menu"${$69.attr("data-cinder-placement", placement)}>`);
4301
4322
  if (children) {
4302
4323
  $$renderer2.push("<!--[0-->");
4303
4324
  children($$renderer2);
@@ -4318,12 +4339,12 @@ function Dropdown($$renderer, $$props) {
4318
4339
  $$renderer2.push("<!--[-1-->");
4319
4340
  }
4320
4341
  $$renderer2.push(`<!--]--></div>`);
4321
- $68.bind_props($$props, { open });
4342
+ $69.bind_props($$props, { open });
4322
4343
  });
4323
4344
  }
4324
4345
 
4325
4346
  // src/components/dropdown-trigger/dropdown-trigger.svelte
4326
- import * as $69 from "svelte/internal/server";
4347
+ import * as $70 from "svelte/internal/server";
4327
4348
  function Dropdown_trigger($$renderer, $$props) {
4328
4349
  $$renderer.component(($$renderer2) => {
4329
4350
  let {
@@ -4338,7 +4359,10 @@ function Dropdown_trigger($$renderer, $$props) {
4338
4359
  const context = getDropdownContext();
4339
4360
  const registerTrigger = getDropdownRegisterTrigger();
4340
4361
  const setOpen = getDropdownSetOpen();
4341
- let triggerElement = null;
4362
+ function attachTrigger(node) {
4363
+ registerTrigger(node);
4364
+ return () => registerTrigger(null);
4365
+ }
4342
4366
  function handleClick(event) {
4343
4367
  if (typeof onclick === "function") {
4344
4368
  onclick(event);
@@ -4347,9 +4371,9 @@ function Dropdown_trigger($$renderer, $$props) {
4347
4371
  setOpen(!context.isOpen);
4348
4372
  }
4349
4373
  }
4350
- $$renderer2.push(`<button${$69.attributes({
4374
+ $$renderer2.push(`<button${$70.attributes({
4351
4375
  type: "button",
4352
- class: $69.clsx(classNames("cinder-dropdown-trigger", customClassName)),
4376
+ class: $70.clsx(classNames("cinder-dropdown-trigger", customClassName)),
4353
4377
  style: `anchor-name: --${context.menuId};`,
4354
4378
  "aria-haspopup": "menu",
4355
4379
  "aria-expanded": context.isOpen,
@@ -4376,24 +4400,208 @@ function Dropdown_trigger($$renderer, $$props) {
4376
4400
  }
4377
4401
 
4378
4402
  // src/components/dropdown-menu/dropdown-menu.svelte
4379
- import * as $70 from "svelte/internal/server";
4403
+ import * as $71 from "svelte/internal/server";
4380
4404
  import { tick } from "svelte";
4405
+
4406
+ // src/_internal/locale-context.ts
4407
+ import { createContext as createContext3 } from "svelte";
4408
+
4409
+ // src/_internal/optional-context.ts
4410
+ function optionalContext(getStrict) {
4411
+ return () => {
4412
+ try {
4413
+ return getStrict();
4414
+ } catch {
4415
+ return;
4416
+ }
4417
+ };
4418
+ }
4419
+
4420
+ // src/_internal/locale-context.ts
4421
+ var [getLocaleContextStrict, setLocaleContextRaw] = createContext3();
4422
+ function setLocaleContext(context) {
4423
+ setLocaleContextRaw(context);
4424
+ }
4425
+ var getLocaleContext = optionalContext(getLocaleContextStrict);
4426
+
4427
+ // src/_internal/text-direction.ts
4428
+ function resolveTextDirection(element2, fallback2) {
4429
+ let currentElement = element2 ?? null;
4430
+ let documentDirection;
4431
+ let styledDirectionElement = null;
4432
+ while (currentElement) {
4433
+ const direction = currentElement.getAttribute("dir")?.toLowerCase();
4434
+ if (direction === "rtl" || direction === "ltr") {
4435
+ if (typeof getComputedStyle === "function" && styledDirectionElement) {
4436
+ const styledDirection2 = getComputedStyle(styledDirectionElement).direction;
4437
+ if (styledDirection2 === "rtl" || styledDirection2 === "ltr")
4438
+ return styledDirection2;
4439
+ }
4440
+ if (currentElement === currentElement.ownerDocument.documentElement) {
4441
+ documentDirection = direction;
4442
+ break;
4443
+ }
4444
+ return direction;
4445
+ }
4446
+ if (direction === "auto" && typeof getComputedStyle === "function") {
4447
+ const computedDirection2 = getComputedStyle(currentElement).direction;
4448
+ if (computedDirection2 === "rtl" || computedDirection2 === "ltr")
4449
+ return computedDirection2;
4450
+ }
4451
+ const styledDirection = currentElement.style.direction;
4452
+ if (!styledDirectionElement && (styledDirection === "rtl" || styledDirection === "ltr")) {
4453
+ styledDirectionElement = currentElement;
4454
+ }
4455
+ currentElement = currentElement.parentElement;
4456
+ }
4457
+ if (typeof getComputedStyle === "function" && styledDirectionElement) {
4458
+ const direction = getComputedStyle(styledDirectionElement).direction;
4459
+ if (direction === "rtl" || direction === "ltr")
4460
+ return direction;
4461
+ }
4462
+ const computedDirection = readComputedTextDirection(element2);
4463
+ const rootComputedDirection = readComputedTextDirection(element2?.ownerDocument.documentElement);
4464
+ if (computedDirection && computedDirection !== rootComputedDirection)
4465
+ return computedDirection;
4466
+ if (computedDirection && fallback2 && computedDirection !== fallback2 && hasDirectionStylingHint(element2)) {
4467
+ return computedDirection;
4468
+ }
4469
+ if (!fallback2 && computedDirection === "rtl")
4470
+ return computedDirection;
4471
+ if (fallback2)
4472
+ return fallback2;
4473
+ if (documentDirection)
4474
+ return documentDirection;
4475
+ return;
4476
+ }
4477
+ function readComputedTextDirection(element2) {
4478
+ if (!element2 || typeof getComputedStyle !== "function")
4479
+ return;
4480
+ const direction = getComputedStyle(element2).direction;
4481
+ return direction === "rtl" || direction === "ltr" ? direction : undefined;
4482
+ }
4483
+ function hasDirectionStylingHint(element2) {
4484
+ let currentElement = element2?.parentElement;
4485
+ while (currentElement && currentElement !== currentElement.ownerDocument.documentElement) {
4486
+ if (currentElement.style.direction)
4487
+ return true;
4488
+ if (matchesDirectionStyleRule(currentElement))
4489
+ return true;
4490
+ currentElement = currentElement.parentElement;
4491
+ }
4492
+ return false;
4493
+ }
4494
+ function matchesDirectionStyleRule(element2) {
4495
+ for (const sheet of Array.from(element2.ownerDocument.styleSheets)) {
4496
+ let rules;
4497
+ try {
4498
+ rules = sheet.cssRules;
4499
+ } catch {
4500
+ continue;
4501
+ }
4502
+ if (matchesDirectionStyleRuleList(element2, rules))
4503
+ return true;
4504
+ }
4505
+ return false;
4506
+ }
4507
+ function matchesDirectionStyleRuleList(element2, rules) {
4508
+ for (const rule of Array.from(rules)) {
4509
+ if (isCssStyleRule(rule)) {
4510
+ if (!rule.style.direction) {
4511
+ const nestedRules2 = readNestedCssRules(rule);
4512
+ if (nestedRules2 && matchesDirectionStyleRuleList(element2, nestedRules2))
4513
+ return true;
4514
+ continue;
4515
+ }
4516
+ try {
4517
+ if (element2.matches(rule.selectorText))
4518
+ return true;
4519
+ } catch {
4520
+ continue;
4521
+ }
4522
+ }
4523
+ const nestedRules = readNestedCssRules(rule);
4524
+ if (nestedRules && isConditionalRuleActive(rule) && matchesDirectionStyleRuleList(element2, nestedRules)) {
4525
+ return true;
4526
+ }
4527
+ }
4528
+ return false;
4529
+ }
4530
+ function readNestedCssRules(rule) {
4531
+ if (!("cssRules" in rule))
4532
+ return;
4533
+ try {
4534
+ const nestedRules = Reflect.get(rule, "cssRules");
4535
+ return isCssRuleCollection(nestedRules) ? nestedRules : undefined;
4536
+ } catch {
4537
+ return;
4538
+ }
4539
+ }
4540
+ function isCssRuleCollection(value) {
4541
+ if (typeof CSSRuleList !== "undefined" && value instanceof CSSRuleList)
4542
+ return true;
4543
+ return Array.isArray(value) && value.every(isCssRule);
4544
+ }
4545
+ function isCssRule(value) {
4546
+ return typeof value === "object" && value !== null && typeof Reflect.get(value, "cssText") === "string" && typeof Reflect.get(value, "type") === "number";
4547
+ }
4548
+ function isCssStyleRule(rule) {
4549
+ return typeof Reflect.get(rule, "selectorText") === "string" && typeof Reflect.get(rule, "style") === "object" && Reflect.get(rule, "style") !== null;
4550
+ }
4551
+ function isConditionalRuleActive(rule) {
4552
+ const conditionText = Reflect.get(rule, "conditionText");
4553
+ if (typeof conditionText !== "string" || !conditionText.trim())
4554
+ return true;
4555
+ if (isMediaRule(rule) && typeof matchMedia === "function") {
4556
+ return matchMedia(conditionText).matches;
4557
+ }
4558
+ if (isSupportsRule(rule) && typeof CSS !== "undefined" && typeof CSS.supports === "function") {
4559
+ return CSS.supports(conditionText);
4560
+ }
4561
+ return true;
4562
+ }
4563
+ function isMediaRule(rule) {
4564
+ return typeof Reflect.get(rule, "media") === "object" && Reflect.get(rule, "media") !== null;
4565
+ }
4566
+ function isSupportsRule(rule) {
4567
+ return rule.constructor.name === "CSSSupportsRule" || Reflect.get(rule, "type") === 12;
4568
+ }
4569
+
4570
+ // src/components/dropdown-menu/dropdown-menu.svelte
4381
4571
  function Dropdown_menu($$renderer, $$props) {
4382
4572
  $$renderer.component(($$renderer2) => {
4383
- let { class: customClassName, children, $$slots, $$events, ...rest } = $$props;
4573
+ let {
4574
+ class: customClassName,
4575
+ children,
4576
+ dir: direction,
4577
+ $$slots,
4578
+ $$events,
4579
+ ...rest
4580
+ } = $$props;
4384
4581
  const context = getDropdownContext();
4385
4582
  const registerMenu = getDropdownRegister();
4386
4583
  const setOpen = getDropdownSetOpen();
4584
+ const localeContext = getLocaleContext();
4585
+ let directionRevision = 0;
4586
+ const resolvedDirection = $71.derived(() => {
4587
+ if (direction === "auto") {
4588
+ return resolveTextDirection(context.anchorElement, localeContext?.direction) ?? direction;
4589
+ }
4590
+ return direction ?? resolveTextDirection(context.anchorElement, localeContext?.direction);
4591
+ });
4592
+ const fallbackAnchorElement = $71.derived(() => context.fallbackAnchorElement === undefined ? context.anchorElement : context.fallbackAnchorElement);
4387
4593
  let menuElement = null;
4388
4594
  let focusedFallbackOpen = false;
4389
4595
  const anchoredFallback = createAnchoredOverlay({
4390
- open: () => context.isOpen && !context.supportsPopover && Boolean(context.anchorElement),
4391
- anchor: () => context.anchorElement,
4596
+ open: () => context.isOpen && !context.supportsPopover && Boolean(fallbackAnchorElement()),
4597
+ anchor: () => fallbackAnchorElement(),
4392
4598
  panel: () => menuElement,
4393
4599
  placement: () => context.fallbackPlacement ?? "bottom-end",
4394
4600
  offset: () => 4,
4395
4601
  widthMode: () => context.widthMode ?? "menu"
4396
4602
  });
4603
+ const fallbackPositionStyle = $71.derived(() => context.fallbackPositionStyle ?? (fallbackAnchorElement() ? anchoredFallback.positionStyle : undefined));
4604
+ const fallbackPositionReady = $71.derived(() => context.fallbackPositionReady ?? (fallbackAnchorElement() ? anchoredFallback.positionReady : undefined));
4397
4605
  const fallbackPortalAttachment = createPortalAttachment({
4398
4606
  target: () => typeof document === "undefined" ? null : document.body,
4399
4607
  source: () => context.anchorElement,
@@ -4403,7 +4611,7 @@ function Dropdown_menu($$renderer, $$props) {
4403
4611
  function getOwnedMenuItems() {
4404
4612
  if (!menuElement)
4405
4613
  return [];
4406
- return Array.from(menuElement.querySelectorAll('[role="menuitem"]:not([data-disabled])')).filter((item) => item.closest('[role="menu"]') === menuElement);
4614
+ return Array.from(menuElement.querySelectorAll('[role="menuitem"]:not([data-disabled]), [role="menuitemradio"]:not([data-disabled])')).filter((item) => item.closest('[role="menu"]') === menuElement);
4407
4615
  }
4408
4616
  function focusMenuItem(index) {
4409
4617
  const items = getOwnedMenuItems();
@@ -4459,16 +4667,18 @@ function Dropdown_menu($$renderer, $$props) {
4459
4667
  }
4460
4668
  if (context.supportsPopover || context.isOpen) {
4461
4669
  $$renderer2.push("<!--[0-->");
4462
- $$renderer2.push(`<div${$70.attributes({
4670
+ $$renderer2.push(`<div${$71.attributes({
4463
4671
  id: context.menuId,
4464
4672
  popover: context.supportsPopover ? "auto" : undefined,
4465
- class: $70.clsx(classNames("cinder-_floating-surface", "cinder-dropdown-menu", customClassName)),
4466
- style: context.supportsPopover ? `position-anchor: --${context.menuId};` : context.anchorElement ? anchoredFallback.positionStyle : undefined,
4673
+ class: $71.clsx(classNames("cinder-_floating-surface", "cinder-dropdown-menu", customClassName)),
4674
+ style: context.supportsPopover ? `position-anchor: --${context.menuId};` : fallbackPositionStyle(),
4467
4675
  role: "menu",
4468
4676
  "aria-orientation": "vertical",
4469
- "data-cinder-position-ready": !context.supportsPopover && context.anchorElement ? anchoredFallback.positionReady : undefined,
4677
+ "data-cinder-position-ready": !context.supportsPopover && fallbackPositionReady() !== undefined ? fallbackPositionReady() : undefined,
4470
4678
  tabindex: -1,
4471
- ...rest
4679
+ ...rest,
4680
+ dir: resolvedDirection(),
4681
+ "data-cinder-explicit-direction": resolvedDirection() ? "true" : undefined
4472
4682
  })}>`);
4473
4683
  if (children) {
4474
4684
  $$renderer2.push("<!--[0-->");
@@ -4486,11 +4696,13 @@ function Dropdown_menu($$renderer, $$props) {
4486
4696
  }
4487
4697
 
4488
4698
  // src/components/dropdown-item/dropdown-item.svelte
4489
- import * as $71 from "svelte/internal/server";
4699
+ import * as $72 from "svelte/internal/server";
4490
4700
  function Dropdown_item($$renderer, $$props) {
4491
4701
  $$renderer.component(($$renderer2) => {
4492
4702
  let {
4493
4703
  variant = "default",
4704
+ itemRole = "menuitem",
4705
+ checked = false,
4494
4706
  inset = false,
4495
4707
  disabled,
4496
4708
  closeOnSelect = true,
@@ -4504,8 +4716,8 @@ function Dropdown_item($$renderer, $$props) {
4504
4716
  ...rest
4505
4717
  } = $$props;
4506
4718
  const context = getDropdownContext();
4507
- const isLink = $71.derived(() => href !== undefined);
4508
- const sharedClass = $71.derived(() => classNames("cinder-_option-row", "cinder-dropdown-item", inset && "cinder-dropdown-item--inset", customClassName));
4719
+ const isLink = $72.derived(() => href !== undefined);
4720
+ const sharedClass = $72.derived(() => classNames("cinder-_option-row", "cinder-dropdown-item", inset && "cinder-dropdown-item--inset", customClassName));
4509
4721
  function handleClick(event) {
4510
4722
  if (disabled) {
4511
4723
  event.preventDefault();
@@ -4535,16 +4747,18 @@ function Dropdown_item($$renderer, $$props) {
4535
4747
  return;
4536
4748
  event.currentTarget.click();
4537
4749
  }
4538
- const anchorAttributes = rest;
4539
- const buttonAttributes = rest;
4540
- const buttonType = $71.derived(() => rest.type ?? "button");
4750
+ const anchorAttributes = $72.derived(() => rest);
4751
+ const buttonAttributes = $72.derived(() => rest);
4752
+ const buttonType = $72.derived(() => rest.type ?? "button");
4753
+ const ariaChecked = $72.derived(() => itemRole === "menuitemradio" ? checked : undefined);
4541
4754
  if (isLink()) {
4542
4755
  $$renderer2.push("<!--[0-->");
4543
- $$renderer2.push(`<a${$71.attributes({
4544
- ...anchorAttributes,
4756
+ $$renderer2.push(`<a${$72.attributes({
4757
+ ...anchorAttributes(),
4545
4758
  href,
4546
- role: "menuitem",
4547
- class: $71.clsx(sharedClass()),
4759
+ role: itemRole,
4760
+ "aria-checked": ariaChecked(),
4761
+ class: $72.clsx(sharedClass()),
4548
4762
  "data-cinder-variant": variant,
4549
4763
  tabindex: -1,
4550
4764
  "data-disabled": disabled ? "" : undefined,
@@ -4560,11 +4774,12 @@ function Dropdown_item($$renderer, $$props) {
4560
4774
  $$renderer2.push(`<!--]--></a>`);
4561
4775
  } else {
4562
4776
  $$renderer2.push("<!--[-1-->");
4563
- $$renderer2.push(`<button${$71.attributes({
4564
- ...buttonAttributes,
4777
+ $$renderer2.push(`<button${$72.attributes({
4778
+ ...buttonAttributes(),
4565
4779
  type: buttonType(),
4566
- role: "menuitem",
4567
- class: $71.clsx(sharedClass()),
4780
+ role: itemRole,
4781
+ "aria-checked": ariaChecked(),
4782
+ class: $72.clsx(sharedClass()),
4568
4783
  "data-cinder-variant": variant,
4569
4784
  tabindex: -1,
4570
4785
  "data-disabled": disabled ? "" : undefined,
@@ -4594,7 +4809,7 @@ function Toolbar_dropdown($$renderer, $$props) {
4594
4809
  onchange,
4595
4810
  class: className
4596
4811
  } = $$props;
4597
- const currentOption = $72.derived(() => options.find((opt) => opt.type === value) ?? options[0]);
4812
+ const currentOption = $73.derived(() => options.find((opt) => opt.type === value) ?? options[0]);
4598
4813
  function handleSelect(type) {
4599
4814
  onchange?.(type);
4600
4815
  }
@@ -4619,7 +4834,7 @@ function Toolbar_dropdown($$renderer, $$props) {
4619
4834
  } else {
4620
4835
  $$renderer4.push("<!--[-1-->");
4621
4836
  }
4622
- $$renderer4.push(`<!--]--> <span class="toolbar-dropdown-label svelte-1v28aut">${$72.escape(currentOption()?.label ?? "Paragraph")}</span>`);
4837
+ $$renderer4.push(`<!--]--> <span class="toolbar-dropdown-label svelte-1v28aut">${$73.escape(currentOption()?.label ?? "Paragraph")}</span>`);
4623
4838
  },
4624
4839
  $$slots: { default: true }
4625
4840
  });
@@ -4627,13 +4842,15 @@ function Toolbar_dropdown($$renderer, $$props) {
4627
4842
  Dropdown_menu($$renderer3, {
4628
4843
  children: ($$renderer4) => {
4629
4844
  $$renderer4.push(`<!--[-->`);
4630
- const each_array = $72.ensure_array_like(options);
4845
+ const each_array = $73.ensure_array_like(options);
4631
4846
  for (let $$index = 0, $$length = each_array.length;$$index < $$length; $$index++) {
4632
4847
  let option = each_array[$$index];
4633
4848
  const isActive = option.type === value;
4634
4849
  Dropdown_item($$renderer4, {
4635
4850
  onclick: () => handleSelect(option.type),
4636
4851
  "data-active": isActive ? "" : undefined,
4852
+ itemRole: "menuitemradio",
4853
+ checked: isActive,
4637
4854
  children: ($$renderer5) => {
4638
4855
  if (option.icon) {
4639
4856
  $$renderer5.push("<!--[-->");
@@ -4643,7 +4860,7 @@ function Toolbar_dropdown($$renderer, $$props) {
4643
4860
  $$renderer5.push("<!--[!-->");
4644
4861
  $$renderer5.push("<!--]-->");
4645
4862
  }
4646
- $$renderer5.push(` <span class="dropdown-item-label svelte-1v28aut">${$72.escape(option.label)}</span> `);
4863
+ $$renderer5.push(` <span class="dropdown-item-label svelte-1v28aut">${$73.escape(option.label)}</span> `);
4647
4864
  if (isActive) {
4648
4865
  $$renderer5.push("<!--[0-->");
4649
4866
  Check($$renderer5, { class: "icon-sm dropdown-item-check" });
@@ -4678,6 +4895,7 @@ function Editor_toolbar($$renderer, $$props) {
4678
4895
  canUndo = false,
4679
4896
  canRedo = false,
4680
4897
  disabled = false,
4898
+ linkPopoverOpen = false,
4681
4899
  onLinkClick,
4682
4900
  onUndo,
4683
4901
  onRedo,
@@ -4695,7 +4913,7 @@ function Editor_toolbar($$renderer, $$props) {
4695
4913
  { type: "heading3", label: "Heading 3", icon: Heading_3 },
4696
4914
  { type: "blockquote", label: "Quote", icon: Quote }
4697
4915
  ];
4698
- const currentBlockType = $73.derived(() => {
4916
+ const currentBlockType = $74.derived(() => {
4699
4917
  if (activeBlockType.type === "heading") {
4700
4918
  switch (activeBlockType.headingLevel) {
4701
4919
  case 1:
@@ -4767,7 +4985,7 @@ function Editor_toolbar($$renderer, $$props) {
4767
4985
  break;
4768
4986
  }
4769
4987
  }
4770
- Toolbar($$renderer2, $73.spread_props([
4988
+ Toolbar($$renderer2, $74.spread_props([
4771
4989
  {
4772
4990
  id,
4773
4991
  "aria-label": "Formatting toolbar",
@@ -4859,8 +5077,8 @@ function Editor_toolbar($$renderer, $$props) {
4859
5077
  icon: Link,
4860
5078
  label: "Insert Link",
4861
5079
  shortcut: getShortcutDisplay("Mod-k"),
4862
- toggle: true,
4863
- pressed: activeMarks.link,
5080
+ "aria-haspopup": "dialog",
5081
+ "aria-expanded": linkPopoverOpen,
4864
5082
  disabled,
4865
5083
  onclick: handleLink,
4866
5084
  "data-testid": "toolbar-link"
@@ -4919,10 +5137,11 @@ function Editor_toolbar($$renderer, $$props) {
4919
5137
  });
4920
5138
  }
4921
5139
  // src/components/markdown-editor/editor-toolbar/link-popover.svelte
4922
- import * as $76 from "svelte/internal/server";
5140
+ import * as $77 from "svelte/internal/server";
5141
+ import { tick as tick2 } from "svelte";
4923
5142
 
4924
5143
  // src/components/input/input.svelte
4925
- import * as $74 from "svelte/internal/server";
5144
+ import * as $75 from "svelte/internal/server";
4926
5145
 
4927
5146
  // src/_internal/field-control.ts
4928
5147
  function describeId(fieldId, hasDescription) {
@@ -4963,26 +5182,20 @@ function resolveFieldControl(input) {
4963
5182
  }
4964
5183
 
4965
5184
  // src/_internal/form-field-context.ts
4966
- import { createContext as createContext3 } from "svelte";
4967
-
4968
- // src/_internal/optional-context.ts
4969
- function optionalContext(getStrict) {
4970
- return () => {
4971
- try {
4972
- return getStrict();
4973
- } catch {
4974
- return;
4975
- }
4976
- };
4977
- }
4978
-
4979
- // src/_internal/form-field-context.ts
4980
- var [getFormFieldContextStrict, setFormFieldContextRaw] = createContext3();
5185
+ import { createContext as createContext4 } from "svelte";
5186
+ var [getFormFieldContextStrict, setFormFieldContextRaw] = createContext4();
4981
5187
  function setFormFieldContext(context) {
4982
5188
  setFormFieldContextRaw(context);
4983
5189
  }
4984
5190
  var getFormFieldContext = optionalContext(getFormFieldContextStrict);
4985
5191
 
5192
+ // src/utilities/value-change.ts
5193
+ function commitValue(proposed, onValueChange, setValue) {
5194
+ const committed = onValueChange?.(proposed) ?? proposed;
5195
+ setValue(committed);
5196
+ return committed;
5197
+ }
5198
+
4986
5199
  // src/components/input/input.svelte
4987
5200
  function calendarIcon($$renderer) {
4988
5201
  $$renderer.push(`<svg aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="4" width="18" height="18" rx="2" ry="2"></rect><line x1="16" y1="2" x2="16" y2="6"></line><line x1="8" y1="2" x2="8" y2="6"></line><line x1="3" y1="10" x2="21" y2="10"></line></svg>`);
@@ -4992,6 +5205,7 @@ function Input($$renderer, $$props) {
4992
5205
  let {
4993
5206
  id,
4994
5207
  value = "",
5208
+ onValueChange,
4995
5209
  label,
4996
5210
  description,
4997
5211
  error,
@@ -5004,54 +5218,90 @@ function Input($$renderer, $$props) {
5004
5218
  leadingInteractive = false,
5005
5219
  trailingInteractive = false,
5006
5220
  "aria-describedby": consumerDescribedBy,
5221
+ "aria-invalid": consumerInvalid,
5222
+ oninput: consumerOninput,
5007
5223
  $$slots,
5008
5224
  $$events,
5009
5225
  ...rest
5010
5226
  } = $$props;
5011
5227
  const context = getFormFieldContext();
5012
- const defaultDescriptionId = $74.derived(() => describeId(id, !!description));
5013
- const defaultErrorId = $74.derived(() => errorId(id, !!error));
5014
- const ownDescriptionId = $74.derived(() => description && defaultDescriptionId() === context?.descriptionId ? `${id}-input-description` : defaultDescriptionId());
5015
- const ownErrorId = $74.derived(() => error && defaultErrorId() === context?.errorId ? `${id}-input-error` : defaultErrorId());
5016
- const resolvedDescriptionId = $74.derived(() => ownDescriptionId() ?? context?.descriptionId);
5017
- const resolvedErrorId = $74.derived(() => ownErrorId() ?? context?.errorId);
5018
- const describedBy = $74.derived(() => composeDescribedBy(resolvedDescriptionId(), resolvedErrorId(), consumerDescribedBy));
5019
- const resolvedAriaInvalid = $74.derived(() => error ? ariaInvalid(true) : context?.invalid ?? rest["aria-invalid"] ?? ariaInvalid(false));
5020
- const resolvedRequired = $74.derived(() => required ?? context?.required ?? false);
5021
- const resolvedDisabled = $74.derived(() => disabled ?? context?.disabled ?? false);
5022
- const isNativeDateInput = $74.derived(() => type === "date");
5023
- const rendersNativeDateIcon = $74.derived(() => isNativeDateInput() && !trailing);
5024
- const hasTrailing = $74.derived(() => !!trailing || isNativeDateInput());
5025
- const hasGroupWrapper = $74.derived(() => !!leading || hasTrailing());
5026
- const isInvalid = $74.derived(() => resolvedAriaInvalid() === "true" || resolvedAriaInvalid() === true);
5228
+ const field = $75.derived(() => resolveFieldControl({
5229
+ id,
5230
+ generatedId: id,
5231
+ context,
5232
+ hasDescription: !!description,
5233
+ hasError: !!error,
5234
+ localIdNamespace: "input",
5235
+ consumerDescribedBy,
5236
+ consumerInvalid,
5237
+ required,
5238
+ disabled
5239
+ }));
5240
+ const ownDescriptionId = $75.derived(() => field().ownDescriptionId);
5241
+ const ownErrorId = $75.derived(() => field().ownErrorId);
5242
+ const describedBy = $75.derived(() => field().describedBy);
5243
+ const resolvedAriaInvalid = $75.derived(() => field().ariaInvalid);
5244
+ const resolvedRequired = $75.derived(() => field().required);
5245
+ const resolvedDisabled = $75.derived(() => field().disabled);
5246
+ const isNativeDateInput = $75.derived(() => type === "date");
5247
+ const rendersNativeDateIcon = $75.derived(() => isNativeDateInput() && !trailing);
5248
+ const hasTrailing = $75.derived(() => !!trailing || isNativeDateInput());
5249
+ const hasGroupWrapper = $75.derived(() => !!leading || hasTrailing());
5250
+ const isInvalid = $75.derived(() => resolvedAriaInvalid() === "true");
5251
+ let inputNode = undefined;
5252
+ let resetSyncTimeout;
5253
+ function syncValueAfterFormReset() {
5254
+ if (resetSyncTimeout !== undefined)
5255
+ clearTimeout(resetSyncTimeout);
5256
+ resetSyncTimeout = setTimeout(() => {
5257
+ resetSyncTimeout = undefined;
5258
+ if (inputNode)
5259
+ value = inputNode.value;
5260
+ }, 0);
5261
+ }
5262
+ function handleInput(event) {
5263
+ const target = event.currentTarget;
5264
+ const committed = commitValue(target.value, onValueChange, (next) => {
5265
+ value = next;
5266
+ });
5267
+ target.value = committed;
5268
+ consumerOninput?.(event);
5269
+ }
5027
5270
  function inputElement($$renderer3) {
5028
- $$renderer3.push(`<input${$74.attributes({
5271
+ $$renderer3.push(`<input${$75.attributes({
5029
5272
  id,
5030
5273
  type,
5274
+ ...rest,
5031
5275
  disabled: resolvedDisabled(),
5032
5276
  required: resolvedRequired(),
5033
5277
  value,
5034
- class: $74.clsx(classNames("cinder-input", className)),
5278
+ class: $75.clsx(classNames("cinder-input", className)),
5035
5279
  "data-cinder-native-date": rendersNativeDateIcon() ? "" : undefined,
5036
5280
  "aria-invalid": resolvedAriaInvalid(),
5037
- "aria-describedby": describedBy(),
5038
- ...rest
5281
+ "aria-describedby": describedBy()
5039
5282
  }, undefined, undefined, undefined, 4)}/>`);
5040
5283
  }
5041
5284
  $$renderer2.push(`<div class="cinder-input-field">`);
5042
5285
  if (label) {
5043
5286
  $$renderer2.push("<!--[0-->");
5044
- $$renderer2.push(`<label${$74.attr("for", id)} class="cinder-input-field__label"${$74.attr("data-disabled", resolvedDisabled() || undefined)}>${$74.escape(label)}</label>`);
5287
+ $$renderer2.push(`<label${$75.attr("for", id)} class="cinder-input-field__label"${$75.attr("data-disabled", resolvedDisabled() || undefined)}>${$75.escape(label)} `);
5288
+ if (resolvedRequired()) {
5289
+ $$renderer2.push("<!--[0-->");
5290
+ $$renderer2.push(`<span class="cinder-_required-marker" aria-hidden="true">*</span>`);
5291
+ } else {
5292
+ $$renderer2.push("<!--[-1-->");
5293
+ }
5294
+ $$renderer2.push(`<!--]--></label>`);
5045
5295
  } else {
5046
5296
  $$renderer2.push("<!--[-1-->");
5047
5297
  }
5048
5298
  $$renderer2.push(`<!--]--> `);
5049
5299
  if (hasGroupWrapper()) {
5050
5300
  $$renderer2.push("<!--[0-->");
5051
- $$renderer2.push(`<div class="cinder-input-group"${$74.attr("data-leading", leading ? "" : undefined)}${$74.attr("data-trailing", hasTrailing() ? "" : undefined)}${$74.attr("data-native-date", rendersNativeDateIcon() ? "" : undefined)}${$74.attr("data-disabled", resolvedDisabled() ? "" : undefined)}${$74.attr("data-invalid", isInvalid() ? "" : undefined)}>`);
5301
+ $$renderer2.push(`<div class="cinder-input-group"${$75.attr("data-leading", leading ? "" : undefined)}${$75.attr("data-trailing", hasTrailing() ? "" : undefined)}${$75.attr("data-native-date", rendersNativeDateIcon() ? "" : undefined)}${$75.attr("data-disabled", resolvedDisabled() ? "" : undefined)}${$75.attr("data-invalid", isInvalid() ? "" : undefined)}>`);
5052
5302
  if (leading) {
5053
5303
  $$renderer2.push("<!--[0-->");
5054
- $$renderer2.push(`<span class="cinder-input-group__leading cinder-_truncate"${$74.attr("aria-hidden", leadingInteractive ? undefined : "true")}>`);
5304
+ $$renderer2.push(`<span class="cinder-input-group__leading cinder-_truncate"${$75.attr("aria-hidden", leadingInteractive ? undefined : "true")}>`);
5055
5305
  leading($$renderer2);
5056
5306
  $$renderer2.push(`<!----></span>`);
5057
5307
  } else {
@@ -5062,7 +5312,7 @@ function Input($$renderer, $$props) {
5062
5312
  $$renderer2.push(`<!----> `);
5063
5313
  if (trailing) {
5064
5314
  $$renderer2.push("<!--[0-->");
5065
- $$renderer2.push(`<span class="cinder-input-group__trailing cinder-_truncate"${$74.attr("aria-hidden", trailingInteractive ? undefined : "true")}>`);
5315
+ $$renderer2.push(`<span class="cinder-input-group__trailing cinder-_truncate"${$75.attr("aria-hidden", trailingInteractive ? undefined : "true")}>`);
5066
5316
  trailing($$renderer2);
5067
5317
  $$renderer2.push(`<!----></span>`);
5068
5318
  } else if (rendersNativeDateIcon()) {
@@ -5081,26 +5331,26 @@ function Input($$renderer, $$props) {
5081
5331
  $$renderer2.push(`<!--]--> `);
5082
5332
  if (description) {
5083
5333
  $$renderer2.push("<!--[0-->");
5084
- $$renderer2.push(`<p${$74.attr("id", ownDescriptionId())} class="cinder-input-field__description">${$74.escape(description)}</p>`);
5334
+ $$renderer2.push(`<p${$75.attr("id", ownDescriptionId())} class="cinder-input-field__description">${$75.escape(description)}</p>`);
5085
5335
  } else {
5086
5336
  $$renderer2.push("<!--[-1-->");
5087
5337
  }
5088
5338
  $$renderer2.push(`<!--]--> `);
5089
5339
  if (error) {
5090
5340
  $$renderer2.push("<!--[0-->");
5091
- $$renderer2.push(`<p${$74.attr("id", ownErrorId())} class="cinder-input-field__error" aria-live="polite">${$74.escape(error)}</p>`);
5341
+ $$renderer2.push(`<p${$75.attr("id", ownErrorId())} class="cinder-input-field__error" aria-live="polite">${$75.escape(error)}</p>`);
5092
5342
  } else {
5093
5343
  $$renderer2.push("<!--[-1-->");
5094
5344
  }
5095
5345
  $$renderer2.push(`<!--]--></div>`);
5096
- $74.bind_props($$props, { value });
5346
+ $75.bind_props($$props, { value });
5097
5347
  });
5098
5348
  }
5099
5349
 
5100
5350
  // ../../node_modules/lucide-svelte/dist/icons/unlink.svelte
5101
- import * as $75 from "svelte/internal/server";
5351
+ import * as $76 from "svelte/internal/server";
5102
5352
  function Unlink($$renderer, $$props) {
5103
- const $$sanitized_props = $75.sanitize_props($$props);
5353
+ const $$sanitized_props = $76.sanitize_props($$props);
5104
5354
  const iconNode = [
5105
5355
  [
5106
5356
  "path",
@@ -5119,14 +5369,14 @@ function Unlink($$renderer, $$props) {
5119
5369
  ["line", { x1: "16", x2: "16", y1: "19", y2: "22" }],
5120
5370
  ["line", { x1: "19", x2: "22", y1: "16", y2: "16" }]
5121
5371
  ];
5122
- Icon($$renderer, $75.spread_props([
5372
+ Icon($$renderer, $76.spread_props([
5123
5373
  { name: "unlink" },
5124
5374
  $$sanitized_props,
5125
5375
  {
5126
5376
  iconNode,
5127
5377
  children: ($$renderer2) => {
5128
5378
  $$renderer2.push(`<!--[-->`);
5129
- $75.slot($$renderer2, $$props, "default", {}, null);
5379
+ $76.slot($$renderer2, $$props, "default", {}, null);
5130
5380
  $$renderer2.push(`<!--]-->`);
5131
5381
  },
5132
5382
  $$slots: { default: true }
@@ -5159,6 +5409,7 @@ function Link_popover($$renderer, $$props) {
5159
5409
  });
5160
5410
  let url = initialUrl;
5161
5411
  let text = initialText;
5412
+ let initialFocusApplied = false;
5162
5413
  const ALLOWED_PROTOCOLS = [
5163
5414
  "http:",
5164
5415
  "https:",
@@ -5169,7 +5420,7 @@ function Link_popover($$renderer, $$props) {
5169
5420
  "sms:"
5170
5421
  ];
5171
5422
  const DANGEROUS_SCHEMES = ["javascript:", "data:", "vbscript:"];
5172
- const urlError = $76.derived(() => {
5423
+ const urlError = $77.derived(() => {
5173
5424
  if (!url.trim())
5174
5425
  return;
5175
5426
  const trimmedUrl = url.trim().toLowerCase();
@@ -5198,7 +5449,7 @@ function Link_popover($$renderer, $$props) {
5198
5449
  }
5199
5450
  }
5200
5451
  });
5201
- const canSubmit = $76.derived(() => url.trim() && !urlError() && (hasSelection || text.trim()));
5452
+ const canSubmit = $77.derived(() => url.trim() && !urlError() && (hasSelection || text.trim()));
5202
5453
  function handleKeyDown(event) {
5203
5454
  if (event.key === "Escape" && !event.defaultPrevented) {
5204
5455
  event.preventDefault();
@@ -5226,9 +5477,9 @@ function Link_popover($$renderer, $$props) {
5226
5477
  let $$settled = true;
5227
5478
  let $$inner_renderer;
5228
5479
  function $$render_inner($$renderer3) {
5229
- $$renderer3.push(`<div${$76.attr("id", id)} role="dialog" aria-modal="true"${$76.attr("aria-labelledby", `${id}-title`)} tabindex="-1"${$76.attr_class($76.clsx(classNames("link-popover", className)), "svelte-13b14j2")}${$76.attr_style(anchorElement ? anchoredOverlay.positionStyle : undefined)}${$76.attr("data-position-ready", anchorElement ? anchoredOverlay.positionReady : undefined)}${$76.attr("inert", anchorElement && !anchoredOverlay.positionReady ? true : undefined, true)}><header class="link-popover-header svelte-13b14j2"><h2${$76.attr("id", `${id}-title`)} class="link-popover-title svelte-13b14j2">`);
5480
+ $$renderer3.push(`<div${$77.attr("id", id)} role="dialog" aria-modal="true"${$77.attr("aria-labelledby", `${id}-title`)} tabindex="-1"${$77.attr_class($77.clsx(classNames("link-popover", className)), "svelte-13b14j2")}${$77.attr_style(anchorElement ? anchoredOverlay.positionStyle : undefined)}${$77.attr("data-position-ready", anchorElement ? anchoredOverlay.positionReady : undefined)}${$77.attr("inert", anchorElement && !anchoredOverlay.positionReady ? true : undefined, true)}><header class="link-popover-header svelte-13b14j2"><h2${$77.attr("id", `${id}-title`)} class="link-popover-title svelte-13b14j2">`);
5230
5481
  Link($$renderer3, { class: "icon-sm" });
5231
- $$renderer3.push(`<!----> ${$76.escape(mode === "insert" ? "Insert Link" : "Edit Link")}</h2> <button type="button" class="link-popover-close svelte-13b14j2" aria-label="Close">`);
5482
+ $$renderer3.push(`<!----> ${$77.escape(mode === "insert" ? "Insert Link" : "Edit Link")}</h2> <button type="button" class="link-popover-close svelte-13b14j2" aria-label="Close">`);
5232
5483
  X($$renderer3, { class: "icon-sm" });
5233
5484
  $$renderer3.push(`<!----></button></header> <div class="link-popover-content svelte-13b14j2">`);
5234
5485
  Input($$renderer3, {
@@ -5298,7 +5549,7 @@ function Link_popover($$renderer, $$props) {
5298
5549
  onclick: handleSubmit,
5299
5550
  disabled: !canSubmit(),
5300
5551
  children: ($$renderer4) => {
5301
- $$renderer4.push(`<!---->${$76.escape(mode === "insert" ? "Insert" : "Update")}`);
5552
+ $$renderer4.push(`<!---->${$77.escape(mode === "insert" ? "Insert" : "Update")}`);
5302
5553
  },
5303
5554
  $$slots: { default: true }
5304
5555
  });
@@ -5327,10 +5578,10 @@ function Markdown_editor($$renderer, $$props) {
5327
5578
  showToolbar = true,
5328
5579
  class: className,
5329
5580
  onchange,
5330
- onReady,
5581
+ onready,
5331
5582
  onmodechange,
5332
- onSelectionChange,
5333
- onCommentShortcut,
5583
+ onselectionchange,
5584
+ oncommentshortcut,
5334
5585
  plugins = [],
5335
5586
  placeholderCompletion,
5336
5587
  placeholderDecoration,
@@ -5344,7 +5595,7 @@ function Markdown_editor($$renderer, $$props) {
5344
5595
  ...rest
5345
5596
  } = $$props;
5346
5597
  let wrapperElement = null;
5347
- const escapedPlaceholder = $77.derived(() => placeholder.replace(/'/g, "\\'"));
5598
+ const escapedPlaceholder = $78.derived(() => placeholder.replace(/'/g, "\\'"));
5348
5599
  let editorState = null;
5349
5600
  let isInitializing = true;
5350
5601
  let pipelineUtilities = null;
@@ -5371,8 +5622,8 @@ function Markdown_editor($$renderer, $$props) {
5371
5622
  }
5372
5623
  let selectionVersion = 0;
5373
5624
  let historyUtilities = null;
5374
- const editorContext = $77.derived(() => editorState?.editor?.ctx ?? null);
5375
- const activeMarks = $77.derived(() => {
5625
+ const editorContext = $78.derived(() => editorState?.editor?.ctx ?? null);
5626
+ const activeMarks = $78.derived(() => {
5376
5627
  if (!editorContext()) {
5377
5628
  return {
5378
5629
  bold: false,
@@ -5384,26 +5635,26 @@ function Markdown_editor($$renderer, $$props) {
5384
5635
  }
5385
5636
  return getActiveMarks(editorContext());
5386
5637
  });
5387
- const activeBlockType = $77.derived(() => {
5638
+ const activeBlockType = $78.derived(() => {
5388
5639
  if (!editorContext()) {
5389
5640
  return { type: "paragraph" };
5390
5641
  }
5391
5642
  return getActiveBlockType(editorContext());
5392
5643
  });
5393
- const canUndo = $77.derived(() => {
5644
+ const canUndo = $78.derived(() => {
5394
5645
  const view = editorState?.view;
5395
5646
  if (!view || historyUtilities === null)
5396
5647
  return false;
5397
5648
  return historyUtilities.undoDepth(view.state) > 0;
5398
5649
  });
5399
- const canRedo = $77.derived(() => {
5650
+ const canRedo = $78.derived(() => {
5400
5651
  const view = editorState?.view;
5401
5652
  if (!view || historyUtilities === null)
5402
5653
  return false;
5403
5654
  return historyUtilities.redoDepth(view.state) > 0;
5404
5655
  });
5405
- const toolbarVisible = $77.derived(() => showToolbar && !readonly && false_default && (mode === "wysiwyg" || showModeToggle));
5406
- const toolbarContext = $77.derived(() => ({
5656
+ const toolbarVisible = $78.derived(() => showToolbar && !readonly && false_default && (mode === "wysiwyg" || showModeToggle));
5657
+ const toolbarContext = $78.derived(() => ({
5407
5658
  editorContext: editorContext(),
5408
5659
  activeMarks: activeMarks(),
5409
5660
  activeBlockType: activeBlockType(),
@@ -5413,30 +5664,30 @@ function Markdown_editor($$renderer, $$props) {
5413
5664
  }));
5414
5665
  let linkPopoverOpen = false;
5415
5666
  let linkPopoverAnchorElement = null;
5416
- const linkPopoverMode = $77.derived(() => {
5667
+ const linkPopoverMode = $78.derived(() => {
5417
5668
  if (!editorContext())
5418
5669
  return "insert";
5419
5670
  const existingUrl = getLinkAtCursor(editorContext());
5420
5671
  return existingUrl ? "edit" : "insert";
5421
5672
  });
5422
- const linkPopoverInitialUrl = $77.derived(() => {
5673
+ const linkPopoverInitialUrl = $78.derived(() => {
5423
5674
  if (!editorContext())
5424
5675
  return "";
5425
5676
  return getLinkAtCursor(editorContext()) ?? "";
5426
5677
  });
5427
- const linkPopoverHasSelection = $77.derived(() => {
5678
+ const linkPopoverHasSelection = $78.derived(() => {
5428
5679
  if (!editorContext())
5429
5680
  return false;
5430
5681
  return !isSelectionCollapsed(editorContext());
5431
5682
  });
5432
- const linkPopoverInitialText = $77.derived(() => {
5683
+ const linkPopoverInitialText = $78.derived(() => {
5433
5684
  if (!editorContext())
5434
5685
  return "";
5435
5686
  if (!isSelectionCollapsed(editorContext()))
5436
5687
  return "";
5437
5688
  return getLinkTextAtCursor(editorContext()) ?? "";
5438
5689
  });
5439
- const lastKnownLinkRange = $77.derived(() => {
5690
+ const lastKnownLinkRange = $78.derived(() => {
5440
5691
  if (!editorContext())
5441
5692
  return null;
5442
5693
  const url = getLinkAtCursor(editorContext());
@@ -5492,7 +5743,7 @@ function Markdown_editor($$renderer, $$props) {
5492
5743
  linkPopoverAnchorElement = null;
5493
5744
  editorState?.focus();
5494
5745
  }
5495
- function handleLinkInsert(url, text) {
5746
+ function handleLinkInsert(url, text = undefined) {
5496
5747
  if (!editorContext())
5497
5748
  return;
5498
5749
  if (text) {
@@ -5536,12 +5787,12 @@ function Markdown_editor($$renderer, $$props) {
5536
5787
  getPlugins: () => plugins,
5537
5788
  getPlaceholderCompletion: () => placeholderCompletion,
5538
5789
  getPlaceholderDecoration: () => placeholderDecoration,
5539
- onReady: (state) => {
5790
+ onready: (state) => {
5540
5791
  editorState = state;
5541
5792
  isInitializing = false;
5542
- onReady?.();
5793
+ onready?.();
5543
5794
  },
5544
- onChange: (markdown) => {
5795
+ onchange: (markdown) => {
5545
5796
  isInternalUpdate = true;
5546
5797
  value = markdown;
5547
5798
  onchange?.(markdown);
@@ -5550,16 +5801,16 @@ function Markdown_editor($$renderer, $$props) {
5550
5801
  isInternalUpdate = false;
5551
5802
  });
5552
5803
  },
5553
- onSelectionChange: (selection) => {
5804
+ onselectionchange: (selection) => {
5554
5805
  selectionVersion++;
5555
- onSelectionChange?.(selection);
5806
+ onselectionchange?.(selection);
5556
5807
  },
5557
- onLinkShortcut: () => {
5808
+ onlinkshortcut: () => {
5558
5809
  capturedLinkRange = lastKnownLinkRange();
5559
5810
  linkPopoverAnchorElement = resolveLinkPopoverAnchor();
5560
5811
  linkPopoverOpen = true;
5561
5812
  },
5562
- onCommentShortcut: () => onCommentShortcut?.()
5813
+ oncommentshortcut: () => oncommentshortcut?.()
5563
5814
  });
5564
5815
  let previousMode = mode;
5565
5816
  function focus() {
@@ -5594,15 +5845,15 @@ function Markdown_editor($$renderer, $$props) {
5594
5845
  function getEditor() {
5595
5846
  return editorState?.editor ?? null;
5596
5847
  }
5597
- onDestroy2(() => {
5848
+ onDestroy(() => {
5598
5849
  editorState?.clearPendingTimers();
5599
5850
  editorState = null;
5600
5851
  });
5601
5852
  let $$settled = true;
5602
5853
  let $$inner_renderer;
5603
5854
  function $$render_inner($$renderer3) {
5604
- $$renderer3.push(`<div${$77.attributes({
5605
- class: $77.clsx(classNames("markdown-editor-wrapper", className)),
5855
+ $$renderer3.push(`<div${$78.attributes({
5856
+ class: $78.clsx(classNames("markdown-editor-wrapper", className)),
5606
5857
  "data-initializing": isInitializing || undefined,
5607
5858
  "data-ready": !isInitializing ? true : undefined,
5608
5859
  "data-mode": mode,
@@ -5636,6 +5887,7 @@ function Markdown_editor($$renderer, $$props) {
5636
5887
  activeBlockType: activeBlockType(),
5637
5888
  canUndo: canUndo(),
5638
5889
  canRedo: canRedo(),
5890
+ linkPopoverOpen,
5639
5891
  disabled: !editorContext(),
5640
5892
  onLinkClick: handleLinkClick,
5641
5893
  onUndo: handleUndo,
@@ -5702,13 +5954,13 @@ function Markdown_editor($$renderer, $$props) {
5702
5954
  $$renderer3.push("<!--[0-->");
5703
5955
  if (mode === "wysiwyg") {
5704
5956
  $$renderer3.push("<!--[0-->");
5705
- $$renderer3.push(`<div${$77.attr("id", id)} class="cinder-markdown-content prose markdown-editor surface svelte-1mxvqjb"${$77.attr("data-readonly", readonly || undefined)} role="application"${$77.attr("aria-label", label || "Markdown editor")} tabindex="0"${$77.attr_style("", {
5706
- "--editor-placeholder": `'${$77.stringify(escapedPlaceholder())}'`
5957
+ $$renderer3.push(`<div${$78.attr("id", id)} class="cinder-markdown-content prose markdown-editor surface svelte-1mxvqjb"${$78.attr("data-readonly", readonly || undefined)} role="application"${$78.attr("aria-label", label || "Markdown editor")} tabindex="0"${$78.attr_style("", {
5958
+ "--editor-placeholder": `'${$78.stringify(escapedPlaceholder())}'`
5707
5959
  })}></div>`);
5708
5960
  } else {
5709
5961
  $$renderer3.push("<!--[-1-->");
5710
- $$renderer3.push(`<textarea${$77.attr("id", id)} class="markdown-editor surface source-mode svelte-1mxvqjb"${$77.attr("placeholder", placeholder)}${$77.attr("readonly", readonly || undefined, true)}${$77.attr("aria-label", label)}${$77.attr("aria-describedby", ariaDescribedby)}>`);
5711
- const $$body = $77.escape(value);
5962
+ $$renderer3.push(`<textarea${$78.attr("id", id)} class="markdown-editor surface source-mode svelte-1mxvqjb"${$78.attr("placeholder", placeholder)}${$78.attr("readonly", readonly || undefined, true)}${$78.attr("aria-label", label)}${$78.attr("aria-describedby", ariaDescribedby)} aria-multiline="true">`);
5963
+ const $$body = $78.escape(value);
5712
5964
  if ($$body) {
5713
5965
  $$renderer3.push(`${$$body}`);
5714
5966
  } else {}
@@ -5744,7 +5996,7 @@ function Markdown_editor($$renderer, $$props) {
5744
5996
  $$render_inner($$inner_renderer);
5745
5997
  } while (!$$settled);
5746
5998
  $$renderer2.subsume($$inner_renderer);
5747
- $77.bind_props($$props, {
5999
+ $78.bind_props($$props, {
5748
6000
  value,
5749
6001
  mode,
5750
6002
  focus,
@@ -5767,6 +6019,7 @@ function Chat_input($$renderer, $$props) {
5767
6019
  id,
5768
6020
  value = "",
5769
6021
  placeholder = "Type a message...",
6022
+ composerLabel = "Message",
5770
6023
  disabled = false,
5771
6024
  sending = false,
5772
6025
  error,
@@ -5800,7 +6053,7 @@ function Chat_input($$renderer, $$props) {
5800
6053
  $$events,
5801
6054
  ...rest
5802
6055
  } = $$props;
5803
- const showStopButton = $78.derived(() => sending && onstop !== undefined);
6056
+ const showStopButton = $79.derived(() => sending && onstop !== undefined);
5804
6057
  let formElement = null;
5805
6058
  let editorRef;
5806
6059
  let fileInputRef = null;
@@ -5808,13 +6061,13 @@ function Chat_input($$renderer, $$props) {
5808
6061
  let isDragOver = false;
5809
6062
  let isComposing = false;
5810
6063
  const announcer = useAnnouncer();
5811
- const errorId2 = $78.derived(() => `${id}-error`);
5812
- const hintId = $78.derived(() => `${id}-hint`);
5813
- const shortcutDescriptionId = $78.derived(() => `${id}-shortcut-description`);
5814
- const isWhitespaceOnly = $78.derived(() => value.trim().length === 0);
5815
- const hasPendingAttachments = $78.derived(() => attachments.some((a) => a.status === "pending" || a.status === "uploading"));
5816
- const canSubmit = $78.derived(() => !isWhitespaceOnly() && !disabled && !sending && !hasPendingAttachments());
5817
- const isFormActionMode = $78.derived(() => !!action);
6064
+ const errorId2 = $79.derived(() => `${id}-error`);
6065
+ const hintId = $79.derived(() => `${id}-hint`);
6066
+ const shortcutDescriptionId = $79.derived(() => `${id}-shortcut-description`);
6067
+ const isWhitespaceOnly = $79.derived(() => value.trim().length === 0);
6068
+ const hasPendingAttachments = $79.derived(() => attachments.some((a) => a.status === "pending" || a.status === "uploading"));
6069
+ const canSubmit = $79.derived(() => !isWhitespaceOnly() && !disabled && !sending && !hasPendingAttachments());
6070
+ const isFormActionMode = $79.derived(() => !!action);
5818
6071
  function isValidType(file) {
5819
6072
  return acceptedTypes.some((type) => {
5820
6073
  if (type.endsWith("/*")) {
@@ -5981,14 +6234,14 @@ function Chat_input($$renderer, $$props) {
5981
6234
  return;
5982
6235
  files.forEach(addAttachment);
5983
6236
  }
5984
- onDestroy3(() => {
6237
+ onDestroy2(() => {
5985
6238
  attachments.forEach((a) => URL.revokeObjectURL(a.previewUrl));
5986
6239
  });
5987
6240
  let $$settled = true;
5988
6241
  let $$inner_renderer;
5989
6242
  function $$render_inner($$renderer3) {
5990
- $$renderer3.push(`<form${$78.attributes({
5991
- class: $78.clsx(classNames("chat-input", isDragOver && "chat-input-dragover", className)),
6243
+ $$renderer3.push(`<form${$79.attributes({
6244
+ class: $79.clsx(classNames("chat-input", isDragOver && "chat-input-dragover", className)),
5992
6245
  method: "POST",
5993
6246
  action,
5994
6247
  "aria-label": "Chat message composer",
@@ -5997,7 +6250,7 @@ function Chat_input($$renderer, $$props) {
5997
6250
  }, "svelte-1tzweuh")}>`);
5998
6251
  if (isFormActionMode()) {
5999
6252
  $$renderer3.push("<!--[0-->");
6000
- $$renderer3.push(`<input type="hidden"${$78.attr("name", name)}${$78.attr("value", value)}/>`);
6253
+ $$renderer3.push(`<input type="hidden"${$79.attr("name", name)}${$79.attr("value", value)}/>`);
6001
6254
  } else {
6002
6255
  $$renderer3.push("<!--[-1-->");
6003
6256
  }
@@ -6005,12 +6258,12 @@ function Chat_input($$renderer, $$props) {
6005
6258
  if (attachments.length > 0) {
6006
6259
  $$renderer3.push("<!--[0-->");
6007
6260
  $$renderer3.push(`<div class="chat-input-attachments svelte-1tzweuh" role="list" aria-label="Attached files"><!--[-->`);
6008
- const each_array = $78.ensure_array_like(attachments);
6261
+ const each_array = $79.ensure_array_like(attachments);
6009
6262
  for (let $$index = 0, $$length = each_array.length;$$index < $$length; $$index++) {
6010
6263
  let attachment = each_array[$$index];
6011
6264
  $$renderer3.push(`<div class="chat-input-attachment-wrapper svelte-1tzweuh" role="listitem">`);
6012
6265
  Chat_attachment_preview($$renderer3, { attachment });
6013
- $$renderer3.push(`<!----> <button type="button" class="chat-input-attachment-remove svelte-1tzweuh"${$78.attr("aria-label", `Remove ${attachment.file.name}`)}>`);
6266
+ $$renderer3.push(`<!----> <button type="button" class="chat-input-attachment-remove svelte-1tzweuh"${$79.attr("aria-label", `Remove ${attachment.file.name}`)}>`);
6014
6267
  X($$renderer3, { class: "icon-xs" });
6015
6268
  $$renderer3.push(`<!----></button></div>`);
6016
6269
  }
@@ -6022,6 +6275,7 @@ function Chat_input($$renderer, $$props) {
6022
6275
  Markdown_editor($$renderer3, {
6023
6276
  id: `${id}-editor`,
6024
6277
  placeholder,
6278
+ label: composerLabel,
6025
6279
  readonly: disabled || sending,
6026
6280
  showToolbar: false,
6027
6281
  showModeToggle: false,
@@ -6038,7 +6292,7 @@ function Chat_input($$renderer, $$props) {
6038
6292
  $$renderer3.push(`<!----></div> <div class="chat-input-footer svelte-1tzweuh"><div class="chat-input-footer-left svelte-1tzweuh">`);
6039
6293
  if (allowAttachments) {
6040
6294
  $$renderer3.push("<!--[0-->");
6041
- $$renderer3.push(`<input${$78.attr("id", `${id}-file-picker`)} type="file"${$78.attr("accept", acceptedTypes.join(","))} multiple="" class="sr-only svelte-1tzweuh" aria-label="Attach files"${$78.attr("tabindex", -1)}/> `);
6295
+ $$renderer3.push(`<input${$79.attr("id", `${id}-file-picker`)} type="file"${$79.attr("accept", acceptedTypes.join(","))} multiple="" class="sr-only svelte-1tzweuh" aria-label="Attach files"${$79.attr("tabindex", -1)}/> `);
6042
6296
  Button($$renderer3, {
6043
6297
  type: "button",
6044
6298
  variant: "ghost",
@@ -6055,7 +6309,22 @@ function Chat_input($$renderer, $$props) {
6055
6309
  } else {
6056
6310
  $$renderer3.push("<!--[-1-->");
6057
6311
  }
6058
- $$renderer3.push(`<!--]--> <span${$78.attr("id", shortcutDescriptionId())} class="sr-only svelte-1tzweuh">Press Enter to send, Shift+Enter for newline</span> <span${$78.attr("id", hintId())} class="chat-input-hint svelte-1tzweuh" aria-hidden="true"><kbd class="svelte-1tzweuh">Enter</kbd> to send, <kbd class="svelte-1tzweuh">Shift</kbd>+<kbd class="svelte-1tzweuh">Enter</kbd> for newline</span></div> <div class="chat-input-footer-right svelte-1tzweuh">`);
6312
+ $$renderer3.push(`<!--]--> <span${$79.attr("id", shortcutDescriptionId())} class="sr-only svelte-1tzweuh">`);
6313
+ if (showStopButton()) {
6314
+ $$renderer3.push("<!--[0-->");
6315
+ $$renderer3.push(`Response is streaming. Use the stop button to stop generation.`);
6316
+ } else {
6317
+ $$renderer3.push("<!--[-1-->");
6318
+ $$renderer3.push(`Press Enter to send, Shift+Enter for newline`);
6319
+ }
6320
+ $$renderer3.push(`<!--]--></span> `);
6321
+ if (!showStopButton()) {
6322
+ $$renderer3.push("<!--[0-->");
6323
+ $$renderer3.push(`<span${$79.attr("id", hintId())} class="chat-input-hint svelte-1tzweuh" aria-hidden="true"><kbd class="svelte-1tzweuh">Enter</kbd> to send, <kbd class="svelte-1tzweuh">Shift</kbd>+<kbd class="svelte-1tzweuh">Enter</kbd> for newline</span>`);
6324
+ } else {
6325
+ $$renderer3.push("<!--[-1-->");
6326
+ }
6327
+ $$renderer3.push(`<!--]--></div> <div class="chat-input-footer-right svelte-1tzweuh">`);
6059
6328
  if (actions) {
6060
6329
  $$renderer3.push("<!--[0-->");
6061
6330
  actions($$renderer3);
@@ -6066,12 +6335,12 @@ function Chat_input($$renderer, $$props) {
6066
6335
  $$renderer3.push(`<!--]--> `);
6067
6336
  if (showStopButton()) {
6068
6337
  $$renderer3.push("<!--[0-->");
6069
- $$renderer3.push(`<button type="button" class="chat-input-send svelte-1tzweuh" data-stop="" aria-label="Stop generating">`);
6338
+ $$renderer3.push(`<button type="button" class="chat-input-send svelte-1tzweuh" data-stop="" aria-label="Stop generating"${$79.attr("aria-describedby", shortcutDescriptionId())}>`);
6070
6339
  Square($$renderer3, { class: "icon-sm" });
6071
6340
  $$renderer3.push(`<!----></button>`);
6072
6341
  } else {
6073
6342
  $$renderer3.push("<!--[-1-->");
6074
- $$renderer3.push(`<button type="submit" class="chat-input-send svelte-1tzweuh"${$78.attr("disabled", !canSubmit(), true)}${$78.attr("aria-label", sending ? "Sending message" : "Send message")}${$78.attr("aria-describedby", shortcutDescriptionId())}>`);
6343
+ $$renderer3.push(`<button type="submit" class="chat-input-send svelte-1tzweuh"${$79.attr("disabled", !canSubmit(), true)}${$79.attr("aria-label", sending ? "Sending message" : "Send message")}${$79.attr("aria-describedby", shortcutDescriptionId())}>`);
6075
6344
  if (sending) {
6076
6345
  $$renderer3.push("<!--[0-->");
6077
6346
  $$renderer3.push(`<svg class="chat-input-spinner svelte-1tzweuh" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" aria-hidden="true"><circle class="spinner-track svelte-1tzweuh" cx="12" cy="12" r="10" stroke="currentColor" stroke-width="4"></circle><path class="spinner-head svelte-1tzweuh" fill="currentColor" d="M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"></path></svg>`);
@@ -6084,11 +6353,11 @@ function Chat_input($$renderer, $$props) {
6084
6353
  $$renderer3.push(`<!--]--></div></div> `);
6085
6354
  if (error) {
6086
6355
  $$renderer3.push("<!--[0-->");
6087
- $$renderer3.push(`<p${$78.attr("id", errorId2())} class="chat-input-error svelte-1tzweuh" role="alert">${$78.escape(error)}</p>`);
6356
+ $$renderer3.push(`<p${$79.attr("id", errorId2())} class="chat-input-error svelte-1tzweuh" role="alert">${$79.escape(error)}</p>`);
6088
6357
  } else {
6089
6358
  $$renderer3.push("<!--[-1-->");
6090
6359
  }
6091
- $$renderer3.push(`<!--]--> <div aria-live="polite" aria-atomic="true" class="sr-only svelte-1tzweuh">${$78.escape(announcer.message)}</div></form>`);
6360
+ $$renderer3.push(`<!--]--> <div aria-live="polite" aria-atomic="true" class="sr-only svelte-1tzweuh">${$79.escape(announcer.message)}</div></form>`);
6092
6361
  }
6093
6362
  do {
6094
6363
  $$settled = true;
@@ -6096,7 +6365,7 @@ function Chat_input($$renderer, $$props) {
6096
6365
  $$render_inner($$inner_renderer);
6097
6366
  } while (!$$settled);
6098
6367
  $$renderer2.subsume($$inner_renderer);
6099
- $78.bind_props($$props, { value, focus, clear, getAttachments, addFiles });
6368
+ $79.bind_props($$props, { value, focus, clear, getAttachments, addFiles });
6100
6369
  });
6101
6370
  }
6102
6371
  // src/components/chat/container/scroll-utilities.ts
@@ -6171,23 +6440,6 @@ function extractTimestamp(message) {
6171
6440
 
6172
6441
  // src/components/chat/container/use-chat-scroll-state.svelte.ts
6173
6442
  import * as $80 from "svelte/internal/server";
6174
-
6175
- // src/utilities/use-reduced-motion.svelte.ts
6176
- import * as $79 from "svelte/internal/server";
6177
- import { MediaQuery } from "svelte/reactivity";
6178
- function useReducedMotion() {
6179
- if (typeof window === "undefined" || typeof window.matchMedia !== "function") {
6180
- return { current: false };
6181
- }
6182
- const query = new MediaQuery("(prefers-reduced-motion: reduce)", false);
6183
- return {
6184
- get current() {
6185
- return query.current;
6186
- }
6187
- };
6188
- }
6189
-
6190
- // src/components/chat/container/use-chat-scroll-state.svelte.ts
6191
6443
  var destroy = () => {};
6192
6444
  function useChatScrollState(options) {
6193
6445
  const {
@@ -6202,12 +6454,12 @@ function useChatScrollState(options) {
6202
6454
  function getScrollBehavior() {
6203
6455
  return reducedMotion.current ? "auto" : "smooth";
6204
6456
  }
6205
- let isAtBottom2 = true;
6457
+ let atBottom = true;
6206
6458
  let showJumpButton = false;
6207
6459
  let scrollTicking = false;
6208
6460
  let isUserScrolling = false;
6209
- function setIsAtBottom(value) {
6210
- isAtBottom2 = value;
6461
+ function setAtBottom(value) {
6462
+ atBottom = value;
6211
6463
  }
6212
6464
  function createScrollAttachment() {
6213
6465
  return (element2) => {
@@ -6221,15 +6473,15 @@ function useChatScrollState(options) {
6221
6473
  scrollHeight: element2.scrollHeight,
6222
6474
  clientHeight: element2.clientHeight
6223
6475
  };
6224
- const atBottom = isAtBottom(state, getBottomThreshold?.() ?? bottomThreshold);
6476
+ const scrolledToBottom = isAtBottom(state, getBottomThreshold?.() ?? bottomThreshold);
6225
6477
  const shouldShowJump = shouldShowJumpToLatest(state, getJumpThreshold?.() ?? jumpThreshold);
6226
- isAtBottom2 = atBottom;
6478
+ atBottom = scrolledToBottom;
6227
6479
  showJumpButton = shouldShowJump;
6228
- if (atBottom) {
6480
+ if (scrolledToBottom) {
6229
6481
  onReachBottom?.();
6230
6482
  }
6231
6483
  onScrollStateChange?.({
6232
- isAtBottom: atBottom,
6484
+ atBottom: scrolledToBottom,
6233
6485
  scrollTop: state.scrollTop,
6234
6486
  scrollHeight: state.scrollHeight
6235
6487
  });
@@ -6241,9 +6493,9 @@ function useChatScrollState(options) {
6241
6493
  };
6242
6494
  }
6243
6495
  function handleSentinelEntry(entry) {
6244
- const atBottom = entry.isIntersecting;
6245
- if (atBottom && !isAtBottom2) {
6246
- isAtBottom2 = true;
6496
+ const sentinelVisible = entry.isIntersecting;
6497
+ if (sentinelVisible && !atBottom) {
6498
+ atBottom = true;
6247
6499
  onReachBottom?.();
6248
6500
  }
6249
6501
  }
@@ -6286,13 +6538,13 @@ function useChatScrollState(options) {
6286
6538
  }, scrollDuration);
6287
6539
  }
6288
6540
  return {
6289
- get isAtBottom() {
6290
- return isAtBottom2;
6541
+ get atBottom() {
6542
+ return atBottom;
6291
6543
  },
6292
6544
  get showJumpButton() {
6293
6545
  return showJumpButton;
6294
6546
  },
6295
- setIsAtBottom,
6547
+ setAtBottom,
6296
6548
  createScrollAttachment,
6297
6549
  createSentinelObserver,
6298
6550
  handleSentinelEntry,
@@ -6313,7 +6565,7 @@ import { untrack as untrack3 } from "svelte";
6313
6565
  function useChatUnreadState(options) {
6314
6566
  const { announcerDebounceMs = 300, onUnreadIndicatorChange } = options ?? {};
6315
6567
  let unreadCount = 0;
6316
- let hasNewMessageIndicator = false;
6568
+ let newMessageIndicatorVisible = false;
6317
6569
  let firstUnreadId = null;
6318
6570
  let previousMessageCount = 0;
6319
6571
  let previousLastMessageId = null;
@@ -6322,17 +6574,17 @@ function useChatUnreadState(options) {
6322
6574
  const displayUnreadCount = $81.derived(() => formatUnreadCount(unreadCount));
6323
6575
  const hasLargeCount = $81.derived(() => isLargeCount(unreadCount));
6324
6576
  function notifyIndicatorChange() {
6325
- onUnreadIndicatorChange?.({ unreadCount, hasNewMessageIndicator });
6577
+ onUnreadIndicatorChange?.({ unreadCount, newMessageIndicatorVisible });
6326
6578
  }
6327
6579
  function markAllAsRead() {
6328
- const changed = unreadCount !== 0 || hasNewMessageIndicator;
6580
+ const changed = unreadCount !== 0 || newMessageIndicatorVisible;
6329
6581
  unreadCount = 0;
6330
- hasNewMessageIndicator = false;
6582
+ newMessageIndicatorVisible = false;
6331
6583
  firstUnreadId = null;
6332
6584
  if (changed)
6333
6585
  notifyIndicatorChange();
6334
6586
  }
6335
- function processMessages(messages, conversationId, getIsAtBottom) {
6587
+ function processMessages(messages, conversationId, getAtBottom) {
6336
6588
  if (conversationId !== previousConversationId) {
6337
6589
  previousMessageCount = messages.length;
6338
6590
  previousLastMessageId = messages.at(-1)?.id ?? null;
@@ -6345,11 +6597,11 @@ function useChatUnreadState(options) {
6345
6597
  const currentLastMessageId = messages.at(-1)?.id ?? null;
6346
6598
  const wasAppended = currentCount > prevCount && prevCount > 0 && currentLastMessageId !== null && currentLastMessageId !== previousLastMessageId;
6347
6599
  if (wasAppended) {
6348
- const atBottom = untrack3(getIsAtBottom);
6600
+ const atBottom = untrack3(getAtBottom);
6349
6601
  if (!atBottom) {
6350
6602
  const newMessageCount = currentCount - prevCount;
6351
6603
  unreadCount += newMessageCount;
6352
- hasNewMessageIndicator = true;
6604
+ newMessageIndicatorVisible = true;
6353
6605
  if (firstUnreadId === null) {
6354
6606
  const firstNewIndex = currentCount - newMessageCount;
6355
6607
  const firstNewMessage = messages[firstNewIndex];
@@ -6371,8 +6623,8 @@ function useChatUnreadState(options) {
6371
6623
  get unreadCount() {
6372
6624
  return unreadCount;
6373
6625
  },
6374
- get hasNewMessageIndicator() {
6375
- return hasNewMessageIndicator;
6626
+ get newMessageIndicatorVisible() {
6627
+ return newMessageIndicatorVisible;
6376
6628
  },
6377
6629
  get firstUnreadId() {
6378
6630
  return firstUnreadId;
@@ -6394,7 +6646,7 @@ function useChatUnreadState(options) {
6394
6646
 
6395
6647
  // src/components/chat/container/use-chat-keyboard-nav.svelte.ts
6396
6648
  import * as $82 from "svelte/internal/server";
6397
- import { tick as tick2 } from "svelte";
6649
+ import { tick as tick3 } from "svelte";
6398
6650
  function useChatKeyboardNav(options) {
6399
6651
  const {
6400
6652
  onJumpToLatest,
@@ -6441,7 +6693,7 @@ function useChatKeyboardNav(options) {
6441
6693
  } else {
6442
6694
  viewport.scrollTo({ top: 0, behavior });
6443
6695
  }
6444
- tick2().then(() => {
6696
+ tick3().then(() => {
6445
6697
  const historyTrigger = getHistoryTrigger?.();
6446
6698
  if (historyTrigger) {
6447
6699
  historyTrigger.focus();
@@ -6636,7 +6888,7 @@ function Chat_history_trigger($$renderer, $$props) {
6636
6888
  }
6637
6889
  };
6638
6890
  };
6639
- function focus(options) {
6891
+ function focus(options = undefined) {
6640
6892
  buttonElement?.focus(options);
6641
6893
  }
6642
6894
  $$renderer2.push(`<div class="chat-history-trigger svelte-y4b3t5" data-cinder-history-trigger=""><button type="button" class="chat-history-trigger-button svelte-y4b3t5"${$86.attr("disabled", loading, true)}${$86.attr("aria-busy", loading ? "true" : undefined)}>${$86.escape(loading ? loadingLabel : label)}</button> `);
@@ -7280,29 +7532,25 @@ function Chat($$renderer, $$props) {
7280
7532
  let {
7281
7533
  id,
7282
7534
  conversation,
7283
- isAtBottom: isAtBottom2 = true,
7535
+ atBottom = true,
7284
7536
  unreadCount = 0,
7285
- hasNewMessageIndicator = false,
7537
+ newMessageIndicatorVisible = false,
7286
7538
  class: className,
7287
7539
  surfaceMode = "default",
7288
7540
  density = "comfortable",
7289
7541
  variant = "bubble",
7290
7542
  bottomThreshold = DEFAULT_SCROLL_CONFIGURATION.bottomThreshold,
7291
7543
  jumpThreshold = DEFAULT_SCROLL_CONFIGURATION.jumpThreshold,
7292
- isStreaming = false,
7544
+ streaming = false,
7293
7545
  streamingStatus,
7294
- allowAttachments = true,
7295
- allowSearch = true,
7546
+ capabilities,
7296
7547
  virtualized = false,
7297
7548
  virtualizationEstimatedRowHeight = 88,
7298
7549
  virtualizationOverscan = 3,
7299
7550
  virtualizationInitialHeight = 640,
7300
- hasMoreHistory = true,
7551
+ moreHistoryAvailable = true,
7301
7552
  loadEarlierLabel = "Load earlier messages",
7302
7553
  loadingEarlierLabel = "Loading earlier messages",
7303
- allowCopy = true,
7304
- allowEditing = true,
7305
- allowRetry = true,
7306
7554
  header,
7307
7555
  empty,
7308
7556
  emptyPrompts,
@@ -7378,13 +7626,18 @@ function Chat($$renderer, $$props) {
7378
7626
  getJumpThreshold: () => jumpThreshold,
7379
7627
  onScrollStateChange: handleScrollStateChange,
7380
7628
  onReachBottom: () => {
7381
- if (unreadState.unreadCount > 0 || unreadState.hasNewMessageIndicator) {
7629
+ atBottom = true;
7630
+ if (unreadState.unreadCount > 0 || unreadState.newMessageIndicatorVisible) {
7382
7631
  unreadState.markAllAsRead();
7383
7632
  }
7384
7633
  }
7385
7634
  });
7386
7635
  const unreadState = useChatUnreadState({
7387
- onUnreadIndicatorChange: (event) => onunreadindicatorchange?.(event)
7636
+ onUnreadIndicatorChange: (event) => {
7637
+ unreadCount = event.unreadCount;
7638
+ newMessageIndicatorVisible = event.newMessageIndicatorVisible;
7639
+ onunreadindicatorchange?.(event);
7640
+ }
7388
7641
  });
7389
7642
  const keyboardNav = useChatKeyboardNav({
7390
7643
  onJumpToLatest: handleJumpToLatest,
@@ -7401,7 +7654,12 @@ function Chat($$renderer, $$props) {
7401
7654
  const lastMessageId = $99.derived(() => messages().at(-1)?.id);
7402
7655
  let previousAutoScrollMessageCount = getMessages(conversation).length;
7403
7656
  const conversationId = $99.derived(() => conversation.id);
7404
- const showTypingIndicator = $99.derived(() => isStreaming && !streamingMessageId);
7657
+ const showTypingIndicator = $99.derived(() => streaming && !streamingMessageId);
7658
+ const allowAttachments = $99.derived(() => capabilities?.attachments ?? true);
7659
+ const allowSearch = $99.derived(() => capabilities?.search ?? true);
7660
+ const allowCopy = $99.derived(() => capabilities?.copy ?? true);
7661
+ const allowEditing = $99.derived(() => capabilities?.editing ?? true);
7662
+ const allowRetry = $99.derived(() => capabilities?.retry ?? true);
7405
7663
  const toolCallPairsByCallId = $99.derived(() => {
7406
7664
  const toolCallPairs = pairToolCallsWithResults(messages());
7407
7665
  const map = new Map;
@@ -7424,9 +7682,6 @@ function Chat($$renderer, $$props) {
7424
7682
  });
7425
7683
  });
7426
7684
  let hasMounted = false;
7427
- onMount(() => {
7428
- hasMounted = true;
7429
- });
7430
7685
  const isVirtualized = $99.derived(() => virtualized && hasMounted && messages().length > 0);
7431
7686
  const timelineResetIdentity = $99.derived(() => `${conversationId()}:${isVirtualized() ? "virtualized" : "full"}`);
7432
7687
  const staticRowsResetIdentity = $99.derived(() => messages()[0]?.id ?? "");
@@ -7493,7 +7748,7 @@ function Chat($$renderer, $$props) {
7493
7748
  const typingIndicatorState = useChatTypingIndicator({ getTypingParticipants: () => typingParticipants });
7494
7749
  const readReceiptsState = useChatReadReceipts({ getReadReceipts: () => readReceipts });
7495
7750
  const viewportAttach = $99.derived(() => viewportAttachment ?? noopAttachment);
7496
- const effectiveHasMoreHistory = $99.derived(() => adapterHasMoreHistory ?? hasMoreHistory);
7751
+ const effectiveHasMoreHistory = $99.derived(() => adapterHasMoreHistory ?? moreHistoryAvailable);
7497
7752
  const hasHistoryLoader = $99.derived(() => onloadhistory !== undefined || adapter?.loadOlderMessages !== undefined);
7498
7753
  const showHistoryTrigger = $99.derived(() => hasHistoryLoader() && effectiveHasMoreHistory());
7499
7754
  const canRetry = $99.derived(() => onretry !== undefined || adapter?.retryMessage !== undefined);
@@ -7515,7 +7770,7 @@ function Chat($$renderer, $$props) {
7515
7770
  return "";
7516
7771
  });
7517
7772
  async function waitForLayoutFrame() {
7518
- await tick3();
7773
+ await tick4();
7519
7774
  if (typeof requestAnimationFrame !== "function")
7520
7775
  return;
7521
7776
  await new Promise((resolve) => {
@@ -7561,7 +7816,7 @@ function Chat($$renderer, $$props) {
7561
7816
  historyAnnouncement = "";
7562
7817
  }
7563
7818
  }, 1000);
7564
- tick3().then(() => {
7819
+ tick4().then(() => {
7565
7820
  focusAfterHistoryRestore(pending);
7566
7821
  });
7567
7822
  return true;
@@ -7583,6 +7838,7 @@ function Chat($$renderer, $$props) {
7583
7838
  }
7584
7839
  function handleScrollStateChange(event) {
7585
7840
  clearHistoryAnchorAfterScroll(event.scrollTop);
7841
+ atBottom = event.atBottom;
7586
7842
  onscrollstatechange?.(event);
7587
7843
  }
7588
7844
  function virtualSpacerOffsetTop() {
@@ -7622,7 +7878,7 @@ function Chat($$renderer, $$props) {
7622
7878
  chatVirtualizer.scrollToIndex(Math.max(0, renderRows().length - 1), { align: "end", behavior: scrollState.getScrollBehavior() });
7623
7879
  unreadState.markAllAsRead();
7624
7880
  onjumptolatest?.();
7625
- tick3().then(() => {
7881
+ tick4().then(() => {
7626
7882
  const lastMessage = viewport?.querySelector(`.chat-message-wrapper:last-of-type .chat-message`);
7627
7883
  lastMessage?.focus();
7628
7884
  });
@@ -7651,8 +7907,9 @@ function Chat($$renderer, $$props) {
7651
7907
  }
7652
7908
  function handleSubmit(message, attachments) {
7653
7909
  dispatchCommand("sendMessage", (resolvedAdapter) => Promise.resolve(resolvedAdapter.sendMessage(message, attachments)), () => onsubmit?.({ message, attachments }));
7654
- scrollState.setIsAtBottom(true);
7655
- tick3().then(() => {
7910
+ scrollState.setAtBottom(true);
7911
+ atBottom = true;
7912
+ tick4().then(() => {
7656
7913
  if (isVirtualized()) {
7657
7914
  chatVirtualizer.scrollToOffset(chatVirtualizer.scrollSize, { behavior: "instant" });
7658
7915
  } else {
@@ -7723,7 +7980,7 @@ function Chat($$renderer, $$props) {
7723
7980
  const transcriptChanged = historyTranscriptChanged(pending);
7724
7981
  if (isVirtualized() && !transcriptChanged) {
7725
7982
  deferredAdapterHasMoreHistory = nextHasMoreHistory ?? null;
7726
- await tick3();
7983
+ await tick4();
7727
7984
  if (historyTranscriptChanged(pending)) {
7728
7985
  await settlePendingHistoryScroll(pending);
7729
7986
  } else if (pendingHistoryScroll === pending) {
@@ -7821,7 +8078,7 @@ function Chat($$renderer, $$props) {
7821
8078
  inputRef?.clear();
7822
8079
  }
7823
8080
  function handleKeyDown(event) {
7824
- if (allowSearch && (event.ctrlKey || event.metaKey) && event.key === "f") {
8081
+ if (allowSearch() && (event.ctrlKey || event.metaKey) && event.key === "f") {
7825
8082
  event.preventDefault();
7826
8083
  if (searchState.isOpen) {
7827
8084
  searchBarRef?.focusInput();
@@ -7866,7 +8123,7 @@ function Chat($$renderer, $$props) {
7866
8123
  if (targetIndex < 0)
7867
8124
  return;
7868
8125
  chatVirtualizer.scrollToIndex(targetIndex, { align: "auto", behavior: scrollState.getScrollBehavior() });
7869
- await tick3();
8126
+ await tick4();
7870
8127
  const target = renderedMessageById(messageId);
7871
8128
  target?.focus();
7872
8129
  target?.scrollIntoView({ behavior: scrollState.getScrollBehavior(), block: "nearest" });
@@ -7900,7 +8157,7 @@ function Chat($$renderer, $$props) {
7900
8157
  const targetIndex = findRenderRowIndexByMessageId(renderRows(), messageId);
7901
8158
  if (targetIndex >= 0) {
7902
8159
  chatVirtualizer.scrollToIndex(targetIndex, { align: "center", behavior: "auto" });
7903
- await tick3();
8160
+ await tick4();
7904
8161
  }
7905
8162
  }
7906
8163
  const messageElement = viewport.querySelector(`#message-${CSS.escape(messageId)}`);
@@ -7912,7 +8169,7 @@ function Chat($$renderer, $$props) {
7912
8169
  if (!event.dataTransfer?.types.includes("Files"))
7913
8170
  return;
7914
8171
  isContainerDragOver = false;
7915
- if (!allowAttachments)
8172
+ if (!allowAttachments())
7916
8173
  return;
7917
8174
  event.preventDefault();
7918
8175
  const files = event.dataTransfer.files;
@@ -7923,7 +8180,7 @@ function Chat($$renderer, $$props) {
7923
8180
  function handleContainerDragOver(event) {
7924
8181
  if (!event.dataTransfer?.types.includes("Files"))
7925
8182
  return;
7926
- if (!allowAttachments)
8183
+ if (!allowAttachments())
7927
8184
  return;
7928
8185
  event.preventDefault();
7929
8186
  event.dataTransfer.dropEffect = "copy";
@@ -7968,13 +8225,13 @@ function Chat($$renderer, $$props) {
7968
8225
  streamingScrollRaf = undefined;
7969
8226
  streamingContent = tokenBuffer.join("");
7970
8227
  if (streamingRowElement) {
7971
- tick3().then(() => {
8228
+ tick4().then(() => {
7972
8229
  if (streamingRowElement) {
7973
8230
  chatVirtualizer.measureElementNode(streamingRowElement);
7974
8231
  }
7975
8232
  });
7976
8233
  }
7977
- if (scrollState.isAtBottom && viewport) {
8234
+ if (scrollState.atBottom && viewport) {
7978
8235
  if (isVirtualized()) {
7979
8236
  chatVirtualizer.scrollToOffset(chatVirtualizer.scrollSize, { behavior: "instant" });
7980
8237
  } else {
@@ -8061,9 +8318,9 @@ function Chat($$renderer, $$props) {
8061
8318
  message,
8062
8319
  toolCallPairs: pairs,
8063
8320
  messagePart,
8064
- onretry: allowRetry && canRetry() ? handleRetry : undefined,
8065
- onedit: allowEditing && canEdit() ? handleEdit : undefined,
8066
- showDefaultActions: allowCopy,
8321
+ onretry: allowRetry() && canRetry() ? handleRetry : undefined,
8322
+ onedit: allowEditing() && canEdit() ? handleEdit : undefined,
8323
+ showDefaultActions: allowCopy(),
8067
8324
  onexpandedchange,
8068
8325
  streaming: isStreamingMessage,
8069
8326
  overrideContent: isStreamingMessage ? streamingContent : undefined,
@@ -8121,7 +8378,7 @@ function Chat($$renderer, $$props) {
8121
8378
  "aria-label": "Chat conversation",
8122
8379
  ...rest
8123
8380
  }, "svelte-932akd")}>`);
8124
- if (isContainerDragOver && allowAttachments) {
8381
+ if (isContainerDragOver && allowAttachments()) {
8125
8382
  $$renderer2.push("<!--[0-->");
8126
8383
  $$renderer2.push(`<div class="chat-drop-overlay svelte-932akd" aria-hidden="true"><span class="chat-drop-label svelte-932akd">Drop files here</span></div>`);
8127
8384
  } else {
@@ -8137,7 +8394,7 @@ function Chat($$renderer, $$props) {
8137
8394
  $$renderer2.push("<!--[-1-->");
8138
8395
  }
8139
8396
  $$renderer2.push(`<!--]--> `);
8140
- if (allowSearch && searchState.isOpen) {
8397
+ if (allowSearch() && searchState.isOpen) {
8141
8398
  $$renderer2.push("<!--[0-->");
8142
8399
  Chat_search_bar($$renderer2, {
8143
8400
  instanceId: id,
@@ -8226,7 +8483,7 @@ function Chat($$renderer, $$props) {
8226
8483
  $$renderer2.push(`<!----> <div class="chat-input-wrapper svelte-932akd">`);
8227
8484
  Chat_jump_controls($$renderer2, {
8228
8485
  showJumpButton: scrollState.showJumpButton,
8229
- hasNewMessageIndicator: unreadState.hasNewMessageIndicator,
8486
+ hasNewMessageIndicator: unreadState.newMessageIndicatorVisible,
8230
8487
  unreadCount: unreadState.unreadCount,
8231
8488
  displayUnreadCount: unreadState.displayUnreadCount,
8232
8489
  hasLargeCount: unreadState.hasLargeCount,
@@ -8236,10 +8493,10 @@ function Chat($$renderer, $$props) {
8236
8493
  Chat_input($$renderer2, {
8237
8494
  id: inputId(),
8238
8495
  onsubmit: (message, attachments) => handleSubmit(message, attachments),
8239
- disabled: isStreaming,
8240
- sending: isStreaming,
8241
- allowAttachments,
8242
- onstop: isStreaming ? handleStopGenerating : undefined,
8496
+ disabled: streaming,
8497
+ sending: streaming,
8498
+ allowAttachments: allowAttachments(),
8499
+ onstop: streaming ? handleStopGenerating : undefined,
8243
8500
  onattachmentadd,
8244
8501
  onattachmentremove,
8245
8502
  onattachmentfailure
@@ -8253,9 +8510,9 @@ function Chat($$renderer, $$props) {
8253
8510
  });
8254
8511
  $$renderer2.push(`<!----> <div class="cinder-sr-only svelte-932akd" aria-live="polite" aria-atomic="true">${$99.escape(typingIndicatorState.announcedLabel)}</div></div>`);
8255
8512
  $99.bind_props($$props, {
8256
- isAtBottom: isAtBottom2,
8513
+ atBottom,
8257
8514
  unreadCount,
8258
- hasNewMessageIndicator,
8515
+ newMessageIndicatorVisible,
8259
8516
  scrollToBottom,
8260
8517
  scrollToTop,
8261
8518
  focusInput,
@@ -8364,7 +8621,7 @@ import * as $102 from "svelte/internal/server";
8364
8621
 
8365
8622
  // src/components/copy-button/use-copy-state.svelte.ts
8366
8623
  import * as $101 from "svelte/internal/server";
8367
- import { onDestroy as onDestroy4 } from "svelte";
8624
+ import { onDestroy as onDestroy3 } from "svelte";
8368
8625
  function createCopyState(confirmDuration = 2000) {
8369
8626
  let copiedKey = null;
8370
8627
  let resetTimer;
@@ -8389,7 +8646,7 @@ function createCopyState(confirmDuration = 2000) {
8389
8646
  }, confirmDuration);
8390
8647
  return true;
8391
8648
  }
8392
- onDestroy4(clearTimer);
8649
+ onDestroy3(clearTimer);
8393
8650
  return {
8394
8651
  get copiedKey() {
8395
8652
  return copiedKey;
@@ -8641,4 +8898,4 @@ export {
8641
8898
  Artifact_panel as ArtifactPanel
8642
8899
  };
8643
8900
 
8644
- //# debugId=4B6CC733A6CE77BA64756E2164756E21
8901
+ //# debugId=777EE4615F44220364756E2164756E21