@@ -1353,6 +1353,170 @@ import clsx from 'clsx'
13531353 ) ) ;
13541354 }
13551355
1356+ #[ test]
1357+ #[ serial]
1358+ fn extract_nested_selector ( ) {
1359+ reset_class_map ( ) ;
1360+ assert_debug_snapshot ! ( ToBTreeSet :: from(
1361+ extract(
1362+ "test.tsx" ,
1363+ r#"import {Box} from '@devup-ui/core'
1364+ <Box _hover={{
1365+ _placeholder: {
1366+ color: "red"
1367+ }
1368+ }} />
1369+ "# ,
1370+ ExtractOption {
1371+ package: "@devup-ui/core" . to_string( ) ,
1372+ css_file: None
1373+ }
1374+ )
1375+ . unwrap( )
1376+ ) ) ;
1377+
1378+ reset_class_map ( ) ;
1379+ assert_debug_snapshot ! ( ToBTreeSet :: from(
1380+ extract(
1381+ "test.tsx" ,
1382+ r#"import {Box} from '@devup-ui/core'
1383+ <Box _hover={{
1384+ selectors: {
1385+ "&::placeholder, &:active": {
1386+ color: "blue"
1387+ }
1388+ },
1389+ }} />
1390+ "# ,
1391+ ExtractOption {
1392+ package: "@devup-ui/core" . to_string( ) ,
1393+ css_file: None
1394+ }
1395+ )
1396+ . unwrap( )
1397+ ) ) ;
1398+
1399+ reset_class_map ( ) ;
1400+ assert_debug_snapshot ! ( ToBTreeSet :: from(
1401+ extract(
1402+ "test.tsx" ,
1403+ r#"import {Box} from '@devup-ui/core'
1404+ <Box _hover={{
1405+ selectors: {
1406+ "&::placeholder": {
1407+ color: "red"
1408+ },
1409+ "&::placeholder, &:active": {
1410+ color: "blue"
1411+ }
1412+ },
1413+ }} />
1414+ "# ,
1415+ ExtractOption {
1416+ package: "@devup-ui/core" . to_string( ) ,
1417+ css_file: None
1418+ }
1419+ )
1420+ . unwrap( )
1421+ ) ) ;
1422+
1423+ reset_class_map ( ) ;
1424+ assert_debug_snapshot ! ( ToBTreeSet :: from(
1425+ extract(
1426+ "test.tsx" ,
1427+ r#"import {Box} from '@devup-ui/core'
1428+ <Box _hover={{
1429+ selectors: {
1430+ "&::placeholder": {
1431+ _active: {
1432+ color: "red",
1433+ }
1434+ },
1435+ },
1436+ }} />
1437+ "# ,
1438+ ExtractOption {
1439+ package: "@devup-ui/core" . to_string( ) ,
1440+ css_file: None
1441+ }
1442+ )
1443+ . unwrap( )
1444+ ) ) ;
1445+
1446+ reset_class_map ( ) ;
1447+ assert_debug_snapshot ! ( ToBTreeSet :: from(
1448+ extract(
1449+ "test.tsx" ,
1450+ r#"import {Box} from '@devup-ui/core'
1451+ <Box
1452+ selectors={{
1453+ "&::placeholder": {
1454+ _active: {
1455+ color: "red",
1456+ }
1457+ },
1458+ }} />
1459+ "# ,
1460+ ExtractOption {
1461+ package: "@devup-ui/core" . to_string( ) ,
1462+ css_file: None
1463+ }
1464+ )
1465+ . unwrap( )
1466+ ) ) ;
1467+
1468+ reset_class_map ( ) ;
1469+ assert_debug_snapshot ! ( ToBTreeSet :: from(
1470+ extract(
1471+ "test.tsx" ,
1472+ r#"import {Box} from '@devup-ui/core'
1473+ <Box
1474+ selectors={{
1475+ "&::placeholder": {
1476+ selectors: {
1477+ "&:active": {
1478+ selectors: {
1479+ "&:hover": {
1480+ color: "red",
1481+ }
1482+ }
1483+ }
1484+ }
1485+ },
1486+ }} />
1487+ "# ,
1488+ ExtractOption {
1489+ package: "@devup-ui/core" . to_string( ) ,
1490+ css_file: None
1491+ }
1492+ )
1493+ . unwrap( )
1494+ ) ) ;
1495+
1496+ reset_class_map ( ) ;
1497+ assert_debug_snapshot ! ( ToBTreeSet :: from(
1498+ extract(
1499+ "test.tsx" ,
1500+ r#"import {Box} from '@devup-ui/core'
1501+ <Box
1502+ _placeholder={{
1503+ _active: {
1504+ _hover: {
1505+ color: "blue",
1506+ },
1507+ color: "red",
1508+ },
1509+ }} />
1510+ "# ,
1511+ ExtractOption {
1512+ package: "@devup-ui/core" . to_string( ) ,
1513+ css_file: None
1514+ }
1515+ )
1516+ . unwrap( )
1517+ ) ) ;
1518+ }
1519+
13561520 #[ test]
13571521 #[ serial]
13581522 fn extract_conditional_selector ( ) {
@@ -2802,6 +2966,37 @@ import {Button} from '@devup/ui'
28022966 ) ) ;
28032967 }
28042968
2969+ #[ test]
2970+ #[ serial]
2971+ fn nested_theme_props ( ) {
2972+ reset_class_map ( ) ;
2973+ assert_debug_snapshot ! ( ToBTreeSet :: from(
2974+ extract(
2975+ "test.jsx" ,
2976+ r#"import {Box} from '@devup-ui/core'
2977+ <Box _themeDark={{
2978+ selectors: {
2979+ "&:hover": {
2980+ color: "red",
2981+ }
2982+ },
2983+ _active: {
2984+ color: "blue",
2985+ _placeholder: {
2986+ color: "green",
2987+ },
2988+ },
2989+ }} />
2990+ "# ,
2991+ ExtractOption {
2992+ package: "@devup-ui/core" . to_string( ) ,
2993+ css_file: None
2994+ }
2995+ )
2996+ . unwrap( )
2997+ ) ) ;
2998+ }
2999+
28053000 #[ test]
28063001 #[ serial]
28073002 fn template_literal_props ( ) {
0 commit comments