8ea40260ad
- The lane terminal (xterm) takes its palette from the selected DARK theme — it stays dark in light mode, as a terminal should — and repaints live when the theme changes (`client/src/lib/terminalTheme.ts`). - Charts on the Dashboard and Workflows pages draw their grid, axes, labels and tooltips from theme tokens instead of hardcoded near-black/white, and the activity heatmap ramps from the page surface to the accent, so it reads on every theme instead of going near-black on light ones. - Status/brand text that only worked on dark backgrounds (`text-*-300/400`) gets a darker light-mode shade (`text-*-700 dark:text-*-300`) across sessions, conversations, workflows, config and settings. Categorical chart colours are kept.
31 lines
1.1 KiB
TypeScript
31 lines
1.1 KiB
TypeScript
/**
|
|
* @file Dashboard.heatmap.test.ts
|
|
* @description Pins the activity heatmap's colour ramp to the theme tokens: it
|
|
* runs from the page surface to the accent in every theme, instead of a fixed
|
|
* near-black indigo that vanished into dark and blotted out light themes.
|
|
* @author Nguyễn Ngọc Trí Vĩ <vinnt@smartgift.vn>
|
|
*/
|
|
|
|
import { describe, it, expect } from "vitest";
|
|
import { cellColor } from "../Dashboard";
|
|
|
|
describe("heatmap cellColor", () => {
|
|
it("paints an empty day as the bare surface", () => {
|
|
expect(cellColor(0, 10)).toBe("rgb(var(--surface-0))");
|
|
});
|
|
|
|
it("mixes the accent into the surface, more for busier days, and never a fixed rgb", () => {
|
|
const low = cellColor(1, 100);
|
|
const high = cellColor(100, 100);
|
|
for (const c of [low, high]) {
|
|
expect(c).toMatch(
|
|
/^color-mix\(in srgb, rgb\(var\(--accent\)\) \d+%, rgb\(var\(--surface-0\)\)\)$/
|
|
);
|
|
}
|
|
const pct = (c: string) => Number(/(\d+)%/.exec(c)?.[1]);
|
|
expect(pct(high)).toBe(100);
|
|
expect(pct(low)).toBeGreaterThan(0);
|
|
expect(pct(low)).toBeLessThan(pct(high));
|
|
});
|
|
});
|