Phase 2
Base app architecture:
Route groups for customer, staff and owner.
* Reusable design system with around 20 UI components.
* Complete Prisma schema.
* Authentication with email/password and Google.
* Role and permission model.
* Protected routes.
* Clean separation between features, services, components and shared utilities.
This commit is contained in:
201 files changed
+31984
No files matched your search
@@ -0,0 +1,120 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<script>
|
||||
window.FontAwesomeConfig = { autoReplaceSvg: 'nest' };
|
||||
</script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/js/all.min.js" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover">
|
||||
<title>Reschedule — TrimTime</title>
|
||||
<script src="https://cdn.tailwindcss.com"></script>
|
||||
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800;900&display=swap" rel="stylesheet">
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
|
||||
<script>
|
||||
tailwind.config = {
|
||||
theme: {
|
||||
extend: {
|
||||
colors: { ink: '#111b15', stone: '#f4f6f4', surface: '#ffffff', muted: '#6c7870', line: '#e1e7e2', accent: '#10b981' },
|
||||
fontFamily: { sans: ['Inter', 'sans-serif'] },
|
||||
borderRadius: { jumbo: '1.5rem', tile: '1rem' }
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style>
|
||||
.hide-scrollbar::-webkit-scrollbar { display: none; }
|
||||
.hide-scrollbar { -ms-overflow-style: none; scrollbar-width: none; }
|
||||
.nav-blur { backdrop-filter: blur(20px); -webkit-backdrop-filter: blur(20px); }
|
||||
</style>
|
||||
</head>
|
||||
<body class="bg-stone text-ink min-h-screen pb-12">
|
||||
|
||||
<header class="fixed top-0 left-0 right-0 z-50 px-4 py-4 bg-stone/80 nav-blur border-b border-line flex items-center justify-between">
|
||||
<button onclick="history.back()" class="w-10 h-10 rounded-full border border-line bg-white flex items-center justify-center">
|
||||
<i class="fa-solid fa-arrow-left text-sm"></i>
|
||||
</button>
|
||||
<h1 class="text-lg font-semibold tracking-tight">Reschedule</h1>
|
||||
<div class="w-10"></div>
|
||||
</header>
|
||||
|
||||
<main class="pt-24 px-4 space-y-6">
|
||||
|
||||
<!-- Current Appointment Summary -->
|
||||
<div class="bg-white border border-line rounded-jumbo p-5 flex items-center gap-3">
|
||||
<img src="https://storage.googleapis.com/uxpilot-auth.appspot.com/avatars/avatar-3.jpg" class="w-10 h-10 rounded-full object-cover" alt="Marcus Reed">
|
||||
<div class="flex-1">
|
||||
<p class="text-sm font-bold">Standard Cut with Marcus Reed</p>
|
||||
<p class="text-xs text-muted">Currently: Sat, Oct 12 • 2:00 PM</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="bg-amber-50 border border-amber-200 rounded-xl p-4 flex items-start gap-3">
|
||||
<i class="fa-solid fa-triangle-exclamation text-amber-500 mt-0.5"></i>
|
||||
<p class="text-xs text-amber-800 leading-relaxed">You can reschedule for free up to 24 hours before your appointment. Choose a new date and time below.</p>
|
||||
</div>
|
||||
|
||||
<!-- Calendar Month Grid -->
|
||||
<section class="bg-surface rounded-tile border border-line p-4">
|
||||
<div class="flex items-center justify-between mb-6">
|
||||
<h3 class="text-base font-semibold">October 2024</h3>
|
||||
<div class="flex gap-2">
|
||||
<button class="w-8 h-8 rounded-full border border-line flex items-center justify-center text-xs"><i class="fa-solid fa-chevron-left"></i></button>
|
||||
<button class="w-8 h-8 rounded-full border border-line flex items-center justify-center text-xs"><i class="fa-solid fa-chevron-right"></i></button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="grid grid-cols-7 text-center mb-4">
|
||||
<span class="text-[10px] font-bold uppercase text-muted">Sun</span>
|
||||
<span class="text-[10px] font-bold uppercase text-muted">Mon</span>
|
||||
<span class="text-[10px] font-bold uppercase text-muted">Tue</span>
|
||||
<span class="text-[10px] font-bold uppercase text-muted">Wed</span>
|
||||
<span class="text-[10px] font-bold uppercase text-muted">Thu</span>
|
||||
<span class="text-[10px] font-bold uppercase text-muted">Fri</span>
|
||||
<span class="text-[10px] font-bold uppercase text-muted">Sat</span>
|
||||
</div>
|
||||
|
||||
<div class="grid grid-cols-7 text-center gap-y-2">
|
||||
<span class="py-2 text-sm text-line">29</span>
|
||||
<span class="py-2 text-sm text-line">30</span>
|
||||
<span class="py-2 text-sm text-ink">1</span>
|
||||
<span class="py-2 text-sm text-ink">2</span>
|
||||
<span class="py-2 text-sm text-ink">3</span>
|
||||
<span class="py-2 text-sm text-ink">4</span>
|
||||
<span class="py-2 text-sm text-ink">5</span>
|
||||
<span class="py-2 text-sm text-ink">14</span>
|
||||
<span class="py-2 text-sm text-ink">15</span>
|
||||
<span class="bg-accent/10 border-2 border-accent text-ink rounded-lg py-2 text-sm font-bold">16</span>
|
||||
<span class="py-2 text-sm text-ink">17</span>
|
||||
<span class="py-2 text-sm text-ink">18</span>
|
||||
<span class="py-2 text-sm text-ink">19</span>
|
||||
<span class="py-2 text-sm text-ink">20</span>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Time Slots -->
|
||||
<section>
|
||||
<p class="text-[10px] font-bold uppercase tracking-widest text-muted mb-3 ml-1">Available Times — Marcus Reed</p>
|
||||
<div class="flex gap-3 overflow-x-auto hide-scrollbar py-1">
|
||||
<button class="bg-surface border border-line px-6 py-4 rounded-xl text-sm font-medium shrink-0 min-w-[100px]">10:00 AM</button>
|
||||
<button class="bg-accent/10 border-2 border-accent px-6 py-4 rounded-xl text-sm font-bold shrink-0 min-w-[100px]">11:30 AM</button>
|
||||
<button class="bg-surface border border-line px-6 py-4 rounded-xl text-sm font-medium shrink-0 min-w-[100px]">1:00 PM</button>
|
||||
<button class="bg-surface border border-line px-6 py-4 rounded-xl text-sm font-medium shrink-0 min-w-[100px]">3:15 PM</button>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- New Selection Summary -->
|
||||
<section class="border-t border-line pt-6">
|
||||
<div class="flex items-center justify-between">
|
||||
<span class="text-xs text-muted uppercase tracking-widest font-bold">New Time</span>
|
||||
<span class="text-sm font-bold">Wed, Oct 16 • 11:30 AM</span>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<button onclick="location.href='25-NextChair - Customer - Appointment Details.html'" class="w-full bg-ink text-white py-5 rounded-full font-bold uppercase tracking-widest hover:bg-black transition-all shadow-lg shadow-ink/10">
|
||||
Confirm Reschedule
|
||||
</button>
|
||||
</main>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
Reference in new issue
Block a user