@stephen-netu/design-system 0.2.2 → 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/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 +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.js +1 -1
- 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/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/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/MarkdownEditor.svelte +104 -617
- package/dist/editor/MarkdownEditor.svelte.d.ts +1 -1
- package/dist/editor/MarkdownEditor.svelte.d.ts.map +1 -1
- 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 -159
- 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/fabric/ai/ChatPanel.svelte +61 -62
- package/dist/fabric/ai/ChatPanel.svelte.d.ts.map +1 -1
- package/dist/fabric/ai/ResearchPanel.svelte +31 -24
- 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 +1 -0
- package/dist/fabric/index.d.ts.map +1 -1
- package/dist/fabric/index.js +2 -0
- package/dist/fabric/input/KeyboardShortcuts.svelte +23 -21
- package/dist/fabric/layout/CollapsiblePanel.svelte +8 -10
- 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 +3 -1
- 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/markdown.js +11 -11
- package/dist/l0-layout/block-writer/markdown.test.js +81 -0
- 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/index.d.ts +1 -0
- package/dist/l0-layout/index.d.ts.map +1 -1
- package/dist/l0-layout/index.js +1 -0
- package/dist/l0-layout/kanban/KanbanBoard.svelte +1 -1
- package/dist/l0-layout/kanban/KanbanColumn.svelte +1 -1
- 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/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/n2-manifold-disk/ManifoldDisk.svelte +62 -35
- package/dist/n2-manifold-disk/ManifoldDisk.svelte.d.ts.map +1 -1
- package/dist/n4-adaptive-manifold/AdaptiveManifold.svelte +23 -19
- package/dist/n4-adaptive-manifold/AdaptiveManifold.svelte.d.ts.map +1 -1
- 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 +28 -7
- package/dist/p0-primitives/ThemeProvider.svelte.d.ts +5 -0
- package/dist/p0-primitives/ThemeProvider.svelte.d.ts.map +1 -1
- package/dist/p0-primitives/canvas-theme.d.ts +21 -1
- package/dist/p0-primitives/canvas-theme.d.ts.map +1 -1
- package/dist/p0-primitives/canvas-theme.js +78 -23
- 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/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 +124 -29
- package/dist/p0-primitives/utils/index.d.ts +2 -0
- 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 +1 -1
- package/dist/s0-state/index.d.ts +2 -1
- package/dist/s0-state/index.d.ts.map +1 -1
- package/dist/s0-state/index.js +2 -0
- package/dist/s0-state/modal-stack-store.svelte.d.ts +3 -3
- package/dist/s0-state/modal-stack-store.svelte.js +2 -2
- package/dist/spatial/ForceSimulation.svelte.js +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/ZoneTiler.test.js +90 -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/t0-transport/substrate.svelte.d.ts.map +1 -1
- package/dist/t0-transport/substrate.svelte.js +10 -4
- package/dist/u0-primitives/LockIndicator.svelte +16 -14
- package/dist/u0-primitives/VerticalToolbar.svelte +24 -21
- package/dist/u0-primitives/accordion/Accordion.svelte +8 -7
- 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/ValidityBadge.svelte +4 -27
- package/dist/u0-primitives/button/Button.svelte +15 -12
- package/dist/u0-primitives/card/Card.svelte +37 -15
- package/dist/u0-primitives/card/Card.test.js +86 -0
- package/dist/u0-primitives/command-palette/CommandPalette.svelte +48 -43
- package/dist/u0-primitives/command-palette/CommandPalette.test.js +202 -0
- package/dist/u0-primitives/dropdown/Dropdown.svelte +20 -25
- package/dist/u0-primitives/grant-badge/GrantStatusBadge.svelte +2 -2
- package/dist/u0-primitives/index.d.ts +6 -0
- package/dist/u0-primitives/index.d.ts.map +1 -1
- package/dist/u0-primitives/index.js +8 -0
- package/dist/u0-primitives/input/Input.svelte +77 -24
- 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 +81 -1
- 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 +22 -19
- package/dist/u0-primitives/modal/Modal.test.js +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 +18 -19
- package/dist/u0-primitives/surface-state/SurfaceState.svelte +7 -7
- 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 +10 -11
- package/dist/u0-primitives/tooltip/Tooltip.svelte +9 -9
- 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/x0-enchanted-blocks/components/NodepadBlock.svelte +11 -2
- package/dist/x0-enchanted-blocks/components/NodepadBlock.svelte.d.ts.map +1 -1
- package/package.json +44 -28
- package/src/p0-primitives/tokens/ambient.css +76 -0
- package/src/p0-primitives/tokens/tokens.css +124 -29
- package/src/p0-primitives/tokens/tokens.json +42 -24
|
@@ -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
|
+
}
|
|
@@ -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"}
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
} from './types.js';
|
|
23
23
|
import { DEFAULT_LAYOUT_PREFERENCES } from './types.js';
|
|
24
24
|
import { resolvePhaseTheme, DEFAULT_PHASE_THEME } from './phase-theme.js';
|
|
25
|
-
import { getCanvasTheme } from '../p0-primitives/canvas-theme';
|
|
25
|
+
import { getCanvasTheme, resolveAccentRamp } from '../p0-primitives/canvas-theme';
|
|
26
26
|
import { LayoutOrchestrator } from './orchestrator.js';
|
|
27
27
|
import { ManifoldProvider } from './providers/manifold-provider.js';
|
|
28
28
|
import { GravitationalProvider } from './providers/gravitational-provider.js';
|
|
@@ -104,6 +104,7 @@
|
|
|
104
104
|
edgeActive: getCanvasTheme().nodeBorder,
|
|
105
105
|
pulseColor: getCanvasTheme().nodeBorder,
|
|
106
106
|
pulseCritical: '#c0392b',
|
|
107
|
+
accentRamp: resolveAccentRamp(),
|
|
107
108
|
});
|
|
108
109
|
|
|
109
110
|
function resolveTokens(): void {
|
|
@@ -113,18 +114,21 @@
|
|
|
113
114
|
const get = (prop: string, fallback: string) => cs.getPropertyValue(prop).trim() || fallback;
|
|
114
115
|
colors = {
|
|
115
116
|
canvasBg: get('--n4-canvas-bg', '#1a1a1a'),
|
|
116
|
-
nodeActive: get('--n4-node-border-selected', '#
|
|
117
|
+
nodeActive: get('--n4-node-border-selected', '#888'),
|
|
117
118
|
nodeIdle: get('--n4-node-text-muted', '#a09880'),
|
|
118
119
|
nodeBlocked: get('--color-status-warning', '#f39c12'),
|
|
119
120
|
nodeCompleted: get('--n4-node-text-muted', '#a09880'),
|
|
120
121
|
nodeCritical: get('--color-status-error', '#c0392b'),
|
|
121
122
|
nodeBg: get('--n4-node-bg', '#222'),
|
|
122
|
-
nodeBorder: get('--n4-node-border', 'rgba(
|
|
123
|
-
nodeText: get('--n4-node-text', '#
|
|
124
|
-
edgeColor: get('--n4-edge-color', 'rgba(
|
|
125
|
-
edgeActive: get('--n4-edge-color-active', '#
|
|
126
|
-
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'),
|
|
127
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),
|
|
128
132
|
};
|
|
129
133
|
phaseTheme = resolvePhaseTheme(containerEl);
|
|
130
134
|
}
|
|
@@ -618,7 +622,7 @@
|
|
|
618
622
|
const GRID = 22;
|
|
619
623
|
const gridStartX = Math.floor(worldLeft / GRID) * GRID;
|
|
620
624
|
const gridStartY = Math.floor(worldTop / GRID) * GRID;
|
|
621
|
-
context.fillStyle =
|
|
625
|
+
context.fillStyle = colors.accentRamp.alpha(0.055);
|
|
622
626
|
for (let gx = gridStartX; gx < worldRight; gx += GRID) {
|
|
623
627
|
for (let gy = gridStartY; gy < worldBottom; gy += GRID) {
|
|
624
628
|
context.beginPath();
|
|
@@ -682,8 +686,8 @@
|
|
|
682
686
|
const edgeStrength = (edge.metadata as Record<string, unknown>)?.strength as number | undefined ?? 0.5;
|
|
683
687
|
context.save();
|
|
684
688
|
context.strokeStyle = progress >= 1.0
|
|
685
|
-
?
|
|
686
|
-
:
|
|
689
|
+
? colors.accentRamp.alpha(0.45 + edgeStrength * 0.35)
|
|
690
|
+
: colors.accentRamp.alpha(0.30);
|
|
687
691
|
context.lineWidth = 1.5;
|
|
688
692
|
// Permanently dashed when fully revealed — individual lines are traceable in dense graphs.
|
|
689
693
|
// During reveal animation keep a solid growing stroke, then settle to dashes.
|
|
@@ -705,7 +709,7 @@
|
|
|
705
709
|
const FLAG_R = 3;
|
|
706
710
|
|
|
707
711
|
const PRIORITY_COLORS: Record<string, string> = {
|
|
708
|
-
p0: '#c0392b', p1:
|
|
712
|
+
p0: '#c0392b', p1: colors.accentRamp.solid, p2: '#c8a84b', p3: '#4a4438',
|
|
709
713
|
};
|
|
710
714
|
|
|
711
715
|
// ── Node rendering: LOD-aware ─────────────────────────────────────────────
|
|
@@ -728,7 +732,7 @@
|
|
|
728
732
|
// ── Signals: always a small dot ─────────────────────────────────────
|
|
729
733
|
if (node.kind === 'signal') {
|
|
730
734
|
const sr = lodTier === 'overview' ? 3 : 5;
|
|
731
|
-
context.shadowColor =
|
|
735
|
+
context.shadowColor = colors.accentRamp.alpha(0.4);
|
|
732
736
|
context.shadowBlur = isSelected ? 10 : 4;
|
|
733
737
|
context.beginPath();
|
|
734
738
|
context.arc(ncx, ncy, sr, 0, Math.PI * 2);
|
|
@@ -761,14 +765,14 @@
|
|
|
761
765
|
context.beginPath();
|
|
762
766
|
context.moveTo(ncx, ncy);
|
|
763
767
|
context.lineTo(ncx - Math.cos(angle) * tailLen, ncy - Math.sin(angle) * tailLen);
|
|
764
|
-
context.strokeStyle =
|
|
768
|
+
context.strokeStyle = colors.accentRamp.alpha(0.5);
|
|
765
769
|
context.lineWidth = 2;
|
|
766
770
|
context.stroke();
|
|
767
771
|
}
|
|
768
772
|
|
|
769
773
|
context.beginPath();
|
|
770
774
|
context.arc(ncx, ncy, r, 0, Math.PI * 2);
|
|
771
|
-
context.fillStyle = isActiveLoop ?
|
|
775
|
+
context.fillStyle = isActiveLoop ? colors.accentRamp.alpha(0.9) : colors.accentRamp.alpha(0.4);
|
|
772
776
|
context.fill();
|
|
773
777
|
if (isSelected) {
|
|
774
778
|
context.strokeStyle = colors.nodeActive;
|
|
@@ -993,7 +997,7 @@
|
|
|
993
997
|
beginShape(context, 'hexagon',
|
|
994
998
|
ncx - HEX_IND_W / 2 - P, ncy - HEX_IND_H / 2 - P,
|
|
995
999
|
HEX_IND_W + 2 * P, HEX_IND_H + 2 * P);
|
|
996
|
-
context.strokeStyle =
|
|
1000
|
+
context.strokeStyle = colors.accentRamp.alpha(alpha);
|
|
997
1001
|
context.lineWidth = 2;
|
|
998
1002
|
context.stroke();
|
|
999
1003
|
break;
|
|
@@ -1007,7 +1011,7 @@
|
|
|
1007
1011
|
context.beginPath();
|
|
1008
1012
|
context.moveTo(ncx, ncy);
|
|
1009
1013
|
context.lineTo(tx, ty);
|
|
1010
|
-
context.strokeStyle =
|
|
1014
|
+
context.strokeStyle = colors.accentRamp.alpha(0.6 * phaseIntensity);
|
|
1011
1015
|
context.lineWidth = 1;
|
|
1012
1016
|
context.setLineDash([4, 4]);
|
|
1013
1017
|
context.stroke();
|
|
@@ -1044,7 +1048,7 @@
|
|
|
1044
1048
|
}
|
|
1045
1049
|
context.beginPath();
|
|
1046
1050
|
context.arc(px, py, particleR, 0, Math.PI * 2);
|
|
1047
|
-
context.fillStyle =
|
|
1051
|
+
context.fillStyle = colors.accentRamp.alpha(alpha);
|
|
1048
1052
|
context.fill();
|
|
1049
1053
|
}
|
|
1050
1054
|
break;
|
|
@@ -1071,7 +1075,7 @@
|
|
|
1071
1075
|
// Claimed: solid brass outline
|
|
1072
1076
|
context.beginPath();
|
|
1073
1077
|
context.roundRect(px - 3, py - 3, TASK_W + 6, TASK_H + 6, 6);
|
|
1074
|
-
context.strokeStyle =
|
|
1078
|
+
context.strokeStyle = colors.accentRamp.alpha(0.6 * phaseIntensity);
|
|
1075
1079
|
context.lineWidth = 2;
|
|
1076
1080
|
context.stroke();
|
|
1077
1081
|
} else if (node.status === 'idle') {
|
|
@@ -1080,7 +1084,7 @@
|
|
|
1080
1084
|
const alpha = phaseIntensity * (0.1 + 0.2 * Math.sin(pulsePhase * Math.PI * 2));
|
|
1081
1085
|
context.beginPath();
|
|
1082
1086
|
context.roundRect(px - 2, py - 2, TASK_W + 4, TASK_H + 4, 5);
|
|
1083
|
-
context.strokeStyle =
|
|
1087
|
+
context.strokeStyle = colors.accentRamp.alpha(alpha);
|
|
1084
1088
|
context.lineWidth = 1.5;
|
|
1085
1089
|
context.stroke();
|
|
1086
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,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;
|
|
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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { NodeLayout, LayoutResult } from '../n1-flow-canvas/types.js';
|
|
2
|
+
import type { AccentRamp } from '../p0-primitives/canvas-theme.js';
|
|
2
3
|
/** The active layout algorithm. Gravitational is the only registered provider. */
|
|
3
4
|
export type LayoutAlgorithm = 'gravitational' | 'manifold';
|
|
4
5
|
/** Visual treatment for nodes — maps to --n4-node-* design tokens. */
|
|
@@ -161,6 +162,8 @@ export interface ResolvedThemeColors {
|
|
|
161
162
|
edgeActive: string;
|
|
162
163
|
pulseColor: string;
|
|
163
164
|
pulseCritical: string;
|
|
165
|
+
/** Runtime-derived accent ramp for inline canvas 2D paint calls. */
|
|
166
|
+
accentRamp: AccentRamp;
|
|
164
167
|
}
|
|
165
168
|
/** Inferred phase in the perceive-think-act-sync loop */
|
|
166
169
|
export type LoopPhase = 'perceive' | 'think' | 'act' | 'sync' | 'idle';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/n4-adaptive-manifold/types.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/n4-adaptive-manifold/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -33,6 +33,11 @@
|
|
|
33
33
|
colorFgTertiary?: string;
|
|
34
34
|
|
|
35
35
|
colorAccent?: string;
|
|
36
|
+
/** @deprecated Accent ramp fields ignored by ThemeProvider — the ramp is
|
|
37
|
+
* derived from `colorAccent` via tokens.css color-mix. Palette fields
|
|
38
|
+
* (Amber, Copper, Rust, Sage, Gold) below are still emitted directly as
|
|
39
|
+
* --color-accent-* custom properties for source compatibility. Set only
|
|
40
|
+
* `colorAccent` for the primary accent. */
|
|
36
41
|
colorAccentHover?: string;
|
|
37
42
|
colorAccentActive?: string;
|
|
38
43
|
colorAccentSubtle?: string;
|
|
@@ -121,13 +126,29 @@
|
|
|
121
126
|
if (t.colorFgInverse) vars.push(`--color-fg-inverse: ${t.colorFgInverse};`);
|
|
122
127
|
if (t.colorFgTertiary) vars.push(`--color-fg-tertiary: ${t.colorFgTertiary};`);
|
|
123
128
|
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
if (t.
|
|
130
|
-
|
|
129
|
+
// Accent: emit the seed AND redeclare the full alias/ramp chain on this
|
|
130
|
+
// wrapper. CSS resolves var() in unregistered custom properties at computed-
|
|
131
|
+
// value time on the declaring element (:root). Without redeclaring the
|
|
132
|
+
// derived variables here, --color-accent etc. stay baked to the root seed
|
|
133
|
+
// even when --accent-primary is overridden on this wrapper.
|
|
134
|
+
if (t.colorAccent) {
|
|
135
|
+
vars.push(`--accent-primary: ${t.colorAccent};`);
|
|
136
|
+
vars.push(`--accent-hover: color-mix(in oklab, var(--accent-primary), #fff 16%);`);
|
|
137
|
+
vars.push(`--accent-active: color-mix(in oklab, var(--accent-primary), #000 22%);`);
|
|
138
|
+
vars.push(`--accent-glow: color-mix(in srgb, var(--accent-primary) 28%, transparent);`);
|
|
139
|
+
vars.push(`--accent-muted: color-mix(in srgb, var(--accent-primary) 16%, transparent);`);
|
|
140
|
+
vars.push(`--accent-subtle: color-mix(in srgb, var(--accent-primary) 8%, transparent);`);
|
|
141
|
+
vars.push(`--accent-faint: color-mix(in srgb, var(--accent-primary) 4%, transparent);`);
|
|
142
|
+
vars.push(`--color-accent: var(--accent-primary);`);
|
|
143
|
+
vars.push(`--color-accent-hover: var(--accent-hover);`);
|
|
144
|
+
vars.push(`--color-accent-active: var(--accent-active);`);
|
|
145
|
+
vars.push(`--color-accent-glow: var(--accent-glow);`);
|
|
146
|
+
vars.push(`--color-accent-muted: var(--accent-muted);`);
|
|
147
|
+
vars.push(`--color-accent-subtle: var(--accent-subtle);`);
|
|
148
|
+
vars.push(`--color-accent-faint: var(--accent-faint);`);
|
|
149
|
+
vars.push(`--color-accent-secondary: color-mix(in oklab, var(--accent-primary), #fff 26%);`);
|
|
150
|
+
vars.push(`--border-focus: var(--accent-primary);`);
|
|
151
|
+
}
|
|
131
152
|
if (t.colorAccentAmber) vars.push(`--color-accent-amber: ${t.colorAccentAmber};`);
|
|
132
153
|
if (t.colorAccentCopper) vars.push(`--color-accent-copper: ${t.colorAccentCopper};`);
|
|
133
154
|
if (t.colorAccentRust) vars.push(`--color-accent-rust: ${t.colorAccentRust};`);
|
|
@@ -26,6 +26,11 @@ export interface ThemeConfig {
|
|
|
26
26
|
colorFgInverse?: string;
|
|
27
27
|
colorFgTertiary?: string;
|
|
28
28
|
colorAccent?: string;
|
|
29
|
+
/** @deprecated Accent ramp fields ignored by ThemeProvider — the ramp is
|
|
30
|
+
* derived from `colorAccent` via tokens.css color-mix. Palette fields
|
|
31
|
+
* (Amber, Copper, Rust, Sage, Gold) below are still emitted directly as
|
|
32
|
+
* --color-accent-* custom properties for source compatibility. Set only
|
|
33
|
+
* `colorAccent` for the primary accent. */
|
|
29
34
|
colorAccentHover?: string;
|
|
30
35
|
colorAccentActive?: string;
|
|
31
36
|
colorAccentSubtle?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ThemeProvider.svelte.d.ts","sourceRoot":"","sources":["../../src/p0-primitives/ThemeProvider.svelte.ts"],"names":[],"mappings":"AAGA;;;;;;;;KAQK;AACL,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAIpC,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;AAElD,MAAM,WAAW,WAAW;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAE9B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAE7B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,UAAU,KAAK;IACb,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;CACnB;
|
|
1
|
+
{"version":3,"file":"ThemeProvider.svelte.d.ts","sourceRoot":"","sources":["../../src/p0-primitives/ThemeProvider.svelte.ts"],"names":[],"mappings":"AAGA;;;;;;;;KAQK;AACL,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAIpC,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;AAElD,MAAM,WAAW,WAAW;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAE9B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;gDAI4C;IAC5C,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAE7B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,UAAU,KAAK;IACb,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAqHH,QAAA,MAAM,aAAa,2CAAwC,CAAC;AAC5D,KAAK,aAAa,GAAG,UAAU,CAAC,OAAO,aAAa,CAAC,CAAC;AACtD,eAAe,aAAa,CAAC"}
|
|
@@ -8,6 +8,17 @@ interface QuaternionPalette {
|
|
|
8
8
|
j: string;
|
|
9
9
|
k: string;
|
|
10
10
|
}
|
|
11
|
+
/** Runtime-derived accent ramp. Values are pre-parsed for Canvas 2D use. */
|
|
12
|
+
export interface AccentRamp {
|
|
13
|
+
/** Solid accent — e.g. "rgb(184 115 51)" — use for borders, active edges, cursors. */
|
|
14
|
+
solid: string;
|
|
15
|
+
/** Lighter variant (+16% toward white in OKLab approximation). */
|
|
16
|
+
hi: string;
|
|
17
|
+
/** Darker variant (-22% toward black). */
|
|
18
|
+
lo: string;
|
|
19
|
+
/** Return an rgba string at the given alpha (0–1). */
|
|
20
|
+
alpha: (a: number) => string;
|
|
21
|
+
}
|
|
11
22
|
interface CanvasTheme {
|
|
12
23
|
bg: string;
|
|
13
24
|
node: string;
|
|
@@ -19,11 +30,20 @@ interface CanvasTheme {
|
|
|
19
30
|
focus: string;
|
|
20
31
|
severity: SeverityPalette;
|
|
21
32
|
quaternion: QuaternionPalette;
|
|
33
|
+
/** Accent ramp derived from the single seed (--accent-primary). */
|
|
34
|
+
accentRamp: AccentRamp;
|
|
22
35
|
}
|
|
36
|
+
/**
|
|
37
|
+
* Resolve the accent seed and return a canvas-ready AccentRamp.
|
|
38
|
+
* Reads --accent-primary from the target element's computed styles.
|
|
39
|
+
* Call once per frame (or on theme change) and cache the result.
|
|
40
|
+
*/
|
|
41
|
+
export declare function resolveAccentRamp(el?: Element): AccentRamp;
|
|
23
42
|
/**
|
|
24
43
|
* Get the current canvas theme by reading CSS custom properties.
|
|
25
44
|
* This enables runtime theming for all canvas-based components.
|
|
45
|
+
* Pass a container element to resolve tokens scoped to a ThemeProvider.
|
|
26
46
|
*/
|
|
27
|
-
export declare function getCanvasTheme(): CanvasTheme;
|
|
47
|
+
export declare function getCanvasTheme(el?: Element): CanvasTheme;
|
|
28
48
|
export type { CanvasTheme };
|
|
29
49
|
//# sourceMappingURL=canvas-theme.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"canvas-theme.d.ts","sourceRoot":"","sources":["../../src/p0-primitives/canvas-theme.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"canvas-theme.d.ts","sourceRoot":"","sources":["../../src/p0-primitives/canvas-theme.ts"],"names":[],"mappings":"AAaA,UAAU,eAAe;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED,UAAU,iBAAiB;IACzB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX;AAED,4EAA4E;AAC5E,MAAM,WAAW,UAAU;IACzB,sFAAsF;IACtF,KAAK,EAAE,MAAM,CAAC;IACd,kEAAkE;IAClE,EAAE,EAAE,MAAM,CAAC;IACX,0CAA0C;IAC1C,EAAE,EAAE,MAAM,CAAC;IACX,sDAAsD;IACtD,KAAK,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;CAC9B;AAED,UAAU,WAAW;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,eAAe,CAAC;IAC1B,UAAU,EAAE,iBAAiB,CAAC;IAC9B,mEAAmE;IACnE,UAAU,EAAE,UAAU,CAAC;CACxB;AAqDD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,GAAE,OAAkC,GAAG,UAAU,CAKpF;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,EAAE,GAAE,OAAkC,GAAG,WAAW,CAwBlF;AAED,YAAY,EAAE,WAAW,EAAE,CAAC"}
|