Animated Sidebar

组合嵌套导航,支持展开、仅图标和移动抽屉等呈现方式。

适用场景

  • 用于工作区的分组导航,在多个功能区域之间切换。

安装

选择安装方式,用法示例将同步更新导入路径。

$ bunx --bun shadcn-vue@2.8.2 add https://orvui.efu.me/r/animated-sidebar.json

首次使用时,将安装的 src/components/orvui/styles.css 导入项目样式入口。

示例

预览

People

Wednesday, July 29

Good morning, Ava.

Your workspace stays in place while the navigation folds down to a focused icon rail.

Active view

People

组合结构

使用公开部件 AnimatedSidebar, AnimatedSidebarClose, AnimatedSidebarContent, AnimatedSidebarFooter, AnimatedSidebarGroup, AnimatedSidebarGroupContent, AnimatedSidebarGroupLabel, AnimatedSidebarHeader, AnimatedSidebarInset, AnimatedSidebarMenu, AnimatedSidebarMenuButton, AnimatedSidebarMenuItem, AnimatedSidebarMenuSub, AnimatedSidebarMenuSubButton, AnimatedSidebarMenuSubItem, AnimatedSidebarProvider, AnimatedSidebarRail, AnimatedSidebarTrigger 组合 Animated Sidebar,并从该组件的公开入口导入。

AnimatedSidebarProvider
├── AnimatedSidebar
│   ├── AnimatedSidebarHeader
│   ├── AnimatedSidebarContent
│   │   └── AnimatedSidebarMenu
│   ├── AnimatedSidebarFooter
│   └── AnimatedSidebarRail
└── AnimatedSidebarInset

说明: AI Sidebar 在可搜索树中组织助手资源,支持选择与移动操作。

工作方式

组合嵌套导航,支持展开、仅图标和移动抽屉等呈现方式。

状态与事件

需要由表单、路由或父组件管理时,绑定下列状态并接收对应更新。v-model 是属性与 update 事件的简写;值的类型应与 API 一致。

组件状态绑定
组件Vue 绑定更新事件
AnimatedSidebarProviderv-model:openbooleanupdate:open
AnimatedSidebarProviderv-model:openMobilebooleanupdate:openMobile
AnimatedSidebarProviderv-model:mobileOpenbooleanupdate:mobileOpen

可选受控属性未传入时,按组件文档的默认行为工作;不要用固定的 false 或空值代替未传入。异步请求和持久化在应用中处理,再把结果传回组件。

API 参考

AnimatedSidebar

side?
"left" | "right"
"left"
variant?
"sidebar" | "floating" | "inset"
"sidebar"
collapsible?
"icon" | "offcanvas" | "none"
"icon"
ariaLabel?
string
"Sidebar"
panelClassName?
string
—

插槽

default
() => VNodeChild
#default

AnimatedSidebarClose

插槽

default
() => VNodeChild
#default

AnimatedSidebarContent

插槽

default
() => VNodeChild
#default

AnimatedSidebarFooter

插槽

default
() => VNodeChild
#default

AnimatedSidebarGroup

插槽

default
() => VNodeChild
#default

AnimatedSidebarGroupContent

插槽

default
() => VNodeChild
#default

AnimatedSidebarGroupLabel

插槽

default
() => VNodeChild
#default

AnimatedSidebarHeader

插槽

default
() => VNodeChild
#default

AnimatedSidebarInset

插槽

default
() => VNodeChild
#default

AnimatedSidebarMenu

插槽

default
() => VNodeChild
#default

AnimatedSidebarMenuButton

href?
string
—
isActive?
boolean
false
ariaExpanded?
boolean
undefined
disabled?
boolean
false
closeOnSelect?
boolean
undefined
icon?
any
—
badge?
any
—
target?
string
—
rel?
string
—

事件

select
—
@select

插槽

icon
() => VNodeChild
#icon
default
() => VNodeChild
#default

AnimatedSidebarMenuItem

插槽

default
() => VNodeChild
#default

AnimatedSidebarMenuSub

open
boolean
false

插槽

default
() => VNodeChild
#default

AnimatedSidebarMenuSubButton

href?
string
—
isActive?
boolean
false
disabled?
boolean
false
closeOnSelect?
boolean
true
icon?
any
—
target?
string
—
rel?
string
—

事件

select
—
@select

插槽

icon
() => VNodeChild
#icon
default
() => VNodeChild
#default

AnimatedSidebarMenuSubItem

插槽

default
() => VNodeChild
#default

AnimatedSidebarProvider

open?
boolean
undefined
defaultOpen?
boolean
true
openMobile?
boolean
undefined
defaultOpenMobile?
boolean
undefined
mobileOpen?
boolean
undefined
defaultMobileOpen?
boolean
false
shortcut?
boolean
true
expandedWidth?
number
256
collapsedWidth?
number
68

事件

update:open
—
@update:open
openChange
—
@openChange
update:openMobile
—
@update:openMobile
openMobileChange
—
@openMobileChange
update:mobileOpen
—
@update:mobileOpen

插槽

default
—

作用域参数: open, toggle

#default

AnimatedSidebarTrigger

插槽

default
() => VNodeChild
#default

无障碍

为交互控件提供明确的无障碍名称。保留文档中的键盘路径、可见焦点与减少动态效果状态;自定义插槽应继续保留所替代部件的语义。

常见问题

如何配置 Animated Sidebar?
通过 side、variant、collapsible、ariaLabel、panelClassName 配置 Animated Sidebar;API 表列出其类型与默认值。
如何连接到应用状态?
通过default 插槽提供内容,应用副作用由调用方管理。
可以在服务端渲染吗?
可以在 Vue SSR 应用中正常渲染。服务端与客户端的初始 props 应保持一致;浏览器测量与交互资源在挂载后启动。

更新于