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
Executable
+94
@@ -0,0 +1,94 @@
|
||||
<!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>Sign In — TrimTime</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: '2rem', tile: '1rem' }
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body class="bg-stone text-ink min-h-screen flex flex-col p-6">
|
||||
|
||||
<div class="flex-1 flex flex-col justify-center max-w-md mx-auto w-full">
|
||||
<header class="mb-12">
|
||||
<div class="w-16 h-16 bg-ink text-white rounded-[1.25rem] flex items-center justify-center text-3xl mb-8 shadow-xl shadow-ink/20">
|
||||
<i class="fa-solid fa-scissors"></i>
|
||||
</div>
|
||||
<h1 class="text-4xl font-bold tracking-tight mb-2">Welcome</h1>
|
||||
<p class="text-muted leading-relaxed">Please enter your credentials to access your appointments.</p>
|
||||
</header>
|
||||
|
||||
<form class="space-y-4">
|
||||
<div>
|
||||
<label class="block text-[10px] font-bold uppercase tracking-[0.2em] text-muted mb-2 ml-1">Email Address</label>
|
||||
<div class="relative">
|
||||
<i class="fa-regular fa-envelope absolute left-5 top-1/2 -translate-y-1/2 text-muted"></i>
|
||||
<input type="email" placeholder="name@example.com" class="w-full bg-white border border-line rounded-2xl pl-12 pr-5 py-4 focus:ring-2 focus:ring-ink outline-none transition-all">
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<div class="flex justify-between items-center mb-2 ml-1">
|
||||
<label class="text-[10px] font-bold uppercase tracking-[0.2em] text-muted">Password</label>
|
||||
<a href="ForgotPassword__mobile.html" class="text-[10px] font-bold uppercase tracking-[0.2em] text-muted">Forgot?</a>
|
||||
</div>
|
||||
<div class="relative">
|
||||
<i class="fa-solid fa-lock absolute left-5 top-1/2 -translate-y-1/2 text-muted"></i>
|
||||
<input type="password" placeholder="••••••••" class="w-full bg-white border border-line rounded-2xl pl-12 pr-12 py-4 focus:ring-2 focus:ring-ink outline-none transition-all">
|
||||
<button type="button" class="absolute right-4 top-1/2 -translate-y-1/2 text-muted hover:text-ink">
|
||||
<i class="fa-regular fa-eye text-sm"></i>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<button type="button" onclick="location.href='NextChair - Customer - Home__mobile.html'" class="w-full bg-ink text-white py-5 rounded-full font-bold uppercase tracking-[0.15em] hover:bg-black transition-all shadow-xl shadow-ink/10 mt-6">
|
||||
Sign In
|
||||
</button>
|
||||
</form>
|
||||
|
||||
<div class="mt-10">
|
||||
<div class="relative flex items-center justify-center mb-8">
|
||||
<div class="absolute inset-0 flex items-center"><div class="w-full border-t border-line"></div></div>
|
||||
<span class="relative bg-stone px-4 text-[10px] font-bold text-muted uppercase tracking-[0.2em]">Or continue with</span>
|
||||
</div>
|
||||
|
||||
<div class="grid grid-cols-2 gap-4">
|
||||
<button class="flex items-center justify-center gap-3 bg-white border border-line py-4 rounded-2xl hover:bg-stone/50 transition-all font-bold text-xs uppercase tracking-widest">
|
||||
<i class="fa-brands fa-google text-red-500"></i> Google
|
||||
</button>
|
||||
<button class="flex items-center justify-center gap-3 bg-white border border-line py-4 rounded-2xl hover:bg-stone/50 transition-all font-bold text-xs uppercase tracking-widest">
|
||||
<i class="fa-brands fa-apple"></i> Apple
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<p class="mt-12 text-center text-sm text-muted">
|
||||
Don't have an account? <a href="CreateAccount__mobile.html" class="text-ink font-bold border-b-2 border-ink">Create one</a>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
Reference in new issue
Block a user