Referensi API

Setiap ekspor @kkwaenggwari/animated-chorus dengan props, tipe, dan nilai bawaannya. Nama yang sama bekerja di web dan React Native.

17 API

Angka dan teks

MotionNumber

Angka yang digitnya bergulir seperti roda.

PropTipeBawaanDeskripsi
valuenumber | bigint | string—wajibAngka, atau teks angka yang diformat pemanggil.
mode'replace' | 'roll''replace'replace menggerakkan setiap digit yang berubah satu langkah; roll melewati digit di antaranya.
direction'auto' | 'digit' | 'up' | 'down''auto'auto mengikuti perubahan besaran sehingga simpanan bergulir ke satu arah; digit membandingkan setiap digit sendiri-sendiri.
staggernumber45Milidetik antar digit yang berubah, dari satuan ke luar. Seluruh riaknya dibatasi.
format(value) => string | Intl.NumberFormatOptionsFungsi yang mengembalikan teks untuk ditampilkan, atau opsi Intl.NumberFormat (dengan intl).
intlbooleanfalseGunakan Intl.NumberFormat bawaan. Mati secara bawaan agar tidak ada runtime yang memerlukan Intl.
localestring | string[]Locale untuk intl.
prefixstringTeks sebelum angka.
suffixstringTeks setelah angka.
transitionTransitionspringKurva timing { duration, easing } atau pegas { tempo: 'spring', spring }. Pegas mempertahankan momentumnya saat diinterupsi.
onMotionComplete(value) => voidBerjalan dengan nilainya setelah digit berhenti.
Halaman komponen dan meja kerja

MotionText

Teks yang beranimasi saat berubah: teks angka bergulir per digit, teks lain bertukar.

PropTipeBawaanDeskripsi
childrenReactNodeTeks yang ditampilkan.
aselement'span'Elemen yang dirender.
transitionTransitionspringKurva timing { duration, easing } atau pegas { tempo: 'spring', spring }. Pegas mempertahankan momentumnya saat diinterupsi.
onMotionComplete(text) => voidBerjalan saat gerak berhenti.
Halaman komponen dan meja kerja

MotionStream

Teks mengalir yang ditampilkan dengan tempo stabil dan menyusul saat ada lonjakan.

PropTipeBawaanDeskripsi
textstring—wajibTeks sejauh ini. Teks yang bertambah ditampilkan dengan tempo stabil; teks yang ditulis ulang melanjutkan dari awal yang sama.
speednumber90Laju tampilan dasar dalam karakter per detik.
catchUpnumber900Tumpukan antrean ditampilkan dalam sekitar sekian milidetik dengan mempercepat.
initialbooleanfalseTampilkan perlahan juga teks yang ada saat mount (jika tidak, langsung tampil).
effect'fade' | 'none''fade'fade memunculkan karakter baru perlahan; none menampilkannya langsung.
children(visible: string) => ReactNodeFungsi yang menerima teks bertempo, misalnya untuk merender Markdown.
aselement'span'Elemen yang dirender.
onMotionComplete(text) => voidBerjalan setiap kali tampilan menyusul text.
Halaman komponen dan meja kerja

Konten dan ukuran

MotionSwap

Konten yang bertukar dengan crossfade saat elemen berubah ukuran.

PropTipeBawaanDeskripsi
valueunknownIdentitas konten; nilai baru memicu pertukaran. Children berupa teks biasa adalah identitasnya sendiri.
childrenReactNodeKontennya.
aselement'span'Elemen yang dirender.
inlinebooleanas === 'span'true menyesuaikan ukuran dengan konten (label, ikon); false mengisi lebar induk dan menganimasikan tinggi.
align'start' | 'center' | 'end''center'Posisi konten selama ukuran berubah.
effect'fade' | 'up' | 'down' | 'scale''fade'Cara konten masuk dan pergi: up naik, down turun, scale membesar.
transitionTransitionspringKurva timing { duration, easing } atau pegas { tempo: 'spring', spring }. Pegas mempertahankan momentumnya saat diinterupsi.
onMotionComplete(value) => voidBerjalan saat gerak berhenti.
Halaman komponen dan meja kerja

MotionHeight

Menganimasikan tinggi ke kontennya: menciut, meluas, dan perubahan konten.

PropTipeBawaanDeskripsi
openbooleantruefalse menciut ke tinggi nol; konten tetap terpasang tetapi tersembunyi dan inert.
childrenReactNodeKontennya.
aselement'div'Elemen yang dirender.
transitionTransitionspringKurva timing { duration, easing } atau pegas { tempo: 'spring', spring }. Pegas mempertahankan momentumnya saat diinterupsi.
onMotionComplete(open) => voidBerjalan dengan open setelah tinggi berhenti.
Halaman komponen dan meja kerja

MotionPresence

Menjaga konten tetap terpasang saat beranimasi masuk dan keluar.

PropTipeBawaanDeskripsi
presentboolean—wajibTampilkan atau sembunyikan konten. Ubah ini alih-alih melakukan unmount.
enterPose{ opacity: 1, translateY: 0 }Pose saat diam.
exitPose{ opacity: 0, translateY: -12 }Pose saat konten pergi dan tempat asal saat ia masuk.
aselement'div'Elemen yang dirender.
transitionTransitionspringKurva timing { duration, easing } atau pegas { tempo: 'spring', spring }. Pegas mempertahankan momentumnya saat diinterupsi.
onExitComplete() => voidBerjalan setelah konten pergi dan dihapus.
Halaman komponen dan meja kerja

Pilihan dan halaman

MotionHighlight

Item dari data dengan satu sorotan yang berpindah ke item terpilih.

PropTipeBawaanDeskripsi
itemsreadonly T[]—wajibArray data Anda.
valuekey | null—wajibKey item yang disorot; null menyembunyikan sorotan.
onValueChange(key, item) => voidBerjalan dengan key dan item saat sebuah item ditekan.
getKey(item) => string | numberitem.idMengembalikan key yang unik dan stabil untuk sebuah item. Bawaannya item.id, atau item itu sendiri untuk string dan angka.
renderItem(item, { selected, index }) => ReactNodeitem.labelMenggambar item; menerima apakah item itu terpilih.
hoverbooleanfalseMengikuti pointer di atas item dan kembali ke value saat pointer pergi (web).
itemAselement'button'Elemen untuk setiap item.
itemClassNamestringClass untuk setiap elemen item; itemStyle mengatur gaya inline-nya.
highlightClassNamestringClass untuk sorotan; highlightStyle mengatur gaya inline-nya.
transitionTransitionspringKurva timing { duration, easing } atau pegas { tempo: 'spring', spring }. Pegas mempertahankan momentumnya saat diinterupsi.
Halaman komponen dan meja kerja

MotionPager

Halaman yang bisa digeser dari data.

PropTipeBawaanDeskripsi
itemsreadonly T[]—wajibArray data Anda.
indexnumberHalaman yang ditampilkan. Kosongkan agar pager mengelolanya sendiri.
defaultIndexnumber0Halaman awal saat index tidak dikendalikan.
onIndexChange(index, item) => voidBerjalan dengan index dan item begitu geseran, tombol, atau gestur roda berhenti.
getKey(item) => string | numberitem.idMengembalikan key yang unik dan stabil untuk sebuah item. Bawaannya item.id, atau item itu sendiri untuk string dan angka.
renderItem(item, { index, active }) => ReactNodeitem.labelMenggambar halaman; menerima index-nya dan apakah halaman itu aktif.
gapnumber0Jarak antarhalaman dalam piksel.
itemClassNamestringClass untuk setiap elemen item; itemStyle mengatur gaya inline-nya.
transitionTransitionspringKurva timing { duration, easing } atau pegas { tempo: 'spring', spring }. Pegas mempertahankan momentumnya saat diinterupsi.
Halaman komponen dan meja kerja

Daftar

MotionList

Daftar ber-key dari data yang hanya menganimasikan yang berubah.

PropTipeBawaanDeskripsi
itemsreadonly T[]—wajibArray data Anda.
getKey(item) => string | numberitem.idMengembalikan key yang unik dan stabil untuk sebuah item. Bawaannya item.id, atau item itu sendiri untuk string dan angka.
renderItem(item, index) => ReactNodeitem.labelMenggambar item.
aselement'div'Elemen yang dirender.
itemAselement'li' | 'div'Elemen untuk setiap item.
itemClassNamestringClass untuk setiap elemen item; itemStyle mengatur gaya inline-nya.
effect'rise' | 'fade' | 'scale' | 'slide''rise'Cara item masuk dan pergi.
distancenumber16Jarak tempuh rise dan slide dalam piksel.
staggernumber40Milidetik antar item yang masuk.
order'forward' | 'reverse''forward'Arah kaskade.
presentbooleantruefalse menganimasikan setiap item keluar sambil mempertahankan tata letak; true mengembalikannya.
initialbooleantruePutar animasi masuk saat daftar terpasang.
playKeystring | numberMengubahnya memutar ulang animasi masuk.
transitionTransitionspringTransisi untuk item yang masuk dan pergi.
layoutTransitionTransitionspringTransisi untuk item yang meluncur ke posisi baru.
Halaman komponen dan meja kerja

MotionReorder

Seret untuk mengurutkan ulang daftar atau grid, dengan perpindahan keyboard.

PropTipeBawaanDeskripsi
itemsreadonly T[]Item, saat Anda mengendalikan urutannya.
defaultItemsreadonly T[][]Item awal, saat komponen yang menyimpan urutannya.
onItemsChange(items, { reason, key }) => voidBerjalan dengan urutan baru dan apakah perubahan itu berasal dari seretan, lepasan, atau keyboard.
getKey(item) => string | numberitemMengembalikan key unik untuk sebuah item. Bawaannya item itu sendiri.
renderItem(item, { index, dragging }) => ReactNodeitem.labelMenggambar item; menerima index-nya dan apakah sedang diseret.
reorder'live' | 'drop''live'live menggeser item lain selama menyeret; drop menunggu lepasan.
layout'list' | 'grid''grid'list atau grid.
columnsnumber3Kolom dalam grid.
gapnumber12Jarak antaritem dalam piksel.
disabledbooleanfalseMematikan seret.
durationnumber260Milidetik untuk item yang menyingkir.
itemClassNamestringClass untuk setiap elemen item; itemStyle mengatur gaya inline-nya.
Halaman komponen dan meja kerja

Gestur

MotionSwipe

Baris yang memunculkan aksi dengan geseran horizontal dan bisa digeser pergi.

PropTipeBawaanDeskripsi
childrenReactNodeKonten baris.
startActionsReactNodeMuncul di awal inline saat baris diseret ke arah akhir.
endActionsReactNodeMuncul di akhir inline saat baris diseret ke arah awal.
dismiss'start' | 'end' | 'both'Sisi tempat geseran panjang atau lemparan menghapus baris.
onDismiss(side) => voidBerjalan setelah baris meluncur keluar dan menciut; hapus item dari data Anda di sini.
onOpenChange(side | null) => voidBerjalan dengan sisi yang terbuka, atau null saat baris tertutup.
disabledbooleanfalseMematikan geser.
contentClassNamestringClass untuk konten baris; contentStyle mengatur gaya inline-nya.
transitionTransitionspringKurva timing { duration, easing } atau pegas { tempo: 'spring', spring }. Pegas mempertahankan momentumnya saat diinterupsi.
Halaman komponen dan meja kerja

MotionHold

Tekan dan tahan untuk mengonfirmasi; melepas terlalu cepat memundurkannya.

PropTipeBawaanDeskripsi
childrenReactNodeLabel tombol.
onConfirm() => voidBerjalan setelah tahanan selesai.
durationnumber1200Milidetik tekanan harus ditahan.
disabledbooleanfalseMematikan tombol.
fillClassNamestringClass untuk isian yang bertambah; fillStyle mengatur gaya inline-nya.
Halaman komponen dan meja kerja

Overlay

MotionSheet

Sheet bawah, sheet atas, atau laci samping dengan detent.

PropTipeBawaanDeskripsi
openbooleanfalseApakah sheet ditampilkan.
onOpenChange(open) => voidBerjalan dengan false saat sheet ditutup dengan seretan, ketukan, atau Escape.
detents(number | 'content')[]['content']Ukuran saat diam: pecahan layar, piksel, atau 'content'.
detentnumberIndex detent yang dikendalikan.
defaultDetentnumber0Index detent yang dipakai saat membuka tanpa detent.
onDetentChange(index) => voidBerjalan dengan index detent tempat sheet berhenti.
side'bottom' | 'top' | 'start' | 'end''bottom'Tepi asal sheet.
modalbooleantrueMenambahkan backdrop, menjaga fokus di dalam, dan membuat halaman inert.
dismissiblebooleantrueMenyeret melewati detent terkecil, backdrop, dan Escape menutupnya.
backdropClassNamestringClass untuk backdrop; backdropStyle mengatur gaya inline-nya.
transitionTransitionspringKurva timing { duration, easing } atau pegas { tempo: 'spring', spring }. Pegas mempertahankan momentumnya saat diinterupsi.
Halaman komponen dan meja kerja

MotionZoom

Gambar yang membesar dari tempatnya hingga memenuhi layar.

PropTipeBawaanDeskripsi
srcstringGambar yang ditampilkan di tempatnya.
zoomSrcstringGambar lebih besar yang ditampilkan setelah dimuat; pertahankan rasio aspek yang sama.
marginnumber24Ruang di sekitar gambar yang diperbesar dalam piksel.
disabledbooleanfalseMematikan zoom.
onZoomChange(zoomed) => voidBerjalan dengan true saat diperbesar dan false saat ditutup.
backdropStyleCSSPropertiesGaya inline untuk backdrop.
transitionTransitionspringKurva timing { duration, easing } atau pegas { tempo: 'spring', spring }. Pegas mempertahankan momentumnya saat diinterupsi.
Halaman komponen dan meja kerja

Progres

ProgressBar

Garis progres terkendali dengan keadaan tak tentu.

PropTipeBawaanDeskripsi
valuenumber | nullProgres dari 0 sampai max; null berarti tak tentu.
maxnumber100Nilai yang berarti selesai.
colorstring'currentColor'Warna isian.
trackColorstring'#e7ece9'Warna trek.
thicknessnumber8Ketebalan garis dalam piksel.
direction'ltr' | 'rtl''ltr'Mengisi dari kiri (ltr) atau dari kanan (rtl).
transitionTransitionspringKurva timing { duration, easing } atau pegas { tempo: 'spring', spring }. Pegas mempertahankan momentumnya saat diinterupsi.
Halaman komponen dan meja kerja

ProgressRing

Cincin progres terkendali dengan keadaan tak tentu.

PropTipeBawaanDeskripsi
valuenumber | nullProgres dari 0 sampai max; null berarti tak tentu.
maxnumber100Nilai yang berarti selesai.
sizenumber96Diameter dalam piksel.
thicknessnumber8Ketebalan cincin dalam piksel.
colorstring'currentColor'Warna busur.
trackColorstring'#e7ece9'Warna trek.
childrenReactNodeLabel yang ditampilkan di tengah.
transitionTransitionspringKurva timing { duration, easing } atau pegas { tempo: 'spring', spring }. Pegas mempertahankan momentumnya saat diinterupsi.
Halaman komponen dan meja kerja

Transisi

motionTokens

Nilai siap pakai untuk prop transition mana pun.

PropTipeBawaanDeskripsi
duration{ instant, fast, normal, slow }0 · 140 · 280 · 520Durasi dalam milidetik.
easing{ ease, easeOut, expoOut, backOut }TransitionTransisi timing dengan durasi dan kurva bernama.
spring{ quick, basic, gentle, bouncy }TransitionTransisi pegas, dari yang cepat dan kokoh hingga lembut dan memantul.
Transisi
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} />
    </>
  );
}

Cari

Ketik untuk mencari dokumentasi.