tailwindcss/src/generators/container.js

44 lines
1.0 KiB
JavaScript

import _ from 'lodash'
import postcss from 'postcss'
import defineClass from '../util/defineClass'
function extractMinWidths(breakpoints) {
return _.flatMap(breakpoints, (breakpoints) => {
if (_.isString(breakpoints)) {
breakpoints = { min: breakpoints }
}
if (!_.isArray(breakpoints)) {
breakpoints = [breakpoints]
}
return _(breakpoints).filter((breakpoint) => {
return _.has(breakpoint, 'min') || _.has(breakpoint, 'min-width')
}).map((breakpoint) => {
return _.get(breakpoint, 'min-width', breakpoint.min)
}).value()
})
}
export default function ({ screens }) {
const minWidths = extractMinWidths(screens)
const atRules = _.map(minWidths, (minWidth) => {
const atRule = postcss.atRule({
name: 'media',
params: `(min-width: ${minWidth})`,
})
atRule.append(defineClass('container', {
'max-width': minWidth
}))
return atRule
})
return [
defineClass('container', {
width: '100%'
}),
...atRules
]
}