@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.
- package/CHANGELOG.md +146 -0
- package/README.md +2 -2
- package/components.json +138 -86
- package/dist/_internal/locale-context.d.ts +9 -0
- package/dist/_internal/text-direction.d.ts +4 -0
- package/dist/_internal/tree-context.d.ts +2 -0
- package/dist/api-contract.d.ts +1 -1
- package/dist/components/_internal/create-command-list-state.svelte.d.ts +43 -0
- package/dist/components/_internal/create-sliding-dialog-state.svelte.d.ts +26 -0
- package/dist/components/access-gate/index.js +379 -513
- package/dist/components/alert/alert.css +1 -1
- package/dist/components/alert/alert.schema.js +4 -4
- package/dist/components/alert/alert.types.d.ts +4 -4
- package/dist/components/alert/index.js +4 -4
- package/dist/components/alert-dialog/index.js +9 -3
- package/dist/components/approval-card/approval-card-state.d.ts +3 -0
- package/dist/components/approval-card/approval-card.css +239 -0
- package/dist/components/approval-card/approval-card.schema.js +236 -0
- package/dist/components/approval-card/approval-card.svelte.d.ts +21 -0
- package/dist/components/approval-card/approval-card.types.d.ts +155 -0
- package/dist/components/{subscription-badge/subscription-badge.variables.js → approval-card/approval-card.variables.js} +4 -4
- package/dist/components/approval-card/index.d.ts +5 -0
- package/dist/components/approval-card/index.js +3794 -0
- package/dist/components/autocomplete/autocomplete.css +12 -1
- package/dist/components/autocomplete/index.js +106 -81
- package/dist/components/avatar-group/index.js +3 -2
- package/dist/components/badge/badge.schema.js +6 -3
- package/dist/components/badge/badge.svelte.d.ts +4 -0
- package/dist/components/badge/badge.types.d.ts +18 -4
- package/dist/components/badge/index.d.ts +1 -1
- package/dist/components/badge/index.js +99 -3
- package/dist/components/banner/banner.schema.js +2 -2
- package/dist/components/banner/banner.types.d.ts +1 -1
- package/dist/components/banner/index.js +3 -3
- package/dist/components/button/button.css +1 -1
- package/dist/components/capability-gate/capability-gate.css +15 -2
- package/dist/components/capability-gate/capability-gate.schema.js +4 -4
- package/dist/components/capability-gate/capability-gate.types.d.ts +6 -6
- package/dist/components/capability-gate/index.js +7 -7
- package/dist/components/chat/chat.schema.js +11 -26
- package/dist/components/chat/chat.types.d.ts +30 -15
- package/dist/components/chat/container/chat-events.d.ts +2 -2
- package/dist/components/chat/container/chat-history-trigger.svelte.d.ts +1 -1
- package/dist/components/chat/container/chat.svelte.d.ts +1 -1
- package/dist/components/chat/container/use-chat-scroll-state.svelte.d.ts +4 -4
- package/dist/components/chat/container/use-chat-unread-state.svelte.d.ts +6 -6
- package/dist/components/chat/index.d.ts +1 -1
- package/dist/components/chat/index.js +2257 -1913
- package/dist/components/chat/input/chat-input.svelte.d.ts +3 -1
- package/dist/components/chat-conversation-header/index.js +261 -29
- package/dist/components/chat-conversation-list/chat-conversation-list.css +13 -0
- package/dist/components/checkbox/checkbox.css +3 -0
- package/dist/components/checkbox/checkbox.schema.js +6 -1
- package/dist/components/checkbox/checkbox.types.d.ts +2 -0
- package/dist/components/checkbox/index.js +78 -22
- package/dist/components/checkbox-group/checkbox-group.css +3 -0
- package/dist/components/checkbox-group/checkbox-group.schema.js +4 -4
- package/dist/components/checkbox-group/checkbox-group.types.d.ts +12 -7
- package/dist/components/checkbox-group/index.js +50 -21
- package/dist/components/choice-grid/index.js +2 -2
- package/dist/components/choice-grid-item/index.js +2 -2
- package/dist/components/click-away-listener/click-away-listener.schema.js +3 -3
- package/dist/components/click-away-listener/click-away-listener.types.d.ts +3 -3
- package/dist/components/click-away-listener/index.js +3 -3
- package/dist/components/code-block/code-block.css +4 -3
- package/dist/components/code-block/index.js +6 -5
- package/dist/components/collapsible/collapsible.schema.js +2 -2
- package/dist/components/collapsible/collapsible.types.d.ts +2 -2
- package/dist/components/collapsible/index.js +3 -3
- package/dist/components/color-field/color-field.schema.js +3 -3
- package/dist/components/color-field/color-field.types.d.ts +2 -2
- package/dist/components/color-field/index.js +133 -69
- package/dist/components/color-picker/index.js +29 -18
- package/dist/components/color-swatch-picker/index.js +29 -18
- package/dist/components/combobox/combobox.schema.js +6 -2
- package/dist/components/combobox/combobox.types.d.ts +7 -1
- package/dist/components/combobox/index.js +112 -60
- package/dist/components/command-item/command-item.css +10 -0
- package/dist/components/command-item/command-item.schema.js +9 -1
- package/dist/components/command-item/command-item.types.d.ts +4 -0
- package/dist/components/command-item/index.js +9 -1
- package/dist/components/command-menu/index.js +257 -161
- package/dist/components/command-palette/command-palette.schema.js +2 -3
- package/dist/components/command-palette/command-palette.types.d.ts +1 -2
- package/dist/components/command-palette/index.js +282 -192
- package/dist/components/confirm-dialog/index.js +9 -3
- package/dist/components/context-menu/context-menu.context.d.ts +2 -0
- package/dist/components/context-menu/index.js +300 -40
- package/dist/components/context-menu-trigger/index.js +11 -8
- package/dist/components/copy-button/index.js +6 -5
- package/dist/components/data-grid/_internal/column-model.svelte.d.ts +1 -0
- package/dist/components/data-grid/data-grid.css +25 -0
- package/dist/components/data-grid/data-grid.schema.js +3 -3
- package/dist/components/data-grid/data-grid.types.d.ts +8 -2
- package/dist/components/data-grid/index.js +11 -8
- package/dist/components/data-list/data-list.schema.js +7 -10
- package/dist/components/data-list/data-list.types.d.ts +5 -9
- package/dist/components/data-list/index.js +15 -39
- package/dist/components/data-table/data-table.css +13 -0
- package/dist/components/data-table/index.js +32 -19
- package/dist/components/date-range-field/date-range-field.schema.js +7 -3
- package/dist/components/date-range-field/date-range-field.svelte.d.ts +2 -2
- package/dist/components/date-range-field/date-range-field.types.d.ts +15 -10
- package/dist/components/date-range-field/index.d.ts +1 -1
- package/dist/components/date-range-field/index.js +160 -17
- package/dist/components/diff-viewer/diff-front-matter.svelte.d.ts +2 -2
- package/dist/components/diff-viewer/diff-line.svelte.d.ts +2 -2
- package/dist/components/diff-viewer/diff-toolbar.svelte.d.ts +2 -2
- package/dist/components/diff-viewer/diff-viewer.svelte.d.ts +1 -1
- package/dist/components/diff-viewer/diff-viewer.types.d.ts +3 -3
- package/dist/components/diff-viewer/index.d.ts +1 -1
- package/dist/components/diff-viewer/index.js +171 -67
- package/dist/components/drawer/index.js +353 -283
- package/dist/components/dropdown/dropdown.css +7 -1
- package/dist/components/dropdown/dropdown.types.d.ts +3 -0
- package/dist/components/dropdown/index.js +267 -35
- package/dist/components/dropdown-group/dropdown-group.schema.js +4 -4
- package/dist/components/dropdown-group/dropdown-group.types.d.ts +4 -4
- package/dist/components/dropdown-group/index.js +7 -7
- package/dist/components/dropdown-item/dropdown-item.schema.js +9 -1
- package/dist/components/dropdown-item/dropdown-item.types.d.ts +5 -0
- package/dist/components/dropdown-item/index.js +13 -8
- package/dist/components/dropdown-menu/index.js +236 -14
- package/dist/components/dropdown-trigger/index.js +11 -12
- package/dist/components/event-stream-viewer/event-stream-viewer-keys.d.ts +6 -0
- package/dist/components/event-stream-viewer/event-stream-viewer.css +46 -0
- package/dist/components/event-stream-viewer/event-stream-viewer.schema.js +83 -10
- package/dist/components/event-stream-viewer/event-stream-viewer.svelte.d.ts +3 -3
- package/dist/components/event-stream-viewer/event-stream-viewer.types.d.ts +124 -3
- package/dist/components/event-stream-viewer/index.d.ts +1 -1
- package/dist/components/event-stream-viewer/index.js +764 -409
- package/dist/components/faceted-filter-bar/faceted-filter-bar.css +9 -0
- package/dist/components/faceted-filter-bar/index.js +25 -6
- package/dist/components/file-upload/file-upload.css +5 -5
- package/dist/components/floating-action-button/floating-action-button.css +22 -22
- package/dist/components/floating-action-button/floating-action-button.schema.js +5 -5
- package/dist/components/floating-action-button/floating-action-button.svelte.d.ts +1 -1
- package/dist/components/floating-action-button/floating-action-button.types.d.ts +21 -21
- package/dist/components/floating-action-button/index.d.ts +1 -1
- package/dist/components/floating-action-button/index.js +8 -8
- package/dist/components/form-field/form-field.css +3 -13
- package/dist/components/form-field/index.js +2 -2
- package/dist/components/hover-card/index.js +3 -2
- package/dist/components/input/index.js +131 -67
- package/dist/components/input/input.schema.js +6 -1
- package/dist/components/input/input.types.d.ts +2 -0
- package/dist/components/invocation-rule-builder/index.d.ts +1 -1
- package/dist/components/invocation-rule-builder/index.js +184 -107
- package/dist/components/invocation-rule-builder/invocation-rule-builder.css +63 -6
- package/dist/components/invocation-rule-builder/invocation-rule-builder.schema.js +133 -35
- package/dist/components/invocation-rule-builder/invocation-rule-builder.svelte.d.ts +2 -2
- package/dist/components/invocation-rule-builder/invocation-rule-builder.types.d.ts +85 -8
- package/dist/components/json-schema-editor/form-view.svelte.d.ts +1 -0
- package/dist/components/json-schema-editor/index.js +677 -357
- package/dist/components/json-schema-editor/json-schema-editor.css +6 -1
- package/dist/components/json-schema-editor/json-schema-toolbar.svelte.d.ts +1 -0
- package/dist/components/json-schema-editor/property-editor.svelte.d.ts +2 -0
- package/dist/components/json-schema-editor/property-list-validation.d.ts +1 -0
- package/dist/components/json-schema-editor/property-list.svelte.d.ts +1 -0
- package/dist/components/json-viewer/_json-viewer-node.svelte.d.ts +3 -0
- package/dist/components/json-viewer/index.js +112 -26
- package/dist/components/json-viewer/json-viewer.css +11 -0
- package/dist/components/kanban-board/index.js +18 -13
- package/dist/components/kanban-board/kanban-board.css +56 -3
- package/dist/components/keyboard-shortcuts/index.js +2 -2
- package/dist/components/keyboard-shortcuts/keyboard-shortcuts.css +2 -2
- package/dist/components/label/index.js +2 -2
- package/dist/components/label/label.css +2 -9
- package/dist/components/load-more/index.js +4 -4
- package/dist/components/load-more/load-more.css +13 -5
- package/dist/components/load-more/load-more.schema.js +4 -4
- package/dist/components/load-more/load-more.types.d.ts +3 -3
- package/dist/components/locale-provider/index.d.ts +4 -0
- package/dist/components/locale-provider/index.js +76 -0
- package/dist/components/{connection-indicator/connection-indicator.schema.js → locale-provider/locale-provider.schema.js} +18 -14
- package/dist/components/locale-provider/locale-provider.svelte.d.ts +17 -0
- package/dist/components/locale-provider/locale-provider.types.d.ts +17 -0
- package/dist/components/{connection-indicator/connection-indicator.variables.js → locale-provider/locale-provider.variables.js} +4 -4
- package/dist/components/markdown-editor/editor-toolbar/editor-toolbar.svelte.d.ts +2 -0
- package/dist/components/markdown-editor/index.js +437 -128
- package/dist/components/markdown-editor/markdown-editor.schema.js +4 -4
- package/dist/components/markdown-editor/markdown-editor.types.d.ts +4 -4
- package/dist/components/masonry/masonry.schema.js +4 -3
- package/dist/components/masonry/masonry.types.d.ts +13 -2
- package/dist/components/matrix-chart/index.js +245 -224
- package/dist/components/media-controls/index.js +7 -7
- package/dist/components/media-controls/media-controls.css +15 -4
- package/dist/components/media-controls/media-controls.schema.js +4 -4
- package/dist/components/media-controls/media-controls.types.d.ts +7 -7
- package/dist/components/menu-bar/menu-bar.css +11 -0
- package/dist/components/menu-bar/menu-bar.svelte.d.ts +1 -0
- package/dist/components/modal/index.js +9 -3
- package/dist/components/navigation-bar/index.js +4 -4
- package/dist/components/navigation-bar/navigation-bar.schema.js +2 -2
- package/dist/components/navigation-bar/navigation-bar.types.d.ts +1 -1
- package/dist/components/number-input/index.js +88 -42
- package/dist/components/number-input/number-input.schema.js +4 -3
- package/dist/components/number-input/number-input.types.d.ts +16 -5
- package/dist/components/payload-inspector/index.d.ts +1 -1
- package/dist/components/payload-inspector/index.js +271 -64
- package/dist/components/payload-inspector/payload-inspector.css +6 -0
- package/dist/components/payload-inspector/payload-inspector.schema.js +27 -15
- package/dist/components/payload-inspector/payload-inspector.svelte.d.ts +2 -2
- package/dist/components/payload-inspector/payload-inspector.types.d.ts +52 -3
- package/dist/components/permission-matrix/permission-matrix.css +10 -0
- package/dist/components/phone-input/index.js +56 -33
- package/dist/components/phone-input/phone-input.schema.js +2 -2
- package/dist/components/phone-input/phone-input.types.d.ts +3 -2
- package/dist/components/pin-input/index.js +46 -41
- package/dist/components/pin-input/pin-input.schema.js +9 -2
- package/dist/components/pin-input/pin-input.types.d.ts +10 -1
- package/dist/components/popover/index.js +11 -4
- package/dist/components/portal/index.js +3 -2
- package/dist/components/pricing-card/index.js +22 -7
- package/dist/components/radio-group/index.js +51 -21
- package/dist/components/radio-group/radio-group.css +3 -0
- package/dist/components/radio-group/radio-group.schema.js +3 -3
- package/dist/components/radio-group/radio-group.types.d.ts +6 -2
- package/dist/components/rating/index.js +1 -6
- package/dist/components/rating/rating.schema.js +9 -2
- package/dist/components/rating/rating.types.d.ts +6 -0
- package/dist/components/review-editor/comment-list.svelte.d.ts +1 -1
- package/dist/components/review-editor/index.d.ts +1 -1
- package/dist/components/review-editor/index.js +789 -314
- package/dist/components/review-editor/review-editor-controls.svelte.d.ts +1 -1
- package/dist/components/review-editor/review-editor-impl.svelte.d.ts +4 -4
- package/dist/components/review-editor/review-editor-selection-types.d.ts +1 -1
- package/dist/components/review-editor/review-editor-state.svelte.d.ts +1 -1
- package/dist/components/review-editor/review-editor-threads.svelte.d.ts +2 -2
- package/dist/components/review-editor/review-editor.svelte.d.ts +2 -1
- package/dist/components/review-editor/review-editor.types.d.ts +77 -3
- package/dist/components/review-editor/thread-popover.svelte.d.ts +1 -1
- package/dist/components/run-step-timeline/index.d.ts +1 -1
- package/dist/components/run-step-timeline/index.js +747 -273
- package/dist/components/run-step-timeline/run-step-timeline.css +25 -5
- package/dist/components/run-step-timeline/run-step-timeline.schema.js +351 -21
- package/dist/components/run-step-timeline/run-step-timeline.svelte.d.ts +1 -1
- package/dist/components/run-step-timeline/run-step-timeline.types.d.ts +184 -3
- package/dist/components/schema-form/index.d.ts +1 -1
- package/dist/components/schema-form/index.js +1916 -474
- package/dist/components/schema-form/schema-form-async.fixture.d.ts +1 -0
- package/dist/components/schema-form/schema-form-body.svelte.d.ts +25 -0
- package/dist/components/schema-form/schema-form-model.d.ts +1 -4
- package/dist/components/schema-form/schema-form-validation.d.ts +1 -2
- package/dist/components/schema-form/schema-form.css +12 -74
- package/dist/components/schema-form/schema-form.schema.js +10 -3
- package/dist/components/schema-form/schema-form.svelte.d.ts +3 -3
- package/dist/components/schema-form/schema-form.types.d.ts +15 -8
- package/dist/components/scroll-area/index.js +3 -3
- package/dist/components/scroll-area/scroll-area.schema.js +2 -2
- package/dist/components/scroll-area/scroll-area.types.d.ts +1 -1
- package/dist/components/secret-value-field/index.js +10 -4
- package/dist/components/secret-value-field/secret-value-field.svelte.d.ts +1 -1
- package/dist/components/segmented-control/segmented-control.css +22 -1
- package/dist/components/select/index.js +37 -24
- package/dist/components/select/select.css +9 -2
- package/dist/components/selection-popover/index.js +11 -4
- package/dist/components/share-card/index.js +3 -4
- package/dist/components/share-card/share-card.css +15 -4
- package/dist/components/sheet/index.js +365 -300
- package/dist/components/shortcut-hint/index.js +3 -3
- package/dist/components/sidebar/index.js +423 -353
- package/dist/components/sidebar/sidebar.schema.js +2 -2
- package/dist/components/sidebar/sidebar.types.d.ts +1 -1
- package/dist/components/slider/index.js +211 -9
- package/dist/components/slider/slider.css +14 -9
- package/dist/components/sortable-list/sortable-list.css +1 -1
- package/dist/components/spectrogram/index.js +224 -203
- package/dist/components/spectrum-chart/index.js +208 -187
- package/dist/components/speed-dial/index.js +11 -11
- package/dist/components/speed-dial/speed-dial.css +3 -3
- package/dist/components/speed-dial-action/index.js +9 -9
- package/dist/components/stat/index.js +26 -4
- package/dist/components/stat/stat.schema.js +2 -2
- package/dist/components/stat/stat.types.d.ts +2 -2
- package/dist/components/stat-group/index.js +26 -4
- package/dist/components/stat-group/stat-group.css +1 -1
- package/dist/components/status-dot/index.d.ts +1 -1
- package/dist/components/status-dot/index.js +47 -8
- package/dist/components/status-dot/status-dot.css +45 -1
- package/dist/components/status-dot/status-dot.schema.js +12 -5
- package/dist/components/status-dot/status-dot.svelte.d.ts +5 -1
- package/dist/components/status-dot/status-dot.types.d.ts +16 -6
- package/dist/components/steps/steps.css +3 -3
- package/dist/components/table/index.js +23 -17
- package/dist/components/table/table.css +10 -0
- package/dist/components/table/table.types.d.ts +3 -3
- package/dist/components/table-header/index.js +5 -5
- package/dist/components/table-header/table-header.schema.js +3 -3
- package/dist/components/table-header/table-header.types.d.ts +2 -2
- package/dist/components/table-header-cell/index.js +11 -5
- package/dist/components/table-row/index.js +7 -7
- package/dist/components/table-row/table-row.schema.js +3 -3
- package/dist/components/table-row/table-row.types.d.ts +6 -6
- package/dist/components/tabs/index.js +17 -4
- package/dist/components/tabs/tabs.schema.js +6 -1
- package/dist/components/tabs/tabs.types.d.ts +2 -0
- package/dist/components/textarea/index.js +37 -24
- package/dist/components/textarea/textarea.css +16 -1
- package/dist/components/time-field/index.d.ts +5 -0
- package/dist/components/time-field/index.js +456 -0
- package/dist/components/time-field/time-field.css +60 -0
- package/dist/components/time-field/time-field.schema.d.ts +3 -0
- package/dist/components/time-field/time-field.schema.js +107 -0
- package/dist/components/time-field/time-field.svelte.d.ts +18 -0
- package/dist/components/time-field/time-field.types.d.ts +63 -0
- package/dist/components/time-field/time-field.variables.d.ts +2 -0
- package/dist/components/{experimental/connection-indicator/index.js → time-field/time-field.variables.js} +5 -14
- package/dist/components/toggle/index.js +39 -7
- package/dist/components/toggle/toggle.schema.js +11 -2
- package/dist/components/toggle/toggle.types.d.ts +2 -0
- package/dist/components/tooltip/index.js +3 -2
- package/dist/components/transfer-list/index.js +41 -11
- package/dist/components/transfer-list/transfer-list.css +22 -0
- package/dist/components/transfer-list/transfer-list.schema.js +2 -2
- package/dist/components/transfer-list/transfer-list.types.d.ts +2 -2
- package/dist/components/tree/index.js +238 -153
- package/dist/components/tree/tree.css +69 -0
- package/dist/components/tree/tree.schema.js +3 -3
- package/dist/components/tree/tree.types.d.ts +2 -2
- package/dist/components/tree-item/index.js +107 -68
- package/dist/components/tree-item/tree-item.schema.js +5 -5
- package/dist/components/tree-item/tree-item.types.d.ts +4 -4
- package/dist/components/virtual-list/index.js +98 -63
- package/dist/components/waveform/index.js +185 -164
- package/dist/editor/attach.d.ts +2 -2
- package/dist/editor/attach.js +10 -16
- package/dist/editor/editor.js +6 -6
- package/dist/editor/keymap-plugin.d.ts +2 -2
- package/dist/editor/keymap-plugin.js +4 -4
- package/dist/editor/types.d.ts +11 -11
- package/dist/index.d.ts +14 -12
- package/dist/index.js +106 -105
- package/dist/server/components/access-gate/index.js +176 -305
- package/dist/server/components/alert/alert.schema.js +4 -4
- package/dist/server/components/alert/index.css +1 -1
- package/dist/server/components/alert/index.js +4 -4
- package/dist/server/components/alert-dialog/index.js +9 -3
- package/dist/server/components/approval-card/approval-card.schema.js +217 -0
- package/dist/server/components/approval-card/approval-card.variables.js +12 -0
- package/dist/server/components/approval-card/index.css +1767 -0
- package/dist/server/components/approval-card/index.js +2499 -0
- package/dist/server/components/autocomplete/index.css +12 -1
- package/dist/server/components/autocomplete/index.js +34 -24
- package/dist/server/components/badge/badge.schema.js +6 -3
- package/dist/server/components/badge/index.js +71 -4
- package/dist/server/components/banner/banner.schema.js +2 -2
- package/dist/server/components/banner/index.js +3 -3
- package/dist/server/components/button/index.css +1 -1
- package/dist/server/components/capability-gate/capability-gate.schema.js +4 -4
- package/dist/server/components/capability-gate/index.css +10 -2
- package/dist/server/components/capability-gate/index.js +5 -5
- package/dist/server/components/chat/chat.schema.js +11 -26
- package/dist/server/components/chat/index.js +695 -438
- package/dist/server/components/chat-conversation-header/index.css +7 -1
- package/dist/server/components/chat-conversation-header/index.js +215 -17
- package/dist/server/components/chat-conversation-list/index.css +8 -0
- package/dist/server/components/checkbox/checkbox.schema.js +6 -1
- package/dist/server/components/checkbox/index.css +3 -0
- package/dist/server/components/checkbox/index.js +41 -4
- package/dist/server/components/checkbox-group/checkbox-group.schema.js +4 -4
- package/dist/server/components/checkbox-group/index.css +3 -0
- package/dist/server/components/checkbox-group/index.js +23 -4
- package/dist/server/components/choice-grid/index.js +2 -2
- package/dist/server/components/choice-grid-item/index.js +2 -2
- package/dist/server/components/click-away-listener/click-away-listener.schema.js +3 -3
- package/dist/server/components/click-away-listener/index.js +2 -2
- package/dist/server/components/code-block/index.css +4 -3
- package/dist/server/components/code-block/index.js +1 -6
- package/dist/server/components/collapsible/collapsible.schema.js +2 -2
- package/dist/server/components/collapsible/index.js +3 -3
- package/dist/server/components/color-field/color-field.schema.js +3 -3
- package/dist/server/components/color-field/index.js +61 -17
- package/dist/server/components/color-picker/index.js +29 -12
- package/dist/server/components/color-swatch-picker/index.js +29 -12
- package/dist/server/components/combobox/combobox.schema.js +6 -2
- package/dist/server/components/combobox/index.js +61 -12
- package/dist/server/components/command-item/command-item.schema.js +9 -1
- package/dist/server/components/command-item/index.css +1 -0
- package/dist/server/components/command-item/index.js +10 -2
- package/dist/server/components/command-menu/index.css +1 -0
- package/dist/server/components/command-menu/index.js +193 -102
- package/dist/server/components/command-palette/command-palette.schema.js +2 -3
- package/dist/server/components/command-palette/index.css +1 -0
- package/dist/server/components/command-palette/index.js +190 -106
- package/dist/server/components/confirm-dialog/index.js +9 -3
- package/dist/server/components/context-menu/index.css +7 -1
- package/dist/server/components/context-menu/index.js +244 -26
- package/dist/server/components/context-menu-trigger/index.js +7 -4
- package/dist/server/components/copy-button/index.js +1 -6
- package/dist/server/components/data-grid/data-grid.schema.js +3 -3
- package/dist/server/components/data-grid/index.css +23 -0
- package/dist/server/components/data-grid/index.js +9 -7
- package/dist/server/components/data-list/data-list.schema.js +7 -10
- package/dist/server/components/data-list/index.js +7 -21
- package/dist/server/components/data-table/index.css +20 -0
- package/dist/server/components/data-table/index.js +26 -16
- package/dist/server/components/date-range-field/date-range-field.schema.js +7 -3
- package/dist/server/components/date-range-field/index.js +146 -12
- package/dist/server/components/diff-viewer/index.js +79 -7
- package/dist/server/components/drawer/index.js +260 -193
- package/dist/server/components/dropdown/index.css +7 -1
- package/dist/server/components/dropdown/index.js +221 -23
- package/dist/server/components/dropdown-group/dropdown-group.schema.js +4 -4
- package/dist/server/components/dropdown-group/index.js +7 -7
- package/dist/server/components/dropdown-item/dropdown-item.schema.js +9 -1
- package/dist/server/components/dropdown-item/index.js +12 -7
- package/dist/server/components/dropdown-menu/index.js +197 -13
- package/dist/server/components/dropdown-trigger/index.js +5 -2
- package/dist/server/components/event-stream-viewer/event-stream-viewer.schema.js +83 -10
- package/dist/server/components/event-stream-viewer/index.css +323 -0
- package/dist/server/components/event-stream-viewer/index.js +406 -139
- package/dist/server/components/faceted-filter-bar/index.css +10 -1
- package/dist/server/components/faceted-filter-bar/index.js +24 -6
- package/dist/server/components/file-upload/index.css +3 -3
- package/dist/server/components/floating-action-button/floating-action-button.schema.js +5 -5
- package/dist/server/components/floating-action-button/index.css +16 -16
- package/dist/server/components/floating-action-button/index.js +5 -5
- package/dist/server/components/form-field/index.css +0 -10
- package/dist/server/components/form-field/index.js +2 -2
- package/dist/server/components/input/index.js +59 -15
- package/dist/server/components/input/input.schema.js +6 -1
- package/dist/server/components/invocation-rule-builder/index.css +51 -6
- package/dist/server/components/invocation-rule-builder/index.js +56 -17
- package/dist/server/components/invocation-rule-builder/invocation-rule-builder.schema.js +133 -35
- package/dist/server/components/json-schema-editor/index.css +4 -1
- package/dist/server/components/json-schema-editor/index.js +282 -52
- package/dist/server/components/json-viewer/index.css +7 -1
- package/dist/server/components/json-viewer/index.js +83 -11
- package/dist/server/components/kanban-board/index.css +42 -3
- package/dist/server/components/kanban-board/index.js +7 -6
- package/dist/server/components/keyboard-shortcuts/index.css +2 -2
- package/dist/server/components/keyboard-shortcuts/index.js +2 -2
- package/dist/server/components/label/index.css +0 -10
- package/dist/server/components/label/index.js +2 -2
- package/dist/server/components/load-more/index.css +12 -4
- package/dist/server/components/load-more/index.js +5 -5
- package/dist/server/components/load-more/load-more.schema.js +4 -4
- package/dist/server/components/locale-provider/index.js +55 -0
- package/dist/server/components/locale-provider/locale-provider.schema.js +35 -0
- package/dist/server/components/locale-provider/locale-provider.variables.js +12 -0
- package/dist/server/components/markdown-editor/index.js +297 -60
- package/dist/server/components/markdown-editor/markdown-editor.schema.js +4 -4
- package/dist/server/components/masonry/masonry.schema.js +4 -3
- package/dist/server/components/matrix-chart/index.js +62 -39
- package/dist/server/components/media-controls/index.css +11 -3
- package/dist/server/components/media-controls/index.js +7 -7
- package/dist/server/components/media-controls/media-controls.schema.js +4 -4
- package/dist/server/components/menu-bar/index.css +15 -1
- package/dist/server/components/modal/index.js +9 -3
- package/dist/server/components/navigation-bar/index.js +3 -3
- package/dist/server/components/navigation-bar/navigation-bar.schema.js +2 -2
- package/dist/server/components/number-input/index.js +56 -18
- package/dist/server/components/number-input/number-input.schema.js +4 -3
- package/dist/server/components/payload-inspector/index.css +616 -0
- package/dist/server/components/payload-inspector/index.js +181 -22
- package/dist/server/components/payload-inspector/payload-inspector.schema.js +27 -15
- package/dist/server/components/permission-matrix/index.css +8 -0
- package/dist/server/components/phone-input/index.js +21 -3
- package/dist/server/components/phone-input/phone-input.schema.js +2 -2
- package/dist/server/components/pin-input/index.js +12 -7
- package/dist/server/components/pin-input/pin-input.schema.js +9 -2
- package/dist/server/components/popover/index.js +9 -3
- package/dist/server/components/pricing-card/index.js +22 -7
- package/dist/server/components/radio-group/index.css +3 -0
- package/dist/server/components/radio-group/index.js +24 -3
- package/dist/server/components/radio-group/radio-group.schema.js +3 -3
- package/dist/server/components/rating/rating.schema.js +9 -2
- package/dist/server/components/review-editor/index.js +426 -80
- package/dist/server/components/run-step-timeline/index.css +503 -6
- package/dist/server/components/run-step-timeline/index.js +455 -109
- package/dist/server/components/run-step-timeline/run-step-timeline.schema.js +351 -21
- package/dist/server/components/schema-form/index.css +11 -69
- package/dist/server/components/schema-form/index.js +1291 -218
- package/dist/server/components/schema-form/schema-form.schema.js +10 -3
- package/dist/server/components/scroll-area/index.js +3 -3
- package/dist/server/components/scroll-area/scroll-area.schema.js +2 -2
- package/dist/server/components/secret-value-field/index.js +4 -4
- package/dist/server/components/segmented-control/index.css +15 -1
- package/dist/server/components/select/index.css +9 -2
- package/dist/server/components/select/index.js +9 -2
- package/dist/server/components/selection-popover/index.js +9 -3
- package/dist/server/components/share-card/index.css +11 -3
- package/dist/server/components/share-card/index.js +1 -5
- package/dist/server/components/sheet/index.js +265 -195
- package/dist/server/components/sidebar/index.js +274 -207
- package/dist/server/components/sidebar/sidebar.schema.js +2 -2
- package/dist/server/components/slider/index.css +13 -9
- package/dist/server/components/slider/index.js +173 -4
- package/dist/server/components/sortable-list/index.css +1 -1
- package/dist/server/components/spectrogram/index.js +68 -45
- package/dist/server/components/spectrum-chart/index.js +54 -31
- package/dist/server/components/speed-dial/index.css +3 -3
- package/dist/server/components/speed-dial/index.js +8 -8
- package/dist/server/components/speed-dial-action/index.js +6 -6
- package/dist/server/components/stat/index.js +26 -4
- package/dist/server/components/stat/stat.schema.js +2 -2
- package/dist/server/components/stat-group/index.css +1 -1
- package/dist/server/components/stat-group/index.js +26 -4
- package/dist/server/components/status-dot/index.css +45 -1
- package/dist/server/components/status-dot/index.js +35 -7
- package/dist/server/components/status-dot/status-dot.schema.js +12 -5
- package/dist/server/components/steps/index.css +3 -3
- package/dist/server/components/table/index.css +8 -0
- package/dist/server/components/table/index.js +22 -16
- package/dist/server/components/table-header/index.js +6 -6
- package/dist/server/components/table-header/table-header.schema.js +3 -3
- package/dist/server/components/table-header-cell/index.js +9 -3
- package/dist/server/components/table-row/index.js +7 -7
- package/dist/server/components/table-row/table-row.schema.js +3 -3
- package/dist/server/components/tabs/index.js +18 -4
- package/dist/server/components/tabs/tabs.schema.js +6 -1
- package/dist/server/components/textarea/index.css +16 -1
- package/dist/server/components/textarea/index.js +9 -2
- package/dist/server/components/time-field/index.css +58 -0
- package/dist/server/components/time-field/index.js +291 -0
- package/dist/server/components/time-field/time-field.schema.js +88 -0
- package/dist/server/components/time-field/time-field.variables.js +12 -0
- package/dist/server/components/toggle/index.js +40 -7
- package/dist/server/components/toggle/toggle.schema.js +11 -2
- package/dist/server/components/transfer-list/index.css +16 -0
- package/dist/server/components/transfer-list/index.js +37 -11
- package/dist/server/components/transfer-list/transfer-list.schema.js +2 -2
- package/dist/server/components/tree/index.css +68 -0
- package/dist/server/components/tree/index.js +67 -20
- package/dist/server/components/tree/tree.schema.js +3 -3
- package/dist/server/components/tree-item/index.js +34 -13
- package/dist/server/components/tree-item/tree-item.schema.js +5 -5
- package/dist/server/components/virtual-list/index.js +36 -13
- package/dist/server/components/waveform/index.js +51 -28
- package/dist/server/editor/attach.d.ts +2 -2
- package/dist/server/editor/attach.js +10 -16
- package/dist/server/editor/editor.js +6 -6
- package/dist/server/editor/keymap-plugin.d.ts +2 -2
- package/dist/server/editor/keymap-plugin.js +4 -4
- package/dist/server/editor/types.d.ts +11 -11
- package/dist/server/index.css +2033 -1463
- package/dist/server/index.js +7203 -5135
- package/dist/utilities/attachments.d.ts +6 -6
- package/dist/utilities/value-change.d.ts +2 -0
- package/package.json +96 -63
- package/src/_internal/locale-context.ts +21 -0
- package/src/_internal/text-direction.ts +213 -0
- package/src/_internal/tree-context.ts +2 -0
- package/src/components/_internal/create-command-list-state.svelte.ts +171 -0
- package/src/components/_internal/create-sliding-dialog-state.svelte.ts +170 -0
- package/src/components/_radio/README.md +1 -1
- package/src/components/access-gate/access-gate-inline.svelte +3 -1
- package/src/components/alert/README.md +8 -8
- package/src/components/alert/alert.css +1 -1
- package/src/components/alert/alert.examples.json +4 -4
- package/src/components/alert/alert.svelte +3 -5
- package/src/components/alert/alert.types.ts +4 -4
- package/src/components/approval-card/README.md +92 -0
- package/src/components/approval-card/approval-card-state.ts +24 -0
- package/src/components/approval-card/approval-card.css +239 -0
- package/src/components/approval-card/approval-card.examples.json +25 -0
- package/src/components/approval-card/approval-card.svelte +583 -0
- package/src/components/approval-card/approval-card.types.ts +180 -0
- package/src/components/approval-card/index.ts +16 -0
- package/src/components/autocomplete/autocomplete.css +12 -1
- package/src/components/autocomplete/autocomplete.svelte +53 -27
- package/src/components/badge/README.md +8 -7
- package/src/components/badge/badge.svelte +80 -3
- package/src/components/badge/badge.types.ts +36 -13
- package/src/components/badge/index.ts +1 -1
- package/src/components/banner/README.md +2 -2
- package/src/components/banner/banner.examples.json +19 -0
- package/src/components/banner/banner.svelte +2 -2
- package/src/components/banner/banner.types.ts +1 -1
- package/src/components/button/button.css +1 -1
- package/src/components/callout/callout.examples.json +19 -0
- package/src/components/capability-gate/README.md +3 -3
- package/src/components/capability-gate/capability-gate.css +15 -2
- package/src/components/capability-gate/capability-gate.examples.json +1 -1
- package/src/components/capability-gate/capability-gate.svelte +7 -7
- package/src/components/capability-gate/capability-gate.types.ts +6 -6
- package/src/components/chat/README.md +6 -10
- package/src/components/chat/chat.examples.json +8 -8
- package/src/components/chat/chat.types.ts +31 -15
- package/src/components/chat/container/chat-events.ts +2 -2
- package/src/components/chat/container/chat-history-trigger.svelte +9 -1
- package/src/components/chat/container/chat.svelte +47 -46
- package/src/components/chat/container/use-chat-scroll-state.svelte.ts +21 -18
- package/src/components/chat/container/use-chat-unread-state.svelte.ts +19 -19
- package/src/components/chat/index.ts +1 -1
- package/src/components/chat/input/chat-input.svelte +35 -13
- package/src/components/chat/message/image-lightbox.svelte +38 -15
- package/src/components/chat/message/message-attachments.svelte +1 -1
- package/src/components/chat/message/parts/reasoning-part.svelte +8 -0
- package/src/components/chat/message/parts/tool-approval-part.svelte +22 -9
- package/src/components/chat-conversation-list/chat-conversation-list.css +13 -0
- package/src/components/checkbox/README.md +1 -0
- package/src/components/checkbox/checkbox.css +3 -0
- package/src/components/checkbox/checkbox.svelte +44 -2
- package/src/components/checkbox/checkbox.types.ts +2 -0
- package/src/components/checkbox-group/README.md +2 -2
- package/src/components/checkbox-group/checkbox-group.css +3 -0
- package/src/components/checkbox-group/checkbox-group.examples.json +13 -0
- package/src/components/checkbox-group/checkbox-group.svelte +23 -2
- package/src/components/checkbox-group/checkbox-group.types.ts +12 -7
- package/src/components/choice-grid-item/choice-grid-item.svelte +1 -1
- package/src/components/click-away-listener/README.md +2 -2
- package/src/components/click-away-listener/click-away-listener.examples.json +1 -1
- package/src/components/click-away-listener/click-away-listener.svelte +2 -2
- package/src/components/click-away-listener/click-away-listener.types.ts +3 -3
- package/src/components/code-block/code-block.css +4 -3
- package/src/components/collapsible/README.md +2 -2
- package/src/components/collapsible/collapsible.svelte +2 -2
- package/src/components/collapsible/collapsible.types.ts +5 -2
- package/src/components/color-field/README.md +18 -18
- package/src/components/color-field/color-field.svelte +2 -2
- package/src/components/color-field/color-field.types.ts +2 -2
- package/src/components/color-swatch-picker/color-swatch-picker.examples.json +13 -0
- package/src/components/color-swatch-picker/color-swatch-picker.svelte +38 -24
- package/src/components/combobox/README.md +2 -1
- package/src/components/combobox/combobox.svelte +38 -17
- package/src/components/combobox/combobox.types.ts +7 -1
- package/src/components/command-item/README.md +13 -11
- package/src/components/command-item/command-item.css +10 -0
- package/src/components/command-item/command-item.svelte +11 -0
- package/src/components/command-item/command-item.types.ts +4 -0
- package/src/components/command-menu/command-menu.svelte +21 -102
- package/src/components/command-palette/README.md +12 -12
- package/src/components/command-palette/command-palette.examples.json +3 -3
- package/src/components/command-palette/command-palette.svelte +17 -134
- package/src/components/command-palette/command-palette.types.ts +1 -2
- package/src/components/context-menu/context-menu.context.ts +2 -0
- package/src/components/context-menu/context-menu.svelte +35 -9
- package/src/components/context-menu-trigger/context-menu-trigger.svelte +9 -6
- package/src/components/copy-button/copy-button.svelte +4 -3
- package/src/components/data-grid/README.md +3 -3
- package/src/components/data-grid/_internal/column-model.svelte.ts +2 -0
- package/src/components/data-grid/data-grid.css +25 -0
- package/src/components/data-grid/data-grid.svelte +7 -7
- package/src/components/data-grid/data-grid.types.ts +8 -2
- package/src/components/data-list/README.md +9 -9
- package/src/components/data-list/data-list.examples.json +1 -1
- package/src/components/data-list/data-list.svelte +3 -9
- package/src/components/data-list/data-list.types.ts +5 -9
- package/src/components/data-table/data-table.css +13 -0
- package/src/components/data-table/data-table.svelte +13 -3
- package/src/components/date-range-field/README.md +9 -8
- package/src/components/date-range-field/date-range-field.svelte +193 -19
- package/src/components/date-range-field/date-range-field.types.ts +16 -10
- package/src/components/date-range-field/index.ts +1 -0
- package/src/components/diff-viewer/diff-front-matter.svelte +2 -2
- package/src/components/diff-viewer/diff-line.svelte +32 -8
- package/src/components/diff-viewer/diff-toolbar.svelte +3 -3
- package/src/components/diff-viewer/diff-viewer.svelte +4 -4
- package/src/components/diff-viewer/diff-viewer.types.ts +3 -3
- package/src/components/diff-viewer/index.ts +1 -1
- package/src/components/drawer/drawer.svelte +26 -145
- package/src/components/dropdown/dropdown.css +7 -1
- package/src/components/dropdown/dropdown.types.ts +3 -0
- package/src/components/dropdown-group/README.md +6 -6
- package/src/components/dropdown-group/dropdown-group.svelte +8 -8
- package/src/components/dropdown-group/dropdown-group.types.ts +4 -4
- package/src/components/dropdown-item/README.md +2 -0
- package/src/components/dropdown-item/dropdown-item.svelte +14 -11
- package/src/components/dropdown-item/dropdown-item.types.ts +5 -0
- package/src/components/dropdown-menu/dropdown-menu.svelte +42 -9
- package/src/components/dropdown-trigger/dropdown-trigger.svelte +4 -6
- package/src/components/event-stream-viewer/README.md +38 -16
- package/src/components/event-stream-viewer/event-stream-viewer-keys.ts +74 -0
- package/src/components/event-stream-viewer/event-stream-viewer.css +46 -0
- package/src/components/event-stream-viewer/event-stream-viewer.examples.json +6 -0
- package/src/components/event-stream-viewer/event-stream-viewer.svelte +262 -69
- package/src/components/event-stream-viewer/event-stream-viewer.types.ts +130 -3
- package/src/components/event-stream-viewer/index.ts +6 -0
- package/src/components/faceted-filter-bar/faceted-filter-bar.css +9 -0
- package/src/components/faceted-filter-bar/faceted-filter-bar.svelte +31 -5
- package/src/components/file-upload/file-upload.css +5 -5
- package/src/components/file-upload/file-upload.examples.json +13 -0
- package/src/components/floating-action-button/README.md +9 -9
- package/src/components/floating-action-button/floating-action-button.css +22 -22
- package/src/components/floating-action-button/floating-action-button.examples.json +1 -1
- package/src/components/floating-action-button/floating-action-button.svelte +7 -7
- package/src/components/floating-action-button/floating-action-button.types.ts +21 -21
- package/src/components/floating-action-button/index.ts +1 -1
- package/src/components/form-field/form-field.css +3 -13
- package/src/components/form-field/form-field.svelte +4 -1
- package/src/components/image/image.examples.json +13 -0
- package/src/components/input/README.md +16 -15
- package/src/components/input/input.examples.json +1 -1
- package/src/components/input/input.svelte +65 -28
- package/src/components/input/input.types.ts +2 -0
- package/src/components/invocation-rule-builder/README.md +14 -14
- package/src/components/invocation-rule-builder/index.ts +1 -0
- package/src/components/invocation-rule-builder/invocation-rule-builder.css +63 -6
- package/src/components/invocation-rule-builder/invocation-rule-builder.svelte +73 -16
- package/src/components/invocation-rule-builder/invocation-rule-builder.types.ts +99 -8
- package/src/components/json-schema-editor/form-view.svelte +3 -1
- package/src/components/json-schema-editor/json-schema-editor-impl.svelte +30 -18
- package/src/components/json-schema-editor/json-schema-editor.css +6 -1
- package/src/components/json-schema-editor/json-schema-toolbar.svelte +6 -0
- package/src/components/json-schema-editor/json-view.svelte +1 -1
- package/src/components/json-schema-editor/property-editor.svelte +38 -2
- package/src/components/json-schema-editor/property-list-validation.ts +10 -0
- package/src/components/json-schema-editor/property-list.svelte +48 -3
- package/src/components/json-viewer/_json-viewer-node.svelte +55 -9
- package/src/components/json-viewer/json-viewer.css +11 -0
- package/src/components/json-viewer/json-viewer.svelte +63 -1
- package/src/components/kanban-board/kanban-board.css +56 -3
- package/src/components/kanban-board/kanban-board.svelte +10 -3
- package/src/components/keyboard-shortcuts/keyboard-shortcuts.css +2 -2
- package/src/components/keyboard-shortcuts/keyboard-shortcuts.svelte +1 -1
- package/src/components/label/README.md +1 -1
- package/src/components/label/label.css +2 -9
- package/src/components/label/label.svelte +4 -2
- package/src/components/load-more/README.md +4 -4
- package/src/components/load-more/load-more.css +13 -5
- package/src/components/load-more/load-more.examples.json +2 -2
- package/src/components/load-more/load-more.svelte +4 -4
- package/src/components/load-more/load-more.types.ts +3 -3
- package/src/components/locale-provider/README.md +43 -0
- package/src/components/locale-provider/index.ts +5 -0
- package/src/components/locale-provider/locale-provider.svelte +40 -0
- package/src/components/locale-provider/locale-provider.types.ts +21 -0
- package/src/components/markdown-editor/README.md +3 -3
- package/src/components/markdown-editor/editor-toolbar/editor-toolbar.svelte +5 -2
- package/src/components/markdown-editor/editor-toolbar/link-popover.svelte +13 -0
- package/src/components/markdown-editor/editor-toolbar/toolbar-dropdown.svelte +2 -0
- package/src/components/markdown-editor/markdown-editor.svelte +14 -12
- package/src/components/markdown-editor/markdown-editor.types.ts +4 -4
- package/src/components/masonry/README.md +7 -7
- package/src/components/masonry/masonry.types.ts +24 -2
- package/src/components/matrix-chart/matrix-chart.svelte +7 -21
- package/src/components/media-controls/README.md +3 -3
- package/src/components/media-controls/media-controls.css +15 -4
- package/src/components/media-controls/media-controls.examples.json +1 -1
- package/src/components/media-controls/media-controls.svelte +6 -6
- package/src/components/media-controls/media-controls.types.ts +10 -7
- package/src/components/menu-bar/menu-bar.css +11 -0
- package/src/components/menu-bar/menu-bar.svelte +81 -12
- package/src/components/navigation-bar/README.md +1 -1
- package/src/components/navigation-bar/navigation-bar.examples.json +1 -1
- package/src/components/navigation-bar/navigation-bar.svelte +2 -2
- package/src/components/navigation-bar/navigation-bar.types.ts +1 -1
- package/src/components/number-input/README.md +18 -18
- package/src/components/number-input/number-input.examples.json +13 -0
- package/src/components/number-input/number-input.svelte +77 -38
- package/src/components/number-input/number-input.types.ts +15 -5
- package/src/components/pagination/README.md +3 -1
- package/src/components/payload-inspector/README.md +11 -11
- package/src/components/payload-inspector/index.ts +2 -0
- package/src/components/payload-inspector/payload-inspector.css +6 -0
- package/src/components/payload-inspector/payload-inspector.svelte +22 -4
- package/src/components/payload-inspector/payload-inspector.types.ts +54 -3
- package/src/components/permission-matrix/permission-matrix.css +10 -0
- package/src/components/phone-input/README.md +1 -1
- package/src/components/phone-input/phone-input.svelte +7 -1
- package/src/components/phone-input/phone-input.types.ts +3 -2
- package/src/components/pin-input/README.md +19 -19
- package/src/components/pin-input/pin-input.svelte +16 -12
- package/src/components/pin-input/pin-input.types.ts +10 -1
- package/src/components/portal/portal.utilities.svelte.ts +4 -1
- package/src/components/pricing-card/pricing-card.svelte +26 -1
- package/src/components/radio-group/README.md +12 -12
- package/src/components/radio-group/radio-group.css +3 -0
- package/src/components/radio-group/radio-group.examples.json +3 -3
- package/src/components/radio-group/radio-group.svelte +22 -2
- package/src/components/radio-group/radio-group.types.ts +6 -2
- package/src/components/rating/README.md +18 -18
- package/src/components/rating/rating.svelte +0 -8
- package/src/components/rating/rating.types.ts +6 -0
- package/src/components/review-editor/comment-list.svelte +1 -1
- package/src/components/review-editor/index.ts +1 -1
- package/src/components/review-editor/review-editor-controls.svelte +8 -3
- package/src/components/review-editor/review-editor-impl.svelte +11 -7
- package/src/components/review-editor/review-editor-selection-types.ts +1 -1
- package/src/components/review-editor/review-editor-selection.svelte.ts +1 -1
- package/src/components/review-editor/review-editor-state.svelte.ts +1 -1
- package/src/components/review-editor/review-editor-threads.svelte.ts +2 -2
- package/src/components/review-editor/review-editor.types.ts +91 -3
- package/src/components/review-editor/thread-popover.svelte +1 -1
- package/src/components/run-step-timeline/README.md +53 -6
- package/src/components/run-step-timeline/index.ts +6 -0
- package/src/components/run-step-timeline/run-step-timeline.css +25 -5
- package/src/components/run-step-timeline/run-step-timeline.examples.json +3 -3
- package/src/components/run-step-timeline/run-step-timeline.svelte +314 -78
- package/src/components/run-step-timeline/run-step-timeline.types.ts +190 -3
- package/src/components/schema-form/README.md +9 -9
- package/src/components/schema-form/index.ts +0 -1
- package/src/components/schema-form/schema-form-async.fixture.ts +101 -0
- package/src/components/schema-form/schema-form-body.svelte +646 -0
- package/src/components/schema-form/schema-form-model.ts +4 -44
- package/src/components/schema-form/schema-form-validation.ts +83 -46
- package/src/components/schema-form/schema-form.css +12 -74
- package/src/components/schema-form/schema-form.examples.json +0 -6
- package/src/components/schema-form/schema-form.svelte +30 -598
- package/src/components/schema-form/schema-form.types.ts +16 -12
- package/src/components/scroll-area/README.md +1 -1
- package/src/components/scroll-area/scroll-area.examples.json +3 -3
- package/src/components/scroll-area/scroll-area.svelte +5 -5
- package/src/components/scroll-area/scroll-area.types.ts +1 -1
- package/src/components/secret-value-field/secret-value-field.svelte +10 -6
- package/src/components/segmented-control/segmented-control.css +22 -1
- package/src/components/segmented-control/segmented-control.examples.json +2 -2
- package/src/components/select/select.css +9 -2
- package/src/components/select/select.svelte +6 -1
- package/src/components/selection-popover/selection-popover.examples.json +1 -1
- package/src/components/share-card/share-card.css +15 -4
- package/src/components/share-card/share-card.svelte +2 -4
- package/src/components/sheet/sheet.svelte +30 -145
- package/src/components/shortcut-hint/shortcut-hint.svelte +1 -1
- package/src/components/side-navigation/side-navigation.examples.json +1 -1
- package/src/components/sidebar/README.md +6 -2
- package/src/components/sidebar/sidebar.examples.json +1 -1
- package/src/components/sidebar/sidebar.svelte +4 -4
- package/src/components/sidebar/sidebar.types.ts +1 -1
- package/src/components/slider/slider.css +14 -9
- package/src/components/slider/slider.svelte +33 -2
- package/src/components/sortable-list/README.md +18 -1
- package/src/components/sortable-list/sortable-list.css +1 -1
- package/src/components/sortable-list/sortable-list.examples.json +13 -0
- package/src/components/spectrogram/spectrogram.examples.json +1 -0
- package/src/components/spectrogram/spectrogram.svelte +7 -19
- package/src/components/spectrum-chart/spectrum-chart.svelte +8 -20
- package/src/components/speed-dial/speed-dial.css +3 -3
- package/src/components/speed-dial/speed-dial.examples.json +1 -1
- package/src/components/speed-dial/speed-dial.svelte +2 -2
- package/src/components/speed-dial-action/speed-dial-action.svelte +1 -1
- package/src/components/stacked-list-item/stacked-list-item.examples.json +1 -1
- package/src/components/stat/README.md +1 -1
- package/src/components/stat/stat.svelte +7 -2
- package/src/components/stat/stat.types.ts +2 -2
- package/src/components/stat-group/stat-group.css +1 -1
- package/src/components/status-dot/README.md +9 -7
- package/src/components/status-dot/index.ts +6 -1
- package/src/components/status-dot/status-dot.css +45 -1
- package/src/components/status-dot/status-dot.examples.json +1 -1
- package/src/components/status-dot/status-dot.svelte +57 -8
- package/src/components/status-dot/status-dot.types.ts +17 -6
- package/src/components/steps/steps.css +3 -3
- package/src/components/table/table.css +10 -0
- package/src/components/table/table.examples.json +1 -1
- package/src/components/table/table.svelte +2 -2
- package/src/components/table/table.types.ts +3 -3
- package/src/components/table-header/README.md +2 -2
- package/src/components/table-header/table-header.svelte +5 -5
- package/src/components/table-header/table-header.types.ts +2 -2
- package/src/components/table-header-cell/table-header-cell.svelte +13 -2
- package/src/components/table-row/README.md +2 -2
- package/src/components/table-row/table-row.svelte +6 -6
- package/src/components/table-row/table-row.types.ts +6 -6
- package/src/components/tabs/README.md +1 -0
- package/src/components/tabs/tabs.svelte +11 -3
- package/src/components/tabs/tabs.types.ts +2 -0
- package/src/components/textarea/textarea.css +16 -1
- package/src/components/textarea/textarea.svelte +6 -1
- package/src/components/time-field/README.md +60 -0
- package/src/components/time-field/index.ts +6 -0
- package/src/components/time-field/time-field.css +60 -0
- package/src/components/time-field/time-field.examples.json +13 -0
- package/src/components/time-field/time-field.svelte +277 -0
- package/src/components/time-field/time-field.types.ts +70 -0
- package/src/components/toggle/README.md +12 -11
- package/src/components/toggle/toggle.svelte +19 -6
- package/src/components/toggle/toggle.types.ts +2 -0
- package/src/components/transfer-list/README.md +1 -1
- package/src/components/transfer-list/transfer-list.css +22 -0
- package/src/components/transfer-list/transfer-list.svelte +44 -10
- package/src/components/transfer-list/transfer-list.types.ts +5 -2
- package/src/components/tree/README.md +2 -2
- package/src/components/tree/tree.css +69 -0
- package/src/components/tree/tree.examples.json +1 -1
- package/src/components/tree/tree.svelte +52 -9
- package/src/components/tree/tree.types.ts +2 -2
- package/src/components/tree-item/README.md +4 -4
- package/src/components/tree-item/tree-item.svelte +42 -12
- package/src/components/tree-item/tree-item.types.ts +4 -4
- package/src/components/virtual-list/virtual-list.svelte +5 -5
- package/src/components/waveform/waveform.svelte +7 -19
- package/src/index.ts +40 -16
- package/src/styles/components/_field-label.css +20 -0
- package/src/styles/components/_input-frame.css +2 -1
- package/src/styles/components.css +3 -2
- package/src/styles/index.css +1 -0
- package/src/styles/tokens-base.css +3 -0
- package/src/utilities/attachments.ts +15 -12
- package/src/utilities/value-change.ts +11 -0
- package/dist/components/connection-indicator/connection-indicator.css +0 -63
- package/dist/components/connection-indicator/connection-indicator.svelte.d.ts +0 -18
- package/dist/components/connection-indicator/connection-indicator.types.d.ts +0 -14
- package/dist/components/connection-indicator/index.d.ts +0 -5
- package/dist/components/connection-indicator/index.js +0 -75
- package/dist/components/experimental/connection-indicator/index.d.ts +0 -2
- package/dist/components/review-editor/review-editor-types.d.ts +0 -77
- package/dist/components/subscription-badge/index.d.ts +0 -5
- package/dist/components/subscription-badge/index.js +0 -353
- package/dist/components/subscription-badge/subscription-badge.css +0 -18
- package/dist/components/subscription-badge/subscription-badge.schema.js +0 -47
- package/dist/components/subscription-badge/subscription-badge.svelte.d.ts +0 -19
- package/dist/components/subscription-badge/subscription-badge.types.d.ts +0 -28
- package/dist/server/components/connection-indicator/connection-indicator.schema.js +0 -31
- package/dist/server/components/connection-indicator/connection-indicator.variables.js +0 -12
- package/dist/server/components/connection-indicator/index.css +0 -60
- package/dist/server/components/connection-indicator/index.js +0 -42
- package/dist/server/components/experimental/connection-indicator/index.js +0 -23
- package/dist/server/components/subscription-badge/index.css +0 -2
- package/dist/server/components/subscription-badge/index.js +0 -308
- package/dist/server/components/subscription-badge/subscription-badge.schema.js +0 -28
- package/dist/server/components/subscription-badge/subscription-badge.variables.js +0 -12
- package/src/components/connection-indicator/README.md +0 -41
- package/src/components/connection-indicator/connection-indicator.css +0 -63
- package/src/components/connection-indicator/connection-indicator.svelte +0 -44
- package/src/components/connection-indicator/connection-indicator.types.ts +0 -18
- package/src/components/connection-indicator/index.ts +0 -6
- package/src/components/experimental/connection-indicator/index.ts +0 -20
- package/src/components/review-editor/review-editor-types.ts +0 -92
- package/src/components/subscription-badge/README.md +0 -50
- package/src/components/subscription-badge/index.ts +0 -6
- package/src/components/subscription-badge/subscription-badge.css +0 -18
- package/src/components/subscription-badge/subscription-badge.examples.json +0 -19
- package/src/components/subscription-badge/subscription-badge.svelte +0 -69
- package/src/components/subscription-badge/subscription-badge.types.ts +0 -37
- /package/dist/components/{connection-indicator/connection-indicator.schema.d.ts → approval-card/approval-card.schema.d.ts} +0 -0
- /package/dist/components/{connection-indicator/connection-indicator.variables.d.ts → approval-card/approval-card.variables.d.ts} +0 -0
- /package/dist/components/{subscription-badge/subscription-badge.schema.d.ts → locale-provider/locale-provider.schema.d.ts} +0 -0
- /package/dist/components/{subscription-badge/subscription-badge.variables.d.ts → locale-provider/locale-provider.variables.d.ts} +0 -0
|
@@ -14,7 +14,7 @@ export type ChatStopGeneratingEvent = {
|
|
|
14
14
|
|
|
15
15
|
/** Event fired when scroll state changes. */
|
|
16
16
|
export type ChatScrollStateChangeEvent = {
|
|
17
|
-
|
|
17
|
+
atBottom: boolean;
|
|
18
18
|
scrollTop: number;
|
|
19
19
|
scrollHeight: number;
|
|
20
20
|
};
|
|
@@ -22,5 +22,5 @@ export type ChatScrollStateChangeEvent = {
|
|
|
22
22
|
/** Event fired when unread indicator state changes. */
|
|
23
23
|
export type ChatUnreadIndicatorChangeEvent = {
|
|
24
24
|
unreadCount: number;
|
|
25
|
-
|
|
25
|
+
newMessageIndicatorVisible: boolean;
|
|
26
26
|
};
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
};
|
|
34
34
|
};
|
|
35
35
|
|
|
36
|
-
export function focus(options
|
|
36
|
+
export function focus(options: FocusOptions | undefined = undefined): void {
|
|
37
37
|
buttonElement?.focus(options);
|
|
38
38
|
}
|
|
39
39
|
</script>
|
|
@@ -93,6 +93,14 @@
|
|
|
93
93
|
box-shadow: var(--_cinder-focus-ring-shadow);
|
|
94
94
|
}
|
|
95
95
|
|
|
96
|
+
@media (forced-colors: active) {
|
|
97
|
+
.chat-history-trigger-button:focus-visible {
|
|
98
|
+
outline: var(--cinder-ring-width) solid ButtonText;
|
|
99
|
+
outline-offset: 3px;
|
|
100
|
+
box-shadow: none;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
|
|
96
104
|
.sr-only {
|
|
97
105
|
position: absolute;
|
|
98
106
|
width: 1px;
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
</script>
|
|
20
20
|
|
|
21
21
|
<script lang="ts">
|
|
22
|
-
import {
|
|
22
|
+
import { tick, untrack } from 'svelte';
|
|
23
23
|
import { classNames } from '../../../utilities/class-names.ts';
|
|
24
24
|
import {
|
|
25
25
|
getMessages,
|
|
@@ -71,29 +71,25 @@
|
|
|
71
71
|
let {
|
|
72
72
|
id,
|
|
73
73
|
conversation,
|
|
74
|
-
|
|
74
|
+
atBottom = $bindable(true),
|
|
75
75
|
unreadCount = $bindable(0),
|
|
76
|
-
|
|
76
|
+
newMessageIndicatorVisible = $bindable(false),
|
|
77
77
|
class: className,
|
|
78
78
|
surfaceMode = 'default',
|
|
79
79
|
density = 'comfortable',
|
|
80
80
|
variant = 'bubble',
|
|
81
81
|
bottomThreshold = DEFAULT_SCROLL_CONFIGURATION.bottomThreshold,
|
|
82
82
|
jumpThreshold = DEFAULT_SCROLL_CONFIGURATION.jumpThreshold,
|
|
83
|
-
|
|
83
|
+
streaming = false,
|
|
84
84
|
streamingStatus,
|
|
85
|
-
|
|
86
|
-
allowSearch = true,
|
|
85
|
+
capabilities,
|
|
87
86
|
virtualized = false,
|
|
88
87
|
virtualizationEstimatedRowHeight = 88,
|
|
89
88
|
virtualizationOverscan = 3,
|
|
90
89
|
virtualizationInitialHeight = 640,
|
|
91
|
-
|
|
90
|
+
moreHistoryAvailable = true,
|
|
92
91
|
loadEarlierLabel = 'Load earlier messages',
|
|
93
92
|
loadingEarlierLabel = 'Loading earlier messages',
|
|
94
|
-
allowCopy = true,
|
|
95
|
-
allowEditing = true,
|
|
96
|
-
allowRetry = true,
|
|
97
93
|
header,
|
|
98
94
|
empty,
|
|
99
95
|
emptyPrompts,
|
|
@@ -220,14 +216,23 @@
|
|
|
220
216
|
getJumpThreshold: () => jumpThreshold,
|
|
221
217
|
onScrollStateChange: handleScrollStateChange,
|
|
222
218
|
onReachBottom: () => {
|
|
223
|
-
|
|
219
|
+
// The sentinel fires when the user reaches the bottom via
|
|
220
|
+
// IntersectionObserver, which does not emit onScrollStateChange.
|
|
221
|
+
// Update the bindable prop here so it stays in sync with the sentinel path.
|
|
222
|
+
atBottom = true;
|
|
223
|
+
if (unreadState.unreadCount > 0 || unreadState.newMessageIndicatorVisible) {
|
|
224
224
|
unreadState.markAllAsRead();
|
|
225
225
|
}
|
|
226
226
|
},
|
|
227
227
|
});
|
|
228
228
|
|
|
229
229
|
const unreadState = useChatUnreadState({
|
|
230
|
-
onUnreadIndicatorChange: (event) =>
|
|
230
|
+
onUnreadIndicatorChange: (event) => {
|
|
231
|
+
// Update the bindable props at the mutation site rather than via a $effect.
|
|
232
|
+
unreadCount = event.unreadCount;
|
|
233
|
+
newMessageIndicatorVisible = event.newMessageIndicatorVisible;
|
|
234
|
+
onunreadindicatorchange?.(event);
|
|
235
|
+
},
|
|
231
236
|
});
|
|
232
237
|
|
|
233
238
|
const keyboardNav = useChatKeyboardNav({
|
|
@@ -254,7 +259,14 @@
|
|
|
254
259
|
// does not tear down and reopen the real-time subscription each render.
|
|
255
260
|
const conversationId = $derived(conversation.id);
|
|
256
261
|
|
|
257
|
-
const showTypingIndicator = $derived(
|
|
262
|
+
const showTypingIndicator = $derived(streaming && !streamingMessageId);
|
|
263
|
+
|
|
264
|
+
// Expand capabilities object with per-feature defaults.
|
|
265
|
+
const allowAttachments = $derived(capabilities?.attachments ?? true);
|
|
266
|
+
const allowSearch = $derived(capabilities?.search ?? true);
|
|
267
|
+
const allowCopy = $derived(capabilities?.copy ?? true);
|
|
268
|
+
const allowEditing = $derived(capabilities?.editing ?? true);
|
|
269
|
+
const allowRetry = $derived(capabilities?.retry ?? true);
|
|
258
270
|
const toolCallPairsByCallId = $derived.by(() => {
|
|
259
271
|
const toolCallPairs = pairToolCallsWithResults(messages);
|
|
260
272
|
const map = new Map<string, ReturnType<typeof pairToolCallsWithResults>>();
|
|
@@ -277,7 +289,7 @@
|
|
|
277
289
|
});
|
|
278
290
|
});
|
|
279
291
|
let hasMounted = $state(false);
|
|
280
|
-
|
|
292
|
+
$effect(() => {
|
|
281
293
|
hasMounted = true;
|
|
282
294
|
});
|
|
283
295
|
|
|
@@ -382,7 +394,7 @@
|
|
|
382
394
|
// ==========================================================================
|
|
383
395
|
|
|
384
396
|
const viewportAttach = $derived(viewportAttachment ?? noopAttachment);
|
|
385
|
-
const effectiveHasMoreHistory = $derived(adapterHasMoreHistory ??
|
|
397
|
+
const effectiveHasMoreHistory = $derived(adapterHasMoreHistory ?? moreHistoryAvailable);
|
|
386
398
|
const hasHistoryLoader = $derived(
|
|
387
399
|
onloadhistory !== undefined || adapter?.loadOlderMessages !== undefined,
|
|
388
400
|
);
|
|
@@ -467,25 +479,6 @@
|
|
|
467
479
|
return '';
|
|
468
480
|
});
|
|
469
481
|
|
|
470
|
-
// ==========================================================================
|
|
471
|
-
// Sync Bindable Props with Helper State
|
|
472
|
-
// ==========================================================================
|
|
473
|
-
|
|
474
|
-
// Sync isAtBottom from scrollState to bindable prop
|
|
475
|
-
$effect(() => {
|
|
476
|
-
isAtBottom = scrollState.isAtBottom;
|
|
477
|
-
});
|
|
478
|
-
|
|
479
|
-
// Sync unreadCount from unreadState to bindable prop
|
|
480
|
-
$effect(() => {
|
|
481
|
-
unreadCount = unreadState.unreadCount;
|
|
482
|
-
});
|
|
483
|
-
|
|
484
|
-
// Sync hasNewMessageIndicator from unreadState to bindable prop
|
|
485
|
-
$effect(() => {
|
|
486
|
-
hasNewMessageIndicator = unreadState.hasNewMessageIndicator;
|
|
487
|
-
});
|
|
488
|
-
|
|
489
482
|
// ==========================================================================
|
|
490
483
|
// Scroll Anchoring via $effect.pre
|
|
491
484
|
// ==========================================================================
|
|
@@ -509,8 +502,8 @@
|
|
|
509
502
|
const currentScrollExtent = isVirtualized ? chatVirtualizer.scrollSize : viewport.scrollHeight;
|
|
510
503
|
void currentScrollExtent;
|
|
511
504
|
|
|
512
|
-
// Read
|
|
513
|
-
const atBottom = untrack(() => scrollState.
|
|
505
|
+
// Read atBottom without making it a dependency (prevents loops)
|
|
506
|
+
const atBottom = untrack(() => scrollState.atBottom);
|
|
514
507
|
|
|
515
508
|
// Skip if user initiated a smooth scroll (e.g., via jump button)
|
|
516
509
|
if (scrollState.isUserScrolling) return undefined;
|
|
@@ -643,12 +636,15 @@
|
|
|
643
636
|
}
|
|
644
637
|
|
|
645
638
|
function handleScrollStateChange(event: {
|
|
646
|
-
|
|
639
|
+
atBottom: boolean;
|
|
647
640
|
scrollTop: number;
|
|
648
641
|
scrollHeight: number;
|
|
649
642
|
}): void {
|
|
650
643
|
clearHistoryAnchorAfterScroll(event.scrollTop);
|
|
651
644
|
|
|
645
|
+
// Update the bindable prop at the mutation site rather than via a $effect.
|
|
646
|
+
atBottom = event.atBottom;
|
|
647
|
+
|
|
652
648
|
onscrollstatechange?.(event);
|
|
653
649
|
}
|
|
654
650
|
|
|
@@ -694,9 +690,9 @@
|
|
|
694
690
|
// ==========================================================================
|
|
695
691
|
|
|
696
692
|
$effect(() => {
|
|
697
|
-
// Pass a getter function for
|
|
693
|
+
// Pass a getter function for scrollState.atBottom to avoid creating a scroll dependency.
|
|
698
694
|
// The effect should only re-run when messages change, not on every scroll.
|
|
699
|
-
unreadState.processMessages(messages, conversation.id, () => scrollState.
|
|
695
|
+
unreadState.processMessages(messages, conversation.id, () => scrollState.atBottom);
|
|
700
696
|
});
|
|
701
697
|
|
|
702
698
|
// ==========================================================================
|
|
@@ -872,8 +868,13 @@
|
|
|
872
868
|
() => onsubmit?.({ message, attachments }),
|
|
873
869
|
);
|
|
874
870
|
|
|
875
|
-
// Auto-scroll after sending
|
|
876
|
-
|
|
871
|
+
// Auto-scroll after sending.
|
|
872
|
+
// Also update the bindable prop so the parent binding reflects the new
|
|
873
|
+
// atBottom=true state immediately — scrollState.setAtBottom() only
|
|
874
|
+
// updates the internal helper state; the bindable must be written explicitly
|
|
875
|
+
// (matching the pattern in handleScrollStateChange and onReachBottom).
|
|
876
|
+
scrollState.setAtBottom(true);
|
|
877
|
+
atBottom = true;
|
|
877
878
|
tick().then(() => {
|
|
878
879
|
if (isVirtualized) {
|
|
879
880
|
chatVirtualizer.scrollToOffset(chatVirtualizer.scrollSize, { behavior: 'instant' });
|
|
@@ -1394,7 +1395,7 @@
|
|
|
1394
1395
|
});
|
|
1395
1396
|
}
|
|
1396
1397
|
// Auto-scroll if at bottom
|
|
1397
|
-
if (scrollState.
|
|
1398
|
+
if (scrollState.atBottom && viewport) {
|
|
1398
1399
|
if (isVirtualized) {
|
|
1399
1400
|
chatVirtualizer.scrollToOffset(chatVirtualizer.scrollSize, { behavior: 'instant' });
|
|
1400
1401
|
} else {
|
|
@@ -1683,7 +1684,7 @@
|
|
|
1683
1684
|
<div class="chat-input-wrapper">
|
|
1684
1685
|
<ChatJumpControls
|
|
1685
1686
|
showJumpButton={scrollState.showJumpButton}
|
|
1686
|
-
hasNewMessageIndicator={unreadState.
|
|
1687
|
+
hasNewMessageIndicator={unreadState.newMessageIndicatorVisible}
|
|
1687
1688
|
unreadCount={unreadState.unreadCount}
|
|
1688
1689
|
displayUnreadCount={unreadState.displayUnreadCount}
|
|
1689
1690
|
hasLargeCount={unreadState.hasLargeCount}
|
|
@@ -1696,10 +1697,10 @@
|
|
|
1696
1697
|
id={inputId}
|
|
1697
1698
|
bind:this={inputRef}
|
|
1698
1699
|
onsubmit={(message, attachments) => handleSubmit(message, attachments)}
|
|
1699
|
-
disabled={
|
|
1700
|
-
sending={
|
|
1700
|
+
disabled={streaming}
|
|
1701
|
+
sending={streaming}
|
|
1701
1702
|
{allowAttachments}
|
|
1702
|
-
onstop={
|
|
1703
|
+
onstop={streaming ? handleStopGenerating : undefined}
|
|
1703
1704
|
{onattachmentadd}
|
|
1704
1705
|
{onattachmentremove}
|
|
1705
1706
|
{onattachmentfailure}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Runes helper for chat scroll state management.
|
|
3
3
|
*
|
|
4
4
|
* Manages:
|
|
5
|
-
* -
|
|
5
|
+
* - atBottom state for auto-scroll decisions
|
|
6
6
|
* - showJumpButton state for jump-to-latest visibility
|
|
7
7
|
* - Scroll event listener attachment
|
|
8
8
|
* - IntersectionObserver for bottom sentinel
|
|
@@ -60,13 +60,13 @@ export interface UseChatScrollStateOptions {
|
|
|
60
60
|
/** Return type for the scroll state helper */
|
|
61
61
|
export interface UseChatScrollStateReturn {
|
|
62
62
|
/** Whether the viewport is at or near the bottom */
|
|
63
|
-
readonly
|
|
63
|
+
readonly atBottom: boolean;
|
|
64
64
|
/** Whether the jump-to-latest button should be visible */
|
|
65
65
|
readonly showJumpButton: boolean;
|
|
66
66
|
/** Whether user is in a smooth scroll animation (used by parent for auto-scroll logic) */
|
|
67
67
|
readonly isUserScrolling: boolean;
|
|
68
|
-
/** Set
|
|
69
|
-
|
|
68
|
+
/** Set atBottom state directly */
|
|
69
|
+
setAtBottom(value: boolean): void;
|
|
70
70
|
/** Create a scroll event listener attachment for the viewport */
|
|
71
71
|
createScrollAttachment(): Attachment<HTMLElement>;
|
|
72
72
|
/**
|
|
@@ -167,7 +167,7 @@ export function useChatScrollState(options?: UseChatScrollStateOptions): UseChat
|
|
|
167
167
|
}
|
|
168
168
|
|
|
169
169
|
// Reactive state
|
|
170
|
-
let
|
|
170
|
+
let atBottom = $state(true);
|
|
171
171
|
let showJumpButton = $state(false);
|
|
172
172
|
|
|
173
173
|
// Non-reactive bookkeeping
|
|
@@ -175,10 +175,10 @@ export function useChatScrollState(options?: UseChatScrollStateOptions): UseChat
|
|
|
175
175
|
let isUserScrolling = false; // Prevents auto-scroll from interrupting user-initiated smooth scroll
|
|
176
176
|
|
|
177
177
|
/**
|
|
178
|
-
* Set
|
|
178
|
+
* Set atBottom state directly.
|
|
179
179
|
*/
|
|
180
|
-
function
|
|
181
|
-
|
|
180
|
+
function setAtBottom(value: boolean): void {
|
|
181
|
+
atBottom = value;
|
|
182
182
|
}
|
|
183
183
|
|
|
184
184
|
/**
|
|
@@ -197,24 +197,27 @@ export function useChatScrollState(options?: UseChatScrollStateOptions): UseChat
|
|
|
197
197
|
clientHeight: element.clientHeight,
|
|
198
198
|
};
|
|
199
199
|
|
|
200
|
-
const
|
|
200
|
+
const scrolledToBottom = checkIsAtBottom(
|
|
201
|
+
state,
|
|
202
|
+
getBottomThreshold?.() ?? bottomThreshold,
|
|
203
|
+
);
|
|
201
204
|
const shouldShowJump = shouldShowJumpToLatest(
|
|
202
205
|
state,
|
|
203
206
|
getJumpThreshold?.() ?? jumpThreshold,
|
|
204
207
|
);
|
|
205
208
|
|
|
206
209
|
// Update reactive state
|
|
207
|
-
|
|
210
|
+
atBottom = scrolledToBottom;
|
|
208
211
|
showJumpButton = shouldShowJump;
|
|
209
212
|
|
|
210
213
|
// Clear unread when scrolled to bottom
|
|
211
|
-
if (
|
|
214
|
+
if (scrolledToBottom) {
|
|
212
215
|
onReachBottom?.();
|
|
213
216
|
}
|
|
214
217
|
|
|
215
218
|
// Emit scroll state change
|
|
216
219
|
onScrollStateChange?.({
|
|
217
|
-
|
|
220
|
+
atBottom: scrolledToBottom,
|
|
218
221
|
scrollTop: state.scrollTop,
|
|
219
222
|
scrollHeight: state.scrollHeight,
|
|
220
223
|
});
|
|
@@ -233,9 +236,9 @@ export function useChatScrollState(options?: UseChatScrollStateOptions): UseChat
|
|
|
233
236
|
* Exposed for use with useIntersection attachment-based wiring.
|
|
234
237
|
*/
|
|
235
238
|
function handleSentinelEntry(entry: IntersectionObserverEntry): void {
|
|
236
|
-
const
|
|
237
|
-
if (
|
|
238
|
-
|
|
239
|
+
const sentinelVisible = entry.isIntersecting;
|
|
240
|
+
if (sentinelVisible && !atBottom) {
|
|
241
|
+
atBottom = true;
|
|
239
242
|
onReachBottom?.();
|
|
240
243
|
}
|
|
241
244
|
}
|
|
@@ -308,13 +311,13 @@ export function useChatScrollState(options?: UseChatScrollStateOptions): UseChat
|
|
|
308
311
|
}
|
|
309
312
|
|
|
310
313
|
return {
|
|
311
|
-
get
|
|
312
|
-
return
|
|
314
|
+
get atBottom() {
|
|
315
|
+
return atBottom;
|
|
313
316
|
},
|
|
314
317
|
get showJumpButton() {
|
|
315
318
|
return showJumpButton;
|
|
316
319
|
},
|
|
317
|
-
|
|
320
|
+
setAtBottom,
|
|
318
321
|
createScrollAttachment,
|
|
319
322
|
createSentinelObserver,
|
|
320
323
|
handleSentinelEntry,
|
|
@@ -40,7 +40,7 @@ export interface UseChatUnreadStateReturn {
|
|
|
40
40
|
/** Current count of unread messages */
|
|
41
41
|
readonly unreadCount: number;
|
|
42
42
|
/** Whether the new message indicator should be visible */
|
|
43
|
-
readonly
|
|
43
|
+
readonly newMessageIndicatorVisible: boolean;
|
|
44
44
|
/** ID of the first unread message (for divider placement) */
|
|
45
45
|
readonly firstUnreadId: string | null;
|
|
46
46
|
/** Formatted unread count for display (caps at "99+") */
|
|
@@ -55,10 +55,10 @@ export interface UseChatUnreadStateReturn {
|
|
|
55
55
|
* Process messages to detect new arrivals and update unread state.
|
|
56
56
|
* Should be called in an $effect when messages change.
|
|
57
57
|
*
|
|
58
|
-
* @param
|
|
59
|
-
*
|
|
58
|
+
* @param getAtBottom - Getter function to read atBottom without creating a dependency.
|
|
59
|
+
* This allows the effect to only re-run when messages change, not on scroll.
|
|
60
60
|
*/
|
|
61
|
-
processMessages(messages: Message[], conversationId: string,
|
|
61
|
+
processMessages(messages: Message[], conversationId: string, getAtBottom: () => boolean): void;
|
|
62
62
|
/** Cleanup resources */
|
|
63
63
|
destroy(): void;
|
|
64
64
|
}
|
|
@@ -80,9 +80,9 @@ export interface UseChatUnreadStateReturn {
|
|
|
80
80
|
* });
|
|
81
81
|
*
|
|
82
82
|
* // Call in an $effect to process message changes
|
|
83
|
-
* // Pass a getter function for
|
|
83
|
+
* // Pass a getter function for atBottom to avoid creating a scroll dependency
|
|
84
84
|
* $effect(() => {
|
|
85
|
-
* unreadState.processMessages(messages, conversation.id, () => scrollState.
|
|
85
|
+
* unreadState.processMessages(messages, conversation.id, () => scrollState.atBottom);
|
|
86
86
|
* });
|
|
87
87
|
*
|
|
88
88
|
* // Mark as read when user scrolls to bottom
|
|
@@ -99,7 +99,7 @@ export function useChatUnreadState(options?: UseChatUnreadStateOptions): UseChat
|
|
|
99
99
|
|
|
100
100
|
// Internal reactive state
|
|
101
101
|
let unreadCount = $state(0);
|
|
102
|
-
let
|
|
102
|
+
let newMessageIndicatorVisible = $state(false);
|
|
103
103
|
let firstUnreadId = $state<string | null>(null);
|
|
104
104
|
|
|
105
105
|
// Non-reactive bookkeeping (prevents $effect infinite loops)
|
|
@@ -116,16 +116,16 @@ export function useChatUnreadState(options?: UseChatUnreadStateOptions): UseChat
|
|
|
116
116
|
|
|
117
117
|
/**
|
|
118
118
|
* Fire the indicator-change callback from the mutation sites that actually
|
|
119
|
-
* change `unreadCount` / `
|
|
119
|
+
* change `unreadCount` / `newMessageIndicatorVisible`. Driving it here (rather
|
|
120
120
|
* than from an `$effect`) avoids the spurious `{ unreadCount: 0,
|
|
121
|
-
*
|
|
121
|
+
* newMessageIndicatorVisible: false }` notification that an effect would emit on
|
|
122
122
|
* mount, and keeps the contract aligned with `onScrollStateChange`, which
|
|
123
123
|
* only fires from its own mutation site.
|
|
124
124
|
*/
|
|
125
125
|
function notifyIndicatorChange(): void {
|
|
126
126
|
onUnreadIndicatorChange?.({
|
|
127
127
|
unreadCount,
|
|
128
|
-
|
|
128
|
+
newMessageIndicatorVisible,
|
|
129
129
|
});
|
|
130
130
|
}
|
|
131
131
|
|
|
@@ -133,9 +133,9 @@ export function useChatUnreadState(options?: UseChatUnreadStateOptions): UseChat
|
|
|
133
133
|
* Mark all messages as read (resets unread state).
|
|
134
134
|
*/
|
|
135
135
|
function markAllAsRead(): void {
|
|
136
|
-
const changed = unreadCount !== 0 ||
|
|
136
|
+
const changed = unreadCount !== 0 || newMessageIndicatorVisible;
|
|
137
137
|
unreadCount = 0;
|
|
138
|
-
|
|
138
|
+
newMessageIndicatorVisible = false;
|
|
139
139
|
firstUnreadId = null;
|
|
140
140
|
if (changed) notifyIndicatorChange();
|
|
141
141
|
}
|
|
@@ -144,12 +144,12 @@ export function useChatUnreadState(options?: UseChatUnreadStateOptions): UseChat
|
|
|
144
144
|
* Process messages to detect new arrivals and update unread state.
|
|
145
145
|
* This should be called from an $effect in the parent component.
|
|
146
146
|
*
|
|
147
|
-
* @param
|
|
147
|
+
* @param getAtBottom - Getter function to read atBottom without creating a dependency.
|
|
148
148
|
*/
|
|
149
149
|
function processMessages(
|
|
150
150
|
messages: Message[],
|
|
151
151
|
conversationId: string,
|
|
152
|
-
|
|
152
|
+
getAtBottom: () => boolean,
|
|
153
153
|
): void {
|
|
154
154
|
// Check if conversation has changed - reset tracking if so
|
|
155
155
|
if (conversationId !== previousConversationId) {
|
|
@@ -177,15 +177,15 @@ export function useChatUnreadState(options?: UseChatUnreadStateOptions): UseChat
|
|
|
177
177
|
|
|
178
178
|
if (wasAppended) {
|
|
179
179
|
// New messages arrived at the end
|
|
180
|
-
// Read
|
|
180
|
+
// Read atBottom via getter to avoid creating a reactive dependency
|
|
181
181
|
// The getter is called inside untrack to ensure no dependency tracking
|
|
182
|
-
const atBottom = untrack(
|
|
182
|
+
const atBottom = untrack(getAtBottom);
|
|
183
183
|
|
|
184
184
|
if (!atBottom) {
|
|
185
185
|
// User is reading history - show indicator
|
|
186
186
|
const newMessageCount = currentCount - prevCount;
|
|
187
187
|
unreadCount += newMessageCount;
|
|
188
|
-
|
|
188
|
+
newMessageIndicatorVisible = true;
|
|
189
189
|
|
|
190
190
|
// Set first unread ID if not already set
|
|
191
191
|
// The first new message is at index (currentCount - newMessageCount)
|
|
@@ -225,8 +225,8 @@ export function useChatUnreadState(options?: UseChatUnreadStateOptions): UseChat
|
|
|
225
225
|
get unreadCount() {
|
|
226
226
|
return unreadCount;
|
|
227
227
|
},
|
|
228
|
-
get
|
|
229
|
-
return
|
|
228
|
+
get newMessageIndicatorVisible() {
|
|
229
|
+
return newMessageIndicatorVisible;
|
|
230
230
|
},
|
|
231
231
|
get firstUnreadId() {
|
|
232
232
|
return firstUnreadId;
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
import Chat from './chat.svelte';
|
|
13
13
|
|
|
14
14
|
export default Chat;
|
|
15
|
-
export type { ChatProps, ReadReceipt, TypingParticipant } from './chat.types.ts';
|
|
15
|
+
export type { ChatCapabilities, ChatProps, ReadReceipt, TypingParticipant } from './chat.types.ts';
|
|
16
16
|
export { Chat };
|
|
17
17
|
|
|
18
18
|
// Adapter seam — the optional event/transport boundary around <Chat>. Type-only.
|
|
@@ -14,12 +14,14 @@
|
|
|
14
14
|
value?: string;
|
|
15
15
|
/** Placeholder text */
|
|
16
16
|
placeholder?: string;
|
|
17
|
+
/** Accessible label passed to the inner message editor */
|
|
18
|
+
composerLabel?: string;
|
|
17
19
|
/** Whether the input is disabled */
|
|
18
20
|
disabled?: boolean;
|
|
19
21
|
/** Whether a submission is in progress */
|
|
20
22
|
sending?: boolean;
|
|
21
23
|
/** Error message to display */
|
|
22
|
-
error?: string
|
|
24
|
+
error?: string;
|
|
23
25
|
/** Additional CSS class */
|
|
24
26
|
class?: string;
|
|
25
27
|
|
|
@@ -105,6 +107,7 @@
|
|
|
105
107
|
id,
|
|
106
108
|
value = $bindable(''),
|
|
107
109
|
placeholder = 'Type a message...',
|
|
110
|
+
composerLabel = 'Message',
|
|
108
111
|
disabled = false,
|
|
109
112
|
sending = false,
|
|
110
113
|
error,
|
|
@@ -497,6 +500,7 @@
|
|
|
497
500
|
bind:value
|
|
498
501
|
bind:this={editorRef}
|
|
499
502
|
{placeholder}
|
|
503
|
+
label={composerLabel}
|
|
500
504
|
readonly={disabled || sending}
|
|
501
505
|
showToolbar={false}
|
|
502
506
|
showModeToggle={false}
|
|
@@ -533,12 +537,18 @@
|
|
|
533
537
|
{/if}
|
|
534
538
|
|
|
535
539
|
<!-- Visually hidden shortcut description: always in the accessibility tree even when hint is container-queried away -->
|
|
536
|
-
<span id={shortcutDescriptionId} class="sr-only"
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
540
|
+
<span id={shortcutDescriptionId} class="sr-only">
|
|
541
|
+
{#if showStopButton}
|
|
542
|
+
Response is streaming. Use the stop button to stop generation.
|
|
543
|
+
{:else}
|
|
544
|
+
Press Enter to send, Shift+Enter for newline
|
|
545
|
+
{/if}
|
|
541
546
|
</span>
|
|
547
|
+
{#if !showStopButton}
|
|
548
|
+
<span id={hintId} class="chat-input-hint" aria-hidden="true">
|
|
549
|
+
<kbd>Enter</kbd> to send, <kbd>Shift</kbd>+<kbd>Enter</kbd> for newline
|
|
550
|
+
</span>
|
|
551
|
+
{/if}
|
|
542
552
|
</div>
|
|
543
553
|
|
|
544
554
|
<div class="chat-input-footer-right">
|
|
@@ -554,6 +564,7 @@
|
|
|
554
564
|
data-stop
|
|
555
565
|
onclick={onstop}
|
|
556
566
|
aria-label="Stop generating"
|
|
567
|
+
aria-describedby={shortcutDescriptionId}
|
|
557
568
|
>
|
|
558
569
|
<Square class="icon-sm" />
|
|
559
570
|
</button>
|
|
@@ -706,12 +717,10 @@
|
|
|
706
717
|
}
|
|
707
718
|
|
|
708
719
|
/* The button is a 44px touch target but the visible chip is the centered
|
|
709
|
-
1.25rem `::before` circle.
|
|
710
|
-
|
|
711
|
-
so it hugs the chip rather than the oversized hit area. */
|
|
720
|
+
1.25rem `::before` circle. Paint the ring on the visible circle so it hugs
|
|
721
|
+
the chip rather than the oversized hit area. */
|
|
712
722
|
.chat-input-attachment-remove:focus-visible {
|
|
713
723
|
opacity: 1;
|
|
714
|
-
outline: var(--cinder-ring-width) solid transparent;
|
|
715
724
|
}
|
|
716
725
|
|
|
717
726
|
.chat-input-attachment-remove:focus-visible::before {
|
|
@@ -720,9 +729,14 @@
|
|
|
720
729
|
}
|
|
721
730
|
|
|
722
731
|
@media (forced-colors: active) {
|
|
723
|
-
|
|
732
|
+
/* Forced-colors strips the box-shadow ring, so repaint a system-color
|
|
733
|
+
outline directly on the visible `::before` circle (which is round via
|
|
734
|
+
border-radius: full, so the outline follows the chip). Painting on the
|
|
735
|
+
circle itself avoids depending on fragile parent-to-pseudo offset math. */
|
|
736
|
+
.chat-input-attachment-remove:focus-visible::before {
|
|
737
|
+
box-shadow: none;
|
|
724
738
|
outline: var(--cinder-ring-width) solid ButtonText;
|
|
725
|
-
outline-offset: -
|
|
739
|
+
outline-offset: var(--cinder-ring-offset);
|
|
726
740
|
}
|
|
727
741
|
}
|
|
728
742
|
|
|
@@ -753,6 +767,13 @@
|
|
|
753
767
|
border-radius: 0;
|
|
754
768
|
}
|
|
755
769
|
|
|
770
|
+
.chat-input-editor-container :global(textarea.markdown-editor),
|
|
771
|
+
.chat-input-editor-container :global(.ProseMirror) {
|
|
772
|
+
field-sizing: content;
|
|
773
|
+
max-height: 12rem;
|
|
774
|
+
overflow-y: auto;
|
|
775
|
+
}
|
|
776
|
+
|
|
756
777
|
.chat-input-editor-container :global(.markdown-editor:focus-within) {
|
|
757
778
|
border-color: transparent;
|
|
758
779
|
box-shadow: none;
|
|
@@ -855,6 +876,7 @@
|
|
|
855
876
|
|
|
856
877
|
.chat-input-send:focus-visible {
|
|
857
878
|
outline: var(--cinder-ring-width) solid transparent;
|
|
879
|
+
outline-offset: 3px;
|
|
858
880
|
box-shadow: var(--_cinder-focus-ring-shadow);
|
|
859
881
|
}
|
|
860
882
|
|
|
@@ -874,7 +896,7 @@
|
|
|
874
896
|
|
|
875
897
|
@media (forced-colors: active) {
|
|
876
898
|
.chat-input-send:focus-visible {
|
|
877
|
-
outline: var(--cinder-ring-width) solid
|
|
899
|
+
outline: var(--cinder-ring-width) solid Highlight;
|
|
878
900
|
outline-offset: 3px;
|
|
879
901
|
}
|
|
880
902
|
}
|