@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,117 @@
|
|
|
1
|
+
import { getMtimeMs, isTauri, readTextFile, writeTextFile } from '../t0-transport/fs';
|
|
2
|
+
export function useFilePersistence(options) {
|
|
3
|
+
const persistenceAvailable = isTauri();
|
|
4
|
+
let interval = null;
|
|
5
|
+
let focusHandler = null;
|
|
6
|
+
async function refreshLastKnownMtime() {
|
|
7
|
+
const filePath = options.getFilePath();
|
|
8
|
+
if (!filePath || !persistenceAvailable)
|
|
9
|
+
return;
|
|
10
|
+
try {
|
|
11
|
+
options.setLastKnownMtimeMs(await getMtimeMs(filePath));
|
|
12
|
+
}
|
|
13
|
+
catch {
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
async function checkExternalChanges() {
|
|
18
|
+
const filePath = options.getFilePath();
|
|
19
|
+
if (!filePath || !persistenceAvailable || options.getIsCheckingExternalChanges() || options.getShowExternalChangeDialog() || !options.getIsDirty()) {
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
options.setIsCheckingExternalChanges(true);
|
|
23
|
+
try {
|
|
24
|
+
const mtime = await getMtimeMs(filePath);
|
|
25
|
+
const lastKnownMtimeMs = options.getLastKnownMtimeMs();
|
|
26
|
+
if (mtime !== null && lastKnownMtimeMs !== null && mtime > lastKnownMtimeMs) {
|
|
27
|
+
options.setShowExternalChangeDialog(true);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
catch (err) {
|
|
31
|
+
console.debug('External change check failed:', err);
|
|
32
|
+
}
|
|
33
|
+
finally {
|
|
34
|
+
options.setIsCheckingExternalChanges(false);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
async function saveContent() {
|
|
38
|
+
const filePath = options.getFilePath();
|
|
39
|
+
if (!options.getIsDirty() || options.getIsSaving() || !filePath || !persistenceAvailable)
|
|
40
|
+
return;
|
|
41
|
+
options.setIsSaving(true);
|
|
42
|
+
options.setSaveError(null);
|
|
43
|
+
try {
|
|
44
|
+
await writeTextFile(filePath, options.getContent());
|
|
45
|
+
options.setIsDirty(false);
|
|
46
|
+
options.onSave?.();
|
|
47
|
+
await refreshLastKnownMtime();
|
|
48
|
+
}
|
|
49
|
+
catch (err) {
|
|
50
|
+
options.setSaveError(err instanceof Error ? err.message : String(err));
|
|
51
|
+
console.error('Failed to save file:', err);
|
|
52
|
+
}
|
|
53
|
+
finally {
|
|
54
|
+
options.setIsSaving(false);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
async function reloadFromDisk() {
|
|
58
|
+
const filePath = options.getFilePath();
|
|
59
|
+
if (!filePath)
|
|
60
|
+
return;
|
|
61
|
+
try {
|
|
62
|
+
const newContent = await readTextFile(filePath);
|
|
63
|
+
const view = options.getEditorView();
|
|
64
|
+
if (view) {
|
|
65
|
+
view.dispatch({ changes: { from: 0, to: view.state.doc.length, insert: newContent } });
|
|
66
|
+
}
|
|
67
|
+
options.setContent(newContent);
|
|
68
|
+
options.setIsDirty(false);
|
|
69
|
+
options.setSaveError(null);
|
|
70
|
+
options.onExternalChange?.(newContent);
|
|
71
|
+
options.onChange?.(newContent);
|
|
72
|
+
await refreshLastKnownMtime();
|
|
73
|
+
}
|
|
74
|
+
catch (err) {
|
|
75
|
+
console.error('Failed to reload file:', err);
|
|
76
|
+
options.setSaveError(err instanceof Error ? err.message : 'Failed to reload file');
|
|
77
|
+
}
|
|
78
|
+
finally {
|
|
79
|
+
options.setShowExternalChangeDialog(false);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
function keepCurrent() {
|
|
83
|
+
options.setShowExternalChangeDialog(false);
|
|
84
|
+
options.setIsDirty(true);
|
|
85
|
+
}
|
|
86
|
+
function startExternalChangeMonitoring() {
|
|
87
|
+
if (!persistenceAvailable)
|
|
88
|
+
return () => { };
|
|
89
|
+
const filePath = options.getFilePath();
|
|
90
|
+
if (filePath) {
|
|
91
|
+
getMtimeMs(filePath).then((m) => options.setLastKnownMtimeMs(m)).catch(() => { });
|
|
92
|
+
}
|
|
93
|
+
interval = setInterval(() => { void checkExternalChanges(); }, 2000);
|
|
94
|
+
focusHandler = () => { void checkExternalChanges(); };
|
|
95
|
+
window.addEventListener('focus', focusHandler);
|
|
96
|
+
return stopExternalChangeMonitoring;
|
|
97
|
+
}
|
|
98
|
+
function stopExternalChangeMonitoring() {
|
|
99
|
+
if (interval) {
|
|
100
|
+
clearInterval(interval);
|
|
101
|
+
interval = null;
|
|
102
|
+
}
|
|
103
|
+
if (focusHandler) {
|
|
104
|
+
window.removeEventListener('focus', focusHandler);
|
|
105
|
+
focusHandler = null;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
return {
|
|
109
|
+
persistenceAvailable,
|
|
110
|
+
startExternalChangeMonitoring,
|
|
111
|
+
stopExternalChangeMonitoring,
|
|
112
|
+
checkExternalChanges,
|
|
113
|
+
saveContent,
|
|
114
|
+
reloadFromDisk,
|
|
115
|
+
keepCurrent
|
|
116
|
+
};
|
|
117
|
+
}
|
|
@@ -260,7 +260,8 @@
|
|
|
260
260
|
</div>
|
|
261
261
|
</div>
|
|
262
262
|
|
|
263
|
-
|
|
263
|
+
<!-- svelte-ignore css_unused_selector -->
|
|
264
|
+
<style>
|
|
264
265
|
.chat-panel {
|
|
265
266
|
display: flex;
|
|
266
267
|
flex-direction: column;
|
|
@@ -292,15 +293,15 @@
|
|
|
292
293
|
padding: 6px;
|
|
293
294
|
background: transparent;
|
|
294
295
|
border: none;
|
|
295
|
-
border-radius:
|
|
296
|
+
border-radius: 0;
|
|
296
297
|
color: var(--color-text-tertiary, #6b6b6b);
|
|
297
298
|
cursor: pointer;
|
|
298
|
-
transition:
|
|
299
|
+
transition: color var(--transition-fast, 110ms) linear, background var(--transition-fast, 110ms) linear;
|
|
299
300
|
}
|
|
300
301
|
|
|
301
302
|
.clear-btn:hover {
|
|
302
|
-
background: var(--border-subtle, #
|
|
303
|
-
color: var(--color-error, #
|
|
303
|
+
background: var(--border-subtle, #262b30);
|
|
304
|
+
color: var(--color-error, #c14a4a);
|
|
304
305
|
}
|
|
305
306
|
|
|
306
307
|
.messages-container {
|
|
@@ -353,58 +354,59 @@
|
|
|
353
354
|
}
|
|
354
355
|
|
|
355
356
|
.message-bubble {
|
|
356
|
-
padding:
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
line-height: 1.5;
|
|
357
|
+
padding: var(--ui-pad-y, 5px) var(--ui-pad-x, 8px);
|
|
358
|
+
font-size: var(--ui-font, 13px);
|
|
359
|
+
line-height: var(--ui-leading, 1.35);
|
|
360
360
|
}
|
|
361
361
|
|
|
362
|
+
/* User bubble: accent-subtle bg + live edge. Accent fill (subtle) justified:
|
|
363
|
+
this is a sender-identity readout, same logic as toggle thumb. */
|
|
362
364
|
.message.user .message-bubble {
|
|
363
|
-
background: var(--color-accent);
|
|
364
|
-
color:
|
|
365
|
-
|
|
365
|
+
background: var(--color-accent-subtle);
|
|
366
|
+
color: var(--color-text-primary);
|
|
367
|
+
box-shadow: inset -2px 0 0 var(--color-accent);
|
|
366
368
|
}
|
|
367
369
|
|
|
368
370
|
.message.assistant .message-bubble {
|
|
369
|
-
background: var(--color-bg-panel-elevated, #
|
|
370
|
-
color: var(--color-text-primary
|
|
371
|
-
border: 1px solid var(--border-
|
|
372
|
-
|
|
371
|
+
background: var(--color-bg-panel-elevated, #1c2024);
|
|
372
|
+
color: var(--color-text-primary);
|
|
373
|
+
border: 1px solid var(--border-default, #262b30);
|
|
374
|
+
box-shadow: inset 2px 0 0 var(--border-default);
|
|
373
375
|
}
|
|
374
376
|
|
|
375
|
-
.message-content
|
|
376
|
-
.message-content
|
|
377
|
-
.message-content
|
|
377
|
+
.message-content h1,
|
|
378
|
+
.message-content h2,
|
|
379
|
+
.message-content h3 {
|
|
378
380
|
font-size: 14px;
|
|
379
381
|
margin: 8px 0 4px 0;
|
|
380
382
|
}
|
|
381
383
|
|
|
382
|
-
.message-content
|
|
384
|
+
.message-content p {
|
|
383
385
|
margin: 0 0 4px 0;
|
|
384
386
|
}
|
|
385
387
|
|
|
386
|
-
.message-content
|
|
388
|
+
.message-content code {
|
|
387
389
|
background: rgba(0, 0, 0, 0.2);
|
|
388
390
|
padding: 2px 4px;
|
|
389
|
-
border-radius:
|
|
391
|
+
border-radius: 0;
|
|
390
392
|
font-family: var(--font-mono, 'JetBrains Mono', monospace);
|
|
391
393
|
font-size: 0.9em;
|
|
392
394
|
}
|
|
393
395
|
|
|
394
|
-
.message-content
|
|
396
|
+
.message-content pre {
|
|
395
397
|
background: rgba(0, 0, 0, 0.3);
|
|
396
398
|
padding: 8px;
|
|
397
|
-
border-radius:
|
|
399
|
+
border-radius: 0;
|
|
398
400
|
overflow-x: auto;
|
|
399
401
|
margin: 4px 0;
|
|
400
402
|
}
|
|
401
403
|
|
|
402
|
-
.message-content
|
|
404
|
+
.message-content pre code {
|
|
403
405
|
background: none;
|
|
404
406
|
padding: 0;
|
|
405
407
|
}
|
|
406
408
|
|
|
407
|
-
.message-content
|
|
409
|
+
.message-content ul {
|
|
408
410
|
margin: 4px 0;
|
|
409
411
|
padding-left: 20px;
|
|
410
412
|
}
|
|
@@ -437,20 +439,21 @@
|
|
|
437
439
|
display: inline-flex;
|
|
438
440
|
align-items: center;
|
|
439
441
|
gap: var(--space-1);
|
|
440
|
-
padding:
|
|
442
|
+
padding: 2px 6px;
|
|
441
443
|
background: var(--color-accent-subtle);
|
|
442
|
-
border: 1px solid var(--color-accent);
|
|
443
|
-
border-radius: var(--radius-xl, 12px);
|
|
444
|
+
border: 1px solid var(--color-accent-muted);
|
|
444
445
|
color: var(--color-accent);
|
|
445
|
-
font-
|
|
446
|
+
font-family: var(--font-mono);
|
|
447
|
+
font-size: var(--ui-label, 9px);
|
|
448
|
+
letter-spacing: 0.05em;
|
|
446
449
|
cursor: pointer;
|
|
447
|
-
transition:
|
|
450
|
+
transition: background var(--transition-fast, 110ms) linear, box-shadow var(--transition-fast, 110ms) linear;
|
|
448
451
|
max-width: 150px;
|
|
449
452
|
}
|
|
450
453
|
|
|
451
454
|
.citation-chip:hover {
|
|
452
|
-
background: var(--color-accent);
|
|
453
|
-
|
|
455
|
+
background: var(--color-accent-muted);
|
|
456
|
+
box-shadow: inset 2px 0 0 var(--color-accent);
|
|
454
457
|
}
|
|
455
458
|
|
|
456
459
|
.citation-source {
|
|
@@ -467,28 +470,26 @@
|
|
|
467
470
|
.citation-popover {
|
|
468
471
|
display: none;
|
|
469
472
|
position: absolute;
|
|
470
|
-
bottom: calc(100% +
|
|
473
|
+
bottom: calc(100% + 6px);
|
|
471
474
|
left: 50%;
|
|
472
475
|
transform: translateX(-50%);
|
|
473
476
|
width: 220px;
|
|
474
|
-
padding:
|
|
475
|
-
background: var(--color-bg-panel-elevated, #
|
|
476
|
-
border: 1px solid var(--border-
|
|
477
|
-
border-left:
|
|
478
|
-
border-radius: var(--radius-md, 6px);
|
|
479
|
-
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);
|
|
477
|
+
padding: var(--ui-pad-y, 5px) var(--ui-pad-x, 8px);
|
|
478
|
+
background: var(--color-bg-panel-elevated, #1c2024);
|
|
479
|
+
border: 1px solid var(--border-default, #262b30);
|
|
480
|
+
border-left: 2px solid var(--color-accent);
|
|
480
481
|
z-index: 10;
|
|
481
482
|
pointer-events: none;
|
|
482
483
|
}
|
|
483
484
|
|
|
484
485
|
.citation-wrapper:hover .citation-popover {
|
|
485
486
|
display: block;
|
|
486
|
-
animation: popover-fade
|
|
487
|
+
animation: popover-fade var(--transition-fast, 110ms) linear;
|
|
487
488
|
}
|
|
488
489
|
|
|
489
490
|
@keyframes popover-fade {
|
|
490
|
-
from { opacity: 0;
|
|
491
|
-
to { opacity: 1;
|
|
491
|
+
from { opacity: 0; }
|
|
492
|
+
to { opacity: 1; }
|
|
492
493
|
}
|
|
493
494
|
|
|
494
495
|
.citation-snippet {
|
|
@@ -506,13 +507,12 @@
|
|
|
506
507
|
}
|
|
507
508
|
|
|
508
509
|
.error-message {
|
|
509
|
-
padding:
|
|
510
|
-
background: var(--color-error-bg, rgba(
|
|
511
|
-
border: 1px solid var(--color-error, #
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
margin-top: 8px;
|
|
510
|
+
padding: var(--ui-pad-y, 5px) var(--ui-pad-x, 8px);
|
|
511
|
+
background: var(--color-error-bg, rgba(193, 74, 74, 0.1));
|
|
512
|
+
border: 1px solid var(--color-error, #c14a4a);
|
|
513
|
+
color: var(--color-error, #c14a4a);
|
|
514
|
+
font-size: var(--ui-font, 13px);
|
|
515
|
+
margin-top: 6px;
|
|
516
516
|
}
|
|
517
517
|
|
|
518
518
|
.input-container {
|
|
@@ -532,7 +532,7 @@
|
|
|
532
532
|
padding: 10px 14px;
|
|
533
533
|
background: var(--color-bg-panel-elevated, #252525);
|
|
534
534
|
border: 1px solid var(--border-subtle, #2a2a2a);
|
|
535
|
-
border-radius:
|
|
535
|
+
border-radius: 0;
|
|
536
536
|
color: var(--color-text-primary, #e0e0e0);
|
|
537
537
|
font-size: 13px;
|
|
538
538
|
outline: none;
|
|
@@ -552,25 +552,24 @@
|
|
|
552
552
|
cursor: not-allowed;
|
|
553
553
|
}
|
|
554
554
|
|
|
555
|
+
/* Send button: accent fill justified — submit = functional state (action, not decoration) */
|
|
555
556
|
.send-btn {
|
|
556
557
|
display: flex;
|
|
557
558
|
align-items: center;
|
|
558
559
|
justify-content: center;
|
|
559
|
-
width:
|
|
560
|
-
height:
|
|
560
|
+
width: var(--ui-control-h, 24px);
|
|
561
|
+
height: var(--ui-control-h, 24px);
|
|
561
562
|
padding: 0;
|
|
562
563
|
background: var(--color-accent);
|
|
563
564
|
border: none;
|
|
564
|
-
|
|
565
|
-
color: white;
|
|
565
|
+
color: var(--color-bg-app, #0a0b0c);
|
|
566
566
|
cursor: pointer;
|
|
567
|
-
transition:
|
|
567
|
+
transition: background var(--transition-fast, 110ms) linear;
|
|
568
568
|
flex-shrink: 0;
|
|
569
569
|
}
|
|
570
570
|
|
|
571
571
|
.send-btn:hover:not(:disabled) {
|
|
572
|
-
background: var(--color-accent-hover
|
|
573
|
-
transform: scale(1.05);
|
|
572
|
+
background: var(--color-accent-hover);
|
|
574
573
|
}
|
|
575
574
|
|
|
576
575
|
.send-btn:disabled {
|
|
@@ -634,15 +633,15 @@
|
|
|
634
633
|
padding: 4px;
|
|
635
634
|
background: transparent;
|
|
636
635
|
border: none;
|
|
637
|
-
border-radius:
|
|
636
|
+
border-radius: 0;
|
|
638
637
|
color: var(--color-text-tertiary, #6b6b6b);
|
|
639
638
|
cursor: pointer;
|
|
640
|
-
transition:
|
|
639
|
+
transition: color var(--transition-fast, 110ms) linear, background var(--transition-fast, 110ms) linear;
|
|
641
640
|
flex-shrink: 0;
|
|
642
641
|
}
|
|
643
642
|
|
|
644
643
|
.clear-context-btn:hover {
|
|
645
|
-
background: var(--border-subtle, #
|
|
646
|
-
color: var(--color-error, #
|
|
644
|
+
background: var(--border-subtle, #262b30);
|
|
645
|
+
color: var(--color-error, #c14a4a);
|
|
647
646
|
}
|
|
648
647
|
</style>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatPanel.svelte.d.ts","sourceRoot":"","sources":["../../../src/fabric/ai/ChatPanel.svelte.ts"],"names":[],"mappings":"AAgBE,MAAM,WAAW,QAAQ;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;IACvB,SAAS,CAAC,EAAE,IAAI,CAAC;CAClB;AAED,UAAU,KAAK;IAEb,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,OAAO,CAAC;IACrB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAGrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,YAAY,CAAC,EAAE,WAAW,EAAE,CAAC;IAC7B,YAAY,CAAC,EAAE,MAAM,CAAC;IAGtB,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;IAC5B,eAAe,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAG3C,WAAW,CAAC,EAAE,OAAO,QAAQ,EAAE,OAAO,CAAC;IAGvC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;
|
|
1
|
+
{"version":3,"file":"ChatPanel.svelte.d.ts","sourceRoot":"","sources":["../../../src/fabric/ai/ChatPanel.svelte.ts"],"names":[],"mappings":"AAgBE,MAAM,WAAW,QAAQ;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;IACvB,SAAS,CAAC,EAAE,IAAI,CAAC;CAClB;AAED,UAAU,KAAK;IAEb,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,OAAO,CAAC;IACrB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAGrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,YAAY,CAAC,EAAE,WAAW,EAAE,CAAC;IAC7B,YAAY,CAAC,EAAE,MAAM,CAAC;IAGtB,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;IAC5B,eAAe,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAG3C,WAAW,CAAC,EAAE,OAAO,QAAQ,EAAE,OAAO,CAAC;IAGvC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AA2LH,QAAA,MAAM,SAAS,2CAAwC,CAAC;AACxD,KAAK,SAAS,GAAG,UAAU,CAAC,OAAO,SAAS,CAAC,CAAC;AAC9C,eAAe,SAAS,CAAC"}
|
|
@@ -298,9 +298,8 @@
|
|
|
298
298
|
display: flex;
|
|
299
299
|
flex-direction: column;
|
|
300
300
|
height: 100%;
|
|
301
|
-
background: var(--color-bg-panel, #
|
|
302
|
-
border: 1px solid var(--border-
|
|
303
|
-
border-radius: var(--radius-md, 0.5rem);
|
|
301
|
+
background: var(--color-bg-panel, #181c20);
|
|
302
|
+
border: 1px solid var(--border-default, #262b30);
|
|
304
303
|
overflow: hidden;
|
|
305
304
|
}
|
|
306
305
|
|
|
@@ -324,7 +323,7 @@
|
|
|
324
323
|
gap: var(--space-1);
|
|
325
324
|
background: var(--color-bg-canvas, #1a1a1a);
|
|
326
325
|
padding: 2px;
|
|
327
|
-
border-radius:
|
|
326
|
+
border-radius: 0;
|
|
328
327
|
}
|
|
329
328
|
|
|
330
329
|
.mode-btn {
|
|
@@ -334,13 +333,15 @@
|
|
|
334
333
|
border: none;
|
|
335
334
|
color: var(--color-text-secondary, #a09880);
|
|
336
335
|
cursor: pointer;
|
|
337
|
-
border-radius:
|
|
338
|
-
transition:
|
|
336
|
+
border-radius: 0;
|
|
337
|
+
transition: background var(--transition-fast, 110ms) linear, color var(--transition-fast, 110ms) linear;
|
|
339
338
|
}
|
|
340
339
|
|
|
340
|
+
/* Active mode fill justified — mode selection is a functional state readout */
|
|
341
341
|
.mode-btn.active {
|
|
342
|
-
background: var(--color-accent
|
|
343
|
-
color: var(--color-text-primary
|
|
342
|
+
background: var(--color-accent-subtle);
|
|
343
|
+
color: var(--color-text-primary);
|
|
344
|
+
box-shadow: inset 0 -2px 0 var(--color-accent);
|
|
344
345
|
}
|
|
345
346
|
|
|
346
347
|
.query-form {
|
|
@@ -356,7 +357,7 @@
|
|
|
356
357
|
padding: 8px 12px;
|
|
357
358
|
background: var(--color-bg-canvas, #1a1a1a);
|
|
358
359
|
border: 1px solid var(--border-subtle, rgba(255,255,255,0.06));
|
|
359
|
-
border-radius:
|
|
360
|
+
border-radius: 0;
|
|
360
361
|
color: var(--color-text-primary, #f2efe9);
|
|
361
362
|
font-size: 14px;
|
|
362
363
|
outline: none;
|
|
@@ -387,7 +388,7 @@
|
|
|
387
388
|
border: none;
|
|
388
389
|
color: var(--color-text-secondary, #a09880);
|
|
389
390
|
cursor: pointer;
|
|
390
|
-
border-radius:
|
|
391
|
+
border-radius: 0;
|
|
391
392
|
}
|
|
392
393
|
|
|
393
394
|
.clear-btn:hover {
|
|
@@ -404,7 +405,7 @@
|
|
|
404
405
|
.result-card {
|
|
405
406
|
padding: 12px;
|
|
406
407
|
background: var(--color-bg-canvas, #1a1a1a);
|
|
407
|
-
border-radius:
|
|
408
|
+
border-radius: 0;
|
|
408
409
|
}
|
|
409
410
|
|
|
410
411
|
.result-header {
|
|
@@ -456,19 +457,22 @@
|
|
|
456
457
|
|
|
457
458
|
.credibility {
|
|
458
459
|
padding: 1px 6px;
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
460
|
+
font-family: var(--font-mono);
|
|
461
|
+
font-size: var(--ui-label, 9px);
|
|
462
|
+
letter-spacing: 0.06em;
|
|
463
|
+
text-transform: uppercase;
|
|
464
|
+
background: color-mix(in srgb, var(--color-error) 12%, transparent);
|
|
465
|
+
color: var(--color-error);
|
|
462
466
|
}
|
|
463
467
|
|
|
464
468
|
.credibility.medium {
|
|
465
|
-
background:
|
|
466
|
-
color:
|
|
469
|
+
background: color-mix(in srgb, var(--color-warning) 12%, transparent);
|
|
470
|
+
color: var(--color-warning);
|
|
467
471
|
}
|
|
468
472
|
|
|
469
473
|
.credibility.high {
|
|
470
|
-
background:
|
|
471
|
-
color:
|
|
474
|
+
background: color-mix(in srgb, var(--color-success) 12%, transparent);
|
|
475
|
+
color: var(--color-success);
|
|
472
476
|
}
|
|
473
477
|
|
|
474
478
|
.empty-state {
|
|
@@ -491,16 +495,19 @@
|
|
|
491
495
|
display: flex;
|
|
492
496
|
align-items: center;
|
|
493
497
|
gap: var(--space-15);
|
|
494
|
-
padding:
|
|
498
|
+
padding: 4px 12px;
|
|
495
499
|
background: none;
|
|
496
|
-
border: 1px solid var(--color-error
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
font-size:
|
|
500
|
+
border: 1px solid color-mix(in srgb, var(--color-error) 55%, transparent);
|
|
501
|
+
color: var(--color-error);
|
|
502
|
+
font-family: var(--font-mono);
|
|
503
|
+
font-size: var(--ui-label, 10px);
|
|
504
|
+
letter-spacing: 0.06em;
|
|
505
|
+
text-transform: uppercase;
|
|
500
506
|
cursor: pointer;
|
|
507
|
+
transition: background var(--transition-fast, 110ms) linear;
|
|
501
508
|
}
|
|
502
509
|
|
|
503
510
|
.cancel-btn:hover {
|
|
504
|
-
background:
|
|
511
|
+
background: color-mix(in srgb, var(--color-error) 12%, transparent);
|
|
505
512
|
}
|
|
506
513
|
</style>
|