Founding price: $35, then $79.99 after 23:59 UTC on 4 November, then $79.99
Get ProAn endless carousel that wraps from the last slide to the first, centres the selected slide, scales its neighbours down and shows its position.
This item has no props to tune. Use the lens above to change theme, density, direction and more.
Use it for a short, equal set of slides where there is no real beginning or end: a mood board, a set of logos, a photo reel.
Do not use it for ordered steps or content where people need to know they reached the end.
| Part | Prop | Type | Default | Description |
|---|---|---|---|---|
CarouselLoop | items | CarouselItem[] | required | { id, label, content }. Needs enough slides to fill the viewport twice. |
CarouselLoop | label | string | required | Accessible name of the carousel. |
CarouselLoop | showCounter | boolean | true | Show "3 / 8". |
CarouselLoop | onIndexChange | (index) => void | - | Called with the snap index when the selection changes. |
CarouselLoop | setApi | (api) => void | - | Receives the Embla API, for controls placed outside the carousel. |
The component ships with a Testing Library test (carousel-loop.test.tsx). Embla needs layout to count snaps, and jsdom has none, so the repo's mockCarouselLayout helper gives the viewport and slides real sizes in tests.