@vela-ui/react
Version:
Vela UI React components
3 lines (2 loc) • 1.35 kB
JavaScript
"use client"
;"use client";var i=Object.defineProperty;var l=Object.getOwnPropertyDescriptor;var u=Object.getOwnPropertyNames;var v=Object.prototype.hasOwnProperty;var P=(e,t)=>{for(var s in t)i(e,s,{get:t[s],enumerable:!0})},p=(e,t,s,h)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of u(t))!v.call(e,r)&&r!==s&&i(e,r,{get:()=>t[r],enumerable:!(h=l(t,r))||h.enumerable});return e};var f=e=>p(i({},"__esModule",{value:!0}),e);var w={};P(w,{ThemeProvider:()=>S,ThemeProviderContext:()=>d,useTheme:()=>g});module.exports=f(w);var o=require("react"),a=require("react/jsx-runtime"),y={theme:"system",setTheme:()=>null},d=(0,o.createContext)(y);function S({children:e,defaultTheme:t="system",storageKey:s="vela-ui-theme",...h}){let[r,n]=(0,o.useState)(()=>localStorage.getItem(s)||t);(0,o.useEffect)(()=>{let m=window.document.documentElement;if(m.classList.remove("light","dark"),r==="system"){let T=window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light";m.classList.add(T);return}m.classList.add(r)},[r]);let c={theme:r,setTheme:m=>{localStorage.setItem(s,m),n(m)}};return(0,a.jsx)(d.Provider,{...h,value:c,children:e})}var g=()=>{let e=(0,o.useContext)(d);if(e===void 0)throw new Error("useTheme must be used within a ThemeProvider");return e};0&&(module.exports={ThemeProvider,ThemeProviderContext,useTheme});