用途:UI Primitive Picker 用于为具体界面需求挑选“最小且可靠”的基础组件(primitive),每次只返回一个推荐,而不是罗列一堆候选。它主要防止两类错误:手写无障碍契约很难的组件(对话框、组合框、通知、虚拟化),以及为平台或现有技术栈已能实现的功能额外装依赖。
主要能力:先检查项目实际情况,包括框架与精确版本、现有组件体系与包管理器、已存在的基础组件、样式与 token 方案、服务端/客户端与打包渲染约束、无障碍与交互要求、目标浏览器与设备、是否愿意引入新依赖及维护人。检查锁定文件与真实导入,清单里列出某个包不等于项目在用;如果已安装了明显推荐项的竞品,应指出不匹配而不是擅自更换依赖。随后先写出 primitive 契约(语义角色、受控与非受控状态、键盘与焦点管理、指针/触摸/手势、分层与 portal、表单集成、动画与退出、可组合性与样式、本地化与 RTL、可测试性),再开始选型。
选型顺序:满足契约即停止,依次为正确的原生 HTML 元素、项目已有 primitive、已安装的小型框架或平台 primitive、只负责行为而样式自理的无头组件、以及产品需要整套体系时才用的更完整 UI 库。对候选需核对:与项目精确版本的官方兼容性、无障碍模型与文档化键盘行为(对照契约中指定的 ARIA APG 模式)、维护与发布活跃度、打包与运行时影响、样式归属与设计系统契合度、组合限制与逃生舱、测试策略、迁移与移除成本、许可证。
不宜手写的场景:模态对话框、popover、菜单、组合框等涉及焦点陷阱与碰撞定位;通知涉及堆叠、计时暂停、滑动关闭与 live region;拖放排序涉及指针捕获与键盘对等;长列表与大表格涉及虚拟化;一次性验证码输入涉及粘贴与自动填充;日期时间选择器涉及区域与日历键盘模型。但悬停、淡入淡出、简单手风琴或条件渲染不需要库,纯 CSS 更合适。
输出格式:推荐结构的固定小节——选择(一个组件及确切来源或包与版本)、为何契合、为何不选其他方案、集成形态、风险、验证来源(官方文档、主仓库、本地文件、访问日期)。若无候选满足契约,建议定义一个小型本地 primitive 及其职责。
限制:默认只是研究与推荐技能,除非用户明确要求实现,否则不授权安装包、修改代码、迁移或移除现有依赖。涉及添加依赖时需要先获得批准;实现须使用项目包管理器。组件库、版本、浏览器 API 与维护状态会变化,不能凭记忆推荐,须对照官方文档核实并记录访问日期。资料未提供具体版本支持列表、价格与收费信息,也暂未提供安装命令或完整代码示例。