From da5b00ed275e5a2d4db088d3b1925d48963fcc38 Mon Sep 17 00:00:00 2001 From: Adam Wathan Date: Fri, 27 May 2022 16:02:51 -0400 Subject: [PATCH] Working on not variants --- src/corePlugins.js | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/src/corePlugins.js b/src/corePlugins.js index f20741605..d03506066 100644 --- a/src/corePlugins.js +++ b/src/corePlugins.js @@ -130,6 +130,34 @@ export let variantPlugins = { 'disabled', ].map((variant) => (Array.isArray(variant) ? variant : [variant, `&:${variant}`])) + // Base `:not` variants + for (let [variantName, state] of pseudoVariants) { + addVariant(`not-${variantName}`, (ctx) => { + let result = typeof state === 'function' ? state(ctx) : state + + return result.replace(/&(\S+)/, '&:not($1)') + }) + } + + // Group `:not` variants + for (let [variantName, state] of pseudoVariants) { + addVariant(`group-not-${variantName}`, (ctx) => { + let result = typeof state === 'function' ? state(ctx) : state + + return result.replace(/&(\S+)/, ':merge(.group):not($1) &') + }) + } + + // Peer `:not` variants + for (let [variantName, state] of pseudoVariants) { + addVariant(`peer-not-${variantName}`, (ctx) => { + let result = typeof state === 'function' ? state(ctx) : state + + return result.replace(/&(\S+)/, ':merge(.peer):not($1) ~ &') + }) + } + + // Base variants for (let [variantName, state] of pseudoVariants) { addVariant(variantName, (ctx) => { let result = typeof state === 'function' ? state(ctx) : state @@ -138,6 +166,7 @@ export let variantPlugins = { }) } + // Group variants for (let [variantName, state] of pseudoVariants) { addVariant(`group-${variantName}`, (ctx) => { let result = typeof state === 'function' ? state(ctx) : state @@ -146,6 +175,7 @@ export let variantPlugins = { }) } + // Peer variants for (let [variantName, state] of pseudoVariants) { addVariant(`peer-${variantName}`, (ctx) => { let result = typeof state === 'function' ? state(ctx) : state