Files
jobtrackingapp/job-tracker-ui/src/a3-theme-contract.test.ts
T

18 lines
912 B
TypeScript

import { getTheme } from "./theme";
// These values bind the shared theme to the owner's approved A3 visual contract.
test.each([
["light", "#ffffff", "#f5f4f9", "#694394", "#302744", "#695e78", "#ddd6e7"],
["dark", "#282334", "#352d43", "#d7b6f7", "#edf0f6", "#cec2da", "#5e526e"],
] as const)("%s uses the approved A3 semantic roles", (mode, canvas, surface, accent, ink, muted, divider) => {
const theme = getTheme(mode);
const palette = theme.colorSchemes[mode].palette;
expect(palette.background.default.toLowerCase()).toBe(canvas);
expect(palette.background.elevated.toLowerCase()).toBe(surface);
expect(palette.primary.main.toLowerCase()).toBe(accent);
expect(palette.text.primary.toLowerCase()).toBe(ink);
expect(palette.text.secondary.toLowerCase()).toBe(muted);
expect(palette.divider.toLowerCase()).toBe(divider);
expect(theme.typography.button.textTransform).toBe("none");
});