@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
|
@@ -30,14 +30,10 @@ export const defaultDarkTheme = {
|
|
|
30
30
|
colorFgSecondary: '#a8a08c',
|
|
31
31
|
colorFgTertiary: '#6b6558',
|
|
32
32
|
colorFgMuted: '#3a3630',
|
|
33
|
-
// Accent
|
|
33
|
+
// Accent — SEED ONLY. tokens.css derives hover/active/subtle/glow/muted/faint
|
|
34
|
+
// from --accent-primary via color-mix; emitting derived values here would
|
|
35
|
+
// override and de-sync the single-seed engine (re-introducing the brass leak).
|
|
34
36
|
colorAccent: '#b87333',
|
|
35
|
-
colorAccentHover: '#d4892f',
|
|
36
|
-
colorAccentActive: '#8a5526',
|
|
37
|
-
colorAccentSubtle: 'rgba(184, 115, 51, 0.08)',
|
|
38
|
-
colorAccentGlow: 'rgba(184, 115, 51, 0.28)',
|
|
39
|
-
colorAccentMuted: 'rgba(184, 115, 51, 0.16)',
|
|
40
|
-
colorAccentFaint: 'rgba(184, 115, 51, 0.04)',
|
|
41
37
|
// Telemetry
|
|
42
38
|
colorSuccess: '#4fa8a2',
|
|
43
39
|
colorWarning: '#d4a04c',
|
|
@@ -66,14 +62,8 @@ export const defaultLightTheme = {
|
|
|
66
62
|
colorFgSecondary: '#5a5a5a',
|
|
67
63
|
colorFgTertiary: '#8a8a8a',
|
|
68
64
|
colorFgMuted: '#a0a0a0',
|
|
69
|
-
// Accent (
|
|
65
|
+
// Accent — SEED ONLY (CSS engine derives the ramp).
|
|
70
66
|
colorAccent: '#b87333',
|
|
71
|
-
colorAccentHover: '#c9894f',
|
|
72
|
-
colorAccentActive: '#9a5f2a',
|
|
73
|
-
colorAccentSubtle: 'rgba(184, 115, 51, 0.12)',
|
|
74
|
-
colorAccentGlow: 'rgba(184, 115, 51, 0.2)',
|
|
75
|
-
colorAccentMuted: 'rgba(184, 115, 51, 0.15)',
|
|
76
|
-
colorAccentFaint: 'rgba(184, 115, 51, 0.06)',
|
|
77
67
|
// Feedback
|
|
78
68
|
colorSuccess: '#5a8a6e',
|
|
79
69
|
colorWarning: '#b8956b',
|
|
@@ -100,13 +90,8 @@ export const controlRoomTheme = {
|
|
|
100
90
|
colorFgSecondary: '#888888',
|
|
101
91
|
colorFgTertiary: '#555555',
|
|
102
92
|
colorFgMuted: '#333333',
|
|
93
|
+
// Accent — SEED ONLY (CSS engine derives the ramp).
|
|
103
94
|
colorAccent: '#00ff41',
|
|
104
|
-
colorAccentHover: '#33ff66',
|
|
105
|
-
colorAccentActive: '#00cc33',
|
|
106
|
-
colorAccentSubtle: 'rgba(0, 255, 65, 0.1)',
|
|
107
|
-
colorAccentGlow: 'rgba(0, 255, 65, 0.3)',
|
|
108
|
-
colorAccentMuted: 'rgba(0, 255, 65, 0.2)',
|
|
109
|
-
colorAccentFaint: 'rgba(0, 255, 65, 0.05)',
|
|
110
95
|
colorSuccess: '#00ff41',
|
|
111
96
|
colorWarning: '#ff8c00',
|
|
112
97
|
colorError: '#ff3131',
|
|
@@ -121,19 +106,16 @@ export const controlRoomTheme = {
|
|
|
121
106
|
* Brass accent theme variant — warm metallic (preserved for compatibility)
|
|
122
107
|
*/
|
|
123
108
|
export const brassAccentTheme = createTheme(defaultDarkTheme, {
|
|
124
|
-
colorAccent: '#b87333',
|
|
125
|
-
colorAccentHover: '#d4892f',
|
|
126
|
-
colorAccentActive: '#8a5526',
|
|
127
|
-
colorAccentSubtle: 'rgba(184, 115, 51, 0.08)',
|
|
109
|
+
colorAccent: '#b87333', // seed only — ramp derived by the CSS engine
|
|
128
110
|
});
|
|
129
111
|
/**
|
|
130
112
|
* Copper accent theme variant — reddish metallic (preserved for compatibility)
|
|
131
113
|
*/
|
|
114
|
+
// Copper = reddish metallic, distinct from brass (#b87333 is yellow-gold).
|
|
115
|
+
// The CSS engine derives the ramp from this seed, so hover/active/glow
|
|
116
|
+
// all shift toward the red-copper character automatically.
|
|
132
117
|
export const copperAccentTheme = createTheme(defaultDarkTheme, {
|
|
133
|
-
colorAccent: '#
|
|
134
|
-
colorAccentHover: '#c98444',
|
|
135
|
-
colorAccentActive: '#a05f2a',
|
|
136
|
-
colorAccentSubtle: 'rgba(184, 115, 51, 0.08)',
|
|
118
|
+
colorAccent: '#b85533', // seed only — reddish copper
|
|
137
119
|
});
|
|
138
120
|
/**
|
|
139
121
|
* High contrast accessibility theme
|
|
@@ -144,7 +126,5 @@ export const highContrastTheme = createTheme(defaultDarkTheme, {
|
|
|
144
126
|
colorFgPrimary: '#ffffff',
|
|
145
127
|
colorFgSecondary: '#eeeeee',
|
|
146
128
|
colorFgMuted: '#aaaaaa',
|
|
147
|
-
colorAccent: '#ffcc00',
|
|
148
|
-
colorAccentHover: '#ffdd33',
|
|
149
|
-
colorAccentActive: '#e6b800',
|
|
129
|
+
colorAccent: '#ffcc00', // seed only — ramp derived by the CSS engine
|
|
150
130
|
});
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/* @kos/design-system — Ambient Layer
|
|
2
|
+
Opt-in decorative tokens for marketing/docs/onboarding surfaces —
|
|
3
|
+
NOT auto-imported (see src/index.ts). Import explicitly:
|
|
4
|
+
import '@stephen-netu/design-system/tokens/ambient.css';
|
|
5
|
+
|
|
6
|
+
Everything here derives from the existing single-seed accent engine
|
|
7
|
+
(--accent-primary → color-mix()) already defined in tokens.css. No
|
|
8
|
+
hardcoded hues are introduced — swapping --accent-primary re-themes
|
|
9
|
+
every gradient/glow defined here for free. Do not add hardcoded
|
|
10
|
+
parallel palettes; that reintroduces the "brass leak" anti-pattern
|
|
11
|
+
tokens.css's own comments warn against. */
|
|
12
|
+
|
|
13
|
+
:root {
|
|
14
|
+
/* --- Gradient --- */
|
|
15
|
+
--gradient-accent: linear-gradient(135deg, var(--accent-primary) 0%, var(--color-accent-secondary) 100%);
|
|
16
|
+
|
|
17
|
+
/* --- Ambient glow layers — low-opacity radial fields for hero/empty-state backgrounds --- */
|
|
18
|
+
--glow-ambient-1: color-mix(in srgb, var(--accent-primary) 7%, transparent);
|
|
19
|
+
--glow-ambient-2: color-mix(in srgb, var(--color-accent-secondary) 5%, transparent);
|
|
20
|
+
--glow-ambient-3: color-mix(in srgb, var(--accent-primary) 3%, transparent);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/* --- Gradient text --- */
|
|
24
|
+
.text-gradient-accent {
|
|
25
|
+
background: var(--gradient-accent);
|
|
26
|
+
-webkit-background-clip: text;
|
|
27
|
+
background-clip: text;
|
|
28
|
+
color: transparent;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/* --- Ambient background glow ---
|
|
32
|
+
Apply to a positioned container; renders a fixed-feel radial glow trio
|
|
33
|
+
behind its content. Marketing/docs surfaces only — do not use on
|
|
34
|
+
console/product chrome. */
|
|
35
|
+
.bg-ambient-glow {
|
|
36
|
+
position: relative;
|
|
37
|
+
}
|
|
38
|
+
.bg-ambient-glow::before {
|
|
39
|
+
content: '';
|
|
40
|
+
position: absolute;
|
|
41
|
+
inset: 0;
|
|
42
|
+
z-index: 0;
|
|
43
|
+
pointer-events: none;
|
|
44
|
+
background:
|
|
45
|
+
radial-gradient(900px 600px at 10% -10%, var(--glow-ambient-1), transparent 65%),
|
|
46
|
+
radial-gradient(700px 500px at 92% 8%, var(--glow-ambient-2), transparent 60%),
|
|
47
|
+
radial-gradient(1000px 800px at 50% 140%, var(--glow-ambient-3), transparent 70%);
|
|
48
|
+
}
|
|
49
|
+
.bg-ambient-glow > * {
|
|
50
|
+
position: relative;
|
|
51
|
+
z-index: 1;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
/* --- Scroll reveal (see p0-primitives/utils/reveal.ts) ---
|
|
55
|
+
Marketing/docs surfaces only — never wire into console/product chrome. */
|
|
56
|
+
@keyframes ds-reveal-fade-up {
|
|
57
|
+
from { opacity: 0; transform: translateY(20px); }
|
|
58
|
+
to { opacity: 1; transform: translateY(0); }
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
.ds-reveal {
|
|
62
|
+
opacity: 0;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
.ds-reveal.ds-reveal-in {
|
|
66
|
+
animation: ds-reveal-fade-up 0.7s cubic-bezier(0.16, 0.8, 0.3, 1) both;
|
|
67
|
+
animation-delay: var(--ds-reveal-delay, 0ms);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
@media (prefers-reduced-motion: reduce) {
|
|
71
|
+
.ds-reveal,
|
|
72
|
+
.ds-reveal.ds-reveal-in {
|
|
73
|
+
opacity: 1;
|
|
74
|
+
animation: none;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
@@ -28,16 +28,69 @@
|
|
|
28
28
|
--color-card-text-secondary: #a8a08c;
|
|
29
29
|
--color-card-text-tertiary: #6b6558;
|
|
30
30
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
31
|
+
/* --- Accent — SINGLE-SEED ENGINE ----------------------------------------
|
|
32
|
+
A consumer sets ONE value, --accent-primary (the in-app accent dropdown),
|
|
33
|
+
and the whole accent system recomputes via color-mix. No value below is
|
|
34
|
+
pinned to a hue, so any user color stays coherent across light/dark.
|
|
35
|
+
(Was: 7 hand-picked brass values + brass rgba ramps that ignored the
|
|
36
|
+
user's choice — the "brass leak".) --accent-* remain consumer override
|
|
37
|
+
hooks (token-audit ACCENT_HOOKS); components consume --color-accent* only.
|
|
38
|
+
|
|
39
|
+
Browser support: color-mix() requires Chrome 111+, Safari 16.2+, Firefox
|
|
40
|
+
113+. Fallbacks below use var(--accent-primary) directly (no hue shift),
|
|
41
|
+
which is acceptable on legacy browsers — the seed itself is still
|
|
42
|
+
controllable. */
|
|
43
|
+
--accent-primary: #b87333;
|
|
44
|
+
--accent-hover: var(--accent-primary);
|
|
45
|
+
--accent-active: var(--accent-primary);
|
|
46
|
+
--accent-glow: var(--accent-primary);
|
|
47
|
+
--accent-muted: var(--accent-primary);
|
|
48
|
+
--accent-subtle: var(--accent-primary);
|
|
49
|
+
--accent-faint: var(--accent-primary);
|
|
50
|
+
--color-accent: var(--accent-primary);
|
|
51
|
+
--color-accent-hover: var(--accent-hover);
|
|
52
|
+
--color-accent-active: var(--accent-active);
|
|
53
|
+
--color-accent-glow: var(--accent-glow);
|
|
54
|
+
--color-accent-muted: var(--accent-muted);
|
|
55
|
+
--color-accent-subtle: var(--accent-subtle);
|
|
56
|
+
--color-accent-faint: var(--accent-faint);
|
|
57
|
+
--color-accent-secondary: var(--accent-primary);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
@supports (color-mix(in srgb, red, transparent)) {
|
|
61
|
+
:root {
|
|
62
|
+
--accent-hover: color-mix(in oklab, var(--accent-primary), #fff 16%);
|
|
63
|
+
--accent-active: color-mix(in oklab, var(--accent-primary), #000 22%);
|
|
64
|
+
--accent-glow: color-mix(in srgb, var(--accent-primary) 28%, transparent);
|
|
65
|
+
--accent-muted: color-mix(in srgb, var(--accent-primary) 16%, transparent);
|
|
66
|
+
--accent-subtle: color-mix(in srgb, var(--accent-primary) 8%, transparent);
|
|
67
|
+
--accent-faint: color-mix(in srgb, var(--accent-primary) 4%, transparent);
|
|
68
|
+
--color-accent-hover: var(--accent-hover);
|
|
69
|
+
--color-accent-active: var(--accent-active);
|
|
70
|
+
--color-accent-glow: var(--accent-glow);
|
|
71
|
+
--color-accent-muted: var(--accent-muted);
|
|
72
|
+
--color-accent-subtle: var(--accent-subtle);
|
|
73
|
+
--color-accent-faint: var(--accent-faint);
|
|
74
|
+
--color-accent-secondary: color-mix(in oklab, var(--accent-primary), #fff 26%);
|
|
75
|
+
--overlay-accent-06: color-mix(in srgb, var(--accent-primary) 6%, transparent);
|
|
76
|
+
--overlay-accent-08: color-mix(in srgb, var(--accent-primary) 8%, transparent);
|
|
77
|
+
--overlay-accent-12: color-mix(in srgb, var(--accent-primary) 12%, transparent);
|
|
78
|
+
--overlay-accent-18: color-mix(in srgb, var(--accent-primary) 18%, transparent);
|
|
79
|
+
--overlay-accent-30: color-mix(in srgb, var(--accent-primary) 30%, transparent);
|
|
80
|
+
--overlay-accent-45: color-mix(in srgb, var(--accent-primary) 45%, transparent);
|
|
81
|
+
--overlay-accent-50: color-mix(in srgb, var(--accent-primary) 50%, transparent);
|
|
82
|
+
--overlay-accent-55: color-mix(in srgb, var(--accent-primary) 55%, transparent);
|
|
83
|
+
--grid-line: color-mix(in srgb, var(--accent-primary) 3%, transparent);
|
|
84
|
+
--grid-dot: color-mix(in srgb, var(--accent-primary) 6%, transparent);
|
|
85
|
+
--grid-major: color-mix(in srgb, var(--accent-primary) 10%, transparent);
|
|
86
|
+
--shadow-glow: 0 0 12px color-mix(in srgb, var(--accent-primary) 15%, transparent);
|
|
87
|
+
--shadow-glow-lg: 0 0 24px color-mix(in srgb, var(--accent-primary) 25%, transparent);
|
|
88
|
+
--shadow-accent-glow: 0 0 16px color-mix(in srgb, var(--accent-primary) 15%, transparent), 0 0 32px color-mix(in srgb, var(--accent-primary) 5%, transparent);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
:root {
|
|
93
|
+
/* --- Overlay levels — white opacity ramps for borders, backgrounds, hover states */
|
|
41
94
|
--overlay-white-02: rgba(255, 255, 255, 0.02);
|
|
42
95
|
--overlay-white-03: rgba(255, 255, 255, 0.03);
|
|
43
96
|
--overlay-white-04: rgba(255, 255, 255, 0.04);
|
|
@@ -49,19 +102,21 @@
|
|
|
49
102
|
--overlay-white-22: rgba(255, 255, 255, 0.22);
|
|
50
103
|
--overlay-white-25: rgba(255, 255, 255, 0.25);
|
|
51
104
|
|
|
52
|
-
/* Overlay levels — accent color opacity ramps
|
|
53
|
-
|
|
54
|
-
--overlay-accent-
|
|
55
|
-
--overlay-accent-
|
|
56
|
-
--overlay-accent-
|
|
57
|
-
--overlay-accent-
|
|
58
|
-
--overlay-accent-
|
|
59
|
-
--overlay-accent-
|
|
60
|
-
--overlay-accent-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
105
|
+
/* Overlay levels — accent color opacity ramps
|
|
106
|
+
(fallback: transparent for browsers without color-mix) */
|
|
107
|
+
--overlay-accent-06: transparent;
|
|
108
|
+
--overlay-accent-08: transparent;
|
|
109
|
+
--overlay-accent-12: transparent;
|
|
110
|
+
--overlay-accent-18: transparent;
|
|
111
|
+
--overlay-accent-30: transparent;
|
|
112
|
+
--overlay-accent-45: transparent;
|
|
113
|
+
--overlay-accent-50: transparent;
|
|
114
|
+
--overlay-accent-55: transparent;
|
|
115
|
+
|
|
116
|
+
/* Overlay levels — status color opacity ramps */
|
|
117
|
+
--overlay-success-06: rgba(79, 168, 162, 0.06);
|
|
118
|
+
--overlay-warning-06: rgba(245, 192, 48, 0.06);
|
|
119
|
+
--overlay-error-06: rgba(193, 74, 74, 0.06);
|
|
65
120
|
|
|
66
121
|
/* Cell background for band/offer tables */
|
|
67
122
|
--color-bg-cell: #121518;
|
|
@@ -78,7 +133,9 @@
|
|
|
78
133
|
--color-success: #4fa8a2;
|
|
79
134
|
--color-warning: #d4a04c;
|
|
80
135
|
--color-error: #c14a4a;
|
|
136
|
+
--color-error-bg: rgba(193, 74, 74, 0.10);
|
|
81
137
|
--color-info: #5b8db8;
|
|
138
|
+
--color-neutral: #6b6558; /* Inactive / archival (e.g. compost phase) */
|
|
82
139
|
|
|
83
140
|
/* --- Semantic (presence) --- */
|
|
84
141
|
--color-online: #4fa8a2;
|
|
@@ -117,7 +174,7 @@
|
|
|
117
174
|
--border-subtle: rgba(255, 255, 255, 0.06);
|
|
118
175
|
--border-default: #3a3630;
|
|
119
176
|
--border-hover: #6b6558;
|
|
120
|
-
--border-focus:
|
|
177
|
+
--border-focus: var(--accent-primary);
|
|
121
178
|
--border-alert: #c14a4a;
|
|
122
179
|
--border-warning: #d4a04c;
|
|
123
180
|
--divider-color: #181c20;
|
|
@@ -127,10 +184,10 @@
|
|
|
127
184
|
--color-border-subtle: var(--border-subtle);
|
|
128
185
|
--color-border-default: var(--border-default);
|
|
129
186
|
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
187
|
+
/* --- Grid (canvas patterns) --- */
|
|
188
|
+
--grid-line: transparent;
|
|
189
|
+
--grid-dot: transparent;
|
|
190
|
+
--grid-major: transparent;
|
|
134
191
|
|
|
135
192
|
/* --- Typography --- */
|
|
136
193
|
--font-sans: 'Outfit', system-ui, -apple-system, sans-serif;
|
|
@@ -147,6 +204,17 @@
|
|
|
147
204
|
--text-3xl: 1.875rem;
|
|
148
205
|
--text-4xl: 2.25rem;
|
|
149
206
|
|
|
207
|
+
/* --- Font weight (fixes phantom --font-weight-* referenced by g0 Text.svelte) --- */
|
|
208
|
+
--font-weight-normal: 400;
|
|
209
|
+
--font-weight-medium: 500;
|
|
210
|
+
--font-weight-semibold: 600;
|
|
211
|
+
--font-weight-bold: 700;
|
|
212
|
+
|
|
213
|
+
/* --- Line height (fixes phantom --line-height-* referenced by g0 Text.svelte) --- */
|
|
214
|
+
--line-height-tight: 1.2;
|
|
215
|
+
--line-height-normal: 1.5;
|
|
216
|
+
--line-height-relaxed: 1.7;
|
|
217
|
+
|
|
150
218
|
/* --- Spacing --- */
|
|
151
219
|
--space-05: 0.125rem;
|
|
152
220
|
--space-1: 0.25rem;
|
|
@@ -183,12 +251,12 @@
|
|
|
183
251
|
--shadow-md: none;
|
|
184
252
|
--shadow-lg: none;
|
|
185
253
|
--shadow-xl: none;
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
254
|
+
--shadow-glow: 0 0 12px rgba(0, 0, 0, 0.4);
|
|
255
|
+
--shadow-glow-lg: 0 0 24px rgba(0, 0, 0, 0.4);
|
|
256
|
+
--shadow-inner: inset 0 2px 4px 0 rgba(0, 0, 0, 0.4);
|
|
257
|
+
--shadow-card: none;
|
|
258
|
+
--shadow-card-hover: none;
|
|
259
|
+
--shadow-accent-glow: 0 0 16px rgba(0, 0, 0, 0.4), 0 0 32px rgba(0, 0, 0, 0.4);
|
|
192
260
|
|
|
193
261
|
/* --- Transitions --- */
|
|
194
262
|
--transition-fast: 120ms ease;
|
|
@@ -244,4 +312,42 @@
|
|
|
244
312
|
--z-tooltip: 1070;
|
|
245
313
|
--z-toast: 1080;
|
|
246
314
|
--z-glass-box: 9000;
|
|
315
|
+
|
|
316
|
+
/* --- Density (system default = COMPACT) ----------------------------------
|
|
317
|
+
A first-class density tier. Surfaces opt into a calibration with
|
|
318
|
+
[data-density]: comfortable (reading/writing — editor, prose, forms),
|
|
319
|
+
compact (default, general UI), cockpit (monitoring/data-dense — dashboards,
|
|
320
|
+
logs, registries, manifold panels). Same components, three calibrations.
|
|
321
|
+
Components consume these --ui-* tokens for sizing/type instead of raw px.
|
|
322
|
+
Cockpit sits at the legibility floors: data 10px, label 9px, row/target
|
|
323
|
+
20px, pad 3px, leading 1.22 (note: 20px trips WCAG 2.5.8's 24px pref, so
|
|
324
|
+
cockpit is opt-in, never the global default). */
|
|
325
|
+
--ui-control-h: 24px; /* button / input / select height */
|
|
326
|
+
--ui-row-h: 24px; /* table / list row height (pointer target) */
|
|
327
|
+
--ui-pad-x: 8px;
|
|
328
|
+
--ui-pad-y: 5px;
|
|
329
|
+
--ui-gap: 1px; /* hairline grid gap — the ruled spine */
|
|
330
|
+
--ui-font: 13px; /* body / control text */
|
|
331
|
+
--ui-font-sm: 12px;
|
|
332
|
+
--ui-data: 11px; /* monospace data / table cells */
|
|
333
|
+
--ui-label: 10px; /* uppercase micro-labels */
|
|
334
|
+
--ui-leading: 1.35;
|
|
335
|
+
--ui-icon: 14px;
|
|
336
|
+
}
|
|
337
|
+
|
|
338
|
+
/* Density calibrations — set [data-density] on any container or surface. */
|
|
339
|
+
[data-density="comfortable"] {
|
|
340
|
+
--ui-control-h: 30px; --ui-row-h: 30px; --ui-pad-x: 12px; --ui-pad-y: 8px;
|
|
341
|
+
--ui-gap: 1px; --ui-font: 14px; --ui-font-sm: 13px; --ui-data: 13px;
|
|
342
|
+
--ui-label: 11px; --ui-leading: 1.45; --ui-icon: 16px;
|
|
343
|
+
}
|
|
344
|
+
[data-density="compact"] {
|
|
345
|
+
--ui-control-h: 24px; --ui-row-h: 24px; --ui-pad-x: 8px; --ui-pad-y: 5px;
|
|
346
|
+
--ui-gap: 1px; --ui-font: 13px; --ui-font-sm: 12px; --ui-data: 11px;
|
|
347
|
+
--ui-label: 10px; --ui-leading: 1.35; --ui-icon: 14px;
|
|
348
|
+
}
|
|
349
|
+
[data-density="cockpit"] {
|
|
350
|
+
--ui-control-h: 20px; --ui-row-h: 20px; --ui-pad-x: 6px; --ui-pad-y: 3px;
|
|
351
|
+
--ui-gap: 1px; --ui-font: 12px; --ui-font-sm: 11px; --ui-data: 10px;
|
|
352
|
+
--ui-label: 9px; --ui-leading: 1.22; --ui-icon: 13px;
|
|
247
353
|
}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
export { reveal } from './reveal';
|
|
2
|
+
export type { RevealOptions } from './reveal';
|
|
1
3
|
/**
|
|
2
4
|
* Class name merger - combines class names, filtering out falsy values
|
|
3
5
|
*/
|
|
@@ -5,9 +7,9 @@ export declare function cn(...classes: (string | undefined | null | false)[]): s
|
|
|
5
7
|
/**
|
|
6
8
|
* Debounce function
|
|
7
9
|
*/
|
|
8
|
-
export declare function debounce<T extends (...args:
|
|
10
|
+
export declare function debounce<T extends (...args: unknown[]) => unknown>(fn: T, delay: number): (...args: Parameters<T>) => void;
|
|
9
11
|
/**
|
|
10
12
|
* Throttle function
|
|
11
13
|
*/
|
|
12
|
-
export declare function throttle<T extends (...args:
|
|
14
|
+
export declare function throttle<T extends (...args: unknown[]) => unknown>(fn: T, limit: number): (...args: Parameters<T>) => void;
|
|
13
15
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/p0-primitives/utils/index.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,wBAAgB,EAAE,CAAC,GAAG,OAAO,EAAE,CAAC,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,KAAK,CAAC,EAAE,GAAG,MAAM,CAE5E;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/p0-primitives/utils/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,YAAY,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAE9C;;GAEG;AACH,wBAAgB,EAAE,CAAC,GAAG,OAAO,EAAE,CAAC,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,KAAK,CAAC,EAAE,GAAG,MAAM,CAE5E;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,EAChE,EAAE,EAAE,CAAC,EACL,KAAK,EAAE,MAAM,GACZ,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,IAAI,CAMlC;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,EAChE,EAAE,EAAE,CAAC,EACL,KAAK,EAAE,MAAM,GACZ,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,IAAI,CASlC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { Action } from 'svelte/action';
|
|
2
|
+
/**
|
|
3
|
+
* Scroll-reveal action for marketing/docs surfaces — never wire into
|
|
4
|
+
* console/product chrome (see ambient.css usage note). Adds `ds-reveal`
|
|
5
|
+
* on mount and `ds-reveal-in` once the node crosses `threshold`; pass
|
|
6
|
+
* `delayMs` to stagger a group of siblings. Respects
|
|
7
|
+
* prefers-reduced-motion by revealing immediately with no observer.
|
|
8
|
+
*/
|
|
9
|
+
export interface RevealOptions {
|
|
10
|
+
delayMs?: number;
|
|
11
|
+
threshold?: number;
|
|
12
|
+
once?: boolean;
|
|
13
|
+
}
|
|
14
|
+
export declare const reveal: Action<HTMLElement, RevealOptions | undefined>;
|
|
15
|
+
//# sourceMappingURL=reveal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reveal.d.ts","sourceRoot":"","sources":["../../../src/p0-primitives/utils/reveal.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAE5C;;;;;;GAMG;AACH,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,eAAO,MAAM,MAAM,EAAE,MAAM,CAAC,WAAW,EAAE,aAAa,GAAG,SAAS,CAmCjE,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export const reveal = (node, options = {}) => {
|
|
2
|
+
const { delayMs = 0, threshold = 0.12, once = true } = options;
|
|
3
|
+
if (delayMs) {
|
|
4
|
+
node.style.setProperty('--ds-reveal-delay', `${delayMs}ms`);
|
|
5
|
+
}
|
|
6
|
+
if (window.matchMedia('(prefers-reduced-motion: reduce)').matches) {
|
|
7
|
+
node.classList.add('ds-reveal-in');
|
|
8
|
+
return {};
|
|
9
|
+
}
|
|
10
|
+
node.classList.add('ds-reveal');
|
|
11
|
+
const observer = new IntersectionObserver((entries) => {
|
|
12
|
+
for (const entry of entries) {
|
|
13
|
+
if (entry.isIntersecting) {
|
|
14
|
+
node.classList.add('ds-reveal-in');
|
|
15
|
+
if (once)
|
|
16
|
+
observer.unobserve(entry.target);
|
|
17
|
+
}
|
|
18
|
+
else if (!once) {
|
|
19
|
+
node.classList.remove('ds-reveal-in');
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
}, { threshold });
|
|
23
|
+
observer.observe(node);
|
|
24
|
+
return {
|
|
25
|
+
destroy() {
|
|
26
|
+
observer.disconnect();
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
};
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { afterEach, beforeEach, describe, it, expect } from 'vitest';
|
|
2
|
+
import { reveal } from './reveal';
|
|
3
|
+
// Scoped to this file only (installed in beforeEach, removed in afterEach) —
|
|
4
|
+
// a global IntersectionObserver polyfill in vitest-setup.ts changes which
|
|
5
|
+
// code path unrelated components (e.g. MarkmapDiagram's d3-zoom setup) take,
|
|
6
|
+
// crashing on jsdom's incomplete SVG support. Keep this local.
|
|
7
|
+
class IntersectionObserverMock {
|
|
8
|
+
static instances = [];
|
|
9
|
+
callback;
|
|
10
|
+
observedTargets = [];
|
|
11
|
+
constructor(callback) {
|
|
12
|
+
this.callback = callback;
|
|
13
|
+
IntersectionObserverMock.instances.push(this);
|
|
14
|
+
}
|
|
15
|
+
observe(target) { this.observedTargets.push(target); }
|
|
16
|
+
unobserve(target) { this.observedTargets = this.observedTargets.filter((t) => t !== target); }
|
|
17
|
+
disconnect() { this.observedTargets = []; }
|
|
18
|
+
takeRecords() { return []; }
|
|
19
|
+
}
|
|
20
|
+
function lastObserver() {
|
|
21
|
+
return IntersectionObserverMock.instances[IntersectionObserverMock.instances.length - 1];
|
|
22
|
+
}
|
|
23
|
+
function makeEntry(target, isIntersecting) {
|
|
24
|
+
return { target, isIntersecting };
|
|
25
|
+
}
|
|
26
|
+
describe('reveal', () => {
|
|
27
|
+
let node;
|
|
28
|
+
let originalIntersectionObserver;
|
|
29
|
+
beforeEach(() => {
|
|
30
|
+
originalIntersectionObserver = globalThis.IntersectionObserver;
|
|
31
|
+
IntersectionObserverMock.instances = [];
|
|
32
|
+
globalThis.IntersectionObserver = IntersectionObserverMock;
|
|
33
|
+
});
|
|
34
|
+
afterEach(() => {
|
|
35
|
+
node?.remove();
|
|
36
|
+
globalThis.IntersectionObserver = originalIntersectionObserver;
|
|
37
|
+
});
|
|
38
|
+
it('adds the ds-reveal class on mount', () => {
|
|
39
|
+
node = document.createElement('div');
|
|
40
|
+
reveal(node);
|
|
41
|
+
expect(node.classList.contains('ds-reveal')).toBe(true);
|
|
42
|
+
});
|
|
43
|
+
it('adds ds-reveal-in once the node intersects', () => {
|
|
44
|
+
node = document.createElement('div');
|
|
45
|
+
reveal(node);
|
|
46
|
+
const observer = lastObserver();
|
|
47
|
+
observer.callback([makeEntry(node, true)], observer);
|
|
48
|
+
expect(node.classList.contains('ds-reveal-in')).toBe(true);
|
|
49
|
+
});
|
|
50
|
+
it('does not add ds-reveal-in before intersecting', () => {
|
|
51
|
+
node = document.createElement('div');
|
|
52
|
+
reveal(node);
|
|
53
|
+
expect(node.classList.contains('ds-reveal-in')).toBe(false);
|
|
54
|
+
});
|
|
55
|
+
it('sets --ds-reveal-delay when delayMs is passed', () => {
|
|
56
|
+
node = document.createElement('div');
|
|
57
|
+
reveal(node, { delayMs: 240 });
|
|
58
|
+
expect(node.style.getPropertyValue('--ds-reveal-delay')).toBe('240ms');
|
|
59
|
+
});
|
|
60
|
+
it('removes ds-reveal-in on exit when once is false', () => {
|
|
61
|
+
node = document.createElement('div');
|
|
62
|
+
reveal(node, { once: false });
|
|
63
|
+
const observer = lastObserver();
|
|
64
|
+
observer.callback([makeEntry(node, true)], observer);
|
|
65
|
+
expect(node.classList.contains('ds-reveal-in')).toBe(true);
|
|
66
|
+
observer.callback([makeEntry(node, false)], observer);
|
|
67
|
+
expect(node.classList.contains('ds-reveal-in')).toBe(false);
|
|
68
|
+
});
|
|
69
|
+
it('disconnects the observer on destroy', () => {
|
|
70
|
+
node = document.createElement('div');
|
|
71
|
+
const action = reveal(node);
|
|
72
|
+
const observer = lastObserver();
|
|
73
|
+
expect(observer.observedTargets).toContain(node);
|
|
74
|
+
action?.destroy?.();
|
|
75
|
+
expect(observer.observedTargets).not.toContain(node);
|
|
76
|
+
});
|
|
77
|
+
it('reveals immediately with no observer when prefers-reduced-motion is set', () => {
|
|
78
|
+
const originalMatchMedia = window.matchMedia;
|
|
79
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
80
|
+
window.matchMedia = (query) => ({
|
|
81
|
+
matches: query.includes('reduce'),
|
|
82
|
+
media: query,
|
|
83
|
+
addListener: () => { },
|
|
84
|
+
removeListener: () => { },
|
|
85
|
+
addEventListener: () => { },
|
|
86
|
+
removeEventListener: () => { },
|
|
87
|
+
dispatchEvent: () => false
|
|
88
|
+
});
|
|
89
|
+
node = document.createElement('div');
|
|
90
|
+
reveal(node);
|
|
91
|
+
expect(node.classList.contains('ds-reveal-in')).toBe(true);
|
|
92
|
+
expect(node.classList.contains('ds-reveal')).toBe(false);
|
|
93
|
+
window.matchMedia = originalMatchMedia;
|
|
94
|
+
});
|
|
95
|
+
});
|
|
@@ -68,7 +68,7 @@
|
|
|
68
68
|
case 'syncing':
|
|
69
69
|
return {
|
|
70
70
|
icon: 'sync',
|
|
71
|
-
color: 'var(--color-accent, #
|
|
71
|
+
color: 'var(--color-accent, #888)',
|
|
72
72
|
label: 'Syncing...',
|
|
73
73
|
message: pendingCount > 0 ? `${pendingCount} items pending` : 'Synchronizing changes'
|
|
74
74
|
};
|
|
@@ -263,7 +263,7 @@
|
|
|
263
263
|
}
|
|
264
264
|
|
|
265
265
|
.action-danger {
|
|
266
|
-
background: var(--color-error-
|
|
266
|
+
background: var(--color-error-bg, rgba(193, 74, 74, 0.10));
|
|
267
267
|
color: var(--color-error, #c0392b);
|
|
268
268
|
border-color: var(--color-error, #c0392b);
|
|
269
269
|
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
|
|
1
|
+
import type { ThemeName } from '../p0-primitives/theme-context';
|
|
2
|
+
export type { ThemeName } from '../p0-primitives/theme-context';
|
|
2
3
|
declare class ThemeStore {
|
|
3
4
|
#private;
|
|
4
5
|
get theme(): ThemeName;
|
|
@@ -7,6 +8,6 @@ declare class ThemeStore {
|
|
|
7
8
|
syncFromDOM(): void;
|
|
8
9
|
}
|
|
9
10
|
export declare const themeStore: ThemeStore;
|
|
11
|
+
export declare function provideThemeStoreContext(): void;
|
|
10
12
|
export declare function initThemeStore(): void;
|
|
11
|
-
export {};
|
|
12
13
|
//# sourceMappingURL=ThemeStore.svelte.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ThemeStore.svelte.d.ts","sourceRoot":"","sources":["../../src/s0-state/ThemeStore.svelte.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ThemeStore.svelte.d.ts","sourceRoot":"","sources":["../../src/s0-state/ThemeStore.svelte.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAChE,YAAY,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAyBhE,cAAM,UAAU;;IAGd,IAAI,KAAK,IAAI,SAAS,CAErB;IAED,QAAQ,CAAC,CAAC,EAAE,SAAS,GAAG,IAAI;IAS5B,WAAW,IAAI,IAAI;IAMnB,WAAW,IAAI,IAAI;CAMpB;AAED,eAAO,MAAM,UAAU,YAAmB,CAAC;AAE3C,wBAAgB,wBAAwB,IAAI,IAAI,CAE/C;AAED,wBAAgB,cAAc,IAAI,IAAI,CAOrC"}
|
|
@@ -1,4 +1,19 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* ThemeStore — Module-scope singleton for theme state (F-29).
|
|
3
|
+
*
|
|
4
|
+
* Instantiated once at module scope. Reads localStorage during import
|
|
5
|
+
* (safely guarded by hasLocalStorage()). Bundlers keep the instantiation
|
|
6
|
+
* at import time, so this module is NOT SSR-inert.
|
|
7
|
+
*
|
|
8
|
+
* @module s0-state/ThemeStore
|
|
9
|
+
* @example
|
|
10
|
+
* ```ts
|
|
11
|
+
* import { themeStore } from '@kos/design-system/s0-state';
|
|
12
|
+
* themeStore.setTheme('light');
|
|
13
|
+
* ```
|
|
14
|
+
*/
|
|
15
|
+
import { setContext, onMount } from 'svelte';
|
|
16
|
+
import { THEME_STORE_KEY } from '../p0-primitives/theme-context';
|
|
2
17
|
const STORAGE_KEY = 'kos-theme';
|
|
3
18
|
function hasLocalStorage() {
|
|
4
19
|
try {
|
|
@@ -51,7 +66,11 @@ class ThemeStore {
|
|
|
51
66
|
}
|
|
52
67
|
}
|
|
53
68
|
export const themeStore = new ThemeStore();
|
|
69
|
+
export function provideThemeStoreContext() {
|
|
70
|
+
setContext(THEME_STORE_KEY, themeStore);
|
|
71
|
+
}
|
|
54
72
|
export function initThemeStore() {
|
|
73
|
+
provideThemeStoreContext();
|
|
55
74
|
onMount(() => {
|
|
56
75
|
themeStore.syncFromDOM();
|
|
57
76
|
const stored = getStoredTheme();
|
package/dist/s0-state/index.d.ts
CHANGED
|
@@ -5,6 +5,6 @@ export type { DerivedOptions } from './derived';
|
|
|
5
5
|
export { createVirtualList, createVirtualGrid, createPreloader, calculateGridLayout, type VirtualListConfig, type VirtualItem, type VirtualList, type PreloaderConfig, type PreloaderState, } from './virtual';
|
|
6
6
|
export { default as SyncStatus } from './SyncStatus.svelte';
|
|
7
7
|
export type { SyncStatusState, SyncStatusAction } from './SyncStatus.svelte';
|
|
8
|
-
export
|
|
9
|
-
export type {
|
|
8
|
+
export { modalStackStore } from './modal-stack-store.svelte';
|
|
9
|
+
export type { ModalData, VisibleModal } from './modal-stack-store.svelte';
|
|
10
10
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/s0-state/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACtE,YAAY,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAGhD,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EACf,mBAAmB,EACnB,KAAK,iBAAiB,EACtB,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,cAAc,GACpB,MAAM,WAAW,CAAC;AAGnB,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC5D,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAG7E,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/s0-state/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACtE,YAAY,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAGhD,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EACf,mBAAmB,EACnB,KAAK,iBAAiB,EACtB,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,cAAc,GACpB,MAAM,WAAW,CAAC;AAGnB,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC5D,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAG7E,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,YAAY,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC"}
|