@stephen-netu/design-system 0.2.1 → 0.5.1
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/dist/b0-app-shell/clarification-overlay/ClarificationOverlay.svelte +10 -2
- package/dist/b0-app-shell/clarification-overlay/ClarificationOverlay.svelte.d.ts.map +1 -1
- package/dist/b0-app-shell/{command-bar/CommandBar.svelte → global-command-bar/GlobalCommandBar.svelte} +75 -75
- package/dist/b0-app-shell/{command-bar/CommandBar.svelte.d.ts → global-command-bar/GlobalCommandBar.svelte.d.ts} +6 -6
- package/dist/b0-app-shell/global-command-bar/GlobalCommandBar.svelte.d.ts.map +1 -0
- package/dist/b0-app-shell/index.d.ts +1 -1
- package/dist/b0-app-shell/index.d.ts.map +1 -1
- package/dist/b0-app-shell/index.js +1 -1
- package/dist/d0-data-viz/BarChart.test.js +53 -0
- package/dist/d0-data-viz/CheckpointBar.test.js +83 -0
- package/dist/d0-data-viz/CheckpointPill.svelte +8 -3
- package/dist/d0-data-viz/CheckpointPill.svelte.d.ts.map +1 -1
- package/dist/d0-data-viz/CheckpointPill.test.js +78 -0
- package/dist/d0-data-viz/ConnectionHealth.test.js +70 -0
- package/dist/d0-data-viz/MetricCard.test.js +57 -0
- package/dist/d0-data-viz/SparkLine.test.js +47 -0
- package/dist/d0-data-viz/StorageMap.test.js +63 -0
- package/dist/d0-data-viz/Timeline.test.js +62 -0
- package/dist/d0-data-viz/WorldLineTimeline.test.js +99 -0
- package/dist/d0-data-viz/checkpoint-types.js +1 -1
- package/dist/d0-data-viz/storage-map-types.d.ts.map +1 -1
- package/dist/d0-data-viz/storage-map-types.js +6 -3
- package/dist/d0-data-viz/theme-integration.d.ts +3 -3
- package/dist/d0-data-viz/theme-integration.js +4 -4
- package/dist/d0-data-viz/theme-integration.test.js +41 -0
- package/dist/demos/AmbientPrimitivesDemo.svelte +103 -0
- package/dist/demos/AmbientPrimitivesDemo.svelte.d.ts +5 -0
- package/dist/demos/AmbientPrimitivesDemo.svelte.d.ts.map +1 -0
- package/dist/demos/BspSizingInfographic.svelte +3 -32
- package/dist/demos/NodepadBlocksShowcase.svelte +2 -1
- package/dist/demos/NodepadBlocksShowcase.svelte.d.ts.map +1 -1
- package/dist/demos/index.d.ts +1 -0
- package/dist/demos/index.d.ts.map +1 -1
- package/dist/demos/index.js +1 -0
- package/dist/editor/CodeEditor.svelte +83 -26
- package/dist/editor/CodeEditor.svelte.d.ts +0 -1
- package/dist/editor/CodeEditor.svelte.d.ts.map +1 -1
- package/dist/editor/CodeEditor.test.js +38 -0
- package/dist/editor/ExternalChangeDialog.svelte +117 -0
- package/dist/editor/ExternalChangeDialog.svelte.d.ts +13 -0
- package/dist/editor/ExternalChangeDialog.svelte.d.ts.map +1 -0
- package/dist/editor/FindReplaceDialog.svelte +32 -32
- package/dist/editor/MarkdownEditor.svelte +105 -605
- package/dist/editor/MarkdownEditor.svelte.d.ts +1 -1
- package/dist/editor/MarkdownEditor.svelte.d.ts.map +1 -1
- package/dist/editor/MarkdownEditor.test.js +38 -0
- package/dist/editor/codemirror-config.d.ts +36 -0
- package/dist/editor/codemirror-config.d.ts.map +1 -0
- package/dist/editor/codemirror-config.js +87 -0
- package/dist/editor/components/CorrectionTooltip.svelte +180 -160
- package/dist/editor/components/CorrectionTooltip.svelte.d.ts +7 -23
- package/dist/editor/components/CorrectionTooltip.svelte.d.ts.map +1 -1
- package/dist/editor/extensions/autocomplete.d.ts +2 -2
- package/dist/editor/extensions/autocomplete.d.ts.map +1 -1
- package/dist/editor/extensions/autocomplete.test.js +121 -0
- package/dist/editor/extensions/spellcheck.d.ts +21 -3
- package/dist/editor/extensions/spellcheck.d.ts.map +1 -1
- package/dist/editor/extensions/spellcheck.js +51 -9
- package/dist/editor/extensions/spellcheck.test.js +168 -0
- package/dist/editor/extensions/types.d.ts +2 -1
- package/dist/editor/extensions/types.d.ts.map +1 -1
- package/dist/editor/index.d.ts +2 -1
- package/dist/editor/index.d.ts.map +1 -1
- package/dist/editor/index.js +1 -0
- package/dist/editor/markdown-preview.d.ts +9 -0
- package/dist/editor/markdown-preview.d.ts.map +1 -0
- package/dist/editor/markdown-preview.js +19 -0
- package/dist/editor/markdown-preview.test.js +38 -0
- package/dist/editor/useCodeMirror.d.ts +23 -0
- package/dist/editor/useCodeMirror.d.ts.map +1 -0
- package/dist/editor/useCodeMirror.js +40 -0
- package/dist/editor/useFilePersistence.d.ts +32 -0
- package/dist/editor/useFilePersistence.d.ts.map +1 -0
- package/dist/editor/useFilePersistence.js +117 -0
- package/dist/entity-graph-view/WorldView.svelte +1 -1
- package/dist/fabric/ai/ChatPanel.svelte +84 -85
- package/dist/fabric/ai/ChatPanel.svelte.d.ts.map +1 -1
- package/dist/fabric/ai/ResearchPanel.svelte +35 -25
- package/dist/fabric/ai/ResearchPanel.svelte.d.ts.map +1 -1
- package/dist/fabric/data/FileTree.svelte +195 -0
- package/dist/fabric/data/FileTree.svelte.d.ts +19 -0
- package/dist/fabric/data/FileTree.svelte.d.ts.map +1 -0
- package/dist/fabric/data/FileTree.test.js +127 -0
- package/dist/fabric/data/index.d.ts +5 -9
- package/dist/fabric/data/index.d.ts.map +1 -1
- package/dist/fabric/data/index.js +4 -1
- package/dist/fabric/index.d.ts +5 -5
- package/dist/fabric/index.d.ts.map +1 -1
- package/dist/fabric/index.js +5 -3
- package/dist/fabric/input/{CommandBar.svelte → AppHeaderBar.svelte} +13 -13
- package/dist/fabric/input/{CommandBar.svelte.d.ts → AppHeaderBar.svelte.d.ts} +5 -5
- package/dist/fabric/input/AppHeaderBar.svelte.d.ts.map +1 -0
- package/dist/fabric/input/{CommandBar.test.js → AppHeaderBar.test.js} +9 -9
- package/dist/fabric/input/KeyboardShortcuts.svelte +23 -21
- package/dist/fabric/input/index.d.ts +2 -2
- package/dist/fabric/input/index.d.ts.map +1 -1
- package/dist/fabric/input/index.js +1 -1
- package/dist/fabric/layout/CollapsiblePanel.svelte +8 -10
- package/dist/fabric/layout/KanbanBoard.svelte +25 -155
- package/dist/fabric/layout/KanbanBoard.svelte.d.ts +2 -26
- package/dist/fabric/layout/KanbanBoard.svelte.d.ts.map +1 -1
- package/dist/fabric/layout/KanbanBoard.test.js +125 -10
- package/dist/fabric/layout/KanbanCard.svelte +27 -223
- package/dist/fabric/layout/KanbanCard.svelte.d.ts +2 -19
- package/dist/fabric/layout/KanbanCard.svelte.d.ts.map +1 -1
- package/dist/fabric/layout/KanbanColumn.svelte +41 -275
- package/dist/fabric/layout/KanbanColumn.svelte.d.ts +2 -22
- package/dist/fabric/layout/KanbanColumn.svelte.d.ts.map +1 -1
- package/dist/fabric/layout/index.d.ts +2 -5
- package/dist/fabric/layout/index.d.ts.map +1 -1
- package/dist/fabric/layout/index.js +1 -1
- package/dist/fabric/navigation/ActivityRail.svelte +3 -5
- package/dist/fabric/navigation/ActivityRail.svelte.d.ts.map +1 -1
- package/dist/g0-generative/components/Text.svelte +38 -0
- package/dist/g0-generative/components/Text.svelte.d.ts +9 -0
- package/dist/g0-generative/components/Text.svelte.d.ts.map +1 -0
- package/dist/g0-generative/index.d.ts +1 -0
- package/dist/g0-generative/index.d.ts.map +1 -1
- package/dist/g0-generative/index.js +1 -0
- package/dist/g0-generative/library/ComponentLibrary.d.ts +4 -0
- package/dist/g0-generative/library/ComponentLibrary.d.ts.map +1 -1
- package/dist/g0-generative/library/ComponentLibrary.js +10 -0
- package/dist/g0-generative/library/ComponentLibrary.test.js +135 -0
- package/dist/g0-generative/renderer/OpenUIRenderer.svelte +16 -56
- package/dist/g0-generative/renderer/OpenUIRenderer.svelte.d.ts.map +1 -1
- package/dist/g0-generative/renderer/OpenUIRenderer.test.js +143 -0
- package/dist/g0-geo/SovereignMap.svelte +13 -13
- package/dist/g0-geo/SovereignMap.svelte.d.ts.map +1 -1
- package/dist/index.d.ts +0 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -3
- package/dist/l0-layout/SectionSplitter.svelte +5 -5
- package/dist/l0-layout/block-writer/BlockContent.svelte +23 -22
- package/dist/l0-layout/block-writer/BlockContent.svelte.d.ts.map +1 -1
- package/dist/l0-layout/block-writer/BlockContent.test.js +47 -0
- package/dist/l0-layout/block-writer/BlockItem.svelte +6 -4
- package/dist/l0-layout/block-writer/markdown.js +11 -11
- package/dist/l0-layout/block-writer/markdown.test.js +81 -0
- package/dist/l0-layout/card/CompactCard.svelte +4 -3
- package/dist/l0-layout/card/StackedCard.svelte +87 -0
- package/dist/l0-layout/card/StackedCard.svelte.d.ts +9 -0
- package/dist/l0-layout/card/StackedCard.svelte.d.ts.map +1 -0
- package/dist/l0-layout/card/StackedCard.test.js +29 -0
- package/dist/l0-layout/grant/GrantCard.svelte +15 -5
- package/dist/l0-layout/grant/GrantCard.svelte.d.ts.map +1 -1
- package/dist/l0-layout/index.d.ts +3 -0
- package/dist/l0-layout/index.d.ts.map +1 -1
- package/dist/l0-layout/index.js +2 -0
- package/dist/l0-layout/kanban/KanbanBoard.svelte +246 -29
- package/dist/l0-layout/kanban/KanbanBoard.svelte.d.ts +28 -2
- package/dist/l0-layout/kanban/KanbanBoard.svelte.d.ts.map +1 -1
- package/dist/l0-layout/kanban/KanbanCard.svelte +175 -150
- package/dist/l0-layout/kanban/KanbanCard.svelte.d.ts +16 -18
- package/dist/l0-layout/kanban/KanbanCard.svelte.d.ts.map +1 -1
- package/dist/l0-layout/kanban/KanbanColumn.svelte +152 -78
- package/dist/l0-layout/kanban/KanbanColumn.svelte.d.ts +28 -7
- package/dist/l0-layout/kanban/KanbanColumn.svelte.d.ts.map +1 -1
- package/dist/l0-layout/kanban/index.d.ts +6 -0
- package/dist/l0-layout/kanban/index.d.ts.map +1 -0
- package/dist/l0-layout/kanban/index.js +3 -0
- package/dist/n0-node-graph/Node.svelte +2 -2
- package/dist/n0-node-graph/NodePalette.svelte +2 -2
- package/dist/n1-flow-canvas/FlowCanvas.svelte +50 -6
- package/dist/n1-flow-canvas/FlowCanvas.svelte.d.ts.map +1 -1
- package/dist/n1-flow-canvas/graph-state.test.js +69 -0
- package/dist/n1-flow-canvas/index.d.ts +2 -0
- package/dist/n1-flow-canvas/index.d.ts.map +1 -1
- package/dist/n1-flow-canvas/index.js +1 -0
- package/dist/n1-flow-canvas/pipeline-adapter.d.ts +37 -0
- package/dist/n1-flow-canvas/pipeline-adapter.d.ts.map +1 -0
- package/dist/n1-flow-canvas/pipeline-adapter.js +160 -0
- package/dist/n1-flow-canvas/utils.test.js +116 -0
- package/dist/n2-manifold-disk/ManifoldDisk.svelte +62 -35
- package/dist/n2-manifold-disk/ManifoldDisk.svelte.d.ts.map +1 -1
- package/dist/n3-force-graph/GraphTooltip.svelte +2 -2
- package/dist/n4-adaptive-manifold/AdaptiveManifold.svelte +34 -29
- package/dist/n4-adaptive-manifold/AdaptiveManifold.svelte.d.ts.map +1 -1
- package/dist/n4-adaptive-manifold/classifier.test.js +104 -0
- package/dist/n4-adaptive-manifold/n4-tokens.css +2 -2
- package/dist/n4-adaptive-manifold/types.d.ts +3 -0
- package/dist/n4-adaptive-manifold/types.d.ts.map +1 -1
- package/dist/p0-primitives/ThemeProvider.svelte +38 -18
- package/dist/p0-primitives/ThemeProvider.svelte.d.ts +6 -1
- package/dist/p0-primitives/ThemeProvider.svelte.d.ts.map +1 -1
- package/dist/p0-primitives/canvas-theme.d.ts +33 -1
- package/dist/p0-primitives/canvas-theme.d.ts.map +1 -1
- package/dist/p0-primitives/canvas-theme.js +82 -17
- package/dist/p0-primitives/debug.d.ts +6 -0
- package/dist/p0-primitives/debug.d.ts.map +1 -0
- package/dist/p0-primitives/debug.js +21 -0
- package/dist/p0-primitives/index.d.ts +2 -1
- package/dist/p0-primitives/index.d.ts.map +1 -1
- package/dist/p0-primitives/index.js +1 -0
- package/dist/p0-primitives/theme-context.d.ts +9 -0
- package/dist/p0-primitives/theme-context.d.ts.map +1 -0
- package/dist/p0-primitives/theme-context.js +8 -0
- package/dist/p0-primitives/theme.d.ts.map +1 -1
- package/dist/p0-primitives/theme.js +11 -31
- package/dist/p0-primitives/tokens/ambient.css +76 -0
- package/dist/p0-primitives/tokens/tokens.css +140 -34
- package/dist/p0-primitives/utils/index.d.ts +4 -2
- package/dist/p0-primitives/utils/index.d.ts.map +1 -1
- package/dist/p0-primitives/utils/index.js +1 -0
- package/dist/p0-primitives/utils/reveal.d.ts +15 -0
- package/dist/p0-primitives/utils/reveal.d.ts.map +1 -0
- package/dist/p0-primitives/utils/reveal.js +29 -0
- package/dist/p0-primitives/utils/reveal.test.js +95 -0
- package/dist/s0-state/SyncStatus.svelte +2 -2
- package/dist/s0-state/ThemeStore.svelte.d.ts +3 -2
- package/dist/s0-state/ThemeStore.svelte.d.ts.map +1 -1
- package/dist/s0-state/ThemeStore.svelte.js +20 -1
- package/dist/s0-state/index.d.ts +2 -2
- package/dist/s0-state/index.d.ts.map +1 -1
- package/dist/s0-state/index.js +3 -0
- package/dist/s0-state/modal-stack-store.svelte.d.ts +27 -2
- package/dist/s0-state/modal-stack-store.svelte.d.ts.map +1 -1
- package/dist/s0-state/modal-stack-store.svelte.js +21 -2
- package/dist/showcase/Showcase.svelte +43 -34
- package/dist/showcase/Showcase.svelte.d.ts.map +1 -1
- package/dist/spatial/BspTilingCanvas.svelte +5 -5
- package/dist/spatial/BspTilingSimulation.test.js +88 -0
- package/dist/spatial/CameraController.test.js +120 -0
- package/dist/spatial/ForceCanvas.svelte +18 -13
- package/dist/spatial/ForceCanvas.svelte.d.ts.map +1 -1
- package/dist/spatial/ForceSimulation.svelte.d.ts.map +1 -1
- package/dist/spatial/ForceSimulation.svelte.js +33 -22
- package/dist/spatial/LodRenderer.svelte +14 -1
- package/dist/spatial/LodRenderer.svelte.d.ts.map +1 -1
- package/dist/spatial/ParticleAssembleMark.svelte +285 -0
- package/dist/spatial/ParticleAssembleMark.svelte.d.ts +24 -0
- package/dist/spatial/ParticleAssembleMark.svelte.d.ts.map +1 -0
- package/dist/spatial/SnapZoomCamera.svelte +23 -13
- package/dist/spatial/SnapZoomCamera.svelte.d.ts.map +1 -1
- package/dist/spatial/ZoneTiler.svelte +3 -2
- package/dist/spatial/ZoneTiler.test.js +90 -0
- package/dist/spatial/d3-types.d.ts +31 -0
- package/dist/spatial/d3-types.d.ts.map +1 -0
- package/dist/spatial/d3-types.js +19 -0
- package/dist/spatial/index.js +1 -0
- package/dist/spatial/particle-assemble-math.d.ts +22 -0
- package/dist/spatial/particle-assemble-math.d.ts.map +1 -0
- package/dist/spatial/particle-assemble-math.js +26 -0
- package/dist/spatial/particle-assemble-math.test.js +56 -0
- package/dist/ssr-import-clean.test.js +37 -0
- package/dist/t0-transport/fs.d.ts +12 -0
- package/dist/t0-transport/fs.d.ts.map +1 -0
- package/dist/t0-transport/fs.js +55 -0
- package/dist/t0-transport/index.d.ts +1 -0
- package/dist/t0-transport/index.d.ts.map +1 -1
- package/dist/t0-transport/index.js +1 -0
- package/dist/t0-transport/invoke.d.ts.map +1 -1
- package/dist/t0-transport/invoke.js +5 -2
- package/dist/t0-transport/quality.d.ts +12 -3
- package/dist/t0-transport/quality.d.ts.map +1 -1
- package/dist/t0-transport/quality.js +17 -4
- package/dist/t0-transport/substrate.svelte.d.ts +27 -0
- package/dist/t0-transport/substrate.svelte.d.ts.map +1 -0
- package/dist/t0-transport/substrate.svelte.js +55 -0
- package/dist/u0-primitives/LockIndicator.svelte +17 -15
- package/dist/u0-primitives/VerticalToolbar.svelte +25 -22
- package/dist/u0-primitives/accordion/Accordion.svelte +14 -12
- package/dist/u0-primitives/accordion/Accordion.svelte.d.ts +0 -7
- package/dist/u0-primitives/accordion/Accordion.svelte.d.ts.map +1 -1
- package/dist/u0-primitives/accordion/Accordion.test.js +5 -5
- package/dist/u0-primitives/animated-icon/AnimatedIcon.svelte +3 -3
- package/dist/u0-primitives/animated-icon/AnimatedIcon.test.js +82 -0
- package/dist/u0-primitives/avatar/Avatar.svelte +14 -14
- package/dist/u0-primitives/avatar/Avatar.test.js +81 -0
- package/dist/u0-primitives/badge/Badge.svelte +6 -4
- package/dist/u0-primitives/badge/Badge.test.js +10 -10
- package/dist/u0-primitives/badge/ValidityBadge.svelte +4 -27
- package/dist/u0-primitives/badge/ValidityBadge.test.js +9 -9
- package/dist/u0-primitives/button/Button.svelte +18 -13
- package/dist/u0-primitives/button/Button.svelte.d.ts +1 -0
- package/dist/u0-primitives/button/Button.svelte.d.ts.map +1 -1
- package/dist/u0-primitives/button/Button.test.js +11 -11
- package/dist/u0-primitives/card/Card.svelte +60 -32
- package/dist/u0-primitives/card/Card.svelte.d.ts.map +1 -1
- package/dist/u0-primitives/card/Card.test.js +86 -0
- package/dist/u0-primitives/command-palette/CommandPalette.svelte +75 -43
- package/dist/u0-primitives/command-palette/CommandPalette.svelte.d.ts.map +1 -1
- package/dist/u0-primitives/command-palette/CommandPalette.test.js +202 -0
- package/dist/u0-primitives/command-palette/commandStore.svelte.d.ts.map +1 -1
- package/dist/u0-primitives/command-palette/commandStore.svelte.js +2 -1
- package/dist/u0-primitives/dropdown/Dropdown.svelte +20 -25
- package/dist/u0-primitives/dropdown/Dropdown.test.js +1 -1
- package/dist/u0-primitives/grant-badge/GrantStatusBadge.svelte +2 -2
- package/dist/u0-primitives/index.d.ts +8 -0
- package/dist/u0-primitives/index.d.ts.map +1 -1
- package/dist/u0-primitives/index.js +9 -0
- package/dist/u0-primitives/input/Input.svelte +85 -23
- package/dist/u0-primitives/input/Input.svelte.d.ts +2 -10
- package/dist/u0-primitives/input/Input.svelte.d.ts.map +1 -1
- package/dist/u0-primitives/input/Input.test.js +82 -2
- package/dist/u0-primitives/live-dot/LiveDot.svelte +56 -0
- package/dist/u0-primitives/live-dot/LiveDot.svelte.d.ts +11 -0
- package/dist/u0-primitives/live-dot/LiveDot.svelte.d.ts.map +1 -0
- package/dist/u0-primitives/live-dot/LiveDot.test.js +41 -0
- package/dist/u0-primitives/live-dot/index.d.ts +3 -0
- package/dist/u0-primitives/live-dot/index.d.ts.map +1 -0
- package/dist/u0-primitives/live-dot/index.js +1 -0
- package/dist/u0-primitives/modal/Modal.svelte +64 -38
- package/dist/u0-primitives/modal/Modal.svelte.d.ts.map +1 -1
- package/dist/u0-primitives/modal/Modal.test.js +63 -15
- package/dist/u0-primitives/rsvp/RsvpReader.svelte +8 -8
- package/dist/u0-primitives/rsvp/RsvpReader.svelte.d.ts.map +1 -1
- package/dist/u0-primitives/spinner/Spinner.svelte +11 -79
- package/dist/u0-primitives/spinner/Spinner.svelte.d.ts.map +1 -1
- package/dist/u0-primitives/steps/Steps.svelte +20 -21
- package/dist/u0-primitives/surface-state/SurfaceState.svelte +190 -0
- package/dist/u0-primitives/surface-state/SurfaceState.svelte.d.ts +15 -0
- package/dist/u0-primitives/surface-state/SurfaceState.svelte.d.ts.map +1 -0
- package/dist/u0-primitives/tabs/Tabs.svelte +13 -11
- package/dist/u0-primitives/theme-swatch-group/ThemeSwatchGroup.svelte +94 -0
- package/dist/u0-primitives/theme-swatch-group/ThemeSwatchGroup.svelte.d.ts +16 -0
- package/dist/u0-primitives/theme-swatch-group/ThemeSwatchGroup.svelte.d.ts.map +1 -0
- package/dist/u0-primitives/theme-swatch-group/ThemeSwatchGroup.test.js +48 -0
- package/dist/u0-primitives/theme-swatch-group/index.d.ts +3 -0
- package/dist/u0-primitives/theme-swatch-group/index.d.ts.map +1 -0
- package/dist/u0-primitives/theme-swatch-group/index.js +1 -0
- package/dist/u0-primitives/toggle/Toggle.svelte +22 -13
- package/dist/u0-primitives/tooltip/Tooltip.svelte +9 -9
- package/dist/u0-primitives/tooltip/Tooltip.test.js +12 -12
- package/dist/u0-primitives/web-components/button-component.d.ts +5 -1
- package/dist/u0-primitives/web-components/button-component.d.ts.map +1 -1
- package/dist/u0-primitives/web-components/button-component.js +72 -33
- package/dist/u0-primitives/web-components/index.d.ts +3 -0
- package/dist/u0-primitives/web-components/index.d.ts.map +1 -0
- package/dist/u0-primitives/web-components/index.js +2 -0
- package/dist/u0-primitives/web-components/input-component.d.ts +5 -1
- package/dist/u0-primitives/web-components/input-component.d.ts.map +1 -1
- package/dist/u0-primitives/web-components/input-component.js +56 -39
- package/dist/u0-primitives/web-components/web-components.test.js +96 -0
- package/dist/u0-primitives/window-frame/WindowFrame.svelte +87 -0
- package/dist/u0-primitives/window-frame/WindowFrame.svelte.d.ts +10 -0
- package/dist/u0-primitives/window-frame/WindowFrame.svelte.d.ts.map +1 -0
- package/dist/u0-primitives/window-frame/WindowFrame.test.js +31 -0
- package/dist/u0-primitives/window-frame/index.d.ts +3 -0
- package/dist/u0-primitives/window-frame/index.d.ts.map +1 -0
- package/dist/u0-primitives/window-frame/index.js +1 -0
- package/dist/v0-diagrams/MarkmapDiagram.test.js +49 -0
- package/dist/v0-diagrams/MermaidDiagram.svelte +21 -9
- package/dist/v0-diagrams/MermaidDiagram.svelte.d.ts.map +1 -1
- package/dist/v0-diagrams/MermaidDiagram.test.js +40 -0
- package/dist/x0-enchanted-blocks/components/NodepadBlock.svelte +11 -2
- package/dist/x0-enchanted-blocks/components/NodepadBlock.svelte.d.ts.map +1 -1
- package/package.json +57 -15
- package/src/n4-adaptive-manifold/n4-tokens.css +2 -2
- package/src/p0-primitives/tokens/ambient.css +76 -0
- package/src/p0-primitives/tokens/tokens.css +140 -34
- package/src/p0-primitives/tokens/tokens.json +55 -26
- package/dist/b0-app-shell/command-bar/CommandBar.svelte.d.ts.map +0 -1
- package/dist/fabric/input/CommandBar.svelte.d.ts.map +0 -1
- package/dist/stores/vaultStore.svelte +0 -14
- package/dist/stores/vaultStore.svelte.d.ts +0 -24
- package/dist/stores/vaultStore.svelte.d.ts.map +0 -1
- package/dist/tauri/index.d.ts +0 -3
- package/dist/tauri/index.d.ts.map +0 -1
- package/dist/tauri/index.js +0 -11
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RsvpReader.svelte.d.ts","sourceRoot":"","sources":["../../../src/u0-primitives/rsvp/RsvpReader.svelte.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"RsvpReader.svelte.d.ts","sourceRoot":"","sources":["../../../src/u0-primitives/rsvp/RsvpReader.svelte.ts"],"names":[],"mappings":"AAOC,KAAK,gBAAgB,GAAI;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB,CAAC;AAsIJ,QAAA,MAAM,UAAU,sDAAwC,CAAC;AACzD,KAAK,UAAU,GAAG,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC;AAChD,eAAe,UAAU,CAAC"}
|
|
@@ -14,11 +14,6 @@
|
|
|
14
14
|
|
|
15
15
|
<div class="ds-spinner-wrapper size-{size} color-{color} {className}" role="status" aria-label="Loading">
|
|
16
16
|
<div class="ds-spinner-ring"></div>
|
|
17
|
-
<div class="ds-spinner-core"></div>
|
|
18
|
-
<!-- Floating magical dust particles -->
|
|
19
|
-
<div class="ds-spinner-particle p1"></div>
|
|
20
|
-
<div class="ds-spinner-particle p2"></div>
|
|
21
|
-
<div class="ds-spinner-particle p3"></div>
|
|
22
17
|
</div>
|
|
23
18
|
|
|
24
19
|
<style>
|
|
@@ -29,69 +24,19 @@
|
|
|
29
24
|
justify-content: center;
|
|
30
25
|
}
|
|
31
26
|
|
|
32
|
-
/*
|
|
27
|
+
/* Mechanical ring — linear, no spring, no glow, no particles.
|
|
28
|
+
Identity comes from the accent edge alone. */
|
|
33
29
|
.ds-spinner-ring {
|
|
34
30
|
position: absolute;
|
|
35
31
|
inset: 0;
|
|
36
|
-
border
|
|
37
|
-
border: 2px solid transparent;
|
|
32
|
+
border: 2px solid var(--border-default);
|
|
38
33
|
border-top-color: currentColor;
|
|
39
34
|
border-right-color: currentColor;
|
|
40
|
-
|
|
41
|
-
animation: ds-spin 1s cubic-bezier(0.68, -0.55, 0.265, 1.55) infinite;
|
|
35
|
+
animation: ds-spin 0.7s linear infinite;
|
|
42
36
|
}
|
|
43
37
|
|
|
44
|
-
/* Inner Core */
|
|
45
|
-
.ds-spinner-core {
|
|
46
|
-
position: absolute;
|
|
47
|
-
inset: 20%;
|
|
48
|
-
border-radius: var(--radius-full);
|
|
49
|
-
background: currentColor;
|
|
50
|
-
opacity: 0.3;
|
|
51
|
-
filter: blur(4px);
|
|
52
|
-
animation: ds-pulse-core 2s ease-in-out infinite alternate;
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
/* Magical Dust Particles */
|
|
56
|
-
.ds-spinner-particle {
|
|
57
|
-
position: absolute;
|
|
58
|
-
width: 3px;
|
|
59
|
-
height: 3px;
|
|
60
|
-
border-radius: var(--radius-full);
|
|
61
|
-
background: currentColor;
|
|
62
|
-
opacity: 0;
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
.p1 { animation: ds-particle-drift-1 2s ease-out infinite; top: 10%; left: 10%; }
|
|
66
|
-
.p2 { animation: ds-particle-drift-2 2.5s ease-out infinite 0.5s; bottom: 10%; right: 10%; }
|
|
67
|
-
.p3 { animation: ds-particle-drift-3 1.8s ease-out infinite 1s; top: 10%; right: 20%; }
|
|
68
|
-
|
|
69
38
|
@keyframes ds-spin {
|
|
70
|
-
|
|
71
|
-
100% { transform: rotate(360deg); }
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
@keyframes ds-pulse-core {
|
|
75
|
-
0% { transform: scale(0.8); opacity: 0.2; }
|
|
76
|
-
100% { transform: scale(1.2); opacity: 0.5; }
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
@keyframes ds-particle-drift-1 {
|
|
80
|
-
0% { transform: translate(0, 0) scale(0); opacity: 0; }
|
|
81
|
-
50% { transform: translate(-10px, -15px) scale(1); opacity: 0.8; }
|
|
82
|
-
100% { transform: translate(-20px, -30px) scale(0); opacity: 0; }
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
@keyframes ds-particle-drift-2 {
|
|
86
|
-
0% { transform: translate(0, 0) scale(0); opacity: 0; }
|
|
87
|
-
50% { transform: translate(15px, 10px) scale(1.2); opacity: 0.6; }
|
|
88
|
-
100% { transform: translate(30px, 20px) scale(0); opacity: 0; }
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
@keyframes ds-particle-drift-3 {
|
|
92
|
-
0% { transform: translate(0, 0) scale(0); opacity: 0; }
|
|
93
|
-
50% { transform: translate(10px, -20px) scale(0.8); opacity: 0.9; }
|
|
94
|
-
100% { transform: translate(20px, -40px) scale(0); opacity: 0; }
|
|
39
|
+
to { transform: rotate(360deg); }
|
|
95
40
|
}
|
|
96
41
|
|
|
97
42
|
/* --- Sizes --- */
|
|
@@ -102,28 +47,15 @@
|
|
|
102
47
|
.size-xl { width: 4.5rem; height: 4.5rem; }
|
|
103
48
|
.size-xl .ds-spinner-ring { border-width: 4px; }
|
|
104
49
|
|
|
105
|
-
/*
|
|
106
|
-
.color-accent {
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
.color-muted {
|
|
112
|
-
color: var(--color-text-muted);
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
.color-white {
|
|
116
|
-
color: var(--color-text-primary);
|
|
117
|
-
filter: drop-shadow(0 0 4px rgba(255,255,255,0.4));
|
|
118
|
-
}
|
|
50
|
+
/* Colors — no glow/drop-shadow; depth from the 2-tone border only */
|
|
51
|
+
.color-accent { color: var(--color-accent); }
|
|
52
|
+
.color-muted { color: var(--color-text-muted); }
|
|
53
|
+
.color-white { color: var(--color-text-primary); }
|
|
119
54
|
|
|
120
|
-
/* Reduced motion */
|
|
55
|
+
/* Reduced motion — slow the ring to a near-stop */
|
|
121
56
|
@media (prefers-reduced-motion: reduce) {
|
|
122
57
|
.ds-spinner-ring {
|
|
123
|
-
animation: ds-spin
|
|
124
|
-
}
|
|
125
|
-
.ds-spinner-core, .ds-spinner-particle {
|
|
126
|
-
display: none;
|
|
58
|
+
animation: ds-spin 3s linear infinite;
|
|
127
59
|
}
|
|
128
60
|
}
|
|
129
61
|
</style>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Spinner.svelte.d.ts","sourceRoot":"","sources":["../../../src/u0-primitives/spinner/Spinner.svelte.ts"],"names":[],"mappings":"AAGE,MAAM,WAAW,KAAK;IACpB,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IACjC,KAAK,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,OAAO,CAAC;IACrC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;
|
|
1
|
+
{"version":3,"file":"Spinner.svelte.d.ts","sourceRoot":"","sources":["../../../src/u0-primitives/spinner/Spinner.svelte.ts"],"names":[],"mappings":"AAGE,MAAM,WAAW,KAAK;IACpB,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IACjC,KAAK,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,OAAO,CAAC;IACrC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAmBH,QAAA,MAAM,OAAO,2CAAwC,CAAC;AACtD,KAAK,OAAO,GAAG,UAAU,CAAC,OAAO,OAAO,CAAC,CAAC;AAC1C,eAAe,OAAO,CAAC"}
|
|
@@ -93,7 +93,7 @@
|
|
|
93
93
|
color: var(--color-text-secondary, #a09880);
|
|
94
94
|
}
|
|
95
95
|
|
|
96
|
-
.steps
|
|
96
|
+
.steps:not(.vertical) {
|
|
97
97
|
flex-direction: column;
|
|
98
98
|
align-items: stretch;
|
|
99
99
|
}
|
|
@@ -104,26 +104,30 @@
|
|
|
104
104
|
gap: var(--space-3, 0.75rem);
|
|
105
105
|
}
|
|
106
106
|
|
|
107
|
+
/* Square step indicator — mechanical numbering, not progress pills */
|
|
107
108
|
.step-circle {
|
|
108
109
|
display: flex;
|
|
109
110
|
align-items: center;
|
|
110
111
|
justify-content: center;
|
|
111
|
-
border-radius:
|
|
112
|
-
|
|
113
|
-
|
|
112
|
+
border-radius: 0;
|
|
113
|
+
border: 1px solid var(--border-default);
|
|
114
|
+
background: var(--color-bg-panel);
|
|
115
|
+
color: var(--color-text-secondary);
|
|
114
116
|
flex-shrink: 0;
|
|
117
|
+
font-family: var(--font-mono);
|
|
115
118
|
font-weight: 600;
|
|
116
119
|
}
|
|
117
120
|
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
121
|
+
.step-circle.completed {
|
|
122
|
+
background: color-mix(in srgb, var(--color-success) 15%, transparent);
|
|
123
|
+
border-color: var(--color-success);
|
|
124
|
+
color: var(--color-success);
|
|
125
|
+
}
|
|
122
126
|
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
+
.step-circle.active {
|
|
128
|
+
border-color: var(--color-accent);
|
|
129
|
+
color: var(--color-accent);
|
|
130
|
+
background: var(--color-accent-subtle);
|
|
127
131
|
}
|
|
128
132
|
|
|
129
133
|
.step-content {
|
|
@@ -143,23 +147,18 @@
|
|
|
143
147
|
}
|
|
144
148
|
|
|
145
149
|
.connector-line {
|
|
146
|
-
background: var(--
|
|
150
|
+
background: var(--border-default);
|
|
147
151
|
flex-shrink: 0;
|
|
148
152
|
}
|
|
149
153
|
|
|
150
|
-
.connector-line.first
|
|
151
|
-
border-top-left-radius: var(--radius-sm, 0.125rem);
|
|
152
|
-
border-top-right-radius: var(--radius-sm, 0.125rem);
|
|
153
|
-
}
|
|
154
|
-
|
|
154
|
+
.connector-line.first,
|
|
155
155
|
.connector-line.last {
|
|
156
|
-
border-
|
|
157
|
-
border-bottom-right-radius: var(--radius-sm, 0.125rem);
|
|
156
|
+
border-radius: 0;
|
|
158
157
|
}
|
|
159
158
|
|
|
160
159
|
/* Responsive adjustments */
|
|
161
160
|
@media (max-width: 640px) {
|
|
162
|
-
.steps
|
|
161
|
+
.steps.vertical {
|
|
163
162
|
flex-direction: column;
|
|
164
163
|
align-items: flex-start;
|
|
165
164
|
}
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import type { Snippet } from 'svelte';
|
|
3
|
+
import Spinner from '../spinner/Spinner.svelte';
|
|
4
|
+
import Button from '../button/Button.svelte';
|
|
5
|
+
|
|
6
|
+
export type SurfaceStateKind = 'loading' | 'empty' | 'error' | 'degraded';
|
|
7
|
+
|
|
8
|
+
export interface Props {
|
|
9
|
+
state: SurfaceStateKind;
|
|
10
|
+
title?: string;
|
|
11
|
+
message?: string;
|
|
12
|
+
actionLabel?: string;
|
|
13
|
+
onRetry?: () => void | Promise<void>;
|
|
14
|
+
class?: string;
|
|
15
|
+
children?: Snippet;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
let {
|
|
19
|
+
state,
|
|
20
|
+
title,
|
|
21
|
+
message,
|
|
22
|
+
actionLabel,
|
|
23
|
+
onRetry,
|
|
24
|
+
class: className = '',
|
|
25
|
+
children,
|
|
26
|
+
}: Props = $props();
|
|
27
|
+
|
|
28
|
+
const effectiveTitle = $derived(
|
|
29
|
+
title ??
|
|
30
|
+
(state === 'loading'
|
|
31
|
+
? 'Loading'
|
|
32
|
+
: state === 'empty'
|
|
33
|
+
? 'Nothing here yet'
|
|
34
|
+
: state === 'error'
|
|
35
|
+
? 'Something went wrong'
|
|
36
|
+
: 'Substrate offline')
|
|
37
|
+
);
|
|
38
|
+
|
|
39
|
+
const effectiveMessage = $derived(
|
|
40
|
+
message ??
|
|
41
|
+
(state === 'loading'
|
|
42
|
+
? 'Preparing the surface…'
|
|
43
|
+
: state === 'empty'
|
|
44
|
+
? 'No content is available for this view.'
|
|
45
|
+
: state === 'error'
|
|
46
|
+
? 'The operation could not be completed. Please try again.'
|
|
47
|
+
: 'The SOVEREIGN daemon isn’t responding. Your data is safe; reconnect to continue.')
|
|
48
|
+
);
|
|
49
|
+
|
|
50
|
+
const effectiveActionLabel = $derived(actionLabel ?? (state === 'degraded' ? 'Retry' : 'Try again'));
|
|
51
|
+
|
|
52
|
+
const isBusy = $derived(state === 'loading' || state === 'degraded');
|
|
53
|
+
const showAction = $derived(state === 'error' || state === 'degraded');
|
|
54
|
+
</script>
|
|
55
|
+
|
|
56
|
+
<section
|
|
57
|
+
class="ds-surface-state state-{state} {className}"
|
|
58
|
+
role="status"
|
|
59
|
+
aria-live="polite"
|
|
60
|
+
>
|
|
61
|
+
<div class="ds-surface-state__icon" aria-hidden="true">
|
|
62
|
+
{#if isBusy}
|
|
63
|
+
<Spinner size="md" color="accent" />
|
|
64
|
+
{:else if state === 'empty'}
|
|
65
|
+
<span class="ds-surface-state__glyph">∅</span>
|
|
66
|
+
{:else}
|
|
67
|
+
<span class="ds-surface-state__glyph">!</span>
|
|
68
|
+
{/if}
|
|
69
|
+
</div>
|
|
70
|
+
|
|
71
|
+
<div class="ds-surface-state__content">
|
|
72
|
+
<h2 class="ds-surface-state__title">{effectiveTitle}</h2>
|
|
73
|
+
{#if effectiveMessage}
|
|
74
|
+
<p class="ds-surface-state__message">{effectiveMessage}</p>
|
|
75
|
+
{/if}
|
|
76
|
+
{#if children}
|
|
77
|
+
<div class="ds-surface-state__children">
|
|
78
|
+
{@render children()}
|
|
79
|
+
</div>
|
|
80
|
+
{/if}
|
|
81
|
+
</div>
|
|
82
|
+
|
|
83
|
+
{#if showAction}
|
|
84
|
+
<div class="ds-surface-state__actions">
|
|
85
|
+
<Button variant={state === 'error' ? 'danger' : 'secondary'} size="sm" disabled={!onRetry} onclick={() => void onRetry?.()}>
|
|
86
|
+
{effectiveActionLabel}
|
|
87
|
+
</Button>
|
|
88
|
+
|
|
89
|
+
</div>
|
|
90
|
+
{/if}
|
|
91
|
+
</section>
|
|
92
|
+
|
|
93
|
+
<style>
|
|
94
|
+
.ds-surface-state {
|
|
95
|
+
display: flex;
|
|
96
|
+
align-items: center;
|
|
97
|
+
justify-content: center;
|
|
98
|
+
gap: var(--space-3);
|
|
99
|
+
min-height: 14rem;
|
|
100
|
+
padding: var(--space-6);
|
|
101
|
+
border: 1px solid var(--border-subtle);
|
|
102
|
+
background: var(--color-bg-panel-elevated);
|
|
103
|
+
color: var(--color-text-primary);
|
|
104
|
+
text-align: center;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
.ds-surface-state__icon {
|
|
108
|
+
display: inline-flex;
|
|
109
|
+
align-items: center;
|
|
110
|
+
justify-content: center;
|
|
111
|
+
width: 2.5rem;
|
|
112
|
+
height: 2.5rem;
|
|
113
|
+
flex-shrink: 0;
|
|
114
|
+
border: 1px solid var(--border-default);
|
|
115
|
+
background: var(--color-bg-app);
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
.state-error .ds-surface-state__icon,
|
|
119
|
+
.state-degraded .ds-surface-state__icon {
|
|
120
|
+
border-color: color-mix(in srgb, var(--color-error) 45%, var(--border-default));
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
.state-empty .ds-surface-state__icon {
|
|
124
|
+
border-color: var(--border-default);
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
.ds-surface-state__glyph {
|
|
128
|
+
font-family: var(--font-mono);
|
|
129
|
+
font-size: var(--text-xl);
|
|
130
|
+
font-weight: 700;
|
|
131
|
+
color: var(--color-text-primary);
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
.state-error .ds-surface-state__glyph,
|
|
135
|
+
.state-degraded .ds-surface-state__glyph {
|
|
136
|
+
color: var(--color-error);
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
.state-empty .ds-surface-state__glyph {
|
|
140
|
+
color: var(--color-text-muted);
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
.ds-surface-state__content {
|
|
144
|
+
display: flex;
|
|
145
|
+
flex: 1;
|
|
146
|
+
min-width: 0;
|
|
147
|
+
flex-direction: column;
|
|
148
|
+
gap: var(--space-1);
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
.ds-surface-state__title {
|
|
152
|
+
margin: 0;
|
|
153
|
+
font-family: var(--font-mono);
|
|
154
|
+
font-size: var(--ui-font);
|
|
155
|
+
font-weight: 600;
|
|
156
|
+
letter-spacing: 0.06em;
|
|
157
|
+
text-transform: uppercase;
|
|
158
|
+
color: var(--color-text-secondary);
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
.ds-surface-state__message {
|
|
162
|
+
margin: 0;
|
|
163
|
+
max-width: 34rem;
|
|
164
|
+
color: var(--color-text-secondary);
|
|
165
|
+
font-size: var(--text-sm);
|
|
166
|
+
line-height: 1.5;
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
.ds-surface-state__children {
|
|
170
|
+
margin-top: var(--space-2);
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
.ds-surface-state__actions {
|
|
174
|
+
display: flex;
|
|
175
|
+
align-items: center;
|
|
176
|
+
justify-content: center;
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
@media (max-width: 42rem) {
|
|
180
|
+
.ds-surface-state {
|
|
181
|
+
align-items: flex-start;
|
|
182
|
+
flex-direction: column;
|
|
183
|
+
text-align: left;
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
.ds-surface-state__actions {
|
|
187
|
+
justify-content: flex-start;
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
</style>
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { Snippet } from 'svelte';
|
|
2
|
+
export type SurfaceStateKind = 'loading' | 'empty' | 'error' | 'degraded';
|
|
3
|
+
export interface Props {
|
|
4
|
+
state: SurfaceStateKind;
|
|
5
|
+
title?: string;
|
|
6
|
+
message?: string;
|
|
7
|
+
actionLabel?: string;
|
|
8
|
+
onRetry?: () => void | Promise<void>;
|
|
9
|
+
class?: string;
|
|
10
|
+
children?: Snippet;
|
|
11
|
+
}
|
|
12
|
+
declare const SurfaceState: import("svelte").Component<Props, {}, "">;
|
|
13
|
+
type SurfaceState = ReturnType<typeof SurfaceState>;
|
|
14
|
+
export default SurfaceState;
|
|
15
|
+
//# sourceMappingURL=SurfaceState.svelte.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SurfaceState.svelte.d.ts","sourceRoot":"","sources":["../../../src/u0-primitives/surface-state/SurfaceState.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAKpC,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,OAAO,GAAG,OAAO,GAAG,UAAU,CAAC;AAE1E,MAAM,WAAW,KAAK;IACpB,KAAK,EAAE,gBAAgB,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAmFH,QAAA,MAAM,YAAY,2CAAwC,CAAC;AAC3D,KAAK,YAAY,GAAG,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC;AACpD,eAAe,YAAY,CAAC"}
|
|
@@ -151,15 +151,18 @@
|
|
|
151
151
|
align-items: center;
|
|
152
152
|
justify-content: center;
|
|
153
153
|
gap: var(--space-2);
|
|
154
|
-
padding: var(--
|
|
154
|
+
padding: var(--ui-pad-y) var(--ui-pad-x);
|
|
155
|
+
height: var(--ui-control-h);
|
|
155
156
|
background: transparent;
|
|
156
157
|
border: none;
|
|
157
158
|
color: var(--color-text-secondary);
|
|
158
|
-
font-family: var(--font-
|
|
159
|
-
font-size: var(--
|
|
160
|
-
font-weight:
|
|
159
|
+
font-family: var(--font-mono);
|
|
160
|
+
font-size: var(--ui-label);
|
|
161
|
+
font-weight: 600;
|
|
162
|
+
letter-spacing: 0.08em;
|
|
163
|
+
text-transform: uppercase;
|
|
161
164
|
cursor: pointer;
|
|
162
|
-
transition: color var(--transition-fast), background var(--transition-fast);
|
|
165
|
+
transition: color var(--transition-fast) linear, background var(--transition-fast) linear;
|
|
163
166
|
white-space: nowrap;
|
|
164
167
|
z-index: 1;
|
|
165
168
|
}
|
|
@@ -197,6 +200,7 @@
|
|
|
197
200
|
height: 1.1em;
|
|
198
201
|
}
|
|
199
202
|
|
|
203
|
+
/* Active indicator: crisp 2px live edge, no bounce, no glow */
|
|
200
204
|
.ds-tab::after {
|
|
201
205
|
content: '';
|
|
202
206
|
position: absolute;
|
|
@@ -206,9 +210,8 @@
|
|
|
206
210
|
height: 2px;
|
|
207
211
|
background: var(--color-accent);
|
|
208
212
|
transform: scaleX(0);
|
|
209
|
-
transition: transform var(--transition-
|
|
210
|
-
transform-origin:
|
|
211
|
-
box-shadow: 0 -1px 4px var(--color-accent-glow);
|
|
213
|
+
transition: transform var(--transition-fast) linear;
|
|
214
|
+
transform-origin: left;
|
|
212
215
|
}
|
|
213
216
|
|
|
214
217
|
.ds-tab.is-active::after {
|
|
@@ -218,8 +221,7 @@
|
|
|
218
221
|
.ds-tab:focus-visible::before {
|
|
219
222
|
content: '';
|
|
220
223
|
position: absolute;
|
|
221
|
-
inset:
|
|
222
|
-
border
|
|
223
|
-
border: 2px solid var(--color-accent-subtle);
|
|
224
|
+
inset: 2px;
|
|
225
|
+
border: 1.5px solid var(--color-accent);
|
|
224
226
|
}
|
|
225
227
|
</style>
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
export interface Swatch {
|
|
3
|
+
hex: string;
|
|
4
|
+
label: string;
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
export interface Props {
|
|
8
|
+
swatches: Swatch[];
|
|
9
|
+
value?: string;
|
|
10
|
+
size?: 'sm' | 'md' | 'lg';
|
|
11
|
+
class?: string;
|
|
12
|
+
'aria-label'?: string;
|
|
13
|
+
onSelect?: (hex: string) => void;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
let {
|
|
17
|
+
swatches,
|
|
18
|
+
value = $bindable(''),
|
|
19
|
+
size = 'md',
|
|
20
|
+
class: className = '',
|
|
21
|
+
'aria-label': ariaLabel = 'Accent color',
|
|
22
|
+
onSelect
|
|
23
|
+
}: Props = $props();
|
|
24
|
+
|
|
25
|
+
function select(hex: string) {
|
|
26
|
+
value = hex;
|
|
27
|
+
onSelect?.(hex);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
function handleKeydown(e: KeyboardEvent, hex: string) {
|
|
31
|
+
if (e.key === 'Enter' || e.key === ' ') {
|
|
32
|
+
e.preventDefault();
|
|
33
|
+
select(hex);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
</script>
|
|
37
|
+
|
|
38
|
+
<div class="ds-theme-swatch-group size-{size} {className}" role="radiogroup" aria-label={ariaLabel}>
|
|
39
|
+
{#each swatches as swatch (swatch.hex)}
|
|
40
|
+
<button
|
|
41
|
+
type="button"
|
|
42
|
+
class="ds-theme-swatch"
|
|
43
|
+
class:is-active={value === swatch.hex}
|
|
44
|
+
style="--swatch-hex: {swatch.hex}; --swatch-hex-2: color-mix(in oklab, {swatch.hex}, #fff 26%);"
|
|
45
|
+
role="radio"
|
|
46
|
+
aria-checked={value === swatch.hex}
|
|
47
|
+
aria-label={swatch.label}
|
|
48
|
+
title={swatch.label}
|
|
49
|
+
onclick={() => select(swatch.hex)}
|
|
50
|
+
onkeydown={(e) => handleKeydown(e, swatch.hex)}
|
|
51
|
+
></button>
|
|
52
|
+
{/each}
|
|
53
|
+
</div>
|
|
54
|
+
|
|
55
|
+
<style>
|
|
56
|
+
.ds-theme-swatch-group {
|
|
57
|
+
display: inline-flex;
|
|
58
|
+
align-items: center;
|
|
59
|
+
gap: 0.5rem;
|
|
60
|
+
padding: 0.25rem 0.5rem;
|
|
61
|
+
border: var(--border-width-thin) solid var(--border-default);
|
|
62
|
+
border-radius: var(--radius-full);
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
.ds-theme-swatch {
|
|
66
|
+
padding: 0;
|
|
67
|
+
border: 2px solid transparent;
|
|
68
|
+
border-radius: var(--radius-full);
|
|
69
|
+
background: linear-gradient(135deg, var(--swatch-hex) 0%, var(--swatch-hex-2) 100%);
|
|
70
|
+
cursor: pointer;
|
|
71
|
+
transition: transform var(--transition-fast), border-color var(--transition-fast);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
.size-sm .ds-theme-swatch { width: 0.875rem; height: 0.875rem; }
|
|
75
|
+
.size-md .ds-theme-swatch { width: 1.125rem; height: 1.125rem; }
|
|
76
|
+
.size-lg .ds-theme-swatch { width: 1.375rem; height: 1.375rem; }
|
|
77
|
+
|
|
78
|
+
.ds-theme-swatch:hover {
|
|
79
|
+
transform: scale(1.12);
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
.ds-theme-swatch.is-active {
|
|
83
|
+
border-color: var(--color-text-primary);
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
.ds-theme-swatch:focus-visible {
|
|
87
|
+
outline: 2px solid var(--color-accent);
|
|
88
|
+
outline-offset: 2px;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
@media (prefers-reduced-motion: reduce) {
|
|
92
|
+
.ds-theme-swatch { transition: none; }
|
|
93
|
+
}
|
|
94
|
+
</style>
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export interface Swatch {
|
|
2
|
+
hex: string;
|
|
3
|
+
label: string;
|
|
4
|
+
}
|
|
5
|
+
export interface Props {
|
|
6
|
+
swatches: Swatch[];
|
|
7
|
+
value?: string;
|
|
8
|
+
size?: 'sm' | 'md' | 'lg';
|
|
9
|
+
class?: string;
|
|
10
|
+
'aria-label'?: string;
|
|
11
|
+
onSelect?: (hex: string) => void;
|
|
12
|
+
}
|
|
13
|
+
declare const ThemeSwatchGroup: import("svelte").Component<Props, {}, "value">;
|
|
14
|
+
type ThemeSwatchGroup = ReturnType<typeof ThemeSwatchGroup>;
|
|
15
|
+
export default ThemeSwatchGroup;
|
|
16
|
+
//# sourceMappingURL=ThemeSwatchGroup.svelte.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ThemeSwatchGroup.svelte.d.ts","sourceRoot":"","sources":["../../../src/u0-primitives/theme-swatch-group/ThemeSwatchGroup.svelte.ts"],"names":[],"mappings":"AAGE,MAAM,WAAW,MAAM;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,KAAK;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CAClC;AAqCH,QAAA,MAAM,gBAAgB,gDAAwC,CAAC;AAC/D,KAAK,gBAAgB,GAAG,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAC5D,eAAe,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { afterEach, describe, it, expect, vi } from 'vitest';
|
|
2
|
+
import { cleanup, render, screen, fireEvent } from '@testing-library/svelte';
|
|
3
|
+
import ThemeSwatchGroup from './ThemeSwatchGroup.svelte';
|
|
4
|
+
const swatches = [
|
|
5
|
+
{ hex: '#b87333', label: 'Brass' },
|
|
6
|
+
{ hex: '#4fa8a2', label: 'Teal' },
|
|
7
|
+
{ hex: '#c14a4a', label: 'Crimson' }
|
|
8
|
+
];
|
|
9
|
+
describe('ThemeSwatchGroup', () => {
|
|
10
|
+
afterEach(() => cleanup());
|
|
11
|
+
it('renders a radiogroup with one radio per swatch', () => {
|
|
12
|
+
render(ThemeSwatchGroup, { swatches });
|
|
13
|
+
expect(screen.getByRole('radiogroup')).toBeDefined();
|
|
14
|
+
expect(screen.getAllByRole('radio')).toHaveLength(3);
|
|
15
|
+
});
|
|
16
|
+
it('marks the swatch matching value as checked', () => {
|
|
17
|
+
render(ThemeSwatchGroup, { swatches, value: '#4fa8a2' });
|
|
18
|
+
const radios = screen.getAllByRole('radio');
|
|
19
|
+
expect(radios[1].getAttribute('aria-checked')).toBe('true');
|
|
20
|
+
expect(radios[0].getAttribute('aria-checked')).toBe('false');
|
|
21
|
+
});
|
|
22
|
+
it('calls onSelect with the clicked swatch hex', async () => {
|
|
23
|
+
const onSelect = vi.fn();
|
|
24
|
+
render(ThemeSwatchGroup, { swatches, onSelect });
|
|
25
|
+
const radios = screen.getAllByRole('radio');
|
|
26
|
+
await fireEvent.click(radios[2]);
|
|
27
|
+
expect(onSelect).toHaveBeenCalledWith('#c14a4a');
|
|
28
|
+
});
|
|
29
|
+
it('selects on Enter and Space keydown', async () => {
|
|
30
|
+
const onSelect = vi.fn();
|
|
31
|
+
render(ThemeSwatchGroup, { swatches, onSelect });
|
|
32
|
+
const radios = screen.getAllByRole('radio');
|
|
33
|
+
await fireEvent.keyDown(radios[0], { key: 'Enter' });
|
|
34
|
+
expect(onSelect).toHaveBeenCalledWith('#b87333');
|
|
35
|
+
await fireEvent.keyDown(radios[1], { key: ' ' });
|
|
36
|
+
expect(onSelect).toHaveBeenCalledWith('#4fa8a2');
|
|
37
|
+
});
|
|
38
|
+
it('uses each swatch label as its aria-label', () => {
|
|
39
|
+
render(ThemeSwatchGroup, { swatches });
|
|
40
|
+
expect(screen.getByLabelText('Brass')).toBeDefined();
|
|
41
|
+
expect(screen.getByLabelText('Teal')).toBeDefined();
|
|
42
|
+
expect(screen.getByLabelText('Crimson')).toBeDefined();
|
|
43
|
+
});
|
|
44
|
+
it('applies size class', () => {
|
|
45
|
+
const { container } = render(ThemeSwatchGroup, { swatches, size: 'lg' });
|
|
46
|
+
expect(container.querySelector('.size-lg')).not.toBeNull();
|
|
47
|
+
});
|
|
48
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/u0-primitives/theme-swatch-group/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AACxE,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default as ThemeSwatchGroup } from './ThemeSwatchGroup.svelte';
|