tailwindcss 0.0.0-insiders.d2bb6f1 → 0.0.0-insiders.d2fdddf

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