Product Quick View
ComponentsProduct Quick View
CardsNew

Product Quick View

A considered object, a closer look. Product cards open a detailed image gallery, real finish choices, and useful specifications without losing your place.

USE IT FORCurated product collectionsFurniture and design storesMerchandise and material previews
React + CSS
Explore the full-width experienceOpen preview
FORM / OBJECTSA SMALL COLLECTION. A CONSIDERED LIFE.

THE EVERYDAY, RECONSIDERED / 01—02

Objects to
come back to.

For the things you listen to.
For the places you go.
A little less. A little better.

01 / SOUND OBJECTSMONO 01 speaker in Graphite, shown from the front and side

MONO 01

A quieter kind of presence.

$390
01 / SOUND OBJECTS

CONSIDERED IN EVERY DETAIL

MONO 01

A quieter kind of presence.

$390

One considered object for the spaces where life happens. A sculpted body, a continuous acoustic grille, and a single tactile volume dial. Nothing you don’t need.

Finish / Graphite
Dimensions
270 × 140 × 130 mm
Material study
Aluminum / acoustic mesh
Collection
MONO / 01
Read the design story
02 / CARRY OBJECTSKIN Everyday Tote in natural canvas, with a generous front pocket and olive woven label

Everyday Tote

Room for a little more everyday.

$64
02 / CARRY OBJECTS

CONSIDERED IN EVERY DETAIL

Everyday Tote

Room for a little more everyday.

$64

A generous canvas shape, two inner pockets, and a handle made to sit comfortably on your shoulder. Designed around the simple pleasure of having everything in its place.

Dimensions
380 × 420 × 120 mm
Material study
Natural woven canvas
Collection
KIN / 01
Read the design story

ORIGINAL, FICTIONAL PRODUCT STUDIESOPEN AN OBJECT. EXPLORE THE DETAILS. ↗

DESIGN NOTES / 01

A sound object.
A softer presence.

MONO studies how a speaker can belong to a room without becoming its focal point. The restrained body and one precise dial make listening feel simple. Graphite, Chalk, and Copper explore three different material moods.

A fictional design study. Specifications and prices are example content.

DESIGN NOTES / 02

Everything
in its place.

The KIN Everyday Tote starts with a familiar shape. A wider base creates room, an outer pocket keeps the essentials close, and two inside compartments bring a little order to a full day.

Original illustrated product concept. Specifications and prices are example content.

FORM / OBJECTSEVERYDAY OBJECTS. EXPLORED IN DETAIL.
Live component. Go ahead, interact.
01

Installation

Run this in your shadcn-configured React project. The component and stylesheet are added together.

TERMINAL
npx shadcn@latest add http://localhost:5173/r/product-quick-view.json

This command uses the current site address. For localhost, keep this preview running on the same computer. Files follow your configured components alias.

02

Usage

Import the component and make the details your own.

TypeScript
import { ProductQuickView } from '@/components/anticraft/ProductQuickView';

export function Example() {
  return (
    <ProductQuickView
      title="MONO 01"
      eyebrow="SOUND OBJECTS / 01"
      subtitle="A quieter kind of presence."
      price="$390"
      description="One considered object for the spaces where life happens. A sculpted body, an acoustic grille, and one tactile volume dial."
      images={[{ id: 'front', src: '/images/speaker-graphite.jpg', alt: 'Graphite speaker shown from the front and side' }]}
      variants={[
        { id: 'graphite', label: 'Graphite', color: '#343936', images: [
          { id: 'front', src: '/images/speaker-graphite.jpg', alt: 'Graphite speaker shown from the front and side' },
          { id: 'detail', src: '/images/speaker-detail.jpg', alt: 'Close view of the top dial and acoustic mesh' },
        ] },
        { id: 'chalk', label: 'Chalk', color: '#e8e5dd', images: [
          { id: 'front', src: '/images/speaker-chalk.jpg', alt: 'Speaker in a pale Chalk finish' },
        ] },
      ]}
      specifications={[
        { label: 'Dimensions', value: '270 × 140 × 130 mm' },
        { label: 'Materials', value: 'Aluminum / acoustic mesh' },
      ]}
      action={{ label: 'View the product', href: '/products/mono-01' }}
    />
  );
}
03

Props

PropTypeDefaultDescription
title / description / pricestringRequiredProduct name, full description, and a preformatted price such as $390 or €240. The name labels the card and native modal. Descriptions preserve paragraph breaks. The component does not process purchases.
imagesProductQuickViewImage[]RequiredImages with unique id, src, and meaningful alt text. Used when variants are omitted or the selected variant has an empty image list. Supply your own files for example image paths. Empty lists show an Image coming soon placeholder.
eyebrow / subtitlestringundefinedOptional collection label above the card image and secondary text beneath the product name. The collection label also appears in the modal header.
variantsProductQuickViewVariant[][]Optional finishes with unique id, label, images, and optional CSS color and preformatted price. Selecting a finish actually replaces its image list, resets to its first image, and updates an optional variant price. An empty image list uses the base images.
specificationsProductQuickViewSpecification[][]Optional label/value strings rendered as a semantic definition list, such as dimensions, material, and collection.
defaultVariant / defaultImagestringFirst available itemInitial variant and image ids. Unknown or removed ids safely fall back to the first available variant or image. Defaults are read on initial render; data changes do not call user callbacks.
action{ label: string; href: string }undefinedAn ordinary product-page link, separate from the quick-view opener. Activating it closes the modal before following its supplied destination. Replace example destinations with real pages on your site. The live demo links to visible local design stories.
onSelectionChange(selection: ProductQuickViewSelection) => voidundefinedCalled once when a visitor changes the image or finish. Receives the current variant and image objects, either optional when unavailable. Selecting the active item and fallback after data changes do not notify. Pass callbacks from a Client Component in Next.js.
onOpenChange(open: boolean) => voidundefinedCalled when a visitor opens or closes the quick view. Closing with Escape, Close, an ordinary product action, or a completed outside-backdrop click reports false. Unmount cleanup does not notify.
classNamestring''Additional classes. Theme with --ac-quick-view-surface, --ac-quick-view-stage, --ac-quick-view-ink, --ac-quick-view-muted, --ac-quick-view-line, and --ac-quick-view-accent. --ac-quick-view-card-ratio changes the card image-stage aspect ratio. Dialog width is bounded to 1120px and available viewport space.
04

Motion & accessibility

Considered by default.

The always-visible Quick view button opens a native modal with a contained product image, manually selected thumbnail gallery, finish controls, specifications, and an optional ordinary product link. The native dialog traps focus, closes with Escape, restores the opener, and locks background page scrolling while open. A visible Close control stays at the top of the internally scrolling dialog on short screens. A backdrop press must begin and end outside the dialog to close it. Thumbnail Left/Right, Home, and End keys select and focus images; page-wide arrow shortcuts are not captured. Desktop details sit beside the image; the modal stacks below 720px. A small entrance and image change maintain visual continuity; reduced motion removes both and disables the decorative hover lift. Every product has independent, unique dialog ids. The MONO renders and KIN illustrations in the demo are original fictional product studies.

Use semantic content and meaningful labels in your composition. Check contrast and keyboard behavior with your own styles and content.

05

Inspiration

The continuity of Motion-Primitives’ morphing dialog and the practical product-detail anatomy of Shadcnblocks’ quick views inspired this independent, dependency-free implementation. Anticraft uses an explicit card opener and a native modal, with original product studies, actual finish image swaps, keyboard gallery controls, and an ordinary product-page action. See also https://www.shadcnblocks.com/blocks/product-quick-view.

Visit Motion-Primitives / Shadcnblocks

The component source and demo artwork are original to Anticraft UI. The linked site is the design or content reference.