mirror of
https://github.com/mountain-loop/yaak.git
synced 2026-03-13 22:06:14 +01:00
36 lines
1.1 KiB
TypeScript
36 lines
1.1 KiB
TypeScript
import { setWindowTheme } from "@yaakapp-internal/mac-window";
|
|
import {
|
|
applyThemeToDocument,
|
|
defaultDarkTheme,
|
|
defaultLightTheme,
|
|
getCSSAppearance,
|
|
platformFromUserAgent,
|
|
setPlatformOnDocument,
|
|
subscribeToPreferredAppearance,
|
|
type Appearance,
|
|
} from "@yaakapp-internal/theme";
|
|
import { showWindow } from "./tauri";
|
|
|
|
setPlatformOnDocument(platformFromUserAgent(navigator.userAgent));
|
|
|
|
// Apply a quick initial theme based on CSS media query
|
|
let preferredAppearance: Appearance = getCSSAppearance();
|
|
applyTheme(preferredAppearance);
|
|
|
|
// Then subscribe to accurate OS appearance detection and changes
|
|
subscribeToPreferredAppearance((a) => {
|
|
preferredAppearance = a;
|
|
applyTheme(preferredAppearance);
|
|
});
|
|
|
|
// Show window after initial theme is applied (window starts hidden to prevent flash)
|
|
showWindow().catch(console.error);
|
|
|
|
function applyTheme(appearance: Appearance) {
|
|
const theme = appearance === "dark" ? defaultDarkTheme : defaultLightTheme;
|
|
applyThemeToDocument(theme);
|
|
if (theme.base.surface != null) {
|
|
setWindowTheme(theme.base.surface);
|
|
}
|
|
}
|