stoop 0.5.2 → 0.5.3
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.
- package/README.md +5 -1
- package/dist/create-stoop-ssr.js +1 -1
- package/dist/create-stoop.js +1 -1
- package/dist/types/index.d.ts +16 -8
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -15,9 +15,10 @@ yarn add stoop
|
|
|
15
15
|
## Quick Start
|
|
16
16
|
|
|
17
17
|
```tsx
|
|
18
|
+
// stoop.theme.ts
|
|
18
19
|
import { createStoop } from "stoop";
|
|
19
20
|
|
|
20
|
-
const
|
|
21
|
+
const stoop = createStoop({
|
|
21
22
|
theme: {
|
|
22
23
|
colors: {
|
|
23
24
|
primary: "#0070f3",
|
|
@@ -40,6 +41,9 @@ const { styled, css, Provider, useTheme } = createStoop({
|
|
|
40
41
|
},
|
|
41
42
|
});
|
|
42
43
|
|
|
44
|
+
export const { styled, css, Provider, useTheme } = stoop;
|
|
45
|
+
|
|
46
|
+
// Usage
|
|
43
47
|
const Button = styled("button", {
|
|
44
48
|
padding: "$medium",
|
|
45
49
|
backgroundColor: "$primary",
|
package/dist/create-stoop-ssr.js
CHANGED
|
@@ -10,7 +10,7 @@ ${G.join(`
|
|
|
10
10
|
`)}
|
|
11
11
|
}`}function m(J,$="stoop",q="data-theme"){let Y=[];for(let[G,w]of Object.entries(J)){let Q=`[${q}="${G}"]`,W=XJ(w,$,Q);if(W)Y.push(W)}return Y.join(`
|
|
12
12
|
|
|
13
|
-
`)}function j(J,$,q,Y){if(!J||typeof J!=="object")return J;let G=Object.keys(J),w=!1;for(let X of G){let Z=J[X];if(typeof Z==="string"&&Z.includes("$")){w=!0;break}}if(!w&&!$)return J;let Q={},W=!1;for(let X of G){let Z=J[X];if(S(Z)){let D=j(Z,$,q,void 0);if(Q[X]=D,D!==Z)W=!0}else if(typeof Z==="string"&&Z.includes("$")){W=!0;let D=Y||X;if(Z.startsWith("$")&&!Z.includes(" ")&&!Z.includes("calc(")&&Z===Z.trim())if(Z.startsWith("-$")){let F=Z.slice(1);if(F.includes(".")||F.includes("$")){let U=F.includes("$")?F.split("$"):F.split("."),_=!1;for(let B=0;B<U.length;B++){let K=U[B];for(let O=0;O<K.length;O++){let L=K.charCodeAt(O);if(!(L>=48&&L<=57||L>=65&&L<=90||L>=97&&L<=122||L===45||L===95)){_=!0;break}}if(_)break}if(_){let K=`--${U.map((O)=>E(O)).join("-")}`;Q[X]=`calc(-1 * var(${K}))`}else{let B=`--${U.join("-")}`;Q[X]=`calc(-1 * var(${B}))`}}else{let U=c(F,$,D,q);Q[X]=`calc(-1 * ${U})`}}else{let F=Z.slice(1);if(F.includes(".")||F.includes("$")){let U=F.includes("$")?F.split("$"):F.split("."),_=!1;for(let B=0;B<U.length;B++){let K=U[B];for(let O=0;O<K.length;O++){let L=K.charCodeAt(O);if(!(L>=48&&L<=57||L>=65&&L<=90||L>=97&&L<=122||L===45||L===95)){_=!0;break}}if(_)break}if(_){let K=`--${U.map((O)=>E(O)).join("-")}`;Q[X]=`var(${K})`}else{let B=`--${U.join("-")}`;Q[X]=`var(${B})`}}else Q[X]=c(Z,$,D,q)}else Q[X]=Z.replace(sJ,(F)=>{if(F.startsWith("-$")){let U=F.slice(1);return`calc(-1 * ${c(U,$,D,q)})`}return c(F,$,D,q)})}else Q[X]=Z}if(!W)return J;return Q}var I=new R(z);function eJ(J){return J.replace(/([A-Z])/g,"-$1").toLowerCase()}function J0(J){if(J===J.toUpperCase()&&J.length>1)return J.charAt(0)+J.slice(1).toLowerCase();return J}function o(J){if(!J)return"";return J.charAt(0).toLowerCase()+J.slice(1).replace(/([A-Z])/g,"-$1").toLowerCase()}function b(J){if(!J||typeof J!=="string")return"";let $=I.get(J);if($!==void 0)return $;if(/^-[a-z]+-/.test(J))return I.set(J,J),J;let q=J0(J);if(/^[Mm]oz/i.test(q)){if(q.length===3||q.toLowerCase()==="moz")return I.set(J,"-moz"),"-moz";let Q=q.match(/^[Mm]oz(.+)$/i);if(Q&&Q[1]){let[,W]=Q,X=o(W);if(X){let Z=`-moz-${X}`;return I.set(J,Z),Z}}}if(/^[Ww]ebkit/i.test(q)){if(q.length===6||q.toLowerCase()==="webkit")return I.set(J,"-webkit"),"-webkit";let Q=q.match(/^[Ww]ebkit(.+)$/i);if(Q&&Q[1]){let[,W]=Q,X=o(W);if(X){let Z=`-webkit-${X}`;return I.set(J,Z),Z}}}if(/^[Mm]s/i.test(q)){if(q.length===2||q.toLowerCase()==="ms")return I.set(J,"-ms"),"-ms";let Q=q.match(/^[Mm]s(.+)$/i);if(Q&&Q[1]){let[,W]=Q,X=o(W);if(X){let Z=`-ms-${X}`;return I.set(J,Z),Z}}}if(/^O/i.test(q)){if(q.length===1||q.toLowerCase()==="o")return I.set(J,"-o"),"-o";if(/^O[A-Z]/.test(q)){let Q=q.substring(1),W=o(Q);if(W){let X=`-o-${W}`;return I.set(J,X),X}}}let w=eJ(q).replace(/[^a-zA-Z0-9-]/g,"").replace(/^-+|-+$/g,"").replace(/^\d+/,"")||"";return I.set(J,w),w}var $0=new Set(["width","height","min-width","min-height","max-width","max-height","top","right","bottom","left","margin","margin-top","margin-right","margin-bottom","margin-left","padding","padding-top","padding-right","padding-bottom","padding-left","border-width","border-top-width","border-right-width","border-bottom-width","border-left-width","border-radius","border-top-left-radius","border-top-right-radius","border-bottom-left-radius","border-bottom-right-radius","font-size","letter-spacing","word-spacing","text-indent","
|
|
13
|
+
`)}function j(J,$,q,Y){if(!J||typeof J!=="object")return J;let G=Object.keys(J),w=!1;for(let X of G){let Z=J[X];if(typeof Z==="string"&&Z.includes("$")){w=!0;break}}if(!w&&!$)return J;let Q={},W=!1;for(let X of G){let Z=J[X];if(S(Z)){let D=j(Z,$,q,void 0);if(Q[X]=D,D!==Z)W=!0}else if(typeof Z==="string"&&Z.includes("$")){W=!0;let D=Y||X;if(Z.startsWith("$")&&!Z.includes(" ")&&!Z.includes("calc(")&&Z===Z.trim())if(Z.startsWith("-$")){let F=Z.slice(1);if(F.includes(".")||F.includes("$")){let U=F.includes("$")?F.split("$"):F.split("."),_=!1;for(let B=0;B<U.length;B++){let K=U[B];for(let O=0;O<K.length;O++){let L=K.charCodeAt(O);if(!(L>=48&&L<=57||L>=65&&L<=90||L>=97&&L<=122||L===45||L===95)){_=!0;break}}if(_)break}if(_){let K=`--${U.map((O)=>E(O)).join("-")}`;Q[X]=`calc(-1 * var(${K}))`}else{let B=`--${U.join("-")}`;Q[X]=`calc(-1 * var(${B}))`}}else{let U=c(F,$,D,q);Q[X]=`calc(-1 * ${U})`}}else{let F=Z.slice(1);if(F.includes(".")||F.includes("$")){let U=F.includes("$")?F.split("$"):F.split("."),_=!1;for(let B=0;B<U.length;B++){let K=U[B];for(let O=0;O<K.length;O++){let L=K.charCodeAt(O);if(!(L>=48&&L<=57||L>=65&&L<=90||L>=97&&L<=122||L===45||L===95)){_=!0;break}}if(_)break}if(_){let K=`--${U.map((O)=>E(O)).join("-")}`;Q[X]=`var(${K})`}else{let B=`--${U.join("-")}`;Q[X]=`var(${B})`}}else Q[X]=c(Z,$,D,q)}else Q[X]=Z.replace(sJ,(F)=>{if(F.startsWith("-$")){let U=F.slice(1);return`calc(-1 * ${c(U,$,D,q)})`}return c(F,$,D,q)})}else Q[X]=Z}if(!W)return J;return Q}var I=new R(z);function eJ(J){return J.replace(/([A-Z])/g,"-$1").toLowerCase()}function J0(J){if(J===J.toUpperCase()&&J.length>1)return J.charAt(0)+J.slice(1).toLowerCase();return J}function o(J){if(!J)return"";return J.charAt(0).toLowerCase()+J.slice(1).replace(/([A-Z])/g,"-$1").toLowerCase()}function b(J){if(!J||typeof J!=="string")return"";let $=I.get(J);if($!==void 0)return $;if(/^-[a-z]+-/.test(J))return I.set(J,J),J;let q=J0(J);if(/^[Mm]oz/i.test(q)){if(q.length===3||q.toLowerCase()==="moz")return I.set(J,"-moz"),"-moz";let Q=q.match(/^[Mm]oz(.+)$/i);if(Q&&Q[1]){let[,W]=Q,X=o(W);if(X){let Z=`-moz-${X}`;return I.set(J,Z),Z}}}if(/^[Ww]ebkit/i.test(q)){if(q.length===6||q.toLowerCase()==="webkit")return I.set(J,"-webkit"),"-webkit";let Q=q.match(/^[Ww]ebkit(.+)$/i);if(Q&&Q[1]){let[,W]=Q,X=o(W);if(X){let Z=`-webkit-${X}`;return I.set(J,Z),Z}}}if(/^[Mm]s/i.test(q)){if(q.length===2||q.toLowerCase()==="ms")return I.set(J,"-ms"),"-ms";let Q=q.match(/^[Mm]s(.+)$/i);if(Q&&Q[1]){let[,W]=Q,X=o(W);if(X){let Z=`-ms-${X}`;return I.set(J,Z),Z}}}if(/^O/i.test(q)){if(q.length===1||q.toLowerCase()==="o")return I.set(J,"-o"),"-o";if(/^O[A-Z]/.test(q)){let Q=q.substring(1),W=o(Q);if(W){let X=`-o-${W}`;return I.set(J,X),X}}}let w=eJ(q).replace(/[^a-zA-Z0-9-]/g,"").replace(/^-+|-+$/g,"").replace(/^\d+/,"")||"";return I.set(J,w),w}var $0=new Set(["width","height","min-width","min-height","max-width","max-height","top","right","bottom","left","margin","margin-top","margin-right","margin-bottom","margin-left","padding","padding-top","padding-right","padding-bottom","padding-left","border-width","border-top-width","border-right-width","border-bottom-width","border-left-width","border-radius","border-top-left-radius","border-top-right-radius","border-bottom-left-radius","border-bottom-right-radius","font-size","letter-spacing","word-spacing","text-indent","flex-basis","gap","row-gap","column-gap","grid-template-rows","grid-template-columns","grid-auto-rows","grid-auto-columns","perspective","outline-width","outline-offset","clip","vertical-align","object-position","background-position","background-size","mask-position","mask-size","scroll-margin","scroll-padding","shape-margin"]);function vJ(J){return $0.has(J)}function fJ(J,$){if(typeof $==="string"){if(vJ(J)&&/^-?\d+\.?\d*$/.test($.trim()))return`${$}px`;return $}if(typeof $==="number"&&vJ(J))return`${$}px`;return String($)}function bJ(J,$){if(typeof J==="symbol"&&J===BJ)return!0;if(s($))return!0;if(typeof J==="string"&&J.startsWith("__STOOP_COMPONENT_"))return!0;return!1}function q0(J,$){if(typeof $==="object"&&$!==null&&"__stoopClassName"in $&&typeof $.__stoopClassName==="string")return $.__stoopClassName;if(typeof J==="string"&&J.startsWith("__STOOP_COMPONENT_"))return J.replace("__STOOP_COMPONENT_","");return""}function M(J,$="",q=0,Y){if(!J||typeof J!=="object")return"";if(q>HJ)return"";let G=[],w=[],Q=$===""?Object.keys(J).sort():Object.keys(J);for(let X of Q){let Z=J[X];if(bJ(X,Z)){let D=q0(X,Z);if(!D)continue;let H=g(D);if(!H)continue;let F=$?`${$} .${H}`:`.${H}`,U=d(Z)?M(Z,F,q+1,Y):"";if(U)w.push(U);continue}if(d(Z))if(Y&&X in Y){let D=KJ(Y[X]);if(D){let H=M(Z,$,q+1,Y);if(H)w.push(`${D} { ${H} }`)}}else if(X.startsWith("@")){let D=g(X);if(D){let H=M(Z,$,q+1,Y);if(H)w.push(`${D} { ${H} }`)}}else if(X.includes("&")){let D=g(X);if(D){let F=D.split("&").join($),U=M(Z,F,q+1,Y);if(U)w.push(U)}}else if(X.startsWith(":")){let D=g(X);if(D){let H=`${$}${D}`,F=M(Z,H,q+1,Y);if(F)w.push(F)}}else if(X.includes(" ")||X.includes(">")||X.includes("+")||X.includes("~")){let D=g(X);if(D){let F=/^[\s>+~]/.test(D.trim())?`${$}${D}`:`${$} ${D}`,U=M(Z,F,q+1,Y);if(U)w.push(U)}}else{let D=g(X);if(D){let H=$?`${$} ${D}`:D,F=M(Z,H,q+1,Y);if(F)w.push(F)}}else if(Z!==void 0){let D=b(X);if(D&&(typeof Z==="string"||typeof Z==="number")){let H=fJ(D,Z),F=JJ(H);G.push(`${D}: ${F};`)}}}let W=[];if(G.length>0)W.push(`${$} { ${G.join(" ")} }`);return W.push(...w),W.join("")}function Y0(J,$){if(!J||typeof J!=="object")return"";let q=[],Y=Object.keys(J).sort();for(let G of Y){let w=J[G];if(d(w))return"";if($&&G in $)return"";if(G.startsWith("@")||G.includes("&")||G.startsWith(":")||G.includes(" ")||G.includes(">")||G.includes("+")||G.includes("~"))return"";if(w!==void 0&&!bJ(G,w)){let Q=b(G);if(Q&&(typeof w==="string"||typeof w==="number")){let W=fJ(Q,w),X=JJ(W);q.push(`${Q}: ${X};`)}}}return q.join(" ")}function p(J,$,q="stoop",Y,G,w){let Q=A(q),W=v(J,G),X=j(W,$,w),Z=Y0(X,Y),D,H;if(Z)D=Z,H=f(D);else D=M(X,"",0,Y),H=f(D);let F=Q?`${Q}-${H}`:`css-${H}`,U=`${Q}:${F}`,_=r.get(U);if(_)return x(_,Q,U),F;let B;if(Z)B=`.${F} { ${Z} }`;else B=M(X,`.${F}`,0,Y);return r.set(U,B),LJ.set(U,F),x(B,Q,U),F}var CJ=new Map;function kJ(J,$="stoop"){let q=$||"";CJ.set(q,J)}function G0(J="stoop"){let $=J||"";return CJ.get($)||null}function QJ(J,$){let q={...J},Y=Object.keys($);for(let G of Y){if(G==="media")continue;let w=$[G],Q=J[G];if(w&&typeof w==="object"&&!Array.isArray(w)&&Q&&typeof Q==="object"&&!Array.isArray(Q))q[G]={...Q,...w};else if(w!==void 0)q[G]=w}return q}function ZJ(J,$="stoop"){let q=G0($);if(!q)return J;if(TJ(J,q))return J;return QJ(q,J)}function SJ(J,$="stoop",q="data-theme"){if(!P())return;let Y={};for(let[w,Q]of Object.entries(J))Y[w]=ZJ(Q,$);let G=m(Y,$,q);xJ(G,$)}function dJ(J){return function $(q={}){let Y=u(q);return QJ(J,Y)}}function uJ(J,$="stoop",q,Y,G){return function w(Q){return p(Q,J,$,q,Y,G)}}function X0(J,$,q,Y){let G=`@keyframes ${$} {`,w=Object.keys(J).sort((Q,W)=>{let X=parseFloat(Q.replace("%","")),Z=parseFloat(W.replace("%",""));if(Q==="from")return-1;if(W==="from")return 1;if(Q==="to")return 1;if(W==="to")return-1;return X-Z});for(let Q of w){if(!IJ(Q))continue;let W=J[Q];if(!W||typeof W!=="object")continue;G+=` ${Q} {`;let X=j(W,q,Y),Z=Object.keys(X).sort();for(let D of Z){let H=X[D];if(H!==void 0&&(typeof H==="string"||typeof H==="number")){let F=b(D);if(F){let U=String(H);G+=` ${F}: ${U};`}}}G+=" }"}return G+=" }",G}function yJ(J="stoop",$,q){let Y=A(J),G=new R(UJ);return function w(Q){let W=e(Q),X=G.get(W);if(X)return X;let Z=W.slice(0,8),D=Y?`${Y}-${Z}`:`stoop-${Z}`,H=X0(Q,D,$,q),F=`__keyframes_${D}`;return x(H,Y,F),G.set(W,D),D}}var WJ=new Set;function nJ(J,$="stoop",q,Y,G){return function w(Q){let W=e(Q);if(WJ.has(W))return()=>{};WJ.add(W);let X=A($),Z=v(Q,Y),D=j(Z,J,G),H=M(D,"",0,q);return x(H,X,`__global_${W}`),()=>{WJ.delete(W)}}}function hJ(J){let{globalCss:$,media:q,prefix:Y="stoop",theme:G,themeMap:w,utils:Q}=J,W=A(Y),X=u(G),Z=X.media||q,D={...T,...w};kJ(X,W);let H=uJ(X,W,Z,Q,D),F=dJ(X),U=nJ(X,W,Z,Q,D),_=yJ(W,X,D),B=Object.freeze({...X});function K(V){for(let i of V)try{p(i,X,W,Z,Q,D)}catch{}}function O(){if(!J.themes||Object.keys(J.themes).length===0)return;SJ(J.themes,W)}function L(){let V="";if(J.themes&&Object.keys(J.themes).length>0){let N={};for(let[cJ,mJ]of Object.entries(J.themes))N[cJ]=ZJ(mJ,W);let DJ=m(N,W,"data-theme");if(DJ)V+=DJ+`
|
|
14
14
|
`}else{let N=XJ(X,W);if(N)V+=N+`
|
|
15
15
|
`}let i=jJ(),wJ=YJ(i).trim();if(wJ)V+=(V?`
|
|
16
16
|
`:"")+wJ;return V}return{config:{...J,prefix:W},createTheme:F,css:H,getCssText:L,globalCss:U,globalCssConfig:$,keyframes:_,media:Z,mergedThemeMap:D,preloadTheme:O,sanitizedPrefix:W,theme:B,utils:Q,validatedTheme:X,warmCache:K}}function Q1(J){let $=hJ(J);return{config:{...$.config,prefix:$.sanitizedPrefix},createTheme:$.createTheme,css:$.css,getCssText:$.getCssText,globalCss:$.globalCss,keyframes:$.keyframes,preloadTheme:$.preloadTheme,theme:$.theme,warmCache:$.warmCache}}export{Q1 as createStoop};
|
package/dist/create-stoop.js
CHANGED
|
@@ -10,7 +10,7 @@ ${Y.join(`
|
|
|
10
10
|
`)}
|
|
11
11
|
}`}function QJ(J,$="stoop",q="data-theme"){let X=[];for(let[Y,Z]of Object.entries(J)){let G=`[${q}="${Y}"]`,W=RJ(Z,$,G);if(W)X.push(W)}return X.join(`
|
|
12
12
|
|
|
13
|
-
`)}function h(J,$,q,X){if(!J||typeof J!=="object")return J;let Y=Object.keys(J),Z=!1;for(let Q of Y){let D=J[Q];if(typeof D==="string"&&D.includes("$")){Z=!0;break}}if(!Z&&!$)return J;let G={},W=!1;for(let Q of Y){let D=J[Q];if(e(D)){let U=h(D,$,q,void 0);if(G[Q]=U,U!==D)W=!0}else if(typeof D==="string"&&D.includes("$")){W=!0;let U=X||Q;if(D.startsWith("$")&&!D.includes(" ")&&!D.includes("calc(")&&D===D.trim())if(D.startsWith("-$")){let F=D.slice(1);if(F.includes(".")||F.includes("$")){let L=F.includes("$")?F.split("$"):F.split("."),_=!1;for(let w=0;w<L.length;w++){let B=L[w];for(let I=0;I<B.length;I++){let A=B.charCodeAt(I);if(!(A>=48&&A<=57||A>=65&&A<=90||A>=97&&A<=122||A===45||A===95)){_=!0;break}}if(_)break}if(_){let B=`--${L.map((I)=>v(I)).join("-")}`;G[Q]=`calc(-1 * var(${B}))`}else{let w=`--${L.join("-")}`;G[Q]=`calc(-1 * var(${w}))`}}else{let L=GJ(F,$,U,q);G[Q]=`calc(-1 * ${L})`}}else{let F=D.slice(1);if(F.includes(".")||F.includes("$")){let L=F.includes("$")?F.split("$"):F.split("."),_=!1;for(let w=0;w<L.length;w++){let B=L[w];for(let I=0;I<B.length;I++){let A=B.charCodeAt(I);if(!(A>=48&&A<=57||A>=65&&A<=90||A>=97&&A<=122||A===45||A===95)){_=!0;break}}if(_)break}if(_){let B=`--${L.map((I)=>v(I)).join("-")}`;G[Q]=`var(${B})`}else{let w=`--${L.join("-")}`;G[Q]=`var(${w})`}}else G[Q]=GJ(D,$,U,q)}else G[Q]=D.replace(x0,(F)=>{if(F.startsWith("-$")){let L=F.slice(1);return`calc(-1 * ${GJ(L,$,U,q)})`}return GJ(F,$,U,q)})}else G[Q]=D}if(!W)return J;return G}var g=new V(d);function v0(J){return J.replace(/([A-Z])/g,"-$1").toLowerCase()}function T0(J){if(J===J.toUpperCase()&&J.length>1)return J.charAt(0)+J.slice(1).toLowerCase();return J}function ZJ(J){if(!J)return"";return J.charAt(0).toLowerCase()+J.slice(1).replace(/([A-Z])/g,"-$1").toLowerCase()}function i(J){if(!J||typeof J!=="string")return"";let $=g.get(J);if($!==void 0)return $;if(/^-[a-z]+-/.test(J))return g.set(J,J),J;let q=T0(J);if(/^[Mm]oz/i.test(q)){if(q.length===3||q.toLowerCase()==="moz")return g.set(J,"-moz"),"-moz";let G=q.match(/^[Mm]oz(.+)$/i);if(G&&G[1]){let[,W]=G,Q=ZJ(W);if(Q){let D=`-moz-${Q}`;return g.set(J,D),D}}}if(/^[Ww]ebkit/i.test(q)){if(q.length===6||q.toLowerCase()==="webkit")return g.set(J,"-webkit"),"-webkit";let G=q.match(/^[Ww]ebkit(.+)$/i);if(G&&G[1]){let[,W]=G,Q=ZJ(W);if(Q){let D=`-webkit-${Q}`;return g.set(J,D),D}}}if(/^[Mm]s/i.test(q)){if(q.length===2||q.toLowerCase()==="ms")return g.set(J,"-ms"),"-ms";let G=q.match(/^[Mm]s(.+)$/i);if(G&&G[1]){let[,W]=G,Q=ZJ(W);if(Q){let D=`-ms-${Q}`;return g.set(J,D),D}}}if(/^O/i.test(q)){if(q.length===1||q.toLowerCase()==="o")return g.set(J,"-o"),"-o";if(/^O[A-Z]/.test(q)){let G=q.substring(1),W=ZJ(G);if(W){let Q=`-o-${W}`;return g.set(J,Q),Q}}}let Z=v0(q).replace(/[^a-zA-Z0-9-]/g,"").replace(/^-+|-+$/g,"").replace(/^\d+/,"")||"";return g.set(J,Z),Z}var f0=new Set(["width","height","min-width","min-height","max-width","max-height","top","right","bottom","left","margin","margin-top","margin-right","margin-bottom","margin-left","padding","padding-top","padding-right","padding-bottom","padding-left","border-width","border-top-width","border-right-width","border-bottom-width","border-left-width","border-radius","border-top-left-radius","border-top-right-radius","border-bottom-left-radius","border-bottom-right-radius","font-size","letter-spacing","word-spacing","text-indent","line-height","flex-basis","gap","row-gap","column-gap","grid-template-rows","grid-template-columns","grid-auto-rows","grid-auto-columns","perspective","outline-width","outline-offset","clip","vertical-align","object-position","background-position","background-size","mask-position","mask-size","scroll-margin","scroll-padding","shape-margin"]);function Q0(J){return f0.has(J)}function Z0(J,$){if(typeof $==="string"){if(Q0(J)&&/^-?\d+\.?\d*$/.test($.trim()))return`${$}px`;return $}if(typeof $==="number"&&Q0(J))return`${$}px`;return String($)}function W0(J,$){if(typeof J==="symbol"&&J===t)return!0;if(m($))return!0;if(typeof J==="string"&&J.startsWith("__STOOP_COMPONENT_"))return!0;return!1}function C0(J,$){if(typeof $==="object"&&$!==null&&"__stoopClassName"in $&&typeof $.__stoopClassName==="string")return $.__stoopClassName;if(typeof J==="string"&&J.startsWith("__STOOP_COMPONENT_"))return J.replace("__STOOP_COMPONENT_","");return""}function N(J,$="",q=0,X){if(!J||typeof J!=="object")return"";if(q>SJ)return"";let Y=[],Z=[],G=$===""?Object.keys(J).sort():Object.keys(J);for(let Q of G){let D=J[Q];if(W0(Q,D)){let U=C0(Q,D);if(!U)continue;let H=b(U);if(!H)continue;let F=$?`${$} .${H}`:`.${H}`,L=JJ(D)?N(D,F,q+1,X):"";if(L)Z.push(L);continue}if(JJ(D))if(X&&Q in X){let U=iJ(X[Q]);if(U){let H=N(D,$,q+1,X);if(H)Z.push(`${U} { ${H} }`)}}else if(Q.startsWith("@")){let U=b(Q);if(U){let H=N(D,$,q+1,X);if(H)Z.push(`${U} { ${H} }`)}}else if(Q.includes("&")){let U=b(Q);if(U){let F=U.split("&").join($),L=N(D,F,q+1,X);if(L)Z.push(L)}}else if(Q.startsWith(":")){let U=b(Q);if(U){let H=`${$}${U}`,F=N(D,H,q+1,X);if(F)Z.push(F)}}else if(Q.includes(" ")||Q.includes(">")||Q.includes("+")||Q.includes("~")){let U=b(Q);if(U){let F=/^[\s>+~]/.test(U.trim())?`${$}${U}`:`${$} ${U}`,L=N(D,F,q+1,X);if(L)Z.push(L)}}else{let U=b(Q);if(U){let H=$?`${$} ${U}`:U,F=N(D,H,q+1,X);if(F)Z.push(F)}}else if(D!==void 0){let U=i(Q);if(U&&(typeof D==="string"||typeof D==="number")){let H=Z0(U,D),F=BJ(H);Y.push(`${U}: ${F};`)}}}let W=[];if(Y.length>0)W.push(`${$} { ${Y.join(" ")} }`);return W.push(...Z),W.join("")}function b0(J,$){if(!J||typeof J!=="object")return"";let q=[],X=Object.keys(J).sort();for(let Y of X){let Z=J[Y];if(JJ(Z))return"";if($&&Y in $)return"";if(Y.startsWith("@")||Y.includes("&")||Y.startsWith(":")||Y.includes(" ")||Y.includes(">")||Y.includes("+")||Y.includes("~"))return"";if(Z!==void 0&&!W0(Y,Z)){let G=i(Y);if(G&&(typeof Z==="string"||typeof Z==="number")){let W=Z0(G,Z),Q=BJ(W);q.push(`${G}: ${Q};`)}}}return q.join(" ")}function c(J,$,q="stoop",X,Y,Z){let G=K(q),W=o(J,Y),Q=h(W,$,Z),D=b0(Q,X),U,H;if(D)U=D,H=C(U);else U=N(Q,"",0,X),H=C(U);let F=G?`${G}-${H}`:`css-${H}`,L=`${G}:${F}`,_=HJ.get(L);if(_)return y(_,G,L),F;let w;if(D)w=`.${F} { ${D} }`;else w=N(Q,`.${F}`,0,X);return HJ.set(L,w),hJ.set(L,F),y(w,G,L),F}var D0=new Map;function U0(J,$="stoop"){let q=$||"";D0.set(q,J)}function k0(J="stoop"){let $=J||"";return D0.get($)||null}function MJ(J,$){let q={...J},X=Object.keys($);for(let Y of X){if(Y==="media")continue;let Z=$[Y],G=J[Y];if(Z&&typeof Z==="object"&&!Array.isArray(Z)&&G&&typeof G==="object"&&!Array.isArray(G))q[Y]={...G,...Z};else if(Z!==void 0)q[Y]=Z}return q}function EJ(J,$="stoop"){let q=k0($);if(!q)return J;if(G0(J,q))return J;return MJ(q,J)}function WJ(J,$="stoop",q="data-theme"){if(!O())return;let X={};for(let[Z,G]of Object.entries(J))X[Z]=EJ(G,$);let Y=QJ(X,$,q);q0(Y,$)}function H0(J){return function $(q={}){let X=$J(q);return MJ(J,X)}}function F0(J,$="stoop",q,X,Y){return function Z(G){return c(G,J,$,q,X,Y)}}function S0(J,$,q,X){let Y=`@keyframes ${$} {`,Z=Object.keys(J).sort((G,W)=>{let Q=parseFloat(G.replace("%","")),D=parseFloat(W.replace("%",""));if(G==="from")return-1;if(W==="from")return 1;if(G==="to")return 1;if(W==="to")return-1;return Q-D});for(let G of Z){if(!rJ(G))continue;let W=J[G];if(!W||typeof W!=="object")continue;Y+=` ${G} {`;let Q=h(W,q,X),D=Object.keys(Q).sort();for(let U of D){let H=Q[U];if(H!==void 0&&(typeof H==="string"||typeof H==="number")){let F=i(U);if(F){let L=String(H);Y+=` ${F}: ${L};`}}}Y+=" }"}return Y+=" }",Y}function L0(J="stoop",$,q){let X=K(J),Y=new V(dJ);return function Z(G){let W=wJ(G),Q=Y.get(W);if(Q)return Q;let D=W.slice(0,8),U=X?`${X}-${D}`:`stoop-${D}`,H=S0(G,U,$,q),F=`__keyframes_${U}`;return y(H,X,F),Y.set(W,U),U}}var KJ=new Set;function w0(J,$="stoop",q,X,Y){return function Z(G){let W=wJ(G);if(KJ.has(W))return()=>{};KJ.add(W);let Q=K($),D=o(G,X),U=h(D,J,Y),H=N(U,"",0,q);return y(H,Q,`__global_${W}`),()=>{KJ.delete(W)}}}import{useMemo as DJ,forwardRef as d0,createElement as u0,useContext as y0,createContext as h0}from"react";function c0(J,$,q){let X=[];for(let Z in J){let G=$[Z];if(G===void 0)continue;let W=J[Z],Q=G===!0?"true":G===!1?"false":String(G);if(W[Q])X.push(W[Q])}if(X.length===0)return q;if(X.length===1)return{...q,...X[0]};let Y={...X[0]};for(let Z=1;Z<X.length;Z++)Object.assign(Y,X[Z]);return{...q,...Y}}var zJ=null;function n0(){if(!zJ)zJ=h0(null);return zJ}function p0(J){return{__isStoopStyled:!0,__stoopClassName:J,[t]:J,toString:()=>`__STOOP_COMPONENT_${J}`}}function m0(J){return m(J)}var o0=new Set(["alignContent","alignItems","alignSelf","animation","animationDelay","animationDirection","animationDuration","animationFillMode","animationIterationCount","animationName","animationPlayState","animationTimingFunction","aspectRatio","backdropFilter","backfaceVisibility","background","backgroundAttachment","backgroundBlendMode","backgroundClip","backgroundColor","backgroundImage","backgroundOrigin","backgroundPosition","backgroundRepeat","backgroundSize","border","borderBottom","borderBottomColor","borderBottomLeftRadius","borderBottomRightRadius","borderBottomStyle","borderBottomWidth","borderCollapse","borderColor","borderImage","borderImageOutset","borderImageRepeat","borderImageSlice","borderImageSource","borderImageWidth","borderLeft","borderLeftColor","borderLeftStyle","borderLeftWidth","borderRadius","borderRight","borderRightColor","borderRightStyle","borderRightWidth","borderSpacing","borderStyle","borderTop","borderTopColor","borderTopLeftRadius","borderTopRightRadius","borderTopStyle","borderTopWidth","borderWidth","bottom","boxShadow","boxSizing","captionSide","caretColor","clear","clip","clipPath","color","columnCount","columnFill","columnGap","columnRule","columnRuleColor","columnRuleStyle","columnRuleWidth","columnSpan","columnWidth","columns","content","counterIncrement","counterReset","cursor","direction","display","emptyCells","filter","flex","flexBasis","flexDirection","flexFlow","flexGrow","flexShrink","flexWrap","float","font","fontFamily","fontFeatureSettings","fontKerning","fontLanguageOverride","fontSize","fontSizeAdjust","fontStretch","fontStyle","fontSynthesis","fontVariant","fontVariantAlternates","fontVariantCaps","fontVariantEastAsian","fontVariantLigatures","fontVariantNumeric","fontVariantPosition","fontWeight","gap","grid","gridArea","gridAutoColumns","gridAutoFlow","gridAutoRows","gridColumn","gridColumnEnd","gridColumnGap","gridColumnStart","gridGap","gridRow","gridRowEnd","gridRowGap","gridRowStart","gridTemplate","gridTemplateAreas","gridTemplateColumns","gridTemplateRows","height","hyphens","imageOrientation","imageRendering","imageResolution","imeMode","inlineSize","isolation","justifyContent","justifyItems","justifySelf","left","letterSpacing","lineHeight","listStyle","listStyleImage","listStylePosition","listStyleType","margin","marginBottom","marginLeft","marginRight","marginTop","maxHeight","maxWidth","minHeight","minWidth","objectFit","objectPosition","opacity","order","orphans","outline","outlineColor","outlineOffset","outlineStyle","outlineWidth","overflow","overflowWrap","overflowX","overflowY","padding","paddingBottom","paddingLeft","paddingRight","paddingTop","pageBreakAfter","pageBreakBefore","pageBreakInside","perspective","perspectiveOrigin","placeContent","placeItems","placeSelf","pointerEvents","position","quotes","resize","right","rowGap","scrollBehavior","tabSize","tableLayout","textAlign","textAlignLast","textDecoration","textDecorationColor","textDecorationLine","textDecorationStyle","textIndent","textJustify","textOverflow","textShadow","textTransform","textUnderlinePosition","top","transform","transformOrigin","transformStyle","transition","transitionDelay","transitionDuration","transitionProperty","transitionTimingFunction","unicodeBidi","userSelect","verticalAlign","visibility","whiteSpace","width","wordBreak","wordSpacing","wordWrap","writingMode","zIndex"]);function i0(J){return o0.has(J)}function l0(J,$){let q=$?new Set(Object.keys($)):new Set,X={},Y={},Z={};for(let G in J)if(q.has(G))X[G]=J[G];else if(i0(G))Y[G]=J[G];else Z[G]=J[G];return{cssProps:Y,elementProps:Z,variantProps:X}}function B0(J,$="stoop",q,X,Y,Z){return function G(W,Q){let D=Q||s,U;if(Q&&"variants"in Q&&typeof Q.variants==="object"&&Q.variants!==null&&!Array.isArray(Q.variants)){let B=Q.variants;if(Object.keys(B).length>0&&Object.values(B).every((A)=>typeof A==="object"&&A!==null&&!Array.isArray(A))){U=Q.variants;let{variants:A,...R}=Q;D=R}}let H;if(typeof W!=="string"&&m0(W))H=W.__stoopClassName;let F=d0(function B(I,A){let{as:R,className:P,css:x,...j}=I,k=R||W,T=DJ(()=>x&&typeof x==="object"&&x!==null?x:s,[x]),{cssProps:f,elementProps:M,variantProps:z}=l0(j,U),r=y0(Z||n0())?.theme||J,TJ=r.media?{...q,...r.media}:q,fJ=DJ(()=>{if(!U)return"";let E=Object.entries(z);if(E.length===0)return"";return E.sort(([S],[n])=>S.localeCompare(n)).map(([S,n])=>`${S}:${String(n)}`).join("|")},[z]),CJ=DJ(()=>{let E=D;if(U&&fJ)E=c0(U,z,D);if(Object.keys(f).length>0)E=Object.assign({},E,f);if(T!==s)E=Object.assign({},E,T);return E},[fJ,T,f,D,U,z]),E0=DJ(()=>{let E=[];if(H)E.push(H);let S=c(CJ,r,$,TJ,X,Y);if(S)E.push(S);if(P){let n=typeof P==="string"?P:String(P),bJ=lJ(n);if(bJ)E.push(bJ)}return E.length>0?E.join(" "):void 0},[CJ,P,H,r,$,TJ,X,Y]);return u0(k,{...M,className:E0,ref:A})}),L=C(JSON.stringify(D)),_=`${$}-${L}`,w=F;return w.selector=p0(_),w}}import{createContext as _0,useCallback as O0,useContext as r0,useLayoutEffect as l,useMemo as xJ,useRef as gJ,useState as s0}from"react";function VJ(J){if(!O())return{error:"Not in browser environment",success:!1,value:null};try{return{source:"localStorage",success:!0,value:localStorage.getItem(J)}}catch($){return{error:$ instanceof Error?$.message:"localStorage access failed",success:!1,value:null}}}function PJ(J,$){if(!O())return{error:"Not in browser environment",success:!1,value:void 0};try{return localStorage.setItem(J,$),{success:!0,value:void 0}}catch(q){return{error:q instanceof Error?q.message:"localStorage write failed",success:!1,value:void 0}}}function jJ(J){if(!O())return null;let q=`; ${document.cookie}`.split(`; ${J}=`);if(q.length===2)return q.pop()?.split(";").shift()||null;return null}function A0(J,$,q={}){if(!O())return!1;let{maxAge:X=uJ,path:Y=yJ,secure:Z=!1}=q;try{return document.cookie=`${J}=${$}; path=${Y}; max-age=${X}${Z?"; secure":""}`,!0}catch{return!1}}import{jsx as I0}from"react/jsx-runtime";function NJ(J,$,q){if(!O())return;let X=$?jJ($):null,Y=VJ(q),Z=Y.success?Y.value:null;if(X===J&&Z!==J)PJ(q,J);if(Z===J&&$&&X!==J)A0($,J)}function a0(J,$,q){if(!O())return null;if(J!==void 0){let Z=jJ(J);if(Z&&q[Z])return Z}let X=VJ($),Y=X.success?X.value:null;if(Y&&q[Y])return Y;return null}function R0(J,$,q="stoop",X,Y){let Z=_0(null),G=_0(null),W=Object.keys(J),Q=W[0]||"default",D=X&&Y?Y(X):void 0;function U({attribute:H="data-theme",children:F,cookieKey:L,defaultTheme:_,storageKey:w="stoop-theme"}){let[B,I]=s0(_||Q),A=gJ(!1);l(()=>{if(!O()||A.current)return;let M=a0(L,w,J);if(M){if(NJ(M,L,w),M!==B)I(M)}A.current=!0},[L,w,J]),l(()=>{if(!O())return;let M=(z)=>{if(z.key===w&&z.newValue&&J[z.newValue]&&z.newValue!==B)I(z.newValue),NJ(z.newValue,L,w)};return window.addEventListener("storage",M),()=>{window.removeEventListener("storage",M)}},[w,L,B,J]);let R=xJ(()=>{return J[B]||J[_||Q]||$},[B,_,Q,J,$]),P=gJ(!1),x=gJ(!1);l(()=>{if(!O()||P.current)return;WJ(J,q,H),P.current=!0},[J,q,H]),l(()=>{if(!O()||x.current)return;if(D)D(),x.current=!0},[D]),l(()=>{if(!O())return;if(H)document.documentElement.setAttribute(H,B)},[B,H]);let j=O0((M)=>{if(J[M])I(M),PJ(w,M),NJ(M,L,w);else if(!u())console.warn(`[Stoop] Theme "${M}" not found. Available themes: ${W.join(", ")}`)},[w,L,J,W,B]),k=xJ(()=>({theme:R,themeName:B}),[R,B]),T=O0(()=>{let z=(W.indexOf(B)+1)%W.length,vJ=W[z];j(vJ)},[B,j,W]),f=xJ(()=>({availableThemes:W,setTheme:j,theme:R,themeName:B,toggleTheme:T}),[R,B,j,T]);return I0(Z.Provider,{value:k,children:I0(G.Provider,{value:f,children:F})})}return{Provider:U,ThemeContext:Z,ThemeManagementContext:G}}function M0(J){return function $(){let q=r0(J);if(!q)throw new Error("useTheme must be used within a Provider");return q}}function t0(J){let{globalCss:$,media:q,prefix:X="stoop",theme:Y,themeMap:Z,utils:G}=J,W=K(X),Q=$J(Y),D=Q.media||q,U={...p,...Z};U0(Q,W);let H=F0(Q,W,D,G,U),F=H0(Q),L=w0(Q,W,D,G,U),_=L0(W,Q,U),w=Object.freeze({...Q});function B(R){for(let P of R)try{c(P,Q,W,D,G,U)}catch{}}function I(){if(!J.themes||Object.keys(J.themes).length===0)return;WJ(J.themes,W)}function A(){let R="";if(J.themes&&Object.keys(J.themes).length>0){let j={};for(let[T,f]of Object.entries(J.themes))j[T]=EJ(f,W);let k=QJ(j,W,"data-theme");if(k)R+=k+`
|
|
13
|
+
`)}function h(J,$,q,X){if(!J||typeof J!=="object")return J;let Y=Object.keys(J),Z=!1;for(let Q of Y){let D=J[Q];if(typeof D==="string"&&D.includes("$")){Z=!0;break}}if(!Z&&!$)return J;let G={},W=!1;for(let Q of Y){let D=J[Q];if(e(D)){let U=h(D,$,q,void 0);if(G[Q]=U,U!==D)W=!0}else if(typeof D==="string"&&D.includes("$")){W=!0;let U=X||Q;if(D.startsWith("$")&&!D.includes(" ")&&!D.includes("calc(")&&D===D.trim())if(D.startsWith("-$")){let F=D.slice(1);if(F.includes(".")||F.includes("$")){let L=F.includes("$")?F.split("$"):F.split("."),_=!1;for(let w=0;w<L.length;w++){let B=L[w];for(let I=0;I<B.length;I++){let A=B.charCodeAt(I);if(!(A>=48&&A<=57||A>=65&&A<=90||A>=97&&A<=122||A===45||A===95)){_=!0;break}}if(_)break}if(_){let B=`--${L.map((I)=>v(I)).join("-")}`;G[Q]=`calc(-1 * var(${B}))`}else{let w=`--${L.join("-")}`;G[Q]=`calc(-1 * var(${w}))`}}else{let L=GJ(F,$,U,q);G[Q]=`calc(-1 * ${L})`}}else{let F=D.slice(1);if(F.includes(".")||F.includes("$")){let L=F.includes("$")?F.split("$"):F.split("."),_=!1;for(let w=0;w<L.length;w++){let B=L[w];for(let I=0;I<B.length;I++){let A=B.charCodeAt(I);if(!(A>=48&&A<=57||A>=65&&A<=90||A>=97&&A<=122||A===45||A===95)){_=!0;break}}if(_)break}if(_){let B=`--${L.map((I)=>v(I)).join("-")}`;G[Q]=`var(${B})`}else{let w=`--${L.join("-")}`;G[Q]=`var(${w})`}}else G[Q]=GJ(D,$,U,q)}else G[Q]=D.replace(x0,(F)=>{if(F.startsWith("-$")){let L=F.slice(1);return`calc(-1 * ${GJ(L,$,U,q)})`}return GJ(F,$,U,q)})}else G[Q]=D}if(!W)return J;return G}var g=new V(d);function v0(J){return J.replace(/([A-Z])/g,"-$1").toLowerCase()}function T0(J){if(J===J.toUpperCase()&&J.length>1)return J.charAt(0)+J.slice(1).toLowerCase();return J}function ZJ(J){if(!J)return"";return J.charAt(0).toLowerCase()+J.slice(1).replace(/([A-Z])/g,"-$1").toLowerCase()}function i(J){if(!J||typeof J!=="string")return"";let $=g.get(J);if($!==void 0)return $;if(/^-[a-z]+-/.test(J))return g.set(J,J),J;let q=T0(J);if(/^[Mm]oz/i.test(q)){if(q.length===3||q.toLowerCase()==="moz")return g.set(J,"-moz"),"-moz";let G=q.match(/^[Mm]oz(.+)$/i);if(G&&G[1]){let[,W]=G,Q=ZJ(W);if(Q){let D=`-moz-${Q}`;return g.set(J,D),D}}}if(/^[Ww]ebkit/i.test(q)){if(q.length===6||q.toLowerCase()==="webkit")return g.set(J,"-webkit"),"-webkit";let G=q.match(/^[Ww]ebkit(.+)$/i);if(G&&G[1]){let[,W]=G,Q=ZJ(W);if(Q){let D=`-webkit-${Q}`;return g.set(J,D),D}}}if(/^[Mm]s/i.test(q)){if(q.length===2||q.toLowerCase()==="ms")return g.set(J,"-ms"),"-ms";let G=q.match(/^[Mm]s(.+)$/i);if(G&&G[1]){let[,W]=G,Q=ZJ(W);if(Q){let D=`-ms-${Q}`;return g.set(J,D),D}}}if(/^O/i.test(q)){if(q.length===1||q.toLowerCase()==="o")return g.set(J,"-o"),"-o";if(/^O[A-Z]/.test(q)){let G=q.substring(1),W=ZJ(G);if(W){let Q=`-o-${W}`;return g.set(J,Q),Q}}}let Z=v0(q).replace(/[^a-zA-Z0-9-]/g,"").replace(/^-+|-+$/g,"").replace(/^\d+/,"")||"";return g.set(J,Z),Z}var f0=new Set(["width","height","min-width","min-height","max-width","max-height","top","right","bottom","left","margin","margin-top","margin-right","margin-bottom","margin-left","padding","padding-top","padding-right","padding-bottom","padding-left","border-width","border-top-width","border-right-width","border-bottom-width","border-left-width","border-radius","border-top-left-radius","border-top-right-radius","border-bottom-left-radius","border-bottom-right-radius","font-size","letter-spacing","word-spacing","text-indent","flex-basis","gap","row-gap","column-gap","grid-template-rows","grid-template-columns","grid-auto-rows","grid-auto-columns","perspective","outline-width","outline-offset","clip","vertical-align","object-position","background-position","background-size","mask-position","mask-size","scroll-margin","scroll-padding","shape-margin"]);function Q0(J){return f0.has(J)}function Z0(J,$){if(typeof $==="string"){if(Q0(J)&&/^-?\d+\.?\d*$/.test($.trim()))return`${$}px`;return $}if(typeof $==="number"&&Q0(J))return`${$}px`;return String($)}function W0(J,$){if(typeof J==="symbol"&&J===t)return!0;if(m($))return!0;if(typeof J==="string"&&J.startsWith("__STOOP_COMPONENT_"))return!0;return!1}function C0(J,$){if(typeof $==="object"&&$!==null&&"__stoopClassName"in $&&typeof $.__stoopClassName==="string")return $.__stoopClassName;if(typeof J==="string"&&J.startsWith("__STOOP_COMPONENT_"))return J.replace("__STOOP_COMPONENT_","");return""}function N(J,$="",q=0,X){if(!J||typeof J!=="object")return"";if(q>SJ)return"";let Y=[],Z=[],G=$===""?Object.keys(J).sort():Object.keys(J);for(let Q of G){let D=J[Q];if(W0(Q,D)){let U=C0(Q,D);if(!U)continue;let H=b(U);if(!H)continue;let F=$?`${$} .${H}`:`.${H}`,L=JJ(D)?N(D,F,q+1,X):"";if(L)Z.push(L);continue}if(JJ(D))if(X&&Q in X){let U=iJ(X[Q]);if(U){let H=N(D,$,q+1,X);if(H)Z.push(`${U} { ${H} }`)}}else if(Q.startsWith("@")){let U=b(Q);if(U){let H=N(D,$,q+1,X);if(H)Z.push(`${U} { ${H} }`)}}else if(Q.includes("&")){let U=b(Q);if(U){let F=U.split("&").join($),L=N(D,F,q+1,X);if(L)Z.push(L)}}else if(Q.startsWith(":")){let U=b(Q);if(U){let H=`${$}${U}`,F=N(D,H,q+1,X);if(F)Z.push(F)}}else if(Q.includes(" ")||Q.includes(">")||Q.includes("+")||Q.includes("~")){let U=b(Q);if(U){let F=/^[\s>+~]/.test(U.trim())?`${$}${U}`:`${$} ${U}`,L=N(D,F,q+1,X);if(L)Z.push(L)}}else{let U=b(Q);if(U){let H=$?`${$} ${U}`:U,F=N(D,H,q+1,X);if(F)Z.push(F)}}else if(D!==void 0){let U=i(Q);if(U&&(typeof D==="string"||typeof D==="number")){let H=Z0(U,D),F=BJ(H);Y.push(`${U}: ${F};`)}}}let W=[];if(Y.length>0)W.push(`${$} { ${Y.join(" ")} }`);return W.push(...Z),W.join("")}function b0(J,$){if(!J||typeof J!=="object")return"";let q=[],X=Object.keys(J).sort();for(let Y of X){let Z=J[Y];if(JJ(Z))return"";if($&&Y in $)return"";if(Y.startsWith("@")||Y.includes("&")||Y.startsWith(":")||Y.includes(" ")||Y.includes(">")||Y.includes("+")||Y.includes("~"))return"";if(Z!==void 0&&!W0(Y,Z)){let G=i(Y);if(G&&(typeof Z==="string"||typeof Z==="number")){let W=Z0(G,Z),Q=BJ(W);q.push(`${G}: ${Q};`)}}}return q.join(" ")}function c(J,$,q="stoop",X,Y,Z){let G=K(q),W=o(J,Y),Q=h(W,$,Z),D=b0(Q,X),U,H;if(D)U=D,H=C(U);else U=N(Q,"",0,X),H=C(U);let F=G?`${G}-${H}`:`css-${H}`,L=`${G}:${F}`,_=HJ.get(L);if(_)return y(_,G,L),F;let w;if(D)w=`.${F} { ${D} }`;else w=N(Q,`.${F}`,0,X);return HJ.set(L,w),hJ.set(L,F),y(w,G,L),F}var D0=new Map;function U0(J,$="stoop"){let q=$||"";D0.set(q,J)}function k0(J="stoop"){let $=J||"";return D0.get($)||null}function MJ(J,$){let q={...J},X=Object.keys($);for(let Y of X){if(Y==="media")continue;let Z=$[Y],G=J[Y];if(Z&&typeof Z==="object"&&!Array.isArray(Z)&&G&&typeof G==="object"&&!Array.isArray(G))q[Y]={...G,...Z};else if(Z!==void 0)q[Y]=Z}return q}function EJ(J,$="stoop"){let q=k0($);if(!q)return J;if(G0(J,q))return J;return MJ(q,J)}function WJ(J,$="stoop",q="data-theme"){if(!O())return;let X={};for(let[Z,G]of Object.entries(J))X[Z]=EJ(G,$);let Y=QJ(X,$,q);q0(Y,$)}function H0(J){return function $(q={}){let X=$J(q);return MJ(J,X)}}function F0(J,$="stoop",q,X,Y){return function Z(G){return c(G,J,$,q,X,Y)}}function S0(J,$,q,X){let Y=`@keyframes ${$} {`,Z=Object.keys(J).sort((G,W)=>{let Q=parseFloat(G.replace("%","")),D=parseFloat(W.replace("%",""));if(G==="from")return-1;if(W==="from")return 1;if(G==="to")return 1;if(W==="to")return-1;return Q-D});for(let G of Z){if(!rJ(G))continue;let W=J[G];if(!W||typeof W!=="object")continue;Y+=` ${G} {`;let Q=h(W,q,X),D=Object.keys(Q).sort();for(let U of D){let H=Q[U];if(H!==void 0&&(typeof H==="string"||typeof H==="number")){let F=i(U);if(F){let L=String(H);Y+=` ${F}: ${L};`}}}Y+=" }"}return Y+=" }",Y}function L0(J="stoop",$,q){let X=K(J),Y=new V(dJ);return function Z(G){let W=wJ(G),Q=Y.get(W);if(Q)return Q;let D=W.slice(0,8),U=X?`${X}-${D}`:`stoop-${D}`,H=S0(G,U,$,q),F=`__keyframes_${U}`;return y(H,X,F),Y.set(W,U),U}}var KJ=new Set;function w0(J,$="stoop",q,X,Y){return function Z(G){let W=wJ(G);if(KJ.has(W))return()=>{};KJ.add(W);let Q=K($),D=o(G,X),U=h(D,J,Y),H=N(U,"",0,q);return y(H,Q,`__global_${W}`),()=>{KJ.delete(W)}}}import{useMemo as DJ,forwardRef as d0,createElement as u0,useContext as y0,createContext as h0}from"react";function c0(J,$,q){let X=[];for(let Z in J){let G=$[Z];if(G===void 0)continue;let W=J[Z],Q=G===!0?"true":G===!1?"false":String(G);if(W[Q])X.push(W[Q])}if(X.length===0)return q;if(X.length===1)return{...q,...X[0]};let Y={...X[0]};for(let Z=1;Z<X.length;Z++)Object.assign(Y,X[Z]);return{...q,...Y}}var zJ=null;function n0(){if(!zJ)zJ=h0(null);return zJ}function p0(J){return{__isStoopStyled:!0,__stoopClassName:J,[t]:J,toString:()=>`__STOOP_COMPONENT_${J}`}}function m0(J){return m(J)}var o0=new Set(["alignContent","alignItems","alignSelf","animation","animationDelay","animationDirection","animationDuration","animationFillMode","animationIterationCount","animationName","animationPlayState","animationTimingFunction","aspectRatio","backdropFilter","backfaceVisibility","background","backgroundAttachment","backgroundBlendMode","backgroundClip","backgroundColor","backgroundImage","backgroundOrigin","backgroundPosition","backgroundRepeat","backgroundSize","border","borderBottom","borderBottomColor","borderBottomLeftRadius","borderBottomRightRadius","borderBottomStyle","borderBottomWidth","borderCollapse","borderColor","borderImage","borderImageOutset","borderImageRepeat","borderImageSlice","borderImageSource","borderImageWidth","borderLeft","borderLeftColor","borderLeftStyle","borderLeftWidth","borderRadius","borderRight","borderRightColor","borderRightStyle","borderRightWidth","borderSpacing","borderStyle","borderTop","borderTopColor","borderTopLeftRadius","borderTopRightRadius","borderTopStyle","borderTopWidth","borderWidth","bottom","boxShadow","boxSizing","captionSide","caretColor","clear","clip","clipPath","color","columnCount","columnFill","columnGap","columnRule","columnRuleColor","columnRuleStyle","columnRuleWidth","columnSpan","columnWidth","columns","content","counterIncrement","counterReset","cursor","direction","display","emptyCells","filter","flex","flexBasis","flexDirection","flexFlow","flexGrow","flexShrink","flexWrap","float","font","fontFamily","fontFeatureSettings","fontKerning","fontLanguageOverride","fontSize","fontSizeAdjust","fontStretch","fontStyle","fontSynthesis","fontVariant","fontVariantAlternates","fontVariantCaps","fontVariantEastAsian","fontVariantLigatures","fontVariantNumeric","fontVariantPosition","fontWeight","gap","grid","gridArea","gridAutoColumns","gridAutoFlow","gridAutoRows","gridColumn","gridColumnEnd","gridColumnGap","gridColumnStart","gridGap","gridRow","gridRowEnd","gridRowGap","gridRowStart","gridTemplate","gridTemplateAreas","gridTemplateColumns","gridTemplateRows","height","hyphens","imageOrientation","imageRendering","imageResolution","imeMode","inlineSize","isolation","justifyContent","justifyItems","justifySelf","left","letterSpacing","lineHeight","listStyle","listStyleImage","listStylePosition","listStyleType","margin","marginBottom","marginLeft","marginRight","marginTop","maxHeight","maxWidth","minHeight","minWidth","objectFit","objectPosition","opacity","order","orphans","outline","outlineColor","outlineOffset","outlineStyle","outlineWidth","overflow","overflowWrap","overflowX","overflowY","padding","paddingBottom","paddingLeft","paddingRight","paddingTop","pageBreakAfter","pageBreakBefore","pageBreakInside","perspective","perspectiveOrigin","placeContent","placeItems","placeSelf","pointerEvents","position","quotes","resize","right","rowGap","scrollBehavior","tabSize","tableLayout","textAlign","textAlignLast","textDecoration","textDecorationColor","textDecorationLine","textDecorationStyle","textIndent","textJustify","textOverflow","textShadow","textTransform","textUnderlinePosition","top","transform","transformOrigin","transformStyle","transition","transitionDelay","transitionDuration","transitionProperty","transitionTimingFunction","unicodeBidi","userSelect","verticalAlign","visibility","whiteSpace","width","wordBreak","wordSpacing","wordWrap","writingMode","zIndex"]);function i0(J){return o0.has(J)}function l0(J,$){let q=$?new Set(Object.keys($)):new Set,X={},Y={},Z={};for(let G in J)if(q.has(G))X[G]=J[G];else if(i0(G))Y[G]=J[G];else Z[G]=J[G];return{cssProps:Y,elementProps:Z,variantProps:X}}function B0(J,$="stoop",q,X,Y,Z){return function G(W,Q){let D=Q||s,U;if(Q&&"variants"in Q&&typeof Q.variants==="object"&&Q.variants!==null&&!Array.isArray(Q.variants)){let B=Q.variants;if(Object.keys(B).length>0&&Object.values(B).every((A)=>typeof A==="object"&&A!==null&&!Array.isArray(A))){U=Q.variants;let{variants:A,...R}=Q;D=R}}let H;if(typeof W!=="string"&&m0(W))H=W.__stoopClassName;let F=d0(function B(I,A){let{as:R,className:P,css:x,...j}=I,k=R||W,T=DJ(()=>x&&typeof x==="object"&&x!==null?x:s,[x]),{cssProps:f,elementProps:M,variantProps:z}=l0(j,U),r=y0(Z||n0())?.theme||J,TJ=r.media?{...q,...r.media}:q,fJ=DJ(()=>{if(!U)return"";let E=Object.entries(z);if(E.length===0)return"";return E.sort(([S],[n])=>S.localeCompare(n)).map(([S,n])=>`${S}:${String(n)}`).join("|")},[z]),CJ=DJ(()=>{let E=D;if(U&&fJ)E=c0(U,z,D);if(Object.keys(f).length>0)E=Object.assign({},E,f);if(T!==s)E=Object.assign({},E,T);return E},[fJ,T,f,D,U,z]),E0=DJ(()=>{let E=[];if(H)E.push(H);let S=c(CJ,r,$,TJ,X,Y);if(S)E.push(S);if(P){let n=typeof P==="string"?P:String(P),bJ=lJ(n);if(bJ)E.push(bJ)}return E.length>0?E.join(" "):void 0},[CJ,P,H,r,$,TJ,X,Y]);return u0(k,{...M,className:E0,ref:A})}),L=C(JSON.stringify(D)),_=`${$}-${L}`,w=F;return w.selector=p0(_),w}}import{createContext as _0,useCallback as O0,useContext as r0,useLayoutEffect as l,useMemo as xJ,useRef as gJ,useState as s0}from"react";function VJ(J){if(!O())return{error:"Not in browser environment",success:!1,value:null};try{return{source:"localStorage",success:!0,value:localStorage.getItem(J)}}catch($){return{error:$ instanceof Error?$.message:"localStorage access failed",success:!1,value:null}}}function PJ(J,$){if(!O())return{error:"Not in browser environment",success:!1,value:void 0};try{return localStorage.setItem(J,$),{success:!0,value:void 0}}catch(q){return{error:q instanceof Error?q.message:"localStorage write failed",success:!1,value:void 0}}}function jJ(J){if(!O())return null;let q=`; ${document.cookie}`.split(`; ${J}=`);if(q.length===2)return q.pop()?.split(";").shift()||null;return null}function A0(J,$,q={}){if(!O())return!1;let{maxAge:X=uJ,path:Y=yJ,secure:Z=!1}=q;try{return document.cookie=`${J}=${$}; path=${Y}; max-age=${X}${Z?"; secure":""}`,!0}catch{return!1}}import{jsx as I0}from"react/jsx-runtime";function NJ(J,$,q){if(!O())return;let X=$?jJ($):null,Y=VJ(q),Z=Y.success?Y.value:null;if(X===J&&Z!==J)PJ(q,J);if(Z===J&&$&&X!==J)A0($,J)}function a0(J,$,q){if(!O())return null;if(J!==void 0){let Z=jJ(J);if(Z&&q[Z])return Z}let X=VJ($),Y=X.success?X.value:null;if(Y&&q[Y])return Y;return null}function R0(J,$,q="stoop",X,Y){let Z=_0(null),G=_0(null),W=Object.keys(J),Q=W[0]||"default",D=X&&Y?Y(X):void 0;function U({attribute:H="data-theme",children:F,cookieKey:L,defaultTheme:_,storageKey:w="stoop-theme"}){let[B,I]=s0(_||Q),A=gJ(!1);l(()=>{if(!O()||A.current)return;let M=a0(L,w,J);if(M){if(NJ(M,L,w),M!==B)I(M)}A.current=!0},[L,w,J]),l(()=>{if(!O())return;let M=(z)=>{if(z.key===w&&z.newValue&&J[z.newValue]&&z.newValue!==B)I(z.newValue),NJ(z.newValue,L,w)};return window.addEventListener("storage",M),()=>{window.removeEventListener("storage",M)}},[w,L,B,J]);let R=xJ(()=>{return J[B]||J[_||Q]||$},[B,_,Q,J,$]),P=gJ(!1),x=gJ(!1);l(()=>{if(!O()||P.current)return;WJ(J,q,H),P.current=!0},[J,q,H]),l(()=>{if(!O()||x.current)return;if(D)D(),x.current=!0},[D]),l(()=>{if(!O())return;if(H)document.documentElement.setAttribute(H,B)},[B,H]);let j=O0((M)=>{if(J[M])I(M),PJ(w,M),NJ(M,L,w);else if(!u())console.warn(`[Stoop] Theme "${M}" not found. Available themes: ${W.join(", ")}`)},[w,L,J,W,B]),k=xJ(()=>({theme:R,themeName:B}),[R,B]),T=O0(()=>{let z=(W.indexOf(B)+1)%W.length,vJ=W[z];j(vJ)},[B,j,W]),f=xJ(()=>({availableThemes:W,setTheme:j,theme:R,themeName:B,toggleTheme:T}),[R,B,j,T]);return I0(Z.Provider,{value:k,children:I0(G.Provider,{value:f,children:F})})}return{Provider:U,ThemeContext:Z,ThemeManagementContext:G}}function M0(J){return function $(){let q=r0(J);if(!q)throw new Error("useTheme must be used within a Provider");return q}}function t0(J){let{globalCss:$,media:q,prefix:X="stoop",theme:Y,themeMap:Z,utils:G}=J,W=K(X),Q=$J(Y),D=Q.media||q,U={...p,...Z};U0(Q,W);let H=F0(Q,W,D,G,U),F=H0(Q),L=w0(Q,W,D,G,U),_=L0(W,Q,U),w=Object.freeze({...Q});function B(R){for(let P of R)try{c(P,Q,W,D,G,U)}catch{}}function I(){if(!J.themes||Object.keys(J.themes).length===0)return;WJ(J.themes,W)}function A(){let R="";if(J.themes&&Object.keys(J.themes).length>0){let j={};for(let[T,f]of Object.entries(J.themes))j[T]=EJ(f,W);let k=QJ(j,W,"data-theme");if(k)R+=k+`
|
|
14
14
|
`}else{let j=RJ(Q,W);if(j)R+=j+`
|
|
15
15
|
`}let P=X0(),x=OJ(P).trim();if(x)R+=(R?`
|
|
16
16
|
`:"")+x;return R}return{config:{...J,prefix:W},createTheme:F,css:H,getCssText:A,globalCss:L,globalCssConfig:$,keyframes:_,media:D,mergedThemeMap:U,preloadTheme:I,sanitizedPrefix:W,theme:w,utils:G,validatedTheme:Q,warmCache:B}}function F4(J){let $=t0(J),q,X,Y;if(J.themes){let G={};for(let[U,H]of Object.entries(J.themes))G[U]=$.createTheme(H);let{Provider:W,ThemeContext:Q,ThemeManagementContext:D}=R0(G,$.validatedTheme,$.sanitizedPrefix,$.globalCssConfig,$.globalCss);Y=Q,q=W,X=M0(D)}let Z=B0($.validatedTheme,$.sanitizedPrefix,$.media,$.utils,$.mergedThemeMap,Y);return{config:$.config,createTheme:$.createTheme,css:$.css,getCssText:$.getCssText,globalCss:$.globalCss,keyframes:$.keyframes,preloadTheme:$.preloadTheme,Provider:q,styled:Z,theme:$.theme,useTheme:X,warmCache:$.warmCache}}export{t0 as createStoopBase,F4 as createStoop};
|
package/dist/types/index.d.ts
CHANGED
|
@@ -13,11 +13,13 @@ export interface StyledComponentRef {
|
|
|
13
13
|
export interface CSS {
|
|
14
14
|
[property: string]: CSSPropertyValue | CSS | Variants | unknown[] | undefined;
|
|
15
15
|
}
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
16
|
+
/**
|
|
17
|
+
* Variants type definition.
|
|
18
|
+
* Uses Record to preserve literal types instead of index signature which widens them.
|
|
19
|
+
* This allows variant values like "primary" | "secondary" to be preserved as literal types
|
|
20
|
+
* rather than being widened to string.
|
|
21
|
+
*/
|
|
22
|
+
export type Variants = Record<string, Record<string, CSS>>;
|
|
21
23
|
export interface VariantProps {
|
|
22
24
|
[variantName: string]: string | number | boolean | undefined;
|
|
23
25
|
}
|
|
@@ -29,13 +31,14 @@ export interface StyledBaseProps {
|
|
|
29
31
|
/**
|
|
30
32
|
* CSS object that includes variants configuration.
|
|
31
33
|
* Used for styled component definitions that combine base styles with variants.
|
|
32
|
-
*
|
|
34
|
+
* Uses Record<string, Record<string, CSS>> instead of Variants to preserve literal types
|
|
35
|
+
* when variants are defined inline. This prevents TypeScript from widening literal types.
|
|
33
36
|
* We exclude variants from the CSS index signature to make it distinct.
|
|
34
37
|
*/
|
|
35
38
|
export type CSSWithVariants = {
|
|
36
39
|
[K in keyof CSS as K extends "variants" ? never : K]: CSS[K];
|
|
37
40
|
} & {
|
|
38
|
-
variants:
|
|
41
|
+
variants: Record<string, Record<string, CSS>>;
|
|
39
42
|
};
|
|
40
43
|
export type UtilityFunction = (value: CSSPropertyValue | CSS | undefined) => CSS;
|
|
41
44
|
/**
|
|
@@ -79,7 +82,12 @@ export interface StoopConfig {
|
|
|
79
82
|
globalCss?: CSS;
|
|
80
83
|
}
|
|
81
84
|
export type VariantKeys<T extends Variants> = keyof T;
|
|
82
|
-
|
|
85
|
+
/**
|
|
86
|
+
* Extract the keys from a variant object, preserving literal types.
|
|
87
|
+
* Special handling for boolean variants: if keys are exactly "true" and "false",
|
|
88
|
+
* convert to boolean type. Otherwise, use keyof to preserve literal types.
|
|
89
|
+
*/
|
|
90
|
+
type ExtractVariantKeys<T> = T extends Record<string, CSS> ? keyof T extends "true" | "false" ? boolean : keyof T extends "false" | "true" ? boolean : keyof T : never;
|
|
83
91
|
export type VariantPropsFromConfig<T extends Variants> = {
|
|
84
92
|
[K in VariantKeys<T>]?: ExtractVariantKeys<T[K]>;
|
|
85
93
|
};
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "stoop",
|
|
3
3
|
"description": "CSS-in-JS library with type inference, theme creation, and variants support.",
|
|
4
|
-
"version": "0.5.
|
|
4
|
+
"version": "0.5.3",
|
|
5
5
|
"author": "Jackson Dolman <mail@dolmios.com>",
|
|
6
6
|
"main": "./dist/create-stoop.js",
|
|
7
7
|
"types": "./dist/create-stoop.d.ts",
|