Newwebshop/templates/admin/dashboard.html.twig

239 lines
11 KiB
Twig

<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>{{ title }}</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
<link href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.10.0/font/bootstrap-icons.css" rel="stylesheet">
<style>
.sidebar {
min-height: 100vh;
background: #2c3e50;
color: white;
}
.sidebar .nav-link {
color: #ecf0f1;
padding: 0.75rem 1rem;
border-radius: 0.375rem;
margin: 0.25rem 0;
}
.sidebar .nav-link:hover {
background: #34495e;
color: white;
}
.sidebar .nav-link.active {
background: #3498db;
color: white;
}
.main-content {
background: #f8f9fa;
min-height: 100vh;
}
.card {
border: none;
border-radius: 10px;
box-shadow: 0 2px 10px rgba(0,0,0,0.1);
}
.stats-card {
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
color: white;
}
.navbar-brand {
font-weight: 600;
font-size: 1.25rem;
}
</style>
</head>
<body>
<div class="container-fluid">
<div class="row">
<!-- Sidebar -->
<div class="col-md-3 col-lg-2 px-0">
<div class="sidebar p-3">
<div class="d-flex align-items-center mb-4">
<i class="bi bi-shop me-2"></i>
<span class="navbar-brand mb-0">Webshop Admin</span>
</div>
<nav class="nav flex-column">
<a class="nav-link active" href="/admin/dashboard">
<i class="bi bi-speedometer2 me-2"></i>
Dashboard
</a>
<a class="nav-link" href="/admin/products">
<i class="bi bi-box me-2"></i>
Produkte
</a>
<a class="nav-link" href="/admin/categories">
<i class="bi bi-tags me-2"></i>
Kategorien
</a>
<a class="nav-link" href="/admin/orders">
<i class="bi bi-cart me-2"></i>
Bestellungen
</a>
<a class="nav-link" href="/admin/customers">
<i class="bi bi-people me-2"></i>
Kunden
</a>
<a class="nav-link" href="/admin/settings">
<i class="bi bi-gear me-2"></i>
Einstellungen
</a>
<hr class="my-3">
<a class="nav-link" href="/admin/logout">
<i class="bi bi-box-arrow-right me-2"></i>
Abmelden
</a>
</nav>
</div>
</div>
<!-- Main Content -->
<div class="col-md-9 col-lg-10 px-0">
<div class="main-content p-4">
<!-- Header -->
<div class="d-flex justify-content-between align-items-center mb-4">
<h1 class="h3 mb-0">Dashboard</h1>
<div class="d-flex align-items-center">
<span class="me-3">Willkommen, {{ user_name }}</span>
<div class="dropdown">
<button class="btn btn-outline-secondary dropdown-toggle" type="button" data-bs-toggle="dropdown">
<i class="bi bi-person-circle"></i>
</button>
<ul class="dropdown-menu">
<li><a class="dropdown-item" href="/admin/profile">Profil</a></li>
<li><a class="dropdown-item" href="/admin/logout">Abmelden</a></li>
</ul>
</div>
</div>
</div>
<!-- Stats Cards -->
<div class="row mb-4">
<div class="col-md-3">
<div class="card stats-card">
<div class="card-body">
<div class="d-flex justify-content-between">
<div>
<h6 class="card-title">Bestellungen</h6>
<h3 class="mb-0">{{ stats.orders }}</h3>
</div>
<i class="bi bi-cart fs-1"></i>
</div>
</div>
</div>
</div>
<div class="col-md-3">
<div class="card stats-card">
<div class="card-body">
<div class="d-flex justify-content-between">
<div>
<h6 class="card-title">Produkte</h6>
<h3 class="mb-0">{{ stats.products }}</h3>
</div>
<i class="bi bi-box fs-1"></i>
</div>
</div>
</div>
</div>
<div class="col-md-3">
<div class="card stats-card">
<div class="card-body">
<div class="d-flex justify-content-between">
<div>
<h6 class="card-title">Kunden</h6>
<h3 class="mb-0">{{ stats.customers }}</h3>
</div>
<i class="bi bi-people fs-1"></i>
</div>
</div>
</div>
</div>
<div class="col-md-3">
<div class="card stats-card">
<div class="card-body">
<div class="d-flex justify-content-between">
<div>
<h6 class="card-title">Umsatz</h6>
<h3 class="mb-0">{{ stats.revenue }}€</h3>
</div>
<i class="bi bi-currency-euro fs-1"></i>
</div>
</div>
</div>
</div>
</div>
<!-- Recent Orders -->
<div class="row">
<div class="col-md-8">
<div class="card">
<div class="card-header">
<h5 class="card-title mb-0">Letzte Bestellungen</h5>
</div>
<div class="card-body">
<div class="table-responsive">
<table class="table">
<thead>
<tr>
<th>ID</th>
<th>Kunde</th>
<th>Status</th>
<th>Betrag</th>
<th>Datum</th>
</tr>
</thead>
<tbody>
{% for order in recent_orders %}
<tr>
<td>#{{ order.id }}</td>
<td>{{ order.customer_name }}</td>
<td>
<span class="badge bg-{{ order.status_color }}">
{{ order.status }}
</span>
</td>
<td>{{ order.total }}€</td>
<td>{{ order.created_at }}</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
</div>
</div>
</div>
<div class="col-md-4">
<div class="card">
<div class="card-header">
<h5 class="card-title mb-0">Schnellaktionen</h5>
</div>
<div class="card-body">
<div class="d-grid gap-2">
<a href="/admin/products/new" class="btn btn-primary">
<i class="bi bi-plus-circle me-2"></i>
Neues Produkt
</a>
<a href="/admin/orders/new" class="btn btn-outline-primary">
<i class="bi bi-cart-plus me-2"></i>
Neue Bestellung
</a>
<a href="/admin/customers/new" class="btn btn-outline-primary">
<i class="bi bi-person-plus me-2"></i>
Neuer Kunde
</a>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
</body>
</html>