@lostgradient/cinder 0.1.1 → 0.2.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 +62 -0
- package/README.md +163 -0
- package/components.json +390 -3
- package/dist/_internal/chart/chart-focus-ring.d.ts +57 -0
- package/dist/_internal/chart/chart-utilities.d.ts +2 -0
- package/dist/_internal/chart/heatmap-utilities.d.ts +60 -0
- package/dist/components/accordion/index.js +14 -1
- package/dist/components/alert/alert.schema.js +3 -3
- package/dist/components/alert/alert.types.d.ts +3 -2
- package/dist/components/alert/index.js +3 -2
- package/dist/components/alert-dialog/index.js +11 -2
- package/dist/components/area-chart/area-chart.css +57 -7
- package/dist/components/area-chart/index.js +283 -40
- package/dist/components/avatar-group/avatar-group.css +2 -3
- package/dist/components/badge/badge.css +17 -0
- package/dist/components/badge/badge.schema.js +6 -1
- package/dist/components/badge/badge.types.d.ts +7 -0
- package/dist/components/badge/index.js +4 -2
- package/dist/components/bar-chart/bar-chart.css +57 -7
- package/dist/components/bar-chart/index.js +233 -45
- package/dist/components/button/button.css +5 -3
- package/dist/components/button/index.js +11 -2
- package/dist/components/capability-gate/capability-gate.css +131 -0
- package/dist/components/capability-gate/capability-gate.schema.d.ts +3 -0
- package/dist/components/capability-gate/capability-gate.schema.js +128 -0
- package/dist/components/capability-gate/capability-gate.svelte.d.ts +19 -0
- package/dist/components/capability-gate/capability-gate.types.d.ts +70 -0
- package/dist/components/capability-gate/capability-gate.variables.d.ts +2 -0
- package/dist/components/capability-gate/capability-gate.variables.js +61 -0
- package/dist/components/capability-gate/index.d.ts +5 -0
- package/dist/components/capability-gate/index.js +285 -0
- package/dist/components/card/card.css +4 -0
- package/dist/components/card/card.schema.js +5 -1
- package/dist/components/card/card.svelte.d.ts +1 -1
- package/dist/components/card/card.types.d.ts +4 -0
- package/dist/components/card/index.d.ts +1 -1
- package/dist/components/card/index.js +8 -4
- package/dist/components/chat/index.css +2 -2
- package/dist/components/chat/index.js +159 -81
- package/dist/components/choice-grid/choice-grid-context.d.ts +23 -0
- package/dist/components/choice-grid/choice-grid.css +27 -0
- package/dist/components/choice-grid/choice-grid.schema.d.ts +3 -0
- package/dist/components/choice-grid/choice-grid.schema.js +121 -0
- package/dist/components/choice-grid/choice-grid.svelte.d.ts +20 -0
- package/dist/components/choice-grid/choice-grid.types.d.ts +122 -0
- package/dist/components/choice-grid/choice-grid.variables.d.ts +2 -0
- package/dist/components/choice-grid/choice-grid.variables.js +61 -0
- package/dist/components/choice-grid/index.d.ts +13 -0
- package/dist/components/choice-grid/index.js +466 -0
- package/dist/components/choice-grid-item/choice-grid-item.css +139 -0
- package/dist/components/choice-grid-item/choice-grid-item.schema.d.ts +3 -0
- package/dist/components/choice-grid-item/choice-grid-item.schema.js +93 -0
- package/dist/components/choice-grid-item/choice-grid-item.svelte.d.ts +17 -0
- package/dist/components/choice-grid-item/choice-grid-item.types.d.ts +24 -0
- package/dist/components/choice-grid-item/choice-grid-item.variables.d.ts +2 -0
- package/dist/components/choice-grid-item/choice-grid-item.variables.js +61 -0
- package/dist/components/choice-grid-item/index.d.ts +5 -0
- package/dist/components/choice-grid-item/index.js +203 -0
- package/dist/components/color-field/color-field.css +6 -9
- package/dist/components/color-picker/color-picker.css +31 -24
- package/dist/components/color-swatch-picker/color-swatch-picker.css +6 -9
- package/dist/components/confirm-dialog/index.js +11 -2
- package/dist/components/context-menu/index.js +114 -43
- package/dist/components/context-menu-trigger/index.js +6 -4
- package/dist/components/data-table/data-table.css +30 -0
- package/dist/components/data-table/data-table.schema.d.ts +3 -0
- package/dist/components/data-table/data-table.schema.js +103 -0
- package/dist/components/data-table/data-table.svelte.d.ts +39 -0
- package/dist/components/data-table/data-table.types.d.ts +86 -0
- package/dist/components/data-table/data-table.variables.d.ts +2 -0
- package/dist/components/data-table/data-table.variables.js +61 -0
- package/dist/components/data-table/index.d.ts +5 -0
- package/dist/components/data-table/index.js +591 -0
- package/dist/components/diff-viewer/index.js +14 -3
- package/dist/components/dropdown/index.js +115 -46
- package/dist/components/dropdown-item/dropdown-item.schema.js +13 -1
- package/dist/components/dropdown-item/dropdown-item.svelte.d.ts +1 -1
- package/dist/components/dropdown-item/dropdown-item.types.d.ts +46 -2
- package/dist/components/dropdown-item/index.d.ts +1 -1
- package/dist/components/dropdown-item/index.js +97 -28
- package/dist/components/floating-action-button/floating-action-button.css +4 -2
- package/dist/components/json-schema-editor/index.js +29 -4
- package/dist/components/keyboard-shortcuts/index.d.ts +5 -0
- package/dist/components/keyboard-shortcuts/index.js +238 -0
- package/dist/components/keyboard-shortcuts/keyboard-shortcuts.css +84 -0
- package/dist/components/keyboard-shortcuts/keyboard-shortcuts.schema.d.ts +3 -0
- package/dist/components/keyboard-shortcuts/keyboard-shortcuts.schema.js +87 -0
- package/dist/components/keyboard-shortcuts/keyboard-shortcuts.svelte.d.ts +17 -0
- package/dist/components/keyboard-shortcuts/keyboard-shortcuts.types.d.ts +42 -0
- package/dist/components/keyboard-shortcuts/keyboard-shortcuts.variables.d.ts +2 -0
- package/dist/components/keyboard-shortcuts/keyboard-shortcuts.variables.js +61 -0
- package/dist/components/line-chart/index.js +283 -40
- package/dist/components/line-chart/line-chart.css +57 -8
- package/dist/components/markdown-editor/index.js +129 -51
- package/dist/components/matrix-chart/index.d.ts +5 -0
- package/dist/components/matrix-chart/index.js +1232 -0
- package/dist/components/matrix-chart/matrix-chart.css +50 -0
- package/dist/components/matrix-chart/matrix-chart.schema.d.ts +3 -0
- package/dist/components/matrix-chart/matrix-chart.schema.js +123 -0
- package/dist/components/matrix-chart/matrix-chart.svelte.d.ts +20 -0
- package/dist/components/matrix-chart/matrix-chart.types.d.ts +52 -0
- package/dist/components/matrix-chart/matrix-chart.variables.d.ts +2 -0
- package/dist/components/matrix-chart/matrix-chart.variables.js +61 -0
- package/dist/components/media-controls/index.d.ts +5 -0
- package/dist/components/media-controls/index.js +338 -0
- package/dist/components/media-controls/media-controls.css +112 -0
- package/dist/components/media-controls/media-controls.schema.d.ts +3 -0
- package/dist/components/media-controls/media-controls.schema.js +125 -0
- package/dist/components/media-controls/media-controls.svelte.d.ts +18 -0
- package/dist/components/media-controls/media-controls.types.d.ts +77 -0
- package/dist/components/media-controls/media-controls.variables.d.ts +2 -0
- package/dist/components/media-controls/media-controls.variables.js +61 -0
- package/dist/components/navigation-bar/navigation-bar.schema.js +5 -5
- package/dist/components/navigation-bar/navigation-bar.types.d.ts +2 -1
- package/dist/components/pricing-card/index.d.ts +5 -0
- package/dist/components/pricing-card/index.js +406 -0
- package/dist/components/pricing-card/pricing-card.css +173 -0
- package/dist/components/pricing-card/pricing-card.schema.d.ts +3 -0
- package/dist/components/pricing-card/pricing-card.schema.js +100 -0
- package/dist/components/pricing-card/pricing-card.svelte.d.ts +18 -0
- package/dist/components/pricing-card/pricing-card.types.d.ts +47 -0
- package/dist/components/pricing-card/pricing-card.variables.d.ts +2 -0
- package/dist/components/pricing-card/pricing-card.variables.js +61 -0
- package/dist/components/review-editor/index.js +212 -132
- package/dist/components/share-card/index.d.ts +5 -0
- package/dist/components/share-card/index.js +446 -0
- package/dist/components/share-card/share-card.css +115 -0
- package/dist/components/share-card/share-card.schema.d.ts +3 -0
- package/dist/components/share-card/share-card.schema.js +113 -0
- package/dist/components/share-card/share-card.svelte.d.ts +18 -0
- package/dist/components/share-card/share-card.types.d.ts +66 -0
- package/dist/components/share-card/share-card.variables.d.ts +2 -0
- package/dist/components/share-card/share-card.variables.js +61 -0
- package/dist/components/shortcut-hint/index.d.ts +5 -0
- package/dist/components/shortcut-hint/index.js +197 -0
- package/dist/components/shortcut-hint/shortcut-hint.css +26 -0
- package/dist/components/shortcut-hint/shortcut-hint.schema.d.ts +3 -0
- package/dist/components/shortcut-hint/shortcut-hint.schema.js +96 -0
- package/dist/components/shortcut-hint/shortcut-hint.svelte.d.ts +17 -0
- package/dist/components/shortcut-hint/shortcut-hint.types.d.ts +33 -0
- package/dist/components/shortcut-hint/shortcut-hint.variables.d.ts +2 -0
- package/dist/components/shortcut-hint/shortcut-hint.variables.js +61 -0
- package/dist/components/skip-link/index.d.ts +4 -0
- package/dist/components/skip-link/index.js +180 -0
- package/dist/components/skip-link/skip-link.schema.d.ts +3 -0
- package/dist/components/skip-link/skip-link.schema.js +76 -0
- package/dist/components/skip-link/skip-link.svelte.d.ts +19 -0
- package/dist/components/skip-link/skip-link.types.d.ts +38 -0
- package/dist/components/skip-link/skip-link.variables.d.ts +2 -0
- package/dist/components/skip-link/skip-link.variables.js +61 -0
- package/dist/components/spectrogram/index.d.ts +5 -0
- package/dist/components/spectrogram/index.js +1156 -0
- package/dist/components/spectrogram/spectrogram.css +43 -0
- package/dist/components/spectrogram/spectrogram.schema.d.ts +3 -0
- package/dist/components/spectrogram/spectrogram.schema.js +103 -0
- package/dist/components/spectrogram/spectrogram.svelte.d.ts +21 -0
- package/dist/components/spectrogram/spectrogram.types.d.ts +60 -0
- package/dist/components/spectrogram/spectrogram.variables.d.ts +2 -0
- package/dist/components/spectrogram/spectrogram.variables.js +61 -0
- package/dist/components/spectrum-chart/index.d.ts +5 -0
- package/dist/components/spectrum-chart/index.js +1056 -0
- package/dist/components/spectrum-chart/spectrum-chart.css +49 -0
- package/dist/components/spectrum-chart/spectrum-chart.schema.d.ts +3 -0
- package/dist/components/spectrum-chart/spectrum-chart.schema.js +97 -0
- package/dist/components/spectrum-chart/spectrum-chart.svelte.d.ts +21 -0
- package/dist/components/spectrum-chart/spectrum-chart.types.d.ts +41 -0
- package/dist/components/spectrum-chart/spectrum-chart.variables.d.ts +2 -0
- package/dist/components/spectrum-chart/spectrum-chart.variables.js +61 -0
- package/dist/components/status-dot/status-dot.css +8 -0
- package/dist/components/status-dot/status-dot.schema.js +3 -3
- package/dist/components/status-dot/status-dot.types.d.ts +5 -2
- package/dist/components/subscription-badge/index.d.ts +5 -0
- package/dist/components/subscription-badge/index.js +383 -0
- package/dist/components/subscription-badge/subscription-badge.css +18 -0
- package/dist/components/subscription-badge/subscription-badge.schema.d.ts +3 -0
- package/dist/components/subscription-badge/subscription-badge.schema.js +77 -0
- package/dist/components/subscription-badge/subscription-badge.svelte.d.ts +19 -0
- package/dist/components/subscription-badge/subscription-badge.types.d.ts +28 -0
- package/dist/components/subscription-badge/subscription-badge.variables.d.ts +2 -0
- package/dist/components/subscription-badge/subscription-badge.variables.js +61 -0
- package/dist/components/tab/index.js +14 -1
- package/dist/components/table/index.js +26 -17
- package/dist/components/table-cell/index.js +18 -9
- package/dist/components/table-cell/table-cell.schema.js +5 -1
- package/dist/components/table-cell/table-cell.types.d.ts +16 -1
- package/dist/components/tabs/index.js +14 -1
- package/dist/components/waveform/index.d.ts +5 -0
- package/dist/components/waveform/index.js +1075 -0
- package/dist/components/waveform/waveform.css +53 -0
- package/dist/components/waveform/waveform.schema.d.ts +3 -0
- package/dist/components/waveform/waveform.schema.js +98 -0
- package/dist/components/waveform/waveform.svelte.d.ts +20 -0
- package/dist/components/waveform/waveform.types.d.ts +42 -0
- package/dist/components/waveform/waveform.variables.d.ts +2 -0
- package/dist/components/waveform/waveform.variables.js +61 -0
- package/dist/index.d.ts +33 -2
- package/dist/index.js +144 -115
- package/dist/server/components/accordion/index.js +14 -1
- package/dist/server/components/alert/alert.schema.js +3 -3
- package/dist/server/components/alert/index.js +3 -2
- package/dist/server/components/alert-dialog/index.js +12 -3
- package/dist/server/components/area-chart/index.css +50 -3
- package/dist/server/components/area-chart/index.js +181 -2
- package/dist/server/components/avatar-group/index.css +1 -1
- package/dist/server/components/badge/badge.schema.js +6 -1
- package/dist/server/components/badge/index.css +4 -0
- package/dist/server/components/badge/index.js +3 -1
- package/dist/server/components/bar-chart/index.css +50 -3
- package/dist/server/components/bar-chart/index.js +166 -2
- package/dist/server/components/button/index.css +1 -1
- package/dist/server/components/button/index.js +12 -3
- package/dist/server/components/capability-gate/capability-gate.schema.js +110 -0
- package/dist/server/components/capability-gate/capability-gate.variables.js +43 -0
- package/dist/server/components/capability-gate/index.css +121 -0
- package/dist/server/components/capability-gate/index.js +168 -0
- package/dist/server/components/card/card.schema.js +5 -1
- package/dist/server/components/card/index.css +9 -1
- package/dist/server/components/card/index.js +3 -2
- package/dist/server/components/chat/index.css +2 -2
- package/dist/server/components/chat/index.js +78 -19
- package/dist/server/components/choice-grid/choice-grid.schema.js +103 -0
- package/dist/server/components/choice-grid/choice-grid.variables.js +43 -0
- package/dist/server/components/choice-grid/index.css +103 -0
- package/dist/server/components/choice-grid/index.js +383 -0
- package/dist/server/components/choice-grid-item/choice-grid-item.schema.js +75 -0
- package/dist/server/components/choice-grid-item/choice-grid-item.variables.js +43 -0
- package/dist/server/components/choice-grid-item/index.css +86 -0
- package/dist/server/components/choice-grid-item/index.js +139 -0
- package/dist/server/components/color-field/index.css +2 -4
- package/dist/server/components/color-picker/index.css +14 -10
- package/dist/server/components/color-swatch-picker/index.css +2 -4
- package/dist/server/components/confirm-dialog/index.js +12 -3
- package/dist/server/components/context-menu/index.js +72 -20
- package/dist/server/components/context-menu-trigger/index.js +6 -4
- package/dist/server/components/data-table/data-table.schema.js +85 -0
- package/dist/server/components/data-table/data-table.variables.js +43 -0
- package/dist/server/components/data-table/index.css +182 -0
- package/dist/server/components/data-table/index.js +469 -0
- package/dist/server/components/diff-viewer/index.js +14 -3
- package/dist/server/components/dropdown/index.js +67 -17
- package/dist/server/components/dropdown-item/dropdown-item.schema.js +13 -1
- package/dist/server/components/dropdown-item/index.js +67 -17
- package/dist/server/components/floating-action-button/index.css +1 -1
- package/dist/server/components/json-schema-editor/index.js +29 -4
- package/dist/server/components/keyboard-shortcuts/index.css +86 -0
- package/dist/server/components/keyboard-shortcuts/index.js +149 -0
- package/dist/server/components/keyboard-shortcuts/keyboard-shortcuts.schema.js +69 -0
- package/dist/server/components/keyboard-shortcuts/keyboard-shortcuts.variables.js +43 -0
- package/dist/server/components/line-chart/index.css +50 -3
- package/dist/server/components/line-chart/index.js +181 -2
- package/dist/server/components/markdown-editor/index.js +78 -19
- package/dist/server/components/matrix-chart/index.css +52 -0
- package/dist/server/components/matrix-chart/index.js +1026 -0
- package/dist/server/components/matrix-chart/matrix-chart.schema.js +105 -0
- package/dist/server/components/matrix-chart/matrix-chart.variables.js +43 -0
- package/dist/server/components/media-controls/index.css +109 -0
- package/dist/server/components/media-controls/index.js +192 -0
- package/dist/server/components/media-controls/media-controls.schema.js +107 -0
- package/dist/server/components/media-controls/media-controls.variables.js +43 -0
- package/dist/server/components/navigation-bar/navigation-bar.schema.js +5 -5
- package/dist/server/components/pricing-card/index.css +131 -0
- package/dist/server/components/pricing-card/index.js +258 -0
- package/dist/server/components/pricing-card/pricing-card.schema.js +82 -0
- package/dist/server/components/pricing-card/pricing-card.variables.js +43 -0
- package/dist/server/components/review-editor/index.css +2 -2
- package/dist/server/components/review-editor/index.js +80 -19
- package/dist/server/components/share-card/index.css +113 -0
- package/dist/server/components/share-card/index.js +270 -0
- package/dist/server/components/share-card/share-card.schema.js +95 -0
- package/dist/server/components/share-card/share-card.variables.js +43 -0
- package/dist/server/components/shortcut-hint/index.css +28 -0
- package/dist/server/components/shortcut-hint/index.js +134 -0
- package/dist/server/components/shortcut-hint/shortcut-hint.schema.js +78 -0
- package/dist/server/components/shortcut-hint/shortcut-hint.variables.js +43 -0
- package/dist/server/components/skip-link/index.js +141 -0
- package/dist/server/components/skip-link/skip-link.schema.js +58 -0
- package/dist/server/components/skip-link/skip-link.variables.js +43 -0
- package/dist/server/components/spectrogram/index.css +45 -0
- package/dist/server/components/spectrogram/index.js +970 -0
- package/dist/server/components/spectrogram/spectrogram.schema.js +85 -0
- package/dist/server/components/spectrogram/spectrogram.variables.js +43 -0
- package/dist/server/components/spectrum-chart/index.css +51 -0
- package/dist/server/components/spectrum-chart/index.js +871 -0
- package/dist/server/components/spectrum-chart/spectrum-chart.schema.js +79 -0
- package/dist/server/components/spectrum-chart/spectrum-chart.variables.js +43 -0
- package/dist/server/components/status-dot/index.css +8 -0
- package/dist/server/components/status-dot/status-dot.schema.js +3 -3
- package/dist/server/components/subscription-badge/index.css +2 -0
- package/dist/server/components/subscription-badge/index.js +339 -0
- package/dist/server/components/subscription-badge/subscription-badge.schema.js +59 -0
- package/dist/server/components/subscription-badge/subscription-badge.variables.js +43 -0
- package/dist/server/components/tab/index.js +14 -1
- package/dist/server/components/table/index.js +13 -8
- package/dist/server/components/table-cell/index.js +13 -8
- package/dist/server/components/table-cell/table-cell.schema.js +5 -1
- package/dist/server/components/tabs/index.js +14 -1
- package/dist/server/components/waveform/index.css +55 -0
- package/dist/server/components/waveform/index.js +907 -0
- package/dist/server/components/waveform/waveform.schema.js +80 -0
- package/dist/server/components/waveform/waveform.variables.js +43 -0
- package/dist/server/index.css +1137 -55
- package/dist/server/index.js +4225 -1750
- package/package.json +380 -2
- package/src/_internal/chart/chart-focus-ring.ts +209 -0
- package/src/_internal/chart/chart-utilities.ts +4 -0
- package/src/_internal/chart/heatmap-utilities.ts +159 -0
- package/src/components/accordion/accordion.examples.json +1 -0
- package/src/components/alert/README.md +5 -5
- package/src/components/alert/alert.schema.json +2 -2
- package/src/components/alert/alert.schema.ts +3 -2
- package/src/components/alert/alert.svelte +5 -1
- package/src/components/alert/alert.types.ts +3 -2
- package/src/components/area-chart/README.md +62 -0
- package/src/components/area-chart/area-chart.css +57 -7
- package/src/components/area-chart/area-chart.svelte +128 -10
- package/src/components/avatar-group/avatar-group.css +2 -3
- package/src/components/avatar-group/avatar-group.examples.json +1 -0
- package/src/components/backdrop/README.md +56 -0
- package/src/components/badge/README.md +6 -5
- package/src/components/badge/badge.css +17 -0
- package/src/components/badge/badge.schema.json +5 -0
- package/src/components/badge/badge.schema.ts +6 -0
- package/src/components/badge/badge.svelte +2 -0
- package/src/components/badge/badge.types.ts +7 -0
- package/src/components/bar-chart/README.md +65 -0
- package/src/components/bar-chart/bar-chart.css +57 -7
- package/src/components/bar-chart/bar-chart.svelte +94 -13
- package/src/components/button/button.css +5 -3
- package/src/components/button/button.examples.json +1 -0
- package/src/components/button/button.svelte +15 -0
- package/src/components/capability-gate/README.md +60 -0
- package/src/components/capability-gate/capability-gate.css +131 -0
- package/src/components/capability-gate/capability-gate.examples.json +19 -0
- package/src/components/capability-gate/capability-gate.schema.json +68 -0
- package/src/components/capability-gate/capability-gate.schema.ts +72 -0
- package/src/components/capability-gate/capability-gate.svelte +186 -0
- package/src/components/capability-gate/capability-gate.types.ts +83 -0
- package/src/components/capability-gate/capability-gate.variables.json +1 -0
- package/src/components/capability-gate/capability-gate.variables.ts +3 -0
- package/src/components/capability-gate/index.ts +10 -0
- package/src/components/card/README.md +1 -0
- package/src/components/card/card.css +4 -0
- package/src/components/card/card.examples.json +6 -0
- package/src/components/card/card.schema.json +4 -0
- package/src/components/card/card.schema.ts +5 -0
- package/src/components/card/card.svelte +9 -2
- package/src/components/card/card.types.ts +4 -0
- package/src/components/card/index.ts +1 -1
- package/src/components/chat/README.md +81 -0
- package/src/components/chat/container/chat-jump-controls.svelte +12 -9
- package/src/components/chat/input/chat-input.svelte +7 -8
- package/src/components/chat/message/chat-message.svelte +15 -20
- package/src/components/chat/message/tool-call-group.svelte +10 -4
- package/src/components/choice-grid/README.md +66 -0
- package/src/components/choice-grid/choice-grid-context.ts +30 -0
- package/src/components/choice-grid/choice-grid.css +27 -0
- package/src/components/choice-grid/choice-grid.examples.json +31 -0
- package/src/components/choice-grid/choice-grid.schema.json +61 -0
- package/src/components/choice-grid/choice-grid.schema.ts +70 -0
- package/src/components/choice-grid/choice-grid.svelte +272 -0
- package/src/components/choice-grid/choice-grid.types.ts +152 -0
- package/src/components/choice-grid/choice-grid.variables.json +1 -0
- package/src/components/choice-grid/choice-grid.variables.ts +3 -0
- package/src/components/choice-grid/index.ts +22 -0
- package/src/components/choice-grid-item/README.md +41 -0
- package/src/components/choice-grid-item/choice-grid-item.css +139 -0
- package/src/components/choice-grid-item/choice-grid-item.schema.json +32 -0
- package/src/components/choice-grid-item/choice-grid-item.schema.ts +38 -0
- package/src/components/choice-grid-item/choice-grid-item.svelte +139 -0
- package/src/components/choice-grid-item/choice-grid-item.types.ts +30 -0
- package/src/components/choice-grid-item/choice-grid-item.variables.json +1 -0
- package/src/components/choice-grid-item/choice-grid-item.variables.ts +3 -0
- package/src/components/choice-grid-item/index.ts +6 -0
- package/src/components/click-away-listener/README.md +50 -0
- package/src/components/color-field/color-field.css +6 -9
- package/src/components/color-picker/color-picker.css +31 -24
- package/src/components/color-swatch-picker/color-swatch-picker.css +6 -9
- package/src/components/command-menu/README.md +61 -0
- package/src/components/confirm-dialog/confirm-dialog.examples.json +6 -0
- package/src/components/context-menu/README.md +55 -0
- package/src/components/context-menu-trigger/README.md +50 -0
- package/src/components/context-menu-trigger/context-menu-trigger.svelte +5 -3
- package/src/components/data-table/README.md +67 -0
- package/src/components/data-table/data-table.css +30 -0
- package/src/components/data-table/data-table.examples.json +19 -0
- package/src/components/data-table/data-table.schema.json +43 -0
- package/src/components/data-table/data-table.schema.ts +50 -0
- package/src/components/data-table/data-table.svelte +106 -0
- package/src/components/data-table/data-table.types.ts +89 -0
- package/src/components/data-table/data-table.variables.json +1 -0
- package/src/components/data-table/data-table.variables.ts +3 -0
- package/src/components/data-table/index.ts +6 -0
- package/src/components/diff-viewer/README.md +59 -0
- package/src/components/diff-viewer/front-matter-header.svelte +20 -4
- package/src/components/dropdown-group/README.md +52 -0
- package/src/components/dropdown-item/README.md +10 -7
- package/src/components/dropdown-item/dropdown-item.schema.json +12 -0
- package/src/components/dropdown-item/dropdown-item.schema.ts +14 -0
- package/src/components/dropdown-item/dropdown-item.svelte +108 -25
- package/src/components/dropdown-item/dropdown-item.types.ts +58 -2
- package/src/components/dropdown-item/index.ts +6 -1
- package/src/components/floating-action-button/README.md +53 -0
- package/src/components/floating-action-button/floating-action-button.css +4 -2
- package/src/components/form-section/form-section.examples.json +6 -0
- package/src/components/hover-card/README.md +60 -0
- package/src/components/json-schema-editor/README.md +59 -0
- package/src/components/kanban-board/README.md +62 -0
- package/src/components/keyboard-shortcuts/README.md +51 -0
- package/src/components/keyboard-shortcuts/index.ts +10 -0
- package/src/components/keyboard-shortcuts/keyboard-shortcuts.css +84 -0
- package/src/components/keyboard-shortcuts/keyboard-shortcuts.examples.json +13 -0
- package/src/components/keyboard-shortcuts/keyboard-shortcuts.schema.json +27 -0
- package/src/components/keyboard-shortcuts/keyboard-shortcuts.schema.ts +31 -0
- package/src/components/keyboard-shortcuts/keyboard-shortcuts.svelte +91 -0
- package/src/components/keyboard-shortcuts/keyboard-shortcuts.types.ts +46 -0
- package/src/components/keyboard-shortcuts/keyboard-shortcuts.variables.json +1 -0
- package/src/components/keyboard-shortcuts/keyboard-shortcuts.variables.ts +3 -0
- package/src/components/line-chart/README.md +61 -0
- package/src/components/line-chart/line-chart.css +57 -8
- package/src/components/line-chart/line-chart.svelte +128 -10
- package/src/components/link/README.md +55 -0
- package/src/components/markdown-editor/README.md +70 -0
- package/src/components/markdown-editor/editor-toolbar/toolbar-button.svelte +9 -4
- package/src/components/markdown-editor/editor-toolbar/toolbar-dropdown.svelte +9 -4
- package/src/components/markdown-editor/prosemirror.css +4 -2
- package/src/components/matrix-chart/README.md +61 -0
- package/src/components/matrix-chart/index.ts +10 -0
- package/src/components/matrix-chart/matrix-chart.css +50 -0
- package/src/components/matrix-chart/matrix-chart.examples.json +19 -0
- package/src/components/matrix-chart/matrix-chart.schema.json +63 -0
- package/src/components/matrix-chart/matrix-chart.schema.ts +67 -0
- package/src/components/matrix-chart/matrix-chart.svelte +336 -0
- package/src/components/matrix-chart/matrix-chart.types.ts +56 -0
- package/src/components/matrix-chart/matrix-chart.variables.json +1 -0
- package/src/components/matrix-chart/matrix-chart.variables.ts +3 -0
- package/src/components/media-controls/README.md +60 -0
- package/src/components/media-controls/index.ts +6 -0
- package/src/components/media-controls/media-controls.css +112 -0
- package/src/components/media-controls/media-controls.examples.json +19 -0
- package/src/components/media-controls/media-controls.schema.json +65 -0
- package/src/components/media-controls/media-controls.schema.ts +69 -0
- package/src/components/media-controls/media-controls.svelte +238 -0
- package/src/components/media-controls/media-controls.types.ts +80 -0
- package/src/components/media-controls/media-controls.variables.json +1 -0
- package/src/components/media-controls/media-controls.variables.ts +3 -0
- package/src/components/menu-bar/README.md +53 -0
- package/src/components/navigation-bar/README.md +1 -1
- package/src/components/navigation-bar/navigation-bar.schema.json +4 -4
- package/src/components/navigation-bar/navigation-bar.schema.ts +4 -4
- package/src/components/navigation-bar/navigation-bar.types.ts +2 -1
- package/src/components/pricing-card/README.md +55 -0
- package/src/components/pricing-card/index.ts +6 -0
- package/src/components/pricing-card/pricing-card.css +173 -0
- package/src/components/pricing-card/pricing-card.examples.json +19 -0
- package/src/components/pricing-card/pricing-card.schema.json +40 -0
- package/src/components/pricing-card/pricing-card.schema.ts +44 -0
- package/src/components/pricing-card/pricing-card.svelte +70 -0
- package/src/components/pricing-card/pricing-card.types.ts +49 -0
- package/src/components/pricing-card/pricing-card.variables.json +1 -0
- package/src/components/pricing-card/pricing-card.variables.ts +3 -0
- package/src/components/review-editor/README.md +64 -0
- package/src/components/review-editor/comment-composer.svelte +8 -8
- package/src/components/review-editor/comment-list.svelte +10 -1
- package/src/components/search-field/search-field.examples.json +13 -0
- package/src/components/segment/README.md +55 -0
- package/src/components/share-card/README.md +58 -0
- package/src/components/share-card/index.ts +6 -0
- package/src/components/share-card/share-card.css +115 -0
- package/src/components/share-card/share-card.examples.json +19 -0
- package/src/components/share-card/share-card.schema.json +53 -0
- package/src/components/share-card/share-card.schema.ts +57 -0
- package/src/components/share-card/share-card.svelte +330 -0
- package/src/components/share-card/share-card.types.ts +69 -0
- package/src/components/share-card/share-card.variables.json +1 -0
- package/src/components/share-card/share-card.variables.ts +3 -0
- package/src/components/shortcut-hint/README.md +52 -0
- package/src/components/shortcut-hint/index.ts +6 -0
- package/src/components/shortcut-hint/shortcut-hint.css +26 -0
- package/src/components/shortcut-hint/shortcut-hint.examples.json +13 -0
- package/src/components/shortcut-hint/shortcut-hint.schema.json +36 -0
- package/src/components/shortcut-hint/shortcut-hint.schema.ts +40 -0
- package/src/components/shortcut-hint/shortcut-hint.svelte +62 -0
- package/src/components/shortcut-hint/shortcut-hint.types.ts +35 -0
- package/src/components/shortcut-hint/shortcut-hint.variables.json +1 -0
- package/src/components/shortcut-hint/shortcut-hint.variables.ts +3 -0
- package/src/components/side-navigation/side-navigation.examples.json +6 -0
- package/src/components/skip-link/README.md +50 -0
- package/src/components/skip-link/index.ts +5 -0
- package/src/components/skip-link/skip-link.examples.json +13 -0
- package/src/components/skip-link/skip-link.schema.json +16 -0
- package/src/components/skip-link/skip-link.schema.ts +20 -0
- package/src/components/skip-link/skip-link.svelte +86 -0
- package/src/components/skip-link/skip-link.types.ts +40 -0
- package/src/components/skip-link/skip-link.variables.json +1 -0
- package/src/components/skip-link/skip-link.variables.ts +3 -0
- package/src/components/spectrogram/README.md +58 -0
- package/src/components/spectrogram/index.ts +10 -0
- package/src/components/spectrogram/spectrogram.css +43 -0
- package/src/components/spectrogram/spectrogram.examples.json +13 -0
- package/src/components/spectrogram/spectrogram.schema.json +43 -0
- package/src/components/spectrogram/spectrogram.schema.ts +47 -0
- package/src/components/spectrogram/spectrogram.svelte +284 -0
- package/src/components/spectrogram/spectrogram.types.ts +63 -0
- package/src/components/spectrogram/spectrogram.variables.json +1 -0
- package/src/components/spectrogram/spectrogram.variables.ts +3 -0
- package/src/components/spectrum-chart/README.md +57 -0
- package/src/components/spectrum-chart/index.ts +10 -0
- package/src/components/spectrum-chart/spectrum-chart.css +49 -0
- package/src/components/spectrum-chart/spectrum-chart.examples.json +13 -0
- package/src/components/spectrum-chart/spectrum-chart.schema.json +37 -0
- package/src/components/spectrum-chart/spectrum-chart.schema.ts +41 -0
- package/src/components/spectrum-chart/spectrum-chart.svelte +247 -0
- package/src/components/spectrum-chart/spectrum-chart.types.ts +44 -0
- package/src/components/spectrum-chart/spectrum-chart.variables.json +1 -0
- package/src/components/spectrum-chart/spectrum-chart.variables.ts +3 -0
- package/src/components/status-dot/README.md +7 -7
- package/src/components/status-dot/status-dot.css +8 -0
- package/src/components/status-dot/status-dot.schema.json +2 -2
- package/src/components/status-dot/status-dot.schema.ts +3 -2
- package/src/components/status-dot/status-dot.types.ts +13 -2
- package/src/components/subscription-badge/README.md +50 -0
- package/src/components/subscription-badge/index.ts +6 -0
- package/src/components/subscription-badge/subscription-badge.css +18 -0
- package/src/components/subscription-badge/subscription-badge.examples.json +19 -0
- package/src/components/subscription-badge/subscription-badge.schema.json +16 -0
- package/src/components/subscription-badge/subscription-badge.schema.ts +21 -0
- package/src/components/subscription-badge/subscription-badge.svelte +69 -0
- package/src/components/subscription-badge/subscription-badge.types.ts +37 -0
- package/src/components/subscription-badge/subscription-badge.variables.json +1 -0
- package/src/components/subscription-badge/subscription-badge.variables.ts +3 -0
- package/src/components/table-cell/README.md +6 -5
- package/src/components/table-cell/table-cell.schema.json +4 -0
- package/src/components/table-cell/table-cell.schema.ts +5 -0
- package/src/components/table-cell/table-cell.svelte +9 -3
- package/src/components/table-cell/table-cell.types.ts +16 -1
- package/src/components/tag-input/README.md +75 -0
- package/src/components/typography/README.md +51 -0
- package/src/components/waveform/README.md +57 -0
- package/src/components/waveform/index.ts +6 -0
- package/src/components/waveform/waveform.css +53 -0
- package/src/components/waveform/waveform.examples.json +19 -0
- package/src/components/waveform/waveform.schema.json +38 -0
- package/src/components/waveform/waveform.schema.ts +42 -0
- package/src/components/waveform/waveform.svelte +286 -0
- package/src/components/waveform/waveform.types.ts +45 -0
- package/src/components/waveform/waveform.variables.json +1 -0
- package/src/components/waveform/waveform.variables.ts +3 -0
- package/src/index.ts +85 -2
- package/src/styles/components.css +13 -0
- package/src/styles/shell.css +3 -0
- package/src/styles/tokens-base.css +59 -22
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { Snippet } from 'svelte';
|
|
2
|
+
import type { HTMLAttributes } from 'svelte/elements';
|
|
3
|
+
|
|
4
|
+
/** Props for the ShortcutHint component. */
|
|
5
|
+
export type ShortcutHintProps = Omit<HTMLAttributes<HTMLSpanElement>, 'class' | 'children'> & {
|
|
6
|
+
/** The key sequence to display (e.g. ["Ctrl", "S"] or ["Space"]). */
|
|
7
|
+
keys: string[];
|
|
8
|
+
/** Optional accessible label for the key combo. Defaults to joining keys with " plus ". */
|
|
9
|
+
keysLabel?: string;
|
|
10
|
+
/** The action or label to render alongside the key combo. */
|
|
11
|
+
children?: Snippet;
|
|
12
|
+
/** Whether to place the keys before or after the children. @default "after" */
|
|
13
|
+
keysPosition?: 'before' | 'after';
|
|
14
|
+
/** Additional class names merged with `.cinder-shortcut-hint`. */
|
|
15
|
+
class?: string;
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Cinder-specific props for ShortcutHint, used by the schema generator.
|
|
20
|
+
*/
|
|
21
|
+
export interface ShortcutHintSchemaProps {
|
|
22
|
+
/** The key sequence to display. */
|
|
23
|
+
keys: string[];
|
|
24
|
+
/** Accessible label for the key combo. */
|
|
25
|
+
keysLabel?: string;
|
|
26
|
+
/**
|
|
27
|
+
* Position of keys relative to children.
|
|
28
|
+
* @default "after"
|
|
29
|
+
*/
|
|
30
|
+
keysPosition?: 'before' | 'after';
|
|
31
|
+
/** Additional class names merged with `.cinder-shortcut-hint`. */
|
|
32
|
+
class?: string;
|
|
33
|
+
/** The action label rendered beside the keys. */
|
|
34
|
+
children?: Snippet;
|
|
35
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
[]
|
|
@@ -8,6 +8,12 @@
|
|
|
8
8
|
"title": "Basic side navigation",
|
|
9
9
|
"description": "A grouped sidebar nav. Uses the SideNavigation namespace API: SideNavigation.Group wraps a collapsible section and SideNavigation.Item renders each link.",
|
|
10
10
|
"code": "<script lang=\"ts\">\n import { SideNavigation } from '@lostgradient/cinder/side-navigation';\n</script>\n\n<SideNavigation ariaLabel=\"Workspace\">\n <SideNavigation.Item href=\"/dashboard\">Dashboard</SideNavigation.Item>\n <SideNavigation.Group label=\"Projects\">\n <SideNavigation.Item href=\"/projects/phoenix\" active>Phoenix</SideNavigation.Item>\n <SideNavigation.Item href=\"/projects/atlas\">Atlas</SideNavigation.Item>\n <SideNavigation.Item href=\"/projects/beacon\">Beacon</SideNavigation.Item>\n </SideNavigation.Group>\n <SideNavigation.Group label=\"Settings\">\n <SideNavigation.Item href=\"/settings/team\">Team</SideNavigation.Item>\n <SideNavigation.Item href=\"/settings/billing\">Billing</SideNavigation.Item>\n </SideNavigation.Group>\n</SideNavigation>\n"
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
"id": "docs-sidebar",
|
|
14
|
+
"title": "Docs sidebar",
|
|
15
|
+
"description": "Documentation sidebar with grouped navigation sections. The active item receives aria-current=\"page\". ",
|
|
16
|
+
"code": "<script lang=\"ts\" module>\n export const title = 'Docs sidebar';\n export const description =\n 'Documentation sidebar with grouped navigation sections. The active item receives aria-current=\"page\". ' +\n 'Composed inside Sidebar so the column collapses to a drawer below the ~767px viewport breakpoint — ' +\n 'resize your browser window to see the mobile drawer behavior.';\n</script>\n\n<script lang=\"ts\">\n import { Button } from '@lostgradient/cinder/button';\n import { SideNavigation } from '@lostgradient/cinder/side-navigation';\n import { Sidebar } from '@lostgradient/cinder/sidebar';\n\n let collapsed = $state(false);\n</script>\n\n<div style=\"display: flex; flex-direction: column; gap: 1rem;\">\n <div>\n <Button\n label={collapsed ? 'Expand sidebar' : 'Collapse sidebar'}\n onclick={() => (collapsed = !collapsed)}\n />\n </div>\n\n <div\n style=\"display: flex; min-height: 28rem; border: 1px solid var(--cinder-border); border-radius: 0.5rem; overflow: hidden;\"\n >\n <Sidebar bind:collapsed ariaLabel=\"Documentation\">\n {#snippet brand()}\n <strong style=\"font-size: 0.875rem;\">Cinder Docs</strong>\n {/snippet}\n\n {#snippet navigation()}\n <SideNavigation ariaLabel=\"Documentation sections\">\n <SideNavigation.Group label=\"Getting Started\">\n <SideNavigation.Item href=\"#introduction\" active>Introduction</SideNavigation.Item>\n <SideNavigation.Item href=\"#installation\">Installation</SideNavigation.Item>\n <SideNavigation.Item href=\"#quick-start\">Quick start</SideNavigation.Item>\n </SideNavigation.Group>\n <SideNavigation.Group label=\"Components\">\n <SideNavigation.Item href=\"#button\">Button</SideNavigation.Item>\n <SideNavigation.Item href=\"#form-section\">FormSection</SideNavigation.Item>\n <SideNavigation.Item href=\"#side-navigation\">SideNavigation</SideNavigation.Item>\n </SideNavigation.Group>\n <SideNavigation.Group label=\"API Reference\">\n <SideNavigation.Item href=\"#props\">Props</SideNavigation.Item>\n <SideNavigation.Item href=\"#types\">Types</SideNavigation.Item>\n <SideNavigation.Item href=\"#css-variables\">CSS variables</SideNavigation.Item>\n </SideNavigation.Group>\n </SideNavigation>\n {/snippet}\n </Sidebar>\n\n <main style=\"flex: 1; padding: 1.5rem;\">\n <p style=\"margin: 0; color: var(--cinder-text-muted); font-size: var(--cinder-text-sm);\">\n Main content area. Resize the browser viewport below ~767px to see the navigation collapse\n into a mobile drawer.\n </p>\n </main>\n </div>\n</div>\n"
|
|
11
17
|
}
|
|
12
18
|
]
|
|
13
19
|
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# SkipLink
|
|
2
|
+
|
|
3
|
+
A visually hidden skip-to-content link that becomes visible on keyboard focus and moves focus (and the viewport) to a landmark element, letting keyboard and screen-reader users bypass repeated navigation (WCAG 2.4.1 Bypass Blocks).
|
|
4
|
+
|
|
5
|
+
## Usage
|
|
6
|
+
|
|
7
|
+
Place it as the first focusable element in your layout and point `target` at the `id` of your main content region.
|
|
8
|
+
|
|
9
|
+
```svelte
|
|
10
|
+
<script lang="ts">
|
|
11
|
+
import SkipLink from '@lostgradient/cinder/skip-link';
|
|
12
|
+
</script>
|
|
13
|
+
|
|
14
|
+
<SkipLink target="main-content">Skip to main content</SkipLink>
|
|
15
|
+
|
|
16
|
+
<!-- … site navigation … -->
|
|
17
|
+
|
|
18
|
+
<main id="main-content">
|
|
19
|
+
<!-- … -->
|
|
20
|
+
</main>
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
The default label is "Skip to main content"; pass children to override it. SkipLink handles `prefers-reduced-motion` and the tabindex save/restore dance internally, so the target is never left permanently focusable.
|
|
24
|
+
|
|
25
|
+
## Props
|
|
26
|
+
|
|
27
|
+
<!-- generated:props:start -->
|
|
28
|
+
|
|
29
|
+
| Prop | Type | Required | Default | Description |
|
|
30
|
+
| -------- | -------- | -------- | ------- | -------------------------------------------------------------------- |
|
|
31
|
+
| `class` | `string` | no | — | Additional classes merged onto the visually-hidden anchor. |
|
|
32
|
+
| `target` | `string` | yes | — | The `id` of the element to receive focus when the link is activated. |
|
|
33
|
+
|
|
34
|
+
<!-- generated:props:end -->
|
|
35
|
+
|
|
36
|
+
## CSS Variables
|
|
37
|
+
|
|
38
|
+
<!-- generated:variables:start -->
|
|
39
|
+
|
|
40
|
+
This component does not declare any local CSS variables.
|
|
41
|
+
|
|
42
|
+
<!-- generated:variables:end -->
|
|
43
|
+
|
|
44
|
+
## Subcomponents
|
|
45
|
+
|
|
46
|
+
<!-- generated:subcomponents:start -->
|
|
47
|
+
|
|
48
|
+
None.
|
|
49
|
+
|
|
50
|
+
<!-- generated:subcomponents:end -->
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "../../schemas/examples.schema.json",
|
|
3
|
+
"component": "skip-link",
|
|
4
|
+
"import": "@lostgradient/cinder/skip-link",
|
|
5
|
+
"examples": [
|
|
6
|
+
{
|
|
7
|
+
"id": "basic",
|
|
8
|
+
"title": "Basic usage",
|
|
9
|
+
"description": "Tab into this example to reveal the skip link, then press Enter to jump focus to the main content area.",
|
|
10
|
+
"code": "<script lang=\"ts\">\n import { SkipLink } from '@lostgradient/cinder/skip-link';\n</script>\n\n<div\n style=\"position: relative; min-height: 80px; border: 1px dashed var(--cinder-border); border-radius: 4px; padding: 1rem;\"\n>\n <SkipLink target=\"skip-link-example-main\" />\n\n <nav aria-label=\"Example navigation\">\n <a href=\"#skip-link-example-main\" style=\"margin-right: 1rem;\">Home</a>\n <a href=\"#skip-link-example-main\" style=\"margin-right: 1rem;\">About</a>\n <a href=\"#skip-link-example-main\">Contact</a>\n </nav>\n\n <main id=\"skip-link-example-main\" style=\"margin-top: 1rem;\">\n <p>Main content area. Focus lands here when the skip link is activated.</p>\n </main>\n</div>\n"
|
|
11
|
+
}
|
|
12
|
+
]
|
|
13
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"type": "object",
|
|
4
|
+
"properties": {
|
|
5
|
+
"target": {
|
|
6
|
+
"type": "string",
|
|
7
|
+
"description": "The `id` of the element to receive focus when the link is activated."
|
|
8
|
+
},
|
|
9
|
+
"class": {
|
|
10
|
+
"type": "string",
|
|
11
|
+
"description": "Additional classes merged onto the visually-hidden anchor."
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
"additionalProperties": false,
|
|
15
|
+
"required": ["target"]
|
|
16
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { ComponentSchema } from '../../schema-types';
|
|
2
|
+
|
|
3
|
+
const schema = {
|
|
4
|
+
$schema: 'https://json-schema.org/draft/2020-12/schema',
|
|
5
|
+
type: 'object',
|
|
6
|
+
properties: {
|
|
7
|
+
target: {
|
|
8
|
+
type: 'string',
|
|
9
|
+
description: 'The `id` of the element to receive focus when the link is activated.',
|
|
10
|
+
},
|
|
11
|
+
class: {
|
|
12
|
+
type: 'string',
|
|
13
|
+
description: 'Additional classes merged onto the visually-hidden anchor.',
|
|
14
|
+
},
|
|
15
|
+
},
|
|
16
|
+
additionalProperties: false,
|
|
17
|
+
required: ['target'],
|
|
18
|
+
} satisfies ComponentSchema;
|
|
19
|
+
|
|
20
|
+
export default schema as ComponentSchema;
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
<script lang="ts" module>
|
|
2
|
+
/**
|
|
3
|
+
* @cinder
|
|
4
|
+
* @category navigation
|
|
5
|
+
* @status stable
|
|
6
|
+
* @purpose Visually hidden skip link that moves keyboard focus to a landmark element, letting keyboard and screen reader users bypass repeated navigation.
|
|
7
|
+
* @tag navigation
|
|
8
|
+
* @tag accessibility
|
|
9
|
+
* @tag skip-link
|
|
10
|
+
* @useWhen Providing a keyboard shortcut to jump past site-wide navigation directly to the main content area.
|
|
11
|
+
* @useWhen Meeting WCAG 2.4.1 (Bypass Blocks) without adding visible chrome to the layout.
|
|
12
|
+
* @avoidWhen The page has no repeated navigation block — a skip link adds no value on single-panel layouts.
|
|
13
|
+
* @avoidWhen The target region already receives focus naturally without intervention.
|
|
14
|
+
* @related visually-hidden
|
|
15
|
+
*/
|
|
16
|
+
export type { SkipLinkProps } from './skip-link.types.ts';
|
|
17
|
+
</script>
|
|
18
|
+
|
|
19
|
+
<script lang="ts">
|
|
20
|
+
import { classNames } from '../../utilities/class-names.ts';
|
|
21
|
+
import { useReducedMotion } from '../../utilities/use-reduced-motion.svelte.ts';
|
|
22
|
+
import VisuallyHidden from '../visually-hidden/visually-hidden.svelte';
|
|
23
|
+
|
|
24
|
+
import type { SkipLinkProps } from './skip-link.types.ts';
|
|
25
|
+
|
|
26
|
+
let { target, class: className, children }: SkipLinkProps = $props();
|
|
27
|
+
|
|
28
|
+
const motion = useReducedMotion();
|
|
29
|
+
|
|
30
|
+
const mergedClass = $derived(classNames(className));
|
|
31
|
+
|
|
32
|
+
// Marks a target whose tabindex SkipLink is currently managing, so re-activating
|
|
33
|
+
// before focus leaves does not recapture the temporary `-1` as the "original"
|
|
34
|
+
// value or stack a second restore listener.
|
|
35
|
+
const MANAGED_ATTRIBUTE = 'data-cinder-skip-link-managed';
|
|
36
|
+
|
|
37
|
+
function handleClick(event: MouseEvent) {
|
|
38
|
+
const element = document.getElementById(target);
|
|
39
|
+
|
|
40
|
+
if (!element) {
|
|
41
|
+
// No matching element — let the native anchor jump happen.
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
event.preventDefault();
|
|
46
|
+
|
|
47
|
+
const alreadyManaged = element.hasAttribute(MANAGED_ATTRIBUTE);
|
|
48
|
+
|
|
49
|
+
if (!alreadyManaged) {
|
|
50
|
+
// First activation: capture the genuine original tabindex, mark the
|
|
51
|
+
// element as managed, and arm a one-shot restore on the next blur.
|
|
52
|
+
const originalTabIndex = element.getAttribute('tabindex');
|
|
53
|
+
element.setAttribute(MANAGED_ATTRIBUTE, '');
|
|
54
|
+
element.setAttribute('tabindex', '-1');
|
|
55
|
+
|
|
56
|
+
element.addEventListener(
|
|
57
|
+
'blur',
|
|
58
|
+
() => {
|
|
59
|
+
element.removeAttribute(MANAGED_ATTRIBUTE);
|
|
60
|
+
if (originalTabIndex === null) {
|
|
61
|
+
element.removeAttribute('tabindex');
|
|
62
|
+
} else {
|
|
63
|
+
element.setAttribute('tabindex', originalTabIndex);
|
|
64
|
+
}
|
|
65
|
+
},
|
|
66
|
+
{ once: true },
|
|
67
|
+
);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
// Focus without the browser's implicit scroll so the reduced-motion-aware
|
|
71
|
+
// scrollIntoView below is the single, authoritative scroll.
|
|
72
|
+
element.focus({ preventScroll: true });
|
|
73
|
+
element.scrollIntoView({
|
|
74
|
+
behavior: motion.current ? 'auto' : 'smooth',
|
|
75
|
+
block: 'start',
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
</script>
|
|
79
|
+
|
|
80
|
+
<VisuallyHidden as="a" href="#{target}" focusable class={mergedClass} onclick={handleClick}>
|
|
81
|
+
{#if children}
|
|
82
|
+
{@render children()}
|
|
83
|
+
{:else}
|
|
84
|
+
Skip to main content
|
|
85
|
+
{/if}
|
|
86
|
+
</VisuallyHidden>
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { Snippet } from 'svelte';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Props for the SkipLink component.
|
|
5
|
+
*
|
|
6
|
+
* SkipLink composes over VisuallyHidden using `as="a"` with `focusable` mode.
|
|
7
|
+
* The `target` prop is the id of the element to scroll and move focus to on
|
|
8
|
+
* activation; the link's `href` is set to `#${target}` automatically.
|
|
9
|
+
*
|
|
10
|
+
* The surface is intentionally minimal — `target`, optional `children`, and
|
|
11
|
+
* `class`. A skip link is a single-purpose control, so it does NOT forward an
|
|
12
|
+
* arbitrary HTML-attribute bag: doing so would (a) let a consumer's `onclick`
|
|
13
|
+
* clobber the internal focus-management handler, and (b) blow VisuallyHidden's
|
|
14
|
+
* `HTMLAttributes & HTMLAnchorAttributes` props into a "union too complex to
|
|
15
|
+
* represent" error when spread. This matches the issue's proposed API exactly:
|
|
16
|
+
* `<SkipLink target="main-content">Skip to main content</SkipLink>`.
|
|
17
|
+
*/
|
|
18
|
+
export type SkipLinkProps = {
|
|
19
|
+
/**
|
|
20
|
+
* The `id` of the element to receive focus and scroll into view when the
|
|
21
|
+
* skip link is activated. Required. The rendered `href` is `#${target}`.
|
|
22
|
+
*/
|
|
23
|
+
target: string;
|
|
24
|
+
/** Optional override for the visible label. Defaults to "Skip to main content". */
|
|
25
|
+
children?: Snippet;
|
|
26
|
+
/** Additional classes merged onto the visually-hidden anchor. */
|
|
27
|
+
class?: string;
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Cinder-specific props for the SkipLink component, used by the schema generator.
|
|
32
|
+
*/
|
|
33
|
+
export interface SkipLinkSchemaProps {
|
|
34
|
+
/**
|
|
35
|
+
* The `id` of the element to receive focus when the link is activated.
|
|
36
|
+
*/
|
|
37
|
+
target: string;
|
|
38
|
+
/** Additional classes merged onto the visually-hidden anchor. */
|
|
39
|
+
class?: string;
|
|
40
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
[]
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# Spectrogram
|
|
2
|
+
|
|
3
|
+
Responsive SVG time × frequency heatmap for visualizing audio spectrogram data.
|
|
4
|
+
|
|
5
|
+
## Usage
|
|
6
|
+
|
|
7
|
+
```svelte
|
|
8
|
+
<script lang="ts">
|
|
9
|
+
import { Spectrogram } from '@lostgradient/cinder/spectrogram';
|
|
10
|
+
</script>
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## Guidance
|
|
14
|
+
|
|
15
|
+
### Use When
|
|
16
|
+
|
|
17
|
+
- Visualizing how frequency content of a signal changes over time (time × frequency heatmap).
|
|
18
|
+
- Displaying pre-computed spectrogram frames from an FFT or short-time Fourier transform.
|
|
19
|
+
|
|
20
|
+
### Avoid When
|
|
21
|
+
|
|
22
|
+
- Only a single spectrum snapshot is needed — use spectrum-chart instead.
|
|
23
|
+
- Real-time live audio spectrogram is needed — feed frames as props yourself.
|
|
24
|
+
- A categorical × categorical heatmap without a time axis is needed — use matrix-chart instead.
|
|
25
|
+
|
|
26
|
+
## Props
|
|
27
|
+
|
|
28
|
+
<!-- generated:props:start -->
|
|
29
|
+
|
|
30
|
+
| Prop | Type | Required | Default | Description |
|
|
31
|
+
| --------------------- | --------------------------------------------------- | -------- | ------- | ------------------------------------------------------------------------------------------------------- |
|
|
32
|
+
| `class` | `string` | no | — | |
|
|
33
|
+
| `dataTableCaption` | `string` | no | — | |
|
|
34
|
+
| `dataTableVisibility` | `"screen-reader-only"` \| `"visible"` \| `"hidden"` | no | — | |
|
|
35
|
+
| `description` | `string` | no | — | |
|
|
36
|
+
| `frequencyLabels` | `string`[] | no | — | |
|
|
37
|
+
| `height` | `number` | no | — | |
|
|
38
|
+
| `label` | `string` | yes | — | |
|
|
39
|
+
| `loading` | `boolean` | no | — | |
|
|
40
|
+
| `frames` | `(opaque)` | no | — | A prop whose shape is not captured by the JSON schema; see the component types for the exact signature. |
|
|
41
|
+
|
|
42
|
+
<!-- generated:props:end -->
|
|
43
|
+
|
|
44
|
+
## CSS Variables
|
|
45
|
+
|
|
46
|
+
<!-- generated:variables:start -->
|
|
47
|
+
|
|
48
|
+
This component does not declare any local CSS variables.
|
|
49
|
+
|
|
50
|
+
<!-- generated:variables:end -->
|
|
51
|
+
|
|
52
|
+
## Subcomponents
|
|
53
|
+
|
|
54
|
+
<!-- generated:subcomponents:start -->
|
|
55
|
+
|
|
56
|
+
None.
|
|
57
|
+
|
|
58
|
+
<!-- generated:subcomponents:end -->
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
@layer cinder.tokens, cinder.foundation, cinder.components, cinder.utilities;
|
|
2
|
+
@layer cinder.components {
|
|
3
|
+
.cinder-spectrogram {
|
|
4
|
+
display: grid;
|
|
5
|
+
gap: var(--cinder-space-3);
|
|
6
|
+
color: var(--cinder-text);
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
.cinder-spectrogram__description {
|
|
10
|
+
margin: 0;
|
|
11
|
+
color: var(--cinder-text-muted);
|
|
12
|
+
font-size: var(--cinder-text-sm);
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
.cinder-spectrogram__viewport {
|
|
16
|
+
position: relative;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
.cinder-spectrogram svg {
|
|
20
|
+
display: block;
|
|
21
|
+
inline-size: 100%;
|
|
22
|
+
block-size: 100%;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
.cinder-spectrogram__cell {
|
|
26
|
+
stroke: none;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
.cinder-spectrogram__tick-label {
|
|
30
|
+
fill: var(--cinder-text-muted);
|
|
31
|
+
font-size: var(--cinder-text-xs);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
.cinder-spectrogram__state {
|
|
35
|
+
position: absolute;
|
|
36
|
+
inset: 0;
|
|
37
|
+
display: grid;
|
|
38
|
+
place-items: center;
|
|
39
|
+
color: var(--cinder-text-muted);
|
|
40
|
+
background: color-mix(in oklch, var(--cinder-surface) 88%, transparent);
|
|
41
|
+
z-index: 1;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "../../schemas/examples.schema.json",
|
|
3
|
+
"component": "spectrogram",
|
|
4
|
+
"import": "@lostgradient/cinder/spectrogram",
|
|
5
|
+
"examples": [
|
|
6
|
+
{
|
|
7
|
+
"id": "voice-spectrogram",
|
|
8
|
+
"title": "Voice spectrogram",
|
|
9
|
+
"description": "Time × frequency heatmap showing how frequency content changes over time.",
|
|
10
|
+
"code": "<script lang=\"ts\">\n import { Spectrogram } from '@lostgradient/cinder/spectrogram';\n\n const frequencyLabels = [\n '50 Hz',\n '100 Hz',\n '200 Hz',\n '400 Hz',\n '800 Hz',\n '1.6 kHz',\n '3.2 kHz',\n '6.4 kHz',\n ];\n\n // Simulate a vowel formant pattern changing over time\n function makeFrame(\n label: string,\n formant1: number,\n formant2: number,\n ): { label: string; bins: number[] } {\n return {\n label,\n bins: frequencyLabels.map((_, index) => {\n const f1 = Math.exp(-Math.pow(index - formant1, 2) / 1.5) * 0.9;\n const f2 = Math.exp(-Math.pow(index - formant2, 2) / 1.5) * 0.6;\n // Deterministic micro-variation using index and formant positions\n const microVariation = Math.sin(index * 17.3 + formant1 * 5.7) * 0.025;\n return Math.min(1, f1 + f2 + Math.abs(microVariation));\n }),\n };\n }\n\n const frames = [\n makeFrame('0 ms', 1, 4),\n makeFrame('20 ms', 1.2, 4.2),\n makeFrame('40 ms', 1.5, 4.5),\n makeFrame('60 ms', 2, 5),\n makeFrame('80 ms', 2.5, 5.5),\n makeFrame('100 ms', 2.2, 5.2),\n makeFrame('120 ms', 1.8, 4.8),\n makeFrame('140 ms', 1.5, 4.5),\n makeFrame('160 ms', 1.2, 4.2),\n makeFrame('180 ms', 1, 4),\n ];\n</script>\n\n<Spectrogram\n label=\"Voice spectrogram — vowel formant transition\"\n description=\"Time × frequency heatmap showing vowel formant frequency shifts over 180 ms.\"\n {frames}\n {frequencyLabels}\n height={220}\n dataTableVisibility=\"visible\"\n/>\n"
|
|
11
|
+
}
|
|
12
|
+
]
|
|
13
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"type": "object",
|
|
4
|
+
"properties": {
|
|
5
|
+
"label": {
|
|
6
|
+
"type": "string"
|
|
7
|
+
},
|
|
8
|
+
"description": {
|
|
9
|
+
"type": "string"
|
|
10
|
+
},
|
|
11
|
+
"frequencyLabels": {
|
|
12
|
+
"type": "array",
|
|
13
|
+
"items": {
|
|
14
|
+
"type": "string"
|
|
15
|
+
}
|
|
16
|
+
},
|
|
17
|
+
"height": {
|
|
18
|
+
"type": "number"
|
|
19
|
+
},
|
|
20
|
+
"loading": {
|
|
21
|
+
"type": "boolean"
|
|
22
|
+
},
|
|
23
|
+
"dataTableVisibility": {
|
|
24
|
+
"enum": ["screen-reader-only", "visible", "hidden"]
|
|
25
|
+
},
|
|
26
|
+
"dataTableCaption": {
|
|
27
|
+
"type": "string"
|
|
28
|
+
},
|
|
29
|
+
"class": {
|
|
30
|
+
"type": "string"
|
|
31
|
+
}
|
|
32
|
+
},
|
|
33
|
+
"additionalProperties": false,
|
|
34
|
+
"required": ["label"],
|
|
35
|
+
"metadata": {
|
|
36
|
+
"unsupportedProps": [
|
|
37
|
+
{
|
|
38
|
+
"name": "frames",
|
|
39
|
+
"reason": "unknown-shape"
|
|
40
|
+
}
|
|
41
|
+
]
|
|
42
|
+
}
|
|
43
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import type { ComponentSchema } from '../../schema-types';
|
|
2
|
+
|
|
3
|
+
const schema = {
|
|
4
|
+
$schema: 'https://json-schema.org/draft/2020-12/schema',
|
|
5
|
+
type: 'object',
|
|
6
|
+
properties: {
|
|
7
|
+
label: {
|
|
8
|
+
type: 'string',
|
|
9
|
+
},
|
|
10
|
+
description: {
|
|
11
|
+
type: 'string',
|
|
12
|
+
},
|
|
13
|
+
frequencyLabels: {
|
|
14
|
+
type: 'array',
|
|
15
|
+
items: {
|
|
16
|
+
type: 'string',
|
|
17
|
+
},
|
|
18
|
+
},
|
|
19
|
+
height: {
|
|
20
|
+
type: 'number',
|
|
21
|
+
},
|
|
22
|
+
loading: {
|
|
23
|
+
type: 'boolean',
|
|
24
|
+
},
|
|
25
|
+
dataTableVisibility: {
|
|
26
|
+
enum: ['screen-reader-only', 'visible', 'hidden'],
|
|
27
|
+
},
|
|
28
|
+
dataTableCaption: {
|
|
29
|
+
type: 'string',
|
|
30
|
+
},
|
|
31
|
+
class: {
|
|
32
|
+
type: 'string',
|
|
33
|
+
},
|
|
34
|
+
},
|
|
35
|
+
additionalProperties: false,
|
|
36
|
+
required: ['label'],
|
|
37
|
+
metadata: {
|
|
38
|
+
unsupportedProps: [
|
|
39
|
+
{
|
|
40
|
+
name: 'frames',
|
|
41
|
+
reason: 'unknown-shape',
|
|
42
|
+
},
|
|
43
|
+
],
|
|
44
|
+
},
|
|
45
|
+
} satisfies ComponentSchema;
|
|
46
|
+
|
|
47
|
+
export default schema as ComponentSchema;
|