import { setElementPlusColor, setElementPlusPrimaryColor } from '../color' export const BASE_ELCONF = { zIndex: 2000, button: { autoInsertSpace: false }, message: { grouping: false, plain: true, } } /** * 解析注入 `` 的配置。 * * 注意:Provider 只能下发组件「行为」配置(size / zIndex / button / message 等), * 无法覆盖颜色、圆角这类 CSS 变量——后者由 applyElementPlusTheme 直接写 --el-* 变量。 * 因此这里不再保留独立的 elConf 覆盖通道,size 直接取自 settings,其余为应用级常量。 */ export const resolveElementPlusConfig = (settings) => ({ size: settings.size, zIndex: BASE_ELCONF.zIndex, button: { ...BASE_ELCONF.button }, message: { ...BASE_ELCONF.message } }) /** * 把主题色与圆角写入 Element Plus 的 CSS 变量(--el-color-* / 圆角)。 * @param {{ themeColors: object, settings: object, isDark: boolean }} context */ export const applyElementPlusTheme = ({ themeColors: colors, settings, isDark }) => { const mode = isDark ? 'dark' : 'light' const root = document.documentElement.style const radius = `${settings.themeRadius}rem` // Prism 把品牌色钉在 500(明暗两态一致),故传入的原始种子色即各语义色的 500 步, // 与 UnoCSS 的 bg-primary / bg-success 同源,直接写入 --el-* 即可保持一致;mode 仅用于生成明暗变体。 setElementPlusPrimaryColor(colors.primary, mode) setElementPlusColor('success', colors.success, mode) setElementPlusColor('warning', colors.warning, mode) setElementPlusColor('danger', colors.error, mode) setElementPlusColor('error', colors.error, mode) setElementPlusColor('info', colors.info, mode) root.setProperty('--kra-radius', radius) root.setProperty('--el-border-radius-base', radius) root.setProperty('--el-card-border-radius', radius) }