nextjs-themes
Version:
Unleash the Power of React Server Components! Use multiple themes on your site with confidence, without losing any advantages of React Server Components.
2 lines (1 loc) • 1.73 kB
JavaScript
var p=Object.defineProperty;var x=Object.getOwnPropertyDescriptor;var k=Object.getOwnPropertyNames;var b=Object.prototype.hasOwnProperty;var w=(o,e)=>{for(var t in e)p(o,t,{get:e[t],enumerable:!0})},D=(o,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of k(e))!b.call(o,s)&&s!==t&&p(o,s,{get:()=>e[s],enumerable:!(r=x(e,s))||r.enumerable});return o};var R=o=>D(p({},"__esModule",{value:!0}),o);var L={};w(L,{ColorSwitch:()=>F});module.exports=R(L);var T={s:"nth-s",system:"nth-system",dark:"nth-dark",a:"nth-a",light:"nth-light"};var y=require("r18gs");var f="nth",i="light",c="dark",a="system";var E={t:"",d:c,l:i,c:a,s:i},S="undefined",C=o=>{let e=o!=null?o:"#"+f;return(0,y.useRGS)(e,()=>{let t=typeof m!==S&&localStorage.getItem(e);return t?{...JSON.parse(t),s:m.matches?c:i}:E})};var g=[a,c,i],d,v=o=>{let[e,t]=C(o);!d&&typeof window!=S&&(d=window.r);let r=n=>h=>t(l=>({...l,[n]:h})),s={theme:e.t,darkTheme:e.d,lightTheme:e.l,colorSchemePref:e.c,systemColorScheme:e.s,resolvedColorScheme:e.c===a||e.c===""?e.s:e.c,resolvedTheme:e.t,setTheme:r("t"),setDarkTheme:r("d"),setLightTheme:r("l"),setThemeSet:({darkTheme:n,lightTheme:h})=>t(l=>({...l,d:n,l:h})),setColorSchemePref:r("c"),toggleColorScheme(n){let h=g.indexOf(e.c),l=g.length;(h===-1||n&&h===l-1)&&(h=0),r("c")(g[(h+1)%l])},setForcedColorScheme:r("fc"),setForcedTheme:r("f")};if(d){let n=d(e);s.resolvedColorScheme=n[0],s.resolvedTheme=n[1]}return s};var u=require("react/jsx-runtime"),F=({size:o=25,skipSystem:e,targetSelector:t,className:r,...s})=>{let{toggleColorScheme:n,colorSchemePref:h}=v(t);return(0,u.jsx)("button",{className:[T.s,T[h],r].join(" "),onClick:()=>n(e),style:{"--s":o+"px"},...s})};0&&(module.exports={ColorSwitch});
;