SuperAPI AI 工具集

shadcn-syntax-menu-primitives

编程与开发

查看项目

更新于 10-15 22:18

技能介绍

用途:帮助在添加、调试或重构 shadcn UI 菜单界面时,从交互模型出发选择合适的原语。四种原语共用 Radix 菜单表面:DropdownMenu(点击按钮触发)、ContextMenu(区域右键或长按)、Menubar(桌面应用式顶栏菜单)、NavigationMenu(站点导航,常为巨幕菜单)。选型先问用户如何打开菜单,而非外观;DropdownMenu 与 ContextMenu 视觉相近但可访问性语义不同。

主要能力:前三种共享同一套子组件命名(*Menu、*MenuTrigger、*MenuPortal、*MenuContent、*MenuGroup、*MenuLabel、*MenuItem、*MenuCheckboxItem、*MenuRadioGroup、*MenuRadioItem、*MenuSeparator、*MenuShortcut、*MenuSub、*MenuSubTrigger、*MenuSubContent),属性与组合规则一致。NavigationMenu 不同,使用 NavigationMenuList、NavigationMenuItem、NavigationMenuTrigger、NavigationMenuContent、NavigationMenuLink、NavigationMenuIndicator、NavigationMenuViewport 及 navigationMenuTriggerStyle,支持 viewport 属性(默认 true)切换共享滑动容器或逐项内联下拉。子菜单、CheckboxItem 与 RadioGroup、Shortcut 提示等模式可跨原语复用;Shortcut 只渲染样式提示,需另行绑定真实快捷键。

必要用法:组件文件顶部保留 "use client";Trigger 包裹自定义元素时使用 asChild,避免嵌套 button 或多余 span;每个 Root 只渲染一个 Content;Separator 作为 Content 直接子级;SubContent 放在 Sub 内且自动传送;CheckboxItem 的 checked 必须配合 onCheckedChange;NavigationMenuLink 包 Next.js Link 时用 asChild,不要再用 legacyBehavior。

限制:NavigationMenu 不支持子菜单,也不使用 Portal、Group、Item、CheckboxItem、RadioGroup、Sub;不可把 *MenuSub 嵌入 NavigationMenuContent。键盘导航、类型搜索由 Radix 处理,不应重写角色。菜单项需有可见文本,仅图标时应加 sr-only 说明。文章未提供收费、价格或平台信息。