@themodcraft/addon-providers 1.1.1 → 1.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- import{createBetterAuthProviderPreset as t}from"..";export{t as createBetterAuthProviderPreset};
1
+ export{createBetterAuthProviderPreset}from"../index.js";
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- import{profileFromBetterAuthSession as s}from"@themodcraft/addon-integrations/better-auth";export*from"./runtime";const d={defaultMode:"system",defaultThemeId:"themodcraft-v3",storageKey:"tmc-nexus-theme",themes:[{colorScheme:"dark light",cssVariables:{"--neutral-50":"#ffffff","--neutral-100":"#d9d9d9","--neutral-200":"#9e9e9e","--neutral-300":"#828282","--neutral-400":"#696969","--neutral-500":"#4a4a4a","--neutral-600":"#3c3c3c","--neutral-700":"#212121","--neutral-800":"#161616","--neutral-850":"#131313","--neutral-900":"#121212","--neutral-999":"#000000","--accent-green-500":"#30fa00","--accent-blue-500":"#005efe","--accent-cyan-400":"#00f2ff","--accent-cyan-500":"#00d2de","--primary-background":"#212121","--secondary-background":"#161616","--primary-text":"#ffffff","--secondary-text":"#828282","--tertiary-text":"#4a4a4a","--border-color":"#3c3c3c","--cta-color":"#30fa00","--link-color":"#005efe","--hover-overlay":"rgba(0, 0, 0, 0.49)","--border-radius":"15px","--border-radius-sm":"6px","--font-main":"Inter, system-ui, sans-serif","--font-mono":"JetBrains Mono, Fira Code, monospace"},id:"themodcraft-v3",label:"TheModCraft V3"}]},u={focusSelector:["a[href]","button:not([disabled])","input:not([disabled])","select:not([disabled])","textarea:not([disabled])","[tabindex]:not([tabindex='-1'])","[data-keyboard-focusable='true']"].join(","),shortcuts:[]};function f({loginUrl:t="/login",logoutUrl:r="/logout",onLogout:a,session:o,settingsUrl:n="/account/settings",storageKey:c="tmc-nexus-auth"}={}){const e=s(o);return{loginUrl:t,logoutUrl:r,onLogout:a,profileImage:e?.image??null,settingsUrl:n,status:e?"authenticated":"anonymous",storageKey:c,user:e}}const i={auth:f(),config:{config:{appName:"TMC Nexus",cdnBaseUrl:"https://cdnui.themodcraft.net/api/files"}},keyboard:u,theme:d};export{f as createBetterAuthProviderPreset,u as defaultKeyboardProviderPreset,i as themodcraftV3ProviderPreset,d as themodcraftV3ThemeProviderPreset};
1
+ import{profileFromBetterAuthSession as e}from"@themodcraft/addon-integrations/better-auth";export{AuthProvider,useAuth,useOptionalAuth}from"./runtime/auth-provider.js";export{ConfigProvider,useConfig}from"./runtime/config-provider.js";export{KeyboardProvider,handleKeyboardClick,useKeyboard,useKeyboardShortcut,useOptionalKeyboard}from"./runtime/keyboard-provider.js";export{NexusProvider}from"./runtime/nexus-provider.js";export{ThemeProvider,useOptionalTheme,useTheme}from"./runtime/theme-provider.js";export{UIOverlayProvider,useOptionalUIOverlay,useUIOverlay}from"./runtime/ui-overlay-provider.js";const r={defaultMode:"system",defaultThemeId:"themodcraft-v3",storageKey:"tmc-nexus-theme",themes:[{colorScheme:"dark light",cssVariables:{"--neutral-50":"#ffffff","--neutral-100":"#d9d9d9","--neutral-200":"#9e9e9e","--neutral-300":"#828282","--neutral-400":"#696969","--neutral-500":"#4a4a4a","--neutral-600":"#3c3c3c","--neutral-700":"#212121","--neutral-800":"#161616","--neutral-850":"#131313","--neutral-900":"#121212","--neutral-999":"#000000","--accent-green-500":"#30fa00","--accent-blue-500":"#005efe","--accent-cyan-400":"#00f2ff","--accent-cyan-500":"#00d2de","--primary-background":"#212121","--secondary-background":"#161616","--primary-text":"#ffffff","--secondary-text":"#828282","--tertiary-text":"#4a4a4a","--border-color":"#3c3c3c","--cta-color":"#30fa00","--link-color":"#005efe","--hover-overlay":"rgba(0, 0, 0, 0.49)","--border-radius":"15px","--border-radius-sm":"6px","--font-main":"Inter, system-ui, sans-serif","--font-mono":"JetBrains Mono, Fira Code, monospace"},id:"themodcraft-v3",label:"TheModCraft V3"}]},t={focusSelector:["a[href]","button:not([disabled])","input:not([disabled])","select:not([disabled])","textarea:not([disabled])","[tabindex]:not([tabindex='-1'])","[data-keyboard-focusable='true']"].join(","),shortcuts:[]};function o({loginUrl:r="/login",logoutUrl:t="/logout",onLogout:o,session:a,settingsUrl:n="/account/settings",storageKey:s="tmc-nexus-auth"}={}){const u=e(a);return{loginUrl:r,logoutUrl:t,onLogout:o,profileImage:u?.image??null,settingsUrl:n,status:u?"authenticated":"anonymous",storageKey:s,user:u}}const a={auth:o(),config:{config:{appName:"TMC Nexus",cdnBaseUrl:"https://cdnui.themodcraft.net/api/files"}},keyboard:t,theme:r};export{o as createBetterAuthProviderPreset,t as defaultKeyboardProviderPreset,a as themodcraftV3ProviderPreset,r as themodcraftV3ThemeProviderPreset};
@@ -1 +1 @@
1
- import{defaultKeyboardProviderPreset as o}from"..";export{o as defaultKeyboardProviderPreset};
1
+ export{defaultKeyboardProviderPreset}from"../index.js";
@@ -1 +1 @@
1
- import{themodcraftV3ProviderPreset as o}from"..";export{o as themodcraftV3ProviderPreset};
1
+ export{themodcraftV3ProviderPreset}from"../index.js";
@@ -1 +1,2 @@
1
- "use client";import{jsx as F}from"react/jsx-runtime";import{createContext as _,useCallback as v,useContext as b,useEffect as E,useMemo as q,useState as A}from"react";const I=_(null),h="tmc:nexus-auth";function g(n,o){return o||(n?"authenticated":"anonymous")}function k(n){if(!n||typeof window>"u")return null;try{const o=window.localStorage.getItem(n);return o?JSON.parse(o):null}catch{return null}}function p(n,o){if(!(!n||typeof window>"u")){if(!o){window.localStorage.removeItem(n),window.dispatchEvent(new CustomEvent(h,{detail:null}));return}window.localStorage.setItem(n,JSON.stringify(o)),window.dispatchEvent(new CustomEvent(h,{detail:o}))}}function D({children:n,loginUrl:o,logoutUrl:C,onLogout:L,profileImage:S,refreshOnMount:N=!0,resolveProfileImage:d,resolveUser:m,settingsUrl:P,status:x,storageKey:u="tmc-nexus-auth",user:i=null}){const[f,c]=A(i),[j,l]=A(S??i?.image??null),[J,r]=A(g(i,x));E(()=>{const t=k(u);if(t){c(t.user),l(t.profileImage),r(t.status);return}c(i),l(S??i?.image??null),r(g(i,x))},[i,S,x,u]),E(()=>{function t(e){if(e.key!==u)return;const s=k(u);c(s?.user??null),l(s?.profileImage??null),r(s?.status??"anonymous")}function a(e){const s=e.detail;c(s?.user??null),l(s?.profileImage??null),r(s?.status??"anonymous")}return window.addEventListener("storage",t),window.addEventListener(h,a),()=>{window.removeEventListener("storage",t),window.removeEventListener(h,a)}},[u]);const O=v(async()=>{if(!m)return f;r("loading");const t=await m(),a=d?await d(t):t?.image??null;return c(t),l(a),r(t?"authenticated":"anonymous"),p(u,{profileImage:a,status:t?"authenticated":"anonymous",user:t}),t},[d,m,u,f]);E(()=>{if(!N||!m)return;let t=!1;async function a(){const e=await m?.();if(t)return;const s=d?await d(e??null):e?.image??null;t||(c(e??null),l(s),r(e?"authenticated":"anonymous"),p(u,{profileImage:s,status:e?"authenticated":"anonymous",user:e??null}))}return a(),()=>{t=!0}},[N,d,m,u]);const w=v(t=>{const a=t?.image??null,e=t?"authenticated":"anonymous";c(t),l(a),r(e),p(u,{profileImage:a,status:e,user:t})},[u]),R=v(async()=>{await L?.(),w(null),p(u,null)},[L,w,u]),y=q(()=>({loginUrl:o,logout:R,logoutUrl:C,profileImage:j,refreshUser:O,setUser:w,settingsUrl:P,status:J,user:f}),[o,R,C,O,j,J,w,P,f]);return F(I.Provider,{value:y,children:n})}function G(){const n=b(I);if(!n)throw new Error("useAuth must be used inside AuthProvider.");return n}function H(){return b(I)}export{D as AuthProvider,G as useAuth,H as useOptionalAuth};
1
+ "use client";
2
+ import{c as t}from"react/compiler-runtime";import{useState as e,useEffect as n,useContext as o,createContext as r}from"react";import{jsx as u}from"react/jsx-runtime";const i=r(null),s="tmc:nexus-auth";function l(t,e){return e||(t?"authenticated":"anonymous")}function a(t){if(!t||"undefined"==typeof window)return null;try{const e=window.localStorage.getItem(t);return e?JSON.parse(e):null}catch{return null}}function c(t,e){if(t&&"undefined"!=typeof window){if(!e)return window.localStorage.removeItem(t),void window.dispatchEvent(new CustomEvent(s,{detail:null}));window.localStorage.setItem(t,JSON.stringify(e)),window.dispatchEvent(new CustomEvent(s,{detail:e}))}}function d(o){const r=t(42),{children:d,loginUrl:m,logoutUrl:f,onLogout:g,profileImage:w,refreshOnMount:v,resolveProfileImage:h,resolveUser:p,settingsUrl:y,status:I,storageKey:E,user:U}=o,L=void 0===v||v,S=void 0===E?"tmc-nexus-auth":E,x=void 0===U?null:U,[O,P]=e(x),[A,C]=e(w??x?.image??null);let J;r[0]!==x||r[1]!==I?(J=l(x,I),r[0]=x,r[1]=I,r[2]=J):J=r[2];const[N,b]=e(J);let j,k,K,M,q;r[3]!==x||r[4]!==w||r[5]!==I||r[6]!==S?(j=()=>{const t=a(S);if(t)return P(t.user),C(t.profileImage),void b(t.status);P(x),C(w??x?.image??null),b(l(x,I))},k=[x,w,I,S],r[3]=x,r[4]=w,r[5]=I,r[6]=S,r[7]=j,r[8]=k):(j=r[7],k=r[8]),n(j,k),r[9]!==S?(K=()=>{const t=function(t){if(t.key!==S)return;const e=a(S);P(e?.user??null),C(e?.profileImage??null),b(e?.status??"anonymous")},e=function(t){const e=t.detail;P(e?.user??null),C(e?.profileImage??null),b(e?.status??"anonymous")};return window.addEventListener("storage",t),window.addEventListener(s,e),()=>{window.removeEventListener("storage",t),window.removeEventListener(s,e)}},M=[S],r[9]=S,r[10]=K,r[11]=M):(K=r[10],M=r[11]),n(K,M),r[12]!==h||r[13]!==p||r[14]!==S||r[15]!==O?(q=async()=>{if(!p)return O;b("loading");const t=await p(),e=h?await h(t):t?.image??null;return P(t),C(e),b(t?"authenticated":"anonymous"),c(S,{profileImage:e,status:t?"authenticated":"anonymous",user:t}),t},r[12]=h,r[13]=p,r[14]=S,r[15]=O,r[16]=q):q=r[16];const z=q;let B,D,F;r[17]!==L||r[18]!==h||r[19]!==p||r[20]!==S?(B=()=>{if(!L||!p)return;let t=!1;return async function(){const e=await(p?.());if(t)return;const n=h?await h(e??null):e?.image??null;t||(P(e??null),C(n),b(e?"authenticated":"anonymous"),c(S,{profileImage:n,status:e?"authenticated":"anonymous",user:e??null}))}(),()=>{t=!0}},D=[L,h,p,S],r[17]=L,r[18]=h,r[19]=p,r[20]=S,r[21]=B,r[22]=D):(B=r[21],D=r[22]),n(B,D),r[23]!==S?(F=t=>{const e=t?.image??null,n=t?"authenticated":"anonymous";P(t),C(e),b(n),c(S,{profileImage:e,status:n,user:t})},r[23]=S,r[24]=F):F=r[24];const G=F;let H;r[25]!==g||r[26]!==G||r[27]!==S?(H=async()=>{await(g?.()),G(null),c(S,null)},r[25]=g,r[26]=G,r[27]=S,r[28]=H):H=r[28];const Q=H;let R;r[29]!==m||r[30]!==Q||r[31]!==f||r[32]!==z||r[33]!==A||r[34]!==N||r[35]!==G||r[36]!==y||r[37]!==O?(R={loginUrl:m,logout:Q,logoutUrl:f,profileImage:A,refreshUser:z,setUser:G,settingsUrl:y,status:N,user:O},r[29]=m,r[30]=Q,r[31]=f,r[32]=z,r[33]=A,r[34]=N,r[35]=G,r[36]=y,r[37]=O,r[38]=R):R=r[38];const T=R;let V;return r[39]!==d||r[40]!==T?(V=u(i.Provider,{value:T,children:d}),r[39]=d,r[40]=T,r[41]=V):V=r[41],V}function m(){const t=o(i);if(!t)throw new Error("useAuth must be used inside AuthProvider.");return t}function f(){return o(i)}export{d as AuthProvider,m as useAuth,f as useOptionalAuth};
@@ -1 +1,2 @@
1
- "use client";import{jsx as n}from"react/jsx-runtime";import{createContext as i,useContext as u,useMemo as s}from"react";const o=i({});function f({children:t,config:e={}}){const r=s(()=>e,[e]);return n(o.Provider,{value:r,children:t})}function C(){return u(o)}export{f as ConfigProvider,C as useConfig};
1
+ "use client";
2
+ import{c as r}from"react/compiler-runtime";import{useContext as t,createContext as o}from"react";import{jsx as e}from"react/jsx-runtime";const n=o({});function i(t){const o=r(5),{children:i,config:c}=t;let m;o[0]!==c?(m=void 0===c?{}:c,o[0]=c,o[1]=m):m=o[1];const u=m;let f;return o[2]!==i||o[3]!==u?(f=e(n.Provider,{value:u,children:i}),o[2]=i,o[3]=u,o[4]=f):f=o[4],f}function c(){return t(n)}export{i as ConfigProvider,c as useConfig};
@@ -1 +1 @@
1
- export*from"./auth-provider";export*from"./config-provider";export*from"./keyboard-provider";export*from"./nexus-provider";export*from"./theme-provider";export*from"./ui-overlay-provider";
1
+ export{AuthProvider,useAuth,useOptionalAuth}from"./auth-provider.js";export{ConfigProvider,useConfig}from"./config-provider.js";export{KeyboardProvider,handleKeyboardClick,useKeyboard,useKeyboardShortcut,useOptionalKeyboard}from"./keyboard-provider.js";export{NexusProvider}from"./nexus-provider.js";export{ThemeProvider,useOptionalTheme,useTheme}from"./theme-provider.js";export{UIOverlayProvider,useOptionalUIOverlay,useUIOverlay}from"./ui-overlay-provider.js";
@@ -1 +1,2 @@
1
- "use client";import{jsx as p}from"react/jsx-runtime";import{createContext as K,useCallback as f,useContext as y,useEffect as s,useMemo as w,useRef as E}from"react";const h=["a[href]","button:not([disabled])","input:not([disabled])","select:not([disabled])","textarea:not([disabled])","[tabindex]:not([tabindex='-1'])","[data-keyboard-focusable='true']"].join(","),u=K(null);function k(e){return e instanceof HTMLElement?e.isContentEditable||e instanceof HTMLInputElement||e instanceof HTMLSelectElement||e instanceof HTMLTextAreaElement:!1}function B(e,n){return n.enabled!==!1&&e.key.toLowerCase()===n.key.toLowerCase()&&!!e.altKey==!!n.altKey&&!!e.ctrlKey==!!n.ctrlKey&&!!e.metaKey==!!n.metaKey&&!!e.shiftKey==!!n.shiftKey}function b(e){return Array.from(document.querySelectorAll(e)).filter(n=>{const a=window.getComputedStyle(n);return!n.hasAttribute("disabled")&&a.display!=="none"&&a.visibility!=="hidden"})}function v({children:e,focusSelector:n=h,shortcuts:a=[]}){const i=E(new Map);s(()=>{i.current=new Map(a.map(t=>[t.id,t]))},[a]),s(()=>{function t(r){for(const o of i.current.values())B(r,o)&&(!o.allowInEditable&&k(r.target)||((o.preventDefault??!0)&&r.preventDefault(),o.handler(r)))}return window.addEventListener("keydown",t),()=>window.removeEventListener("keydown",t)},[]);const d=f(t=>(i.current.set(t.id,t),()=>{i.current.delete(t.id)}),[]),l=f((t,r=n)=>{const o=b(r);if(!o.length)return;const c=document.activeElement instanceof HTMLElement?o.indexOf(document.activeElement):-1,x=c===-1?0:(c+t+o.length)%o.length;o[x]?.focus()},[n]),m=w(()=>({focusFirst:(t=n)=>b(t)[0]?.focus(),focusNext:(t=n)=>l(1,t),focusPrevious:(t=n)=>l(-1,t),registerShortcut:d}),[l,n,d]);return p(u.Provider,{value:m,children:e})}function C(){const e=y(u);if(!e)throw new Error("useKeyboard must be used inside KeyboardProvider.");return e}function T(){return y(u)}function g(e){const n=C();s(()=>n.registerShortcut(e),[n,e])}function H(e,n){(e.key==="Enter"||e.key===" ")&&(e.preventDefault(),n())}export{v as KeyboardProvider,H as handleKeyboardClick,C as useKeyboard,g as useKeyboardShortcut,T as useOptionalKeyboard};
1
+ "use client";
2
+ import{c as e}from"react/compiler-runtime";import{useRef as t,useEffect as n,useContext as o,createContext as r}from"react";import{jsx as i}from"react/jsx-runtime";const c=["a[href]","button:not([disabled])","input:not([disabled])","select:not([disabled])","textarea:not([disabled])","[tabindex]:not([tabindex='-1'])","[data-keyboard-focusable='true']"].join(","),l=r(null);function a(e){return e instanceof HTMLElement&&(e.isContentEditable||e instanceof HTMLInputElement||e instanceof HTMLSelectElement||e instanceof HTMLTextAreaElement)}function s(e,t){return!1!==t.enabled&&e.key.toLowerCase()===t.key.toLowerCase()&&Boolean(e.altKey)===Boolean(t.altKey)&&Boolean(e.ctrlKey)===Boolean(t.ctrlKey)&&Boolean(e.metaKey)===Boolean(t.metaKey)&&Boolean(e.shiftKey)===Boolean(t.shiftKey)}function u(e){return Array.from(document.querySelectorAll(e)).filter(e=>{const t=window.getComputedStyle(e);return!e.hasAttribute("disabled")&&"none"!==t.display&&"hidden"!==t.visibility})}function d(o){const r=e(24),{children:d,focusSelector:m,shortcuts:y}=o,b=void 0===m?c:m;let v;r[0]!==y?(v=void 0===y?[]:y,r[0]=y,r[1]=v):v=r[1];const h=v;let p;r[2]===Symbol.for("react.memo_cache_sentinel")?(p=new Map,r[2]=p):p=r[2];const w=t(p);let E,K,L,S,x;r[3]!==h?(E=()=>{w.current=new Map(h.map(f))},K=[h],r[3]=h,r[4]=E,r[5]=K):(E=r[4],K=r[5]),n(E,K),r[6]===Symbol.for("react.memo_cache_sentinel")?(L=()=>{const e=function(e){for(const t of w.current.values())s(e,t)&&(!t.allowInEditable&&a(e.target)||((t.preventDefault??1)&&e.preventDefault(),t.handler(e)))};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},S=[],r[6]=L,r[7]=S):(L=r[6],S=r[7]),n(L,S),r[8]===Symbol.for("react.memo_cache_sentinel")?(x=e=>(w.current.set(e.id,e),()=>{w.current.delete(e.id)}),r[8]=x):x=r[8];const B=x;let g;r[9]!==b?(g=(e,t)=>{const n=u(void 0===t?b:t);if(!n.length)return;const o=document.activeElement instanceof HTMLElement?n.indexOf(document.activeElement):-1,r=-1===o?0:(o+e+n.length)%n.length;n[r]?.focus()},r[9]=b,r[10]=g):g=r[10];const k=g;let M,T,_,H;r[11]!==b?(M=e=>{const t=void 0===e?b:e;return u(t)[0]?.focus()},r[11]=b,r[12]=M):M=r[12],r[13]!==k||r[14]!==b?(T=e=>k(1,void 0===e?b:e),_=e=>k(-1,void 0===e?b:e),r[13]=k,r[14]=b,r[15]=T,r[16]=_):(T=r[15],_=r[16]),r[17]!==M||r[18]!==T||r[19]!==_?(H={focusFirst:M,focusNext:T,focusPrevious:_,registerShortcut:B},r[17]=M,r[18]=T,r[19]=_,r[20]=H):H=r[20];const A=H;let C;return r[21]!==d||r[22]!==A?(C=i(l.Provider,{value:A,children:d}),r[21]=d,r[22]=A,r[23]=C):C=r[23],C}function f(e){return[e.id,e]}function m(){const e=o(l);if(!e)throw new Error("useKeyboard must be used inside KeyboardProvider.");return e}function y(){return o(l)}function b(t){const o=e(4),r=m();let i,c;o[0]!==r||o[1]!==t?(i=()=>r.registerShortcut(t),c=[r,t],o[0]=r,o[1]=t,o[2]=i,o[3]=c):(i=o[2],c=o[3]),n(i,c)}function v(e,t){"Enter"!==e.key&&" "!==e.key||(e.preventDefault(),t())}export{d as KeyboardProvider,v as handleKeyboardClick,m as useKeyboard,b as useKeyboardShortcut,y as useOptionalKeyboard};
@@ -1 +1,2 @@
1
- "use client";import{jsx as r}from"react/jsx-runtime";import{LicenseGate as t,TMC_ENTITLEMENTS as c}from"@themodcraft/license-client";import{AuthProvider as f}from"./auth-provider";import{ConfigProvider as h}from"./config-provider";import{KeyboardProvider as l}from"./keyboard-provider";import{ThemeProvider as p}from"./theme-provider";import{UIOverlayProvider as v}from"./ui-overlay-provider";function N({auth:e,children:o,config:i,keyboard:d,overlay:m,theme:n}){return r(t,{required:c.addonProviders,children:r(h,{...i,children:r(p,{...n,children:r(f,{...e,children:r(l,{...d,children:r(v,{...m,children:o})})})})})})}export{N as NexusProvider};
1
+ "use client";
2
+ import{c as r}from"react/compiler-runtime";import{LicenseGate as e,TMC_ENTITLEMENTS as o}from"@themodcraft/license-client";import{AuthProvider as i}from"./auth-provider.js";import{ConfigProvider as t}from"./config-provider.js";import{KeyboardProvider as m}from"./keyboard-provider.js";import{ThemeProvider as d}from"./theme-provider.js";import{UIOverlayProvider as n}from"./ui-overlay-provider.js";import{jsx as c}from"react/jsx-runtime";function p(p){const l=r(15),{auth:f,children:h,config:a,keyboard:s,overlay:u,theme:v}=p;let j,y,b,g,k;return l[0]!==h||l[1]!==u?(j=c(n,{...u,children:h}),l[0]=h,l[1]=u,l[2]=j):j=l[2],l[3]!==s||l[4]!==j?(y=c(m,{...s,children:j}),l[3]=s,l[4]=j,l[5]=y):y=l[5],l[6]!==f||l[7]!==y?(b=c(i,{...f,children:y}),l[6]=f,l[7]=y,l[8]=b):b=l[8],l[9]!==b||l[10]!==v?(g=c(d,{...v,children:b}),l[9]=b,l[10]=v,l[11]=g):g=l[11],l[12]!==a||l[13]!==g?(k=c(e,{required:o.addonProviders,children:c(t,{...a,children:g})}),l[12]=a,l[13]=g,l[14]=k):k=l[14],k}export{p as NexusProvider};
@@ -1 +1,2 @@
1
- "use client";import{jsx as $}from"react/jsx-runtime";import{createContext as N,useCallback as I,useContext as T,useEffect as w,useMemo as P,useState as b}from"react";const f=N(null),E="tmc:nexus-theme-mode",v="tmc:nexus-theme-id";function M(i){return i.startsWith("--")?i:`--tmc-${i.replace(/[A-Z]/g,m=>`-${m.toLowerCase()}`).replace(/[_\s]+/g,"-")}`}function x(i,m){if(!m){document.documentElement.removeAttribute(i);return}document.documentElement.setAttribute(i,m)}function j({children:i,defaultMode:m="system",defaultThemeId:L,storageKey:t,themes:c=[]}){const V=L??c[0]?.id??"default",[h,a]=b(V),[l,u]=b(m),n=c.find(e=>e.id===h)??c[0];w(()=>{if(!t)return;const e=window.localStorage.getItem(`${t}:theme`),s=window.localStorage.getItem(`${t}:mode`);e&&a(e),(s==="light"||s==="dark"||s==="system")&&u(s)},[t]),w(()=>{if(!t)return;function e(o){o.key===`${t}:theme`&&o.newValue&&a(o.newValue),o.key===`${t}:mode`&&(o.newValue==="light"||o.newValue==="dark"||o.newValue==="system")&&u(o.newValue)}function s(o){const r=o.detail?.mode;(r==="light"||r==="dark"||r==="system")&&u(r)}function d(o){const r=o.detail?.themeId;r&&a(r)}return window.addEventListener("storage",e),window.addEventListener(E,s),window.addEventListener(v,d),()=>{window.removeEventListener("storage",e),window.removeEventListener(E,s),window.removeEventListener(v,d)}},[t]),w(()=>{const e=document.documentElement,s=[];return x("data-tmc-theme",n?.id),x("data-tmc-theme-mode",l),n?.className&&e.classList.add(n.className),n?.colorScheme&&(e.style.colorScheme=n.colorScheme),Object.entries(n?.cssVariables??{}).forEach(([d,o])=>{const r=M(d);s.push(r),e.style.setProperty(r,String(o))}),()=>{s.forEach(d=>e.style.removeProperty(d)),n?.className&&e.classList.remove(n.className),n?.colorScheme&&e.style.removeProperty("color-scheme")}},[n,l]);const p=I(e=>{a(e),t&&(window.localStorage.setItem(`${t}:theme`,e),window.dispatchEvent(new CustomEvent(v,{detail:{themeId:e}})))},[t]),S=I(e=>{u(e),t&&(window.localStorage.setItem(`${t}:mode`,e),window.dispatchEvent(new CustomEvent(E,{detail:{mode:e}})))},[t]),C=P(()=>({activeTheme:n,mode:l,setMode:S,setThemeId:p,themeId:h,themes:c}),[n,l,S,p,h,c]);return $(f.Provider,{value:C,children:i})}function g(){const i=T(f);if(!i)throw new Error("useTheme must be used inside ThemeProvider.");return i}function O(){return T(f)}export{j as ThemeProvider,O as useOptionalTheme,g as useTheme};
1
+ "use client";
2
+ import{c as e}from"react/compiler-runtime";import{useState as t,useEffect as o,useContext as n,createContext as r}from"react";import{jsx as s}from"react/jsx-runtime";const m=r(null),d="tmc:nexus-theme-mode",c="tmc:nexus-theme-id";function i(e,t){t?document.documentElement.setAttribute(e,t):document.documentElement.removeAttribute(e)}function a(n){const r=e(29),{children:a,defaultMode:l,defaultThemeId:u,storageKey:w,themes:h}=n,v=void 0===l?"system":l;let f;r[0]!==h?(f=void 0===h?[]:h,r[0]=h,r[1]=f):f=r[1];const E=f,g=u??E[0]?.id??"default",[y,p]=t(g),[I,L]=t(v);let S;r[2]!==y||r[3]!==E?(S=E.find(e=>e.id===y)??E[0],r[2]=y,r[3]=E,r[4]=S):S=r[4];const $=S;let V,b,k,P,T,x,N;r[5]!==w?(V=()=>{if(!w)return;const e=window.localStorage.getItem(`${w}:theme`),t=window.localStorage.getItem(`${w}:mode`);e&&p(e),"light"!==t&&"dark"!==t&&"system"!==t||L(t)},b=[w],r[5]=w,r[6]=V,r[7]=b):(V=r[6],b=r[7]),o(V,b),r[8]!==w?(k=()=>{if(!w)return;const e=function(e){e.key===`${w}:theme`&&e.newValue&&p(e.newValue),e.key!==`${w}:mode`||"light"!==e.newValue&&"dark"!==e.newValue&&"system"!==e.newValue||L(e.newValue)},t=function(e){const t=e.detail?.mode;"light"!==t&&"dark"!==t&&"system"!==t||L(t)},o=function(e){const t=e.detail?.themeId;t&&p(t)};return window.addEventListener("storage",e),window.addEventListener(d,t),window.addEventListener(c,o),()=>{window.removeEventListener("storage",e),window.removeEventListener(d,t),window.removeEventListener(c,o)}},P=[w],r[8]=w,r[9]=k,r[10]=P):(k=r[9],P=r[10]),o(k,P),r[11]!==$||r[12]!==I?(x=()=>{const e=document.documentElement,t=[];return i("data-tmc-theme",$?.id),i("data-tmc-theme-mode",I),$?.className&&e.classList.add($.className),$?.colorScheme&&(e.style.colorScheme=$.colorScheme),Object.entries($?.cssVariables??{}).forEach(o=>{const[n,r]=o,s=(m=n).startsWith("--")?m:`--tmc-${m.replace(/[A-Z]/g,e=>`-${e.toLowerCase()}`).replace(/[_\s]+/g,"-")}`;var m;t.push(s),e.style.setProperty(s,String(r))}),()=>{t.forEach(t=>e.style.removeProperty(t)),$?.className&&e.classList.remove($.className),$?.colorScheme&&e.style.removeProperty("color-scheme")}},T=[$,I],r[11]=$,r[12]=I,r[13]=T,r[14]=x):(T=r[13],x=r[14]),o(x,T),r[15]!==w?(N=e=>{p(e),w&&(window.localStorage.setItem(`${w}:theme`,e),window.dispatchEvent(new CustomEvent(c,{detail:{themeId:e}})))},r[15]=w,r[16]=N):N=r[16];const A=N;let C;r[17]!==w?(C=e=>{L(e),w&&(window.localStorage.setItem(`${w}:mode`,e),window.dispatchEvent(new CustomEvent(d,{detail:{mode:e}})))},r[17]=w,r[18]=C):C=r[18];const j=C;let M;r[19]!==$||r[20]!==I||r[21]!==j||r[22]!==A||r[23]!==y||r[24]!==E?(M={activeTheme:$,mode:I,setMode:j,setThemeId:A,themeId:y,themes:E},r[19]=$,r[20]=I,r[21]=j,r[22]=A,r[23]=y,r[24]=E,r[25]=M):M=r[25];const K=M;let O;return r[26]!==a||r[27]!==K?(O=s(m.Provider,{value:K,children:a}),r[26]=a,r[27]=K,r[28]=O):O=r[28],O}function l(){const e=n(m);if(!e)throw new Error("useTheme must be used inside ThemeProvider.");return e}function u(){return n(m)}export{a as ThemeProvider,u as useOptionalTheme,l as useTheme};
@@ -1 +1,2 @@
1
- "use client";import{jsx as y}from"react/jsx-runtime";import{createContext as p,useCallback as l,useContext as c,useMemo as x,useState as d}from"react";const a=p(null);function m({children:o}){const[r,n]=d([]),u=l(e=>{n(t=>t.includes(e)?t:[...t,e])},[]),i=l(e=>{n(t=>t.filter(s=>s!==e))},[]),v=l(e=>{n(t=>t.includes(e)?t.filter(s=>s!==e):[...t,e])},[]),O=x(()=>({closeOverlay:i,isOverlayOpen:e=>r.includes(e),openOverlay:u,openOverlayIds:r,toggleOverlay:v}),[i,u,r,v]);return y(a.Provider,{value:O,children:o})}function U(){const o=c(a);if(!o)throw new Error("useUIOverlay must be used inside UIOverlayProvider.");return o}function C(){return c(a)}export{m as UIOverlayProvider,C as useOptionalUIOverlay,U as useUIOverlay};
1
+ "use client";
2
+ import{c as e}from"react/compiler-runtime";import{useState as r,useContext as t,createContext as o}from"react";import{jsx as n}from"react/jsx-runtime";const l=o(null);function c(t){const o=e(12),{children:c}=t;let i;o[0]===Symbol.for("react.memo_cache_sentinel")?(i=[],o[0]=i):i=o[0];const[s,m]=r(i);let a;o[1]===Symbol.for("react.memo_cache_sentinel")?(a=e=>{m(r=>r.includes(e)?r:[...r,e])},o[1]=a):a=o[1];const u=a;let f;o[2]===Symbol.for("react.memo_cache_sentinel")?(f=e=>{m(r=>r.filter(r=>r!==e))},o[2]=f):f=o[2];const y=f;let d;o[3]===Symbol.for("react.memo_cache_sentinel")?(d=e=>{m(r=>r.includes(e)?r.filter(r=>r!==e):[...r,e])},o[3]=d):d=o[3];const v=d;let p,O;o[4]!==s?(p=e=>s.includes(e),o[4]=s,o[5]=p):p=o[5],o[6]!==s||o[7]!==p?(O={closeOverlay:y,isOverlayOpen:p,openOverlay:u,openOverlayIds:s,toggleOverlay:v},o[6]=s,o[7]=p,o[8]=O):O=o[8];const _=O;let h;return o[9]!==c||o[10]!==_?(h=n(l.Provider,{value:_,children:c}),o[9]=c,o[10]=_,o[11]=h):h=o[11],h}function i(){const e=t(l);if(!e)throw new Error("useUIOverlay must be used inside UIOverlayProvider.");return e}function s(){return t(l)}export{c as UIOverlayProvider,s as useOptionalUIOverlay,i as useUIOverlay};
@@ -1 +1 @@
1
- import{themodcraftV3ThemeProviderPreset as o}from"..";export{o as themodcraftV3ThemeProviderPreset};
1
+ export{themodcraftV3ThemeProviderPreset}from"../index.js";
package/package.json CHANGED
@@ -1,11 +1,13 @@
1
1
  {
2
2
  "name": "@themodcraft/addon-providers",
3
- "version": "1.1.1",
3
+ "version": "1.1.2",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
7
7
  "type": "module",
8
- "files": ["dist"],
8
+ "files": [
9
+ "dist"
10
+ ],
9
11
  "exports": {
10
12
  ".": {
11
13
  "types": "./dist/index.d.ts",
@@ -34,8 +36,8 @@
34
36
  "typecheck": "tsc -p tsconfig.json --noEmit"
35
37
  },
36
38
  "dependencies": {
37
- "@themodcraft/addon-integrations": "1.1.1",
38
- "@themodcraft/license-client": "1.1.1"
39
+ "@themodcraft/addon-integrations": "1.1.2",
40
+ "@themodcraft/license-client": "1.1.2"
39
41
  },
40
42
  "peerDependencies": {
41
43
  "react": "^19.0.0",