Fix theme toggle (add light theme CSS) and improve mobile sidebar usability
This commit is contained in:
@@ -1,8 +1,9 @@
|
|||||||
/* ==========================================================================
|
/* ==========================================================================
|
||||||
ServerManager - Dark Theme Dashboard Stylesheet
|
ServerManager - Theme Variables
|
||||||
========================================================================== */
|
========================================================================== */
|
||||||
|
|
||||||
:root {
|
:root,
|
||||||
|
[data-theme="dark"] {
|
||||||
--bg-primary: #0f1117;
|
--bg-primary: #0f1117;
|
||||||
--bg-secondary: #161822;
|
--bg-secondary: #161822;
|
||||||
--bg-tertiary: #1c1f2e;
|
--bg-tertiary: #1c1f2e;
|
||||||
@@ -50,6 +51,41 @@
|
|||||||
--transition: 0.2s ease;
|
--transition: 0.2s ease;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[data-theme="light"] {
|
||||||
|
--bg-primary: #f8f9fc;
|
||||||
|
--bg-secondary: #ffffff;
|
||||||
|
--bg-tertiary: #f0f1f5;
|
||||||
|
--bg-card: #ffffff;
|
||||||
|
--bg-hover: #eef0f4;
|
||||||
|
--bg-input: #ffffff;
|
||||||
|
|
||||||
|
--border-color: #d1d5db;
|
||||||
|
--border-light: #e5e7eb;
|
||||||
|
|
||||||
|
--text-primary: #111827;
|
||||||
|
--text-secondary: #4b5563;
|
||||||
|
--text-muted: #9ca3af;
|
||||||
|
|
||||||
|
--accent: #4f46e5;
|
||||||
|
--accent-hover: #6366f1;
|
||||||
|
--accent-light: rgba(79, 70, 229, 0.08);
|
||||||
|
|
||||||
|
--success: #16a34a;
|
||||||
|
--success-bg: rgba(22, 163, 74, 0.08);
|
||||||
|
--warning: #d97706;
|
||||||
|
--warning-bg: rgba(217, 119, 6, 0.08);
|
||||||
|
--danger: #dc2626;
|
||||||
|
--danger-bg: rgba(220, 38, 38, 0.08);
|
||||||
|
--info: #2563eb;
|
||||||
|
--info-bg: rgba(37, 99, 235, 0.08);
|
||||||
|
--purple: #7c3aed;
|
||||||
|
--purple-bg: rgba(124, 58, 237, 0.08);
|
||||||
|
|
||||||
|
--shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.06);
|
||||||
|
--shadow: 0 4px 6px rgba(0, 0, 0, 0.07);
|
||||||
|
--shadow-lg: 0 10px 25px rgba(0, 0, 0, 0.1);
|
||||||
|
}
|
||||||
|
|
||||||
*, *::before, *::after {
|
*, *::before, *::after {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
@@ -345,9 +381,21 @@ code, pre {
|
|||||||
background: none;
|
background: none;
|
||||||
border: none;
|
border: none;
|
||||||
color: var(--text-secondary);
|
color: var(--text-secondary);
|
||||||
font-size: 1.2rem;
|
font-size: 1.3rem;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
padding: 0.25rem;
|
padding: 0.6rem;
|
||||||
|
margin: -0.3rem;
|
||||||
|
border-radius: var(--radius-sm);
|
||||||
|
transition: color var(--transition);
|
||||||
|
}
|
||||||
|
|
||||||
|
.mobile-toggle:hover {
|
||||||
|
color: var(--text-primary);
|
||||||
|
background: var(--bg-hover);
|
||||||
|
}
|
||||||
|
|
||||||
|
.mobile-overlay {
|
||||||
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
.breadcrumb {
|
.breadcrumb {
|
||||||
@@ -2270,10 +2318,40 @@ textarea.form-input {
|
|||||||
@media (max-width: 768px) {
|
@media (max-width: 768px) {
|
||||||
.sidebar {
|
.sidebar {
|
||||||
transform: translateX(-100%);
|
transform: translateX(-100%);
|
||||||
|
width: 280px;
|
||||||
|
box-shadow: none;
|
||||||
|
overflow-y: auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
.sidebar.mobile-open {
|
.sidebar.mobile-open {
|
||||||
transform: translateX(0);
|
transform: translateX(0);
|
||||||
|
box-shadow: 4px 0 20px rgba(0,0,0,0.4);
|
||||||
|
}
|
||||||
|
|
||||||
|
.sidebar.mobile-open.collapsed {
|
||||||
|
width: 280px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sidebar.mobile-open.collapsed .logo-text,
|
||||||
|
.sidebar.mobile-open.collapsed .nav-link span,
|
||||||
|
.sidebar.mobile-open.collapsed .nav-section,
|
||||||
|
.sidebar.mobile-open.collapsed .user-details,
|
||||||
|
.sidebar.mobile-open.collapsed .user-menu,
|
||||||
|
.sidebar.mobile-open.collapsed .nav-divider {
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sidebar.mobile-open.collapsed .sidebar-logo {
|
||||||
|
justify-content: flex-start;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sidebar.mobile-open.collapsed .nav-link {
|
||||||
|
justify-content: flex-start;
|
||||||
|
padding: 0.65rem 1.25rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sidebar.mobile-open.collapsed .user-info {
|
||||||
|
justify-content: flex-start;
|
||||||
}
|
}
|
||||||
|
|
||||||
.main-content {
|
.main-content {
|
||||||
@@ -2284,6 +2362,18 @@ textarea.form-input {
|
|||||||
display: block;
|
display: block;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.mobile-overlay {
|
||||||
|
display: none;
|
||||||
|
position: fixed;
|
||||||
|
inset: 0;
|
||||||
|
background: rgba(0,0,0,0.5);
|
||||||
|
z-index: 99;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mobile-overlay.active {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
.content-area {
|
.content-area {
|
||||||
padding: 1rem;
|
padding: 1rem;
|
||||||
}
|
}
|
||||||
@@ -2315,6 +2405,10 @@ textarea.form-input {
|
|||||||
.terminal-prompt {
|
.terminal-prompt {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.nav-submenu {
|
||||||
|
background: rgba(0,0,0,0.1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@media (max-width: 480px) {
|
@media (max-width: 480px) {
|
||||||
|
|||||||
@@ -13,32 +13,55 @@
|
|||||||
const sidebar = document.getElementById('sidebar');
|
const sidebar = document.getElementById('sidebar');
|
||||||
const sidebarToggle = document.getElementById('sidebarToggle');
|
const sidebarToggle = document.getElementById('sidebarToggle');
|
||||||
const mobileToggle = document.getElementById('mobileToggle');
|
const mobileToggle = document.getElementById('mobileToggle');
|
||||||
|
const mobileOverlay = document.getElementById('mobileOverlay');
|
||||||
|
|
||||||
if (sidebarToggle) {
|
function closeMobileSidebar() {
|
||||||
|
if (!sidebar) return;
|
||||||
|
sidebar.classList.remove('mobile-open');
|
||||||
|
if (mobileOverlay) mobileOverlay.classList.remove('active');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (sidebarToggle && sidebar) {
|
||||||
sidebarToggle.addEventListener('click', function () {
|
sidebarToggle.addEventListener('click', function () {
|
||||||
const isCollapsed = sidebar.classList.toggle('collapsed');
|
const isCollapsed = sidebar.classList.toggle('collapsed');
|
||||||
localStorage.setItem('sidebar_collapsed', isCollapsed ? '1' : '0');
|
try { localStorage.setItem('sidebar_collapsed', isCollapsed ? '1' : '0'); } catch (e) {}
|
||||||
});
|
});
|
||||||
|
|
||||||
if (localStorage.getItem('sidebar_collapsed') === '1') {
|
try {
|
||||||
sidebar.classList.add('collapsed');
|
if (window.innerWidth > 768 && localStorage.getItem('sidebar_collapsed') === '1') {
|
||||||
}
|
sidebar.classList.add('collapsed');
|
||||||
|
}
|
||||||
|
} catch (e) {}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mobileToggle) {
|
if (mobileToggle && sidebar) {
|
||||||
mobileToggle.addEventListener('click', function () {
|
mobileToggle.addEventListener('click', function () {
|
||||||
sidebar.classList.toggle('mobile-open');
|
const opening = !sidebar.classList.contains('mobile-open');
|
||||||
|
if (opening) {
|
||||||
|
sidebar.classList.remove('collapsed');
|
||||||
|
sidebar.classList.add('mobile-open');
|
||||||
|
if (mobileOverlay) mobileOverlay.classList.add('active');
|
||||||
|
} else {
|
||||||
|
closeMobileSidebar();
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
document.addEventListener('click', function (e) {
|
if (sidebar) {
|
||||||
if (window.innerWidth <= 768 &&
|
document.addEventListener('click', function (e) {
|
||||||
sidebar.classList.contains('mobile-open') &&
|
if (window.innerWidth <= 768 &&
|
||||||
!sidebar.contains(e.target) &&
|
sidebar.classList.contains('mobile-open') &&
|
||||||
e.target !== mobileToggle) {
|
!sidebar.contains(e.target) &&
|
||||||
sidebar.classList.remove('mobile-open');
|
e.target !== mobileToggle &&
|
||||||
}
|
e.target !== mobileOverlay) {
|
||||||
});
|
closeMobileSidebar();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
if (mobileOverlay) {
|
||||||
|
mobileOverlay.addEventListener('click', closeMobileSidebar);
|
||||||
|
}
|
||||||
|
|
||||||
/* ==========================================================================
|
/* ==========================================================================
|
||||||
Theme Toggle
|
Theme Toggle
|
||||||
|
|||||||
@@ -95,6 +95,8 @@
|
|||||||
</div>
|
</div>
|
||||||
</aside>
|
</aside>
|
||||||
|
|
||||||
|
<div class="mobile-overlay" id="mobileOverlay"></div>
|
||||||
|
|
||||||
<main class="main-content">
|
<main class="main-content">
|
||||||
<header class="top-bar">
|
<header class="top-bar">
|
||||||
<div class="top-bar-left">
|
<div class="top-bar-left">
|
||||||
|
|||||||
Reference in New Issue
Block a user