@stephen-netu/design-system 0.2.0 → 0.2.2
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/CheckpointPill.svelte +7 -2
- package/dist/d0-data-viz/CheckpointPill.svelte.d.ts.map +1 -1
- package/dist/d0-data-viz/theme-integration.d.ts +3 -3
- package/dist/d0-data-viz/theme-integration.js +3 -3
- package/dist/d0-data-viz/theme-integration.test.js +41 -0
- package/dist/demos/BspSizingInfographic.svelte +3 -32
- package/dist/editor/CodeEditor.test.js +38 -0
- package/dist/editor/FindReplaceDialog.svelte +32 -32
- package/dist/editor/MarkdownEditor.svelte +71 -58
- package/dist/editor/MarkdownEditor.svelte.d.ts.map +1 -1
- package/dist/editor/MarkdownEditor.test.js +38 -0
- package/dist/editor/components/CorrectionTooltip.svelte +0 -1
- package/dist/editor/extensions/expansion.d.ts.map +1 -1
- package/dist/editor/extensions/expansion.js +16 -10
- package/dist/entity-graph-view/WorldView.svelte +1 -1
- package/dist/fabric/ai/ChatPanel.svelte +31 -31
- package/dist/fabric/ai/ResearchPanel.svelte +6 -3
- package/dist/fabric/ai/ResearchPanel.svelte.d.ts.map +1 -1
- package/dist/fabric/index.d.ts +4 -5
- package/dist/fabric/index.d.ts.map +1 -1
- package/dist/fabric/index.js +3 -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/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/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/g0-generative/renderer/OpenUIRenderer.svelte +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -2
- package/dist/l0-layout/SectionSplitter.svelte +5 -5
- package/dist/l0-layout/block-writer/BlockItem.svelte +6 -4
- package/dist/l0-layout/card/CompactCard.svelte +4 -3
- 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 +2 -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 +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/graph-state.test.js +69 -0
- package/dist/n1-flow-canvas/utils.test.js +116 -0
- package/dist/n3-force-graph/GraphTooltip.svelte +2 -2
- package/dist/n4-adaptive-manifold/AdaptiveManifold.svelte +12 -11
- 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/p0-primitives/ThemeProvider.svelte +10 -11
- package/dist/p0-primitives/ThemeProvider.svelte.d.ts +1 -1
- package/dist/p0-primitives/ThemeProvider.svelte.d.ts.map +1 -1
- package/dist/p0-primitives/canvas-theme.d.ts +12 -0
- package/dist/p0-primitives/canvas-theme.d.ts.map +1 -1
- package/dist/p0-primitives/canvas-theme.js +10 -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/tokens/tokens.css +22 -11
- package/dist/p0-primitives/utils/index.d.ts +2 -2
- package/dist/p0-primitives/utils/index.d.ts.map +1 -1
- package/dist/s0-state/SyncStatus.svelte +1 -1
- 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 +0 -1
- package/dist/s0-state/index.d.ts.map +1 -1
- package/dist/s0-state/index.js +1 -0
- package/dist/s0-state/modal-stack-store.svelte.d.ts +25 -0
- package/dist/s0-state/modal-stack-store.svelte.d.ts.map +1 -1
- package/dist/s0-state/modal-stack-store.svelte.js +19 -0
- package/dist/showcase/Showcase.svelte +43 -34
- package/dist/showcase/Showcase.svelte.d.ts.map +1 -1
- package/dist/spatial/BspTilingCanvas.svelte +7 -5
- package/dist/spatial/BspTilingCanvas.svelte.d.ts +1 -0
- package/dist/spatial/BspTilingCanvas.svelte.d.ts.map +1 -1
- package/dist/spatial/BspTilingSimulation.test.js +88 -0
- package/dist/spatial/CameraController.test.js +120 -0
- package/dist/spatial/ForceCanvas.svelte +20 -13
- package/dist/spatial/ForceCanvas.svelte.d.ts +1 -0
- 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 +32 -21
- package/dist/spatial/LodRenderer.svelte +16 -1
- package/dist/spatial/LodRenderer.svelte.d.ts +1 -0
- package/dist/spatial/LodRenderer.svelte.d.ts.map +1 -1
- package/dist/spatial/SnapZoomCamera.svelte +25 -13
- package/dist/spatial/SnapZoomCamera.svelte.d.ts +1 -0
- package/dist/spatial/SnapZoomCamera.svelte.d.ts.map +1 -1
- package/dist/spatial/ZoneTiler.svelte +5 -2
- package/dist/spatial/ZoneTiler.svelte.d.ts +1 -0
- package/dist/spatial/ZoneTiler.svelte.d.ts.map +1 -1
- 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/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 +49 -0
- package/dist/u0-primitives/LockIndicator.svelte +1 -1
- package/dist/u0-primitives/VerticalToolbar.svelte +1 -1
- package/dist/u0-primitives/accordion/Accordion.svelte +10 -9
- 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/badge/Badge.test.js +10 -10
- package/dist/u0-primitives/badge/ValidityBadge.test.js +9 -9
- package/dist/u0-primitives/button/Button.svelte +3 -1
- 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 +26 -20
- package/dist/u0-primitives/card/Card.svelte.d.ts.map +1 -1
- package/dist/u0-primitives/command-palette/CommandPalette.svelte +27 -0
- package/dist/u0-primitives/command-palette/CommandPalette.svelte.d.ts.map +1 -1
- 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.test.js +1 -1
- package/dist/u0-primitives/index.d.ts +2 -0
- package/dist/u0-primitives/index.d.ts.map +1 -1
- package/dist/u0-primitives/index.js +1 -0
- package/dist/u0-primitives/input/Input.svelte +9 -0
- package/dist/u0-primitives/input/Input.svelte.d.ts.map +1 -1
- package/dist/u0-primitives/input/Input.test.js +1 -1
- package/dist/u0-primitives/modal/Modal.svelte +46 -23
- 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/steps/Steps.svelte +2 -2
- 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/toggle/Toggle.svelte +12 -2
- package/dist/u0-primitives/tooltip/Tooltip.test.js +12 -12
- 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/package.json +51 -24
- package/src/n4-adaptive-manifold/n4-tokens.css +2 -2
- package/src/p0-primitives/tokens/tokens.css +22 -11
- package/src/p0-primitives/tokens/tokens.json +13 -2
- 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
- package/dist/types/tauri.d.ts +0 -18
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
|
+
import { onMount, tick } from 'svelte';
|
|
3
|
+
|
|
2
4
|
/** Mirrors ClarificationSession from @kos/agent — kept local to avoid a design-system→agent dep. */
|
|
3
5
|
interface ClarificationSession {
|
|
4
6
|
sessionId: string;
|
|
@@ -19,6 +21,12 @@
|
|
|
19
21
|
const { session, onSubmit, onDismiss, submitting = false }: Props = $props();
|
|
20
22
|
|
|
21
23
|
let reply = $state('');
|
|
24
|
+
let replyInput: HTMLTextAreaElement | undefined;
|
|
25
|
+
|
|
26
|
+
onMount(async () => {
|
|
27
|
+
await tick();
|
|
28
|
+
replyInput?.focus();
|
|
29
|
+
});
|
|
22
30
|
|
|
23
31
|
function handleKeydown(e: KeyboardEvent) {
|
|
24
32
|
if (e.key === 'Enter' && !e.shiftKey && reply.trim()) {
|
|
@@ -37,7 +45,7 @@
|
|
|
37
45
|
}
|
|
38
46
|
</script>
|
|
39
47
|
|
|
40
|
-
<div class="clarification-overlay" role="dialog" aria-modal="true" aria-labelledby="clarification-heading">
|
|
48
|
+
<div class="clarification-overlay" role="dialog" aria-modal="true" aria-labelledby="clarification-heading" tabindex="-1">
|
|
41
49
|
<div class="clarification-panel">
|
|
42
50
|
<header class="clarification-header">
|
|
43
51
|
<div class="scaffold-badge">{session.scaffoldKind}</div>
|
|
@@ -61,12 +69,12 @@
|
|
|
61
69
|
<div class="reply-area">
|
|
62
70
|
<textarea
|
|
63
71
|
class="reply-input"
|
|
72
|
+
bind:this={replyInput}
|
|
64
73
|
bind:value={reply}
|
|
65
74
|
onkeydown={handleKeydown}
|
|
66
75
|
placeholder="Your answer…"
|
|
67
76
|
rows={3}
|
|
68
77
|
disabled={submitting}
|
|
69
|
-
autofocus
|
|
70
78
|
></textarea>
|
|
71
79
|
<button
|
|
72
80
|
class="submit-btn"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ClarificationOverlay.svelte.d.ts","sourceRoot":"","sources":["../../../src/b0-app-shell/clarification-overlay/ClarificationOverlay.svelte.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ClarificationOverlay.svelte.d.ts","sourceRoot":"","sources":["../../../src/b0-app-shell/clarification-overlay/ClarificationOverlay.svelte.ts"],"names":[],"mappings":"AAME,oGAAoG;AACpG,UAAU,oBAAoB;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,UAAU,KAAK;IACb,OAAO,EAAE,oBAAoB,CAAC;IAC9B,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAoEH,QAAA,MAAM,oBAAoB,2CAAwC,CAAC;AACnE,KAAK,oBAAoB,GAAG,UAAU,CAAC,OAAO,oBAAoB,CAAC,CAAC;AACpE,eAAe,oBAAoB,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
3
|
+
* GlobalCommandBar — The LEAP global command strip.
|
|
4
4
|
*
|
|
5
5
|
* Three zones, always in the same positions across every LEAP app:
|
|
6
6
|
* LEFT · FLOW PHASE — the system's current operational state
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
* Prop-driven: no store imports. Each app wires it to its own stores.
|
|
11
11
|
*
|
|
12
12
|
* Placement: top of every LEAP app shell, above app-specific navigation.
|
|
13
|
-
* Height:
|
|
13
|
+
* Height: 3.25rem fixed.
|
|
14
14
|
*/
|
|
15
15
|
|
|
16
16
|
interface Props {
|
|
@@ -51,21 +51,21 @@
|
|
|
51
51
|
switch (flowPhase?.toLowerCase()) {
|
|
52
52
|
case 'go':
|
|
53
53
|
case 'running':
|
|
54
|
-
case 'executing': return '
|
|
54
|
+
case 'executing': return 'var(--color-success)';
|
|
55
55
|
case 'sprout':
|
|
56
56
|
case 'in_progress':
|
|
57
|
-
case 'active': return '
|
|
57
|
+
case 'active': return 'var(--color-info)';
|
|
58
58
|
case 'weed':
|
|
59
|
-
case 'weeding': return '
|
|
59
|
+
case 'weeding': return 'var(--color-warning)';
|
|
60
60
|
case 'consult':
|
|
61
|
-
case 'consulting': return '
|
|
61
|
+
case 'consulting': return 'var(--color-accent)';
|
|
62
62
|
case 'freeze':
|
|
63
63
|
case 'frozen':
|
|
64
|
-
case 'blocked': return '
|
|
65
|
-
case 'seed': return '
|
|
64
|
+
case 'blocked': return 'var(--color-info)';
|
|
65
|
+
case 'seed': return 'var(--color-accent)';
|
|
66
66
|
case 'compost':
|
|
67
|
-
case 'prune': return '
|
|
68
|
-
default: return '
|
|
67
|
+
case 'prune': return 'var(--color-text-muted)';
|
|
68
|
+
default: return 'var(--color-text-muted)';
|
|
69
69
|
}
|
|
70
70
|
});
|
|
71
71
|
|
|
@@ -206,12 +206,12 @@
|
|
|
206
206
|
|
|
207
207
|
.cb {
|
|
208
208
|
display: grid;
|
|
209
|
-
grid-template-columns:
|
|
209
|
+
grid-template-columns: 9.25rem var(--border-width-thin) 1fr var(--border-width-thin) 12.25rem;
|
|
210
210
|
align-items: stretch;
|
|
211
|
-
height:
|
|
211
|
+
height: 3.25rem;
|
|
212
212
|
width: 100%;
|
|
213
|
-
background:
|
|
214
|
-
border-bottom:
|
|
213
|
+
background: var(--color-bg-inset);
|
|
214
|
+
border-bottom: var(--border-width-thin) solid var(--color-accent-subtle);
|
|
215
215
|
position: relative;
|
|
216
216
|
overflow: visible;
|
|
217
217
|
flex-shrink: 0;
|
|
@@ -224,10 +224,10 @@
|
|
|
224
224
|
inset: 0;
|
|
225
225
|
background: repeating-linear-gradient(
|
|
226
226
|
180deg,
|
|
227
|
-
transparent
|
|
228
|
-
transparent
|
|
229
|
-
rgba(255, 255, 255, 0.012)
|
|
230
|
-
rgba(255, 255, 255, 0.012)
|
|
227
|
+
transparent 0,
|
|
228
|
+
transparent 0.125rem,
|
|
229
|
+
rgba(255, 255, 255, 0.012) 0.125rem,
|
|
230
|
+
rgba(255, 255, 255, 0.012) 0.1875rem
|
|
231
231
|
);
|
|
232
232
|
pointer-events: none;
|
|
233
233
|
z-index: 0;
|
|
@@ -240,7 +240,7 @@
|
|
|
240
240
|
top: 0;
|
|
241
241
|
left: 0;
|
|
242
242
|
right: 0;
|
|
243
|
-
height:
|
|
243
|
+
height: var(--border-width-thin);
|
|
244
244
|
background: linear-gradient(
|
|
245
245
|
90deg,
|
|
246
246
|
var(--color-accent-muted) 0%,
|
|
@@ -260,9 +260,9 @@
|
|
|
260
260
|
/* ── Divider ───────────────────────────────────────────────────────────── */
|
|
261
261
|
|
|
262
262
|
.cb-rule {
|
|
263
|
-
width:
|
|
263
|
+
width: var(--border-width-thin);
|
|
264
264
|
background: var(--color-accent-subtle);
|
|
265
|
-
margin:
|
|
265
|
+
margin: var(--space-3) 0;
|
|
266
266
|
z-index: 1;
|
|
267
267
|
}
|
|
268
268
|
|
|
@@ -271,8 +271,8 @@
|
|
|
271
271
|
.cb-phase {
|
|
272
272
|
display: flex;
|
|
273
273
|
align-items: center;
|
|
274
|
-
gap:
|
|
275
|
-
padding: 0
|
|
274
|
+
gap: var(--space-2);
|
|
275
|
+
padding: 0 1.125rem;
|
|
276
276
|
position: relative;
|
|
277
277
|
z-index: 1;
|
|
278
278
|
}
|
|
@@ -284,20 +284,20 @@
|
|
|
284
284
|
inset: 0;
|
|
285
285
|
background: radial-gradient(
|
|
286
286
|
ellipse 160% 120% at -10% 50%,
|
|
287
|
-
color-mix(in srgb, var(--glow,
|
|
287
|
+
color-mix(in srgb, var(--glow, var(--color-text-muted)) 12%, transparent),
|
|
288
288
|
transparent 65%
|
|
289
289
|
);
|
|
290
290
|
pointer-events: none;
|
|
291
291
|
}
|
|
292
292
|
|
|
293
293
|
.cb-phase__dot {
|
|
294
|
-
width:
|
|
295
|
-
height:
|
|
294
|
+
width: var(--space-2);
|
|
295
|
+
height: var(--space-2);
|
|
296
296
|
border-radius: 50%;
|
|
297
|
-
background: var(--glow,
|
|
297
|
+
background: var(--glow, var(--color-text-muted));
|
|
298
298
|
box-shadow:
|
|
299
|
-
0 0 0
|
|
300
|
-
0 0
|
|
299
|
+
0 0 0 var(--border-width-default) color-mix(in srgb, var(--glow, var(--color-text-muted)) 20%, transparent),
|
|
300
|
+
0 0 var(--blur-lg) color-mix(in srgb, var(--glow, var(--color-text-muted)) 50%, transparent);
|
|
301
301
|
flex-shrink: 0;
|
|
302
302
|
transition: background 0.4s, box-shadow 0.4s;
|
|
303
303
|
}
|
|
@@ -310,14 +310,14 @@
|
|
|
310
310
|
0%, 100% {
|
|
311
311
|
opacity: 1;
|
|
312
312
|
box-shadow:
|
|
313
|
-
0 0 0
|
|
314
|
-
0 0
|
|
313
|
+
0 0 0 var(--border-width-default) color-mix(in srgb, var(--glow) 20%, transparent),
|
|
314
|
+
0 0 0.625rem color-mix(in srgb, var(--glow) 60%, transparent);
|
|
315
315
|
}
|
|
316
316
|
50% {
|
|
317
317
|
opacity: 0.65;
|
|
318
318
|
box-shadow:
|
|
319
|
-
0 0 0
|
|
320
|
-
0 0
|
|
319
|
+
0 0 0 var(--border-width-default) color-mix(in srgb, var(--glow) 10%, transparent),
|
|
320
|
+
0 0 0.25rem color-mix(in srgb, var(--glow) 30%, transparent);
|
|
321
321
|
}
|
|
322
322
|
}
|
|
323
323
|
|
|
@@ -329,9 +329,9 @@
|
|
|
329
329
|
|
|
330
330
|
.cb-phase__name {
|
|
331
331
|
font-family: var(--font-sans);
|
|
332
|
-
font-size:
|
|
332
|
+
font-size: var(--text-sm);
|
|
333
333
|
font-weight: 700;
|
|
334
|
-
color: var(--glow,
|
|
334
|
+
color: var(--glow, var(--color-text-muted));
|
|
335
335
|
letter-spacing: 0.1em;
|
|
336
336
|
line-height: 1;
|
|
337
337
|
transition: color 0.4s;
|
|
@@ -339,8 +339,8 @@
|
|
|
339
339
|
|
|
340
340
|
.cb-phase__sub {
|
|
341
341
|
font-family: var(--font-mono);
|
|
342
|
-
font-size:
|
|
343
|
-
color:
|
|
342
|
+
font-size: 0.5625rem;
|
|
343
|
+
color: color-mix(in srgb, var(--color-text-secondary) 65%, transparent);
|
|
344
344
|
letter-spacing: 0.06em;
|
|
345
345
|
line-height: 1;
|
|
346
346
|
}
|
|
@@ -351,7 +351,7 @@
|
|
|
351
351
|
display: flex;
|
|
352
352
|
align-items: center;
|
|
353
353
|
gap: var(--space-2);
|
|
354
|
-
padding: 0
|
|
354
|
+
padding: 0 var(--space-4);
|
|
355
355
|
position: relative;
|
|
356
356
|
z-index: 1;
|
|
357
357
|
transition: background 0.2s;
|
|
@@ -362,9 +362,9 @@
|
|
|
362
362
|
content: '';
|
|
363
363
|
position: absolute;
|
|
364
364
|
bottom: 0;
|
|
365
|
-
left:
|
|
366
|
-
right:
|
|
367
|
-
height:
|
|
365
|
+
left: var(--space-5);
|
|
366
|
+
right: var(--space-5);
|
|
367
|
+
height: var(--border-width-thin);
|
|
368
368
|
background: var(--color-accent-muted);
|
|
369
369
|
transform: scaleX(0);
|
|
370
370
|
transform-origin: center;
|
|
@@ -381,7 +381,7 @@
|
|
|
381
381
|
|
|
382
382
|
.cb-intent__cursor {
|
|
383
383
|
font-family: var(--font-mono);
|
|
384
|
-
font-size:
|
|
384
|
+
font-size: var(--text-sm);
|
|
385
385
|
color: var(--color-accent-muted);
|
|
386
386
|
flex-shrink: 0;
|
|
387
387
|
user-select: none;
|
|
@@ -401,20 +401,20 @@
|
|
|
401
401
|
border: none;
|
|
402
402
|
outline: none;
|
|
403
403
|
font-family: var(--font-mono);
|
|
404
|
-
font-size:
|
|
404
|
+
font-size: var(--text-xs);
|
|
405
405
|
color: var(--color-text-primary);
|
|
406
406
|
padding: 0;
|
|
407
407
|
caret-color: var(--color-accent);
|
|
408
408
|
}
|
|
409
409
|
|
|
410
410
|
.cb-intent__input::placeholder {
|
|
411
|
-
color:
|
|
411
|
+
color: color-mix(in srgb, var(--color-text-secondary) 25%, transparent);
|
|
412
412
|
font-style: italic;
|
|
413
413
|
}
|
|
414
414
|
|
|
415
415
|
.cb-intent__input:disabled {
|
|
416
416
|
cursor: not-allowed;
|
|
417
|
-
color:
|
|
417
|
+
color: color-mix(in srgb, var(--color-text-secondary) 30%, transparent);
|
|
418
418
|
}
|
|
419
419
|
|
|
420
420
|
.cb-intent__send {
|
|
@@ -422,11 +422,11 @@
|
|
|
422
422
|
display: flex;
|
|
423
423
|
align-items: center;
|
|
424
424
|
justify-content: center;
|
|
425
|
-
width:
|
|
426
|
-
height:
|
|
427
|
-
background:
|
|
428
|
-
border:
|
|
429
|
-
border-radius: var(--radius-sm
|
|
425
|
+
width: 1.5rem;
|
|
426
|
+
height: 1.5rem;
|
|
427
|
+
background: var(--overlay-white-04);
|
|
428
|
+
border: var(--border-width-thin) solid var(--color-accent-glow);
|
|
429
|
+
border-radius: var(--radius-sm);
|
|
430
430
|
color: var(--color-accent-muted);
|
|
431
431
|
cursor: pointer;
|
|
432
432
|
transition: all 0.12s;
|
|
@@ -441,7 +441,7 @@
|
|
|
441
441
|
.cb-intent__send--ready:hover {
|
|
442
442
|
background: var(--color-accent-muted);
|
|
443
443
|
border-color: var(--color-accent-muted);
|
|
444
|
-
box-shadow: 0 0
|
|
444
|
+
box-shadow: 0 0 var(--blur-lg) var(--color-accent-muted);
|
|
445
445
|
}
|
|
446
446
|
|
|
447
447
|
.cb-intent__send:disabled {
|
|
@@ -451,9 +451,9 @@
|
|
|
451
451
|
|
|
452
452
|
.cb-intent__spinner {
|
|
453
453
|
display: inline-block;
|
|
454
|
-
width:
|
|
455
|
-
height:
|
|
456
|
-
border:
|
|
454
|
+
width: var(--space-2);
|
|
455
|
+
height: var(--space-2);
|
|
456
|
+
border: 0.09375rem solid var(--color-accent-muted);
|
|
457
457
|
border-top-color: var(--color-accent);
|
|
458
458
|
border-radius: 50%;
|
|
459
459
|
animation: cb-spin 0.65s linear infinite;
|
|
@@ -469,8 +469,8 @@
|
|
|
469
469
|
display: flex;
|
|
470
470
|
flex-direction: column;
|
|
471
471
|
justify-content: center;
|
|
472
|
-
gap:
|
|
473
|
-
padding: 0
|
|
472
|
+
gap: 0.3125rem;
|
|
473
|
+
padding: 0 1.125rem;
|
|
474
474
|
position: relative;
|
|
475
475
|
z-index: 1;
|
|
476
476
|
}
|
|
@@ -495,9 +495,9 @@
|
|
|
495
495
|
}
|
|
496
496
|
|
|
497
497
|
.cb-spark__seg {
|
|
498
|
-
width:
|
|
499
|
-
height:
|
|
500
|
-
border-radius: var(--radius-xs
|
|
498
|
+
width: var(--space-1);
|
|
499
|
+
height: 0.6875rem;
|
|
500
|
+
border-radius: var(--radius-xs);
|
|
501
501
|
background: var(--color-accent-subtle);
|
|
502
502
|
transition: background 0.3s, box-shadow 0.3s;
|
|
503
503
|
flex-shrink: 0;
|
|
@@ -505,19 +505,19 @@
|
|
|
505
505
|
|
|
506
506
|
.cb-spark__seg--on {
|
|
507
507
|
background: var(--color-accent);
|
|
508
|
-
box-shadow: 0 0
|
|
508
|
+
box-shadow: 0 0 0.1875rem var(--color-accent-muted);
|
|
509
509
|
}
|
|
510
510
|
|
|
511
511
|
/* Warning — amber shift */
|
|
512
512
|
.cb-spark--warning .cb-spark__seg--on {
|
|
513
|
-
background:
|
|
514
|
-
box-shadow: 0 0
|
|
513
|
+
background: var(--color-warning);
|
|
514
|
+
box-shadow: 0 0 0.1875rem color-mix(in srgb, var(--color-warning) 50%, transparent);
|
|
515
515
|
}
|
|
516
516
|
|
|
517
517
|
/* Critical — red + pulse */
|
|
518
518
|
.cb-spark--critical .cb-spark__seg--on {
|
|
519
|
-
background:
|
|
520
|
-
box-shadow: 0 0
|
|
519
|
+
background: var(--color-error);
|
|
520
|
+
box-shadow: 0 0 0.25rem color-mix(in srgb, var(--color-error) 60%, transparent);
|
|
521
521
|
animation: spark-critical 1.2s ease-in-out infinite;
|
|
522
522
|
}
|
|
523
523
|
|
|
@@ -529,37 +529,37 @@
|
|
|
529
529
|
.cb-spark__readout {
|
|
530
530
|
display: flex;
|
|
531
531
|
align-items: baseline;
|
|
532
|
-
gap:
|
|
532
|
+
gap: 0.1875rem;
|
|
533
533
|
font-family: var(--font-mono);
|
|
534
534
|
}
|
|
535
535
|
|
|
536
536
|
.cb-spark__val {
|
|
537
|
-
font-size:
|
|
537
|
+
font-size: 0.6875rem;
|
|
538
538
|
font-weight: 600;
|
|
539
539
|
color: var(--color-accent);
|
|
540
540
|
letter-spacing: 0.02em;
|
|
541
541
|
}
|
|
542
542
|
|
|
543
|
-
.cb-spark--warning .cb-spark__val { color:
|
|
544
|
-
.cb-spark--critical .cb-spark__val { color:
|
|
543
|
+
.cb-spark--warning .cb-spark__val { color: var(--color-warning); }
|
|
544
|
+
.cb-spark--critical .cb-spark__val { color: var(--color-error); }
|
|
545
545
|
|
|
546
546
|
.cb-spark__div {
|
|
547
|
-
font-size:
|
|
548
|
-
color:
|
|
547
|
+
font-size: 0.625rem;
|
|
548
|
+
color: color-mix(in srgb, var(--color-text-secondary) 30%, transparent);
|
|
549
549
|
}
|
|
550
550
|
|
|
551
551
|
.cb-spark__cap {
|
|
552
|
-
font-size:
|
|
553
|
-
color:
|
|
552
|
+
font-size: 0.625rem;
|
|
553
|
+
color: color-mix(in srgb, var(--color-text-secondary) 45%, transparent);
|
|
554
554
|
letter-spacing: 0.02em;
|
|
555
555
|
}
|
|
556
556
|
|
|
557
557
|
.cb-spark__lbl {
|
|
558
|
-
font-size:
|
|
558
|
+
font-size: 0.5rem;
|
|
559
559
|
font-weight: 600;
|
|
560
|
-
color:
|
|
560
|
+
color: color-mix(in srgb, var(--color-text-secondary) 35%, transparent);
|
|
561
561
|
text-transform: uppercase;
|
|
562
562
|
letter-spacing: 0.12em;
|
|
563
|
-
margin-left:
|
|
563
|
+
margin-left: 0.3125rem;
|
|
564
564
|
}
|
|
565
565
|
</style>
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* GlobalCommandBar — The LEAP global command strip.
|
|
3
3
|
*
|
|
4
4
|
* Three zones, always in the same positions across every LEAP app:
|
|
5
5
|
* LEFT · FLOW PHASE — the system's current operational state
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
* Prop-driven: no store imports. Each app wires it to its own stores.
|
|
10
10
|
*
|
|
11
11
|
* Placement: top of every LEAP app shell, above app-specific navigation.
|
|
12
|
-
* Height:
|
|
12
|
+
* Height: 3.25rem fixed.
|
|
13
13
|
*/
|
|
14
14
|
interface Props {
|
|
15
15
|
/** Whether the daemon socket is connected. */
|
|
@@ -29,7 +29,7 @@ interface Props {
|
|
|
29
29
|
/** Called when the user submits an intent. */
|
|
30
30
|
onintent?: (text: string) => void;
|
|
31
31
|
}
|
|
32
|
-
declare const
|
|
33
|
-
type
|
|
34
|
-
export default
|
|
35
|
-
//# sourceMappingURL=
|
|
32
|
+
declare const GlobalCommandBar: import("svelte").Component<Props, {}, "">;
|
|
33
|
+
type GlobalCommandBar = ReturnType<typeof GlobalCommandBar>;
|
|
34
|
+
export default GlobalCommandBar;
|
|
35
|
+
//# sourceMappingURL=GlobalCommandBar.svelte.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GlobalCommandBar.svelte.d.ts","sourceRoot":"","sources":["../../../src/b0-app-shell/global-command-bar/GlobalCommandBar.svelte.ts"],"names":[],"mappings":"AAGE;;;;;;;;;;;;GAYG;AAEH,UAAU,KAAK;IACb,8CAA8C;IAC9C,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,iEAAiE;IACjE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,+DAA+D;IAC/D,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,8DAA8D;IAC9D,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,gFAAgF;IAChF,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,wDAAwD;IACxD,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,+CAA+C;IAC/C,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACnC;AAkJH,QAAA,MAAM,gBAAgB,2CAAwC,CAAC;AAC/D,KAAK,gBAAgB,GAAG,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAC5D,eAAe,gBAAgB,CAAC"}
|
|
@@ -9,6 +9,6 @@
|
|
|
9
9
|
* and provide the shared control surface for system state, intent dispatch,
|
|
10
10
|
* and resource visibility. They are prop-driven (no store imports).
|
|
11
11
|
*/
|
|
12
|
-
export { default as
|
|
12
|
+
export { default as GlobalCommandBar } from './global-command-bar/GlobalCommandBar.svelte';
|
|
13
13
|
export { ClarificationOverlay } from './clarification-overlay/index';
|
|
14
14
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/b0-app-shell/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,OAAO,IAAI,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/b0-app-shell/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,8CAA8C,CAAC;AAC3F,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC"}
|
|
@@ -9,5 +9,5 @@
|
|
|
9
9
|
* and provide the shared control surface for system state, intent dispatch,
|
|
10
10
|
* and resource visibility. They are prop-driven (no store imports).
|
|
11
11
|
*/
|
|
12
|
-
export { default as
|
|
12
|
+
export { default as GlobalCommandBar } from './global-command-bar/GlobalCommandBar.svelte';
|
|
13
13
|
export { ClarificationOverlay } from './clarification-overlay/index';
|
|
@@ -57,6 +57,11 @@
|
|
|
57
57
|
isExpanded = !isExpanded;
|
|
58
58
|
}
|
|
59
59
|
|
|
60
|
+
function handlePillClick(event: MouseEvent) {
|
|
61
|
+
if ((event.target as Element).closest('.checkpoint-bar')) return;
|
|
62
|
+
toggleExpanded();
|
|
63
|
+
}
|
|
64
|
+
|
|
60
65
|
// Collapse when clicking outside (handled by parent or escape key)
|
|
61
66
|
function handleKeyDown(event: KeyboardEvent) {
|
|
62
67
|
if (event.key === 'Escape' && isExpanded) {
|
|
@@ -91,7 +96,7 @@
|
|
|
91
96
|
tabindex="0"
|
|
92
97
|
aria-label={ariaLabel}
|
|
93
98
|
aria-expanded={isExpanded}
|
|
94
|
-
onclick={
|
|
99
|
+
onclick={handlePillClick}
|
|
95
100
|
onkeydown={(e) => {
|
|
96
101
|
if (e.key === 'Enter' || e.key === ' ') {
|
|
97
102
|
e.preventDefault();
|
|
@@ -132,7 +137,7 @@
|
|
|
132
137
|
▲
|
|
133
138
|
</button>
|
|
134
139
|
</div>
|
|
135
|
-
<div class="pill-content"
|
|
140
|
+
<div class="pill-content" role="group" aria-label="Checkpoint timeline">
|
|
136
141
|
<CheckpointBar
|
|
137
142
|
{checkpoints}
|
|
138
143
|
{currentSeqno}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CheckpointPill.svelte.d.ts","sourceRoot":"","sources":["../../src/d0-data-viz/CheckpointPill.svelte.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAKnD,UAAU,KAAK;IACb,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,iBAAiB,CAAC,EAAE,CAAC,UAAU,EAAE,UAAU,KAAK,IAAI,CAAC;IACrD,uBAAuB,CAAC,EAAE,CAAC,UAAU,EAAE,UAAU,KAAK,IAAI,CAAC;IAC3D,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;
|
|
1
|
+
{"version":3,"file":"CheckpointPill.svelte.d.ts","sourceRoot":"","sources":["../../src/d0-data-viz/CheckpointPill.svelte.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAKnD,UAAU,KAAK;IACb,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,iBAAiB,CAAC,EAAE,CAAC,UAAU,EAAE,UAAU,KAAK,IAAI,CAAC;IACrD,uBAAuB,CAAC,EAAE,CAAC,UAAU,EAAE,UAAU,KAAK,IAAI,CAAC;IAC3D,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AA4HH,QAAA,MAAM,cAAc,2CAAwC,CAAC;AAC7D,KAAK,cAAc,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AACxD,eAAe,cAAc,CAAC"}
|
|
@@ -10,8 +10,8 @@
|
|
|
10
10
|
* @example
|
|
11
11
|
* ```svelte
|
|
12
12
|
* <script>
|
|
13
|
-
* import { CheckpointBar } from '@
|
|
14
|
-
* import { themeStore } from '
|
|
13
|
+
* import { CheckpointBar } from '@kos/design-system/d0-data-viz';
|
|
14
|
+
* import { themeStore } from '@kos/design-system/s0-state';
|
|
15
15
|
*
|
|
16
16
|
* // Colors automatically applied from themeStore
|
|
17
17
|
* // Users customize via Settings > Appearance > Checkpoint Colors
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
* @example
|
|
24
24
|
* ```typescript
|
|
25
25
|
* // Programmatic color customization
|
|
26
|
-
* import { themeStore } from '
|
|
26
|
+
* import { themeStore } from '@kos/design-system/s0-state';
|
|
27
27
|
*
|
|
28
28
|
* themeStore.setCustomToken('d0-checkpoint-rust', '#ff6b35'); // Orange rust
|
|
29
29
|
* themeStore.setCustomToken('d0-checkpoint-ui', '#00d4aa'); // Teal UI
|
|
@@ -10,8 +10,8 @@
|
|
|
10
10
|
* @example
|
|
11
11
|
* ```svelte
|
|
12
12
|
* <script>
|
|
13
|
-
* import { CheckpointBar } from '@
|
|
14
|
-
* import { themeStore } from '
|
|
13
|
+
* import { CheckpointBar } from '@kos/design-system/d0-data-viz';
|
|
14
|
+
* import { themeStore } from '@kos/design-system/s0-state';
|
|
15
15
|
*
|
|
16
16
|
* // Colors automatically applied from themeStore
|
|
17
17
|
* // Users customize via Settings > Appearance > Checkpoint Colors
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
* @example
|
|
24
24
|
* ```typescript
|
|
25
25
|
* // Programmatic color customization
|
|
26
|
-
* import { themeStore } from '
|
|
26
|
+
* import { themeStore } from '@kos/design-system/s0-state';
|
|
27
27
|
*
|
|
28
28
|
* themeStore.setCustomToken('d0-checkpoint-rust', '#ff6b35'); // Orange rust
|
|
29
29
|
* themeStore.setCustomToken('d0-checkpoint-ui', '#00d4aa'); // Teal UI
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { describe, it, expect } from 'vitest';
|
|
2
|
+
import { getEffectiveCheckpointColor, CHECKPOINT_CSS_VARS, CHECKPOINT_DEFAULT_COLORS } from './theme-integration';
|
|
3
|
+
describe('d0-data-viz/theme-integration', () => {
|
|
4
|
+
it('CHECKPOINT_CSS_VARS covers all component types', () => {
|
|
5
|
+
const types = [
|
|
6
|
+
'rust-crate',
|
|
7
|
+
'ui-bundle',
|
|
8
|
+
'config',
|
|
9
|
+
'faculty-state',
|
|
10
|
+
'substrate-binary',
|
|
11
|
+
'system-snapshot',
|
|
12
|
+
];
|
|
13
|
+
for (const type of types) {
|
|
14
|
+
expect(CHECKPOINT_CSS_VARS[type]).toBeDefined();
|
|
15
|
+
}
|
|
16
|
+
});
|
|
17
|
+
it('CHECKPOINT_DEFAULT_COLORS has light and dark for all types', () => {
|
|
18
|
+
const types = [
|
|
19
|
+
'rust-crate',
|
|
20
|
+
'ui-bundle',
|
|
21
|
+
'config',
|
|
22
|
+
'faculty-state',
|
|
23
|
+
'substrate-binary',
|
|
24
|
+
'system-snapshot',
|
|
25
|
+
];
|
|
26
|
+
for (const type of types) {
|
|
27
|
+
expect(CHECKPOINT_DEFAULT_COLORS[type]).toBeDefined();
|
|
28
|
+
expect(CHECKPOINT_DEFAULT_COLORS[type].light).toMatch(/^#[0-9a-f]{6}$/);
|
|
29
|
+
expect(CHECKPOINT_DEFAULT_COLORS[type].dark).toMatch(/^#[0-9a-f]{6}$/);
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
it('getEffectiveCheckpointColor returns CSS var reference in browser', () => {
|
|
33
|
+
// jsdom sets typeof window !== 'undefined'
|
|
34
|
+
const color = getEffectiveCheckpointColor('rust-crate', true);
|
|
35
|
+
expect(color).toContain('var(--d0-checkpoint-rust');
|
|
36
|
+
});
|
|
37
|
+
it('getEffectiveCheckpointColor returns fallback when isDark is false', () => {
|
|
38
|
+
const color = getEffectiveCheckpointColor('ui-bundle', false);
|
|
39
|
+
expect(color).toContain('var(--d0-checkpoint-ui');
|
|
40
|
+
});
|
|
41
|
+
});
|
|
@@ -158,7 +158,7 @@
|
|
|
158
158
|
margin: 0 auto;
|
|
159
159
|
font-family: system-ui, sans-serif;
|
|
160
160
|
color: var(--color-text-primary, #e8e4dc);
|
|
161
|
-
background: var(--color-bg, #1a1918);
|
|
161
|
+
background: var(--color-bg-canvas, #1a1918);
|
|
162
162
|
min-height: 100vh;
|
|
163
163
|
overflow-y: auto;
|
|
164
164
|
}
|
|
@@ -168,26 +168,6 @@
|
|
|
168
168
|
margin-bottom: 32px;
|
|
169
169
|
}
|
|
170
170
|
|
|
171
|
-
.debug {
|
|
172
|
-
margin-top: 16px;
|
|
173
|
-
padding: 12px;
|
|
174
|
-
background: var(--color-accent-subtle);
|
|
175
|
-
border: 1px solid var(--color-accent, var(--color-accent));
|
|
176
|
-
border-radius: 6px;
|
|
177
|
-
font-family: monospace;
|
|
178
|
-
font-size: 12px;
|
|
179
|
-
text-align: left;
|
|
180
|
-
}
|
|
181
|
-
|
|
182
|
-
.debug ul {
|
|
183
|
-
margin: 8px 0;
|
|
184
|
-
padding-left: 20px;
|
|
185
|
-
}
|
|
186
|
-
|
|
187
|
-
.debug li {
|
|
188
|
-
margin: 2px 0;
|
|
189
|
-
}
|
|
190
|
-
|
|
191
171
|
h2 {
|
|
192
172
|
margin: 0 0 8px 0;
|
|
193
173
|
font-size: 24px;
|
|
@@ -318,22 +298,11 @@
|
|
|
318
298
|
width: 100%;
|
|
319
299
|
}
|
|
320
300
|
|
|
321
|
-
.mini-title {
|
|
322
|
-
font-weight: bold;
|
|
323
|
-
margin-bottom: 2px;
|
|
324
|
-
}
|
|
325
|
-
|
|
326
301
|
.mini-lines {
|
|
327
302
|
color: var(--color-text-muted, #706858);
|
|
328
303
|
font-size: 10px;
|
|
329
304
|
}
|
|
330
305
|
|
|
331
|
-
.preview-header {
|
|
332
|
-
font-weight: bold;
|
|
333
|
-
margin-bottom: 4px;
|
|
334
|
-
font-size: 11px;
|
|
335
|
-
}
|
|
336
|
-
|
|
337
306
|
.preview-body {
|
|
338
307
|
color: var(--color-text-secondary, #a89b8c);
|
|
339
308
|
font-size: 10px;
|
|
@@ -350,6 +319,7 @@
|
|
|
350
319
|
overflow: hidden;
|
|
351
320
|
display: -webkit-box;
|
|
352
321
|
-webkit-line-clamp: 2;
|
|
322
|
+
line-clamp: 2;
|
|
353
323
|
-webkit-box-orient: vertical;
|
|
354
324
|
}
|
|
355
325
|
|
|
@@ -358,6 +328,7 @@
|
|
|
358
328
|
overflow: hidden;
|
|
359
329
|
display: -webkit-box;
|
|
360
330
|
-webkit-line-clamp: 6;
|
|
331
|
+
line-clamp: 6;
|
|
361
332
|
-webkit-box-orient: vertical;
|
|
362
333
|
}
|
|
363
334
|
|