@guruhotel/aura-ui
Version:
⚛️ React UI library by GuruHotel
1 lines • 1.46 kB
JavaScript
import e,{useState as t,useMemo as r,useEffect as o}from"react";import n from"./css-baseline";import{SSRProvider as m}from"@react-aria/ssr";import s,{defaultContext as i}from"./theme-context";import l from"./functions/deep-merge";import{copyObject as a}from"./functions/object";import{changeTheme as u,getThemeName as c,getDocumentCSSTokens as d,getDocumentTheme as v,useSSR as f}from"./utils";import{jsx as p}from"react/jsx-runtime";import{jsxs as b}from"react/jsx-runtime";export default({theme:e,disableBaseline:h=!1,children:x})=>{const{isBrowser:y}=f(),[j,N]=t(i.type),g=e=>{N((t=>t!==e?e:t))},B=e=>{const t=v(e);t&&g(t)},E=r((()=>{const e=y?d():{},t=l(a(i.theme),e),r=c(j);return{theme:t,type:r,isDark:"dark"===r}}),[j,y]);return o((()=>{var e,t,r;B(null==(e=document)?void 0:e.documentElement);const o=new MutationObserver((e=>{var t;if(e&&e.length>0&&"BODY"===(null==(t=e[0])?void 0:t.target.nodeName)){var r,o,n;const e=null==(r=document)||null==(o=r.body)||null==(n=o.dataset)?void 0:n.theme;e&&g(e)}else{var m;B(null==(m=document)?void 0:m.documentElement)}}));return o.observe(null==(t=document)?void 0:t.documentElement,{attributes:!0,attributeFilter:["data-theme","style"]}),o.observe(null==(r=document)?void 0:r.body,{attributes:!0,attributeFilter:["data-theme","style"]}),()=>o.disconnect()}),[]),o((()=>{y&&e&&null!=e&&e.className&&(u(e.className),g(c(e.className)))}),[y,e]),p(m,{children:b(s.Provider,{value:E,children:[!h&&p(n,{}),x]})})};