import {
defineConfig,
presetIcons,
presetAttributify,
presetUno,
transformerDirectives,
transformerVariantGroup,
UserConfig,
} from 'unocss';
import { Theme } from 'unocss/preset-mini';
import { generateUnocssTheme } from '@itshixun/qst-ui-system';
export const iconCollectionName = 'uplus';
// 自定义svg的图标
export const iconCollection = {
/** uplus logo */
logo: `
`,
'chevron-up': `
`,
'chevron-down': `
`,
'chevron-left': `
`,
'chevron-right': `
`,
dashboard: ``,
};
const defaultSizes = {
'spacing-xxxs': '4px',
'spacing-xxs': '8px',
'spacing-xs': '12px',
'spacing-sm': '16px',
'spacing-md': '20px',
spacing: '24px',
'spacing-lg': '28px',
'spacing-xl': '32px',
'spacing-xxl': '36px',
'spacing-xxxl': '40px',
'exercise-header': '56px',
};
export const theme: Theme = Object.assign(generateUnocssTheme(), {
breakpoints: {
sm: '640px',
md: '768px',
df: '900px',
lg: '1024px',
xl: '1280px',
xxl: '1536px',
xxxl: '1860px',
},
});
/** 将上方自定义的svg图表类明生成列表,传给下面配置中的safeList,保证动态嵌入的自定义图标样式有效 */
export const getIconCollectionList = () => {
const list: string[] = [];
for (const key in iconCollection) {
list.push(`i-${iconCollectionName}:${key}`);
}
return list;
};
const config: UserConfig = defineConfig({
presets: [
presetUno(),
presetAttributify(),
presetIcons({
scale: 1,
warn: true,
collections: {
[iconCollectionName]: iconCollection,
},
}),
],
// unocss can't render icon class dynamically, when adding menu icon class
// in route.meta.menuConfig, you must also add the icon class in safelist.
safelist: [...getIconCollectionList()],
transformers: [transformerDirectives(), transformerVariantGroup()],
theme,
shortcuts: [
{
'flex-row-center': 'flex flex-row items-center justify-center',
'flex-row-between': 'flex flex-row items-center justify-between',
'flex-col-center': 'flex flex-col items-center justify-center',
'flex-col-between': 'flex flex-col items-center justify-between',
},
],
});
export default config;