next-style 2.2.0 → 2.2.1

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/dist/index.cjs CHANGED
@@ -1,31 +1,31 @@
1
- "use strict";var $=Object.defineProperty;var Q=Object.getOwnPropertyDescriptor;var N=Object.getOwnPropertyNames;var K=Object.prototype.hasOwnProperty;var T=(n,s)=>{for(var e in s)$(n,e,{get:s[e],enumerable:!0})},z=(n,s,e,r)=>{if(s&&typeof s=="object"||typeof s=="function")for(let t of N(s))!K.call(n,t)&&t!==e&&$(n,t,{get:()=>s[t],enumerable:!(r=Q(s,t))||r.enumerable});return n};var I=n=>z($({},"__esModule",{value:!0}),n);var B={};T(B,{css:()=>w,global:()=>D});module.exports=I(B);function O(n){return n.replace(/[A-Z]/g,s=>`-${s.toLowerCase()}`)}function b(n){let s=typeof n=="string"?n:JSON.stringify(n),e=2166136261;for(let r=0;r<s.length;r++)e^=s.charCodeAt(r),e=e*16777619>>>0;return e.toString(36)}var R={"@sm":"@media (min-width: 640px)","@md":"@media (min-width: 768px)","@lg":"@media (min-width: 1024px)","@xl":"@media (min-width: 1280px)","@2xl":"@media (min-width: 1536px)"};function E(n){return R[n]??n}var u=class{constructor(){this.styles=new Map}addStyle(s){let r=`ns-${b(s)}`;if(this.styles.has(r))return r;let t=this.compileStyle(s);return this.styles.set(r,t),r}addGlobalStyle(s,e){let r=`global:${s}`;if(this.styles.has(r))return;let t=this.buildDeclarations(e);t&&this.styles.set(r,{className:r,css:`${s} {
2
- ${t}}`,mediaQueries:{},pseudoClasses:{},keyframes:"",supports:{},layers:{}})}compileStyle(s){let{mediaQueries:e,pseudoClasses:r,normalStyles:t,keyframes:l,supports:g,container:y,layer:m}=this.parseStyles(s),o=`ns-${b(s)}`,S=this.buildDeclarations(t),A=`.${o} {
3
- ${S}}`,d={};Object.entries(e).forEach(([c,p])=>{let a=E(c),f=this.buildDeclarations(p," ");if(d[a]){let M=d[a].split(`
1
+ "use strict";var b=Object.defineProperty;var Q=Object.getOwnPropertyDescriptor;var N=Object.getOwnPropertyNames;var F=Object.prototype.hasOwnProperty;var K=(n,e)=>{for(var s in e)b(n,s,{get:e[s],enumerable:!0})},T=(n,e,s,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let t of N(e))!F.call(n,t)&&t!==s&&b(n,t,{get:()=>e[t],enumerable:!(r=Q(e,t))||r.enumerable});return n};var z=n=>T(b({},"__esModule",{value:!0}),n);var I={};K(I,{css:()=>A,global:()=>D});module.exports=z(I);function E(n){return n.replace(/[A-Z]/g,e=>`-${e.toLowerCase()}`)}function C(n){let e=typeof n=="string"?n:JSON.stringify(n),s=2166136261;for(let r=0;r<e.length;r++)s^=e.charCodeAt(r),s=s*16777619>>>0;return s.toString(36)}var R={"@sm":"@media (min-width: 640px)","@md":"@media (min-width: 768px)","@lg":"@media (min-width: 1024px)","@xl":"@media (min-width: 1280px)","@2xl":"@media (min-width: 1536px)"};function w(n){return R[n]??n}var u=class n{constructor(){this.styles=new Map}addStyle(e){let r=`ns-${C(e)}`;if(this.styles.has(r))return r;let t=this.compileStyle(e);return this.styles.set(r,t),r}addGlobalStyle(e,s){let r=`global:${e}`;if(this.styles.has(r))return;let t=this.buildDeclarations(s);t&&this.styles.set(r,{className:r,css:`${e} {
2
+ ${t}}`,mediaQueries:{},pseudoClasses:{},keyframes:"",supports:{},layers:{}})}compileStyle(e){let{mediaQueries:s,pseudoClasses:r,normalStyles:t,keyframes:l,supports:y,container:f,layer:g}=this.parseStyles(e),o=`ns-${C(e)}`,$=this.buildDeclarations(t),W=`.${o} {
3
+ ${$}}`,p={};Object.entries(s).forEach(([c,d])=>{let a=w(c),m=this.buildDeclarations(d," ");if(p[a]){let M=p[a].split(`
4
4
  `).slice(2,-2).join(`
5
- `);d[a]=`${a} {
5
+ `);p[a]=`${a} {
6
6
  .${o} {
7
7
  ${M}
8
- ${f} }
9
- }`}else d[a]=`${a} {
8
+ ${m} }
9
+ }`}else p[a]=`${a} {
10
10
  .${o} {
11
- ${f} }
12
- }`}),Object.entries(y).forEach(([c,p])=>{let a=this.buildDeclarations(p," ");d[c]=`${c} {
11
+ ${m} }
12
+ }`}),Object.entries(f).forEach(([c,d])=>{let a=this.buildDeclarations(d," ");p[c]=`${c} {
13
13
  .${o} {
14
14
  ${a} }
15
- }`});let C={};Object.entries(r).forEach(([c,p])=>{let a=this.buildDeclarations(p);C[c]=`.${o}${c} {
16
- ${a}}`});let h="";Object.entries(l).forEach(([c,p])=>{h+=`@keyframes ${c} {
17
- `,Object.entries(p).forEach(([a,f])=>{let j=this.buildDeclarations(f," ");h+=` ${a} {
18
- ${j} }
15
+ }`});let x={};Object.entries(r).forEach(([c,d])=>{let a=this.buildDeclarations(d);x[c]=`.${o}${c} {
16
+ ${a}}`});let h="";Object.entries(l).forEach(([c,d])=>{h+=`@keyframes ${c} {
17
+ `,Object.entries(d).forEach(([a,m])=>{let O=this.buildDeclarations(m," ");h+=` ${a} {
18
+ ${O} }
19
19
  `}),h+=`}
20
- `});let x={};Object.entries(g).forEach(([c,p])=>{let a=this.buildDeclarations(p," ");x[c]=`@supports ${c} {
20
+ `});let P={};Object.entries(y).forEach(([c,d])=>{let a=this.buildDeclarations(d," ");P[c]=`@supports ${c} {
21
21
  .${o} {
22
22
  ${a} }
23
- }`});let P={};return Object.entries(m).forEach(([c,p])=>{let a=this.buildDeclarations(p," ");P[c]=`@layer ${c} {
24
- ${a}}`}),{className:o,css:A,mediaQueries:d,pseudoClasses:C,keyframes:h,supports:x,layers:P}}parseStyles(s){let e={},r={},t={},l={},g={},y={},m={};return Object.entries(s).forEach(([i,o])=>{if(i.startsWith("@keyframes "))l[i.slice(11)]=o;else if(i==="@keyframes"&&typeof o=="object")Object.assign(l,o);else if(i.startsWith("@supports")){let S=i.slice(0,9)==="@supports"?i.slice(9).trim():i;g[S]=o}else i.startsWith("@container")?y[i]=o:i.startsWith("@layer")?m[i.slice(7)||"default"]=o:i in R||i.startsWith("@media")?r[i]=o:i.startsWith(":")||i.startsWith("::")?t[i]=o:e[i]=o}),{normalStyles:e,mediaQueries:r,pseudoClasses:t,keyframes:l,supports:g,container:y,layer:m}}buildDeclarations(s,e=" "){let r="";return Object.entries(s).forEach(([t,l])=>{(typeof l=="string"||typeof l=="number")&&(r+=`${e}${O(t)}: ${l};
25
- `)}),r}getAllStyles(){let s="";return this.styles.forEach(e=>{e.keyframes&&(s+=`${e.keyframes}
26
- `),e.css&&(s+=`${e.css}
27
- `),Object.values(e.pseudoClasses).forEach(t=>{s+=`${t}
28
- `}),Object.values(e.layers).forEach(t=>{s+=`${t}
29
- `}),Object.values(e.supports).forEach(t=>{s+=`${t}
30
- `}),Object.entries(e.mediaQueries).sort(([t],[l])=>this.extractMinWidth(t)-this.extractMinWidth(l)).forEach(([,t])=>{s+=`${t}
31
- `})}),s}extractMinWidth(s){let e=s.match(/min-width:\s*(\d+)px/);return e?parseInt(e[1],10):0}getStyleMap(){return new Map(this.styles)}};function w(n){return W.addStyle(n)}function D(n){Object.entries(n).forEach(([s,e])=>{W.addGlobalStyle(s,e)})}var W=new u;0&&(module.exports={css,global});
23
+ }`});let j={};return Object.entries(g).forEach(([c,d])=>{let a=this.buildDeclarations(d," ");j[c]=`@layer ${c} {
24
+ ${a}}`}),{className:o,css:W,mediaQueries:p,pseudoClasses:x,keyframes:h,supports:P,layers:j}}parseStyles(e){let s={},r={},t={},l={},y={},f={},g={};return Object.entries(e).forEach(([i,o])=>{if(i.startsWith("@keyframes "))l[i.slice(11)]=o;else if(i==="@keyframes"&&typeof o=="object")Object.assign(l,o);else if(i.startsWith("@supports")){let $=i.slice(0,9)==="@supports"?i.slice(9).trim():i;y[$]=o}else i.startsWith("@container")?f[i]=o:i.startsWith("@layer")?g[i.slice(7)||"default"]=o:i in R||i.startsWith("@media")?r[i]=o:i.startsWith(":")||i.startsWith("::")?t[i]=o:s[i]=o}),{normalStyles:s,mediaQueries:r,pseudoClasses:t,keyframes:l,supports:y,container:f,layer:g}}buildDeclarations(e,s=" "){let r="";return Object.entries(e).forEach(([t,l])=>{(typeof l=="string"||typeof l=="number")&&(r+=`${s}${E(t)}: ${l};
25
+ `)}),r}getAllStyles(){let e="";return this.styles.forEach(s=>{s.keyframes&&(e+=`${s.keyframes}
26
+ `),s.css&&(e+=`${s.css}
27
+ `),Object.values(s.pseudoClasses).forEach(t=>{e+=`${t}
28
+ `}),Object.values(s.layers).forEach(t=>{e+=`${t}
29
+ `}),Object.values(s.supports).forEach(t=>{e+=`${t}
30
+ `}),Object.entries(s.mediaQueries).sort(([t],[l])=>this.extractMinWidth(t)-this.extractMinWidth(l)).forEach(([,t])=>{e+=`${t}
31
+ `})}),e}extractMinWidth(e){let s=e.match(/min-width:\s*(\d+)px/);return s?parseInt(s[1],10):0}flush(e){if(!(typeof window<"u"))try{let s=require("fs"),r=require("path"),t=e??n.defaultCacheFile();s.mkdirSync(r.dirname(t),{recursive:!0}),s.writeFileSync(t,this.getAllStyles(),"utf-8")}catch(s){console.error("[next-style] Failed to flush styles to cache file:",s)}}static defaultCacheFile(){return require("path").join(process.cwd(),"node_modules",".cache","next-style","styles.css")}getStyleMap(){return new Map(this.styles)}};function A(n){let e=S.addStyle(n);return typeof window>"u"&&S.flush(),e}function D(n){Object.entries(n).forEach(([e,s])=>{S.addGlobalStyle(e,s)}),typeof window>"u"&&S.flush()}var S=new u;0&&(module.exports={css,global});
package/dist/index.d.ts CHANGED
@@ -1,15 +1,9 @@
1
1
  import { Properties, Pseudos } from 'csstype';
2
2
 
3
- /**
4
- * CSS properties with full type safety and autocomplete via csstype.
5
- * Accepts both string and number values (e.g. `fontSize: 16` or `fontSize: '16px'`).
6
- */
7
3
  type CSSProperties = Properties<string | number>;
8
- /** @internal Mapped type for pseudo-classes/elements */
9
4
  type PseudoStyles = {
10
5
  [P in Pseudos]?: CSSProperties;
11
6
  };
12
- /** @internal At-rule keys (@media, @container, @supports, @layer, @keyframes) */
13
7
  type AtRuleStyles = {
14
8
  '@sm'?: CSSProperties;
15
9
  '@md'?: CSSProperties;
@@ -40,35 +34,21 @@ type CSSObject = CSSProperties & PseudoStyles & AtRuleStyles & {
40
34
  };
41
35
  /**
42
36
  * Converts a style object into a unique CSS class name.
43
- *
44
37
  * Styles are collected at build time by the PostCSS plugin and emitted as
45
38
  * a single static CSS file — there is zero runtime overhead in production.
46
- * Identical style objects always return the same class name (deduplication).
47
- *
48
- * @param styles - A `CSSObject` describing the styles for this element.
49
- * @returns A stable class name string (e.g. `"ns-1x2y3z"`).
50
39
  *
51
40
  * @example
52
41
  * const button = css({
53
42
  * padding: '8px 16px',
54
- * borderRadius: '6px',
55
43
  * backgroundColor: '#7F77DD',
56
44
  * ':hover': { backgroundColor: '#534AB7' },
57
45
  * '@md': { padding: '10px 20px' },
58
46
  * })
59
- *
60
- * export function Button() {
61
- * return <button className={button}>Click me</button>
62
- * }
63
47
  */
64
48
  declare function css(styles: CSSObject): string;
65
49
  /**
66
50
  * Registers global CSS styles applied directly to selectors (no scoped class).
67
51
  *
68
- * Useful for CSS resets, base typography, and third-party element overrides.
69
- *
70
- * @param styles - A record mapping CSS selectors to `CSSObject` style definitions.
71
- *
72
52
  * @example
73
53
  * global({
74
54
  * '*': { boxSizing: 'border-box', margin: '0' },
package/dist/index.js CHANGED
@@ -1,31 +1,31 @@
1
- function j(c){return c.replace(/[A-Z]/g,s=>`-${s.toLowerCase()}`)}function $(c){let s=typeof c=="string"?c:JSON.stringify(c),e=2166136261;for(let t=0;t<s.length;t++)e^=s.charCodeAt(t),e=e*16777619>>>0;return e.toString(36)}var b={"@sm":"@media (min-width: 640px)","@md":"@media (min-width: 768px)","@lg":"@media (min-width: 1024px)","@xl":"@media (min-width: 1280px)","@2xl":"@media (min-width: 1536px)"};function O(c){return b[c]??c}var u=class{constructor(){this.styles=new Map}addStyle(s){let t=`ns-${$(s)}`;if(this.styles.has(t))return t;let r=this.compileStyle(s);return this.styles.set(t,r),t}addGlobalStyle(s,e){let t=`global:${s}`;if(this.styles.has(t))return;let r=this.buildDeclarations(e);r&&this.styles.set(t,{className:t,css:`${s} {
2
- ${r}}`,mediaQueries:{},pseudoClasses:{},keyframes:"",supports:{},layers:{}})}compileStyle(s){let{mediaQueries:e,pseudoClasses:t,normalStyles:r,keyframes:l,supports:g,container:y,layer:m}=this.parseStyles(s),i=`ns-${$(s)}`,S=this.buildDeclarations(r),w=`.${i} {
3
- ${S}}`,d={};Object.entries(e).forEach(([a,p])=>{let o=O(a),f=this.buildDeclarations(p," ");if(d[o]){let D=d[o].split(`
1
+ var b=(n=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(n,{get:(e,s)=>(typeof require<"u"?require:e)[s]}):n)(function(n){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+n+'" is not supported')});function E(n){return n.replace(/[A-Z]/g,e=>`-${e.toLowerCase()}`)}function C(n){let e=typeof n=="string"?n:JSON.stringify(n),s=2166136261;for(let r=0;r<e.length;r++)s^=e.charCodeAt(r),s=s*16777619>>>0;return s.toString(36)}var R={"@sm":"@media (min-width: 640px)","@md":"@media (min-width: 768px)","@lg":"@media (min-width: 1024px)","@xl":"@media (min-width: 1280px)","@2xl":"@media (min-width: 1536px)"};function w(n){return R[n]??n}var u=class n{constructor(){this.styles=new Map}addStyle(e){let r=`ns-${C(e)}`;if(this.styles.has(r))return r;let t=this.compileStyle(e);return this.styles.set(r,t),r}addGlobalStyle(e,s){let r=`global:${e}`;if(this.styles.has(r))return;let t=this.buildDeclarations(s);t&&this.styles.set(r,{className:r,css:`${e} {
2
+ ${t}}`,mediaQueries:{},pseudoClasses:{},keyframes:"",supports:{},layers:{}})}compileStyle(e){let{mediaQueries:s,pseudoClasses:r,normalStyles:t,keyframes:l,supports:y,container:f,layer:g}=this.parseStyles(e),o=`ns-${C(e)}`,$=this.buildDeclarations(t),A=`.${o} {
3
+ ${$}}`,p={};Object.entries(s).forEach(([c,d])=>{let a=w(c),m=this.buildDeclarations(d," ");if(p[a]){let D=p[a].split(`
4
4
  `).slice(2,-2).join(`
5
- `);d[o]=`${o} {
6
- .${i} {
5
+ `);p[a]=`${a} {
6
+ .${o} {
7
7
  ${D}
8
- ${f} }
9
- }`}else d[o]=`${o} {
10
- .${i} {
11
- ${f} }
12
- }`}),Object.entries(y).forEach(([a,p])=>{let o=this.buildDeclarations(p," ");d[a]=`${a} {
13
- .${i} {
14
- ${o} }
15
- }`});let R={};Object.entries(t).forEach(([a,p])=>{let o=this.buildDeclarations(p);R[a]=`.${i}${a} {
16
- ${o}}`});let h="";Object.entries(l).forEach(([a,p])=>{h+=`@keyframes ${a} {
17
- `,Object.entries(p).forEach(([o,f])=>{let P=this.buildDeclarations(f," ");h+=` ${o} {
18
- ${P} }
8
+ ${m} }
9
+ }`}else p[a]=`${a} {
10
+ .${o} {
11
+ ${m} }
12
+ }`}),Object.entries(f).forEach(([c,d])=>{let a=this.buildDeclarations(d," ");p[c]=`${c} {
13
+ .${o} {
14
+ ${a} }
15
+ }`});let x={};Object.entries(r).forEach(([c,d])=>{let a=this.buildDeclarations(d);x[c]=`.${o}${c} {
16
+ ${a}}`});let h="";Object.entries(l).forEach(([c,d])=>{h+=`@keyframes ${c} {
17
+ `,Object.entries(d).forEach(([a,m])=>{let O=this.buildDeclarations(m," ");h+=` ${a} {
18
+ ${O} }
19
19
  `}),h+=`}
20
- `});let C={};Object.entries(g).forEach(([a,p])=>{let o=this.buildDeclarations(p," ");C[a]=`@supports ${a} {
21
- .${i} {
22
- ${o} }
23
- }`});let x={};return Object.entries(m).forEach(([a,p])=>{let o=this.buildDeclarations(p," ");x[a]=`@layer ${a} {
24
- ${o}}`}),{className:i,css:w,mediaQueries:d,pseudoClasses:R,keyframes:h,supports:C,layers:x}}parseStyles(s){let e={},t={},r={},l={},g={},y={},m={};return Object.entries(s).forEach(([n,i])=>{if(n.startsWith("@keyframes "))l[n.slice(11)]=i;else if(n==="@keyframes"&&typeof i=="object")Object.assign(l,i);else if(n.startsWith("@supports")){let S=n.slice(0,9)==="@supports"?n.slice(9).trim():n;g[S]=i}else n.startsWith("@container")?y[n]=i:n.startsWith("@layer")?m[n.slice(7)||"default"]=i:n in b||n.startsWith("@media")?t[n]=i:n.startsWith(":")||n.startsWith("::")?r[n]=i:e[n]=i}),{normalStyles:e,mediaQueries:t,pseudoClasses:r,keyframes:l,supports:g,container:y,layer:m}}buildDeclarations(s,e=" "){let t="";return Object.entries(s).forEach(([r,l])=>{(typeof l=="string"||typeof l=="number")&&(t+=`${e}${j(r)}: ${l};
25
- `)}),t}getAllStyles(){let s="";return this.styles.forEach(e=>{e.keyframes&&(s+=`${e.keyframes}
26
- `),e.css&&(s+=`${e.css}
27
- `),Object.values(e.pseudoClasses).forEach(r=>{s+=`${r}
28
- `}),Object.values(e.layers).forEach(r=>{s+=`${r}
29
- `}),Object.values(e.supports).forEach(r=>{s+=`${r}
30
- `}),Object.entries(e.mediaQueries).sort(([r],[l])=>this.extractMinWidth(r)-this.extractMinWidth(l)).forEach(([,r])=>{s+=`${r}
31
- `})}),s}extractMinWidth(s){let e=s.match(/min-width:\s*(\d+)px/);return e?parseInt(e[1],10):0}getStyleMap(){return new Map(this.styles)}};function W(c){return E.addStyle(c)}function A(c){Object.entries(c).forEach(([s,e])=>{E.addGlobalStyle(s,e)})}var E=new u;export{W as css,A as global};
20
+ `});let P={};Object.entries(y).forEach(([c,d])=>{let a=this.buildDeclarations(d," ");P[c]=`@supports ${c} {
21
+ .${o} {
22
+ ${a} }
23
+ }`});let j={};return Object.entries(g).forEach(([c,d])=>{let a=this.buildDeclarations(d," ");j[c]=`@layer ${c} {
24
+ ${a}}`}),{className:o,css:A,mediaQueries:p,pseudoClasses:x,keyframes:h,supports:P,layers:j}}parseStyles(e){let s={},r={},t={},l={},y={},f={},g={};return Object.entries(e).forEach(([i,o])=>{if(i.startsWith("@keyframes "))l[i.slice(11)]=o;else if(i==="@keyframes"&&typeof o=="object")Object.assign(l,o);else if(i.startsWith("@supports")){let $=i.slice(0,9)==="@supports"?i.slice(9).trim():i;y[$]=o}else i.startsWith("@container")?f[i]=o:i.startsWith("@layer")?g[i.slice(7)||"default"]=o:i in R||i.startsWith("@media")?r[i]=o:i.startsWith(":")||i.startsWith("::")?t[i]=o:s[i]=o}),{normalStyles:s,mediaQueries:r,pseudoClasses:t,keyframes:l,supports:y,container:f,layer:g}}buildDeclarations(e,s=" "){let r="";return Object.entries(e).forEach(([t,l])=>{(typeof l=="string"||typeof l=="number")&&(r+=`${s}${E(t)}: ${l};
25
+ `)}),r}getAllStyles(){let e="";return this.styles.forEach(s=>{s.keyframes&&(e+=`${s.keyframes}
26
+ `),s.css&&(e+=`${s.css}
27
+ `),Object.values(s.pseudoClasses).forEach(t=>{e+=`${t}
28
+ `}),Object.values(s.layers).forEach(t=>{e+=`${t}
29
+ `}),Object.values(s.supports).forEach(t=>{e+=`${t}
30
+ `}),Object.entries(s.mediaQueries).sort(([t],[l])=>this.extractMinWidth(t)-this.extractMinWidth(l)).forEach(([,t])=>{e+=`${t}
31
+ `})}),e}extractMinWidth(e){let s=e.match(/min-width:\s*(\d+)px/);return s?parseInt(s[1],10):0}flush(e){if(!(typeof window<"u"))try{let s=b("fs"),r=b("path"),t=e??n.defaultCacheFile();s.mkdirSync(r.dirname(t),{recursive:!0}),s.writeFileSync(t,this.getAllStyles(),"utf-8")}catch(s){console.error("[next-style] Failed to flush styles to cache file:",s)}}static defaultCacheFile(){return b("path").join(process.cwd(),"node_modules",".cache","next-style","styles.css")}getStyleMap(){return new Map(this.styles)}};function W(n){let e=S.addStyle(n);return typeof window>"u"&&S.flush(),e}function M(n){Object.entries(n).forEach(([e,s])=>{S.addGlobalStyle(e,s)}),typeof window>"u"&&S.flush()}var S=new u;export{W as css,M as global};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "next-style",
3
- "version": "2.2.0",
3
+ "version": "2.2.1",
4
4
  "description": "Zero-Runtime CSS-in-JS for Next.js + Turbopack",
5
5
  "type": "module",
6
6
  "repository": {