SuperAPI AI 工具集

uit-overlays-feedback-web

设计与创作

查看项目

更新于 11-04 16:30

技能介绍

用途

该技能面向 UI Toolkit for Meta Ray-Ban Display 的浮层与反馈层开发,适用于构建、调试或审查 Tooltip、TooltipContainer、VerticalMenu、ContextMenu、Modal、Toast、Scrim 以及 portal 相关行为。资料要求先阅读 ../building-uit-interfaces-web/references/overlays-feedback-status.md,并阅读 references/overlay-components.md 了解组件选择、归属、事件流和关闭模式。

主要能力与约束

Portal 与锚点归属

应用负责提供浮动 portal 根节点。应使用组件提供的 tooltip/menu API,不要直接 portal 到 document.body,也不要手工计算固定坐标。

Tooltip 为带锚点的目标提供简短上下文,适用于仅有图标或不易理解的控件,不用来重复可见标签或承载关键说明。它应跟踪移动或滚动的锚点,并选择合适的放置位置。

VerticalMenu 与 ContextMenu 是临时的可聚焦 tooltip 内容,不是内联布局。应使用受控状态和菜单项组件。VerticalMenu 为紧凑固定宽度操作行,标签应为短命令,保持在两行以内,通常不超过三个优先操作。若需要四个以上命令或解释性标签,应改用专用路由或选择更小的优先子集;不要创建填满显示区域或把最后一项放在渐隐/底部边缘的菜单。

锚点角落应根据触发按钮的屏幕边缘选择,而不是根据标签语义。在标准底部停靠 ButtonRail 中,最后一个或右边缘触发按钮使用 ABOVE_RIGHT,使菜单向屏幕内部和上方可用内容区域展开;仅当触发按钮确实靠近顶部且下方有验证过的空间时才使用 BELOW_RIGHT。左边缘触发按钮使用对应的 *_LEFT 角落。聚焦扩展后需验证材质与辉光与两个显示边缘均保留空间。

关闭顺序

Back/Escape 应先关闭最上层临时 UI,再处理路由历史。菜单项激活会关闭其菜单并将焦点恢复到触发按钮。应在 portal 项点击会冒泡并重新打开触发按钮的位置停止传播。

对于 VerticalMenu 项激活,应先接受点击事件并在更改受控打开状态前调用 event.stopPropagation()。不要使用字面 setTimeout 来安排关闭与反馈的顺序。应跟踪是否需要返回焦点,同步关闭,并通过触发按钮的公开句柄在 useLayoutEffect 中恢复焦点。

Back/Escape 关闭必须在关闭前设置与项激活相同的焦点恢复标志。仅使用 onDismissRequest={() => setMenuOpen(false)} 不够,因为它移除焦点项却没有告知布局 effect 将焦点返回触发按钮。

不得让焦点停留在无处、隐藏弹窗内容上,或由独立宿主基础设施提供的活动浮层之后。

Modal 与 Toast

尽管名为 Modal,公开的 UI Toolkit for Meta Ray-Ban Display Modal 是基于 Panel 的内容组件,不是对话框呈现器。它不执行 portal、不绘制路由遮罩、不捕获焦点、不拥有打开/关闭状态、不拦截 Back,也不将自身定位在 Page 之上。仅当 Modal 表面已是路由/轮播组合的一部分,或由独立呈现基础设施承载时,才使用其支持的标题/正文/媒体/列表/按钮结构。不要条件性地把它附加到 Page 滚动容器旁并期望获得阻塞式弹窗。对于应用拥有的阻塞式决策,应使用专用路由和系统 Back,除非确实有受支持的宿主呈现基础设施可用。保持一个面板表面;水平操作使用 ButtonGroup/Rail。不要嵌套另一个面板/Modal,也不要添加应用返回按钮。

Toast 用于简短的操作完成反馈。应用已提供呈现器。Toast 请求按顺序排队并一次显示一个。不要将 Toast 用于可恢复的阻塞错误、操作或长说明。

Scrim

在媒体与叠加文字/控件之间使用 Scrim,前景内容必须位于其上方。除非确实需要独立的静态材质表面,否则不要额外添加圆角文字背景。

验证要点

应验证备用锚点边缘、滚动跟踪、portal 裁剪、焦点进入/退出、Back 关闭、项激活、触发按钮焦点返回、快速重新打开、Modal 内容放置/操作、Toast 有序队列,以及目标 WebView 的 z-order/合成。