From 0f2c26b1f8d599aa1900f54218092913455e3764 Mon Sep 17 00:00:00 2001 From: Adam Wathan Date: Sat, 4 Nov 2017 23:13:09 -0400 Subject: [PATCH 1/7] Add `@important` at-rule Wrapping a set of rules with this at-rule will make every single property in those classes !important. I don't intend to use this in core, but it's really useful for folks who want to use Tailwind on top of an existing base of CSS where the non-important versions of our utilities might not be enough to defeat the specificity of their existing styles. Using this at-rule, someone could import Tailwind into their codebase like this: ``` @important { @tailwind utilities; } ``` ...and then all of their Tailwind utilities would be !important, making it easy to use them to override their existing CSS. --- __tests__/importantAtRule.test.js | 29 +++++++++++++++++++++++++++ src/index.js | 2 ++ src/lib/substituteImportantAtRules.js | 15 ++++++++++++++ 3 files changed, 46 insertions(+) create mode 100644 __tests__/importantAtRule.test.js create mode 100644 src/lib/substituteImportantAtRules.js diff --git a/__tests__/importantAtRule.test.js b/__tests__/importantAtRule.test.js new file mode 100644 index 000000000000..a370ad119799 --- /dev/null +++ b/__tests__/importantAtRule.test.js @@ -0,0 +1,29 @@ +import postcss from 'postcss' +import plugin from '../src/lib/substituteImportantAtRules' + +function run(input, opts = () => {}) { + return postcss([plugin(opts)]).process(input) +} + +test("it makes every property of every nested rule !important", () => { + const input = ` + .foo { color: blue; } + @important { + .banana { color: yellow; } + .chocolate { color: brown; } + } + .bar { color: red; } + ` + + const output = ` + .foo { color: blue; } + .banana { color: yellow !important; } + .chocolate { color: brown !important; } + .bar { color: red; } + ` + + return run(input).then(result => { + expect(result.css).toEqual(output) + expect(result.warnings().length).toBe(0) + }) +}) diff --git a/src/index.js b/src/index.js index f0899fe77f99..09fc93af7c99 100644 --- a/src/index.js +++ b/src/index.js @@ -11,6 +11,7 @@ import evaluateTailwindFunctions from './lib/evaluateTailwindFunctions' import generateUtilities from './lib/generateUtilities' import substituteHoverableAtRules from './lib/substituteHoverableAtRules' import substituteFocusableAtRules from './lib/substituteFocusableAtRules' +import substituteImportantAtRules from './lib/substituteImportantAtRules' import substituteResponsiveAtRules from './lib/substituteResponsiveAtRules' import substituteScreenAtRules from './lib/substituteScreenAtRules' import substituteClassApplyAtRules from './lib/substituteClassApplyAtRules' @@ -37,6 +38,7 @@ const plugin = postcss.plugin('tailwind', (config) => { generateUtilities(lazyConfig), substituteHoverableAtRules(lazyConfig), substituteFocusableAtRules(lazyConfig), + substituteImportantAtRules(lazyConfig), substituteResponsiveAtRules(lazyConfig), substituteScreenAtRules(lazyConfig), substituteClassApplyAtRules(lazyConfig), diff --git a/src/lib/substituteImportantAtRules.js b/src/lib/substituteImportantAtRules.js new file mode 100644 index 000000000000..9af84b0594a9 --- /dev/null +++ b/src/lib/substituteImportantAtRules.js @@ -0,0 +1,15 @@ +import _ from 'lodash' +import postcss from 'postcss' +import cloneNodes from '../util/cloneNodes' + +export default function(config) { + return function (css) { + const options = config() + + css.walkAtRules('important', atRule => { + atRule.walkDecls(decl => decl.important = true) + atRule.before(cloneNodes(atRule.nodes)) + atRule.remove() + }) + } +} From bba475275f35092c0e175dee6c9f00e0bfaab773 Mon Sep 17 00:00:00 2001 From: Adam Wathan Date: Sat, 4 Nov 2017 23:41:53 -0400 Subject: [PATCH 2/7] Add `@prefix` at-rule for prefixing classes --- __tests__/prefixAtRule.test.js | 31 ++++++++++++++++++++++++++++++ src/index.js | 2 ++ src/lib/substitutePrefixAtRules.js | 20 +++++++++++++++++++ 3 files changed, 53 insertions(+) create mode 100644 __tests__/prefixAtRule.test.js create mode 100644 src/lib/substitutePrefixAtRules.js diff --git a/__tests__/prefixAtRule.test.js b/__tests__/prefixAtRule.test.js new file mode 100644 index 000000000000..b2e657f91798 --- /dev/null +++ b/__tests__/prefixAtRule.test.js @@ -0,0 +1,31 @@ +import postcss from 'postcss' +import plugin from '../src/lib/substitutePrefixAtRules' + +function run(input, opts = () => {}) { + return postcss([plugin(opts)]).process(input) +} + +test("it prefixes classes with the provided prefix", () => { + const input = ` + .foo { color: red; } + @prefix 'tw-' { + .banana { color: yellow; } + .chocolate { color: brown; } + .apple, .pear { color: green; } + } + .bar { color: blue; } + ` + + const output = ` + .foo { color: red; } + .tw-banana { color: yellow; } + .tw-chocolate { color: brown; } + .tw-apple, .tw-pear { color: green; } + .bar { color: blue; } + ` + + return run(input).then(result => { + expect(result.css).toEqual(output) + expect(result.warnings().length).toBe(0) + }) +}) diff --git a/src/index.js b/src/index.js index f0899fe77f99..0e6348c40d79 100644 --- a/src/index.js +++ b/src/index.js @@ -9,6 +9,7 @@ import registerConfigAsDependency from './lib/registerConfigAsDependency' import substitutePreflightAtRule from './lib/substitutePreflightAtRule' import evaluateTailwindFunctions from './lib/evaluateTailwindFunctions' import generateUtilities from './lib/generateUtilities' +import substitutePrefixAtRules from './lib/substitutePrefixAtRules' import substituteHoverableAtRules from './lib/substituteHoverableAtRules' import substituteFocusableAtRules from './lib/substituteFocusableAtRules' import substituteResponsiveAtRules from './lib/substituteResponsiveAtRules' @@ -35,6 +36,7 @@ const plugin = postcss.plugin('tailwind', (config) => { substitutePreflightAtRule(lazyConfig), evaluateTailwindFunctions(lazyConfig), generateUtilities(lazyConfig), + substitutePrefixAtRules(lazyConfig), substituteHoverableAtRules(lazyConfig), substituteFocusableAtRules(lazyConfig), substituteResponsiveAtRules(lazyConfig), diff --git a/src/lib/substitutePrefixAtRules.js b/src/lib/substitutePrefixAtRules.js new file mode 100644 index 000000000000..8d26d48476e1 --- /dev/null +++ b/src/lib/substitutePrefixAtRules.js @@ -0,0 +1,20 @@ +import _ from 'lodash' +import postcss from 'postcss' +import cloneNodes from '../util/cloneNodes' + +export default function(config) { + return function (css) { + const options = config() + + css.walkAtRules('prefix', atRule => { + const prefix = _.trim(atRule.params, `'"`) + + atRule.walkRules(rule => { + rule.selectors = rule.selectors.map(selector => `.${prefix}${selector.slice(1)}`) + }) + + atRule.before(cloneNodes(atRule.nodes)) + atRule.remove() + }) + } +} From 567103ca912786311a1b2b7a83bd63fde38e3f5e Mon Sep 17 00:00:00 2001 From: Adam Wathan Date: Fri, 10 Nov 2017 14:57:41 -0500 Subject: [PATCH 3/7] Fix style --- __tests__/importantAtRule.test.js | 2 +- __tests__/prefixAtRule.test.js | 2 +- src/lib/substituteImportantAtRules.js | 10 +++------- src/lib/substitutePrefixAtRules.js | 7 ++----- 4 files changed, 7 insertions(+), 14 deletions(-) diff --git a/__tests__/importantAtRule.test.js b/__tests__/importantAtRule.test.js index a370ad119799..696a47eabbbd 100644 --- a/__tests__/importantAtRule.test.js +++ b/__tests__/importantAtRule.test.js @@ -5,7 +5,7 @@ function run(input, opts = () => {}) { return postcss([plugin(opts)]).process(input) } -test("it makes every property of every nested rule !important", () => { +test('it makes every property of every nested rule !important', () => { const input = ` .foo { color: blue; } @important { diff --git a/__tests__/prefixAtRule.test.js b/__tests__/prefixAtRule.test.js index b2e657f91798..ea838cbd4338 100644 --- a/__tests__/prefixAtRule.test.js +++ b/__tests__/prefixAtRule.test.js @@ -5,7 +5,7 @@ function run(input, opts = () => {}) { return postcss([plugin(opts)]).process(input) } -test("it prefixes classes with the provided prefix", () => { +test('it prefixes classes with the provided prefix', () => { const input = ` .foo { color: red; } @prefix 'tw-' { diff --git a/src/lib/substituteImportantAtRules.js b/src/lib/substituteImportantAtRules.js index 9af84b0594a9..46de67e8b2bf 100644 --- a/src/lib/substituteImportantAtRules.js +++ b/src/lib/substituteImportantAtRules.js @@ -1,13 +1,9 @@ -import _ from 'lodash' -import postcss from 'postcss' import cloneNodes from '../util/cloneNodes' -export default function(config) { - return function (css) { - const options = config() - +export default function() { + return function(css) { css.walkAtRules('important', atRule => { - atRule.walkDecls(decl => decl.important = true) + atRule.walkDecls(decl => (decl.important = true)) atRule.before(cloneNodes(atRule.nodes)) atRule.remove() }) diff --git a/src/lib/substitutePrefixAtRules.js b/src/lib/substitutePrefixAtRules.js index 8d26d48476e1..aba6ee70af0a 100644 --- a/src/lib/substitutePrefixAtRules.js +++ b/src/lib/substitutePrefixAtRules.js @@ -1,11 +1,8 @@ import _ from 'lodash' -import postcss from 'postcss' import cloneNodes from '../util/cloneNodes' -export default function(config) { - return function (css) { - const options = config() - +export default function() { + return function(css) { css.walkAtRules('prefix', atRule => { const prefix = _.trim(atRule.params, `'"`) From 246f6205b01fe17774dd494174a26ae6f209655b Mon Sep 17 00:00:00 2001 From: Adam Wathan Date: Fri, 10 Nov 2017 16:51:52 -0500 Subject: [PATCH 4/7] Add support for "prefix" in "options" key of config --- __tests__/applyClassPrefix.test.js | 18 ++++++ __tests__/prefixAtRule.test.js | 31 ----------- src/index.js | 4 -- src/lib/generateUtilities.js | 89 +++++++++++++++++------------- src/lib/substitutePrefixAtRules.js | 17 ------ src/util/applyClassPrefix.js | 6 ++ src/util/responsive.js | 3 +- 7 files changed, 76 insertions(+), 92 deletions(-) create mode 100644 __tests__/applyClassPrefix.test.js delete mode 100644 __tests__/prefixAtRule.test.js delete mode 100644 src/lib/substitutePrefixAtRules.js create mode 100644 src/util/applyClassPrefix.js diff --git a/__tests__/applyClassPrefix.test.js b/__tests__/applyClassPrefix.test.js new file mode 100644 index 000000000000..5f574fc64cf4 --- /dev/null +++ b/__tests__/applyClassPrefix.test.js @@ -0,0 +1,18 @@ +import postcss from 'postcss' +import applyClassPrefix from '../src/util/applyClassPrefix' + +test('it prefixes classes with the provided prefix', () => { + const input = postcss.parse(` + .foo { color: red; } + .apple, .pear { color: green; } + `) + + const expected = ` + .tw-foo { color: red; } + .tw-apple, .tw-pear { color: green; } + ` + + const result = applyClassPrefix(input, 'tw-').toResult() + expect(result.css).toEqual(expected) + expect(result.warnings().length).toBe(0) +}) diff --git a/__tests__/prefixAtRule.test.js b/__tests__/prefixAtRule.test.js deleted file mode 100644 index ea838cbd4338..000000000000 --- a/__tests__/prefixAtRule.test.js +++ /dev/null @@ -1,31 +0,0 @@ -import postcss from 'postcss' -import plugin from '../src/lib/substitutePrefixAtRules' - -function run(input, opts = () => {}) { - return postcss([plugin(opts)]).process(input) -} - -test('it prefixes classes with the provided prefix', () => { - const input = ` - .foo { color: red; } - @prefix 'tw-' { - .banana { color: yellow; } - .chocolate { color: brown; } - .apple, .pear { color: green; } - } - .bar { color: blue; } - ` - - const output = ` - .foo { color: red; } - .tw-banana { color: yellow; } - .tw-chocolate { color: brown; } - .tw-apple, .tw-pear { color: green; } - .bar { color: blue; } - ` - - return run(input).then(result => { - expect(result.css).toEqual(output) - expect(result.warnings().length).toBe(0) - }) -}) diff --git a/src/index.js b/src/index.js index 643dfad5bc83..bf8fb76aa290 100644 --- a/src/index.js +++ b/src/index.js @@ -8,10 +8,8 @@ import registerConfigAsDependency from './lib/registerConfigAsDependency' import substitutePreflightAtRule from './lib/substitutePreflightAtRule' import evaluateTailwindFunctions from './lib/evaluateTailwindFunctions' import generateUtilities from './lib/generateUtilities' -import substitutePrefixAtRules from './lib/substitutePrefixAtRules' import substituteHoverableAtRules from './lib/substituteHoverableAtRules' import substituteFocusableAtRules from './lib/substituteFocusableAtRules' -import substituteImportantAtRules from './lib/substituteImportantAtRules' import substituteResponsiveAtRules from './lib/substituteResponsiveAtRules' import substituteScreenAtRules from './lib/substituteScreenAtRules' import substituteClassApplyAtRules from './lib/substituteClassApplyAtRules' @@ -38,10 +36,8 @@ const plugin = postcss.plugin('tailwind', config => { substitutePreflightAtRule(lazyConfig), evaluateTailwindFunctions(lazyConfig), generateUtilities(lazyConfig), - substitutePrefixAtRules(lazyConfig), substituteHoverableAtRules(lazyConfig), substituteFocusableAtRules(lazyConfig), - substituteImportantAtRules(lazyConfig), substituteResponsiveAtRules(lazyConfig), substituteScreenAtRules(lazyConfig), substituteClassApplyAtRules(lazyConfig), diff --git a/src/lib/generateUtilities.js b/src/lib/generateUtilities.js index 39f637b73e1f..6171ac5a5e67 100644 --- a/src/lib/generateUtilities.js +++ b/src/lib/generateUtilities.js @@ -1,4 +1,8 @@ import _ from 'lodash' +import postcss from 'postcss' + +import applyClassPrefix from '../util/applyClassPrefix' + import backgroundColors from '../generators/backgroundColors' import backgroundPositions from '../generators/backgroundPositions' import backgroundSize from '../generators/backgroundSize' @@ -38,49 +42,56 @@ import zIndex from '../generators/zIndex' export default function(config) { return function(css) { - const options = config() + config = config() css.walkAtRules('tailwind', atRule => { if (atRule.params === 'utilities') { - const utilities = _.flatten([ - lists(options), - forms(options), - textSizes(options), - textWeights(options), - textFonts(options), - textColors(options), - textLeading(options), - textTracking(options), - textAlign(options), - textWrap(options), - textStyle(options), - verticalAlign(options), - backgroundColors(options), - backgroundPositions(options), - backgroundSize(options), - borderWidths(options), - borderColors(options), - borderStyles(options), - rounded(options), - display(options), - position(options), - overflow(options), - sizing(options), - spacing(options), - shadows(options), - flex(options), - floats(options), - visibility(options), - zIndex(options), - opacity(options), - userSelect(options), - pointerEvents(options), - resize(options), - cursor(options), - ]) + const utilities = postcss.root({ + nodes: _.flatten([ + lists(config), + forms(config), + textSizes(config), + textWeights(config), + textFonts(config), + textColors(config), + textLeading(config), + textTracking(config), + textAlign(config), + textWrap(config), + textStyle(config), + verticalAlign(config), + backgroundColors(config), + backgroundPositions(config), + backgroundSize(config), + borderWidths(config), + borderColors(config), + borderStyles(config), + rounded(config), + display(config), + position(config), + overflow(config), + sizing(config), + spacing(config), + shadows(config), + flex(config), + floats(config), + visibility(config), + zIndex(config), + opacity(config), + userSelect(config), + pointerEvents(config), + resize(config), + cursor(config), + ]), + }) + + const tailwindClasses = postcss.root({ + nodes: [...container(config), responsive(utilities)], + }) + + applyClassPrefix(tailwindClasses, _.get(config, 'options.prefix', '')) - atRule.before(container(options)) - atRule.before(responsive(utilities)) + atRule.before(tailwindClasses) atRule.remove() } }) diff --git a/src/lib/substitutePrefixAtRules.js b/src/lib/substitutePrefixAtRules.js deleted file mode 100644 index aba6ee70af0a..000000000000 --- a/src/lib/substitutePrefixAtRules.js +++ /dev/null @@ -1,17 +0,0 @@ -import _ from 'lodash' -import cloneNodes from '../util/cloneNodes' - -export default function() { - return function(css) { - css.walkAtRules('prefix', atRule => { - const prefix = _.trim(atRule.params, `'"`) - - atRule.walkRules(rule => { - rule.selectors = rule.selectors.map(selector => `.${prefix}${selector.slice(1)}`) - }) - - atRule.before(cloneNodes(atRule.nodes)) - atRule.remove() - }) - } -} diff --git a/src/util/applyClassPrefix.js b/src/util/applyClassPrefix.js new file mode 100644 index 000000000000..502e5f02babf --- /dev/null +++ b/src/util/applyClassPrefix.js @@ -0,0 +1,6 @@ +export default function(css, prefix) { + css.walkRules(rule => { + rule.selectors = rule.selectors.map(selector => `.${prefix}${selector.slice(1)}`) + }) + return css +} diff --git a/src/util/responsive.js b/src/util/responsive.js index 67c9056455ed..2d0a90636320 100644 --- a/src/util/responsive.js +++ b/src/util/responsive.js @@ -1,3 +1,4 @@ +import _ from 'lodash' import postcss from 'postcss' import cloneNodes from './cloneNodes' @@ -6,5 +7,5 @@ export default function responsive(rules) { .atRule({ name: 'responsive', }) - .append(cloneNodes(rules)) + .append(cloneNodes(_.isArray(rules) ? rules : rules.nodes)) } From 733a43ae2d3a97c6ad1c99b1ec2c38813a3f42cb Mon Sep 17 00:00:00 2001 From: Adam Wathan Date: Fri, 10 Nov 2017 16:53:28 -0500 Subject: [PATCH 5/7] Add support for "important" option in "options" section of config Doesn't apply to `.container` since it's an oddball non-utility. --- __tests__/importantAtRule.test.js | 29 --------------------------- src/lib/generateUtilities.js | 4 ++++ src/lib/substituteImportantAtRules.js | 11 ---------- 3 files changed, 4 insertions(+), 40 deletions(-) delete mode 100644 __tests__/importantAtRule.test.js delete mode 100644 src/lib/substituteImportantAtRules.js diff --git a/__tests__/importantAtRule.test.js b/__tests__/importantAtRule.test.js deleted file mode 100644 index 696a47eabbbd..000000000000 --- a/__tests__/importantAtRule.test.js +++ /dev/null @@ -1,29 +0,0 @@ -import postcss from 'postcss' -import plugin from '../src/lib/substituteImportantAtRules' - -function run(input, opts = () => {}) { - return postcss([plugin(opts)]).process(input) -} - -test('it makes every property of every nested rule !important', () => { - const input = ` - .foo { color: blue; } - @important { - .banana { color: yellow; } - .chocolate { color: brown; } - } - .bar { color: red; } - ` - - const output = ` - .foo { color: blue; } - .banana { color: yellow !important; } - .chocolate { color: brown !important; } - .bar { color: red; } - ` - - return run(input).then(result => { - expect(result.css).toEqual(output) - expect(result.warnings().length).toBe(0) - }) -}) diff --git a/src/lib/generateUtilities.js b/src/lib/generateUtilities.js index 6171ac5a5e67..dd7ac9cb831b 100644 --- a/src/lib/generateUtilities.js +++ b/src/lib/generateUtilities.js @@ -85,6 +85,10 @@ export default function(config) { ]), }) + if (_.get(config, 'options.important', false)) { + utilities.walkDecls(decl => (decl.important = true)) + } + const tailwindClasses = postcss.root({ nodes: [...container(config), responsive(utilities)], }) diff --git a/src/lib/substituteImportantAtRules.js b/src/lib/substituteImportantAtRules.js deleted file mode 100644 index 46de67e8b2bf..000000000000 --- a/src/lib/substituteImportantAtRules.js +++ /dev/null @@ -1,11 +0,0 @@ -import cloneNodes from '../util/cloneNodes' - -export default function() { - return function(css) { - css.walkAtRules('important', atRule => { - atRule.walkDecls(decl => (decl.important = true)) - atRule.before(cloneNodes(atRule.nodes)) - atRule.remove() - }) - } -} From c608c35feeee2bc2b50962e9737f4d77e9fe26f4 Mon Sep 17 00:00:00 2001 From: Adam Wathan Date: Fri, 10 Nov 2017 19:57:57 -0500 Subject: [PATCH 6/7] Don't override config parameter --- src/lib/generateUtilities.js | 76 ++++++++++++++++++------------------ 1 file changed, 38 insertions(+), 38 deletions(-) diff --git a/src/lib/generateUtilities.js b/src/lib/generateUtilities.js index dd7ac9cb831b..172362bef269 100644 --- a/src/lib/generateUtilities.js +++ b/src/lib/generateUtilities.js @@ -42,58 +42,58 @@ import zIndex from '../generators/zIndex' export default function(config) { return function(css) { - config = config() + let unwrappedConfig = config() css.walkAtRules('tailwind', atRule => { if (atRule.params === 'utilities') { const utilities = postcss.root({ nodes: _.flatten([ - lists(config), - forms(config), - textSizes(config), - textWeights(config), - textFonts(config), - textColors(config), - textLeading(config), - textTracking(config), - textAlign(config), - textWrap(config), - textStyle(config), - verticalAlign(config), - backgroundColors(config), - backgroundPositions(config), - backgroundSize(config), - borderWidths(config), - borderColors(config), - borderStyles(config), - rounded(config), - display(config), - position(config), - overflow(config), - sizing(config), - spacing(config), - shadows(config), - flex(config), - floats(config), - visibility(config), - zIndex(config), - opacity(config), - userSelect(config), - pointerEvents(config), - resize(config), - cursor(config), + lists(unwrappedConfig), + forms(unwrappedConfig), + textSizes(unwrappedConfig), + textWeights(unwrappedConfig), + textFonts(unwrappedConfig), + textColors(unwrappedConfig), + textLeading(unwrappedConfig), + textTracking(unwrappedConfig), + textAlign(unwrappedConfig), + textWrap(unwrappedConfig), + textStyle(unwrappedConfig), + verticalAlign(unwrappedConfig), + backgroundColors(unwrappedConfig), + backgroundPositions(unwrappedConfig), + backgroundSize(unwrappedConfig), + borderWidths(unwrappedConfig), + borderColors(unwrappedConfig), + borderStyles(unwrappedConfig), + rounded(unwrappedConfig), + display(unwrappedConfig), + position(unwrappedConfig), + overflow(unwrappedConfig), + sizing(unwrappedConfig), + spacing(unwrappedConfig), + shadows(unwrappedConfig), + flex(unwrappedConfig), + floats(unwrappedConfig), + visibility(unwrappedConfig), + zIndex(unwrappedConfig), + opacity(unwrappedConfig), + userSelect(unwrappedConfig), + pointerEvents(unwrappedConfig), + resize(unwrappedConfig), + cursor(unwrappedConfig), ]), }) - if (_.get(config, 'options.important', false)) { + if (_.get(unwrappedConfig, 'options.important', false)) { utilities.walkDecls(decl => (decl.important = true)) } const tailwindClasses = postcss.root({ - nodes: [...container(config), responsive(utilities)], + nodes: [...container(unwrappedConfig), responsive(utilities)], }) - applyClassPrefix(tailwindClasses, _.get(config, 'options.prefix', '')) + applyClassPrefix(tailwindClasses, _.get(unwrappedConfig, 'options.prefix', '')) atRule.before(tailwindClasses) atRule.remove() From cf8c1f8d7acb0a797962cd628872b1f32513a6ba Mon Sep 17 00:00:00 2001 From: Jonathan Reinink Date: Sat, 11 Nov 2017 05:59:03 -0500 Subject: [PATCH 7/7] Clean up extra line returns --- src/lib/generateUtilities.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/lib/generateUtilities.js b/src/lib/generateUtilities.js index 172362bef269..689468037f4f 100644 --- a/src/lib/generateUtilities.js +++ b/src/lib/generateUtilities.js @@ -1,8 +1,6 @@ import _ from 'lodash' import postcss from 'postcss' - import applyClassPrefix from '../util/applyClassPrefix' - import backgroundColors from '../generators/backgroundColors' import backgroundPositions from '../generators/backgroundPositions' import backgroundSize from '../generators/backgroundSize'