tailwindcss 0.0.0-insiders.ea10bb9 → 0.0.0-insiders.ea4e1cd

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 (184) hide show
  1. package/README.md +1 -1
  2. package/lib/cli/build/deps.js +17 -9
  3. package/lib/cli/build/index.js +20 -10
  4. package/lib/cli/build/plugin.js +86 -70
  5. package/lib/cli/build/utils.js +18 -8
  6. package/lib/cli/build/watching.js +16 -12
  7. package/lib/cli/help/index.js +6 -4
  8. package/lib/cli/index.js +222 -10
  9. package/lib/cli/init/index.js +29 -12
  10. package/lib/cli-peer-dependencies.js +12 -4
  11. package/lib/cli.js +4 -226
  12. package/lib/corePluginList.js +7 -1
  13. package/lib/corePlugins.js +348 -75
  14. package/lib/css/preflight.css +2 -0
  15. package/lib/featureFlags.js +27 -15
  16. package/lib/index.js +1 -47
  17. package/lib/lib/cacheInvalidation.js +7 -5
  18. package/lib/lib/collapseAdjacentRules.js +5 -3
  19. package/lib/lib/collapseDuplicateDeclarations.js +12 -10
  20. package/lib/lib/content.js +34 -30
  21. package/lib/lib/defaultExtractor.js +15 -8
  22. package/lib/lib/detectNesting.js +10 -2
  23. package/lib/lib/evaluateTailwindFunctions.js +22 -20
  24. package/lib/lib/expandApplyAtRules.js +43 -35
  25. package/lib/lib/expandTailwindAtRules.js +46 -19
  26. package/lib/lib/findAtConfigPath.js +9 -7
  27. package/lib/lib/generateRules.js +157 -92
  28. package/lib/lib/getModuleDependencies.js +85 -37
  29. package/lib/lib/load-config.js +42 -0
  30. package/lib/lib/normalizeTailwindDirectives.js +5 -3
  31. package/lib/lib/offsets.js +93 -4
  32. package/lib/lib/partitionApplyAtRules.js +3 -1
  33. package/lib/lib/regex.js +21 -7
  34. package/lib/lib/remap-bitfield.js +89 -0
  35. package/lib/lib/resolveDefaultsAtRules.js +28 -24
  36. package/lib/lib/setupContextUtils.js +190 -131
  37. package/lib/lib/setupTrackingContext.js +49 -26
  38. package/lib/lib/sharedState.js +37 -10
  39. package/lib/lib/substituteScreenAtRules.js +5 -3
  40. package/lib/oxide/cli/build/deps.js +89 -0
  41. package/lib/oxide/cli/build/index.js +53 -0
  42. package/lib/oxide/cli/build/plugin.js +375 -0
  43. package/lib/oxide/cli/build/utils.js +87 -0
  44. package/lib/oxide/cli/build/watching.js +179 -0
  45. package/lib/oxide/cli/help/index.js +72 -0
  46. package/lib/oxide/cli/index.js +214 -0
  47. package/lib/oxide/cli/init/index.js +52 -0
  48. package/lib/oxide/cli.js +5 -0
  49. package/lib/oxide/postcss-plugin.js +2 -0
  50. package/lib/plugin.js +98 -0
  51. package/lib/postcss-plugins/nesting/index.js +3 -1
  52. package/lib/postcss-plugins/nesting/plugin.js +10 -8
  53. package/lib/processTailwindFeatures.js +14 -12
  54. package/lib/public/colors.js +49 -25
  55. package/lib/public/create-plugin.js +5 -3
  56. package/lib/public/default-config.js +6 -4
  57. package/lib/public/default-theme.js +6 -4
  58. package/lib/public/load-config.js +12 -0
  59. package/lib/public/resolve-config.js +6 -4
  60. package/lib/util/applyImportantSelector.js +36 -0
  61. package/lib/util/bigSign.js +3 -1
  62. package/lib/util/buildMediaQuery.js +3 -1
  63. package/lib/util/cloneDeep.js +3 -1
  64. package/lib/util/cloneNodes.js +5 -3
  65. package/lib/util/color.js +30 -12
  66. package/lib/util/colorNames.js +752 -0
  67. package/lib/util/configurePlugins.js +3 -1
  68. package/lib/util/createPlugin.js +3 -1
  69. package/lib/util/createUtilityPlugin.js +7 -5
  70. package/lib/util/dataTypes.js +74 -17
  71. package/lib/util/defaults.js +9 -7
  72. package/lib/util/escapeClassName.js +10 -8
  73. package/lib/util/escapeCommas.js +3 -1
  74. package/lib/util/flattenColorPalette.js +3 -1
  75. package/lib/util/formatVariantSelector.js +138 -160
  76. package/lib/util/getAllConfigs.js +8 -6
  77. package/lib/util/hashConfig.js +6 -4
  78. package/lib/util/isKeyframeRule.js +3 -1
  79. package/lib/util/isPlainObject.js +3 -1
  80. package/lib/util/isSyntacticallyValidPropertyValue.js +3 -1
  81. package/lib/util/log.js +8 -4
  82. package/lib/util/nameClass.js +12 -6
  83. package/lib/util/negateValue.js +4 -2
  84. package/lib/util/normalizeConfig.js +28 -27
  85. package/lib/util/normalizeScreens.js +12 -4
  86. package/lib/util/parseAnimationValue.js +3 -1
  87. package/lib/util/parseBoxShadowValue.js +6 -2
  88. package/lib/util/parseDependency.js +3 -1
  89. package/lib/util/parseGlob.js +6 -4
  90. package/lib/util/parseObjectStyles.js +9 -7
  91. package/lib/util/pluginUtils.js +54 -54
  92. package/lib/util/prefixSelector.js +27 -11
  93. package/lib/util/pseudoElements.js +229 -0
  94. package/lib/util/removeAlphaVariables.js +3 -1
  95. package/lib/util/resolveConfig.js +17 -15
  96. package/lib/util/resolveConfigPath.js +26 -10
  97. package/lib/util/responsive.js +6 -4
  98. package/lib/util/splitAtTopLevelOnly.js +10 -2
  99. package/lib/util/tap.js +3 -1
  100. package/lib/util/toColorValue.js +3 -1
  101. package/lib/util/toPath.js +3 -1
  102. package/lib/util/transformThemeValue.js +6 -4
  103. package/lib/util/validateConfig.js +16 -3
  104. package/lib/util/validateFormalSyntax.js +3 -1
  105. package/lib/util/withAlphaVariable.js +6 -2
  106. package/loadConfig.d.ts +4 -0
  107. package/loadConfig.js +2 -0
  108. package/package.json +45 -37
  109. package/peers/index.js +63324 -46417
  110. package/resolveConfig.d.ts +11 -2
  111. package/scripts/swap-engines.js +40 -0
  112. package/src/cli/build/index.js +13 -9
  113. package/src/cli/build/plugin.js +42 -32
  114. package/src/cli/build/watching.js +4 -2
  115. package/src/cli/index.js +216 -3
  116. package/src/cli/init/index.js +37 -8
  117. package/src/cli.js +4 -220
  118. package/src/corePluginList.js +1 -1
  119. package/src/corePlugins.js +207 -32
  120. package/src/css/preflight.css +2 -0
  121. package/src/featureFlags.js +6 -0
  122. package/src/index.js +1 -47
  123. package/src/lib/content.js +12 -17
  124. package/src/lib/defaultExtractor.js +9 -3
  125. package/src/lib/detectNesting.js +9 -1
  126. package/src/lib/expandApplyAtRules.js +8 -1
  127. package/src/lib/expandTailwindAtRules.js +36 -7
  128. package/src/lib/generateRules.js +124 -42
  129. package/src/lib/getModuleDependencies.js +70 -30
  130. package/src/lib/load-config.ts +31 -0
  131. package/src/lib/offsets.js +104 -1
  132. package/src/lib/remap-bitfield.js +82 -0
  133. package/src/lib/setupContextUtils.js +103 -54
  134. package/src/lib/setupTrackingContext.js +36 -11
  135. package/src/lib/sharedState.js +15 -4
  136. package/src/oxide/cli/build/deps.ts +91 -0
  137. package/src/oxide/cli/build/index.ts +47 -0
  138. package/src/oxide/cli/build/plugin.ts +442 -0
  139. package/src/oxide/cli/build/utils.ts +74 -0
  140. package/src/oxide/cli/build/watching.ts +225 -0
  141. package/src/oxide/cli/help/index.ts +69 -0
  142. package/src/oxide/cli/index.ts +204 -0
  143. package/src/oxide/cli/init/index.ts +59 -0
  144. package/src/oxide/cli.ts +1 -0
  145. package/src/oxide/postcss-plugin.ts +1 -0
  146. package/src/plugin.js +107 -0
  147. package/src/public/colors.js +22 -0
  148. package/src/public/default-config.js +1 -1
  149. package/src/public/default-theme.js +2 -2
  150. package/src/public/load-config.js +2 -0
  151. package/src/util/applyImportantSelector.js +27 -0
  152. package/src/util/color.js +18 -3
  153. package/src/util/colorNames.js +150 -0
  154. package/src/util/dataTypes.js +33 -4
  155. package/src/util/formatVariantSelector.js +160 -163
  156. package/src/util/getAllConfigs.js +2 -2
  157. package/src/util/negateValue.js +1 -1
  158. package/src/util/normalizeConfig.js +2 -1
  159. package/src/util/pluginUtils.js +16 -31
  160. package/src/util/prefixSelector.js +28 -10
  161. package/src/util/pseudoElements.js +170 -0
  162. package/src/util/resolveConfigPath.js +12 -1
  163. package/src/util/splitAtTopLevelOnly.js +8 -1
  164. package/src/util/validateConfig.js +13 -0
  165. package/stubs/.gitignore +1 -0
  166. package/stubs/.prettierrc.json +6 -0
  167. package/stubs/{defaultConfig.stub.js → config.full.js} +183 -146
  168. package/stubs/{simpleConfig.stub.js → config.simple.js} +0 -1
  169. package/stubs/postcss.config.js +6 -0
  170. package/stubs/tailwind.config.cjs +2 -0
  171. package/stubs/tailwind.config.js +2 -0
  172. package/stubs/tailwind.config.ts +3 -0
  173. package/types/config.d.ts +15 -9
  174. package/types/generated/colors.d.ts +22 -0
  175. package/types/generated/corePluginList.d.ts +1 -1
  176. package/types/generated/default-theme.d.ts +108 -79
  177. package/CHANGELOG.md +0 -2336
  178. package/lib/cli/shared.js +0 -12
  179. package/lib/constants.js +0 -44
  180. package/scripts/install-integrations.js +0 -27
  181. package/scripts/rebuildFixtures.js +0 -68
  182. package/src/cli/shared.js +0 -5
  183. package/src/constants.js +0 -17
  184. /package/stubs/{defaultPostCssConfig.stub.js → postcss.config.cjs} +0 -0
@@ -24,6 +24,7 @@ export default {
24
24
  700: '#334155',
25
25
  800: '#1e293b',
26
26
  900: '#0f172a',
27
+ 950: '#020617',
27
28
  },
28
29
  gray: {
29
30
  50: '#f9fafb',
@@ -36,6 +37,7 @@ export default {
36
37
  700: '#374151',
37
38
  800: '#1f2937',
38
39
  900: '#111827',
40
+ 950: '#030712',
39
41
  },
40
42
  zinc: {
41
43
  50: '#fafafa',
@@ -48,6 +50,7 @@ export default {
48
50
  700: '#3f3f46',
49
51
  800: '#27272a',
50
52
  900: '#18181b',
53
+ 950: '#09090b',
51
54
  },
52
55
  neutral: {
53
56
  50: '#fafafa',
@@ -60,6 +63,7 @@ export default {
60
63
  700: '#404040',
61
64
  800: '#262626',
62
65
  900: '#171717',
66
+ 950: '#0a0a0a',
63
67
  },
64
68
  stone: {
65
69
  50: '#fafaf9',
@@ -72,6 +76,7 @@ export default {
72
76
  700: '#44403c',
73
77
  800: '#292524',
74
78
  900: '#1c1917',
79
+ 950: '#0c0a09',
75
80
  },
76
81
  red: {
77
82
  50: '#fef2f2',
@@ -84,6 +89,7 @@ export default {
84
89
  700: '#b91c1c',
85
90
  800: '#991b1b',
86
91
  900: '#7f1d1d',
92
+ 950: '#450a0a',
87
93
  },
88
94
  orange: {
89
95
  50: '#fff7ed',
@@ -96,6 +102,7 @@ export default {
96
102
  700: '#c2410c',
97
103
  800: '#9a3412',
98
104
  900: '#7c2d12',
105
+ 950: '#431407',
99
106
  },
100
107
  amber: {
101
108
  50: '#fffbeb',
@@ -108,6 +115,7 @@ export default {
108
115
  700: '#b45309',
109
116
  800: '#92400e',
110
117
  900: '#78350f',
118
+ 950: '#451a03',
111
119
  },
112
120
  yellow: {
113
121
  50: '#fefce8',
@@ -120,6 +128,7 @@ export default {
120
128
  700: '#a16207',
121
129
  800: '#854d0e',
122
130
  900: '#713f12',
131
+ 950: '#422006',
123
132
  },
124
133
  lime: {
125
134
  50: '#f7fee7',
@@ -132,6 +141,7 @@ export default {
132
141
  700: '#4d7c0f',
133
142
  800: '#3f6212',
134
143
  900: '#365314',
144
+ 950: '#1a2e05',
135
145
  },
136
146
  green: {
137
147
  50: '#f0fdf4',
@@ -144,6 +154,7 @@ export default {
144
154
  700: '#15803d',
145
155
  800: '#166534',
146
156
  900: '#14532d',
157
+ 950: '#052e16',
147
158
  },
148
159
  emerald: {
149
160
  50: '#ecfdf5',
@@ -156,6 +167,7 @@ export default {
156
167
  700: '#047857',
157
168
  800: '#065f46',
158
169
  900: '#064e3b',
170
+ 950: '#022c22',
159
171
  },
160
172
  teal: {
161
173
  50: '#f0fdfa',
@@ -168,6 +180,7 @@ export default {
168
180
  700: '#0f766e',
169
181
  800: '#115e59',
170
182
  900: '#134e4a',
183
+ 950: '#042f2e',
171
184
  },
172
185
  cyan: {
173
186
  50: '#ecfeff',
@@ -180,6 +193,7 @@ export default {
180
193
  700: '#0e7490',
181
194
  800: '#155e75',
182
195
  900: '#164e63',
196
+ 950: '#083344',
183
197
  },
184
198
  sky: {
185
199
  50: '#f0f9ff',
@@ -192,6 +206,7 @@ export default {
192
206
  700: '#0369a1',
193
207
  800: '#075985',
194
208
  900: '#0c4a6e',
209
+ 950: '#082f49',
195
210
  },
196
211
  blue: {
197
212
  50: '#eff6ff',
@@ -204,6 +219,7 @@ export default {
204
219
  700: '#1d4ed8',
205
220
  800: '#1e40af',
206
221
  900: '#1e3a8a',
222
+ 950: '#172554',
207
223
  },
208
224
  indigo: {
209
225
  50: '#eef2ff',
@@ -216,6 +232,7 @@ export default {
216
232
  700: '#4338ca',
217
233
  800: '#3730a3',
218
234
  900: '#312e81',
235
+ 950: '#1e1b4b',
219
236
  },
220
237
  violet: {
221
238
  50: '#f5f3ff',
@@ -228,6 +245,7 @@ export default {
228
245
  700: '#6d28d9',
229
246
  800: '#5b21b6',
230
247
  900: '#4c1d95',
248
+ 950: '#2e1065',
231
249
  },
232
250
  purple: {
233
251
  50: '#faf5ff',
@@ -240,6 +258,7 @@ export default {
240
258
  700: '#7e22ce',
241
259
  800: '#6b21a8',
242
260
  900: '#581c87',
261
+ 950: '#3b0764',
243
262
  },
244
263
  fuchsia: {
245
264
  50: '#fdf4ff',
@@ -252,6 +271,7 @@ export default {
252
271
  700: '#a21caf',
253
272
  800: '#86198f',
254
273
  900: '#701a75',
274
+ 950: '#4a044e',
255
275
  },
256
276
  pink: {
257
277
  50: '#fdf2f8',
@@ -264,6 +284,7 @@ export default {
264
284
  700: '#be185d',
265
285
  800: '#9d174d',
266
286
  900: '#831843',
287
+ 950: '#500724',
267
288
  },
268
289
  rose: {
269
290
  50: '#fff1f2',
@@ -276,6 +297,7 @@ export default {
276
297
  700: '#be123c',
277
298
  800: '#9f1239',
278
299
  900: '#881337',
300
+ 950: '#4c0519',
279
301
  },
280
302
  get lightBlue() {
281
303
  warn({ version: 'v2.2', from: 'lightBlue', to: 'sky' })
@@ -1,4 +1,4 @@
1
1
  import { cloneDeep } from '../util/cloneDeep'
2
- import defaultConfig from '../../stubs/defaultConfig.stub'
2
+ import defaultConfig from '../../stubs/config.full'
3
3
 
4
4
  export default cloneDeep(defaultConfig)
@@ -1,4 +1,4 @@
1
1
  import { cloneDeep } from '../util/cloneDeep'
2
- import defaultConfig from '../../stubs/defaultConfig.stub'
2
+ import defaultFullConfig from '../../stubs/config.full'
3
3
 
4
- export default cloneDeep(defaultConfig.theme)
4
+ export default cloneDeep(defaultFullConfig.theme)
@@ -0,0 +1,2 @@
1
+ import { loadConfig } from '../lib/load-config'
2
+ export default loadConfig
@@ -0,0 +1,27 @@
1
+ import parser from 'postcss-selector-parser'
2
+ import { movePseudos } from './pseudoElements'
3
+
4
+ export function applyImportantSelector(selector, important) {
5
+ let sel = parser().astSync(selector)
6
+
7
+ sel.each((sel) => {
8
+ // Wrap with :is if it's not already wrapped
9
+ let isWrapped =
10
+ sel.nodes[0].type === 'pseudo' &&
11
+ sel.nodes[0].value === ':is' &&
12
+ sel.nodes.every((node) => node.type !== 'combinator')
13
+
14
+ if (!isWrapped) {
15
+ sel.nodes = [
16
+ parser.pseudo({
17
+ value: ':is',
18
+ nodes: [sel.clone()],
19
+ }),
20
+ ]
21
+ }
22
+
23
+ movePseudos(sel)
24
+ })
25
+
26
+ return `${important} ${sel.toString()}`
27
+ }
package/src/util/color.js CHANGED
@@ -1,4 +1,4 @@
1
- import namedColors from 'color-name'
1
+ import namedColors from './colorNames'
2
2
 
3
3
  let HEX = /^#([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})?$/i
4
4
  let SHORT_HEX = /^#([a-f\d])([a-f\d])([a-f\d])([a-f\d])?$/i
@@ -8,10 +8,10 @@ let ALPHA_SEP = /\s*[,/]\s*/
8
8
  let CUSTOM_PROPERTY = /var\(--(?:[^ )]*?)\)/
9
9
 
10
10
  let RGB = new RegExp(
11
- `^(rgb)a?\\(\\s*(${VALUE.source}|${CUSTOM_PROPERTY.source})(?:${SEP.source}(${VALUE.source}|${CUSTOM_PROPERTY.source}))?(?:${SEP.source}(${VALUE.source}|${CUSTOM_PROPERTY.source}))?(?:${ALPHA_SEP.source}(${VALUE.source}|${CUSTOM_PROPERTY.source}))?\\s*\\)$`
11
+ `^(rgba?)\\(\\s*(${VALUE.source}|${CUSTOM_PROPERTY.source})(?:${SEP.source}(${VALUE.source}|${CUSTOM_PROPERTY.source}))?(?:${SEP.source}(${VALUE.source}|${CUSTOM_PROPERTY.source}))?(?:${ALPHA_SEP.source}(${VALUE.source}|${CUSTOM_PROPERTY.source}))?\\s*\\)$`
12
12
  )
13
13
  let HSL = new RegExp(
14
- `^(hsl)a?\\(\\s*((?:${VALUE.source})(?:deg|rad|grad|turn)?|${CUSTOM_PROPERTY.source})(?:${SEP.source}(${VALUE.source}|${CUSTOM_PROPERTY.source}))?(?:${SEP.source}(${VALUE.source}|${CUSTOM_PROPERTY.source}))?(?:${ALPHA_SEP.source}(${VALUE.source}|${CUSTOM_PROPERTY.source}))?\\s*\\)$`
14
+ `^(hsla?)\\(\\s*((?:${VALUE.source})(?:deg|rad|grad|turn)?|${CUSTOM_PROPERTY.source})(?:${SEP.source}(${VALUE.source}|${CUSTOM_PROPERTY.source}))?(?:${SEP.source}(${VALUE.source}|${CUSTOM_PROPERTY.source}))?(?:${ALPHA_SEP.source}(${VALUE.source}|${CUSTOM_PROPERTY.source}))?\\s*\\)$`
15
15
  )
16
16
 
17
17
  // In "loose" mode the color may contain fewer than 3 parts, as long as at least
@@ -52,6 +52,16 @@ export function parseColor(value, { loose = false } = {}) {
52
52
 
53
53
  let color = [match[2], match[3], match[4]].filter(Boolean).map((v) => v.toString())
54
54
 
55
+ // rgba(var(--my-color), 0.1)
56
+ // hsla(var(--my-color), 0.1)
57
+ if (color.length === 2 && color[0].startsWith('var(')) {
58
+ return {
59
+ mode: match[1],
60
+ color: [color[0]],
61
+ alpha: color[1],
62
+ }
63
+ }
64
+
55
65
  if (!loose && color.length !== 3) {
56
66
  return null
57
67
  }
@@ -69,5 +79,10 @@ export function parseColor(value, { loose = false } = {}) {
69
79
 
70
80
  export function formatColor({ mode, color, alpha }) {
71
81
  let hasAlpha = alpha !== undefined
82
+
83
+ if (mode === 'rgba' || mode === 'hsla') {
84
+ return `${mode}(${color.join(', ')}${hasAlpha ? `, ${alpha}` : ''})`
85
+ }
86
+
72
87
  return `${mode}(${color.join(' ')}${hasAlpha ? ` / ${alpha}` : ''})`
73
88
  }
@@ -0,0 +1,150 @@
1
+ export default {
2
+ aliceblue: [240, 248, 255],
3
+ antiquewhite: [250, 235, 215],
4
+ aqua: [0, 255, 255],
5
+ aquamarine: [127, 255, 212],
6
+ azure: [240, 255, 255],
7
+ beige: [245, 245, 220],
8
+ bisque: [255, 228, 196],
9
+ black: [0, 0, 0],
10
+ blanchedalmond: [255, 235, 205],
11
+ blue: [0, 0, 255],
12
+ blueviolet: [138, 43, 226],
13
+ brown: [165, 42, 42],
14
+ burlywood: [222, 184, 135],
15
+ cadetblue: [95, 158, 160],
16
+ chartreuse: [127, 255, 0],
17
+ chocolate: [210, 105, 30],
18
+ coral: [255, 127, 80],
19
+ cornflowerblue: [100, 149, 237],
20
+ cornsilk: [255, 248, 220],
21
+ crimson: [220, 20, 60],
22
+ cyan: [0, 255, 255],
23
+ darkblue: [0, 0, 139],
24
+ darkcyan: [0, 139, 139],
25
+ darkgoldenrod: [184, 134, 11],
26
+ darkgray: [169, 169, 169],
27
+ darkgreen: [0, 100, 0],
28
+ darkgrey: [169, 169, 169],
29
+ darkkhaki: [189, 183, 107],
30
+ darkmagenta: [139, 0, 139],
31
+ darkolivegreen: [85, 107, 47],
32
+ darkorange: [255, 140, 0],
33
+ darkorchid: [153, 50, 204],
34
+ darkred: [139, 0, 0],
35
+ darksalmon: [233, 150, 122],
36
+ darkseagreen: [143, 188, 143],
37
+ darkslateblue: [72, 61, 139],
38
+ darkslategray: [47, 79, 79],
39
+ darkslategrey: [47, 79, 79],
40
+ darkturquoise: [0, 206, 209],
41
+ darkviolet: [148, 0, 211],
42
+ deeppink: [255, 20, 147],
43
+ deepskyblue: [0, 191, 255],
44
+ dimgray: [105, 105, 105],
45
+ dimgrey: [105, 105, 105],
46
+ dodgerblue: [30, 144, 255],
47
+ firebrick: [178, 34, 34],
48
+ floralwhite: [255, 250, 240],
49
+ forestgreen: [34, 139, 34],
50
+ fuchsia: [255, 0, 255],
51
+ gainsboro: [220, 220, 220],
52
+ ghostwhite: [248, 248, 255],
53
+ gold: [255, 215, 0],
54
+ goldenrod: [218, 165, 32],
55
+ gray: [128, 128, 128],
56
+ green: [0, 128, 0],
57
+ greenyellow: [173, 255, 47],
58
+ grey: [128, 128, 128],
59
+ honeydew: [240, 255, 240],
60
+ hotpink: [255, 105, 180],
61
+ indianred: [205, 92, 92],
62
+ indigo: [75, 0, 130],
63
+ ivory: [255, 255, 240],
64
+ khaki: [240, 230, 140],
65
+ lavender: [230, 230, 250],
66
+ lavenderblush: [255, 240, 245],
67
+ lawngreen: [124, 252, 0],
68
+ lemonchiffon: [255, 250, 205],
69
+ lightblue: [173, 216, 230],
70
+ lightcoral: [240, 128, 128],
71
+ lightcyan: [224, 255, 255],
72
+ lightgoldenrodyellow: [250, 250, 210],
73
+ lightgray: [211, 211, 211],
74
+ lightgreen: [144, 238, 144],
75
+ lightgrey: [211, 211, 211],
76
+ lightpink: [255, 182, 193],
77
+ lightsalmon: [255, 160, 122],
78
+ lightseagreen: [32, 178, 170],
79
+ lightskyblue: [135, 206, 250],
80
+ lightslategray: [119, 136, 153],
81
+ lightslategrey: [119, 136, 153],
82
+ lightsteelblue: [176, 196, 222],
83
+ lightyellow: [255, 255, 224],
84
+ lime: [0, 255, 0],
85
+ limegreen: [50, 205, 50],
86
+ linen: [250, 240, 230],
87
+ magenta: [255, 0, 255],
88
+ maroon: [128, 0, 0],
89
+ mediumaquamarine: [102, 205, 170],
90
+ mediumblue: [0, 0, 205],
91
+ mediumorchid: [186, 85, 211],
92
+ mediumpurple: [147, 112, 219],
93
+ mediumseagreen: [60, 179, 113],
94
+ mediumslateblue: [123, 104, 238],
95
+ mediumspringgreen: [0, 250, 154],
96
+ mediumturquoise: [72, 209, 204],
97
+ mediumvioletred: [199, 21, 133],
98
+ midnightblue: [25, 25, 112],
99
+ mintcream: [245, 255, 250],
100
+ mistyrose: [255, 228, 225],
101
+ moccasin: [255, 228, 181],
102
+ navajowhite: [255, 222, 173],
103
+ navy: [0, 0, 128],
104
+ oldlace: [253, 245, 230],
105
+ olive: [128, 128, 0],
106
+ olivedrab: [107, 142, 35],
107
+ orange: [255, 165, 0],
108
+ orangered: [255, 69, 0],
109
+ orchid: [218, 112, 214],
110
+ palegoldenrod: [238, 232, 170],
111
+ palegreen: [152, 251, 152],
112
+ paleturquoise: [175, 238, 238],
113
+ palevioletred: [219, 112, 147],
114
+ papayawhip: [255, 239, 213],
115
+ peachpuff: [255, 218, 185],
116
+ peru: [205, 133, 63],
117
+ pink: [255, 192, 203],
118
+ plum: [221, 160, 221],
119
+ powderblue: [176, 224, 230],
120
+ purple: [128, 0, 128],
121
+ rebeccapurple: [102, 51, 153],
122
+ red: [255, 0, 0],
123
+ rosybrown: [188, 143, 143],
124
+ royalblue: [65, 105, 225],
125
+ saddlebrown: [139, 69, 19],
126
+ salmon: [250, 128, 114],
127
+ sandybrown: [244, 164, 96],
128
+ seagreen: [46, 139, 87],
129
+ seashell: [255, 245, 238],
130
+ sienna: [160, 82, 45],
131
+ silver: [192, 192, 192],
132
+ skyblue: [135, 206, 235],
133
+ slateblue: [106, 90, 205],
134
+ slategray: [112, 128, 144],
135
+ slategrey: [112, 128, 144],
136
+ snow: [255, 250, 250],
137
+ springgreen: [0, 255, 127],
138
+ steelblue: [70, 130, 180],
139
+ tan: [210, 180, 140],
140
+ teal: [0, 128, 128],
141
+ thistle: [216, 191, 216],
142
+ tomato: [255, 99, 71],
143
+ turquoise: [64, 224, 208],
144
+ violet: [238, 130, 238],
145
+ wheat: [245, 222, 179],
146
+ white: [255, 255, 255],
147
+ whitesmoke: [245, 245, 245],
148
+ yellow: [255, 255, 0],
149
+ yellowgreen: [154, 205, 50],
150
+ }
@@ -10,9 +10,16 @@ function isCSSFunction(value) {
10
10
  return cssFunctions.some((fn) => new RegExp(`^${fn}\\(.*\\)`).test(value))
11
11
  }
12
12
 
13
+ const placeholder = '--tw-placeholder'
14
+ const placeholderRe = new RegExp(placeholder, 'g')
15
+
13
16
  // This is not a data type, but rather a function that can normalize the
14
17
  // correct values.
15
18
  export function normalize(value, isRoot = true) {
19
+ if (value.startsWith('--')) {
20
+ return `var(${value})`
21
+ }
22
+
16
23
  // Keep raw strings if it starts with `url(`
17
24
  if (value.includes('url(')) {
18
25
  return value
@@ -45,10 +52,14 @@ export function normalize(value, isRoot = true) {
45
52
  // Add spaces around operators inside math functions like calc() that do not follow an operator
46
53
  // or '('.
47
54
  value = value.replace(/(calc|min|max|clamp)\(.+\)/g, (match) => {
48
- return match.replace(
49
- /(-?\d*\.?\d(?!\b-.+[,)](?![^+\-/*])\D)(?:%|[a-z]+)?|\))([+\-/*])/g,
50
- '$1 $2 '
51
- )
55
+ let vars = []
56
+ return match
57
+ .replace(/var\((--.+?)[,)]/g, (match, g1) => {
58
+ vars.push(g1)
59
+ return match.replace(g1, placeholder)
60
+ })
61
+ .replace(/(-?\d*\.?\d(?!\b-\d.+[,)](?![^+\-/*])\D)(?:%|[a-z]+)?|\))([+\-/*])/g, '$1 $2 ')
62
+ .replace(placeholderRe, () => vars.shift())
52
63
  })
53
64
 
54
65
  return value
@@ -66,6 +77,9 @@ export function percentage(value) {
66
77
  return (value.endsWith('%') && number(value.slice(0, -1))) || isCSSFunction(value)
67
78
  }
68
79
 
80
+ // Please refer to MDN when updating this list:
81
+ // https://developer.mozilla.org/en-US/docs/Learn/CSS/Building_blocks/Values_and_units
82
+ // https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Container_Queries#container_query_length_units
69
83
  let lengthUnits = [
70
84
  'cm',
71
85
  'mm',
@@ -79,10 +93,25 @@ let lengthUnits = [
79
93
  'ch',
80
94
  'rem',
81
95
  'lh',
96
+ 'rlh',
82
97
  'vw',
83
98
  'vh',
84
99
  'vmin',
85
100
  'vmax',
101
+ 'vb',
102
+ 'vi',
103
+ 'svw',
104
+ 'svh',
105
+ 'lvw',
106
+ 'lvh',
107
+ 'dvw',
108
+ 'dvh',
109
+ 'cqw',
110
+ 'cqh',
111
+ 'cqi',
112
+ 'cqb',
113
+ 'cqmin',
114
+ 'cqmax',
86
115
  ]
87
116
  let lengthUnitsPattern = `(?:${lengthUnits.join('|')})`
88
117
  export function length(value) {