Sidebar
用于桌面可折叠、移动端可打开为面板的常驻应用导航。
预览
工作区导航
为概览与设置菜单项组合图标折叠、提示及内容区域的侧边栏切换按钮。
正在加载预览。
安装
首次使用此 Registry?请先完成 基础配置与共享样式安装 。
npx shadcn@latest add @neumorphism-ui/sidebar先安装一次共享 base,然后使用 CLI 添加组件及其依赖。
用法
用 SidebarProvider 包裹 Sidebar 和 SidebarInset。将链接分组,标记当前位置,并在内容头部放置有名称的 SidebarTrigger。
"use client";
import { Sidebar, SidebarContent, SidebarInset, SidebarMenu, SidebarMenuItem, SidebarMenuLink, SidebarProvider, SidebarTrigger } from "@/components/ui/sidebar";
export default function Example() {
return (
<SidebarProvider className="min-h-80">
<Sidebar>
<SidebarContent>
<SidebarMenu>
<SidebarMenuItem><SidebarMenuLink href="/projects" isActive>Projects</SidebarMenuLink></SidebarMenuItem>
<SidebarMenuItem><SidebarMenuLink href="/settings">Settings</SidebarMenuLink></SidebarMenuItem>
</SidebarMenu>
</SidebarContent>
</Sidebar>
<SidebarInset>
<header className="p-4"><SidebarTrigger /></header>
<main className="p-4">Your projects</main>
</SidebarInset>
</SidebarProvider>
);
}API 参考
SidebarProvider 管理桌面和移动状态。焦点位于该 Provider 的内容(包括其移动端 Sheet)中时,Ctrl/Cmd+B 切换对应的 Sidebar。桌面可完全收起或保留图标宽度,移动端复用现有 Sheet。菜单、提示和焦点状态继续使用现有新拟态 token。
| 组件 | 属性 | 类型 | 默认值 | 说明 |
|---|---|---|---|---|
SidebarProvider | defaultOpen / open / onOpenChange | boolean / controlled state | — | 管理桌面侧边栏的初始或受控打开状态。 |
Sidebar | collapsible | "offcanvas" | "icon" | "none" | "offcanvas" | 桌面端的 offcanvas 在折叠后隐藏,icon 保留图标宽度;none 保持完整宽度和菜单文字。 |
Sidebar | side / variant | "left" | "right" / "sidebar" | "floating" | "inset" | — | 选择侧边栏方向和表面样式。 |
SidebarTrigger | label | string | "Toggle sidebar" | 本地化折叠按钮的无障碍名称。 |
SidebarMenuButton / SidebarMenuLink | isActive / tooltip | boolean / string | — | 标记当前目标,并在图标折叠时提供 tooltip。 |
无障碍
- 01
导航链接应有真实目标和可读名称,并用 isActive 表示当前位置。
- 02
图标折叠后仍保留无障碍名称,tooltip 只是补充而不是唯一名称。
- 03
移动端 Sidebar 使用 modal Sheet,可按 Escape 关闭。Ctrl 或 Command+B 只在该 Provider 的内容或其移动端 Sheet 获得焦点时生效,并保留输入区域、输入法组合及已处理的键盘事件。