@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
|
@@ -23,6 +23,7 @@
|
|
|
23
23
|
</script>
|
|
24
24
|
|
|
25
25
|
<script lang="ts">
|
|
26
|
+
import { tick } from 'svelte';
|
|
26
27
|
import VisuallyHiddenLiveRegion from '../_visually-hidden-live-region.svelte';
|
|
27
28
|
import SearchField from '../search-field/search-field.svelte';
|
|
28
29
|
import Chip from '../chip/chip.svelte';
|
|
@@ -50,6 +51,7 @@
|
|
|
50
51
|
}: FacetedFilterBarProps = $props();
|
|
51
52
|
|
|
52
53
|
const searchId = $derived(`${generatedId}-search`);
|
|
54
|
+
let rootElement: HTMLDivElement | undefined = $state();
|
|
53
55
|
|
|
54
56
|
// Internal uncontrolled search value when searchQuery is not provided.
|
|
55
57
|
let internalSearchQuery = $state('');
|
|
@@ -68,13 +70,21 @@
|
|
|
68
70
|
return appliedFilters.find((filter) => filter.key === key)?.value ?? '';
|
|
69
71
|
}
|
|
70
72
|
|
|
73
|
+
function resolveFilterDisplayValue(key: string, value: string): string {
|
|
74
|
+
const facet = facets.find((candidate) => candidate.key === key);
|
|
75
|
+
if (facet?.type !== 'select') return value;
|
|
76
|
+
return facet.options.find((option) => option.value === value)?.label ?? value;
|
|
77
|
+
}
|
|
78
|
+
|
|
71
79
|
const hasAppliedFilters = $derived(appliedFilters.length > 0 || currentSearchQuery.length > 0);
|
|
72
80
|
const totalActiveCount = $derived(appliedFilters.length);
|
|
73
81
|
|
|
74
82
|
// Live region summary message — always in DOM, content changes when filters change.
|
|
75
83
|
const summaryMessage = $derived.by(() => {
|
|
76
84
|
if (totalActiveCount === 0) return '';
|
|
77
|
-
const parts = appliedFilters.map(
|
|
85
|
+
const parts = appliedFilters.map(
|
|
86
|
+
(filter) => `${filter.label}: ${resolveFilterDisplayValue(filter.key, filter.value)}`,
|
|
87
|
+
);
|
|
78
88
|
return `${totalActiveCount} active filter${totalActiveCount === 1 ? '' : 's'}: ${parts.join(', ')}`;
|
|
79
89
|
});
|
|
80
90
|
|
|
@@ -85,8 +95,21 @@
|
|
|
85
95
|
onsearchchange?.(value);
|
|
86
96
|
}
|
|
87
97
|
|
|
88
|
-
function handleFilterRemove(key: string): void {
|
|
98
|
+
async function handleFilterRemove(key: string): Promise<void> {
|
|
99
|
+
const filterIndex = appliedFilters.findIndex((filter) => filter.key === key);
|
|
100
|
+
const facetFallbackKey = appliedFilters[filterIndex]?.key;
|
|
89
101
|
onfilterremove?.(key);
|
|
102
|
+
await tick();
|
|
103
|
+
|
|
104
|
+
const removeButtons = Array.from(
|
|
105
|
+
rootElement?.querySelectorAll<HTMLButtonElement>('.cinder-chip__remove') ?? [],
|
|
106
|
+
);
|
|
107
|
+
const nextRemoveButton = removeButtons[Math.min(filterIndex, removeButtons.length - 1)];
|
|
108
|
+
const facetSelect = facetFallbackKey
|
|
109
|
+
? document.getElementById(`${generatedId}-facet-${facetFallbackKey}`)
|
|
110
|
+
: null;
|
|
111
|
+
const searchInput = document.getElementById(searchId);
|
|
112
|
+
(nextRemoveButton ?? facetSelect ?? searchInput)?.focus();
|
|
90
113
|
}
|
|
91
114
|
|
|
92
115
|
function handleClearAll(): void {
|
|
@@ -102,6 +125,7 @@
|
|
|
102
125
|
</script>
|
|
103
126
|
|
|
104
127
|
<div
|
|
128
|
+
bind:this={rootElement}
|
|
105
129
|
{...rest}
|
|
106
130
|
class={classNames('cinder-faceted-filter-bar', className)}
|
|
107
131
|
role="search"
|
|
@@ -125,7 +149,7 @@
|
|
|
125
149
|
{@const selectFacet = facet as SelectFacet}
|
|
126
150
|
<div class="cinder-faceted-filter-bar__facet">
|
|
127
151
|
<label
|
|
128
|
-
class="cinder-faceted-filter-bar__facet-label
|
|
152
|
+
class="cinder-faceted-filter-bar__facet-label"
|
|
129
153
|
for={`${generatedId}-facet-${selectFacet.key}`}
|
|
130
154
|
>
|
|
131
155
|
{selectFacet.label}
|
|
@@ -165,10 +189,11 @@
|
|
|
165
189
|
{#if hasAppliedFilters}
|
|
166
190
|
<div class="cinder-faceted-filter-bar__chips" aria-label="Active filter controls">
|
|
167
191
|
{#each appliedFilters as filter (filter.key)}
|
|
192
|
+
{@const displayValue = resolveFilterDisplayValue(filter.key, filter.value)}
|
|
168
193
|
<Chip
|
|
169
194
|
mode="removable"
|
|
170
|
-
label={`${filter.label}: ${
|
|
171
|
-
removeAriaLabel={`Remove filter: ${filter.label}: ${
|
|
195
|
+
label={`${filter.label}: ${displayValue}`}
|
|
196
|
+
removeAriaLabel={`Remove filter: ${filter.label}: ${displayValue}`}
|
|
172
197
|
{disabled}
|
|
173
198
|
onremove={() => handleFilterRemove(filter.key)}
|
|
174
199
|
/>
|
|
@@ -179,6 +204,7 @@
|
|
|
179
204
|
size="sm"
|
|
180
205
|
class="cinder-faceted-filter-bar__clear-all"
|
|
181
206
|
{disabled}
|
|
207
|
+
aria-label="Clear all filters"
|
|
182
208
|
onclick={handleClearAll}
|
|
183
209
|
>
|
|
184
210
|
Clear all
|
|
@@ -18,9 +18,9 @@
|
|
|
18
18
|
background: var(--cinder-file-upload-background);
|
|
19
19
|
padding: var(--cinder-space-4);
|
|
20
20
|
transition:
|
|
21
|
-
border-color
|
|
22
|
-
background-color
|
|
23
|
-
box-shadow
|
|
21
|
+
border-color var(--cinder-duration-fast) var(--cinder-ease-standard),
|
|
22
|
+
background-color var(--cinder-duration-fast) var(--cinder-ease-standard),
|
|
23
|
+
box-shadow var(--cinder-duration-fast) var(--cinder-ease-standard);
|
|
24
24
|
}
|
|
25
25
|
|
|
26
26
|
.cinder-file-upload__dropzone[data-drag-active] {
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
}
|
|
36
36
|
|
|
37
37
|
.cinder-file-upload__dropzone:focus-within {
|
|
38
|
-
outline:
|
|
38
|
+
outline: var(--cinder-ring-width) solid transparent;
|
|
39
39
|
box-shadow: var(--_cinder-focus-ring-shadow);
|
|
40
40
|
}
|
|
41
41
|
|
|
@@ -169,7 +169,7 @@
|
|
|
169
169
|
block-size: 100%;
|
|
170
170
|
background: var(--cinder-file-upload-progress-fill);
|
|
171
171
|
inline-size: calc(clamp(0, var(--cinder-file-upload-progress, 0), 100) * 1%);
|
|
172
|
-
transition: inline-size
|
|
172
|
+
transition: inline-size var(--cinder-duration-fast) var(--cinder-ease-standard);
|
|
173
173
|
}
|
|
174
174
|
|
|
175
175
|
.cinder-file-upload__error {
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "../../schemas/examples.schema.json",
|
|
3
|
+
"component": "file-upload",
|
|
4
|
+
"import": "@lostgradient/cinder/file-upload",
|
|
5
|
+
"examples": [
|
|
6
|
+
{
|
|
7
|
+
"id": "basic",
|
|
8
|
+
"title": "Basic file upload",
|
|
9
|
+
"description": "Drag-and-drop file picker with acceptance and rejection feedback.",
|
|
10
|
+
"code": "<script lang=\"ts\">\n import { FileUpload } from '@lostgradient/cinder/file-upload';\n import type { RejectedFile } from '@lostgradient/cinder/file-upload';\n import { FormField } from '@lostgradient/cinder/form-field';\n\n let acceptedNames = $state<string[]>([]);\n let rejectedMessages = $state<string[]>([]);\n\n // A single drop/pick can include both valid and invalid files — FileUpload\n // fires `onchange` (accepted) AND `onreject` (rejected) for the same batch.\n // Each handler updates only its own list so a mixed batch shows both results.\n function handleChange(files: File[]) {\n acceptedNames = files.map((file) => file.name);\n }\n\n function handleReject(rejected: RejectedFile[]) {\n rejectedMessages = rejected.map((entry) => entry.message);\n }\n</script>\n\n<!-- Compose with FormField so the file input has an associated <label>. -->\n<FormField id=\"attachment\" label=\"Attachment\" description=\"Images or PDF, up to 5 MB.\">\n <FileUpload\n id=\"attachment\"\n accept=\"image/*,.pdf\"\n multiple\n maxSize={5 * 1024 * 1024}\n onchange={handleChange}\n onreject={handleReject}\n />\n</FormField>\n\n{#if acceptedNames.length > 0}\n <p style=\"margin-top: 0.5rem; color: var(--cinder-color-success-fg);\">\n Accepted: {acceptedNames.join(', ')}\n </p>\n{/if}\n\n{#if rejectedMessages.length > 0}\n <p style=\"margin-top: 0.5rem; color: var(--cinder-color-danger-fg);\">\n {rejectedMessages.join('; ')}\n </p>\n{/if}\n"
|
|
11
|
+
}
|
|
12
|
+
]
|
|
13
|
+
}
|
|
@@ -25,15 +25,15 @@ Circular button representing the single most important action on a screen.
|
|
|
25
25
|
|
|
26
26
|
<!-- generated:props:start -->
|
|
27
27
|
|
|
28
|
-
| Prop | Type | Required | Default | Description
|
|
29
|
-
| ---------- | ------------------------------------------- | -------- | ----------- |
|
|
30
|
-
| `class` | `string` | no | — | Custom class merged with `.cinder-fab`.
|
|
31
|
-
| `
|
|
32
|
-
| `
|
|
33
|
-
| `
|
|
34
|
-
| `size` | `"sm"` \| `"md"` \| `"lg"` | no | `"md"` | Size of the FAB.
|
|
35
|
-
| `variant` | `"
|
|
36
|
-
| `children` | `(opaque)` | no | — | The icon (or icon + label for extended
|
|
28
|
+
| Prop | Type | Required | Default | Description |
|
|
29
|
+
| ---------- | ------------------------------------------- | -------- | ----------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
30
|
+
| `class` | `string` | no | — | Custom class merged with `.cinder-fab`. |
|
|
31
|
+
| `disabled` | `boolean` | no | `false` | When true, disables the button and prevents interaction. |
|
|
32
|
+
| `href` | `string` | no | — | Render as an anchor `<a>` element with this href. |
|
|
33
|
+
| `shape` | `"filled"` \| `"extended"` | no | `"filled"` | Shape. `filled` = circle, `extended` = pill. |
|
|
34
|
+
| `size` | `"sm"` \| `"md"` \| `"lg"` | no | `"md"` | Size of the FAB. |
|
|
35
|
+
| `variant` | `"primary"` \| `"secondary"` \| `"surface"` | no | `"primary"` | Color palette. |
|
|
36
|
+
| `children` | `(opaque)` | no | — | The icon (or icon + label for extended shape). Always provide `aria-label` when the FAB renders an icon without visible text — i.e. the `filled` shape. Not expressible in JSON Schema; see the component types for the signature. |
|
|
37
37
|
|
|
38
38
|
<!-- generated:props:end -->
|
|
39
39
|
|
|
@@ -80,11 +80,11 @@
|
|
|
80
80
|
font-size: var(--cinder-text-xs);
|
|
81
81
|
}
|
|
82
82
|
|
|
83
|
-
.cinder-fab[data-cinder-size='sm'][data-cinder-
|
|
83
|
+
.cinder-fab[data-cinder-size='sm'][data-cinder-shape='filled'] {
|
|
84
84
|
inline-size: var(--cinder-space-10);
|
|
85
85
|
}
|
|
86
86
|
|
|
87
|
-
.cinder-fab[data-cinder-size='sm'][data-cinder-
|
|
87
|
+
.cinder-fab[data-cinder-size='sm'][data-cinder-shape='extended'] {
|
|
88
88
|
padding-inline: var(--cinder-space-4);
|
|
89
89
|
}
|
|
90
90
|
|
|
@@ -93,11 +93,11 @@
|
|
|
93
93
|
font-size: var(--cinder-text-sm);
|
|
94
94
|
}
|
|
95
95
|
|
|
96
|
-
.cinder-fab[data-cinder-size='md'][data-cinder-
|
|
96
|
+
.cinder-fab[data-cinder-size='md'][data-cinder-shape='filled'] {
|
|
97
97
|
inline-size: var(--cinder-space-12);
|
|
98
98
|
}
|
|
99
99
|
|
|
100
|
-
.cinder-fab[data-cinder-size='md'][data-cinder-
|
|
100
|
+
.cinder-fab[data-cinder-size='md'][data-cinder-shape='extended'] {
|
|
101
101
|
padding-inline: var(--cinder-space-6);
|
|
102
102
|
}
|
|
103
103
|
|
|
@@ -106,51 +106,51 @@
|
|
|
106
106
|
font-size: var(--cinder-text-lg);
|
|
107
107
|
}
|
|
108
108
|
|
|
109
|
-
.cinder-fab[data-cinder-size='lg'][data-cinder-
|
|
109
|
+
.cinder-fab[data-cinder-size='lg'][data-cinder-shape='filled'] {
|
|
110
110
|
inline-size: var(--cinder-space-16);
|
|
111
111
|
}
|
|
112
112
|
|
|
113
|
-
.cinder-fab[data-cinder-size='lg'][data-cinder-
|
|
113
|
+
.cinder-fab[data-cinder-size='lg'][data-cinder-shape='extended'] {
|
|
114
114
|
padding-inline: var(--cinder-space-8);
|
|
115
115
|
}
|
|
116
116
|
|
|
117
117
|
/* ----------------------------------------
|
|
118
|
-
* Color variants
|
|
118
|
+
* Color variants (via variant prop)
|
|
119
119
|
* ---------------------------------------- */
|
|
120
120
|
|
|
121
121
|
/* primary — accent fill with contrast foreground */
|
|
122
|
-
.cinder-fab[data-cinder-
|
|
122
|
+
.cinder-fab[data-cinder-variant='primary'] {
|
|
123
123
|
--_cinder-fab-ring: var(--cinder-ring-on-accent);
|
|
124
124
|
background: var(--cinder-accent);
|
|
125
125
|
color: var(--cinder-accent-contrast);
|
|
126
126
|
}
|
|
127
127
|
|
|
128
|
-
.cinder-fab[data-cinder-
|
|
129
|
-
.cinder-fab[data-cinder-
|
|
128
|
+
.cinder-fab[data-cinder-variant='primary']:disabled,
|
|
129
|
+
.cinder-fab[data-cinder-variant='primary'][aria-disabled='true'] {
|
|
130
130
|
background: var(--cinder-surface-inset);
|
|
131
131
|
color: var(--cinder-text-disabled);
|
|
132
132
|
}
|
|
133
133
|
|
|
134
134
|
/* secondary — surface-raised background with standard text */
|
|
135
|
-
.cinder-fab[data-cinder-
|
|
135
|
+
.cinder-fab[data-cinder-variant='secondary'] {
|
|
136
136
|
background: var(--cinder-surface-raised);
|
|
137
137
|
color: var(--cinder-text);
|
|
138
138
|
}
|
|
139
139
|
|
|
140
|
-
.cinder-fab[data-cinder-
|
|
141
|
-
.cinder-fab[data-cinder-
|
|
140
|
+
.cinder-fab[data-cinder-variant='secondary']:disabled,
|
|
141
|
+
.cinder-fab[data-cinder-variant='secondary'][aria-disabled='true'] {
|
|
142
142
|
background: var(--cinder-surface-inset);
|
|
143
143
|
color: var(--cinder-text-disabled);
|
|
144
144
|
}
|
|
145
145
|
|
|
146
146
|
/* surface — neutral surface color, suited for floating above content */
|
|
147
|
-
.cinder-fab[data-cinder-
|
|
147
|
+
.cinder-fab[data-cinder-variant='surface'] {
|
|
148
148
|
background: var(--cinder-surface);
|
|
149
149
|
color: var(--cinder-text);
|
|
150
150
|
}
|
|
151
151
|
|
|
152
|
-
.cinder-fab[data-cinder-
|
|
153
|
-
.cinder-fab[data-cinder-
|
|
152
|
+
.cinder-fab[data-cinder-variant='surface']:disabled,
|
|
153
|
+
.cinder-fab[data-cinder-variant='surface'][aria-disabled='true'] {
|
|
154
154
|
background: var(--cinder-surface-inset);
|
|
155
155
|
color: var(--cinder-text-disabled);
|
|
156
156
|
}
|
|
@@ -168,15 +168,15 @@
|
|
|
168
168
|
--_cinder-fab-elevation: var(--cinder-shadow-lg);
|
|
169
169
|
}
|
|
170
170
|
|
|
171
|
-
.cinder-fab[data-cinder-
|
|
171
|
+
.cinder-fab[data-cinder-variant='primary']:hover:not(:disabled):not([aria-disabled='true']) {
|
|
172
172
|
background: var(--cinder-accent-hover);
|
|
173
173
|
}
|
|
174
174
|
|
|
175
|
-
.cinder-fab[data-cinder-
|
|
175
|
+
.cinder-fab[data-cinder-variant='secondary']:hover:not(:disabled):not([aria-disabled='true']) {
|
|
176
176
|
background: var(--cinder-surface-hover);
|
|
177
177
|
}
|
|
178
178
|
|
|
179
|
-
.cinder-fab[data-cinder-
|
|
179
|
+
.cinder-fab[data-cinder-variant='surface']:hover:not(:disabled):not([aria-disabled='true']) {
|
|
180
180
|
background: var(--cinder-surface-hover);
|
|
181
181
|
}
|
|
182
182
|
}
|
|
@@ -184,15 +184,15 @@
|
|
|
184
184
|
/* :active placed after hover media so press feedback fires on tap as well.
|
|
185
185
|
Uses the gentler on-fill pressed token so the --cinder-accent-contrast label stays
|
|
186
186
|
AA-legible on the pressed fill (see --cinder-accent-active-on-fill in tokens-base.css). */
|
|
187
|
-
.cinder-fab[data-cinder-
|
|
187
|
+
.cinder-fab[data-cinder-variant='primary']:active:not(:disabled):not([aria-disabled='true']) {
|
|
188
188
|
background: var(--cinder-accent-active-on-fill);
|
|
189
189
|
}
|
|
190
190
|
|
|
191
|
-
.cinder-fab[data-cinder-
|
|
191
|
+
.cinder-fab[data-cinder-variant='secondary']:active:not(:disabled):not([aria-disabled='true']) {
|
|
192
192
|
background: var(--cinder-surface-pressed);
|
|
193
193
|
}
|
|
194
194
|
|
|
195
|
-
.cinder-fab[data-cinder-
|
|
195
|
+
.cinder-fab[data-cinder-variant='surface']:active:not(:disabled):not([aria-disabled='true']) {
|
|
196
196
|
background: var(--cinder-surface-pressed);
|
|
197
197
|
}
|
|
198
198
|
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
"id": "basic",
|
|
8
8
|
"title": "Floating Action Button",
|
|
9
9
|
"description": "A circular primary-action button. Always provide aria-label for icon-only (filled) usage. Wrap in a fixed/sticky container to position it on the page.",
|
|
10
|
-
"code": "<script lang=\"ts\">\n import { FloatingActionButton } from '@lostgradient/cinder/floating-action-button';\n</script>\n\n<div style=\"display: flex; align-items: center; gap: 1.5rem; flex-wrap: wrap;\">\n <!-- Primary filled FAB (default) -->\n <FloatingActionButton aria-label=\"Add item\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n aria-hidden=\"true\"\n >\n <line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\" />\n <line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\" />\n </svg>\n </FloatingActionButton>\n\n <!-- Secondary
|
|
10
|
+
"code": "<script lang=\"ts\">\n import { FloatingActionButton } from '@lostgradient/cinder/floating-action-button';\n</script>\n\n<div style=\"display: flex; align-items: center; gap: 1.5rem; flex-wrap: wrap;\">\n <!-- Primary filled FAB (default) -->\n <FloatingActionButton aria-label=\"Add item\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n aria-hidden=\"true\"\n >\n <line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\" />\n <line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\" />\n </svg>\n </FloatingActionButton>\n\n <!-- Secondary variant -->\n <FloatingActionButton variant=\"secondary\" aria-label=\"Edit\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n aria-hidden=\"true\"\n >\n <path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\" />\n <path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\" />\n </svg>\n </FloatingActionButton>\n\n <!-- Surface variant -->\n <FloatingActionButton variant=\"surface\" aria-label=\"Share\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n aria-hidden=\"true\"\n >\n <circle cx=\"18\" cy=\"5\" r=\"3\" />\n <circle cx=\"6\" cy=\"12\" r=\"3\" />\n <circle cx=\"18\" cy=\"19\" r=\"3\" />\n <line x1=\"8.59\" y1=\"13.51\" x2=\"15.42\" y2=\"17.49\" />\n <line x1=\"15.41\" y1=\"6.51\" x2=\"8.59\" y2=\"10.49\" />\n </svg>\n </FloatingActionButton>\n\n <!-- Extended shape with icon + label -->\n <FloatingActionButton shape=\"extended\" aria-label=\"Compose new message\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n aria-hidden=\"true\"\n >\n <line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\" />\n <line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\" />\n </svg>\n Compose\n </FloatingActionButton>\n\n <!-- Small size -->\n <FloatingActionButton size=\"sm\" aria-label=\"Add small\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n aria-hidden=\"true\"\n >\n <line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\" />\n <line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\" />\n </svg>\n </FloatingActionButton>\n\n <!-- Large size -->\n <FloatingActionButton size=\"lg\" aria-label=\"Add large\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"32\"\n height=\"32\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n aria-hidden=\"true\"\n >\n <line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\" />\n <line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\" />\n </svg>\n </FloatingActionButton>\n\n <!-- Link FAB -->\n <FloatingActionButton href=\"/new\" aria-label=\"Create new item\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n aria-hidden=\"true\"\n >\n <line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\" />\n <line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\" />\n </svg>\n </FloatingActionButton>\n\n <!-- Disabled FAB -->\n <FloatingActionButton disabled aria-label=\"Add (unavailable)\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n aria-hidden=\"true\"\n >\n <line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\" />\n <line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\" />\n </svg>\n </FloatingActionButton>\n</div>\n"
|
|
11
11
|
}
|
|
12
12
|
]
|
|
13
13
|
}
|
|
@@ -13,9 +13,9 @@
|
|
|
13
13
|
*/
|
|
14
14
|
export type {
|
|
15
15
|
FloatingActionButtonProps,
|
|
16
|
+
FloatingActionButtonShape,
|
|
16
17
|
FloatingActionButtonSize,
|
|
17
18
|
FloatingActionButtonVariant,
|
|
18
|
-
FloatingActionButtonColor,
|
|
19
19
|
} from './floating-action-button.types.ts';
|
|
20
20
|
</script>
|
|
21
21
|
|
|
@@ -27,9 +27,9 @@
|
|
|
27
27
|
import type { FloatingActionButtonProps } from './floating-action-button.types.ts';
|
|
28
28
|
|
|
29
29
|
const {
|
|
30
|
-
|
|
30
|
+
shape = 'filled',
|
|
31
31
|
size = 'md',
|
|
32
|
-
|
|
32
|
+
variant = 'primary',
|
|
33
33
|
disabled = false,
|
|
34
34
|
children,
|
|
35
35
|
class: customClassName,
|
|
@@ -52,9 +52,9 @@
|
|
|
52
52
|
const mergedClassName = $derived(classNames('cinder-fab', customClassName));
|
|
53
53
|
|
|
54
54
|
const dataAttributes = $derived({
|
|
55
|
-
'data-cinder-
|
|
55
|
+
'data-cinder-shape': shape,
|
|
56
56
|
'data-cinder-size': size,
|
|
57
|
-
'data-cinder-
|
|
57
|
+
'data-cinder-variant': variant,
|
|
58
58
|
});
|
|
59
59
|
|
|
60
60
|
// Normalize ARIA label props: empty strings suppress accessible name fallback without
|
|
@@ -89,9 +89,9 @@
|
|
|
89
89
|
const hasAriaLabelledBy = resolvedAriaLabelledBy !== undefined;
|
|
90
90
|
|
|
91
91
|
// Filled FABs are icon-only by design — they require an accessible name.
|
|
92
|
-
if (
|
|
92
|
+
if (shape === 'filled' && !hasAriaLabel && !hasAriaLabelledBy) {
|
|
93
93
|
devWarn(
|
|
94
|
-
'[cinder/FloatingActionButton] filled
|
|
94
|
+
'[cinder/FloatingActionButton] filled shape requires aria-label or aria-labelledby — the icon alone does not provide an accessible name.',
|
|
95
95
|
);
|
|
96
96
|
}
|
|
97
97
|
|
|
@@ -2,14 +2,15 @@ import type { Snippet } from 'svelte';
|
|
|
2
2
|
import type { HTMLAnchorAttributes, HTMLButtonAttributes } from 'svelte/elements';
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
|
-
* Visual
|
|
5
|
+
* Visual palette of the FAB.
|
|
6
6
|
*
|
|
7
|
-
* `
|
|
8
|
-
* `
|
|
7
|
+
* - `primary` — uses the primary accent color (solid fill, contrast foreground).
|
|
8
|
+
* - `secondary` — uses the surface-raised background with standard text color.
|
|
9
|
+
* - `surface` — uses the neutral surface color, suited for floating over content.
|
|
9
10
|
*
|
|
10
|
-
* @default `"
|
|
11
|
+
* @default `"primary"`
|
|
11
12
|
*/
|
|
12
|
-
export type FloatingActionButtonVariant = '
|
|
13
|
+
export type FloatingActionButtonVariant = 'primary' | 'secondary' | 'surface';
|
|
13
14
|
|
|
14
15
|
/**
|
|
15
16
|
* Size of the FAB. Controls the diameter (`filled`) or height (`extended`).
|
|
@@ -19,30 +20,29 @@ export type FloatingActionButtonVariant = 'filled' | 'extended';
|
|
|
19
20
|
export type FloatingActionButtonSize = 'sm' | 'md' | 'lg';
|
|
20
21
|
|
|
21
22
|
/**
|
|
22
|
-
*
|
|
23
|
+
* Shape of the FAB.
|
|
23
24
|
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
* - `surface` — uses the neutral surface color, suited for floating over content.
|
|
25
|
+
* `filled` renders a circle with equal width and height — the classic FAB shape.
|
|
26
|
+
* `extended` renders a pill with auto-width that accommodates icon + label side by side.
|
|
27
27
|
*
|
|
28
|
-
* @default `"
|
|
28
|
+
* @default `"filled"`
|
|
29
29
|
*/
|
|
30
|
-
export type
|
|
30
|
+
export type FloatingActionButtonShape = 'filled' | 'extended';
|
|
31
31
|
|
|
32
32
|
type SharedBase = {
|
|
33
|
-
/**
|
|
34
|
-
|
|
33
|
+
/** Shape. `filled` = circle, `extended` = pill with icon + label. */
|
|
34
|
+
shape?: FloatingActionButtonShape;
|
|
35
35
|
/** Size — controls diameter for filled, height for extended. */
|
|
36
36
|
size?: FloatingActionButtonSize;
|
|
37
|
-
/** Color palette. */
|
|
38
|
-
|
|
37
|
+
/** Color palette (primary, secondary, or surface). */
|
|
38
|
+
variant?: FloatingActionButtonVariant;
|
|
39
39
|
/** When true, disables the button and prevents interaction. */
|
|
40
40
|
disabled?: boolean;
|
|
41
41
|
/** Custom class merged with `.cinder-fab`. */
|
|
42
42
|
class?: string;
|
|
43
43
|
/**
|
|
44
|
-
* The icon (or icon + label for extended
|
|
45
|
-
* the FAB renders an icon without visible text — i.e. the `filled`
|
|
44
|
+
* The icon (or icon + label for extended shape). Always provide `aria-label` when
|
|
45
|
+
* the FAB renders an icon without visible text — i.e. the `filled` shape.
|
|
46
46
|
*/
|
|
47
47
|
children?: Snippet;
|
|
48
48
|
};
|
|
@@ -62,7 +62,7 @@ type FloatingActionButtonLink = SharedBase & Omit<HTMLAnchorAttributes, 'class'>
|
|
|
62
62
|
/**
|
|
63
63
|
* Props for the FloatingActionButton component.
|
|
64
64
|
*
|
|
65
|
-
* Icon-only usage (i.e. `
|
|
65
|
+
* Icon-only usage (i.e. `shape="filled"`) requires an accessible name via
|
|
66
66
|
* `aria-label` or `aria-labelledby`. The component emits a dev-mode warning when
|
|
67
67
|
* neither is present.
|
|
68
68
|
*/
|
|
@@ -74,10 +74,10 @@ export type FloatingActionButtonProps = FloatingActionButtonOnly | FloatingActio
|
|
|
74
74
|
*/
|
|
75
75
|
export interface FloatingActionButtonSchemaProps {
|
|
76
76
|
/**
|
|
77
|
-
*
|
|
77
|
+
* Shape. `filled` = circle, `extended` = pill.
|
|
78
78
|
* @default "filled"
|
|
79
79
|
*/
|
|
80
|
-
|
|
80
|
+
shape?: FloatingActionButtonShape;
|
|
81
81
|
/**
|
|
82
82
|
* Size of the FAB.
|
|
83
83
|
* @default "md"
|
|
@@ -87,7 +87,7 @@ export interface FloatingActionButtonSchemaProps {
|
|
|
87
87
|
* Color palette.
|
|
88
88
|
* @default "primary"
|
|
89
89
|
*/
|
|
90
|
-
|
|
90
|
+
variant?: FloatingActionButtonVariant;
|
|
91
91
|
/**
|
|
92
92
|
* When true, disables the button and prevents interaction.
|
|
93
93
|
* @default false
|
|
@@ -3,8 +3,8 @@ import FloatingActionButton from './floating-action-button.svelte';
|
|
|
3
3
|
|
|
4
4
|
export default FloatingActionButton;
|
|
5
5
|
export type {
|
|
6
|
-
FloatingActionButtonColor,
|
|
7
6
|
FloatingActionButtonProps,
|
|
7
|
+
FloatingActionButtonShape,
|
|
8
8
|
FloatingActionButtonSize,
|
|
9
9
|
FloatingActionButtonVariant,
|
|
10
10
|
} from './floating-action-button.types.ts';
|
|
@@ -30,19 +30,9 @@
|
|
|
30
30
|
cursor: not-allowed;
|
|
31
31
|
}
|
|
32
32
|
|
|
33
|
-
/*
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
.cinder-form-field__required {
|
|
38
|
-
display: inline-block;
|
|
39
|
-
width: 6px;
|
|
40
|
-
height: 6px;
|
|
41
|
-
border-radius: 50%;
|
|
42
|
-
background-color: var(--cinder-danger);
|
|
43
|
-
flex-shrink: 0;
|
|
44
|
-
align-self: center;
|
|
45
|
-
}
|
|
33
|
+
/* The required marker is the shared `.cinder-_required-marker` partial
|
|
34
|
+
(styles/components/_field-label.css) so the asterisk can never drift
|
|
35
|
+
between FormField, Label, and the inline control labels. */
|
|
46
36
|
|
|
47
37
|
/* ----------------------------------------
|
|
48
38
|
* Supporting text
|
|
@@ -79,7 +79,10 @@
|
|
|
79
79
|
>
|
|
80
80
|
{label}
|
|
81
81
|
{#if required}
|
|
82
|
-
|
|
82
|
+
<!-- Visible asterisk conveys "required" by shape, not color alone (WCAG
|
|
83
|
+
1.4.1). aria-hidden so the accessible name stays clean — the field's
|
|
84
|
+
own `required`/`aria-required` attribute is the single AT signal. -->
|
|
85
|
+
<span class="cinder-_required-marker" aria-hidden="true">*</span>
|
|
83
86
|
{/if}
|
|
84
87
|
</label>
|
|
85
88
|
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "../../schemas/examples.schema.json",
|
|
3
|
+
"component": "image",
|
|
4
|
+
"import": "@lostgradient/cinder/image",
|
|
5
|
+
"examples": [
|
|
6
|
+
{
|
|
7
|
+
"id": "basic",
|
|
8
|
+
"title": "Basic image",
|
|
9
|
+
"description": "Responsive image with lazy loading and an explicit aspect ratio.",
|
|
10
|
+
"code": "<script lang=\"ts\">\n import { Image } from '@lostgradient/cinder/image';\n</script>\n\n<Image\n src=\"https://picsum.photos/seed/cinder/600/338\"\n alt=\"A randomly selected placeholder photograph\"\n ratio=\"16/9\"\n width={600}\n height={338}\n/>\n"
|
|
11
|
+
}
|
|
12
|
+
]
|
|
13
|
+
}
|
|
@@ -16,21 +16,22 @@ Single-line text input with support for labels, addons, validation states, and h
|
|
|
16
16
|
|
|
17
17
|
<!-- generated:props:start -->
|
|
18
18
|
|
|
19
|
-
| Prop | Type | Required | Default | Description
|
|
20
|
-
| --------------------- | --------------------------------------------------------------------------------------------------- | -------- | ------- |
|
|
21
|
-
| `description` | `string` | no | — | Helper text rendered below the input and associated via `aria-describedby`.
|
|
22
|
-
| `disabled` | `boolean` | no | — | When true, disables the input, matching the native `disabled` attribute.
|
|
23
|
-
| `error` | `string` | no | — | Error message rendered below the input; also sets `aria-invalid` on the input.
|
|
24
|
-
| `id` | `string` | yes | — | HTML `id` for the underlying input, used to associate the `<label>` and ARIA attributes. Required.
|
|
25
|
-
| `label` | `string` | no | — | Visible label text rendered above the input and linked via `for`/`id`.
|
|
26
|
-
| `leadingInteractive` | `boolean` | no | — | When true, the leading adornment is interactive and included in the accessibility tree. Default `false`.
|
|
27
|
-
| `required` | `boolean` | no | — | Marks the input as required for form validation, matching the native `required` attribute.
|
|
28
|
-
| `trailingInteractive` | `boolean` | no | — | When true, the trailing adornment is interactive and included in the accessibility tree. Default `false`.
|
|
29
|
-
| `type` | `"number"` \| `"date"` \| `"email"` \| `"password"` \| `"search"` \| `"tel"` \| `"text"` \| `"url"` | no | — | Input type controlling the browser's built-in validation and keyboard. Default `"text"`.
|
|
30
|
-
| `class` | `(opaque)` | no | — | A prop whose shape is not captured by the JSON schema; see the component types for the exact signature.
|
|
31
|
-
| `leading` | `(opaque)` | no | — | A function or snippet prop. Its shape is not captured by the JSON schema; see the component types for the exact signature.
|
|
32
|
-
| `
|
|
33
|
-
| `
|
|
19
|
+
| Prop | Type | Required | Default | Description |
|
|
20
|
+
| --------------------- | --------------------------------------------------------------------------------------------------- | -------- | ------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
21
|
+
| `description` | `string` | no | — | Helper text rendered below the input and associated via `aria-describedby`. |
|
|
22
|
+
| `disabled` | `boolean` | no | — | When true, disables the input, matching the native `disabled` attribute. |
|
|
23
|
+
| `error` | `string` | no | — | Error message rendered below the input; also sets `aria-invalid` on the input. |
|
|
24
|
+
| `id` | `string` | yes | — | HTML `id` for the underlying input, used to associate the `<label>` and ARIA attributes. Required. |
|
|
25
|
+
| `label` | `string` | no | — | Visible label text rendered above the input and linked via `for`/`id`. |
|
|
26
|
+
| `leadingInteractive` | `boolean` | no | — | When true, the leading adornment is interactive and included in the accessibility tree. Default `false`. |
|
|
27
|
+
| `required` | `boolean` | no | — | Marks the input as required for form validation, matching the native `required` attribute. |
|
|
28
|
+
| `trailingInteractive` | `boolean` | no | — | When true, the trailing adornment is interactive and included in the accessibility tree. Default `false`. |
|
|
29
|
+
| `type` | `"number"` \| `"date"` \| `"email"` \| `"password"` \| `"search"` \| `"tel"` \| `"text"` \| `"url"` | no | — | Input type controlling the browser's built-in validation and keyboard. Default `"text"`. |
|
|
30
|
+
| `class` | `(opaque)` | no | — | A prop whose shape is not captured by the JSON schema; see the component types for the exact signature. |
|
|
31
|
+
| `leading` | `(opaque)` | no | — | A function or snippet prop. Its shape is not captured by the JSON schema; see the component types for the exact signature. |
|
|
32
|
+
| `onValueChange` | `(opaque)` | no | — | Intercept a proposed value before the bindable value is written. Return a replacement value to transform it. Not expressible in JSON Schema; see the component types for the signature. |
|
|
33
|
+
| `trailing` | `(opaque)` | no | — | A function or snippet prop. Its shape is not captured by the JSON schema; see the component types for the exact signature. |
|
|
34
|
+
| `value` | `(opaque)` | yes | — | Bindable current text value of the input. Not expressible in JSON Schema; see the component types for the signature. |
|
|
34
35
|
|
|
35
36
|
<!-- generated:props:end -->
|
|
36
37
|
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
"id": "sign-in",
|
|
14
14
|
"title": "Sign-in composition",
|
|
15
15
|
"description": "Composition of FormField + Input + Button with a top-of-form Alert auth-error region. Demonstrates the required autocomplete values and the assertive announcement pattern via role=\"alert\".",
|
|
16
|
-
"code": "<script lang=\"ts\">\n import { Alert } from '@lostgradient/cinder/alert';\n import { Button } from '@lostgradient/cinder/button';\n import { FormField } from '@lostgradient/cinder/form-field';\n import { Input } from '@lostgradient/cinder/input';\n let email = $state('');\n let password = $state('');\n let authError = $state<string | undefined>(undefined);\n let submitting = $state(false);\n\n function handleSignIn() {\n if (submitting) return;\n // Clear any prior error so a re-submit re-announces by re-mounting the Alert\n // rather than mutating its text (assistive tech announces on mount of role=\"alert\").\n authError = undefined;\n submitting = true;\n\n // Static example: simulate an auth failure. A real implementation would\n // POST { email, password } and redirect on success.\n setTimeout(() => {\n authError = 'Email or password is incorrect.';\n submitting = false;\n }, 600);\n }\n</script>\n\n<form\n novalidate\n aria-labelledby=\"sign-in-heading\"\n style=\"display: flex; flex-direction: column; gap: 1rem;\"\n onsubmit={(event) => {\n event.preventDefault();\n handleSignIn();\n }}\n>\n <h2 id=\"sign-in-heading\">Sign in</h2>\n\n <!--\n Top-of-form auth-error region.\n Alert's role=\"alert\" implies aria-live=\"assertive\" and aria-atomic=\"true\".\n We intentionally do NOT add an explicit aria-live attribute (see alert.test.ts:\n \"has role=alert on root element and does not set an explicit aria-live\").\n Mounting the Alert in response to submit triggers the assertive announcement.\n -->\n {#if authError}\n <Alert variant=\"
|
|
16
|
+
"code": "<script lang=\"ts\">\n import { Alert } from '@lostgradient/cinder/alert';\n import { Button } from '@lostgradient/cinder/button';\n import { FormField } from '@lostgradient/cinder/form-field';\n import { Input } from '@lostgradient/cinder/input';\n let email = $state('');\n let password = $state('');\n let authError = $state<string | undefined>(undefined);\n let submitting = $state(false);\n\n function handleSignIn() {\n if (submitting) return;\n // Clear any prior error so a re-submit re-announces by re-mounting the Alert\n // rather than mutating its text (assistive tech announces on mount of role=\"alert\").\n authError = undefined;\n submitting = true;\n\n // Static example: simulate an auth failure. A real implementation would\n // POST { email, password } and redirect on success.\n setTimeout(() => {\n authError = 'Email or password is incorrect.';\n submitting = false;\n }, 600);\n }\n</script>\n\n<form\n novalidate\n aria-labelledby=\"sign-in-heading\"\n style=\"display: flex; flex-direction: column; gap: 1rem;\"\n onsubmit={(event) => {\n event.preventDefault();\n handleSignIn();\n }}\n>\n <h2 id=\"sign-in-heading\">Sign in</h2>\n\n <!--\n Top-of-form auth-error region.\n Alert's role=\"alert\" implies aria-live=\"assertive\" and aria-atomic=\"true\".\n We intentionally do NOT add an explicit aria-live attribute (see alert.test.ts:\n \"has role=alert on root element and does not set an explicit aria-live\").\n Mounting the Alert in response to submit triggers the assertive announcement.\n -->\n {#if authError}\n <Alert variant=\"danger\">\n {authError}\n </Alert>\n {/if}\n\n <FormField id=\"sign-in-email\" label=\"Email\" required>\n <!-- autocomplete=\"email\" — the identifier is an email address.\n Use \"username\" instead when the field collects an opaque handle. -->\n <Input\n id=\"sign-in-email\"\n type=\"email\"\n bind:value={email}\n autocomplete=\"email\"\n required\n placeholder=\"you@example.com\"\n />\n </FormField>\n\n <FormField id=\"sign-in-password\" label=\"Password\" required>\n <!-- autocomplete=\"current-password\" — required for password managers to\n recognize this as a sign-in form and offer saved credentials. -->\n <Input\n id=\"sign-in-password\"\n type=\"password\"\n bind:value={password}\n autocomplete=\"current-password\"\n required\n />\n </FormField>\n\n <Button type=\"submit\" variant=\"primary\" loading={submitting}>\n {submitting ? 'Signing in…' : 'Sign in'}\n </Button>\n</form>\n"
|
|
17
17
|
},
|
|
18
18
|
{
|
|
19
19
|
"id": "types",
|