@mayank1513/nthul
Version:
Unleash the Power of React Server Components! Use multiple themes on your site with confidence, without losing any advantages of React Server Components.
3 lines (2 loc) • 2.58 kB
JavaScript
"use client";
;var v=Object.create;var f=Object.defineProperty;var C=Object.getOwnPropertyDescriptor;var k=Object.getOwnPropertyNames;var g=Object.getPrototypeOf,x=Object.prototype.hasOwnProperty;var M=(e,t)=>{for(var s in t)f(e,s,{get:t[s],enumerable:!0})},u=(e,t,s,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of k(t))!x.call(e,n)&&n!==s&&f(e,n,{get:()=>t[n],enumerable:!(r=C(t,n))||r.enumerable});return e};var w=(e,t,s)=>(s=e!=null?v(g(e)):{},u(t||!e||!e.__esModule?f(s,"default",{value:e,enumerable:!0}):s,e)),P=e=>u(f({},"__esModule",{value:!0}),e);var U={};M(U,{ThemeSwitcher:()=>G});module.exports=P(U);var y=w(require("r18gs")),a="nthul",A={c:"system",s:"light",t:""},T=e=>(0,y.default)(e!=null?e:a,A);var L=require("react"),p=L.useEffect,D=e=>{p(()=>{let t=matchMedia("(prefers-color-scheme: dark)"),s=()=>{e(r=>({...r,s:t.matches?"dark":"light"}))};return s(),t.addEventListener("change",s),()=>{t.removeEventListener("change",s)}},[e])},E=e=>{let t=(e!=null?e:",system").split(",");return{t:t[0],c:t[1]}},d=0,b=(e,t,s)=>{p(()=>{if(t)return;d=Date.now();let r=s!=null?s:a;e(o=>({...o,...E(localStorage.getItem(r))}));let n=o=>{o.key===r&&e(i=>({...i,...E(o.newValue)}))};return addEventListener("storage",n),()=>{removeEventListener("storage",n)}},[t,e,s])},R=(e="none",t)=>{let s=document,r=s.createElement("style"),n=`transition: ${e.split(";")[0]} !important;`,o=t?`#${t},#${t} *,#${t} ~ *,#${t} ~ * *`:"*";return r.appendChild(s.createTextNode(`${o}{-webkit-${n}-moz-${n}-o-${n}-ms-${n}${n}}`)),s.head.appendChild(r),()=>{getComputedStyle(s.body),setTimeout(()=>{s.head.removeChild(r)},1)}},_=(e,t,s,r)=>{let n=["dark","light",`th-${t}`,s];r&&(n=n.map(o=>{var i;return(i=r[o])!=null?i:o})),e.forEach(o=>{o==null||o.classList.remove(n[0]),o==null||o.classList.remove(n[1]),o==null||o.classList.forEach(i=>{/(?:^|_)th-/.test(i)&&o.classList.remove(i)}),o==null||o.classList.add(n[2]),o==null||o.classList.add(n[3])})},F=(e,t,s,r)=>{let{t:n,c:o,s:i}=e,l=o==="system"?i:o,h=t!=null?t:a,S=!1,c=document,m=c.getElementById(h);S=!s&&(m==null?void 0:m.getAttribute("data-nth"))==="next";let $=t?[m]:[m,c.documentElement];_($,n,l,r),S&&(c.cookie=`${h}=${n},${l}; max-age=31536000; SameSite=Strict;`)},G=({targetId:e,dontSync:t,themeTransition:s,styles:r})=>{if(e==="")throw new Error("id can not be an empty string");let[n,o]=T(e);return D(o),b(o,t,e),p(()=>{let i=R(s,e);if(F(n,e,t,r),!t&&d<Date.now()-300){let{t:l,c:h}=n,S=[l,h].join(","),c=e!=null?e:a;localStorage.setItem(c,S)}i()},[t,r,e,n,s]),null};0&&(module.exports={ThemeSwitcher});