Free
Pro

Product Gallery

A premium, responsive product gallery component featuring thumbnail navigation, hover-to-zoom capabilities, and video support.

Pro

Product Gallery — part of Ply Pro

Unlock it plus 90 pro blocks, widgets & layouts — $99 one-time. Lifetime updates, 14-day money-back guarantee.

Unlock Pro

Thumbnails on Left

Thumbnails on Bottom

Thumbnails on Right

Thumbnails on Top

How to Use

The Product Gallery component provides a robust layout for showcasing product imagery. Drop in a <ply-product-gallery> element and configure your aspect ratio padding, thumbnail alignment, and zoom interactions natively.

HTML

<ply-product-gallery 
  [items]="galleryItems" 
  thumbnailsPosition="left"
  aspectRatio="16/9"
  [zoomOnClick]="true"
  [showArrows]="true">
</ply-product-gallery>

TypeScript

TypeScript

import { Component } from '@angular/core';

// Install: npx ply-ui-cli add product-gallery
// Paths are relative to aliases.components (default: src/app/components)
import { GalleryItem, ProductGalleryComponent } from './product-gallery/product-gallery.component';

@Component({
  selector: 'app-product-gallery-example',
  imports: [
    ProductGalleryComponent
  ],
  template: `...`
})
export class ProductGalleryExampleComponent {}

Install

bash

npx ply-ui-cli add product-gallery

Installation

Run the following command to add this component to your project:

bash

npx ply-ui-cli add product-gallery

API Reference

For AI agents

Copy a prompt with the registry name, CLI install, and import — or add the Ply MCP server.

bash

npx -y ply-ui-mcp

Ply provides standalone components. Import the exact elements you want to use into your component.

typescript (Example)

// Install: npx ply-ui-cli add product-gallery
// Paths are relative to aliases.components (default: src/app/components)
import { GalleryItem, ProductGalleryComponent } from './product-gallery/product-gallery.component';

@Component({
  selector: 'app-your-component',
  imports: [
    ProductGalleryComponent
  ],
  template: `...`
})
export class YourComponent {}

API for product-gallery — generated from JSDoc in the library source.

API reference for product-gallery
APIMemberTypeDefaultDescription
GalleryItemidstring | numberOptional unique identifier for the item.
GalleryItemsrcstringThe source URL of the main image or video.
GalleryItemthumbSrcstringThe source URL of the thumbnail image. Defaults to `src` if not provided.
GalleryItemaltstringAlternative text for accessibility.
GalleryItemtype'image' | 'video'Media type, either 'image' or 'video'. Defaults to 'image'.
ply-product-galleryclassstring''Additional CSS classes to merge into the host element.
ply-product-gallerygalleryLabelunknown'Product gallery'Accessible label for the product gallery carousel region.
ply-product-galleryitemsGalleryItem[][]The array of media items to display in the gallery.
ply-product-gallerythumbnailsPosition'left' | 'right' | 'top' | 'bottom''left'Position of the thumbnails strip relative to the main viewer. Defaults to 'left'.
ply-product-galleryshowArrowsbooleantrueWhether to show previous/next navigation arrows on the main viewer.
ply-product-galleryobjectFit'cover' | 'contain''cover'CSS object-fit rule for the main image ('cover' or 'contain').
ply-product-galleryzoomOnClickbooleantrueEnables an interactive magnifying zoom effect when clicking the main image.
ply-product-galleryaspectRatiostring'16/9'Aspect ratio constraint for the main viewer (e.g., '16/9' or '1/1').
ply-product-gallerymainViewWidthstring'100%'Width of the main view container. Defaults to '100%'.
ply-product-gallerymainViewHeightstring'auto'Height of the main view container. Defaults to 'auto'.
ply-product-gallery(indexChange)numberEmitted whenever the active selected item changes.