import type { VNode } from 'vue'; import type { BadgeProps } from '../../../badge'; import type { ListItemProps } from '../../../list/src/props'; import type { StatusProps } from '../../../status'; import type { TagProps } from '../../../tag'; import type { TextProps } from '../../../typography'; export interface BuiltinTypeMap { text: TextProps; status: StatusProps; badge: BadgeProps; tag: TagProps; list_item: ListItemProps; } export type BuiltinType = keyof BuiltinTypeMap; export type BuiltinConfig = { [K in BuiltinType]: { type: K; params?: BuiltinTypeMap[K]; slots?: Record; render?: never; }; }[BuiltinType]; export interface RenderConfig { render: () => VNode; type?: never; params?: never; slots?: never; } export type ComponentConfig = BuiltinConfig | RenderConfig;