Files
ai-gift-planner-mockup/dashboard.html
Norbert Maciaszek 0357cf2eb7 add first mockup
2025-12-26 23:13:35 +01:00

374 lines
24 KiB
HTML

<!DOCTYPE html>
<html lang="pl">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Gift Planner - Dashboard</title>
<script src="https://cdn.tailwindcss.com"></script>
<link rel="stylesheet" href="styles.css">
<script src="https://unpkg.com/lucide@latest"></script>
<script src="main.js" defer></script>
<meta name="description" content="Planuj prezenty, śledź budżet i korzystaj z sugestii AI. Najlepsza aplikacja do zarządzania okazjami.">
</head>
<body class="bg-gray-50 min-h-screen">
<div class="flex h-screen overflow-hidden">
<!-- Sidebar -->
<aside class="w-64 bg-white border-r border-gray-200 hidden lg:flex flex-col">
<div class="p-6 flex items-center gap-3">
<div class="w-10 h-10 gradient-bg rounded-xl flex items-center justify-center text-white">
<i data-lucide="gift"></i>
</div>
<h1 class="text-xl font-bold bg-clip-text text-transparent bg-gradient-to-r from-indigo-600 to-purple-600">
Gift Planner
</h1>
</div>
<nav class="flex-1 px-4 py-4 space-y-2">
<a href="dashboard.html" class="flex items-center gap-3 px-4 py-3 bg-indigo-50 text-indigo-700 rounded-xl font-medium">
<i data-lucide="layout-dashboard"></i> Dashboard
</a>
<a href="updates.html" class="flex items-center gap-3 px-4 py-3 text-gray-600 hover:bg-gray-50 rounded-xl transition-colors">
<i data-lucide="bell"></i> Aktualizacje
</a>
<a href="occasions.html" class="flex items-center gap-3 px-4 py-3 text-gray-600 hover:bg-gray-50 rounded-xl transition-colors">
<i data-lucide="calendar"></i> Okazje
</a>
<a href="persons.html" class="flex items-center gap-3 px-4 py-3 text-gray-600 hover:bg-gray-50 rounded-xl transition-colors">
<i data-lucide="users"></i> Osoby
</a>
<a href="budget.html" class="flex items-center gap-3 px-4 py-3 text-gray-600 hover:bg-gray-50 rounded-xl transition-colors">
<i data-lucide="wallet"></i> Budżet
</a>
</nav>
<div class="p-4 border-t border-gray-100">
<a href="settings.html" class="flex items-center gap-3 px-4 py-3 text-gray-600 hover:bg-gray-50 rounded-xl transition-colors">
<i data-lucide="settings"></i> Ustawienia
</a>
<div class="flex items-center gap-3 p-4 mt-2">
<div class="w-10 h-10 rounded-full bg-gradient-to-br from-indigo-100 to-purple-100 flex items-center justify-center text-indigo-600 font-bold">
NK
</div>
<div class="flex-1 overflow-hidden">
<p class="text-sm font-semibold truncate">Norbert K.</p>
<p class="text-xs text-gray-500 truncate">Premium Plan</p>
</div>
</div>
</div>
</aside>
<!-- Main Content -->
<main class="flex-1 overflow-y-auto bg-gray-50 p-4 lg:p-8">
<!-- Header -->
<header class="flex flex-col md:flex-row md:items-center justify-between gap-4 mb-8">
<div>
<h2 class="text-2xl font-bold text-gray-900">Witaj, Norbert! 👋</h2>
<p class="text-gray-500">Masz 3 zbliżające się okazje w tym miesiącu.</p>
</div>
<div class="flex gap-3">
<button onclick="openModal('modal-add-person')" class="bg-white border border-gray-200 px-4 py-2 rounded-xl text-sm font-medium hover:bg-gray-50 transition-colors flex items-center gap-2">
<i data-lucide="plus-circle" class="w-4 h-4"></i> Dodaj osobę
</button>
<button onclick="openModal('modal-new-occasion')" class="gradient-bg text-white px-6 py-2 rounded-xl text-sm font-semibold shadow-lg shadow-indigo-200 hover:opacity-90 transition-all flex items-center gap-2">
<i data-lucide="sparkles" class="w-4 h-4"></i> Nowa okazja
</button>
</div>
</header>
<!-- Stats Overview -->
<section class="grid grid-cols-1 md:grid-cols-3 gap-6 mb-10">
<div class="glass-card p-6 rounded-2xl shadow-sm">
<div class="flex items-center justify-between mb-4">
<div class="w-12 h-12 bg-indigo-100 rounded-xl flex items-center justify-center text-indigo-600">
<i data-lucide="shopping-bag"></i>
</div>
<span class="text-xs font-semibold text-green-600 bg-green-50 px-2 py-1 rounded-full">+12% vs grudzień 2024</span>
</div>
<p class="text-gray-500 text-sm font-medium">Prezenty do kupienia</p>
<h3 class="text-3xl font-bold mt-1">14 / 28</h3>
<div class="w-full bg-gray-100 h-2 rounded-full mt-4 overflow-hidden">
<div class="h-full progress-bar-gradient" style="width: 50%"></div>
</div>
</div>
<div class="glass-card p-6 rounded-2xl shadow-sm">
<div class="flex items-center justify-between mb-4">
<div class="w-12 h-12 bg-purple-100 rounded-xl flex items-center justify-center text-purple-600">
<i data-lucide="credit-card"></i>
</div>
<span class="text-xs font-semibold text-indigo-600 bg-indigo-50 px-2 py-1 rounded-full">Pozostało: 1 200 PLN</span>
</div>
<p class="text-gray-500 text-sm font-medium">Wydany budżet</p>
<h3 class="text-3xl font-bold mt-1">3 800 PLN</h3>
<div class="w-full bg-gray-100 h-2 rounded-full mt-4 overflow-hidden">
<div class="h-full progress-bar-gradient" style="width: 76%"></div>
</div>
</div>
<div class="glass-card p-6 rounded-2xl shadow-sm border-dashed border-2 border-indigo-200 bg-indigo-50/10 flex flex-col items-center justify-center text-center cursor-pointer hover:bg-indigo-50/20">
<div class="w-12 h-12 bg-white rounded-full flex items-center justify-center text-indigo-600 shadow-sm mb-3">
<i data-lucide="lightbulb" class="animate-float"></i>
</div>
<p class="text-indigo-600 font-semibold mb-1">Potrzebujesz inspiracji?</p>
<p class="text-gray-500 text-xs px-4">AI pomoże Ci dobrać idealne prezenty na każdą okazję.</p>
</div>
</section>
<!-- Active Occasions -->
<section class="mb-10">
<div class="flex items-center justify-between mb-6">
<h3 class="text-xl font-bold text-gray-900">Aktywne okazje</h3>
<a href="occasions.html" class="text-indigo-600 text-sm font-semibold hover:underline">Zobacz wszystkie</a>
</div>
<div class="grid grid-cols-1 md:grid-cols-2 gap-6">
<!-- Occasion Card 1 -->
<div class="bg-white rounded-3xl p-1 shadow-sm border border-gray-100 hover:shadow-xl transition-shadow cursor-pointer group">
<div class="flex flex-col h-full bg-white rounded-[1.4rem] overflow-hidden">
<div class="h-40 bg-gray-100 relative overflow-hidden">
<img src="assets/logo_hero.png" alt="Christmas" class="w-full h-full object-cover group-hover:scale-105 transition-transform duration-500">
<div class="absolute top-4 left-4 bg-white/90 backdrop-blur-md px-3 py-1 rounded-full text-xs font-bold text-indigo-700">
Za 12 dni
</div>
<div class="absolute bottom-4 right-4 bg-indigo-600 text-white p-2 rounded-xl">
<i data-lucide="external-link" class="w-4 h-4"></i>
</div>
</div>
<div class="p-6">
<div class="flex items-center justify-between mb-2">
<h4 class="text-lg font-bold">Boże Narodzenie 2025</h4>
<span class="text-sm font-semibold text-gray-500">Budżet: 5 000 PLN</span>
</div>
<p class="text-gray-500 text-sm mb-4 line-clamp-1">Tradycyjne spotkanie rodzinne u mamy, prezenty dla 12 osób.</p>
<div class="flex items-center gap-3 mb-4">
<div class="flex -space-x-2">
<img class="w-8 h-8 rounded-full border-2 border-white" src="https://ui-avatars.com/api/?name=Mama&background=random" alt="User">
<img class="w-8 h-8 rounded-full border-2 border-white" src="https://ui-avatars.com/api/?name=Tata&background=random" alt="User">
<img class="w-8 h-8 rounded-full border-2 border-white" src="https://ui-avatars.com/api/?name=Ania&background=random" alt="User">
<div class="w-8 h-8 rounded-full border-2 border-white bg-gray-100 flex items-center justify-center text-[10px] font-bold text-gray-400">+9</div>
</div>
<span class="text-xs text-gray-400 font-medium">12 osób na liście</span>
</div>
<div class="flex items-center justify-between text-xs font-bold mb-2">
<span class="text-indigo-600">80% Postępu</span>
<span class="text-gray-400">4 000 / 5 000 PLN</span>
</div>
<div class="w-full bg-gray-100 h-1.5 rounded-full overflow-hidden">
<div class="h-full progress-bar-gradient" style="width: 80%"></div>
</div>
</div>
</div>
</div>
<!-- Occasion Card 2 -->
<div class="bg-white rounded-3xl p-1 shadow-sm border border-gray-100 hover:shadow-xl transition-shadow cursor-pointer group">
<div class="flex flex-col h-full bg-white rounded-[1.4rem] overflow-hidden">
<div class="h-40 bg-gray-100 relative overflow-hidden">
<img src="https://images.unsplash.com/photo-1464349172904-124bb97af094?auto=format&fit=crop&q=80&w=800" alt="Birthday" class="w-full h-full object-cover group-hover:scale-105 transition-transform duration-500">
<div class="absolute top-4 left-4 bg-white/90 backdrop-blur-md px-3 py-1 rounded-full text-xs font-bold text-purple-700">
Za 4 dni
</div>
<div class="absolute bottom-4 right-4 bg-purple-600 text-white p-2 rounded-xl">
<i data-lucide="external-link" class="w-4 h-4"></i>
</div>
</div>
<div class="p-6">
<div class="flex items-center justify-between mb-2">
<h4 class="text-lg font-bold">Urodziny Mai 🎂</h4>
<span class="text-sm font-semibold text-gray-500">Budżet: 300 PLN</span>
</div>
<p class="text-gray-500 text-sm mb-4 line-clamp-1">30-tka przyjaciółki z pracy. Składka na wymarzony zegarek.</p>
<div class="flex items-center gap-3 mb-4">
<div class="flex -space-x-2">
<img class="w-8 h-8 rounded-full border-2 border-white" src="https://ui-avatars.com/api/?name=Maja&background=random" alt="User">
</div>
<span class="text-xs text-gray-400 font-medium">1 osoba na liście</span>
</div>
<div class="flex items-center justify-between text-xs font-bold mb-2">
<span class="text-purple-600">0% Postępu</span>
<span class="text-gray-400">0 / 300 PLN</span>
</div>
<div class="w-full bg-gray-100 h-1.5 rounded-full overflow-hidden">
<div class="h-full bg-gray-200" style="width: 0%"></div>
</div>
</div>
</div>
</div>
</div>
</section>
<!-- Recently Added Gifts -->
<section class="mb-10">
<div class="flex items-center justify-between mb-6">
<h3 class="text-xl font-bold text-gray-900">Ostatnio dodane prezenty</h3>
</div>
<div class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-4">
<!-- Gift 1 -->
<div onclick="window.location.href='gift.html'" class="bg-white p-4 rounded-3xl border border-gray-100 shadow-sm hover:shadow-md transition-all cursor-pointer group">
<div class="w-full h-32 bg-gray-50 rounded-2xl overflow-hidden mb-3">
<img src="https://images.unsplash.com/photo-1517668808822-9ebb02f2a0e6?auto=format&fit=crop&q=80&w=300" class="w-full h-full object-cover group-hover:scale-105 transition-transform">
</div>
<h4 class="text-sm font-bold text-gray-900 truncate">Sage Barista Express</h4>
<div class="flex items-center justify-between mt-2">
<span class="text-xs font-black text-indigo-600">2 499 PLN</span>
<span class="bg-green-50 text-green-600 text-[10px] font-bold px-2 py-0.5 rounded-full uppercase">Kupiony</span>
</div>
</div>
<!-- Gift 2 -->
<div onclick="window.location.href='gift.html'" class="bg-white p-4 rounded-3xl border border-gray-100 shadow-sm hover:shadow-md transition-all cursor-pointer group">
<div class="w-full h-32 bg-gray-50 rounded-2xl overflow-hidden mb-3">
<img src="https://images.unsplash.com/photo-1523275335684-37898b6baf30?auto=format&fit=crop&q=80&w=300" class="w-full h-full object-cover group-hover:scale-105 transition-transform">
</div>
<h4 class="text-sm font-bold text-gray-900 truncate">Słuchawki Sony WH-1000XM5</h4>
<div class="flex items-center justify-between mt-2">
<span class="text-xs font-black text-indigo-600">1 399 PLN</span>
<span class="bg-indigo-50 text-indigo-600 text-[10px] font-bold px-2 py-0.5 rounded-full uppercase">Wybrany</span>
</div>
</div>
<!-- Gift 3 -->
<div onclick="window.location.href='gift.html'" class="bg-white p-4 rounded-3xl border border-gray-100 shadow-sm hover:shadow-md transition-all cursor-pointer group">
<div class="w-full h-32 bg-gray-50 rounded-2xl overflow-hidden mb-3">
<img src="https://images.unsplash.com/photo-1544947950-fa07a98d237f?auto=format&fit=crop&q=80&w=300" class="w-full h-full object-cover group-hover:scale-105 transition-transform">
</div>
<h4 class="text-sm font-bold text-gray-900 truncate">Książka o Jodze</h4>
<div class="flex items-center justify-between mt-2">
<span class="text-xs font-black text-indigo-600">59 PLN</span>
<span class="bg-gray-50 text-gray-400 text-[10px] font-bold px-2 py-0.5 rounded-full uppercase">Idea</span>
</div>
</div>
<!-- Gift 4 -->
<div onclick="window.location.href='gift.html'" class="bg-white p-4 rounded-3xl border border-gray-100 shadow-sm hover:shadow-md transition-all cursor-pointer group">
<div class="w-full h-32 bg-gray-50 rounded-2xl overflow-hidden mb-3">
<img src="https://images.unsplash.com/photo-1546868871-7041f2a55e12?auto=format&fit=crop&q=80&w=300" class="w-full h-full object-cover group-hover:scale-105 transition-transform">
</div>
<h4 class="text-sm font-bold text-gray-900 truncate">Smartwatch Series 9</h4>
<div class="flex items-center justify-between mt-2">
<span class="text-xs font-black text-indigo-600">1 800 PLN</span>
<span class="bg-indigo-50 text-indigo-600 text-[10px] font-bold px-2 py-0.5 rounded-full uppercase">Wybrany</span>
</div>
</div>
</div>
</section>
<!-- Quick AI Suggestions Banner -->
<section class="mb-10">
<div class="bg-gradient-to-r from-indigo-600 to-purple-600 rounded-3xl p-8 text-white relative overflow-hidden shadow-2xl shadow-indigo-200">
<div class="relative z-10 max-w-md">
<span class="inline-block bg-white/20 backdrop-blur-sm px-3 py-1 rounded-full text-xs font-bold mb-4 uppercase tracking-wider">Nowość: AI Recommendation Engine</span>
<h3 class="text-3xl font-bold mb-3">Nie wyrywaj sobie włosów z głowy. Zapytaj AI!</h3>
<p class="text-indigo-100 mb-6 text-sm leading-relaxed">Nasz algorytm przeanalizuje zainteresowania Twoich bliskich i dobierze prezenty, które wywołają prawdziwy uśmiech. Gwarantujemy efekt "WOW".</p>
<button class="bg-white text-indigo-700 px-8 py-3 rounded-2xl font-bold hover:bg-indigo-50 transition-colors flex items-center gap-3 shadow-xl shadow-indigo-900/20">
Sprawdź sugestie <i data-lucide="arrow-right" class="w-5 h-5"></i>
</button>
</div>
<!-- Decoration element -->
<div class="absolute -right-20 -bottom-20 w-80 h-80 bg-white/10 rounded-full blur-3xl"></div>
<div class="absolute right-10 top-1/2 -translate-y-1/2 hidden lg:block opacity-20">
<i data-lucide="sparkles" class="w-64 h-64 text-white"></i>
</div>
</div>
</section>
</main>
</div>
<!-- Mobile Navigation -->
<nav class="lg:hidden fixed bottom-0 left-0 right-0 bg-white border-t border-gray-200 p-2 flex justify-around items-center z-50">
<a href="dashboard.html" class="flex flex-col items-center p-2 text-indigo-600">
<i data-lucide="layout-dashboard" class="w-6 h-6"></i>
<span class="text-[10px] font-bold mt-1">Home</span>
</a>
<a href="updates.html" class="flex flex-col items-center p-2 text-gray-400">
<i data-lucide="bell" class="w-6 h-6"></i>
<span class="text-[10px] font-bold mt-1">Status</span>
</a>
<a href="occasions.html" class="flex flex-col items-center p-2 text-gray-400">
<i data-lucide="calendar" class="w-6 h-6"></i>
<span class="text-[10px] font-bold mt-1">Okazje</span>
</a>
<a href="persons.html" class="flex flex-col items-center p-2 text-gray-400">
<i data-lucide="users" class="w-6 h-6"></i>
<span class="text-[10px] font-bold mt-1">Osoby</span>
</a>
</nav>
<!-- Modal: Nowa Okazja -->
<div id="modal-new-occasion" class="modal-overlay">
<div class="modal-content">
<div class="flex items-center justify-between mb-8">
<h3 class="text-2xl font-black text-gray-900">Nowa Okazja</h3>
<button onclick="closeModal('modal-new-occasion')" class="text-gray-400 hover:text-gray-600">
<i data-lucide="x"></i>
</button>
</div>
<form class="space-y-6">
<div>
<label class="block text-[10px] font-black text-gray-400 uppercase tracking-widest mb-2 ml-1">Nazwa Okazji</label>
<input type="text" placeholder="np. Urodziny Kamila" class="form-input" required>
</div>
<div class="grid grid-cols-2 gap-4">
<div>
<label class="block text-[10px] font-black text-gray-400 uppercase tracking-widest mb-2 ml-1">Data</label>
<input type="date" class="form-input" required>
</div>
<div>
<label class="block text-[10px] font-black text-gray-400 uppercase tracking-widest mb-2 ml-1">Budżet (PLN)</label>
<input type="number" placeholder="0.00" class="form-input">
</div>
</div>
<div>
<label class="block text-[10px] font-black text-gray-400 uppercase tracking-widest mb-2 ml-1">Opis (opcjonalnie)</label>
<textarea placeholder="Krótki opis wydarzenia..." class="form-input h-24 resize-none"></textarea>
</div>
<button type="submit" class="w-full gradient-bg text-white py-4 rounded-2xl font-bold shadow-xl shadow-indigo-100 mt-4">
Stwórz okazję
</button>
</form>
</div>
</div>
<!-- Modal: Dodaj Osobę -->
<div id="modal-add-person" class="modal-overlay">
<div class="modal-content">
<div class="flex items-center justify-between mb-8">
<h3 class="text-2xl font-black text-gray-900">Dodaj Osobę</h3>
<button onclick="closeModal('modal-add-person')" class="text-gray-400 hover:text-gray-600">
<i data-lucide="x"></i>
</button>
</div>
<form class="space-y-6">
<div>
<label class="block text-[10px] font-black text-gray-400 uppercase tracking-widest mb-2 ml-1">Imię / Nick</label>
<input type="text" placeholder="np. Kasia" class="form-input" required>
</div>
<div>
<label class="block text-[10px] font-black text-gray-400 uppercase tracking-widest mb-2 ml-1">Relacja</label>
<select class="form-input">
<option>Rodzina</option>
<option>Przyjaciel / Przyjaciółka</option>
<option>Praca</option>
<option>Inna</option>
</select>
</div>
<div>
<label class="block text-[10px] font-black text-gray-400 uppercase tracking-widest mb-2 ml-1">Zainteresowania (oddziel przecinkiem)</label>
<input type="text" placeholder="kawa, joga, technologia" class="form-input">
</div>
<button type="submit" class="w-full gradient-bg text-white py-4 rounded-2xl font-bold shadow-xl shadow-indigo-100 mt-4">
Dodaj osobę do listy
</button>
</form>
</div>
</div>
<script>
lucide.createIcons();
</script>
</body>
</html>