添加 NavigationMenu 组件族
作者: diegohaz创建于 2026年8月31日更新于 2026年9月4日
标签feature
NavigationMenu: 原生站点导航与协调的面板 > 实现规范,修订 2026-09-04。 原始体 (2026-08-31) 将通过 11 号草案修订的已确认 9 号草案转移。此后,它已通过对代码库、标准和四个先进的库进行审核,维护者还做出了二十项进一步的决定。本次修订包含了这些决定,修正了审核中证明为错误的三个句子,并记录了实现基础。所有下面的决定都已解决。API 尚未发布,发布门槛仍未通过。进一步接受的合同更改应包含在本文中;评论和研究笔记不应覆盖它。 ## 问题和目标 menubar-navigation 示例结合了类别目标和面板显示。在触摸时,激活其服务链接可以进行导航,而无需提供打开该面板的方法。@michaelsawyers 在 #6992 中报告了此问题。构建一个专用家族,其中包含独立的原生链接和显示操作、协调丰富的面板,以及示例的焦点和键盘路径。保持现有的菜单和菜单栏角色和默认值不变。支持简单链接、仅包含按钮的条目、带有兄弟显示按钮的类别链接以及每个导航根中一个协调的打开条目。包含共享浮动呈现。保留原生导航、逻辑 Tab 顺序、可访问的面板关系、保留的子状态以及导航自己的链接的初始服务器链接。以现有 @ariakit/components 包为目标,在 @ariakit/react-components 中渲染 React,并在 @ariakit/react 中公开 React 导出,遵循现有家族入口点和存储规范。不要创建新的包或承诺同时支持 Solid。保持核心存储 DOM 为空,以便后续的 Solid 移植是机械性的。React 17、18 和 19 仍然是支持的 React 范围;React 17 需要现有的明确 ID 路由,以保持稳定的初始服务器关系。 examples/menubar-navigation 作为工作的一部分迁移到此家族,#6992 以此为基础进行了关闭。现有的浏览器测试定义了迁移必须保留的行为,但它们通过菜单 ARIA 角色进行断言,因此它们都没有保持不变,并都重写为新家族的原生结构。现有套件还省略了包围序列和触摸和修饰符案例,因此它们是新的覆盖而不是继承。 ## 非目标 这不是应用程序菜单树、路由器、自动 URL 匹配器、移动抽屉、完整的无 JavaScript 显示,也不是替代现有的菜单/菜单栏。多个同时打开的顶级条目超出了根模型。未托管的内联内容、单独的 NavigationMenuViewport、viewport 或 inline 模式属性、公开的每项存储、项几何重写以及新的焦点策略枚举都在 v1 中外。没有新的 …
内容来源: ariakit/ariakit