@@ -70,7 +70,28 @@ export let variantPlugins = {
70
70
'only-of-type' ,
71
71
72
72
// 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
+ ] ,
74
95
'target' ,
75
96
[ 'open' , '[open]' ] ,
76
97
@@ -100,15 +121,27 @@ export let variantPlugins = {
100
121
] . map ( ( variant ) => ( Array . isArray ( variant ) ? variant : [ variant , `:${ variant } ` ] ) )
101
122
102
123
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
+ } )
104
129
}
105
130
106
131
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
+ } )
108
137
}
109
138
110
139
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
+ } )
112
145
}
113
146
} ,
114
147
0 commit comments