@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
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pipeline-adapter.d.ts","sourceRoot":"","sources":["../../src/n1-flow-canvas/pipeline-adapter.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAwB,MAAM,YAAY,CAAC;AAItE,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,cAAc,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,WAAW,EAAE,mBAAmB,GAAG,IAAI,CAAC;IACxC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC;AAEjG,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,MAAM,EAAE,iBAAiB,EAAE,CAAC;IAC5B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AA0CD,eAAO,MAAM,oBAAoB,UAA6D,CAAC;AAE/F,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,aAAa,GAAG,aAAa,CAiG3E;AAcD,wBAAgB,2BAA2B,IAAI,aAAa,CAe3D"}
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
// N1 Pipeline Adapter — maps PipelineState → GraphSnapshot for FlowCanvas
|
|
2
|
+
// READ-ONLY consumer of ~/.kos/pipeline/<run-id>/pipeline-state.json
|
|
3
|
+
// S-02: deterministic ordering — all collections Array/Map
|
|
4
|
+
// ── Token budgets (mirrors driver.rs) ────────────────────────────────────────
|
|
5
|
+
const STAGE_TOKEN_BUDGETS = {
|
|
6
|
+
intake: 10_000,
|
|
7
|
+
research: 40_000,
|
|
8
|
+
implement: 120_000,
|
|
9
|
+
review: 40_000,
|
|
10
|
+
integrate: 10_000,
|
|
11
|
+
};
|
|
12
|
+
function formatTokens(t) {
|
|
13
|
+
if (t >= 1_000_000)
|
|
14
|
+
return `${(t / 1_000_000).toFixed(1)}M`;
|
|
15
|
+
if (t >= 1_000)
|
|
16
|
+
return `${(t / 1_000).toFixed(0)}K`;
|
|
17
|
+
return `${t}`;
|
|
18
|
+
}
|
|
19
|
+
// ── Status color mapping ─────────────────────────────────────────────────────
|
|
20
|
+
const STAGE_COLORS = {
|
|
21
|
+
Pending: '#646b72',
|
|
22
|
+
Running: '#3fae9f',
|
|
23
|
+
Passed: '#3fae9f',
|
|
24
|
+
Failed: '#cf4e4e',
|
|
25
|
+
Skipped: '#4a4f55',
|
|
26
|
+
Crashed: '#cf4e4e',
|
|
27
|
+
};
|
|
28
|
+
function statusIcon(status) {
|
|
29
|
+
switch (status) {
|
|
30
|
+
case 'Pending': return '○';
|
|
31
|
+
case 'Running': return '●';
|
|
32
|
+
case 'Passed': return '✓';
|
|
33
|
+
case 'Failed': return '✗';
|
|
34
|
+
case 'Skipped': return '−';
|
|
35
|
+
case 'Crashed': return '💀';
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
// ── Adapter ──────────────────────────────────────────────────────────────────
|
|
39
|
+
export const PIPELINE_STAGE_NAMES = ['intake', 'research', 'implement', 'review', 'integrate'];
|
|
40
|
+
export function pipelineStateToSnapshot(state) {
|
|
41
|
+
const nodes = [];
|
|
42
|
+
const edges = [];
|
|
43
|
+
const stageOrder = PIPELINE_STAGE_NAMES;
|
|
44
|
+
const stageMap = new Map();
|
|
45
|
+
for (const s of state.stages)
|
|
46
|
+
stageMap.set(s.name, s);
|
|
47
|
+
let prevName = null;
|
|
48
|
+
for (const name of stageOrder) {
|
|
49
|
+
const stage = stageMap.get(name);
|
|
50
|
+
const status = stage?.status ?? 'Pending';
|
|
51
|
+
const color = STAGE_COLORS[status];
|
|
52
|
+
const icon = statusIcon(status);
|
|
53
|
+
// Build label with status icon, name, attempt badge, token budget
|
|
54
|
+
let label = `${icon} ${name}`;
|
|
55
|
+
if (stage && stage.attempt > 1) {
|
|
56
|
+
label += ` #${stage.attempt}`;
|
|
57
|
+
}
|
|
58
|
+
// Collect badge-like data into node.data for FlowCanvas rendering
|
|
59
|
+
const data = {
|
|
60
|
+
status,
|
|
61
|
+
color,
|
|
62
|
+
icon,
|
|
63
|
+
pipelineStatus: status,
|
|
64
|
+
};
|
|
65
|
+
if (stage) {
|
|
66
|
+
data.attempt = stage.attempt;
|
|
67
|
+
if (stage.selected_model)
|
|
68
|
+
data.model = stage.selected_model;
|
|
69
|
+
data.budget = formatTokens(STAGE_TOKEN_BUDGETS[name] ?? 0);
|
|
70
|
+
if (stage.error)
|
|
71
|
+
data.error = stage.error;
|
|
72
|
+
if (stage.started_at)
|
|
73
|
+
data.started_at = stage.started_at;
|
|
74
|
+
if (stage.completed_at)
|
|
75
|
+
data.completed_at = stage.completed_at;
|
|
76
|
+
if (stage.termination) {
|
|
77
|
+
data.termination = stage.termination.reason;
|
|
78
|
+
data.final_tokens = stage.termination.final_tokens;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
nodes.push({ id: name, label, data });
|
|
82
|
+
// Sequential handoff edge: prev → current
|
|
83
|
+
if (prevName) {
|
|
84
|
+
edges.push({
|
|
85
|
+
id: `${prevName}->${name}`,
|
|
86
|
+
sourceId: prevName,
|
|
87
|
+
targetId: name,
|
|
88
|
+
label: 'handoff',
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
prevName = name;
|
|
92
|
+
}
|
|
93
|
+
// Back-edge for active remediation: review → implement
|
|
94
|
+
if (state.remediation_count > 0 && state.remediation_count < state.max_remediation) {
|
|
95
|
+
const reviewStage = stageMap.get('review');
|
|
96
|
+
if (reviewStage && reviewStage.status === 'Failed') {
|
|
97
|
+
edges.push({
|
|
98
|
+
id: 'review->implement:remediate',
|
|
99
|
+
sourceId: 'review',
|
|
100
|
+
targetId: 'implement',
|
|
101
|
+
label: 'remediate',
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
// Queue tail node (D14) — shows pending queue depth if available
|
|
106
|
+
// For now, show remediation count as queue indicator
|
|
107
|
+
if (state.remediation_count > 0) {
|
|
108
|
+
nodes.push({
|
|
109
|
+
id: 'remediation',
|
|
110
|
+
label: `↻ x${state.remediation_count}`,
|
|
111
|
+
data: { status: 'remediation', count: state.remediation_count },
|
|
112
|
+
});
|
|
113
|
+
edges.push({
|
|
114
|
+
id: 'review->remediation',
|
|
115
|
+
sourceId: 'review',
|
|
116
|
+
targetId: 'remediation',
|
|
117
|
+
label: 'remediate',
|
|
118
|
+
});
|
|
119
|
+
edges.push({
|
|
120
|
+
id: 'remediation->implement',
|
|
121
|
+
sourceId: 'remediation',
|
|
122
|
+
targetId: 'implement',
|
|
123
|
+
label: 're-enter',
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
return {
|
|
127
|
+
nodes,
|
|
128
|
+
edges,
|
|
129
|
+
focusNodeId: findFocusNode(stageMap),
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
function findFocusNode(stageMap) {
|
|
133
|
+
for (const name of PIPELINE_STAGE_NAMES) {
|
|
134
|
+
const stage = stageMap.get(name);
|
|
135
|
+
if (stage && stage.status === 'Running')
|
|
136
|
+
return name;
|
|
137
|
+
}
|
|
138
|
+
for (const name of PIPELINE_STAGE_NAMES) {
|
|
139
|
+
const stage = stageMap.get(name);
|
|
140
|
+
if (stage && stage.status === 'Pending')
|
|
141
|
+
return name;
|
|
142
|
+
}
|
|
143
|
+
return PIPELINE_STAGE_NAMES[0] ?? null;
|
|
144
|
+
}
|
|
145
|
+
export function createEmptyPipelineSnapshot() {
|
|
146
|
+
return {
|
|
147
|
+
nodes: PIPELINE_STAGE_NAMES.map((name, i) => ({
|
|
148
|
+
id: name,
|
|
149
|
+
label: `○ ${name}`,
|
|
150
|
+
data: { status: 'Pending', pipelineStatus: 'Pending' },
|
|
151
|
+
})),
|
|
152
|
+
edges: PIPELINE_STAGE_NAMES.slice(0, -1).map((name, i) => ({
|
|
153
|
+
id: `${name}->${PIPELINE_STAGE_NAMES[i + 1]}`,
|
|
154
|
+
sourceId: name,
|
|
155
|
+
targetId: PIPELINE_STAGE_NAMES[i + 1],
|
|
156
|
+
label: 'handoff',
|
|
157
|
+
})),
|
|
158
|
+
focusNodeId: PIPELINE_STAGE_NAMES[0],
|
|
159
|
+
};
|
|
160
|
+
}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import { describe, it, expect } from 'vitest';
|
|
2
|
+
import { nodeHitTest, domEventToCanvasCoords, parseMentionEdges, parseGroupedSequenceEdges, } from './utils';
|
|
3
|
+
describe('n1-flow-canvas/utils', () => {
|
|
4
|
+
describe('nodeHitTest', () => {
|
|
5
|
+
it('returns node id when point is inside a node rect', () => {
|
|
6
|
+
const positions = new Map([
|
|
7
|
+
['n1', { id: 'n1', x: 10, y: 20, width: 100, height: 50 }],
|
|
8
|
+
['n2', { id: 'n2', x: 200, y: 200, width: 80, height: 40 }],
|
|
9
|
+
]);
|
|
10
|
+
expect(nodeHitTest(50, 40, positions)).toBe('n1');
|
|
11
|
+
});
|
|
12
|
+
it('returns null when point is outside all nodes', () => {
|
|
13
|
+
const positions = new Map([
|
|
14
|
+
['n1', { id: 'n1', x: 10, y: 20, width: 100, height: 50 }],
|
|
15
|
+
]);
|
|
16
|
+
expect(nodeHitTest(500, 500, positions)).toBeNull();
|
|
17
|
+
});
|
|
18
|
+
it('returns null for empty positions map', () => {
|
|
19
|
+
expect(nodeHitTest(50, 50, new Map())).toBeNull();
|
|
20
|
+
});
|
|
21
|
+
it('returns first matching node for overlapping rects', () => {
|
|
22
|
+
const positions = new Map();
|
|
23
|
+
positions.set('a', { id: 'a', x: 0, y: 0, width: 100, height: 100 });
|
|
24
|
+
positions.set('b', { id: 'b', x: 50, y: 50, width: 100, height: 100 });
|
|
25
|
+
const result = nodeHitTest(60, 60, positions);
|
|
26
|
+
expect(result).toBe('a');
|
|
27
|
+
});
|
|
28
|
+
});
|
|
29
|
+
describe('domEventToCanvasCoords', () => {
|
|
30
|
+
it('converts DOM event to canvas pixel coordinates', () => {
|
|
31
|
+
const mockEvent = {
|
|
32
|
+
clientX: 100,
|
|
33
|
+
clientY: 200,
|
|
34
|
+
currentTarget: {
|
|
35
|
+
getBoundingClientRect: () => ({
|
|
36
|
+
left: 50,
|
|
37
|
+
top: 100,
|
|
38
|
+
width: 200,
|
|
39
|
+
height: 400,
|
|
40
|
+
}),
|
|
41
|
+
},
|
|
42
|
+
};
|
|
43
|
+
const coords = domEventToCanvasCoords(mockEvent, 800, 1600);
|
|
44
|
+
expect(coords.x).toBe(200);
|
|
45
|
+
expect(coords.y).toBe(400);
|
|
46
|
+
});
|
|
47
|
+
it('handles identity scale (1:1)', () => {
|
|
48
|
+
const mockEvent = {
|
|
49
|
+
clientX: 150,
|
|
50
|
+
clientY: 250,
|
|
51
|
+
currentTarget: {
|
|
52
|
+
getBoundingClientRect: () => ({
|
|
53
|
+
left: 50,
|
|
54
|
+
top: 50,
|
|
55
|
+
width: 800,
|
|
56
|
+
height: 600,
|
|
57
|
+
}),
|
|
58
|
+
},
|
|
59
|
+
};
|
|
60
|
+
const coords = domEventToCanvasCoords(mockEvent, 800, 600);
|
|
61
|
+
expect(coords.x).toBe(100);
|
|
62
|
+
expect(coords.y).toBe(200);
|
|
63
|
+
});
|
|
64
|
+
});
|
|
65
|
+
describe('parseMentionEdges', () => {
|
|
66
|
+
it('parses edges from description mentions', () => {
|
|
67
|
+
const items = [
|
|
68
|
+
{ id: 'wt-1', description: 'Depends on wt-2 for setup' },
|
|
69
|
+
{ id: 'wt-2', description: 'No deps' },
|
|
70
|
+
];
|
|
71
|
+
const edges = parseMentionEdges(items, (t) => t.id, (t) => t.description ?? '', /wt-(\d+)/g, (m) => `wt-${m}`);
|
|
72
|
+
expect(edges.size).toBe(1);
|
|
73
|
+
expect(edges.has('wt-1->wt-2')).toBe(true);
|
|
74
|
+
});
|
|
75
|
+
it('returns empty map for items with no mentions', () => {
|
|
76
|
+
const items = [
|
|
77
|
+
{ id: 'wt-1', description: 'No references here' },
|
|
78
|
+
{ id: 'wt-2', description: 'Also none' },
|
|
79
|
+
];
|
|
80
|
+
const edges = parseMentionEdges(items, (t) => t.id, (t) => t.description ?? '', /wt-(\d+)/g, (m) => `wt-${m}`);
|
|
81
|
+
expect(edges.size).toBe(0);
|
|
82
|
+
});
|
|
83
|
+
it('skips mentions to unknown ids', () => {
|
|
84
|
+
const items = [
|
|
85
|
+
{ id: 'wt-1', description: 'Depends on wt-999' },
|
|
86
|
+
];
|
|
87
|
+
const edges = parseMentionEdges(items, (t) => t.id, (t) => t.description ?? '', /wt-(\d+)/g, (m) => `wt-${m}`);
|
|
88
|
+
expect(edges.size).toBe(0);
|
|
89
|
+
});
|
|
90
|
+
});
|
|
91
|
+
describe('parseGroupedSequenceEdges', () => {
|
|
92
|
+
it('chains items sharing the same group key', () => {
|
|
93
|
+
const items = [
|
|
94
|
+
{ id: 'a', domain: 'x', workspace: 'w1', createdAt: '2024-01-01' },
|
|
95
|
+
{ id: 'b', domain: 'x', workspace: 'w1', createdAt: '2024-01-02' },
|
|
96
|
+
{ id: 'c', domain: 'x', workspace: 'w1', createdAt: '2024-01-03' },
|
|
97
|
+
];
|
|
98
|
+
const edges = parseGroupedSequenceEdges(items, (t) => t.id, (t) => `${t.domain}:${t.workspace}`, (t) => t.createdAt);
|
|
99
|
+
expect(edges.size).toBe(2);
|
|
100
|
+
expect(edges.has('a->b')).toBe(true);
|
|
101
|
+
expect(edges.has('b->c')).toBe(true);
|
|
102
|
+
});
|
|
103
|
+
it('returns empty map for single-item groups', () => {
|
|
104
|
+
const items = [
|
|
105
|
+
{ id: 'a', domain: 'x', workspace: 'w1', createdAt: '2024-01-01' },
|
|
106
|
+
{ id: 'b', domain: 'y', workspace: 'w2', createdAt: '2024-01-01' },
|
|
107
|
+
];
|
|
108
|
+
const edges = parseGroupedSequenceEdges(items, (t) => t.id, (t) => `${t.domain}:${t.workspace}`, (t) => t.createdAt);
|
|
109
|
+
expect(edges.size).toBe(0);
|
|
110
|
+
});
|
|
111
|
+
it('handles empty input', () => {
|
|
112
|
+
const edges = parseGroupedSequenceEdges([], (t) => t.id, (t) => t.group, (t) => t.sort);
|
|
113
|
+
expect(edges.size).toBe(0);
|
|
114
|
+
});
|
|
115
|
+
});
|
|
116
|
+
});
|
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
import { GraphState } from '../n1-flow-canvas/graph-state.svelte.js';
|
|
15
15
|
import { EDGE_REVEAL_STAGGER_MS } from '../n1-flow-canvas/types.js';
|
|
16
16
|
import { projectToDisk, quaternionToDisk } from './poincare.js';
|
|
17
|
+
import { resolveAccentRamp } from '../p0-primitives/canvas-theme.js';
|
|
17
18
|
|
|
18
19
|
// ── Props ────────────────────────────────────────────────────────────────────
|
|
19
20
|
|
|
@@ -98,48 +99,74 @@
|
|
|
98
99
|
}
|
|
99
100
|
});
|
|
100
101
|
|
|
101
|
-
// ── Design tokens
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
102
|
+
// ── Design tokens — resolved at runtime from CSS custom properties ─────────
|
|
103
|
+
// resolveAccentRamp() reads --accent-primary so any user accent propagates
|
|
104
|
+
// into canvas paint calls without hardcoding a hue.
|
|
105
|
+
|
|
106
|
+
function resolveColors(el: Element) {
|
|
107
|
+
const cs = getComputedStyle(el);
|
|
108
|
+
const rv = (p: string, fb: string) => cs.getPropertyValue(p).trim() || fb;
|
|
109
|
+
const acc = resolveAccentRamp(el);
|
|
110
|
+
return {
|
|
111
|
+
bg: rv('--color-bg-canvas', '#121518'),
|
|
112
|
+
diskBg: rv('--color-bg-app', '#0a0b0c'),
|
|
113
|
+
diskBorder: rv('--border-default', '#262b30'),
|
|
114
|
+
node: rv('--color-bg-panel', '#181c20'),
|
|
115
|
+
nodeBorder: acc.solid,
|
|
116
|
+
nodeText: rv('--color-text-primary', '#e7e9eb'),
|
|
117
|
+
edgeLine: acc.solid,
|
|
118
|
+
edgeFade: acc.alpha(0.3),
|
|
119
|
+
focus: rv('--color-warning', '#d8a23c'),
|
|
120
|
+
grid: rv('--color-bg-panel', '#181c20'),
|
|
121
|
+
selected: acc.hi,
|
|
122
|
+
// column fills — accent for active states, fixed semantic for others
|
|
123
|
+
colFill: {
|
|
124
|
+
GO: acc.alpha(0.35),
|
|
125
|
+
CONSULT: acc.alpha(0.18),
|
|
126
|
+
WEED: 'rgba(200, 160, 50, 0.22)',
|
|
127
|
+
SPROUT: 'rgba(70, 130, 200, 0.20)',
|
|
128
|
+
FREEZE: 'rgba(80, 110, 180, 0.16)',
|
|
129
|
+
SEED: 'rgba(42, 42, 42, 0.60)',
|
|
130
|
+
} as Record<string, string>,
|
|
131
|
+
colBorder: {
|
|
132
|
+
GO: acc.solid,
|
|
133
|
+
CONSULT: acc.alpha(0.6),
|
|
134
|
+
WEED: '#c8a032',
|
|
135
|
+
SPROUT: '#4682c8',
|
|
136
|
+
FREEZE: '#506eb4',
|
|
137
|
+
SEED: '#3a3a3a',
|
|
138
|
+
} as Record<string, string>,
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
// Resolved lazily in onMount / on theme change.
|
|
143
|
+
let COLORS = $state<ReturnType<typeof resolveColors> | null>(null);
|
|
144
|
+
// Shims so existing draw code using COLUMN_FILL/COLUMN_BORDER still compiles.
|
|
145
|
+
let COLUMN_FILL: Record<string, string> = {};
|
|
146
|
+
let COLUMN_BORDER: Record<string, string> = {};
|
|
136
147
|
|
|
137
148
|
const NODE_RADIUS = 4;
|
|
138
149
|
const FONT = '11px var(--font-mono, monospace)';
|
|
139
150
|
|
|
151
|
+
// Resolve colors on mount and whenever --accent-primary might change.
|
|
152
|
+
// Using document.documentElement so the accent reflects the ThemeProvider seed.
|
|
153
|
+
$effect(() => {
|
|
154
|
+
function resolve() {
|
|
155
|
+
const c = resolveColors(document.documentElement);
|
|
156
|
+
COLORS = c;
|
|
157
|
+
COLUMN_FILL = c.colFill;
|
|
158
|
+
COLUMN_BORDER = c.colBorder;
|
|
159
|
+
}
|
|
160
|
+
resolve();
|
|
161
|
+
// Re-resolve if ThemeProvider emits a CSS variable change event (optional).
|
|
162
|
+
document.documentElement.addEventListener('kos-theme-change', resolve);
|
|
163
|
+
return () => document.documentElement.removeEventListener('kos-theme-change', resolve);
|
|
164
|
+
});
|
|
165
|
+
|
|
140
166
|
// ── Render ──────────────────────────────────────────────────────────────────
|
|
141
167
|
|
|
142
168
|
function render({ context }: { context: CanvasRenderingContext2D }) {
|
|
169
|
+
if (!COLORS) return; // not yet resolved after mount
|
|
143
170
|
const r = diskRadius;
|
|
144
171
|
const cx = diskCx, cy = diskCy;
|
|
145
172
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ManifoldDisk.svelte.d.ts","sourceRoot":"","sources":["../../src/n2-manifold-disk/ManifoldDisk.svelte.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"ManifoldDisk.svelte.d.ts","sourceRoot":"","sources":["../../src/n2-manifold-disk/ManifoldDisk.svelte.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,MAAM,yCAAyC,CAAC;AAQnE,2FAA2F;AAC3F,UAAU,cAAc;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9C,KAAK,EAAE,MAAM,CAAC;CACf;AAED,UAAU,KAAK;IACb,QAAQ,EAAE,aAAa,CAAC;IACxB,KAAK,EAAE,UAAU,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,6FAA6F;IAC7F,WAAW,CAAC,EAAE,cAAc,EAAE,CAAC;CAChC;AAwUH,QAAA,MAAM,YAAY,2CAAwC,CAAC;AAC3D,KAAK,YAAY,GAAG,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC;AACpD,eAAe,YAAY,CAAC"}
|
|
@@ -70,12 +70,12 @@
|
|
|
70
70
|
z-index: 1000;
|
|
71
71
|
pointer-events: none;
|
|
72
72
|
|
|
73
|
-
background: var(--bg-elevated, #2a2a2a);
|
|
73
|
+
background: var(--color-bg-elevated, #2a2a2a);
|
|
74
74
|
border: 1px solid var(--border-subtle, rgba(255, 255, 255, 0.06));
|
|
75
75
|
border-radius: var(--radius-sm, 6px);
|
|
76
76
|
padding: var(--space-2, 0.5rem) var(--space-3, 0.75rem);
|
|
77
77
|
|
|
78
|
-
color: var(--text-primary, #f2efe9);
|
|
78
|
+
color: var(--color-text-primary, #f2efe9);
|
|
79
79
|
font-family: var(--font-mono, 'JetBrains Mono', monospace);
|
|
80
80
|
font-size: 0.75rem;
|
|
81
81
|
line-height: 1.4;
|
|
@@ -18,10 +18,11 @@
|
|
|
18
18
|
ResolvedThemeColors,
|
|
19
19
|
NodeIndicatorState,
|
|
20
20
|
PhaseTheme,
|
|
21
|
+
NodeLayout,
|
|
21
22
|
} from './types.js';
|
|
22
23
|
import { DEFAULT_LAYOUT_PREFERENCES } from './types.js';
|
|
23
24
|
import { resolvePhaseTheme, DEFAULT_PHASE_THEME } from './phase-theme.js';
|
|
24
|
-
import
|
|
25
|
+
import { getCanvasTheme, resolveAccentRamp } from '../p0-primitives/canvas-theme';
|
|
25
26
|
import { LayoutOrchestrator } from './orchestrator.js';
|
|
26
27
|
import { ManifoldProvider } from './providers/manifold-provider.js';
|
|
27
28
|
import { GravitationalProvider } from './providers/gravitational-provider.js';
|
|
@@ -90,19 +91,20 @@
|
|
|
90
91
|
|
|
91
92
|
let containerEl: HTMLDivElement | undefined = $state(undefined);
|
|
92
93
|
let colors: ResolvedThemeColors = $state({
|
|
93
|
-
canvasBg:
|
|
94
|
-
nodeActive:
|
|
95
|
-
nodeIdle:
|
|
94
|
+
canvasBg: getCanvasTheme().bg,
|
|
95
|
+
nodeActive: getCanvasTheme().nodeBorder,
|
|
96
|
+
nodeIdle: getCanvasTheme().nodeText,
|
|
96
97
|
nodeBlocked: '#f39c12',
|
|
97
|
-
nodeCompleted:
|
|
98
|
+
nodeCompleted: getCanvasTheme().nodeText,
|
|
98
99
|
nodeCritical: '#c0392b',
|
|
99
|
-
nodeBg:
|
|
100
|
-
nodeBorder:
|
|
101
|
-
nodeText:
|
|
102
|
-
edgeColor:
|
|
103
|
-
edgeActive:
|
|
104
|
-
pulseColor:
|
|
100
|
+
nodeBg: getCanvasTheme().node,
|
|
101
|
+
nodeBorder: getCanvasTheme().edgeFade,
|
|
102
|
+
nodeText: getCanvasTheme().nodeText,
|
|
103
|
+
edgeColor: getCanvasTheme().edgeFade,
|
|
104
|
+
edgeActive: getCanvasTheme().nodeBorder,
|
|
105
|
+
pulseColor: getCanvasTheme().nodeBorder,
|
|
105
106
|
pulseCritical: '#c0392b',
|
|
107
|
+
accentRamp: resolveAccentRamp(),
|
|
106
108
|
});
|
|
107
109
|
|
|
108
110
|
function resolveTokens(): void {
|
|
@@ -112,18 +114,21 @@
|
|
|
112
114
|
const get = (prop: string, fallback: string) => cs.getPropertyValue(prop).trim() || fallback;
|
|
113
115
|
colors = {
|
|
114
116
|
canvasBg: get('--n4-canvas-bg', '#1a1a1a'),
|
|
115
|
-
nodeActive: get('--n4-node-border-selected', '#
|
|
117
|
+
nodeActive: get('--n4-node-border-selected', '#888'),
|
|
116
118
|
nodeIdle: get('--n4-node-text-muted', '#a09880'),
|
|
117
119
|
nodeBlocked: get('--color-status-warning', '#f39c12'),
|
|
118
120
|
nodeCompleted: get('--n4-node-text-muted', '#a09880'),
|
|
119
121
|
nodeCritical: get('--color-status-error', '#c0392b'),
|
|
120
122
|
nodeBg: get('--n4-node-bg', '#222'),
|
|
121
|
-
nodeBorder: get('--n4-node-border', 'rgba(
|
|
122
|
-
nodeText: get('--n4-node-text', '#
|
|
123
|
-
edgeColor: get('--n4-edge-color', 'rgba(
|
|
124
|
-
edgeActive: get('--n4-edge-color-active', '#
|
|
125
|
-
pulseColor: get('--color-accent', '#
|
|
123
|
+
nodeBorder: get('--n4-node-border', 'rgba(128,128,128,0.15)'),
|
|
124
|
+
nodeText: get('--n4-node-text', '#e7e9eb'),
|
|
125
|
+
edgeColor: get('--n4-edge-color', 'rgba(128,128,128,0.25)'),
|
|
126
|
+
edgeActive: get('--n4-edge-color-active', '#888'),
|
|
127
|
+
pulseColor: get('--color-accent', '#888'),
|
|
126
128
|
pulseCritical: get('--color-status-error', '#c0392b'),
|
|
129
|
+
// accentRamp: resolve --accent-primary directly so inline canvas paint
|
|
130
|
+
// calls respond to the user's chosen accent without reading n4-token CSS.
|
|
131
|
+
accentRamp: resolveAccentRamp(containerEl),
|
|
127
132
|
};
|
|
128
133
|
phaseTheme = resolvePhaseTheme(containerEl);
|
|
129
134
|
}
|
|
@@ -617,7 +622,7 @@
|
|
|
617
622
|
const GRID = 22;
|
|
618
623
|
const gridStartX = Math.floor(worldLeft / GRID) * GRID;
|
|
619
624
|
const gridStartY = Math.floor(worldTop / GRID) * GRID;
|
|
620
|
-
context.fillStyle =
|
|
625
|
+
context.fillStyle = colors.accentRamp.alpha(0.055);
|
|
621
626
|
for (let gx = gridStartX; gx < worldRight; gx += GRID) {
|
|
622
627
|
for (let gy = gridStartY; gy < worldBottom; gy += GRID) {
|
|
623
628
|
context.beginPath();
|
|
@@ -681,8 +686,8 @@
|
|
|
681
686
|
const edgeStrength = (edge.metadata as Record<string, unknown>)?.strength as number | undefined ?? 0.5;
|
|
682
687
|
context.save();
|
|
683
688
|
context.strokeStyle = progress >= 1.0
|
|
684
|
-
?
|
|
685
|
-
:
|
|
689
|
+
? colors.accentRamp.alpha(0.45 + edgeStrength * 0.35)
|
|
690
|
+
: colors.accentRamp.alpha(0.30);
|
|
686
691
|
context.lineWidth = 1.5;
|
|
687
692
|
// Permanently dashed when fully revealed — individual lines are traceable in dense graphs.
|
|
688
693
|
// During reveal animation keep a solid growing stroke, then settle to dashes.
|
|
@@ -704,7 +709,7 @@
|
|
|
704
709
|
const FLAG_R = 3;
|
|
705
710
|
|
|
706
711
|
const PRIORITY_COLORS: Record<string, string> = {
|
|
707
|
-
p0: '#c0392b', p1:
|
|
712
|
+
p0: '#c0392b', p1: colors.accentRamp.solid, p2: '#c8a84b', p3: '#4a4438',
|
|
708
713
|
};
|
|
709
714
|
|
|
710
715
|
// ── Node rendering: LOD-aware ─────────────────────────────────────────────
|
|
@@ -727,7 +732,7 @@
|
|
|
727
732
|
// ── Signals: always a small dot ─────────────────────────────────────
|
|
728
733
|
if (node.kind === 'signal') {
|
|
729
734
|
const sr = lodTier === 'overview' ? 3 : 5;
|
|
730
|
-
context.shadowColor =
|
|
735
|
+
context.shadowColor = colors.accentRamp.alpha(0.4);
|
|
731
736
|
context.shadowBlur = isSelected ? 10 : 4;
|
|
732
737
|
context.beginPath();
|
|
733
738
|
context.arc(ncx, ncy, sr, 0, Math.PI * 2);
|
|
@@ -760,14 +765,14 @@
|
|
|
760
765
|
context.beginPath();
|
|
761
766
|
context.moveTo(ncx, ncy);
|
|
762
767
|
context.lineTo(ncx - Math.cos(angle) * tailLen, ncy - Math.sin(angle) * tailLen);
|
|
763
|
-
context.strokeStyle =
|
|
768
|
+
context.strokeStyle = colors.accentRamp.alpha(0.5);
|
|
764
769
|
context.lineWidth = 2;
|
|
765
770
|
context.stroke();
|
|
766
771
|
}
|
|
767
772
|
|
|
768
773
|
context.beginPath();
|
|
769
774
|
context.arc(ncx, ncy, r, 0, Math.PI * 2);
|
|
770
|
-
context.fillStyle = isActiveLoop ?
|
|
775
|
+
context.fillStyle = isActiveLoop ? colors.accentRamp.alpha(0.9) : colors.accentRamp.alpha(0.4);
|
|
771
776
|
context.fill();
|
|
772
777
|
if (isSelected) {
|
|
773
778
|
context.strokeStyle = colors.nodeActive;
|
|
@@ -992,7 +997,7 @@
|
|
|
992
997
|
beginShape(context, 'hexagon',
|
|
993
998
|
ncx - HEX_IND_W / 2 - P, ncy - HEX_IND_H / 2 - P,
|
|
994
999
|
HEX_IND_W + 2 * P, HEX_IND_H + 2 * P);
|
|
995
|
-
context.strokeStyle =
|
|
1000
|
+
context.strokeStyle = colors.accentRamp.alpha(alpha);
|
|
996
1001
|
context.lineWidth = 2;
|
|
997
1002
|
context.stroke();
|
|
998
1003
|
break;
|
|
@@ -1006,7 +1011,7 @@
|
|
|
1006
1011
|
context.beginPath();
|
|
1007
1012
|
context.moveTo(ncx, ncy);
|
|
1008
1013
|
context.lineTo(tx, ty);
|
|
1009
|
-
context.strokeStyle =
|
|
1014
|
+
context.strokeStyle = colors.accentRamp.alpha(0.6 * phaseIntensity);
|
|
1010
1015
|
context.lineWidth = 1;
|
|
1011
1016
|
context.setLineDash([4, 4]);
|
|
1012
1017
|
context.stroke();
|
|
@@ -1043,7 +1048,7 @@
|
|
|
1043
1048
|
}
|
|
1044
1049
|
context.beginPath();
|
|
1045
1050
|
context.arc(px, py, particleR, 0, Math.PI * 2);
|
|
1046
|
-
context.fillStyle =
|
|
1051
|
+
context.fillStyle = colors.accentRamp.alpha(alpha);
|
|
1047
1052
|
context.fill();
|
|
1048
1053
|
}
|
|
1049
1054
|
break;
|
|
@@ -1070,7 +1075,7 @@
|
|
|
1070
1075
|
// Claimed: solid brass outline
|
|
1071
1076
|
context.beginPath();
|
|
1072
1077
|
context.roundRect(px - 3, py - 3, TASK_W + 6, TASK_H + 6, 6);
|
|
1073
|
-
context.strokeStyle =
|
|
1078
|
+
context.strokeStyle = colors.accentRamp.alpha(0.6 * phaseIntensity);
|
|
1074
1079
|
context.lineWidth = 2;
|
|
1075
1080
|
context.stroke();
|
|
1076
1081
|
} else if (node.status === 'idle') {
|
|
@@ -1079,7 +1084,7 @@
|
|
|
1079
1084
|
const alpha = phaseIntensity * (0.1 + 0.2 * Math.sin(pulsePhase * Math.PI * 2));
|
|
1080
1085
|
context.beginPath();
|
|
1081
1086
|
context.roundRect(px - 2, py - 2, TASK_W + 4, TASK_H + 4, 5);
|
|
1082
|
-
context.strokeStyle =
|
|
1087
|
+
context.strokeStyle = colors.accentRamp.alpha(alpha);
|
|
1083
1088
|
context.lineWidth = 1.5;
|
|
1084
1089
|
context.stroke();
|
|
1085
1090
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AdaptiveManifold.svelte.d.ts","sourceRoot":"","sources":["../../src/n4-adaptive-manifold/AdaptiveManifold.svelte.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EACR,gBAAgB,EAEhB,eAAe,EACf,oBAAoB,EACpB,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EAGjB,kBAAkB,
|
|
1
|
+
{"version":3,"file":"AdaptiveManifold.svelte.d.ts","sourceRoot":"","sources":["../../src/n4-adaptive-manifold/AdaptiveManifold.svelte.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EACR,gBAAgB,EAEhB,eAAe,EACf,oBAAoB,EACpB,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EAGjB,kBAAkB,EAGnB,MAAM,YAAY,CAAC;AAapB,UAAU,KAAK;IACb,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAChC,aAAa,CAAC,EAAE,iBAAiB,CAAC;IAClC,iBAAiB,CAAC,EAAE,CAAC,SAAS,EAAE,eAAe,KAAK,IAAI,CAAC;IACzD,gBAAgB,CAAC,EAAE,CAAC,MAAM,EAAE,oBAAoB,KAAK,IAAI,CAAC;IAC1D,YAAY,CAAC,EAAE,CAAC,UAAU,EAAE,gBAAgB,GAAG,IAAI,KAAK,IAAI,CAAC;IAC7D,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAC/C,eAAe,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IAClD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAukCH,QAAA,MAAM,gBAAgB;;;;;MAAwC,CAAC;AAC/D,KAAK,gBAAgB,GAAG,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAC5D,eAAe,gBAAgB,CAAC"}
|