shieldcortex 2.1.0 → 2.1.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/README.md +1 -1
- package/hooks/clawdbot/cortex-memory/HOOK.md +2 -2
- package/package.json +32 -9
- package/dashboard/components.json +0 -22
- package/dashboard/eslint.config.mjs +0 -42
- package/dashboard/next.config.ts +0 -7
- package/dashboard/package-lock.json +0 -8053
- package/dashboard/package.json +0 -44
- package/dashboard/postcss.config.mjs +0 -7
- package/dashboard/public/file.svg +0 -1
- package/dashboard/public/globe.svg +0 -1
- package/dashboard/public/next.svg +0 -1
- package/dashboard/public/vercel.svg +0 -1
- package/dashboard/public/window.svg +0 -1
- package/dashboard/scripts/ensure-api.mjs +0 -76
- package/dashboard/src/app/error.tsx +0 -49
- package/dashboard/src/app/favicon.ico +0 -0
- package/dashboard/src/app/globals.css +0 -130
- package/dashboard/src/app/layout.tsx +0 -35
- package/dashboard/src/app/page.tsx +0 -364
- package/dashboard/src/components/Providers.tsx +0 -27
- package/dashboard/src/components/brain/ActivityPulseSystem.tsx +0 -229
- package/dashboard/src/components/brain/BrainMesh.tsx +0 -133
- package/dashboard/src/components/brain/BrainRegions.tsx +0 -254
- package/dashboard/src/components/brain/BrainScene.tsx +0 -255
- package/dashboard/src/components/brain/CategoryLabels.tsx +0 -103
- package/dashboard/src/components/brain/CoreSphere.tsx +0 -215
- package/dashboard/src/components/brain/DataFlowParticles.tsx +0 -123
- package/dashboard/src/components/brain/DataStreamRings.tsx +0 -161
- package/dashboard/src/components/brain/ElectronFlow.tsx +0 -323
- package/dashboard/src/components/brain/HolographicGrid.tsx +0 -235
- package/dashboard/src/components/brain/MemoryLinks.tsx +0 -271
- package/dashboard/src/components/brain/MemoryNode.tsx +0 -245
- package/dashboard/src/components/brain/NeuralPathways.tsx +0 -441
- package/dashboard/src/components/brain/SynapseNodes.tsx +0 -312
- package/dashboard/src/components/brain/TimelineControls.tsx +0 -205
- package/dashboard/src/components/chip/ChipScene.tsx +0 -497
- package/dashboard/src/components/chip/ChipSubstrate.tsx +0 -238
- package/dashboard/src/components/chip/CortexCore.tsx +0 -210
- package/dashboard/src/components/chip/DataBus.tsx +0 -416
- package/dashboard/src/components/chip/MemoryCell.tsx +0 -225
- package/dashboard/src/components/chip/MemoryGrid.tsx +0 -328
- package/dashboard/src/components/chip/QuantumCell.tsx +0 -316
- package/dashboard/src/components/chip/SectionLabel.tsx +0 -113
- package/dashboard/src/components/chip/index.ts +0 -14
- package/dashboard/src/components/controls/ControlPanel.tsx +0 -106
- package/dashboard/src/components/controls/VersionPanel.tsx +0 -185
- package/dashboard/src/components/dashboard/StatsPanel.tsx +0 -164
- package/dashboard/src/components/debug/ActivityLog.tsx +0 -250
- package/dashboard/src/components/debug/DebugPanel.tsx +0 -101
- package/dashboard/src/components/debug/QueryTester.tsx +0 -192
- package/dashboard/src/components/debug/RelationshipGraph.tsx +0 -403
- package/dashboard/src/components/debug/SqlConsole.tsx +0 -319
- package/dashboard/src/components/graph/KnowledgeGraph.tsx +0 -230
- package/dashboard/src/components/graph/OntologyGraph.tsx +0 -631
- package/dashboard/src/components/insights/ActivityHeatmap.tsx +0 -131
- package/dashboard/src/components/insights/InsightsView.tsx +0 -46
- package/dashboard/src/components/insights/KnowledgeMapPanel.tsx +0 -80
- package/dashboard/src/components/insights/QualityPanel.tsx +0 -116
- package/dashboard/src/components/memories/MemoriesView.tsx +0 -150
- package/dashboard/src/components/memories/MemoryCard.tsx +0 -103
- package/dashboard/src/components/memory/MemoryDetail.tsx +0 -325
- package/dashboard/src/components/nav/NavRail.tsx +0 -54
- package/dashboard/src/components/ui/button.tsx +0 -62
- package/dashboard/src/components/ui/card.tsx +0 -92
- package/dashboard/src/components/ui/input.tsx +0 -21
- package/dashboard/src/hooks/useDebouncedValue.ts +0 -24
- package/dashboard/src/hooks/useMemories.ts +0 -458
- package/dashboard/src/hooks/useSuggestions.ts +0 -46
- package/dashboard/src/lib/category-colors.ts +0 -84
- package/dashboard/src/lib/position-algorithm.ts +0 -177
- package/dashboard/src/lib/simplex-noise.ts +0 -217
- package/dashboard/src/lib/store.ts +0 -88
- package/dashboard/src/lib/utils.ts +0 -6
- package/dashboard/src/lib/websocket.ts +0 -249
- package/dashboard/src/types/memory.ts +0 -73
- package/dashboard/tsconfig.json +0 -34
package/dashboard/package.json
DELETED
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "dashboard",
|
|
3
|
-
"version": "0.1.0",
|
|
4
|
-
"private": true,
|
|
5
|
-
"scripts": {
|
|
6
|
-
"predev": "node scripts/ensure-api.mjs",
|
|
7
|
-
"dev": "next dev -p 3030",
|
|
8
|
-
"build": "next build",
|
|
9
|
-
"start": "next start -p 3030",
|
|
10
|
-
"lint": "eslint"
|
|
11
|
-
},
|
|
12
|
-
"dependencies": {
|
|
13
|
-
"@radix-ui/react-slot": "^1.2.4",
|
|
14
|
-
"@react-three/drei": "^10.7.7",
|
|
15
|
-
"@react-three/fiber": "^9.5.0",
|
|
16
|
-
"@react-three/postprocessing": "^3.0.4",
|
|
17
|
-
"@tanstack/react-query": "^5.90.19",
|
|
18
|
-
"@types/three": "^0.182.0",
|
|
19
|
-
"class-variance-authority": "^0.7.1",
|
|
20
|
-
"clsx": "^2.1.1",
|
|
21
|
-
"framer-motion": "^12.29.0",
|
|
22
|
-
"lucide-react": "^0.562.0",
|
|
23
|
-
"next": "16.1.4",
|
|
24
|
-
"react": "19.2.3",
|
|
25
|
-
"react-dom": "19.2.3",
|
|
26
|
-
"react-force-graph-2d": "^1.29.0",
|
|
27
|
-
"react-resizable-panels": "^4.4.1",
|
|
28
|
-
"recharts": "^3.7.0",
|
|
29
|
-
"tailwind-merge": "^3.4.0",
|
|
30
|
-
"three": "^0.182.0",
|
|
31
|
-
"zustand": "^5.0.10"
|
|
32
|
-
},
|
|
33
|
-
"devDependencies": {
|
|
34
|
-
"@tailwindcss/postcss": "^4",
|
|
35
|
-
"@types/node": "^20",
|
|
36
|
-
"@types/react": "^19",
|
|
37
|
-
"@types/react-dom": "^19",
|
|
38
|
-
"eslint": "^9",
|
|
39
|
-
"eslint-config-next": "16.1.4",
|
|
40
|
-
"tailwindcss": "^4",
|
|
41
|
-
"tw-animate-css": "^1.4.0",
|
|
42
|
-
"typescript": "^5"
|
|
43
|
-
}
|
|
44
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
<svg fill="none" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><path d="M14.5 13.5V5.41a1 1 0 0 0-.3-.7L9.8.29A1 1 0 0 0 9.08 0H1.5v13.5A2.5 2.5 0 0 0 4 16h8a2.5 2.5 0 0 0 2.5-2.5m-1.5 0v-7H8v-5H3v12a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1M9.5 5V2.12L12.38 5zM5.13 5h-.62v1.25h2.12V5zm-.62 3h7.12v1.25H4.5zm.62 3h-.62v1.25h7.12V11z" clip-rule="evenodd" fill="#666" fill-rule="evenodd"/></svg>
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
<svg fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><g clip-path="url(#a)"><path fill-rule="evenodd" clip-rule="evenodd" d="M10.27 14.1a6.5 6.5 0 0 0 3.67-3.45q-1.24.21-2.7.34-.31 1.83-.97 3.1M8 16A8 8 0 1 0 8 0a8 8 0 0 0 0 16m.48-1.52a7 7 0 0 1-.96 0H7.5a4 4 0 0 1-.84-1.32q-.38-.89-.63-2.08a40 40 0 0 0 3.92 0q-.25 1.2-.63 2.08a4 4 0 0 1-.84 1.31zm2.94-4.76q1.66-.15 2.95-.43a7 7 0 0 0 0-2.58q-1.3-.27-2.95-.43a18 18 0 0 1 0 3.44m-1.27-3.54a17 17 0 0 1 0 3.64 39 39 0 0 1-4.3 0 17 17 0 0 1 0-3.64 39 39 0 0 1 4.3 0m1.1-1.17q1.45.13 2.69.34a6.5 6.5 0 0 0-3.67-3.44q.65 1.26.98 3.1M8.48 1.5l.01.02q.41.37.84 1.31.38.89.63 2.08a40 40 0 0 0-3.92 0q.25-1.2.63-2.08a4 4 0 0 1 .85-1.32 7 7 0 0 1 .96 0m-2.75.4a6.5 6.5 0 0 0-3.67 3.44 29 29 0 0 1 2.7-.34q.31-1.83.97-3.1M4.58 6.28q-1.66.16-2.95.43a7 7 0 0 0 0 2.58q1.3.27 2.95.43a18 18 0 0 1 0-3.44m.17 4.71q-1.45-.12-2.69-.34a6.5 6.5 0 0 0 3.67 3.44q-.65-1.27-.98-3.1" fill="#666"/></g><defs><clipPath id="a"><path fill="#fff" d="M0 0h16v16H0z"/></clipPath></defs></svg>
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 394 80"><path fill="#000" d="M262 0h68.5v12.7h-27.2v66.6h-13.6V12.7H262V0ZM149 0v12.7H94v20.4h44.3v12.6H94v21h55v12.6H80.5V0h68.7zm34.3 0h-17.8l63.8 79.4h17.9l-32-39.7 32-39.6h-17.9l-23 28.6-23-28.6zm18.3 56.7-9-11-27.1 33.7h17.8l18.3-22.7z"/><path fill="#000" d="M81 79.3 17 0H0v79.3h13.6V17l50.2 62.3H81Zm252.6-.4c-1 0-1.8-.4-2.5-1s-1.1-1.6-1.1-2.6.3-1.8 1-2.5 1.6-1 2.6-1 1.8.3 2.5 1a3.4 3.4 0 0 1 .6 4.3 3.7 3.7 0 0 1-3 1.8zm23.2-33.5h6v23.3c0 2.1-.4 4-1.3 5.5a9.1 9.1 0 0 1-3.8 3.5c-1.6.8-3.5 1.3-5.7 1.3-2 0-3.7-.4-5.3-1s-2.8-1.8-3.7-3.2c-.9-1.3-1.4-3-1.4-5h6c.1.8.3 1.6.7 2.2s1 1.2 1.6 1.5c.7.4 1.5.5 2.4.5 1 0 1.8-.2 2.4-.6a4 4 0 0 0 1.6-1.8c.3-.8.5-1.8.5-3V45.5zm30.9 9.1a4.4 4.4 0 0 0-2-3.3 7.5 7.5 0 0 0-4.3-1.1c-1.3 0-2.4.2-3.3.5-.9.4-1.6 1-2 1.6a3.5 3.5 0 0 0-.3 4c.3.5.7.9 1.3 1.2l1.8 1 2 .5 3.2.8c1.3.3 2.5.7 3.7 1.2a13 13 0 0 1 3.2 1.8 8.1 8.1 0 0 1 3 6.5c0 2-.5 3.7-1.5 5.1a10 10 0 0 1-4.4 3.5c-1.8.8-4.1 1.2-6.8 1.2-2.6 0-4.9-.4-6.8-1.2-2-.8-3.4-2-4.5-3.5a10 10 0 0 1-1.7-5.6h6a5 5 0 0 0 3.5 4.6c1 .4 2.2.6 3.4.6 1.3 0 2.5-.2 3.5-.6 1-.4 1.8-1 2.4-1.7a4 4 0 0 0 .8-2.4c0-.9-.2-1.6-.7-2.2a11 11 0 0 0-2.1-1.4l-3.2-1-3.8-1c-2.8-.7-5-1.7-6.6-3.2a7.2 7.2 0 0 1-2.4-5.7 8 8 0 0 1 1.7-5 10 10 0 0 1 4.3-3.5c2-.8 4-1.2 6.4-1.2 2.3 0 4.4.4 6.2 1.2 1.8.8 3.2 2 4.3 3.4 1 1.4 1.5 3 1.5 5h-5.8z"/></svg>
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
<svg fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1155 1000"><path d="m577.3 0 577.4 1000H0z" fill="#fff"/></svg>
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
<svg fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path fill-rule="evenodd" clip-rule="evenodd" d="M1.5 2.5h13v10a1 1 0 0 1-1 1h-11a1 1 0 0 1-1-1zM0 1h16v11.5a2.5 2.5 0 0 1-2.5 2.5h-11A2.5 2.5 0 0 1 0 12.5zm3.75 4.5a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5M7 4.75a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0m1.75.75a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5" fill="#666"/></svg>
|
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
/**
|
|
3
|
-
* Ensures the API server is running before starting the dashboard.
|
|
4
|
-
* Automatically spawns the API if it's not reachable.
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
import { spawn } from 'child_process';
|
|
8
|
-
import { fileURLToPath } from 'url';
|
|
9
|
-
import { dirname, join } from 'path';
|
|
10
|
-
|
|
11
|
-
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
12
|
-
const rootDir = join(__dirname, '..', '..');
|
|
13
|
-
|
|
14
|
-
const API_URL = process.env.NEXT_PUBLIC_API_URL || 'http://localhost:3001';
|
|
15
|
-
const HEALTH_ENDPOINT = `${API_URL}/api/health`;
|
|
16
|
-
const MAX_WAIT_MS = 10000;
|
|
17
|
-
const POLL_INTERVAL_MS = 500;
|
|
18
|
-
|
|
19
|
-
async function checkApiHealth() {
|
|
20
|
-
try {
|
|
21
|
-
const response = await fetch(HEALTH_ENDPOINT, {
|
|
22
|
-
signal: AbortSignal.timeout(2000)
|
|
23
|
-
});
|
|
24
|
-
return response.ok;
|
|
25
|
-
} catch {
|
|
26
|
-
return false;
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
async function waitForApi(timeoutMs) {
|
|
31
|
-
const start = Date.now();
|
|
32
|
-
while (Date.now() - start < timeoutMs) {
|
|
33
|
-
if (await checkApiHealth()) {
|
|
34
|
-
return true;
|
|
35
|
-
}
|
|
36
|
-
await new Promise(r => setTimeout(r, POLL_INTERVAL_MS));
|
|
37
|
-
}
|
|
38
|
-
return false;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
async function main() {
|
|
42
|
-
console.log('[Dashboard] Checking if API server is running...');
|
|
43
|
-
|
|
44
|
-
if (await checkApiHealth()) {
|
|
45
|
-
console.log('[Dashboard] API server is already running ✓');
|
|
46
|
-
process.exit(0);
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
console.log('[Dashboard] API server not detected, starting it...');
|
|
50
|
-
|
|
51
|
-
// Spawn API server in background (fully detached)
|
|
52
|
-
// Using 'ignore' for all stdio to prevent SIGPIPE when parent exits
|
|
53
|
-
const apiProcess = spawn('npm', ['run', 'dev:api'], {
|
|
54
|
-
cwd: rootDir,
|
|
55
|
-
detached: true,
|
|
56
|
-
stdio: 'ignore',
|
|
57
|
-
shell: true,
|
|
58
|
-
});
|
|
59
|
-
|
|
60
|
-
// Fully detach - allow parent to exit without killing child
|
|
61
|
-
apiProcess.unref();
|
|
62
|
-
|
|
63
|
-
// Wait for API to be ready
|
|
64
|
-
console.log('[Dashboard] Waiting for API server to be ready...');
|
|
65
|
-
const ready = await waitForApi(MAX_WAIT_MS);
|
|
66
|
-
|
|
67
|
-
if (ready) {
|
|
68
|
-
console.log('[Dashboard] API server is ready ✓');
|
|
69
|
-
process.exit(0);
|
|
70
|
-
} else {
|
|
71
|
-
console.error('[Dashboard] API server failed to start within timeout');
|
|
72
|
-
process.exit(1);
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
main();
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
|
|
3
|
-
import { useEffect } from 'react';
|
|
4
|
-
|
|
5
|
-
export default function Error({
|
|
6
|
-
error,
|
|
7
|
-
reset,
|
|
8
|
-
}: {
|
|
9
|
-
error: Error & { digest?: string };
|
|
10
|
-
reset: () => void;
|
|
11
|
-
}) {
|
|
12
|
-
useEffect(() => {
|
|
13
|
-
console.error('[shieldcortex] Dashboard error:', error);
|
|
14
|
-
}, [error]);
|
|
15
|
-
|
|
16
|
-
return (
|
|
17
|
-
<div className="min-h-screen bg-[#0a0a0f] flex items-center justify-center p-4">
|
|
18
|
-
<div className="max-w-md w-full bg-gray-900 rounded-lg border border-gray-800 p-6 text-center">
|
|
19
|
-
<div className="text-4xl mb-4">🧠</div>
|
|
20
|
-
<h2 className="text-xl font-semibold text-white mb-2">
|
|
21
|
-
Visualization Error
|
|
22
|
-
</h2>
|
|
23
|
-
<p className="text-gray-400 mb-4">
|
|
24
|
-
The brain visualization encountered an error. This might be due to WebGL
|
|
25
|
-
compatibility or memory constraints.
|
|
26
|
-
</p>
|
|
27
|
-
{error.message && (
|
|
28
|
-
<pre className="text-xs text-red-400 bg-gray-950 p-3 rounded mb-4 overflow-auto max-h-32 text-left">
|
|
29
|
-
{error.message}
|
|
30
|
-
</pre>
|
|
31
|
-
)}
|
|
32
|
-
<div className="flex gap-3 justify-center">
|
|
33
|
-
<button
|
|
34
|
-
onClick={reset}
|
|
35
|
-
className="px-4 py-2 bg-cyan-600 hover:bg-cyan-700 text-white rounded-md transition-colors"
|
|
36
|
-
>
|
|
37
|
-
Try Again
|
|
38
|
-
</button>
|
|
39
|
-
<button
|
|
40
|
-
onClick={() => window.location.reload()}
|
|
41
|
-
className="px-4 py-2 bg-gray-700 hover:bg-gray-600 text-white rounded-md transition-colors"
|
|
42
|
-
>
|
|
43
|
-
Reload Page
|
|
44
|
-
</button>
|
|
45
|
-
</div>
|
|
46
|
-
</div>
|
|
47
|
-
</div>
|
|
48
|
-
);
|
|
49
|
-
}
|
|
Binary file
|
|
@@ -1,130 +0,0 @@
|
|
|
1
|
-
@import "tailwindcss";
|
|
2
|
-
@import "tw-animate-css";
|
|
3
|
-
|
|
4
|
-
@custom-variant dark (&:is(.dark *));
|
|
5
|
-
|
|
6
|
-
@theme inline {
|
|
7
|
-
--color-background: var(--background);
|
|
8
|
-
--color-foreground: var(--foreground);
|
|
9
|
-
--font-sans: var(--font-geist-sans);
|
|
10
|
-
--font-mono: var(--font-geist-mono);
|
|
11
|
-
--color-sidebar-ring: var(--sidebar-ring);
|
|
12
|
-
--color-sidebar-border: var(--sidebar-border);
|
|
13
|
-
--color-sidebar-accent-foreground: var(--sidebar-accent-foreground);
|
|
14
|
-
--color-sidebar-accent: var(--sidebar-accent);
|
|
15
|
-
--color-sidebar-primary-foreground: var(--sidebar-primary-foreground);
|
|
16
|
-
--color-sidebar-primary: var(--sidebar-primary);
|
|
17
|
-
--color-sidebar-foreground: var(--sidebar-foreground);
|
|
18
|
-
--color-sidebar: var(--sidebar);
|
|
19
|
-
--color-chart-5: var(--chart-5);
|
|
20
|
-
--color-chart-4: var(--chart-4);
|
|
21
|
-
--color-chart-3: var(--chart-3);
|
|
22
|
-
--color-chart-2: var(--chart-2);
|
|
23
|
-
--color-chart-1: var(--chart-1);
|
|
24
|
-
--color-ring: var(--ring);
|
|
25
|
-
--color-input: var(--input);
|
|
26
|
-
--color-border: var(--border);
|
|
27
|
-
--color-destructive: var(--destructive);
|
|
28
|
-
--color-accent-foreground: var(--accent-foreground);
|
|
29
|
-
--color-accent: var(--accent);
|
|
30
|
-
--color-muted-foreground: var(--muted-foreground);
|
|
31
|
-
--color-muted: var(--muted);
|
|
32
|
-
--color-secondary-foreground: var(--secondary-foreground);
|
|
33
|
-
--color-secondary: var(--secondary);
|
|
34
|
-
--color-primary-foreground: var(--primary-foreground);
|
|
35
|
-
--color-primary: var(--primary);
|
|
36
|
-
--color-popover-foreground: var(--popover-foreground);
|
|
37
|
-
--color-popover: var(--popover);
|
|
38
|
-
--color-card-foreground: var(--card-foreground);
|
|
39
|
-
--color-card: var(--card);
|
|
40
|
-
--radius-sm: calc(var(--radius) - 4px);
|
|
41
|
-
--radius-md: calc(var(--radius) - 2px);
|
|
42
|
-
--radius-lg: var(--radius);
|
|
43
|
-
--radius-xl: calc(var(--radius) + 4px);
|
|
44
|
-
--radius-2xl: calc(var(--radius) + 8px);
|
|
45
|
-
--radius-3xl: calc(var(--radius) + 12px);
|
|
46
|
-
--radius-4xl: calc(var(--radius) + 16px);
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
:root {
|
|
50
|
-
--radius: 0.625rem;
|
|
51
|
-
--background: oklch(1 0 0);
|
|
52
|
-
--foreground: oklch(0.145 0 0);
|
|
53
|
-
--card: oklch(1 0 0);
|
|
54
|
-
--card-foreground: oklch(0.145 0 0);
|
|
55
|
-
--popover: oklch(1 0 0);
|
|
56
|
-
--popover-foreground: oklch(0.145 0 0);
|
|
57
|
-
--primary: oklch(0.205 0 0);
|
|
58
|
-
--primary-foreground: oklch(0.985 0 0);
|
|
59
|
-
--secondary: oklch(0.97 0 0);
|
|
60
|
-
--secondary-foreground: oklch(0.205 0 0);
|
|
61
|
-
--muted: oklch(0.97 0 0);
|
|
62
|
-
--muted-foreground: oklch(0.556 0 0);
|
|
63
|
-
--accent: oklch(0.97 0 0);
|
|
64
|
-
--accent-foreground: oklch(0.205 0 0);
|
|
65
|
-
--destructive: oklch(0.577 0.245 27.325);
|
|
66
|
-
--border: oklch(0.922 0 0);
|
|
67
|
-
--input: oklch(0.922 0 0);
|
|
68
|
-
--ring: oklch(0.708 0 0);
|
|
69
|
-
--chart-1: oklch(0.646 0.222 41.116);
|
|
70
|
-
--chart-2: oklch(0.6 0.118 184.704);
|
|
71
|
-
--chart-3: oklch(0.398 0.07 227.392);
|
|
72
|
-
--chart-4: oklch(0.828 0.189 84.429);
|
|
73
|
-
--chart-5: oklch(0.769 0.188 70.08);
|
|
74
|
-
--sidebar: oklch(0.985 0 0);
|
|
75
|
-
--sidebar-foreground: oklch(0.145 0 0);
|
|
76
|
-
--sidebar-primary: oklch(0.205 0 0);
|
|
77
|
-
--sidebar-primary-foreground: oklch(0.985 0 0);
|
|
78
|
-
--sidebar-accent: oklch(0.97 0 0);
|
|
79
|
-
--sidebar-accent-foreground: oklch(0.205 0 0);
|
|
80
|
-
--sidebar-border: oklch(0.922 0 0);
|
|
81
|
-
--sidebar-ring: oklch(0.708 0 0);
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
.dark {
|
|
85
|
-
--background: oklch(0.145 0 0);
|
|
86
|
-
--foreground: oklch(0.985 0 0);
|
|
87
|
-
--card: oklch(0.205 0 0);
|
|
88
|
-
--card-foreground: oklch(0.985 0 0);
|
|
89
|
-
--popover: oklch(0.205 0 0);
|
|
90
|
-
--popover-foreground: oklch(0.985 0 0);
|
|
91
|
-
--primary: oklch(0.922 0 0);
|
|
92
|
-
--primary-foreground: oklch(0.205 0 0);
|
|
93
|
-
--secondary: oklch(0.269 0 0);
|
|
94
|
-
--secondary-foreground: oklch(0.985 0 0);
|
|
95
|
-
--muted: oklch(0.269 0 0);
|
|
96
|
-
--muted-foreground: oklch(0.708 0 0);
|
|
97
|
-
--accent: oklch(0.269 0 0);
|
|
98
|
-
--accent-foreground: oklch(0.985 0 0);
|
|
99
|
-
--destructive: oklch(0.704 0.191 22.216);
|
|
100
|
-
--border: oklch(1 0 0 / 10%);
|
|
101
|
-
--input: oklch(1 0 0 / 15%);
|
|
102
|
-
--ring: oklch(0.556 0 0);
|
|
103
|
-
--chart-1: oklch(0.488 0.243 264.376);
|
|
104
|
-
--chart-2: oklch(0.696 0.17 162.48);
|
|
105
|
-
--chart-3: oklch(0.769 0.188 70.08);
|
|
106
|
-
--chart-4: oklch(0.627 0.265 303.9);
|
|
107
|
-
--chart-5: oklch(0.645 0.246 16.439);
|
|
108
|
-
--sidebar: oklch(0.205 0 0);
|
|
109
|
-
--sidebar-foreground: oklch(0.985 0 0);
|
|
110
|
-
--sidebar-primary: oklch(0.488 0.243 264.376);
|
|
111
|
-
--sidebar-primary-foreground: oklch(0.985 0 0);
|
|
112
|
-
--sidebar-accent: oklch(0.269 0 0);
|
|
113
|
-
--sidebar-accent-foreground: oklch(0.985 0 0);
|
|
114
|
-
--sidebar-border: oklch(1 0 0 / 10%);
|
|
115
|
-
--sidebar-ring: oklch(0.556 0 0);
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
@layer base {
|
|
119
|
-
* {
|
|
120
|
-
@apply border-border outline-ring/50;
|
|
121
|
-
}
|
|
122
|
-
body {
|
|
123
|
-
@apply bg-background text-foreground;
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
/* Hide scrollbar but keep scroll functionality */
|
|
128
|
-
.scrollbar-hide::-webkit-scrollbar {
|
|
129
|
-
display: none;
|
|
130
|
-
}
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import type { Metadata } from "next";
|
|
2
|
-
import { Geist, Geist_Mono } from "next/font/google";
|
|
3
|
-
import "./globals.css";
|
|
4
|
-
import { Providers } from "@/components/Providers";
|
|
5
|
-
|
|
6
|
-
const geistSans = Geist({
|
|
7
|
-
variable: "--font-geist-sans",
|
|
8
|
-
subsets: ["latin"],
|
|
9
|
-
});
|
|
10
|
-
|
|
11
|
-
const geistMono = Geist_Mono({
|
|
12
|
-
variable: "--font-geist-mono",
|
|
13
|
-
subsets: ["latin"],
|
|
14
|
-
});
|
|
15
|
-
|
|
16
|
-
export const metadata: Metadata = {
|
|
17
|
-
title: "ShieldCortex",
|
|
18
|
-
description: "AI Brain Visualization for ShieldCortex Memory System",
|
|
19
|
-
};
|
|
20
|
-
|
|
21
|
-
export default function RootLayout({
|
|
22
|
-
children,
|
|
23
|
-
}: Readonly<{
|
|
24
|
-
children: React.ReactNode;
|
|
25
|
-
}>) {
|
|
26
|
-
return (
|
|
27
|
-
<html lang="en" className="dark">
|
|
28
|
-
<body
|
|
29
|
-
className={`${geistSans.variable} ${geistMono.variable} antialiased bg-slate-950`}
|
|
30
|
-
>
|
|
31
|
-
<Providers>{children}</Providers>
|
|
32
|
-
</body>
|
|
33
|
-
</html>
|
|
34
|
-
);
|
|
35
|
-
}
|