StealThis .dev
Pages Medium

Photography — Print Store

A gallery-dark fine-art print shop where a grid of full-bleed photographs each offer size and framing choices that instantly recalculate the price. Add prints to a slide-in cart drawer with quantity steppers, a live subtotal, shipping estimate, and a promo line — all rendered from clean vanilla JavaScript with smooth micro-interactions, thin uppercase labels, and a Fraunces display serif for an editorial, museum-shop feel.

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

Code

A dark, image-first print shop built for a fictional fine-art studio. The landing grid shows full-bleed photographs, each with its own inline configurator: a row of size pills (A4 through A1) and a framing toggle (unframed, natural oak, matte black). Choosing a size or frame recomputes the displayed price in real time, so shoppers always see exactly what a given configuration costs before committing.

The add-to-cart flow opens a slide-in drawer from the right. Each line item carries a thumbnail, its chosen size and frame, quantity steppers, and a per-line total. The drawer keeps a running subtotal, adds a flat framed-shipping estimate, and applies a demo promo code, updating every figure as quantities change or items are removed. A floating cart button in the header shows a live count badge.

Everything runs on vanilla JavaScript with no dependencies. State lives in a single in-memory array; the UI re-renders from that state on every change. Interactions include keyboard-accessible controls, focus-visible outlines, a lightweight toast helper for confirmations, and a scrim that closes the drawer on click or Escape — all wrapped in the collection’s gallery-dark palette with generous whitespace and thin uppercase labels.