StealThis .dev

Ticketing — Seat Picker Widget

A standalone, zoomable seat-map picker widget for event ticketing. Renders a tiered seating chart with a color-coded legend, per-seat hover tooltips showing row, seat number and price, and tap-to-select with a six-seat order guard. A best-available button auto-picks the highest tier contiguous block, while a live chip bar, running total and countdown keep the selection state clear. Built with semantic markup, keyboard support and vanilla JavaScript only.

Open in Lab
html css vanilla-js
Targets: JS HTML

Code

Seat Picker Widget

A self-contained seat-selection widget modeled on a real arena flow. The map renders eleven rows split into two blocks by a center aisle, each row color-coded by tier — VIP Pit, Front Block, Mid Tier and Rear Stand — with a legend that doubles as a price key. Some seats are pre-marked as taken so the chart reads like a live on-sale event. A stage banner anchors the orientation, and zoom controls scale the grid from 70% to 160% for crowded sections.

Hovering or focusing a seat raises a tooltip with the row, seat number, tier and price. Selecting a seat toggles a green check and pushes a removable chip into the summary bar; a guard caps the order at six seats and surfaces a toast when the limit is hit. The running total updates instantly, and the Continue button enables only once at least one seat is held. Best available clears the current pick and auto-selects the highest tier contiguous run it can find, then focuses the first seat.

Everything is keyboard-usable: seats are real buttons with descriptive aria-labels and pressed state, the countdown announces politely, and toasts use an assertive live region. No frameworks, no build step — just semantic HTML, CSS variables and one vanilla script.

Illustrative UI only — fictional events, not a real ticketing service.