Skip to content

Commit 236c260

Browse files
committed
feat(tasty): advanced state mapping * 2
1 parent 5c78a9b commit 236c260

File tree

4 files changed

+1223
-89
lines changed

4 files changed

+1223
-89
lines changed

src/tasty/__snapshots__/advanced-states.test.tsx.snap

Lines changed: 22 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,12 @@
33
exports[`Advanced State Mapping - CSS Output @media query states should expand dimension shorthands in media queries 1`] = `
44
"@media (height > 800px) {.t0.t0 {padding-top: calc(6 * var(--gap)); padding-right: calc(6 * var(--gap)); padding-bottom: calc(6 * var(--gap)); padding-left: calc(6 * var(--gap));}}
55
@media (width < 600px) {.t0.t0 {padding-top: calc(2 * var(--gap)); padding-right: calc(2 * var(--gap)); padding-bottom: calc(2 * var(--gap)); padding-left: calc(2 * var(--gap));}}
6-
@media not (height > 800px) and not (width < 600px) {.t0.t0 {padding-top: calc(4 * var(--gap)); padding-right: calc(4 * var(--gap)); padding-bottom: calc(4 * var(--gap)); padding-left: calc(4 * var(--gap));}}"
6+
@media not ((height > 800px)) and not ((width < 600px)) {.t0.t0 {padding-top: calc(4 * var(--gap)); padding-right: calc(4 * var(--gap)); padding-bottom: calc(4 * var(--gap)); padding-left: calc(4 * var(--gap));}}"
77
`;
88

99
exports[`Advanced State Mapping - CSS Output @media query states should expand tasty units in media queries 1`] = `
1010
"@media (width <= calc(var(--gap) * 40)) {.t0.t0 {padding-top: calc(2 * var(--gap)); padding-right: calc(2 * var(--gap)); padding-bottom: calc(2 * var(--gap)); padding-left: calc(2 * var(--gap));}}
11-
@media not (width <= calc(var(--gap) * 40)) {.t0.t0 {padding-top: calc(4 * var(--gap)); padding-right: calc(4 * var(--gap)); padding-bottom: calc(4 * var(--gap)); padding-left: calc(4 * var(--gap));}}"
11+
@media not ((width <= calc(var(--gap) * 40))) {.t0.t0 {padding-top: calc(4 * var(--gap)); padding-right: calc(4 * var(--gap)); padding-bottom: calc(4 * var(--gap)); padding-left: calc(4 * var(--gap));}}"
1212
`;
1313

1414
exports[`Advanced State Mapping - CSS Output @media query states should generate CSS with @media wrapper for dimension queries 1`] = `
@@ -18,7 +18,7 @@ exports[`Advanced State Mapping - CSS Output @media query states should generate
1818

1919
exports[`Advanced State Mapping - CSS Output @media query states should handle @media:type syntax 1`] = `
2020
"@media print {.t0.t0 {display: none;}}
21-
@media not print {.t0.t0 {display: block;}}"
21+
@media not (print) {.t0.t0 {display: block;}}"
2222
`;
2323

2424
exports[`Advanced State Mapping - CSS Output @media query states should handle cascading media queries with overlapping ranges 1`] = `
@@ -28,9 +28,9 @@ exports[`Advanced State Mapping - CSS Output @media query states should handle c
2828
`;
2929
3030
exports[`Advanced State Mapping - CSS Output @media query states should handle media queries with range syntax 1`] = `
31-
"@media (600px <= width < 900px) {.t0.t0 {columns: 2;}}
32-
@media (width >= 900px) {.t0.t0 {columns: 3;}}
33-
@media (width < 600px) {.t0.t0 {columns: 1;}}"
31+
"@media (width >= 900px) {.t0.t0 {columns: 3;}}
32+
@media (600px <= width < 900px) {.t0.t0 {columns: 2;}}
33+
@media not ((width >= 900px)) and not ((600px <= width < 900px)) {.t0.t0 {columns: 1;}}"
3434
`;
3535
3636
exports[`Advanced State Mapping - CSS Output @root states should generate CSS with :root prefix for root states 1`] = `
@@ -83,16 +83,16 @@ exports[`Advanced State Mapping - CSS Output complex combinations should handle
8383
`;
8484
8585
exports[`Advanced State Mapping - CSS Output complex combinations should handle combined media and root states on same property 1`] = `
86-
"@media (width >= 1200px) {.t0.t0 {padding-top: calc(6 * var(--gap)); padding-right: calc(6 * var(--gap)); padding-bottom: calc(6 * var(--gap)); padding-left: calc(6 * var(--gap));}}
86+
":root[data-theme="dark"] .t0.t0 {padding-top: calc(3 * var(--gap)); padding-right: calc(3 * var(--gap)); padding-bottom: calc(3 * var(--gap)); padding-left: calc(3 * var(--gap));}
87+
@media (width >= 1200px) {.t0.t0 {padding-top: calc(6 * var(--gap)); padding-right: calc(6 * var(--gap)); padding-bottom: calc(6 * var(--gap)); padding-left: calc(6 * var(--gap));}}
8788
@media (width < 600px) {.t0.t0 {padding-top: calc(2 * var(--gap)); padding-right: calc(2 * var(--gap)); padding-bottom: calc(2 * var(--gap)); padding-left: calc(2 * var(--gap));}}
88-
@media not (width >= 1200px) and not (width < 600px) {.t0.t0 {padding-top: calc(4 * var(--gap)); padding-right: calc(4 * var(--gap)); padding-bottom: calc(4 * var(--gap)); padding-left: calc(4 * var(--gap));}}
89-
:root[data-theme="dark"] .t0.t0 {padding-top: calc(3 * var(--gap)); padding-right: calc(3 * var(--gap)); padding-bottom: calc(3 * var(--gap)); padding-left: calc(3 * var(--gap));}"
89+
@media not ((width >= 1200px)) and not ((width < 600px)) {.t0.t0 {padding-top: calc(4 * var(--gap)); padding-right: calc(4 * var(--gap)); padding-bottom: calc(4 * var(--gap)); padding-left: calc(4 * var(--gap));}}"
9090
`;
9191
9292
exports[`Advanced State Mapping - CSS Output complex combinations should handle media queries on different dimensions 1`] = `
9393
"@media (height < 400px) {.t0.t0 {padding-top: var(--gap); padding-right: var(--gap); padding-bottom: var(--gap); padding-left: var(--gap);}}
9494
@media (width < 600px) {.t0.t0 {padding-top: calc(2 * var(--gap)); padding-right: calc(2 * var(--gap)); padding-bottom: calc(2 * var(--gap)); padding-left: calc(2 * var(--gap));}}
95-
@media not (height < 400px) and not (width < 600px) {.t0.t0 {padding-top: calc(4 * var(--gap)); padding-right: calc(4 * var(--gap)); padding-bottom: calc(4 * var(--gap)); padding-left: calc(4 * var(--gap));}}"
95+
@media not ((height < 400px)) and not ((width < 600px)) {.t0.t0 {padding-top: calc(4 * var(--gap)); padding-right: calc(4 * var(--gap)); padding-bottom: calc(4 * var(--gap)); padding-left: calc(4 * var(--gap));}}"
9696
`;
9797
9898
exports[`Advanced State Mapping - CSS Output complex combinations should handle multiple root states 1`] = `
@@ -104,6 +104,8 @@ exports[`Advanced State Mapping - CSS Output complex combinations should handle
104104
:root:not([data-high-contrast]):not([data-theme="dark"]) .t0.t0>* {--context-fill-color: var(--white-color); --context-fill-color-rgb: var(--white-color-rgb);}"
105105
`;
106106
107+
exports[`Advanced State Mapping - CSS Output complex combinations should handle nested container queries (jsdom limitation) 1`] = `""`;
108+
107109
exports[`Advanced State Mapping - CSS Output complex combinations should handle predefined states with modifiers 1`] = `
108110
".t0.t0:not([data-hovered]) {padding-top: calc(4 * var(--gap)); padding-right: calc(4 * var(--gap)); padding-bottom: calc(4 * var(--gap)); padding-left: calc(4 * var(--gap));}
109111
.t0.t0[data-hovered] {padding-top: calc(5 * var(--gap)); padding-right: calc(5 * var(--gap)); padding-bottom: calc(5 * var(--gap)); padding-left: calc(5 * var(--gap));}"
@@ -118,9 +120,9 @@ exports[`Advanced State Mapping - CSS Output complex combinations should handle
118120
119121
exports[`Advanced State Mapping - CSS Output complex combinations should handle sub-elements with multiple advanced states 1`] = `
120122
".t0.t0 {padding-top: calc(4 * var(--gap)); padding-right: calc(4 * var(--gap)); padding-bottom: calc(4 * var(--gap)); padding-left: calc(4 * var(--gap));}
123+
:root[data-theme="dark"] .t1.t1 [data-element="Header"] {padding-top: calc(3 * var(--gap)); padding-right: calc(3 * var(--gap)); padding-bottom: calc(3 * var(--gap)); padding-left: calc(3 * var(--gap));}
121124
@media (width < 600px) {.t1.t1 [data-element="Header"] {padding-top: var(--gap); padding-right: var(--gap); padding-bottom: var(--gap); padding-left: var(--gap);}}
122-
@media (width >= 600px) {.t1.t1 [data-element="Header"] {padding-top: calc(2 * var(--gap)); padding-right: calc(2 * var(--gap)); padding-bottom: calc(2 * var(--gap)); padding-left: calc(2 * var(--gap));}}
123-
:root[data-theme="dark"] .t1.t1 [data-element="Header"] {padding-top: calc(3 * var(--gap)); padding-right: calc(3 * var(--gap)); padding-bottom: calc(3 * var(--gap)); padding-left: calc(3 * var(--gap));}"
125+
@media (width >= 600px) {.t1.t1 [data-element="Header"] {padding-top: calc(2 * var(--gap)); padding-right: calc(2 * var(--gap)); padding-bottom: calc(2 * var(--gap)); padding-left: calc(2 * var(--gap));}}"
124126
`;
125127
126128
exports[`Advanced State Mapping - CSS Output complex combinations should handle three-way media query cascade 1`] = `
@@ -131,9 +133,9 @@ exports[`Advanced State Mapping - CSS Output complex combinations should handle
131133
`;
132134
133135
exports[`Advanced State Mapping - CSS Output edge cases should handle advanced states with complex style values 1`] = `
134-
"@media (width < 600px) {.t0.t0 {border: var(--border-width) none var(--border-color);}}
135-
@media (width >= 600px) {.t0.t0 {border: var(--border-width) solid var(--border-color);}}
136-
:root[data-theme="dark"] .t0.t0 {border: var(--border-width) solid var(--dark-05-color);}"
136+
":root[data-theme="dark"] .t0.t0 {border: var(--border-width) solid var(--dark-05-color);}
137+
@media (width < 600px) {.t0.t0 {border: var(--border-width) none var(--border-color);}}
138+
@media (width >= 600px) {.t0.t0 {border: var(--border-width) solid var(--border-color);}}"
137139
`;
138140
139141
exports[`Advanced State Mapping - CSS Output edge cases should handle advanced states with fallback color syntax 1`] = `
@@ -144,9 +146,10 @@ exports[`Advanced State Mapping - CSS Output edge cases should handle advanced s
144146
`;
145147
146148
exports[`Advanced State Mapping - CSS Output predefined states (global) should handle multiple global predefined states 1`] = `
147-
"@media (768px <= width < 1024px) {.t0.t0 {padding-top: calc(3 * var(--gap)); padding-right: calc(3 * var(--gap)); padding-bottom: calc(3 * var(--gap)); padding-left: calc(3 * var(--gap));}}
148-
@media (width >= 1024px) {.t0.t0 {padding-top: calc(4 * var(--gap)); padding-right: calc(4 * var(--gap)); padding-bottom: calc(4 * var(--gap)); padding-left: calc(4 * var(--gap));}}
149-
@media (width < 768px) {.t0.t0 {padding-top: var(--gap); padding-right: var(--gap); padding-bottom: var(--gap); padding-left: var(--gap);}}"
149+
"@media (width >= 1024px) {.t0.t0 {padding-top: calc(4 * var(--gap)); padding-right: calc(4 * var(--gap)); padding-bottom: calc(4 * var(--gap)); padding-left: calc(4 * var(--gap));}}
150+
@media (768px <= width < 1024px) {.t0.t0 {padding-top: calc(3 * var(--gap)); padding-right: calc(3 * var(--gap)); padding-bottom: calc(3 * var(--gap)); padding-left: calc(3 * var(--gap));}}
151+
@media (width < 768px) {.t0.t0 {padding-top: var(--gap); padding-right: var(--gap); padding-bottom: var(--gap); padding-left: var(--gap);}}
152+
@media not ((width >= 1024px)) and not ((768px <= width < 1024px)) and not ((width < 768px)) {.t0.t0 {padding-top: calc(2 * var(--gap)); padding-right: calc(2 * var(--gap)); padding-bottom: calc(2 * var(--gap)); padding-left: calc(2 * var(--gap));}}"
150153
`;
151154
152155
exports[`Advanced State Mapping - CSS Output predefined states (global) should prioritize local over global predefined states 1`] = `".t0.t0 {padding-top: calc(2 * var(--gap)); padding-right: calc(2 * var(--gap)); padding-bottom: calc(2 * var(--gap)); padding-left: calc(2 * var(--gap));}"`;
@@ -160,7 +163,7 @@ exports[`Advanced State Mapping - CSS Output predefined states (local) should re
160163
exports[`Advanced State Mapping - CSS Output sub-element advanced states should apply @own state to sub-element 1`] = `
161164
".t0.t0 {background-color: var(--white-color);}
162165
.t0.t0>* {--context-fill-color: var(--white-color); --context-fill-color-rgb: var(--white-color-rgb);}
163-
.t1.t1 [data-element="Label"] {color: var(--dark-color); --current-color: var(--dark-color); --current-color-rgb: var(--dark-color-rgb);}"
166+
.t1.t1 [data-element="Label"] {color: var(--purple-color); --current-color: var(--purple-color); --current-color-rgb: var(--purple-color-rgb);}"
164167
`;
165168
166169
exports[`Advanced State Mapping - CSS Output sub-element advanced states should apply media queries to sub-element styles 1`] = `

0 commit comments

Comments
 (0)