Карусели

Галерея с лайтбоксом

Лента миниатюр, по клику кадр открывается крупно поверх страницы: стрелки, счётчик «3 из 12», а ловушка фокуса и Escape достаются от нативного dialog.

React + Tailwind, совместим с shadcn: нажмите «Копировать для ИИ» — агент в Cursor или Claude Code поставит его через shadcn CLI.

Что можно поменять

  • заголовок галереи через label и набор кадров через shots
  • шаблон счётчика counter с подстановками {n} и {total}
  • пропорции крупного кадра через ratio: 4:3, 16:9 или 1:1

Ссылка для ИИ-агента: в ней превью, код и инструкция.

Превью

1440pxТема страницы
Галерея с лайтбоксом — Лента миниатюр, по клику кадр открывается крупно поверх страницы: стрелки, счётчик «3 из 12», а ловушка фокуса и Escape достаются от нативного dialog.

Использовать с ИИ

  1. 1. Скопируйте ссылку.
  2. 2. Напишите агенту своими словами и вставьте её в предложение.
  3. 3. Агент откроет ссылку и поставит компонент из реестра.
AI
1Выбрали здесь

добавь это на главную первым экраном:

https://vibeui.ru/c/carousel-017?theme=dark

2Вставили в чат агента
3Получили в проекте

Не знаете, куда вставить? Пошаговый гайд

Показать полную инструкцию

То, что лежит по ссылке в развёрнутом виде. Нужна, если агент не может открыть ссылку — тогда вставьте этот текст целиком.

Загружается…

Как использовать

<Carousel017
  label="Съёмка маршрута"
  shots={[{ title: "Рассвет над фьордом", hue: 250 }]}
/>

Пример вызова. Сам компонент агент ставит из реестра по ссылке «Копировать для ИИ».

Настройки

Заголовок
label · по умолчанию: Съёмка маршрута
Счётчик
counter · по умолчанию: {n} из {total}
Пропорции
ratio · по умолчанию: 4:3
Акцент
accent · по умолчанию: цвет темы
Фон
background · по умолчанию: цвет темы

Частые вопросы

Как установить компонент «Галерея с лайтбоксом» через Cursor или Claude Code?
Нажмите «Копировать для ИИ» на этой странице и вставьте текст в чат агента. В инструкции команда установки через shadcn CLI, зависимости и что сохранить — агент поставит именно этот компонент, а не перерисует похожий.
Какие зависимости у компонента «Галерея с лайтбоксом»?
Никаких npm-пакетов, кроме React и Tailwind CSS.
Что можно поменять в компоненте «Галерея с лайтбоксом»?
Можно менять: заголовок галереи через label и набор кадров через shots; шаблон счётчика counter с подстановками {n} и {total}; пропорции крупного кадра через ratio: 4:3, 16:9 или 1:1. Сохранить как есть: локальную палитру --vibeui-carousel-017-* и не подменять её токенами вашей темы; нативный <dialog> и showModal(): ловушка фокуса, Escape и затемнение фона написаны браузером и в своей реализации чинятся месяцами; правило html:has(dialog[open]:modal){overflow:hidden} — showModal() делает фон inert, но прокрутку страницы не запрещает.
Компонент «Галерея с лайтбоксом» бесплатный?
Да. Превью открыто без регистрации, а с бесплатным аккаунтом можно скопировать до 20 компонентов в месяц.

Для разработчика

npx shadcn@latest add https://vibeui.ru/r/pro/carousel-017.json

Команде нужна подписанная ссылка: войдите и откройте «Исходник компонента» ниже — там рабочая ссылка на 30 минут. Все способы установки

Технические заметки

Клиентский компонент: номер открытого кадра лежит в useState, окно — нативный <dialog>, открываемый через showModal(). Один файл, без зависимостей, палитра в локальных переменных --vibeui-carousel-017-*. Кадры не картинки: каждый снимок описан тоном в градусах и рисуется градиентом через переменную --vibeui-carousel-017-hue, поэтому у item'а нет ни изображений, ни сетевых запросов. Модальный режим даёт ловушку фокуса, закрытие по Escape и затемнение фона бесплатно; правило html:has(dialog[open]:modal){overflow:hidden} добирает то, чего браузер не делает, — блокировку прокрутки страницы. Стрелки внутри окна листают по кругу, ArrowLeft и ArrowRight делают то же с клавиатуры, счётчик собирается из шаблона counter. Проп defaultOpen открывает окно немодально через show(): оно остаётся внутри блока и попадает в кадр витрины.

Теги

  • gallery
  • lightbox
  • dialog
  • carousel
  • client
Исходник компонента

Тот же файл, который поставит агент. Нужен, если вы предпочитаете скопировать код руками.

Загружается…