StealThis .dev
Pages Medium

Photography — Contact Inquiry

A gallery-dark inquiry form for a photography studio: pick a session type, choose a shoot date, drag a live budget-range slider, and write a brief — with inline validation, a character counter, and a graceful success card. A side panel carries the studio address, contact rows, opening hours, and a stylized map placeholder.

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

Code

A full-bleed, gallery-dark contact page for the fictional Aperture & Ash studio. The layout splits into a two-column grid: on the left, an inquiry form; on the right, a sticky side panel with contact details and a map placeholder. Session type is chosen from a row of selectable chips (Portrait, Wedding, Editorial, Product, Event), the shoot date uses a native date input constrained to future dates, and the budget is set with a custom range slider that renders a live currency read-out and a soft gradient fill as you drag.

The form validates inline: fields flag on blur and clear as you correct them, the message field shows a live character counter, and a required consent checkbox gates submission. On submit the whole form animates out and a success card fades in with the summarized request, plus a “Send another” reset. Small touches — a toast helper, focus rings, hover lifts on chips and the submit button — keep the interaction feeling responsive.

Everything is vanilla: no frameworks, no build step. The palette follows the photography collection (dark surfaces, sand accents, a Fraunces display serif for headings), and the whole thing collapses to a single column with a stacked panel below ~520px while preserving keyboard access and WCAG AA contrast.