tree-moved / index.html
SimpleCodeTM's picture
Add 2 files
e1620b2 verified
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Админпанель | Интернет-магазин</title>
<script src="https://cdn.tailwindcss.com"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
<style>
.sidebar {
transition: all 0.3s ease;
z-index: 50;
}
.sidebar.collapsed {
width: 70px;
}
.sidebar.collapsed .nav-text {
display: none;
}
.sidebar.collapsed .logo-text {
display: none;
}
.main-content {
transition: all 0.3s ease;
}
.sidebar.collapsed + .main-content {
margin-left: 70px;
}
.chart-container {
height: 300px;
}
.order-status-badge {
font-size: 12px;
padding: 3px 8px;
border-radius: 12px;
}
.product-image-thumb {
width: 60px;
height: 60px;
object-fit: cover;
border-radius: 4px;
}
.mobile-menu-button {
display: none;
}
@media (max-width: 1024px) {
.sidebar {
transform: translateX(-100%);
position: fixed;
height: 100vh;
}
.sidebar.active {
transform: translateX(0);
}
.main-content {
margin-left: 0 !important;
}
.mobile-menu-button {
display: block;
}
.stats-grid {
grid-template-columns: repeat(2, 1fr) !important;
}
}
@media (max-width: 640px) {
.stats-grid {
grid-template-columns: 1fr !important;
}
.charts-grid {
grid-template-columns: 1fr !important;
}
.order-table th, .order-table td {
padding: 0.5rem !important;
font-size: 0.875rem;
}
.header-title {
font-size: 1.25rem !important;
}
}
</style>
</head>
<body class="bg-gray-100 font-sans">
<div class="flex h-screen overflow-hidden">
<!-- Боковая панель -->
<div class="sidebar bg-indigo-800 text-white w-64 flex flex-col fixed h-full">
<div class="p-4 flex items-center justify-between border-b border-indigo-700">
<div class="flex items-center">
<i class="fas fa-store text-2xl mr-3"></i>
<span class="logo-text text-xl font-bold">Магазин PRO</span>
</div>
<button id="toggleSidebar" class="text-white focus:outline-none">
<i class="fas fa-bars"></i>
</button>
</div>
<div class="p-4 border-b border-indigo-700 flex items-center">
<div class="w-10 h-10 rounded-full bg-indigo-600 flex items-center justify-center mr-3">
<i class="fas fa-user"></i>
</div>
<div class="nav-text">
<div class="font-medium">Администратор</div>
<div class="text-xs text-indigo-300">admin@example.com</div>
</div>
</div>
<nav class="flex-1 overflow-y-auto">
<div class="p-2">
<div class="text-indigo-300 uppercase text-xs font-bold px-4 py-2 nav-text">Главное</div>
<a href="#" class="flex items-center px-4 py-3 text-white bg-indigo-900 rounded-lg mx-2">
<i class="fas fa-tachometer-alt mr-3"></i>
<span class="nav-text">Панель управления</span>
</a>
<a href="#" class="flex items-center px-4 py-3 text-indigo-200 hover:bg-indigo-700 rounded-lg mx-2 mt-1">
<i class="fas fa-shopping-cart mr-3"></i>
<span class="nav-text">Заказы</span>
<span class="ml-auto bg-red-500 text-white text-xs px-2 py-1 rounded-full">15</span>
</a>
<a href="#" class="flex items-center px-4 py-3 text-indigo-200 hover:bg-indigo-700 rounded-lg mx-2 mt-1">
<i class="fas fa-box-open mr-3"></i>
<span class="nav-text">Товары</span>
</a>
<a href="#" class="flex items-center px-4 py-3 text-indigo-200 hover:bg-indigo-700 rounded-lg mx-2 mt-1">
<i class="fas fa-users mr-3"></i>
<span class="nav-text">Клиенты</span>
</a>
<a href="#" class="flex items-center px-4 py-3 text-indigo-200 hover:bg-indigo-700 rounded-lg mx-2 mt-1">
<i class="fas fa-tags mr-3"></i>
<span class="nav-text">Категории</span>
</a>
</div>
<div class="p-2 mt-4">
<div class="text-indigo-300 uppercase text-xs font-bold px-4 py-2 nav-text">Дополнительно</div>
<a href="#" class="flex items-center px-4 py-3 text-indigo-200 hover:bg-indigo-700 rounded-lg mx-2 mt-1">
<i class="fas fa-chart-line mr-3"></i>
<span class="nav-text">Аналитика</span>
</a>
<a href="#" class="flex items-center px-4 py-3 text-indigo-200 hover:bg-indigo-700 rounded-lg mx-2 mt-1">
<i class="fas fa-comment-alt mr-3"></i>
<span class="nav-text">Отзывы</span>
<span class="ml-auto bg-yellow-500 text-white text-xs px-2 py-1 rounded-full">3</span>
</a>
<a href="#" class="flex items-center px-4 py-3 text-indigo-200 hover:bg-indigo-700 rounded-lg mx-2 mt-1">
<i class="fas fa-cog mr-3"></i>
<span class="nav-text">Настройки</span>
</a>
</div>
</nav>
<div class="p-4 border-t border-indigo-700">
<a href="#" class="flex items-center px-4 py-2 text-indigo-200 hover:bg-indigo-700 rounded-lg">
<i class="fas fa-sign-out-alt mr-3"></i>
<span class="nav-text">Выйти</span>
</a>
</div>
</div>
<!-- Основное содержимое -->
<div class="main-content flex-1 overflow-auto ml-64">
<!-- Верхняя панель -->
<header class="bg-white shadow-sm py-4 px-6 flex items-center justify-between">
<div class="flex items-center">
<button id="mobileMenuButton" class="mobile-menu-button text-gray-500 mr-4 focus:outline-none">
<i class="fas fa-bars text-xl"></i>
</button>
<h1 class="header-title text-2xl font-bold text-gray-800">Панель управления</h1>
</div>
<div class="flex items-center space-x-4">
<div class="relative hidden sm:block">
<button class="text-gray-500 hover:text-gray-700 focus:outline-none">
<i class="fas fa-bell text-xl"></i>
<span class="absolute top-0 right-0 h-2 w-2 rounded-full bg-red-500"></span>
</button>
</div>
<div class="relative">
<button class="flex items-center focus:outline-none">
<div class="w-8 h-8 rounded-full bg-indigo-100 flex items-center justify-center">
<i class="fas fa-user text-indigo-600"></i>
</div>
<span class="ml-2 text-gray-700 hidden md:inline">Администратор</span>
<i class="fas fa-chevron-down ml-1 text-gray-500 text-xs hidden md:inline"></i>
</button>
</div>
</div>
</header>
<!-- Основное содержимое -->
<main class="p-4 sm:p-6">
<!-- Статистика -->
<div class="stats-grid grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-4 sm:gap-6 mb-6">
<div class="bg-white rounded-lg shadow p-4 sm:p-6">
<div class="flex items-center justify-between">
<div>
<p class="text-gray-500 text-sm sm:text-base">Общий доход</p>
<h3 class="text-xl sm:text-2xl font-bold">245,890 ₽</h3>
<p class="text-green-500 text-xs sm:text-sm mt-1">
<i class="fas fa-arrow-up mr-1"></i> 12% с прошлого месяца
</p>
</div>
<div class="bg-green-100 p-2 sm:p-3 rounded-full">
<i class="fas fa-wallet text-green-600 text-lg sm:text-xl"></i>
</div>
</div>
</div>
<div class="bg-white rounded-lg shadow p-4 sm:p-6">
<div class="flex items-center justify-between">
<div>
<p class="text-gray-500 text-sm sm:text-base">Новые заказы</p>
<h3 class="text-xl sm:text-2xl font-bold">124</h3>
<p class="text-red-500 text-xs sm:text-sm mt-1">
<i class="fas fa-arrow-down mr-1"></i> 3% с прошлого месяца
</p>
</div>
<div class="bg-blue-100 p-2 sm:p-3 rounded-full">
<i class="fas fa-shopping-cart text-blue-600 text-lg sm:text-xl"></i>
</div>
</div>
</div>
<div class="bg-white rounded-lg shadow p-4 sm:p-6">
<div class="flex items-center justify-between">
<div>
<p class="text-gray-500 text-sm sm:text-base">Посетители</p>
<h3 class="text-xl sm:text-2xl font-bold">8,549</h3>
<p class="text-green-500 text-xs sm:text-sm mt-1">
<i class="fas fa-arrow-up mr-1"></i> 22% с прошлого месяца
</p>
</div>
<div class="bg-purple-100 p-2 sm:p-3 rounded-full">
<i class="fas fa-users text-purple-600 text-lg sm:text-xl"></i>
</div>
</div>
</div>
<div class="bg-white rounded-lg shadow p-4 sm:p-6">
<div class="flex items-center justify-between">
<div>
<p class="text-gray-500 text-sm sm:text-base">Конверсия</p>
<h3 class="text-xl sm:text-2xl font-bold">3.42%</h3>
<p class="text-green-500 text-xs sm:text-sm mt-1">
<i class="fas fa-arrow-up mr-1"></i> 1.2% с прошлого месяца
</p>
</div>
<div class="bg-yellow-100 p-2 sm:p-3 rounded-full">
<i class="fas fa-chart-pie text-yellow-600 text-lg sm:text-xl"></i>
</div>
</div>
</div>
</div>
<!-- Графики и таблицы -->
<div class="charts-grid grid grid-cols-1 lg:grid-cols-3 gap-4 sm:gap-6 mb-6">
<div class="bg-white rounded-lg shadow p-4 sm:p-6 lg:col-span-2">
<div class="flex items-center justify-between mb-4">
<h2 class="text-lg font-semibold text-gray-800">Продажи за последние 30 дней</h2>
<select class="border border-gray-300 rounded-md px-2 py-1 text-xs sm:text-sm focus:outline-none focus:ring-2 focus:ring-indigo-500">
<option>30 дней</option>
<option>7 дней</option>
<option>90 дней</option>
</select>
</div>
<div class="chart-container">
<canvas id="salesChart"></canvas>
</div>
</div>
<div class="bg-white rounded-lg shadow p-4 sm:p-6">
<h2 class="text-lg font-semibold text-gray-800 mb-4">Топ товары</h2>
<div class="space-y-3 sm:space-y-4">
<div class="flex items-center">
<img src="https://via.placeholder.com/60" alt="Product" class="w-10 h-10 sm:w-12 sm:h-12 object-cover rounded mr-2 sm:mr-3">
<div class="flex-1 min-w-0">
<h4 class="text-sm sm:text-base font-medium truncate">Смартфон X Pro</h4>
<p class="text-gray-500 text-xs sm:text-sm">Продано: 245 шт.</p>
</div>
<div class="ml-2 font-bold text-indigo-600 text-sm sm:text-base">24%</div>
</div>
<div class="flex items-center">
<img src="https://via.placeholder.com/60" alt="Product" class="w-10 h-10 sm:w-12 sm:h-12 object-cover rounded mr-2 sm:mr-3">
<div class="flex-1 min-w-0">
<h4 class="text-sm sm:text-base font-medium truncate">Ноутбук Ultra</h4>
<p class="text-gray-500 text-xs sm:text-sm">Продано: 189 шт.</p>
</div>
<div class="ml-2 font-bold text-indigo-600 text-sm sm:text-base">18%</div>
</div>
<div class="flex items-center">
<img src="https://via.placeholder.com/60" alt="Product" class="w-10 h-10 sm:w-12 sm:h-12 object-cover rounded mr-2 sm:mr-3">
<div class="flex-1 min-w-0">
<h4 class="text-sm sm:text-base font-medium truncate">Наушники Pro</h4>
<p class="text-gray-500 text-xs sm:text-sm">Продано: 156 шт.</p>
</div>
<div class="ml-2 font-bold text-indigo-600 text-sm sm:text-base">15%</div>
</div>
<div class="flex items-center">
<img src="https://via.placeholder.com/60" alt="Product" class="w-10 h-10 sm:w-12 sm:h-12 object-cover rounded mr-2 sm:mr-3">
<div class="flex-1 min-w-0">
<h4 class="text-sm sm:text-base font-medium truncate">Часы Smart</h4>
<p class="text-gray-500 text-xs sm:text-sm">Продано: 132 шт.</p>
</div>
<div class="ml-2 font-bold text-indigo-600 text-sm sm:text-base">12%</div>
</div>
<div class="flex items-center">
<img src="https://via.placeholder.com/60" alt="Product" class="w-10 h-10 sm:w-12 sm:h-12 object-cover rounded mr-2 sm:mr-3">
<div class="flex-1 min-w-0">
<h4 class="text-sm sm:text-base font-medium truncate">Камера 4K</h4>
<p class="text-gray-500 text-xs sm:text-sm">Продано: 98 шт.</p>
</div>
<div class="ml-2 font-bold text-indigo-600 text-sm sm:text-base">9%</div>
</div>
</div>
</div>
</div>
<!-- Последние заказы -->
<div class="bg-white rounded-lg shadow overflow-hidden mb-6">
<div class="px-4 sm:px-6 py-3 sm:py-4 border-b border-gray-200 flex items-center justify-between">
<h2 class="text-lg font-semibold text-gray-800">Последние заказы</h2>
<button class="text-indigo-600 hover:text-indigo-800 text-sm font-medium">
Показать все
</button>
</div>
<div class="overflow-x-auto">
<table class="min-w-full divide-y divide-gray-200 order-table">
<thead class="bg-gray-50">
<tr>
<th class="px-3 sm:px-6 py-2 sm:py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">ID</th>
<th class="px-3 sm:px-6 py-2 sm:py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider hidden sm:table-cell">Клиент</th>
<th class="px-3 sm:px-6 py-2 sm:py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Дата</th>
<th class="px-3 sm:px-6 py-2 sm:py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Сумма</th>
<th class="px-3 sm:px-6 py-2 sm:py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Статус</th>
<th class="px-3 sm:px-6 py-2 sm:py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Действия</th>
</tr>
</thead>
<tbody class="bg-white divide-y divide-gray-200">
<tr>
<td class="px-3 sm:px-6 py-3 whitespace-nowrap text-sm font-medium text-gray-900">#78945</td>
<td class="px-3 sm:px-6 py-3 whitespace-nowrap text-sm text-gray-500 hidden sm:table-cell">Иван Петров</td>
<td class="px-3 sm:px-6 py-3 whitespace-nowrap text-sm text-gray-500">15.06</td>
<td class="px-3 sm:px-6 py-3 whitespace-nowrap text-sm text-gray-500">24,990 ₽</td>
<td class="px-3 sm:px-6 py-3 whitespace-nowrap">
<span class="order-status-badge bg-green-100 text-green-800">Доставлен</span>
</td>
<td class="px-3 sm:px-6 py-3 whitespace-nowrap text-sm text-gray-500">
<button class="text-indigo-600 hover:text-indigo-900 mr-2 sm:mr-3">
<i class="fas fa-eye"></i>
</button>
<button class="text-gray-600 hover:text-gray-900 hidden sm:inline-block">
<i class="fas fa-print"></i>
</button>
</td>
</tr>
<tr>
<td class="px-3 sm:px-6 py-3 whitespace-nowrap text-sm font-medium text-gray-900">#78944</td>
<td class="px-3 sm:px-6 py-3 whitespace-nowrap text-sm text-gray-500 hidden sm:table-cell">Елена Смирнова</td>
<td class="px-3 sm:px-6 py-3 whitespace-nowrap text-sm text-gray-500">15.06</td>
<td class="px-3 sm:px-6 py-3 whitespace-nowrap text-sm text-gray-500">15,490 ₽</td>
<td class="px-3 sm:px-6 py-3 whitespace-nowrap">
<span class="order-status-badge bg-yellow-100 text-yellow-800">В обработке</span>
</td>
<td class="px-3 sm:px-6 py-3 whitespace-nowrap text-sm text-gray-500">
<button class="text-indigo-600 hover:text-indigo-900 mr-2 sm:mr-3">
<i class="fas fa-eye"></i>
</button>
<button class="text-gray-600 hover:text-gray-900 hidden sm:inline-block">
<i class="fas fa-print"></i>
</button>
</td>
</tr>
<tr>
<td class="px-3 sm:px-6 py-3 whitespace-nowrap text-sm font-medium text-gray-900">#78943</td>
<td class="px-3 sm:px-6 py-3 whitespace-nowrap text-sm text-gray-500 hidden sm:table-cell">Алексей Иванов</td>
<td class="px-3 sm:px-6 py-3 whitespace-nowrap text-sm text-gray-500">14.06</td>
<td class="px-3 sm:px-6 py-3 whitespace-nowrap text-sm text-gray-500">32,990 ₽</td>
<td class="px-3 sm:px-6 py-3 whitespace-nowrap">
<span class="order-status-badge bg-blue-100 text-blue-800">Отправлен</span>
</td>
<td class="px-3 sm:px-6 py-3 whitespace-nowrap text-sm text-gray-500">
<button class="text-indigo-600 hover:text-indigo-900 mr-2 sm:mr-3">
<i class="fas fa-eye"></i>
</button>
<button class="text-gray-600 hover:text-gray-900 hidden sm:inline-block">
<i class="fas fa-print"></i>
</button>
</td>
</tr>
<tr>
<td class="px-3 sm:px-6 py-3 whitespace-nowrap text-sm font-medium text-gray-900">#78942</td>
<td class="px-3 sm:px-6 py-3 whitespace-nowrap text-sm text-gray-500 hidden sm:table-cell">Ольга Кузнецова</td>
<td class="px-3 sm:px-6 py-3 whitespace-nowrap text-sm text-gray-500">14.06</td>
<td class="px-3 sm:px-6 py-3 whitespace-nowrap text-sm text-gray-500">18,750 ₽</td>
<td class="px-3 sm:px-6 py-3 whitespace-nowrap">
<span class="order-status-badge bg-red-100 text-red-800">Отменен</span>
</td>
<td class="px-3 sm:px-6 py-3 whitespace-nowrap text-sm text-gray-500">
<button class="text-indigo-600 hover:text-indigo-900 mr-2 sm:mr-3">
<i class="fas fa-eye"></i>
</button>
<button class="text-gray-600 hover:text-gray-900 hidden sm:inline-block">
<i class="fas fa-print"></i>
</button>
</td>
</tr>
<tr>
<td class="px-3 sm:px-6 py-3 whitespace-nowrap text-sm font-medium text-gray-900">#78941</td>
<td class="px-3 sm:px-6 py-3 whitespace-nowrap text-sm text-gray-500 hidden sm:table-cell">Дмитрий Соколов</td>
<td class="px-3 sm:px-6 py-3 whitespace-nowrap text-sm text-gray-500">13.06</td>
<td class="px-3 sm:px-6 py-3 whitespace-nowrap text-sm text-gray-500">42,300 ₽</td>
<td class="px-3 sm:px-6 py-3 whitespace-nowrap">
<span class="order-status-badge bg-purple-100 text-purple-800">Ожидает оплаты</span>
</td>
<td class="px-3 sm:px-6 py-3 whitespace-nowrap text-sm text-gray-500">
<button class="text-indigo-600 hover:text-indigo-900 mr-2 sm:mr-3">
<i class="fas fa-eye"></i>
</button>
<button class="text-gray-600 hover:text-gray-900 hidden sm:inline-block">
<i class="fas fa-print"></i>
</button>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</main>
</div>
</div>
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
<script>
// Сворачивание/разворачивание боковой панели
document.getElementById('toggleSidebar').addEventListener('click', function() {
document.querySelector('.sidebar').classList.toggle('collapsed');
document.querySelector('.main-content').classList.toggle('ml-64');
document.querySelector('.main-content').classList.toggle('ml-[70px]');
});
// Мобильное меню
document.getElementById('mobileMenuButton').addEventListener('click', function() {
document.querySelector('.sidebar').classList.toggle('active');
});
// Инициализация графика продаж
const salesCtx = document.getElementById('salesChart').getContext('2d');
const salesChart = new Chart(salesCtx, {
type: 'line',
data: {
labels: ['1 июн', '5 июн', '10 июн', '15 июн', '20 июн', '25 июн', '30 июн'],
datasets: [{
label: 'Продажи',
data: [12000, 19000, 15000, 22000, 18000, 25000, 30000],
backgroundColor: 'rgba(79, 70, 229, 0.05)',
borderColor: 'rgba(79, 70, 229, 1)',
borderWidth: 2,
tension: 0.4,
fill: true
}]
},
options: {
responsive: true,
maintainAspectRatio: false,
plugins: {
legend: {
display: false
}
},
scales: {
y: {
beginAtZero: true,
grid: {
drawBorder: false
},
ticks: {
callback: function(value) {
return value / 1000 + 'k';
}
}
},
x: {
grid: {
display: false
}
}
}
}
});
// Адаптация графика при изменении размера окна
window.addEventListener('resize', function() {
salesChart.resize();
});
</script>
<p style="border-radius: 8px; text-align: center; font-size: 12px; color: #fff; margin-top: 16px;position: fixed; left: 8px; bottom: 8px; z-index: 10; background: rgba(0, 0, 0, 0.8); padding: 4px 8px;">Made with <img src="https://enzostvs-deepsite.hf.space/logo.svg" alt="DeepSite Logo" style="width: 16px; height: 16px; vertical-align: middle;display:inline-block;margin-right:3px;filter:brightness(0) invert(1);"><a href="https://enzostvs-deepsite.hf.space" style="color: #fff;text-decoration: underline;" target="_blank" >DeepSite</a> - 🧬 <a href="https://enzostvs-deepsite.hf.space?remix=SimpleCodeTM/tree-moved" style="color: #fff;text-decoration: underline;" target="_blank" >Remix</a></p></body>
</html>