Carousel

Image and content slider with neumorphic prev/next controls, dot indicators, autoplay, and multiple visible items.

Default

<div class="sui-carousel" id="myCarousel">
  <div class="sui-carousel-track">
    <div class="sui-carousel-item">Slide 1</div>
    <div class="sui-carousel-item">Slide 2</div>
    <div class="sui-carousel-item">Slide 3</div>
  </div>
  <button class="sui-carousel-prev" aria-label="Previous"></button>
  <button class="sui-carousel-next" aria-label="Next"></button>
</div>

<script>
  // Auto-initialized, or use the API:
  SoftUI.carousel('#myCarousel').next();
  SoftUI.carousel('#myCarousel').prev();
  SoftUI.carousel('#myCarousel').goTo(2);
</script>

With Dots

<div class="sui-carousel" id="myCarousel">
  <div class="sui-carousel-track">
    <div class="sui-carousel-item">...</div>
    <div class="sui-carousel-item">...</div>
    <div class="sui-carousel-item">...</div>
  </div>
  <button class="sui-carousel-prev" aria-label="Previous"></button>
  <button class="sui-carousel-next" aria-label="Next"></button>
  <div class="sui-carousel-dots">
    <button class="sui-carousel-dot active" aria-label="Slide 1"></button>
    <button class="sui-carousel-dot" aria-label="Slide 2"></button>
    <button class="sui-carousel-dot" aria-label="Slide 3"></button>
  </div>
</div>

Loop

Add data-sui-loop to loop continuously — navigating past the last slide wraps back to the first, and vice versa.

<div class="sui-carousel" id="myCarousel" data-sui-loop>
  <div class="sui-carousel-track">
    <div class="sui-carousel-item">...</div>
    <div class="sui-carousel-item">...</div>
    <div class="sui-carousel-item">...</div>
  </div>
  <button class="sui-carousel-prev" aria-label="Previous"></button>
  <button class="sui-carousel-next" aria-label="Next"></button>
</div>

Loop Rewind

Use data-sui-loop="rewind" to wrap around by scrolling back to the beginning instead of seamlessly continuing.

<div class="sui-carousel" id="myCarousel" data-sui-loop="rewind">
  <div class="sui-carousel-track">
    <div class="sui-carousel-item">...</div>
    <div class="sui-carousel-item">...</div>
    <div class="sui-carousel-item">...</div>
  </div>
  <button class="sui-carousel-prev" aria-label="Previous"></button>
  <button class="sui-carousel-next" aria-label="Next"></button>
</div>

Multiple Items

Use sui-carousel-2, sui-carousel-3, or sui-carousel-4 to show multiple items at once.

<!-- Show 2 items -->
<div class="sui-carousel sui-carousel-2" id="...">...</div>

<!-- Show 3 items -->
<div class="sui-carousel sui-carousel-3" id="...">...</div>

<!-- Show 4 items -->
<div class="sui-carousel sui-carousel-4" id="...">...</div>

Multiple with Cards

Wrap slide content in sui-card for a raised neumorphic look. Add sui-carousel-gap for spacing between cards.

<div class="sui-carousel sui-carousel-3 sui-carousel-gap" id="...">
  <div class="sui-carousel-track">
    <div class="sui-carousel-item">
      <div class="sui-card" style="padding:32px;">Card 1</div>
    </div>
    <div class="sui-carousel-item">
      <div class="sui-card" style="padding:32px;">Card 2</div>
    </div>
    <!-- ... -->
  </div>
  <button class="sui-carousel-prev" aria-label="Previous"></button>
  <button class="sui-carousel-next" aria-label="Next"></button>
</div>

With Gap

Add sui-carousel-gap to add spacing between items in multi-item carousels.

<div class="sui-carousel sui-carousel-3 sui-carousel-gap" id="...">
  <div class="sui-carousel-track">
    <div class="sui-carousel-item">
      <div style="height:100px;background:...;border-radius:var(--sui-radius);">
        Slide 1
      </div>
    </div>
    <!-- ... -->
  </div>
  <button class="sui-carousel-prev" aria-label="Previous"></button>
  <button class="sui-carousel-next" aria-label="Next"></button>
</div>

Autoplay

Add data-sui-autoplay="3000" (milliseconds) for auto-advancing slides. Pauses on hover. Combine with data-sui-loop for continuous looping.

<div class="sui-carousel" id="myCarousel"
     data-sui-autoplay="3000" data-sui-loop>
  <div class="sui-carousel-track">
    <div class="sui-carousel-item">...</div>
    <div class="sui-carousel-item">...</div>
    <div class="sui-carousel-item">...</div>
  </div>
  <button class="sui-carousel-prev" aria-label="Previous"></button>
  <button class="sui-carousel-next" aria-label="Next"></button>
  <div class="sui-carousel-dots">
    <button class="sui-carousel-dot active"></button>
    <button class="sui-carousel-dot"></button>
    <button class="sui-carousel-dot"></button>
  </div>
</div>

Vertical

Add sui-carousel-vertical for a vertically scrolling carousel. Combine with sui-carousel-3 to show multiple items.

<div class="sui-carousel sui-carousel-vertical sui-carousel-3"
     id="myCarousel" style="height:340px;">
  <div class="sui-carousel-track">
    <div class="sui-carousel-item">...</div>
    <div class="sui-carousel-item">...</div>
    <div class="sui-carousel-item">...</div>
    <div class="sui-carousel-item">...</div>
    <div class="sui-carousel-item">...</div>
    <div class="sui-carousel-item">...</div>
  </div>
  <button class="sui-carousel-prev" aria-label="Previous"></button>
  <button class="sui-carousel-next" aria-label="Next"></button>
</div>

Delete this item?

This action cannot be undone. This will permanently delete the item and remove all associated data.