Skip to content
UI Kit
Accent color

Product grids and product lists

Products in grids, lists, rows and editorial layouts, with filters, quick view and categories.

8 variants
Switch category

From category page to lookbook

The product grid is the shelf of a shop. The eight layouts here take products as data with image, name, price, sale price, rating and stock, and they format every price in the language and currency of the page.

Grid is the category page, With filters adds a filter column on desktop and a sheet on phones. List shows more details per product for technical goods. Featured puts one product next to a few others, Category tiles leads from the start page into the shop. Quick view opens the essentials in a dialog, Carousel row fits a related products strip, Lookbook mixes large pictures with products for fashion and interior.

Use product photos with the same ratio and background, the grid only looks calm when they match. Show the price and the most important variant on the card, details go on the product page. Mark sold out items instead of hiding them, people still look for them.

Product grid

Grid

Four columns with category pills, a second image on hover and quick add.

With filters

A filter sidebar with counts, chips and sorting. On phones the filters open as a sheet.

List

Rows with description, rating, price and a direct buy button.

Category tiles

One large and four small tiles that lead into the departments.

Quick view

A dialog with gallery, color, size and quantity, without leaving the grid.

Lookbook

An editorial image with numbered spots and the matching products next to it.

Details

What Product grid brings along, read from the registry and the source.

Variants
8
Version
1.0.1 · since 1.0.0
File
components/ui/product-grid.tsx
Brings along
utilskitbuttoniconsectionrevealproduct-image
npm packages
None
Languages
English and German, 34 texts of its own
Studio
Adjust in code
In collections
Online shop

Props

The ProductGridProps interface from components/ui/product-grid.tsx, with the comments from the code.

  • variantoptional
    ProductGridVariant

    gridwith-filterslistfeaturedcategory-tilesquick-viewcarousel-rowlookbook

  • eyebrowoptional
    React.ReactNode
  • titleoptional
    React.ReactNode
  • descriptionoptional
    React.ReactNode
  • productsoptional
    ShopProduct[]
  • actionoptional
    { label: string; href: string }

    Link next to the heading, e.g. "Shop all"

  • categoriesoptional
    ProductCategory[]

    category-tiles

  • filtersoptional
    FilterGroup[]

    with-filters

  • featuredoptional
    ShopProduct

    featured: the product in the big card, defaults to the first product

  • featuredLabeloptional
    string

    featured: small label on the big card

  • lookbookoptional
    { image: React.ReactNode; spots: LookbookSpot[]; caption?: string }

    lookbook: the editorial image and the products placed on it

  • initialQuickViewoptional
    string

    quick-view: open this product's dialog on load (for previews)

  • currencyoptional
    string
  • onAddToCartoptional
    (product: ShopProduct, options?: { color?: string; size?: string; quantity: number }) => void

Built-in texts

Product grid writes these texts itself. The language follows the KitProvider, the labels prop replaces single ones.

Show all 34 texts
addEnglish Add to cartGerman In den Warenkorb
addedEnglish AddedGerman Hinzugefügt
quickAddEnglish Quick addGerman Schnell hinzufügen
wishlistEnglish Save to wishlistGerman Auf die Wunschliste
savedEnglish Saved to wishlistGerman Auf der Wunschliste
quickViewEnglish Quick viewGerman Schnellansicht
closeEnglish CloseGerman Schließen
allEnglish AllGerman Alle
filtersEnglish FiltersGerman Filter
sortEnglish Sort byGerman Sortieren nach
sortFeaturedEnglish FeaturedGerman Empfohlen
sortPriceAscEnglish Price, low to highGerman Preis aufsteigend
sortPriceDescEnglish Price, high to lowGerman Preis absteigend
sortRatingEnglish Best ratedGerman Beste Bewertung
productEnglish productGerman Produkt
productsEnglish productsGerman Produkte
clearAllEnglish Clear allGerman Alle entfernen
showEnglish ShowGerman Zeige
removeEnglish Remove filterGerman Filter entfernen
noResultsEnglish Nothing matches these filters.German Zu diesen Filtern passt nichts.
resetFiltersEnglish Reset filtersGerman Filter zurücksetzen
previousEnglish Previous productsGerman Vorherige Produkte
nextEnglish Next productsGerman Nächste Produkte
shopTheLookEnglish Shop the lookGerman Den Look kaufen
addLookEnglish Add the whole lookGerman Ganzen Look hinzufügen
viewDetailsEnglish View full detailsGerman Alle Details ansehen
loadMoreEnglish Load moreGerman Mehr laden
showingEnglish ShowingGerman Zeige
ofEnglish ofGerman von
soldOutEnglish Sold outGerman Ausverkauft
sizeEnglish SizeGerman Größe
shopEnglish ShopGerman Ansehen
moreEnglish moreGerman weitere
carouselEnglish Products, scroll sidewaysGerman Produkte, seitlich scrollen

Accessibility

Read from the source of the component.

  • Product grid handles the keys Arrow left, Arrow right and Space itself.
  • Built on the native dialog element. The browser keeps focus inside and closes it with Escape.
  • Sets aria-current, aria-haspopup, aria-label, aria-labelledby, aria-live, aria-pressed and aria-selected, so screen readers announce purpose and state.
  • Uses the roles tab and tablist.
  • Announces changes through a live region without moving focus.
  • Every field has a label, visible or for screen readers.
  • Adds text for screen readers where icons and graphics stand alone.
  • Shows a visible focus ring when used with the keyboard.
  • The server renders the starting state in full, JavaScript only adds the interaction.

Motion

  • Rises in briefly the first time it comes into view (kit-rise, useInView).
  • Brings animations of its own, calmly timed and without wobble.
  • With reduced motion (prefers-reduced-motion) it stays still. 16 places in the code switch motion off then.

Frequent questions

How do I install Product grid?

With aiw add @ai-website/product-grid. The command puts components/ui/product-grid.tsx into your project, the code is yours from then on. It brings along button, icon, section, reveal and product-image. It needs no further npm packages.

Which variants does Product grid have?

8 variants, Grid, With filters, List, Featured, Category tiles, Quick view, Carousel row and Lookbook. You pick one with the variant prop, for example variant="with-filters".

Can I translate the texts of Product grid?

Yes. Product grid carries 34 texts of its own in English and German, such as “Add to cart”, “Added” and “Quick add”. The language follows the KitProvider, single texts change through the labels prop.

Can an AI assistant build with Product grid?

Yes. Through the MCP server of the aiw CLI, Claude, Cursor, GitHub Copilot, Windsurf, Codex and Gemini find Product grid with aiw_components and install it with aiw_add @ai-website/product-grid. Name the variant in your prompt, for example variant="grid", and the assistant writes your content straight into the props.

Often searched

Jump to

Copied to the clipboard