mirror of
https://github.com/projectsend/projectsend.git
synced 2026-09-21 11:03:19 +00:00
6e47d76ba6
Client file sharing, rebuilt from the ground up: a private area per client, resumable uploads, folders, groups and categories, sharing with expiry dates and download limits, comments, file versions, an activity log, a REST API, and sixteen languages. This repository begins here. ProjectSend 2 was developed privately, and that development history is not published — the previous generation remains available, with its own history, at projectsend/legacy. Free software under the GNU General Public License v2, or (at your option) any later version.
22 lines
746 B
TypeScript
22 lines
746 B
TypeScript
import { useEffect, useState } from 'react';
|
|
|
|
/**
|
|
* The theme the app has actually applied (the .dark class the
|
|
* appearance system maintains), reactive to the sidebar toggle and to
|
|
* OS changes while in "system" mode.
|
|
*/
|
|
export function useAppliedTheme(): 'light' | 'dark' {
|
|
const [isDark, setIsDark] = useState(() => document.documentElement.classList.contains('dark'));
|
|
|
|
useEffect(() => {
|
|
const observer = new MutationObserver(() => {
|
|
setIsDark(document.documentElement.classList.contains('dark'));
|
|
});
|
|
observer.observe(document.documentElement, { attributes: true, attributeFilter: ['class'] });
|
|
|
|
return () => observer.disconnect();
|
|
}, []);
|
|
|
|
return isDark ? 'dark' : 'light';
|
|
}
|