"use client" import Image from "next/image" import { Github, Heart, BookOpen, MessageSquare, Bug, Sparkles, Scale, ExternalLink, } from "lucide-react" import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "./ui/card" import { APP_VERSION } from "./release-notes-modal" // Issue #191: a dedicated About tab. Centralises project metadata // (version, license, author) and every external link the project // already exposes — GitHub, docs, donation. Replaces the lone // "Support and contribute to the project" footer link with a proper // information surface that's easy to extend with new social channels // without re-cluttering the dashboard footer. interface LinkRow { label: string description: string href: string Icon: React.ComponentType<{ className?: string }> accent?: keyof typeof ACCENT_CLASSES } // Tailwind only emits classes that appear as literal strings in the // source. A dynamic `bg-${accent}/10` template does not survive the // purge step, so each accent maps to a fully-spelled class pair below. const ACCENT_CLASSES = { gray: "bg-gray-500/10 text-gray-400", blue: "bg-blue-500/10 text-blue-500", purple: "bg-purple-500/10 text-purple-400", red: "bg-red-500/10 text-red-500", pink: "bg-pink-500/10 text-pink-500", } as const const PROJECT_LINKS: LinkRow[] = [ { label: "GitHub repository", description: "Source code, releases and issue tracker.", href: "https://github.com/MacRimi/ProxMenux", Icon: Github, accent: "gray", }, { label: "Documentation", description: "Full user guide for ProxMenux and the Monitor.", href: "https://proxmenux.com", Icon: BookOpen, accent: "blue", }, { label: "Discussions", description: "Ask questions, share custom AI prompts, swap ideas.", href: "https://github.com/MacRimi/ProxMenux/discussions", Icon: MessageSquare, accent: "purple", }, { label: "Report a bug or request a feature", description: "Open an issue on GitHub — bugs, ideas, regressions.", href: "https://github.com/MacRimi/ProxMenux/issues", Icon: Bug, accent: "red", }, ] const SUPPORT_LINKS: LinkRow[] = [ { label: "Support the project on Ko-fi", description: "ProxMenux is free and open source. Donations cover hosting and dev time.", href: "https://ko-fi.com/macrimi", Icon: Heart, accent: "pink", }, ] function LinkCard({ row }: { row: LinkRow }) { const accentClass = ACCENT_CLASSES[row.accent ?? "blue"] // Style mirrors the PCI Devices cards in the Hardware tab: subtle // translucent background by default, slightly lighter on hover, no // accent-coloured borders or text colour changes — keeps the look // consistent with the rest of the project. return (
{row.label}

{row.description}

) } export function About() { return (
{/* Hero — logo, name, version, one-line description. */}
ProxMenux logo

ProxMenux Monitor

A web dashboard and management layer for Proxmox VE — health monitoring, notifications, terminal, optimization tracker and more, packaged as a single AppImage.

v{APP_VERSION} {/* Changelog goes to the web — the in-app modal version duplicated content and lacked a close affordance on some viewports, forcing a page refresh. The web changelog is canonical and auto-syncs with releases. */} Changelog
{/* Project links — GitHub, docs, discussions, bug tracker. */} Project Repository, documentation and community channels.
{PROJECT_LINKS.map(row => ( ))}
{/* Support + License combined — donation link and licensing info in one card. The previous layout had a separate "Author" block that has been removed by request. */} Support & License ProxMenux is free and open source under the GPL-3.0 license. If it's useful to you, a one-off contribution helps keep it that way.
{SUPPORT_LINKS.map(row => ( ))}
GPL-3.0 license

Free software — see the LICENSE file for the full text.

) }