Выпадающие меню

Подменю выгрузки

Меню «Поделиться» с пунктом-подменю «Экспортировать как»: второй уровень со списком форматов раскрывается наведением и стрелкой вправо, а стрелка влево возвращает фокус на родителя.

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

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

  • подпись кнопки через trigger и сторону раскрытия подменю через side
  • заголовок второго уровня через submenuLabel и список форматов через formats
  • расширения файлов через extensionText: ключ — название формата

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

Превью

1440pxТема страницы
Подменю выгрузки — Меню «Поделиться» с пунктом-подменю «Экспортировать как»: второй уровень со списком форматов раскрывается наведением и стрелкой вправо, а стрелка влево возвращает фокус на родителя.

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

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

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

https://vibeui.ru/c/dropdown-015?theme=dark

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

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

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

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

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

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

<Dropdown015
  trigger="Поделиться"
  side="right"
  submenuLabel="Экспортировать как"
  formats={["PDF-документ", "PNG-изображение"]}
/>

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

Настройки

Кнопка
trigger · по умолчанию: Поделиться
Сторона подменю
side · по умолчанию: right
Акцент
accent · по умолчанию: цвет темы
Фон
background · по умолчанию: цвет темы

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

Как установить компонент «Подменю выгрузки» через Cursor или Claude Code?
Нажмите «Копировать для ИИ» на этой странице и вставьте текст в чат агента. В инструкции команда установки через shadcn CLI, зависимости и что сохранить — агент поставит именно этот компонент, а не перерисует похожий.
Какие зависимости у компонента «Подменю выгрузки»?
Никаких npm-пакетов, кроме React и Tailwind CSS.
Что можно поменять в компоненте «Подменю выгрузки»?
Можно менять: подпись кнопки через trigger и сторону раскрытия подменю через side; заголовок второго уровня через submenuLabel и список форматов через formats; расширения файлов через extensionText: ключ — название формата. Сохранить как есть: локальную палитру --vibeui-dropdown-015-*: компонент обязан выглядеть одинаково в любом проекте; подменю обычным слоем внутри popover — второй popover=auto закрыл бы первый, и меню замигает; пару aria-haspopup и aria-expanded на родительском пункте на обоих уровнях.
Компонент «Подменю выгрузки» бесплатный?
Да. Превью открыто без регистрации, а с бесплатным аккаунтом можно скопировать до 20 компонентов в месяц.

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

npx shadcn@latest add https://vibeui.ru/r/pro/dropdown-015.json

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

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

Один файл, ноль зависимостей, палитра --vibeui-dropdown-015-*. Клиентский: раскрытие меню и подменю держит useState для aria-expanded на обоих уровнях. Первый уровень — HTML popover с якорным позиционированием под @supports и запасным position:absolute на position:relative корне; второй уровень — обычный абсолютно спозиционированный слой внутри первого, потому что вложенный popover=auto закрыл бы родителя. Родительский пункт помечен aria-haspopup=menu и aria-expanded, подменю — role=menu с aria-label. Стрелка вправо открывает подменю и ставит фокус на первый формат, влево — закрывает и возвращает фокус на родительский пункт. Каждый формат несёт короткое расширение файла, вынесенное в отдельный узел, а не встроенное в название.

Теги

  • menu
  • dropdown
  • submenu
  • export
Исходник компонента

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

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