207 lines
13 KiB
HTML
207 lines
13 KiB
HTML
<!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>Booking Rules — 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. Referenced by the "Update Rules" button on
|
|
"21-NextChair - Owner - Business D.html" (the Admin Dashboard) and
|
|
the "Booking Windows" row on "13-NextChair - Owner - Settings.html",
|
|
neither of which had a destination — see docs/implementation-plan.md §6. -->
|
|
|
|
<header class="bg-white border-b border-line px-6 pt-12 pb-5 sticky top-0 z-50 flex items-center justify-between">
|
|
<div class="flex items-center gap-4">
|
|
<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-xl font-bold tracking-tight">Booking Rules</h1>
|
|
</div>
|
|
<button class="bg-accent text-white text-xs font-bold uppercase tracking-widest px-5 py-2.5 rounded-full">Save</button>
|
|
</header>
|
|
|
|
<main class="mt-6 px-6 space-y-8">
|
|
|
|
<!-- Booking Window -->
|
|
<section class="space-y-3">
|
|
<h3 class="text-[10px] font-bold uppercase tracking-widest text-muted ml-1">Booking Window</h3>
|
|
<div class="bg-white rounded-jumbo border border-line shadow-sm divide-y divide-line">
|
|
<div class="px-6 py-5 flex items-center justify-between">
|
|
<div>
|
|
<p class="text-sm font-bold">Minimum notice</p>
|
|
<p class="text-xs text-muted mt-0.5">How soon before a slot a booking can be made</p>
|
|
</div>
|
|
<div class="flex items-center gap-3 shrink-0 ml-4">
|
|
<button class="w-8 h-8 rounded-full border border-line flex items-center justify-center text-sm font-bold">−</button>
|
|
<span class="text-sm font-bold w-16 text-center">2 hours</span>
|
|
<button class="w-8 h-8 rounded-full border border-line flex items-center justify-center text-sm font-bold">+</button>
|
|
</div>
|
|
</div>
|
|
<div class="px-6 py-5 flex items-center justify-between">
|
|
<div>
|
|
<p class="text-sm font-bold">Maximum advance booking</p>
|
|
<p class="text-xs text-muted mt-0.5">How far ahead customers can book</p>
|
|
</div>
|
|
<div class="flex items-center gap-3 shrink-0 ml-4">
|
|
<button class="w-8 h-8 rounded-full border border-line flex items-center justify-center text-sm font-bold">−</button>
|
|
<span class="text-sm font-bold w-16 text-center">60 days</span>
|
|
<button class="w-8 h-8 rounded-full border border-line flex items-center justify-center text-sm font-bold">+</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
|
|
<!-- Cancellation & Rescheduling -->
|
|
<section class="space-y-3">
|
|
<h3 class="text-[10px] font-bold uppercase tracking-widest text-muted ml-1">Cancellation & Rescheduling</h3>
|
|
<div class="bg-white rounded-jumbo border border-line shadow-sm divide-y divide-line">
|
|
<div class="px-6 py-5 flex items-center justify-between">
|
|
<p class="text-sm font-bold">Free cancellation window</p>
|
|
<div class="flex items-center gap-3 shrink-0 ml-4">
|
|
<button class="w-8 h-8 rounded-full border border-line flex items-center justify-center text-sm font-bold">−</button>
|
|
<span class="text-sm font-bold w-16 text-center">24 hrs</span>
|
|
<button class="w-8 h-8 rounded-full border border-line flex items-center justify-center text-sm font-bold">+</button>
|
|
</div>
|
|
</div>
|
|
<div class="px-6 py-5 flex items-center justify-between">
|
|
<p class="text-sm font-bold">Free reschedule window</p>
|
|
<div class="flex items-center gap-3 shrink-0 ml-4">
|
|
<button class="w-8 h-8 rounded-full border border-line flex items-center justify-center text-sm font-bold">−</button>
|
|
<span class="text-sm font-bold w-16 text-center">24 hrs</span>
|
|
<button class="w-8 h-8 rounded-full border border-line flex items-center justify-center text-sm font-bold">+</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
|
|
<!-- Scheduling -->
|
|
<section class="space-y-3">
|
|
<h3 class="text-[10px] font-bold uppercase tracking-widest text-muted ml-1">Scheduling</h3>
|
|
<div class="bg-white rounded-jumbo border border-line shadow-sm divide-y divide-line">
|
|
<div class="px-6 py-5 flex items-center justify-between">
|
|
<p class="text-sm font-bold">Appointment slot interval</p>
|
|
<select class="bg-stone border border-line rounded-lg px-3 py-2 text-xs font-bold outline-none">
|
|
<option>15 min</option>
|
|
<option selected>30 min</option>
|
|
<option>45 min</option>
|
|
<option>60 min</option>
|
|
</select>
|
|
</div>
|
|
<div class="px-6 py-5 flex items-center justify-between">
|
|
<p class="text-sm font-bold">Buffer before appointments</p>
|
|
<div class="flex items-center gap-3 shrink-0 ml-4">
|
|
<button class="w-8 h-8 rounded-full border border-line flex items-center justify-center text-sm font-bold">−</button>
|
|
<span class="text-sm font-bold w-16 text-center">0 min</span>
|
|
<button class="w-8 h-8 rounded-full border border-line flex items-center justify-center text-sm font-bold">+</button>
|
|
</div>
|
|
</div>
|
|
<div class="px-6 py-5 flex items-center justify-between">
|
|
<p class="text-sm font-bold">Buffer after appointments</p>
|
|
<div class="flex items-center gap-3 shrink-0 ml-4">
|
|
<button class="w-8 h-8 rounded-full border border-line flex items-center justify-center text-sm font-bold">−</button>
|
|
<span class="text-sm font-bold w-16 text-center">5 min</span>
|
|
<button class="w-8 h-8 rounded-full border border-line flex items-center justify-center text-sm font-bold">+</button>
|
|
</div>
|
|
</div>
|
|
<div class="px-6 py-5 flex items-center justify-between">
|
|
<p class="text-sm font-bold">Max appointments per day</p>
|
|
<div class="flex items-center gap-3 shrink-0 ml-4">
|
|
<button class="w-8 h-8 rounded-full border border-line flex items-center justify-center text-sm font-bold">−</button>
|
|
<span class="text-sm font-bold w-16 text-center">No limit</span>
|
|
<button class="w-8 h-8 rounded-full border border-line flex items-center justify-center text-sm font-bold">+</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
|
|
<!-- Customer Options -->
|
|
<section class="space-y-3">
|
|
<h3 class="text-[10px] font-bold uppercase tracking-widest text-muted ml-1">Customer Options</h3>
|
|
<div class="bg-white rounded-jumbo border border-line shadow-sm divide-y divide-line">
|
|
<div class="px-6 py-5 flex items-center justify-between">
|
|
<div>
|
|
<p class="text-sm font-bold">Customers can choose a barber</p>
|
|
<p class="text-xs text-muted mt-0.5">If off, "Anyone" is assigned automatically</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">Allow guest bookings</p>
|
|
<p class="text-xs text-muted mt-0.5">Let customers book without an account</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">Require approval for new bookings</p>
|
|
<p class="text-xs text-muted mt-0.5">Bookings wait for staff confirmation</p>
|
|
</div>
|
|
<label class="relative inline-flex items-center cursor-pointer shrink-0 ml-4">
|
|
<input type="checkbox" class="sr-only peer">
|
|
<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 opacity-50">
|
|
<div>
|
|
<p class="text-sm font-bold">Require deposit</p>
|
|
<p class="text-xs text-muted mt-0.5">Coming soon</p>
|
|
</div>
|
|
<label class="relative inline-flex items-center shrink-0 ml-4">
|
|
<input type="checkbox" class="sr-only peer" disabled>
|
|
<div class="w-11 h-6 bg-line rounded-full 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"></div>
|
|
</label>
|
|
</div>
|
|
</div>
|
|
</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="3-NextChair - Staff - Customers.html" class="flex flex-col items-center gap-1 hover:text-white transition-colors">
|
|
<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 text-white">
|
|
<i class="fa-solid fa-gear text-xl"></i>
|
|
<span class="text-[10px] font-medium">Settings</span>
|
|
</a>
|
|
</nav>
|
|
|
|
</body>
|
|
</html>
|