react18-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.85 kB
JavaScript
var T=Object.defineProperty;var b=Object.getOwnPropertyDescriptor;var F=Object.getOwnPropertyNames;var R=Object.prototype.hasOwnProperty;var z=(o,e)=>{for(var t in e)T(o,t,{get:e[t],enumerable:!0})},L=(o,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let c of F(e))!R.call(o,c)&&c!==t&&T(o,c,{get:()=>e[c],enumerable:!(n=b(e,c))||n.enumerable});return o};var D=o=>L(T({},"__esModule",{value:!0}),o);var A={};z(A,{ColorSwitch:()=>E});module.exports=D(A);var u={"color-switch":"react18-themes--color-switch",swing:"react18-themes--swing"};var w=require("react");var g=require("r18gs");var S="rth",l="light",d="dark",p="system";var P={t:"",d,l,c:p,s:l},C=o=>{let e=o!=null?o:`#${S}`;return(0,g.useRGS)(e,()=>{let t=typeof m!="undefined"&&localStorage.getItem(e);return t?{...JSON.parse(t),s:m.matches?d:l}:P})},v=o=>{let e=`${o!=null?o:`#${S}`}-`;return(0,g.useRGS)(e,{})};var f=[p,d,l],y,x=o=>{let[e,t]=C(o),[n,c]=v(o);(0,w.useEffect)(()=>{y=window.r},[]);let i=r=>s=>t(h=>({...h,[r]:s})),a={theme:e.t,darkTheme:e.d,lightTheme:e.l,colorSchemePref:e.c,systemColorScheme:e.s,resolvedColorScheme:e.c===p||e.c===""?e.s:e.c,resolvedTheme:e.t,setTheme:i("t"),setDarkTheme:i("d"),setLightTheme:i("l"),setThemeSet:({darkTheme:r,lightTheme:s})=>t(h=>({...h,d:r,l:s})),setColorSchemePref:i("c"),toggleColorScheme(r){let s=f.indexOf(e.c),h=f.length;(s===-1||r&&s===h-1)&&(s=0),i("c")(f[(s+1)%h])},setForcedColorScheme:r=>c(s=>({...s,fc:r})),setForcedTheme:r=>c(s=>({...s,f:r}))};if(y){let r=y(e);a.resolvedColorScheme=r[0],a.resolvedTheme=r[1]}return a};var k=require("react/jsx-runtime"),E=({size:o=25,skipSystem:e,targetSelector:t,className:n,...c})=>{let{toggleColorScheme:i}=x(t),a=[u["color-switch"],n].join(" ");return(0,k.jsx)("button",{className:a,onClick:()=>i(e),style:{"--size":`${o}px`},...c})};0&&(module.exports={ColorSwitch});
;