@@ -164,6 +164,42 @@ test('recursive theme replacements (inlined)', () => {
164
164
expect ( inlineThemeValues ( 'var(--mutual-b)' , state ) ) . toBe ( 'calc(calc(var(--mutual-b) * 1) + 1)' )
165
165
} )
166
166
167
+ test ( 'pixel equivalents work with theme variables containing dots' , ( ) => {
168
+ let map = new Map ( [
169
+ [ '--font-size-sm' , '0.875rem' ] ,
170
+ [ '--font-size.md' , '1rem' ] ,
171
+ [ '--font-size.lg' , '1.125rem' ] ,
172
+ [ '--spacing-4' , '1rem' ] ,
173
+ [ '--spacing.8' , '2rem' ] ,
174
+ ] )
175
+
176
+ let state = {
177
+ designSystem : {
178
+ theme : { prefix : null } as any ,
179
+ resolveThemeValue : ( name ) => map . get ( name ) ?? null ,
180
+ } as DesignSystem ,
181
+ } as State
182
+
183
+ let settings = { rootFontSize : 16 } as TailwindCssSettings
184
+
185
+ // Test that dotted variables are resolved correctly
186
+ expect ( addThemeValues ( 'var(--font-size-sm)' , state , settings ) ) . toBe (
187
+ 'var(--font-size-sm) /* 0.875rem = 14px */' ,
188
+ )
189
+ expect ( addThemeValues ( 'var(--font-size\\.md)' , state , settings ) ) . toBe (
190
+ 'var(--font-size\\.md) /* 1rem = 16px */' ,
191
+ )
192
+ expect ( addThemeValues ( 'var(--font-size\\.lg)' , state , settings ) ) . toBe (
193
+ 'var(--font-size\\.lg) /* 1.125rem = 18px */' ,
194
+ )
195
+ expect ( addThemeValues ( 'var(--spacing-4)' , state , settings ) ) . toBe (
196
+ 'var(--spacing-4) /* 1rem = 16px */' ,
197
+ )
198
+ expect ( addThemeValues ( 'var(--spacing.8)' , state , settings ) ) . toBe (
199
+ 'var(--spacing.8) /* 2rem = 32px */' ,
200
+ )
201
+ } )
202
+
167
203
test ( 'Evaluating CSS calc expressions' , ( ) => {
168
204
expect ( replaceCssCalc ( 'calc(1px + 1px)' , ( node ) => evaluateExpression ( node . value ) ) ) . toBe ( '2px' )
169
205
expect ( replaceCssCalc ( 'calc(1px * 4)' , ( node ) => evaluateExpression ( node . value ) ) ) . toBe ( '4px' )
0 commit comments