@@ -70,7 +70,28 @@ export let variantPlugins = {
7070 'only-of-type' ,
7171
7272 // State
73- 'visited' ,
73+ [
74+ 'visited' ,
75+ ( { container } ) => {
76+ let toRemove = [ '--tw-text-opacity' , '--tw-border-opacity' , '--tw-bg-opacity' ]
77+
78+ container . walkDecls ( ( decl ) => {
79+ if ( toRemove . includes ( decl . prop ) ) {
80+ decl . remove ( )
81+
82+ return
83+ }
84+
85+ for ( const varName of toRemove ) {
86+ if ( decl . value . includes ( `/ var(${ varName } )` ) ) {
87+ decl . value = decl . value . replace ( `/ var(${ varName } )` , '' )
88+ }
89+ }
90+ } )
91+
92+ return ':visited'
93+ } ,
94+ ] ,
7495 'target' ,
7596 [ 'open' , '[open]' ] ,
7697
@@ -100,15 +121,27 @@ export let variantPlugins = {
100121 ] . map ( ( variant ) => ( Array . isArray ( variant ) ? variant : [ variant , `:${ variant } ` ] ) )
101122
102123 for ( let [ variantName , state ] of pseudoVariants ) {
103- addVariant ( variantName , `&${ state } ` )
124+ addVariant ( variantName , ( ctx ) => {
125+ let result = typeof state === 'function' ? state ( ctx ) : state
126+
127+ return `&${ result } `
128+ } )
104129 }
105130
106131 for ( let [ variantName , state ] of pseudoVariants ) {
107- addVariant ( `group-${ variantName } ` , `:merge(.group)${ state } &` )
132+ addVariant ( `group-${ variantName } ` , ( ctx ) => {
133+ let result = typeof state === 'function' ? state ( ctx ) : state
134+
135+ return `:merge(.group)${ result } &`
136+ } )
108137 }
109138
110139 for ( let [ variantName , state ] of pseudoVariants ) {
111- addVariant ( `peer-${ variantName } ` , `:merge(.peer)${ state } ~ &` )
140+ addVariant ( `peer-${ variantName } ` , ( ctx ) => {
141+ let result = typeof state === 'function' ? state ( ctx ) : state
142+
143+ return `:merge(.peer)${ result } ~ &`
144+ } )
112145 }
113146 } ,
114147
0 commit comments