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,178 @@
|
||||
<!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>Staff Details — TrimTime Admin</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>
|
||||
</head>
|
||||
<body class="bg-stone text-ink min-h-screen pb-32">
|
||||
|
||||
<!-- NOTE: New screen. Tapping a staff row on
|
||||
"12-NextChair - Owner - Team Manag.html" had no destination —
|
||||
see docs/implementation-plan.md §6. -->
|
||||
|
||||
<header class="fixed top-0 left-0 right-0 z-50 px-6 py-6 bg-white/80 backdrop-blur-md border-b border-line flex items-center justify-between">
|
||||
<button onclick="history.back()" class="w-10 h-10 rounded-full border border-line flex items-center justify-center">
|
||||
<i class="fa-solid fa-arrow-left text-sm"></i>
|
||||
</button>
|
||||
<h1 class="text-lg font-bold tracking-tight">Staff Details</h1>
|
||||
<button class="w-10 h-10 rounded-full border border-line flex items-center justify-center">
|
||||
<i class="fa-solid fa-pen text-xs"></i>
|
||||
</button>
|
||||
</header>
|
||||
|
||||
<main class="pt-28 px-6 space-y-6">
|
||||
|
||||
<!-- Profile Overview -->
|
||||
<div class="bg-white p-6 rounded-jumbo border border-line shadow-sm flex flex-col items-center text-center">
|
||||
<img src="https://storage.googleapis.com/uxpilot-auth.appspot.com/avatars/avatar-2.jpg" class="w-24 h-24 rounded-full border-4 border-stone mb-4" alt="Marcus Reed">
|
||||
<h2 class="text-2xl font-bold">Marcus Reed</h2>
|
||||
<p class="text-sm text-accent font-bold uppercase tracking-widest mt-1">Master Barber • Active</p>
|
||||
<p class="text-xs text-muted mt-2">Joined Jan 2023</p>
|
||||
</div>
|
||||
|
||||
<!-- Role & Permissions -->
|
||||
<section class="space-y-3">
|
||||
<h3 class="text-[10px] font-bold uppercase tracking-widest text-muted ml-1">Role & Permissions</h3>
|
||||
<div class="bg-white rounded-jumbo border border-line shadow-sm divide-y divide-line">
|
||||
<div class="px-6 py-5">
|
||||
<label class="block text-[10px] font-bold uppercase tracking-widest text-muted mb-2">Role</label>
|
||||
<select class="w-full bg-stone border border-line rounded-xl px-4 py-3 text-sm font-bold outline-none focus:border-accent transition-colors">
|
||||
<option>Barber</option>
|
||||
<option selected>Owner / Administrator</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="px-6 py-5 flex items-center justify-between">
|
||||
<div>
|
||||
<p class="text-sm font-bold">Manage business settings</p>
|
||||
<p class="text-xs text-muted mt-0.5">Services, booking rules, loyalty</p>
|
||||
</div>
|
||||
<label class="relative inline-flex items-center cursor-pointer shrink-0 ml-4">
|
||||
<input type="checkbox" class="sr-only peer" checked>
|
||||
<div class="w-11 h-6 bg-line rounded-full peer peer-checked:bg-accent transition-colors relative after:content-[''] after:absolute after:top-0.5 after:left-0.5 after:bg-white after:rounded-full after:h-5 after:w-5 after:transition-all peer-checked:after:translate-x-5"></div>
|
||||
</label>
|
||||
</div>
|
||||
<div class="px-6 py-5 flex items-center justify-between">
|
||||
<div>
|
||||
<p class="text-sm font-bold">Manage staff & permissions</p>
|
||||
</div>
|
||||
<label class="relative inline-flex items-center cursor-pointer shrink-0 ml-4">
|
||||
<input type="checkbox" class="sr-only peer" checked>
|
||||
<div class="w-11 h-6 bg-line rounded-full peer peer-checked:bg-accent transition-colors relative after:content-[''] after:absolute after:top-0.5 after:left-0.5 after:bg-white after:rounded-full after:h-5 after:w-5 after:transition-all peer-checked:after:translate-x-5"></div>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Services Provided -->
|
||||
<section class="space-y-3">
|
||||
<h3 class="text-[10px] font-bold uppercase tracking-widest text-muted ml-1">Services Provided</h3>
|
||||
<div class="bg-white rounded-jumbo border border-line shadow-sm divide-y divide-line">
|
||||
<label class="px-6 py-4 flex items-center justify-between cursor-pointer">
|
||||
<span class="text-sm font-medium">Haircut & Style</span>
|
||||
<input type="checkbox" checked class="w-5 h-5 rounded border-line text-accent focus:ring-accent">
|
||||
</label>
|
||||
<label class="px-6 py-4 flex items-center justify-between cursor-pointer">
|
||||
<span class="text-sm font-medium">Skinfade / Taper & Style</span>
|
||||
<input type="checkbox" checked class="w-5 h-5 rounded border-line text-accent focus:ring-accent">
|
||||
</label>
|
||||
<label class="px-6 py-4 flex items-center justify-between cursor-pointer">
|
||||
<span class="text-sm font-medium">Haircut & Beard</span>
|
||||
<input type="checkbox" checked class="w-5 h-5 rounded border-line text-accent focus:ring-accent">
|
||||
</label>
|
||||
<label class="px-6 py-4 flex items-center justify-between cursor-pointer">
|
||||
<span class="text-sm font-medium">Standard OAP Cut</span>
|
||||
<input type="checkbox" class="w-5 h-5 rounded border-line text-accent focus:ring-accent">
|
||||
</label>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Availability -->
|
||||
<section class="space-y-3">
|
||||
<h3 class="text-[10px] font-bold uppercase tracking-widest text-muted ml-1">Availability</h3>
|
||||
<div class="bg-white rounded-jumbo border border-line overflow-hidden">
|
||||
<a href="31-NextChair - Staff - Working Hours.html" class="w-full px-6 py-5 flex items-center justify-between border-b border-line hover:bg-stone transition-all">
|
||||
<div class="flex items-center gap-4">
|
||||
<div class="w-8 h-8 bg-stone rounded-lg flex items-center justify-center text-muted"><i class="fa-solid fa-clock text-xs"></i></div>
|
||||
<span class="text-sm font-bold">Working Hours</span>
|
||||
</div>
|
||||
<i class="fa-solid fa-chevron-right text-[10px] text-muted"></i>
|
||||
</a>
|
||||
<a href="32-NextChair - Staff - Breaks.html" class="w-full px-6 py-5 flex items-center justify-between border-b border-line hover:bg-stone transition-all">
|
||||
<div class="flex items-center gap-4">
|
||||
<div class="w-8 h-8 bg-stone rounded-lg flex items-center justify-center text-muted"><i class="fa-solid fa-mug-hot text-xs"></i></div>
|
||||
<span class="text-sm font-bold">Manage Breaks</span>
|
||||
</div>
|
||||
<i class="fa-solid fa-chevron-right text-[10px] text-muted"></i>
|
||||
</a>
|
||||
<a href="33-NextChair - Staff - Time Off.html" class="w-full px-6 py-5 flex items-center justify-between hover:bg-stone transition-all">
|
||||
<div class="flex items-center gap-4">
|
||||
<div class="w-8 h-8 bg-stone rounded-lg flex items-center justify-center text-muted"><i class="fa-solid fa-plane-arrival text-xs"></i></div>
|
||||
<span class="text-sm font-bold">Time Off / Vacation</span>
|
||||
</div>
|
||||
<i class="fa-solid fa-chevron-right text-[10px] text-muted"></i>
|
||||
</a>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Contact -->
|
||||
<section class="space-y-3">
|
||||
<h3 class="text-[10px] font-bold uppercase tracking-widest text-muted ml-1">Contact</h3>
|
||||
<div class="grid grid-cols-2 gap-3">
|
||||
<a href="tel:123456789" class="bg-white py-4 rounded-xl border border-line flex items-center justify-center gap-2 font-bold text-sm">
|
||||
<i class="fa-solid fa-phone text-accent"></i> Call
|
||||
</a>
|
||||
<a href="mailto:marcus@blakeheritage.co.uk" class="bg-white py-4 rounded-xl border border-line flex items-center justify-center gap-2 font-bold text-sm">
|
||||
<i class="fa-solid fa-envelope text-accent"></i> Email
|
||||
</a>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Danger Zone -->
|
||||
<section class="pb-2">
|
||||
<button class="w-full py-4 border-2 border-dashed border-red-200 rounded-xl text-[10px] font-bold uppercase tracking-widest text-red-400 hover:border-red-500 hover:text-red-500 transition-all flex items-center justify-center gap-2">
|
||||
<i class="fa-solid fa-user-slash"></i> Deactivate Staff Member
|
||||
</button>
|
||||
</section>
|
||||
</main>
|
||||
|
||||
<!-- Admin Navigation -->
|
||||
<nav class="fixed bottom-0 left-0 right-0 z-50 bg-[#0c0c0c] text-gray-400 py-4 px-10 border-t border-white/5 flex items-center justify-between">
|
||||
<a href="5-NextChair - Owner - Calendar.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="2-NextChair - Staff - Current.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="12-NextChair - Owner - Team Manag.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="13-NextChair - Owner - Settings.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