Справочник 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} />
    </>
  );
}

Поиск

Начните вводить, чтобы искать в документации.