59 lines
2.4 KiB
JavaScript
59 lines
2.4 KiB
JavaScript
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',
|
|
],
|
|
})
|