UNPKG

@particle-network/ui-shared

Version:

Shared utilities for Particle Network design system

28 lines (27 loc) 868 B
import { useEffect, useState } from "react"; function getCurrentTheme() { const html = document.documentElement; if (html.hasAttribute('data-theme')) return 'dark' === html.getAttribute('data-theme') ? 'dark' : 'light'; return html.classList.contains('dark') ? 'dark' : 'light'; } function useTheme() { const [theme, setTheme] = useState(getCurrentTheme); useEffect(()=>{ const observer = new MutationObserver(()=>{ const newTheme = getCurrentTheme(); if (newTheme !== theme) setTheme(newTheme); }); observer.observe(document.documentElement, { attributes: true, attributeFilter: [ 'class', 'data-theme' ] }); return ()=>observer.disconnect(); }, [ theme ]); return theme; } export { useTheme };