36 lines
1.3 KiB
TypeScript
36 lines
1.3 KiB
TypeScript
import { viteThemePlugin } from './plugin/theme';
|
||
import { generateColors, getThemeColors } from './themeConfig';
|
||
import { mixLighten, mixDarken, tinycolor } from 'vite-plugin-theme';
|
||
export function theme({ isProd }) {
|
||
const colors = generateColors({
|
||
mixDarken,
|
||
mixLighten,
|
||
tinycolor,
|
||
});
|
||
return viteThemePlugin({
|
||
resolveSelector: (s) => {
|
||
s = s.trim();
|
||
switch (s) {
|
||
case '.ant-steps-item-process .ant-steps-item-icon > .ant-steps-icon':
|
||
return '.ant-steps-item-icon > .ant-steps-icon';
|
||
case '.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled)':
|
||
case '.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):hover':
|
||
case '.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):active':
|
||
return s;
|
||
case '.ant-steps-item-icon > .ant-steps-icon':
|
||
return s;
|
||
case '.ant-select-item-option-selected:not(.ant-select-item-option-disabled)':
|
||
return s;
|
||
default:
|
||
if (s.indexOf('.ant-btn') >= -1) {
|
||
// 按钮被重新定制过,需要过滤掉class防止覆盖
|
||
return s;
|
||
}
|
||
}
|
||
return s.startsWith('[data-theme') ? s : `[data-theme] ${s}`;
|
||
},
|
||
colorVariables: [...getThemeColors(), ...colors],
|
||
isProd,
|
||
});
|
||
}
|