<iframe src="https://www.googletagmanager.com/ns.html?id=GTM-5HGSQD2L" height="0" width="0" style="display:none;visibility:hidden" title="GTM"></iframe>

Adaptive Carousel

Displays a series of content that can be navigated horizontally.

This component is intended to replace Carousel and Thumbnails Hero. In SWAN V4, Adaptive Carousel will be renamed to Carousel.

Use Adaptive Carousel...

  • To display a series of content that can be navigated horizontally.
  • When space is limited and multiple rows of content need to be displayed.
  • Most commonly with slides containing Standard Tiles components built from Base Tile.

Don't use Adaptive Carousel...

  • For hero spots or full-page banners, as engagement typically drops beyond the first slide.
  • For content that must be fully visible to search engines (SEO-relevant content).
  • Nested within another Adaptive Carousel, as this can lead to layout and interaction issues.

The preview has been updated.

Slides

Carousel slides are empty, flexible containers that can hold any content. Most commonly, this is promotional content using Standard Tiles or components created from Base Tile, but it can also include Cards, Buttons, images, and videos.

Nesting an Adaptive Carousel inside another is not recommended.

Slides To Show

Use slidesToShow to define how many slides are visible. You can set different values for Responsive System breakpoints, for example {{ xs: 2, md: 6 }}. Decimal values are not supported and will be rounded down.

The preview has been updated.

The preview has been updated.

Align Self

Use alignSelf to adjust a slide’s vertical alignment. Use alignSelf="stretch" to make a slide fill the Carousel’s height, or alignSelf="center" to center it vertically." When using Standard Tile, combine this with StandardTileFooter. When using components created using Base Tile, combine this with the evenHeight prop.

The preview has been updated.

Controls

Controls adapt to the carousel size. By default, Slide Navigation Buttons are visible. When the component is narrower than 480px, Slide Picker dots appear, and Slide Navigation buttons show only on hover.

The preview has been updated.

Slide Navigation Alignment

Slide Navigation Buttons automatically align vertically to the center of images when slides use Standard Tile or Tiles created from Base Tile. Otherwise, they align vertically to the center of the slide height.

Figma tip: Align arrows by setting the Adaptive Carousel height equal to the image height. Example.

The preview has been updated.

Thumbnails

Use slidePicker with AdaptiveCarouselSlidePickerThumbnails to add Slide Picker Thumbnails. Use AdaptiveCarouselSlidePickerThumbnail to contain each thumbnail image. Use video to indicate that a slide contains video content.

This is recommended only when slidesToShow={1}.

The preview has been updated.

On Slide Change

Use onSlideChange to run side effects when the active slide changes, such as tracking metrics

Image

Use AdaptiveCarouselImage when the slide content is an image.

The preview has been updated.

Aspect Ratio

Use aspectRatio set the image’s aspect ratio. Passing an aspect ratio will also reserve space for the image while loading, preventing a layout shift.

The preview has been updated.

Layout

Use objectFit to control how the image fills its container and objectPosition to set the image’s position within the container.

The preview has been updated.

Props

AdaptiveCarousel
This component is implemented using the <section /> as the root element. You can utilize the native attributes supported by <section /> tag. The ref is directly assigned to the root element, allowing you to access and manipulate it as needed.
See core props for additional props that can be applied to this component.
proptyperequireddescriptiondefault
aria-labelstringfalse
Defines a string value that labels the current element. @see aria-labelledby.
null
aria-labelledbystringfalse
Identifies the element (or elements) that labels the current element. @see aria-describedby.
null
onSlideChange((firstSlideIndex: number, lastSlideIndex: number) => void)false
Callback for executing side effects, such as metrics
null
slidePickerReactNodefalse
Accepts an AdaptiveCarouselSlidePickerThumbnails containing an equal amount of thumbnails for slides.
'standard'
slidesToShowResponsive<number>false
Rounded down to nearest whole number. Default value depends on what other props are passed.
null
skin"standard" | "promo-bar"false
`promo-bar` skin should only be used by the Merchandising Components team, controlled via Contentful.
'standard'
AdaptiveCarouselSlide
This component is implemented using the <div /> as the root element. You can utilize the native attributes supported by <div /> tag. The ref is directly assigned to the root element, allowing you to access and manipulate it as needed.
See core props for additional props that can be applied to this component.
proptyperequireddescriptiondefault
activebooleanfalse
Should be passed internally
null
alignSelfAlignSelffalse
Overrides the flex item's `align-items` value on an individual slide basis.
'start'
AdaptiveCarouselImage
This component is implemented using the <img /> as the root element. You can utilize the native attributes supported by <img /> tag. The ref is directly assigned to the root element, allowing you to access and manipulate it as needed.
See core props for additional props that can be applied to this component.
proptyperequireddescriptiondefault
altstringfalse
-
''
aspectRatioAspectRatiofalse
-
null
objectFitObjectFitfalse
-
null
objectPositionObjectPosition<0 | (string & {})>false
-
null
AdaptiveCarouselSlidePickerThumbnails
This component is implemented using the <div /> as the root element. You can utilize the native attributes supported by <div /> tag. The ref is directly assigned to the root element, allowing you to access and manipulate it as needed.
See core props for additional props that can be applied to this component.
AdaptiveCarouselSlidePickerThumbnail
This component is implemented using the <button /> as the root element. You can utilize the native attributes supported by <button /> tag. The ref is directly assigned to the root element, allowing you to access and manipulate it as needed.
See core props for additional props that can be applied to this component.
proptyperequireddescriptiondefault
indexnumberfalse
Should be passed internally
null
videobooleanfalse
Should be set to `true` if the thumbnail represents a video
null