@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
@@ -23,37 +23,60 @@
23
23
  import X from 'lucide-svelte/icons/x';
24
24
  import { createFocusTrap } from '../../focus-trap/index.ts';
25
25
  import { createBodyScrollLock } from '../../../utilities/attachments.ts';
26
+ import { useReducedMotion } from '../../../utilities/use-reduced-motion.svelte.ts';
26
27
 
27
28
  let { images, initialIndex = 0, open = $bindable(false), onclose }: ImageLightboxProps = $props();
28
29
 
29
- // currentIndex tracks navigation within the session; resets to initialIndex when lightbox opens
30
- let currentIndex = $state(0);
30
+ // Respect prefers-reduced-motion: collapse the fade to an instant show/hide so
31
+ // the lightbox does not animate for users who have opted out of motion.
32
+ // CSS @media (prefers-reduced-motion) overrides do not cover JS-driven Svelte
33
+ // transitions, so we must derive the duration imperatively here.
34
+ const reducedMotion = useReducedMotion();
35
+ const LIGHTBOX_FADE_MS = 150;
36
+ const fadeDuration = $derived(reducedMotion.current ? 0 : LIGHTBOX_FADE_MS);
31
37
 
32
- // Reset currentIndex to initialIndex whenever the lightbox opens or initialIndex changes
33
- let previousOpen = $state(false);
38
+ // clampedInitialIndex is the clamped version of the `initialIndex` prop.
39
+ const clampedInitialIndex = $derived(
40
+ images.length > 0 ? Math.max(0, Math.min(initialIndex, images.length - 1)) : 0,
41
+ );
42
+
43
+ // navigationIndex is null when no user navigation has occurred in the current
44
+ // open session. effectiveIndex falls back to clampedInitialIndex.
45
+ //
46
+ // Reset semantics WITHOUT a write-back loop: when the lightbox is closed
47
+ // (`open === false`) effectiveIndex ignores navigationIndex entirely, so the
48
+ // displayed index is always clampedInitialIndex while closed — regardless of
49
+ // how it was closed (the close() button OR a parent setting `bind:open`
50
+ // false). On the next open, a single guarded $effect clears the stale
51
+ // navigationIndex so navigation starts fresh from initialIndex. This effect
52
+ // only writes navigationIndex in response to `open` (two distinct values), so
53
+ // it is not the read-and-write-back-the-same-bindable pattern #464 removes.
54
+ let navigationIndex = $state<number | null>(null);
55
+ const effectiveIndex = $derived(
56
+ open ? (navigationIndex ?? clampedInitialIndex) : clampedInitialIndex,
57
+ );
34
58
  $effect(() => {
35
- const isOpening = open && !previousOpen;
36
- previousOpen = open;
37
- if (isOpening) {
38
- currentIndex = images.length > 0 ? Math.max(0, Math.min(initialIndex, images.length - 1)) : 0;
59
+ if (!open && navigationIndex !== null) {
60
+ navigationIndex = null;
39
61
  }
40
62
  });
41
63
 
42
64
  const hasMultiple = $derived(images.length > 1);
43
- const currentImage = $derived(images[currentIndex]);
44
- const counterText = $derived(`${currentIndex + 1} of ${images.length}`);
65
+ const currentImage = $derived(images[effectiveIndex]);
66
+ const counterText = $derived(`${effectiveIndex + 1} of ${images.length}`);
45
67
 
46
68
  function close() {
69
+ navigationIndex = null;
47
70
  open = false;
48
71
  onclose?.();
49
72
  }
50
73
 
51
74
  function previous() {
52
- currentIndex = (currentIndex - 1 + images.length) % images.length;
75
+ navigationIndex = (effectiveIndex - 1 + images.length) % images.length;
53
76
  }
54
77
 
55
78
  function next() {
56
- currentIndex = (currentIndex + 1) % images.length;
79
+ navigationIndex = (effectiveIndex + 1) % images.length;
57
80
  }
58
81
 
59
82
  function handleOverlayClick(event: MouseEvent) {
@@ -93,7 +116,7 @@
93
116
  onclick={handleOverlayClick}
94
117
  onkeydown={handleKeyDown}
95
118
  tabindex="-1"
96
- transition:fade={{ duration: 150 }}
119
+ transition:fade={{ duration: fadeDuration }}
97
120
  {@attach createBodyScrollLock()}
98
121
  {@attach createFocusTrap()}
99
122
  >
@@ -174,7 +197,7 @@
174
197
  border-radius: var(--cinder-radius-sm);
175
198
  color: white;
176
199
  cursor: pointer;
177
- transition: background 150ms ease;
200
+ transition: background var(--cinder-duration-fast) var(--cinder-ease-standard);
178
201
  z-index: 1;
179
202
  }
180
203
 
@@ -210,7 +233,7 @@
210
233
  border-radius: var(--cinder-radius-sm);
211
234
  color: white;
212
235
  cursor: pointer;
213
- transition: background 150ms ease;
236
+ transition: background var(--cinder-duration-fast) var(--cinder-ease-standard);
214
237
  z-index: 1;
215
238
  }
216
239
 
@@ -187,7 +187,7 @@
187
187
  border-radius: var(--cinder-radius-md);
188
188
  /* Use contain to preserve full image content and avoid cropping */
189
189
  object-fit: contain;
190
- transition: opacity 150ms ease;
190
+ transition: opacity var(--cinder-duration-fast) var(--cinder-ease-standard);
191
191
  }
192
192
 
193
193
  .message-attachment-button:hover .message-attachment-image {
@@ -165,6 +165,14 @@
165
165
  outline-offset: -2px;
166
166
  box-shadow: var(--_cinder-focus-ring-shadow);
167
167
  }
168
+
169
+ @media (forced-colors: active) {
170
+ &:focus-visible {
171
+ outline: var(--cinder-ring-width) solid ButtonText;
172
+ outline-offset: 2px;
173
+ box-shadow: none;
174
+ }
175
+ }
168
176
  }
169
177
 
170
178
  .chat-reasoning-label {
@@ -248,21 +248,34 @@
248
248
  outline-offset: 2px;
249
249
  box-shadow: var(--_cinder-focus-ring-shadow);
250
250
  }
251
+
252
+ @media (forced-colors: active) {
253
+ &:focus-visible {
254
+ outline: var(--cinder-ring-width) solid ButtonText;
255
+ outline-offset: 3px;
256
+ box-shadow: none;
257
+ }
258
+ }
251
259
  }
252
260
 
253
261
  .chat-tool-approval-btn-approve {
254
- background: var(--cinder-color-success-bg, var(--cinder-surface-raised));
255
- color: var(--cinder-chat-tool-approval-approve-color);
256
- border-color: var(--cinder-color-success-border, var(--cinder-chat-tool-approval-border));
262
+ background: var(--cinder-success);
263
+ color: var(--cinder-success-contrast, var(--cinder-text));
264
+ border-color: var(--cinder-success);
257
265
 
258
- /* Background darkening, not opacity, so foreground text contrast is
259
- preserved (opacity would dim text + bg together, risking WCAG 1.4.11). */
260
266
  @media (hover: hover) {
261
267
  &:not(:disabled):hover {
262
- background: color-mix(
263
- in oklch,
264
- var(--cinder-color-success-bg, var(--cinder-surface-raised)),
265
- currentColor 8%
268
+ /* cinder-allow-raw-color: structural-pattern — neutral hover overlay tint, not a themeable surface */
269
+ --_cinder-chat-tool-approval-hover-overlay: light-dark(
270
+ /* cinder-allow-raw-color: structural-pattern — neutral hover overlay tint, not a themeable surface */
271
+ oklch(0% 0 0 / 0.08),
272
+ /* cinder-allow-raw-color: structural-pattern — neutral hover overlay tint, not a themeable surface */
273
+ oklch(100% 0 0 / 0.1)
274
+ );
275
+
276
+ background-image: linear-gradient(
277
+ var(--_cinder-chat-tool-approval-hover-overlay),
278
+ var(--_cinder-chat-tool-approval-hover-overlay)
266
279
  );
267
280
  }
268
281
  }
@@ -53,6 +53,19 @@
53
53
  box-shadow: var(--_cinder-focus-ring-shadow);
54
54
  }
55
55
 
56
+ @media (forced-colors: active) {
57
+ .cinder-chat-conversation-list__button[data-cinder-conversation-interactive]:focus-visible {
58
+ outline: var(--cinder-ring-width) solid ButtonText;
59
+ /* ButtonText is correct here: this is a button/navigation control using
60
+ aria-current="page" (page-nav semantics, not aria-selected list-selection).
61
+ Highlight/HighlightText would be wrong — those are for selected listbox items.
62
+ 3px separates the ring from ButtonBorder, which renders in forced-colors
63
+ mode on all button elements regardless of their standard-mode border color. */
64
+ outline-offset: 3px;
65
+ box-shadow: none;
66
+ }
67
+ }
68
+
56
69
  .cinder-chat-conversation-list__title {
57
70
  grid-column: 1;
58
71
  grid-row: 1;
@@ -26,6 +26,7 @@ Single boolean toggle for opt-in selections within forms or settings.
26
26
  | `indeterminate` | `boolean` | no | — | Bound indeterminate state. Mutually exclusive with `checked` visually. |
27
27
  | `label` | `string` | no | — | Visible label rendered in a `<label>` element associated via `for`. |
28
28
  | `class` | `(opaque)` | no | — | Extra class names merged with `.cinder-checkbox`. Not expressible in JSON Schema; see the component types for the signature. |
29
+ | `onValueChange` | `(opaque)` | no | — | Intercept a proposed checked state before the bindable value is written. Return a replacement value to transform it. Not expressible in JSON Schema; see the component types for the signature. |
29
30
 
30
31
  <!-- generated:props:end -->
31
32
 
@@ -165,6 +165,9 @@
165
165
 
166
166
  /* Label */
167
167
  .cinder-checkbox-field__label {
168
+ display: inline-flex;
169
+ align-items: center;
170
+ gap: var(--cinder-space-1);
168
171
  font-size: var(--cinder-text-sm);
169
172
  line-height: var(--cinder-leading-normal);
170
173
  color: var(--cinder-text);
@@ -21,10 +21,12 @@
21
21
  import { getFormFieldContext } from '../../_internal/form-field-context.ts';
22
22
  import { classNames } from '../../utilities/class-names.ts';
23
23
  import { devWarn } from '../../utilities/dev-warn.ts';
24
+ import { commitValue } from '../../utilities/value-change.ts';
24
25
 
25
26
  let {
26
27
  id,
27
28
  checked = $bindable(false),
29
+ onValueChange,
28
30
  indeterminate = $bindable(false),
29
31
  label,
30
32
  description,
@@ -34,6 +36,7 @@
34
36
  class: className,
35
37
  'aria-describedby': consumerDescribedBy,
36
38
  'aria-invalid': consumerInvalid,
39
+ onchange: consumerOnchange,
37
40
  ...rest
38
41
  }: CheckboxProps = $props();
39
42
 
@@ -82,6 +85,41 @@
82
85
  inputElement.indeterminate = indeterminate && !checked;
83
86
  }
84
87
  });
88
+ let resetSyncTimeout: ReturnType<typeof setTimeout> | undefined;
89
+
90
+ function syncCheckedAfterFormReset(): void {
91
+ if (resetSyncTimeout !== undefined) clearTimeout(resetSyncTimeout);
92
+ resetSyncTimeout = setTimeout(() => {
93
+ resetSyncTimeout = undefined;
94
+ if (!inputElement) return;
95
+ checked = inputElement.checked;
96
+ inputElement.indeterminate = indeterminate && !inputElement.checked;
97
+ }, 0);
98
+ }
99
+
100
+ $effect(() => {
101
+ const form = inputElement?.form;
102
+ if (!form) return;
103
+
104
+ form.addEventListener('reset', syncCheckedAfterFormReset);
105
+ return () => {
106
+ form.removeEventListener('reset', syncCheckedAfterFormReset);
107
+ if (resetSyncTimeout !== undefined) {
108
+ clearTimeout(resetSyncTimeout);
109
+ resetSyncTimeout = undefined;
110
+ }
111
+ };
112
+ });
113
+
114
+ function handleChange(event: Event): void {
115
+ const target = event.currentTarget as HTMLInputElement;
116
+ const committed = commitValue(target.checked, onValueChange, (next) => {
117
+ checked = next;
118
+ });
119
+ target.checked = committed;
120
+ target.indeterminate = indeterminate && !committed;
121
+ consumerOnchange?.(event as Parameters<NonNullable<CheckboxProps['onchange']>>[0]);
122
+ }
85
123
  </script>
86
124
 
87
125
  <div class="cinder-checkbox-field">
@@ -91,13 +129,14 @@
91
129
  bind:this={inputElement}
92
130
  id={field.id}
93
131
  type="checkbox"
132
+ {...rest}
94
133
  disabled={field.disabled}
95
134
  required={field.required}
96
- bind:checked
135
+ {checked}
136
+ onchange={handleChange}
97
137
  class={classNames('cinder-checkbox', className)}
98
138
  aria-invalid={field.ariaInvalid}
99
139
  aria-describedby={field.describedBy}
100
- {...rest}
101
140
  />
102
141
  <span class="cinder-checkbox-field__indicator" aria-hidden="true"></span>
103
142
  </span>
@@ -108,6 +147,9 @@
108
147
  data-disabled={field.disabled || undefined}
109
148
  >
110
149
  {label}
150
+ {#if field.required}
151
+ <span class="cinder-_required-marker" aria-hidden="true">*</span>
152
+ {/if}
111
153
  </label>
112
154
  {/if}
113
155
  </div>
@@ -20,6 +20,8 @@ export type CheckboxProps = HTMLInputAttributes & {
20
20
  id?: string;
21
21
  /** Bound checked state. */
22
22
  checked?: boolean;
23
+ /** Intercept a proposed checked state before the bindable value is written. Return a replacement value to transform it. */
24
+ onValueChange?: (next: boolean) => boolean | void;
23
25
  /** Bound indeterminate state. Mutually exclusive with `checked` visually. */
24
26
  indeterminate?: boolean;
25
27
  /** Visible label rendered in a `<label>` element associated via `for`. */
@@ -22,8 +22,8 @@ Wraps multiple checkboxes under a shared label and validation context.
22
22
  | `description` | `string` | no | — | Helper text below the group; wired via `aria-describedby` on the fieldset. |
23
23
  | `disabled` | `boolean` | no | — | Disables every native form control inside via the fieldset's built-in cascade. Renders as the native `disabled` attribute on `<fieldset>`. |
24
24
  | `error` | `string` | no | — | Group-level validation message. Rendered as a polite live region and referenced by the fieldset's `aria-describedby`. Also sets `aria-invalid="true"` on the fieldset itself as a supplementary signal. Note: fieldset-level `aria-describedby` is not reliably re-announced as focus moves between descendants. This is best-effort supplemental context — if a specific control must announce as invalid on focus, pass `error` to that `<Checkbox>` directly. |
25
- | `legend` | `string` | no | — | Optional legend rendered as a `<legend>` inside the `<fieldset>`. |
26
- | `required` | `boolean` | no | — | Marks the group as visually required. Sets `data-cinder-required` on the fieldset so consumers can target it (e.g. legend asterisk). This is a visual/data-attribute hint. It does NOT set `required` on any child `<input>` and does NOT enforce constraint validation. Per-control `required` must be set on the individual `<Checkbox>`. |
25
+ | `label` | `string` | no | — | Visible group caption. Rendered as a `<legend>` inside the `<fieldset>`. Named `label` for consistency with every other form control — the element is a `<legend>` because the group is a fieldset. |
26
+ | `required` | `boolean` | no | — | Marks the group required: sets `aria-required="true"` and `data-cinder-required` on the fieldset and renders the required asterisk in the legend. It does NOT set `required` on any child `<input>` and does NOT enforce native constraint validation. Per-control `required` must be set on the individual `<Checkbox>`. |
27
27
  | `variant` | `"default"` \| `"card"` | no | — | Layout variant. `'default'` is a stacked column. `'card'` styles each direct child `.cinder-checkbox-field` as a bordered card row. Always emitted as `data-variant` on the fieldset. Card variant assumes each direct child of the items container is a single `<Checkbox>`. |
28
28
  | `children` | `(opaque)` | yes | — | Checkbox children. Not expressible in JSON Schema; see the component types for the signature. |
29
29
 
@@ -15,6 +15,9 @@
15
15
  }
16
16
 
17
17
  .cinder-checkbox-group__legend {
18
+ display: inline-flex;
19
+ align-items: center;
20
+ gap: var(--cinder-space-1);
18
21
  font-size: var(--cinder-text-xs);
19
22
  font-weight: var(--cinder-font-medium);
20
23
  color: var(--cinder-text);
@@ -0,0 +1,13 @@
1
+ {
2
+ "$schema": "../../schemas/examples.schema.json",
3
+ "component": "checkbox-group",
4
+ "import": "@lostgradient/cinder/checkbox-group",
5
+ "examples": [
6
+ {
7
+ "id": "basic",
8
+ "title": "Basic checkbox group",
9
+ "description": "Grouped checkboxes under a shared legend with independent checked states.",
10
+ "code": "<script lang=\"ts\">\n import { Checkbox } from '@lostgradient/cinder/checkbox';\n import { CheckboxGroup } from '@lostgradient/cinder/checkbox-group';\n\n let email = $state(true);\n let sms = $state(false);\n let push = $state(false);\n</script>\n\n<CheckboxGroup label=\"Notification channels\">\n <Checkbox id=\"email\" label=\"Email\" bind:checked={email} />\n <Checkbox id=\"sms\" label=\"SMS\" bind:checked={sms} />\n <Checkbox id=\"push\" label=\"Push notifications\" bind:checked={push} />\n</CheckboxGroup>\n"
11
+ }
12
+ ]
13
+ }
@@ -23,11 +23,12 @@
23
23
  errorId as buildErrorId,
24
24
  } from '../../_internal/field-control.ts';
25
25
  import { classNames } from '../../utilities/class-names.ts';
26
+ import { devWarn } from '../../utilities/dev-warn.ts';
26
27
 
27
28
  const groupId = $props.id();
28
29
 
29
30
  let {
30
- legend,
31
+ label: legend,
31
32
  description,
32
33
  error,
33
34
  disabled = false,
@@ -39,6 +40,20 @@
39
40
  const descriptionId = $derived(describeId(groupId, !!description));
40
41
  const errId = $derived(buildErrorId(groupId, !!error));
41
42
  const describedBy = $derived(composeDescribedBy(descriptionId, errId));
43
+
44
+ // Warn once when no accessible group name is provided. The `hasWarned` flag
45
+ // stops the effect re-firing on every `legend` change — matching the
46
+ // tree.svelte convention and dev-warn.ts's guidance against a warn-only
47
+ // effect that re-subscribes on each update.
48
+ let hasWarnedNoLegend = false;
49
+ $effect(() => {
50
+ if (!legend && !hasWarnedNoLegend) {
51
+ hasWarnedNoLegend = true;
52
+ devWarn(
53
+ '[cinder/CheckboxGroup] A <fieldset> was rendered without a label prop. The fieldset will have no <legend>, which makes it inaccessible. Provide a label prop to describe the group.',
54
+ );
55
+ }
56
+ });
42
57
  </script>
43
58
 
44
59
  <!--
@@ -58,12 +73,18 @@
58
73
  {disabled}
59
74
  aria-invalid={ariaInvalid(!!error)}
60
75
  aria-describedby={describedBy}
76
+ aria-required={required || undefined}
61
77
  data-cinder-disabled={disabled || undefined}
62
78
  data-cinder-required={required || undefined}
63
79
  data-variant={variant}
64
80
  >
65
81
  {#if legend}
66
- <legend class="cinder-checkbox-group__legend">{legend}</legend>
82
+ <legend class="cinder-checkbox-group__legend">
83
+ {legend}
84
+ {#if required}
85
+ <span class="cinder-_required-marker" aria-hidden="true">*</span>
86
+ {/if}
87
+ </legend>
67
88
  {/if}
68
89
 
69
90
  <div class="cinder-checkbox-group__items">
@@ -9,8 +9,12 @@ import type { Snippet } from 'svelte';
9
9
  * handles the disabled cascade without any Svelte context.
10
10
  */
11
11
  export type CheckboxGroupProps = {
12
- /** Optional legend rendered as a `<legend>` inside the `<fieldset>`. */
13
- legend?: string;
12
+ /**
13
+ * Visible group caption. Rendered as a `<legend>` inside the `<fieldset>`.
14
+ * Named `label` for consistency with every other form control — the element
15
+ * is a `<legend>` because the group is a fieldset.
16
+ */
17
+ label?: string;
14
18
  /** Helper text below the group; wired via `aria-describedby` on the fieldset. */
15
19
  description?: string;
16
20
  /**
@@ -30,12 +34,13 @@ export type CheckboxGroupProps = {
30
34
  */
31
35
  disabled?: boolean;
32
36
  /**
33
- * Marks the group as visually required. Sets `data-cinder-required` on the
34
- * fieldset so consumers can target it (e.g. legend asterisk).
37
+ * Marks the group required: sets `aria-required="true"` and
38
+ * `data-cinder-required` on the fieldset and renders the required asterisk in
39
+ * the legend.
35
40
  *
36
- * This is a visual/data-attribute hint. It does NOT set `required` on any
37
- * child `<input>` and does NOT enforce constraint validation. Per-control
38
- * `required` must be set on the individual `<Checkbox>`.
41
+ * It does NOT set `required` on any child `<input>` and does NOT enforce
42
+ * native constraint validation. Per-control `required` must be set on the
43
+ * individual `<Checkbox>`.
39
44
  */
40
45
  required?: boolean;
41
46
  /**
@@ -127,7 +127,7 @@
127
127
  aria-disabled={isDisabled || undefined}
128
128
  tabindex={tabIndex}
129
129
  class={classNames('cinder-choice-grid-item', className)}
130
- data-cinder-selected={isSelected || undefined}
130
+ data-cinder-selected={isSelected ? '' : undefined}
131
131
  data-cinder-disabled={isDisabled || undefined}
132
132
  data-cinder-state={feedbackState !== 'neutral' ? feedbackState : undefined}
133
133
  onclick={handleClick}
@@ -27,9 +27,9 @@ Headless utility that calls a function when the user clicks or taps outside a su
27
27
  | Prop | Type | Required | Default | Description |
28
28
  | ------------- | ---------- | -------- | ------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
29
29
  | `class` | `string` | no | — | Additional class names merged with the root element. |
30
- | `enabled` | `boolean` | no | — | When false the document listener is detached and `onClickAway` is never called. Defaults to `true`. |
30
+ | `enabled` | `boolean` | no | — | When false the document listener is detached and `onclickaway` is never called. Defaults to `true`. |
31
31
  | `children` | `(opaque)` | yes | — | Content rendered inside the root element. Required. Not expressible in JSON Schema; see the component types for the signature. |
32
- | `onClickAway` | `(opaque)` | yes | — | Called with the triggering PointerEvent (or MouseEvent/TouchEvent on browsers that do not support the Pointer Events API) when the user presses a pointer device outside the root element. Not expressible in JSON Schema; see the component types for the signature. |
32
+ | `onclickaway` | `(opaque)` | yes | — | Called with the triggering PointerEvent (or MouseEvent/TouchEvent on browsers that do not support the Pointer Events API) when the user presses a pointer device outside the root element. Not expressible in JSON Schema; see the component types for the signature. |
33
33
 
34
34
  <!-- generated:props:end -->
35
35
 
@@ -7,7 +7,7 @@
7
7
  "id": "basic",
8
8
  "title": "Basic click-away listener",
9
9
  "description": "Calls a function when the user presses a pointer outside the wrapped subtree.",
10
- "code": "<script lang=\"ts\">\n import { Button, ClickAwayListener } from '@lostgradient/cinder';\n\n let open = $state(false);\n</script>\n\n<Button onclick={() => (open = true)}>Open inline editor</Button>\n\n{#if open}\n <ClickAwayListener\n onClickAway={() => (open = false)}\n style=\"\n display: inline-flex;\n flex-direction: column;\n gap: var(--cinder-space-3);\n margin-block-start: var(--cinder-space-4);\n padding: var(--cinder-space-4);\n border: 1px solid var(--cinder-border);\n border-radius: var(--cinder-radius-lg);\n background: var(--cinder-surface-raised);\n \"\n >\n <p style=\"margin: 0;\">Click outside this box to dismiss it.</p>\n <Button variant=\"secondary\" onclick={() => (open = false)}>Close</Button>\n </ClickAwayListener>\n{/if}\n"
10
+ "code": "<script lang=\"ts\">\n import { Button, ClickAwayListener } from '@lostgradient/cinder';\n\n let open = $state(false);\n</script>\n\n<Button onclick={() => (open = true)}>Open inline editor</Button>\n\n{#if open}\n <ClickAwayListener\n onclickaway={() => (open = false)}\n style=\"\n display: inline-flex;\n flex-direction: column;\n gap: var(--cinder-space-3);\n margin-block-start: var(--cinder-space-4);\n padding: var(--cinder-space-4);\n border: 1px solid var(--cinder-border);\n border-radius: var(--cinder-radius-lg);\n background: var(--cinder-surface-raised);\n \"\n >\n <p style=\"margin: 0;\">Click outside this box to dismiss it.</p>\n <Button variant=\"secondary\" onclick={() => (open = false)}>Close</Button>\n </ClickAwayListener>\n{/if}\n"
11
11
  }
12
12
  ]
13
13
  }
@@ -19,7 +19,7 @@
19
19
  import type { ClickAwayListenerProps } from './click-away-listener.types.ts';
20
20
 
21
21
  let {
22
- onClickAway,
22
+ onclickaway,
23
23
  enabled = true,
24
24
  class: className,
25
25
  children,
@@ -50,7 +50,7 @@
50
50
 
51
51
  const isInside = target instanceof Node && rootElement.contains(target);
52
52
  if (!isInside) {
53
- onClickAway(event);
53
+ onclickaway(event);
54
54
  }
55
55
  }
56
56
 
@@ -4,7 +4,7 @@ import type { HTMLAttributes } from 'svelte/elements';
4
4
  /**
5
5
  * Props for the ClickAwayListener component.
6
6
  *
7
- * A headless utility that fires `onClickAway` when the user presses a pointer
7
+ * A headless utility that fires `onclickaway` when the user presses a pointer
8
8
  * (mouse or touch) outside the component's root element. Useful for closing
9
9
  * inline-edit fields, custom dropdowns, or any overlay that should dismiss on
10
10
  * outside interaction without requiring a full Popover or Modal.
@@ -15,9 +15,9 @@ export type ClickAwayListenerProps = Omit<HTMLAttributes<HTMLDivElement>, 'class
15
15
  * browsers that do not support the Pointer Events API) when the user presses
16
16
  * a pointer device outside the root element.
17
17
  */
18
- onClickAway: (event: PointerEvent | MouseEvent | TouchEvent) => void;
18
+ onclickaway: (event: PointerEvent | MouseEvent | TouchEvent) => void;
19
19
  /**
20
- * When false the document listener is detached and `onClickAway` is never
20
+ * When false the document listener is detached and `onclickaway` is never
21
21
  * called. Defaults to `true`.
22
22
  */
23
23
  enabled?: boolean;
@@ -157,8 +157,8 @@
157
157
  display: inline-flex;
158
158
  align-items: center;
159
159
  justify-content: center;
160
- inline-size: 1.75rem;
161
- min-block-size: 1.75rem;
160
+ inline-size: 2rem;
161
+ min-block-size: 2rem;
162
162
  border: 1px solid transparent;
163
163
  border-radius: var(--cinder-radius-sm);
164
164
  background: var(--cinder-surface-raised);
@@ -176,7 +176,8 @@
176
176
 
177
177
  @media (forced-colors: active) {
178
178
  .cinder-code-block .cinder-code-block__header .cinder-copy-button:focus-visible {
179
- outline-color: CanvasText;
179
+ outline: var(--cinder-ring-width) solid ButtonText;
180
+ outline-offset: 3px;
180
181
  box-shadow: none;
181
182
  }
182
183
  }
@@ -32,7 +32,7 @@ Controlled — the parent owns the state with `bind:open`:
32
32
 
33
33
  ### State model
34
34
 
35
- Without `bind:open`, `open` is the initial local value and the component manages subsequent toggles; pass `open={true}` to render initially open. With `bind:open`, the parent owns the state. `onToggle` fires on every toggle with the next boolean, so one-way observers stay in sync.
35
+ Without `bind:open`, `open` is the initial local value and the component manages subsequent toggles; pass `open={true}` to render initially open. With `bind:open`, the parent owns the state. `ontoggle` fires on every toggle with the next boolean, so one-way observers stay in sync.
36
36
 
37
37
  The `trigger` prop is either a string or a snippet receiving `{ open, disabled }`, letting the label react to state (for example, swapping "Show" and "Hide").
38
38
 
@@ -57,7 +57,7 @@ For multiple coordinated sections where opening one may close others, use [`Acco
57
57
  | `open` | `boolean` | no | `false` | Bindable open state. Without binding, the initial value the component then manages. |
58
58
  | `trigger` | `string` | yes | — | Trigger label text. (The snippet form is template-only; see the type above.) |
59
59
  | `children` | `(opaque)` | yes | — | Panel content shown when open. Not expressible in JSON Schema; see the component types for the signature. |
60
- | `onToggle` | `(opaque)` | no | — | Fired on every successful toggle with the next open state. Not called while disabled. Not expressible in JSON Schema; see the component types for the signature. |
60
+ | `ontoggle` | `(opaque)` | no | — | Fired on every successful toggle with the next open state. Not called while disabled. Not expressible in JSON Schema; see the component types for the signature. |
61
61
 
62
62
  <!-- generated:props:end -->
63
63
 
@@ -27,7 +27,7 @@
27
27
  trigger,
28
28
  children,
29
29
  open = $bindable(false),
30
- onToggle,
30
+ ontoggle,
31
31
  disabled = false,
32
32
  idBase,
33
33
  class: className,
@@ -49,7 +49,7 @@
49
49
  if (disabled) return;
50
50
  const next = !open;
51
51
  open = next;
52
- onToggle?.(next);
52
+ ontoggle?.(next);
53
53
  }
54
54
  </script>
55
55
 
@@ -4,7 +4,10 @@ import type { HTMLAttributes } from 'svelte/elements';
4
4
  /** State passed to a trigger snippet so labels can react to open/disabled. */
5
5
  export type CollapsibleTriggerState = { open: boolean; disabled: boolean };
6
6
 
7
- export type CollapsibleProps = Omit<HTMLAttributes<HTMLDivElement>, 'class' | 'children'> & {
7
+ export type CollapsibleProps = Omit<
8
+ HTMLAttributes<HTMLDivElement>,
9
+ 'class' | 'children' | 'ontoggle'
10
+ > & {
8
11
  /** Trigger label: a plain string, or a snippet receiving `{ open, disabled }`. */
9
12
  trigger: string | Snippet<[CollapsibleTriggerState]>;
10
13
  /** Panel content shown when open. */
@@ -16,7 +19,7 @@ export type CollapsibleProps = Omit<HTMLAttributes<HTMLDivElement>, 'class' | 'c
16
19
  */
17
20
  open?: boolean;
18
21
  /** Fired on every successful toggle with the next open state. Not called while disabled. */
19
- onToggle?: (open: boolean) => void;
22
+ ontoggle?: (open: boolean) => void;
20
23
  /**
21
24
  * When true, the trigger cannot be toggled.
22
25
  * @default false