import presetRemToPx from '@unocss/preset-rem-to-px'; import { defineConfig, presetAttributify, presetUno, transformerVariantGroup } from 'unocss'; // https://github.com/unocss/unocss const defaultColor = 'var(--el-border-color)'; const directionMap: AnyObj = { r: 'border-right', b: 'border-bottom', t: 'border-top', l: 'border-left', }; export default defineConfig({ presets: [presetUno({ dark: 'class' }), presetAttributify(), presetRemToPx({ baseFontSize: 4, })], shortcuts: { 'wh-full': 'w-full h-full', 'flex-center': 'flex justify-center items-center', 'flex-x-center': 'flex justify-center', 'flex-y-center': 'flex items-center', 'flex-box': 'flex flex-1 w-full', // 快捷按键的样式 'commands': 'h-22 w-22 m-r-5 flex-center b-rd-2 bg-[rgba(125,125,125,0.1)] text-10 color-#909399 shadow-commands', }, rules: [ ['shadow-commands', { 'box-shadow': 'inset 0 -2px 0 0 #cdcde6, inset 0 0 1px 1px #fff, 0 1px 2px 1px rgba(30, 35, 90, 0.4)', }], // 动态规则,匹配 'border-{direction}-{width}-{style}-{color}' [/^border(?:-([rbtl]))?(?:-(\d))?(?:-(solid|dashed))?(?:-(color-)?(\w+|\[#[0-9a-fA-F]{3,6}\]))?$/, ([, direction, width = '1', style = 'solid', , color]) => { // 如果有颜色部分,则使用提取的颜色值或默认颜色 color = !color ? defaultColor : color.replace(/\[(.+)\]/, '$1'); direction = !direction ? 'border' : directionMap[direction]; return { [direction]: `${width}px ${style} ${color}`, }; }], // 动态规则,匹配 'wrapper-{padding}' [/^wrapper(?:-(\d+))?$/, ([, padding], { symbols }) => { return [ { 'display': 'flex', 'align-items': 'center', 'cursor': 'pointer', 'border-radius': '4px', 'padding': `${padding || 12}px`, // 使用默认值 12 'color': 'var(--el-text-color-primary)', }, { [symbols.selector]: selector => `${selector}:hover`, 'background-color': 'var(--el-color-primary-light-9)', 'color': 'var(--el-color-primary)', }, ]; }], ], transformers: [ transformerVariantGroup(), ], });