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
+88
@@ -0,0 +1,88 @@
|
||||
<!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>Clients — TrimTime Staff</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: { ink: '#111b15', stone: '#f4f6f4', surface: '#ffffff', muted: '#6c7870', line: '#e1e7e2', accent: '#10b981' },
|
||||
fontFamily: { sans: ['Inter', 'sans-serif'] },
|
||||
borderRadius: { jumbo: '1rem', tile: '0.75rem' }
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body class="bg-stone text-ink min-h-screen pb-32">
|
||||
|
||||
<header class="px-6 py-6 bg-white border-b border-line sticky top-0 z-40">
|
||||
<h1 class="text-2xl font-bold tracking-tight mb-6">Clients</h1>
|
||||
<div class="relative">
|
||||
<i class="fa-solid fa-magnifying-glass absolute left-4 top-1/2 -translate-y-1/2 text-muted"></i>
|
||||
<input type="text" placeholder="Search by name or email..." class="w-full bg-stone border border-line rounded-xl pl-12 pr-4 py-4 focus:ring-2 focus:ring-ink outline-none transition-all text-sm">
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<main class="mt-6 px-6 space-y-3">
|
||||
<!-- Client Row -->
|
||||
<button class="w-full bg-white p-4 rounded-jumbo border border-line flex items-center gap-4 hover:border-ink transition-all text-left">
|
||||
<img src="https://storage.googleapis.com/uxpilot-auth.appspot.com/avatars/avatar-1.jpg" class="w-12 h-12 rounded-full border border-line" alt="Client">
|
||||
<div class="flex-1">
|
||||
<h3 class="text-sm font-bold">Alex Chen</h3>
|
||||
<p class="text-[10px] text-muted uppercase tracking-widest mt-0.5">8 Appointments • 8 Stamps</p>
|
||||
</div>
|
||||
<i class="fa-solid fa-chevron-right text-[10px] text-muted"></i>
|
||||
</button>
|
||||
|
||||
<button class="w-full bg-white p-4 rounded-jumbo border border-line flex items-center gap-4 hover:border-ink transition-all text-left">
|
||||
<img src="https://storage.googleapis.com/uxpilot-auth.appspot.com/avatars/avatar-4.jpg" class="w-12 h-12 rounded-full border border-line" alt="Client">
|
||||
<div class="flex-1">
|
||||
<h3 class="text-sm font-bold">Sarah Miller</h3>
|
||||
<p class="text-[10px] text-muted uppercase tracking-widest mt-0.5">3 Appointments • 3 Stamps</p>
|
||||
</div>
|
||||
<i class="fa-solid fa-chevron-right text-[10px] text-muted"></i>
|
||||
</button>
|
||||
|
||||
<button class="w-full bg-white p-4 rounded-jumbo border border-line flex items-center gap-4 hover:border-ink transition-all text-left">
|
||||
<img src="https://storage.googleapis.com/uxpilot-auth.appspot.com/avatars/avatar-8.jpg" class="w-12 h-12 rounded-full border border-line" alt="Client">
|
||||
<div class="flex-1">
|
||||
<h3 class="text-sm font-bold">David Park</h3>
|
||||
<p class="text-[10px] text-muted uppercase tracking-widest mt-0.5">12 Appointments • 2 Rewards</p>
|
||||
</div>
|
||||
<i class="fa-solid fa-chevron-right text-[10px] text-muted"></i>
|
||||
</button>
|
||||
</main>
|
||||
|
||||
<!-- Staff Navigation -->
|
||||
<nav class="fixed bottom-0 left-0 right-0 z-50 bg-[#0c0c0c] text-gray-400 py-2 px-5 border-t border-white/5 flex items-center justify-between">
|
||||
<a href="StaffCalendar__mobile.html" class="flex flex-col items-center gap-1 hover:text-white transition-colors">
|
||||
<i class="fa-solid fa-calendar-days text-xl"></i>
|
||||
<span class="text-[10px] font-medium">Calendar</span>
|
||||
</a>
|
||||
<a href="StaffCurrent__mobile.html" class="flex flex-col items-center gap-1 hover:text-white transition-colors">
|
||||
<i class="fa-solid fa-scissors text-xl"></i>
|
||||
<span class="text-[10px] font-medium">Current</span>
|
||||
</a>
|
||||
<a href="StaffCustomers__mobile.html" class="flex flex-col items-center gap-1 text-white">
|
||||
<i class="fa-solid fa-users text-xl"></i>
|
||||
<span class="text-[10px] font-medium">Clients</span>
|
||||
</a>
|
||||
<a href="StaffSettings__mobile.html" class="flex flex-col items-center gap-1 hover:text-white transition-colors">
|
||||
<i class="fa-solid fa-gear text-xl"></i>
|
||||
<span class="text-[10px] font-medium">Settings</span>
|
||||
</a>
|
||||
</nav>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
Reference in new issue
Block a user