vue-element-plus-admin/uno.config.ts

147 lines
2.8 KiB
TypeScript
Raw Permalink Normal View History

2023-12-26 09:59:07 +08:00
import { defineConfig, toEscapedSelector as e, presetUno, presetIcons } from 'unocss'
2023-04-18 17:09:03 +08:00
import transformerVariantGroup from '@unocss/transformer-variant-group'
2024-01-31 14:15:31 +08:00
import { loadEnv } from 'vite'
import { ICON_PREFIX } from './src/constants'
2024-01-31 14:15:31 +08:00
const root = process.cwd()
2023-04-17 14:53:09 +08:00
const createPresetIcons = () => {
2024-01-31 14:15:31 +08:00
const isBuild = !!process.argv[4]
let env = {} as any
if (!isBuild) {
env = loadEnv(process.argv[3], root)
2024-02-22 17:32:59 +08:00
} else {
env = loadEnv(process.argv[4], root)
2024-01-31 14:15:31 +08:00
}
// @ts-ignore
2024-01-31 14:15:31 +08:00
if (env.VITE_USE_ONLINE_ICON === 'true') {
return []
} else {
return [
presetIcons({
autoInstall: false,
prefix: ICON_PREFIX
})
]
}
}
2023-04-17 09:23:03 +08:00
export default defineConfig({
// ...UnoCSS options
rules: [
2023-11-08 15:24:56 +08:00
[
/^overflow-ellipsis$/,
([], { rawSelector }) => {
const selector = e(rawSelector)
return `
${selector} {
text-overflow: ellipsis;
}
`
}
],
2023-04-17 09:23:03 +08:00
[
2023-04-17 14:53:09 +08:00
/^custom-hover$/,
([], { rawSelector }) => {
2023-04-17 09:23:03 +08:00
const selector = e(rawSelector)
return `
${selector} {
display: flex;
height: 100%;
padding: 1px 10px 0;
cursor: pointer;
align-items: center;
transition: background var(--transition-time-02);
}
/* you can have multiple rules */
${selector}:hover {
background-color: var(--top-header-hover-color);
}
2023-04-17 14:53:09 +08:00
.dark ${selector}:hover {
2023-04-17 09:23:03 +08:00
background-color: var(--el-bg-color-overlay);
}
2023-06-06 14:29:10 +08:00
`
}
],
[
/^layout-border__left$/,
([], { rawSelector }) => {
const selector = e(rawSelector)
return `
${selector}:before {
content: "";
position: absolute;
top: 0;
left: 0;
width: 1px;
height: 100%;
2023-06-25 17:53:57 +08:00
background-color: var(--el-border-color);
2023-06-25 16:02:15 +08:00
z-index: 3;
2023-06-06 14:29:10 +08:00
}
`
}
],
[
/^layout-border__right$/,
([], { rawSelector }) => {
const selector = e(rawSelector)
return `
${selector}:after {
content: "";
position: absolute;
top: 0;
right: 0;
width: 1px;
height: 100%;
2023-06-25 17:53:57 +08:00
background-color: var(--el-border-color);
2023-06-25 16:02:15 +08:00
z-index: 3;
2023-06-06 14:29:10 +08:00
}
`
}
],
[
/^layout-border__top$/,
([], { rawSelector }) => {
const selector = e(rawSelector)
return `
${selector}:before {
content: "";
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 1px;
2023-06-25 17:53:57 +08:00
background-color: var(--el-border-color);
2023-06-25 16:02:15 +08:00
z-index: 3;
2023-06-06 14:29:10 +08:00
}
`
}
],
[
/^layout-border__bottom$/,
([], { rawSelector }) => {
const selector = e(rawSelector)
return `
${selector}:after {
content: "";
position: absolute;
bottom: 0;
left: 0;
width: 100%;
height: 1px;
2023-06-25 17:53:57 +08:00
background-color: var(--el-border-color);
2023-06-25 16:02:15 +08:00
z-index: 3;
2023-06-06 14:29:10 +08:00
}
2023-04-17 09:23:03 +08:00
`
}
]
],
presets: [presetUno({ dark: 'class', attributify: false }), ...createPresetIcons()],
2023-12-26 09:59:07 +08:00
transformers: [transformerVariantGroup()],
content: {
pipeline: {
include: [/\.(vue|svelte|[jt]sx|mdx?|astro|elm|php|phtml|html|ts)($|\?)/]
}
}
2023-04-17 09:23:03 +08:00
})