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
+140
@@ -0,0 +1,140 @@
|
||||
<!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>Appointments</title>
|
||||
<script src="https://cdn.tailwindcss.com"></script>
|
||||
<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: {
|
||||
appbg: '#f8f9f8',
|
||||
cardbg: '#ffffff',
|
||||
ink: '#111b15',
|
||||
muted: '#8a948e',
|
||||
line: '#eaeaeb',
|
||||
brandbtn: '#4887a0',
|
||||
pillbg: '#e4e6e5'
|
||||
},
|
||||
fontFamily: { sans: ['Inter', 'sans-serif'] },
|
||||
boxShadow: {
|
||||
'card': '0 2px 10px rgba(0, 0, 0, 0.03)'
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body class="bg-appbg text-ink min-h-screen pb-28 font-sans">
|
||||
|
||||
<!-- Header -->
|
||||
<header class="px-5 py-6 bg-appbg sticky top-0 z-40">
|
||||
<h1 class="text-3xl font-bold tracking-tight">Appointments</h1>
|
||||
</header>
|
||||
|
||||
<main class="px-5 max-w-md mx-auto">
|
||||
|
||||
<!-- Section Header -->
|
||||
<div class="py-4">
|
||||
<h2 class="text-sm font-medium text-muted uppercase tracking-wide">Finished Appointments</h2>
|
||||
</div>
|
||||
|
||||
<!-- Appointments List -->
|
||||
<div class="space-y-4">
|
||||
|
||||
<!-- Appointment Card 1 -->
|
||||
<div class="bg-cardbg rounded-2xl shadow-card p-4 flex">
|
||||
<!-- Left Side Details -->
|
||||
<div class="flex-1 pr-4">
|
||||
<span class="inline-block px-3 py-1 bg-pillbg text-muted text-xs font-medium rounded-full mb-3">Finished</span>
|
||||
|
||||
<h3 class="text-[14px] font-semibold leading-tight text-ink mb-1">Haircut & Style (Skin fade/Taper not included)</h3>
|
||||
<p class="text-sm text-muted mb-3">with Jay The Barber</p>
|
||||
|
||||
<button class="bg-brandbtn text-white px-5 py-2.5 rounded-lg text-sm font-medium hover:bg-opacity-90 transition-opacity">
|
||||
Book again
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<!-- Right Side Date/Time -->
|
||||
<div class="w-20 pl-4 border-l border-line flex flex-col items-center justify-center text-center">
|
||||
<span class="text-[15px] text-ink mb-1">August</span>
|
||||
<span class="text-4xl font-light text-ink mb-2">1</span>
|
||||
<span class="text-[15px] text-ink">11:55</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Appointment Card 2 -->
|
||||
<div class="bg-cardbg rounded-2xl shadow-card p-4 flex">
|
||||
<!-- Left Side Details -->
|
||||
<div class="flex-1 pr-4">
|
||||
<span class="inline-block px-3 py-1 bg-pillbg text-muted text-xs font-medium rounded-full mb-3">Finished</span>
|
||||
|
||||
<h3 class="text-[14px] font-semibold leading-tight text-ink mb-1">Haircut & Style (Skin fade/Taper not included)</h3>
|
||||
<p class="text-sm text-muted mb-3">with Jay The Barber</p>
|
||||
|
||||
<button class="bg-brandbtn text-white px-5 py-2.5 rounded-lg text-sm font-medium hover:bg-opacity-90 transition-opacity">
|
||||
Book again
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<!-- Right Side Date/Time -->
|
||||
<div class="w-20 pl-4 border-l border-line flex flex-col items-center justify-center text-center">
|
||||
<span class="text-[15px] text-ink mb-1">June</span>
|
||||
<span class="text-4xl font-light text-ink mb-2">17</span>
|
||||
<span class="text-[15px] text-ink">10:00</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Appointment Card 3 -->
|
||||
<div class="bg-cardbg rounded-2xl shadow-card p-4 flex">
|
||||
<!-- Left Side Details -->
|
||||
<div class="flex-1 pr-4">
|
||||
<span class="inline-block px-3 py-1 bg-pillbg text-muted text-xs font-medium rounded-full mb-3">Cancelled</span>
|
||||
|
||||
<h3 class="text-[14px] font-semibold leading-tight text-ink mb-1">Haircut & Style (Skin fade/Taper not included)</h3>
|
||||
<p class="text-sm text-muted mb-3">with Jay The Barber</p>
|
||||
|
||||
<button class="bg-brandbtn text-white px-5 py-2.5 rounded-lg text-sm font-medium hover:bg-opacity-90 transition-opacity">
|
||||
Book again
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<!-- Right Side Date/Time -->
|
||||
<div class="w-20 pl-4 border-l border-line flex flex-col items-center justify-center text-center">
|
||||
<span class="text-[15px] text-ink mb-1">April</span>
|
||||
<span class="text-4xl font-light text-ink mb-2">15</span>
|
||||
<span class="text-[15px] text-ink">10:00</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</main>
|
||||
|
||||
<!-- Bottom Navigation -->
|
||||
<nav class="fixed bottom-0 left-0 right-0 z-50 bg-white border-t border-line py-4 px-10 flex justify-between items-center">
|
||||
<a href="Home__mobile.html" class="flex flex-col items-center gap-1 text-muted hover:text-ink transition-colors">
|
||||
<i class="fa-solid fa-house text-xl"></i>
|
||||
<span class="text-[10px] font-bold uppercase tracking-widest">Home</span>
|
||||
</a>
|
||||
<a href="Appointments__mobile.html" class="flex flex-col items-center gap-1 text-ink">
|
||||
<i class="fa-solid fa-calendar-check text-xl"></i>
|
||||
<span class="text-[10px] font-bold uppercase tracking-widest">Bookings</span>
|
||||
</a>
|
||||
<a href="Settings__mobile.html" class="flex flex-col items-center gap-1 text-muted hover:text-ink transition-colors">
|
||||
<i class="fa-solid fa-user text-xl"></i>
|
||||
<span class="text-[10px] font-bold uppercase tracking-widest">Settings</span>
|
||||
</a>
|
||||
</nav>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
Reference in new issue
Block a user