Image Gallery
An ImageGallery is used when you want to display a series of photos in a gallery on a post or page.
According to the quantity of Image to be displayed, the ImageGallerySelector will be displayed.
Import
Import the component from @faststore/ui
import {
  ImageGallery,
  ImageGallerySelector,
  ImageGalleryViewer,
} from '@faststore/ui'Import Styles into your FastStore project
To apply the styles of this component in your FastStore project, import the following into your stylesheet:
@import '@faststore/ui/src/components/organisms/ImageGallery/styles.scss';Follow the instructions in the Importing FastStore UI component styles tutorial.
Usage
Add the data-fs-image attribute in all <img> tags to ensure they work
as expected. You can find an example in the Code tab below for reference.
Props
Image Gallery
| Name | Type | Description | Default | 
|---|---|---|---|
| testId | string | ID to find this component in testing tools (e.g.: cypress, testing-library, and jest). | fs-image-gallery | 
| images* | ImageElementData[] | List of images that should be rendered. | |
| ImageComponent* | ImageComponentType | Function that returns a React component that will be used to render images. | |
| selectedImageIdx* | number | The currently active thumbnail. | |
| setSelectedImageIdx* | (idx: number) => void | Event handler for clicks on each thumbnail. | 
Image Gallery Selector
| Name | Type | Description | Default | 
|---|---|---|---|
| testId | string | ID to find this component in testing tools (e.g.: cypress, testing-library, and jest). | fs-image-gallery-selector | 
| currentImageIdx* | number | The currently active thumbnail. | |
| aria-label | string | For accessibility purposes, define a string that labels the current element. | |
| navigationButtonLeftAriaLabel | string | For accessibility purposes, define a string that labels the left navigation icon button. | Backward slide image selector | 
| navigationButtonRightAriaLabel | string | For accessibility purposes, define a string that labels the right navigation button icon. | Forward slide image selector | 
| onSelect* | (imageIdx: number) => void | Event handler for clicks on each thumbnail. | |
| images* | ImageElementData[] | List of images that should be rendered. | |
| ImageComponent* | ImageComponentType | Function that returns a React component that will be used to render images. | 
ImageElementData
| Name | Type | Description | Default | 
|---|---|---|---|
| url* | string | Image URL. | |
| alternateName* | string | Alternative text description of the image. | 
Design Tokens
| Local token | Default value/Global token linked | 
|---|---|
| --fs-image-gallery-width | calc(100% + (2 * var(--fs-grid-padding))) | 
| --fs-image-gallery-transition-timing | var(--fs-transition-timing) | 
| --fs-image-gallery-transition-function | var(--fs-transition-function) | 
| --fs-image-gallery-gap-mobile | var(--fs-spacing-2) | 
| --fs-image-gallery-gap-notebook | var(--fs-spacing-3) | 
Nested Elements
Controls
| Local token | Default value/Global token linked | 
|---|---|
| --fs-image-gallery-selector-control-bkg-color | var(--fs-control-bkg) | 
| --fs-image-gallery-selector-control-border-radius | var(--fs-border-radius-circle) | 
| --fs-image-gallery-selector-control-shadow | var(--fs-shadow-darker) | 
| --fs-image-gallery-selector-control-gradient-bkg-color | var(--fs-color-body-bkg) | 
Current Selected Image
| Local token | Default value/Global token linked | 
|---|---|
| --fs-image-gallery-current-height | 33.125rem | 
| --fs-image-gallery-current-border-radius | var(--fs-border-radius) | 
Selector
| Local token | Default value/Global token linked | 
|---|---|
| --fs-image-gallery-selector-max-height | var(--fs-image-gallery-current-height) | 
Selector Elements
| Local token | Default value/Global token linked | 
|---|---|
| --fs-image-gallery-selector-elements-gap | var(--fs-spacing-1) | 
| --fs-image-gallery-selector-elements-gap-notebook | var(--fs-spacing-2) | 
| --fs-image-gallery-selector-elements-padding-mobile | var(--fs-spacing-0) var(--fs-grid-padding) | 
| --fs-image-gallery-selector-elements-padding-notebook | var(--fs-spacing-0) 0 | 
Selector Thumbnail
| Local token | Default value/Global token linked | 
|---|---|
| --fs-image-gallery-selector-thumbnail-width-mobile | 3.5rem | 
| --fs-image-gallery-selector-thumbnail-height-mobile | var(--fs-image-gallery-selector-thumbnail-width-mobile) | 
| --fs-image-gallery-selector-thumbnail-width-notebook | 4.5rem | 
| --fs-image-gallery-selector-thumbnail-height-notebook | var(--fs-image-gallery-selector-thumbnail-width-notebook) | 
| --fs-image-gallery-selector-thumbnail-border-radius | var(--fs-border-radius) | 
| --fs-image-gallery-selector-thumbnail-border-width | var(--fs-border-width-thick) | 
| --fs-image-gallery-selector-thumbnail-selected-border-color | var(--fs-border-color-active) | 
| --fs-image-gallery-selector-thumbnail-selected-border-width | var(--fs-border-width-thickest) | 
| --fs-image-gallery-selector-thumbnail-image-border-radius | var(--fs-border-radius-small) | 
Variants
With Selector (More than 1 Image)
Without Selector
Customization
For further customization, you can use the following data attributes:
data-fs-image-gallery
data-fs-image-gallery="with-selector | without-selector"
data-fs-image-gallery-selector
data-fs-image-gallery-selector-control
data-fs-image-gallery-selector-control-button
data-fs-image-gallery-selector-elements
data-fs-image-gallery-selector-thumbnail