import type { App, Component } from 'vue' // components/index.ts(修改后) import * as comps from './components' import { useMessage } from './message' import { useModal } from './modal/useModal' import { useNotification } from './notification' // 按需导出组件(可单独 import) export * from './components' // 收集所有组件 const allComponents = Object.values(comps).filter( (c: any) => c && c.name, ) as Component[] export interface AoDesignOptions { prefix?: string components?: Component[] } const AoDesign = { install(app: App, options: AoDesignOptions = {}) { const prefix = options?.prefix ?? 'A' // 如果用户指定了 components,则只注册这些,否则注册全部 const componentsToRegister = options?.components || allComponents componentsToRegister.forEach((component: any) => { if (!component?.name) return const name = `${prefix}${component.name}` app.component(name, component) // 注册 kebab-case app.component( name.replace(/([A-Z])/g, '-$1').toLowerCase().replace(/^-/, ''), component, ) }) }, } export { AoDesign, useMessage, useModal, useNotification }