Saltar al contenido
ssntl/ui

Carousel

Un carrusel en ciclo con las tarjetas vecinas asomándose y un punto de progreso por tarjeta: el autoplay se pausa al interactuar y fuera de pantalla, y con movimiento reducido espera a que pulses Play.

Instalación

Agrégalo con el CLI de shadcn o copia el código a mano.

$ pnpm dlx shadcn@latest add @ssntl/carousel

Referencia de API

Carousel

  • duration?Tipo: numberHow long each card stays up during autoplay, in ms.Por defecto:5000

También acepta todos los props de <div>.

CarouselTabList

  • aria-labelobligatorioTipo: stringNames the set: “Our clients' businesses”.Por defecto:—

También acepta todos los props de <div>.

CarouselPlayButton

  • playLabel?Tipo: stringPor defecto:"Play carousel"
  • pauseLabel?Tipo: stringPor defecto:"Pause carousel"

También acepta todos los props de Button.

Sin props propios: cada uno pasa todos sus props al elemento de la derecha.

  • CarouselContent<div>
  • CarouselItem<li>
  • CarouselControls<div>
  • CarouselTab<button>

useCarouselItem()

The enclosing item's state. Content also renders in clones: check isClone before playing media or tracking impressions.

Devuelve

  • indexTipo: numberThe item's position among the items in CarouselContent.
  • isCurrentTipo: booleanWhether this item is the one being shown.
  • isCloneTipo: booleanWhether this copy is a clone that keeps the loop seamless.

Reglas

Lo que este componente espera de ti, tal como se instala en components/ui/carousel.md junto al código. El archivo completo agrega cuándo usarlo, teclado, los fundamentos de UI que aplica y cada regla compartida (en inglés).

components/ui/carousel.md
## Reglas de Carousel

- **Pausa.** El autoplay tiene un botón de reproducir (WCAG 2.2.2) y se pausa solo cuando alguien hace scroll, desliza, enfoca un punto o el carrusel sale de la pantalla.
- **Movimiento reducido.** No hay autoplay hasta pulsar Play, y las tarjetas saltan en lugar de deslizarse.
- Una pestaña por tarjeta, en el mismo orden, cuyo texto nombra la tarjeta; las flechas, Inicio y Fin se mueven entre ellas (carrusel WAI-ARIA con pestañas).
- Solo se alcanza la tarjeta actual: los clones y las tarjetas que asoman son inert, así nadie sigue un enlace de una tarjeta que no está mirando.
- El relleno de progreso es el reloj: una animación de escala en el compositor que se pausa en su lugar; el punto crece a píldora en `--duration-panel`.
- Los puntos miden 8px; el área táctil alrededor de cada uno es de al menos 32 × 48px, muy por encima de los 24px de WCAG para un grupo denso.
- Las fotos llenan la tarjeta con un contorno de 1px al 10%; la leyenda va sobre un degradado oscuro y las tarjetas que asoman atenúan la suya.
- El contenido también se dibuja en clones: revisa `isClone` (`useCarouselItem`) antes de reproducir media o medir impresiones.
Abrir el archivo de reglas completo (se abre en otra pestaña)