tailwindcss 0.0.0-insiders.ec1f7b0 → 0.0.0-insiders.ef325ea

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 (38) hide show
  1. package/CHANGELOG.md +19 -3
  2. package/lib/cli.js +60 -60
  3. package/lib/constants.js +1 -1
  4. package/lib/corePluginList.js +1 -0
  5. package/lib/corePlugins.js +58 -43
  6. package/lib/featureFlags.js +3 -3
  7. package/lib/lib/collapseDuplicateDeclarations.js +2 -2
  8. package/lib/lib/detectNesting.js +17 -2
  9. package/lib/lib/evaluateTailwindFunctions.js +9 -5
  10. package/lib/lib/expandApplyAtRules.js +7 -7
  11. package/lib/lib/generateRules.js +10 -10
  12. package/lib/lib/resolveDefaultsAtRules.js +2 -2
  13. package/lib/lib/setupContextUtils.js +7 -7
  14. package/lib/lib/sharedState.js +1 -1
  15. package/lib/lib/substituteScreenAtRules.js +7 -4
  16. package/lib/util/buildMediaQuery.js +13 -24
  17. package/lib/util/createUtilityPlugin.js +2 -2
  18. package/lib/util/dataTypes.js +11 -0
  19. package/lib/util/formatVariantSelector.js +83 -8
  20. package/lib/util/normalizeConfig.js +7 -7
  21. package/lib/util/normalizeScreens.js +58 -0
  22. package/lib/util/parseBoxShadowValue.js +77 -0
  23. package/lib/util/pluginUtils.js +12 -11
  24. package/lib/util/resolveConfig.js +8 -8
  25. package/package.json +6 -6
  26. package/peers/index.js +3064 -2456
  27. package/src/corePluginList.js +1 -1
  28. package/src/corePlugins.js +46 -35
  29. package/src/lib/detectNesting.js +22 -3
  30. package/src/lib/evaluateTailwindFunctions.js +5 -2
  31. package/src/lib/substituteScreenAtRules.js +6 -3
  32. package/src/util/buildMediaQuery.js +14 -18
  33. package/src/util/dataTypes.js +13 -0
  34. package/src/util/formatVariantSelector.js +81 -0
  35. package/src/util/normalizeScreens.js +42 -0
  36. package/src/util/parseBoxShadowValue.js +71 -0
  37. package/src/util/pluginUtils.js +2 -0
  38. package/stubs/defaultConfig.stub.js +8 -9
package/CHANGELOG.md CHANGED
@@ -7,6 +7,17 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ### Fixed
11
+
12
+ - Enforce the order of some variants (like `before` and `after`) ([#6018](https://github.com/tailwindlabs/tailwindcss/pull/6018))
13
+
14
+ ### Added
15
+
16
+ - Add `placeholder` variant ([#6106](https://github.com/tailwindlabs/tailwindcss/pull/6106))
17
+ - Add tuple syntax for configuring screens while guaranteeing order ([#5956](https://github.com/tailwindlabs/tailwindcss/pull/5956))
18
+
19
+ ## [3.0.0-alpha.2] - 2021-11-08
20
+
10
21
  ### Changed
11
22
 
12
23
  - Don't use pointer cursor on disabled buttons by default ([#5772](https://github.com/tailwindlabs/tailwindcss/pull/5772))
@@ -22,7 +33,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
22
33
  - Add all standard `cursor-*` values by default ([#5734](https://github.com/tailwindlabs/tailwindcss/pull/5734))
23
34
  - Add `grow-*` and `shrink-*` utilities, deprecate `flex-grow-*` and `flex-shrink-*` ([#5733](https://github.com/tailwindlabs/tailwindcss/pull/5733))
24
35
  - Add `text-decoration-color` utilities ([#5760](https://github.com/tailwindlabs/tailwindcss/pull/5760))
25
- - Add declarative `addVariant` syntax ([#5809](https://github.com/tailwindlabs/tailwindcss/pull/5809))
36
+ - Add new declarative `addVariant` API ([#5809](https://github.com/tailwindlabs/tailwindcss/pull/5809))
37
+ - Add first-class `print` variant for targeting printed media ([#5885](https://github.com/tailwindlabs/tailwindcss/pull/5885))
38
+ - Add full color palette for `fill-*` and `stroke-*` utilities (#5933[](https://github.com/tailwindlabs/tailwindcss/pull/5933))
39
+ - Add composable API for colored box shadows ([#5979](https://github.com/tailwindlabs/tailwindcss/pull/5979))
26
40
 
27
41
  ### Fixed
28
42
 
@@ -33,6 +47,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
33
47
  - Allow `_` inside `url()` when using arbitrary values ([#5853](https://github.com/tailwindlabs/tailwindcss/pull/5853))
34
48
  - Prevent crashes when using comments in `@layer` AtRules ([#5854](https://github.com/tailwindlabs/tailwindcss/pull/5854))
35
49
  - Handle color transformations properly with `theme(...)` for all relevant plugins ([#4533](https://github.com/tailwindlabs/tailwindcss/pull/4533), [#5871](https://github.com/tailwindlabs/tailwindcss/pull/5871))
50
+ - Ensure `@apply`-ing a utility with multiple definitions works ([#5870](https://github.com/tailwindlabs/tailwindcss/pull/5870))
36
51
 
37
52
  ## [3.0.0-alpha.1] - 2021-10-01
38
53
 
@@ -77,7 +92,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77
92
 
78
93
  ### Fixed
79
94
 
80
- - Ensure `corePlugins` order is consisent in AOT mode ([#5928](https://github.com/tailwindlabs/tailwindcss/pull/5928))
95
+ - Ensure `corePlugins` order is consisent in AOT mode ([#5928](https://github.com/tailwindlabs/tailwindcss/pull/5928))
81
96
 
82
97
  ## [2.2.18] - 2021-10-29
83
98
 
@@ -1649,7 +1664,8 @@ No release notes
1649
1664
 
1650
1665
  - Everything!
1651
1666
 
1652
- [unreleased]: https://github.com/tailwindlabs/tailwindcss/compare/v3.0.0-alpha.1...HEAD
1667
+ [unreleased]: https://github.com/tailwindlabs/tailwindcss/compare/v3.0.0-alpha.2...HEAD
1668
+ [3.0.0-alpha.2]: https://github.com/tailwindlabs/tailwindcss/compare/v3.0.0-alpha.1...v3.0.0-alpha.2
1653
1669
  [3.0.0-alpha.1]: https://github.com/tailwindlabs/tailwindcss/compare/v2.2.19...v3.0.0-alpha.1
1654
1670
  [2.2.19]: https://github.com/tailwindlabs/tailwindcss/compare/v2.2.18...v2.2.19
1655
1671
  [2.2.18]: https://github.com/tailwindlabs/tailwindcss/compare/v2.2.17...v2.2.18
package/lib/cli.js CHANGED
@@ -110,7 +110,7 @@ function oneOf(...options) {
110
110
  manualParsing: true
111
111
  });
112
112
  }
113
- let commands = {
113
+ let commands1 = {
114
114
  init: {
115
115
  run: init,
116
116
  args: {
@@ -187,30 +187,30 @@ if (process.stdout.isTTY /* Detect redirecting output to a file */ && (process.
187
187
  'tailwindcss [--input input.css] [--output output.css] [--watch] [options...]',
188
188
  'tailwindcss init [--full] [--postcss] [options...]',
189
189
  ],
190
- commands: Object.keys(commands).filter((command)=>command !== 'build'
190
+ commands: Object.keys(commands1).filter((command)=>command !== 'build'
191
191
  ).map((command)=>`${command} [options]`
192
192
  ),
193
193
  options: {
194
- ...commands.build.args,
194
+ ...commands1.build.args,
195
195
  ...sharedFlags
196
196
  }
197
197
  });
198
198
  process.exit(0);
199
199
  }
200
- let command = ((arg = '')=>arg.startsWith('-') ? undefined : arg
200
+ let command1 = ((arg = '')=>arg.startsWith('-') ? undefined : arg
201
201
  )(process.argv[2]) || 'build';
202
- if (commands[command] === undefined) {
203
- if (_fs.default.existsSync(_path.default.resolve(command))) {
202
+ if (commands1[command1] === undefined) {
203
+ if (_fs.default.existsSync(_path.default.resolve(command1))) {
204
204
  // TODO: Deprecate this in future versions
205
205
  // Check if non-existing command, might be a file.
206
- command = 'build';
206
+ command1 = 'build';
207
207
  } else {
208
208
  help({
209
- message: `Invalid command: ${command}`,
209
+ message: `Invalid command: ${command1}`,
210
210
  usage: [
211
211
  'tailwindcss <command> [options]'
212
212
  ],
213
- commands: Object.keys(commands).filter((command)=>command !== 'build'
213
+ commands: Object.keys(commands1).filter((command)=>command !== 'build'
214
214
  ).map((command)=>`${command} [options]`
215
215
  ),
216
216
  options: sharedFlags
@@ -219,11 +219,11 @@ if (commands[command] === undefined) {
219
219
  }
220
220
  }
221
221
  // Execute command
222
- let { args: flags , run } = commands[command];
223
- let args = (()=>{
222
+ let { args: flags1 , run } = commands1[command1];
223
+ let args1 = (()=>{
224
224
  try {
225
225
  let result = (0, _arg).default(Object.fromEntries(Object.entries({
226
- ...flags,
226
+ ...flags1,
227
227
  ...sharedFlags
228
228
  }).filter(([_key, value])=>{
229
229
  var ref;
@@ -240,11 +240,11 @@ let args = (()=>{
240
240
  let flag = result['_'][i];
241
241
  if (!flag.startsWith('-')) continue;
242
242
  let flagName = flag;
243
- let handler = flags[flag];
243
+ let handler = flags1[flag];
244
244
  // Resolve flagName & handler
245
245
  while(typeof handler === 'string'){
246
246
  flagName = handler;
247
- handler = flags[handler];
247
+ handler = flags1[handler];
248
248
  }
249
249
  if (!handler) continue;
250
250
  let args = [];
@@ -264,8 +264,8 @@ let args = (()=>{
264
264
  //
265
265
  // E.g.: tailwindcss input.css -> _: ['build', 'input.css']
266
266
  // E.g.: tailwindcss build input.css -> _: ['build', 'input.css']
267
- if (result['_'][0] !== command) {
268
- result['_'].unshift(command);
267
+ if (result['_'][0] !== command1) {
268
+ result['_'].unshift(command1);
269
269
  }
270
270
  return result;
271
271
  } catch (err) {
@@ -282,14 +282,14 @@ let args = (()=>{
282
282
  throw err;
283
283
  }
284
284
  })();
285
- if (args['--help']) {
285
+ if (args1['--help']) {
286
286
  help({
287
287
  options: {
288
- ...flags,
288
+ ...flags1,
289
289
  ...sharedFlags
290
290
  },
291
291
  usage: [
292
- `tailwindcss ${command} [options]`
292
+ `tailwindcss ${command1} [options]`
293
293
  ]
294
294
  });
295
295
  process.exit(0);
@@ -299,17 +299,17 @@ run();
299
299
  function init() {
300
300
  let messages = [];
301
301
  var ref;
302
- let tailwindConfigLocation = _path.default.resolve((ref = args['_'][1]) !== null && ref !== void 0 ? ref : './tailwind.config.js');
302
+ let tailwindConfigLocation = _path.default.resolve((ref = args1['_'][1]) !== null && ref !== void 0 ? ref : './tailwind.config.js');
303
303
  if (_fs.default.existsSync(tailwindConfigLocation)) {
304
304
  messages.push(`${_path.default.basename(tailwindConfigLocation)} already exists.`);
305
305
  } else {
306
- let stubFile = _fs.default.readFileSync(args['--full'] ? _path.default.resolve(__dirname, '../stubs/defaultConfig.stub.js') : _path.default.resolve(__dirname, '../stubs/simpleConfig.stub.js'), 'utf8');
306
+ let stubFile = _fs.default.readFileSync(args1['--full'] ? _path.default.resolve(__dirname, '../stubs/defaultConfig.stub.js') : _path.default.resolve(__dirname, '../stubs/simpleConfig.stub.js'), 'utf8');
307
307
  // Change colors import
308
308
  stubFile = stubFile.replace('../colors', 'tailwindcss/colors');
309
309
  _fs.default.writeFileSync(tailwindConfigLocation, stubFile, 'utf8');
310
310
  messages.push(`Created Tailwind CSS config file: ${_path.default.basename(tailwindConfigLocation)}`);
311
311
  }
312
- if (args['--postcss']) {
312
+ if (args1['--postcss']) {
313
313
  let postcssConfigLocation = _path.default.resolve('./postcss.config.js');
314
314
  if (_fs.default.existsSync(postcssConfigLocation)) {
315
315
  messages.push(`${_path.default.basename(postcssConfigLocation)} already exists.`);
@@ -327,27 +327,27 @@ function init() {
327
327
  }
328
328
  }
329
329
  async function build() {
330
- let input = args['--input'];
331
- let output = args['--output'];
332
- let shouldWatch = args['--watch'];
333
- let includePostCss = args['--postcss'];
330
+ let input = args1['--input'];
331
+ let output = args1['--output'];
332
+ let shouldWatch = args1['--watch'];
333
+ let includePostCss = args1['--postcss'];
334
334
  // TODO: Deprecate this in future versions
335
- if (!input && args['_'][1]) {
335
+ if (!input && args1['_'][1]) {
336
336
  console.error('[deprecation] Running tailwindcss without -i, please provide an input file.');
337
- input = args['--input'] = args['_'][1];
337
+ input = args1['--input'] = args1['_'][1];
338
338
  }
339
339
  if (input && !_fs.default.existsSync(input = _path.default.resolve(input))) {
340
- console.error(`Specified input file ${args['--input']} does not exist.`);
340
+ console.error(`Specified input file ${args1['--input']} does not exist.`);
341
341
  process.exit(9);
342
342
  }
343
- if (args['--config'] && !_fs.default.existsSync(args['--config'] = _path.default.resolve(args['--config']))) {
344
- console.error(`Specified config file ${args['--config']} does not exist.`);
343
+ if (args1['--config'] && !_fs.default.existsSync(args1['--config'] = _path.default.resolve(args1['--config']))) {
344
+ console.error(`Specified config file ${args1['--config']} does not exist.`);
345
345
  process.exit(9);
346
346
  }
347
- let configPath = args['--config'] ? args['--config'] : ((defaultPath)=>_fs.default.existsSync(defaultPath) ? defaultPath : null
347
+ let configPath = args1['--config'] ? args1['--config'] : ((defaultPath)=>_fs.default.existsSync(defaultPath) ? defaultPath : null
348
348
  )(_path.default.resolve('./tailwind.config.js'));
349
349
  async function loadPostCssPlugins() {
350
- let customPostCssPath = typeof args['--postcss'] === 'string' ? args['--postcss'] : undefined;
350
+ let customPostCssPath = typeof args1['--postcss'] === 'string' ? args1['--postcss'] : undefined;
351
351
  let { plugins: configPlugins } = customPostCssPath ? await (async ()=>{
352
352
  let file = _path.default.resolve(customPostCssPath);
353
353
  // Implementation, see: https://unpkg.com/browse/postcss-load-config@3.0.1/src/index.js
@@ -386,17 +386,17 @@ async function build() {
386
386
  let config = configPath ? require(configPath) : {
387
387
  };
388
388
  let resolvedConfig = (0, _resolveConfig).default(config);
389
- if (args['--purge']) {
389
+ if (args1['--purge']) {
390
390
  _log.default.warn('purge-flag-deprecated', [
391
391
  'The `--purge` flag has been deprecated.',
392
392
  'Please use `--content` instead.',
393
393
  ]);
394
- if (!args['--content']) {
395
- args['--content'] = args['--purge'];
394
+ if (!args1['--content']) {
395
+ args1['--content'] = args1['--purge'];
396
396
  }
397
397
  }
398
- if (args['--content']) {
399
- resolvedConfig.content.files = args['--content'].split(/(?<!{[^}]+),/);
398
+ if (args1['--content']) {
399
+ resolvedConfig.content.files = args1['--content'].split(/(?<!{[^}]+),/);
400
400
  }
401
401
  return resolvedConfig;
402
402
  }
@@ -457,9 +457,9 @@ async function build() {
457
457
  let plugins = [
458
458
  ...beforePlugins,
459
459
  tailwindPlugin,
460
- !args['--minify'] && formatNodes,
460
+ !args1['--minify'] && formatNodes,
461
461
  ...afterPlugins,
462
- !args['--no-autoprefixer'] && (()=>{
462
+ !args1['--no-autoprefixer'] && (()=>{
463
463
  // Try to load a local `autoprefixer` version first
464
464
  try {
465
465
  return require('autoprefixer');
@@ -467,7 +467,7 @@ async function build() {
467
467
  }
468
468
  return (0, _indexJs).lazyAutoprefixer();
469
469
  })(),
470
- args['--minify'] && (()=>{
470
+ args1['--minify'] && (()=>{
471
471
  let options = {
472
472
  preset: [
473
473
  'default',
@@ -510,8 +510,8 @@ async function build() {
510
510
  console.error('Done in', (end - start) / BigInt(1000000) + 'ms.');
511
511
  });
512
512
  }
513
- let css = input ? _fs.default.readFileSync(_path.default.resolve(input), 'utf8') : '@tailwind base; @tailwind components; @tailwind utilities';
514
- return processCSS(css);
513
+ let css1 = input ? _fs.default.readFileSync(_path.default.resolve(input), 'utf8') : '@tailwind base; @tailwind components; @tailwind utilities';
514
+ return processCSS(css1);
515
515
  }
516
516
  let context = null;
517
517
  async function startWatcher() {
@@ -521,8 +521,8 @@ async function build() {
521
521
  let watcher = null;
522
522
  function refreshConfig() {
523
523
  env.DEBUG && console.time('Module dependencies');
524
- for (let file of configDependencies){
525
- delete require.cache[require.resolve(file)];
524
+ for (let file1 of configDependencies){
525
+ delete require.cache[require.resolve(file1)];
526
526
  }
527
527
  if (configPath) {
528
528
  configDependencies = (0, _getModuleDependencies).default(configPath).map(({ file })=>file
@@ -541,9 +541,9 @@ async function build() {
541
541
  let plugins = [
542
542
  ...beforePlugins,
543
543
  '__TAILWIND_PLUGIN_POSITION__',
544
- !args['--minify'] && formatNodes,
544
+ !args1['--minify'] && formatNodes,
545
545
  ...afterPlugins,
546
- !args['--no-autoprefixer'] && (()=>{
546
+ !args1['--no-autoprefixer'] && (()=>{
547
547
  // Try to load a local `autoprefixer` version first
548
548
  try {
549
549
  return require('autoprefixer');
@@ -551,7 +551,7 @@ async function build() {
551
551
  }
552
552
  return (0, _indexJs).lazyAutoprefixer();
553
553
  })(),
554
- args['--minify'] && (()=>{
554
+ args1['--minify'] && (()=>{
555
555
  let options = {
556
556
  preset: [
557
557
  'default',
@@ -636,18 +636,18 @@ async function build() {
636
636
  }
637
637
  });
638
638
  }
639
- let css = input ? _fs.default.readFileSync(_path.default.resolve(input), 'utf8') : '@tailwind base; @tailwind components; @tailwind utilities';
640
- let result1 = await processCSS(css);
639
+ let css2 = input ? _fs.default.readFileSync(_path.default.resolve(input), 'utf8') : '@tailwind base; @tailwind components; @tailwind utilities';
640
+ let result1 = await processCSS(css2);
641
641
  env.DEBUG && console.timeEnd('Finished in');
642
642
  return result1;
643
643
  }
644
- let config = refreshConfig(configPath);
644
+ let config1 = refreshConfig(configPath);
645
645
  if (input) {
646
646
  contextDependencies.add(_path.default.resolve(input));
647
647
  }
648
648
  watcher = _chokidar.default.watch([
649
649
  ...contextDependencies,
650
- ...extractFileGlobs(config)
650
+ ...extractFileGlobs(config1)
651
651
  ], {
652
652
  ignoreInitial: true,
653
653
  awaitWriteFinish: process.platform === 'win32' ? {
@@ -660,16 +660,16 @@ async function build() {
660
660
  if (contextDependencies.has(file)) {
661
661
  env.DEBUG && console.time('Resolve config');
662
662
  context = null;
663
- config = refreshConfig(configPath);
663
+ config1 = refreshConfig(configPath);
664
664
  env.DEBUG && console.timeEnd('Resolve config');
665
665
  env.DEBUG && console.time('Watch new files');
666
- let globs = extractFileGlobs(config);
666
+ let globs = extractFileGlobs(config1);
667
667
  watcher.add(configDependencies);
668
668
  watcher.add(globs);
669
669
  env.DEBUG && console.timeEnd('Watch new files');
670
670
  chain = chain.then(async ()=>{
671
- changedContent.push(...getChangedContent(config));
672
- await rebuild(config);
671
+ changedContent.push(...getChangedContent(config1));
672
+ await rebuild(config1);
673
673
  });
674
674
  } else {
675
675
  chain = chain.then(async ()=>{
@@ -677,7 +677,7 @@ async function build() {
677
677
  content: _fs.default.readFileSync(_path.default.resolve(file), 'utf8'),
678
678
  extension: _path.default.extname(file).slice(1)
679
679
  });
680
- await rebuild(config);
680
+ await rebuild(config1);
681
681
  });
682
682
  }
683
683
  });
@@ -687,12 +687,12 @@ async function build() {
687
687
  content: _fs.default.readFileSync(_path.default.resolve(file), 'utf8'),
688
688
  extension: _path.default.extname(file).slice(1)
689
689
  });
690
- await rebuild(config);
690
+ await rebuild(config1);
691
691
  });
692
692
  });
693
693
  chain = chain.then(()=>{
694
- changedContent.push(...getChangedContent(config));
695
- return rebuild(config);
694
+ changedContent.push(...getChangedContent(config1));
695
+ return rebuild(config1);
696
696
  });
697
697
  }
698
698
  if (shouldWatch) {
package/lib/constants.js CHANGED
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", {
3
3
  value: true
4
4
  });
5
- exports.simpleConfigStubFile = exports.defaultPostCssConfigFile = exports.defaultConfigStubFile = exports.supportedPostCssConfigFile = exports.cjsConfigFile = exports.supportedConfigFiles = exports.defaultPostCssConfigStubFile = exports.cli = exports.cjsPostCssConfigFile = exports.defaultConfigFile = void 0;
5
+ exports.defaultPostCssConfigStubFile = exports.simpleConfigStubFile = exports.defaultConfigStubFile = exports.supportedPostCssConfigFile = exports.supportedConfigFiles = exports.cjsPostCssConfigFile = exports.cjsConfigFile = exports.defaultPostCssConfigFile = exports.defaultConfigFile = exports.cli = void 0;
6
6
  var _path = _interopRequireDefault(require("path"));
7
7
  function _interopRequireDefault(obj) {
8
8
  return obj && obj.__esModule ? obj : {
@@ -135,6 +135,7 @@ var _default = [
135
135
  "backgroundBlendMode",
136
136
  "mixBlendMode",
137
137
  "boxShadow",
138
+ "boxShadowColor",
138
139
  "outlineStyle",
139
140
  "outlineWidth",
140
141
  "outlineOffset",
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", {
3
3
  value: true
4
4
  });
5
- exports.variantPlugins = exports.corePlugins = void 0;
5
+ exports.corePlugins = exports.variantPlugins = void 0;
6
6
  var _fs = _interopRequireDefault(require("fs"));
7
7
  var path = _interopRequireWildcard(require("path"));
8
8
  var _postcss = _interopRequireDefault(require("postcss"));
@@ -16,6 +16,8 @@ var _isPlainObject = _interopRequireDefault(require("./util/isPlainObject"));
16
16
  var _transformThemeValue = _interopRequireDefault(require("./util/transformThemeValue"));
17
17
  var _packageJson = require("../package.json");
18
18
  var _log = _interopRequireDefault(require("./util/log"));
19
+ var _normalizeScreens = require("./util/normalizeScreens");
20
+ var _parseBoxShadowValue = require("./util/parseBoxShadowValue");
19
21
  function _interopRequireDefault(obj) {
20
22
  return obj && obj.__esModule ? obj : {
21
23
  default: obj
@@ -57,6 +59,7 @@ let variantPlugins = {
57
59
  '&::selection'
58
60
  ]);
59
61
  addVariant('file', '&::file-selector-button');
62
+ addVariant('placeholder', '&::placeholder');
60
63
  addVariant('before', ({ container })=>{
61
64
  container.walkRules((rule)=>{
62
65
  let foundContent = false;
@@ -196,15 +199,14 @@ let variantPlugins = {
196
199
  addVariant('print', '@media print');
197
200
  },
198
201
  screenVariants: ({ theme , addVariant })=>{
199
- for(let screen in theme('screens')){
200
- let size = theme('screens')[screen];
201
- let query = (0, _buildMediaQuery).default(size);
202
- addVariant(screen, `@media ${query}`);
202
+ for (let screen of (0, _normalizeScreens).normalizeScreens(theme('screens'))){
203
+ let query = (0, _buildMediaQuery).default(screen);
204
+ addVariant(screen.name, `@media ${query}`);
203
205
  }
204
206
  }
205
207
  };
206
208
  exports.variantPlugins = variantPlugins;
207
- let corePlugins = {
209
+ let corePlugins1 = {
208
210
  preflight: ({ addBase })=>{
209
211
  let preflightStyles = _postcss.default.parse(_fs.default.readFileSync(path.join(__dirname, './css/preflight.css'), 'utf8'));
210
212
  addBase([
@@ -215,27 +217,11 @@ let corePlugins = {
215
217
  ]);
216
218
  },
217
219
  container: (()=>{
218
- function extractMinWidths(breakpoints) {
219
- return Object.values(breakpoints !== null && breakpoints !== void 0 ? breakpoints : {
220
- }).flatMap((breakpoints)=>{
221
- if (typeof breakpoints === 'string') {
222
- breakpoints = {
223
- min: breakpoints
224
- };
225
- }
226
- if (!Array.isArray(breakpoints)) {
227
- breakpoints = [
228
- breakpoints
229
- ];
230
- }
231
- return breakpoints.filter((breakpoint)=>{
232
- var ref;
233
- return (breakpoint === null || breakpoint === void 0 ? void 0 : (ref = breakpoint.hasOwnProperty) === null || ref === void 0 ? void 0 : ref.call(breakpoint, 'min')) || (breakpoint === null || breakpoint === void 0 ? void 0 : breakpoint.hasOwnProperty('min-width'));
234
- }).map((breakpoint)=>{
235
- var ref;
236
- return (ref = breakpoint['min-width']) !== null && ref !== void 0 ? ref : breakpoint.min;
237
- });
238
- });
220
+ function extractMinWidths(breakpoints = []) {
221
+ return breakpoints.flatMap((breakpoint1)=>breakpoint1.values.map((breakpoint)=>breakpoint.min
222
+ )
223
+ ).filter((v)=>v !== undefined
224
+ );
239
225
  }
240
226
  function mapMinWidthsToPadding(minWidths, screens, paddings) {
241
227
  if (typeof paddings === 'undefined') {
@@ -259,25 +245,25 @@ let corePlugins = {
259
245
  });
260
246
  }
261
247
  for (let minWidth of minWidths){
262
- for (let [screen, value] of Object.entries(screens)){
263
- let screenMinWidth = typeof value === 'object' && value !== null ? value.min || value['min-width'] : value;
264
- if (`${screenMinWidth}` === `${minWidth}`) {
265
- mapping.push({
266
- screen,
267
- minWidth,
268
- padding: paddings[screen]
269
- });
248
+ for (let screen of screens){
249
+ for (let { min } of screen.values){
250
+ if (min === minWidth) {
251
+ mapping.push({
252
+ minWidth,
253
+ padding: paddings[screen.name]
254
+ });
255
+ }
270
256
  }
271
257
  }
272
258
  }
273
259
  return mapping;
274
260
  }
275
261
  return function({ addComponents , theme }) {
276
- let screens = theme('container.screens', theme('screens'));
262
+ let screens = (0, _normalizeScreens).normalizeScreens(theme('container.screens', theme('screens')));
277
263
  let minWidths = extractMinWidths(screens);
278
264
  let paddings = mapMinWidthsToPadding(minWidths, screens, theme('container.padding'));
279
265
  let generatePaddingFor = (minWidth)=>{
280
- let paddingConfig = paddings.find((padding)=>`${padding.minWidth}` === `${minWidth}`
266
+ let paddingConfig = paddings.find((padding)=>padding.minWidth === minWidth
281
267
  );
282
268
  if (!paddingConfig) {
283
269
  return {
@@ -989,8 +975,8 @@ let corePlugins = {
989
975
  ];
990
976
  }));
991
977
  matchUtilities({
992
- animate: (value)=>{
993
- let animations = (0, _parseAnimationValue).default(value);
978
+ animate: (value1)=>{
979
+ let animations = (0, _parseAnimationValue).default(value1);
994
980
  return [
995
981
  ...animations.flatMap((animation)=>keyframes[animation.name]
996
982
  ),
@@ -2995,24 +2981,52 @@ let corePlugins = {
2995
2981
  '@defaults box-shadow': {
2996
2982
  '--tw-ring-offset-shadow': '0 0 #0000',
2997
2983
  '--tw-ring-shadow': '0 0 #0000',
2998
- '--tw-shadow': '0 0 #0000'
2984
+ '--tw-shadow': '0 0 #0000',
2985
+ '--tw-shadow-colored': '0 0 #0000'
2999
2986
  }
3000
2987
  });
3001
2988
  matchUtilities({
3002
2989
  shadow: (value)=>{
3003
2990
  value = transformValue(value);
2991
+ let ast = (0, _parseBoxShadowValue).parseBoxShadowValue(value);
2992
+ for (let shadow of ast){
2993
+ // Don't override color if the whole shadow is a variable
2994
+ if (!shadow.valid) {
2995
+ continue;
2996
+ }
2997
+ shadow.color = 'var(--tw-shadow-color)';
2998
+ }
3004
2999
  return {
3005
3000
  '@defaults box-shadow': {
3006
3001
  },
3007
3002
  '--tw-shadow': value === 'none' ? '0 0 #0000' : value,
3003
+ '--tw-shadow-colored': value === 'none' ? '0 0 #0000' : (0, _parseBoxShadowValue).formatBoxShadowValue(ast),
3008
3004
  'box-shadow': defaultBoxShadow
3009
3005
  };
3010
3006
  }
3011
3007
  }, {
3012
- values: theme('boxShadow')
3008
+ values: theme('boxShadow'),
3009
+ type: [
3010
+ 'shadow'
3011
+ ]
3013
3012
  });
3014
3013
  };
3015
3014
  })(),
3015
+ boxShadowColor: ({ matchUtilities , theme })=>{
3016
+ matchUtilities({
3017
+ shadow: (value)=>{
3018
+ return {
3019
+ '--tw-shadow-color': (0, _toColorValue).default(value),
3020
+ '--tw-shadow': 'var(--tw-shadow-colored)'
3021
+ };
3022
+ }
3023
+ }, {
3024
+ values: (0, _flattenColorPalette).default(theme('boxShadowColor')),
3025
+ type: [
3026
+ 'color'
3027
+ ]
3028
+ });
3029
+ },
3016
3030
  outlineStyle: ({ addUtilities })=>{
3017
3031
  addUtilities({
3018
3032
  '.outline-none': {
@@ -3089,7 +3103,8 @@ let corePlugins = {
3089
3103
  '--tw-ring-color': ringColorDefault,
3090
3104
  '--tw-ring-offset-shadow': '0 0 #0000',
3091
3105
  '--tw-ring-shadow': '0 0 #0000',
3092
- '--tw-shadow': '0 0 #0000'
3106
+ '--tw-shadow': '0 0 #0000',
3107
+ '--tw-shadow-colored': '0 0 #0000'
3093
3108
  }
3094
3109
  });
3095
3110
  matchUtilities({
@@ -3559,4 +3574,4 @@ let corePlugins = {
3559
3574
  ],
3560
3575
  ])
3561
3576
  };
3562
- exports.corePlugins = corePlugins;
3577
+ exports.corePlugins = corePlugins1;
@@ -28,9 +28,9 @@ function flagEnabled(config, flag) {
28
28
  return config.future === 'all' || ((ref2 = (ref1 = config === null || config === void 0 ? void 0 : (ref = config.future) === null || ref === void 0 ? void 0 : ref[flag]) !== null && ref1 !== void 0 ? ref1 : defaults[flag]) !== null && ref2 !== void 0 ? ref2 : false);
29
29
  }
30
30
  if (featureFlags.experimental.includes(flag)) {
31
- var ref;
32
- var ref11, ref12;
33
- return config.experimental === 'all' || ((ref12 = (ref11 = config === null || config === void 0 ? void 0 : (ref = config.experimental) === null || ref === void 0 ? void 0 : ref[flag]) !== null && ref11 !== void 0 ? ref11 : defaults[flag]) !== null && ref12 !== void 0 ? ref12 : false);
31
+ var ref3;
32
+ var ref4, ref5;
33
+ return config.experimental === 'all' || ((ref5 = (ref4 = config === null || config === void 0 ? void 0 : (ref3 = config.experimental) === null || ref3 === void 0 ? void 0 : ref3[flag]) !== null && ref4 !== void 0 ? ref4 : defaults[flag]) !== null && ref5 !== void 0 ? ref5 : false);
34
34
  }
35
35
  return false;
36
36
  }
@@ -21,8 +21,8 @@ function collapseDuplicateDeclarations() {
21
21
  }
22
22
  seen.set(decl.prop, decl);
23
23
  });
24
- for (let decl of droppable){
25
- decl.remove();
24
+ for (let decl1 of droppable){
25
+ decl1.remove();
26
26
  }
27
27
  });
28
28
  };
@@ -6,12 +6,27 @@ exports.default = _default;
6
6
  function _default(_context) {
7
7
  return (root, result)=>{
8
8
  let found = false;
9
+ root.walkAtRules('tailwind', (node)=>{
10
+ if (found) return false;
11
+ if (node.parent && node.parent.type !== 'root') {
12
+ found = true;
13
+ node.warn(result, [
14
+ 'Nested @tailwind rules were detected, but are not supported.',
15
+ "Consider using a prefix to scope Tailwind's classes: https://tailwindcss.com/docs/configuration#prefix",
16
+ 'Alternatively, use the important selector strategy: https://tailwindcss.com/docs/configuration#selector-strategy',
17
+ ].join('\n'));
18
+ return false;
19
+ }
20
+ });
9
21
  root.walkRules((rule)=>{
10
22
  if (found) return false;
11
23
  rule.walkRules((nestedRule)=>{
12
24
  found = true;
13
- nestedRule.warn(result, // TODO: Improve this warning message
14
- 'Nested CSS detected, checkout the docs on how to support nesting: https://tailwindcss.com/docs/using-with-preprocessors#nesting');
25
+ nestedRule.warn(result, [
26
+ 'Nested CSS was detected, but CSS nesting has not been configured correctly.',
27
+ 'Please enable a CSS nesting plugin *before* Tailwind in your configuration.',
28
+ 'See how here: https://tailwindcss.com/docs/using-with-preprocessors#nesting',
29
+ ].join('\n'));
15
30
  return false;
16
31
  });
17
32
  });