mirror of https://github.com/certd/certd
				
				
				
			
		
			
				
	
	
		
			69 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			TypeScript
		
	
	
			
		
		
	
	
			69 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			TypeScript
		
	
	
| /**
 | |
|  * Vite plugin for website theme color switching
 | |
|  * https://github.com/anncwb/vite-plugin-theme
 | |
|  */
 | |
| import type { Plugin } from "vite";
 | |
| import path from "path";
 | |
| import { viteThemePlugin, mixLighten, mixDarken, tinycolor, antdDarkThemePlugin } from "vite-plugin-theme";
 | |
| import { getThemeColors, generateColors } from "./theme-colors";
 | |
| import { generateModifyVars } from "./modify-vars";
 | |
| 
 | |
| export function configThemePlugin(isBuild: boolean): Plugin[] {
 | |
|   const colors = generateColors({
 | |
|     mixDarken,
 | |
|     mixLighten,
 | |
|     tinycolor
 | |
|   });
 | |
|   const colorVariables = [...getThemeColors(), ...colors];
 | |
|   const plugin = [
 | |
|     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;
 | |
|       //   }
 | |
|       //   return `[data-theme] ${s}`;
 | |
|       // },
 | |
|       resolveSelector: (s) => {
 | |
|         s = s.trim();
 | |
|         if (s === ".ant-btn:hover,.ant-btn:focus") {
 | |
|           // console.log("ssss", s);
 | |
|           return ".theme-discard-xxxxxxx";
 | |
|         }
 | |
|         return s;
 | |
|       },
 | |
|       colorVariables
 | |
|     }),
 | |
|     antdDarkThemePlugin({
 | |
|       preloadFiles: [
 | |
|         path.resolve(process.cwd(), "node_modules/ant-design-vue/dist/antd.less"),
 | |
|         path.resolve(process.cwd(), "src/style/theme/index.less")
 | |
|       ],
 | |
|       filter: (id) => (isBuild ? !id.endsWith("antd.less") : true),
 | |
|       // extractCss: false,
 | |
|       darkModifyVars: {
 | |
|         ...generateModifyVars(true),
 | |
|         "text-color": "#c9d1d9",
 | |
|         "text-color-base": "#c9d1d9",
 | |
|         "component-background": "#151515",
 | |
|         // black: '#0e1117',
 | |
|         // #8b949e
 | |
|         "text-color-secondary": "#8b949e",
 | |
|         "border-color-base": "#303030",
 | |
|         // 'border-color-split': '#30363d',
 | |
|         "item-active-bg": "#111b26",
 | |
|         "app-content-background": "rgb(255 255 255 / 4%)"
 | |
|       }
 | |
|     })
 | |
|   ];
 | |
| 
 | |
|   return (plugin as unknown) as Plugin[];
 | |
| }
 |