Referencia de la API

Todos los exports de @kkwaenggwari/animated-chorus con sus props, tipos y valores por defecto. Los mismos nombres funcionan en la web y en React Native.

17 APIs

Números y texto

MotionNumber

Un número cuyas cifras ruedan como ruedas.

PropTipoPor defectoDescripción
valuenumber | bigint | string—obligatoriaEl número, o texto numérico ya formateado por quien llama.
mode'replace' | 'roll''replace'replace mueve un paso cada cifra que cambia; roll pasa por los dígitos intermedios.
direction'auto' | 'digit' | 'up' | 'down''auto'auto sigue el cambio de magnitud para que los acarreos rueden en un sentido; digit compara cada cifra por separado.
staggernumber45Milisegundos entre cifras que cambian, desde las unidades hacia fuera. La onda completa está acotada.
format(value) => string | Intl.NumberFormatOptionsUna función que devuelve el texto que se muestra, u opciones de Intl.NumberFormat (con intl).
intlbooleanfalseUsa el Intl.NumberFormat integrado. Desactivado por defecto para que ningún entorno necesite Intl.
localestring | string[]Configuración regional para intl.
prefixstringTexto antes del número.
suffixstringTexto después del número.
transitionTransitionspringUna curva de tiempo { duration, easing } o un resorte { tempo: 'spring', spring }. Los resortes conservan su impulso cuando se interrumpen.
onMotionComplete(value) => voidSe ejecuta con el valor cuando las cifras se han asentado.
Página del componente y banco de pruebas

MotionText

Texto que se anima al cambiar: el texto numérico rueda por cifras y el resto se intercambia.

PropTipoPor defectoDescripción
childrenReactNodeEl texto que se muestra.
aselement'span'El elemento que se renderiza.
transitionTransitionspringUna curva de tiempo { duration, easing } o un resorte { tempo: 'spring', spring }. Los resortes conservan su impulso cuando se interrumpen.
onMotionComplete(text) => voidSe ejecuta cuando el movimiento se asienta.
Página del componente y banco de pruebas

MotionStream

Texto en streaming mostrado a un ritmo constante que se pone al día con las ráfagas.

PropTipoPor defectoDescripción
textstring—obligatoriaEl texto hasta ahora. El texto que crece aparece a un ritmo constante; una reescritura continúa desde el inicio común.
speednumber90Ritmo base de revelado, en caracteres por segundo.
catchUpnumber900Lo acumulado se revela en unos tantos milisegundos acelerando el ritmo.
initialbooleanfalseRevela también el texto presente al montar (si no, se muestra de inmediato).
effect'fade' | 'none''fade'fade hace aparecer los caracteres nuevos con un fundido; none los muestra directamente.
children(visible: string) => ReactNodeUna función que recibe el texto dosificado, por ejemplo para renderizar Markdown.
aselement'span'El elemento que se renderiza.
onMotionComplete(text) => voidSe ejecuta cada vez que el revelado alcanza a text.
Página del componente y banco de pruebas

Contenido y tamaño

MotionSwap

Contenido que hace un fundido cruzado mientras el elemento se redimensiona.

PropTipoPor defectoDescripción
valueunknownIdentidad del contenido; un valor nuevo provoca el cambio. Los hijos de texto plano son su propia identidad.
childrenReactNodeEl contenido.
aselement'span'El elemento que se renderiza.
inlinebooleanas === 'span'true ajusta el tamaño al contenido (etiquetas, iconos); false ocupa el ancho del padre y anima la altura.
align'start' | 'center' | 'end''center'Dónde se sitúa el contenido mientras cambia el tamaño.
effect'fade' | 'up' | 'down' | 'scale''fade'Cómo entra y sale el contenido: up sube, down baja y scale crece.
transitionTransitionspringUna curva de tiempo { duration, easing } o un resorte { tempo: 'spring', spring }. Los resortes conservan su impulso cuando se interrumpen.
onMotionComplete(value) => voidSe ejecuta cuando el movimiento se asienta.
Página del componente y banco de pruebas

MotionHeight

Anima la altura hasta su contenido: plegar, desplegar y cambios de contenido.

PropTipoPor defectoDescripción
openbooleantruefalse pliega hasta altura cero; el contenido sigue montado pero oculto e inerte.
childrenReactNodeEl contenido.
aselement'div'El elemento que se renderiza.
transitionTransitionspringUna curva de tiempo { duration, easing } o un resorte { tempo: 'spring', spring }. Los resortes conservan su impulso cuando se interrumpen.
onMotionComplete(open) => voidSe ejecuta con open cuando la altura se ha asentado.
Página del componente y banco de pruebas

MotionPresence

Mantiene el contenido montado mientras entra y sale animado.

PropTipoPor defectoDescripción
presentboolean—obligatoriaMuestra u oculta el contenido. Cambia esto en lugar de desmontar.
enterPose{ opacity: 1, translateY: 0 }La pose en reposo.
exitPose{ opacity: 0, translateY: -12 }La pose con la que el contenido sale y desde la que entra.
aselement'div'El elemento que se renderiza.
transitionTransitionspringUna curva de tiempo { duration, easing } o un resorte { tempo: 'spring', spring }. Los resortes conservan su impulso cuando se interrumpen.
onExitComplete() => voidSe ejecuta después de que el contenido haya salido y se haya eliminado.
Página del componente y banco de pruebas

Selección y paginación

MotionHighlight

Elementos a partir de datos con un resaltado que viaja hasta el elemento seleccionado.

PropTipoPor defectoDescripción
itemsreadonly T[]—obligatoriaTu array de datos.
valuekey | null—obligatoriaKey del elemento resaltado; null oculta el resaltado.
onValueChange(key, item) => voidSe ejecuta con la key y el elemento cuando se pulsa un elemento.
getKey(item) => string | numberitem.idDevuelve una key única y estable para un elemento. Por defecto item.id, o el propio elemento si es una cadena o un número.
renderItem(item, { selected, index }) => ReactNodeitem.labelDibuja un elemento; recibe si está seleccionado.
hoverbooleanfalseSigue al puntero sobre los elementos y vuelve a value al salir (web).
itemAselement'button'El elemento de cada ítem.
itemClassNamestringClase para el elemento de cada ítem; itemStyle fija su estilo en línea.
highlightClassNamestringClase para el resaltado; highlightStyle fija su estilo en línea.
transitionTransitionspringUna curva de tiempo { duration, easing } o un resorte { tempo: 'spring', spring }. Los resortes conservan su impulso cuando se interrumpen.
Página del componente y banco de pruebas

MotionPager

Páginas deslizables a partir de datos.

PropTipoPor defectoDescripción
itemsreadonly T[]—obligatoriaTu array de datos.
indexnumberLa página que se muestra. Omítela para que el paginador la gestione.
defaultIndexnumber0Página inicial cuando index no está controlado.
onIndexChange(index, item) => voidSe ejecuta con el índice y el elemento en cuanto un deslizamiento, una tecla o la rueda se asientan.
getKey(item) => string | numberitem.idDevuelve una key única y estable para un elemento. Por defecto item.id, o el propio elemento si es una cadena o un número.
renderItem(item, { index, active }) => ReactNodeitem.labelDibuja una página; recibe su índice y si está activa.
gapnumber0Espacio entre páginas en píxeles.
itemClassNamestringClase para el elemento de cada ítem; itemStyle fija su estilo en línea.
transitionTransitionspringUna curva de tiempo { duration, easing } o un resorte { tempo: 'spring', spring }. Los resortes conservan su impulso cuando se interrumpen.
Página del componente y banco de pruebas

Listas

MotionList

Una lista con keys a partir de datos que anima solo lo que cambió.

PropTipoPor defectoDescripción
itemsreadonly T[]—obligatoriaTu array de datos.
getKey(item) => string | numberitem.idDevuelve una key única y estable para un elemento. Por defecto item.id, o el propio elemento si es una cadena o un número.
renderItem(item, index) => ReactNodeitem.labelDibuja un elemento.
aselement'div'El elemento que se renderiza.
itemAselement'li' | 'div'El elemento de cada ítem.
itemClassNamestringClase para el elemento de cada ítem; itemStyle fija su estilo en línea.
effect'rise' | 'fade' | 'scale' | 'slide''rise'Cómo entran y salen los elementos.
distancenumber16Recorrido de rise y slide en píxeles.
staggernumber40Milisegundos entre los elementos que entran.
order'forward' | 'reverse''forward'Sentido del escalonado.
presentbooleantruefalse anima la salida de todos los elementos manteniendo el layout; true los trae de vuelta.
initialbooleantrueReproduce la entrada cuando la lista se monta.
playKeystring | numberCambiarlo repite la entrada.
transitionTransitionspringTransición de los elementos que entran y salen.
layoutTransitionTransitionspringTransición de los elementos que se deslizan a su nueva posición.
Página del componente y banco de pruebas

MotionReorder

Arrastra para reordenar una lista o una cuadrícula, con movimientos por teclado.

PropTipoPor defectoDescripción
itemsreadonly T[]Los elementos, cuando tú controlas el orden.
defaultItemsreadonly T[][]Elementos iniciales, cuando el componente guarda el orden.
onItemsChange(items, { reason, key }) => voidSe ejecuta con el nuevo orden y con si vino de un arrastre, de soltar o del teclado.
getKey(item) => string | numberitemDevuelve una key única para un elemento. Por defecto, el propio elemento.
renderItem(item, { index, dragging }) => ReactNodeitem.labelDibuja un elemento; recibe su índice y si se está arrastrando.
reorder'live' | 'drop''live'live mueve los demás elementos mientras arrastras; drop espera a que sueltes.
layout'list' | 'grid''grid'list o grid.
columnsnumber3Columnas de una cuadrícula.
gapnumber12Espacio entre elementos en píxeles.
disabledbooleanfalseDesactiva el arrastre.
durationnumber260Milisegundos para los elementos que se apartan.
itemClassNamestringClase para el elemento de cada ítem; itemStyle fija su estilo en línea.
Página del componente y banco de pruebas

Gestos

MotionSwipe

Una fila que revela acciones con un deslizamiento horizontal y que se puede apartar deslizando.

PropTipoPor defectoDescripción
childrenReactNodeEl contenido de la fila.
startActionsReactNodeAparecen al principio de la línea cuando la fila se arrastra hacia el final.
endActionsReactNodeAparecen al final de la línea cuando la fila se arrastra hacia el principio.
dismiss'start' | 'end' | 'both'Lados en los que un deslizamiento largo o un lanzamiento elimina la fila.
onDismiss(side) => voidSe ejecuta después de que la fila haya salido y se haya plegado; quita aquí el elemento de tus datos.
onOpenChange(side | null) => voidSe ejecuta con el lado abierto, o con null cuando la fila se cierra.
disabledbooleanfalseDesactiva el deslizamiento.
contentClassNamestringClase para el contenido de la fila; contentStyle fija su estilo en línea.
transitionTransitionspringUna curva de tiempo { duration, easing } o un resorte { tempo: 'spring', spring }. Los resortes conservan su impulso cuando se interrumpen.
Página del componente y banco de pruebas

MotionHold

Mantén pulsado para confirmar; si sueltas antes, retrocede.

PropTipoPor defectoDescripción
childrenReactNodeLa etiqueta del botón.
onConfirm() => voidSe ejecuta una vez cuando se completa la pulsación.
durationnumber1200Milisegundos que hay que mantener pulsado.
disabledbooleanfalseDesactiva el botón.
fillClassNamestringClase para el relleno que crece; fillStyle fija su estilo en línea.
Página del componente y banco de pruebas

Superposiciones

MotionSheet

Una hoja inferior, una hoja superior o un cajón lateral con posiciones de anclaje.

PropTipoPor defectoDescripción
openbooleanfalseSi la hoja se muestra.
onOpenChange(open) => voidSe ejecuta con false cuando la hoja se cierra arrastrando, tocando o con Escape.
detents(number | 'content')[]['content']Tamaños de reposo: una fracción de la pantalla, píxeles o 'content'.
detentnumberÍndice de posición controlado.
defaultDetentnumber0Índice de posición que se usa al abrir sin detent.
onDetentChange(index) => voidSe ejecuta con el índice de la posición en la que se asienta la hoja.
side'bottom' | 'top' | 'start' | 'end''bottom'El borde desde el que aparece la hoja.
modalbooleantrueAñade un fondo, mantiene el foco dentro y deja la página inerte.
dismissiblebooleantrueArrastrar más allá de la posición más pequeña, el fondo y Escape la cierran.
backdropClassNamestringClase para el fondo; backdropStyle fija su estilo en línea.
transitionTransitionspringUna curva de tiempo { duration, easing } o un resorte { tempo: 'spring', spring }. Los resortes conservan su impulso cuando se interrumpen.
Página del componente y banco de pruebas

MotionZoom

Una imagen que se amplía desde donde está hasta llenar la pantalla.

PropTipoPor defectoDescripción
srcstringLa imagen que se muestra en su sitio.
zoomSrcstringUna imagen más grande que se muestra cuando ha cargado; mantén la misma proporción.
marginnumber24Espacio que se deja alrededor de la imagen ampliada, en píxeles.
disabledbooleanfalseDesactiva el zoom.
onZoomChange(zoomed) => voidSe ejecuta con true al ampliar y con false al cerrar.
backdropStyleCSSPropertiesEstilo en línea del fondo.
transitionTransitionspringUna curva de tiempo { duration, easing } o un resorte { tempo: 'spring', spring }. Los resortes conservan su impulso cuando se interrumpen.
Página del componente y banco de pruebas

Progreso

ProgressBar

Una línea de progreso controlada con estado indeterminado.

PropTipoPor defectoDescripción
valuenumber | nullProgreso de 0 a max; null es indeterminado.
maxnumber100El valor que significa completo.
colorstring'currentColor'Color del relleno.
trackColorstring'#e7ece9'Color de la pista.
thicknessnumber8Grosor de la línea en píxeles.
direction'ltr' | 'rtl''ltr'Rellenar desde la izquierda (ltr) o desde la derecha (rtl).
transitionTransitionspringUna curva de tiempo { duration, easing } o un resorte { tempo: 'spring', spring }. Los resortes conservan su impulso cuando se interrumpen.
Página del componente y banco de pruebas

ProgressRing

Un anillo de progreso controlado con estado indeterminado.

PropTipoPor defectoDescripción
valuenumber | nullProgreso de 0 a max; null es indeterminado.
maxnumber100El valor que significa completo.
sizenumber96Diámetro en píxeles.
thicknessnumber8Grosor del anillo en píxeles.
colorstring'currentColor'Color del arco.
trackColorstring'#e7ece9'Color de la pista.
childrenReactNodeUna etiqueta que se muestra en el centro.
transitionTransitionspringUna curva de tiempo { duration, easing } o un resorte { tempo: 'spring', spring }. Los resortes conservan su impulso cuando se interrumpen.
Página del componente y banco de pruebas

Transiciones

motionTokens

Valores listos para cualquier prop transition.

PropTipoPor defectoDescripción
duration{ instant, fast, normal, slow }0 · 140 · 280 · 520Duraciones en milisegundos.
easing{ ease, easeOut, expoOut, backOut }TransitionTransiciones de tiempo con una duración y una curva con nombre.
spring{ quick, basic, gentle, bouncy }TransitionTransiciones de resorte, de rápidas y firmes a suaves y con rebote.
Transiciones
App.jsx
// Web and React Native: the same import.
import { MotionNumber, MotionList } from '@kkwaenggwari/animated-chorus';

export function Score({ points, players }) {
  return (
    <>
      <MotionNumber value={points} />
      <MotionList items={players} renderItem={(player) => player.name} />
    </>
  );
}

Buscar

Escribe para buscar en la documentación.