shadcn/ui:Radix 迁移 Base UI 的类字符串改写完全指南(class-mapping 层)
shadcn/uiRadix 迁移 Base UI 的类字符串改写完全指南class-mapping 层【免费下载链接】uiA set of beautifully-designed, accessible components and a code distribution platform. Works with your favorite frameworks. Open Source. Open Code.项目地址: https://gitcode.com/GitHub_Trending/ui/ui本篇基于 shadcn/ui 官方仓库ui/ui内置的迁移知识库skills/migrate-radix-to-base/详解其中class-mapping.md所定义的第 2 层迁移规则把所有基于 Radixdata-state的 Tailwind 类选择器、动画惯用法与--radix-*CSS 变量安全地、机械地改写为 Base UIbase-ui/react对应的存在性属性data-open、data-checked与data-starting-style/data-ending-style过渡体系。读完本文你能够独立完成任意 shadcn 组件包装层与应用代码中类字符串的 Radix → Base UI 批量改写并理解每一条规则背后的渲染元素与属性差异。一、class-mapping 在迁移体系中的位置shadcn/ui 仓库在 skills/migrate-radix-to-base/SKILL.md 中定义了一套完整的 Radix → Base UI 迁移流程其知识体系分为多个层次变换引擎transformation engine处理导入改写radix-ui与radix-ui/react-*两种形态、asChild→render、Portal Positioner Popup结构重组等规则见 universal-patterns.md各组件族的 props 映射表覆盖浮层overlays.md、表单控件form-controls.md、菜单、披露组件、展示组件等类字符串改写layer 2即本文主角 class-mapping.md它专门负责不动 JSX 结构、只改类字符串的那部分工作。原始文档对这一层的定位非常明确Apply these across ALL class strings (className, cva definitions, cn calls), including app code. They are safe, mechanical rewrites.也就是说这批改写必须作用于所有类字符串——组件包装层里的className属性、cvaclass-variance-authority变体定义、cn()调用——并且应用代码app code中出现的类同样要改写。它们被设计为安全、机械的替换不需要理解组件行为逐条查表即可这也是它们能作为自动化迁移流水线中一个独立图层运行的原因。该知识库本身有据可查universal-patterns.md 说明其地面真值ground truth来自对仓库内 61 组组件配对apps/v4/registry/bases/{radix,base}/ui/的机械 diff以及radix-ui1.4.3包导出与base-ui/react1.6.0文档索引的核对。因此下面每条改写规则都可以在仓库的真实注册表registry源码中找到实例印证。二、Data-attribute 选择器改写从data-state到存在性属性Radix 通过单个data-state属性的取值来表达组件状态data-stateopen、data-statechecked……而 Base UI 改用存在性属性presence attribute属性存在即代表该状态。这导致 Tailwind 的数据属性变体语法整体变化。以下是原文档的完整改写表原样保留Radix 模式Base UI 模式data-[stateopen]:data-open:data-[stateclosed]:data-closed:data-[statechecked]:data-checked:data-[stateunchecked]:data-unchecked:data-[stateactive]:tabsdata-active:data-[stateon]:toggledata-pressed:data-[highlighted]:data-highlighted:不变data-[disabled]:data-disabled:不变data-[side...]:data-[side...]:不变仍是参数化选择器group-data-[stateopen]/peer-data-[stateopen]group-data-open/peer-data-open子菜单触发器打开标记data-[stateopen]:data-popup-open:三点值得注意不是所有选择器都要改。data-[highlighted]、data-[disabled]在两侧写法相同data-[side...]依旧是需要参数化的选择器Base UI 扩展了取值见下文动画一节原样保留即可。group-/peer-前缀变体同样适用只要基础选择器从data-[stateopen]变成data-open带前缀的复合变体必须同步改写否则打开时兄弟元素变色这类联动样式会静默失效。新增的 Base UI 钩子是data-popup-openRadix 中子菜单触发器处于打开状态依赖data-[stateopen]Base UI 则使用专门的data-popup-open存在性属性select 的 Icon 也暴露该属性用于打开时旋转样式见 form-controls.md。三、动画惯用法从 keyframes 到 transition 起终点样式这是本次迁移中唯一不能 1:1 照抄的一类改写。Radix 侧的进入/退出动画依赖 tw-animate 的 keyframes 工具类配合data-state选择器触发data-[stateopen]:animate-in>// 遮罩层L31 cn-sheet-overlay fixed inset-0 z-50 transition-opacity duration-150 contenteditable="false">【免费下载链接】uiA set of beautifully-designed, accessible components and a code distribution platform. Works with your favorite frameworks. Open Source. Open Code.项目地址: https://gitcode.com/GitHub_Trending/ui/ui创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

1.5匹空调怎么选?米家KFR-35GW/N1A1新一级能效深度解析

1.5匹空调怎么选?米家KFR-35GW/N1A1新一级能效深度解析

选空调这件事,我琢磨了很久。尤其是 1.5 匹这个档位,几乎是卧室和中小客厅的主流选择,市面上从一千多到四千多的机器都有,参数看起来差不多,价格却能差出一大截。最近在看米家 KFR-35GW/N1A1 这台机器时,发…

2026/10/28 1:08:21 阅读更多 →
1.5匹新一级能效空调选购指南:看懂型号、APF与真实省电

1.5匹新一级能效空调选购指南:看懂型号、APF与真实省电

买空调这件事,最让人纠结的往往不是制冷效果,而是那一串看起来又像产品编码、又像型号代号的字符串,以及“新一级能效”“巨省电”“1.5匹”等概念被堆在一起之后的真实性能。很多人把一台米家空调加到购物车以后,仍然说不清 KFR-…

2026/10/20 13:12:17 阅读更多 →
从封装到工程化:Agent Skills的正确学习路径

从封装到工程化:Agent Skills的正确学习路径

如果你最近在视频平台或技术社区搜索过“Agent Skills”,大概率会看到一类标题极其醒目的内容:全 259 集、零基础、最新完整版、七天从小白到大神、少走弯路、学完即就业。在教程刚兴起时,市面上讲的是 Prompt、Agent、工作流;而现…

2026/10/20 11:11:06 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/10/27 17:33:32 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/10/28 7:28:00 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/10/28 9:02:11 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/10/27 18:20:50 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/10/28 9:00:54 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/10/28 7:29:02 阅读更多 →

日新闻

周新闻

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/27 13:55:19 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式: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/10/28 9:01:47 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/27 19:19:37 阅读更多 →