@@ -19,193 +19,193 @@ const colorsToExclude = [
19
19
20
20
const safelistByComponent : Record < string , ( colors : string ) => TWConfig [ 'safelist' ] > = {
21
21
alert : ( colorsAsRegex ) => [ {
22
- pattern : new RegExp ( `bg-(${ colorsAsRegex } )-50` )
22
+ pattern : RegExp ( `^ bg-(${ colorsAsRegex } )-50$ ` )
23
23
} , {
24
- pattern : new RegExp ( `bg-(${ colorsAsRegex } )-400` ) ,
24
+ pattern : RegExp ( `^ bg-(${ colorsAsRegex } )-400$ ` ) ,
25
25
variants : [ 'dark' ]
26
26
} , {
27
- pattern : new RegExp ( `bg-(${ colorsAsRegex } )-500` )
27
+ pattern : RegExp ( `^ bg-(${ colorsAsRegex } )-500$ ` )
28
28
} , {
29
- pattern : new RegExp ( `text-(${ colorsAsRegex } )-400` ) ,
29
+ pattern : RegExp ( `^ text-(${ colorsAsRegex } )-400$ ` ) ,
30
30
variants : [ 'dark' ]
31
31
} , {
32
- pattern : new RegExp ( `text-(${ colorsAsRegex } )-500` )
32
+ pattern : RegExp ( `^ text-(${ colorsAsRegex } )-500$ ` )
33
33
} , {
34
- pattern : new RegExp ( `ring-(${ colorsAsRegex } )-400` ) ,
34
+ pattern : RegExp ( `^ ring-(${ colorsAsRegex } )-400$ ` ) ,
35
35
variants : [ 'dark' ]
36
36
} , {
37
- pattern : new RegExp ( `ring-(${ colorsAsRegex } )-500` )
37
+ pattern : RegExp ( `^ ring-(${ colorsAsRegex } )-500$ ` )
38
38
} ] ,
39
39
avatar : ( colorsAsRegex ) => [ {
40
- pattern : new RegExp ( `bg-(${ colorsAsRegex } )-400` ) ,
40
+ pattern : RegExp ( `^ bg-(${ colorsAsRegex } )-400$ ` ) ,
41
41
variants : [ 'dark' ]
42
42
} , {
43
- pattern : new RegExp ( `bg-(${ colorsAsRegex } )-500` )
43
+ pattern : RegExp ( `^ bg-(${ colorsAsRegex } )-500$ ` )
44
44
} ] ,
45
45
badge : ( colorsAsRegex ) => [ {
46
- pattern : new RegExp ( `bg-(${ colorsAsRegex } )-50` )
46
+ pattern : RegExp ( `^ bg-(${ colorsAsRegex } )-50$ ` )
47
47
} , {
48
- pattern : new RegExp ( `bg-(${ colorsAsRegex } )-400` ) ,
48
+ pattern : RegExp ( `^ bg-(${ colorsAsRegex } )-400$ ` ) ,
49
49
variants : [ 'dark' ]
50
50
} , {
51
- pattern : new RegExp ( `bg-(${ colorsAsRegex } )-500` )
51
+ pattern : RegExp ( `^ bg-(${ colorsAsRegex } )-500$ ` )
52
52
} , {
53
- pattern : new RegExp ( `text-(${ colorsAsRegex } )-400` ) ,
53
+ pattern : RegExp ( `^ text-(${ colorsAsRegex } )-400$ ` ) ,
54
54
variants : [ 'dark' ]
55
55
} , {
56
- pattern : new RegExp ( `text-(${ colorsAsRegex } )-500` )
56
+ pattern : RegExp ( `^ text-(${ colorsAsRegex } )-500$ ` )
57
57
} , {
58
- pattern : new RegExp ( `ring-(${ colorsAsRegex } )-400` ) ,
58
+ pattern : RegExp ( `^ ring-(${ colorsAsRegex } )-400$ ` ) ,
59
59
variants : [ 'dark' ]
60
60
} , {
61
- pattern : new RegExp ( `ring-(${ colorsAsRegex } )-500` )
61
+ pattern : RegExp ( `^ ring-(${ colorsAsRegex } )-500$ ` )
62
62
} ] ,
63
63
button : ( colorsAsRegex ) => [ {
64
- pattern : new RegExp ( `bg-(${ colorsAsRegex } )-50` ) ,
64
+ pattern : RegExp ( `^ bg-(${ colorsAsRegex } )-50$ ` ) ,
65
65
variants : [ 'hover' , 'disabled' ]
66
66
} , {
67
- pattern : new RegExp ( `bg-(${ colorsAsRegex } )-100` ) ,
67
+ pattern : RegExp ( `^ bg-(${ colorsAsRegex } )-100$ ` ) ,
68
68
variants : [ 'hover' ]
69
69
} , {
70
- pattern : new RegExp ( `bg-(${ colorsAsRegex } )-400` ) ,
70
+ pattern : RegExp ( `^ bg-(${ colorsAsRegex } )-400$ ` ) ,
71
71
variants : [ 'dark' , 'dark:disabled' ]
72
72
} , {
73
- pattern : new RegExp ( `bg-(${ colorsAsRegex } )-500` ) ,
73
+ pattern : RegExp ( `^ bg-(${ colorsAsRegex } )-500$ ` ) ,
74
74
variants : [ 'disabled' , 'dark:hover' ]
75
75
} , {
76
- pattern : new RegExp ( `bg-(${ colorsAsRegex } )-600` ) ,
76
+ pattern : RegExp ( `^ bg-(${ colorsAsRegex } )-600$ ` ) ,
77
77
variants : [ 'hover' ]
78
78
} , {
79
- pattern : new RegExp ( `bg-(${ colorsAsRegex } )-900` ) ,
79
+ pattern : RegExp ( `^ bg-(${ colorsAsRegex } )-900$ ` ) ,
80
80
variants : [ 'dark:hover' ]
81
81
} , {
82
- pattern : new RegExp ( `bg-(${ colorsAsRegex } )-950` ) ,
82
+ pattern : RegExp ( `^ bg-(${ colorsAsRegex } )-950$ ` ) ,
83
83
variants : [ 'dark' , 'dark:hover' , 'dark:disabled' ]
84
84
} , {
85
- pattern : new RegExp ( `text-(${ colorsAsRegex } )-400` ) ,
85
+ pattern : RegExp ( `^ text-(${ colorsAsRegex } )-400$ ` ) ,
86
86
variants : [ 'dark' , 'dark:disabled' ]
87
87
} , {
88
- pattern : new RegExp ( `text-(${ colorsAsRegex } )-500` ) ,
88
+ pattern : RegExp ( `^ text-(${ colorsAsRegex } )-500$ ` ) ,
89
89
variants : [ 'dark:hover' , 'disabled' ]
90
90
} , {
91
- pattern : new RegExp ( `text-(${ colorsAsRegex } )-600` ) ,
91
+ pattern : RegExp ( `^ text-(${ colorsAsRegex } )-600$ ` ) ,
92
92
variants : [ 'hover' ]
93
93
} , {
94
- pattern : new RegExp ( `outline-(${ colorsAsRegex } )-400` ) ,
94
+ pattern : RegExp ( `^ outline-(${ colorsAsRegex } )-400$ ` ) ,
95
95
variants : [ 'dark:focus-visible' ]
96
96
} , {
97
- pattern : new RegExp ( `outline-(${ colorsAsRegex } )-500` ) ,
97
+ pattern : RegExp ( `^ outline-(${ colorsAsRegex } )-500$ ` ) ,
98
98
variants : [ 'focus-visible' ]
99
99
} , {
100
- pattern : new RegExp ( `ring-(${ colorsAsRegex } )-400` ) ,
100
+ pattern : RegExp ( `^ ring-(${ colorsAsRegex } )-400$ ` ) ,
101
101
variants : [ 'dark:focus-visible' ]
102
102
} , {
103
- pattern : new RegExp ( `ring-(${ colorsAsRegex } )-500` ) ,
103
+ pattern : RegExp ( `^ ring-(${ colorsAsRegex } )-500$ ` ) ,
104
104
variants : [ 'focus-visible' ]
105
105
} ] ,
106
106
input : ( colorsAsRegex ) => [ {
107
- pattern : new RegExp ( `text-(${ colorsAsRegex } )-400` ) ,
107
+ pattern : RegExp ( `^ text-(${ colorsAsRegex } )-400$ ` ) ,
108
108
variants : [ 'dark' ]
109
109
} , {
110
- pattern : new RegExp ( `text-(${ colorsAsRegex } )-500` )
110
+ pattern : RegExp ( `^ text-(${ colorsAsRegex } )-500$ ` )
111
111
} , {
112
- pattern : new RegExp ( `ring-(${ colorsAsRegex } )-400` ) ,
112
+ pattern : RegExp ( `^ ring-(${ colorsAsRegex } )-400$ ` ) ,
113
113
variants : [ 'dark' , 'dark:focus' ]
114
114
} , {
115
- pattern : new RegExp ( `ring-(${ colorsAsRegex } )-500` ) ,
115
+ pattern : RegExp ( `^ ring-(${ colorsAsRegex } )-500$ ` ) ,
116
116
variants : [ 'focus' ]
117
117
} ] ,
118
118
radio : ( colorsAsRegex ) => [ {
119
- pattern : new RegExp ( `text-(${ colorsAsRegex } )-400` ) ,
119
+ pattern : RegExp ( `^ text-(${ colorsAsRegex } )-400$ ` ) ,
120
120
variants : [ 'dark' ]
121
121
} , {
122
- pattern : new RegExp ( `text-(${ colorsAsRegex } )-500` )
122
+ pattern : RegExp ( `^ text-(${ colorsAsRegex } )-500$ ` )
123
123
} , {
124
- pattern : new RegExp ( `ring-(${ colorsAsRegex } )-400` ) ,
124
+ pattern : RegExp ( `^ ring-(${ colorsAsRegex } )-400$ ` ) ,
125
125
variants : [ 'dark:focus-visible' ]
126
126
} , {
127
- pattern : new RegExp ( `ring-(${ colorsAsRegex } )-500` ) ,
127
+ pattern : RegExp ( `^ ring-(${ colorsAsRegex } )-500$ ` ) ,
128
128
variants : [ 'focus-visible' ]
129
129
} ] ,
130
130
checkbox : ( colorsAsRegex ) => [ {
131
- pattern : new RegExp ( `text-(${ colorsAsRegex } )-400` ) ,
131
+ pattern : RegExp ( `^ text-(${ colorsAsRegex } )-400$ ` ) ,
132
132
variants : [ 'dark' ]
133
133
} , {
134
- pattern : new RegExp ( `text-(${ colorsAsRegex } )-500` )
134
+ pattern : RegExp ( `^ text-(${ colorsAsRegex } )-500$ ` )
135
135
} , {
136
- pattern : new RegExp ( `ring-(${ colorsAsRegex } )-400` ) ,
136
+ pattern : RegExp ( `^ ring-(${ colorsAsRegex } )-400$ ` ) ,
137
137
variants : [ 'dark:focus-visible' ]
138
138
} , {
139
- pattern : new RegExp ( `ring-(${ colorsAsRegex } )-500` ) ,
139
+ pattern : RegExp ( `^ ring-(${ colorsAsRegex } )-500$ ` ) ,
140
140
variants : [ 'focus-visible' ]
141
141
} ] ,
142
142
toggle : ( colorsAsRegex ) => [ {
143
- pattern : new RegExp ( `bg-(${ colorsAsRegex } )-400` ) ,
143
+ pattern : RegExp ( `^ bg-(${ colorsAsRegex } )-400$ ` ) ,
144
144
variants : [ 'dark' ]
145
145
} , {
146
- pattern : new RegExp ( `bg-(${ colorsAsRegex } )-500` )
146
+ pattern : RegExp ( `^ bg-(${ colorsAsRegex } )-500$ ` )
147
147
} , {
148
- pattern : new RegExp ( `text-(${ colorsAsRegex } )-400` ) ,
148
+ pattern : RegExp ( `^ text-(${ colorsAsRegex } )-400$ ` ) ,
149
149
variants : [ 'dark' ]
150
150
} , {
151
- pattern : new RegExp ( `text-(${ colorsAsRegex } )-500` )
151
+ pattern : RegExp ( `^ text-(${ colorsAsRegex } )-500$ ` )
152
152
} , {
153
- pattern : new RegExp ( `ring-(${ colorsAsRegex } )-400` ) ,
153
+ pattern : RegExp ( `^ ring-(${ colorsAsRegex } )-400$ ` ) ,
154
154
variants : [ 'dark:focus-visible' ]
155
155
} , {
156
- pattern : new RegExp ( `ring-(${ colorsAsRegex } )-500` ) ,
156
+ pattern : RegExp ( `^ ring-(${ colorsAsRegex } )-500$ ` ) ,
157
157
variants : [ 'focus-visible' ]
158
158
} ] ,
159
159
range : ( colorsAsRegex ) => [ {
160
- pattern : new RegExp ( `bg-(${ colorsAsRegex } )-400` ) ,
160
+ pattern : RegExp ( `^ bg-(${ colorsAsRegex } )-400$ ` ) ,
161
161
variants : [ 'dark' ]
162
162
} , {
163
- pattern : new RegExp ( `bg-(${ colorsAsRegex } )-500` )
163
+ pattern : RegExp ( `^ bg-(${ colorsAsRegex } )-500$ ` )
164
164
} , {
165
- pattern : new RegExp ( `text-(${ colorsAsRegex } )-400` ) ,
165
+ pattern : RegExp ( `^ text-(${ colorsAsRegex } )-400$ ` ) ,
166
166
variants : [ 'dark' ]
167
167
} , {
168
- pattern : new RegExp ( `text-(${ colorsAsRegex } )-500` )
168
+ pattern : RegExp ( `^ text-(${ colorsAsRegex } )-500$ ` )
169
169
} , {
170
- pattern : new RegExp ( `ring-(${ colorsAsRegex } )-400` ) ,
170
+ pattern : RegExp ( `^ ring-(${ colorsAsRegex } )-400$ ` ) ,
171
171
variants : [ 'dark:focus-visible' ]
172
172
} , {
173
- pattern : new RegExp ( `ring-(${ colorsAsRegex } )-500` ) ,
173
+ pattern : RegExp ( `^ ring-(${ colorsAsRegex } )-500$ ` ) ,
174
174
variants : [ 'focus-visible' ]
175
175
} ] ,
176
176
progress : ( colorsAsRegex ) => [ {
177
- pattern : new RegExp ( `text-(${ colorsAsRegex } )-400` ) ,
177
+ pattern : RegExp ( `^ text-(${ colorsAsRegex } )-400$ ` ) ,
178
178
variants : [ 'dark' ]
179
179
} , {
180
- pattern : new RegExp ( `text-(${ colorsAsRegex } )-500` )
180
+ pattern : RegExp ( `^ text-(${ colorsAsRegex } )-500$ ` )
181
181
} ] ,
182
182
meter : ( colorsAsRegex ) => [ {
183
- pattern : new RegExp ( `bg-(${ colorsAsRegex } )-400` ) ,
183
+ pattern : RegExp ( `^ bg-(${ colorsAsRegex } )-400$ ` ) ,
184
184
variants : [ 'dark' ]
185
185
} , {
186
- pattern : new RegExp ( `bg-(${ colorsAsRegex } )-500` )
186
+ pattern : RegExp ( `^ bg-(${ colorsAsRegex } )-500$ ` )
187
187
} , {
188
- pattern : new RegExp ( `text-(${ colorsAsRegex } )-400` ) ,
188
+ pattern : RegExp ( `^ text-(${ colorsAsRegex } )-400$ ` ) ,
189
189
variants : [ 'dark' ]
190
190
} , {
191
- pattern : new RegExp ( `text-(${ colorsAsRegex } )-500` )
191
+ pattern : RegExp ( `^ text-(${ colorsAsRegex } )-500$ ` )
192
192
} ] ,
193
193
notification : ( colorsAsRegex ) => [ {
194
- pattern : new RegExp ( `bg-(${ colorsAsRegex } )-400` ) ,
194
+ pattern : RegExp ( `^ bg-(${ colorsAsRegex } )-400$ ` ) ,
195
195
variants : [ 'dark' ]
196
196
} , {
197
- pattern : new RegExp ( `bg-(${ colorsAsRegex } )-500` )
197
+ pattern : RegExp ( `^ bg-(${ colorsAsRegex } )-500$ ` )
198
198
} , {
199
- pattern : new RegExp ( `text-(${ colorsAsRegex } )-400` ) ,
199
+ pattern : RegExp ( `^ text-(${ colorsAsRegex } )-400$ ` ) ,
200
200
variants : [ 'dark' ]
201
201
} , {
202
- pattern : new RegExp ( `text-(${ colorsAsRegex } )-500` )
202
+ pattern : RegExp ( `^ text-(${ colorsAsRegex } )-500$ ` )
203
203
} ] ,
204
204
chip : ( colorsAsRegex ) => [ {
205
- pattern : new RegExp ( `bg-(${ colorsAsRegex } )-400` ) ,
205
+ pattern : RegExp ( `^ bg-(${ colorsAsRegex } )-400$ ` ) ,
206
206
variants : [ 'dark' ]
207
207
} , {
208
- pattern : new RegExp ( `bg-(${ colorsAsRegex } )-500` )
208
+ pattern : RegExp ( `^ bg-(${ colorsAsRegex } )-500$ ` )
209
209
} ]
210
210
}
211
211
@@ -324,7 +324,15 @@ export const customSafelistExtractor = (prefix: string, content: string, colors:
324
324
325
325
return matches . map ( match => {
326
326
const colorOptions = match . substring ( 1 , match . length - 1 ) . split ( '|' )
327
- return colorOptions . map ( color => `${ variant ? variant + ':' : '' } ` + group . pattern . source . replace ( match , color ) )
327
+ return colorOptions . map (
328
+ color => {
329
+ const classesExtracted = group . pattern . source . replace ( match , color ) . replace ( '^' , '' ) . replace ( '$' , '' )
330
+ if ( variant ) {
331
+ return `${ variant } :${ classesExtracted } `
332
+ }
333
+ return classesExtracted
334
+ }
335
+ )
328
336
} ) . flat ( )
329
337
} )
330
338
} )
0 commit comments