Restaurant Table Reservation Hero

Created November 12, 2025 • Updated May 18, 2026

Live Preview

Interactive preview of the landing page.

A modern, clean, and interactive restaurant table reservation booking interface. Built with vanilla HTML, CSS, and JavaScript – no dependencies required.

Features

  • Time Selection: Browse available dining times with disabled slots showing tooltips
  • Interactive Table Map: Visual floor plan with interactive table selection
  • Real-time Feedback: Instant confirmation messages when tables are booked
  • Responsive Design: Works perfectly on desktop, tablet, and mobile devices
  • Modern UI: Clean, minimalist design with smooth animations
  • Accessible: Fully accessible with keyboard navigation support

What’s Included

  • restaurant-hero.html – Complete standalone HTML file with embedded CSS and JavaScript

Quick Start

Simply open restaurant-hero.html in your web browser. No installation or build process required.

# Just open in browser
open restaurant-hero.html

Customization

Modify Available Tables

Edit the tables array in the JavaScript section to change table configuration:

const tables = [
    { id: 1, seats: 2, x: 60, y: 80 },
    { id: 2, seats: 4, x: 130, y: 70, reserved: true },
    // Add more tables...
];

Table Object Properties:

  • id – Table number (displayed on the map)
  • seats – Number of seats at the table
  • x – Horizontal position on the floor plan (0-380)
  • y – Vertical position on the floor plan (0-300)
  • reserved – Optional boolean to mark table as reserved

Adjust Time Slots

Modify the time buttons in the left section to add or remove available reservation times:

<div class="time-slot">
    <button class="time-btn" data-time="12:00">12:00</button>
</div>

To disable a time slot and add a tooltip:

<div class="time-slot">
    <button class="time-btn" data-time="12:30" disabled>12:30</button>
    <div class="tooltip">Fully Booked</div>
</div>

Change Colors

Update CSS variables for quick theme changes:

.time-btn.active {
    background: #2563eb;  /* Change to your brand color */
}

.table-circle {
    fill: #3b82f6;  /* Available table color */
}

Color Scheme

  • Active Time Slot: #2563eb (Blue)
  • Available Table: #3b82f6 (Blue)
  • Reserved Table: #fca5a5 (Light Red)
  • Text: #1a1a1a (Dark Gray)
  • Background: #f8f9fa (Light Gray)

Browser Support

Works on all modern browsers:

  • Chrome/Edge (latest)
  • Firefox (latest)
  • Safari (latest)
  • Mobile browsers

File Structure

restaurant-hero.html
├── HTML Structure
│   ├── Hero Container
│   ├── Left Section (Time Selection)
│   └── Right Section (Floor Plan)
├── CSS Styling
│   ├── Layout & Responsive
│   ├── Buttons & Interactions
│   └── Animations
└── JavaScript
    ├── Table Rendering
    ├── Time Selection Handler
    └── Table Selection & Confirmation

Key Functions

renderTables()

Dynamically generates the floor plan with all tables from the tables array.

selectTable(tableId, seats)

Handles table selection, shows confirmation message, and triggers animations.

Time Button Event Listeners

Manages active state for time slots and updates the selectedTime variable.

Responsive Breakpoints

  • Desktop: Full two-column layout (> 1024px)
  • Tablet: Single column layout with adjusted spacing (768px – 1024px)
  • Mobile: Optimized single column layout (< 768px)

Animation Details

  • Time Slot Hover: Smooth color and border transitions (0.2s)
  • Table Selection: Pulse animation with size scaling
  • Confirmation Message: Slide down animation with fade-in (0.3s)
  • Table Hover: Smooth shadow and size increase effect

Integration Tips

  1. Replace Company Name: Update the hero title to match your restaurant branding
  2. Adjust Layout Positions: Modify table x,y coordinates to match your actual floor plan
  3. Update Tooltips: Change tooltip messages to match your reservation policies
  4. Connect Backend: Wire up the confirmation logic to your booking system via API calls

Example Backend Integration

Add a form submission after table selection:

function selectTable(tableId, seats) {
    // ... existing code ...
    
    // Send to backend
    fetch('/api/reservations', {
        method: 'POST',
        headers: { 'Content-Type': 'application/json' },
        body: JSON.stringify({
            tableId: tableId,
            seats: seats,
            time: selectedTime,
            date: new Date().toISOString()
        })
    });
}

License

Free to use and modify for your restaurant or project.

Support

For questions or custom modifications, feel free to reach out. This component is designed to be easily customizable and maintainable.


Built with: HTML5 • CSS3 • Vanilla JavaScript Size: ~8KB (uncompressed) Dependencies: None

Price

$19

Premium

Included with purchase

  • Secure download from your Mudos Account after checkout.
Product type
UI Template
Version
1.0.0
License
Commercial
Includes
HTML, CSS, JavaScript, responsive preview
Download access
Lifetime
Update access
Not included
Support access
Lifetime
Sign in to buy

A Mudos account is required for licensed downloads and updates.

Live Preview

Secure checkout by Paddle. Downloads, licenses, and future eligible releases are managed from your Mudos Account after purchase.

Technical Details

Status
Publish
Page ID
1925
Product type
UI Template
Technical Requirements
Version 1.0.0
Content Size
16.86 KB
Features
Custom Styles
Interactive Scripts
Responsive Design

Share

Share this landing page template.

Let’s Build Something Useful Together

Have a project in mind? Share brief details and we will get back quickly.

Fast response
Free project consultation

Or Contact Us Directly