Accordion
保留 Base UI Accordion 的状态管理与无障碍关联,并以 inset 表面呈现已展开的项目。支持 multiple 模式以及受控、非受控用法。
@neumorphism-ui/accordion预览
安装
安装: accordion
npx shadcn@latest add @neumorphism-ui/accordionCLI 会依次处理 npm 依赖、base token、utils 和组件源码。
首次使用此 Registry?请先完成 namespace 配置 。
用法
Import
Accordion import 代码
import {
Accordion,
AccordionContent,
AccordionItem,
AccordionTrigger,
} from "@/components/ui/accordion"Example
Accordion 用法代码
<Accordion defaultValue={["shipping"]}>
<AccordionItem value="shipping">
<AccordionTrigger>配送需要多长时间?</AccordionTrigger>
<AccordionContent>
订单会在 2–3 个工作日内发出。
</AccordionContent>
</AccordionItem>
<AccordionItem value="returns">
<AccordionTrigger>可以退货吗?</AccordionTrigger>
<AccordionContent>
收货后 14 天内可以申请退货。
</AccordionContent>
</AccordionItem>
</Accordion>API 参考
| 组件 | 属性 | 类型 | 默认值 | 说明 |
|---|---|---|---|---|
Accordion | multiple | boolean | false | 允许同时展开多个项目。 |
Accordion | value / defaultValue | string[] | — | 当前展开项目的受控值或非受控初始值。 |
Accordion | onValueChange | (value) => void | — | 展开项目发生变化时调用。 |
AccordionItem | value必填 | string | — | 用于标识项目的唯一值。 |
AccordionItem | disabled | boolean | false | 禁用该项目的触发器。 |
AccordionContent | keepMounted | boolean | false | 关闭后仍将面板保留在 DOM 中。 |
无障碍
- 01
Base UI 负责维护触发器与面板之间的 aria-expanded、aria-controls 关联。
- 02
使用 Tab 聚焦触发器,再用 Enter 或 Space 展开和收起项目。
- 03
AccordionTrigger 本身就是按钮,不要在标题中嵌套其他按钮。