Files
Trilium/apps/website/src/hooks.tsx
2025-09-27 21:29:39 +03:00

28 lines
951 B
TypeScript

import { useEffect, useState } from "preact/hooks";
export function usePageTitle(title: string) {
useEffect(() => {
if (title.length) {
document.title = `${title} - Trilium Notes`;
} else {
document.title = "Trilium Notes";
}
}, [ title ]);
}
export function useColorScheme() {
if (typeof window === "undefined") return;
const [ prefersDark, setPrefersDark ] = useState((window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches));
useEffect(() => {
const mediaQueryList = window.matchMedia("(prefers-color-scheme: dark)");
const listener = () => setPrefersDark((window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches));
mediaQueryList.addEventListener("change", listener);
return () => mediaQueryList.removeEventListener("change", listener);
}, []);
return prefersDark ? "dark" : "light";
}