Files
petmaster/web/sketches/003-warm-playful/index.html
T
Robert Perez d8a4e43bcc feat(web): Schedule-First redesign
- Top header bar + narrow sidebar layout
- Dashboard: calendar-style schedule with timeline cards
- Clients: card-based layout with avatar initials and pet count
- Services: grid cards with emoji indicators and pricing
- Bookings: timeline cards with time slots, status chips, inline actions
- Invoices: cards with status badges, action buttons
- All pages: search bars, empty states, modal forms
- Consistent color system: indigo primary, amber alerts, gray hierarchy
2026-07-14 05:13:04 +00:00

269 lines
13 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Petmaster CRM — Variant 3: Warm & Playful</title>
<script src="https://cdn.tailwindcss.com"></script>
<style>
@import url('https://fonts.googleapis.com/css2?family=Nunito:wght@400;500;600;700;800&display=swap');
* { box-sizing: border-box; }
body { font-family: 'Nunito', -apple-system, sans-serif; background: #FFFBF5; color: #4A4035; }
.card { background: white; border: none; border-radius: 20px; box-shadow: 0 2px 12px rgba(74,64,53,0.06); transition: all 0.2s ease; }
.card:hover { box-shadow: 0 8px 25px rgba(74,64,53,0.1); transform: translateY(-2px); }
.nav-pill { transition: all 0.2s; border-radius: 9999px; padding: 8px 16px; font-weight: 600; font-size: 14px; }
.nav-pill:hover { background: rgba(251,191,36,0.15); color: #D97706; }
.nav-pill.active { background: #FBBF24; color: #4A4035; box-shadow: 0 4px 12px rgba(251,191,36,0.3); }
.btn-primary { background: linear-gradient(135deg, #FBBF24, #F59E0B); color: #4A4035; font-weight: 700; border: none; border-radius: 16px; padding: 12px 24px; cursor: pointer; transition: all 0.2s; box-shadow: 0 4px 12px rgba(251,191,36,0.25); }
.btn-primary:hover { transform: translateY(-1px); box-shadow: 0 6px 20px rgba(251,191,36,0.35); }
.btn-secondary { background: white; color: #4A4035; border: 2px solid #F3E8D8; border-radius: 16px; font-weight: 600; transition: all 0.2s; }
.btn-secondary:hover { border-color: #FBBF24; background: #FFFBF5; }
.stat-pill { border-radius: 20px; padding: 20px; transition: all 0.2s; }
.stat-pill:hover { transform: translateY(-3px); }
.booking-chip { border-radius: 16px; padding: 16px; transition: all 0.2s; border: 2px solid transparent; }
.booking-chip:hover { transform: translateY(-2px); box-shadow: 0 8px 20px rgba(0,0,0,0.08); }
.input { border: 2px solid #F3E8D8; border-radius: 12px; padding: 12px 16px; background: white; color: #4A4035; font-family: 'Nunito', sans-serif; font-weight: 500; transition: all 0.2s; }
.input:focus { outline: none; border-color: #FBBF24; box-shadow: 0 0 0 4px rgba(251,191,36,0.15); }
.badge { font-size: 11px; padding: 4px 12px; border-radius: 9999px; font-weight: 700; font-family: 'Nunito', sans-serif; }
.badge-amber { background: #FEF3C7; color: #92400E; }
.badge-blue { background: #DBEAFE; color: #1E40AF; }
.badge-green { background: #D1FAE5; color: #065F46; }
.pet-icon { font-size: 24px; width: 48px; height: 48px; border-radius: 16px; display: flex; align-items: center; justify-content: center; }
.header-gradient { background: linear-gradient(135deg, #FBBF24 0%, #F59E0B 50%, #D97706 100%); }
::-webkit-scrollbar { width: 8px; }
::-webkit-scrollbar-track { background: transparent; }
::-webkit-scrollbar-thumb { background: #E5D5C0; border-radius: 4px; }
.service-card { border-radius: 24px; padding: 24px; transition: all 0.3s; border: 2px solid transparent; cursor: pointer; }
.service-card:hover { border-color: #FBBF24; transform: translateY(-4px); }
</style>
</head>
<body>
<!-- Top Header (pill nav) -->
<header class="bg-white border-b-2 border-amber-100 px-8 py-4">
<div class="max-w-6xl mx-auto flex items-center justify-between">
<div class="flex items-center gap-4">
<div class="header-gradient w-12 h-12 rounded-2xl flex items-center justify-center text-2xl shadow-lg">🐾</div>
<div>
<h1 class="text-xl font-extrabold text-amber-600 tracking-tight">Petmaster</h1>
<p class="text-[10px] text-amber-400 font-semibold uppercase tracking-widest">Happy Pets, Happy Staff!</p>
</div>
</div>
<nav class="flex items-center gap-1">
<a href="#" class="nav-pill active">🏠 Home</a>
<a href="#" class="nav-pill">👥 Clients</a>
<a href="#" class="nav-pill">✂️ Services</a>
<a href="#" class="nav-pill">📅 Bookings</a>
<a href="#" class="nav-pill">💰 Invoices</a>
<a href="#" class="nav-pill">💬 Messages</a>
<a href="#" class="nav-pill">🐕 Self-Book</a>
</nav>
<div class="flex items-center gap-3">
<button class="btn-primary flex items-center gap-2 text-sm">
<span class="text-lg"></span> New Booking
</button>
<div class="w-10 h-10 rounded-full bg-gradient-to-br from-amber-400 to-orange-500 flex items-center justify-center text-white font-bold shadow-md">
🐶
</div>
</div>
</div>
</header>
<!-- Main Content -->
<main class="max-w-6xl mx-auto px-8 py-8">
<!-- Dashboard Stats -->
<div class="grid grid-cols-4 gap-4 mb-8">
<div class="stat-pill bg-gradient-to-br from-blue-50 to-blue-100">
<div class="text-3xl mb-2">👥</div>
<div class="text-2xl font-extrabold text-blue-700">124</div>
<div class="text-sm text-blue-500 font-semibold">Happy Clients</div>
</div>
<div class="stat-pill bg-gradient-to-br from-amber-50 to-amber-100">
<div class="text-3xl mb-2">📅</div>
<div class="text-2xl font-extrabold text-amber-700">7</div>
<div class="text-sm text-amber-500 font-semibold">Today's Bookings</div>
</div>
<div class="stat-pill bg-gradient-to-br from-green-50 to-green-100">
<div class="text-3xl mb-2">💰</div>
<div class="text-2xl font-extrabold text-green-700">$8,420</div>
<div class="text-sm text-green-500 font-semibold">This Month</div>
</div>
<div class="stat-pill bg-gradient-to-br from-rose-50 to-rose-100">
<div class="text-3xl mb-2"></div>
<div class="text-2xl font-extrabold text-rose-700">2</div>
<div class="text-sm text-rose-500 font-semibold">Needs Attention</div>
</div>
</div>
<!-- Today's Schedule - Playful Cards -->
<div class="card p-6 mb-8">
<div class="flex items-center justify-between mb-6">
<div>
<h2 class="text-xl font-extrabold text-amber-600 flex items-center gap-2">
<span class="text-2xl">📋</span> Today's Schedule
</h2>
<p class="text-sm text-amber-400 font-semibold">Wednesday, July 13 · Let's make it a great day! 🌟</p>
</div>
<div class="flex gap-2">
<button class="btn-secondary px-4 py-2 text-sm">📅 Calendar View</button>
<button class="btn-secondary px-4 py-2 text-sm">📊 Reports</button>
</div>
</div>
<!-- Timeline -->
<div class="space-y-4">
<!-- 9:00 AM - Scheduled -->
<div class="booking-chip bg-amber-50 border-amber-200">
<div class="flex items-center gap-4">
<div class="text-center min-w-[80px]">
<div class="text-lg font-extrabold text-amber-700">9:00 AM</div>
<div class="text-xs text-amber-400 font-semibold">90 min</div>
</div>
<div class="pet-icon bg-amber-100">🐕</div>
<div class="flex-1">
<div class="flex items-center gap-2 mb-1">
<span class="font-extrabold text-amber-800 text-lg">Max's Full Groom</span>
<span class="badge badge-amber">Scheduled</span>
</div>
<div class="text-sm text-amber-600 font-semibold">
Alice Johnson · Golden Retriever
</div>
<div class="flex items-center gap-4 mt-2 text-xs text-amber-500 font-semibold">
<span>👨‍💼 Elliot</span>
<span>⚠️ Sensitive skin</span>
<span>💵 $125</span>
</div>
</div>
<div class="flex gap-2">
<button class="btn-primary text-sm px-4 py-2">✅ Confirm</button>
</div>
</div>
</div>
<!-- 10:30 AM - Confirmed -->
<div class="booking-chip bg-blue-50 border-blue-200">
<div class="flex items-center gap-4">
<div class="text-center min-w-[80px]">
<div class="text-lg font-extrabold text-blue-700">10:30 AM</div>
<div class="text-xs text-blue-400 font-semibold">30 min</div>
</div>
<div class="pet-icon bg-blue-100">🐈</div>
<div class="flex-1">
<div class="flex items-center gap-2 mb-1">
<span class="font-extrabold text-blue-800 text-lg">Luna's Nail Trim</span>
<span class="badge badge-blue">Confirmed</span>
</div>
<div class="text-sm text-blue-600 font-semibold">
Bob Smith · Persian Cat
</div>
<div class="flex items-center gap-4 mt-2 text-xs text-blue-500 font-semibold">
<span>👨‍💼 Elliot</span>
<span>💵 $45</span>
</div>
</div>
<div class="flex gap-2">
<button class="btn-primary text-sm px-4 py-2 bg-gradient-to-br from-blue-400 to-blue-600">🎉 Complete</button>
</div>
</div>
</div>
<!-- 1:00 PM - Completed -->
<div class="booking-chip bg-green-50 border-green-200 opacity-75">
<div class="flex items-center gap-4">
<div class="text-center min-w-[80px]">
<div class="text-lg font-extrabold text-green-700">1:00 PM</div>
<div class="text-xs text-green-400 font-semibold">2 hrs</div>
</div>
<div class="pet-icon bg-green-100">🐕</div>
<div class="flex-1">
<div class="flex items-center gap-2 mb-1">
<span class="font-extrabold text-green-800 text-lg">Rex's Boarding</span>
<span class="badge badge-green">Completed ✓</span>
</div>
<div class="text-sm text-green-600 font-semibold">
Carol Davis · Labrador
</div>
<div class="flex items-center gap-4 mt-2 text-xs text-green-500 font-semibold">
<span>✅ Checked in</span>
<span>🏠 3-night stay</span>
<span>💵 $350</span>
</div>
</div>
</div>
</div>
<!-- 4:00 PM - Open -->
<div class="booking-chip bg-gray-50 border-dashed border-2 border-gray-200">
<div class="flex items-center gap-4">
<div class="text-center min-w-[80px]">
<div class="text-lg font-extrabold text-gray-400">4:00 PM</div>
<div class="text-xs text-gray-300 font-semibold"></div>
</div>
<div class="pet-icon bg-gray-100"></div>
<div class="flex-1 flex items-center">
<button class="btn-secondary px-6 py-3 text-sm font-bold text-amber-600">
✨ Book This Slot
</button>
</div>
</div>
</div>
</div>
</div>
<!-- Services Grid (Playful) -->
<div class="card p-6">
<div class="flex items-center justify-between mb-6">
<h2 class="text-xl font-extrabold text-amber-600 flex items-center gap-2">
<span class="text-2xl">✂️</span> Our Services
</h2>
<button class="btn-primary text-sm"> Add Service</button>
</div>
<div class="grid grid-cols-2 md:grid-cols-4 gap-4">
<div class="service-card bg-gradient-to-br from-blue-50 to-blue-100 text-center">
<div class="text-4xl mb-3">✂️</div>
<div class="font-extrabold text-blue-800">Full Grooming</div>
<div class="text-sm text-blue-500 font-semibold">90 min · $125</div>
</div>
<div class="service-card bg-gradient-to-br from-amber-50 to-amber-100 text-center">
<div class="text-4xl mb-3">🐾</div>
<div class="font-extrabold text-amber-800">Nail Trim</div>
<div class="text-sm text-amber-500 font-semibold">30 min · $45</div>
</div>
<div class="service-card bg-gradient-to-br from-green-50 to-green-100 text-center">
<div class="text-4xl mb-3">🏠</div>
<div class="font-extrabold text-green-800">Boarding</div>
<div class="text-sm text-green-500 font-semibold">1 night · $120</div>
</div>
<div class="service-card bg-gradient-to-br from-rose-50 to-rose-100 text-center">
<div class="text-4xl mb-3">🚶</div>
<div class="font-extrabold text-rose-800">Dog Walking</div>
<div class="text-sm text-rose-500 font-semibold">60 min · $80</div>
</div>
</div>
</div>
<!-- Quick Actions -->
<div class="grid grid-cols-3 gap-4 mt-8">
<button class="card p-6 text-center hover:border-amber-300 border-2 border-transparent transition-all">
<div class="text-4xl mb-3">👥</div>
<div class="font-extrabold text-amber-700">Add Client</div>
<div class="text-sm text-amber-400 font-semibold">Welcome a new furry friend!</div>
</button>
<button class="card p-6 text-center hover:border-amber-300 border-2 border-transparent transition-all">
<div class="text-4xl mb-3">💰</div>
<div class="font-extrabold text-amber-700">Send Invoice</div>
<div class="text-sm text-amber-400 font-semibold">Get paid faster ✨</div>
</button>
<button class="card p-6 text-center hover:border-amber-300 border-2 border-transparent transition-all">
<div class="text-4xl mb-3">💬</div>
<div class="font-extrabold text-amber-700">Message Client</div>
<div class="text-sm text-amber-400 font-semibold">Stay in touch 💌</div>
</button>
</div>
</main>
</body>
</html>