Компоненты/Карусель-веер

Карусель-веер

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

Файлы

card-swipe-carousel.tsx
НазадСтопка уведомленийДалееФлажок

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

При свайпе верхняя карта отводится в сторону по дуге — она уменьшается, поворачивается и приподнимается, а затем ложится в стопку с другой стороны, открывая следующую, и притеняется. Лента бесконечная; по желанию включаются точки, стрелки и автопрокрутка.

Вручную

Скопируйте эти файлы в components/card-swipe-carousel/:

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

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

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

import { CardSwipeCarousel } from "@/components/card-swipe-carousel/card-swipe-carousel";

const images = [
{ src: "/photos/1.webp", alt: "Первая карта" },
{ src: "/photos/2.webp", alt: "Вторая карта" },
{ src: "/photos/3.webp", alt: "Третья карта" },
];

export function Deck() {
return <CardSwipeCarousel images={images} perSlideRotate={3} />;
}

Пропсы

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

Карточки

Тип { src: string; alt: string }[]

className?

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

Тип string

showPagination?

Показывать точки-переключатели

Тип boolean·По умолчанию false

showNavigation?

Показывать стрелки

Тип boolean·По умолчанию false

loop?

Бесконечная прокрутка

Тип boolean·По умолчанию true

autoplay?

Автоматическое листание

Тип boolean·По умолчанию false

spaceBetween?

Дополнительная длина свайпа между картами в пикселях

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

perSlideRotate?

Наклон каждой следующей карты в градусах

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

perSlideOffset?

Сдвиг каждой следующей карты в процентах ширины

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

cardWidth?

Ширина карты в пикселях

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

cardHeight?

Высота области карты в пикселях

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

radius?

Скругление карт в пикселях

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

speed?

Длительность перелистывания в миллисекундах

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

autoplayDelay?

Пауза автопрокрутки в миллисекундах

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