Carousel
UIComponente de carrusel con navegación, indicadores, autoplay, swipe y soporte multi-slide.
Uso básico
Slide 1
Slide 2
Slide 3
<x-kore::carousel>
<x-kore::carousel.slide>
<div class="flex items-center justify-center h-48 bg-kore-muted rounded-lg">
Slide 1
</div>
</x-kore::carousel.slide>
<x-kore::carousel.slide>
<div class="flex items-center justify-center h-48 bg-kore-muted rounded-lg">
Slide 2
</div>
</x-kore::carousel.slide>
<x-kore::carousel.slide>
<div class="flex items-center justify-center h-48 bg-kore-muted rounded-lg">
Slide 3
</div>
</x-kore::carousel.slide>
</x-kore::carousel><x-kore::carousel>
<x-kore::carousel.slide>
<div class="flex items-center justify-center h-48 bg-kore-muted rounded-lg">
Slide 1
</div>
</x-kore::carousel.slide>
<x-kore::carousel.slide>
<div class="flex items-center justify-center h-48 bg-kore-muted rounded-lg">
Slide 2
</div>
</x-kore::carousel.slide>
<x-kore::carousel.slide>
<div class="flex items-center justify-center h-48 bg-kore-muted rounded-lg">
Slide 3
</div>
</x-kore::carousel.slide>
</x-kore::carousel>Autoplay
Reproducción automática con intervalo configurable.
Slide 1
Slide 2
Slide 3
<x-kore::carousel :autoplay="true" :interval="3000">
<x-kore::carousel.slide>
<div class="flex items-center justify-center h-48 bg-kore-muted rounded-lg">
Slide 1
</div>
</x-kore::carousel.slide>
<x-kore::carousel.slide>
<div class="flex items-center justify-center h-48 bg-kore-muted rounded-lg">
Slide 2
</div>
</x-kore::carousel.slide>
<x-kore::carousel.slide>
<div class="flex items-center justify-center h-48 bg-kore-muted rounded-lg">
Slide 3
</div>
</x-kore::carousel.slide>
</x-kore::carousel><x-kore::carousel :autoplay="true" :interval="3000">
<x-kore::carousel.slide>
<div class="flex items-center justify-center h-48 bg-kore-muted rounded-lg">
Slide 1
</div>
</x-kore::carousel.slide>
<x-kore::carousel.slide>
<div class="flex items-center justify-center h-48 bg-kore-muted rounded-lg">
Slide 2
</div>
</x-kore::carousel.slide>
<x-kore::carousel.slide>
<div class="flex items-center justify-center h-48 bg-kore-muted rounded-lg">
Slide 3
</div>
</x-kore::carousel.slide>
</x-kore::carousel>Múltiples slides visibles
Muestra varios slides a la vez con numVisible.
1
2
3
4
5
<x-kore::carousel :numVisible="3" :gap="24">
<x-kore::carousel.slide>
<div class="flex items-center justify-center h-32 bg-kore-muted rounded-lg">1</div>
</x-kore::carousel.slide>
<x-kore::carousel.slide>
<div class="flex items-center justify-center h-32 bg-kore-muted rounded-lg">2</div>
</x-kore::carousel.slide>
<x-kore::carousel.slide>
<div class="flex items-center justify-center h-32 bg-kore-muted rounded-lg">3</div>
</x-kore::carousel.slide>
<x-kore::carousel.slide>
<div class="flex items-center justify-center h-32 bg-kore-muted rounded-lg">4</div>
</x-kore::carousel.slide>
<x-kore::carousel.slide>
<div class="flex items-center justify-center h-32 bg-kore-muted rounded-lg">5</div>
</x-kore::carousel.slide>
</x-kore::carousel><x-kore::carousel :numVisible="3" :gap="24">
<x-kore::carousel.slide>
<div class="flex items-center justify-center h-32 bg-kore-muted rounded-lg">1</div>
</x-kore::carousel.slide>
<x-kore::carousel.slide>
<div class="flex items-center justify-center h-32 bg-kore-muted rounded-lg">2</div>
</x-kore::carousel.slide>
<x-kore::carousel.slide>
<div class="flex items-center justify-center h-32 bg-kore-muted rounded-lg">3</div>
</x-kore::carousel.slide>
<x-kore::carousel.slide>
<div class="flex items-center justify-center h-32 bg-kore-muted rounded-lg">4</div>
</x-kore::carousel.slide>
<x-kore::carousel.slide>
<div class="flex items-center justify-center h-32 bg-kore-muted rounded-lg">5</div>
</x-kore::carousel.slide>
</x-kore::carousel>Accesibilidad
Qué cambió en la 2.0, y por qué.
- Los indicadores ya no son
role="tab", sino botones conaria-current: no había ningúntabpanelal otro lado. Si los localizabas por rol en tus tests, cambia el selector. - Con
autoplayse pinta un botón de pausa. Un carrusel que se mueve solo y no se puede parar incumple la WCAG; antes no había forma de detenerlo. - Las diapositivas fuera de vista llevan
inert: lo que hay dentro de una oculta ya no se puede enfocar con el tabulador. Para llegar a un enlace de una diapositiva, primero hay que moverse a ella. - El
aria-roledescriptiondice «carrusel» y «diapositiva», no «carousel» y «slide»: no es un rol, es texto que el lector pronuncia, así que va en el idioma del contenido.
Props
| Prop | Tipo | Default | Descripción |
|---|---|---|---|
autoplay
|
bool | config(false) | Reproducción automática |
interval
|
int | config(5000) | Intervalo de autoplay en ms |
loop
|
bool | config(true) | Navegación circular |
pauseOnHover
|
bool | config(true) | Pausar autoplay al hover |
showIndicators
|
bool | config(true) | Mostrar indicadores (dots) |
showNavigation
|
bool | config(true) | Mostrar flechas de navegación |
numVisible
|
int | config(1) | Slides visibles simultáneamente |
gap
|
int | config(16) | Espacio entre slides en px |
ariaLabel
|
string|null | config(Carrusel) | Nombre de la región. Ponlo cuando haya varios carruseles en la misma página |