feat: add semantic admin palette
This commit is contained in:
1 parent
d4bcf89449
commit
4ce35e91fb
4 files changed
+97
-2
No files matched your search
@@ -1,5 +1,5 @@
|
||||
import { describe, expect, it } from "vitest";
|
||||
import { contrastRatio, derivePublicForegrounds, readableColor } from "@/lib/theme-contrast";
|
||||
import { contrastRatio, deriveAdminPalette, derivePublicForegrounds, readableColor } from "@/lib/theme-contrast";
|
||||
import { PRESETS, THEME_COLOR_KEYS } from "@/lib/theme-presets";
|
||||
|
||||
describe("contrastRatio", () => {
|
||||
@@ -76,6 +76,26 @@ describe("readableColor", () => {
|
||||
});
|
||||
});
|
||||
|
||||
describe("deriveAdminPalette", () => {
|
||||
it.each(Object.entries(PRESETS))("keeps admin text readable for %s", (_name, preset) => {
|
||||
for (const palette of [preset.light, preset.dark]) {
|
||||
const admin = deriveAdminPalette(palette);
|
||||
expect(contrastRatio(admin.text, admin.canvas)).toBeGreaterThanOrEqual(4.5);
|
||||
expect(contrastRatio(admin.text, admin.surface)).toBeGreaterThanOrEqual(4.5);
|
||||
expect(contrastRatio(admin.muted, admin.surface)).toBeGreaterThanOrEqual(4.5);
|
||||
expect(contrastRatio(admin.accentForeground, admin.accent)).toBeGreaterThanOrEqual(4.5);
|
||||
}
|
||||
});
|
||||
|
||||
it("does not copy hostile public structural colors into admin surfaces", () => {
|
||||
const admin = deriveAdminPalette({
|
||||
color_background: "#ff00ff", color_surface: "#00ff00", color_primary: "#ffff00",
|
||||
});
|
||||
expect(admin.canvas).not.toBe("#ff00ff");
|
||||
expect(admin.surface).not.toBe("#00ff00");
|
||||
});
|
||||
});
|
||||
|
||||
describe("derivePublicForegrounds", () => {
|
||||
it.each(Object.entries(PRESETS))("makes every semantic pair readable for %s", (_name, preset) => {
|
||||
for (const palette of [preset.light, preset.dark]) {
|
||||
|
||||
Reference in new issue
Block a user