/** @jsxImportSource test */
import { View } from "react-native";
import {
act,
colorScheme,
registerCSS,
render,
screen,
setupAllComponents,
} from "test";
const testID = "react-native-css-interop";
setupAllComponents();
test(":is(.dark *)", () => {
registerCSS(`@cssInterop set darkMode class dark;
.my-class:is(.dark *) { color: red; }`);
render();
const component = screen.getByTestId(testID);
expect(component).toHaveStyle(undefined);
act(() => colorScheme.set("dark"));
expect(component).toHaveStyle({ color: "#ff0000" });
});
test(':root[class="dark"]', () => {
registerCSS(`@cssInterop set darkMode class dark;
:root[class="dark"] {
--my-var: red;
}
.my-class {
color: var(--my-var);
}`);
render();
const component = screen.getByTestId(testID);
expect(component).toHaveStyle({ color: undefined });
act(() => colorScheme.set("dark"));
expect(component).toHaveStyle({ color: "red" });
});
test(':root[class~="dark"]', () => {
registerCSS(`@cssInterop set darkMode class dark;
:root[class~="dark"] {
--my-var: red;
}
.my-class {
color: var(--my-var);
}`);
render();
const component = screen.getByTestId(testID);
expect(component).toHaveStyle({ color: undefined });
act(() => colorScheme.set("dark"));
expect(component).toHaveStyle({ color: "red" });
});