ontoref/assets/css/uno.config.js

59 lines
2.4 KiB
JavaScript
Raw Permalink Normal View History

2026-03-29 00:19:56 +00:00
import { defineConfig, presetUno, transformerDirectives, transformerVariantGroup } from 'unocss'
import { presetDaisy } from 'unocss-preset-daisy'
import { readFileSync } from 'fs'
import { createRequire } from 'module'
const require = createRequire(import.meta.url)
const daisyuiThemes = readFileSync(require.resolve('daisyui/dist/themes.css'), 'utf-8')
const basePreflight = `
*,::before,::after{box-sizing:border-box}
html{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";line-height:1.5;-webkit-text-size-adjust:100%;tab-size:4}
body{margin:0;padding:0;line-height:inherit}
a{color:inherit;text-decoration:inherit}
img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}
img,video{max-width:100%;height:auto}
h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}
ol,ul{list-style:none;margin:0;padding:0}
button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:inherit;color:inherit;margin:0;padding:0}
button,select{text-transform:none}
`
// DaisyUI v3 sets --btn-text-case:uppercase per [data-theme=*] in themes.css and
// drives text-transform via that variable in component styles. Both come after
// preflights, so !important is the only reliable escape.
// svg sizing is handled in base.html via higher-specificity (.btn svg.w-N) rules.
const daisyV3Overrides = `
.btn{text-transform:none!important;letter-spacing:normal!important}
`
export default defineConfig({
preflights: [
{ getCSS: () => basePreflight },
{ getCSS: () => daisyuiThemes },
{ getCSS: () => daisyV3Overrides },
],
content: {
filesystem: [
'../../crates/ontoref-daemon/templates/**/*.html',
],
},
presets: [
presetUno(),
presetDaisy({ themes: ['dark', 'light'] }),
],
transformers: [
transformerDirectives(),
transformerVariantGroup(),
],
safelist: [
// DaisyUI component classes assembled dynamically in JS (authBadge, statusBadge)
'badge', 'badge-xs', 'badge-ghost', 'badge-info', 'badge-error',
'badge-success', 'badge-warning', 'badge-neutral', 'badge-lg', 'badge-outline',
'loading', 'loading-spinner', 'loading-sm',
// Utility classes assembled dynamically in JS
'font-mono', 'hidden', 'line-through',
'text-orange-400', 'text-cyan-400', 'text-purple-400', 'text-yellow-400',
],
})