SMOS / modules /SmOS_CC /reserve.html
0001AMA's picture
Add Mollie card checkout for SmOS_CC delivery and collection, plus staff station screens.
ddd5681 verified
Raw
History Blame Contribute Delete
7.11 kB
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover">
<meta id="meta-theme-color" name="theme-color" content="#070707">
<script>
(function () {
try {
var k = "corner-cafe-theme";
var t = localStorage.getItem(k);
var th = t === "light" ? "light" : "dark";
document.documentElement.setAttribute("data-theme", th);
var meta = document.getElementById("meta-theme-color");
if (meta) meta.setAttribute("content", th === "light" ? "#f6f3ee" : "#070707");
} catch (e) {
document.documentElement.setAttribute("data-theme", "dark");
}
})();
</script>
<title>Corner Cafe | Reserve a table</title>
<meta name="description" content="Smart table reservation — pick your seat on the floor plan or get merged table suggestions.">
<link rel="icon" type="image/svg+xml" href="assets/logo-c.svg?v=1.17">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link
rel="stylesheet"
href="https://fonts.googleapis.com/css2?family=Manrope:wght@400;500;600;700&family=Playfair+Display:wght@500;600;700&display=swap">
<link rel="stylesheet" href="styles.css?v=11">
</head>
<body>
<div class="app-shell">
<header class="app-header">
<a class="app-back" href="./">← Back</a>
<button type="button" class="theme-toggle" data-theme-toggle aria-label="Switch theme" title="Theme">
<svg class="theme-icon theme-icon-sun" xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true">
<circle cx="12" cy="12" r="4"/>
<path d="M12 2v2M12 20v2M4.93 4.93l1.41 1.41M17.66 17.66l1.41 1.41M2 12h2M20 12h2M6.34 17.66l-1.41 1.41M19.07 4.93l-1.41 1.41"/>
</svg>
<svg class="theme-icon theme-icon-moon" xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true">
<path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"/>
</svg>
</button>
</header>
<main class="app-main app-main--wide" data-reservation>
<div class="app-hero app-hero--compact" data-res-hide-on-done>
<h1 class="app-hero__title">Reserve a table</h1>
<p class="app-hero__lead">Hold a table free — no payment until you come in. Cafe daytime and Indian cuisine evenings (5:00pm–10:00pm).</p>
</div>
<div class="res-toolbar" data-res-hide-on-done>
<div class="res-toolbar__group">
<span class="res-toolbar__label">Guests</span>
<div class="res-party-stepper" role="group" aria-label="Party size">
<button type="button" class="res-party-btn" data-res-party-down aria-label="Fewer guests"></button>
<span class="res-party-val" data-res-party aria-live="polite">2</span>
<button type="button" class="res-party-btn" data-res-party-up aria-label="More guests">+</button>
</div>
</div>
<label class="res-toolbar__group res-toolbar__field">
<span class="res-toolbar__label">Date</span>
<input type="date" data-res-date required>
</label>
<label class="res-toolbar__group res-toolbar__field res-toolbar__field--wide">
<span class="res-toolbar__label">Expected arrival</span>
<select data-res-arrival required aria-label="Expected arrival window"></select>
</label>
</div>
<div class="res-mode-tabs" role="tablist" data-res-hide-on-done>
<button type="button" class="res-mode-tab is-active" data-res-mode="map" role="tab" aria-selected="true">Pick on floor plan</button>
<button type="button" class="res-mode-tab" data-res-mode="suggest" role="tab" aria-selected="false">Smart suggestions</button>
</div>
<div data-res-panel-map data-res-hide-on-done>
<div data-res-map class="res-map-wrap"></div>
<div class="res-map-actions">
<button type="button" class="res-link-btn" data-res-suggest-btn>Auto-pick best table</button>
<button type="button" class="res-link-btn" data-res-clear>Clear selection</button>
</div>
</div>
<div data-res-panel-suggest hidden data-res-hide-on-done>
<div data-res-suggestions class="res-suggestions-wrap"></div>
</div>
<div data-res-selection class="res-selection" hidden data-res-hide-on-done></div>
<form class="res-form checkout-block" data-res-form data-res-hide-on-done>
<h2 class="checkout-block__title">Your details</h2>
<label class="checkout-field">
<span>Name</span>
<input type="text" name="name" required autocomplete="name">
</label>
<fieldset class="res-confirm-via">
<legend>Reservation confirmation <em class="field-optional">(optional)</em></legend>
<label class="pay-option">
<input type="radio" name="confirm_via" value="none" checked data-res-confirm-via>
<span class="pay-option__body">
<span class="pay-option__name">No confirmation</span>
</span>
</label>
<label class="pay-option">
<input type="radio" name="confirm_via" value="email" data-res-confirm-via>
<span class="pay-option__body">
<span class="pay-option__name">Email</span>
<input type="email" name="email" autocomplete="email" data-res-email placeholder="you@example.com" aria-label="Email address" hidden disabled>
</span>
</label>
<label class="pay-option">
<input type="radio" name="confirm_via" value="phone" data-res-confirm-via>
<span class="pay-option__body">
<span class="pay-option__name">Phone</span>
<input type="tel" name="phone" autocomplete="tel" data-res-phone placeholder="Mobile number" aria-label="Phone number" hidden disabled>
</span>
</label>
</fieldset>
<label class="checkout-field">
<span>Notes (optional)</span>
<textarea name="notes" rows="2" placeholder="High chair, wheelchair access, celebration…"></textarea>
</label>
<p class="res-form-error" data-res-form-error hidden role="alert"></p>
<button type="submit" class="checkout-submit">Confirm reservation</button>
</form>
<div class="checkout-done" data-res-done hidden>
<h2 class="checkout-block__title">Reservation confirmed</h2>
<p class="checkout-done__lead" data-res-done-lead></p>
<div data-res-done-detail></div>
</div>
</main>
</div>
<script src="app.js?v=20" defer></script>
<script src="admin-config.js?v=1" defer></script>
<script src="smos-api.js?v=4" defer></script>
<script src="reservation-config.js?v=4" defer></script>
<script src="reservation.js?v=8" defer></script>
</body>
</html>