diff --git a/public/file.svg b/public/file.svg deleted file mode 100644 index 004145c..0000000 --- a/public/file.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/public/globe.svg b/public/globe.svg deleted file mode 100644 index 567f17b..0000000 --- a/public/globe.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/public/next.svg b/public/next.svg deleted file mode 100644 index 5174b28..0000000 --- a/public/next.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/public/vercel.svg b/public/vercel.svg deleted file mode 100644 index 7705396..0000000 --- a/public/vercel.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/public/window.svg b/public/window.svg deleted file mode 100644 index b2b2a44..0000000 --- a/public/window.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/app/applications/page.tsx b/src/app/applications/page.tsx index 04cbdd3..db70541 100644 --- a/src/app/applications/page.tsx +++ b/src/app/applications/page.tsx @@ -91,8 +91,8 @@ export default function ApplicationsPage() { >
- {applications.length} apps - + {applications.length} apps + {applications.filter((a) => a.status === "running").length} running
@@ -160,11 +160,7 @@ export default function ApplicationsPage() {
{app.ports.length > 0 ? ( app.ports.map((port) => ( - + {port} )) diff --git a/src/app/containers/page.tsx b/src/app/containers/page.tsx index 8839456..fe21e34 100644 --- a/src/app/containers/page.tsx +++ b/src/app/containers/page.tsx @@ -117,11 +117,11 @@ export default function ContainersPage() { subtitle="View and manage container instances" >
- {containers.length} containers - + {containers.length} containers + {containers.filter((c) => c.status === "running").length} running - + {containers.filter((c) => c.status === "pending").length} pending @@ -182,7 +182,7 @@ export default function ContainersPage() { - {container.node} + {container.node} diff --git a/src/app/deployments/page.tsx b/src/app/deployments/page.tsx index 703262a..2ed7558 100644 --- a/src/app/deployments/page.tsx +++ b/src/app/deployments/page.tsx @@ -97,7 +97,7 @@ export default function DeploymentsPage() { >
- {deployments.length} deployments + {deployments.length} deployments
diff --git a/src/app/globals.css b/src/app/globals.css index 0de84f5..d6a166c 100644 --- a/src/app/globals.css +++ b/src/app/globals.css @@ -2,193 +2,6 @@ @import "tw-animate-css"; @custom-variant dark (&:is(.dark *)); -/* @import url("https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;600;700&family=Inter:wght@400;500;600;700&display=swap"); */ - -/* ========================= - Theme variables -========================= */ -@layer base { - :root { - --background: 0 0% 4%; - --foreground: 0 0% 95%; - - --card: 0 0% 7%; - --card-foreground: 0 0% 95%; - - --popover: 0 0% 7%; - --popover-foreground: 0 0% 95%; - - --primary: 180 100% 50%; - --primary-foreground: 0 0% 4%; - - --secondary: 0 0% 12%; - --secondary-foreground: 0 0% 95%; - - --muted: 0 0% 15%; - --muted-foreground: 0 0% 55%; - - --accent: 0 0% 12%; - --accent-foreground: 0 0% 95%; - - --destructive: 0 70% 50%; - --destructive-foreground: 0 0% 95%; - - --success: 142 70% 45%; - --success-foreground: 0 0% 4%; - - --warning: 38 92% 50%; - --warning-foreground: 0 0% 4%; - - --border: 0 0% 18%; - --input: 0 0% 12%; - --ring: 180 100% 50%; - - --radius: 0.25rem; - - --sidebar-background: 0 0% 5%; - --sidebar-foreground: 0 0% 70%; - --sidebar-primary: 180 100% 50%; - --sidebar-primary-foreground: 0 0% 4%; - --sidebar-accent: 0 0% 10%; - --sidebar-accent-foreground: 0 0% 95%; - --sidebar-border: 0 0% 15%; - --sidebar-ring: 180 100% 50%; - - --chart-1: 180 100% 50%; - --chart-2: 142 70% 45%; - --chart-3: 38 92% 50%; - --chart-4: 0 70% 50%; - --chart-5: 270 70% 50%; - } - - .dark { - --background: 0 0% 4%; - --foreground: 0 0% 95%; - --card: 0 0% 7%; - --card-foreground: 0 0% 95%; - --popover: 0 0% 7%; - --popover-foreground: 0 0% 95%; - --primary: 180 100% 50%; - --primary-foreground: 0 0% 4%; - --secondary: 0 0% 12%; - --secondary-foreground: 0 0% 95%; - --muted: 0 0% 15%; - --muted-foreground: 0 0% 55%; - --accent: 0 0% 12%; - --accent-foreground: 0 0% 95%; - --destructive: 0 70% 50%; - --destructive-foreground: 0 0% 95%; - --border: 0 0% 18%; - --input: 0 0% 12%; - --ring: 180 100% 50%; - } - - * { - border-color: hsl(var(--border)); - } - - body { - background-color: hsl(var(--background)); - color: hsl(var(--foreground)); - font-family: Inter, system-ui, sans-serif; - -webkit-font-smoothing: antialiased; - } -} - -/* ========================= - Components -========================= */ -@layer components { - .terminal-text { - @apply font-mono text-sm tracking-tight; - } - - .stat-value { - @apply font-mono text-2xl font-semibold tracking-tight; - } - - .status-dot { - @apply w-2 h-2 rounded-full; - } - - .status-running { - background-color: hsl(var(--success)); - box-shadow: 0 0 8px hsl(var(--success) / 0.5); - } - - .status-stopped { - background-color: hsl(var(--muted-foreground)); - } - - .status-error { - background-color: hsl(var(--destructive)); - box-shadow: 0 0 8px hsl(var(--destructive) / 0.5); - } - - .status-pending { - background-color: hsl(var(--warning)); - box-shadow: 0 0 8px hsl(var(--warning) / 0.5); - } - - .log-line { - @apply font-mono text-xs py-0.5 px-2 transition-colors; - } - - .log-line:hover { - background-color: hsl(var(--muted) / 0.5); - } - - .log-timestamp { - margin-right: 0.75rem; - color: hsl(var(--muted-foreground)); - } - - .log-info { - color: hsl(var(--primary)); - } - - .log-warn { - color: hsl(var(--warning)); - } - - .log-error { - color: hsl(var(--destructive)); - } - - .data-table-row { - border-bottom: 1px solid hsl(var(--border)); - } - - .data-table-row:hover { - background-color: hsl(var(--muted) / 0.3); - } - - .metric-bar { - height: 0.375rem; - border-radius: 9999px; - background-color: hsl(var(--muted)); - overflow: hidden; - } - - .metric-bar-fill { - height: 100%; - border-radius: 9999px; - transition: all 500ms; - } -} - -/* ========================= - Utilities -========================= */ -@layer utilities { - .glow-primary { - box-shadow: 0 0 20px hsl(var(--primary) / 0.15); - } - - .border-glow { - box-shadow: inset 0 0 0 1px hsl(var(--border)); - } -} @theme inline { --radius-sm: calc(var(--radius) - 4px); diff --git a/src/app/logs/page.tsx b/src/app/logs/page.tsx index 595a3ad..58cef99 100644 --- a/src/app/logs/page.tsx +++ b/src/app/logs/page.tsx @@ -224,13 +224,13 @@ export default function LogsPage() {
- + Log Stream
- {filteredLogs.length} entries + {filteredLogs.length} entries {!isPaused && (
@@ -247,13 +247,13 @@ export default function LogsPage() { {log.timestamp} [{log.level}] - + {log.source} {log.message} diff --git a/src/app/monitoring/page.tsx b/src/app/monitoring/page.tsx index 5950844..d691910 100644 --- a/src/app/monitoring/page.tsx +++ b/src/app/monitoring/page.tsx @@ -128,7 +128,7 @@ export default function MonitoringPage() { CPU Usage - Last 12 hours + Last 12 hours @@ -192,7 +192,7 @@ export default function MonitoringPage() { Memory Usage - Last 12 hours + Last 12 hours @@ -258,7 +258,7 @@ export default function MonitoringPage() { Network I/O - Last 12 hours + Last 12 hours diff --git a/src/app/nodes/page.tsx b/src/app/nodes/page.tsx index 9155e78..d3ed3ce 100644 --- a/src/app/nodes/page.tsx +++ b/src/app/nodes/page.tsx @@ -58,8 +58,8 @@ export default function NodesPage() {
- {nodes.length} nodes - + {nodes.length} nodes + {nodes.filter((n) => n.status === "running").length} online
@@ -163,18 +163,10 @@ export default function NodesPage() { Quick Actions
- -
diff --git a/src/app/overview/page.tsx b/src/app/overview/page.tsx index c6ce00f..fb646cd 100644 --- a/src/app/overview/page.tsx +++ b/src/app/overview/page.tsx @@ -234,7 +234,7 @@ export default function OverviewPage() { Cluster Nodes - {nodes.length} nodes + {nodes.length} nodes