@theme-registry/refract-scss 0.1.7 → 0.1.8

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.js CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";var e=require("@theme-registry/refract");const n={link:":link",visited:":visited",hover:":hover",focus:":focus",active:":active",disabled:"[disabled]",pressed:"[aria-pressed]"},s=Object.keys(n),t=s.reduce((e,n,s)=>(e[n]=s,e),{}),o=e=>e.replace(/[^a-zA-Z0-9]+/g,"-").replace(/^-+|-+$/g,"").toLowerCase(),r=(e,n)=>`$${n}-${e.split(".").map(o).join("-")}`,i=(e,n,s,t)=>[t,e,n,s].map(o).join("-"),l=e=>e.endsWith(".scss")?e:`${e.replace(/\.[^./]+$/,"")}.scss`,a=e=>{const n=l(e),s=n.lastIndexOf("/"),t=s>=0?n.slice(0,s+1):"",o=n.slice(s+1);return`${t}${o.startsWith("_")?o:`_${o}`}`},u=e=>{const n=e.lastIndexOf("/");return e.slice(n+1).replace(/^_/,"").replace(/\.scss$/,"")};exports.createScssAdapter=(o={})=>{var c,d,v;const f=null!==(c=o.prefix)&&void 0!==c?c:"dt",p=null!==(d=o.inline)&&void 0!==d&&d,m=null!==(v=o.indent)&&void 0!==v?v:2,b=" ".repeat(m),h=e=>b.repeat(e),$=!0===o.layer?"refract":"string"==typeof o.layer&&o.layer||void 0,y=e=>{if(!$)return e;const n=e.trimEnd().split("\n").map(e=>e?`${b}${e}`:e).join("\n");return`@layer ${$} {\n${n}\n}\n`},j={name:"scss",version:1,allowedStates:s,bind(s,o){var c,d,v,m,b,j,g;const O=o.media,k=e.buildTokenMap(s),S=e=>{try{return o.resolve(e)}catch{return}},w=(e,n)=>{var s;if("number"!=typeof n)return String(null!=n?n:"");const t=null===(s=k[e])||void 0===s?void 0:s.unit;return t?`${n}${t}`:`${n}`},x=(e,n)=>n?`${n}(${e})`:e,A=(e,n,s)=>Object.entries(e).map(([e,t])=>`${h(n)}${e}: ${((e,n)=>{var s,t,o;if(void 0!==e.ref){const o=null===(s=k[e.ref])||void 0===s?void 0:s.external;return x(void 0!==o?`var(${o})`:n?w(e.ref,null!==(t=S(e.ref))&&void 0!==t?t:e.value):r(e.ref,f),e.wrap)}return x(String(null!==(o=e.value)&&void 0!==o?o:""),e.wrap)})(t,s)};`).join("\n"),E=(e,s,t)=>{var o;const r=null!==(o=e.declarations)&&void 0!==o?o:{},i=e.state?n[e.state]:void 0,l=void 0!==e.breakpoint?(e=>{var n,s,t;const o=e.breakpoint;if(void 0===o)return"";const r=null!==(n=e.query)&&void 0!==n?n:"exact",i=e.orientation;return i?"min"===r?O.min(o,{orientation:i}):"max"===r?O.max(o,{orientation:i}):O.exact(o,{orientation:i}):null!==(t=null===(s=O[o])||void 0===s?void 0:s[r])&&void 0!==t?t:""})(e):void 0;if(!Object.keys(r).length)return"";if(void 0!==e.breakpoint&&!l)return"";const a=[],u=[];let c=s;return l&&(a.push(`${h(c)}${l} {`),u.unshift(`${h(c)}}`),c+=1),i&&(a.push(`${h(c)}&${i} {`),u.unshift(`${h(c)}}`),c+=1),[...a,A(r,c,t),...u].join("\n")},R=e=>[...e].sort((e,n)=>{var s,o;const r=void 0!==e.breakpoint?1:0,i=void 0!==n.breakpoint?1:0;if(r!==i)return r-i;return(e.state?null!==(s=t[e.state])&&void 0!==s?s:99:-1)-(n.state?null!==(o=t[n.state])&&void 0!==o?o:99:-1)}),C=(e,n,s,t)=>{const o=[`${e} {`],r=A(n,1,t);r&&o.push(r);for(const e of R(s)){const n=E(e,1,t);n&&o.push(n)}return o.push("}"),o.join("\n")},B={};for(const[e,n]of Object.entries(s.subsystems))if("components"!==e&&"globals"!==e)for(const[s,t]of Object.entries(null!==(c=n.ruleSets)&&void 0!==c?c:{}))for(const n of Object.keys(t))null!==(v=(g=null!==(d=B[e])&&void 0!==d?d:B[e]={})[s])&&void 0!==v||(g[s]={}),B[e][s][n]=i(e,s,n,f);const V={},W=s.subsystems.components;if(W)for(const[n,s]of Object.entries(null!==(m=W.ruleSets)&&void 0!==m?m:{}))for(const[t,o]of Object.entries(s)){const s=i("components",n,t,f),r=(null!==(b=o.references)&&void 0!==b?b:[]).map(n=>{var s,t;const o=e.parseRuleSetReference(n);return o?null===(t=null===(s=B[o.subsystem])||void 0===s?void 0:s[o.group])||void 0===t?void 0:t[o.variant]:void 0}).filter(e=>void 0!==e),l=[...r,s];(null!==(j=V[n])&&void 0!==j?j:V[n]={})[t]={className:l.join(" "),classList:l}}const _=e=>{var n;if(p)return"";const s=`${e}.`,t=[];for(const[e,o]of Object.entries(k)){if(!e.startsWith(s))continue;if(void 0!==o.external)continue;const i=null!==(n=S(e))&&void 0!==n?n:o.value;void 0!==i&&t.push(`${r(e,f)}: ${w(e,i)};`)}return t.join("\n")},q=(e,n,t,o)=>{var r,l,a,u,c,d;const v=null===(a=null===(l=null===(r=s.subsystems[e])||void 0===r?void 0:r.ruleSets)||void 0===l?void 0:l[n])||void 0===a?void 0:a[t];if(!v)return"";if("globals"===v.kind)return((e,n)=>{var s,t;const o=[`${null!==(s=e.selector)&&void 0!==s?s:"*"} {`],r=A(e.declarations,1,n);r&&o.push(r);for(const s of R(e.overrides)){const e=E(s,1,n);e&&o.push(e)}for(const[s,r]of Object.entries(null!==(t=e.variants)&&void 0!==t?t:{})){const e=[`${h(1)}&.${s} {`],t=A(r.declarations,2,n);t&&e.push(t);for(const s of R(r.overrides)){const t=E(s,2,n);t&&e.push(t)}e.push(`${h(1)}}`),o.push(e.join("\n"))}return o.push("}"),o.join("\n")})(v,o);if("reset"===v.kind){const e=null!==(u=v.selector)&&void 0!==u?u:"*";return C(`:where(${e})`,v.declarations,v.overrides,o)}const p="components"===e?i("components",n,t,f):null===(d=null===(c=B[e])||void 0===c?void 0:c[n])||void 0===d?void 0:d[t];return p?C(`.${p}`,v.declarations,v.overrides,o):""},I=()=>Object.keys(s.subsystems).map(_).filter(Boolean).join("\n\n"),L=()=>{var e;const n=[];for(const[t,o]of Object.entries(s.subsystems))for(const[s,r]of Object.entries(null!==(e=o.ruleSets)&&void 0!==e?e:{}))for(const e of Object.keys(r)){const o=q(t,s,e,p);o&&n.push(o)}return n.join("\n\n")},N=()=>[I(),L()].filter(Boolean).join("\n\n");return{recipeName(e,n,t){var o,r,l,a,u,c;const d=null===(l=null===(r=null===(o=s.subsystems[e])||void 0===o?void 0:o.ruleSets)||void 0===r?void 0:r[n])||void 0===l?void 0:l[t];return"reset"===(null==d?void 0:d.kind)||"globals"===(null==d?void 0:d.kind)?"":"components"===e?i("components",n,t,f):null!==(c=null===(u=null===(a=B[e])||void 0===a?void 0:a[n])||void 0===u?void 0:u[t])&&void 0!==c?c:""},describeUsage(){var e,n,t,o;const r=[];for(const[l,a]of Object.entries(s.subsystems))for(const[s,u]of Object.entries(null!==(e=a.ruleSets)&&void 0!==e?e:{}))for(const[e,a]of Object.entries(u)){if("reset"===(null==a?void 0:a.kind)||"globals"===(null==a?void 0:a.kind))continue;const u="components"===l?i("components",s,e,f):null!==(o=null===(t=null===(n=B[l])||void 0===n?void 0:n[s])||void 0===t?void 0:t[e])&&void 0!==o?o:"";u&&r.push({subsystem:l,group:s,variant:e,name:u})}return{format:"scss",summary:["This theme is emitted as Sass partials: a `$`-variables layer plus recipe rules that compile to CSS classes.",'Pull it into your Sass entry with `@use`: `@use "theme" as *;` (or `@use "variables" as *;` for just the tokens), then compile to CSS.','Apply the recipe class names below to your markup: `<button class="<class>">`. Values resolve through Sass variables (or baked literals under the `inline` option).'],recipes:r}},renderRecipe:(e,n,s)=>q(e,n,s,p),renderVariables:e=>_(e),join:e=>e.filter(Boolean).join("\n\n"),renderAllVariables:I,renderAllRecipes:L,renderAll:N,extend:()=>({media:O,get scss(){return y(N())},get variablesScss(){return I()},get rulesScss(){return L()},get classes(){return(()=>{const e={};for(const[n,s]of Object.entries(B)){const t={};for(const[e,n]of Object.entries(s))t[e]={...n};e[n]=t}return W&&(e.components=V),e})()}}),emit(n){var t,o,c,d,v,m;const b=null!==(t=null==n?void 0:n.type)&&void 0!==t?t:"single";if($&&"single"!==b)throw new Error(`scss adapter: the \`layer\` option is only supported with single-file emit (got "${b}").`);if("single"===b){const e="single"===(null==n?void 0:n.type)?n.file:"theme.scss";return{files:{[l(e)]:y(N())}}}if(p&&("split"===b||"subsystem"===b))throw new Error(`scss adapter: emit mode '${b}' cannot be combined with the global inline option (inline bakes values, leaving no $variables file)`);if("split"===(null==n?void 0:n.type)){const e=a(n.variables),s=l(n.file),t=`@use "${u(e)}" as *;\n\n${L()}`;return{files:{[s]:t,[e]:I()}}}if("subsystem"===(null==n?void 0:n.type))throw new Error("scss adapter: emit mode 'subsystem' is not supported yet");if("components"===(null==n?void 0:n.type)){const t=null!==(c=null===(o=s.subsystems.components)||void 0===o?void 0:o.ruleSets)&&void 0!==c?c:{},p=n.inline,b={},h=[],$=new Set;for(const[o,r]of Object.entries(t))for(const t of Object.keys(r)){const r=e.mergeComponentRuleSet(s,o,t),a=`.${i("components",o,t,f)}`,u=[...Object.entries(r.states).map(([e,n])=>({state:e,declarations:n})),...r.responsive.map(e=>{const{declarations:n,...s}=e;return{...s,declarations:n}})],c=C(a,r.base,u,p),v=l(n.filename({group:o,variant:t}));if((null!==(d=b[v])&&void 0!==d?d:b[v]=[]).push(c),!p)for(const e of r.referencedPaths)$.has(e)||($.add(e),h.push(e))}const y={},j=!p&&h.length>0&&!1!==n.variables;for(const[e,s]of Object.entries(b)){const t=s.join("\n\n");y[e]=j?`@use "${u(a(n.variables))}" as *;\n\n${t}`:t}if(!p&&!1!==n.variables){const e=[];for(const n of h){const s=null!==(v=S(n))&&void 0!==v?v:null===(m=k[n])||void 0===m?void 0:m.value;void 0!==s&&e.push(`${r(n,f)}: ${w(n,s)};`)}e.length&&(y[a(n.variables)]=e.join("\n"))}return{files:y}}throw new Error(`scss adapter: emit mode '${b}' not yet implemented`)}}}};return e.defineAdapter(j)};
1
+ "use strict";var e=require("@theme-registry/refract");const s={link:":link",visited:":visited",hover:":hover",focus:":focus",active:":active",disabled:"[disabled]",pressed:"[aria-pressed]"},n=Object.keys(s),t=n.reduce((e,s,n)=>(e[s]=n,e),{}),o=e=>e.replace(/[^a-zA-Z0-9]+/g,"-").replace(/^-+|-+$/g,"").toLowerCase(),r=(e,s)=>`$${s}-${e.split(".").map(o).join("-")}`,i=(e,s,n,t)=>[t,e,s,n].map(o).join("-"),l=e=>e.endsWith(".scss")?e:`${e.replace(/\.[^./]+$/,"")}.scss`,a=e=>{const s=l(e),n=s.lastIndexOf("/"),t=n>=0?s.slice(0,n+1):"",o=s.slice(n+1);return`${t}${o.startsWith("_")?o:`_${o}`}`},c=e=>{const s=e.lastIndexOf("/");return e.slice(s+1).replace(/^_/,"").replace(/\.scss$/,"")};exports.createScssAdapter=(o={})=>{var u,d,v;const f=null!==(u=o.prefix)&&void 0!==u?u:"dt",p=null!==(d=o.inline)&&void 0!==d&&d,m=null!==(v=o.indent)&&void 0!==v?v:2,b=" ".repeat(m),h=e=>b.repeat(e),$=!0===o.layer?"refract":"string"==typeof o.layer&&o.layer||void 0,y=e=>{if(!$)return e;const s=e.trimEnd().split("\n").map(e=>e?`${b}${e}`:e).join("\n");return`@layer ${$} {\n${s}\n}\n`},j={name:"scss",version:1,allowedStates:n,bind(n,o){var u,d,v,m,b,j,g;const S=o.media,k=e.buildTokenMap(n),O=e=>{try{return o.resolve(e)}catch{return}},w=(e,s)=>{var n;if("number"!=typeof s)return String(null!=s?s:"");const t=null===(n=k[e])||void 0===n?void 0:n.unit;return t?`${s}${t}`:`${s}`},x=(e,s)=>s?`${s}(${e})`:e,A=(e,s,n)=>Object.entries(e).map(([e,t])=>`${h(s)}${e}: ${((e,s)=>{var n,t,o;if(void 0!==e.ref){const o=null===(n=k[e.ref])||void 0===n?void 0:n.external;return x(void 0!==o?`var(${o})`:s?w(e.ref,null!==(t=O(e.ref))&&void 0!==t?t:e.value):r(e.ref,f),e.wrap)}return x(String(null!==(o=e.value)&&void 0!==o?o:""),e.wrap)})(t,n)};`).join("\n"),C=(e,n,t)=>{var o;const r=null!==(o=e.declarations)&&void 0!==o?o:{},i=e.state?s[e.state]:void 0,l=void 0!==e.breakpoint?(e=>{var s,n,t;const o=e.breakpoint;if(void 0===o)return"";const r=null!==(s=e.query)&&void 0!==s?s:"exact",i=e.orientation;return i?"min"===r?S.min(o,{orientation:i}):"max"===r?S.max(o,{orientation:i}):S.exact(o,{orientation:i}):null!==(t=null===(n=S[o])||void 0===n?void 0:n[r])&&void 0!==t?t:""})(e):void 0;if(!Object.keys(r).length)return"";if(void 0!==e.breakpoint&&!l)return"";const a=[],c=[];let u=n;return l&&(a.push(`${h(u)}${l} {`),c.unshift(`${h(u)}}`),u+=1),i&&(a.push(`${h(u)}&${i} {`),c.unshift(`${h(u)}}`),u+=1),[...a,A(r,u,t),...c].join("\n")},E=e=>[...e].sort((e,s)=>{var n,o;const r=void 0!==e.breakpoint?1:0,i=void 0!==s.breakpoint?1:0;if(r!==i)return r-i;return(e.state?null!==(n=t[e.state])&&void 0!==n?n:99:-1)-(s.state?null!==(o=t[s.state])&&void 0!==o?o:99:-1)}),R=(e,s,n,t)=>{const o=[`${e} {`],r=A(s,1,t);r&&o.push(r);for(const e of E(n)){const s=C(e,1,t);s&&o.push(s)}return o.push("}"),o.join("\n")},T={};for(const[e,s]of Object.entries(n.subsystems))if("components"!==e&&"globals"!==e)for(const[n,t]of Object.entries(null!==(u=s.ruleSets)&&void 0!==u?u:{}))for(const s of Object.keys(t))null!==(v=(g=null!==(d=T[e])&&void 0!==d?d:T[e]={})[n])&&void 0!==v||(g[n]={}),T[e][n][s]=i(e,n,s,f);const B={},P=n.subsystems.components;if(P)for(const[s,n]of Object.entries(null!==(m=P.ruleSets)&&void 0!==m?m:{}))for(const[t,o]of Object.entries(n)){const n=i("components",s,t,f),r=(null!==(b=o.references)&&void 0!==b?b:[]).map(s=>{var n,t;const o=e.parseRuleSetReference(s);return o?null===(t=null===(n=T[o.subsystem])||void 0===n?void 0:n[o.group])||void 0===t?void 0:t[o.variant]:void 0}).filter(e=>void 0!==e),l=[...r,n];(null!==(j=B[s])&&void 0!==j?j:B[s]={})[t]={className:l.join(" "),classList:l}}const V=e=>{var s;if(p)return"";const n=`${e}.`,t=[];for(const[e,o]of Object.entries(k)){if(!e.startsWith(n))continue;if(void 0!==o.external)continue;const i=null!==(s=O(e))&&void 0!==s?s:o.value;void 0!==i&&t.push(`${r(e,f)}: ${w(e,i)};`)}return t.join("\n")},W=(e,s,t,o)=>{var r,l,a,c,u,d;const v=null===(a=null===(l=null===(r=n.subsystems[e])||void 0===r?void 0:r.ruleSets)||void 0===l?void 0:l[s])||void 0===a?void 0:a[t];if(!v)return"";if("globals"===v.kind)return((e,s)=>{var n,t;const o=[`${null!==(n=e.selector)&&void 0!==n?n:"*"} {`],r=A(e.declarations,1,s);r&&o.push(r);for(const n of E(e.overrides)){const e=C(n,1,s);e&&o.push(e)}for(const[n,r]of Object.entries(null!==(t=e.variants)&&void 0!==t?t:{})){const e=[`${h(1)}&.${n} {`],t=A(r.declarations,2,s);t&&e.push(t);for(const n of E(r.overrides)){const t=C(n,2,s);t&&e.push(t)}e.push(`${h(1)}}`),o.push(e.join("\n"))}return o.push("}"),o.join("\n")})(v,o);if("reset"===v.kind){const e=null!==(c=v.selector)&&void 0!==c?c:"*";return R(`:where(${e})`,v.declarations,v.overrides,o)}const p="components"===e?i("components",s,t,f):null===(d=null===(u=T[e])||void 0===u?void 0:u[s])||void 0===d?void 0:d[t];return p?R(`.${p}`,v.declarations,v.overrides,o):""},_=()=>Object.keys(n.subsystems).map(V).filter(Boolean).join("\n\n"),q=()=>{var e;const s=[];for(const[t,o]of Object.entries(n.subsystems))for(const[n,r]of Object.entries(null!==(e=o.ruleSets)&&void 0!==e?e:{}))for(const e of Object.keys(r)){const o=W(t,n,e,p);o&&s.push(o)}return s.join("\n\n")},I=()=>[_(),q()].filter(Boolean).join("\n\n");return{recipeName(e,s,t){var o,r,l,a,c,u;const d=null===(l=null===(r=null===(o=n.subsystems[e])||void 0===o?void 0:o.ruleSets)||void 0===r?void 0:r[s])||void 0===l?void 0:l[t];return"reset"===(null==d?void 0:d.kind)||"globals"===(null==d?void 0:d.kind)?"":"components"===e?i("components",s,t,f):null!==(u=null===(c=null===(a=T[e])||void 0===a?void 0:a[s])||void 0===c?void 0:c[t])&&void 0!==u?u:""},describePreview:()=>({stylesheets:[],unavailable:"This target emits Sass partials, which a browser cannot load directly — compile them to CSS first (or add a CSS target to this config) for a live render. Token values below are exact; recipe class names are the ones the partials compile to."}),describeUsage(){var e,s,t,o;const r=[];for(const[l,a]of Object.entries(n.subsystems))for(const[n,c]of Object.entries(null!==(e=a.ruleSets)&&void 0!==e?e:{}))for(const[e,a]of Object.entries(c)){if("reset"===(null==a?void 0:a.kind)||"globals"===(null==a?void 0:a.kind))continue;const c="components"===l?i("components",n,e,f):null!==(o=null===(t=null===(s=T[l])||void 0===s?void 0:s[n])||void 0===t?void 0:t[e])&&void 0!==o?o:"";c&&r.push({subsystem:l,group:n,variant:e,name:c})}return{format:"scss",summary:["This theme is emitted as Sass partials: a `$`-variables layer plus recipe rules that compile to CSS classes.",'Pull it into your Sass entry with `@use`: `@use "theme" as *;` (or `@use "variables" as *;` for just the tokens), then compile to CSS.','Apply the recipe class names below to your markup: `<button class="<class>">`. Values resolve through Sass variables (or baked literals under the `inline` option).'],recipes:r}},renderRecipe:(e,s,n)=>W(e,s,n,p),renderVariables:e=>V(e),join:e=>e.filter(Boolean).join("\n\n"),renderAllVariables:_,renderAllRecipes:q,renderAll:I,extend:()=>({media:S,get scss(){return y(I())},get variablesScss(){return _()},get rulesScss(){return q()},get classes(){return(()=>{const e={};for(const[s,n]of Object.entries(T)){const t={};for(const[e,s]of Object.entries(n))t[e]={...s};e[s]=t}return P&&(e.components=B),e})()}}),emit(s){var t,o,u,d,v,m;const b=null!==(t=null==s?void 0:s.type)&&void 0!==t?t:"single";if($&&"single"!==b)throw new Error(`scss adapter: the \`layer\` option is only supported with single-file emit (got "${b}").`);if("single"===b){const e="single"===(null==s?void 0:s.type)?s.file:"theme.scss";return{files:{[l(e)]:y(I())}}}if(p&&("split"===b||"subsystem"===b))throw new Error(`scss adapter: emit mode '${b}' cannot be combined with the global inline option (inline bakes values, leaving no $variables file)`);if("split"===(null==s?void 0:s.type)){const e=a(s.variables),n=l(s.file),t=`@use "${c(e)}" as *;\n\n${q()}`;return{files:{[n]:t,[e]:_()}}}if("subsystem"===(null==s?void 0:s.type))throw new Error("scss adapter: emit mode 'subsystem' is not supported yet");if("components"===(null==s?void 0:s.type)){const t=null!==(u=null===(o=n.subsystems.components)||void 0===o?void 0:o.ruleSets)&&void 0!==u?u:{},p=s.inline,b={},h=[],$=new Set;for(const[o,r]of Object.entries(t))for(const t of Object.keys(r)){const r=e.mergeComponentRuleSet(n,o,t),a=`.${i("components",o,t,f)}`,c=[...Object.entries(r.states).map(([e,s])=>({state:e,declarations:s})),...r.responsive.map(e=>{const{declarations:s,...n}=e;return{...n,declarations:s}})],u=R(a,r.base,c,p),v=l(s.filename({group:o,variant:t}));if((null!==(d=b[v])&&void 0!==d?d:b[v]=[]).push(u),!p)for(const e of r.referencedPaths)$.has(e)||($.add(e),h.push(e))}const y={},j=!p&&h.length>0&&!1!==s.variables;for(const[e,n]of Object.entries(b)){const t=n.join("\n\n");y[e]=j?`@use "${c(a(s.variables))}" as *;\n\n${t}`:t}if(!p&&!1!==s.variables){const e=[];for(const s of h){const n=null!==(v=O(s))&&void 0!==v?v:null===(m=k[s])||void 0===m?void 0:m.value;void 0!==n&&e.push(`${r(s,f)}: ${w(s,n)};`)}e.length&&(y[a(s.variables)]=e.join("\n"))}return{files:y}}throw new Error(`scss adapter: emit mode '${b}' not yet implemented`)}}}};return e.defineAdapter(j)};
2
2
  //# sourceMappingURL=index.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs.js","sources":["../src/index.ts"],"sourcesContent":["/**\n * The SCSS adapter — lowers the format-neutral {@link ThemeModel} to idiomatic Sass.\n *\n * The third output adapter. Like CSS its `TUnit` is `string`, but the output is genuinely a\n * different format: tokens become compile-time **`$variables`** (not `:root` custom properties),\n * declaration refs render as **`$dt-…`** (not `var(--…)`), and each rule-set nests its\n * state/breakpoint overrides with `&` / `@media` the Sass way. Recipes are emitted as **classes**\n * and composition is the option-C **class list** (as in the CSS adapter) — the same class surface,\n * generated from Sass source.\n *\n * Naming is uniform + path-based (`$dt-<subsystem>-<path>`, `.dt-<subsystem>-<group>-<variant>`) —\n * SCSS is its own format, so it does not chase the CSS adapter's byte-for-byte variable/class names.\n *\n * KNOWN LIMITATION (inherent to compile-time Sass variables): `$variables` capture each token's\n * BASE value only. Responsive / appearance-mode *token* variation — which the CSS adapter emits as\n * `@media { :root { --x: … } }` custom-property reassignments — cannot be expressed as a `$variable`\n * (a Sass var is not media-conditional). Recipe-level breakpoint overrides, which re-emit whole\n * declarations, are fully supported via nested `@media`.\n *\n * Worked reference: `src/adapters/css/`. Core stays format-agnostic; all naming + state handling live here.\n */\nimport type { Literal, Ref, RuleSet, RuleSetOverride, ThemeModel } from \"@theme-registry/refract\";\nimport { buildTokenMap, mergeComponentRuleSet, parseRuleSetReference } from \"@theme-registry/refract\";\nimport type { MergedRuleSet } from \"@theme-registry/refract\";\nimport type { MediaDescriptor, MediaVariant } from \"@theme-registry/refract\";\nimport type { AdapterSpec, RenderContext, ThemeAdapter, UsageDescriptor, UsageRecipe } from \"@theme-registry/refract\";\nimport { defineAdapter } from \"@theme-registry/refract\";\nimport type { ResolvedComponentClass, ScssAdapterOptions, ScssUnit } from \"./types\";\n\nexport type { ResolvedComponentClass, ScssAdapterOptions, ScssUnit } from \"./types\";\n\n/** `state → selector suffix`, nested as `&<suffix>`. SCSS compiles to CSS, so it knows the CSS states. */\nconst SCSS_STATE_SELECTORS: Record<string, string> = {\n link: \":link\",\n visited: \":visited\",\n hover: \":hover\",\n focus: \":focus\",\n active: \":active\",\n disabled: \"[disabled]\",\n pressed: \"[aria-pressed]\",\n};\nconst SCSS_KNOWN_STATES: ReadonlyArray<string> = Object.keys(SCSS_STATE_SELECTORS);\nconst STATE_ORDER: Record<string, number> = SCSS_KNOWN_STATES.reduce<Record<string, number>>(\n (acc, s, i) => ((acc[s] = i), acc),\n {},\n);\n\n/** Sanitize one identifier segment to `[a-z0-9-]` (drops `.` / `--` collisions to single dashes). */\nconst sanitizeSegment = (segment: string): string =>\n segment.replace(/[^a-zA-Z0-9]+/g, \"-\").replace(/^-+|-+$/g, \"\").toLowerCase();\n\n/** `$dt-colors-primary-dark` from a token path + prefix. */\nconst scssVarName = (path: string, prefix: string): string =>\n `$${prefix}-${path.split(\".\").map(sanitizeSegment).join(\"-\")}`;\n\n/** `dt-colors-solid-primary` from an address + prefix (no leading dot). */\nconst scssClassName = (subsystem: string, group: string, variant: string, prefix: string): string =>\n [prefix, subsystem, group, variant].map(sanitizeSegment).join(\"-\");\n\n/** Normalize a filename to a `.scss` extension (plan defaults are CSS-centric). */\nconst scssName = (name: string): string =>\n name.endsWith(\".scss\") ? name : `${name.replace(/\\.[^./]+$/, \"\")}.scss`;\n\n/** Turn a filename into a Sass partial (`_name.scss`) for `@use`. */\nconst scssPartial = (name: string): string => {\n const scss = scssName(name);\n const slash = scss.lastIndexOf(\"/\");\n const dir = slash >= 0 ? scss.slice(0, slash + 1) : \"\";\n const base = scss.slice(slash + 1);\n return `${dir}${base.startsWith(\"_\") ? base : `_${base}`}`;\n};\n\n/** The `@use` reference for a partial — its basename without leading `_` or `.scss`. */\nconst useRef = (partial: string): string => {\n const slash = partial.lastIndexOf(\"/\");\n return partial\n .slice(slash + 1)\n .replace(/^_/, \"\")\n .replace(/\\.scss$/, \"\");\n};\n\nexport const createScssAdapter = (options: ScssAdapterOptions = {}): ThemeAdapter<ScssUnit> => {\n const prefix = options.prefix ?? \"dt\";\n const optionInline = options.inline ?? false;\n const indentWidth = options.indent ?? 2;\n const IND = \" \".repeat(indentWidth);\n const pad = (level: number): string => IND.repeat(level);\n // §W9 — optional cascade-layer wrap for the full-document output (single emit + runtime `scss`).\n const layerName =\n options.layer === true ? \"refract\" : (typeof options.layer === \"string\" && options.layer) || undefined;\n const wrapLayer = (scss: string): string => {\n if (!layerName) return scss;\n const body = scss\n .trimEnd()\n .split(\"\\n\")\n .map(line => (line ? `${IND}${line}` : line))\n .join(\"\\n\");\n return `@layer ${layerName} {\\n${body}\\n}\\n`;\n };\n\n const spec: AdapterSpec<ScssUnit> = {\n name: \"scss\",\n version: 1,\n // SCSS compiles to CSS, so it renders the same state selectors CSS does.\n allowedStates: SCSS_KNOWN_STATES,\n bind(model: ThemeModel, ctx: RenderContext) {\n const media = ctx.media;\n const tokenMap = buildTokenMap(model);\n\n const safeResolve = (path: string): Literal | undefined => {\n try {\n return ctx.resolve(path);\n } catch {\n return undefined;\n }\n };\n\n /**\n * A token value → its SCSS text. §21: length units are resolved format-neutrally in core and baked\n * onto the leaf's `Ref.unit`; a numeric length token appends its resolved unit (looked up on the\n * token map), everything else (unit-less numbers, colours, strings) passes through raw.\n */\n const formatTokenValue = (path: string, value: Literal | undefined): string => {\n if (typeof value !== \"number\") return String(value ?? \"\");\n const unit = tokenMap[path]?.unit;\n return unit ? `${value}${unit}` : `${value}`;\n };\n\n const applyWrap = (value: string, wrap?: string): string => (wrap ? `${wrap}(${value})` : value);\n\n /** Render one declaration value: a `$var` ref (default), or a baked literal (inline). */\n const renderValue = (ref: Ref, inline: boolean): string => {\n if (ref.ref !== undefined) {\n // §W6b — an external token has no `$var`; reference the parent's CSS variable directly.\n const external = tokenMap[ref.ref]?.external;\n if (external !== undefined) return applyWrap(`var(${external})`, ref.wrap);\n if (inline) return applyWrap(formatTokenValue(ref.ref, safeResolve(ref.ref) ?? ref.value), ref.wrap);\n return applyWrap(scssVarName(ref.ref, prefix), ref.wrap);\n }\n return applyWrap(String(ref.value ?? \"\"), ref.wrap);\n };\n\n const renderDeclarations = (decls: Record<string, Ref>, level: number, inline: boolean): string =>\n Object.entries(decls)\n .map(([property, ref]) => `${pad(level)}${property}: ${renderValue(ref, inline)};`)\n .join(\"\\n\");\n\n /** The full `@media (…)` at-rule for a viewport override (empty when unresolved). The core media\n * descriptor already includes the `@media` keyword, so it is used verbatim as the block prelude. */\n const mediaQueryFor = (override: Pick<RuleSetOverride, \"breakpoint\" | \"query\" | \"orientation\">): string => {\n const breakpoint = override.breakpoint;\n if (breakpoint === undefined) return \"\";\n const query = (override.query ?? \"exact\") as MediaVariant;\n const orientation = override.orientation;\n if (!orientation) return (media as MediaDescriptor<string>)[breakpoint]?.[query] ?? \"\";\n if (query === \"min\") return media.min(breakpoint, { orientation });\n if (query === \"max\") return media.max(breakpoint, { orientation });\n return media.exact(breakpoint, { orientation });\n };\n\n /** One override → its nested block (`&:hover { … }`, `@media (…) { … }`, or both). */\n const renderOverride = (override: RuleSetOverride, level: number, inline: boolean): string => {\n const decls = override.declarations ?? {};\n const stateSuffix = override.state ? SCSS_STATE_SELECTORS[override.state] : undefined;\n const atRule = override.breakpoint !== undefined ? mediaQueryFor(override) : undefined;\n // Nothing renderable (e.g. a pure variant/target swap — not expressible in a $var recipe class).\n if (!Object.keys(decls).length) return \"\";\n if (override.breakpoint !== undefined && !atRule) return \"\";\n\n const open: string[] = [];\n const close: string[] = [];\n let cur = level;\n if (atRule) {\n open.push(`${pad(cur)}${atRule} {`);\n close.unshift(`${pad(cur)}}`);\n cur += 1;\n }\n if (stateSuffix) {\n open.push(`${pad(cur)}&${stateSuffix} {`);\n close.unshift(`${pad(cur)}}`);\n cur += 1;\n }\n return [...open, renderDeclarations(decls, cur, inline), ...close].join(\"\\n\");\n };\n\n /** Order overrides: canonical state order, base-state (no bp) before responsive. */\n const orderOverrides = (overrides: RuleSetOverride[]): RuleSetOverride[] =>\n [...overrides].sort((a, b) => {\n const abp = a.breakpoint !== undefined ? 1 : 0;\n const bbp = b.breakpoint !== undefined ? 1 : 0;\n if (abp !== bbp) return abp - bbp;\n const as = a.state ? STATE_ORDER[a.state] ?? 99 : -1;\n const bs = b.state ? STATE_ORDER[b.state] ?? 99 : -1;\n return as - bs;\n });\n\n /** Render a `{ declarations, overrides }` block under a selector (recipe class / reset selector). */\n const renderRuleSet = (\n selector: string,\n declarations: Record<string, Ref>,\n overrides: RuleSetOverride[],\n inline: boolean,\n ): string => {\n const parts: string[] = [`${selector} {`];\n const base = renderDeclarations(declarations, 1, inline);\n if (base) parts.push(base);\n for (const override of orderOverrides(overrides)) {\n const block = renderOverride(override, 1, inline);\n if (block) parts.push(block);\n }\n parts.push(`}`);\n return parts.join(\"\\n\");\n };\n\n /**\n * Render a themed globals element (§9) `kind:\"globals\"` rule-set → a bare, nested SCSS block:\n * `selector { <decls>; <&:state / @media overrides>; &.<variant> { <delta>; <overrides> } }`.\n * Unlike the preset `:where()` reset layer, the selector is bare (higher tier) and each\n * delta-only variant nests as `&.<variant>`.\n */\n const renderGlobalsElement = (ruleSet: RuleSet, inline: boolean): string => {\n const selector = ruleSet.selector ?? \"*\";\n const parts: string[] = [`${selector} {`];\n const base = renderDeclarations(ruleSet.declarations, 1, inline);\n if (base) parts.push(base);\n for (const override of orderOverrides(ruleSet.overrides)) {\n const block = renderOverride(override, 1, inline);\n if (block) parts.push(block);\n }\n for (const [variantName, variant] of Object.entries(ruleSet.variants ?? {})) {\n const vparts: string[] = [`${pad(1)}&.${variantName} {`];\n const vbase = renderDeclarations(variant.declarations, 2, inline);\n if (vbase) vparts.push(vbase);\n for (const override of orderOverrides(variant.overrides)) {\n const block = renderOverride(override, 2, inline);\n if (block) vparts.push(block);\n }\n vparts.push(`${pad(1)}}`);\n parts.push(vparts.join(\"\\n\"));\n }\n parts.push(`}`);\n return parts.join(\"\\n\");\n };\n\n // ── Precompute class names for every recipe/utility variant (components' class list needs\n // sibling classes) — mirrors the CSS adapter's `selectors` map. ──\n const selectors: Record<string, Record<string, Record<string, string>>> = {};\n for (const [subsystem, subModel] of Object.entries(model.subsystems)) {\n if (subsystem === \"components\" || subsystem === \"globals\") continue;\n for (const [group, ruleSetGroup] of Object.entries(subModel.ruleSets ?? {})) {\n for (const variant of Object.keys(ruleSetGroup)) {\n (selectors[subsystem] ??= {})[group] ??= {};\n selectors[subsystem][group][variant] = scssClassName(subsystem, group, variant, prefix);\n }\n }\n }\n\n // ── Components: option-C class list (referenced recipe classes + own delta class). ──\n const componentClasses: Record<string, Record<string, ResolvedComponentClass>> = {};\n const components = model.subsystems.components;\n if (components) {\n for (const [group, ruleSetGroup] of Object.entries(components.ruleSets ?? {})) {\n for (const [variant, ruleSet] of Object.entries(ruleSetGroup)) {\n const ownClass = scssClassName(\"components\", group, variant, prefix);\n const referenced = (ruleSet.references ?? [])\n .map(reference => {\n const parsed = parseRuleSetReference(reference);\n return parsed ? selectors[parsed.subsystem]?.[parsed.group]?.[parsed.variant] : undefined;\n })\n .filter((cls): cls is string => cls !== undefined);\n const classList = [...referenced, ownClass];\n (componentClasses[group] ??= {})[variant] = { className: classList.join(\" \"), classList };\n }\n }\n }\n\n // ── Primitives ──\n const renderVariablesFor = (subsystem: string): string => {\n // Inline bakes values into declarations, so there are no `$variables` to define.\n if (optionInline) return \"\";\n const prefixDot = `${subsystem}.`;\n const lines: string[] = [];\n for (const [path, ref] of Object.entries(tokenMap)) {\n if (!path.startsWith(prefixDot)) continue;\n if (ref.external !== undefined) continue; // §W6b — parent owns the var; define no `$var`\n const value = safeResolve(path) ?? ref.value;\n if (value === undefined) continue;\n lines.push(`${scssVarName(path, prefix)}: ${formatTokenValue(path, value)};`);\n }\n return lines.join(\"\\n\");\n };\n\n const renderRecipeFor = (subsystem: string, group: string, variant: string, inline: boolean): string => {\n const ruleSet = model.subsystems[subsystem]?.ruleSets?.[group]?.[variant];\n if (!ruleSet) return \"\";\n if (ruleSet.kind === \"globals\") {\n return renderGlobalsElement(ruleSet, inline);\n }\n if (ruleSet.kind === \"reset\") {\n const target = ruleSet.selector ?? \"*\";\n return renderRuleSet(`:where(${target})`, ruleSet.declarations, ruleSet.overrides, inline);\n }\n const cls =\n subsystem === \"components\"\n ? scssClassName(\"components\", group, variant, prefix)\n : selectors[subsystem]?.[group]?.[variant];\n if (!cls) return \"\";\n return renderRuleSet(`.${cls}`, ruleSet.declarations, ruleSet.overrides, inline);\n };\n\n // Aggregate builders (reused by the aggregators, `extend`, and `emit`).\n const allVariables = (): string =>\n Object.keys(model.subsystems)\n .map(renderVariablesFor)\n .filter(Boolean)\n .join(\"\\n\\n\");\n\n const allRecipes = (): string => {\n const parts: string[] = [];\n for (const [subsystem, subModel] of Object.entries(model.subsystems)) {\n for (const [group, ruleSetGroup] of Object.entries(subModel.ruleSets ?? {})) {\n for (const variant of Object.keys(ruleSetGroup)) {\n const rule = renderRecipeFor(subsystem, group, variant, optionInline);\n if (rule) parts.push(rule);\n }\n }\n }\n return parts.join(\"\\n\\n\");\n };\n\n const allScss = (): string => [allVariables(), allRecipes()].filter(Boolean).join(\"\\n\\n\");\n\n const collectClasses = (): Record<string, Record<string, Record<string, unknown>>> => {\n const out: Record<string, Record<string, Record<string, unknown>>> = {};\n for (const [subsystem, groups] of Object.entries(selectors)) {\n const g: Record<string, Record<string, string>> = {};\n for (const [group, variants] of Object.entries(groups)) g[group] = { ...variants };\n out[subsystem] = g;\n }\n if (components) out.components = componentClasses;\n return out;\n };\n\n return {\n recipeName(subsystem, group, variant) {\n const ruleSet = model.subsystems[subsystem]?.ruleSets?.[group]?.[variant];\n if (ruleSet?.kind === \"reset\" || ruleSet?.kind === \"globals\") return \"\";\n if (subsystem === \"components\") return scssClassName(\"components\", group, variant, prefix);\n return selectors[subsystem]?.[group]?.[variant] ?? \"\";\n },\n\n // Self-documentation: the REAL class names recipes compile to (globals/reset carry no class),\n // plus Sass-specific `@use` prose for the emitted guide (llms.txt).\n describeUsage(): UsageDescriptor {\n const recipes: UsageRecipe[] = [];\n for (const [subsystem, sub] of Object.entries(model.subsystems)) {\n for (const [group, ruleSetGroup] of Object.entries(sub.ruleSets ?? {})) {\n for (const [variant, ruleSet] of Object.entries(ruleSetGroup)) {\n if (ruleSet?.kind === \"reset\" || ruleSet?.kind === \"globals\") continue;\n const name =\n subsystem === \"components\"\n ? scssClassName(\"components\", group, variant, prefix)\n : selectors[subsystem]?.[group]?.[variant] ?? \"\";\n if (name) recipes.push({ subsystem, group, variant, name });\n }\n }\n }\n return {\n format: \"scss\",\n summary: [\n \"This theme is emitted as Sass partials: a `$`-variables layer plus recipe rules that compile to CSS classes.\",\n 'Pull it into your Sass entry with `@use`: `@use \"theme\" as *;` (or `@use \"variables\" as *;` for just the tokens), then compile to CSS.',\n 'Apply the recipe class names below to your markup: `<button class=\"<class>\">`. Values resolve through Sass variables (or baked literals under the `inline` option).',\n ],\n recipes,\n };\n },\n renderRecipe(subsystem, group, variant) {\n return renderRecipeFor(subsystem, group, variant, optionInline);\n },\n renderVariables(subsystem) {\n return renderVariablesFor(subsystem);\n },\n join(parts) {\n return parts.filter(Boolean).join(\"\\n\\n\");\n },\n\n // The full document is variables-then-rules; override so the aggregate ordering is explicit.\n renderAllVariables: allVariables,\n renderAllRecipes: allRecipes,\n renderAll: allScss,\n\n extend() {\n return {\n media,\n get scss() {\n return wrapLayer(allScss());\n },\n get variablesScss() {\n return allVariables();\n },\n get rulesScss() {\n return allRecipes();\n },\n get classes() {\n return collectClasses();\n },\n };\n },\n\n emit(plan) {\n const type = plan?.type ?? \"single\";\n\n // §W9 — `layer` wraps one self-contained document; multi-file modes split the cascade.\n if (layerName && type !== \"single\") {\n throw new Error(\n `scss adapter: the \\`layer\\` option is only supported with single-file emit (got \"${type}\").`,\n );\n }\n\n if (type === \"single\") {\n const file = plan?.type === \"single\" ? plan.file : \"theme.scss\";\n return { files: { [scssName(file)]: wrapLayer(allScss()) } };\n }\n\n // Baking values leaves no `$variables` to split out — contradicts every multi-file mode.\n if (optionInline && (type === \"split\" || type === \"subsystem\")) {\n throw new Error(\n `scss adapter: emit mode '${type}' cannot be combined with the global inline option ` +\n `(inline bakes values, leaving no $variables file)`,\n );\n }\n\n if (plan?.type === \"split\") {\n // A `_variables.scss` partial + a rules file that `@use`s it (Sass module system — NOT\n // the banned `@import`), so the rules' `$dt-…` refs resolve.\n const varsFile = scssPartial(plan.variables);\n const rulesFile = scssName(plan.file);\n const rules = `@use \"${useRef(varsFile)}\" as *;\\n\\n${allRecipes()}`;\n return { files: { [rulesFile]: rules, [varsFile]: allVariables() } };\n }\n\n if (plan?.type === \"subsystem\") {\n // Per-subsystem Sass files need cross-subsystem `@use` wiring (a component `@use`s the\n // colors/typography/… partials it composes). Deferred — a clear, honest v1 boundary.\n throw new Error(\"scss adapter: emit mode 'subsystem' is not supported yet\");\n }\n\n if (plan?.type === \"components\") {\n // Each component variant → one self-contained class (its merged declarations). `inline`\n // (default true) bakes values; `inline: false` keeps `$var` refs + a tree-shaken partial.\n const componentRuleSets = model.subsystems.components?.ruleSets ?? {};\n const inline = plan.inline;\n\n const filesByName: Record<string, string[]> = {};\n const referencedPaths: string[] = [];\n const seen = new Set<string>();\n\n for (const [group, ruleSetGroup] of Object.entries(componentRuleSets)) {\n for (const variant of Object.keys(ruleSetGroup)) {\n const merged = mergeComponentRuleSet(model, group, variant);\n const selector = `.${scssClassName(\"components\", group, variant, prefix)}`;\n // Flatten the merged view into a rule-set shape renderRuleSet understands.\n const overrides: RuleSetOverride[] = [\n ...Object.entries(merged.states).map(([state, declarations]) => ({ state, declarations })),\n ...merged.responsive.map(entry => {\n const { declarations, ...condition } = entry;\n return { ...condition, declarations } as RuleSetOverride;\n }),\n ];\n const rule = renderRuleSet(selector, merged.base, overrides, inline);\n const filename = scssName(plan.filename({ group, variant }));\n (filesByName[filename] ??= []).push(rule);\n\n if (!inline) {\n for (const path of merged.referencedPaths) {\n if (!seen.has(path)) {\n seen.add(path);\n referencedPaths.push(path);\n }\n }\n }\n }\n }\n\n const files: Record<string, string> = {};\n const usesVars = !inline && referencedPaths.length > 0 && plan.variables !== false;\n for (const [name, parts] of Object.entries(filesByName)) {\n const body = parts.join(\"\\n\\n\");\n files[name] = usesVars ? `@use \"${useRef(scssPartial(plan.variables as string))}\" as *;\\n\\n${body}` : body;\n }\n\n // Tree-shaken variables partial — only the referenced token paths — unless `variables: false`.\n if (!inline && plan.variables !== false) {\n const lines: string[] = [];\n for (const path of referencedPaths) {\n const value = safeResolve(path) ?? tokenMap[path]?.value;\n if (value === undefined) continue;\n lines.push(`${scssVarName(path, prefix)}: ${formatTokenValue(path, value)};`);\n }\n if (lines.length) files[scssPartial(plan.variables)] = lines.join(\"\\n\");\n }\n\n return { files };\n }\n\n throw new Error(`scss adapter: emit mode '${type}' not yet implemented`);\n },\n };\n },\n };\n\n return defineAdapter(spec);\n};\n"],"names":["SCSS_STATE_SELECTORS","link","visited","hover","focus","active","disabled","pressed","SCSS_KNOWN_STATES","Object","keys","STATE_ORDER","reduce","acc","s","i","sanitizeSegment","segment","replace","toLowerCase","scssVarName","path","prefix","split","map","join","scssClassName","subsystem","group","variant","scssName","name","endsWith","scssPartial","scss","slash","lastIndexOf","dir","slice","base","startsWith","useRef","partial","options","_a","optionInline","_b","inline","indentWidth","_c","indent","IND","repeat","pad","level","layerName","layer","undefined","wrapLayer","body","trimEnd","line","spec","version","allowedStates","bind","model","ctx","media","tokenMap","buildTokenMap","safeResolve","resolve","formatTokenValue","value","String","unit","applyWrap","wrap","renderDeclarations","decls","entries","property","ref","external","renderValue","renderOverride","override","declarations","stateSuffix","state","atRule","breakpoint","query","orientation","min","max","exact","mediaQueryFor","length","open","close","cur","push","unshift","orderOverrides","overrides","sort","a","b","abp","bbp","renderRuleSet","selector","parts","block","selectors","subModel","subsystems","ruleSetGroup","ruleSets","_g","componentClasses","components","_d","ruleSet","ownClass","referenced","_e","references","reference","parsed","parseRuleSetReference","filter","cls","classList","_f","className","renderVariablesFor","prefixDot","lines","renderRecipeFor","kind","variantName","variants","vparts","vbase","renderGlobalsElement","target","allVariables","Boolean","allRecipes","rule","allScss","recipeName","describeUsage","recipes","sub","format","summary","renderRecipe","renderVariables","renderAllVariables","renderAllRecipes","renderAll","extend","variablesScss","rulesScss","classes","out","groups","g","collectClasses","emit","plan","type","Error","file","files","varsFile","variables","rulesFile","rules","componentRuleSets","filesByName","referencedPaths","seen","Set","merged","mergeComponentRuleSet","states","responsive","entry","condition","filename","has","add","usesVars","defineAdapter"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs.js","sources":["../src/index.ts"],"sourcesContent":["/**\n * The SCSS adapter — lowers the format-neutral {@link ThemeModel} to idiomatic Sass.\n *\n * The third output adapter. Like CSS its `TUnit` is `string`, but the output is genuinely a\n * different format: tokens become compile-time **`$variables`** (not `:root` custom properties),\n * declaration refs render as **`$dt-…`** (not `var(--…)`), and each rule-set nests its\n * state/breakpoint overrides with `&` / `@media` the Sass way. Recipes are emitted as **classes**\n * and composition is the option-C **class list** (as in the CSS adapter) — the same class surface,\n * generated from Sass source.\n *\n * Naming is uniform + path-based (`$dt-<subsystem>-<path>`, `.dt-<subsystem>-<group>-<variant>`) —\n * SCSS is its own format, so it does not chase the CSS adapter's byte-for-byte variable/class names.\n *\n * KNOWN LIMITATION (inherent to compile-time Sass variables): `$variables` capture each token's\n * BASE value only. Responsive / appearance-mode *token* variation — which the CSS adapter emits as\n * `@media { :root { --x: … } }` custom-property reassignments — cannot be expressed as a `$variable`\n * (a Sass var is not media-conditional). Recipe-level breakpoint overrides, which re-emit whole\n * declarations, are fully supported via nested `@media`.\n *\n * Worked reference: `src/adapters/css/`. Core stays format-agnostic; all naming + state handling live here.\n */\nimport type { Literal, Ref, RuleSet, RuleSetOverride, ThemeModel } from \"@theme-registry/refract\";\nimport { buildTokenMap, mergeComponentRuleSet, parseRuleSetReference } from \"@theme-registry/refract\";\nimport type { MergedRuleSet } from \"@theme-registry/refract\";\nimport type { MediaDescriptor, MediaVariant } from \"@theme-registry/refract\";\nimport type { AdapterSpec, PreviewDescriptor, RenderContext, ThemeAdapter, UsageDescriptor, UsageRecipe } from \"@theme-registry/refract\";\nimport { defineAdapter } from \"@theme-registry/refract\";\nimport type { ResolvedComponentClass, ScssAdapterOptions, ScssUnit } from \"./types\";\n\nexport type { ResolvedComponentClass, ScssAdapterOptions, ScssUnit } from \"./types\";\n\n/** `state → selector suffix`, nested as `&<suffix>`. SCSS compiles to CSS, so it knows the CSS states. */\nconst SCSS_STATE_SELECTORS: Record<string, string> = {\n link: \":link\",\n visited: \":visited\",\n hover: \":hover\",\n focus: \":focus\",\n active: \":active\",\n disabled: \"[disabled]\",\n pressed: \"[aria-pressed]\",\n};\nconst SCSS_KNOWN_STATES: ReadonlyArray<string> = Object.keys(SCSS_STATE_SELECTORS);\nconst STATE_ORDER: Record<string, number> = SCSS_KNOWN_STATES.reduce<Record<string, number>>(\n (acc, s, i) => ((acc[s] = i), acc),\n {},\n);\n\n/** Sanitize one identifier segment to `[a-z0-9-]` (drops `.` / `--` collisions to single dashes). */\nconst sanitizeSegment = (segment: string): string =>\n segment.replace(/[^a-zA-Z0-9]+/g, \"-\").replace(/^-+|-+$/g, \"\").toLowerCase();\n\n/** `$dt-colors-primary-dark` from a token path + prefix. */\nconst scssVarName = (path: string, prefix: string): string =>\n `$${prefix}-${path.split(\".\").map(sanitizeSegment).join(\"-\")}`;\n\n/** `dt-colors-solid-primary` from an address + prefix (no leading dot). */\nconst scssClassName = (subsystem: string, group: string, variant: string, prefix: string): string =>\n [prefix, subsystem, group, variant].map(sanitizeSegment).join(\"-\");\n\n/** Normalize a filename to a `.scss` extension (plan defaults are CSS-centric). */\nconst scssName = (name: string): string =>\n name.endsWith(\".scss\") ? name : `${name.replace(/\\.[^./]+$/, \"\")}.scss`;\n\n/** Turn a filename into a Sass partial (`_name.scss`) for `@use`. */\nconst scssPartial = (name: string): string => {\n const scss = scssName(name);\n const slash = scss.lastIndexOf(\"/\");\n const dir = slash >= 0 ? scss.slice(0, slash + 1) : \"\";\n const base = scss.slice(slash + 1);\n return `${dir}${base.startsWith(\"_\") ? base : `_${base}`}`;\n};\n\n/** The `@use` reference for a partial — its basename without leading `_` or `.scss`. */\nconst useRef = (partial: string): string => {\n const slash = partial.lastIndexOf(\"/\");\n return partial\n .slice(slash + 1)\n .replace(/^_/, \"\")\n .replace(/\\.scss$/, \"\");\n};\n\nexport const createScssAdapter = (options: ScssAdapterOptions = {}): ThemeAdapter<ScssUnit> => {\n const prefix = options.prefix ?? \"dt\";\n const optionInline = options.inline ?? false;\n const indentWidth = options.indent ?? 2;\n const IND = \" \".repeat(indentWidth);\n const pad = (level: number): string => IND.repeat(level);\n // §W9 — optional cascade-layer wrap for the full-document output (single emit + runtime `scss`).\n const layerName =\n options.layer === true ? \"refract\" : (typeof options.layer === \"string\" && options.layer) || undefined;\n const wrapLayer = (scss: string): string => {\n if (!layerName) return scss;\n const body = scss\n .trimEnd()\n .split(\"\\n\")\n .map(line => (line ? `${IND}${line}` : line))\n .join(\"\\n\");\n return `@layer ${layerName} {\\n${body}\\n}\\n`;\n };\n\n const spec: AdapterSpec<ScssUnit> = {\n name: \"scss\",\n version: 1,\n // SCSS compiles to CSS, so it renders the same state selectors CSS does.\n allowedStates: SCSS_KNOWN_STATES,\n bind(model: ThemeModel, ctx: RenderContext) {\n const media = ctx.media;\n const tokenMap = buildTokenMap(model);\n\n const safeResolve = (path: string): Literal | undefined => {\n try {\n return ctx.resolve(path);\n } catch {\n return undefined;\n }\n };\n\n /**\n * A token value → its SCSS text. §21: length units are resolved format-neutrally in core and baked\n * onto the leaf's `Ref.unit`; a numeric length token appends its resolved unit (looked up on the\n * token map), everything else (unit-less numbers, colours, strings) passes through raw.\n */\n const formatTokenValue = (path: string, value: Literal | undefined): string => {\n if (typeof value !== \"number\") return String(value ?? \"\");\n const unit = tokenMap[path]?.unit;\n return unit ? `${value}${unit}` : `${value}`;\n };\n\n const applyWrap = (value: string, wrap?: string): string => (wrap ? `${wrap}(${value})` : value);\n\n /** Render one declaration value: a `$var` ref (default), or a baked literal (inline). */\n const renderValue = (ref: Ref, inline: boolean): string => {\n if (ref.ref !== undefined) {\n // §W6b — an external token has no `$var`; reference the parent's CSS variable directly.\n const external = tokenMap[ref.ref]?.external;\n if (external !== undefined) return applyWrap(`var(${external})`, ref.wrap);\n if (inline) return applyWrap(formatTokenValue(ref.ref, safeResolve(ref.ref) ?? ref.value), ref.wrap);\n return applyWrap(scssVarName(ref.ref, prefix), ref.wrap);\n }\n return applyWrap(String(ref.value ?? \"\"), ref.wrap);\n };\n\n const renderDeclarations = (decls: Record<string, Ref>, level: number, inline: boolean): string =>\n Object.entries(decls)\n .map(([property, ref]) => `${pad(level)}${property}: ${renderValue(ref, inline)};`)\n .join(\"\\n\");\n\n /** The full `@media (…)` at-rule for a viewport override (empty when unresolved). The core media\n * descriptor already includes the `@media` keyword, so it is used verbatim as the block prelude. */\n const mediaQueryFor = (override: Pick<RuleSetOverride, \"breakpoint\" | \"query\" | \"orientation\">): string => {\n const breakpoint = override.breakpoint;\n if (breakpoint === undefined) return \"\";\n const query = (override.query ?? \"exact\") as MediaVariant;\n const orientation = override.orientation;\n if (!orientation) return (media as MediaDescriptor<string>)[breakpoint]?.[query] ?? \"\";\n if (query === \"min\") return media.min(breakpoint, { orientation });\n if (query === \"max\") return media.max(breakpoint, { orientation });\n return media.exact(breakpoint, { orientation });\n };\n\n /** One override → its nested block (`&:hover { … }`, `@media (…) { … }`, or both). */\n const renderOverride = (override: RuleSetOverride, level: number, inline: boolean): string => {\n const decls = override.declarations ?? {};\n const stateSuffix = override.state ? SCSS_STATE_SELECTORS[override.state] : undefined;\n const atRule = override.breakpoint !== undefined ? mediaQueryFor(override) : undefined;\n // Nothing renderable (e.g. a pure variant/target swap — not expressible in a $var recipe class).\n if (!Object.keys(decls).length) return \"\";\n if (override.breakpoint !== undefined && !atRule) return \"\";\n\n const open: string[] = [];\n const close: string[] = [];\n let cur = level;\n if (atRule) {\n open.push(`${pad(cur)}${atRule} {`);\n close.unshift(`${pad(cur)}}`);\n cur += 1;\n }\n if (stateSuffix) {\n open.push(`${pad(cur)}&${stateSuffix} {`);\n close.unshift(`${pad(cur)}}`);\n cur += 1;\n }\n return [...open, renderDeclarations(decls, cur, inline), ...close].join(\"\\n\");\n };\n\n /** Order overrides: canonical state order, base-state (no bp) before responsive. */\n const orderOverrides = (overrides: RuleSetOverride[]): RuleSetOverride[] =>\n [...overrides].sort((a, b) => {\n const abp = a.breakpoint !== undefined ? 1 : 0;\n const bbp = b.breakpoint !== undefined ? 1 : 0;\n if (abp !== bbp) return abp - bbp;\n const as = a.state ? STATE_ORDER[a.state] ?? 99 : -1;\n const bs = b.state ? STATE_ORDER[b.state] ?? 99 : -1;\n return as - bs;\n });\n\n /** Render a `{ declarations, overrides }` block under a selector (recipe class / reset selector). */\n const renderRuleSet = (\n selector: string,\n declarations: Record<string, Ref>,\n overrides: RuleSetOverride[],\n inline: boolean,\n ): string => {\n const parts: string[] = [`${selector} {`];\n const base = renderDeclarations(declarations, 1, inline);\n if (base) parts.push(base);\n for (const override of orderOverrides(overrides)) {\n const block = renderOverride(override, 1, inline);\n if (block) parts.push(block);\n }\n parts.push(`}`);\n return parts.join(\"\\n\");\n };\n\n /**\n * Render a themed globals element (§9) `kind:\"globals\"` rule-set → a bare, nested SCSS block:\n * `selector { <decls>; <&:state / @media overrides>; &.<variant> { <delta>; <overrides> } }`.\n * Unlike the preset `:where()` reset layer, the selector is bare (higher tier) and each\n * delta-only variant nests as `&.<variant>`.\n */\n const renderGlobalsElement = (ruleSet: RuleSet, inline: boolean): string => {\n const selector = ruleSet.selector ?? \"*\";\n const parts: string[] = [`${selector} {`];\n const base = renderDeclarations(ruleSet.declarations, 1, inline);\n if (base) parts.push(base);\n for (const override of orderOverrides(ruleSet.overrides)) {\n const block = renderOverride(override, 1, inline);\n if (block) parts.push(block);\n }\n for (const [variantName, variant] of Object.entries(ruleSet.variants ?? {})) {\n const vparts: string[] = [`${pad(1)}&.${variantName} {`];\n const vbase = renderDeclarations(variant.declarations, 2, inline);\n if (vbase) vparts.push(vbase);\n for (const override of orderOverrides(variant.overrides)) {\n const block = renderOverride(override, 2, inline);\n if (block) vparts.push(block);\n }\n vparts.push(`${pad(1)}}`);\n parts.push(vparts.join(\"\\n\"));\n }\n parts.push(`}`);\n return parts.join(\"\\n\");\n };\n\n // ── Precompute class names for every recipe/utility variant (components' class list needs\n // sibling classes) — mirrors the CSS adapter's `selectors` map. ──\n const selectors: Record<string, Record<string, Record<string, string>>> = {};\n for (const [subsystem, subModel] of Object.entries(model.subsystems)) {\n if (subsystem === \"components\" || subsystem === \"globals\") continue;\n for (const [group, ruleSetGroup] of Object.entries(subModel.ruleSets ?? {})) {\n for (const variant of Object.keys(ruleSetGroup)) {\n (selectors[subsystem] ??= {})[group] ??= {};\n selectors[subsystem][group][variant] = scssClassName(subsystem, group, variant, prefix);\n }\n }\n }\n\n // ── Components: option-C class list (referenced recipe classes + own delta class). ──\n const componentClasses: Record<string, Record<string, ResolvedComponentClass>> = {};\n const components = model.subsystems.components;\n if (components) {\n for (const [group, ruleSetGroup] of Object.entries(components.ruleSets ?? {})) {\n for (const [variant, ruleSet] of Object.entries(ruleSetGroup)) {\n const ownClass = scssClassName(\"components\", group, variant, prefix);\n const referenced = (ruleSet.references ?? [])\n .map(reference => {\n const parsed = parseRuleSetReference(reference);\n return parsed ? selectors[parsed.subsystem]?.[parsed.group]?.[parsed.variant] : undefined;\n })\n .filter((cls): cls is string => cls !== undefined);\n const classList = [...referenced, ownClass];\n (componentClasses[group] ??= {})[variant] = { className: classList.join(\" \"), classList };\n }\n }\n }\n\n // ── Primitives ──\n const renderVariablesFor = (subsystem: string): string => {\n // Inline bakes values into declarations, so there are no `$variables` to define.\n if (optionInline) return \"\";\n const prefixDot = `${subsystem}.`;\n const lines: string[] = [];\n for (const [path, ref] of Object.entries(tokenMap)) {\n if (!path.startsWith(prefixDot)) continue;\n if (ref.external !== undefined) continue; // §W6b — parent owns the var; define no `$var`\n const value = safeResolve(path) ?? ref.value;\n if (value === undefined) continue;\n lines.push(`${scssVarName(path, prefix)}: ${formatTokenValue(path, value)};`);\n }\n return lines.join(\"\\n\");\n };\n\n const renderRecipeFor = (subsystem: string, group: string, variant: string, inline: boolean): string => {\n const ruleSet = model.subsystems[subsystem]?.ruleSets?.[group]?.[variant];\n if (!ruleSet) return \"\";\n if (ruleSet.kind === \"globals\") {\n return renderGlobalsElement(ruleSet, inline);\n }\n if (ruleSet.kind === \"reset\") {\n const target = ruleSet.selector ?? \"*\";\n return renderRuleSet(`:where(${target})`, ruleSet.declarations, ruleSet.overrides, inline);\n }\n const cls =\n subsystem === \"components\"\n ? scssClassName(\"components\", group, variant, prefix)\n : selectors[subsystem]?.[group]?.[variant];\n if (!cls) return \"\";\n return renderRuleSet(`.${cls}`, ruleSet.declarations, ruleSet.overrides, inline);\n };\n\n // Aggregate builders (reused by the aggregators, `extend`, and `emit`).\n const allVariables = (): string =>\n Object.keys(model.subsystems)\n .map(renderVariablesFor)\n .filter(Boolean)\n .join(\"\\n\\n\");\n\n const allRecipes = (): string => {\n const parts: string[] = [];\n for (const [subsystem, subModel] of Object.entries(model.subsystems)) {\n for (const [group, ruleSetGroup] of Object.entries(subModel.ruleSets ?? {})) {\n for (const variant of Object.keys(ruleSetGroup)) {\n const rule = renderRecipeFor(subsystem, group, variant, optionInline);\n if (rule) parts.push(rule);\n }\n }\n }\n return parts.join(\"\\n\\n\");\n };\n\n const allScss = (): string => [allVariables(), allRecipes()].filter(Boolean).join(\"\\n\\n\");\n\n const collectClasses = (): Record<string, Record<string, Record<string, unknown>>> => {\n const out: Record<string, Record<string, Record<string, unknown>>> = {};\n for (const [subsystem, groups] of Object.entries(selectors)) {\n const g: Record<string, Record<string, string>> = {};\n for (const [group, variants] of Object.entries(groups)) g[group] = { ...variants };\n out[subsystem] = g;\n }\n if (components) out.components = componentClasses;\n return out;\n };\n\n return {\n recipeName(subsystem, group, variant) {\n const ruleSet = model.subsystems[subsystem]?.ruleSets?.[group]?.[variant];\n if (ruleSet?.kind === \"reset\" || ruleSet?.kind === \"globals\") return \"\";\n if (subsystem === \"components\") return scssClassName(\"components\", group, variant, prefix);\n return selectors[subsystem]?.[group]?.[variant] ?? \"\";\n },\n\n // Preview (§20): a browser can't load Sass — the partials must be compiled first. Token\n // plates still render from the format-neutral export; recipes are listed by name only.\n describePreview(): PreviewDescriptor {\n return {\n stylesheets: [],\n unavailable:\n \"This target emits Sass partials, which a browser cannot load directly — compile them \" +\n \"to CSS first (or add a CSS target to this config) for a live render. Token values \" +\n \"below are exact; recipe class names are the ones the partials compile to.\",\n };\n },\n\n // Self-documentation: the REAL class names recipes compile to (globals/reset carry no class),\n // plus Sass-specific `@use` prose for the emitted guide (llms.txt).\n describeUsage(): UsageDescriptor {\n const recipes: UsageRecipe[] = [];\n for (const [subsystem, sub] of Object.entries(model.subsystems)) {\n for (const [group, ruleSetGroup] of Object.entries(sub.ruleSets ?? {})) {\n for (const [variant, ruleSet] of Object.entries(ruleSetGroup)) {\n if (ruleSet?.kind === \"reset\" || ruleSet?.kind === \"globals\") continue;\n const name =\n subsystem === \"components\"\n ? scssClassName(\"components\", group, variant, prefix)\n : selectors[subsystem]?.[group]?.[variant] ?? \"\";\n if (name) recipes.push({ subsystem, group, variant, name });\n }\n }\n }\n return {\n format: \"scss\",\n summary: [\n \"This theme is emitted as Sass partials: a `$`-variables layer plus recipe rules that compile to CSS classes.\",\n 'Pull it into your Sass entry with `@use`: `@use \"theme\" as *;` (or `@use \"variables\" as *;` for just the tokens), then compile to CSS.',\n 'Apply the recipe class names below to your markup: `<button class=\"<class>\">`. Values resolve through Sass variables (or baked literals under the `inline` option).',\n ],\n recipes,\n };\n },\n renderRecipe(subsystem, group, variant) {\n return renderRecipeFor(subsystem, group, variant, optionInline);\n },\n renderVariables(subsystem) {\n return renderVariablesFor(subsystem);\n },\n join(parts) {\n return parts.filter(Boolean).join(\"\\n\\n\");\n },\n\n // The full document is variables-then-rules; override so the aggregate ordering is explicit.\n renderAllVariables: allVariables,\n renderAllRecipes: allRecipes,\n renderAll: allScss,\n\n extend() {\n return {\n media,\n get scss() {\n return wrapLayer(allScss());\n },\n get variablesScss() {\n return allVariables();\n },\n get rulesScss() {\n return allRecipes();\n },\n get classes() {\n return collectClasses();\n },\n };\n },\n\n emit(plan) {\n const type = plan?.type ?? \"single\";\n\n // §W9 — `layer` wraps one self-contained document; multi-file modes split the cascade.\n if (layerName && type !== \"single\") {\n throw new Error(\n `scss adapter: the \\`layer\\` option is only supported with single-file emit (got \"${type}\").`,\n );\n }\n\n if (type === \"single\") {\n const file = plan?.type === \"single\" ? plan.file : \"theme.scss\";\n return { files: { [scssName(file)]: wrapLayer(allScss()) } };\n }\n\n // Baking values leaves no `$variables` to split out — contradicts every multi-file mode.\n if (optionInline && (type === \"split\" || type === \"subsystem\")) {\n throw new Error(\n `scss adapter: emit mode '${type}' cannot be combined with the global inline option ` +\n `(inline bakes values, leaving no $variables file)`,\n );\n }\n\n if (plan?.type === \"split\") {\n // A `_variables.scss` partial + a rules file that `@use`s it (Sass module system — NOT\n // the banned `@import`), so the rules' `$dt-…` refs resolve.\n const varsFile = scssPartial(plan.variables);\n const rulesFile = scssName(plan.file);\n const rules = `@use \"${useRef(varsFile)}\" as *;\\n\\n${allRecipes()}`;\n return { files: { [rulesFile]: rules, [varsFile]: allVariables() } };\n }\n\n if (plan?.type === \"subsystem\") {\n // Per-subsystem Sass files need cross-subsystem `@use` wiring (a component `@use`s the\n // colors/typography/… partials it composes). Deferred — a clear, honest v1 boundary.\n throw new Error(\"scss adapter: emit mode 'subsystem' is not supported yet\");\n }\n\n if (plan?.type === \"components\") {\n // Each component variant → one self-contained class (its merged declarations). `inline`\n // (default true) bakes values; `inline: false` keeps `$var` refs + a tree-shaken partial.\n const componentRuleSets = model.subsystems.components?.ruleSets ?? {};\n const inline = plan.inline;\n\n const filesByName: Record<string, string[]> = {};\n const referencedPaths: string[] = [];\n const seen = new Set<string>();\n\n for (const [group, ruleSetGroup] of Object.entries(componentRuleSets)) {\n for (const variant of Object.keys(ruleSetGroup)) {\n const merged = mergeComponentRuleSet(model, group, variant);\n const selector = `.${scssClassName(\"components\", group, variant, prefix)}`;\n // Flatten the merged view into a rule-set shape renderRuleSet understands.\n const overrides: RuleSetOverride[] = [\n ...Object.entries(merged.states).map(([state, declarations]) => ({ state, declarations })),\n ...merged.responsive.map(entry => {\n const { declarations, ...condition } = entry;\n return { ...condition, declarations } as RuleSetOverride;\n }),\n ];\n const rule = renderRuleSet(selector, merged.base, overrides, inline);\n const filename = scssName(plan.filename({ group, variant }));\n (filesByName[filename] ??= []).push(rule);\n\n if (!inline) {\n for (const path of merged.referencedPaths) {\n if (!seen.has(path)) {\n seen.add(path);\n referencedPaths.push(path);\n }\n }\n }\n }\n }\n\n const files: Record<string, string> = {};\n const usesVars = !inline && referencedPaths.length > 0 && plan.variables !== false;\n for (const [name, parts] of Object.entries(filesByName)) {\n const body = parts.join(\"\\n\\n\");\n files[name] = usesVars ? `@use \"${useRef(scssPartial(plan.variables as string))}\" as *;\\n\\n${body}` : body;\n }\n\n // Tree-shaken variables partial — only the referenced token paths — unless `variables: false`.\n if (!inline && plan.variables !== false) {\n const lines: string[] = [];\n for (const path of referencedPaths) {\n const value = safeResolve(path) ?? tokenMap[path]?.value;\n if (value === undefined) continue;\n lines.push(`${scssVarName(path, prefix)}: ${formatTokenValue(path, value)};`);\n }\n if (lines.length) files[scssPartial(plan.variables)] = lines.join(\"\\n\");\n }\n\n return { files };\n }\n\n throw new Error(`scss adapter: emit mode '${type}' not yet implemented`);\n },\n };\n },\n };\n\n return defineAdapter(spec);\n};\n"],"names":["SCSS_STATE_SELECTORS","link","visited","hover","focus","active","disabled","pressed","SCSS_KNOWN_STATES","Object","keys","STATE_ORDER","reduce","acc","s","i","sanitizeSegment","segment","replace","toLowerCase","scssVarName","path","prefix","split","map","join","scssClassName","subsystem","group","variant","scssName","name","endsWith","scssPartial","scss","slash","lastIndexOf","dir","slice","base","startsWith","useRef","partial","options","_a","optionInline","_b","inline","indentWidth","_c","indent","IND","repeat","pad","level","layerName","layer","undefined","wrapLayer","body","trimEnd","line","spec","version","allowedStates","bind","model","ctx","media","tokenMap","buildTokenMap","safeResolve","resolve","formatTokenValue","value","String","unit","applyWrap","wrap","renderDeclarations","decls","entries","property","ref","external","renderValue","renderOverride","override","declarations","stateSuffix","state","atRule","breakpoint","query","orientation","min","max","exact","mediaQueryFor","length","open","close","cur","push","unshift","orderOverrides","overrides","sort","a","b","abp","bbp","renderRuleSet","selector","parts","block","selectors","subModel","subsystems","ruleSetGroup","ruleSets","_g","componentClasses","components","_d","ruleSet","ownClass","referenced","_e","references","reference","parsed","parseRuleSetReference","filter","cls","classList","_f","className","renderVariablesFor","prefixDot","lines","renderRecipeFor","kind","variantName","variants","vparts","vbase","renderGlobalsElement","target","allVariables","Boolean","allRecipes","rule","allScss","recipeName","describePreview","stylesheets","unavailable","describeUsage","recipes","sub","format","summary","renderRecipe","renderVariables","renderAllVariables","renderAllRecipes","renderAll","extend","variablesScss","rulesScss","classes","out","groups","g","collectClasses","emit","plan","type","Error","file","files","varsFile","variables","rulesFile","rules","componentRuleSets","filesByName","referencedPaths","seen","Set","merged","mergeComponentRuleSet","states","responsive","entry","condition","filename","has","add","usesVars","defineAdapter"],"mappings":"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"}
package/dist/index.esm.js CHANGED
@@ -1,2 +1,2 @@
1
- import{defineAdapter as e,buildTokenMap as n,parseRuleSetReference as s,mergeComponentRuleSet as t}from"@theme-registry/refract";const o={link:":link",visited:":visited",hover:":hover",focus:":focus",active:":active",disabled:"[disabled]",pressed:"[aria-pressed]"},r=Object.keys(o),i=r.reduce((e,n,s)=>(e[n]=s,e),{}),l=e=>e.replace(/[^a-zA-Z0-9]+/g,"-").replace(/^-+|-+$/g,"").toLowerCase(),a=(e,n)=>`$${n}-${e.split(".").map(l).join("-")}`,u=(e,n,s,t)=>[t,e,n,s].map(l).join("-"),c=e=>e.endsWith(".scss")?e:`${e.replace(/\.[^./]+$/,"")}.scss`,d=e=>{const n=c(e),s=n.lastIndexOf("/"),t=s>=0?n.slice(0,s+1):"",o=n.slice(s+1);return`${t}${o.startsWith("_")?o:`_${o}`}`},v=e=>{const n=e.lastIndexOf("/");return e.slice(n+1).replace(/^_/,"").replace(/\.scss$/,"")},f=(l={})=>{var f,p,m;const b=null!==(f=l.prefix)&&void 0!==f?f:"dt",h=null!==(p=l.inline)&&void 0!==p&&p,$=null!==(m=l.indent)&&void 0!==m?m:2,y=" ".repeat($),j=e=>y.repeat(e),g=!0===l.layer?"refract":"string"==typeof l.layer&&l.layer||void 0,O=e=>{if(!g)return e;const n=e.trimEnd().split("\n").map(e=>e?`${y}${e}`:e).join("\n");return`@layer ${g} {\n${n}\n}\n`},k={name:"scss",version:1,allowedStates:r,bind(e,r){var l,f,p,m,$,y,k;const S=r.media,w=n(e),x=e=>{try{return r.resolve(e)}catch{return}},A=(e,n)=>{var s;if("number"!=typeof n)return String(null!=n?n:"");const t=null===(s=w[e])||void 0===s?void 0:s.unit;return t?`${n}${t}`:`${n}`},E=(e,n)=>n?`${n}(${e})`:e,B=(e,n,s)=>Object.entries(e).map(([e,t])=>`${j(n)}${e}: ${((e,n)=>{var s,t,o;if(void 0!==e.ref){const o=null===(s=w[e.ref])||void 0===s?void 0:s.external;return E(void 0!==o?`var(${o})`:n?A(e.ref,null!==(t=x(e.ref))&&void 0!==t?t:e.value):a(e.ref,b),e.wrap)}return E(String(null!==(o=e.value)&&void 0!==o?o:""),e.wrap)})(t,s)};`).join("\n"),C=(e,n,s)=>{var t;const r=null!==(t=e.declarations)&&void 0!==t?t:{},i=e.state?o[e.state]:void 0,l=void 0!==e.breakpoint?(e=>{var n,s,t;const o=e.breakpoint;if(void 0===o)return"";const r=null!==(n=e.query)&&void 0!==n?n:"exact",i=e.orientation;return i?"min"===r?S.min(o,{orientation:i}):"max"===r?S.max(o,{orientation:i}):S.exact(o,{orientation:i}):null!==(t=null===(s=S[o])||void 0===s?void 0:s[r])&&void 0!==t?t:""})(e):void 0;if(!Object.keys(r).length)return"";if(void 0!==e.breakpoint&&!l)return"";const a=[],u=[];let c=n;return l&&(a.push(`${j(c)}${l} {`),u.unshift(`${j(c)}}`),c+=1),i&&(a.push(`${j(c)}&${i} {`),u.unshift(`${j(c)}}`),c+=1),[...a,B(r,c,s),...u].join("\n")},V=e=>[...e].sort((e,n)=>{var s,t;const o=void 0!==e.breakpoint?1:0,r=void 0!==n.breakpoint?1:0;if(o!==r)return o-r;return(e.state?null!==(s=i[e.state])&&void 0!==s?s:99:-1)-(n.state?null!==(t=i[n.state])&&void 0!==t?t:99:-1)}),W=(e,n,s,t)=>{const o=[`${e} {`],r=B(n,1,t);r&&o.push(r);for(const e of V(s)){const n=C(e,1,t);n&&o.push(n)}return o.push("}"),o.join("\n")},_={};for(const[n,s]of Object.entries(e.subsystems))if("components"!==n&&"globals"!==n)for(const[e,t]of Object.entries(null!==(l=s.ruleSets)&&void 0!==l?l:{}))for(const s of Object.keys(t))null!==(p=(k=null!==(f=_[n])&&void 0!==f?f:_[n]={})[e])&&void 0!==p||(k[e]={}),_[n][e][s]=u(n,e,s,b);const I={},L=e.subsystems.components;if(L)for(const[e,n]of Object.entries(null!==(m=L.ruleSets)&&void 0!==m?m:{}))for(const[t,o]of Object.entries(n)){const n=u("components",e,t,b),r=(null!==($=o.references)&&void 0!==$?$:[]).map(e=>{var n,t;const o=s(e);return o?null===(t=null===(n=_[o.subsystem])||void 0===n?void 0:n[o.group])||void 0===t?void 0:t[o.variant]:void 0}).filter(e=>void 0!==e),i=[...r,n];(null!==(y=I[e])&&void 0!==y?y:I[e]={})[t]={className:i.join(" "),classList:i}}const N=e=>{var n;if(h)return"";const s=`${e}.`,t=[];for(const[e,o]of Object.entries(w)){if(!e.startsWith(s))continue;if(void 0!==o.external)continue;const r=null!==(n=x(e))&&void 0!==n?n:o.value;void 0!==r&&t.push(`${a(e,b)}: ${A(e,r)};`)}return t.join("\n")},P=(n,s,t,o)=>{var r,i,l,a,c,d;const v=null===(l=null===(i=null===(r=e.subsystems[n])||void 0===r?void 0:r.ruleSets)||void 0===i?void 0:i[s])||void 0===l?void 0:l[t];if(!v)return"";if("globals"===v.kind)return((e,n)=>{var s,t;const o=[`${null!==(s=e.selector)&&void 0!==s?s:"*"} {`],r=B(e.declarations,1,n);r&&o.push(r);for(const s of V(e.overrides)){const e=C(s,1,n);e&&o.push(e)}for(const[s,r]of Object.entries(null!==(t=e.variants)&&void 0!==t?t:{})){const e=[`${j(1)}&.${s} {`],t=B(r.declarations,2,n);t&&e.push(t);for(const s of V(r.overrides)){const t=C(s,2,n);t&&e.push(t)}e.push(`${j(1)}}`),o.push(e.join("\n"))}return o.push("}"),o.join("\n")})(v,o);if("reset"===v.kind){const e=null!==(a=v.selector)&&void 0!==a?a:"*";return W(`:where(${e})`,v.declarations,v.overrides,o)}const f="components"===n?u("components",s,t,b):null===(d=null===(c=_[n])||void 0===c?void 0:c[s])||void 0===d?void 0:d[t];return f?W(`.${f}`,v.declarations,v.overrides,o):""},R=()=>Object.keys(e.subsystems).map(N).filter(Boolean).join("\n\n"),q=()=>{var n;const s=[];for(const[t,o]of Object.entries(e.subsystems))for(const[e,r]of Object.entries(null!==(n=o.ruleSets)&&void 0!==n?n:{}))for(const n of Object.keys(r)){const o=P(t,e,n,h);o&&s.push(o)}return s.join("\n\n")},z=()=>[R(),q()].filter(Boolean).join("\n\n");return{recipeName(n,s,t){var o,r,i,l,a,c;const d=null===(i=null===(r=null===(o=e.subsystems[n])||void 0===o?void 0:o.ruleSets)||void 0===r?void 0:r[s])||void 0===i?void 0:i[t];return"reset"===(null==d?void 0:d.kind)||"globals"===(null==d?void 0:d.kind)?"":"components"===n?u("components",s,t,b):null!==(c=null===(a=null===(l=_[n])||void 0===l?void 0:l[s])||void 0===a?void 0:a[t])&&void 0!==c?c:""},describeUsage(){var n,s,t,o;const r=[];for(const[i,l]of Object.entries(e.subsystems))for(const[e,a]of Object.entries(null!==(n=l.ruleSets)&&void 0!==n?n:{}))for(const[n,l]of Object.entries(a)){if("reset"===(null==l?void 0:l.kind)||"globals"===(null==l?void 0:l.kind))continue;const a="components"===i?u("components",e,n,b):null!==(o=null===(t=null===(s=_[i])||void 0===s?void 0:s[e])||void 0===t?void 0:t[n])&&void 0!==o?o:"";a&&r.push({subsystem:i,group:e,variant:n,name:a})}return{format:"scss",summary:["This theme is emitted as Sass partials: a `$`-variables layer plus recipe rules that compile to CSS classes.",'Pull it into your Sass entry with `@use`: `@use "theme" as *;` (or `@use "variables" as *;` for just the tokens), then compile to CSS.','Apply the recipe class names below to your markup: `<button class="<class>">`. Values resolve through Sass variables (or baked literals under the `inline` option).'],recipes:r}},renderRecipe:(e,n,s)=>P(e,n,s,h),renderVariables:e=>N(e),join:e=>e.filter(Boolean).join("\n\n"),renderAllVariables:R,renderAllRecipes:q,renderAll:z,extend:()=>({media:S,get scss(){return O(z())},get variablesScss(){return R()},get rulesScss(){return q()},get classes(){return(()=>{const e={};for(const[n,s]of Object.entries(_)){const t={};for(const[e,n]of Object.entries(s))t[e]={...n};e[n]=t}return L&&(e.components=I),e})()}}),emit(n){var s,o,r,i,l,f;const p=null!==(s=null==n?void 0:n.type)&&void 0!==s?s:"single";if(g&&"single"!==p)throw new Error(`scss adapter: the \`layer\` option is only supported with single-file emit (got "${p}").`);if("single"===p){const e="single"===(null==n?void 0:n.type)?n.file:"theme.scss";return{files:{[c(e)]:O(z())}}}if(h&&("split"===p||"subsystem"===p))throw new Error(`scss adapter: emit mode '${p}' cannot be combined with the global inline option (inline bakes values, leaving no $variables file)`);if("split"===(null==n?void 0:n.type)){const e=d(n.variables),s=c(n.file),t=`@use "${v(e)}" as *;\n\n${q()}`;return{files:{[s]:t,[e]:R()}}}if("subsystem"===(null==n?void 0:n.type))throw new Error("scss adapter: emit mode 'subsystem' is not supported yet");if("components"===(null==n?void 0:n.type)){const s=null!==(r=null===(o=e.subsystems.components)||void 0===o?void 0:o.ruleSets)&&void 0!==r?r:{},p=n.inline,m={},h=[],$=new Set;for(const[o,r]of Object.entries(s))for(const s of Object.keys(r)){const r=t(e,o,s),l=`.${u("components",o,s,b)}`,a=[...Object.entries(r.states).map(([e,n])=>({state:e,declarations:n})),...r.responsive.map(e=>{const{declarations:n,...s}=e;return{...s,declarations:n}})],d=W(l,r.base,a,p),v=c(n.filename({group:o,variant:s}));if((null!==(i=m[v])&&void 0!==i?i:m[v]=[]).push(d),!p)for(const e of r.referencedPaths)$.has(e)||($.add(e),h.push(e))}const y={},j=!p&&h.length>0&&!1!==n.variables;for(const[e,s]of Object.entries(m)){const t=s.join("\n\n");y[e]=j?`@use "${v(d(n.variables))}" as *;\n\n${t}`:t}if(!p&&!1!==n.variables){const e=[];for(const n of h){const s=null!==(l=x(n))&&void 0!==l?l:null===(f=w[n])||void 0===f?void 0:f.value;void 0!==s&&e.push(`${a(n,b)}: ${A(n,s)};`)}e.length&&(y[d(n.variables)]=e.join("\n"))}return{files:y}}throw new Error(`scss adapter: emit mode '${p}' not yet implemented`)}}}};return e(k)};export{f as createScssAdapter};
1
+ import{defineAdapter as e,buildTokenMap as s,parseRuleSetReference as n,mergeComponentRuleSet as t}from"@theme-registry/refract";const o={link:":link",visited:":visited",hover:":hover",focus:":focus",active:":active",disabled:"[disabled]",pressed:"[aria-pressed]"},r=Object.keys(o),i=r.reduce((e,s,n)=>(e[s]=n,e),{}),l=e=>e.replace(/[^a-zA-Z0-9]+/g,"-").replace(/^-+|-+$/g,"").toLowerCase(),a=(e,s)=>`$${s}-${e.split(".").map(l).join("-")}`,c=(e,s,n,t)=>[t,e,s,n].map(l).join("-"),u=e=>e.endsWith(".scss")?e:`${e.replace(/\.[^./]+$/,"")}.scss`,d=e=>{const s=u(e),n=s.lastIndexOf("/"),t=n>=0?s.slice(0,n+1):"",o=s.slice(n+1);return`${t}${o.startsWith("_")?o:`_${o}`}`},v=e=>{const s=e.lastIndexOf("/");return e.slice(s+1).replace(/^_/,"").replace(/\.scss$/,"")},f=(l={})=>{var f,p,m;const b=null!==(f=l.prefix)&&void 0!==f?f:"dt",h=null!==(p=l.inline)&&void 0!==p&&p,$=null!==(m=l.indent)&&void 0!==m?m:2,y=" ".repeat($),j=e=>y.repeat(e),g=!0===l.layer?"refract":"string"==typeof l.layer&&l.layer||void 0,O=e=>{if(!g)return e;const s=e.trimEnd().split("\n").map(e=>e?`${y}${e}`:e).join("\n");return`@layer ${g} {\n${s}\n}\n`},S={name:"scss",version:1,allowedStates:r,bind(e,r){var l,f,p,m,$,y,S;const k=r.media,w=s(e),x=e=>{try{return r.resolve(e)}catch{return}},A=(e,s)=>{var n;if("number"!=typeof s)return String(null!=s?s:"");const t=null===(n=w[e])||void 0===n?void 0:n.unit;return t?`${s}${t}`:`${s}`},C=(e,s)=>s?`${s}(${e})`:e,E=(e,s,n)=>Object.entries(e).map(([e,t])=>`${j(s)}${e}: ${((e,s)=>{var n,t,o;if(void 0!==e.ref){const o=null===(n=w[e.ref])||void 0===n?void 0:n.external;return C(void 0!==o?`var(${o})`:s?A(e.ref,null!==(t=x(e.ref))&&void 0!==t?t:e.value):a(e.ref,b),e.wrap)}return C(String(null!==(o=e.value)&&void 0!==o?o:""),e.wrap)})(t,n)};`).join("\n"),B=(e,s,n)=>{var t;const r=null!==(t=e.declarations)&&void 0!==t?t:{},i=e.state?o[e.state]:void 0,l=void 0!==e.breakpoint?(e=>{var s,n,t;const o=e.breakpoint;if(void 0===o)return"";const r=null!==(s=e.query)&&void 0!==s?s:"exact",i=e.orientation;return i?"min"===r?k.min(o,{orientation:i}):"max"===r?k.max(o,{orientation:i}):k.exact(o,{orientation:i}):null!==(t=null===(n=k[o])||void 0===n?void 0:n[r])&&void 0!==t?t:""})(e):void 0;if(!Object.keys(r).length)return"";if(void 0!==e.breakpoint&&!l)return"";const a=[],c=[];let u=s;return l&&(a.push(`${j(u)}${l} {`),c.unshift(`${j(u)}}`),u+=1),i&&(a.push(`${j(u)}&${i} {`),c.unshift(`${j(u)}}`),u+=1),[...a,E(r,u,n),...c].join("\n")},P=e=>[...e].sort((e,s)=>{var n,t;const o=void 0!==e.breakpoint?1:0,r=void 0!==s.breakpoint?1:0;if(o!==r)return o-r;return(e.state?null!==(n=i[e.state])&&void 0!==n?n:99:-1)-(s.state?null!==(t=i[s.state])&&void 0!==t?t:99:-1)}),T=(e,s,n,t)=>{const o=[`${e} {`],r=E(s,1,t);r&&o.push(r);for(const e of P(n)){const s=B(e,1,t);s&&o.push(s)}return o.push("}"),o.join("\n")},V={};for(const[s,n]of Object.entries(e.subsystems))if("components"!==s&&"globals"!==s)for(const[e,t]of Object.entries(null!==(l=n.ruleSets)&&void 0!==l?l:{}))for(const n of Object.keys(t))null!==(p=(S=null!==(f=V[s])&&void 0!==f?f:V[s]={})[e])&&void 0!==p||(S[e]={}),V[s][e][n]=c(s,e,n,b);const W={},_=e.subsystems.components;if(_)for(const[e,s]of Object.entries(null!==(m=_.ruleSets)&&void 0!==m?m:{}))for(const[t,o]of Object.entries(s)){const s=c("components",e,t,b),r=(null!==($=o.references)&&void 0!==$?$:[]).map(e=>{var s,t;const o=n(e);return o?null===(t=null===(s=V[o.subsystem])||void 0===s?void 0:s[o.group])||void 0===t?void 0:t[o.variant]:void 0}).filter(e=>void 0!==e),i=[...r,s];(null!==(y=W[e])&&void 0!==y?y:W[e]={})[t]={className:i.join(" "),classList:i}}const I=e=>{var s;if(h)return"";const n=`${e}.`,t=[];for(const[e,o]of Object.entries(w)){if(!e.startsWith(n))continue;if(void 0!==o.external)continue;const r=null!==(s=x(e))&&void 0!==s?s:o.value;void 0!==r&&t.push(`${a(e,b)}: ${A(e,r)};`)}return t.join("\n")},L=(s,n,t,o)=>{var r,i,l,a,u,d;const v=null===(l=null===(i=null===(r=e.subsystems[s])||void 0===r?void 0:r.ruleSets)||void 0===i?void 0:i[n])||void 0===l?void 0:l[t];if(!v)return"";if("globals"===v.kind)return((e,s)=>{var n,t;const o=[`${null!==(n=e.selector)&&void 0!==n?n:"*"} {`],r=E(e.declarations,1,s);r&&o.push(r);for(const n of P(e.overrides)){const e=B(n,1,s);e&&o.push(e)}for(const[n,r]of Object.entries(null!==(t=e.variants)&&void 0!==t?t:{})){const e=[`${j(1)}&.${n} {`],t=E(r.declarations,2,s);t&&e.push(t);for(const n of P(r.overrides)){const t=B(n,2,s);t&&e.push(t)}e.push(`${j(1)}}`),o.push(e.join("\n"))}return o.push("}"),o.join("\n")})(v,o);if("reset"===v.kind){const e=null!==(a=v.selector)&&void 0!==a?a:"*";return T(`:where(${e})`,v.declarations,v.overrides,o)}const f="components"===s?c("components",n,t,b):null===(d=null===(u=V[s])||void 0===u?void 0:u[n])||void 0===d?void 0:d[t];return f?T(`.${f}`,v.declarations,v.overrides,o):""},N=()=>Object.keys(e.subsystems).map(I).filter(Boolean).join("\n\n"),R=()=>{var s;const n=[];for(const[t,o]of Object.entries(e.subsystems))for(const[e,r]of Object.entries(null!==(s=o.ruleSets)&&void 0!==s?s:{}))for(const s of Object.keys(r)){const o=L(t,e,s,h);o&&n.push(o)}return n.join("\n\n")},q=()=>[N(),R()].filter(Boolean).join("\n\n");return{recipeName(s,n,t){var o,r,i,l,a,u;const d=null===(i=null===(r=null===(o=e.subsystems[s])||void 0===o?void 0:o.ruleSets)||void 0===r?void 0:r[n])||void 0===i?void 0:i[t];return"reset"===(null==d?void 0:d.kind)||"globals"===(null==d?void 0:d.kind)?"":"components"===s?c("components",n,t,b):null!==(u=null===(a=null===(l=V[s])||void 0===l?void 0:l[n])||void 0===a?void 0:a[t])&&void 0!==u?u:""},describePreview:()=>({stylesheets:[],unavailable:"This target emits Sass partials, which a browser cannot load directly — compile them to CSS first (or add a CSS target to this config) for a live render. Token values below are exact; recipe class names are the ones the partials compile to."}),describeUsage(){var s,n,t,o;const r=[];for(const[i,l]of Object.entries(e.subsystems))for(const[e,a]of Object.entries(null!==(s=l.ruleSets)&&void 0!==s?s:{}))for(const[s,l]of Object.entries(a)){if("reset"===(null==l?void 0:l.kind)||"globals"===(null==l?void 0:l.kind))continue;const a="components"===i?c("components",e,s,b):null!==(o=null===(t=null===(n=V[i])||void 0===n?void 0:n[e])||void 0===t?void 0:t[s])&&void 0!==o?o:"";a&&r.push({subsystem:i,group:e,variant:s,name:a})}return{format:"scss",summary:["This theme is emitted as Sass partials: a `$`-variables layer plus recipe rules that compile to CSS classes.",'Pull it into your Sass entry with `@use`: `@use "theme" as *;` (or `@use "variables" as *;` for just the tokens), then compile to CSS.','Apply the recipe class names below to your markup: `<button class="<class>">`. Values resolve through Sass variables (or baked literals under the `inline` option).'],recipes:r}},renderRecipe:(e,s,n)=>L(e,s,n,h),renderVariables:e=>I(e),join:e=>e.filter(Boolean).join("\n\n"),renderAllVariables:N,renderAllRecipes:R,renderAll:q,extend:()=>({media:k,get scss(){return O(q())},get variablesScss(){return N()},get rulesScss(){return R()},get classes(){return(()=>{const e={};for(const[s,n]of Object.entries(V)){const t={};for(const[e,s]of Object.entries(n))t[e]={...s};e[s]=t}return _&&(e.components=W),e})()}}),emit(s){var n,o,r,i,l,f;const p=null!==(n=null==s?void 0:s.type)&&void 0!==n?n:"single";if(g&&"single"!==p)throw new Error(`scss adapter: the \`layer\` option is only supported with single-file emit (got "${p}").`);if("single"===p){const e="single"===(null==s?void 0:s.type)?s.file:"theme.scss";return{files:{[u(e)]:O(q())}}}if(h&&("split"===p||"subsystem"===p))throw new Error(`scss adapter: emit mode '${p}' cannot be combined with the global inline option (inline bakes values, leaving no $variables file)`);if("split"===(null==s?void 0:s.type)){const e=d(s.variables),n=u(s.file),t=`@use "${v(e)}" as *;\n\n${R()}`;return{files:{[n]:t,[e]:N()}}}if("subsystem"===(null==s?void 0:s.type))throw new Error("scss adapter: emit mode 'subsystem' is not supported yet");if("components"===(null==s?void 0:s.type)){const n=null!==(r=null===(o=e.subsystems.components)||void 0===o?void 0:o.ruleSets)&&void 0!==r?r:{},p=s.inline,m={},h=[],$=new Set;for(const[o,r]of Object.entries(n))for(const n of Object.keys(r)){const r=t(e,o,n),l=`.${c("components",o,n,b)}`,a=[...Object.entries(r.states).map(([e,s])=>({state:e,declarations:s})),...r.responsive.map(e=>{const{declarations:s,...n}=e;return{...n,declarations:s}})],d=T(l,r.base,a,p),v=u(s.filename({group:o,variant:n}));if((null!==(i=m[v])&&void 0!==i?i:m[v]=[]).push(d),!p)for(const e of r.referencedPaths)$.has(e)||($.add(e),h.push(e))}const y={},j=!p&&h.length>0&&!1!==s.variables;for(const[e,n]of Object.entries(m)){const t=n.join("\n\n");y[e]=j?`@use "${v(d(s.variables))}" as *;\n\n${t}`:t}if(!p&&!1!==s.variables){const e=[];for(const s of h){const n=null!==(l=x(s))&&void 0!==l?l:null===(f=w[s])||void 0===f?void 0:f.value;void 0!==n&&e.push(`${a(s,b)}: ${A(s,n)};`)}e.length&&(y[d(s.variables)]=e.join("\n"))}return{files:y}}throw new Error(`scss adapter: emit mode '${p}' not yet implemented`)}}}};return e(S)};export{f as createScssAdapter};
2
2
  //# sourceMappingURL=index.esm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.esm.js","sources":["../src/index.ts"],"sourcesContent":["/**\n * The SCSS adapter — lowers the format-neutral {@link ThemeModel} to idiomatic Sass.\n *\n * The third output adapter. Like CSS its `TUnit` is `string`, but the output is genuinely a\n * different format: tokens become compile-time **`$variables`** (not `:root` custom properties),\n * declaration refs render as **`$dt-…`** (not `var(--…)`), and each rule-set nests its\n * state/breakpoint overrides with `&` / `@media` the Sass way. Recipes are emitted as **classes**\n * and composition is the option-C **class list** (as in the CSS adapter) — the same class surface,\n * generated from Sass source.\n *\n * Naming is uniform + path-based (`$dt-<subsystem>-<path>`, `.dt-<subsystem>-<group>-<variant>`) —\n * SCSS is its own format, so it does not chase the CSS adapter's byte-for-byte variable/class names.\n *\n * KNOWN LIMITATION (inherent to compile-time Sass variables): `$variables` capture each token's\n * BASE value only. Responsive / appearance-mode *token* variation — which the CSS adapter emits as\n * `@media { :root { --x: … } }` custom-property reassignments — cannot be expressed as a `$variable`\n * (a Sass var is not media-conditional). Recipe-level breakpoint overrides, which re-emit whole\n * declarations, are fully supported via nested `@media`.\n *\n * Worked reference: `src/adapters/css/`. Core stays format-agnostic; all naming + state handling live here.\n */\nimport type { Literal, Ref, RuleSet, RuleSetOverride, ThemeModel } from \"@theme-registry/refract\";\nimport { buildTokenMap, mergeComponentRuleSet, parseRuleSetReference } from \"@theme-registry/refract\";\nimport type { MergedRuleSet } from \"@theme-registry/refract\";\nimport type { MediaDescriptor, MediaVariant } from \"@theme-registry/refract\";\nimport type { AdapterSpec, RenderContext, ThemeAdapter, UsageDescriptor, UsageRecipe } from \"@theme-registry/refract\";\nimport { defineAdapter } from \"@theme-registry/refract\";\nimport type { ResolvedComponentClass, ScssAdapterOptions, ScssUnit } from \"./types\";\n\nexport type { ResolvedComponentClass, ScssAdapterOptions, ScssUnit } from \"./types\";\n\n/** `state → selector suffix`, nested as `&<suffix>`. SCSS compiles to CSS, so it knows the CSS states. */\nconst SCSS_STATE_SELECTORS: Record<string, string> = {\n link: \":link\",\n visited: \":visited\",\n hover: \":hover\",\n focus: \":focus\",\n active: \":active\",\n disabled: \"[disabled]\",\n pressed: \"[aria-pressed]\",\n};\nconst SCSS_KNOWN_STATES: ReadonlyArray<string> = Object.keys(SCSS_STATE_SELECTORS);\nconst STATE_ORDER: Record<string, number> = SCSS_KNOWN_STATES.reduce<Record<string, number>>(\n (acc, s, i) => ((acc[s] = i), acc),\n {},\n);\n\n/** Sanitize one identifier segment to `[a-z0-9-]` (drops `.` / `--` collisions to single dashes). */\nconst sanitizeSegment = (segment: string): string =>\n segment.replace(/[^a-zA-Z0-9]+/g, \"-\").replace(/^-+|-+$/g, \"\").toLowerCase();\n\n/** `$dt-colors-primary-dark` from a token path + prefix. */\nconst scssVarName = (path: string, prefix: string): string =>\n `$${prefix}-${path.split(\".\").map(sanitizeSegment).join(\"-\")}`;\n\n/** `dt-colors-solid-primary` from an address + prefix (no leading dot). */\nconst scssClassName = (subsystem: string, group: string, variant: string, prefix: string): string =>\n [prefix, subsystem, group, variant].map(sanitizeSegment).join(\"-\");\n\n/** Normalize a filename to a `.scss` extension (plan defaults are CSS-centric). */\nconst scssName = (name: string): string =>\n name.endsWith(\".scss\") ? name : `${name.replace(/\\.[^./]+$/, \"\")}.scss`;\n\n/** Turn a filename into a Sass partial (`_name.scss`) for `@use`. */\nconst scssPartial = (name: string): string => {\n const scss = scssName(name);\n const slash = scss.lastIndexOf(\"/\");\n const dir = slash >= 0 ? scss.slice(0, slash + 1) : \"\";\n const base = scss.slice(slash + 1);\n return `${dir}${base.startsWith(\"_\") ? base : `_${base}`}`;\n};\n\n/** The `@use` reference for a partial — its basename without leading `_` or `.scss`. */\nconst useRef = (partial: string): string => {\n const slash = partial.lastIndexOf(\"/\");\n return partial\n .slice(slash + 1)\n .replace(/^_/, \"\")\n .replace(/\\.scss$/, \"\");\n};\n\nexport const createScssAdapter = (options: ScssAdapterOptions = {}): ThemeAdapter<ScssUnit> => {\n const prefix = options.prefix ?? \"dt\";\n const optionInline = options.inline ?? false;\n const indentWidth = options.indent ?? 2;\n const IND = \" \".repeat(indentWidth);\n const pad = (level: number): string => IND.repeat(level);\n // §W9 — optional cascade-layer wrap for the full-document output (single emit + runtime `scss`).\n const layerName =\n options.layer === true ? \"refract\" : (typeof options.layer === \"string\" && options.layer) || undefined;\n const wrapLayer = (scss: string): string => {\n if (!layerName) return scss;\n const body = scss\n .trimEnd()\n .split(\"\\n\")\n .map(line => (line ? `${IND}${line}` : line))\n .join(\"\\n\");\n return `@layer ${layerName} {\\n${body}\\n}\\n`;\n };\n\n const spec: AdapterSpec<ScssUnit> = {\n name: \"scss\",\n version: 1,\n // SCSS compiles to CSS, so it renders the same state selectors CSS does.\n allowedStates: SCSS_KNOWN_STATES,\n bind(model: ThemeModel, ctx: RenderContext) {\n const media = ctx.media;\n const tokenMap = buildTokenMap(model);\n\n const safeResolve = (path: string): Literal | undefined => {\n try {\n return ctx.resolve(path);\n } catch {\n return undefined;\n }\n };\n\n /**\n * A token value → its SCSS text. §21: length units are resolved format-neutrally in core and baked\n * onto the leaf's `Ref.unit`; a numeric length token appends its resolved unit (looked up on the\n * token map), everything else (unit-less numbers, colours, strings) passes through raw.\n */\n const formatTokenValue = (path: string, value: Literal | undefined): string => {\n if (typeof value !== \"number\") return String(value ?? \"\");\n const unit = tokenMap[path]?.unit;\n return unit ? `${value}${unit}` : `${value}`;\n };\n\n const applyWrap = (value: string, wrap?: string): string => (wrap ? `${wrap}(${value})` : value);\n\n /** Render one declaration value: a `$var` ref (default), or a baked literal (inline). */\n const renderValue = (ref: Ref, inline: boolean): string => {\n if (ref.ref !== undefined) {\n // §W6b — an external token has no `$var`; reference the parent's CSS variable directly.\n const external = tokenMap[ref.ref]?.external;\n if (external !== undefined) return applyWrap(`var(${external})`, ref.wrap);\n if (inline) return applyWrap(formatTokenValue(ref.ref, safeResolve(ref.ref) ?? ref.value), ref.wrap);\n return applyWrap(scssVarName(ref.ref, prefix), ref.wrap);\n }\n return applyWrap(String(ref.value ?? \"\"), ref.wrap);\n };\n\n const renderDeclarations = (decls: Record<string, Ref>, level: number, inline: boolean): string =>\n Object.entries(decls)\n .map(([property, ref]) => `${pad(level)}${property}: ${renderValue(ref, inline)};`)\n .join(\"\\n\");\n\n /** The full `@media (…)` at-rule for a viewport override (empty when unresolved). The core media\n * descriptor already includes the `@media` keyword, so it is used verbatim as the block prelude. */\n const mediaQueryFor = (override: Pick<RuleSetOverride, \"breakpoint\" | \"query\" | \"orientation\">): string => {\n const breakpoint = override.breakpoint;\n if (breakpoint === undefined) return \"\";\n const query = (override.query ?? \"exact\") as MediaVariant;\n const orientation = override.orientation;\n if (!orientation) return (media as MediaDescriptor<string>)[breakpoint]?.[query] ?? \"\";\n if (query === \"min\") return media.min(breakpoint, { orientation });\n if (query === \"max\") return media.max(breakpoint, { orientation });\n return media.exact(breakpoint, { orientation });\n };\n\n /** One override → its nested block (`&:hover { … }`, `@media (…) { … }`, or both). */\n const renderOverride = (override: RuleSetOverride, level: number, inline: boolean): string => {\n const decls = override.declarations ?? {};\n const stateSuffix = override.state ? SCSS_STATE_SELECTORS[override.state] : undefined;\n const atRule = override.breakpoint !== undefined ? mediaQueryFor(override) : undefined;\n // Nothing renderable (e.g. a pure variant/target swap — not expressible in a $var recipe class).\n if (!Object.keys(decls).length) return \"\";\n if (override.breakpoint !== undefined && !atRule) return \"\";\n\n const open: string[] = [];\n const close: string[] = [];\n let cur = level;\n if (atRule) {\n open.push(`${pad(cur)}${atRule} {`);\n close.unshift(`${pad(cur)}}`);\n cur += 1;\n }\n if (stateSuffix) {\n open.push(`${pad(cur)}&${stateSuffix} {`);\n close.unshift(`${pad(cur)}}`);\n cur += 1;\n }\n return [...open, renderDeclarations(decls, cur, inline), ...close].join(\"\\n\");\n };\n\n /** Order overrides: canonical state order, base-state (no bp) before responsive. */\n const orderOverrides = (overrides: RuleSetOverride[]): RuleSetOverride[] =>\n [...overrides].sort((a, b) => {\n const abp = a.breakpoint !== undefined ? 1 : 0;\n const bbp = b.breakpoint !== undefined ? 1 : 0;\n if (abp !== bbp) return abp - bbp;\n const as = a.state ? STATE_ORDER[a.state] ?? 99 : -1;\n const bs = b.state ? STATE_ORDER[b.state] ?? 99 : -1;\n return as - bs;\n });\n\n /** Render a `{ declarations, overrides }` block under a selector (recipe class / reset selector). */\n const renderRuleSet = (\n selector: string,\n declarations: Record<string, Ref>,\n overrides: RuleSetOverride[],\n inline: boolean,\n ): string => {\n const parts: string[] = [`${selector} {`];\n const base = renderDeclarations(declarations, 1, inline);\n if (base) parts.push(base);\n for (const override of orderOverrides(overrides)) {\n const block = renderOverride(override, 1, inline);\n if (block) parts.push(block);\n }\n parts.push(`}`);\n return parts.join(\"\\n\");\n };\n\n /**\n * Render a themed globals element (§9) `kind:\"globals\"` rule-set → a bare, nested SCSS block:\n * `selector { <decls>; <&:state / @media overrides>; &.<variant> { <delta>; <overrides> } }`.\n * Unlike the preset `:where()` reset layer, the selector is bare (higher tier) and each\n * delta-only variant nests as `&.<variant>`.\n */\n const renderGlobalsElement = (ruleSet: RuleSet, inline: boolean): string => {\n const selector = ruleSet.selector ?? \"*\";\n const parts: string[] = [`${selector} {`];\n const base = renderDeclarations(ruleSet.declarations, 1, inline);\n if (base) parts.push(base);\n for (const override of orderOverrides(ruleSet.overrides)) {\n const block = renderOverride(override, 1, inline);\n if (block) parts.push(block);\n }\n for (const [variantName, variant] of Object.entries(ruleSet.variants ?? {})) {\n const vparts: string[] = [`${pad(1)}&.${variantName} {`];\n const vbase = renderDeclarations(variant.declarations, 2, inline);\n if (vbase) vparts.push(vbase);\n for (const override of orderOverrides(variant.overrides)) {\n const block = renderOverride(override, 2, inline);\n if (block) vparts.push(block);\n }\n vparts.push(`${pad(1)}}`);\n parts.push(vparts.join(\"\\n\"));\n }\n parts.push(`}`);\n return parts.join(\"\\n\");\n };\n\n // ── Precompute class names for every recipe/utility variant (components' class list needs\n // sibling classes) — mirrors the CSS adapter's `selectors` map. ──\n const selectors: Record<string, Record<string, Record<string, string>>> = {};\n for (const [subsystem, subModel] of Object.entries(model.subsystems)) {\n if (subsystem === \"components\" || subsystem === \"globals\") continue;\n for (const [group, ruleSetGroup] of Object.entries(subModel.ruleSets ?? {})) {\n for (const variant of Object.keys(ruleSetGroup)) {\n (selectors[subsystem] ??= {})[group] ??= {};\n selectors[subsystem][group][variant] = scssClassName(subsystem, group, variant, prefix);\n }\n }\n }\n\n // ── Components: option-C class list (referenced recipe classes + own delta class). ──\n const componentClasses: Record<string, Record<string, ResolvedComponentClass>> = {};\n const components = model.subsystems.components;\n if (components) {\n for (const [group, ruleSetGroup] of Object.entries(components.ruleSets ?? {})) {\n for (const [variant, ruleSet] of Object.entries(ruleSetGroup)) {\n const ownClass = scssClassName(\"components\", group, variant, prefix);\n const referenced = (ruleSet.references ?? [])\n .map(reference => {\n const parsed = parseRuleSetReference(reference);\n return parsed ? selectors[parsed.subsystem]?.[parsed.group]?.[parsed.variant] : undefined;\n })\n .filter((cls): cls is string => cls !== undefined);\n const classList = [...referenced, ownClass];\n (componentClasses[group] ??= {})[variant] = { className: classList.join(\" \"), classList };\n }\n }\n }\n\n // ── Primitives ──\n const renderVariablesFor = (subsystem: string): string => {\n // Inline bakes values into declarations, so there are no `$variables` to define.\n if (optionInline) return \"\";\n const prefixDot = `${subsystem}.`;\n const lines: string[] = [];\n for (const [path, ref] of Object.entries(tokenMap)) {\n if (!path.startsWith(prefixDot)) continue;\n if (ref.external !== undefined) continue; // §W6b — parent owns the var; define no `$var`\n const value = safeResolve(path) ?? ref.value;\n if (value === undefined) continue;\n lines.push(`${scssVarName(path, prefix)}: ${formatTokenValue(path, value)};`);\n }\n return lines.join(\"\\n\");\n };\n\n const renderRecipeFor = (subsystem: string, group: string, variant: string, inline: boolean): string => {\n const ruleSet = model.subsystems[subsystem]?.ruleSets?.[group]?.[variant];\n if (!ruleSet) return \"\";\n if (ruleSet.kind === \"globals\") {\n return renderGlobalsElement(ruleSet, inline);\n }\n if (ruleSet.kind === \"reset\") {\n const target = ruleSet.selector ?? \"*\";\n return renderRuleSet(`:where(${target})`, ruleSet.declarations, ruleSet.overrides, inline);\n }\n const cls =\n subsystem === \"components\"\n ? scssClassName(\"components\", group, variant, prefix)\n : selectors[subsystem]?.[group]?.[variant];\n if (!cls) return \"\";\n return renderRuleSet(`.${cls}`, ruleSet.declarations, ruleSet.overrides, inline);\n };\n\n // Aggregate builders (reused by the aggregators, `extend`, and `emit`).\n const allVariables = (): string =>\n Object.keys(model.subsystems)\n .map(renderVariablesFor)\n .filter(Boolean)\n .join(\"\\n\\n\");\n\n const allRecipes = (): string => {\n const parts: string[] = [];\n for (const [subsystem, subModel] of Object.entries(model.subsystems)) {\n for (const [group, ruleSetGroup] of Object.entries(subModel.ruleSets ?? {})) {\n for (const variant of Object.keys(ruleSetGroup)) {\n const rule = renderRecipeFor(subsystem, group, variant, optionInline);\n if (rule) parts.push(rule);\n }\n }\n }\n return parts.join(\"\\n\\n\");\n };\n\n const allScss = (): string => [allVariables(), allRecipes()].filter(Boolean).join(\"\\n\\n\");\n\n const collectClasses = (): Record<string, Record<string, Record<string, unknown>>> => {\n const out: Record<string, Record<string, Record<string, unknown>>> = {};\n for (const [subsystem, groups] of Object.entries(selectors)) {\n const g: Record<string, Record<string, string>> = {};\n for (const [group, variants] of Object.entries(groups)) g[group] = { ...variants };\n out[subsystem] = g;\n }\n if (components) out.components = componentClasses;\n return out;\n };\n\n return {\n recipeName(subsystem, group, variant) {\n const ruleSet = model.subsystems[subsystem]?.ruleSets?.[group]?.[variant];\n if (ruleSet?.kind === \"reset\" || ruleSet?.kind === \"globals\") return \"\";\n if (subsystem === \"components\") return scssClassName(\"components\", group, variant, prefix);\n return selectors[subsystem]?.[group]?.[variant] ?? \"\";\n },\n\n // Self-documentation: the REAL class names recipes compile to (globals/reset carry no class),\n // plus Sass-specific `@use` prose for the emitted guide (llms.txt).\n describeUsage(): UsageDescriptor {\n const recipes: UsageRecipe[] = [];\n for (const [subsystem, sub] of Object.entries(model.subsystems)) {\n for (const [group, ruleSetGroup] of Object.entries(sub.ruleSets ?? {})) {\n for (const [variant, ruleSet] of Object.entries(ruleSetGroup)) {\n if (ruleSet?.kind === \"reset\" || ruleSet?.kind === \"globals\") continue;\n const name =\n subsystem === \"components\"\n ? scssClassName(\"components\", group, variant, prefix)\n : selectors[subsystem]?.[group]?.[variant] ?? \"\";\n if (name) recipes.push({ subsystem, group, variant, name });\n }\n }\n }\n return {\n format: \"scss\",\n summary: [\n \"This theme is emitted as Sass partials: a `$`-variables layer plus recipe rules that compile to CSS classes.\",\n 'Pull it into your Sass entry with `@use`: `@use \"theme\" as *;` (or `@use \"variables\" as *;` for just the tokens), then compile to CSS.',\n 'Apply the recipe class names below to your markup: `<button class=\"<class>\">`. Values resolve through Sass variables (or baked literals under the `inline` option).',\n ],\n recipes,\n };\n },\n renderRecipe(subsystem, group, variant) {\n return renderRecipeFor(subsystem, group, variant, optionInline);\n },\n renderVariables(subsystem) {\n return renderVariablesFor(subsystem);\n },\n join(parts) {\n return parts.filter(Boolean).join(\"\\n\\n\");\n },\n\n // The full document is variables-then-rules; override so the aggregate ordering is explicit.\n renderAllVariables: allVariables,\n renderAllRecipes: allRecipes,\n renderAll: allScss,\n\n extend() {\n return {\n media,\n get scss() {\n return wrapLayer(allScss());\n },\n get variablesScss() {\n return allVariables();\n },\n get rulesScss() {\n return allRecipes();\n },\n get classes() {\n return collectClasses();\n },\n };\n },\n\n emit(plan) {\n const type = plan?.type ?? \"single\";\n\n // §W9 — `layer` wraps one self-contained document; multi-file modes split the cascade.\n if (layerName && type !== \"single\") {\n throw new Error(\n `scss adapter: the \\`layer\\` option is only supported with single-file emit (got \"${type}\").`,\n );\n }\n\n if (type === \"single\") {\n const file = plan?.type === \"single\" ? plan.file : \"theme.scss\";\n return { files: { [scssName(file)]: wrapLayer(allScss()) } };\n }\n\n // Baking values leaves no `$variables` to split out — contradicts every multi-file mode.\n if (optionInline && (type === \"split\" || type === \"subsystem\")) {\n throw new Error(\n `scss adapter: emit mode '${type}' cannot be combined with the global inline option ` +\n `(inline bakes values, leaving no $variables file)`,\n );\n }\n\n if (plan?.type === \"split\") {\n // A `_variables.scss` partial + a rules file that `@use`s it (Sass module system — NOT\n // the banned `@import`), so the rules' `$dt-…` refs resolve.\n const varsFile = scssPartial(plan.variables);\n const rulesFile = scssName(plan.file);\n const rules = `@use \"${useRef(varsFile)}\" as *;\\n\\n${allRecipes()}`;\n return { files: { [rulesFile]: rules, [varsFile]: allVariables() } };\n }\n\n if (plan?.type === \"subsystem\") {\n // Per-subsystem Sass files need cross-subsystem `@use` wiring (a component `@use`s the\n // colors/typography/… partials it composes). Deferred — a clear, honest v1 boundary.\n throw new Error(\"scss adapter: emit mode 'subsystem' is not supported yet\");\n }\n\n if (plan?.type === \"components\") {\n // Each component variant → one self-contained class (its merged declarations). `inline`\n // (default true) bakes values; `inline: false` keeps `$var` refs + a tree-shaken partial.\n const componentRuleSets = model.subsystems.components?.ruleSets ?? {};\n const inline = plan.inline;\n\n const filesByName: Record<string, string[]> = {};\n const referencedPaths: string[] = [];\n const seen = new Set<string>();\n\n for (const [group, ruleSetGroup] of Object.entries(componentRuleSets)) {\n for (const variant of Object.keys(ruleSetGroup)) {\n const merged = mergeComponentRuleSet(model, group, variant);\n const selector = `.${scssClassName(\"components\", group, variant, prefix)}`;\n // Flatten the merged view into a rule-set shape renderRuleSet understands.\n const overrides: RuleSetOverride[] = [\n ...Object.entries(merged.states).map(([state, declarations]) => ({ state, declarations })),\n ...merged.responsive.map(entry => {\n const { declarations, ...condition } = entry;\n return { ...condition, declarations } as RuleSetOverride;\n }),\n ];\n const rule = renderRuleSet(selector, merged.base, overrides, inline);\n const filename = scssName(plan.filename({ group, variant }));\n (filesByName[filename] ??= []).push(rule);\n\n if (!inline) {\n for (const path of merged.referencedPaths) {\n if (!seen.has(path)) {\n seen.add(path);\n referencedPaths.push(path);\n }\n }\n }\n }\n }\n\n const files: Record<string, string> = {};\n const usesVars = !inline && referencedPaths.length > 0 && plan.variables !== false;\n for (const [name, parts] of Object.entries(filesByName)) {\n const body = parts.join(\"\\n\\n\");\n files[name] = usesVars ? `@use \"${useRef(scssPartial(plan.variables as string))}\" as *;\\n\\n${body}` : body;\n }\n\n // Tree-shaken variables partial — only the referenced token paths — unless `variables: false`.\n if (!inline && plan.variables !== false) {\n const lines: string[] = [];\n for (const path of referencedPaths) {\n const value = safeResolve(path) ?? tokenMap[path]?.value;\n if (value === undefined) continue;\n lines.push(`${scssVarName(path, prefix)}: ${formatTokenValue(path, value)};`);\n }\n if (lines.length) files[scssPartial(plan.variables)] = lines.join(\"\\n\");\n }\n\n return { files };\n }\n\n throw new Error(`scss adapter: emit mode '${type}' not yet implemented`);\n },\n };\n },\n };\n\n return defineAdapter(spec);\n};\n"],"names":["SCSS_STATE_SELECTORS","link","visited","hover","focus","active","disabled","pressed","SCSS_KNOWN_STATES","Object","keys","STATE_ORDER","reduce","acc","s","i","sanitizeSegment","segment","replace","toLowerCase","scssVarName","path","prefix","split","map","join","scssClassName","subsystem","group","variant","scssName","name","endsWith","scssPartial","scss","slash","lastIndexOf","dir","slice","base","startsWith","useRef","partial","createScssAdapter","options","_a","optionInline","_b","inline","indentWidth","_c","indent","IND","repeat","pad","level","layerName","layer","undefined","wrapLayer","body","trimEnd","line","spec","version","allowedStates","bind","model","ctx","media","tokenMap","buildTokenMap","safeResolve","resolve","formatTokenValue","value","String","unit","applyWrap","wrap","renderDeclarations","decls","entries","property","ref","external","renderValue","renderOverride","override","declarations","stateSuffix","state","atRule","breakpoint","query","orientation","min","max","exact","mediaQueryFor","length","open","close","cur","push","unshift","orderOverrides","overrides","sort","a","b","abp","bbp","renderRuleSet","selector","parts","block","selectors","subModel","subsystems","ruleSetGroup","ruleSets","_g","componentClasses","components","_d","ruleSet","ownClass","referenced","_e","references","reference","parsed","parseRuleSetReference","filter","cls","classList","_f","className","renderVariablesFor","prefixDot","lines","renderRecipeFor","kind","variantName","variants","vparts","vbase","renderGlobalsElement","target","allVariables","Boolean","allRecipes","rule","allScss","recipeName","describeUsage","recipes","sub","format","summary","renderRecipe","renderVariables","renderAllVariables","renderAllRecipes","renderAll","extend","variablesScss","rulesScss","classes","out","groups","g","collectClasses","emit","plan","type","Error","file","files","varsFile","variables","rulesFile","rules","componentRuleSets","filesByName","referencedPaths","seen","Set","merged","mergeComponentRuleSet","states","responsive","entry","condition","filename","has","add","usesVars","defineAdapter"],"mappings":"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"}
1
+ {"version":3,"file":"index.esm.js","sources":["../src/index.ts"],"sourcesContent":["/**\n * The SCSS adapter — lowers the format-neutral {@link ThemeModel} to idiomatic Sass.\n *\n * The third output adapter. Like CSS its `TUnit` is `string`, but the output is genuinely a\n * different format: tokens become compile-time **`$variables`** (not `:root` custom properties),\n * declaration refs render as **`$dt-…`** (not `var(--…)`), and each rule-set nests its\n * state/breakpoint overrides with `&` / `@media` the Sass way. Recipes are emitted as **classes**\n * and composition is the option-C **class list** (as in the CSS adapter) — the same class surface,\n * generated from Sass source.\n *\n * Naming is uniform + path-based (`$dt-<subsystem>-<path>`, `.dt-<subsystem>-<group>-<variant>`) —\n * SCSS is its own format, so it does not chase the CSS adapter's byte-for-byte variable/class names.\n *\n * KNOWN LIMITATION (inherent to compile-time Sass variables): `$variables` capture each token's\n * BASE value only. Responsive / appearance-mode *token* variation — which the CSS adapter emits as\n * `@media { :root { --x: … } }` custom-property reassignments — cannot be expressed as a `$variable`\n * (a Sass var is not media-conditional). Recipe-level breakpoint overrides, which re-emit whole\n * declarations, are fully supported via nested `@media`.\n *\n * Worked reference: `src/adapters/css/`. Core stays format-agnostic; all naming + state handling live here.\n */\nimport type { Literal, Ref, RuleSet, RuleSetOverride, ThemeModel } from \"@theme-registry/refract\";\nimport { buildTokenMap, mergeComponentRuleSet, parseRuleSetReference } from \"@theme-registry/refract\";\nimport type { MergedRuleSet } from \"@theme-registry/refract\";\nimport type { MediaDescriptor, MediaVariant } from \"@theme-registry/refract\";\nimport type { AdapterSpec, PreviewDescriptor, RenderContext, ThemeAdapter, UsageDescriptor, UsageRecipe } from \"@theme-registry/refract\";\nimport { defineAdapter } from \"@theme-registry/refract\";\nimport type { ResolvedComponentClass, ScssAdapterOptions, ScssUnit } from \"./types\";\n\nexport type { ResolvedComponentClass, ScssAdapterOptions, ScssUnit } from \"./types\";\n\n/** `state → selector suffix`, nested as `&<suffix>`. SCSS compiles to CSS, so it knows the CSS states. */\nconst SCSS_STATE_SELECTORS: Record<string, string> = {\n link: \":link\",\n visited: \":visited\",\n hover: \":hover\",\n focus: \":focus\",\n active: \":active\",\n disabled: \"[disabled]\",\n pressed: \"[aria-pressed]\",\n};\nconst SCSS_KNOWN_STATES: ReadonlyArray<string> = Object.keys(SCSS_STATE_SELECTORS);\nconst STATE_ORDER: Record<string, number> = SCSS_KNOWN_STATES.reduce<Record<string, number>>(\n (acc, s, i) => ((acc[s] = i), acc),\n {},\n);\n\n/** Sanitize one identifier segment to `[a-z0-9-]` (drops `.` / `--` collisions to single dashes). */\nconst sanitizeSegment = (segment: string): string =>\n segment.replace(/[^a-zA-Z0-9]+/g, \"-\").replace(/^-+|-+$/g, \"\").toLowerCase();\n\n/** `$dt-colors-primary-dark` from a token path + prefix. */\nconst scssVarName = (path: string, prefix: string): string =>\n `$${prefix}-${path.split(\".\").map(sanitizeSegment).join(\"-\")}`;\n\n/** `dt-colors-solid-primary` from an address + prefix (no leading dot). */\nconst scssClassName = (subsystem: string, group: string, variant: string, prefix: string): string =>\n [prefix, subsystem, group, variant].map(sanitizeSegment).join(\"-\");\n\n/** Normalize a filename to a `.scss` extension (plan defaults are CSS-centric). */\nconst scssName = (name: string): string =>\n name.endsWith(\".scss\") ? name : `${name.replace(/\\.[^./]+$/, \"\")}.scss`;\n\n/** Turn a filename into a Sass partial (`_name.scss`) for `@use`. */\nconst scssPartial = (name: string): string => {\n const scss = scssName(name);\n const slash = scss.lastIndexOf(\"/\");\n const dir = slash >= 0 ? scss.slice(0, slash + 1) : \"\";\n const base = scss.slice(slash + 1);\n return `${dir}${base.startsWith(\"_\") ? base : `_${base}`}`;\n};\n\n/** The `@use` reference for a partial — its basename without leading `_` or `.scss`. */\nconst useRef = (partial: string): string => {\n const slash = partial.lastIndexOf(\"/\");\n return partial\n .slice(slash + 1)\n .replace(/^_/, \"\")\n .replace(/\\.scss$/, \"\");\n};\n\nexport const createScssAdapter = (options: ScssAdapterOptions = {}): ThemeAdapter<ScssUnit> => {\n const prefix = options.prefix ?? \"dt\";\n const optionInline = options.inline ?? false;\n const indentWidth = options.indent ?? 2;\n const IND = \" \".repeat(indentWidth);\n const pad = (level: number): string => IND.repeat(level);\n // §W9 — optional cascade-layer wrap for the full-document output (single emit + runtime `scss`).\n const layerName =\n options.layer === true ? \"refract\" : (typeof options.layer === \"string\" && options.layer) || undefined;\n const wrapLayer = (scss: string): string => {\n if (!layerName) return scss;\n const body = scss\n .trimEnd()\n .split(\"\\n\")\n .map(line => (line ? `${IND}${line}` : line))\n .join(\"\\n\");\n return `@layer ${layerName} {\\n${body}\\n}\\n`;\n };\n\n const spec: AdapterSpec<ScssUnit> = {\n name: \"scss\",\n version: 1,\n // SCSS compiles to CSS, so it renders the same state selectors CSS does.\n allowedStates: SCSS_KNOWN_STATES,\n bind(model: ThemeModel, ctx: RenderContext) {\n const media = ctx.media;\n const tokenMap = buildTokenMap(model);\n\n const safeResolve = (path: string): Literal | undefined => {\n try {\n return ctx.resolve(path);\n } catch {\n return undefined;\n }\n };\n\n /**\n * A token value → its SCSS text. §21: length units are resolved format-neutrally in core and baked\n * onto the leaf's `Ref.unit`; a numeric length token appends its resolved unit (looked up on the\n * token map), everything else (unit-less numbers, colours, strings) passes through raw.\n */\n const formatTokenValue = (path: string, value: Literal | undefined): string => {\n if (typeof value !== \"number\") return String(value ?? \"\");\n const unit = tokenMap[path]?.unit;\n return unit ? `${value}${unit}` : `${value}`;\n };\n\n const applyWrap = (value: string, wrap?: string): string => (wrap ? `${wrap}(${value})` : value);\n\n /** Render one declaration value: a `$var` ref (default), or a baked literal (inline). */\n const renderValue = (ref: Ref, inline: boolean): string => {\n if (ref.ref !== undefined) {\n // §W6b — an external token has no `$var`; reference the parent's CSS variable directly.\n const external = tokenMap[ref.ref]?.external;\n if (external !== undefined) return applyWrap(`var(${external})`, ref.wrap);\n if (inline) return applyWrap(formatTokenValue(ref.ref, safeResolve(ref.ref) ?? ref.value), ref.wrap);\n return applyWrap(scssVarName(ref.ref, prefix), ref.wrap);\n }\n return applyWrap(String(ref.value ?? \"\"), ref.wrap);\n };\n\n const renderDeclarations = (decls: Record<string, Ref>, level: number, inline: boolean): string =>\n Object.entries(decls)\n .map(([property, ref]) => `${pad(level)}${property}: ${renderValue(ref, inline)};`)\n .join(\"\\n\");\n\n /** The full `@media (…)` at-rule for a viewport override (empty when unresolved). The core media\n * descriptor already includes the `@media` keyword, so it is used verbatim as the block prelude. */\n const mediaQueryFor = (override: Pick<RuleSetOverride, \"breakpoint\" | \"query\" | \"orientation\">): string => {\n const breakpoint = override.breakpoint;\n if (breakpoint === undefined) return \"\";\n const query = (override.query ?? \"exact\") as MediaVariant;\n const orientation = override.orientation;\n if (!orientation) return (media as MediaDescriptor<string>)[breakpoint]?.[query] ?? \"\";\n if (query === \"min\") return media.min(breakpoint, { orientation });\n if (query === \"max\") return media.max(breakpoint, { orientation });\n return media.exact(breakpoint, { orientation });\n };\n\n /** One override → its nested block (`&:hover { … }`, `@media (…) { … }`, or both). */\n const renderOverride = (override: RuleSetOverride, level: number, inline: boolean): string => {\n const decls = override.declarations ?? {};\n const stateSuffix = override.state ? SCSS_STATE_SELECTORS[override.state] : undefined;\n const atRule = override.breakpoint !== undefined ? mediaQueryFor(override) : undefined;\n // Nothing renderable (e.g. a pure variant/target swap — not expressible in a $var recipe class).\n if (!Object.keys(decls).length) return \"\";\n if (override.breakpoint !== undefined && !atRule) return \"\";\n\n const open: string[] = [];\n const close: string[] = [];\n let cur = level;\n if (atRule) {\n open.push(`${pad(cur)}${atRule} {`);\n close.unshift(`${pad(cur)}}`);\n cur += 1;\n }\n if (stateSuffix) {\n open.push(`${pad(cur)}&${stateSuffix} {`);\n close.unshift(`${pad(cur)}}`);\n cur += 1;\n }\n return [...open, renderDeclarations(decls, cur, inline), ...close].join(\"\\n\");\n };\n\n /** Order overrides: canonical state order, base-state (no bp) before responsive. */\n const orderOverrides = (overrides: RuleSetOverride[]): RuleSetOverride[] =>\n [...overrides].sort((a, b) => {\n const abp = a.breakpoint !== undefined ? 1 : 0;\n const bbp = b.breakpoint !== undefined ? 1 : 0;\n if (abp !== bbp) return abp - bbp;\n const as = a.state ? STATE_ORDER[a.state] ?? 99 : -1;\n const bs = b.state ? STATE_ORDER[b.state] ?? 99 : -1;\n return as - bs;\n });\n\n /** Render a `{ declarations, overrides }` block under a selector (recipe class / reset selector). */\n const renderRuleSet = (\n selector: string,\n declarations: Record<string, Ref>,\n overrides: RuleSetOverride[],\n inline: boolean,\n ): string => {\n const parts: string[] = [`${selector} {`];\n const base = renderDeclarations(declarations, 1, inline);\n if (base) parts.push(base);\n for (const override of orderOverrides(overrides)) {\n const block = renderOverride(override, 1, inline);\n if (block) parts.push(block);\n }\n parts.push(`}`);\n return parts.join(\"\\n\");\n };\n\n /**\n * Render a themed globals element (§9) `kind:\"globals\"` rule-set → a bare, nested SCSS block:\n * `selector { <decls>; <&:state / @media overrides>; &.<variant> { <delta>; <overrides> } }`.\n * Unlike the preset `:where()` reset layer, the selector is bare (higher tier) and each\n * delta-only variant nests as `&.<variant>`.\n */\n const renderGlobalsElement = (ruleSet: RuleSet, inline: boolean): string => {\n const selector = ruleSet.selector ?? \"*\";\n const parts: string[] = [`${selector} {`];\n const base = renderDeclarations(ruleSet.declarations, 1, inline);\n if (base) parts.push(base);\n for (const override of orderOverrides(ruleSet.overrides)) {\n const block = renderOverride(override, 1, inline);\n if (block) parts.push(block);\n }\n for (const [variantName, variant] of Object.entries(ruleSet.variants ?? {})) {\n const vparts: string[] = [`${pad(1)}&.${variantName} {`];\n const vbase = renderDeclarations(variant.declarations, 2, inline);\n if (vbase) vparts.push(vbase);\n for (const override of orderOverrides(variant.overrides)) {\n const block = renderOverride(override, 2, inline);\n if (block) vparts.push(block);\n }\n vparts.push(`${pad(1)}}`);\n parts.push(vparts.join(\"\\n\"));\n }\n parts.push(`}`);\n return parts.join(\"\\n\");\n };\n\n // ── Precompute class names for every recipe/utility variant (components' class list needs\n // sibling classes) — mirrors the CSS adapter's `selectors` map. ──\n const selectors: Record<string, Record<string, Record<string, string>>> = {};\n for (const [subsystem, subModel] of Object.entries(model.subsystems)) {\n if (subsystem === \"components\" || subsystem === \"globals\") continue;\n for (const [group, ruleSetGroup] of Object.entries(subModel.ruleSets ?? {})) {\n for (const variant of Object.keys(ruleSetGroup)) {\n (selectors[subsystem] ??= {})[group] ??= {};\n selectors[subsystem][group][variant] = scssClassName(subsystem, group, variant, prefix);\n }\n }\n }\n\n // ── Components: option-C class list (referenced recipe classes + own delta class). ──\n const componentClasses: Record<string, Record<string, ResolvedComponentClass>> = {};\n const components = model.subsystems.components;\n if (components) {\n for (const [group, ruleSetGroup] of Object.entries(components.ruleSets ?? {})) {\n for (const [variant, ruleSet] of Object.entries(ruleSetGroup)) {\n const ownClass = scssClassName(\"components\", group, variant, prefix);\n const referenced = (ruleSet.references ?? [])\n .map(reference => {\n const parsed = parseRuleSetReference(reference);\n return parsed ? selectors[parsed.subsystem]?.[parsed.group]?.[parsed.variant] : undefined;\n })\n .filter((cls): cls is string => cls !== undefined);\n const classList = [...referenced, ownClass];\n (componentClasses[group] ??= {})[variant] = { className: classList.join(\" \"), classList };\n }\n }\n }\n\n // ── Primitives ──\n const renderVariablesFor = (subsystem: string): string => {\n // Inline bakes values into declarations, so there are no `$variables` to define.\n if (optionInline) return \"\";\n const prefixDot = `${subsystem}.`;\n const lines: string[] = [];\n for (const [path, ref] of Object.entries(tokenMap)) {\n if (!path.startsWith(prefixDot)) continue;\n if (ref.external !== undefined) continue; // §W6b — parent owns the var; define no `$var`\n const value = safeResolve(path) ?? ref.value;\n if (value === undefined) continue;\n lines.push(`${scssVarName(path, prefix)}: ${formatTokenValue(path, value)};`);\n }\n return lines.join(\"\\n\");\n };\n\n const renderRecipeFor = (subsystem: string, group: string, variant: string, inline: boolean): string => {\n const ruleSet = model.subsystems[subsystem]?.ruleSets?.[group]?.[variant];\n if (!ruleSet) return \"\";\n if (ruleSet.kind === \"globals\") {\n return renderGlobalsElement(ruleSet, inline);\n }\n if (ruleSet.kind === \"reset\") {\n const target = ruleSet.selector ?? \"*\";\n return renderRuleSet(`:where(${target})`, ruleSet.declarations, ruleSet.overrides, inline);\n }\n const cls =\n subsystem === \"components\"\n ? scssClassName(\"components\", group, variant, prefix)\n : selectors[subsystem]?.[group]?.[variant];\n if (!cls) return \"\";\n return renderRuleSet(`.${cls}`, ruleSet.declarations, ruleSet.overrides, inline);\n };\n\n // Aggregate builders (reused by the aggregators, `extend`, and `emit`).\n const allVariables = (): string =>\n Object.keys(model.subsystems)\n .map(renderVariablesFor)\n .filter(Boolean)\n .join(\"\\n\\n\");\n\n const allRecipes = (): string => {\n const parts: string[] = [];\n for (const [subsystem, subModel] of Object.entries(model.subsystems)) {\n for (const [group, ruleSetGroup] of Object.entries(subModel.ruleSets ?? {})) {\n for (const variant of Object.keys(ruleSetGroup)) {\n const rule = renderRecipeFor(subsystem, group, variant, optionInline);\n if (rule) parts.push(rule);\n }\n }\n }\n return parts.join(\"\\n\\n\");\n };\n\n const allScss = (): string => [allVariables(), allRecipes()].filter(Boolean).join(\"\\n\\n\");\n\n const collectClasses = (): Record<string, Record<string, Record<string, unknown>>> => {\n const out: Record<string, Record<string, Record<string, unknown>>> = {};\n for (const [subsystem, groups] of Object.entries(selectors)) {\n const g: Record<string, Record<string, string>> = {};\n for (const [group, variants] of Object.entries(groups)) g[group] = { ...variants };\n out[subsystem] = g;\n }\n if (components) out.components = componentClasses;\n return out;\n };\n\n return {\n recipeName(subsystem, group, variant) {\n const ruleSet = model.subsystems[subsystem]?.ruleSets?.[group]?.[variant];\n if (ruleSet?.kind === \"reset\" || ruleSet?.kind === \"globals\") return \"\";\n if (subsystem === \"components\") return scssClassName(\"components\", group, variant, prefix);\n return selectors[subsystem]?.[group]?.[variant] ?? \"\";\n },\n\n // Preview (§20): a browser can't load Sass — the partials must be compiled first. Token\n // plates still render from the format-neutral export; recipes are listed by name only.\n describePreview(): PreviewDescriptor {\n return {\n stylesheets: [],\n unavailable:\n \"This target emits Sass partials, which a browser cannot load directly — compile them \" +\n \"to CSS first (or add a CSS target to this config) for a live render. Token values \" +\n \"below are exact; recipe class names are the ones the partials compile to.\",\n };\n },\n\n // Self-documentation: the REAL class names recipes compile to (globals/reset carry no class),\n // plus Sass-specific `@use` prose for the emitted guide (llms.txt).\n describeUsage(): UsageDescriptor {\n const recipes: UsageRecipe[] = [];\n for (const [subsystem, sub] of Object.entries(model.subsystems)) {\n for (const [group, ruleSetGroup] of Object.entries(sub.ruleSets ?? {})) {\n for (const [variant, ruleSet] of Object.entries(ruleSetGroup)) {\n if (ruleSet?.kind === \"reset\" || ruleSet?.kind === \"globals\") continue;\n const name =\n subsystem === \"components\"\n ? scssClassName(\"components\", group, variant, prefix)\n : selectors[subsystem]?.[group]?.[variant] ?? \"\";\n if (name) recipes.push({ subsystem, group, variant, name });\n }\n }\n }\n return {\n format: \"scss\",\n summary: [\n \"This theme is emitted as Sass partials: a `$`-variables layer plus recipe rules that compile to CSS classes.\",\n 'Pull it into your Sass entry with `@use`: `@use \"theme\" as *;` (or `@use \"variables\" as *;` for just the tokens), then compile to CSS.',\n 'Apply the recipe class names below to your markup: `<button class=\"<class>\">`. Values resolve through Sass variables (or baked literals under the `inline` option).',\n ],\n recipes,\n };\n },\n renderRecipe(subsystem, group, variant) {\n return renderRecipeFor(subsystem, group, variant, optionInline);\n },\n renderVariables(subsystem) {\n return renderVariablesFor(subsystem);\n },\n join(parts) {\n return parts.filter(Boolean).join(\"\\n\\n\");\n },\n\n // The full document is variables-then-rules; override so the aggregate ordering is explicit.\n renderAllVariables: allVariables,\n renderAllRecipes: allRecipes,\n renderAll: allScss,\n\n extend() {\n return {\n media,\n get scss() {\n return wrapLayer(allScss());\n },\n get variablesScss() {\n return allVariables();\n },\n get rulesScss() {\n return allRecipes();\n },\n get classes() {\n return collectClasses();\n },\n };\n },\n\n emit(plan) {\n const type = plan?.type ?? \"single\";\n\n // §W9 — `layer` wraps one self-contained document; multi-file modes split the cascade.\n if (layerName && type !== \"single\") {\n throw new Error(\n `scss adapter: the \\`layer\\` option is only supported with single-file emit (got \"${type}\").`,\n );\n }\n\n if (type === \"single\") {\n const file = plan?.type === \"single\" ? plan.file : \"theme.scss\";\n return { files: { [scssName(file)]: wrapLayer(allScss()) } };\n }\n\n // Baking values leaves no `$variables` to split out — contradicts every multi-file mode.\n if (optionInline && (type === \"split\" || type === \"subsystem\")) {\n throw new Error(\n `scss adapter: emit mode '${type}' cannot be combined with the global inline option ` +\n `(inline bakes values, leaving no $variables file)`,\n );\n }\n\n if (plan?.type === \"split\") {\n // A `_variables.scss` partial + a rules file that `@use`s it (Sass module system — NOT\n // the banned `@import`), so the rules' `$dt-…` refs resolve.\n const varsFile = scssPartial(plan.variables);\n const rulesFile = scssName(plan.file);\n const rules = `@use \"${useRef(varsFile)}\" as *;\\n\\n${allRecipes()}`;\n return { files: { [rulesFile]: rules, [varsFile]: allVariables() } };\n }\n\n if (plan?.type === \"subsystem\") {\n // Per-subsystem Sass files need cross-subsystem `@use` wiring (a component `@use`s the\n // colors/typography/… partials it composes). Deferred — a clear, honest v1 boundary.\n throw new Error(\"scss adapter: emit mode 'subsystem' is not supported yet\");\n }\n\n if (plan?.type === \"components\") {\n // Each component variant → one self-contained class (its merged declarations). `inline`\n // (default true) bakes values; `inline: false` keeps `$var` refs + a tree-shaken partial.\n const componentRuleSets = model.subsystems.components?.ruleSets ?? {};\n const inline = plan.inline;\n\n const filesByName: Record<string, string[]> = {};\n const referencedPaths: string[] = [];\n const seen = new Set<string>();\n\n for (const [group, ruleSetGroup] of Object.entries(componentRuleSets)) {\n for (const variant of Object.keys(ruleSetGroup)) {\n const merged = mergeComponentRuleSet(model, group, variant);\n const selector = `.${scssClassName(\"components\", group, variant, prefix)}`;\n // Flatten the merged view into a rule-set shape renderRuleSet understands.\n const overrides: RuleSetOverride[] = [\n ...Object.entries(merged.states).map(([state, declarations]) => ({ state, declarations })),\n ...merged.responsive.map(entry => {\n const { declarations, ...condition } = entry;\n return { ...condition, declarations } as RuleSetOverride;\n }),\n ];\n const rule = renderRuleSet(selector, merged.base, overrides, inline);\n const filename = scssName(plan.filename({ group, variant }));\n (filesByName[filename] ??= []).push(rule);\n\n if (!inline) {\n for (const path of merged.referencedPaths) {\n if (!seen.has(path)) {\n seen.add(path);\n referencedPaths.push(path);\n }\n }\n }\n }\n }\n\n const files: Record<string, string> = {};\n const usesVars = !inline && referencedPaths.length > 0 && plan.variables !== false;\n for (const [name, parts] of Object.entries(filesByName)) {\n const body = parts.join(\"\\n\\n\");\n files[name] = usesVars ? `@use \"${useRef(scssPartial(plan.variables as string))}\" as *;\\n\\n${body}` : body;\n }\n\n // Tree-shaken variables partial — only the referenced token paths — unless `variables: false`.\n if (!inline && plan.variables !== false) {\n const lines: string[] = [];\n for (const path of referencedPaths) {\n const value = safeResolve(path) ?? tokenMap[path]?.value;\n if (value === undefined) continue;\n lines.push(`${scssVarName(path, prefix)}: ${formatTokenValue(path, value)};`);\n }\n if (lines.length) files[scssPartial(plan.variables)] = lines.join(\"\\n\");\n }\n\n return { files };\n }\n\n throw new Error(`scss adapter: emit mode '${type}' not yet implemented`);\n },\n };\n },\n };\n\n return defineAdapter(spec);\n};\n"],"names":["SCSS_STATE_SELECTORS","link","visited","hover","focus","active","disabled","pressed","SCSS_KNOWN_STATES","Object","keys","STATE_ORDER","reduce","acc","s","i","sanitizeSegment","segment","replace","toLowerCase","scssVarName","path","prefix","split","map","join","scssClassName","subsystem","group","variant","scssName","name","endsWith","scssPartial","scss","slash","lastIndexOf","dir","slice","base","startsWith","useRef","partial","createScssAdapter","options","_a","optionInline","_b","inline","indentWidth","_c","indent","IND","repeat","pad","level","layerName","layer","undefined","wrapLayer","body","trimEnd","line","spec","version","allowedStates","bind","model","ctx","media","tokenMap","buildTokenMap","safeResolve","resolve","formatTokenValue","value","String","unit","applyWrap","wrap","renderDeclarations","decls","entries","property","ref","external","renderValue","renderOverride","override","declarations","stateSuffix","state","atRule","breakpoint","query","orientation","min","max","exact","mediaQueryFor","length","open","close","cur","push","unshift","orderOverrides","overrides","sort","a","b","abp","bbp","renderRuleSet","selector","parts","block","selectors","subModel","subsystems","ruleSetGroup","ruleSets","_g","componentClasses","components","_d","ruleSet","ownClass","referenced","_e","references","reference","parsed","parseRuleSetReference","filter","cls","classList","_f","className","renderVariablesFor","prefixDot","lines","renderRecipeFor","kind","variantName","variants","vparts","vbase","renderGlobalsElement","target","allVariables","Boolean","allRecipes","rule","allScss","recipeName","describePreview","stylesheets","unavailable","describeUsage","recipes","sub","format","summary","renderRecipe","renderVariables","renderAllVariables","renderAllRecipes","renderAll","extend","variablesScss","rulesScss","classes","out","groups","g","collectClasses","emit","plan","type","Error","file","files","varsFile","variables","rulesFile","rules","componentRuleSets","filesByName","referencedPaths","seen","Set","merged","mergeComponentRuleSet","states","responsive","entry","condition","filename","has","add","usesVars","defineAdapter"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@theme-registry/refract-scss",
3
- "version": "0.1.7",
3
+ "version": "0.1.8",
4
4
  "description": "The SCSS output adapter for @theme-registry/refract — lowers a ThemeModel to SCSS variables + mixins.",
5
5
  "author": {
6
6
  "name": "Petyo Stoyanov",
@@ -32,7 +32,7 @@
32
32
  "./package.json": "./package.json"
33
33
  },
34
34
  "peerDependencies": {
35
- "@theme-registry/refract": "^0.1.7"
35
+ "@theme-registry/refract": "^0.1.8"
36
36
  },
37
37
  "devDependencies": {
38
38
  "@rollup/plugin-terser": "^0.4.4",
@@ -42,7 +42,7 @@
42
42
  "rollup-plugin-peer-deps-external": "^2.2.4",
43
43
  "typescript": "^5.4.2",
44
44
  "vitest": "^4.1.10",
45
- "@theme-registry/refract": "^0.1.7",
45
+ "@theme-registry/refract": "^0.1.8",
46
46
  "@theme-registry/theme-fixtures": "^0.0.0"
47
47
  },
48
48
  "scripts": {