--- name: g3-ui-重写-参照fms-vue overview: 以 fms-vue 的 `src/components/ui` 为原型,全量重写 `packages/ui`(@g3soft/ui)组件库:25 个组件按「基础→表单→浮层→反馈→数据展示」分批实现,全部 TypeScript 化并遵守 g3 约定(非 scoped SCSS + `g3-` BEM + `--g3-*` 令牌 + types.ts + gen:api + 文档示例)。确认语义统一从 fms 的 `ok/onOk/okText` 改为 `confirm/onConfirm/confirmText`。 design: styleKeywords: - 中性克制 - shadcn 风格主色派生 - 层次靠面不靠线 - 轻描边 - 微动效反馈 - 三层 z 轴秩序 fontSystem: fontFamily: PingFang SC heading: size: 24px weight: 600 subheading: size: 16px weight: 500 body: size: 14px weight: 400 colorSystem: primary: - "#18181B" - "#E5E5E5" background: - "#FFFFFF" - "#141414" text: - "#000000" - "#FFFFFF" functional: - "#45B114" - "#E79A0D" - "#EC4246" todos: - id: infra-setup content: 扩展 tokens 8 个变量、TS 化 _utils、改造 z-index 分层、加 @lucide/vue 依赖与 external status: completed - id: genapi-and-config content: 改造 gen-api 只解析目录主组件,扩充 locale 并实现 useComponentDefaults status: completed dependencies: - infra-setup - id: base-components content: 用 [skill:ui-ux-pro-max] 重写 Button 变体体系,实现 button-group/space/grid/tag/segmented/scrollbar/spin status: completed dependencies: - genapi-and-config - id: overlay-popover content: 用 [subagent:code-explorer] 移植浮层工具,实现 useFloating 与 popover/tooltip/dropdown status: completed dependencies: - base-components - id: form-components content: 移植 input/checkbox/radio/switch/select 与 form 校验体系 status: completed dependencies: - overlay-popover - id: modal-drawer-feedback content: 参照 [skill:antdv-next] 实现 modal(confirm 语义+命令式)、drawer、message/notification status: completed dependencies: - overlay-popover - id: data-display content: 实现 tree/tabs/pagination/splitter 与 date-picker/range-picker/time-select status: completed dependencies: - overlay-popover - id: docs-and-verify content: 补齐示例与文档页,跑 gen:api、tokens/ui 全量构建冒烟 status: completed dependencies: - base-components - form-components - modal-drawer-feedback - data-display --- ## 产品概述 将 `packages/ui`(@g3soft/ui)从一个只有 Button + ConfigProvider 的雏形,重写为一套完整的 Vue 3 组件库。实现原型来自 `D:\workspace\code\fms\fms-vue\src\components\ui` 的 25 个组件目录,但必须全部落在 g3soft 自身的技术约定上:TypeScript、非 scoped SCSS + `g3-` BEM、 `--g3-*` 设计令牌、`types.ts` + `gen:api` 生成文档、docs 示例与 md 页面。 ## 核心范围 - 全量迁移 fms-vue 的组件能力,按「基础 → 浮层 → 表单 → 覆盖层与反馈 → 数据展示」分批落地,每批可独立构建验证。 - 共规划 28 个组件目录:button、button-group、space、grid、scrollbar、spin、tag、segmented、input、checkbox、radio(+radio-group)、switch、select、form(+form-item/form-group)、date-picker、range-picker、time-select、popover、tooltip、dropdown、modal、drawer、message、notification、tree、tabs、pagination、splitter。 ## 确认语义(本次重写的关键变更) fms 的 `ok` 风格一律改为 `confirm` 风格: - `okText` → `confirmText`、`okButtonProps` → `confirmButtonProps`、`onOk` → `onConfirm` - 事件 `ok` → `confirm`(`update:open` / `cancel` / `closed` 保持不变) - 命令式仍为 `G3Modal.confirm({ ..., onConfirm })`,返回 `{ destroy }` - `confirmLoading` 语义不变予以保留;「只有点取消按钮才触发 `onCancel`,点遮罩/Esc/右上角 X 为静默关闭」的行为保留 ## 其他已确认决策 - Button 改用 fms 变体体系:`primary | secondary | outline | ghost | danger | danger-outline | link | icon`(破坏性变更,现有 `docs/examples/button/*` 与 `button.md` 一并重写)。 - 图标新增 `@lucide/vue` 运行时依赖,照搬 fms 用法。 - 扩展 `@g3soft/tokens`,但只补跨组件共享的少量语义变量,组件私有尺寸一律用 `v()` 兜底不进令牌;**z-index 不进令牌**,继续走 `packages/ui/src/_utils/z-index.ts`,并改造为分层分配。 ## 技术栈 - 组件库:Vue 3.5(`