@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
@@ -3,11 +3,15 @@
3
3
  * @cinder
4
4
  * @category feedback
5
5
  * @status stable
6
- * @purpose Static role="img" badge that communicates an entity's state through a colored dot with an accessible text label.
6
+ * @purpose Colored dot indicator that communicates static entity state or live realtime connection state with an accessible text label.
7
+ * @tag connection
7
8
  * @tag feedback
9
+ * @tag realtime
8
10
  * @tag status
9
11
  * @useWhen Indicating the current state of a list row, user, deployment, or other entity alongside its name.
10
12
  * @useWhen Communicating status compactly when many indicators appear together without triggering live-region announcements.
13
+ * @useWhen Surfacing whether a realtime channel is connected, connecting, disconnected, or errored on a dashboard or app chrome.
14
+ * @useWhen Giving operators an at-a-glance health signal for a long-lived transport.
11
15
  * @avoidWhen Counting items or showing a numeric value — use badge instead.
12
16
  * @avoidWhen Announcing a transient status change — use toast-region or alert so assistive tech reads it.
13
17
  * @related badge
@@ -17,11 +21,31 @@
17
21
 
18
22
  <script lang="ts">
19
23
  import { classNames } from '../../utilities/class-names.ts';
20
- import type { StatusDotProps } from './status-dot.types.ts';
24
+ import type {
25
+ StatusDotConnectionState,
26
+ StatusDotProps,
27
+ StatusDotStatus,
28
+ } from './status-dot.types.ts';
29
+
30
+ const connectionStatusMap: Record<StatusDotConnectionState, StatusDotStatus> = {
31
+ connected: 'online',
32
+ connecting: 'warning',
33
+ disconnected: 'offline',
34
+ error: 'danger',
35
+ };
36
+
37
+ const connectionLabels: Record<StatusDotConnectionState, string> = {
38
+ connected: 'Connected',
39
+ connecting: 'Connecting',
40
+ disconnected: 'Disconnected',
41
+ error: 'Error',
42
+ };
21
43
 
22
44
  let {
23
45
  status,
46
+ connectionState,
24
47
  label,
48
+ live,
25
49
  showLabel = true,
26
50
  size = 'md',
27
51
  class: className,
@@ -30,12 +54,28 @@
30
54
  }: StatusDotProps = $props();
31
55
 
32
56
  const normalizedAriaLabel = $derived(ariaLabel?.trim() ? ariaLabel.trim() : undefined);
33
- const normalizedLabel = $derived(label?.trim() ? label.trim() : undefined);
57
+ const resolvedStatus = $derived(
58
+ status ?? (connectionState === undefined ? 'neutral' : connectionStatusMap[connectionState]),
59
+ );
60
+ const resolvedLive = $derived(live ?? connectionState !== undefined);
61
+ const normalizedLabel = $derived(
62
+ label?.trim()
63
+ ? label.trim()
64
+ : connectionState === undefined
65
+ ? undefined
66
+ : connectionLabels[connectionState],
67
+ );
34
68
  const hasVisibleLabel = $derived(showLabel && normalizedLabel !== undefined);
35
69
 
36
70
  // `role="img"` needs an author-provided name. Blank labels are treated as
37
71
  // absent so status is never communicated by color alone.
38
- const resolvedAriaLabel = $derived(normalizedAriaLabel ?? normalizedLabel ?? status);
72
+ const resolvedAriaLabel = $derived(normalizedAriaLabel ?? normalizedLabel ?? resolvedStatus);
73
+ const visibleLabelIsLiveDuplicate = $derived(
74
+ resolvedLive && normalizedLabel !== undefined && resolvedAriaLabel !== normalizedLabel,
75
+ );
76
+ const needsHiddenLiveLabel = $derived(
77
+ resolvedLive && (!hasVisibleLabel || visibleLabelIsLiveDuplicate),
78
+ );
39
79
  </script>
40
80
 
41
81
  <!--
@@ -51,13 +91,22 @@
51
91
  <span
52
92
  {...rest}
53
93
  class={classNames('cinder-status-dot', className)}
54
- data-cinder-status={status}
94
+ data-cinder-status={resolvedStatus}
95
+ data-cinder-state={connectionState}
55
96
  data-cinder-size={size}
56
- role="img"
57
- aria-label={resolvedAriaLabel}
97
+ role={resolvedLive ? 'status' : 'img'}
98
+ aria-live={resolvedLive ? 'polite' : undefined}
99
+ aria-atomic={resolvedLive ? 'true' : undefined}
100
+ aria-label={resolvedLive ? undefined : resolvedAriaLabel}
58
101
  >
59
102
  <span class="cinder-status-dot__indicator" aria-hidden="true"></span>
60
103
  {#if hasVisibleLabel}
61
- <span class="cinder-status-dot__label">{normalizedLabel}</span>
104
+ <span
105
+ class="cinder-status-dot__label"
106
+ aria-hidden={visibleLabelIsLiveDuplicate ? 'true' : undefined}>{normalizedLabel}</span
107
+ >
108
+ {/if}
109
+ {#if needsHiddenLiveLabel}
110
+ <span class="cinder-sr-only">{resolvedAriaLabel}</span>
62
111
  {/if}
63
112
  </span>
@@ -6,7 +6,7 @@ import type { HTMLAttributes } from 'svelte/elements';
6
6
  * The string values are stamped onto the root as `data-cinder-status` and
7
7
  * drive color exclusively via CSS — there are no hard-coded color classes
8
8
  * on the component. The token mapping (e.g. `online` → `--cinder-success`,
9
- * `error` → `--cinder-danger`) lives in `status-dot.css` so consumers can
9
+ * `danger` → `--cinder-danger`) lives in `status-dot.css` so consumers can
10
10
  * theme without forking the component.
11
11
  *
12
12
  * - `success` maps to `--cinder-success` (same hue as `online`).
@@ -19,7 +19,7 @@ export type StatusDotStatus =
19
19
  | 'online'
20
20
  | 'offline'
21
21
  | 'warning'
22
- | 'error'
22
+ | 'danger'
23
23
  | 'pending'
24
24
  | 'neutral'
25
25
  | 'success'
@@ -27,6 +27,9 @@ export type StatusDotStatus =
27
27
 
28
28
  export type StatusDotSize = 'sm' | 'md';
29
29
 
30
+ /** Realtime connection states that StatusDot can render as a live-region preset. */
31
+ export type StatusDotConnectionState = 'connected' | 'connecting' | 'disconnected' | 'error';
32
+
30
33
  /**
31
34
  * Props for StatusDot.
32
35
  *
@@ -37,10 +40,14 @@ export type StatusDotSize = 'sm' | 'md';
37
40
  * fallback.
38
41
  */
39
42
  export type StatusDotProps = Omit<HTMLAttributes<HTMLSpanElement>, 'class'> & {
40
- /** Required semantic status. Drives color via `data-cinder-status`. */
41
- status: StatusDotStatus;
43
+ /** Semantic status. Drives color via `data-cinder-status`; defaults to a neutral dot or derives from `connectionState`. */
44
+ status?: StatusDotStatus;
45
+ /** Realtime connection preset. Sets status, default label, and live-region semantics. */
46
+ connectionState?: StatusDotConnectionState;
42
47
  /** Optional human label. Rendered visibly when `showLabel` is true; used as the accessible name either way. */
43
48
  label?: string;
49
+ /** Use role="status" with polite live-region attributes. Defaults true when connectionState is provided. */
50
+ live?: boolean;
44
51
  /** Whether to render the visible label. Default `true`. */
45
52
  showLabel?: boolean;
46
53
  /** Dot size. Default `'md'`. */
@@ -50,12 +57,16 @@ export type StatusDotProps = Omit<HTMLAttributes<HTMLSpanElement>, 'class'> & {
50
57
  };
51
58
 
52
59
  export interface StatusDotSchemaProps {
53
- /** Required semantic status. Drives color via `data-cinder-status`. `success` maps to `--cinder-success`; `accent` maps to `--cinder-accent`. */
54
- status: StatusDotStatus;
60
+ /** Semantic status. Drives color via `data-cinder-status`; defaults to a neutral dot or derives from `connectionState`. `success` maps to `--cinder-success`; `accent` maps to `--cinder-accent`. */
61
+ status?: StatusDotStatus;
62
+ /** Realtime connection preset. Sets status, default label, and live-region semantics. */
63
+ connectionState?: StatusDotConnectionState;
55
64
  /** Optional human label. Rendered visibly when `showLabel` is true; used as the accessible name either way. */
56
65
  label?: string;
57
66
  /** Whether to render the visible label. @default true */
58
67
  showLabel?: boolean;
68
+ /** Use role="status" with polite live-region attributes. Defaults true when connectionState is provided. */
69
+ live?: boolean;
59
70
  /** Dot size. @default "md" */
60
71
  size?: StatusDotSize;
61
72
  /** Extra classes appended to the root element. */
@@ -191,14 +191,14 @@
191
191
  /* Ring uses --cinder-ring-color: the bright fill-accent (L 0.72) is only
192
192
  ~1.8:1 against the white marker surface, so the current-step indicator
193
193
  would be near-invisible in light mode. */
194
- box-shadow: 0 0 0 2px var(--cinder-ring-color);
194
+ box-shadow: 0 0 0 var(--cinder-ring-width) var(--cinder-ring-color);
195
195
  color: var(--cinder-accent-text);
196
196
  }
197
197
 
198
198
  @media (forced-colors: active) {
199
199
  [data-cinder-state='current'] .cinder-steps__marker {
200
- outline: 2px solid ButtonText;
201
- outline-offset: 2px;
200
+ outline: var(--cinder-ring-width) solid ButtonText;
201
+ outline-offset: var(--cinder-ring-width);
202
202
  box-shadow: none;
203
203
  }
204
204
  }
@@ -162,6 +162,16 @@
162
162
  z-index: 2;
163
163
  }
164
164
 
165
+ @media (forced-colors: active) {
166
+ .cinder-table__sort-button:focus-visible {
167
+ outline: var(--cinder-ring-width) solid ButtonText;
168
+ /* 2px is correct here: sort-button has border:none so there is no
169
+ ButtonBorder to merge with at 2px. */
170
+ outline-offset: 2px;
171
+ box-shadow: none;
172
+ }
173
+ }
174
+
165
175
  @media (hover: hover) {
166
176
  .cinder-table__sort-button:hover {
167
177
  background: var(--cinder-surface-hover);
@@ -19,7 +19,7 @@
19
19
  "id": "selection",
20
20
  "title": "Selectable rows",
21
21
  "description": "Table with a select-all checkbox in the header and per-row selection. One row is explicitly disabled from selection.",
22
- "code": "<script lang=\"ts\">\n import { Table } from '@lostgradient/cinder/table';\n const people = [\n {\n id: '1',\n name: 'Ada Lovelace',\n role: 'Mathematician',\n commits: 142,\n selectionDisabled: false,\n },\n {\n id: '2',\n name: 'Grace Hopper',\n role: 'Computer Scientist',\n commits: 98,\n selectionDisabled: false,\n },\n { id: '3', name: 'Alan Turing', role: 'Cryptanalyst', commits: 76, selectionDisabled: true },\n ];\n\n let selectedIds = $state(new Set<string>());\n\n const selectableRows = $derived(people.filter((p) => !p.selectionDisabled));\n const allSelected = $derived(\n selectableRows.length > 0 && selectableRows.every((p) => selectedIds.has(p.id)),\n );\n const someSelected = $derived(selectableRows.some((p) => selectedIds.has(p.id)));\n\n function onSelectAll(next: boolean): void {\n if (next) {\n selectedIds = new Set(selectableRows.map((p) => p.id));\n } else {\n selectedIds = new Set();\n }\n }\n\n function onRowChange(id: string, next: boolean): void {\n const updated = new Set(selectedIds);\n if (next) {\n updated.add(id);\n } else {\n updated.delete(id);\n }\n selectedIds = updated;\n }\n</script>\n\n<Table caption=\"Recent contributors\" selectable>\n <Table.Header\n {allSelected}\n {someSelected}\n {onSelectAll}\n selectAllLabel=\"Select all selectable rows\"\n >\n <Table.Row>\n <Table.HeaderCell>Name</Table.HeaderCell>\n <Table.HeaderCell>Role</Table.HeaderCell>\n <Table.HeaderCell align=\"right\">Commits</Table.HeaderCell>\n </Table.Row>\n </Table.Header>\n <Table.Body>\n {#each people as person (person.id)}\n {#if person.selectionDisabled}\n <Table.Row selectionDisabled={true}>\n <Table.Cell>{person.name}</Table.Cell>\n <Table.Cell>{person.role}</Table.Cell>\n <Table.Cell align=\"right\">{person.commits}</Table.Cell>\n </Table.Row>\n {:else}\n <Table.Row\n selected={selectedIds.has(person.id)}\n onSelectedChange={(next) => onRowChange(person.id, next)}\n selectionLabel={`Select ${person.name}`}\n >\n <Table.Cell>{person.name}</Table.Cell>\n <Table.Cell>{person.role}</Table.Cell>\n <Table.Cell align=\"right\">{person.commits}</Table.Cell>\n </Table.Row>\n {/if}\n {/each}\n </Table.Body>\n</Table>\n\n{#if selectedIds.size > 0}\n <p style=\"margin-top: 0.75rem; font-size: 0.875rem; color: var(--cinder-text-muted)\">\n {selectedIds.size} row{selectedIds.size !== 1 ? 's' : ''} selected\n </p>\n{/if}\n"
22
+ "code": "<script lang=\"ts\">\n import { Table } from '@lostgradient/cinder/table';\n const people = [\n {\n id: '1',\n name: 'Ada Lovelace',\n role: 'Mathematician',\n commits: 142,\n selectionDisabled: false,\n },\n {\n id: '2',\n name: 'Grace Hopper',\n role: 'Computer Scientist',\n commits: 98,\n selectionDisabled: false,\n },\n { id: '3', name: 'Alan Turing', role: 'Cryptanalyst', commits: 76, selectionDisabled: true },\n ];\n\n let selectedIds = $state(new Set<string>());\n\n const selectableRows = $derived(people.filter((p) => !p.selectionDisabled));\n const allSelected = $derived(\n selectableRows.length > 0 && selectableRows.every((p) => selectedIds.has(p.id)),\n );\n const someSelected = $derived(selectableRows.some((p) => selectedIds.has(p.id)));\n\n function onSelectAll(next: boolean): void {\n if (next) {\n selectedIds = new Set(selectableRows.map((p) => p.id));\n } else {\n selectedIds = new Set();\n }\n }\n\n function onRowChange(id: string, next: boolean): void {\n const updated = new Set(selectedIds);\n if (next) {\n updated.add(id);\n } else {\n updated.delete(id);\n }\n selectedIds = updated;\n }\n</script>\n\n<Table caption=\"Recent contributors\" selectable>\n <Table.Header\n {allSelected}\n {someSelected}\n onselectall={onSelectAll}\n selectAllLabel=\"Select all selectable rows\"\n >\n <Table.Row>\n <Table.HeaderCell>Name</Table.HeaderCell>\n <Table.HeaderCell>Role</Table.HeaderCell>\n <Table.HeaderCell align=\"right\">Commits</Table.HeaderCell>\n </Table.Row>\n </Table.Header>\n <Table.Body>\n {#each people as person (person.id)}\n {#if person.selectionDisabled}\n <Table.Row selectionDisabled={true}>\n <Table.Cell>{person.name}</Table.Cell>\n <Table.Cell>{person.role}</Table.Cell>\n <Table.Cell align=\"right\">{person.commits}</Table.Cell>\n </Table.Row>\n {:else}\n <Table.Row\n selected={selectedIds.has(person.id)}\n onselectedchange={(next) => onRowChange(person.id, next)}\n selectionLabel={`Select ${person.name}`}\n >\n <Table.Cell>{person.name}</Table.Cell>\n <Table.Cell>{person.role}</Table.Cell>\n <Table.Cell align=\"right\">{person.commits}</Table.Cell>\n </Table.Row>\n {/if}\n {/each}\n </Table.Body>\n</Table>\n\n{#if selectedIds.size > 0}\n <p style=\"margin-top: 0.75rem; font-size: 0.875rem; color: var(--cinder-text-muted)\">\n {selectedIds.size} row{selectedIds.size !== 1 ? 's' : ''} selected\n </p>\n{/if}\n"
23
23
  },
24
24
  {
25
25
  "id": "sticky-sortable",
@@ -62,7 +62,7 @@
62
62
  { box: 'border-box', enabled: () => stickyHeader },
63
63
  );
64
64
 
65
- function onSortChange(column: string): void {
65
+ function onsortchange(column: string): void {
66
66
  if (!sort || sort.column !== column) {
67
67
  sort = { column, direction: 'ascending' };
68
68
  return;
@@ -81,7 +81,7 @@
81
81
  get selectionEnabled() {
82
82
  return selectable;
83
83
  },
84
- onSortChange,
84
+ onsortchange,
85
85
  });
86
86
  </script>
87
87
 
@@ -20,13 +20,13 @@ export type TableSectionContext = 'header' | 'body';
20
20
  export type TableHeaderSelectionContext = {
21
21
  readonly allSelected: boolean;
22
22
  readonly someSelected: boolean;
23
- readonly onSelectAll: (next: boolean) => void;
23
+ readonly onselectall: (next: boolean) => void;
24
24
  readonly selectAllLabel: string;
25
25
  claimSelectionHeaderCell: () => void;
26
26
  };
27
27
  /**
28
28
  * Shape of the table context provided to child components. Header cells call
29
- * `onSortChange` with their column key when activated; the table propagates
29
+ * `onsortchange` with their column key when activated; the table propagates
30
30
  * the new sort state to its bindable `sort` prop. Children read
31
31
  * `selectionEnabled` to render the leading selection cell.
32
32
  *
@@ -36,7 +36,7 @@ export type TableHeaderSelectionContext = {
36
36
  */
37
37
  export type TableContext = {
38
38
  readonly sort: TableSort | undefined;
39
- onSortChange: (column: string) => void;
39
+ onsortchange: (column: string) => void;
40
40
  /** Mirror of Table.selectable. Set synchronously at construction time. */
41
41
  readonly selectionEnabled?: boolean;
42
42
  };
@@ -19,9 +19,9 @@ snippet. The flat `@lostgradient/cinder/table-header` subpath remains exported f
19
19
  | `allSelected` | `boolean` | no | — | Checked state for the select-all checkbox. Required when `Table.selectable` is true. |
20
20
  | `class` | `string` | no | — | Additional class names merged with `.cinder-table__header`. |
21
21
  | `selectAllLabel` | `string` | no | — | Accessible name for the select-all checkbox. Defaults to "Select all rows". When the table contains rows with `selectionDisabled={true}`, pass a more accurate label such as "Select all selectable rows". |
22
- | `someSelected` | `boolean` | no | — | When true and `allSelected` is false, the select-all checkbox renders as indeterminate. The browser exposes that as `aria-checked="mixed"` to assistive tech. Required (alongside `allSelected` and `onSelectAll`) when `Table.selectable` is true for accurate checkbox state. |
22
+ | `someSelected` | `boolean` | no | — | When true and `allSelected` is false, the select-all checkbox renders as indeterminate. The browser exposes that as `aria-checked="mixed"` to assistive tech. Required (alongside `allSelected` and `onselectall`) when `Table.selectable` is true for accurate checkbox state. |
23
23
  | `children` | `(opaque)` | yes | — | TableRow children — typically a single header row. Not expressible in JSON Schema; see the component types for the signature. |
24
- | `onSelectAll` | `(opaque)` | no | — | Called when the user activates the select-all checkbox. Required when `Table.selectable` is true. Not expressible in JSON Schema; see the component types for the signature. |
24
+ | `onselectall` | `(opaque)` | no | — | Called when the user activates the select-all checkbox. Required when `Table.selectable` is true. Not expressible in JSON Schema; see the component types for the signature. |
25
25
 
26
26
  <!-- generated:props:end -->
27
27
 
@@ -29,7 +29,7 @@
29
29
  children,
30
30
  allSelected,
31
31
  someSelected,
32
- onSelectAll,
32
+ onselectall,
33
33
  selectAllLabel = 'Select all rows',
34
34
  }: TableHeaderProps = $props();
35
35
 
@@ -39,10 +39,10 @@
39
39
  // One-time mount-time guard; read the props untracked.
40
40
  if (
41
41
  selectionEnabled &&
42
- untrack(() => allSelected === undefined || someSelected === undefined || !onSelectAll)
42
+ untrack(() => allSelected === undefined || someSelected === undefined || !onselectall)
43
43
  ) {
44
44
  throw new Error(
45
- '[Cinder] TableHeader: `allSelected`, `someSelected`, and `onSelectAll` are required when Table.selectable is true.',
45
+ '[Cinder] TableHeader: `allSelected`, `someSelected`, and `onselectall` are required when Table.selectable is true.',
46
46
  );
47
47
  }
48
48
 
@@ -66,8 +66,8 @@
66
66
  get someSelected() {
67
67
  return someSelected ?? false;
68
68
  },
69
- get onSelectAll() {
70
- return onSelectAll ?? (() => {});
69
+ get onselectall() {
70
+ return onselectall ?? (() => {});
71
71
  },
72
72
  get selectAllLabel() {
73
73
  return selectAllLabel;
@@ -9,12 +9,12 @@ export type TableHeaderProps = {
9
9
  /**
10
10
  * When true and `allSelected` is false, the select-all checkbox renders as indeterminate.
11
11
  * The browser exposes that as `aria-checked="mixed"` to assistive tech.
12
- * Required (alongside `allSelected` and `onSelectAll`) when `Table.selectable`
12
+ * Required (alongside `allSelected` and `onselectall`) when `Table.selectable`
13
13
  * is true for accurate checkbox state.
14
14
  */
15
15
  someSelected?: boolean;
16
16
  /** Called when the user activates the select-all checkbox. Required when `Table.selectable` is true. */
17
- onSelectAll?: (next: boolean) => void;
17
+ onselectall?: (next: boolean) => void;
18
18
  /**
19
19
  * Accessible name for the select-all checkbox. Defaults to "Select all rows".
20
20
  * When the table contains rows with `selectionDisabled={true}`, pass a more
@@ -48,10 +48,16 @@
48
48
  ? 'none'
49
49
  : undefined,
50
50
  );
51
+ const nextSortDescription = $derived(
52
+ ariaSort === 'ascending' ? 'Activate to sort descending' : 'Activate to sort ascending',
53
+ );
54
+ const sortButtonDescriptionAttributes = $derived({
55
+ 'aria-description': nextSortDescription,
56
+ });
51
57
 
52
58
  function handleClick(): void {
53
59
  if (!sortable || !column) return;
54
- table.onSortChange(column);
60
+ table.onsortchange(column);
55
61
  }
56
62
  </script>
57
63
 
@@ -64,7 +70,12 @@
64
70
  aria-sort={ariaSort}
65
71
  >
66
72
  {#if isSortable}
67
- <button type="button" class="cinder-table__sort-button" onclick={handleClick}>
73
+ <button
74
+ {...sortButtonDescriptionAttributes}
75
+ type="button"
76
+ class="cinder-table__sort-button"
77
+ onclick={handleClick}
78
+ >
68
79
  {@render children()}
69
80
  <span
70
81
  class="cinder-table__sort-indicator"
@@ -17,11 +17,11 @@ snippet. The flat `@lostgradient/cinder/table-row` subpath remains exported for
17
17
  | Prop | Type | Required | Default | Description |
18
18
  | ------------------- | ---------- | -------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
19
19
  | `class` | `string` | no | — | Additional class names merged with `.cinder-table__row`. |
20
- | `selected` | `boolean` | no | — | Whether the row's selection checkbox is checked. Required in selectable tables alongside `onSelectedChange` and `selectionLabel`. |
20
+ | `selected` | `boolean` | no | — | Whether the row's selection checkbox is checked. Required in selectable tables alongside `onselectedchange` and `selectionLabel`. |
21
21
  | `selectionDisabled` | `boolean` | no | — | When true, renders a disabled selection checkbox for this row, preventing selection while keeping the alignment cell. |
22
22
  | `selectionLabel` | `string` | no | — | Accessible name for the disabled selection checkbox. Provide a localised string to override the English default ("Selection not allowed for this row"). The library cannot localise on the consumer's behalf, so this is the seam for non-English applications or custom phrasing. |
23
23
  | `children` | `(opaque)` | yes | — | Cell children (TableCell or TableHeaderCell). Not expressible in JSON Schema; see the component types for the signature. |
24
- | `onSelectedChange` | `(opaque)` | no | — | A function or snippet prop. Its shape is not captured by the JSON schema; see the component types for the exact signature. |
24
+ | `onselectedchange` | `(opaque)` | no | — | A function or snippet prop. Its shape is not captured by the JSON schema; see the component types for the exact signature. |
25
25
 
26
26
  <!-- generated:props:end -->
27
27
 
@@ -30,7 +30,7 @@
30
30
  class: className,
31
31
  children,
32
32
  selected,
33
- onSelectedChange,
33
+ onselectedchange,
34
34
  selectionLabel,
35
35
  selectionDisabled,
36
36
  ...rest
@@ -50,13 +50,13 @@
50
50
  if (!hasDisabled) {
51
51
  // All three must be present — reject partial trios.
52
52
  const hasSelected = selected !== undefined;
53
- const hasOnChange = onSelectedChange !== undefined;
53
+ const hasOnChange = onselectedchange !== undefined;
54
54
  const hasLabel = selectionLabel !== undefined;
55
55
  if (!hasSelected || !hasOnChange || !hasLabel) {
56
56
  throw new Error(
57
57
  '[Cinder] TableRow: when Table.selectable is true, each body row must supply ' +
58
- 'selected + onSelectedChange + selectionLabel together, or set selectionDisabled={true}. ' +
59
- `Missing: ${[!hasSelected && 'selected', !hasOnChange && 'onSelectedChange', !hasLabel && 'selectionLabel'].filter(Boolean).join(', ')}.`,
58
+ 'selected + onselectedchange + selectionLabel together, or set selectionDisabled={true}. ' +
59
+ `Missing: ${[!hasSelected && 'selected', !hasOnChange && 'onselectedchange', !hasLabel && 'selectionLabel'].filter(Boolean).join(', ')}.`,
60
60
  );
61
61
  }
62
62
  }
@@ -73,12 +73,12 @@
73
73
 
74
74
  function handleSelectAllChange(event: Event): void {
75
75
  const input = event.currentTarget as HTMLInputElement;
76
- headerSelection?.onSelectAll(input.checked);
76
+ headerSelection?.onselectall(input.checked);
77
77
  }
78
78
 
79
79
  function handleRowChange(event: Event): void {
80
80
  const input = event.currentTarget as HTMLInputElement;
81
- onSelectedChange?.(input.checked);
81
+ onselectedchange?.(input.checked);
82
82
  }
83
83
 
84
84
  const shouldRenderHeaderSelectionCell =
@@ -4,7 +4,7 @@ import type { HTMLAttributes } from 'svelte/elements';
4
4
  /**
5
5
  * Discriminated union for row selection props.
6
6
  *
7
- * - Active branch: supply `selected` + `onSelectedChange` + `selectionLabel`.
7
+ * - Active branch: supply `selected` + `onselectedchange` + `selectionLabel`.
8
8
  * - Opt-out branch: supply `selectionDisabled: true` — renders an empty alignment cell.
9
9
  * - Inert branch: supply nothing — only valid when `Table.selectable` is false or
10
10
  * the row is inside `TableHeader`.
@@ -13,13 +13,13 @@ import type { HTMLAttributes } from 'svelte/elements';
13
13
  * object at destructuring time. TypeScript cannot narrow the active vs inert
14
14
  * branch after destructuring. Runtime validation enforces the contract when
15
15
  * `Table.selectable` is true — both `selected` and `selectionLabel` are
16
- * required together and `onSelectedChange` must be present.
16
+ * required together and `onselectedchange` must be present.
17
17
  */
18
18
  export type TableRowSelectionProps =
19
19
  | {
20
- /** Whether the row's selection checkbox is checked. Required in selectable tables alongside `onSelectedChange` and `selectionLabel`. */
20
+ /** Whether the row's selection checkbox is checked. Required in selectable tables alongside `onselectedchange` and `selectionLabel`. */
21
21
  selected: boolean;
22
- onSelectedChange: (next: boolean) => void;
22
+ onselectedchange: (next: boolean) => void;
23
23
  selectionLabel: string;
24
24
  selectionDisabled?: false;
25
25
  }
@@ -27,7 +27,7 @@ export type TableRowSelectionProps =
27
27
  /** When true, renders a disabled selection checkbox for this row, preventing selection while keeping the alignment cell. */
28
28
  selectionDisabled: true;
29
29
  selected?: undefined;
30
- onSelectedChange?: undefined;
30
+ onselectedchange?: undefined;
31
31
  /**
32
32
  * Accessible name for the disabled selection checkbox. Provide a localised
33
33
  * string to override the English default ("Selection not allowed for this
@@ -38,7 +38,7 @@ export type TableRowSelectionProps =
38
38
  }
39
39
  | {
40
40
  selected?: undefined;
41
- onSelectedChange?: undefined;
41
+ onselectedchange?: undefined;
42
42
  selectionLabel?: undefined;
43
43
  selectionDisabled?: undefined;
44
44
  };
@@ -65,6 +65,7 @@ trailing badge alone to convey it.
65
65
  | `orientation` | `"horizontal"` \| `"vertical"` | no | — | Layout orientation. Affects which arrow keys move between tabs. |
66
66
  | `value` | `string` | no | — | Bound active tab value. |
67
67
  | `children` | `(opaque)` | yes | — | Tab and TabPanel children. Not expressible in JSON Schema; see the component types for the signature. |
68
+ | `onValueChange` | `(opaque)` | no | — | Intercept a proposed tab value 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. |
68
69
 
69
70
  <!-- generated:props:end -->
70
71
 
@@ -21,11 +21,13 @@
21
21
 
22
22
  import { handleRovingKeydown, isRovingKey } from '../../utilities/roving-tabindex.ts';
23
23
  import { classNames } from '../../utilities/class-names.ts';
24
+ import { commitValue } from '../../utilities/value-change.ts';
24
25
 
25
26
  const baseId = $props.id();
26
27
 
27
28
  let {
28
29
  value = $bindable(''),
30
+ onValueChange,
29
31
  orientation = 'horizontal',
30
32
  activateOnFocus,
31
33
  class: className,
@@ -124,7 +126,9 @@
124
126
  const focusedValue = order[focused];
125
127
  if (focusedValue === undefined) return;
126
128
  event.preventDefault();
127
- value = focusedValue;
129
+ commitValue(focusedValue, onValueChange, (next) => {
130
+ value = next;
131
+ });
128
132
  return;
129
133
  }
130
134
 
@@ -154,7 +158,9 @@
154
158
  if (nextValue === undefined) return;
155
159
  focusValue(nextValue);
156
160
  if (effectiveActivateOnFocus) {
157
- value = nextValue;
161
+ commitValue(nextValue, onValueChange, (next) => {
162
+ value = next;
163
+ });
158
164
  }
159
165
  }
160
166
 
@@ -172,7 +178,9 @@
172
178
  return baseId;
173
179
  },
174
180
  select(next) {
175
- value = next;
181
+ commitValue(next, onValueChange, (nextValue) => {
182
+ value = nextValue;
183
+ });
176
184
  },
177
185
  isActive(candidate) {
178
186
  return value === candidate;
@@ -58,6 +58,8 @@ export type TabsContext = {
58
58
  export type TabsProps = {
59
59
  /** Bound active tab value. */
60
60
  value?: string;
61
+ /** Intercept a proposed tab value before the bindable value is written. Return a replacement value to transform it. */
62
+ onValueChange?: (next: string) => string | void;
61
63
  /** Layout orientation. Affects which arrow keys move between tabs. */
62
64
  orientation?: TabsOrientation;
63
65
  /**
@@ -21,13 +21,20 @@
21
21
  * ---------------------------------------- */
22
22
 
23
23
  .cinder-textarea-label {
24
- display: block;
24
+ display: inline-flex;
25
+ align-items: center;
26
+ gap: var(--cinder-space-1);
25
27
  font-size: var(--cinder-text-xs);
26
28
  font-weight: var(--cinder-font-medium);
27
29
  line-height: 1;
28
30
  color: var(--cinder-text);
29
31
  }
30
32
 
33
+ .cinder-textarea-label[data-disabled] {
34
+ color: var(--cinder-text-disabled);
35
+ cursor: not-allowed;
36
+ }
37
+
31
38
  /* ----------------------------------------
32
39
  * Textarea control
33
40
  * ---------------------------------------- */
@@ -99,6 +106,14 @@
99
106
  0 0 0 calc(var(--cinder-ring-offset) + var(--cinder-ring-width)) var(--cinder-danger);
100
107
  }
101
108
 
109
+ @media (forced-colors: active) {
110
+ .cinder-textarea[aria-invalid='true']:focus-visible {
111
+ outline: var(--cinder-ring-width) solid Mark;
112
+ outline-offset: 3px;
113
+ box-shadow: none;
114
+ }
115
+ }
116
+
102
117
  /* ----------------------------------------
103
118
  * Disabled state
104
119
  * ---------------------------------------- */
@@ -62,7 +62,12 @@
62
62
 
63
63
  <div class="cinder-textarea-field">
64
64
  {#if label}
65
- <label for={id} class="cinder-textarea-label">{label}</label>
65
+ <label for={id} class="cinder-textarea-label" data-disabled={field.disabled || undefined}>
66
+ {label}
67
+ {#if field.required}
68
+ <span class="cinder-_required-marker" aria-hidden="true">*</span>
69
+ {/if}
70
+ </label>
66
71
  {/if}
67
72
  <textarea
68
73
  {id}