Update AppImage

This commit is contained in:
MacRimi
2025-09-28 22:57:15 +02:00
parent e404557d62
commit 38569ff7fc
3 changed files with 102 additions and 88 deletions

View File

@@ -4,6 +4,7 @@
@custom-variant dark (&:is(.dark *)); @custom-variant dark (&:is(.dark *));
:root { :root {
/* Proxmox light theme colors */
--background: oklch(1 0 0); --background: oklch(1 0 0);
--foreground: oklch(0.145 0 0); --foreground: oklch(0.145 0 0);
--card: oklch(1 0 0); --card: oklch(1 0 0);
@@ -31,11 +32,10 @@
--radius: 0.625rem; --radius: 0.625rem;
--sidebar: oklch(0.985 0 0); --sidebar: oklch(0.985 0 0);
--sidebar-foreground: oklch(0.145 0 0); --sidebar-foreground: oklch(0.145 0 0);
--header-bg: oklch(1 0 0);
--header-foreground: oklch(0.145 0 0);
} }
.dark { .dark {
/* Proxmox dark theme with proper gray background (#2b2f36) */
--background: oklch(0.205 0.005 240); /* Proxmox dark gray #2b2f36 */ --background: oklch(0.205 0.005 240); /* Proxmox dark gray #2b2f36 */
--foreground: oklch(0.985 0 0); --foreground: oklch(0.985 0 0);
--card: oklch(0.235 0.005 240); /* Slightly lighter gray for cards #363c45 */ --card: oklch(0.235 0.005 240); /* Slightly lighter gray for cards #363c45 */
@@ -55,15 +55,12 @@
--border: oklch(0.335 0.005 240); /* More visible borders */ --border: oklch(0.335 0.005 240); /* More visible borders */
--input: oklch(0.285 0.005 240); --input: oklch(0.285 0.005 240);
--ring: oklch(0.439 0 0); --ring: oklch(0.439 0 0);
/* Updated chart colors to be more vibrant and visible in dark mode */
--chart-1: oklch(0.65 0.2 220); /* Bright Blue */ --chart-1: oklch(0.65 0.2 220); /* Bright Blue */
--chart-2: oklch(0.65 0.2 140); /* Bright Green */ --chart-2: oklch(0.65 0.2 140); /* Bright Green */
--chart-3: oklch(0.7 0.2 50); /* Bright Yellow */ --chart-3: oklch(0.7 0.2 50); /* Bright Yellow */
--chart-4: oklch(0.65 0.2 300); /* Bright Purple */ --chart-4: oklch(0.65 0.2 300); /* Bright Purple */
--chart-5: oklch(0.65 0.2 20); /* Bright Orange */ --chart-5: oklch(0.65 0.2 20); /* Bright Orange */
--radius-sm: calc(var(--radius) - 4px);
--radius-md: calc(var(--radius) - 2px);
--radius-lg: var(--radius);
--radius-xl: calc(var(--radius) + 4px);
--sidebar: oklch(0.205 0 0); --sidebar: oklch(0.205 0 0);
--sidebar-foreground: oklch(0.985 0 0); --sidebar-foreground: oklch(0.985 0 0);
--sidebar-primary: oklch(0.488 0.243 264.376); --sidebar-primary: oklch(0.488 0.243 264.376);
@@ -72,13 +69,12 @@
--sidebar-accent-foreground: oklch(0.985 0 0); --sidebar-accent-foreground: oklch(0.985 0 0);
--sidebar-border: oklch(0.285 0.005 240); --sidebar-border: oklch(0.285 0.005 240);
--sidebar-ring: oklch(0.439 0 0); --sidebar-ring: oklch(0.439 0 0);
/* Header is black only in dark mode */
--header-bg: oklch(0 0 0); --header-bg: oklch(0 0 0);
--header-foreground: oklch(1 0 0); --header-foreground: oklch(1 0 0);
} }
@theme inline { @theme inline {
--font-sans: var(--font-geist-sans);
--font-mono: var(--font-geist-mono);
--color-background: var(--background); --color-background: var(--background);
--color-foreground: var(--foreground); --color-foreground: var(--foreground);
--color-card: var(--card); --color-card: var(--card);
@@ -115,6 +111,9 @@
--color-sidebar-accent-foreground: var(--sidebar-accent-foreground); --color-sidebar-accent-foreground: var(--sidebar-accent-foreground);
--color-sidebar-border: var(--sidebar-border); --color-sidebar-border: var(--sidebar-border);
--color-sidebar-ring: var(--sidebar-ring); --color-sidebar-ring: var(--sidebar-ring);
/* Custom header colors */
--color-header-bg: var(--header-bg);
--color-header-foreground: var(--header-foreground);
} }
@layer base { @layer base {
@@ -124,78 +123,80 @@
body { body {
@apply bg-background text-foreground; @apply bg-background text-foreground;
} }
.header-bg { }
background-color: var(--header-bg);
color: var(--header-foreground); /* Header styling that adapts to theme */
backdrop-filter: none; /* Remove any blur effects */ .header-bg {
} background-color: var(--header-bg);
/* Custom scrollbar with better contrast */ color: var(--header-foreground);
::-webkit-scrollbar { }
width: 6px;
} /* Custom scrollbar with better contrast */
::-webkit-scrollbar {
::-webkit-scrollbar-track { width: 6px;
background: var(--background); }
}
::-webkit-scrollbar-track {
::-webkit-scrollbar-thumb { background: var(--background);
background: var(--muted); }
border-radius: 3px;
} ::-webkit-scrollbar-thumb {
background: var(--muted);
::-webkit-scrollbar-thumb:hover { border-radius: 3px;
background: var(--muted-foreground); }
}
::-webkit-scrollbar-thumb:hover {
/* Better contrast for dark mode content */ background: var(--muted-foreground);
.dark .metric-card { }
background: var(--card);
border: 1px solid var(--border); /* Better contrast for dark mode content */
} .dark .metric-card {
background: var(--card);
.dark .metric-value { border: 1px solid var(--border);
color: var(--foreground); }
font-weight: 600;
} .dark .metric-value {
color: var(--foreground);
.dark .metric-label { font-weight: 600;
color: var(--muted-foreground); }
}
.dark .metric-label {
/* Fix chart axis visibility in dark mode */ color: var(--muted-foreground);
.dark .recharts-cartesian-axis-tick-value { }
fill: var(--muted-foreground) !important;
} /* Fix chart axis visibility in dark mode */
.dark .recharts-cartesian-axis-tick-value {
.dark .recharts-text { fill: var(--muted-foreground) !important;
fill: var(--muted-foreground) !important; }
}
.dark .recharts-text {
/* Improve server info layout in header - clean design without transparency */ fill: var(--muted-foreground) !important;
.server-info { }
display: flex;
align-items: center; /* Improve server info layout in header - clean design without transparency */
gap: 0.5rem; .server-info {
padding: 0.25rem 0.75rem; display: flex;
border-radius: 0.375rem; align-items: center;
border: 1px solid rgba(255, 255, 255, 0.2); gap: 0.5rem;
} padding: 0.25rem 0.75rem;
border-radius: 0.375rem;
.dark .server-info { border: 1px solid rgba(255, 255, 255, 0.2);
border: 1px solid rgba(255, 255, 255, 0.1); }
}
.dark .server-info {
/* Better spacing for VM/LXC badges */ border: 1px solid rgba(255, 255, 255, 0.1);
.vm-badges { }
display: flex;
flex-wrap: wrap; /* Better spacing for VM/LXC badges */
gap: 0.25rem; .vm-badges {
align-items: center; display: flex;
} flex-wrap: wrap;
gap: 0.25rem;
.vm-badge { align-items: center;
font-size: 0.75rem; }
padding: 0.125rem 0.5rem;
white-space: nowrap; .vm-badge {
} font-size: 0.75rem;
padding: 0.125rem 0.5rem;
white-space: nowrap;
} }

View File

@@ -9,8 +9,21 @@ import "./globals.css"
export const metadata: Metadata = { export const metadata: Metadata = {
title: "ProxMenux Monitor", title: "ProxMenux Monitor",
description: "Proxmox System Dashboard", description: "Proxmox System Dashboard and Monitor",
generator: "v0.app", generator: "v0.app",
manifest: "/manifest.json",
icons: {
icon: [
{ url: "/favicon-16x16.png", sizes: "16x16", type: "image/png" },
{ url: "/favicon-32x32.png", sizes: "32x32", type: "image/png" },
],
apple: [{ url: "/apple-touch-icon.png", sizes: "180x180", type: "image/png" }],
},
viewport: "width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no",
themeColor: [
{ media: "(prefers-color-scheme: light)", color: "#ffffff" },
{ media: "(prefers-color-scheme: dark)", color: "#1a1a1a" },
],
} }
export default function RootLayout({ export default function RootLayout({
@@ -20,13 +33,13 @@ export default function RootLayout({
}>) { }>) {
return ( return (
<html lang="en" suppressHydrationWarning> <html lang="en" suppressHydrationWarning>
<body className={`font-sans ${GeistSans.variable} ${GeistMono.variable}`}> <body className={`${GeistSans.variable} ${GeistMono.variable} antialiased`}>
<Suspense fallback={null}> <Suspense fallback={<div>Loading...</div>}>
<ThemeProvider attribute="class" defaultTheme="system" enableSystem disableTransitionOnChange> <ThemeProvider attribute="class" defaultTheme="system" enableSystem disableTransitionOnChange>
{children} {children}
</ThemeProvider> </ThemeProvider>
<Analytics />
</Suspense> </Suspense>
<Analytics />
</body> </body>
</html> </html>
) )

View File

@@ -1,6 +1,6 @@
import { ProxmoxDashboard } from "../AppImage/components/proxmox-dashboard" import { ProxmoxDashboard } from "../components/proxmox-dashboard"
export default function Page() { export default function Home() {
return ( return (
<main className="min-h-screen bg-background"> <main className="min-h-screen bg-background">
<ProxmoxDashboard /> <ProxmoxDashboard />