-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathtailwind.config.ts
125 lines (122 loc) · 2.78 KB
/
tailwind.config.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
import type { Config } from 'tailwindcss'
import colors from 'tailwindcss/colors'
import defaultTheme from 'tailwindcss/defaultTheme'
const primaryColor = colors.fuchsia
const secondaryColor = colors.pink
const neutralColor = colors.gray
function rem2px(input, fontSize = 16) {
if (input == null) {
return input
}
switch (typeof input) {
case 'object': {
if (Array.isArray(input)) {
return input.map(val => rem2px(val, fontSize))
}
const ret = {}
for (const key in input) {
ret[key] = rem2px(input[key], fontSize)
}
return ret
}
case 'string': {
return input.replace(/(\d+(?:\.\d+)?|\.\d+)rem$/, (_, val) => `${Number.parseFloat(val) * fontSize}px`)
}
case 'function': {
// eslint-disable-next-line no-eval
return eval(
input
.toString()
.replace(/(\d+(?:\.\d+)?|\.\d+)rem/g, (_, val) => `${Number.parseFloat(val) * fontSize}px`)
)
}
default:
return input
}
}
export default {
content: [
'./components/**/*.{vue,js,ts}',
'./storyblok/**/*.{vue,js,ts}',
'./layouts/**/*.vue',
'./pages/**/*.vue',
'./composables/**/*.{js,ts}',
'./plugins/**/*.{js,ts}',
'./utils/**/*.{js,ts}',
'./app.{js,ts,vue}',
'./error.{js,ts,vue}',
'./app.config.{js,ts}',
'./nuxt.config.{js,ts}'
],
darkMode: 'class',
important: true,
theme: {
container: {
center: true,
},
fontFamily: {
body: ['"Roboto"', ...defaultTheme.fontFamily.sans],
display: ['"Amaranth"', ...defaultTheme.fontFamily.serif],
},
// Use px for max-width, since container breakpoints are also in px.
maxWidth: ({ theme, breakpoints }) => ({
...rem2px(defaultTheme.maxWidth({ theme, breakpoints })),
}),
colors: {
transparent: 'transparent',
black: '#000000',
white: '#ffffff',
primary: {
...primaryColor,
DEFAULT: primaryColor[700],
light: primaryColor[300],
dark: primaryColor[900],
},
secondary: {
...secondaryColor,
DEFAULT: secondaryColor[500],
light: secondaryColor[300],
dark: secondaryColor[900],
},
neutral: {
...neutralColor,
DEFAULT: neutralColor[500],
light: neutralColor[300],
dark: neutralColor[900],
},
success: {
DEFAULT: colors.green[700],
dark: colors.green[800],
light: colors.green[50],
},
error: {
DEFAULT: colors.red[700],
dark: colors.red[800],
light: colors.red[50],
},
warning: {
DEFAULT: colors.yellow[700],
dark: colors.yellow[800],
light: colors.yellow[50],
},
info: {
DEFAULT: colors.blue[700],
dark: colors.blue[800],
light: colors.blue[50],
},
},
extend: {
screens: {
xs: '475px',
},
dropShadow: {
primary: '3px 5px 0 rgba(35, 7, 79, 0.4)',
secondary: '3px 5px 0 rgba(35, 7, 79, 0.4)',
},
},
},
variants: {
extend: {},
},
safelist: [],
} satisfies Config