diff --git a/src/lib/substituteClassApplyAtRules.js b/src/lib/substituteClassApplyAtRules.js index 8d4892093a91..3d40901e60f7 100644 --- a/src/lib/substituteClassApplyAtRules.js +++ b/src/lib/substituteClassApplyAtRules.js @@ -11,15 +11,23 @@ import substituteScreenAtRules from './substituteScreenAtRules' import prefixSelector from '../util/prefixSelector' import { useMemo } from '../util/useMemo' -function hasAtRule(css, atRule, condition = () => true) { +function hasAtRule(css, atRule, condition) { let found = false - css.walkAtRules(atRule, (node) => { - if (condition(node)) { - found = true - return false - } - }) + css.walkAtRules( + atRule, + condition === undefined + ? () => { + found = true + return false + } + : (node) => { + if (condition(node)) { + found = true + return false + } + } + ) return found } @@ -309,8 +317,7 @@ export default function substituteClassApplyAtRules(config, getProcessedPlugins, return css } - // Tree already contains @tailwind rules, don't prepend default Tailwind tree - let requiredTailwindAtRules = ['utilities'] + let requiredTailwindAtRules = ['base', 'utilities', 'components'] if ( hasAtRule(css, 'tailwind', (node) => { let idx = requiredTailwindAtRules.indexOf(node.params) @@ -319,11 +326,16 @@ export default function substituteClassApplyAtRules(config, getProcessedPlugins, return false }) ) { + // Tree already contains all the at rules (requiredTailwindAtRules) return processApplyAtRules(css, postcss.root(), config) } - // Tree contains no @tailwind rules, so generate all of Tailwind's styles and - // prepend them to the user's CSS. Important for