mirror of
https://github.com/MacRimi/ProxMenux.git
synced 2026-06-14 20:36:59 +00:00
Update 1.2.2.1
This commit is contained in:
Binary file not shown.
@@ -1 +1 @@
|
|||||||
a5bbf0450fe0184f5abdd38df848a5d0a7af7ce2d42f56b41f3e80d2862f7d29 ProxMenux-1.2.2.1-beta.AppImage
|
ee588e46f8898925d60d56a79f5364083be4eedccc2274fd0caeb220f795ade6 ProxMenux-1.2.2.1-beta.AppImage
|
||||||
|
|||||||
@@ -319,7 +319,7 @@ export function NetworkMetrics() {
|
|||||||
return (
|
return (
|
||||||
<div className="space-y-6">
|
<div className="space-y-6">
|
||||||
{/* Network Overview Cards */}
|
{/* Network Overview Cards */}
|
||||||
<div className="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-3 lg:gap-6">
|
<div className="grid grid-cols-1 sm:grid-cols-2 xl:grid-cols-4 gap-3 xl:gap-6">
|
||||||
{/* ── Network Traffic (preview restyle: Down/Up dual headline + stacked bar) ── */}
|
{/* ── Network Traffic (preview restyle: Down/Up dual headline + stacked bar) ── */}
|
||||||
{(() => {
|
{(() => {
|
||||||
const downBytes = networkData.traffic.bytes_recv || 0
|
const downBytes = networkData.traffic.bytes_recv || 0
|
||||||
|
|||||||
@@ -135,7 +135,14 @@ export function ProcessDetailModal({ open, onOpenChange, sort }: ProcessDetailMo
|
|||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<Dialog open={open} onOpenChange={onOpenChange}>
|
<Dialog open={open} onOpenChange={onOpenChange}>
|
||||||
<DialogContent className="max-w-3xl">
|
<DialogContent
|
||||||
|
className="max-w-3xl"
|
||||||
|
/* Prevent Radix from focusing the search Input on open — the
|
||||||
|
auto-focus pops the on-screen keyboard on touch devices and
|
||||||
|
covers half the modal. The user can still tap the field to
|
||||||
|
start filtering. */
|
||||||
|
onOpenAutoFocus={(e) => e.preventDefault()}
|
||||||
|
>
|
||||||
<DialogHeader>
|
<DialogHeader>
|
||||||
<DialogTitle className="flex items-center gap-2">
|
<DialogTitle className="flex items-center gap-2">
|
||||||
<Icon className={`h-5 w-5 ${accent.text}`} />
|
<Icon className={`h-5 w-5 ${accent.text}`} />
|
||||||
|
|||||||
@@ -108,7 +108,7 @@ export function StorageMetrics() {
|
|||||||
return (
|
return (
|
||||||
<div className="space-y-6">
|
<div className="space-y-6">
|
||||||
{/* Storage Overview Cards */}
|
{/* Storage Overview Cards */}
|
||||||
<div className="grid grid-cols-2 lg:grid-cols-4 gap-3 lg:gap-6">
|
<div className="grid grid-cols-2 xl:grid-cols-4 gap-3 xl:gap-6">
|
||||||
<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 className="flex flex-row items-center justify-between space-y-0 pb-2">
|
||||||
<CardTitle className="text-sm font-medium text-muted-foreground">Total Storage</CardTitle>
|
<CardTitle className="text-sm font-medium text-muted-foreground">Total Storage</CardTitle>
|
||||||
|
|||||||
@@ -690,7 +690,7 @@ export function StorageOverview() {
|
|||||||
return (
|
return (
|
||||||
<div className="space-y-6">
|
<div className="space-y-6">
|
||||||
{/* Storage Summary */}
|
{/* Storage Summary */}
|
||||||
<div className="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-3 lg:gap-6">
|
<div className="grid grid-cols-1 sm:grid-cols-2 xl:grid-cols-4 gap-3 xl:gap-6">
|
||||||
{/* ── Total Storage (preview restyle: headline + stacked bar Local·Remote·Free) ── */}
|
{/* ── Total Storage (preview restyle: headline + stacked bar Local·Remote·Free) ── */}
|
||||||
{(() => {
|
{(() => {
|
||||||
const totalGB = (totalLocalCapacity || 0) + (totalRemoteCapacity || 0)
|
const totalGB = (totalLocalCapacity || 0) + (totalRemoteCapacity || 0)
|
||||||
|
|||||||
@@ -591,7 +591,7 @@ export function SystemLogs() {
|
|||||||
)}
|
)}
|
||||||
|
|
||||||
{/* Statistics Cards */}
|
{/* Statistics Cards */}
|
||||||
<div className="grid grid-cols-2 lg:grid-cols-4 gap-4 lg:gap-6">
|
<div className="grid grid-cols-2 xl:grid-cols-4 gap-4 xl:gap-6">
|
||||||
<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 className="flex flex-row items-center justify-between space-y-0 pb-2">
|
||||||
<CardTitle className="text-sm font-medium text-muted-foreground">Total Entries</CardTitle>
|
<CardTitle className="text-sm font-medium text-muted-foreground">Total Entries</CardTitle>
|
||||||
|
|||||||
@@ -401,7 +401,7 @@ export function SystemOverview() {
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="space-y-6">
|
<div className="space-y-6">
|
||||||
<div className="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-3 lg:gap-6">
|
<div className="grid grid-cols-1 sm:grid-cols-2 xl:grid-cols-4 gap-3 xl:gap-6">
|
||||||
{/* ── CPU Usage (preview restyle v2: tamaño igual a System Info, bars más anchas) ── */}
|
{/* ── CPU Usage (preview restyle v2: tamaño igual a System Info, bars más anchas) ── */}
|
||||||
<Card
|
<Card
|
||||||
className="bg-card border-border cursor-pointer hover:bg-white/5 transition-colors"
|
className="bg-card border-border cursor-pointer hover:bg-white/5 transition-colors"
|
||||||
|
|||||||
@@ -1301,7 +1301,7 @@ const handleDownloadLogs = async (vmid: number, vmName: string) => {
|
|||||||
}
|
}
|
||||||
`}</style>
|
`}</style>
|
||||||
|
|
||||||
<div className="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-6">
|
<div className="grid grid-cols-1 sm:grid-cols-2 xl:grid-cols-4 gap-6">
|
||||||
{/* ── Total VMs & LXCs (preview restyle: B-headline + pills, matching Overview) ── */}
|
{/* ── Total VMs & LXCs (preview restyle: B-headline + pills, matching Overview) ── */}
|
||||||
{(() => {
|
{(() => {
|
||||||
const running = safeVMData.filter((vm) => vm.status === "running").length
|
const running = safeVMData.filter((vm) => vm.status === "running").length
|
||||||
|
|||||||
Reference in New Issue
Block a user