From 17aaf6d603fcd1cf6488971e8d9165556b2409c3 Mon Sep 17 00:00:00 2001 From: rcourtman Date: Sat, 13 Dec 2025 13:41:43 +0000 Subject: [PATCH] Enhance settings panels with improved UI/UX General Settings: - Add animated sun/moon icon to dark mode toggle with gradient backgrounds - Dynamic label showing current theme state (Light mode/Dark mode) - Smooth CSS transitions for icon rotation and scaling Updates Settings: - Redesign version display with visual card layout - Add build type badges (Development, Docker, Source) as colorful pills - Show 3-column layout with arrow indicator when updates available - Move Check Now button to footer with refresh icon - Display auto-check status indicator Security Overview: - Add loading skeleton during data fetch - Enhance proxy auth notice with gradient header and admin badge - Style logout/guide links as proper buttons - Add Security Best Practices tips card with recommendations --- .../Settings/GeneralSettingsPanel.tsx | 52 +++-- .../Settings/SecurityOverviewPanel.tsx | 134 +++++++++---- .../Settings/UpdatesSettingsPanel.tsx | 183 +++++++++++++----- 3 files changed, 271 insertions(+), 98 deletions(-) diff --git a/frontend-modern/src/components/Settings/GeneralSettingsPanel.tsx b/frontend-modern/src/components/Settings/GeneralSettingsPanel.tsx index 26fbefc..73d20ba 100644 --- a/frontend-modern/src/components/Settings/GeneralSettingsPanel.tsx +++ b/frontend-modern/src/components/Settings/GeneralSettingsPanel.tsx @@ -4,6 +4,8 @@ import { SectionHeader } from '@/components/shared/SectionHeader'; import { Toggle } from '@/components/shared/Toggle'; import Sliders from 'lucide-solid/icons/sliders-horizontal'; import Activity from 'lucide-solid/icons/activity'; +import Sun from 'lucide-solid/icons/sun'; +import Moon from 'lucide-solid/icons/moon'; const PVE_POLLING_MIN_SECONDS = 10; const PVE_POLLING_MAX_SECONDS = 3600; @@ -50,12 +52,28 @@ export const GeneralSettingsPanel: Component = (props
-
-
-

Dark mode

-

- Toggle to match your environment. Pulse remembers this preference on each browser. -

+
+
+ {/* Animated theme icon */} +
+
+ + +
+
+
+

+ {props.darkMode() ? 'Dark mode' : 'Light mode'} +

+

+ Toggle to match your environment. Pulse remembers this preference on each browser. +

+
= (props Current cadence: {props.pvePollingInterval()} seconds ( {props.pvePollingInterval() >= 60 ? `${(props.pvePollingInterval() / 60).toFixed( - props.pvePollingInterval() % 60 === 0 ? 0 : 1 - )} minute${props.pvePollingInterval() / 60 === 1 ? '' : 's'}` + props.pvePollingInterval() % 60 === 0 ? 0 : 1 + )} minute${props.pvePollingInterval() / 60 === 1 ? '' : 's'}` : 'under a minute'} ).

@@ -113,11 +131,10 @@ export const GeneralSettingsPanel: Component = (props {(option) => ( + }`} + > + {props.checkingForUpdates() ? ( + <> +
+ Checking... + + ) : ( + <> + + Check Now + + )} + +
{/* Docker installation notice */} @@ -114,23 +209,17 @@ export const UpdatesSettingsPanel: Component = (props {/* Update available */} -
-
-

- Update Available: {props.updateInfo()?.latestVersion} -

-

- Released:{' '} - {props.updateInfo()?.releaseDate - ? new Date(props.updateInfo()!.releaseDate).toLocaleDateString() - : 'Unknown'} -

+
+
+ + + +

+ How to install the update +

-
-

- How to update: -

+

Type{' '}