diff --git a/src/corePlugins.js b/src/corePlugins.js index 5182835b9d9d..b8806ae4175e 100644 --- a/src/corePlugins.js +++ b/src/corePlugins.js @@ -460,6 +460,11 @@ export let variantPlugins = { addVariant('contrast-more', '@media (prefers-contrast: more)') addVariant('contrast-less', '@media (prefers-contrast: less)') }, + + scriptingVariants: ({ addVariant }) => { + addVariant('noscript', '@media (scripting: none)') + addVariant('scripting', '@media (scripting: enabled)') + }, } let cssTransformValue = [ diff --git a/src/lib/setupContextUtils.js b/src/lib/setupContextUtils.js index 00b05652af0d..23e84a044c95 100644 --- a/src/lib/setupContextUtils.js +++ b/src/lib/setupContextUtils.js @@ -759,6 +759,7 @@ function resolvePlugins(context, root) { variantPlugins['printVariant'], variantPlugins['screenVariants'], variantPlugins['orientationVariants'], + variantPlugins['scriptingVariants'], ] return [...corePluginList, ...beforeVariants, ...userPlugins, ...afterVariants, ...layerPlugins] diff --git a/tests/plugins/variants/scriptingVariants.test.js b/tests/plugins/variants/scriptingVariants.test.js new file mode 100644 index 000000000000..a279c533b541 --- /dev/null +++ b/tests/plugins/variants/scriptingVariants.test.js @@ -0,0 +1,14 @@ +import { css, quickVariantPluginTest } from '../../util/run' + +quickVariantPluginTest('scriptingVariants').toMatchFormattedCss(css` + @media (scripting: none) { + .noscript\:flex { + display: flex; + } + } + @media (scripting: enabled) { + .scripting\:flex { + display: flex; + } + } +`)