tailwindcss 3.4.1 → 4.0.0-alpha.2
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/README.md +5 -6
- package/dist/lib.d.mts +324 -0
- package/dist/lib.d.ts +324 -0
- package/dist/lib.js +11 -0
- package/dist/lib.mjs +11 -0
- package/index.css +5 -0
- package/package.json +29 -107
- package/preflight.css +355 -0
- package/theme.css +465 -0
- package/CHANGELOG.md +0 -2571
- package/base.css +0 -1
- package/colors.d.ts +0 -3
- package/colors.js +0 -2
- package/components.css +0 -1
- package/defaultConfig.d.ts +0 -3
- package/defaultConfig.js +0 -2
- package/defaultTheme.d.ts +0 -4
- package/defaultTheme.js +0 -2
- package/lib/cli/build/deps.js +0 -62
- package/lib/cli/build/index.js +0 -54
- package/lib/cli/build/plugin.js +0 -378
- package/lib/cli/build/utils.js +0 -88
- package/lib/cli/build/watching.js +0 -182
- package/lib/cli/help/index.js +0 -73
- package/lib/cli/index.js +0 -230
- package/lib/cli/init/index.js +0 -63
- package/lib/cli-peer-dependencies.js +0 -36
- package/lib/cli.js +0 -7
- package/lib/corePluginList.js +0 -190
- package/lib/corePlugins.js +0 -4282
- package/lib/css/LICENSE +0 -25
- package/lib/css/preflight.css +0 -385
- package/lib/featureFlags.js +0 -83
- package/lib/index.js +0 -2
- package/lib/lib/cacheInvalidation.js +0 -92
- package/lib/lib/collapseAdjacentRules.js +0 -61
- package/lib/lib/collapseDuplicateDeclarations.js +0 -85
- package/lib/lib/content.js +0 -181
- package/lib/lib/defaultExtractor.js +0 -251
- package/lib/lib/detectNesting.js +0 -45
- package/lib/lib/evaluateTailwindFunctions.js +0 -238
- package/lib/lib/expandApplyAtRules.js +0 -540
- package/lib/lib/expandTailwindAtRules.js +0 -291
- package/lib/lib/findAtConfigPath.js +0 -46
- package/lib/lib/generateRules.js +0 -904
- package/lib/lib/getModuleDependencies.js +0 -99
- package/lib/lib/load-config.js +0 -53
- package/lib/lib/normalizeTailwindDirectives.js +0 -89
- package/lib/lib/offsets.js +0 -306
- package/lib/lib/partitionApplyAtRules.js +0 -58
- package/lib/lib/regex.js +0 -74
- package/lib/lib/remap-bitfield.js +0 -89
- package/lib/lib/resolveDefaultsAtRules.js +0 -165
- package/lib/lib/setupContextUtils.js +0 -1294
- package/lib/lib/setupTrackingContext.js +0 -166
- package/lib/lib/sharedState.js +0 -87
- package/lib/lib/substituteScreenAtRules.js +0 -31
- package/lib/oxide/cli/build/deps.js +0 -89
- package/lib/oxide/cli/build/index.js +0 -53
- package/lib/oxide/cli/build/plugin.js +0 -375
- package/lib/oxide/cli/build/utils.js +0 -87
- package/lib/oxide/cli/build/watching.js +0 -179
- package/lib/oxide/cli/help/index.js +0 -72
- package/lib/oxide/cli/index.js +0 -214
- package/lib/oxide/cli/init/index.js +0 -52
- package/lib/oxide/cli.js +0 -5
- package/lib/oxide/postcss-plugin.js +0 -2
- package/lib/plugin.js +0 -98
- package/lib/postcss-plugins/nesting/README.md +0 -42
- package/lib/postcss-plugins/nesting/index.js +0 -21
- package/lib/postcss-plugins/nesting/plugin.js +0 -89
- package/lib/processTailwindFeatures.js +0 -64
- package/lib/public/colors.js +0 -355
- package/lib/public/create-plugin.js +0 -17
- package/lib/public/default-config.js +0 -18
- package/lib/public/default-theme.js +0 -18
- package/lib/public/load-config.js +0 -12
- package/lib/public/resolve-config.js +0 -24
- package/lib/util/applyImportantSelector.js +0 -36
- package/lib/util/bigSign.js +0 -13
- package/lib/util/buildMediaQuery.js +0 -27
- package/lib/util/cloneDeep.js +0 -22
- package/lib/util/cloneNodes.js +0 -54
- package/lib/util/color.js +0 -116
- package/lib/util/colorNames.js +0 -752
- package/lib/util/configurePlugins.js +0 -23
- package/lib/util/createPlugin.js +0 -32
- package/lib/util/createUtilityPlugin.js +0 -53
- package/lib/util/dataTypes.js +0 -415
- package/lib/util/defaults.js +0 -27
- package/lib/util/escapeClassName.js +0 -24
- package/lib/util/escapeCommas.js +0 -13
- package/lib/util/flattenColorPalette.js +0 -18
- package/lib/util/formatVariantSelector.js +0 -270
- package/lib/util/getAllConfigs.js +0 -50
- package/lib/util/hashConfig.js +0 -21
- package/lib/util/isKeyframeRule.js +0 -13
- package/lib/util/isPlainObject.js +0 -17
- package/lib/util/isSyntacticallyValidPropertyValue.js +0 -74
- package/lib/util/log.js +0 -61
- package/lib/util/nameClass.js +0 -49
- package/lib/util/negateValue.js +0 -36
- package/lib/util/normalizeConfig.js +0 -282
- package/lib/util/normalizeScreens.js +0 -178
- package/lib/util/parseAnimationValue.js +0 -93
- package/lib/util/parseBoxShadowValue.js +0 -88
- package/lib/util/parseDependency.js +0 -47
- package/lib/util/parseGlob.js +0 -36
- package/lib/util/parseObjectStyles.js +0 -36
- package/lib/util/pluginUtils.js +0 -289
- package/lib/util/prefixSelector.js +0 -39
- package/lib/util/pseudoElements.js +0 -212
- package/lib/util/removeAlphaVariables.js +0 -31
- package/lib/util/resolveConfig.js +0 -256
- package/lib/util/resolveConfigPath.js +0 -70
- package/lib/util/responsive.js +0 -24
- package/lib/util/splitAtTopLevelOnly.js +0 -51
- package/lib/util/tap.js +0 -14
- package/lib/util/toColorValue.js +0 -13
- package/lib/util/toPath.js +0 -32
- package/lib/util/transformThemeValue.js +0 -73
- package/lib/util/validateConfig.js +0 -37
- package/lib/util/validateFormalSyntax.js +0 -26
- package/lib/util/withAlphaVariable.js +0 -79
- package/lib/value-parser/LICENSE +0 -22
- package/lib/value-parser/README.md +0 -3
- package/lib/value-parser/index.d.js +0 -2
- package/lib/value-parser/index.js +0 -22
- package/lib/value-parser/parse.js +0 -259
- package/lib/value-parser/stringify.js +0 -38
- package/lib/value-parser/unit.js +0 -86
- package/lib/value-parser/walk.js +0 -16
- package/loadConfig.d.ts +0 -4
- package/loadConfig.js +0 -2
- package/nesting/index.d.ts +0 -4
- package/nesting/index.js +0 -2
- package/peers/index.js +0 -96624
- package/plugin.d.ts +0 -11
- package/plugin.js +0 -2
- package/prettier.config.js +0 -19
- package/resolveConfig.d.ts +0 -31
- package/resolveConfig.js +0 -2
- package/screens.css +0 -1
- package/scripts/create-plugin-list.js +0 -10
- package/scripts/generate-types.js +0 -104
- package/scripts/release-channel.js +0 -18
- package/scripts/release-notes.js +0 -21
- package/scripts/swap-engines.js +0 -40
- package/scripts/type-utils.js +0 -27
- package/src/cli/build/deps.js +0 -56
- package/src/cli/build/index.js +0 -49
- package/src/cli/build/plugin.js +0 -444
- package/src/cli/build/utils.js +0 -76
- package/src/cli/build/watching.js +0 -229
- package/src/cli/help/index.js +0 -70
- package/src/cli/index.js +0 -216
- package/src/cli/init/index.js +0 -79
- package/src/cli-peer-dependencies.js +0 -15
- package/src/cli.js +0 -7
- package/src/corePluginList.js +0 -1
- package/src/corePlugins.js +0 -2943
- package/src/css/LICENSE +0 -25
- package/src/css/preflight.css +0 -385
- package/src/featureFlags.js +0 -66
- package/src/index.js +0 -1
- package/src/lib/cacheInvalidation.js +0 -52
- package/src/lib/collapseAdjacentRules.js +0 -58
- package/src/lib/collapseDuplicateDeclarations.js +0 -93
- package/src/lib/content.js +0 -208
- package/src/lib/defaultExtractor.js +0 -230
- package/src/lib/detectNesting.js +0 -47
- package/src/lib/evaluateTailwindFunctions.js +0 -272
- package/src/lib/expandApplyAtRules.js +0 -620
- package/src/lib/expandTailwindAtRules.js +0 -300
- package/src/lib/findAtConfigPath.js +0 -48
- package/src/lib/generateRules.js +0 -951
- package/src/lib/getModuleDependencies.js +0 -79
- package/src/lib/load-config.ts +0 -39
- package/src/lib/normalizeTailwindDirectives.js +0 -84
- package/src/lib/offsets.js +0 -373
- package/src/lib/partitionApplyAtRules.js +0 -52
- package/src/lib/regex.js +0 -74
- package/src/lib/remap-bitfield.js +0 -82
- package/src/lib/resolveDefaultsAtRules.js +0 -163
- package/src/lib/setupContextUtils.js +0 -1366
- package/src/lib/setupTrackingContext.js +0 -169
- package/src/lib/sharedState.js +0 -61
- package/src/lib/substituteScreenAtRules.js +0 -19
- package/src/oxide/cli/build/deps.ts +0 -91
- package/src/oxide/cli/build/index.ts +0 -47
- package/src/oxide/cli/build/plugin.ts +0 -442
- package/src/oxide/cli/build/utils.ts +0 -74
- package/src/oxide/cli/build/watching.ts +0 -225
- package/src/oxide/cli/help/index.ts +0 -69
- package/src/oxide/cli/index.ts +0 -204
- package/src/oxide/cli/init/index.ts +0 -59
- package/src/oxide/cli.ts +0 -1
- package/src/oxide/postcss-plugin.ts +0 -1
- package/src/plugin.js +0 -107
- package/src/postcss-plugins/nesting/README.md +0 -42
- package/src/postcss-plugins/nesting/index.js +0 -13
- package/src/postcss-plugins/nesting/plugin.js +0 -80
- package/src/processTailwindFeatures.js +0 -59
- package/src/public/colors.js +0 -322
- package/src/public/create-plugin.js +0 -2
- package/src/public/default-config.js +0 -4
- package/src/public/default-theme.js +0 -4
- package/src/public/load-config.js +0 -2
- package/src/public/resolve-config.js +0 -7
- package/src/util/applyImportantSelector.js +0 -27
- package/src/util/bigSign.js +0 -3
- package/src/util/buildMediaQuery.js +0 -22
- package/src/util/cloneDeep.js +0 -11
- package/src/util/cloneNodes.js +0 -49
- package/src/util/color.js +0 -88
- package/src/util/colorNames.js +0 -150
- package/src/util/configurePlugins.js +0 -23
- package/src/util/createPlugin.js +0 -27
- package/src/util/createUtilityPlugin.js +0 -37
- package/src/util/dataTypes.js +0 -406
- package/src/util/defaults.js +0 -17
- package/src/util/escapeClassName.js +0 -8
- package/src/util/escapeCommas.js +0 -3
- package/src/util/flattenColorPalette.js +0 -13
- package/src/util/formatVariantSelector.js +0 -324
- package/src/util/getAllConfigs.js +0 -38
- package/src/util/hashConfig.js +0 -5
- package/src/util/isKeyframeRule.js +0 -3
- package/src/util/isPlainObject.js +0 -8
- package/src/util/isSyntacticallyValidPropertyValue.js +0 -61
- package/src/util/log.js +0 -29
- package/src/util/nameClass.js +0 -30
- package/src/util/negateValue.js +0 -24
- package/src/util/normalizeConfig.js +0 -301
- package/src/util/normalizeScreens.js +0 -140
- package/src/util/parseAnimationValue.js +0 -68
- package/src/util/parseBoxShadowValue.js +0 -72
- package/src/util/parseDependency.js +0 -44
- package/src/util/parseGlob.js +0 -24
- package/src/util/parseObjectStyles.js +0 -19
- package/src/util/pluginUtils.js +0 -307
- package/src/util/prefixSelector.js +0 -33
- package/src/util/pseudoElements.js +0 -171
- package/src/util/removeAlphaVariables.js +0 -24
- package/src/util/resolveConfig.js +0 -277
- package/src/util/resolveConfigPath.js +0 -66
- package/src/util/responsive.js +0 -10
- package/src/util/splitAtTopLevelOnly.js +0 -52
- package/src/util/tap.js +0 -4
- package/src/util/toColorValue.js +0 -3
- package/src/util/toPath.js +0 -26
- package/src/util/transformThemeValue.js +0 -62
- package/src/util/validateConfig.js +0 -26
- package/src/util/validateFormalSyntax.js +0 -34
- package/src/util/withAlphaVariable.js +0 -49
- package/src/value-parser/LICENSE +0 -22
- package/src/value-parser/README.md +0 -3
- package/src/value-parser/index.d.ts +0 -177
- package/src/value-parser/index.js +0 -28
- package/src/value-parser/parse.js +0 -303
- package/src/value-parser/stringify.js +0 -41
- package/src/value-parser/unit.js +0 -118
- package/src/value-parser/walk.js +0 -18
- package/stubs/.gitignore +0 -1
- package/stubs/.prettierrc.json +0 -6
- package/stubs/config.full.js +0 -1062
- package/stubs/config.simple.js +0 -7
- package/stubs/postcss.config.cjs +0 -6
- package/stubs/postcss.config.js +0 -6
- package/stubs/tailwind.config.cjs +0 -2
- package/stubs/tailwind.config.js +0 -2
- package/stubs/tailwind.config.ts +0 -3
- package/tailwind.css +0 -5
- package/types/config.d.ts +0 -376
- package/types/generated/.gitkeep +0 -0
- package/types/generated/colors.d.ts +0 -298
- package/types/generated/corePluginList.d.ts +0 -1
- package/types/generated/default-theme.d.ts +0 -397
- package/types/index.d.ts +0 -11
- package/variants.css +0 -1
package/src/util/dataTypes.js
DELETED
@@ -1,406 +0,0 @@
|
|
1
|
-
import { parseColor } from './color'
|
2
|
-
import { parseBoxShadowValue } from './parseBoxShadowValue'
|
3
|
-
import { splitAtTopLevelOnly } from './splitAtTopLevelOnly'
|
4
|
-
|
5
|
-
let cssFunctions = ['min', 'max', 'clamp', 'calc']
|
6
|
-
|
7
|
-
// Ref: https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Types
|
8
|
-
|
9
|
-
function isCSSFunction(value) {
|
10
|
-
return cssFunctions.some((fn) => new RegExp(`^${fn}\\(.*\\)`).test(value))
|
11
|
-
}
|
12
|
-
|
13
|
-
// These properties accept a `<dashed-ident>` as one of the values. This means that you can use them
|
14
|
-
// as: `timeline-scope: --tl;`
|
15
|
-
//
|
16
|
-
// Without the `var(--tl)`, in these cases we don't want to normalize the value, and you should add
|
17
|
-
// the `var()` yourself.
|
18
|
-
//
|
19
|
-
// More info:
|
20
|
-
// - https://drafts.csswg.org/scroll-animations/#propdef-timeline-scope
|
21
|
-
// - https://developer.mozilla.org/en-US/docs/Web/CSS/timeline-scope#dashed-ident
|
22
|
-
//
|
23
|
-
const AUTO_VAR_INJECTION_EXCEPTIONS = new Set([
|
24
|
-
// Concrete properties
|
25
|
-
'scroll-timeline-name',
|
26
|
-
'timeline-scope',
|
27
|
-
'view-timeline-name',
|
28
|
-
'font-palette',
|
29
|
-
|
30
|
-
// Shorthand properties
|
31
|
-
'scroll-timeline',
|
32
|
-
'animation-timeline',
|
33
|
-
'view-timeline',
|
34
|
-
])
|
35
|
-
|
36
|
-
// This is not a data type, but rather a function that can normalize the
|
37
|
-
// correct values.
|
38
|
-
export function normalize(value, context = null, isRoot = true) {
|
39
|
-
let isVarException = context && AUTO_VAR_INJECTION_EXCEPTIONS.has(context.property)
|
40
|
-
if (value.startsWith('--') && !isVarException) {
|
41
|
-
return `var(${value})`
|
42
|
-
}
|
43
|
-
|
44
|
-
// Keep raw strings if it starts with `url(`
|
45
|
-
if (value.includes('url(')) {
|
46
|
-
return value
|
47
|
-
.split(/(url\(.*?\))/g)
|
48
|
-
.filter(Boolean)
|
49
|
-
.map((part) => {
|
50
|
-
if (/^url\(.*?\)$/.test(part)) {
|
51
|
-
return part
|
52
|
-
}
|
53
|
-
|
54
|
-
return normalize(part, context, false)
|
55
|
-
})
|
56
|
-
.join('')
|
57
|
-
}
|
58
|
-
|
59
|
-
// Convert `_` to ` `, except for escaped underscores `\_`
|
60
|
-
value = value
|
61
|
-
.replace(
|
62
|
-
/([^\\])_+/g,
|
63
|
-
(fullMatch, characterBefore) => characterBefore + ' '.repeat(fullMatch.length - 1)
|
64
|
-
)
|
65
|
-
.replace(/^_/g, ' ')
|
66
|
-
.replace(/\\_/g, '_')
|
67
|
-
|
68
|
-
// Remove leftover whitespace
|
69
|
-
if (isRoot) {
|
70
|
-
value = value.trim()
|
71
|
-
}
|
72
|
-
|
73
|
-
value = normalizeMathOperatorSpacing(value)
|
74
|
-
|
75
|
-
return value
|
76
|
-
}
|
77
|
-
|
78
|
-
/**
|
79
|
-
* Add spaces around operators inside math functions
|
80
|
-
* like calc() that do not follow an operator, '(', or `,`.
|
81
|
-
*
|
82
|
-
* @param {string} value
|
83
|
-
* @returns {string}
|
84
|
-
*/
|
85
|
-
function normalizeMathOperatorSpacing(value) {
|
86
|
-
let preventFormattingInFunctions = ['theme']
|
87
|
-
let preventFormattingKeywords = [
|
88
|
-
'min-content',
|
89
|
-
'max-content',
|
90
|
-
'fit-content',
|
91
|
-
|
92
|
-
// Env
|
93
|
-
'safe-area-inset-top',
|
94
|
-
'safe-area-inset-right',
|
95
|
-
'safe-area-inset-bottom',
|
96
|
-
'safe-area-inset-left',
|
97
|
-
|
98
|
-
'titlebar-area-x',
|
99
|
-
'titlebar-area-y',
|
100
|
-
'titlebar-area-width',
|
101
|
-
'titlebar-area-height',
|
102
|
-
|
103
|
-
'keyboard-inset-top',
|
104
|
-
'keyboard-inset-right',
|
105
|
-
'keyboard-inset-bottom',
|
106
|
-
'keyboard-inset-left',
|
107
|
-
'keyboard-inset-width',
|
108
|
-
'keyboard-inset-height',
|
109
|
-
|
110
|
-
'radial-gradient',
|
111
|
-
'linear-gradient',
|
112
|
-
'conic-gradient',
|
113
|
-
'repeating-radial-gradient',
|
114
|
-
'repeating-linear-gradient',
|
115
|
-
'repeating-conic-gradient',
|
116
|
-
]
|
117
|
-
|
118
|
-
return value.replace(/(calc|min|max|clamp)\(.+\)/g, (match) => {
|
119
|
-
let result = ''
|
120
|
-
|
121
|
-
function lastChar() {
|
122
|
-
let char = result.trimEnd()
|
123
|
-
return char[char.length - 1]
|
124
|
-
}
|
125
|
-
|
126
|
-
for (let i = 0; i < match.length; i++) {
|
127
|
-
function peek(word) {
|
128
|
-
return word.split('').every((char, j) => match[i + j] === char)
|
129
|
-
}
|
130
|
-
|
131
|
-
function consumeUntil(chars) {
|
132
|
-
let minIndex = Infinity
|
133
|
-
for (let char of chars) {
|
134
|
-
let index = match.indexOf(char, i)
|
135
|
-
if (index !== -1 && index < minIndex) {
|
136
|
-
minIndex = index
|
137
|
-
}
|
138
|
-
}
|
139
|
-
|
140
|
-
let result = match.slice(i, minIndex)
|
141
|
-
i += result.length - 1
|
142
|
-
return result
|
143
|
-
}
|
144
|
-
|
145
|
-
let char = match[i]
|
146
|
-
|
147
|
-
// Handle `var(--variable)`
|
148
|
-
if (peek('var')) {
|
149
|
-
// When we consume until `)`, then we are dealing with this scenario:
|
150
|
-
// `var(--example)`
|
151
|
-
//
|
152
|
-
// When we consume until `,`, then we are dealing with this scenario:
|
153
|
-
// `var(--example, 1rem)`
|
154
|
-
//
|
155
|
-
// In this case we do want to "format", the default value as well
|
156
|
-
result += consumeUntil([')', ','])
|
157
|
-
}
|
158
|
-
|
159
|
-
// Skip formatting of known keywords
|
160
|
-
else if (preventFormattingKeywords.some((keyword) => peek(keyword))) {
|
161
|
-
let keyword = preventFormattingKeywords.find((keyword) => peek(keyword))
|
162
|
-
result += keyword
|
163
|
-
i += keyword.length - 1
|
164
|
-
}
|
165
|
-
|
166
|
-
// Skip formatting inside known functions
|
167
|
-
else if (preventFormattingInFunctions.some((fn) => peek(fn))) {
|
168
|
-
result += consumeUntil([')'])
|
169
|
-
}
|
170
|
-
|
171
|
-
// Don't break CSS grid track names
|
172
|
-
else if (peek('[')) {
|
173
|
-
result += consumeUntil([']'])
|
174
|
-
}
|
175
|
-
|
176
|
-
// Handle operators
|
177
|
-
else if (
|
178
|
-
['+', '-', '*', '/'].includes(char) &&
|
179
|
-
!['(', '+', '-', '*', '/', ','].includes(lastChar())
|
180
|
-
) {
|
181
|
-
result += ` ${char} `
|
182
|
-
} else {
|
183
|
-
result += char
|
184
|
-
}
|
185
|
-
}
|
186
|
-
|
187
|
-
// Simplify multiple spaces
|
188
|
-
return result.replace(/\s+/g, ' ')
|
189
|
-
})
|
190
|
-
}
|
191
|
-
|
192
|
-
export function url(value) {
|
193
|
-
return value.startsWith('url(')
|
194
|
-
}
|
195
|
-
|
196
|
-
export function number(value) {
|
197
|
-
return !isNaN(Number(value)) || isCSSFunction(value)
|
198
|
-
}
|
199
|
-
|
200
|
-
export function percentage(value) {
|
201
|
-
return (value.endsWith('%') && number(value.slice(0, -1))) || isCSSFunction(value)
|
202
|
-
}
|
203
|
-
|
204
|
-
// Please refer to MDN when updating this list:
|
205
|
-
// https://developer.mozilla.org/en-US/docs/Learn/CSS/Building_blocks/Values_and_units
|
206
|
-
// https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Container_Queries#container_query_length_units
|
207
|
-
let lengthUnits = [
|
208
|
-
'cm',
|
209
|
-
'mm',
|
210
|
-
'Q',
|
211
|
-
'in',
|
212
|
-
'pc',
|
213
|
-
'pt',
|
214
|
-
'px',
|
215
|
-
'em',
|
216
|
-
'ex',
|
217
|
-
'ch',
|
218
|
-
'rem',
|
219
|
-
'lh',
|
220
|
-
'rlh',
|
221
|
-
'vw',
|
222
|
-
'vh',
|
223
|
-
'vmin',
|
224
|
-
'vmax',
|
225
|
-
'vb',
|
226
|
-
'vi',
|
227
|
-
'svw',
|
228
|
-
'svh',
|
229
|
-
'lvw',
|
230
|
-
'lvh',
|
231
|
-
'dvw',
|
232
|
-
'dvh',
|
233
|
-
'cqw',
|
234
|
-
'cqh',
|
235
|
-
'cqi',
|
236
|
-
'cqb',
|
237
|
-
'cqmin',
|
238
|
-
'cqmax',
|
239
|
-
]
|
240
|
-
let lengthUnitsPattern = `(?:${lengthUnits.join('|')})`
|
241
|
-
export function length(value) {
|
242
|
-
return (
|
243
|
-
value === '0' ||
|
244
|
-
new RegExp(`^[+-]?[0-9]*\.?[0-9]+(?:[eE][+-]?[0-9]+)?${lengthUnitsPattern}$`).test(value) ||
|
245
|
-
isCSSFunction(value)
|
246
|
-
)
|
247
|
-
}
|
248
|
-
|
249
|
-
let lineWidths = new Set(['thin', 'medium', 'thick'])
|
250
|
-
export function lineWidth(value) {
|
251
|
-
return lineWidths.has(value)
|
252
|
-
}
|
253
|
-
|
254
|
-
export function shadow(value) {
|
255
|
-
let parsedShadows = parseBoxShadowValue(normalize(value))
|
256
|
-
|
257
|
-
for (let parsedShadow of parsedShadows) {
|
258
|
-
if (!parsedShadow.valid) {
|
259
|
-
return false
|
260
|
-
}
|
261
|
-
}
|
262
|
-
|
263
|
-
return true
|
264
|
-
}
|
265
|
-
|
266
|
-
export function color(value) {
|
267
|
-
let colors = 0
|
268
|
-
|
269
|
-
let result = splitAtTopLevelOnly(value, '_').every((part) => {
|
270
|
-
part = normalize(part)
|
271
|
-
|
272
|
-
if (part.startsWith('var(')) return true
|
273
|
-
if (parseColor(part, { loose: true }) !== null) return colors++, true
|
274
|
-
|
275
|
-
return false
|
276
|
-
})
|
277
|
-
|
278
|
-
if (!result) return false
|
279
|
-
return colors > 0
|
280
|
-
}
|
281
|
-
|
282
|
-
export function image(value) {
|
283
|
-
let images = 0
|
284
|
-
let result = splitAtTopLevelOnly(value, ',').every((part) => {
|
285
|
-
part = normalize(part)
|
286
|
-
|
287
|
-
if (part.startsWith('var(')) return true
|
288
|
-
if (
|
289
|
-
url(part) ||
|
290
|
-
gradient(part) ||
|
291
|
-
['element(', 'image(', 'cross-fade(', 'image-set('].some((fn) => part.startsWith(fn))
|
292
|
-
) {
|
293
|
-
images++
|
294
|
-
return true
|
295
|
-
}
|
296
|
-
|
297
|
-
return false
|
298
|
-
})
|
299
|
-
|
300
|
-
if (!result) return false
|
301
|
-
return images > 0
|
302
|
-
}
|
303
|
-
|
304
|
-
let gradientTypes = new Set([
|
305
|
-
'conic-gradient',
|
306
|
-
'linear-gradient',
|
307
|
-
'radial-gradient',
|
308
|
-
'repeating-conic-gradient',
|
309
|
-
'repeating-linear-gradient',
|
310
|
-
'repeating-radial-gradient',
|
311
|
-
])
|
312
|
-
export function gradient(value) {
|
313
|
-
value = normalize(value)
|
314
|
-
|
315
|
-
for (let type of gradientTypes) {
|
316
|
-
if (value.startsWith(`${type}(`)) {
|
317
|
-
return true
|
318
|
-
}
|
319
|
-
}
|
320
|
-
return false
|
321
|
-
}
|
322
|
-
|
323
|
-
let validPositions = new Set(['center', 'top', 'right', 'bottom', 'left'])
|
324
|
-
export function position(value) {
|
325
|
-
let positions = 0
|
326
|
-
let result = splitAtTopLevelOnly(value, '_').every((part) => {
|
327
|
-
part = normalize(part)
|
328
|
-
|
329
|
-
if (part.startsWith('var(')) return true
|
330
|
-
if (validPositions.has(part) || length(part) || percentage(part)) {
|
331
|
-
positions++
|
332
|
-
return true
|
333
|
-
}
|
334
|
-
|
335
|
-
return false
|
336
|
-
})
|
337
|
-
|
338
|
-
if (!result) return false
|
339
|
-
return positions > 0
|
340
|
-
}
|
341
|
-
|
342
|
-
export function familyName(value) {
|
343
|
-
let fonts = 0
|
344
|
-
let result = splitAtTopLevelOnly(value, ',').every((part) => {
|
345
|
-
part = normalize(part)
|
346
|
-
|
347
|
-
if (part.startsWith('var(')) return true
|
348
|
-
|
349
|
-
// If it contains spaces, then it should be quoted
|
350
|
-
if (part.includes(' ')) {
|
351
|
-
if (!/(['"])([^"']+)\1/g.test(part)) {
|
352
|
-
return false
|
353
|
-
}
|
354
|
-
}
|
355
|
-
|
356
|
-
// If it starts with a number, it's invalid
|
357
|
-
if (/^\d/g.test(part)) {
|
358
|
-
return false
|
359
|
-
}
|
360
|
-
|
361
|
-
fonts++
|
362
|
-
|
363
|
-
return true
|
364
|
-
})
|
365
|
-
|
366
|
-
if (!result) return false
|
367
|
-
return fonts > 0
|
368
|
-
}
|
369
|
-
|
370
|
-
let genericNames = new Set([
|
371
|
-
'serif',
|
372
|
-
'sans-serif',
|
373
|
-
'monospace',
|
374
|
-
'cursive',
|
375
|
-
'fantasy',
|
376
|
-
'system-ui',
|
377
|
-
'ui-serif',
|
378
|
-
'ui-sans-serif',
|
379
|
-
'ui-monospace',
|
380
|
-
'ui-rounded',
|
381
|
-
'math',
|
382
|
-
'emoji',
|
383
|
-
'fangsong',
|
384
|
-
])
|
385
|
-
export function genericName(value) {
|
386
|
-
return genericNames.has(value)
|
387
|
-
}
|
388
|
-
|
389
|
-
let absoluteSizes = new Set([
|
390
|
-
'xx-small',
|
391
|
-
'x-small',
|
392
|
-
'small',
|
393
|
-
'medium',
|
394
|
-
'large',
|
395
|
-
'x-large',
|
396
|
-
'x-large',
|
397
|
-
'xxx-large',
|
398
|
-
])
|
399
|
-
export function absoluteSize(value) {
|
400
|
-
return absoluteSizes.has(value)
|
401
|
-
}
|
402
|
-
|
403
|
-
let relativeSizes = new Set(['larger', 'smaller'])
|
404
|
-
export function relativeSize(value) {
|
405
|
-
return relativeSizes.has(value)
|
406
|
-
}
|
package/src/util/defaults.js
DELETED
@@ -1,17 +0,0 @@
|
|
1
|
-
export function defaults(target, ...sources) {
|
2
|
-
for (let source of sources) {
|
3
|
-
for (let k in source) {
|
4
|
-
if (!target?.hasOwnProperty?.(k)) {
|
5
|
-
target[k] = source[k]
|
6
|
-
}
|
7
|
-
}
|
8
|
-
|
9
|
-
for (let k of Object.getOwnPropertySymbols(source)) {
|
10
|
-
if (!target?.hasOwnProperty?.(k)) {
|
11
|
-
target[k] = source[k]
|
12
|
-
}
|
13
|
-
}
|
14
|
-
}
|
15
|
-
|
16
|
-
return target
|
17
|
-
}
|
package/src/util/escapeCommas.js
DELETED
@@ -1,13 +0,0 @@
|
|
1
|
-
const flattenColorPalette = (colors) =>
|
2
|
-
Object.assign(
|
3
|
-
{},
|
4
|
-
...Object.entries(colors ?? {}).flatMap(([color, values]) =>
|
5
|
-
typeof values == 'object'
|
6
|
-
? Object.entries(flattenColorPalette(values)).map(([number, hex]) => ({
|
7
|
-
[color + (number === 'DEFAULT' ? '' : `-${number}`)]: hex,
|
8
|
-
}))
|
9
|
-
: [{ [`${color}`]: values }]
|
10
|
-
)
|
11
|
-
)
|
12
|
-
|
13
|
-
export default flattenColorPalette
|