You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

114 lines
4.0 KiB
TypeScript

import fs from 'node:fs/promises'
import {
defineConfig,
presetAttributify,
presetIcons,
presetTypography,
presetUno,
presetWebFonts,
transformerDirectives,
transformerVariantGroup,
} from 'unocss'
export default defineConfig({
presets: [
presetUno({ dark: 'class' }),
presetAttributify(),
presetIcons({
autoInstall: false,
scale: 1.2,
warn: true,
cdn: 'https://esm.sh/',
prefix: `${import.meta.env.VITE_ICON_UNOCSS_PREFIX || 'i'}-`,
collections: {
logo: () => fs.readFile('public/favicon.svg', 'utf-8'),
// 'gridicons': () => import('@iconify-json/gridicons/icons.json').then(i => i.default),
},
}),
presetTypography(),
presetWebFonts({
fonts: {
sans: 'DM Sans',
serif: 'DM Serif Display',
mono: 'DM Mono',
},
}),
],
transformers: [
transformerDirectives(),
transformerVariantGroup(),
],
shortcuts: {
'wh-full': 'w-full h-full',
'flex-center': 'flex justify-center items-center',
'flex-col-center': 'flex-center flex-col',
'flex-x-center': 'flex justify-center',
'flex-y-center': 'flex items-center',
'i-flex-center': 'inline-flex justify-center items-center',
'i-flex-x-center': 'inline-flex justify-center',
'i-flex-y-center': 'inline-flex items-center',
'flex-col': 'flex flex-col',
'flex-col-stretch': 'flex-col items-stretch',
'i-flex-col': 'inline-flex flex-col',
'i-flex-col-stretch': 'i-flex-col items-stretch',
'flex-1-hidden': 'flex-1 overflow-hidden',
'absolute-lt': 'absolute left-0 top-0',
'absolute-lb': 'absolute left-0 bottom-0',
'absolute-rt': 'absolute right-0 top-0',
'absolute-rb': 'absolute right-0 bottom-0',
'absolute-tl': 'absolute-lt',
'absolute-tr': 'absolute-rt',
'absolute-bl': 'absolute-lb',
'absolute-br': 'absolute-rb',
'absolute-center': 'absolute-lt flex-center wh-full',
'fixed-lt': 'fixed left-0 top-0',
'fixed-lb': 'fixed left-0 bottom-0',
'fixed-rt': 'fixed right-0 top-0',
'fixed-rb': 'fixed right-0 bottom-0',
'fixed-tl': 'fixed-lt',
'fixed-tr': 'fixed-rt',
'fixed-bl': 'fixed-lb',
'fixed-br': 'fixed-rb',
'fixed-center': 'fixed-lt flex-center wh-full',
'nowrap-hidden': 'whitespace-nowrap overflow-hidden',
'ellipsis-text': 'nowrap-hidden text-ellipsis',
'transition-base': 'transition-all duration-300 ease-in-out',
},
theme: {
colors: {
primary: 'rgb(var(--primary-color))',
primary_hover: 'rgb(var(--primary-color-hover))',
primary_pressed: 'rgb(var(--primary-color-pressed))',
primary_active: 'rgba(var(--primary-color-active),0.1)',
primary_1: 'rgb(var(--primary-color1))',
primary_2: 'rgb(var(--primary-color2))',
primary_3: 'rgb(var(--primary-color3))',
primary_4: 'rgb(var(--primary-color4))',
primary_5: 'rgb(var(--primary-color5))',
primary_6: 'rgb(var(--primary-color6))',
primary_7: 'rgb(var(--primary-color7))',
primary_8: 'rgb(var(--primary-color8))',
primary_9: 'rgb(var(--primary-color9))',
info: 'rgb(var(--info-color))',
info_hover: 'rgb(var(--info-color-hover))',
info_pressed: 'rgb(var(--info-color-pressed))',
info_active: 'rgb(var(--info-color-active),0.1)',
success: 'rgb(var(--success-color))',
success_hover: 'rgb(var(--success-color-hover))',
success_pressed: 'rgb(var(--success-color-pressed))',
success_active: 'rgb(var(--success-color-active),0.1)',
warning: 'rgb(var(--warning-color))',
warning_hover: 'rgb(var(--warning-color-hover))',
warning_pressed: 'rgb(var(--warning-color-pressed))',
warning_active: 'rgb(var(--warning-color-active),0.1)',
error: 'rgb(var(--error-color))',
error_hover: 'rgb(var(--error-color-hover))',
error_pressed: 'rgb(var(--error-color-pressed))',
error_active: 'rgb(var(--error-color-active),0.1)',
dark: '#18181c',
},
},
safelist: 'prose prose-sm m-auto text-left'.split(' '),
})