# Naive UI → Arco Design Vue 组件映射表 Phase 005 起,新代码与迁移代码一律使用 Arco Design Vue。本文表是迁移的唯一映射依据: **先查表,再改代码**。表中没有的组件,先在此表补一行再动手。 - 全局注册:`main.ts` 全量 `app.use(ArcoVue)`,不做按需引入 - 主题:`body[arco-theme='dark']`(见 `styles/arco-theme.ts` 与 `docs/ui-baseline.md`) - hooks:`useMessage` / `useDialog` / `useNotification` 适配层在 `packages/client/src/composables/`, 签名冻结,**不得**在页面里直接 import Arco 的 `Message` / `Modal` / `Notification` ## Provider / hooks | Naive | Arco | 备注 | |---|---|---| | `NConfigProvider` | 直接用 `body[arco-theme]` | 不需要组件 | | `NMessageProvider` / `useMessage` | `composables/useMessage.ts` | 适配层,签名冻结 | | `NDialogProvider` / `useDialog` | `composables/useDialog.ts` | `positiveText→okText`、`onPositiveClick→onBeforeOk`(resolve false / reject → 保持打开)由适配层转换 | | `NNotificationProvider` / `useNotification` | `composables/useNotification.ts` | `description→content` 由适配层转换 | ## 基础组件(按当前仓库用量排序) | Naive | Arco | 用量 | 备注 | |---|---|---|---| | `NButton` | `a-button` | 732 | `block`→`long`、`size="tiny"`→`size="mini"`、`type="warning"`→`type="primary" status="warning"`、`quaternary`/`secondary`→`type="secondary"`(Arco `status` 只有 `normal\|success\|warning\|danger`,没有 `secondary`) | | `NInput` | `a-input` / `a-textarea` | 160 | `type="textarea"` 用独立 `a-textarea`;`a-input` 关闭了 attrs 透传,`autofocus` 无效,需 `ref` + `focus()` | | `NModal` | `a-modal` | 138 | `v-model:show`→`v-model:visible`;`preset="dialog"` 无对应,信息型弹窗用 `:footer="false"`(`footer` 为 Boolean prop,默认 true) | | `NFormItem` | `a-form-item` | 136 | 校验规则 API 不同(`rules` 结构、`required` 表达式)需适配 | | `NSelect` | `a-select` | 97 | `options` 的 `label/value` 语义一致;`consistent-menu-width` 等 prop 无对应 | | `NSpin` | `a-spin` | 86 | `show`→`loading` | | `NTooltip` | `a-tooltip` | 76 | `trigger="hover"` 默认一致;`placement`→`position`;**触发元素走默认插槽**,naive 的 `