import type { Theme } from 'unocss/preset-uno' import { readFileSync } from 'node:fs' import { defineConfig, presetAttributify, presetIcons, presetUno } from 'unocss' import presetTheme from 'unocss-preset-theme' import { safelist } from './unocss.safelist' // import ipld from './src/components/ipld-logo-only-plain.svg?raw' // didn't work here // import { variantMap } from './src/ui/ui-utils' const ipldFS = readFileSync('./src/icons/ipld-logo-only-plain.svg', 'utf-8') const THEMES = { light: { colors: { 'basebg': '#fafafa', 'baseinvert': '#000', 'container': '#ffffff', 'primary': '#1677ff', 'primary-border': '#1677ff', 'border': '#d9d9d9', 'text': 'rgba(0, 0, 0, 0.88)', }, }, dark: { colors: { 'basebg': '#0a0a0a', 'baseinvert': '#fff', 'container': '#000000', 'primary': '#1668dc', 'primary-border': '#1668dc', 'border': '#424242', 'text': 'rgba(255, 255, 255, 0.85)', }, }, } export default defineConfig({ shortcuts: [ { logo: 'i-logos-solidjs-icon w-2em h-2em transform transition-800 hover:rotate-360' }, { 'text-mono': 'font-mono' }, { flexcol: 'flex flex-col gap-2' }, { flexrow: 'flex flex-row gap-2' }, { darkdropdown: 'p-6 bg-gray-900 color-white max-w-2xl box-border' }, { 'outline-rounded-white': 'outline-solid outline-1 outline-offset-1 b-rounded-md outline-white' }, { 'a-unstyled': 'no-underline color-inherit visited:color-inherit' }, ], safelist, // HACKY way to avoid shadow dom and dynamically missing icons classes and stuff theme: THEMES.light, presets: [ presetTheme({ theme: { dark: THEMES.dark, }, }), presetUno({ dark: 'media', }), presetAttributify(), presetIcons({ extraProperties: { 'display': 'inline-block', 'vertical-align': 'middle', }, collections: { custom: { ipld: ipldFS, circle: '', /* ... */ }, ph: () => import('@iconify-json/ph/icons.json').then(i => i.default), }, }), ], })