navigation
Carousel
Embla ベースのアクセシブルなカルーセル。スライド読み上げ、キーボード操作、トラック・スライド・前後ボタンの複合 API を備えています。
インポート
import { Carousel, CarouselContent, CarouselItem, CarouselPrevious, CarouselNext } from '@stella-ds/react'CarouselCarouselContentCarouselItemCarouselPreviousCarouselNext
Props
| Prop | 型 | デフォルト | 説明 |
|---|---|---|---|
| loop | boolean | false | Wrap from the last slide back to the first |
| slideAlign | 'smart' | 'start' | 'center' | 'end' | 'center' | Embla snap alignment |
| slidesPerView | number | 1 | How many slides should fit in one viewport. Fractional values create peeking layouts. |
| setApi | (api: CarouselApi) => void | undefined | Expose the underlying Embla API for advanced control |
Preview
Two-up cards
Exact-fit images
Two slides fit exactly with no edge clipping.
使用例
Two-up cards
<Carousel aria-label="Featured projects" slideAlign="smart" slidesPerView={2}>
<CarouselContent>
<CarouselItem>
<article style={{ borderRadius: '1rem', border: '1px solid var(--stella-color-void-muted)', boxShadow: 'var(--stella-shadow-md)', padding: '1.25rem' }}>
Project one
</article>
</CarouselItem>
<CarouselItem>
<article style={{ borderRadius: '1rem', border: '1px solid var(--stella-color-void-muted)', boxShadow: 'var(--stella-shadow-md)', padding: '1.25rem' }}>
Project two
</article>
</CarouselItem>
<CarouselItem>
<article style={{ borderRadius: '1rem', border: '1px solid var(--stella-color-void-muted)', boxShadow: 'var(--stella-shadow-md)', padding: '1.25rem' }}>
Project three
</article>
</CarouselItem>
</CarouselContent>
<div style={{ display: 'flex', gap: '0.75rem' }}>
<CarouselPrevious />
<CarouselNext />
</div>
</Carousel>