Довідник API

Усі експорти @kkwaenggwari/animated-chorus із props, типами й типовими значеннями. Ті самі назви працюють у вебі та React Native.

API: 17

Числа й текст

MotionNumber

Число, розряди якого крутяться як коліщатка.

ПропТипТиповоОпис
valuenumber | bigint | string—обов’язковоЧисло чи числовий текст, відформатований вами.
mode'replace' | 'roll''replace'replace зсуває кожен змінений розряд на один крок; roll проходить через проміжні цифри.
direction'auto' | 'digit' | 'up' | 'down''auto'auto йде за зміною величини, щоб переноси крутилися в один бік; digit порівнює кожен розряд окремо.
staggernumber45Мілісекунди між зміненими розрядами, від одиниць назовні. Уся хвиля обмежена в часі.
format(value) => string | Intl.NumberFormatOptionsФункція, що повертає текст для показу, чи опції Intl.NumberFormat (разом з intl).
intlbooleanfalseВикористовувати вбудований Intl.NumberFormat. Типово вимкнено, щоб жодному середовищу виконання не був потрібен Intl.
localestring | string[]Локаль для intl.
prefixstringТекст перед числом.
suffixstringТекст після числа.
transitionTransitionspringКрива timing { duration, easing } чи пружина { tempo: 'spring', spring }. Після переривання пружини зберігають інерцію.
onMotionComplete(value) => voidВиконується зі значенням, коли розряди зупинилися.
Сторінка компонента й стенд

MotionText

Текст, що анімується під час зміни: числовий прокручується розрядами, решта змінюється.

ПропТипТиповоОпис
childrenReactNodeТекст для показу.
aselement'span'Елемент для рендеру.
transitionTransitionspringКрива timing { duration, easing } чи пружина { tempo: 'spring', spring }. Після переривання пружини зберігають інерцію.
onMotionComplete(text) => voidВиконується, коли рух зупиняється.
Сторінка компонента й стенд

MotionStream

Потоковий текст, що розкривається в рівному темпі й наздоганяє сплески.

ПропТипТиповоОпис
textstring—обов’язковоТекст на цей момент. Текст, що росте, розкривається в рівному темпі; переписаний продовжується зі спільного початку.
speednumber90Базова швидкість розкриття в символах на секунду.
catchUpnumber900Накопичений текст розкривається приблизно за стільки мілісекунд за рахунок пришвидшення.
initialbooleanfalseРозкривати й текст, наявний під час монтування (інакше він показується одразу).
effect'fade' | 'none''fade'fade плавно проявляє нові символи; none показує їх одразу.
children(visible: string) => ReactNodeФункція, що отримує текст у потрібному темпі, наприклад для рендеру Markdown.
aselement'span'Елемент для рендеру.
onMotionComplete(text) => voidВиконується щоразу, коли розкриття наздоганяє text.
Сторінка компонента й стенд

Вміст і розмір

MotionSwap

Вміст, що плавно змінюється, поки елемент змінює розмір.

ПропТипТиповоОпис
valueunknownІдентичність вмісту; нове значення спричиняє заміну. Дочірній текст сам є своєю ідентичністю.
childrenReactNodeВміст.
aselement'span'Елемент для рендеру.
inlinebooleanas === 'span'true підлаштовує розмір під вміст (підписи, іконки); false заповнює ширину батька й анімує висоту.
align'start' | 'center' | 'end''center'Де розташований вміст, поки змінюється розмір.
effect'fade' | 'up' | 'down' | 'scale''fade'Як вміст входить і йде: up піднімається, down опускається, scale росте.
transitionTransitionspringКрива timing { duration, easing } чи пружина { tempo: 'spring', spring }. Після переривання пружини зберігають інерцію.
onMotionComplete(value) => voidВиконується, коли рух зупиняється.
Сторінка компонента й стенд

MotionHeight

Анімує висоту за вмістом: згортання, розгортання й зміни вмісту.

ПропТипТиповоОпис
openbooleantruefalse згортає до нульової висоти; вміст лишається змонтованим, але прихованим і неактивним.
childrenReactNodeВміст.
aselement'div'Елемент для рендеру.
transitionTransitionspringКрива timing { duration, easing } чи пружина { tempo: 'spring', spring }. Після переривання пружини зберігають інерцію.
onMotionComplete(open) => voidВиконується з open, коли висота зупинилася.
Сторінка компонента й стенд

MotionPresence

Тримає вміст змонтованим, поки він анімовано з’являється й іде.

ПропТипТиповоОпис
presentboolean—обов’язковоПоказати чи приховати вміст. Змінюйте це замість демонтування.
enterPose{ opacity: 1, translateY: 0 }Поза в спокої.
exitPose{ opacity: 0, translateY: -12 }Поза, з якою вміст іде й з якої входить.
aselement'div'Елемент для рендеру.
transitionTransitionspringКрива timing { duration, easing } чи пружина { tempo: 'spring', spring }. Після переривання пружини зберігають інерцію.
onExitComplete() => voidВиконується після того, як вміст пішов і його видалено.
Сторінка компонента й стенд

Вибір і сторінки

MotionHighlight

Елементи з даних з одним підсвічуванням, що переміщується до вибраного елемента.

ПропТипТиповоОпис
itemsreadonly T[]—обов’язковоВаш масив даних.
valuekey | null—обов’язковоКлюч підсвіченого елемента; null ховає підсвічування.
onValueChange(key, item) => voidВиконується з ключем і елементом під час натискання на елемент.
getKey(item) => string | numberitem.idПовертає унікальний стабільний ключ елемента. Типово — item.id, а для рядків і чисел — сам елемент.
renderItem(item, { selected, index }) => ReactNodeitem.labelМалює елемент; отримує, чи він вибраний.
hoverbooleanfalseІти за вказівником над елементами й повертатися до value, коли він іде (веб).
itemAselement'button'Елемент для кожного пункту.
itemClassNamestringКлас для елемента кожного пункту; itemStyle задає його вбудований стиль.
highlightClassNamestringКлас для підсвічування; highlightStyle задає його вбудований стиль.
transitionTransitionspringКрива timing { duration, easing } чи пружина { tempo: 'spring', spring }. Після переривання пружини зберігають інерцію.
Сторінка компонента й стенд

MotionPager

Сторінки з даних, що гортаються.

ПропТипТиповоОпис
itemsreadonly T[]—обов’язковоВаш масив даних.
indexnumberПоказана сторінка. Не задавайте її, щоб пейджер керував нею сам.
defaultIndexnumber0Початкова сторінка, коли index не керований.
onIndexChange(index, item) => voidВиконується з індексом і елементом, щойно свайп, клавіша чи жест коліщатка завершилися.
getKey(item) => string | numberitem.idПовертає унікальний стабільний ключ елемента. Типово — item.id, а для рядків і чисел — сам елемент.
renderItem(item, { index, active }) => ReactNodeitem.labelМалює сторінку; отримує її індекс і те, чи вона активна.
gapnumber0Відстань між сторінками в пікселях.
itemClassNamestringКлас для елемента кожного пункту; itemStyle задає його вбудований стиль.
transitionTransitionspringКрива timing { duration, easing } чи пружина { tempo: 'spring', spring }. Після переривання пружини зберігають інерцію.
Сторінка компонента й стенд

Списки

MotionList

Список із ключами з даних, що анімує лише змінене.

ПропТипТиповоОпис
itemsreadonly T[]—обов’язковоВаш масив даних.
getKey(item) => string | numberitem.idПовертає унікальний стабільний ключ елемента. Типово — item.id, а для рядків і чисел — сам елемент.
renderItem(item, index) => ReactNodeitem.labelМалює елемент.
aselement'div'Елемент для рендеру.
itemAselement'li' | 'div'Елемент для кожного пункту.
itemClassNamestringКлас для елемента кожного пункту; itemStyle задає його вбудований стиль.
effect'rise' | 'fade' | 'scale' | 'slide''rise'Як елементи входять і йдуть.
distancenumber16Шлях rise і slide у пікселях.
staggernumber40Мілісекунди між елементами, що входять.
order'forward' | 'reverse''forward'Напрямок каскаду.
presentbooleantruefalse анімує вихід усіх елементів, зберігаючи розкладку; true повертає їх.
initialbooleantrueВідтворювати появу під час монтування списку.
playKeystring | numberЗміна повторює появу.
transitionTransitionspringПерехід для елементів, що входять і йдуть.
layoutTransitionTransitionspringПерехід для елементів, що переїжджають на нові місця.
Сторінка компонента й стенд

MotionReorder

Перестановка списку чи сітки перетягуванням, із переміщенням з клавіатури.

ПропТипТиповоОпис
itemsreadonly T[]Елементи, коли порядком керуєте ви.
defaultItemsreadonly T[][]Початкові елементи, коли порядок зберігає компонент.
onItemsChange(items, { reason, key }) => voidВиконується з новим порядком і джерелом зміни: перетягування, відпускання чи клавіатура.
getKey(item) => string | numberitemПовертає унікальний ключ елемента. Типово — сам елемент.
renderItem(item, { index, dragging }) => ReactNodeitem.labelМалює елемент; отримує його індекс і те, чи його перетягують.
reorder'live' | 'drop''live'live рухає інші елементи під час перетягування; drop чекає на відпускання.
layout'list' | 'grid''grid'list або grid.
columnsnumber3Колонки в сітці.
gapnumber12Відстань між елементами в пікселях.
disabledbooleanfalseВимикає перетягування.
durationnumber260Мілісекунди на те, щоб елементи поступилися місцем.
itemClassNamestringКлас для елемента кожного пункту; itemStyle задає його вбудований стиль.
Сторінка компонента й стенд

Жести

MotionSwipe

Рядок, що відкриває дії горизонтальним свайпом і може бути змахнутий.

ПропТипТиповоОпис
childrenReactNodeВміст рядка.
startActionsReactNodeЗ’являються на початку рядка під час перетягування до кінця.
endActionsReactNodeЗ’являються в кінці рядка під час перетягування до початку.
dismiss'start' | 'end' | 'both'Боки, де довгий свайп чи кидок видаляє рядок.
onDismiss(side) => voidВиконується після того, як рядок виїхав і згорнувся; видаліть елемент зі своїх даних тут.
onOpenChange(side | null) => voidВиконується з відкритим боком або null, коли рядок закривається.
disabledbooleanfalseВимикає свайп.
contentClassNamestringКлас для вмісту рядка; contentStyle задає його вбудований стиль.
transitionTransitionspringКрива timing { duration, easing } чи пружина { tempo: 'spring', spring }. Після переривання пружини зберігають інерцію.
Сторінка компонента й стенд

MotionHold

Натисніть і втримуйте для підтвердження; раннє відпускання відкочує назад.

ПропТипТиповоОпис
childrenReactNodeПідпис кнопки.
onConfirm() => voidВиконується, коли утримання завершено.
durationnumber1200Скільки мілісекунд треба утримувати натискання.
disabledbooleanfalseВимикає кнопку.
fillClassNamestringКлас для заливки, що росте; fillStyle задає її вбудований стиль.
Сторінка компонента й стенд

Оверлеї

MotionSheet

Нижня чи верхня шторка або бічна панель із точками зупинки.

ПропТипТиповоОпис
openbooleanfalseЧи показано шторку.
onOpenChange(open) => voidВиконується з false, коли шторку закривають перетягуванням, дотиком чи Escape.
detents(number | 'content')[]['content']Розміри зупинки: частка екрана, пікселі чи 'content'.
detentnumberКерований індекс точки зупинки.
defaultDetentnumber0Індекс точки зупинки під час відкриття без detent.
onDetentChange(index) => voidВиконується з індексом точки зупинки, на якій зупинилася шторка.
side'bottom' | 'top' | 'start' | 'end''bottom'Край, з якого з’являється шторка.
modalbooleantrueДодає тло, тримає фокус усередині й робить сторінку неактивною.
dismissiblebooleantrueПеретягування за найменшу точку зупинки, тло й Escape закривають її.
backdropClassNamestringКлас для тла; backdropStyle задає його вбудований стиль.
transitionTransitionspringКрива timing { duration, easing } чи пружина { tempo: 'spring', spring }. Після переривання пружини зберігають інерцію.
Сторінка компонента й стенд

MotionZoom

Зображення, що збільшується зі свого місця до заповнення екрана.

ПропТипТиповоОпис
srcstringЗображення, показане на місці.
zoomSrcstringБільше зображення, що показується після завантаження; зберігайте ті самі пропорції.
marginnumber24Відступ навколо збільшеного зображення в пікселях.
disabledbooleanfalseВимикає збільшення.
onZoomChange(zoomed) => voidВиконується з true під час збільшення й false під час закриття.
backdropStyleCSSPropertiesВбудований стиль тла.
transitionTransitionspringКрива timing { duration, easing } чи пружина { tempo: 'spring', spring }. Після переривання пружини зберігають інерцію.
Сторінка компонента й стенд

Прогрес

ProgressBar

Керована лінія прогресу з невизначеним станом.

ПропТипТиповоОпис
valuenumber | nullПрогрес від 0 до max; null — невизначений стан.
maxnumber100Значення, що означає завершення.
colorstring'currentColor'Колір заливки.
trackColorstring'#e7ece9'Колір доріжки.
thicknessnumber8Товщина лінії в пікселях.
direction'ltr' | 'rtl''ltr'Заповнення зліва (ltr) чи справа (rtl).
transitionTransitionspringКрива timing { duration, easing } чи пружина { tempo: 'spring', spring }. Після переривання пружини зберігають інерцію.
Сторінка компонента й стенд

ProgressRing

Кероване кільце прогресу з невизначеним станом.

ПропТипТиповоОпис
valuenumber | nullПрогрес від 0 до max; null — невизначений стан.
maxnumber100Значення, що означає завершення.
sizenumber96Діаметр у пікселях.
thicknessnumber8Товщина кільця в пікселях.
colorstring'currentColor'Колір дуги.
trackColorstring'#e7ece9'Колір доріжки.
childrenReactNodeПідпис у центрі.
transitionTransitionspringКрива timing { duration, easing } чи пружина { tempo: 'spring', spring }. Після переривання пружини зберігають інерцію.
Сторінка компонента й стенд

Переходи

motionTokens

Готові значення для будь-якого пропа transition.

ПропТипТиповоОпис
duration{ instant, fast, normal, slow }0 · 140 · 280 · 520Тривалості в мілісекундах.
easing{ ease, easeOut, expoOut, backOut }TransitionПереходи timing із тривалістю й іменованою кривою.
spring{ quick, basic, gentle, bouncy }TransitionПружні переходи — від швидких і жорстких до м’яких і пружних.
Переходи
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} />
    </>
  );
}

Пошук

Почніть вводити, щоб шукати в документації.