feat(ui): Orca Dark / Orca Light themes and notification sounds

Two optional named themes from Orca's neutral palette join the Appearance
picker (Orca Dark keeps a blue accent so white-on-accent buttons stay
legible; Orca Light's status colours are darkened to clear 4.5:1 on their
chips). A shown notification can play a sound — None (default), Chime, Pop
or Alert — chosen globally and per notification type in Settings →
Notifications; the WAVs are generated by scripts/gen-notification-sounds.js.
This commit is contained in:
2026-10-01 17:10:46 +07:00
parent eb90244182
commit b71024f244
20 changed files with 487 additions and 55 deletions
@@ -94,6 +94,15 @@ describe("useTheme", () => {
expect(result.current.themeFor).toEqual({ dark: "darcula", light: "canvas" });
});
it("applies the Orca themes by id", () => {
const { result } = renderHook(() => useTheme());
act(() => result.current.setThemeFor("dark", "orca-dark"));
expect(document.documentElement.dataset.theme).toBe("orca-dark");
act(() => result.current.setThemeFor("light", "orca-light"));
act(() => result.current.toggleTheme());
expect(document.documentElement.dataset.theme).toBe("orca-light");
});
it("the default theme carries no data-theme attribute", () => {
const { result } = renderHook(() => useTheme());
act(() => result.current.setThemeFor("dark", "darcula"));