Компоненты/Анимированный ввод числа

Анимированный ввод числа

29 сентября 2026

Поле ввода, где каждый набранный символ выезжает снизу, а стёртый уходит вниз и тает.

Установка

npm install clsx motion tailwind-merge
pnpm add clsx motion tailwind-merge
yarn add clsx motion tailwind-merge
bun add clsx motion tailwind-merge

Файлы

animated-number-input.tsx
НазадАнимированные иконки-переключателиДалееПереключатель темы

Крупное поле для суммы или кода, в котором символы не просто появляются, а выезжают снизу и проявляются. При удалении символ уезжает обратно вниз и растворяется, а соседние плавно сдвигаются на освободившееся место.

Настоящее поле ввода остаётся под анимированным слоем, поэтому работают курсор, выделение, вставка и привычная клавиатура. Пока значение пустое, виден полупрозрачный заполнитель.

Вручную

Скопируйте эти файлы в components/animated-number-input/:

Общие помощники положите в lib/ проекта:

Проверьте алиас путей. Импорты в коде выше записаны как @/components/... и @/lib/.... Нужен алиас "@/*" на папку, где лежат components/ и lib/, в tsconfig.json — или поправьте импорты под свои пути.

Использование

import { useState } from "react";

import { AnimatedNumberInput } from "@/components/animated-number-input/animated-number-input";

export function AmountField() {
const [value, setValue] = useState("");
return <AnimatedNumberInput inputValue={value} setInputValue={setValue} placeholder="000" />;
}

Пропсы

Пропс
Описание
inputValue

Текущее значение

Тип string

setInputValue?

Обработчик изменения значения

Тип (value: string) => void

placeholder?

Заполнитель пустого поля

Тип string

fontSize?

Размер символов в пикселях, по умолчанию 45

Тип number

color?

Цвет символов, по умолчанию цвет темы

Тип string

className?

Классы корневого блока

Тип string