PDP (product detail page)
One product, one page: gallery, price, size and color pickers, add to cart. It has to answer every question before the buy.
See it
What it is
The PDP is the one-product page: media gallery, title, price, option pickers, add to cart, then everything that answers the follow-up questions (shipping, returns, materials, sizing, reviews). The top right block holding price and the buy button is usually called the buy box, and everything else on the page exists to get people to trust it.
It is the highest-intent page in the store, so it earns detail: multiple angles, scale shots, an on-body or in-room photo, a size chart, real customer photos. On mobile the buy button falls below the gallery, which is why a sticky add-to-cart bar that appears once the real button scrolls away is close to standard.
Gotcha: variant selection has to move everything at once. Picking a color should swap the gallery, the price, the SKU, the availability, and the URL, so a shared link lands on the exact thing the sender was looking at. Half-wired swatches that change the price but not the photo are the single most common PDP bug, and sold-out variants should stay visible and disabled rather than disappearing from the picker.
Ask AI for it
Build a product detail page with a two-column layout at desktop (55% media, 45% buy box) collapsing to single column on mobile. Left: a sticky gallery with a large 4:5 main image and a vertical thumbnail rail, click to swap, plus a swipeable carousel with dots on mobile. Right: breadcrumb, title, star rating with review count, price with struck-through compare-at price, color swatches as circular chips, size as a row of pill buttons with sold-out sizes shown disabled and struck-through, quantity stepper, full-width add-to-cart button, and a stock/delivery line. Below that, accordions for description, shipping and returns, and materials. Selecting a variant must update the image, price, SKU, availability, and the URL query string. Add a sticky add-to-cart bar that slides in once the main button scrolls out of view.