Skip to main content
Version: 1.0.3

Carousel

The Carousel component is a flexible, feature-rich carousel/slider component that supports navigation controls, dot indicators, thumbnails, multiple animation types, auto-play, looping, and responsive design. It's built with React, TypeScript, and Framer Motion for smooth animations.

Thumbnails

Installation

ignix add component carousel

Usage

Basic Example

import {
Carousel,
CarouselContent,
CarouselItem,
CarouselNext,
CarouselPrevious,
CarouselDots,
} from '@ignix-ui/carousel';

function MyCarousel() {
return (
<Carousel>
<CarouselContent>
<CarouselItem>
<div className="flex h-64 items-center justify-center bg-gradient-to-r from-indigo-500 to-purple-600 text-white">
Slide One
</div>
</CarouselItem>
<CarouselItem>
<div className="flex h-64 items-center justify-center bg-gradient-to-r from-emerald-500 to-teal-600 text-white">
Slide Two
</div>
</CarouselItem>
<CarouselItem>
<div className="flex h-64 items-center justify-center bg-gradient-to-r from-orange-500 to-red-600 text-white">
Slide Three
</div>
</CarouselItem>
</CarouselContent>
<CarouselPrevious />
<CarouselNext />
<CarouselDots />
</Carousel>
);
}

With Auto-Play

<Carousel autoPlay interval={3000}>
<CarouselContent>
{/* Carousel items */}
</CarouselContent>
<CarouselPrevious />
<CarouselNext />
<CarouselDots />
</Carousel>

With Animations

<Carousel animation="fade" transitionDuration={500}>
<CarouselContent>
{/* Carousel items */}
</CarouselContent>
<CarouselPrevious />
<CarouselNext />
<CarouselDots />
</Carousel>

With Thumbnails

const thumbnails = [
'https://example.com/thumb1.jpg',
'https://example.com/thumb2.jpg',
'https://example.com/thumb3.jpg',
];

<Carousel>
<CarouselContent>
{thumbnails.map((thumbnail, index) => (
<CarouselItem key={index}>
<img src={thumbnail} alt={`Slide ${index + 1}`} />
</CarouselItem>
))}
</CarouselContent>
<CarouselPrevious />
<CarouselNext />
<CarouselThumbnails thumbnails={thumbnails} />
</Carousel>

Props

The main carousel container component.

PropTypeDefaultDescription
childrenReact.ReactNode-Carousel content and controls
classNamestring-Additional CSS classes
autoPlaybooleanfalseEnable auto-play
intervalnumber4000Auto-play interval in milliseconds
pauseOnHoverbooleantruePause auto-play on hover
loopbooleantrueEnable infinite loop
animation"none" | "fade" | "slide" | "scale" | "slideUp" | "slideDown" | "slideLeft" | "slideRight""none"Animation type
transitionDurationnumber500Animation duration in milliseconds

CarouselContent

Container for carousel items.

PropTypeDefaultDescription
childrenReact.ReactNode-Carousel items
classNamestring-Additional CSS classes
splitbooleanfalseEnable split mode to show multiple items (3 on desktop, 1 on mobile)

CarouselItem

Individual carousel slide/item.

PropTypeDefaultDescription
childrenReact.ReactNode-Item content
classNamestring-Additional CSS classes

CarouselPrevious

Previous navigation button.

PropTypeDefaultDescription
classNamestring-Additional CSS classes
variant"default" | "outline" | "ghost""default"Button variant
size"sm" | "md" | "lg""md"Button size

CarouselNext

Next navigation button.

PropTypeDefaultDescription
classNamestring-Additional CSS classes
variant"default" | "outline" | "ghost""default"Button variant
size"sm" | "md" | "lg""md"Button size

CarouselDots

Dot indicators for carousel navigation.

PropTypeDefaultDescription
classNamestring-Additional CSS classes
variant"dots" | "lines""dots"Dots variant
position"top" | "bottom" | "left" | "right""bottom"Dots position (left/right creates vertical carousel)
size"sm" | "md" | "lg""md"Dots size

CarouselThumbnails

Thumbnail navigation for carousel.

PropTypeDefaultDescription
thumbnailsstring[]-Array of thumbnail image URLs (required)
classNamestring-Additional CSS classes
position"top" | "bottom" | "left" | "right""bottom"Thumbnails position
variant"default" | "outline" | "minimal""default"Thumbnails variant
size"sm" | "md" | "lg""md"Thumbnails size
autoPlayboolean-Inherit from Carousel
loopboolean-Inherit from Carousel
animationCarouselAnimation-Inherit from Carousel
transitionDurationnumber-Inherit from Carousel

Features

  • Navigation Controls: Previous/Next buttons with customizable variants
  • Dot Indicators: Multiple variants (dots, lines) and positions (top, bottom, left, right)
  • Thumbnail Navigation: Image thumbnails for visual navigation
  • Animations: Fade, slide, scale, and directional slide animations using Framer Motion
  • Auto-Play: Configurable auto-play with pause on hover
  • Infinite Loop: Seamless looping through carousel items
  • Split Mode: Show multiple items at once (3 on desktop, 1 on mobile) using the split prop
  • Vertical Orientation: Support for vertical carousel when dots are positioned at left/right
  • Keyboard Navigation: Arrow keys for navigation
  • Accessibility: ARIA labels and keyboard support

Animation Types

  • none: No animation (default, best for split mode)
  • fade: Fade in/out transition
  • slide: Horizontal slide animation
  • scale: Scale in/out animation
  • slideUp: Slide up from bottom
  • slideDown: Slide down from top
  • slideLeft: Slide in from right
  • slideRight: Slide in from left