@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
|
@@ -18,10 +18,10 @@ Bounded scrolling container that constrains overflowing content within a max hei
|
|
|
18
18
|
|
|
19
19
|
| Prop | Type | Required | Default | Description |
|
|
20
20
|
| ----------- | ------------------------------------------------------------------------------------------------------------------ | -------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
21
|
-
| `ariaLabel` | `string` | no | — | Accessible name for the scroll region. When provided on neutral containers, the container also gets `role="region"` so assistive technology treats it as a landmark. Semantic tags keep their native roles. Provide this when the scroll area represents a meaningful section (a chat transcript, a code panel) — omit it for purely decorative scrolling chrome. This is the single source of truth for the accessible name; pass it through this prop rather than the raw `aria-label` HTML attribute so the landmark role and label stay coupled. |
|
|
22
21
|
| `as` | `"article"` \| `"aside"` \| `"div"` \| `"li"` \| `"main"` \| `"nav"` \| `"ol"` \| `"pre"` \| `"section"` \| `"ul"` | no | — | Element tag to render. Defaults to `'div'`. |
|
|
23
22
|
| `class` | `string` | no | — | Additional classes merged onto the scroll viewport. |
|
|
24
23
|
| `direction` | `"vertical"` \| `"horizontal"` \| `"both"` | no | — | Axis to allow scrolling on. Defaults to `'vertical'`. |
|
|
24
|
+
| `label` | `string` | no | — | Accessible name for the scroll region. When provided on neutral containers, the container also gets `role="region"` so assistive technology treats it as a landmark. Semantic tags keep their native roles. Provide this when the scroll area represents a meaningful section (a chat transcript, a code panel) — omit it for purely decorative scrolling chrome. This is the single source of truth for the accessible name; pass it through this prop rather than the raw `aria-label` HTML attribute so the landmark role and label stay coupled. |
|
|
25
25
|
| `maxHeight` | `string` | no | — | Maximum block size of the scroll viewport (any valid CSS length). |
|
|
26
26
|
| `maxWidth` | `string` | no | — | Maximum inline size of the scroll viewport (any valid CSS length). |
|
|
27
27
|
| `tabindex` | `number` | no | — | Override the default focus behavior. The component sets `tabindex="0"` by default so keyboard users can reach the viewport for arrow-key scrolling. Pass `tabindex={-1}` when the viewport should be programmatically focusable without entering the tab order. |
|
|
@@ -13,19 +13,19 @@
|
|
|
13
13
|
"id": "horizontal-code-snippet",
|
|
14
14
|
"title": "Horizontal code snippet",
|
|
15
15
|
"description": "Horizontal scrolling for a long single-line code sample, rendered as a <pre> via the `as` prop so the region role is preserved alongside the semantic tag.",
|
|
16
|
-
"code": "<script lang=\"ts\">\n import { ScrollArea } from '@lostgradient/cinder/scroll-area';\n\n const command =\n '$ bun run --filter @cinder/components build && bun run --filter @cinder/components test --coverage --reporter=verbose --bail';\n</script>\n\n<ScrollArea as=\"pre\" direction=\"horizontal\" maxWidth=\"32rem\"
|
|
16
|
+
"code": "<script lang=\"ts\">\n import { ScrollArea } from '@lostgradient/cinder/scroll-area';\n\n const command =\n '$ bun run --filter @cinder/components build && bun run --filter @cinder/components test --coverage --reporter=verbose --bail';\n</script>\n\n<ScrollArea as=\"pre\" direction=\"horizontal\" maxWidth=\"32rem\" label=\"Example command\"\n ><code>{command}</code></ScrollArea\n>\n"
|
|
17
17
|
},
|
|
18
18
|
{
|
|
19
19
|
"id": "themed-scrollbar",
|
|
20
20
|
"title": "Themed scrollbar tokens",
|
|
21
21
|
"description": "Overrides --cinder-scrollbar-thumb and --cinder-scrollbar-thumb-hover on a wrapping surface so the native scrollbar picks up brand colors without replacing it.",
|
|
22
|
-
"code": "<script lang=\"ts\">\n import { ScrollArea } from '@lostgradient/cinder/scroll-area';\n</script>\n\n<div\n style=\"--cinder-scrollbar-thumb: oklch(62% 0.18 264 / 0.7); --cinder-scrollbar-thumb-hover: oklch(62% 0.18 264 / 0.95);\"\n>\n <ScrollArea
|
|
22
|
+
"code": "<script lang=\"ts\">\n import { ScrollArea } from '@lostgradient/cinder/scroll-area';\n</script>\n\n<div\n style=\"--cinder-scrollbar-thumb: oklch(62% 0.18 264 / 0.7); --cinder-scrollbar-thumb-hover: oklch(62% 0.18 264 / 0.95);\"\n>\n <ScrollArea label=\"Release notes\" maxHeight=\"14rem\">\n <h3>0.42.0</h3>\n <p>Adds scroll-area, themed via design tokens.</p>\n <h3>0.41.0</h3>\n <p>Combobox gains rich option rows with description and avatar.</p>\n <h3>0.40.0</h3>\n <p>Form-field contract lands on input, textarea, and select.</p>\n <h3>0.39.0</h3>\n <p>Changesets adopted; provenance-enabled publishing wired up.</p>\n <h3>0.38.0</h3>\n <p>Package exports unified under cinder/* with Shiki adapter.</p>\n </ScrollArea>\n</div>\n"
|
|
23
23
|
},
|
|
24
24
|
{
|
|
25
25
|
"id": "vertical-chat-list",
|
|
26
26
|
"title": "Vertical chat transcript",
|
|
27
27
|
"description": "A vertical scroll region with a meaningful accessible name, so assistive technology treats it as a landmark via the derived role=\"region\".",
|
|
28
|
-
"code": "<script lang=\"ts\">\n import { ScrollArea } from '@lostgradient/cinder/scroll-area';\n</script>\n\n<ScrollArea
|
|
28
|
+
"code": "<script lang=\"ts\">\n import { ScrollArea } from '@lostgradient/cinder/scroll-area';\n</script>\n\n<ScrollArea label=\"Chat transcript\" maxHeight=\"16rem\">\n <p>Avery: morning! ready to pair on the migration?</p>\n <p>Jordan: yep — pulling the branch now.</p>\n <p>Avery: heads up, the seed script changed.</p>\n <p>Jordan: noticed. running it locally first.</p>\n <p>Avery: thanks. ping me when you hit the auth step.</p>\n <p>Jordan: will do. tests are green on my end.</p>\n <p>Avery: nice. I'll start drafting the changelog.</p>\n <p>Jordan: cool — should I cherry-pick the hotfix in?</p>\n <p>Avery: yes please, then squash before review.</p>\n <p>Jordan: pushed. take a look when you can.</p>\n</ScrollArea>\n"
|
|
29
29
|
}
|
|
30
30
|
]
|
|
31
31
|
}
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
direction = 'vertical',
|
|
32
32
|
maxHeight,
|
|
33
33
|
maxWidth,
|
|
34
|
-
|
|
34
|
+
label,
|
|
35
35
|
tabindex = 0,
|
|
36
36
|
as = 'div',
|
|
37
37
|
class: className,
|
|
@@ -40,13 +40,13 @@
|
|
|
40
40
|
}: ScrollAreaProps = $props();
|
|
41
41
|
|
|
42
42
|
const normalizedAriaLabel = $derived(
|
|
43
|
-
typeof
|
|
43
|
+
typeof label === 'string' && label.trim().length > 0 ? label.trim() : undefined,
|
|
44
44
|
);
|
|
45
45
|
// `aria-labelledby` reaches the element through `...rest`. Treat it the same as
|
|
46
|
-
// `
|
|
47
|
-
// accessible name — whether from `
|
|
46
|
+
// the `label` prop for landmark purposes: a neutral element (`div`/`pre`) with an
|
|
47
|
+
// accessible name — whether from `label` or `aria-labelledby` — becomes a
|
|
48
48
|
// region landmark. Without this, `<ScrollArea as="div" aria-labelledby="…">`
|
|
49
|
-
// would be a named, focusable, but landmark-less container while the `
|
|
49
|
+
// would be a named, focusable, but landmark-less container while the `label`
|
|
50
50
|
// form would not — an asymmetry invisible to the consumer.
|
|
51
51
|
const ariaLabelledby = $derived((rest as { 'aria-labelledby'?: string })['aria-labelledby']);
|
|
52
52
|
const hasAccessibleName = $derived(
|
|
@@ -40,7 +40,7 @@ export type ScrollAreaProps = Omit<
|
|
|
40
40
|
* name; pass it through this prop rather than the raw `aria-label` HTML
|
|
41
41
|
* attribute so the landmark role and label stay coupled.
|
|
42
42
|
*/
|
|
43
|
-
|
|
43
|
+
label?: string;
|
|
44
44
|
/**
|
|
45
45
|
* Override the default focus behavior. The component sets `tabindex="0"`
|
|
46
46
|
* by default so keyboard users can reach the viewport for arrow-key
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* @cinder
|
|
4
4
|
* @category data-display
|
|
5
|
-
* @status
|
|
5
|
+
* @status stable
|
|
6
6
|
* @purpose Displays a masked secret (API key, token, webhook secret) with copy action and optional reveal toggle.
|
|
7
7
|
* @tag clipboard
|
|
8
8
|
* @tag security
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
</script>
|
|
17
17
|
|
|
18
18
|
<script lang="ts">
|
|
19
|
-
import { onDestroy } from 'svelte';
|
|
19
|
+
import { onDestroy, untrack } from 'svelte';
|
|
20
20
|
|
|
21
21
|
import type { SecretValueFieldProps } from './secret-value-field.types.ts';
|
|
22
22
|
import { copyToClipboard } from '../../utilities/clipboard.ts';
|
|
@@ -39,10 +39,8 @@
|
|
|
39
39
|
|
|
40
40
|
const fieldId = $props.id();
|
|
41
41
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
const initiallyRevealedSeed = initiallyRevealed;
|
|
45
|
-
let revealed = $state(initiallyRevealedSeed);
|
|
42
|
+
let revealed = $state(untrack(() => initiallyRevealed));
|
|
43
|
+
let previousValue = $state(untrack(() => value));
|
|
46
44
|
|
|
47
45
|
let copied = $state(false);
|
|
48
46
|
let resetTimer: ReturnType<typeof setTimeout> | undefined;
|
|
@@ -67,6 +65,12 @@
|
|
|
67
65
|
revealed = !revealed;
|
|
68
66
|
}
|
|
69
67
|
|
|
68
|
+
$effect(() => {
|
|
69
|
+
if (value === previousValue) return;
|
|
70
|
+
previousValue = value;
|
|
71
|
+
revealed = initiallyRevealed;
|
|
72
|
+
});
|
|
73
|
+
|
|
70
74
|
onDestroy(() => {
|
|
71
75
|
if (resetTimer) clearTimeout(resetTimer);
|
|
72
76
|
});
|
|
@@ -227,7 +227,7 @@
|
|
|
227
227
|
/* ── Focus ──────────────────────────────────────────────────────────────── */
|
|
228
228
|
|
|
229
229
|
.cinder-segmented-control-option:focus-visible {
|
|
230
|
-
outline:
|
|
230
|
+
outline: var(--cinder-ring-width) solid transparent;
|
|
231
231
|
box-shadow:
|
|
232
232
|
0 0 0 var(--cinder-ring-offset) var(--cinder-ring-offset-color),
|
|
233
233
|
0 0 0 calc(var(--cinder-ring-offset) + var(--cinder-ring-width)) var(--cinder-ring-color);
|
|
@@ -278,6 +278,19 @@
|
|
|
278
278
|
z-index: 1;
|
|
279
279
|
}
|
|
280
280
|
|
|
281
|
+
/* Forced-colors: selected/pressed segments also need outline fallback. Selection
|
|
282
|
+
* semantics apply (the segment represents a chosen option) → Highlight. */
|
|
283
|
+
@media (forced-colors: active) {
|
|
284
|
+
.cinder-segmented-control:not([data-cinder-variant='tablist'])
|
|
285
|
+
.cinder-segmented-control-option[data-cinder-selected]:focus-visible,
|
|
286
|
+
.cinder-segmented-control:not([data-cinder-variant='tablist'])
|
|
287
|
+
.cinder-segmented-control-option[data-cinder-pressed]:focus-visible {
|
|
288
|
+
outline: var(--cinder-ring-width) solid Highlight;
|
|
289
|
+
outline-offset: 1px;
|
|
290
|
+
box-shadow: none;
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
|
|
281
294
|
/* ── Tablist variant (single mode only) ─────────────────────────────────────
|
|
282
295
|
* See docs/decisions/segmented-control-tablist-variant.md. The tablist variant
|
|
283
296
|
* carries tab semantics for externally owned panels, so it must read as a
|
|
@@ -350,6 +363,14 @@
|
|
|
350
363
|
outline: var(--cinder-ring-width) solid Highlight;
|
|
351
364
|
outline-offset: 1px;
|
|
352
365
|
}
|
|
366
|
+
|
|
367
|
+
/* Forced-colors: selected+focused tab in tablist → selection semantics → Highlight. */
|
|
368
|
+
.cinder-segmented-control[data-cinder-selection-mode='single'][data-cinder-variant='tablist']
|
|
369
|
+
.cinder-segmented-control-option[data-cinder-selected]:focus-visible {
|
|
370
|
+
outline: var(--cinder-ring-width) solid Highlight;
|
|
371
|
+
outline-offset: 1px;
|
|
372
|
+
box-shadow: none;
|
|
373
|
+
}
|
|
353
374
|
}
|
|
354
375
|
|
|
355
376
|
/* Selected hover must not restore the filled pill — keep the selected tab's
|
|
@@ -12,8 +12,8 @@
|
|
|
12
12
|
{
|
|
13
13
|
"id": "multiple",
|
|
14
14
|
"title": "Multi-select segmented control",
|
|
15
|
-
"description": "Multiple options can be toggled independently.
|
|
16
|
-
"code": "<script lang=\"ts\">\n import { SvelteSet } from 'svelte/reactivity';\n import { Segment } from '@lostgradient/cinder/segment';\n import { SegmentedControl } from '@lostgradient/cinder/segmented-control';\n\n let formats = new SvelteSet<string>();\n\n const selected = $derived([...formats].join(', ') || 'none');\n</script>\n\n<div style=\"display: grid; gap: 0.75rem; justify-items: start;\">\n <SegmentedControl\n id=\"playground-format\"\n selectionMode=\"multiple\"\n
|
|
15
|
+
"description": "Multiple options can be toggled independently. Pass a SvelteSet to track selection.",
|
|
16
|
+
"code": "<script lang=\"ts\">\n import { SvelteSet } from 'svelte/reactivity';\n import { Segment } from '@lostgradient/cinder/segment';\n import { SegmentedControl } from '@lostgradient/cinder/segmented-control';\n\n let formats = new SvelteSet<string>();\n\n const selected = $derived([...formats].join(', ') || 'none');\n</script>\n\n<div style=\"display: grid; gap: 0.75rem; justify-items: start;\">\n <SegmentedControl\n id=\"playground-format\"\n selectionMode=\"multiple\"\n value={formats}\n label=\"Text formatting\"\n >\n <Segment value=\"bold\">Bold</Segment>\n <Segment value=\"italic\">Italic</Segment>\n <Segment value=\"underline\">Underline</Segment>\n <Segment value=\"strikethrough\">Strike</Segment>\n </SegmentedControl>\n <p style=\"margin: 0; color: var(--cinder-text-muted);\">Active formats: {selected}</p>\n</div>\n"
|
|
17
17
|
},
|
|
18
18
|
{
|
|
19
19
|
"id": "sizing",
|
|
@@ -14,14 +14,21 @@
|
|
|
14
14
|
* Label
|
|
15
15
|
* ---------------------------------------- */
|
|
16
16
|
|
|
17
|
-
.cinder-select-
|
|
18
|
-
display: inline-
|
|
17
|
+
.cinder-select-field__label {
|
|
18
|
+
display: inline-flex;
|
|
19
|
+
align-items: center;
|
|
20
|
+
gap: var(--cinder-space-1);
|
|
19
21
|
font-size: var(--cinder-text-xs);
|
|
20
22
|
font-weight: var(--cinder-font-medium);
|
|
21
23
|
line-height: 1;
|
|
22
24
|
color: var(--cinder-text);
|
|
23
25
|
}
|
|
24
26
|
|
|
27
|
+
.cinder-select-field__label[data-disabled] {
|
|
28
|
+
color: var(--cinder-text-disabled);
|
|
29
|
+
cursor: not-allowed;
|
|
30
|
+
}
|
|
31
|
+
|
|
25
32
|
/* ----------------------------------------
|
|
26
33
|
* Select control
|
|
27
34
|
* ---------------------------------------- */
|
|
@@ -73,7 +73,12 @@
|
|
|
73
73
|
|
|
74
74
|
<div class={classNames('cinder-select-field', className)}>
|
|
75
75
|
{#if label}
|
|
76
|
-
<label for={id}
|
|
76
|
+
<label for={id} class="cinder-select-field__label" data-disabled={field.disabled || undefined}>
|
|
77
|
+
{label}
|
|
78
|
+
{#if field.required}
|
|
79
|
+
<span class="cinder-_required-marker" aria-hidden="true">*</span>
|
|
80
|
+
{/if}
|
|
81
|
+
</label>
|
|
77
82
|
{/if}
|
|
78
83
|
<span class="cinder-select-field__control">
|
|
79
84
|
{#if options.length === 0}
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
"id": "null-position",
|
|
26
26
|
"title": "Null position clears the popover",
|
|
27
27
|
"description": "Setting position to null hides the popover even while open is true — the consumer can clear an active selection without changing the open flag.",
|
|
28
|
-
"code": "<script lang=\"ts\">\n import type { SelectionPopoverPosition } from '@lostgradient/cinder/selection-popover';\n import { Button } from '@lostgradient/cinder/button';\n import { SelectionPopover } from '@lostgradient/cinder/selection-popover';\n\n const popoverId = 'null-position-selection-popover';\n\n
|
|
28
|
+
"code": "<script lang=\"ts\">\n import type { SelectionPopoverPosition } from '@lostgradient/cinder/selection-popover';\n import { Button } from '@lostgradient/cinder/button';\n import { SelectionPopover } from '@lostgradient/cinder/selection-popover';\n\n const popoverId = 'null-position-selection-popover';\n\n let isOpen = $state(false);\n let position = $state<SelectionPopoverPosition | null>(null);\n let anchorElement = $state<HTMLElement | null>(null);\n\n function showPopover(): void {\n if (!anchorElement) return;\n\n const rect = anchorElement.getBoundingClientRect();\n position = {\n x: rect.left + rect.width / 2,\n y: rect.top,\n height: rect.height,\n };\n isOpen = true;\n }\n\n function clearPosition(): void {\n position = null;\n // open stays true — the component should hide because position is null.\n }\n\n function restorePosition(): void {\n showPopover();\n }\n</script>\n\n<div style=\"max-width: 36rem;\">\n <p style=\"margin: 0 0 0.75rem; line-height: 1.5;\">\n Demonstrates that setting <code>position</code> to <code>null</code> hides the popover even when\n <code>open</code>\n remains <code>true</code>. Click <em>Show popover</em> to open it, then use\n <em>Clear position</em>\n to set <code>position=null</code> while leaving\n <code>open=true</code> — the popover disappears because the component has no anchor point to\n position against. Use <em>Restore position</em> to bring it back without changing\n <code>open</code>.\n </p>\n\n <div style=\"display: flex; gap: 0.5rem; flex-wrap: wrap; margin-bottom: 0.75rem;\">\n <span bind:this={anchorElement} style=\"display: inline-flex;\">\n <Button label=\"Show popover\" onclick={showPopover} />\n </span>\n <Button label=\"Clear position (set null)\" onclick={clearPosition} disabled={!isOpen} />\n <Button label=\"Restore position\" onclick={restorePosition} disabled={!isOpen} />\n </div>\n\n <p style=\"margin: 0; font-size: var(--cinder-text-sm); color: var(--cinder-text-muted);\">\n Status: open={isOpen}, position={position ? `{x:${position.x},y:${position.y}}` : 'null'}\n </p>\n</div>\n\n<SelectionPopover id={popoverId} open={isOpen} {position} />\n"
|
|
29
29
|
},
|
|
30
30
|
{
|
|
31
31
|
"id": "toggled",
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
}
|
|
25
25
|
|
|
26
26
|
.cinder-share-card__title {
|
|
27
|
-
font-weight:
|
|
27
|
+
font-weight: var(--cinder-font-semibold);
|
|
28
28
|
font-size: var(--cinder-text-sm);
|
|
29
29
|
margin: 0;
|
|
30
30
|
color: var(--cinder-text);
|
|
@@ -76,10 +76,10 @@
|
|
|
76
76
|
color: var(--cinder-text);
|
|
77
77
|
cursor: pointer;
|
|
78
78
|
font-size: var(--cinder-text-sm);
|
|
79
|
-
font-weight:
|
|
79
|
+
font-weight: var(--cinder-font-medium);
|
|
80
80
|
transition:
|
|
81
|
-
background-color
|
|
82
|
-
border-color
|
|
81
|
+
background-color var(--cinder-duration-fast) var(--cinder-ease-standard),
|
|
82
|
+
border-color var(--cinder-duration-fast) var(--cinder-ease-standard);
|
|
83
83
|
white-space: nowrap;
|
|
84
84
|
}
|
|
85
85
|
|
|
@@ -97,6 +97,17 @@
|
|
|
97
97
|
0 0 0 calc(var(--cinder-ring-offset) + var(--cinder-ring-width)) var(--cinder-ring-color);
|
|
98
98
|
}
|
|
99
99
|
|
|
100
|
+
@media (forced-colors: active) {
|
|
101
|
+
.cinder-share-card__action:focus-visible {
|
|
102
|
+
outline: var(--cinder-ring-width) solid ButtonText;
|
|
103
|
+
/* 3px separates the outline from ButtonBorder (which renders in forced-colors
|
|
104
|
+
on all bordered controls and shares the ButtonText color family in HCM);
|
|
105
|
+
at 2px the ring and border can visually merge. */
|
|
106
|
+
outline-offset: 3px;
|
|
107
|
+
box-shadow: none;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
|
|
100
111
|
.cinder-share-card__action[data-cinder-copied] {
|
|
101
112
|
color: var(--cinder-color-success-fg);
|
|
102
113
|
border-color: var(--cinder-color-success-border);
|
|
@@ -16,8 +16,6 @@
|
|
|
16
16
|
</script>
|
|
17
17
|
|
|
18
18
|
<script lang="ts">
|
|
19
|
-
import { onDestroy } from 'svelte';
|
|
20
|
-
|
|
21
19
|
import { classNames } from '../../utilities/class-names.ts';
|
|
22
20
|
import { copyToClipboard } from '../../utilities/clipboard.ts';
|
|
23
21
|
import VisuallyHiddenLiveRegion from '../_visually-hidden-live-region.svelte';
|
|
@@ -161,9 +159,9 @@
|
|
|
161
159
|
// the value actually looks like a URL, otherwise "Text to share".
|
|
162
160
|
const valueRegionLabel = $derived(looksLikeUrl(value) ? 'Link to share' : 'Text to share');
|
|
163
161
|
|
|
164
|
-
|
|
162
|
+
$effect(() => {
|
|
165
163
|
// clearTimer() clears BOTH resetTimer and announceTimer.
|
|
166
|
-
clearTimer();
|
|
164
|
+
return () => clearTimer();
|
|
167
165
|
});
|
|
168
166
|
|
|
169
167
|
// The action list: explicit `actions` verbatim, else the copy-link default.
|
|
@@ -19,13 +19,11 @@
|
|
|
19
19
|
import type { SheetProps } from './sheet.types.ts';
|
|
20
20
|
import { onDestroy, tick } from 'svelte';
|
|
21
21
|
|
|
22
|
-
import { captureFocus, lockBodyScroll, pushEscapeHandler } from '../../_internal/overlay.ts';
|
|
23
|
-
import { waitForTransitionCompletion } from '../../_internal/transition-completion.ts';
|
|
24
22
|
import { overflowFade } from '../../utilities/attachments.ts';
|
|
25
23
|
import { createFocusTrap } from '../focus-trap/index.ts';
|
|
26
24
|
import { classNames } from '../../utilities/class-names.ts';
|
|
27
|
-
import { restoreFocusTo } from '../../utilities/focus.ts';
|
|
28
25
|
import { useReducedMotion } from '../../utilities/use-reduced-motion.svelte.ts';
|
|
26
|
+
import { createSlidingDialogState } from '../_internal/create-sliding-dialog-state.svelte.ts';
|
|
29
27
|
|
|
30
28
|
let {
|
|
31
29
|
open = $bindable(false),
|
|
@@ -45,66 +43,33 @@
|
|
|
45
43
|
let dialogElement: HTMLDialogElement | undefined = $state();
|
|
46
44
|
let bodyElement: HTMLDivElement | undefined = $state();
|
|
47
45
|
let panelElement: HTMLDivElement | undefined = $state();
|
|
48
|
-
let hydrated = $state(false);
|
|
49
|
-
let renderPanel = $state(open);
|
|
50
|
-
let isClosing = $state(false);
|
|
51
|
-
let closeGeneration = $state(0);
|
|
52
46
|
let pendingOpenFocus = $state(false);
|
|
53
47
|
|
|
54
|
-
let capturedFocus: HTMLElement | null = null;
|
|
55
|
-
let releaseScrollLock: (() => void) | null = null;
|
|
56
|
-
let releaseEscape: (() => void) | null = null;
|
|
57
|
-
let cancelPendingClose: (() => void) | null = null;
|
|
58
|
-
|
|
59
48
|
const reducedMotion = useReducedMotion();
|
|
60
49
|
const bodyOverflowFade = overflowFade();
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
50
|
+
const dialogState = createSlidingDialogState({
|
|
51
|
+
getOpen: () => open,
|
|
52
|
+
setOpen: (nextOpen) => {
|
|
53
|
+
open = nextOpen;
|
|
54
|
+
},
|
|
55
|
+
getDialogElement: () => dialogElement,
|
|
56
|
+
getPanelElement: () => panelElement,
|
|
57
|
+
getReducedMotion: () => reducedMotion.current,
|
|
58
|
+
getTriggerRef: () => triggerRef,
|
|
59
|
+
onOpen: () => {
|
|
60
|
+
pendingOpenFocus = true;
|
|
61
|
+
},
|
|
62
|
+
onClosed: () => {
|
|
63
|
+
pendingOpenFocus = false;
|
|
64
|
+
},
|
|
65
|
+
});
|
|
73
66
|
|
|
74
67
|
$effect(() => {
|
|
75
|
-
|
|
68
|
+
dialogState.markHydrated();
|
|
76
69
|
});
|
|
77
70
|
|
|
78
71
|
$effect(() => {
|
|
79
|
-
|
|
80
|
-
if (open) {
|
|
81
|
-
if (isClosing) {
|
|
82
|
-
closeGeneration += 1;
|
|
83
|
-
cancelPendingClose?.();
|
|
84
|
-
cancelPendingClose = null;
|
|
85
|
-
isClosing = false;
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
if (!renderPanel) {
|
|
89
|
-
renderPanel = true;
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
if (!dialogElement.open) {
|
|
93
|
-
capturedFocus = captureFocus();
|
|
94
|
-
pendingOpenFocus = true;
|
|
95
|
-
dialogElement.showModal();
|
|
96
|
-
acquireScrollLock();
|
|
97
|
-
acquireEscapeMarker();
|
|
98
|
-
}
|
|
99
|
-
return;
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
if (dialogElement.open) {
|
|
103
|
-
beginClosing();
|
|
104
|
-
} else {
|
|
105
|
-
renderPanel = false;
|
|
106
|
-
pendingOpenFocus = false;
|
|
107
|
-
}
|
|
72
|
+
dialogState.syncOpenState();
|
|
108
73
|
});
|
|
109
74
|
|
|
110
75
|
$effect(() => {
|
|
@@ -123,109 +88,29 @@
|
|
|
123
88
|
});
|
|
124
89
|
});
|
|
125
90
|
|
|
126
|
-
function beginClosing(): void {
|
|
127
|
-
if (!dialogElement?.open || isClosing) return;
|
|
128
|
-
if (!panelElement) {
|
|
129
|
-
finishClosing(closeGeneration);
|
|
130
|
-
return;
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
isClosing = true;
|
|
134
|
-
const generation = ++closeGeneration;
|
|
135
|
-
cancelPendingClose?.();
|
|
136
|
-
cancelPendingClose = waitForTransitionCompletion({
|
|
137
|
-
element: panelElement,
|
|
138
|
-
reducedMotion: reducedMotion.current,
|
|
139
|
-
onComplete: () => finishClosing(generation),
|
|
140
|
-
});
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
function finishClosing(generation: number): void {
|
|
144
|
-
if (generation !== closeGeneration) return;
|
|
145
|
-
cancelPendingClose?.();
|
|
146
|
-
cancelPendingClose = null;
|
|
147
|
-
isClosing = false;
|
|
148
|
-
renderPanel = false;
|
|
149
|
-
pendingOpenFocus = false;
|
|
150
|
-
if (dialogElement?.open) {
|
|
151
|
-
dialogElement.close();
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
function handleClose() {
|
|
156
|
-
if (releaseScrollLock) {
|
|
157
|
-
releaseScrollLock();
|
|
158
|
-
releaseScrollLock = null;
|
|
159
|
-
}
|
|
160
|
-
if (releaseEscape) {
|
|
161
|
-
releaseEscape();
|
|
162
|
-
releaseEscape = null;
|
|
163
|
-
}
|
|
164
|
-
open = false;
|
|
165
|
-
const candidates: Array<HTMLElement | null> = [triggerRef, capturedFocus];
|
|
166
|
-
capturedFocus = null;
|
|
167
|
-
for (const candidate of candidates) {
|
|
168
|
-
if (restoreFocusTo(candidate)) break;
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
function requestClose(): void {
|
|
173
|
-
if (!open && (isClosing || !dialogElement?.open)) return;
|
|
174
|
-
open = false;
|
|
175
|
-
beginClosing();
|
|
176
|
-
}
|
|
177
|
-
|
|
178
|
-
function handleBackdropClick(event: MouseEvent) {
|
|
179
|
-
if (event.target === dialogElement) {
|
|
180
|
-
requestClose();
|
|
181
|
-
}
|
|
182
|
-
}
|
|
183
|
-
|
|
184
|
-
function handleNativeCancel(event: Event) {
|
|
185
|
-
event.preventDefault();
|
|
186
|
-
requestClose();
|
|
187
|
-
}
|
|
188
|
-
|
|
189
91
|
onDestroy(() => {
|
|
190
|
-
|
|
191
|
-
cancelPendingClose = null;
|
|
192
|
-
const wasOpen = releaseScrollLock !== null || releaseEscape !== null;
|
|
193
|
-
if (releaseScrollLock) {
|
|
194
|
-
releaseScrollLock();
|
|
195
|
-
releaseScrollLock = null;
|
|
196
|
-
}
|
|
197
|
-
if (releaseEscape) {
|
|
198
|
-
releaseEscape();
|
|
199
|
-
releaseEscape = null;
|
|
200
|
-
}
|
|
201
|
-
if (wasOpen) {
|
|
202
|
-
const candidates: Array<HTMLElement | null> = [triggerRef, capturedFocus];
|
|
203
|
-
capturedFocus = null;
|
|
204
|
-
for (const candidate of candidates) {
|
|
205
|
-
if (restoreFocusTo(candidate)) break;
|
|
206
|
-
}
|
|
207
|
-
}
|
|
92
|
+
dialogState.destroy();
|
|
208
93
|
});
|
|
209
94
|
</script>
|
|
210
95
|
|
|
211
|
-
{#if hydrated}
|
|
96
|
+
{#if dialogState.hydrated}
|
|
212
97
|
<dialog
|
|
213
98
|
{...rest}
|
|
214
99
|
bind:this={dialogElement}
|
|
215
100
|
class={classNames('cinder-sheet', className)}
|
|
216
101
|
aria-modal="true"
|
|
217
102
|
aria-labelledby={ariaLabelledBy ?? titleId}
|
|
218
|
-
data-cinder-closing={isClosing ? '' : undefined}
|
|
219
|
-
onclose={handleClose}
|
|
220
|
-
oncancel={handleNativeCancel}
|
|
221
|
-
onclick={handleBackdropClick}
|
|
103
|
+
data-cinder-closing={dialogState.isClosing ? '' : undefined}
|
|
104
|
+
onclose={() => dialogState.handleClose()}
|
|
105
|
+
oncancel={(event) => dialogState.handleNativeCancel(event)}
|
|
106
|
+
onclick={(event) => dialogState.handleBackdropClick(event)}
|
|
222
107
|
>
|
|
223
108
|
{#snippet closeButton()}
|
|
224
109
|
<button
|
|
225
110
|
type="button"
|
|
226
111
|
class="cinder-sheet__close"
|
|
227
112
|
aria-label="Close sheet"
|
|
228
|
-
onclick={requestClose}
|
|
113
|
+
onclick={() => dialogState.requestClose()}
|
|
229
114
|
>
|
|
230
115
|
<svg
|
|
231
116
|
class="cinder-sheet__close-icon"
|
|
@@ -241,14 +126,14 @@
|
|
|
241
126
|
</button>
|
|
242
127
|
{/snippet}
|
|
243
128
|
|
|
244
|
-
{#if renderPanel}
|
|
129
|
+
{#if dialogState.renderPanel}
|
|
245
130
|
<div
|
|
246
131
|
bind:this={panelElement}
|
|
247
132
|
class="cinder-sheet__panel"
|
|
248
|
-
data-cinder-closing={isClosing ? '' : undefined}
|
|
249
|
-
inert={isClosing}
|
|
133
|
+
data-cinder-closing={dialogState.isClosing ? '' : undefined}
|
|
134
|
+
inert={dialogState.isClosing}
|
|
250
135
|
{@attach createFocusTrap({
|
|
251
|
-
active: () => open && !isClosing,
|
|
136
|
+
active: () => open && !dialogState.isClosing,
|
|
252
137
|
restoreFocus: false,
|
|
253
138
|
manageInitialFocus: false,
|
|
254
139
|
})}
|
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
{/if}
|
|
48
48
|
|
|
49
49
|
<span class="cinder-shortcut-hint__keys" aria-hidden="true">
|
|
50
|
-
{#each keys as key, index (
|
|
50
|
+
{#each keys as key, index (index)}
|
|
51
51
|
<Kbd label={key} size="sm" />
|
|
52
52
|
{#if index < keys.length - 1}
|
|
53
53
|
<span class="cinder-shortcut-hint__separator">+</span>
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
"id": "docs-sidebar",
|
|
14
14
|
"title": "Docs sidebar",
|
|
15
15
|
"description": "Documentation sidebar with grouped navigation sections. The active item receives aria-current=\"page\".",
|
|
16
|
-
"code": "<script lang=\"ts\" module>\n export const title = 'Docs sidebar';\n export const description =\n 'Documentation sidebar with grouped navigation sections. The active item receives aria-current=\"page\".' +\n ' Composed inside Sidebar so the column collapses to a drawer below the ~767px viewport breakpoint —' +\n ' resize your browser window to see the mobile drawer behavior.';\n</script>\n\n<script lang=\"ts\">\n import { Button } from '@lostgradient/cinder/button';\n import { SideNavigation } from '@lostgradient/cinder/side-navigation';\n import { Sidebar } from '@lostgradient/cinder/sidebar';\n\n let collapsed = $state(false);\n</script>\n\n<div style=\"display: flex; flex-direction: column; gap: 1rem;\">\n <div>\n <Button\n label={collapsed ? 'Expand sidebar' : 'Collapse sidebar'}\n onclick={() => (collapsed = !collapsed)}\n />\n </div>\n\n <div\n style=\"display: flex; min-height: 28rem; border: 1px solid var(--cinder-border); border-radius: 0.5rem; overflow: hidden;\"\n >\n <Sidebar bind:collapsed
|
|
16
|
+
"code": "<script lang=\"ts\" module>\n export const title = 'Docs sidebar';\n export const description =\n 'Documentation sidebar with grouped navigation sections. The active item receives aria-current=\"page\".' +\n ' Composed inside Sidebar so the column collapses to a drawer below the ~767px viewport breakpoint —' +\n ' resize your browser window to see the mobile drawer behavior.';\n</script>\n\n<script lang=\"ts\">\n import { Button } from '@lostgradient/cinder/button';\n import { SideNavigation } from '@lostgradient/cinder/side-navigation';\n import { Sidebar } from '@lostgradient/cinder/sidebar';\n\n let collapsed = $state(false);\n</script>\n\n<div style=\"display: flex; flex-direction: column; gap: 1rem;\">\n <div>\n <Button\n label={collapsed ? 'Expand sidebar' : 'Collapse sidebar'}\n onclick={() => (collapsed = !collapsed)}\n />\n </div>\n\n <div\n style=\"display: flex; min-height: 28rem; border: 1px solid var(--cinder-border); border-radius: 0.5rem; overflow: hidden;\"\n >\n <Sidebar bind:collapsed label=\"Documentation\">\n {#snippet brand()}\n <strong style=\"font-size: 0.875rem;\">Cinder Docs</strong>\n {/snippet}\n\n {#snippet navigation()}\n <SideNavigation ariaLabel=\"Documentation sections\">\n <SideNavigation.Group label=\"Getting Started\">\n <SideNavigation.Item href=\"#introduction\" active>Introduction</SideNavigation.Item>\n <SideNavigation.Item href=\"#installation\">Installation</SideNavigation.Item>\n <SideNavigation.Item href=\"#quick-start\">Quick start</SideNavigation.Item>\n </SideNavigation.Group>\n <SideNavigation.Group label=\"Components\">\n <SideNavigation.Item href=\"#button\">Button</SideNavigation.Item>\n <SideNavigation.Item href=\"#form-section\">FormSection</SideNavigation.Item>\n <SideNavigation.Item href=\"#side-navigation\">SideNavigation</SideNavigation.Item>\n </SideNavigation.Group>\n <SideNavigation.Group label=\"API Reference\">\n <SideNavigation.Item href=\"#props\">Props</SideNavigation.Item>\n <SideNavigation.Item href=\"#types\">Types</SideNavigation.Item>\n <SideNavigation.Item href=\"#css-variables\">CSS variables</SideNavigation.Item>\n </SideNavigation.Group>\n </SideNavigation>\n {/snippet}\n </Sidebar>\n\n <main style=\"flex: 1; padding: 1.5rem;\">\n <p style=\"margin: 0; color: var(--cinder-text-muted); font-size: var(--cinder-text-sm);\">\n Main content area. Resize the browser viewport below ~767px to see the navigation collapse\n into a mobile drawer.\n </p>\n </main>\n </div>\n</div>\n"
|
|
17
17
|
}
|
|
18
18
|
]
|
|
19
19
|
}
|
|
@@ -9,7 +9,11 @@ Persistent side panel that houses navigation, filters, or supplementary page con
|
|
|
9
9
|
import Sidebar from '@lostgradient/cinder/sidebar';
|
|
10
10
|
</script>
|
|
11
11
|
|
|
12
|
-
<Sidebar
|
|
12
|
+
<Sidebar label="App sidebar">
|
|
13
|
+
{#snippet navigation()}
|
|
14
|
+
<nav><!-- navigation items --></nav>
|
|
15
|
+
{/snippet}
|
|
16
|
+
</Sidebar>
|
|
13
17
|
```
|
|
14
18
|
|
|
15
19
|
## Props
|
|
@@ -18,9 +22,9 @@ Persistent side panel that houses navigation, filters, or supplementary page con
|
|
|
18
22
|
|
|
19
23
|
| Prop | Type | Required | Default | Description |
|
|
20
24
|
| ------------ | ---------- | -------- | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
21
|
-
| `ariaLabel` | `string` | no | — | Accessible name for the outer landmark and the mobile drawer. Required — defaults to `'Sidebar'` for convenience but must be unique per page. The inner `<nav>` landmark derives its own accessible name from this value by appending `' navigation'` so screen readers can distinguish the outer complementary region from the inner navigation region. |
|
|
22
25
|
| `class` | `string` | no | — | Additional CSS class merged with `.cinder-sidebar`. |
|
|
23
26
|
| `collapsed` | `boolean` | no | — | Whether the sidebar is collapsed. Bindable via `bind:collapsed`. Default `false`. On desktop (>= md breakpoint) `collapsed=true` switches the sidebar to icon-only mode. Below the md breakpoint the sidebar renders inside a `<Drawer>` and `collapsed=true` means the drawer is closed. |
|
|
27
|
+
| `label` | `string` | no | — | Accessible name for the outer landmark and the mobile drawer. Required — defaults to `'Sidebar'` for convenience but must be unique per page. The inner `<nav>` landmark derives its own accessible name from this value by appending `' navigation'` so screen readers can distinguish the outer complementary region from the inner navigation region. |
|
|
24
28
|
| `brand` | `(opaque)` | no | — | Optional branding region rendered above the navigation. Not expressible in JSON Schema; see the component types for the signature. |
|
|
25
29
|
| `footer` | `(opaque)` | no | — | Optional footer region (e.g. user account, sign-out). Not expressible in JSON Schema; see the component types for the signature. |
|
|
26
30
|
| `navigation` | `(opaque)` | no | — | Navigation region. Typically a `<SideNavigation>` subtree. Optional — when omitted, no `<nav>` landmark is rendered (so the sidebar can serve as app chrome without a navigation list, and an empty `<nav>` isn't announced to screen readers). Not expressible in JSON Schema; see the component types for the signature. |
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
"id": "basic",
|
|
8
8
|
"title": "Basic sidebar",
|
|
9
9
|
"description": "Layout-level sidebar with brand, navigation, and footer regions. Collapse toggles icon-only mode on desktop and closes the drawer on mobile.",
|
|
10
|
-
"code": "<script lang=\"ts\">\n import { Button } from '@lostgradient/cinder/button';\n import { NavigationItem } from '@lostgradient/cinder/navigation-item';\n import { SideNavigation } from '@lostgradient/cinder/side-navigation';\n import { SideNavigationGroup } from '@lostgradient/cinder/side-navigation-group';\n import { SideNavigationItem } from '@lostgradient/cinder/side-navigation-item';\n import { Sidebar } from '@lostgradient/cinder/sidebar';\n let collapsed = $state(false);\n</script>\n\n<div style=\"display: flex; flex-direction: column; gap: 1rem;\">\n <div>\n <Button\n label={collapsed ? 'Expand sidebar' : 'Collapse sidebar'}\n onclick={() => (collapsed = !collapsed)}\n />\n </div>\n\n <div\n style=\"display: flex; min-height: 24rem; border: 1px solid #e5e7eb; border-radius: 0.5rem; overflow: hidden;\"\n >\n <Sidebar bind:collapsed
|
|
10
|
+
"code": "<script lang=\"ts\">\n import { Button } from '@lostgradient/cinder/button';\n import { NavigationItem } from '@lostgradient/cinder/navigation-item';\n import { SideNavigation } from '@lostgradient/cinder/side-navigation';\n import { SideNavigationGroup } from '@lostgradient/cinder/side-navigation-group';\n import { SideNavigationItem } from '@lostgradient/cinder/side-navigation-item';\n import { Sidebar } from '@lostgradient/cinder/sidebar';\n let collapsed = $state(false);\n</script>\n\n<div style=\"display: flex; flex-direction: column; gap: 1rem;\">\n <div>\n <Button\n label={collapsed ? 'Expand sidebar' : 'Collapse sidebar'}\n onclick={() => (collapsed = !collapsed)}\n />\n </div>\n\n <div\n style=\"display: flex; min-height: 24rem; border: 1px solid #e5e7eb; border-radius: 0.5rem; overflow: hidden;\"\n >\n <Sidebar bind:collapsed label=\"Workspace\">\n {#snippet brand()}\n <strong style=\"font-size: 0.875rem;\">Cinder</strong>\n {/snippet}\n\n {#snippet navigation()}\n <SideNavigation ariaLabel=\"Workspace sections\">\n {#snippet children()}\n <SideNavigationItem href=\"#dashboard\">\n {#snippet children()}Dashboard{/snippet}\n </SideNavigationItem>\n <SideNavigationItem href=\"#projects\" active>\n {#snippet children()}Projects{/snippet}\n </SideNavigationItem>\n <SideNavigationGroup label=\"Settings\">\n {#snippet children()}\n <SideNavigationItem href=\"#general\">\n {#snippet children()}General{/snippet}\n </SideNavigationItem>\n <SideNavigationItem href=\"#billing\">\n {#snippet children()}Billing{/snippet}\n </SideNavigationItem>\n {/snippet}\n </SideNavigationGroup>\n {/snippet}\n </SideNavigation>\n {/snippet}\n\n {#snippet footer()}\n <NavigationItem variant=\"vertical\" href=\"#account\">\n {#snippet children()}Account{/snippet}\n </NavigationItem>\n {/snippet}\n </Sidebar>\n\n <main style=\"flex: 1; padding: 1rem;\">\n <p>Main content area.</p>\n <p>Resize the viewport below ~767px to see the mobile drawer behavior.</p>\n </main>\n </div>\n</div>\n"
|
|
11
11
|
}
|
|
12
12
|
]
|
|
13
13
|
}
|