feat: govern effective appearance defaults
This commit is contained in:
@@ -7,6 +7,7 @@ const repositoryRoot = resolve(webuiRoot, "..", "..");
|
||||
const tokens = readFileSync(resolve(webuiRoot, "src/styles/tokens.css"), "utf8");
|
||||
const app = readFileSync(resolve(webuiRoot, "src/App.tsx"), "utf8");
|
||||
const settings = readFileSync(resolve(webuiRoot, "src/features/settings/SettingsPage.tsx"), "utf8");
|
||||
const paletteControl = readFileSync(resolve(webuiRoot, "src/components/AppearancePaletteControl.tsx"), "utf8");
|
||||
|
||||
assert.match(tokens, /:root\[data-theme="dark"\]/, "dark token overrides are required");
|
||||
assert.match(tokens, /color-scheme:\s*dark/, "native controls must receive the dark color scheme");
|
||||
@@ -17,7 +18,16 @@ for (const theme of ["system", "light", "dark"]) {
|
||||
assert.match(settings, new RegExp(`value:\\s*"${theme}"`), `Settings must expose ${theme}`);
|
||||
}
|
||||
for (const palette of ["default", "civic_blue", "forest", "plum"]) {
|
||||
assert.match(settings, new RegExp(`value:\\s*"${palette}"`), `Settings must expose ${palette}`);
|
||||
assert.match(paletteControl, new RegExp(`value:\\s*"${palette}"`), `Shared appearance control must expose ${palette}`);
|
||||
}
|
||||
assert.match(settings, /AppearancePaletteSelect/, "personal settings must use the shared palette control");
|
||||
for (const relativePath of [
|
||||
"govoplan-admin/webui/src/features/admin/SystemSettingsPanel.tsx",
|
||||
"govoplan-tenancy/webui/src/features/admin/TenantSettingsPanel.tsx"
|
||||
]) {
|
||||
const source = readFileSync(resolve(repositoryRoot, relativePath), "utf8");
|
||||
assert.match(source, /AppearancePaletteSelect/, `${relativePath} must use the shared palette control`);
|
||||
assert.match(source, /AppearancePalettePreview/, `${relativePath} must use the shared palette preview`);
|
||||
}
|
||||
|
||||
const paletteContrasts = [
|
||||
|
||||
Reference in New Issue
Block a user