Компоненты/Анимированные иконки-переключатели

Анимированные иконки-переключатели

29 сентября 2026

Набор из семнадцати иконок, которые по нажатию переключаются с анимацией: код, замок, корзина, колокольчик, волна звука, отправка и другие.

Установка

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

Файлы

animated-icons-toggle.tsx
НазадАнимированные иконки наведенияДалееАнимированный ввод числа

Семнадцать самостоятельных иконок-переключателей с микроанимацией. По нажатию каждая переходит во второе состояние и обратно: боковая панель расширяет полоску, скобки кода разъезжаются, замок открывается, корзина поднимает крышку, колокольчик качается, а самолётик улетает и возвращается.

Каждая иконка — отдельный компонент, растягивается на размер родителя и берёт цвет из текущего цвета текста, поэтому её легко положить в любую кнопку или плитку.

Вручную

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

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

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

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

import { BellIcon, TrashIcon } from "@/components/animated-icons-toggle/animated-icons-toggle";

export function Toolbar() {
return (
  <div className="flex gap-2">
    <div className="size-12 rounded-xl bg-muted">
      <BellIcon />
    </div>
    <div className="size-12 rounded-xl bg-muted">
      <TrashIcon />
    </div>
  </div>
);
}

Пропсы

Пропс
Описание
className?

Классы иконки (есть у всех иконок набора)

Тип string

copyText?

CopyIcon: текст, который копируется в буфер

Тип string·По умолчанию "Скопировано из Astra"

color?

SpinnerIcon: цвет лучей

Тип string·По умолчанию "white"

size?

SpinnerIcon: размер, px

Тип number·По умолчанию 20