tailwindcss 3.1.3 → 3.1.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +30 -2
- package/defaultTheme.d.ts +2 -1
- package/lib/corePlugins.js +4 -1
- package/lib/lib/defaultExtractor.js +44 -22
- package/lib/lib/evaluateTailwindFunctions.js +47 -15
- package/lib/lib/generateRules.js +5 -1
- package/lib/lib/setupContextUtils.js +6 -0
- package/lib/util/dataTypes.js +1 -3
- package/lib/util/formatVariantSelector.js +3 -2
- package/package.json +8 -8
- package/peers/index.js +286 -123
- package/scripts/generate-types.js +53 -0
- package/scripts/type-utils.js +27 -0
- package/src/corePlugins.js +2 -1
- package/src/lib/defaultExtractor.js +42 -26
- package/src/lib/evaluateTailwindFunctions.js +50 -18
- package/src/lib/generateRules.js +5 -0
- package/src/lib/setupContextUtils.js +11 -0
- package/src/util/dataTypes.js +1 -3
- package/src/util/formatVariantSelector.js +3 -1
- package/types/config.d.ts +7 -5
- package/types/generated/default-theme.d.ts +331 -0
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export function union(types) {
|
|
2
|
+
return [...new Set(types)].join(' | ')
|
|
3
|
+
}
|
|
4
|
+
|
|
5
|
+
export function unionValues(values) {
|
|
6
|
+
return union(values.map(forValue))
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export function forKeys(value) {
|
|
10
|
+
return union(Object.keys(value).map((key) => `'${key}'`))
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export function forValue(value) {
|
|
14
|
+
if (Array.isArray(value)) {
|
|
15
|
+
return `(${unionValues(value)})[]`
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
if (typeof value === 'object') {
|
|
19
|
+
return `Record<${forKeys(value)}, ${unionValues(Object.values(value))}>`
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
if (typeof value === 'string') {
|
|
23
|
+
return `string`
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
return `any`
|
|
27
|
+
}
|
package/src/corePlugins.js
CHANGED
|
@@ -1613,7 +1613,7 @@ export let corePlugins = {
|
|
|
1613
1613
|
{
|
|
1614
1614
|
text: (value) => {
|
|
1615
1615
|
let [fontSize, options] = Array.isArray(value) ? value : [value]
|
|
1616
|
-
let { lineHeight, letterSpacing } = isPlainObject(options)
|
|
1616
|
+
let { lineHeight, letterSpacing, fontWeight } = isPlainObject(options)
|
|
1617
1617
|
? options
|
|
1618
1618
|
: { lineHeight: options }
|
|
1619
1619
|
|
|
@@ -1621,6 +1621,7 @@ export let corePlugins = {
|
|
|
1621
1621
|
'font-size': fontSize,
|
|
1622
1622
|
...(lineHeight === undefined ? {} : { 'line-height': lineHeight }),
|
|
1623
1623
|
...(letterSpacing === undefined ? {} : { 'letter-spacing': letterSpacing }),
|
|
1624
|
+
...(fontWeight === undefined ? {} : { 'font-weight': fontWeight }),
|
|
1624
1625
|
}
|
|
1625
1626
|
},
|
|
1626
1627
|
},
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { flagEnabled } from '../featureFlags
|
|
1
|
+
import { flagEnabled } from '../featureFlags'
|
|
2
2
|
import * as regex from './regex'
|
|
3
3
|
|
|
4
4
|
export function defaultExtractor(context) {
|
|
@@ -22,6 +22,10 @@ export function defaultExtractor(context) {
|
|
|
22
22
|
function* buildRegExps(context) {
|
|
23
23
|
let separator = context.tailwindConfig.separator
|
|
24
24
|
let variantGroupingEnabled = flagEnabled(context.tailwindConfig, 'variantGrouping')
|
|
25
|
+
let prefix =
|
|
26
|
+
context.tailwindConfig.prefix !== ''
|
|
27
|
+
? regex.optional(regex.pattern([/-?/, regex.escape(context.tailwindConfig.prefix)]))
|
|
28
|
+
: ''
|
|
25
29
|
|
|
26
30
|
let utility = regex.any([
|
|
27
31
|
// Arbitrary properties
|
|
@@ -64,31 +68,43 @@ function* buildRegExps(context) {
|
|
|
64
68
|
]),
|
|
65
69
|
])
|
|
66
70
|
|
|
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
|
-
|
|
71
|
+
let variantPatterns = [
|
|
72
|
+
// Without quotes
|
|
73
|
+
regex.any([
|
|
74
|
+
regex.pattern([/([^\s"'`\[\\]+-)?\[[^\s"'`]+\]/, separator]),
|
|
75
|
+
regex.pattern([/[^\s"'`\[\\]+/, separator]),
|
|
76
|
+
]),
|
|
77
|
+
|
|
78
|
+
// With quotes allowed
|
|
79
|
+
regex.any([
|
|
80
|
+
regex.pattern([/([^\s"'`\[\\]+-)?\[[^\s`]+\]/, separator]),
|
|
81
|
+
regex.pattern([/[^\s`\[\\]+/, separator]),
|
|
82
|
+
]),
|
|
83
|
+
]
|
|
84
|
+
|
|
85
|
+
for (const variantPattern of variantPatterns) {
|
|
86
|
+
yield regex.pattern([
|
|
87
|
+
// Variants
|
|
88
|
+
'((?=((',
|
|
89
|
+
variantPattern,
|
|
90
|
+
')+))\\2)?',
|
|
91
|
+
|
|
92
|
+
// Important (optional)
|
|
93
|
+
/!?/,
|
|
94
|
+
|
|
95
|
+
prefix,
|
|
96
|
+
|
|
97
|
+
variantGroupingEnabled
|
|
98
|
+
? regex.any([
|
|
99
|
+
// Or any of those things but grouped separated by commas
|
|
100
|
+
regex.pattern([/\(/, utility, regex.zeroOrMore([/,/, utility]), /\)/]),
|
|
101
|
+
|
|
102
|
+
// Arbitrary properties, constrained utilities, arbitrary values, etc…
|
|
103
|
+
utility,
|
|
104
|
+
])
|
|
105
|
+
: utility,
|
|
106
|
+
])
|
|
107
|
+
}
|
|
92
108
|
|
|
93
109
|
// 5. Inner matches
|
|
94
110
|
yield /[^<>"'`\s.(){}[\]#=%$]*[^<>"'`\s.(){}[\]#=%:$]/g
|
|
@@ -157,35 +157,67 @@ let nodeTypePropertyMap = {
|
|
|
157
157
|
decl: 'value',
|
|
158
158
|
}
|
|
159
159
|
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
160
|
+
/**
|
|
161
|
+
* @param {string} path
|
|
162
|
+
* @returns {Iterable<[path: string, alpha: string|undefined]>}
|
|
163
|
+
*/
|
|
164
|
+
function* toPaths(path) {
|
|
165
|
+
// Strip quotes from beginning and end of string
|
|
166
|
+
// This allows the alpha value to be present inside of quotes
|
|
167
|
+
path = path.replace(/^['"]+|['"]+$/g, '')
|
|
166
168
|
|
|
167
|
-
|
|
168
|
-
|
|
169
|
+
let matches = path.match(/^([^\s]+)(?![^\[]*\])(?:\s*\/\s*([^\/\s]+))$/)
|
|
170
|
+
let alpha = undefined
|
|
169
171
|
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
172
|
+
yield [path, undefined]
|
|
173
|
+
|
|
174
|
+
if (matches) {
|
|
175
|
+
path = matches[1]
|
|
176
|
+
alpha = matches[2]
|
|
177
|
+
|
|
178
|
+
yield [path, alpha]
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
/**
|
|
183
|
+
*
|
|
184
|
+
* @param {any} config
|
|
185
|
+
* @param {string} path
|
|
186
|
+
* @param {any} defaultValue
|
|
187
|
+
*/
|
|
188
|
+
function resolvePath(config, path, defaultValue) {
|
|
189
|
+
const results = Array.from(toPaths(path)).map(([path, alpha]) => {
|
|
190
|
+
return Object.assign(validatePath(config, path, defaultValue, { opacityValue: alpha }), {
|
|
191
|
+
resolvedPath: path,
|
|
192
|
+
alpha,
|
|
193
|
+
})
|
|
194
|
+
})
|
|
195
|
+
|
|
196
|
+
return results.find((result) => result.isValid) ?? results[0]
|
|
197
|
+
}
|
|
174
198
|
|
|
175
|
-
|
|
199
|
+
export default function ({ tailwindConfig: config }) {
|
|
200
|
+
let functions = {
|
|
201
|
+
theme: (node, path, ...defaultValue) => {
|
|
202
|
+
let { isValid, value, error, alpha } = resolvePath(
|
|
176
203
|
config,
|
|
177
204
|
path,
|
|
178
|
-
defaultValue.length ? defaultValue : undefined
|
|
179
|
-
{ opacityValue: alpha }
|
|
205
|
+
defaultValue.length ? defaultValue : undefined
|
|
180
206
|
)
|
|
181
207
|
|
|
182
208
|
if (!isValid) {
|
|
183
209
|
throw node.error(error)
|
|
184
210
|
}
|
|
185
211
|
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
212
|
+
let maybeColor = parseColorFormat(value)
|
|
213
|
+
let isColorFunction = maybeColor !== undefined && typeof maybeColor === 'function'
|
|
214
|
+
|
|
215
|
+
if (alpha !== undefined || isColorFunction) {
|
|
216
|
+
if (alpha === undefined) {
|
|
217
|
+
alpha = 1.0
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
value = withAlphaValue(maybeColor, alpha, maybeColor)
|
|
189
221
|
}
|
|
190
222
|
|
|
191
223
|
return value
|
package/src/lib/generateRules.js
CHANGED
|
@@ -129,6 +129,7 @@ function applyVariant(variant, matches, context) {
|
|
|
129
129
|
}
|
|
130
130
|
|
|
131
131
|
let args
|
|
132
|
+
let isArbitraryVariant = false
|
|
132
133
|
|
|
133
134
|
// Find partial arbitrary variants
|
|
134
135
|
if (variant.endsWith(']') && !variant.startsWith('[')) {
|
|
@@ -144,6 +145,8 @@ function applyVariant(variant, matches, context) {
|
|
|
144
145
|
return []
|
|
145
146
|
}
|
|
146
147
|
|
|
148
|
+
isArbitraryVariant = true
|
|
149
|
+
|
|
147
150
|
let fn = parseVariant(selector)
|
|
148
151
|
|
|
149
152
|
let sort = Array.from(context.variantOrder.values()).pop() << 1n
|
|
@@ -300,6 +303,7 @@ function applyVariant(variant, matches, context) {
|
|
|
300
303
|
...meta,
|
|
301
304
|
sort: variantSort | meta.sort,
|
|
302
305
|
collectedFormats: (meta.collectedFormats ?? []).concat(collectedFormats),
|
|
306
|
+
isArbitraryVariant,
|
|
303
307
|
},
|
|
304
308
|
clone.nodes[0],
|
|
305
309
|
]
|
|
@@ -627,6 +631,7 @@ function* resolveMatches(candidate, context, original = candidate) {
|
|
|
627
631
|
base: candidate
|
|
628
632
|
.split(new RegExp(`\\${context?.tailwindConfig?.separator ?? ':'}(?![^[]*\\])`))
|
|
629
633
|
.pop(),
|
|
634
|
+
isArbitraryVariant: match[0].isArbitraryVariant,
|
|
630
635
|
|
|
631
636
|
context,
|
|
632
637
|
})
|
|
@@ -762,6 +762,17 @@ function registerPlugins(plugins, context) {
|
|
|
762
762
|
]
|
|
763
763
|
}
|
|
764
764
|
|
|
765
|
+
if ([].concat(options?.type).includes('color')) {
|
|
766
|
+
classes = [
|
|
767
|
+
...classes,
|
|
768
|
+
...classes.flatMap((cls) =>
|
|
769
|
+
Object.keys(context.tailwindConfig.theme.opacity).map(
|
|
770
|
+
(opacity) => `${cls}/${opacity}`
|
|
771
|
+
)
|
|
772
|
+
),
|
|
773
|
+
]
|
|
774
|
+
}
|
|
775
|
+
|
|
765
776
|
return classes
|
|
766
777
|
})()
|
|
767
778
|
: [util]
|
package/src/util/dataTypes.js
CHANGED
|
@@ -49,9 +49,7 @@ export function normalize(value, isRoot = true) {
|
|
|
49
49
|
)
|
|
50
50
|
})
|
|
51
51
|
|
|
52
|
-
|
|
53
|
-
// or '('.
|
|
54
|
-
return value.replace(/(-?\d*\.?\d(?!\b-.+[,)](?![^+\-/*])\D)(?:%|[a-z]+)?|\))([\/])/g, '$1 $2 ')
|
|
52
|
+
return value
|
|
55
53
|
}
|
|
56
54
|
|
|
57
55
|
export function url(value) {
|
|
@@ -35,6 +35,7 @@ export function finalizeSelector(
|
|
|
35
35
|
selector,
|
|
36
36
|
candidate,
|
|
37
37
|
context,
|
|
38
|
+
isArbitraryVariant,
|
|
38
39
|
|
|
39
40
|
// Split by the separator, but ignore the separator inside square brackets:
|
|
40
41
|
//
|
|
@@ -50,7 +51,8 @@ export function finalizeSelector(
|
|
|
50
51
|
) {
|
|
51
52
|
let ast = selectorParser().astSync(selector)
|
|
52
53
|
|
|
53
|
-
|
|
54
|
+
// We explicitly DO NOT prefix classes in arbitrary variants
|
|
55
|
+
if (context?.tailwindConfig?.prefix && !isArbitraryVariant) {
|
|
54
56
|
format = prefixSelector(context.tailwindConfig.prefix, format)
|
|
55
57
|
}
|
|
56
58
|
|
package/types/config.d.ts
CHANGED
|
@@ -12,6 +12,7 @@ interface RecursiveKeyValuePair<K extends keyof any = string, V = string> {
|
|
|
12
12
|
[key: string]: V | RecursiveKeyValuePair<K, V>
|
|
13
13
|
}
|
|
14
14
|
type ResolvableTo<T> = T | ((utils: PluginUtils) => T)
|
|
15
|
+
type CSSRuleObject = RecursiveKeyValuePair<string, string | string[]>
|
|
15
16
|
|
|
16
17
|
interface PluginUtils {
|
|
17
18
|
colors: DefaultColors
|
|
@@ -163,6 +164,7 @@ interface ThemeConfig {
|
|
|
163
164
|
configuration: Partial<{
|
|
164
165
|
lineHeight: string
|
|
165
166
|
letterSpacing: string
|
|
167
|
+
fontWeight: string | number
|
|
166
168
|
}>
|
|
167
169
|
]
|
|
168
170
|
>
|
|
@@ -242,7 +244,7 @@ type ValueType =
|
|
|
242
244
|
export interface PluginAPI {
|
|
243
245
|
// for registering new static utility styles
|
|
244
246
|
addUtilities(
|
|
245
|
-
utilities:
|
|
247
|
+
utilities: CSSRuleObject | CSSRuleObject[],
|
|
246
248
|
options?: Partial<{
|
|
247
249
|
respectPrefix: boolean
|
|
248
250
|
respectImportant: boolean
|
|
@@ -250,7 +252,7 @@ export interface PluginAPI {
|
|
|
250
252
|
): void
|
|
251
253
|
// for registering new dynamic utility styles
|
|
252
254
|
matchUtilities<T>(
|
|
253
|
-
utilities: KeyValuePair<string, (value: T) =>
|
|
255
|
+
utilities: KeyValuePair<string, (value: T) => CSSRuleObject>,
|
|
254
256
|
options?: Partial<{
|
|
255
257
|
respectPrefix: boolean
|
|
256
258
|
respectImportant: boolean
|
|
@@ -261,7 +263,7 @@ export interface PluginAPI {
|
|
|
261
263
|
): void
|
|
262
264
|
// for registering new static component styles
|
|
263
265
|
addComponents(
|
|
264
|
-
components:
|
|
266
|
+
components: CSSRuleObject | CSSRuleObject[],
|
|
265
267
|
options?: Partial<{
|
|
266
268
|
respectPrefix: boolean
|
|
267
269
|
respectImportant: boolean
|
|
@@ -269,7 +271,7 @@ export interface PluginAPI {
|
|
|
269
271
|
): void
|
|
270
272
|
// for registering new dynamic component styles
|
|
271
273
|
matchComponents<T>(
|
|
272
|
-
components: KeyValuePair<string, (value: T) =>
|
|
274
|
+
components: KeyValuePair<string, (value: T) => CSSRuleObject>,
|
|
273
275
|
options?: Partial<{
|
|
274
276
|
respectPrefix: boolean
|
|
275
277
|
respectImportant: boolean
|
|
@@ -279,7 +281,7 @@ export interface PluginAPI {
|
|
|
279
281
|
}>
|
|
280
282
|
): void
|
|
281
283
|
// for registering new base styles
|
|
282
|
-
addBase(base:
|
|
284
|
+
addBase(base: CSSRuleObject | CSSRuleObject[]): void
|
|
283
285
|
// for registering custom variants
|
|
284
286
|
addVariant(name: string, definition: string | string[] | (() => string) | (() => string)[]): void
|
|
285
287
|
// for looking up values in the user’s theme configuration
|
|
@@ -0,0 +1,331 @@
|
|
|
1
|
+
import { Config } from '../../types'
|
|
2
|
+
type CSSDeclarationList = Record<string, string>
|
|
3
|
+
export type DefaultTheme = Config['theme'] & {
|
|
4
|
+
screens: Record<'sm' | 'md' | 'lg' | 'xl' | '2xl', string>
|
|
5
|
+
columns: Record<
|
|
6
|
+
| '1'
|
|
7
|
+
| '2'
|
|
8
|
+
| '3'
|
|
9
|
+
| '4'
|
|
10
|
+
| '5'
|
|
11
|
+
| '6'
|
|
12
|
+
| '7'
|
|
13
|
+
| '8'
|
|
14
|
+
| '9'
|
|
15
|
+
| '10'
|
|
16
|
+
| '11'
|
|
17
|
+
| '12'
|
|
18
|
+
| 'auto'
|
|
19
|
+
| '3xs'
|
|
20
|
+
| '2xs'
|
|
21
|
+
| 'xs'
|
|
22
|
+
| 'sm'
|
|
23
|
+
| 'md'
|
|
24
|
+
| 'lg'
|
|
25
|
+
| 'xl'
|
|
26
|
+
| '2xl'
|
|
27
|
+
| '3xl'
|
|
28
|
+
| '4xl'
|
|
29
|
+
| '5xl'
|
|
30
|
+
| '6xl'
|
|
31
|
+
| '7xl',
|
|
32
|
+
string
|
|
33
|
+
>
|
|
34
|
+
spacing: Record<
|
|
35
|
+
| '0'
|
|
36
|
+
| '1'
|
|
37
|
+
| '2'
|
|
38
|
+
| '3'
|
|
39
|
+
| '4'
|
|
40
|
+
| '5'
|
|
41
|
+
| '6'
|
|
42
|
+
| '7'
|
|
43
|
+
| '8'
|
|
44
|
+
| '9'
|
|
45
|
+
| '10'
|
|
46
|
+
| '11'
|
|
47
|
+
| '12'
|
|
48
|
+
| '14'
|
|
49
|
+
| '16'
|
|
50
|
+
| '20'
|
|
51
|
+
| '24'
|
|
52
|
+
| '28'
|
|
53
|
+
| '32'
|
|
54
|
+
| '36'
|
|
55
|
+
| '40'
|
|
56
|
+
| '44'
|
|
57
|
+
| '48'
|
|
58
|
+
| '52'
|
|
59
|
+
| '56'
|
|
60
|
+
| '60'
|
|
61
|
+
| '64'
|
|
62
|
+
| '72'
|
|
63
|
+
| '80'
|
|
64
|
+
| '96'
|
|
65
|
+
| 'px'
|
|
66
|
+
| '0.5'
|
|
67
|
+
| '1.5'
|
|
68
|
+
| '2.5'
|
|
69
|
+
| '3.5',
|
|
70
|
+
string
|
|
71
|
+
>
|
|
72
|
+
animation: Record<'none' | 'spin' | 'ping' | 'pulse' | 'bounce', string>
|
|
73
|
+
aspectRatio: Record<'auto' | 'square' | 'video', string>
|
|
74
|
+
backgroundImage: Record<
|
|
75
|
+
| 'none'
|
|
76
|
+
| 'gradient-to-t'
|
|
77
|
+
| 'gradient-to-tr'
|
|
78
|
+
| 'gradient-to-r'
|
|
79
|
+
| 'gradient-to-br'
|
|
80
|
+
| 'gradient-to-b'
|
|
81
|
+
| 'gradient-to-bl'
|
|
82
|
+
| 'gradient-to-l'
|
|
83
|
+
| 'gradient-to-tl',
|
|
84
|
+
string
|
|
85
|
+
>
|
|
86
|
+
backgroundPosition: Record<
|
|
87
|
+
| 'bottom'
|
|
88
|
+
| 'center'
|
|
89
|
+
| 'left'
|
|
90
|
+
| 'left-bottom'
|
|
91
|
+
| 'left-top'
|
|
92
|
+
| 'right'
|
|
93
|
+
| 'right-bottom'
|
|
94
|
+
| 'right-top'
|
|
95
|
+
| 'top',
|
|
96
|
+
string
|
|
97
|
+
>
|
|
98
|
+
backgroundSize: Record<'auto' | 'cover' | 'contain', string>
|
|
99
|
+
blur: Record<'0' | 'none' | 'sm' | 'DEFAULT' | 'md' | 'lg' | 'xl' | '2xl' | '3xl', string>
|
|
100
|
+
brightness: Record<
|
|
101
|
+
'0' | '50' | '75' | '90' | '95' | '100' | '105' | '110' | '125' | '150' | '200',
|
|
102
|
+
string
|
|
103
|
+
>
|
|
104
|
+
borderRadius: Record<
|
|
105
|
+
'none' | 'sm' | 'DEFAULT' | 'md' | 'lg' | 'xl' | '2xl' | '3xl' | 'full',
|
|
106
|
+
string
|
|
107
|
+
>
|
|
108
|
+
borderWidth: Record<'0' | '2' | '4' | '8' | 'DEFAULT', string>
|
|
109
|
+
boxShadow: Record<'sm' | 'DEFAULT' | 'md' | 'lg' | 'xl' | '2xl' | 'inner' | 'none', string>
|
|
110
|
+
contrast: Record<'0' | '50' | '75' | '100' | '125' | '150' | '200', string>
|
|
111
|
+
content: Record<'none', string>
|
|
112
|
+
cursor: Record<
|
|
113
|
+
| 'auto'
|
|
114
|
+
| 'default'
|
|
115
|
+
| 'pointer'
|
|
116
|
+
| 'wait'
|
|
117
|
+
| 'text'
|
|
118
|
+
| 'move'
|
|
119
|
+
| 'help'
|
|
120
|
+
| 'not-allowed'
|
|
121
|
+
| 'none'
|
|
122
|
+
| 'context-menu'
|
|
123
|
+
| 'progress'
|
|
124
|
+
| 'cell'
|
|
125
|
+
| 'crosshair'
|
|
126
|
+
| 'vertical-text'
|
|
127
|
+
| 'alias'
|
|
128
|
+
| 'copy'
|
|
129
|
+
| 'no-drop'
|
|
130
|
+
| 'grab'
|
|
131
|
+
| 'grabbing'
|
|
132
|
+
| 'all-scroll'
|
|
133
|
+
| 'col-resize'
|
|
134
|
+
| 'row-resize'
|
|
135
|
+
| 'n-resize'
|
|
136
|
+
| 'e-resize'
|
|
137
|
+
| 's-resize'
|
|
138
|
+
| 'w-resize'
|
|
139
|
+
| 'ne-resize'
|
|
140
|
+
| 'nw-resize'
|
|
141
|
+
| 'se-resize'
|
|
142
|
+
| 'sw-resize'
|
|
143
|
+
| 'ew-resize'
|
|
144
|
+
| 'ns-resize'
|
|
145
|
+
| 'nesw-resize'
|
|
146
|
+
| 'nwse-resize'
|
|
147
|
+
| 'zoom-in'
|
|
148
|
+
| 'zoom-out',
|
|
149
|
+
string
|
|
150
|
+
>
|
|
151
|
+
dropShadow: Record<'sm' | 'DEFAULT' | 'md' | 'lg' | 'xl' | '2xl' | 'none', string | string[]>
|
|
152
|
+
grayscale: Record<'0' | 'DEFAULT', string>
|
|
153
|
+
hueRotate: Record<'0' | '15' | '30' | '60' | '90' | '180', string>
|
|
154
|
+
invert: Record<'0' | 'DEFAULT', string>
|
|
155
|
+
flex: Record<'1' | 'auto' | 'initial' | 'none', string>
|
|
156
|
+
flexGrow: Record<'0' | 'DEFAULT', string>
|
|
157
|
+
flexShrink: Record<'0' | 'DEFAULT', string>
|
|
158
|
+
fontFamily: Record<'sans' | 'serif' | 'mono', string[]>
|
|
159
|
+
fontSize: Record<
|
|
160
|
+
| 'xs'
|
|
161
|
+
| 'sm'
|
|
162
|
+
| 'base'
|
|
163
|
+
| 'lg'
|
|
164
|
+
| 'xl'
|
|
165
|
+
| '2xl'
|
|
166
|
+
| '3xl'
|
|
167
|
+
| '4xl'
|
|
168
|
+
| '5xl'
|
|
169
|
+
| '6xl'
|
|
170
|
+
| '7xl'
|
|
171
|
+
| '8xl'
|
|
172
|
+
| '9xl',
|
|
173
|
+
[string, { lineHeight: string }]
|
|
174
|
+
>
|
|
175
|
+
fontWeight: Record<
|
|
176
|
+
| 'thin'
|
|
177
|
+
| 'extralight'
|
|
178
|
+
| 'light'
|
|
179
|
+
| 'normal'
|
|
180
|
+
| 'medium'
|
|
181
|
+
| 'semibold'
|
|
182
|
+
| 'bold'
|
|
183
|
+
| 'extrabold'
|
|
184
|
+
| 'black',
|
|
185
|
+
string
|
|
186
|
+
>
|
|
187
|
+
gridAutoColumns: Record<'auto' | 'min' | 'max' | 'fr', string>
|
|
188
|
+
gridAutoRows: Record<'auto' | 'min' | 'max' | 'fr', string>
|
|
189
|
+
gridColumn: Record<
|
|
190
|
+
| 'auto'
|
|
191
|
+
| 'span-1'
|
|
192
|
+
| 'span-2'
|
|
193
|
+
| 'span-3'
|
|
194
|
+
| 'span-4'
|
|
195
|
+
| 'span-5'
|
|
196
|
+
| 'span-6'
|
|
197
|
+
| 'span-7'
|
|
198
|
+
| 'span-8'
|
|
199
|
+
| 'span-9'
|
|
200
|
+
| 'span-10'
|
|
201
|
+
| 'span-11'
|
|
202
|
+
| 'span-12'
|
|
203
|
+
| 'span-full',
|
|
204
|
+
string
|
|
205
|
+
>
|
|
206
|
+
gridColumnEnd: Record<
|
|
207
|
+
'1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9' | '10' | '11' | '12' | '13' | 'auto',
|
|
208
|
+
string
|
|
209
|
+
>
|
|
210
|
+
gridColumnStart: Record<
|
|
211
|
+
'1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9' | '10' | '11' | '12' | '13' | 'auto',
|
|
212
|
+
string
|
|
213
|
+
>
|
|
214
|
+
gridRow: Record<
|
|
215
|
+
'auto' | 'span-1' | 'span-2' | 'span-3' | 'span-4' | 'span-5' | 'span-6' | 'span-full',
|
|
216
|
+
string
|
|
217
|
+
>
|
|
218
|
+
gridRowStart: Record<'1' | '2' | '3' | '4' | '5' | '6' | '7' | 'auto', string>
|
|
219
|
+
gridRowEnd: Record<'1' | '2' | '3' | '4' | '5' | '6' | '7' | 'auto', string>
|
|
220
|
+
gridTemplateColumns: Record<
|
|
221
|
+
'1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9' | '10' | '11' | '12' | 'none',
|
|
222
|
+
string
|
|
223
|
+
>
|
|
224
|
+
gridTemplateRows: Record<'1' | '2' | '3' | '4' | '5' | '6' | 'none', string>
|
|
225
|
+
keyframes: Record<'spin' | 'ping' | 'pulse' | 'bounce', Record<string, CSSDeclarationList>>
|
|
226
|
+
letterSpacing: Record<'tighter' | 'tight' | 'normal' | 'wide' | 'wider' | 'widest', string>
|
|
227
|
+
lineHeight: Record<
|
|
228
|
+
| '3'
|
|
229
|
+
| '4'
|
|
230
|
+
| '5'
|
|
231
|
+
| '6'
|
|
232
|
+
| '7'
|
|
233
|
+
| '8'
|
|
234
|
+
| '9'
|
|
235
|
+
| '10'
|
|
236
|
+
| 'none'
|
|
237
|
+
| 'tight'
|
|
238
|
+
| 'snug'
|
|
239
|
+
| 'normal'
|
|
240
|
+
| 'relaxed'
|
|
241
|
+
| 'loose',
|
|
242
|
+
string
|
|
243
|
+
>
|
|
244
|
+
listStyleType: Record<'none' | 'disc' | 'decimal', string>
|
|
245
|
+
minHeight: Record<'0' | 'full' | 'screen' | 'min' | 'max' | 'fit', string>
|
|
246
|
+
minWidth: Record<'0' | 'full' | 'min' | 'max' | 'fit', string>
|
|
247
|
+
objectPosition: Record<
|
|
248
|
+
| 'bottom'
|
|
249
|
+
| 'center'
|
|
250
|
+
| 'left'
|
|
251
|
+
| 'left-bottom'
|
|
252
|
+
| 'left-top'
|
|
253
|
+
| 'right'
|
|
254
|
+
| 'right-bottom'
|
|
255
|
+
| 'right-top'
|
|
256
|
+
| 'top',
|
|
257
|
+
string
|
|
258
|
+
>
|
|
259
|
+
opacity: Record<
|
|
260
|
+
| '0'
|
|
261
|
+
| '5'
|
|
262
|
+
| '10'
|
|
263
|
+
| '20'
|
|
264
|
+
| '25'
|
|
265
|
+
| '30'
|
|
266
|
+
| '40'
|
|
267
|
+
| '50'
|
|
268
|
+
| '60'
|
|
269
|
+
| '70'
|
|
270
|
+
| '75'
|
|
271
|
+
| '80'
|
|
272
|
+
| '90'
|
|
273
|
+
| '95'
|
|
274
|
+
| '100',
|
|
275
|
+
string
|
|
276
|
+
>
|
|
277
|
+
order: Record<
|
|
278
|
+
| '1'
|
|
279
|
+
| '2'
|
|
280
|
+
| '3'
|
|
281
|
+
| '4'
|
|
282
|
+
| '5'
|
|
283
|
+
| '6'
|
|
284
|
+
| '7'
|
|
285
|
+
| '8'
|
|
286
|
+
| '9'
|
|
287
|
+
| '10'
|
|
288
|
+
| '11'
|
|
289
|
+
| '12'
|
|
290
|
+
| 'first'
|
|
291
|
+
| 'last'
|
|
292
|
+
| 'none',
|
|
293
|
+
string
|
|
294
|
+
>
|
|
295
|
+
outlineOffset: Record<'0' | '1' | '2' | '4' | '8', string>
|
|
296
|
+
outlineWidth: Record<'0' | '1' | '2' | '4' | '8', string>
|
|
297
|
+
ringOffsetWidth: Record<'0' | '1' | '2' | '4' | '8', string>
|
|
298
|
+
ringWidth: Record<'0' | '1' | '2' | '4' | '8' | 'DEFAULT', string>
|
|
299
|
+
rotate: Record<'0' | '1' | '2' | '3' | '6' | '12' | '45' | '90' | '180', string>
|
|
300
|
+
saturate: Record<'0' | '50' | '100' | '150' | '200', string>
|
|
301
|
+
scale: Record<'0' | '50' | '75' | '90' | '95' | '100' | '105' | '110' | '125' | '150', string>
|
|
302
|
+
sepia: Record<'0' | 'DEFAULT', string>
|
|
303
|
+
skew: Record<'0' | '1' | '2' | '3' | '6' | '12', string>
|
|
304
|
+
strokeWidth: Record<'0' | '1' | '2', string>
|
|
305
|
+
textDecorationThickness: Record<'0' | '1' | '2' | '4' | '8' | 'auto' | 'from-font', string>
|
|
306
|
+
textUnderlineOffset: Record<'0' | '1' | '2' | '4' | '8' | 'auto', string>
|
|
307
|
+
transformOrigin: Record<
|
|
308
|
+
| 'center'
|
|
309
|
+
| 'top'
|
|
310
|
+
| 'top-right'
|
|
311
|
+
| 'right'
|
|
312
|
+
| 'bottom-right'
|
|
313
|
+
| 'bottom'
|
|
314
|
+
| 'bottom-left'
|
|
315
|
+
| 'left'
|
|
316
|
+
| 'top-left',
|
|
317
|
+
string
|
|
318
|
+
>
|
|
319
|
+
transitionDelay: Record<'75' | '100' | '150' | '200' | '300' | '500' | '700' | '1000', string>
|
|
320
|
+
transitionDuration: Record<
|
|
321
|
+
'75' | '100' | '150' | '200' | '300' | '500' | '700' | '1000' | 'DEFAULT',
|
|
322
|
+
string
|
|
323
|
+
>
|
|
324
|
+
transitionProperty: Record<
|
|
325
|
+
'none' | 'all' | 'DEFAULT' | 'colors' | 'opacity' | 'shadow' | 'transform',
|
|
326
|
+
string
|
|
327
|
+
>
|
|
328
|
+
transitionTimingFunction: Record<'DEFAULT' | 'linear' | 'in' | 'out' | 'in-out', string>
|
|
329
|
+
willChange: Record<'auto' | 'scroll' | 'contents' | 'transform', string>
|
|
330
|
+
zIndex: Record<'0' | '10' | '20' | '30' | '40' | '50' | 'auto', string>
|
|
331
|
+
}
|