@c15t/react
Version:
Developer-first CMP for React: cookie banner, consent manager, preferences centre. GDPR ready with minimal setup and rich customization
2 lines • 947 B
JavaScript
'use client';
import*as e from"react";function t(t){(0,e.useEffect)(()=>{let e=window.matchMedia("(prefers-color-scheme: dark)"),c=document.documentElement.classList.contains("dark"),s=e=>{document.documentElement.classList.toggle("c15t-dark",e.matches)},n=new MutationObserver(e=>{for(let t of e)if("attributes"===t.type&&"class"===t.attributeName){let e=document.documentElement.classList.contains("dark");document.documentElement.classList.toggle("c15t-dark",e)}});switch(t){case"light":document.documentElement.classList.remove("c15t-dark");break;case"dark":document.documentElement.classList.add("c15t-dark");break;case"system":document.documentElement.classList.toggle("c15t-dark",e.matches),e.addEventListener("change",s);break;default:document.documentElement.classList.toggle("c15t-dark",c),n.observe(document.documentElement,{attributes:!0})}return()=>{e.removeEventListener("change",s),n.disconnect()}},[t])}export{t as useColorScheme};