37 lines
1.1 KiB
JavaScript
37 lines
1.1 KiB
JavaScript
import semver from 'semver'
|
|
import { runPlugin } from './runPlugin'
|
|
|
|
export default function getVariants({
|
|
config,
|
|
version,
|
|
postcss,
|
|
browserslist,
|
|
}) {
|
|
let variants = ['responsive', 'hover']
|
|
semver.gte(version, '0.3.0') && variants.push('focus', 'group-hover')
|
|
semver.gte(version, '0.5.0') && variants.push('active')
|
|
semver.gte(version, '0.7.0') && variants.push('focus-within')
|
|
semver.gte(version, '1.0.0-beta.1') && variants.push('default')
|
|
semver.gte(version, '1.1.0') &&
|
|
variants.push('first', 'last', 'odd', 'even', 'disabled', 'visited')
|
|
semver.gte(version, '1.3.0') && variants.push('group-focus')
|
|
semver.gte(version, '1.5.0') && variants.push('focus-visible', 'checked')
|
|
semver.gte(version, '1.6.0') && variants.push('motion-safe', 'motion-reduce')
|
|
semver.gte(version, '2.0.0-alpha.1') && variants.push('dark')
|
|
|
|
let plugins = Array.isArray(config.plugins) ? config.plugins : []
|
|
|
|
plugins.forEach((plugin) => {
|
|
runPlugin(plugin, {
|
|
postcss,
|
|
browserslist,
|
|
config,
|
|
addVariant: (name) => {
|
|
variants.push(name)
|
|
},
|
|
})
|
|
})
|
|
|
|
return variants
|
|
}
|