@@ -4,6 +4,8 @@ import type { Config } from 'tailwindcss/types/config';
4
4
5
5
import tokens from '@eduzz/ui-tokens' ;
6
6
7
+ import { hexToRgbVar } from './utils/hextToRgb' ;
8
+
7
9
type BrandColor = keyof typeof tokens . brands ;
8
10
const defaultColor = {
9
11
primary : `var(--eduzz-theme-primary, ${ tokens . brands . eduzz . primary . pure } )` ,
@@ -12,12 +14,54 @@ const defaultColor = {
12
14
13
15
export const defaultTheme : Config = {
14
16
content : [ './src/**/*.{ts,tsx}' ] ,
15
- darkMode : [ 'class' , 'body. eduzz-ui-dark- theme' ] ,
17
+ darkMode : [ 'class' , 'body[data- eduzz-theme="dark"] ' ] ,
16
18
theme : {
17
19
extend : {
18
20
fontFamily : {
19
21
sans : [ tokens . font . family . base , ...twDefaultTheme . fontFamily . sans ]
20
22
} ,
23
+ variables : {
24
+ 'DEFAULT' : {
25
+ surface : {
26
+ subtle : hexToRgbVar ( tokens . base . light . surface . subtle ) ,
27
+ default : hexToRgbVar ( tokens . base . light . surface . default ) ,
28
+ disabled : hexToRgbVar ( tokens . base . light . surface . disabled )
29
+ } ,
30
+ outline : {
31
+ default : hexToRgbVar ( tokens . base . light . outline . default ) ,
32
+ disabled : hexToRgbVar ( tokens . base . light . outline . disabled ) ,
33
+ darker : hexToRgbVar ( tokens . base . light . outline . darker )
34
+ } ,
35
+ content : {
36
+ title : hexToRgbVar ( tokens . base . light . content . title ) ,
37
+ body : hexToRgbVar ( tokens . base . light . content . body ) ,
38
+ subtitle : hexToRgbVar ( tokens . base . light . content . subtitle ) ,
39
+ caption : hexToRgbVar ( tokens . base . light . content . caption ) ,
40
+ negative : hexToRgbVar ( tokens . base . light . content . negative ) ,
41
+ disabled : hexToRgbVar ( tokens . base . light . content . disabled )
42
+ }
43
+ } ,
44
+ 'body[data-eduzz-theme="dark"]' : {
45
+ surface : {
46
+ subtle : hexToRgbVar ( tokens . base . dark . surface . subtle ) ,
47
+ default : hexToRgbVar ( tokens . base . dark . surface . default ) ,
48
+ disabled : hexToRgbVar ( tokens . base . dark . surface . disabled )
49
+ } ,
50
+ outline : {
51
+ default : hexToRgbVar ( tokens . base . dark . outline . default ) ,
52
+ disabled : hexToRgbVar ( tokens . base . dark . outline . disabled ) ,
53
+ darker : hexToRgbVar ( tokens . base . dark . outline . darker )
54
+ } ,
55
+ content : {
56
+ title : hexToRgbVar ( tokens . base . dark . content . title ) ,
57
+ body : hexToRgbVar ( tokens . base . dark . content . body ) ,
58
+ subtitle : hexToRgbVar ( tokens . base . dark . content . subtitle ) ,
59
+ caption : hexToRgbVar ( tokens . base . dark . content . caption ) ,
60
+ negative : hexToRgbVar ( tokens . base . dark . content . negative ) ,
61
+ disabled : hexToRgbVar ( tokens . base . dark . content . disabled )
62
+ }
63
+ }
64
+ } ,
21
65
colors : {
22
66
'belt-white' : tokens . belt . background . white ,
23
67
'belt-red' : tokens . belt . background . red ,
@@ -30,7 +74,25 @@ export const defaultTheme: Config = {
30
74
'belt-orange-foreground' : tokens . belt . foreground . orange ,
31
75
'belt-green-foreground' : tokens . belt . foreground . green ,
32
76
'belt-black-foreground' : tokens . belt . foreground . black ,
33
- 'belt-golden-foreground' : tokens . belt . foreground . golden
77
+ 'belt-golden-foreground' : tokens . belt . foreground . golden ,
78
+ 'surface' : {
79
+ subtle : 'rgb(var(--eduzz-ui-layout-surface-subtle) / <alpha-value>)' ,
80
+ default : 'rgb(var(--eduzz-ui-layout-surface-default) / <alpha-value>)' ,
81
+ disabled : 'rgb(var(--eduzz-ui-layout-surface-disabled) / <alpha-value>)'
82
+ } ,
83
+ 'outline' : {
84
+ default : 'rgb(var(--eduzz-ui-layout-outline-default) / <alpha-value>)' ,
85
+ disabled : 'rgb(var(--eduzz-ui-layout-outline-disabled) / <alpha-value>)' ,
86
+ darker : 'rgb(var(--eduzz-ui-layout-outline-darker) / <alpha-value>)'
87
+ } ,
88
+ 'content' : {
89
+ title : 'rgb(var(--eduzz-ui-layout-content-title) / <alpha-value>)' ,
90
+ body : 'rgb(var(--eduzz-ui-layout-content-body) / <alpha-value>)' ,
91
+ subtitle : 'rgb(var(--eduzz-ui-layout-content-subtitle) / <alpha-value>)' ,
92
+ caption : 'rgb(var(--eduzz-ui-layout-content-caption) / <alpha-value>)' ,
93
+ negative : 'rgb(var(--eduzz-ui-layout-content-negative) / <alpha-value>)' ,
94
+ disabled : 'rgb(var(--eduzz-ui-layout-content-disabled) / <alpha-value>)'
95
+ }
34
96
} ,
35
97
screens : {
36
98
'sm' : tokens . breakpoints . sm ,
@@ -49,7 +111,9 @@ export const defaultTheme: Config = {
49
111
'4xl' : tokens . font . size . xl
50
112
}
51
113
}
52
- }
114
+ } ,
115
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
116
+ plugins : [ require ( '@mertasan/tailwindcss-variables' ) ( { variablePrefix : '--eduzz-ui-layout' } ) ]
53
117
} ;
54
118
55
119
export default function createTheme (
0 commit comments