【免费下载链接】plannotatorAnnotate and review coding agent plans and code diffs visually, share with your team, send feedback to agents with one click.项目地址https://gitcode.com/gh_mirrors/pl/plannotator点击查看免费下载本篇技术指南以 plannotator 仓库packages/ui/.migration/dropdown-menu.md迁移记录为骨架完整还原 2026-07-07 这次组件引擎替换的全过程为什么选base-ui/react/menu作为新的菜单基元、Portal Positioner Popup三层结构如何重构Content与SubContent、消费端OpenInAppButton、Agent 选择器如何从 Radix 的asChild/onSelect迁移到 Base UI 的render/onClick以及公开 API 上的破坏性变更与 HANDOFF 项。读者读完将掌握一套可复制的Radix → Base UI迁移方法论既懂组件层改造也懂消费端同步清扫与手工验收清单。迁移背景与总体判定packages/ui/HANDOFF.md明确记录了这次迁移的宏观背景从0.23.0起plannotator/ui全面构建在Base UIbase-ui/react^1.6.0当前 packages/ui/package.json 中为^1.7.0之上取代 Radix。这一举措与 shadcn/ui 在 2026 年 7 月将 Base UI 设为默认引擎的生态变化保持一致并且是一次整包级、零混合引擎的刻意迁移——迁移完成后仓库内零radix-ui/*依赖残留。本次 dropdown-menu 的迁移判定verdict是DropdownMenu → Base UI Menu采用规范的Portal Positioner Popup结构重组并在同一个提交内清扫 2 个仓库内消费端OpenInAppButton与AnnotateAgentTerminalPanel同时对公开 API 表面标记了若干差异项deltas。迁移记录的收尾验证方式是全局残留扫描grep -n radix-ui\|radix-ui对三个改动文件执行后均无匹配确认radix-ui/react-dropdown-menu已彻底移除。组件层改造dropdown-menu.tsx 的重写要点迁移的核心文件是 packages/ui/components/ui/dropdown-menu.tsx依赖从radix-ui/react-dropdown-menu切换为base-ui/react/menu源码第 1 行import { Menu as MenuPrimitive } from base-ui/react/menu。所有导出名称被完整保留外部导入路径plannotator/ui/components/ui/dropdown-menu无需变化这为消费端迁移提供了第一层兼容保障。Content/SubContent 的三层结构重组FORWARD 规则Radix 时代的Content直接承载弹出层Base UI 将其拆分为Portal传送门 Positioner定位器 Popup弹出层三层。源码中DropdownMenuContent的实现在第 26–52 行function DropdownMenuContent({ className, side, sideOffset 4, align, alignOffset, ...props }: MenuPrimitive.Popup.Props PickMenuPrimitive.Positioner.Props, side | sideOffset | align | alignOffset) { return ( MenuPrimitive.Portal MenuPrimitive.Positioner classNameisolate z-50 outline-none side{side} sideOffset{sideOffset} align{align} alignOffset{alignOffset} MenuPrimitive.Popup >function DropdownMenuSubContent({ className, side right, sideOffset 0, align start, alignOffset -3, ...props })迁移记录明确指出这些默认值是**承重load-bearing**的——Radix 的SubContent隐含了sideright与start对齐行为迁移到 Base UI 后这些隐含语义不复存在必须以显式默认值补回否则子菜单会出现在错误位置。alignOffset{-3}用于抵消子菜单触发器与弹出层之间的视觉缝隙。部件重命名对照Base UI 的部件命名更贴近语义本次迁移涉及以下改名全部在 packages/ui/components/ui/dropdown-menu.tsx 中有对应实现Radix 名称Base UI 名称说明LabelGroupLabel语义化为组标签且必须位于Group内部ItemIndicatorCheckboxItemIndicator/RadioItemIndicator按复选/单选拆分为两个指示器部件SubSubmenuRoot子菜单根节点SubTriggerSubmenuTrigger子菜单触发器动画与交互态的类名重写Radix 时代依赖 tw-animate 的 keyframes 动画data-[stateopen]:animate-inslide-in-from-*系列Base UI 采用基于 transition 的起始/结束样式starting/ending style。迁移后的 Popup 共享样式源码第 23–24 行origin-[var(--transform-origin)] transition-[opacity,scale] duration-150>赞分享【免费下载链接】plannotatorAnnotate and review coding agent plans and code diffs visually, share with your team, send feedback to agents with one click.项目地址https://gitcode.com/gh_mirrors/pl/plannotator点击查看免费下载相关推荐plannotator review-editorQAChecklist 复选框组件从 Radix 迁移到 Base UI 的 1:1 改造实录plannotator review editorQAChecklist 复选框组件从 Radix 迁移到 Base UI 的 1:1 改造实录 本文围绕 pplannotator/ui Badge 组件迁移实录Radix asChild 到 Base UI render 的多态改造解析plannotator/ui Badge 组件迁移实录Radix asChild 到 Base UI render 的多态改造解析 本文以 迁移报告 httplannotator 评审编辑器实践把 DiffTypePicker 从 Radix DropdownMenu 迁移到 Base UI Menuplannotator 评审编辑器实践把 DiffTypePicker 从 Radix DropdownMenu 迁移到 Base UI Menu 本文以 p上一篇OpenCore Legacy Patcher终极指南让老旧Mac重获新生的完整教程下一篇HarfBuzz 文本整形中的簇(Cluster)机制详解创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
企业数字化 ERP 产品动态
相关推荐
CAD 装配图读图:第一角与第三角投影的区分方法与核查步骤 这篇写给需要在 CAD 里读外文装配图的人:出口设备、海外项目的图纸,视图摆法和国内习惯不一致时,怎么快速判断这张图按哪套投影制式画的,以及翻成中文之后该核哪几处。一、两种制式的差别只有一个要点投影就是把三维零件往平面上投… · 2026/9/26 10:03:29
golang使用clickhouse查询时使用final关键字操作情况讲解 在 ClickHouse 中,FINAL通常用于MergeTree系列引擎表的最新合并数据(强制合并所有数据块的表,特别是当表有物化视图或者合并过程时, 使用FINAL可以确保查询返回最终版本的数据,即在所有合并操作完成后最新的数据状态, 对应的s… · 2026/9/26 10:03:29
Claude Code中英文系列教程33:用官方Skill创建Skill,TaoToken配置与验证全流程 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 10:03:29
STM32F103C8T6型号后缀与最小系统设计深度解析 1. 为什么一块“蓝板子”能卖到五块钱,而另一块却要二十块?——从型号后缀看懂STM32F103C8T6的底层差异你拆开过手头那块最便宜的STM32F103C8T6最小系统板吗?不是看它焊得漂不漂亮,而是翻过来看背面——有没有那个小小的、印着“S… · 2026/9/26 10:42:57
AT_arc114_e [ARC114E] Paper Cutting 2 可以先完成:AT_agc049_a Erasing Vertices
一个 trick E(X)∑i1nxipiE(X)\sum_{i1}^n x_i p_i E(X)i1∑nxipi 上面是期望的定义式。对于这种题目,每次切纸对答案步数的贡献都固定为 111,所以上面的式子可以变成: E(X)∑i1n… · 2026/9/26 10:42:57
Gaia2 与 ARE 智能体评测:用 TaoToken 统一 Key 跑通社区基准测试 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 10:42:51
大语言模型(LLM)分类详解:从架构到应用场景的完整梳理 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 10:42:51
知识库与工具链整合:用 TaoToken 统一 Key 打通 AI 测试知识底座 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 10:42:51
数据库课后习题答案别硬背:当测试用例集刷,效率翻倍 简介:万常选版《数据库原理与设计》课后习题答案资源,覆盖第2至6章及第9章,适合正在学习关系模型、数据库建模、关系数据理论与模式求精的本科生、自学者作为复习与自测材料。压缩包共7个文件,含3个doc参考答案、2个sql示例脚本、… · 2026/9/26 0:00:21
OpenClaw 替代品?Hermes Agent 踩坑实录:macOS 飞书接入 TaoToken 配置 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 0:00:40
向下兼容与向上兼容:接口设计中的兼容性策略与工程实践 一次版本升级事故,是很多团队绕不过去的坎。线上环境里,服务端明明已经上线了新版接口,老的移动端还在照着旧文档传参数。请求一到网关,校验直接拒绝,用户操作失败,客服群炸了锅,开发群里开始互… · 2026/9/26 0:00:46