38751-vm/views/admin/header.php
Flatlogic Bot 24820a45de Ajaxdll
2026-02-25 19:25:22 +00:00

253 lines
11 KiB
PHP

<?php $currentTheme = \App\Services\ThemeService::getCurrent(); ?>
<!DOCTYPE html>
<html lang="<?php echo \App\Services\LanguageService::getLang(); ?>" data-theme="<?php echo $currentTheme; ?>">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title><?php echo __('admin_dashboard'); ?> - <?php echo htmlspecialchars(get_setting('site_name', 'APK ADMIN')); ?></title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css">
<link rel="icon" type="image/x-icon" href="/<?php echo get_setting('site_favicon'); ?>">
<script>
// Early theme initialization
(function() {
const savedTheme = localStorage.getItem('theme');
if (savedTheme) {
document.documentElement.setAttribute('data-theme', savedTheme);
}
})();
</script>
<style>
:root {
--primary-color: #4e73df;
--success-color: #1cc88a;
--bg-color: #f8f9fc;
--card-bg: #ffffff;
--text-color: #5a5c69;
--navbar-bg: #ffffff;
--border-color: #e3e6f0;
--subtle-bg: #eaecf4;
--accent-color: #4e73df;
}
[data-theme="dark"] {
--bg-color: #0f172a;
--card-bg: #1e293b;
--text-color: #f1f5f9;
--navbar-bg: #1e293b;
--border-color: rgba(255, 255, 255, 0.1);
--subtle-bg: #0f172a;
--accent-color: #60a5fa;
}
body {
background-color: var(--bg-color);
color: var(--text-color);
font-family: 'Inter', sans-serif;
transition: background-color 0.3s, color 0.3s;
}
.navbar-admin {
background-color: var(--navbar-bg);
box-shadow: 0 .15rem 1.75rem 0 rgba(58,59,69,.15);
border-bottom: 1px solid var(--border-color);
}
.nav-link {
color: var(--primary-color);
padding: 0.5rem 1rem;
border-radius: 0.35rem;
transition: all 0.2s;
font-weight: 600;
}
[data-theme="dark"] .nav-link {
color: #858796;
}
.nav-link:hover {
background-color: rgba(78, 115, 223, 0.1);
color: #224abe;
}
.nav-link.active {
background-color: var(--primary-color);
color: #fff !important;
}
.card {
background-color: var(--card-bg);
border-color: var(--border-color);
color: var(--text-color);
}
.theme-toggle-btn {
cursor: pointer;
padding: 8px;
border-radius: 50%;
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
width: 38px;
height: 38px;
display: flex;
align-items: center;
justify-content: center;
border: 1px solid var(--border-color);
background: var(--subtle-bg);
color: var(--text-color);
}
.theme-toggle-btn:hover {
background-color: var(--border-color);
transform: rotate(15deg) scale(1.05);
}
[data-theme="dark"] .theme-toggle-btn {
box-shadow: 0 0 10px rgba(245, 158, 11, 0.2);
border-color: rgba(245, 158, 11, 0.3);
color: #F59E0B;
}
[data-theme="dark"] .bg-white {
background-color: var(--card-bg) !important;
}
[data-theme="dark"] .text-muted {
color: #94a3b8 !important;
}
[data-theme="dark"] .form-control {
background-color: #0f172a;
border-color: rgba(255, 255, 255, 0.1);
color: #f1f5f9;
}
[data-theme="dark"] .navbar-toggler-icon {
filter: invert(1);
}
.lang-selector-btn {
background: var(--subtle-bg);
border: 1px solid var(--border-color);
border-radius: 8px;
padding: 0.4rem 0.8rem;
font-size: 0.85rem;
font-weight: 600;
color: var(--text-color);
display: flex;
align-items: center;
gap: 6px;
transition: all 0.2s ease;
}
.lang-selector-btn:hover {
background-color: var(--border-color);
}
@media (max-width: 991.98px) {
.navbar-collapse {
background-color: var(--card-bg);
margin-top: 1rem;
padding: 1rem;
border-radius: 0.75rem;
border: 1px solid var(--border-color);
box-shadow: 0 0.5rem 1rem rgba(0,0,0,0.1);
}
.admin-controls-row {
display: flex;
flex-direction: column;
align-items: stretch;
gap: 1rem;
padding-top: 1rem;
margin-top: 1rem;
border-top: 1px solid var(--border-color);
}
.admin-controls-row > div,
.admin-controls-row > button {
width: 100%;
justify-content: space-between !important;
}
.mobile-theme-row {
display: flex;
align-items: center;
justify-content: space-between;
background: var(--subtle-bg);
padding: 0.5rem 1rem;
border-radius: 8px;
}
}
</style>
</head>
<body>
<nav class="navbar navbar-expand-lg navbar-admin sticky-top py-3">
<div class="container-fluid px-4">
<a class="navbar-brand fw-bold text-primary d-flex align-items-center" href="/admin/dashboard">
<?php if (get_setting('site_icon')): ?>
<img src="/<?php echo get_setting('site_icon'); ?>" alt="Logo" class="me-2" style="height: 30px;">
<?php else: ?>
<i class="fas fa-shield-halved me-2"></i>
<?php endif; ?>
<?php echo htmlspecialchars(get_setting('site_name', 'APK ADMIN')); ?>
</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarNav">
<ul class="navbar-nav me-auto">
<li class="nav-item">
<a class="nav-link px-3 mb-1" href="/admin/dashboard"><i class="fas fa-tachometer-alt me-1"></i> Dashboard</a>
</li>
<li class="nav-item">
<a class="nav-link px-3 mb-1" href="/admin/users"><i class="fas fa-users me-1"></i> Members</a>
</li>
<li class="nav-item">
<a class="nav-link px-3 mb-1" href="/admin/apks"><i class="fas fa-mobile-alt me-1"></i> APKs</a>
</li>
<li class="nav-item">
<a class="nav-link px-3 mb-1" href="/admin/apks/mass-upload"><i class="fas fa-cloud-upload-alt me-1"></i> Mass Upload</a>
</li>
<li class="nav-item">
<a class="nav-link px-3 mb-1" href="/admin/categories"><i class="fas fa-list me-1"></i> <?php echo __('categories'); ?></a>
</li>
<li class="nav-item">
<a class="nav-link px-3 mb-1" href="/admin/withdrawals"><i class="fas fa-wallet me-1"></i> <?php echo __('manage_withdrawals'); ?></a>
</li>
<li class="nav-item">
<a class="nav-link px-3 mb-1" href="/admin/settings"><i class="fas fa-cog me-1"></i> <?php echo __('settings'); ?></a>
</li>
</ul>
<div class="d-lg-flex align-items-center ms-auto admin-controls-row">
<!-- Theme & Lang Row (Desktop) / Column (Mobile) -->
<div class="d-none d-lg-flex align-items-center">
<button id="theme-toggle" class="theme-toggle-btn me-3" aria-label="Toggle theme">
<i class="fa-solid <?php echo $currentTheme === 'dark' ? 'fa-sun' : 'fa-moon'; ?>"></i>
</button>
<div class="dropdown me-3">
<button class="lang-selector-btn dropdown-toggle" type="button" data-bs-toggle="dropdown">
<i class="fas fa-globe"></i> <?php echo \App\Services\LanguageService::getLang() == 'id' ? 'ID' : 'EN'; ?>
</button>
<ul class="dropdown-menu dropdown-menu-end shadow border-0">
<li><a class="dropdown-item" href="/lang/id">🇮🇩 Indonesia</a></li>
<li><a class="dropdown-item" href="/lang/en">🇺🇸 English</a></li>
</ul>
</div>
</div>
<!-- Mobile Specific Controls -->
<div class="d-lg-none">
<div class="mobile-theme-row mb-2">
<span class="theme-status-text small fw-bold"><?php echo $currentTheme === 'dark' ? 'Dark Mode' : 'Light Mode'; ?></span>
<button id="theme-toggle-mobile" class="theme-toggle-btn" aria-label="Toggle theme">
<i class="fa-solid <?php echo $currentTheme === 'dark' ? 'fa-sun' : 'fa-moon'; ?>"></i>
</button>
</div>
<div class="dropdown mb-3">
<button class="lang-selector-btn w-100 justify-content-between dropdown-toggle" type="button" data-bs-toggle="dropdown">
<span><i class="fas fa-globe me-2"></i>Language</span>
<span><?php echo \App\Services\LanguageService::getLang() == 'id' ? 'ID' : 'EN'; ?></span>
</button>
<ul class="dropdown-menu shadow border-0 w-100">
<li><a class="dropdown-item" href="/lang/id">🇮🇩 Indonesia</a></li>
<li><a class="dropdown-item" href="/lang/en">🇺🇸 English</a></li>
</ul>
</div>
</div>
<div class="d-flex align-items-center justify-content-between">
<div class="d-flex align-items-center">
<span class="text-muted me-3"><b><?php echo $_SESSION['username'] ?? 'Admin'; ?></b></span>
<a href="/" class="btn btn-outline-secondary btn-sm me-2" target="_blank" title="View Site"><i class="fas fa-external-link-alt"></i></a>
</div>
<a href="/admin/logout" class="btn btn-danger btn-sm px-3"><i class="fas fa-sign-out-alt me-1"></i> Logout</a>
</div>
</div>
</div>
</div>
</nav>