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.0, 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 m-auto text-left'.split(' '), })