11import type { Theme } from 'unocss/preset-uno'
2- import { entriesToCss , toArray } from '@unocss/core'
2+ import { entriesToCss } from '@unocss/core'
33import presetLegacyCompat from '@unocss/preset-legacy-compat'
44import {
55 defineConfig ,
@@ -42,66 +42,6 @@ export default defineConfig<Theme>({
4242 return cls . join ( ' ' )
4343 } ] ,
4444 ] ,
45- preflights : [
46- {
47- getCSS : ( ) => {
48- const returnCss : any = [ ]
49- // 明亮主题
50- const lightCss = entriesToCss ( Object . entries ( lightTheme ) )
51- const lightRoots = toArray ( [ `*,::before,::after` , `::backdrop` ] )
52- returnCss . push ( lightRoots . map ( root => `${ root } {${ lightCss } }` ) . join ( '' ) )
53- // 暗黑主题
54- const darkCss = entriesToCss ( Object . entries ( darkTheme ) )
55- const darkRoots = toArray ( [ `html.dark,html.dark *,html.dark ::before,html.dark ::after` , `html.dark ::backdrop` ] )
56- returnCss . push ( darkRoots . map ( root => `${ root } {${ darkCss } }` ) . join ( '' ) )
57-
58- return returnCss . join ( '' )
59- } ,
60- } ,
61- ] ,
62- theme : {
63- colors : {
64- border : 'hsl(var(--border))' ,
65- input : 'hsl(var(--input))' ,
66- ring : 'hsl(var(--ring))' ,
67- background : 'hsl(var(--background))' ,
68- foreground : 'hsl(var(--foreground))' ,
69- primary : {
70- DEFAULT : 'hsl(var(--primary))' ,
71- foreground : 'hsl(var(--primary-foreground))' ,
72- } ,
73- secondary : {
74- DEFAULT : 'hsl(var(--secondary))' ,
75- foreground : 'hsl(var(--secondary-foreground))' ,
76- } ,
77- destructive : {
78- DEFAULT : 'hsl(var(--destructive))' ,
79- foreground : 'hsl(var(--destructive-foreground))' ,
80- } ,
81- muted : {
82- DEFAULT : 'hsl(var(--muted))' ,
83- foreground : 'hsl(var(--muted-foreground))' ,
84- } ,
85- accent : {
86- DEFAULT : 'hsl(var(--accent))' ,
87- foreground : 'hsl(var(--accent-foreground))' ,
88- } ,
89- popover : {
90- DEFAULT : 'hsl(var(--popover))' ,
91- foreground : 'hsl(var(--popover-foreground))' ,
92- } ,
93- card : {
94- DEFAULT : 'hsl(var(--card))' ,
95- foreground : 'hsl(var(--card-foreground))' ,
96- } ,
97- } ,
98- borderRadius : {
99- xl : 'calc(var(--radius) + 4px)' ,
100- lg : 'var(--radius)' ,
101- md : 'calc(var(--radius) - 2px)' ,
102- sm : 'calc(var(--radius) - 4px)' ,
103- } ,
104- } ,
10545 presets : [
10646 presetWind3 ( ) ,
10747 presetAnimations ( ) ,
@@ -116,6 +56,77 @@ export default defineConfig<Theme>({
11656 presetLegacyCompat ( {
11757 legacyColorSpace : true ,
11858 } ) ,
59+ {
60+ name : 'unocss-preset-shadcn' ,
61+ preflights : [
62+ {
63+ getCSS : ( ) => {
64+ const returnCss : any = [ ]
65+ // 明亮主题
66+ const lightCss = entriesToCss ( Object . entries ( lightTheme ) )
67+ returnCss . push ( `:root{${ lightCss } }` )
68+ // 暗黑主题
69+ const darkCss = entriesToCss ( Object . entries ( darkTheme ) )
70+ returnCss . push ( `html.dark{${ darkCss } }` )
71+ return `
72+ ${ returnCss . join ( '\n' ) }
73+
74+ * {
75+ border-color: hsl(var(--border));
76+ }
77+
78+ body {
79+ color: hsl(var(--foreground));
80+ background: hsl(var(--background));
81+ }
82+ `
83+ } ,
84+ } ,
85+ ] ,
86+ theme : {
87+ colors : {
88+ border : 'hsl(var(--border))' ,
89+ input : 'hsl(var(--input))' ,
90+ ring : 'hsl(var(--ring))' ,
91+ background : 'hsl(var(--background))' ,
92+ foreground : 'hsl(var(--foreground))' ,
93+ primary : {
94+ DEFAULT : 'hsl(var(--primary))' ,
95+ foreground : 'hsl(var(--primary-foreground))' ,
96+ } ,
97+ secondary : {
98+ DEFAULT : 'hsl(var(--secondary))' ,
99+ foreground : 'hsl(var(--secondary-foreground))' ,
100+ } ,
101+ destructive : {
102+ DEFAULT : 'hsl(var(--destructive))' ,
103+ foreground : 'hsl(var(--destructive-foreground))' ,
104+ } ,
105+ muted : {
106+ DEFAULT : 'hsl(var(--muted))' ,
107+ foreground : 'hsl(var(--muted-foreground))' ,
108+ } ,
109+ accent : {
110+ DEFAULT : 'hsl(var(--accent))' ,
111+ foreground : 'hsl(var(--accent-foreground))' ,
112+ } ,
113+ popover : {
114+ DEFAULT : 'hsl(var(--popover))' ,
115+ foreground : 'hsl(var(--popover-foreground))' ,
116+ } ,
117+ card : {
118+ DEFAULT : 'hsl(var(--card))' ,
119+ foreground : 'hsl(var(--card-foreground))' ,
120+ } ,
121+ } ,
122+ borderRadius : {
123+ xl : 'calc(var(--radius) + 4px)' ,
124+ lg : 'var(--radius)' ,
125+ md : 'calc(var(--radius) - 2px)' ,
126+ sm : 'calc(var(--radius) - 4px)' ,
127+ } ,
128+ } ,
129+ } ,
119130 ] ,
120131 transformers : [
121132 transformerDirectives ( ) ,
0 commit comments