mirror of
https://github.com/MacRimi/ProxMenux.git
synced 2025-10-01 23:56:18 +00:00
Update AppImage
This commit is contained in:
@@ -4,7 +4,6 @@
|
|||||||
@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);
|
||||||
@@ -32,10 +31,11 @@
|
|||||||
--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,12 +55,15 @@
|
|||||||
--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);
|
||||||
@@ -69,12 +72,13 @@
|
|||||||
--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);
|
||||||
@@ -111,9 +115,6 @@
|
|||||||
--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 {
|
||||||
@@ -123,14 +124,11 @@
|
|||||||
body {
|
body {
|
||||||
@apply bg-background text-foreground;
|
@apply bg-background text-foreground;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
/* Header styling that adapts to theme */
|
|
||||||
.header-bg {
|
.header-bg {
|
||||||
background-color: var(--header-bg);
|
background-color: var(--header-bg);
|
||||||
color: var(--header-foreground);
|
color: var(--header-foreground);
|
||||||
|
backdrop-filter: none; /* Remove any blur effects */
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Custom scrollbar with better contrast */
|
/* Custom scrollbar with better contrast */
|
||||||
::-webkit-scrollbar {
|
::-webkit-scrollbar {
|
||||||
width: 6px;
|
width: 6px;
|
||||||
@@ -200,3 +198,4 @@
|
|||||||
padding: 0.125rem 0.5rem;
|
padding: 0.125rem 0.5rem;
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
@@ -9,21 +9,8 @@ import "./globals.css"
|
|||||||
|
|
||||||
export const metadata: Metadata = {
|
export const metadata: Metadata = {
|
||||||
title: "ProxMenux Monitor",
|
title: "ProxMenux Monitor",
|
||||||
description: "Proxmox System Dashboard and Monitor",
|
description: "Proxmox System Dashboard",
|
||||||
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({
|
||||||
@@ -33,13 +20,13 @@ export default function RootLayout({
|
|||||||
}>) {
|
}>) {
|
||||||
return (
|
return (
|
||||||
<html lang="en" suppressHydrationWarning>
|
<html lang="en" suppressHydrationWarning>
|
||||||
<body className={`${GeistSans.variable} ${GeistMono.variable} antialiased`}>
|
<body className={`font-sans ${GeistSans.variable} ${GeistMono.variable}`}>
|
||||||
<Suspense fallback={<div>Loading...</div>}>
|
<Suspense fallback={null}>
|
||||||
<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>
|
||||||
)
|
)
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
import { ProxmoxDashboard } from "../components/proxmox-dashboard"
|
import { ProxmoxDashboard } from "../AppImage/components/proxmox-dashboard"
|
||||||
|
|
||||||
export default function Home() {
|
export default function Page() {
|
||||||
return (
|
return (
|
||||||
<main className="min-h-screen bg-background">
|
<main className="min-h-screen bg-background">
|
||||||
<ProxmoxDashboard />
|
<ProxmoxDashboard />
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
"use client"
|
"use client"
|
||||||
|
|
||||||
import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"
|
import { Card, CardContent, CardHeader, CardTitle } from "./ui/card"
|
||||||
import { Badge } from "@/components/ui/badge"
|
import { Badge } from "./ui/badge"
|
||||||
import { LineChart, Line, XAxis, YAxis, CartesianGrid, Tooltip, ResponsiveContainer, AreaChart, Area } from "recharts"
|
import { LineChart, Line, XAxis, YAxis, CartesianGrid, Tooltip, ResponsiveContainer, AreaChart, Area } from "recharts"
|
||||||
import { Wifi, Globe, Shield, Activity, Network, Router } from "lucide-react"
|
import { Wifi, Globe, Shield, Activity, Network, Router } from "lucide-react"
|
||||||
|
|
||||||
@@ -80,9 +80,11 @@ export function NetworkMetrics() {
|
|||||||
</Card>
|
</Card>
|
||||||
|
|
||||||
<Card className="bg-card border-border">
|
<Card className="bg-card border-border">
|
||||||
<CardHeader className="flex flex-row items-center justify-between space-y-0 pb-2">
|
<CardHeader>
|
||||||
<CardTitle className="text-sm font-medium text-muted-foreground">Latency</CardTitle>
|
<CardTitle className="text-foreground flex items-center">
|
||||||
<Globe className="h-4 w-4 text-muted-foreground" />
|
<Globe className="h-5 w-5 mr-2" />
|
||||||
|
Latency
|
||||||
|
</CardTitle>
|
||||||
</CardHeader>
|
</CardHeader>
|
||||||
<CardContent>
|
<CardContent>
|
||||||
<div className="text-2xl font-bold text-foreground">12ms</div>
|
<div className="text-2xl font-bold text-foreground">12ms</div>
|
||||||
|
@@ -1,8 +1,8 @@
|
|||||||
"use client"
|
"use client"
|
||||||
|
|
||||||
import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"
|
import { Card, CardContent, CardHeader, CardTitle } from "./ui/card"
|
||||||
import { Progress } from "@/components/ui/progress"
|
import { Progress } from "./ui/progress"
|
||||||
import { Badge } from "@/components/ui/badge"
|
import { Badge } from "./ui/badge"
|
||||||
import { ResponsiveContainer, BarChart, Bar, XAxis, YAxis, CartesianGrid, Tooltip } from "recharts"
|
import { ResponsiveContainer, BarChart, Bar, XAxis, YAxis, CartesianGrid, Tooltip } from "recharts"
|
||||||
import { HardDrive, Database, Archive, AlertTriangle, CheckCircle, Activity } from "lucide-react"
|
import { HardDrive, Database, Archive, AlertTriangle, CheckCircle, Activity } from "lucide-react"
|
||||||
|
|
||||||
|
@@ -1,11 +1,11 @@
|
|||||||
"use client"
|
"use client"
|
||||||
|
|
||||||
import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"
|
import { Card, CardContent, CardHeader, CardTitle } from "./ui/card"
|
||||||
import { Badge } from "@/components/ui/badge"
|
import { Badge } from "./ui/badge"
|
||||||
import { Button } from "@/components/ui/button"
|
import { Button } from "./ui/button"
|
||||||
import { Input } from "@/components/ui/input"
|
import { Input } from "./ui/input"
|
||||||
import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select"
|
import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "./ui/select"
|
||||||
import { ScrollArea } from "@/components/ui/scroll-area"
|
import { ScrollArea } from "./ui/scroll-area"
|
||||||
import { FileText, Search, Download, AlertTriangle, Info, CheckCircle, XCircle } from "lucide-react"
|
import { FileText, Search, Download, AlertTriangle, Info, CheckCircle, XCircle } from "lucide-react"
|
||||||
import { useState } from "react"
|
import { useState } from "react"
|
||||||
|
|
||||||
|
@@ -1,8 +1,8 @@
|
|||||||
"use client"
|
"use client"
|
||||||
|
|
||||||
import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"
|
import { Card, CardContent, CardHeader, CardTitle } from "./ui/card"
|
||||||
import { Progress } from "@/components/ui/progress"
|
import { Progress } from "./ui/progress"
|
||||||
import { Badge } from "@/components/ui/badge"
|
import { Badge } from "./ui/badge"
|
||||||
import { XAxis, YAxis, CartesianGrid, Tooltip, ResponsiveContainer, AreaChart, Area } from "recharts"
|
import { XAxis, YAxis, CartesianGrid, Tooltip, ResponsiveContainer, AreaChart, Area } from "recharts"
|
||||||
import { Cpu, MemoryStick, Thermometer, Users, Activity, Server, Zap } from "lucide-react"
|
import { Cpu, MemoryStick, Thermometer, Users, Activity, Server, Zap } from "lucide-react"
|
||||||
|
|
||||||
|
@@ -2,7 +2,7 @@
|
|||||||
import { Moon, Sun } from "lucide-react"
|
import { Moon, Sun } from "lucide-react"
|
||||||
import { useTheme } from "next-themes"
|
import { useTheme } from "next-themes"
|
||||||
|
|
||||||
import { Button } from "@/components/ui/button"
|
import { Button } from "./ui/button"
|
||||||
|
|
||||||
export function ThemeToggle() {
|
export function ThemeToggle() {
|
||||||
const { theme, setTheme } = useTheme()
|
const { theme, setTheme } = useTheme()
|
||||||
|
@@ -1,8 +1,8 @@
|
|||||||
"use client"
|
"use client"
|
||||||
|
|
||||||
import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"
|
import { Card, CardContent, CardHeader, CardTitle } from "./ui/card"
|
||||||
import { Badge } from "@/components/ui/badge"
|
import { Badge } from "./ui/badge"
|
||||||
import { Progress } from "@/components/ui/progress"
|
import { Progress } from "./ui/progress"
|
||||||
import { Server, Play, Square, RotateCcw, Monitor, Cpu, MemoryStick } from "lucide-react"
|
import { Server, Play, Square, RotateCcw, Monitor, Cpu, MemoryStick } from "lucide-react"
|
||||||
|
|
||||||
const virtualMachines = [
|
const virtualMachines = [
|
||||||
|
Reference in New Issue
Block a user