57 lines
2.1 KiB
TypeScript
57 lines
2.1 KiB
TypeScript
import { readFileSync } from 'node:fs';
|
|
import { join } from 'node:path';
|
|
import { describe, expect, it } from 'vitest';
|
|
|
|
const srcRoot = join(process.cwd(), 'src');
|
|
|
|
function readSource(relativePath: string): string {
|
|
return readFileSync(join(srcRoot, relativePath), 'utf8');
|
|
}
|
|
|
|
describe('light visual system', () => {
|
|
it('removes the user-facing theme switch from settings', () => {
|
|
const settingsSource = readSource('pages/Settings/index.tsx');
|
|
|
|
expect(settingsSource).not.toMatch(/themeOptions/);
|
|
expect(settingsSource).not.toMatch(/appearance\.theme/);
|
|
expect(settingsSource).not.toMatch(/setTheme/);
|
|
});
|
|
|
|
it('keeps the app shell in light mode instead of following system dark mode', () => {
|
|
const appSource = readSource('App.tsx');
|
|
|
|
expect(appSource).toMatch(/root\.classList\.add\('light'\)/);
|
|
expect(appSource).not.toMatch(/prefers-color-scheme: dark/);
|
|
expect(appSource).not.toMatch(/root\.classList\.add\(theme\)/);
|
|
expect(appSource).not.toMatch(/root\.classList\.add\(systemTheme\)/);
|
|
});
|
|
|
|
it('does not use legacy dark navy shell backgrounds', () => {
|
|
const shellSource = [
|
|
readSource('components/layout/Sidebar.tsx'),
|
|
readSource('pages/Chat/OpencodeChatPanel.tsx'),
|
|
readSource('pages/Makelore/index.tsx'),
|
|
].join('\n');
|
|
|
|
expect(shellSource).not.toMatch(
|
|
/bg-\[#(?:0f1220|101322|11131f|141727|171522|192033|211d31|2b2b31)\]/i,
|
|
);
|
|
});
|
|
|
|
it('uses orange as the product primary color and removes legacy blue UI accents', () => {
|
|
const globalsSource = readSource('styles/globals.css');
|
|
const uiSource = [
|
|
readSource('App.tsx'),
|
|
readSource('pages/Chat/OpencodeChatPanel.tsx'),
|
|
readSource('pages/KangarooPartner/index.tsx'),
|
|
readSource('pages/Makelore/index.tsx'),
|
|
readSource('pages/Models/index.tsx'),
|
|
].join('\n');
|
|
|
|
expect(globalsSource).toMatch(/--primary:\s*15 82% 45%;/);
|
|
expect(globalsSource).toMatch(/--brand:\s*15 82% 45%;/);
|
|
expect(globalsSource).toMatch(/--brand-hover:\s*15 84% 38%;/);
|
|
expect(uiSource).not.toMatch(/#3A5578|#F2F5F8|#4b6385|bg-sky-500/i);
|
|
});
|
|
});
|