Riferimento API

Ogni export di @kkwaenggwari/animated-chorus con le sue props, i tipi e i valori predefiniti. Gli stessi nomi funzionano sul web e su React Native.

17 API

Numeri e testo

MotionNumber

Un numero le cui cifre scorrono come rotelle.

PropTipoPredefinitoDescrizione
valuenumber | bigint | string—obbligatoriaIl numero, oppure un testo numerico formattato da te.
mode'replace' | 'roll''replace'replace sposta ogni cifra cambiata di un passo; roll passa per i numeri intermedi.
direction'auto' | 'digit' | 'up' | 'down''auto'auto segue la variazione di grandezza, così i riporti scorrono in un solo verso; digit confronta ogni cifra per conto suo.
staggernumber45Millisecondi tra le cifre cambiate, dalle unità verso l’esterno. L’intera onda ha una durata limitata.
format(value) => string | Intl.NumberFormatOptionsUna funzione che restituisce il testo da mostrare, oppure le opzioni di Intl.NumberFormat (con intl).
intlbooleanfalseUsa l’Intl.NumberFormat integrato. Disattivato di default, così nessun runtime ha bisogno di Intl.
localestring | string[]Locale per intl.
prefixstringTesto prima del numero.
suffixstringTesto dopo il numero.
transitionTransitionspringUna curva di timing { duration, easing } o una molla { tempo: 'spring', spring }. Le molle conservano lo slancio quando vengono interrotte.
onMotionComplete(value) => voidViene eseguito con il valore quando le cifre si sono assestate.
Pagina del componente e banco di prova

MotionText

Testo che si anima quando cambia: il testo numerico scorre cifra per cifra, il resto viene scambiato.

PropTipoPredefinitoDescrizione
childrenReactNodeIl testo da mostrare.
aselement'span'L’elemento da renderizzare.
transitionTransitionspringUna curva di timing { duration, easing } o una molla { tempo: 'spring', spring }. Le molle conservano lo slancio quando vengono interrotte.
onMotionComplete(text) => voidViene eseguito quando il movimento si assesta.
Pagina del componente e banco di prova

MotionStream

Testo in streaming rivelato a ritmo costante, che recupera le raffiche.

PropTipoPredefinitoDescrizione
textstring—obbligatoriaIl testo ricevuto finora. Il testo che cresce viene rivelato a ritmo costante; una riscrittura prosegue dall’inizio comune.
speednumber90Velocità base di rivelazione, in caratteri al secondo.
catchUpnumber900Un arretrato viene rivelato entro circa questi millisecondi accelerando.
initialbooleanfalseRivela anche il testo presente al montaggio (altrimenti compare subito).
effect'fade' | 'none''fade'fade fa comparire in dissolvenza i nuovi caratteri; none li mostra direttamente.
children(visible: string) => ReactNodeUna funzione che riceve il testo cadenzato, per esempio per renderizzare Markdown.
aselement'span'L’elemento da renderizzare.
onMotionComplete(text) => voidViene eseguito ogni volta che la rivelazione raggiunge text.
Pagina del componente e banco di prova

Contenuto e dimensione

MotionSwap

Contenuto che passa in dissolvenza incrociata mentre l’elemento si ridimensiona.

PropTipoPredefinitoDescrizione
valueunknownIdentità del contenuto; un nuovo valore lo scambia. I figli di solo testo sono la loro stessa identità.
childrenReactNodeIl contenuto.
aselement'span'L’elemento da renderizzare.
inlinebooleanas === 'span'true si adatta al contenuto (etichette, icone); false riempie la larghezza del genitore e anima l’altezza.
align'start' | 'center' | 'end''center'Dove si trova il contenuto mentre la dimensione cambia.
effect'fade' | 'up' | 'down' | 'scale''fade'Come entra ed esce il contenuto: up sale, down scende, scale cresce.
transitionTransitionspringUna curva di timing { duration, easing } o una molla { tempo: 'spring', spring }. Le molle conservano lo slancio quando vengono interrotte.
onMotionComplete(value) => voidViene eseguito quando il movimento si assesta.
Pagina del componente e banco di prova

MotionHeight

Anima l’altezza secondo il contenuto: chiusura, apertura e cambi di contenuto.

PropTipoPredefinitoDescrizione
openbooleantruefalse riduce l’altezza a zero; il contenuto resta montato ma nascosto e inerte.
childrenReactNodeIl contenuto.
aselement'div'L’elemento da renderizzare.
transitionTransitionspringUna curva di timing { duration, easing } o una molla { tempo: 'spring', spring }. Le molle conservano lo slancio quando vengono interrotte.
onMotionComplete(open) => voidViene eseguito con open quando l’altezza si è assestata.
Pagina del componente e banco di prova

MotionPresence

Mantiene montato il contenuto mentre entra ed esce con un’animazione.

PropTipoPredefinitoDescrizione
presentboolean—obbligatoriaMostra o nasconde il contenuto. Cambia questa invece di smontare.
enterPose{ opacity: 1, translateY: 0 }La pose a riposo.
exitPose{ opacity: 0, translateY: -12 }La pose con cui il contenuto esce e da cui entra.
aselement'div'L’elemento da renderizzare.
transitionTransitionspringUna curva di timing { duration, easing } o una molla { tempo: 'spring', spring }. Le molle conservano lo slancio quando vengono interrotte.
onExitComplete() => voidViene eseguito dopo che il contenuto è uscito ed è stato rimosso.
Pagina del componente e banco di prova

Selezione e pagine

MotionHighlight

Elementi a partire dai dati con un’unica evidenziazione che si sposta sull’elemento selezionato.

PropTipoPredefinitoDescrizione
itemsreadonly T[]—obbligatoriaIl tuo array di dati.
valuekey | null—obbligatoriaKey dell’elemento evidenziato; null nasconde l’evidenziazione.
onValueChange(key, item) => voidViene eseguito con la key e l’elemento quando un elemento viene premuto.
getKey(item) => string | numberitem.idRestituisce una key unica e stabile per un elemento. Di default è item.id, oppure l’elemento stesso per stringhe e numeri.
renderItem(item, { selected, index }) => ReactNodeitem.labelDisegna un elemento; riceve se è selezionato.
hoverbooleanfalseSegue il puntatore sugli elementi e torna a value quando esce (web).
itemAselement'button'L’elemento per ogni voce.
itemClassNamestringClasse per l’elemento di ogni voce; itemStyle imposta il suo stile inline.
highlightClassNamestringClasse per l’evidenziazione; highlightStyle imposta il suo stile inline.
transitionTransitionspringUna curva di timing { duration, easing } o una molla { tempo: 'spring', spring }. Le molle conservano lo slancio quando vengono interrotte.
Pagina del componente e banco di prova

MotionPager

Pagine da scorrere con lo swipe a partire dai dati.

PropTipoPredefinitoDescrizione
itemsreadonly T[]—obbligatoriaIl tuo array di dati.
indexnumberLa pagina mostrata. Se la ometti, il pager gestisce la propria.
defaultIndexnumber0Pagina iniziale quando index non è controllato.
onIndexChange(index, item) => voidViene eseguito con l’indice e l’elemento appena uno swipe, un tasto o un gesto della rotellina si assesta.
getKey(item) => string | numberitem.idRestituisce una key unica e stabile per un elemento. Di default è item.id, oppure l’elemento stesso per stringhe e numeri.
renderItem(item, { index, active }) => ReactNodeitem.labelDisegna una pagina; riceve il suo indice e se è attiva.
gapnumber0Spazio tra le pagine, in pixel.
itemClassNamestringClasse per l’elemento di ogni voce; itemStyle imposta il suo stile inline.
transitionTransitionspringUna curva di timing { duration, easing } o una molla { tempo: 'spring', spring }. Le molle conservano lo slancio quando vengono interrotte.
Pagina del componente e banco di prova

Liste

MotionList

Una lista con key a partire dai dati che anima solo ciò che è cambiato.

PropTipoPredefinitoDescrizione
itemsreadonly T[]—obbligatoriaIl tuo array di dati.
getKey(item) => string | numberitem.idRestituisce una key unica e stabile per un elemento. Di default è item.id, oppure l’elemento stesso per stringhe e numeri.
renderItem(item, index) => ReactNodeitem.labelDisegna un elemento.
aselement'div'L’elemento da renderizzare.
itemAselement'li' | 'div'L’elemento per ogni voce.
itemClassNamestringClasse per l’elemento di ogni voce; itemStyle imposta il suo stile inline.
effect'rise' | 'fade' | 'scale' | 'slide''rise'Come entrano ed escono gli elementi.
distancenumber16Percorso di rise e slide, in pixel.
staggernumber40Millisecondi tra gli elementi che entrano.
order'forward' | 'reverse''forward'Direzione dello sfalsamento.
presentbooleantruefalse anima l’uscita di tutti gli elementi mantenendo il layout; true li fa tornare.
initialbooleantrueRiproduce l’entrata quando la lista viene montata.
playKeystring | numberCambiarla riproduce di nuovo l’entrata.
transitionTransitionspringTransizione per gli elementi che entrano ed escono.
layoutTransitionTransitionspringTransizione per gli elementi che scivolano nelle nuove posizioni.
Pagina del componente e banco di prova

MotionReorder

Trascina per riordinare una lista o una griglia, con spostamenti da tastiera.

PropTipoPredefinitoDescrizione
itemsreadonly T[]Gli elementi, quando controlli tu l’ordine.
defaultItemsreadonly T[][]Elementi iniziali, quando è il componente a gestire l’ordine.
onItemsChange(items, { reason, key }) => voidViene eseguito con il nuovo ordine e con l’origine della modifica: trascinamento, rilascio o tastiera.
getKey(item) => string | numberitemRestituisce una key unica per un elemento. Di default è l’elemento stesso.
renderItem(item, { index, dragging }) => ReactNodeitem.labelDisegna un elemento; riceve il suo indice e se lo si sta trascinando.
reorder'live' | 'drop''live'live sposta gli altri elementi durante il trascinamento; drop aspetta il rilascio.
layout'list' | 'grid''grid'list o grid.
columnsnumber3Colonne di una griglia.
gapnumber12Spazio tra gli elementi, in pixel.
disabledbooleanfalseDisattiva il trascinamento.
durationnumber260Millisecondi per gli elementi che si spostano.
itemClassNamestringClasse per l’elemento di ogni voce; itemStyle imposta il suo stile inline.
Pagina del componente e banco di prova

Gesti

MotionSwipe

Una riga che rivela azioni con uno swipe orizzontale e si può scartare con lo swipe.

PropTipoPredefinitoDescrizione
childrenReactNodeIl contenuto della riga.
startActionsReactNodeRivelate all’inizio della riga quando la si trascina verso la fine.
endActionsReactNodeRivelate alla fine della riga quando la si trascina verso l’inizio.
dismiss'start' | 'end' | 'both'Lati in cui uno swipe lungo o un lancio rimuove la riga.
onDismiss(side) => voidViene eseguito dopo che la riga è scivolata via e si è chiusa; qui rimuovi l’elemento dai tuoi dati.
onOpenChange(side | null) => voidViene eseguito con il lato aperto, oppure null quando la riga si chiude.
disabledbooleanfalseDisattiva lo swipe.
contentClassNamestringClasse per il contenuto della riga; contentStyle imposta il suo stile inline.
transitionTransitionspringUna curva di timing { duration, easing } o una molla { tempo: 'spring', spring }. Le molle conservano lo slancio quando vengono interrotte.
Pagina del componente e banco di prova

MotionHold

Tieni premuto per confermare; un rilascio anticipato torna indietro.

PropTipoPredefinitoDescrizione
childrenReactNodeL’etichetta del pulsante.
onConfirm() => voidViene eseguito quando la pressione prolungata è completa.
durationnumber1200Millisecondi per cui bisogna tenere premuto.
disabledbooleanfalseDisattiva il pulsante.
fillClassNamestringClasse per il riempimento che cresce; fillStyle imposta il suo stile inline.
Pagina del componente e banco di prova

Overlay

MotionSheet

Un bottom sheet, un top sheet o un cassetto laterale con detent.

PropTipoPredefinitoDescrizione
openbooleanfalseSe lo sheet è visibile.
onOpenChange(open) => voidViene eseguito con false quando lo sheet viene chiuso trascinandolo, toccando fuori o con Esc.
detents(number | 'content')[]['content']Dimensioni di riposo: una frazione dello schermo, pixel, oppure 'content'.
detentnumberIndice del detent controllato.
defaultDetentnumber0Indice del detent usato all’apertura senza detent.
onDetentChange(index) => voidViene eseguito con l’indice del detent su cui lo sheet si assesta.
side'bottom' | 'top' | 'start' | 'end''bottom'Il bordo da cui arriva lo sheet.
modalbooleantrueAggiunge uno sfondo, tiene il focus all’interno e rende inerte la pagina.
dismissiblebooleantrueTrascinare oltre il detent più piccolo, lo sfondo ed Esc lo chiudono.
backdropClassNamestringClasse per lo sfondo; backdropStyle imposta il suo stile inline.
transitionTransitionspringUna curva di timing { duration, easing } o una molla { tempo: 'spring', spring }. Le molle conservano lo slancio quando vengono interrotte.
Pagina del componente e banco di prova

MotionZoom

Un’immagine che si ingrandisce da dove si trova fino a riempire lo schermo.

PropTipoPredefinitoDescrizione
srcstringL’immagine mostrata al suo posto.
zoomSrcstringUn’immagine più grande mostrata appena è caricata; mantieni le stesse proporzioni.
marginnumber24Spazio lasciato attorno all’immagine ingrandita, in pixel.
disabledbooleanfalseDisattiva lo zoom.
onZoomChange(zoomed) => voidViene eseguito con true quando è ingrandita e con false quando si chiude.
backdropStyleCSSPropertiesStile inline per lo sfondo.
transitionTransitionspringUna curva di timing { duration, easing } o una molla { tempo: 'spring', spring }. Le molle conservano lo slancio quando vengono interrotte.
Pagina del componente e banco di prova

Avanzamento

ProgressBar

Una linea di avanzamento controllata, con uno stato indeterminato.

PropTipoPredefinitoDescrizione
valuenumber | nullAvanzamento da 0 a max; null è indeterminato.
maxnumber100Il valore che significa completato.
colorstring'currentColor'Colore del riempimento.
trackColorstring'#e7ece9'Colore della traccia.
thicknessnumber8Spessore della linea, in pixel.
direction'ltr' | 'rtl''ltr'Riempimento da sinistra (ltr) o da destra (rtl).
transitionTransitionspringUna curva di timing { duration, easing } o una molla { tempo: 'spring', spring }. Le molle conservano lo slancio quando vengono interrotte.
Pagina del componente e banco di prova

ProgressRing

Un anello di avanzamento controllato, con uno stato indeterminato.

PropTipoPredefinitoDescrizione
valuenumber | nullAvanzamento da 0 a max; null è indeterminato.
maxnumber100Il valore che significa completato.
sizenumber96Diametro in pixel.
thicknessnumber8Spessore dell’anello, in pixel.
colorstring'currentColor'Colore dell’arco.
trackColorstring'#e7ece9'Colore della traccia.
childrenReactNodeUn’etichetta mostrata al centro.
transitionTransitionspringUna curva di timing { duration, easing } o una molla { tempo: 'spring', spring }. Le molle conservano lo slancio quando vengono interrotte.
Pagina del componente e banco di prova

Transizioni

motionTokens

Valori pronti per qualsiasi prop transition.

PropTipoPredefinitoDescrizione
duration{ instant, fast, normal, slow }0 · 140 · 280 · 520Durate in millisecondi.
easing{ ease, easeOut, expoOut, backOut }TransitionTransizioni di timing con una durata e una curva con nome.
spring{ quick, basic, gentle, bouncy }TransitionTransizioni a molla, da rapide e decise a morbide ed elastiche.
Transizioni
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} />
    </>
  );
}

Cerca

Scrivi per cercare nella documentazione.