<div class="dropdown" data-dropdown> <button class="btn dropdown-trigger" data-dropdown-trigger aria-haspopup="menu">操作 ▾</button> <div data-dropdown-menu hidden> <div class="menu-label">文件</div> <button class="menu-item pressable" id="dd-rename"> <span class="menu-item-icon"></span> <span class="menu-item-label">重命名</span> <span class="menu-item-shortcut">F2</span> </button> <button class="menu-item pressable" id="dd-share"> <span class="menu-item-icon"></span> <span class="menu-item-label">分享</span> </button> <div class="menu-separator"></div> <button class="menu-item pressable menu-item--danger" id="dd-delete"> <span class="menu-item-icon"></span> <span class="menu-item-label">删除</span> <span class="menu-item-shortcut">⌫</span> </button> </div></div> 安装
bun add @icen.ai/ui pnpm add @icen.ai/ui npm install @icen.ai/ui yarn add @icen.ai/ui 一行引入该组件(CSS 与 behavior 自动带上,无需关心内部 CSS 文件名):
import { initDropdown } from '@icen.ai/ui/kit/dropdown';initDropdown(); 也可以用脚手架直接打印引入行:
bunx --bun @icen.ai/ui add dropdown
Astro 项目注意:kit 入口里的 CSS import 在页面 <script> 里会被 Astro 的 client bundle 摇掉——请改在布局 frontmatter 里引 CSS(import '@icen.ai/ui/components/menu.css';),JS 行为仍可走 kit。Vite SPA / webpack 项目无此问题。
用法
import { initDropdown } from '@icen.ai/ui/behaviors/dropdown';initDropdown();// 面板由 JS portal 到 body;click / ArrowDown 打开,↑↓ 高亮,Enter 激活,Esc / 外点 / 滚动关闭