385 lines
21 KiB
HTML
385 lines
21 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="fr">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<title>Dashboard - Minimalist Typography Design</title>
|
|
<script src="https://cdn.tailwindcss.com"></script>
|
|
<script src="https://unpkg.com/lucide@latest/dist/umd/lucide.min.js"></script>
|
|
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet">
|
|
<style>
|
|
:root {
|
|
--primary: #1a1a1a;
|
|
--secondary: #6b7280;
|
|
--accent: #3b82f6;
|
|
--background: #fafafa;
|
|
--surface: #ffffff;
|
|
--border: #e5e7eb;
|
|
}
|
|
|
|
body {
|
|
font-family: 'Inter', sans-serif;
|
|
background-color: var(--background);
|
|
color: var(--primary);
|
|
}
|
|
|
|
.mono { font-family: 'JetBrains Mono', monospace; }
|
|
|
|
.minimal-card {
|
|
background: var(--surface);
|
|
border: 1px solid var(--border);
|
|
transition: all 0.2s ease;
|
|
}
|
|
|
|
.minimal-card:hover {
|
|
border-color: var(--accent);
|
|
transform: translateY(-1px);
|
|
}
|
|
|
|
.metric-number {
|
|
font-family: 'JetBrains Mono', monospace;
|
|
font-weight: 600;
|
|
}
|
|
|
|
.fade-in {
|
|
animation: fadeIn 0.6s ease-out;
|
|
}
|
|
|
|
@keyframes fadeIn {
|
|
from { opacity: 0; transform: translateY(20px); }
|
|
to { opacity: 1; transform: translateY(0); }
|
|
}
|
|
|
|
.text-subtle { color: var(--secondary); }
|
|
.bg-subtle { background-color: #f8fafc; }
|
|
</style>
|
|
</head>
|
|
<body>
|
|
<div class="min-h-screen">
|
|
<!-- Navigation -->
|
|
<nav class="border-b border-gray-200 bg-white">
|
|
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
|
|
<div class="flex justify-between items-center h-16">
|
|
<div class="flex items-center space-x-8">
|
|
<h1 class="text-xl font-semibold">ApéroNight</h1>
|
|
<div class="flex space-x-6">
|
|
<a href="#" class="text-gray-900 border-b-2 border-blue-500 pb-1">Dashboard</a>
|
|
<a href="#" class="text-gray-500 hover:text-gray-900">Événements</a>
|
|
<a href="#" class="text-gray-500 hover:text-gray-900">Profil</a>
|
|
</div>
|
|
</div>
|
|
<button class="p-2 rounded-lg hover:bg-gray-100">
|
|
<i data-lucide="bell" class="w-5 h-5"></i>
|
|
</button>
|
|
</div>
|
|
</div>
|
|
</nav>
|
|
|
|
<!-- Main Content -->
|
|
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-8">
|
|
|
|
<!-- Header -->
|
|
<div class="mb-12 fade-in">
|
|
<h1 class="text-4xl font-bold mb-2">Bonjour, Marie</h1>
|
|
<p class="text-lg text-subtle">Voici un aperçu de vos activités et événements</p>
|
|
</div>
|
|
|
|
<!-- Critical Alert - Draft Tickets -->
|
|
<div class="minimal-card rounded-lg p-6 mb-8 border-l-4 border-orange-400 bg-orange-50 fade-in">
|
|
<div class="flex items-start justify-between">
|
|
<div class="flex items-start space-x-3">
|
|
<div class="p-2 bg-orange-100 rounded-lg">
|
|
<i data-lucide="clock" class="w-5 h-5 text-orange-600"></i>
|
|
</div>
|
|
<div>
|
|
<h3 class="font-semibold text-gray-900 mb-1">Action requise</h3>
|
|
<p class="text-sm text-gray-600 mb-3">2 billets en attente de paiement expirent dans 25 minutes</p>
|
|
|
|
<!-- Ticket Details -->
|
|
<div class="bg-white rounded-lg p-3 mb-3">
|
|
<div class="flex items-center justify-between">
|
|
<div>
|
|
<span class="font-medium text-sm">Soirée Jazz au Sunset</span>
|
|
<span class="text-xs text-gray-500 ml-2">2 billets • €70</span>
|
|
</div>
|
|
<span class="mono text-xs bg-orange-100 text-orange-800 px-2 py-1 rounded">1/3 tentatives</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<button class="bg-orange-600 text-white px-4 py-2 rounded-lg text-sm font-medium hover:bg-orange-700 transition-colors">
|
|
Payer maintenant
|
|
</button>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Metrics Grid -->
|
|
<div class="grid grid-cols-1 md:grid-cols-4 gap-6 mb-12 fade-in">
|
|
<div class="minimal-card rounded-lg p-6">
|
|
<div class="flex items-center justify-between mb-4">
|
|
<span class="text-sm font-medium text-subtle">Réservations</span>
|
|
<i data-lucide="calendar-check" class="w-4 h-4 text-green-500"></i>
|
|
</div>
|
|
<div class="metric-number text-3xl text-gray-900 mb-1">05</div>
|
|
<div class="text-xs text-subtle">+2 ce mois</div>
|
|
</div>
|
|
|
|
<div class="minimal-card rounded-lg p-6">
|
|
<div class="flex items-center justify-between mb-4">
|
|
<span class="text-sm font-medium text-subtle">Aujourd'hui</span>
|
|
<i data-lucide="clock" class="w-4 h-4 text-blue-500"></i>
|
|
</div>
|
|
<div class="metric-number text-3xl text-gray-900 mb-1">03</div>
|
|
<div class="text-xs text-subtle">événements</div>
|
|
</div>
|
|
|
|
<div class="minimal-card rounded-lg p-6">
|
|
<div class="flex items-center justify-between mb-4">
|
|
<span class="text-sm font-medium text-subtle">Demain</span>
|
|
<i data-lucide="calendar" class="w-4 h-4 text-purple-500"></i>
|
|
</div>
|
|
<div class="metric-number text-3xl text-gray-900 mb-1">07</div>
|
|
<div class="text-xs text-subtle">événements</div>
|
|
</div>
|
|
|
|
<div class="minimal-card rounded-lg p-6">
|
|
<div class="flex items-center justify-between mb-4">
|
|
<span class="text-sm font-medium text-subtle">À venir</span>
|
|
<i data-lucide="trending-up" class="w-4 h-4 text-orange-500"></i>
|
|
</div>
|
|
<div class="metric-number text-3xl text-gray-900 mb-1">15</div>
|
|
<div class="text-xs text-subtle">cette semaine</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Content Sections -->
|
|
<div class="grid grid-cols-1 lg:grid-cols-3 gap-8">
|
|
|
|
<!-- My Events -->
|
|
<div class="lg:col-span-2">
|
|
<div class="minimal-card rounded-lg p-6 fade-in">
|
|
<div class="flex items-center justify-between mb-6">
|
|
<h2 class="text-xl font-semibold">Mes événements</h2>
|
|
<button class="text-accent text-sm font-medium hover:underline">Voir tout</button>
|
|
</div>
|
|
|
|
<div class="space-y-3">
|
|
<!-- Event Row -->
|
|
<div class="flex items-center space-x-4 py-3 border-b border-gray-100 last:border-b-0">
|
|
<div class="w-2 h-12 bg-red-400 rounded-full"></div>
|
|
<div class="flex-1">
|
|
<div class="flex items-center justify-between">
|
|
<h3 class="font-medium">Concert Rock Alternative</h3>
|
|
<span class="mono text-xs bg-green-100 text-green-800 px-2 py-1 rounded">CONFIRMÉ</span>
|
|
</div>
|
|
<p class="text-sm text-subtle">Aujourd'hui 21:00 • Salle Pleyel</p>
|
|
</div>
|
|
<button class="p-2 hover:bg-gray-100 rounded-lg">
|
|
<i data-lucide="download" class="w-4 h-4 text-gray-500"></i>
|
|
</button>
|
|
</div>
|
|
|
|
<div class="flex items-center space-x-4 py-3 border-b border-gray-100 last:border-b-0">
|
|
<div class="w-2 h-12 bg-blue-400 rounded-full"></div>
|
|
<div class="flex-1">
|
|
<div class="flex items-center justify-between">
|
|
<h3 class="font-medium">Networking Tech</h3>
|
|
<span class="mono text-xs bg-blue-100 text-blue-800 px-2 py-1 rounded">DEMAIN</span>
|
|
</div>
|
|
<p class="text-sm text-subtle">19:00 • WeWork République</p>
|
|
</div>
|
|
<button class="p-2 hover:bg-gray-100 rounded-lg">
|
|
<i data-lucide="map-pin" class="w-4 h-4 text-gray-500"></i>
|
|
</button>
|
|
</div>
|
|
|
|
<div class="flex items-center space-x-4 py-3 border-b border-gray-100 last:border-b-0">
|
|
<div class="w-2 h-12 bg-green-400 rounded-full"></div>
|
|
<div class="flex-1">
|
|
<div class="flex items-center justify-between">
|
|
<h3 class="font-medium">Brunch du Dimanche</h3>
|
|
<span class="mono text-xs bg-yellow-100 text-yellow-800 px-2 py-1 rounded">DIMANCHE</span>
|
|
</div>
|
|
<p class="text-sm text-subtle">11:00 • Café de Flore</p>
|
|
</div>
|
|
<button class="p-2 hover:bg-gray-100 rounded-lg">
|
|
<i data-lucide="calendar" class="w-4 h-4 text-gray-500"></i>
|
|
</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Quick Actions & Today -->
|
|
<div class="space-y-6">
|
|
<!-- Quick Actions -->
|
|
<div class="minimal-card rounded-lg p-6 fade-in">
|
|
<h3 class="font-semibold mb-4">Actions rapides</h3>
|
|
<div class="space-y-3">
|
|
<button class="w-full flex items-center space-x-3 p-3 rounded-lg hover:bg-gray-50 transition-colors text-left">
|
|
<div class="p-2 bg-blue-100 rounded-lg">
|
|
<i data-lucide="plus" class="w-4 h-4 text-blue-600"></i>
|
|
</div>
|
|
<span class="font-medium text-sm">Nouvel événement</span>
|
|
</button>
|
|
|
|
<button class="w-full flex items-center space-x-3 p-3 rounded-lg hover:bg-gray-50 transition-colors text-left">
|
|
<div class="p-2 bg-green-100 rounded-lg">
|
|
<i data-lucide="search" class="w-4 h-4 text-green-600"></i>
|
|
</div>
|
|
<span class="font-medium text-sm">Rechercher</span>
|
|
</button>
|
|
|
|
<button class="w-full flex items-center space-x-3 p-3 rounded-lg hover:bg-gray-50 transition-colors text-left">
|
|
<div class="p-2 bg-purple-100 rounded-lg">
|
|
<i data-lucide="heart" class="w-4 h-4 text-purple-600"></i>
|
|
</div>
|
|
<span class="font-medium text-sm">Favoris</span>
|
|
</button>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Today's Schedule -->
|
|
<div class="minimal-card rounded-lg p-6 fade-in">
|
|
<h3 class="font-semibold mb-4">Aujourd'hui</h3>
|
|
<div class="space-y-4">
|
|
<div class="flex items-start space-x-3">
|
|
<div class="mono text-xs bg-gray-100 px-2 py-1 rounded mt-1">14:00</div>
|
|
<div class="flex-1">
|
|
<h4 class="font-medium text-sm">Cours de Cuisine</h4>
|
|
<p class="text-xs text-subtle">École Ducasse</p>
|
|
</div>
|
|
<span class="w-2 h-2 bg-yellow-400 rounded-full mt-2"></span>
|
|
</div>
|
|
|
|
<div class="flex items-start space-x-3">
|
|
<div class="mono text-xs bg-gray-100 px-2 py-1 rounded mt-1">20:30</div>
|
|
<div class="flex-1">
|
|
<h4 class="font-medium text-sm">Festival de Cinéma</h4>
|
|
<p class="text-xs text-subtle">MK2 Bibliothèque</p>
|
|
</div>
|
|
<span class="w-2 h-2 bg-red-400 rounded-full mt-2"></span>
|
|
</div>
|
|
|
|
<div class="flex items-start space-x-3">
|
|
<div class="mono text-xs bg-gray-100 px-2 py-1 rounded mt-1">22:00</div>
|
|
<div class="flex-1">
|
|
<h4 class="font-medium text-sm">Soirée Jazz</h4>
|
|
<p class="text-xs text-subtle">Le Sunset</p>
|
|
</div>
|
|
<span class="w-2 h-2 bg-blue-400 rounded-full mt-2"></span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Stats -->
|
|
<div class="minimal-card rounded-lg p-6 fade-in">
|
|
<h3 class="font-semibold mb-4">Statistiques</h3>
|
|
<div class="space-y-3">
|
|
<div class="flex items-center justify-between">
|
|
<span class="text-sm text-subtle">Total participations</span>
|
|
<span class="mono font-medium">127</span>
|
|
</div>
|
|
<div class="flex items-center justify-between">
|
|
<span class="text-sm text-subtle">Événements créés</span>
|
|
<span class="mono font-medium">12</span>
|
|
</div>
|
|
<div class="flex items-center justify-between">
|
|
<span class="text-sm text-subtle">Note moyenne</span>
|
|
<span class="mono font-medium">4.8/5</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Upcoming Events Grid -->
|
|
<div class="mt-12">
|
|
<div class="flex items-center justify-between mb-6">
|
|
<h2 class="text-2xl font-semibold">Événements à venir</h2>
|
|
<div class="flex items-center space-x-4">
|
|
<button class="text-sm text-subtle hover:text-gray-900 flex items-center space-x-1">
|
|
<i data-lucide="filter" class="w-4 h-4"></i>
|
|
<span>Filtrer</span>
|
|
</button>
|
|
<button class="text-sm text-subtle hover:text-gray-900 flex items-center space-x-1">
|
|
<i data-lucide="grid-3x3" class="w-4 h-4"></i>
|
|
<span>Vue</span>
|
|
</button>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6">
|
|
<!-- Event Card -->
|
|
<div class="minimal-card rounded-lg overflow-hidden fade-in">
|
|
<div class="aspect-video bg-gradient-to-br from-purple-400 to-purple-600 flex items-center justify-center">
|
|
<i data-lucide="music" class="w-12 h-12 text-white"></i>
|
|
</div>
|
|
<div class="p-4">
|
|
<div class="flex items-start justify-between mb-2">
|
|
<h3 class="font-semibold">Concert Électro</h3>
|
|
<span class="mono text-xs bg-gray-100 px-2 py-1 rounded">€45</span>
|
|
</div>
|
|
<p class="text-sm text-subtle mb-3">Samedi 21 Sept • Berghain</p>
|
|
<div class="flex items-center justify-between">
|
|
<span class="text-xs text-green-600 bg-green-100 px-2 py-1 rounded">12 places restantes</span>
|
|
<button class="text-accent text-sm font-medium hover:underline">Réserver</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="minimal-card rounded-lg overflow-hidden fade-in">
|
|
<div class="aspect-video bg-gradient-to-br from-green-400 to-teal-600 flex items-center justify-center">
|
|
<i data-lucide="leaf" class="w-12 h-12 text-white"></i>
|
|
</div>
|
|
<div class="p-4">
|
|
<div class="flex items-start justify-between mb-2">
|
|
<h3 class="font-semibold">Marché Bio</h3>
|
|
<span class="mono text-xs bg-green-100 text-green-600 px-2 py-1 rounded">GRATUIT</span>
|
|
</div>
|
|
<p class="text-sm text-subtle mb-3">Dimanche 22 Sept • Place des Vosges</p>
|
|
<div class="flex items-center justify-between">
|
|
<span class="text-xs text-blue-600 bg-blue-100 px-2 py-1 rounded">Accès libre</span>
|
|
<button class="text-accent text-sm font-medium hover:underline">Voir détails</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="minimal-card rounded-lg overflow-hidden fade-in">
|
|
<div class="aspect-video bg-gradient-to-br from-orange-400 to-red-600 flex items-center justify-center">
|
|
<i data-lucide="book-open" class="w-12 h-12 text-white"></i>
|
|
</div>
|
|
<div class="p-4">
|
|
<div class="flex items-start justify-between mb-2">
|
|
<h3 class="font-semibold">Salon du Livre</h3>
|
|
<span class="mono text-xs bg-gray-100 px-2 py-1 rounded">€15</span>
|
|
</div>
|
|
<p class="text-sm text-subtle mb-3">Lundi 23 Sept • Grand Palais</p>
|
|
<div class="flex items-center justify-between">
|
|
<span class="text-xs text-yellow-600 bg-yellow-100 px-2 py-1 rounded">Populaire</span>
|
|
<button class="text-accent text-sm font-medium hover:underline">Réserver</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Load More -->
|
|
<div class="text-center mt-8">
|
|
<button class="text-accent font-medium hover:underline">Charger plus d'événements</button>
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
|
|
<script>
|
|
lucide.createIcons();
|
|
|
|
// Stagger animations
|
|
const fadeElements = document.querySelectorAll('.fade-in');
|
|
fadeElements.forEach((el, index) => {
|
|
el.style.animationDelay = `${index * 0.1}s`;
|
|
});
|
|
</script>
|
|
</body>
|
|
</html> |