@salty-css/astro 0.1.0-alpha.3 → 0.1.0-alpha.5

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,15 +1,12 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const j=require("@salty-css/core/compiler/helpers"),H=require("@salty-css/core/compiler/get-function-range"),J=require("@salty-css/core/compiler/salty-compiler"),O=require("@salty-css/core/server"),P=require("@salty-css/core/util"),d=require("fs/promises"),x=require("path"),b=D=>{const g=new J.SaltyCompiler(D);return{name:"stylegen",configureServer(t){g.importFile=async c=>{const l=Date.now();return t.ssrLoadModule(`${c}?t=${l}`)}},buildStart:async()=>{await g.generateCss()},load:async t=>{var l,C;if(j.isSaltyFile(t)){const $=await g.getDestDir();if(/.+\?configFile=(\w+).+/.test(t)){const h=new URLSearchParams(t.split("?")[1]).get("configFile");if(!h)return;const m=x.join($,"astro",h),y=await d.readFile(m,"utf-8");if(!y)return;try{const u=JSON.parse(y),{clientProps:o={},classNames:s="",tagIsComponent:f,tagName:a="div"}=u,w=u.imports||[],F=f?a:`props.element || "${o.element||a}"`;let p="";if(o.element&&f&&(p+=` element="${o.element}"`),o.attr)for(const[i,n]of Object.entries(o.attr))p+=` ${i}="${n}"`;p=p.trim();const v=o.variantKeys||[];return`---
2
- ${w.join(`
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const S=require("@salty-css/core/compiler/helpers"),k=require("@salty-css/core/compiler/get-function-range"),A=require("@salty-css/core/compiler/salty-compiler"),O=require("@salty-css/core/server"),P=require("@salty-css/core/util"),m=require("fs/promises"),_=require("path"),q=E=>{const c=new A.SaltyCompiler(E);return{name:"stylegen",configureServer(t){c.importFile=async n=>{const r=Date.now();return t.ssrLoadModule(`${n}?t=${r}`)}},buildStart:async()=>{await c.generateCss()},load:async t=>{var r,h;if(S.isSaltyFile(t)){const u=await c.getDestDir();if(/.+\?configFile=(\w+).+/.test(t)){const p=new URLSearchParams(t.split("?")[1]).get("configFile");if(!p)return;const i=_.join(u,"astro",p),g=await m.readFile(i,"utf-8");if(!g)return;try{const a=JSON.parse(g),{clientProps:f={},classNames:s="",tagIsComponent:d,tagName:o="div"}=a,y=["import { resolveAstroProps } from '@salty-css/astro/element-props';",...a.imports||[]],j=d?o:`__r.element || ${JSON.stringify(f.element||o)}`;return`---
2
+ ${y.join(`
3
3
  `)}
4
- const { props } = Astro;
5
- const Element = ${F};
6
- const variantClasses = [
7
- ${v.map(i=>{const[n,r]=i.split("=");return`props.${n} !== undefined ? "${n}-" + props.${n} : ${r!==void 0?`"${n}-${r}"`:'""'}`}).join(`,
8
- `)}
9
- ]
4
+ const __gp = ${JSON.stringify(f)};
5
+ const __r = resolveAstroProps(Astro.props, __gp, ${JSON.stringify(s)});
6
+ const Element = ${j};
10
7
  ---
11
- <Element class:list={["${s}", ...variantClasses, props.class]} ${p} {...props}><slot/></Element>`}catch(u){console.error("Error parsing config file:",u);return}}const R=["import { classNameInstance } from '@salty-css/core/instances/classname-instance';"],q=[],N=[],S=await d.readFile(t,"utf-8"),k=await g.compileSaltyFile(t,$),I=Object.entries(k.contents);for(const[e,h]of I){const m=await j.resolveExportValue(h,1);if(!m.generator)continue;if(m.isClassName){const i=m.generator._withBuildContext({callerName:e,isProduction:!1,config:{}});q.push(`const ${e} = classNameInstance(${JSON.stringify(i.params)});`),N.push(e);continue}const[y,u]=await H.getFunctionRange(S,e),o=S.slice(y,u),s=(C=(l=/styled\(([^,]+),/.exec(o))==null?void 0:l.at(1))==null?void 0:C.trim();if(!s){console.warn(`Could not determine tag name for ${e} in ${t}`);continue}const f=m.generator._withBuildContext({callerName:e,isProduction:!1,config:{}}),a={componentName:e,tagName:s.replace(/['"`]/g,""),tagIsComponent:!1,classNames:f.classNames,imports:[],clientProps:f.clientProps},w=/^\w+$/.test(s);if(a.tagIsComponent=w,w){const i=I.some(([r])=>r===s),n=S.match(new RegExp(`import[^;]*${s}[^;]*;`));if(i){const r=P.toHash(s),_=`import ${s} from '${t}.astro?configFile=${r}.config';`;a.imports=[_]}else if(n){const r=n.at(0);a.imports=[r]}}const F=x.join($,"astro");await d.readFile(F,"utf-8").catch(()=>!1)||await d.mkdir(F,{recursive:!0});const v=P.toHash(e),E=x.join($,"astro",`${v}.config`);await d.writeFile(E,JSON.stringify(a)),R.push(`import ${e} from '${t}.astro?configFile=${v}.config';`),N.push(e)}return`${R.join(`
8
+ <Element class:list={__r.class} style={__r.style} {...__r.rest}><slot/></Element>`}catch(a){console.error("Error parsing config file:",a);return}}const v=["import { classNameInstance } from '@salty-css/core/instances/classname-instance';"],x=[],w=[],$=await m.readFile(t,"utf-8"),J=await c.compileSaltyFile(t,u),R=Object.entries(J.contents);for(const[e,p]of R){const i=await S.resolveExportValue(p,1);if(!i.generator)continue;if(i.isClassName){const C=i.generator._withBuildContext({callerName:e,isProduction:!1,config:{}});x.push(`const ${e} = classNameInstance(${JSON.stringify(C.params)});`),w.push(e);continue}const[g,a]=await k.getFunctionRange($,e),f=$.slice(g,a),s=(h=(r=/styled\(([^,]+),/.exec(f))==null?void 0:r.at(1))==null?void 0:h.trim();if(!s){console.warn(`Could not determine tag name for ${e} in ${t}`);continue}const d=i.generator._withBuildContext({callerName:e,isProduction:!1,config:{}}),o={componentName:e,tagName:s.replace(/['"`]/g,""),tagIsComponent:!1,classNames:d.classNames,imports:[],clientProps:d.clientProps},F=/^\w+$/.test(s);if(o.tagIsComponent=F,F){const C=R.some(([l])=>l===s),I=$.match(new RegExp(`import[^;]*${s}[^;]*;`));if(C){const l=P.toHash(s),b=`import ${s} from '${t}.astro?configFile=${l}.config';`;o.imports=[b]}else if(I){const l=I.at(0);o.imports=[l]}}const y=_.join(u,"astro");await m.readFile(y,"utf-8").catch(()=>!1)||await m.mkdir(y,{recursive:!0});const N=P.toHash(e),D=_.join(u,"astro",`${N}.config`);await m.writeFile(D,JSON.stringify(o)),v.push(`import ${e} from '${t}.astro?configFile=${N}.config';`),w.push(e)}return`${v.join(`
12
9
  `)}
13
- ${q.join(`
10
+ ${x.join(`
14
11
  `)}
15
- export { ${N.join(", ")} };`}},handleHotUpdate:async({file:t,server:c})=>{await O.checkShouldRestart(t)&&c.restart()},watchChange:{handler:async(t,c)=>{j.isSaltyFile(t)&&c.event!=="delete"&&(await O.checkShouldRestart(t)||await g.generateFile(t))}}}};exports.default=b;exports.saltyPlugin=b;
12
+ export { ${w.join(", ")} };`}},handleHotUpdate:async({file:t,server:n})=>{await O.checkShouldRestart(t)&&n.restart()},watchChange:{handler:async(t,n)=>{S.isSaltyFile(t)&&n.event!=="delete"&&(await O.checkShouldRestart(t)||await c.generateFile(t))}}}};exports.default=q;exports.saltyPlugin=q;
@@ -1,115 +1,105 @@
1
- import { isSaltyFile as D, resolveExportValue as A } from "@salty-css/core/compiler/helpers";
2
- import { getFunctionRange as B } from "@salty-css/core/compiler/get-function-range";
3
- import { SaltyCompiler as H } from "@salty-css/core/compiler/salty-compiler";
1
+ import { isSaltyFile as E, resolveExportValue as b } from "@salty-css/core/compiler/helpers";
2
+ import { getFunctionRange as k } from "@salty-css/core/compiler/get-function-range";
3
+ import { SaltyCompiler as B } from "@salty-css/core/compiler/salty-compiler";
4
4
  import { checkShouldRestart as O } from "@salty-css/core/server";
5
- import { toHash as P } from "@salty-css/core/util";
6
- import { readFile as x, mkdir as K, writeFile as L } from "fs/promises";
7
- import { join as S } from "path";
8
- const T = (b) => {
9
- const u = new H(b);
5
+ import { toHash as j } from "@salty-css/core/util";
6
+ import { readFile as C, mkdir as H, writeFile as L } from "fs/promises";
7
+ import { join as _ } from "path";
8
+ const T = (J) => {
9
+ const c = new B(J);
10
10
  return {
11
11
  name: "stylegen",
12
12
  configureServer(t) {
13
- u.importFile = async (c) => {
14
- const l = Date.now();
15
- return t.ssrLoadModule(`${c}?t=${l}`);
13
+ c.importFile = async (n) => {
14
+ const r = Date.now();
15
+ return t.ssrLoadModule(`${n}?t=${r}`);
16
16
  };
17
17
  },
18
18
  buildStart: async () => {
19
- await u.generateCss();
19
+ await c.generateCss();
20
20
  },
21
21
  load: async (t) => {
22
- var l, F;
23
- if (D(t)) {
24
- const d = await u.getDestDir();
22
+ var r, y;
23
+ if (E(t)) {
24
+ const m = await c.getDestDir();
25
25
  if (/.+\?configFile=(\w+).+/.test(t)) {
26
- const $ = new URLSearchParams(t.split("?")[1]).get("configFile");
27
- if (!$) return;
28
- const m = S(d, "astro", $), w = await x(m, "utf-8");
29
- if (!w) return;
26
+ const p = new URLSearchParams(t.split("?")[1]).get("configFile");
27
+ if (!p) return;
28
+ const a = _(m, "astro", p), f = await C(a, "utf-8");
29
+ if (!f) return;
30
30
  try {
31
- const p = JSON.parse(w), { clientProps: n = {}, classNames: s = "", tagIsComponent: g, tagName: r = "div" } = p, h = p.imports || [], y = g ? r : `props.element || "${n.element || r}"`;
32
- let f = "";
33
- if (n.element && g && (f += ` element="${n.element}"`), n.attr) for (const [i, o] of Object.entries(n.attr)) f += ` ${i}="${o}"`;
34
- f = f.trim();
35
- const C = n.variantKeys || [];
31
+ const i = JSON.parse(f), { clientProps: g = {}, classNames: e = "", tagIsComponent: u, tagName: o = "div" } = i, d = ["import { resolveAstroProps } from '@salty-css/astro/element-props';", ...i.imports || []], I = u ? o : `__r.element || ${JSON.stringify(g.element || o)}`;
36
32
  return `---
37
- ${h.join(`
33
+ ${d.join(`
38
34
  `)}
39
- const { props } = Astro;
40
- const Element = ${y};
41
- const variantClasses = [
42
- ${C.map((i) => {
43
- const [o, a] = i.split("=");
44
- return `props.${o} !== undefined ? "${o}-" + props.${o} : ${a !== void 0 ? `"${o}-${a}"` : '""'}`;
45
- }).join(`,
46
- `)}
47
- ]
35
+ const __gp = ${JSON.stringify(g)};
36
+ const __r = resolveAstroProps(Astro.props, __gp, ${JSON.stringify(e)});
37
+ const Element = ${I};
48
38
  ---
49
- <Element class:list={["${s}", ...variantClasses, props.class]} ${f} {...props}><slot/></Element>`;
50
- } catch (p) {
51
- console.error("Error parsing config file:", p);
39
+ <Element class:list={__r.class} style={__r.style} {...__r.rest}><slot/></Element>`;
40
+ } catch (i) {
41
+ console.error("Error parsing config file:", i);
52
42
  return;
53
43
  }
54
44
  }
55
- const j = ["import { classNameInstance } from '@salty-css/core/instances/classname-instance';"], R = [], v = [], N = await x(t, "utf-8"), k = await u.compileSaltyFile(t, d), I = Object.entries(k.contents);
56
- for (const [e, $] of I) {
57
- const m = await A($, 1);
58
- if (!m.generator) continue;
59
- if (m.isClassName) {
60
- const i = m.generator._withBuildContext({
61
- callerName: e,
45
+ const S = ["import { classNameInstance } from '@salty-css/core/instances/classname-instance';"], v = [], w = [], $ = await C(t, "utf-8"), P = await c.compileSaltyFile(t, m), x = Object.entries(P.contents);
46
+ for (const [s, p] of x) {
47
+ const a = await b(p, 1);
48
+ if (!a.generator) continue;
49
+ if (a.isClassName) {
50
+ const F = a.generator._withBuildContext({
51
+ callerName: s,
62
52
  isProduction: !1,
63
53
  config: {}
64
54
  });
65
- R.push(`const ${e} = classNameInstance(${JSON.stringify(i.params)});`), v.push(e);
55
+ v.push(`const ${s} = classNameInstance(${JSON.stringify(F.params)});`), w.push(s);
66
56
  continue;
67
57
  }
68
- const [w, p] = await B(N, e), n = N.slice(w, p), s = (F = (l = /styled\(([^,]+),/.exec(n)) == null ? void 0 : l.at(1)) == null ? void 0 : F.trim();
69
- if (!s) {
70
- console.warn(`Could not determine tag name for ${e} in ${t}`);
58
+ const [f, i] = await k($, s), g = $.slice(f, i), e = (y = (r = /styled\(([^,]+),/.exec(g)) == null ? void 0 : r.at(1)) == null ? void 0 : y.trim();
59
+ if (!e) {
60
+ console.warn(`Could not determine tag name for ${s} in ${t}`);
71
61
  continue;
72
62
  }
73
- const g = m.generator._withBuildContext({
74
- callerName: e,
63
+ const u = a.generator._withBuildContext({
64
+ callerName: s,
75
65
  isProduction: !1,
76
66
  config: {}
77
- }), r = {
78
- componentName: e,
79
- tagName: s.replace(/['"`]/g, ""),
67
+ }), o = {
68
+ componentName: s,
69
+ tagName: e.replace(/['"`]/g, ""),
80
70
  tagIsComponent: !1,
81
- classNames: g.classNames,
71
+ classNames: u.classNames,
82
72
  imports: [],
83
- clientProps: g.clientProps
84
- }, h = /^\w+$/.test(s);
85
- if (r.tagIsComponent = h, h) {
86
- const i = I.some(([a]) => a === s), o = N.match(new RegExp(`import[^;]*${s}[^;]*;`));
87
- if (i) {
88
- const a = P(s), J = `import ${s} from '${t}.astro?configFile=${a}.config';`;
89
- r.imports = [J];
90
- } else if (o) {
91
- const a = o.at(0);
92
- r.imports = [a];
73
+ clientProps: u.clientProps
74
+ }, h = /^\w+$/.test(e);
75
+ if (o.tagIsComponent = h, h) {
76
+ const F = x.some(([l]) => l === e), R = $.match(new RegExp(`import[^;]*${e}[^;]*;`));
77
+ if (F) {
78
+ const l = j(e), A = `import ${e} from '${t}.astro?configFile=${l}.config';`;
79
+ o.imports = [A];
80
+ } else if (R) {
81
+ const l = R.at(0);
82
+ o.imports = [l];
93
83
  }
94
84
  }
95
- const y = S(d, "astro");
96
- await x(y, "utf-8").catch(() => !1) || await K(y, { recursive: !0 });
97
- const C = P(e), E = S(d, "astro", `${C}.config`);
98
- await L(E, JSON.stringify(r)), j.push(`import ${e} from '${t}.astro?configFile=${C}.config';`), v.push(e);
85
+ const d = _(m, "astro");
86
+ await C(d, "utf-8").catch(() => !1) || await H(d, { recursive: !0 });
87
+ const N = j(s), D = _(m, "astro", `${N}.config`);
88
+ await L(D, JSON.stringify(o)), S.push(`import ${s} from '${t}.astro?configFile=${N}.config';`), w.push(s);
99
89
  }
100
- return `${j.join(`
90
+ return `${S.join(`
101
91
  `)}
102
- ${R.join(`
92
+ ${v.join(`
103
93
  `)}
104
- export { ${v.join(", ")} };`;
94
+ export { ${w.join(", ")} };`;
105
95
  }
106
96
  },
107
- handleHotUpdate: async ({ file: t, server: c }) => {
108
- await O(t) && c.restart();
97
+ handleHotUpdate: async ({ file: t, server: n }) => {
98
+ await O(t) && n.restart();
109
99
  },
110
100
  watchChange: {
111
- handler: async (t, c) => {
112
- D(t) && c.event !== "delete" && (await O(t) || await u.generateFile(t));
101
+ handler: async (t, n) => {
102
+ E(t) && n.event !== "delete" && (await O(t) || await c.generateFile(t));
113
103
  }
114
104
  }
115
105
  };
package/class-name.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("@salty-css/core/generators"),u=r=>{const s=new i.ClassNameGenerator(r),t=a=>{const e=new String(a);return Object.assign(e,{get isClassName(){return!0},variant:(n,c)=>{const o=`${n}-${c}`,l=`${e} ${o}`;return t(l)},generator:s}),e};return t(s.cssClassName)};exports.className=u;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const m=require("@salty-css/core/generators"),C=o=>{const c=new m.ClassNameGenerator(o),t=i=>{const e=new String(i);return Object.assign(e,{get isClassName(){return!0},variant:(r,n)=>{const a=`${r}-${n}`,s=`${e} ${a}`;return t(s)},variants:r=>{const n=Object.entries(r).reduce((s,[l,u])=>(s+=` ${l}-${u}`,s),""),a=`${e}${n}`.trim();return t(a)},generator:c}),e};return t(c.cssClassName)};exports.className=C;
package/class-name.d.ts CHANGED
@@ -4,6 +4,7 @@ interface ClassNameMethods<STYLE_PARAMS extends StyledParams> {
4
4
  generator: ClassNameGenerator<STYLE_PARAMS>;
5
5
  isClassName: boolean;
6
6
  variant: (name: string, value: string) => string & ClassNameFunction<STYLE_PARAMS>;
7
+ variants: (variants: Record<string, string>) => string & ClassNameFunction<STYLE_PARAMS>;
7
8
  }
8
9
  type ClassNameFunction<STYLE_PARAMS extends StyledParams> = string & ClassNameMethods<STYLE_PARAMS>;
9
10
  export declare const className: <const STYLE_PARAMS extends StyledParams>(params: STYLE_PARAMS) => ClassNameFunction<STYLE_PARAMS>;
package/class-name.js CHANGED
@@ -1,20 +1,24 @@
1
- import { ClassNameGenerator as l } from "@salty-css/core/generators";
2
- const C = (r) => {
3
- const t = new l(r), e = (a) => {
4
- const s = new String(a);
1
+ import { ClassNameGenerator as u } from "@salty-css/core/generators";
2
+ const $ = (c) => {
3
+ const o = new u(c), e = (i) => {
4
+ const s = new String(i);
5
5
  return Object.assign(s, {
6
6
  get isClassName() {
7
7
  return !0;
8
8
  },
9
- variant: (n, o) => {
10
- const c = `${n}-${o}`, i = `${s} ${c}`;
11
- return e(i);
9
+ variant: (r, n) => {
10
+ const a = `${r}-${n}`, t = `${s} ${a}`;
11
+ return e(t);
12
12
  },
13
- generator: t
13
+ variants: (r) => {
14
+ const n = Object.entries(r).reduce((t, [l, m]) => (t += ` ${l}-${m}`, t), ""), a = `${s}${n}`.trim();
15
+ return e(a);
16
+ },
17
+ generator: o
14
18
  }), s;
15
19
  };
16
- return e(t.cssClassName);
20
+ return e(o.cssClassName);
17
21
  };
18
22
  export {
19
- C as className
23
+ $ as className
20
24
  };
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("@salty-css/core/css/dynamic-styles"),n=async(t,a)=>{const s=e.getDynamicStylesClassName(t),y=await e.getDynamicStylesCss(t,a||`.${s}`);return{className:s,css:y}};Object.defineProperty(exports,"getDynamicStylesClassName",{enumerable:!0,get:()=>e.getDynamicStylesClassName});Object.defineProperty(exports,"getDynamicStylesCss",{enumerable:!0,get:()=>e.getDynamicStylesCss});exports.resolveDynamicStyles=n;
@@ -0,0 +1,20 @@
1
+ import { BaseStyles } from '@salty-css/core/types';
2
+ import { getDynamicStylesClassName, getDynamicStylesCss } from '@salty-css/core/css/dynamic-styles';
3
+ export { getDynamicStylesClassName, getDynamicStylesCss };
4
+ /**
5
+ * Resolve dynamic styles for SSR usage inside an `.astro` component.
6
+ *
7
+ * @example
8
+ * ```astro
9
+ * ---
10
+ * import { resolveDynamicStyles } from '@salty-css/astro/dynamic-styles';
11
+ * const { className, css } = await resolveDynamicStyles({ color: 'red' });
12
+ * ---
13
+ * <style set:html={css}></style>
14
+ * <div class={className}><slot/></div>
15
+ * ```
16
+ */
17
+ export declare const resolveDynamicStyles: (styles: BaseStyles, scope?: string) => Promise<{
18
+ className: string;
19
+ css: string;
20
+ }>;
@@ -0,0 +1,11 @@
1
+ import { getDynamicStylesClassName as c, getDynamicStylesCss as m } from "@salty-css/core/css/dynamic-styles";
2
+ import { getDynamicStylesClassName as r, getDynamicStylesCss as i } from "@salty-css/core/css/dynamic-styles";
3
+ const y = async (s, t) => {
4
+ const e = c(s), a = await m(s, t || `.${e}`);
5
+ return { className: e, css: a };
6
+ };
7
+ export {
8
+ r as getDynamicStylesClassName,
9
+ i as getDynamicStylesCss,
10
+ y as resolveDynamicStyles
11
+ };
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const S=require("@salty-css/core/util"),j=require("@salty-css/core/parsers"),A=["passProps"],O=(p={},t={},y="",d)=>{const{class:v="",className:m,element:k,passProps:i=t.passProps,_vks:u,style:r,...b}=p,n={passProps:i};if(t.attr)for(const[s,e]of Object.entries(t.attr))e!==void 0&&(n[s]=e);d&&Object.assign(n,d);const c={...b};if(t.defaultProps)for(const[s,e]of Object.entries(t.defaultProps))c[s]===void 0&&(c[s]=e);Object.assign(n,c);const f=new Set;for(const s of String(y).split(" "))s&&f.add(s);for(const s of String(v||"").split(" "))s&&f.add(s);for(const s of String(m||"").split(" "))s&&f.add(s);const l={};if(r&&typeof r=="object")for(const[s,e]of Object.entries(r)){const o=j.parseVariableTokens(e);l[s]=o?o.transformed:e}const a=new Set(Array.isArray(u)?u:[]);if(t.propValueKeys)for(const s of t.propValueKeys){const e=`css-${s}`,o=c[e];o!==void 0&&(l[`--props-${S.dashCase(s)}`]=o,a.add(e))}if(t.variantKeys)for(const s of t.variantKeys){const[e,o]=s.split("=");c[e]!==void 0?(f.add(`${e}-${c[e]}`),a.add(e)):o!==void 0&&f.add(`${e}-${o}`)}for(const s of a)i!==!0&&(Array.isArray(i)&&i.includes(s)||typeof i=="string"&&i===s||delete n[s]);for(const s of A)delete n[s];return{class:[...f],style:l,rest:n,element:k||t.element,_vks:[...a]}};exports.resolveAstroProps=O;
@@ -0,0 +1,20 @@
1
+ import { StyledGeneratorClientProps } from '@salty-css/core/generators';
2
+ export interface ResolvedAstroProps {
3
+ class: string[];
4
+ style: Record<string, any>;
5
+ rest: Record<string, any>;
6
+ element?: string;
7
+ _vks: string[];
8
+ }
9
+ /**
10
+ * SSR equivalent of the React `elementFactory`. Takes the raw `Astro.props` of a
11
+ * generated `.astro` Salty component plus the build-time generator props and
12
+ * returns cleaned values ready to apply on the underlying `<Element>` tag:
13
+ *
14
+ * - `class` — array for `class:list`
15
+ * - `style` — object for `style={}`
16
+ * - `rest` — object to `{...spread}` onto the element (variants and `css-*` props removed unless `passProps` allows)
17
+ * - `element` — runtime element override
18
+ * - `_vks` — variant keys consumed at this level, forwarded so wrapping styled components can keep stripping them
19
+ */
20
+ export declare const resolveAstroProps: (astroProps?: Record<string, any>, generatorProps?: StyledGeneratorClientProps, baseClassName?: string, additionalProps?: Record<string, any>) => ResolvedAstroProps;
@@ -0,0 +1,56 @@
1
+ import { dashCase as j } from "@salty-css/core/util";
2
+ import { parseVariableTokens as S } from "@salty-css/core/parsers";
3
+ const $ = ["passProps"], O = (y = {}, t = {}, m = "", d) => {
4
+ const {
5
+ class: u = "",
6
+ className: v,
7
+ element: k,
8
+ passProps: i = t.passProps,
9
+ _vks: p,
10
+ style: l,
11
+ ...b
12
+ } = y, n = { passProps: i };
13
+ if (t.attr)
14
+ for (const [s, e] of Object.entries(t.attr))
15
+ e !== void 0 && (n[s] = e);
16
+ d && Object.assign(n, d);
17
+ const c = { ...b };
18
+ if (t.defaultProps)
19
+ for (const [s, e] of Object.entries(t.defaultProps))
20
+ c[s] === void 0 && (c[s] = e);
21
+ Object.assign(n, c);
22
+ const f = /* @__PURE__ */ new Set();
23
+ for (const s of String(m).split(" ")) s && f.add(s);
24
+ for (const s of String(u || "").split(" ")) s && f.add(s);
25
+ for (const s of String(v || "").split(" ")) s && f.add(s);
26
+ const r = {};
27
+ if (l && typeof l == "object")
28
+ for (const [s, e] of Object.entries(l)) {
29
+ const o = S(e);
30
+ r[s] = o ? o.transformed : e;
31
+ }
32
+ const a = new Set(Array.isArray(p) ? p : []);
33
+ if (t.propValueKeys)
34
+ for (const s of t.propValueKeys) {
35
+ const e = `css-${s}`, o = c[e];
36
+ o !== void 0 && (r[`--props-${j(s)}`] = o, a.add(e));
37
+ }
38
+ if (t.variantKeys)
39
+ for (const s of t.variantKeys) {
40
+ const [e, o] = s.split("=");
41
+ c[e] !== void 0 ? (f.add(`${e}-${c[e]}`), a.add(e)) : o !== void 0 && f.add(`${e}-${o}`);
42
+ }
43
+ for (const s of a)
44
+ i !== !0 && (Array.isArray(i) && i.includes(s) || typeof i == "string" && i === s || delete n[s]);
45
+ for (const s of $) delete n[s];
46
+ return {
47
+ class: [...f],
48
+ style: r,
49
+ rest: n,
50
+ element: k || t.element,
51
+ _vks: [...a]
52
+ };
53
+ };
54
+ export {
55
+ O as resolveAstroProps
56
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@salty-css/astro",
3
- "version": "0.1.0-alpha.3",
3
+ "version": "0.1.0-alpha.5",
4
4
  "main": "./dist/index.js",
5
5
  "module": "./dist/index.mjs",
6
6
  "typings": "./dist/index.d.ts",
@@ -48,6 +48,18 @@
48
48
  "import": "./class-name.js",
49
49
  "require": "./class-name.cjs"
50
50
  },
51
+ "./element-props": {
52
+ "import": "./element-props.js",
53
+ "require": "./element-props.cjs"
54
+ },
55
+ "./dynamic-styles": {
56
+ "import": "./dynamic-styles.js",
57
+ "require": "./dynamic-styles.cjs"
58
+ },
59
+ "./runtime": {
60
+ "import": "./runtime.js",
61
+ "require": "./runtime.cjs"
62
+ },
51
63
  "./keyframes": {
52
64
  "import": "./keyframes.js",
53
65
  "require": "./keyframes.cjs"
@@ -66,7 +78,7 @@
66
78
  }
67
79
  },
68
80
  "dependencies": {
69
- "@salty-css/core": "^0.1.0-alpha.3",
81
+ "@salty-css/core": "^0.1.0-alpha.5",
70
82
  "astro": "^5.13.2",
71
83
  "vite": "^6.3.5"
72
84
  }
package/runtime.cjs ADDED
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("@salty-css/core/runtime");Object.keys(t).forEach(e=>{e!=="default"&&!Object.prototype.hasOwnProperty.call(exports,e)&&Object.defineProperty(exports,e,{enumerable:!0,get:()=>t[e]})});
package/runtime.d.ts ADDED
@@ -0,0 +1 @@
1
+ export * from '@salty-css/core/runtime';
package/runtime.js ADDED
@@ -0,0 +1 @@
1
+ export * from "@salty-css/core/runtime";