@designid/tokens 1.2.9 → 1.2.11
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/bin/build.js +108 -105
- package/bin/editor.js +126 -123
- package/bin/watch.js +128 -125
- package/package.json +1 -1
package/bin/watch.js
CHANGED
|
@@ -1,62 +1,62 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import{createRequire as J0}from"node:module";var L0=Object.create;var{getPrototypeOf:H0,defineProperty:cX,getOwnPropertyNames:_0}=Object;var Q0=Object.prototype.hasOwnProperty;var O0=(X,Z,Y)=>{Y=X!=null?L0(H0(X)):{};let q=Z||!X||!X.__esModule?cX(Y,"default",{value:X,enumerable:!0}):Y;for(let $ of _0(X))if(!Q0.call(q,$))cX(q,$,{get:()=>X[$],enumerable:!0});return q};var lX=(X,Z)=>{for(var Y in Z)cX(X,Y,{get:Z[Y],enumerable:!0,configurable:!0,set:(q)=>Z[Y]=()=>q})};var b=(X,Z)=>()=>(X&&(Z=X(X=0)),Z);var a=J0(import.meta.url);var lY={};lX(lY,{transformColorValueAsync:()=>R0,transformColorValue:()=>x,transformColorToken:()=>jX,setAlpha:()=>zX,isColor:()=>m,initializeColorspace:()=>w0});import rX from"colorjs.io";async function kY(){if(xX===null){let{colorspace:X}=await V();xX=X||"hex"}return xX}function I0(){return xX||"hex"}async function w0(){await kY()}function zX(X,Z){let Y=new rX(X);if(Z||Z===0)Y.alpha=Z/100;return x(Y)}function cY(X,Z){if(!X)return X;if(Z&&Z.type!=="color")return X;if(typeof X==="string")X=new rX(X);if(typeof X?.to!=="function")return X;let Y=I0();try{switch(Y){case"hex":return X.to("srgb").toString({format:"hex"});case"rgb":case"srgb":return X.to("srgb").toString();case"srgb-linear":return X.to("srgb-linear").toString();case"display-p3":case"p3":return X.to("p3").toString();case"a98rgb":case"a98-rgb":return X.to("a98rgb").toString();case"prophoto":case"prophoto-rgb":return X.to("prophoto").toString();case"rec2020":case"rec-2020":return X.to("rec2020").toString();case"xyz":case"xyz-d65":return X.to("xyz-d65").toString();case"xyz-d50":return X.to("xyz-d50").toString();case"lab":case"cielab":return X.to("lab").toString();case"lab-d65":return X.to("lab-d65").toString();case"oklab":return X.to("oklab").toString();case"lch":case"cielch":return X.to("lch").toString();case"oklch":return X.to("oklch").toString();case"hsl":return X.to("hsl").toString();case"hsv":case"hsb":return X.to("hsv").toString();case"hwb":return X.to("hwb").toString();case"luv":return X.to("luv").toString();case"lchuv":return X.to("lchuv").toString();case"jzazbz":return X.to("jzazbz").toString();case"jzczhz":return X.to("jzczhz").toString();case"ictcp":return X.to("ictcp").toString();default:return X.to(Y).toString()}}catch(q){return console.warn(`Unsupported colorspace '${Y}', falling back to hex. Error:`,q),X.to("srgb").toString({format:"hex"})}}async function R0(X,Z){return await kY(),cY(X,Z)}function x(X,Z){return cY(X,Z)}function jX(X,Z,Y,q){try{if(X=g(Z,q),Z.$type==="color"&&Z.original?.$value&&Z.original?.$value!==Z.$value){if(D(Z.original.$value))X=f(Z.original.$value,Y,q,Z);else X=S(Z);if(!j(q)&&Z.original?.$extensions?.mode?.[q])X=Z.original.$extensions.mode[q]}if(D(X))X=f(X,Y,q,Z);return x(X)}catch{return X=g(Z,q),x(X)}}function m(X){try{if(X)return new rX(X),!0;return!1}catch{return!1}}var xX=null;var AX=b(()=>{y()});function rY(X,Z){let Y=X.$extensions?.delimiter?.character||" ",q=g(X,Z)??{},$=X.$extensions?.sort??[],U=S(X)??{};if($.length>0)U=Object.keys(U).sort((W,K)=>{let z=$.indexOf(W),G=$.indexOf(K);return z-G}).reduce((W,K)=>{return W[K]=q[K],W},{});return Object.keys(U).reduce((W,K)=>{let z=S(q[K]);if(q[K]?.$type==="color"||q[K].$property==="color")z=x(z,q[K]);return[...Array.isArray(W)?W:[W],z]},[]).join(Y).trim()}function k(X,Z){let Y=($)=>{if($===void 0||$===null)return;if(typeof $==="object"&&"value"in $)return $.value;return $},q=X.match(/^\{(.+)\}$/);if(q){let $=q[1],U=Z.get($);if(U===void 0)return`/* Unknown token: ${$} */`;let W=Y(U);if(W===void 0)return`/* Unknown token: ${$} */`;if(typeof W==="object"&&W!==null){let K=[];for(let z in W){if(z.startsWith("$"))continue;let G=W[z],E=typeof G==="object"&&G?.value!==void 0?G.value:G;if(typeof E==="string"&&E.match(/^\{.+\}$/))K.push(k(E,Z));else K.push(String(E))}return K.join(" ")}if(typeof W==="string"&&W.match(/^\{.+\}$/))return k(W,Z);return String(W)}if(X.includes("{"))return X.replace(/\{([^}]+)\}/g,($,U)=>{let W=Z.get(U);if(W===void 0)return`/* Unknown token: ${U} */`;let K=Y(W);if(K===void 0)return`/* Unknown token: ${U} */`;if(typeof K==="object"&&K!==null)return`/* Cannot embed composite token: ${U} */`;if(typeof K==="string"&&K.match(/^\{.+\}$/))return k(K,Z);return String(K)});return X}function M0(X,Z,Y,q){return Object.keys(Z??{}).reduce((U,W)=>{let K=Z[W];if(typeof K==="string"||typeof K==="number")K={$value:K,$type:typeof K,value:K};if(K.$type=K.type||X?.original?.$value?.[W]?.type||K.$type||X.$type,!j(q)&&c(K,"mode",{isIncludedOriginalValue:!0}))K.$value=g(K,q);if(K?.$type==="composition"&&(typeof K.$value!=="string"||typeof K.$value!=="number"||D(K.$value))&&Object.keys(K).length>0){if(D(K.$value))return K.$value=f(K.$value,Y,q,K),{...U,[W]:{...K,$property:W,$type:K.$type,$value:YX(K,Y,q)}};return{...U,[W]:{...K,$property:W,$type:K.$type,$value:YX(K,Y,q)}}}if(K?.$value){let G=f(K.$value,Y,q,K);return{...U,[W]:{...K,$property:W,$type:K.$type,$value:G}}}return U},{})}function YX(X,Z,Y){let q=S(X,{isIncludedOriginalValue:!0});if(typeof q==="string"){if(D(q)){if(q=sX(q,Z,Y,X),!j(Y)&&c(q,"mode",{isIncludedOriginalValue:!0}))q.$value=g(q,Y)}let $=qX(q);if($&&($?.length??0)>1)q=ZX(q,$,Z,Y)}else if(Array.isArray(q))q=q.map(($)=>{if(typeof $==="string"&&D($))return f($,Z,Y,X);return $});if(!X.name)return q;return X.$value=M0(X,q,Z,Y),rY(X,Y)}var bX=b(()=>{y()});function S(X,Z){let{isIncludedOriginalValue:Y=!1,fallbackValue:q=null}=Z??{};if(Y)return X?.original?.$value??X?.$value??X.value??q;return X?.$value??X?.value??q}function g(X,Z){return Z&&(X?.$extensions?.mode?.[Z]||typeof X?.$extensions?.mode?.[Z]==="number")?X.$extensions.mode[Z]:S(X,{fallbackValue:X?.original?.$value??X?.$value??X?.value})??null}function c(X,Z,{isIncludedOriginalValue:Y=!1}={}){let q=!1;if(Y&&X?.original?.$extensions?.[Z])q=!0;if(X?.$extensions?.[Z])q=!0;return q}function iX(X,Z,Y){let q=S(X,{isIncludedOriginalValue:!0});if(!j(Y)&&c(X,"mode",{isIncludedOriginalValue:!0}))q=g(X,Y);if(D(q))return nX(q,Z,Y,X);return q}function ZX(X,Z,Y,q){let $=Z.reduce((U,W)=>{let K=aX(W,Y);if(!K)return U;let z=S(K,{isIncludedOriginalValue:!0});if(D(z))z=f(`{${W}}`,Y,q,K);return{...U,[W]:DX(K,z,Y,q)}},{});return X?.replace(/\{([^}]+)\}/g,(U,W)=>{return $[W]!==void 0?$[W]:U})??null}function sX(X,Z,Y,q){if(D(X))return f(X,Z,Y,q);return X}function aX(X,Z){return Z.allTokens.find((Y)=>Y.path.join(".")===X)??null}function f(X,Z,Y,q){let $=D(X),U=null,W=X??S(q),K=null;if($){if(U=aX($,Z),Y&&U&&U?.$extensions?.mode?.[Y]!==U.original?.$extensions?.mode?.[Y])W=U.original?.$extensions?.mode?.[Y],K=U.original?.$extensions?.alpha??K;else if(U?.$extensions?.mode?.[Y])W=U.$extensions.mode[Y],K=U.$extensions?.alpha??K;else if(U?.original?.$value)W=U?.original.$value??U?.$value,K=U?.original.$extensions?.alpha??K}if(W!==X&&D(W))W=f(W,Z,Y,q);if(W&&(K||q?.$extensions?.alpha||K===0||q?.original?.$extensions?.alpha===0))K=K??q?.$extensions?.alpha??null,W=zX(W,K);return W=x(W,U??q),W??X}function nX(X,Z,Y,q){let $=q?.original?.$extensions?.mode?.[Y]??q?.original?.$value,U=D($);if(Y&&U){let W=Z.allTokens.find((z)=>z.path.join(".")===U);if(!W)return X;let K=S(W);if(D(K))return nX(K,Z,Y,W);if(W?.$extensions?.mode?.[Y])K=W.$extensions.mode[Y];if(K&&W?.$extensions?.alpha)K=zX(W.$value,W.$extensions.alpha);return x(K,W)??X}else if($)return x($,q);return X}function D(X){if(typeof X!=="string")return null;let Z=/{[^}]+}/g,Y=X.match(Z);if(Y?.length!==1)return null;return Y[0].slice(1,-1)}function qX(X){if(typeof X!=="string")return null;return[...X.matchAll(/\{([^}]+)\}/g)].map(([,Y])=>Y)??null}function $X(X){return X}function EX(X){return X}var tX=b(()=>{y()});var JZ={};lX(JZ,{wrapThemeValue:()=>HY,wrapFormatCSSFile:()=>HZ,typographyFileName:()=>ZZ,tokensFileName:()=>XZ,removeDirectoryContents:()=>zY,readConfigFile:()=>WX,namespaceUUID:()=>UZ,iconsFileName:()=>qZ,getTokenfileName:()=>KZ,getRelativePath:()=>OZ,getRelativeCSSPath:()=>QZ,getRawTokensFileName:()=>AZ,getProjectPaths:()=>p,getProjectModes:()=>EY,getProjectMetaData:()=>V,getProjectFonts:()=>S0,getLazyTokensConfig:()=>oX,getLazyProjectPaths:()=>LY,getLazyProjectModes:()=>LX,getLazyProjectMetaData:()=>OX,getLazyProjectFonts:()=>P0,getLazyProjectData:()=>l,getLazyIcons:()=>TX,getJSDocHeader:()=>EZ,getIconDestinationFileName:()=>KX,getFiles:()=>VX,getFileHeader:()=>AY,getDistThemeFileDelimeter:()=>WZ,getDistConfigFile:()=>SX,getDestinationFileName:()=>GZ,getDefaultIconObjectPath:()=>$Z,getCSSDestinationFileName:()=>zZ,getBaseDirectory:()=>t,getBaseConfigFile:()=>_X,generatedFileHeader:()=>UX,filterTokensByType:()=>PX,createFileHeaderTitle:()=>HX,compileConfigFile:()=>GY,combineCSSFiles:()=>_Z,checkAndCreateDirectory:()=>n,breakpointFileName:()=>YZ});import{spawnSync as N0}from"child_process";import{existsSync as v,mkdirSync as F0,readFileSync as x0,unlinkSync as sY,writeFileSync as j0}from"fs";import{readdir as tY,rmdir as b0,unlink as D0}from"fs/promises";import{resolve as oY,join as N,basename as eY,normalize as iY,relative as aY,sep as eX,dirname as nY}from"path";async function $Z(){return`${(await QX()).$metaData?.tokenNamespace||"tokens"}.icons`}async function GY(X){let Y=N(X,"designid.config.ts");if(v(N(X,"designid.config.mjs")))sY(N(X,"designid.config.mjs"));let q=N(X,"designid.config.js");if(v(q))sY(q);if(v(Y)){let $=N0("bun",["build",Y,"--outfile ./designid.config.mjs","--minify","--target","node","--packages","external","--no-bundle"],{stdio:"inherit",cwd:X,shell:!0});if($.status!==0)console.error("Failed to compile designid.config.mjs with bun."),process.exit($.status??1);if($.status===0)return new Promise((U)=>U(!0))}}async function zY(X){try{if(v(X)){let Z=await tY(X,{withFileTypes:!0});for(let Y of Z){let q=N(X,Y.name);if(Y.isDirectory())await zY(q),await b0(q);else await D0(q)}}}catch(Z){console.error(`Error removing contents of ${X}:`,Z)}}async function VX(X){let Z=await tY(X,{withFileTypes:!0}),Y=await Promise.all(Z.map((q)=>{let $=oY(X,q.name);return q.isDirectory()?VX($):$}));return Array.prototype.concat(...Y)}async function UZ(X){let{dsNamespace:Z,tokenNamespace:Y}=await V();return`${(Z??Y).toUpperCase()}DesignSystem${X.charAt(0).toUpperCase()+X.slice(1)}Tokens`}function KZ(X,Z="d.ts",Y){if(!X)return`tokens.${Y}.config.${Z}`;return N(X,`tokens.${Y}.config.${Z}`)}function WZ(X,Z){return X.length>1?`.${Z}`:""}async function GZ(X="d.ts",Z){let{tokenNamespace:Y}=await V();if(Z)return`${Y}-design-system.${Z}.tokens.config.${X}`;return`${Y}-design-system.tokens.config.${X}`}async function KX(X="json"){let{tokenNamespace:Z}=await V();return`${Z}-design-system.tokens.svg${X==="d.ts"||X==="js"?".config":""}.${X}`}async function zZ(){let{tokenNamespace:X}=await V();return`${X}-design-system.tokens.css`}async function AZ(){let{tokenNamespace:X}=await V();return`${X}-design-system-raw.tokens.json`}async function AY(X){let{tokenNamespace:Z}=await V();return`${Z} | ${X}`}function EZ(X,Z){return`/** @type {import("./${X}").${Z}} */`}function HX(X){return`/* ${AY(X)} */`}function n(X){if(!v(X))F0(X,{recursive:!0})}async function WX(X,Z=!1){let Y=_X(),q;if(Y.endsWith(".json"))q=JSON.parse(x0(Y,"utf8").trim()??"{}");else if(Y.endsWith(".ts"))if(typeof globalThis.Bun<"u"){if(q=await import(Y),q.default)q=q.default}else{X=X??nY(Y)+"/";let U=SX(X);if(U&&(Z||!v(U)))await GY(X);if(q=await import(U),q.default)q=q.default}else{X=X??nY(Y)+"/";let $=SX(X);if($&&(Z||!v($)))await GY(X);if(q=await import($),q.default)q=q.default}return q}async function t(X=!1){let{baseDir:Z}=await p(),Y=process.cwd(),$=N(Y,Z),{buildDir:U,distDir:W}=await p();if(X)try{n(N($,U)),n(N($,W))}catch(K){console.error("Error creating directories:",K)}return $}function SX(X){return X?N(X,"designid.config.mjs"):N(process.cwd(),"designid.config.mjs")}function _X(){let X=process.argv.find((K)=>K.startsWith("--config=")),[,Z]=X?.split("=")??[];if(Z)return Z;let Y=process.cwd(),q=SX(Y),$=N(Y,"designid.config.ts"),U=v(q),W=v($);if(U)return q;else if(W)return $;throw console.error("Config file not found"),Error("Config file not found")}async function p(X=!1){let Z=_X(),q=(await WX(process.cwd(),X)).$paths;if(!q)throw console.error("Project paths not found"),Error("Project paths not found");return{configFile:Z,...q}}async function V(){let Z=(await WX(process.cwd())).$metaData;if(!Z)throw console.error("Project metaData not found"),Error("Project metaData not found");if(!Z.colorspace)Z.colorspace="hex";if(!Z.fontNamespace)Z.fontNamespace=`${Z.dsNamespace}.font`;if(!Z?.tokens?.css?.mediaQuery?.match)Z={...Z??{},tokens:{...Z.tokens??{},css:{...Z.tokens?.css??{},mediaQuery:{...Z.tokens?.css?.mediaQuery??{},match:"[data-theme]"}}}};if(Z?.tokens?.css?.mediaQuery&&typeof Z.tokens.css.mediaQuery.separateThemeFiles!=="boolean")Z.tokens.css.mediaQuery.separateThemeFiles=!1;if(!Z.dsNamespace)Z.dsNamespace=Z.tokenNamespace;let Y=await $Z();return{...Z,icons:Z.icons??{objectPath:Y},dsNamespace:Z.dsNamespace}}async function EY(){return(await WX(process.cwd())).$modes??{default:"light"}}async function QX(){if(!XY){let X=_X();XY=await WX(process.cwd()),LZ=X}return XY}async function LX(){if(!YY)YY=(await QX()).$modes??{default:"light"};return YY}async function OX(){if(!ZY){let Z=(await QX()).$metaData;if(!Z)throw console.error("Project metaData not found"),Error("Project metaData not found");if(!Z.dsNamespace)Z.dsNamespace=Z.tokenNamespace;let q=`${Z.tokenNamespace||"tokens"}.icons`;ZY={...Z,icons:Z.icons??{objectPath:q},dsNamespace:Z.dsNamespace}}return ZY}async function LY(X=!1){if(!qY){let Y=(await QX()).$paths;if(!Y)throw console.error("Project paths not found"),Error("Project paths not found");qY={configFile:LZ,...Y}}return qY}async function l(){if(!$Y){let{distDir:X,assets:Z,buildDir:Y}=await LY(!0),{fontNamespace:q,tokenNamespace:$,icons:U}=await OX(),W=await t(),K=process.cwd(),z=N(K,X,"css");$Y={distDir:X,assets:Z,fontNamespace:q,__dirname:W,workspaceRoot:K,distCSSPath:z,buildDir:Y,tokenNamespace:$,icons:U}}return $Y}async function TX(){if(!UY){let{icons:X}=await OX();UY=X}return UY}async function oX(){if(!KY){let{tokens:X}=await OX();KY=X}return KY}async function S0(){return(await WX(process.cwd())).$fonts??[]}async function P0(){if(!WY)WY=(await QX()).$fonts??[];return WY}async function HY(X){if(j(X))return":root";let Y=(await V())?.tokens?.css?.mediaQuery?.match??"[data-theme]";if(Y.startsWith("[")&&Y.endsWith("]"))return`${Y.replace("]",`="${X}"]`)}`;else if(Y.startsWith(".")||Y.startsWith("#"))return`${Y}${X}`;else return`${Y}${X}`}async function HZ(X,Z,Y,q,$,U={}){let W;if(j(Y))W=Z.allTokens;else W=X(Z,Y);let z=(await V())?.tokens?.css?.mediaQuery?.separateThemeFiles?"Theme: "+Y:U.headerTitle??"",G=`${HX(z)}
|
|
3
|
-
${
|
|
2
|
+
import{createRequire as M0}from"node:module";var J0=Object.create;var{getPrototypeOf:B0,defineProperty:rX,getOwnPropertyNames:I0}=Object;var w0=Object.prototype.hasOwnProperty;var R0=(X,Z,Y)=>{Y=X!=null?J0(B0(X)):{};let q=Z||!X||!X.__esModule?rX(Y,"default",{value:X,enumerable:!0}):Y;for(let $ of I0(X))if(!w0.call(q,$))rX(q,$,{get:()=>X[$],enumerable:!0});return q};var sX=(X,Z)=>{for(var Y in Z)rX(X,Y,{get:Z[Y],enumerable:!0,configurable:!0,set:(q)=>Z[Y]=()=>q})};var S=(X,Z)=>()=>(X&&(Z=X(X=0)),Z);var n=M0(import.meta.url);var sY={};sX(sY,{transformColorValueAsync:()=>j0,transformColorValue:()=>b,transformColorToken:()=>DX,setAlpha:()=>AX,isColor:()=>p,initializeColorspace:()=>x0});import iX from"colorjs.io";async function lY(){if(bX===null){let{colorspace:X}=await T();bX=X||"hex"}return bX}function F0(){return bX||"hex"}async function x0(){await lY()}function AX(X,Z){let Y=new iX(X);if(Z||Z===0)Y.alpha=Z/100;return b(Y)}function rY(X,Z){if(!X)return X;if(Z&&Z.type!=="color")return X;if(typeof X==="string")X=new iX(X);if(typeof X?.to!=="function")return X;let Y=F0();try{switch(Y){case"hex":return X.to("srgb").toString({format:"hex"});case"rgb":case"srgb":return X.to("srgb").toString();case"srgb-linear":return X.to("srgb-linear").toString();case"display-p3":case"p3":return X.to("p3").toString();case"a98rgb":case"a98-rgb":return X.to("a98rgb").toString();case"prophoto":case"prophoto-rgb":return X.to("prophoto").toString();case"rec2020":case"rec-2020":return X.to("rec2020").toString();case"xyz":case"xyz-d65":return X.to("xyz-d65").toString();case"xyz-d50":return X.to("xyz-d50").toString();case"lab":case"cielab":return X.to("lab").toString();case"lab-d65":return X.to("lab-d65").toString();case"oklab":return X.to("oklab").toString();case"lch":case"cielch":return X.to("lch").toString();case"oklch":return X.to("oklch").toString();case"hsl":return X.to("hsl").toString();case"hsv":case"hsb":return X.to("hsv").toString();case"hwb":return X.to("hwb").toString();case"luv":return X.to("luv").toString();case"lchuv":return X.to("lchuv").toString();case"jzazbz":return X.to("jzazbz").toString();case"jzczhz":return X.to("jzczhz").toString();case"ictcp":return X.to("ictcp").toString();default:return X.to(Y).toString()}}catch(q){return console.warn(`Unsupported colorspace '${Y}', falling back to hex. Error:`,q),X.to("srgb").toString({format:"hex"})}}async function j0(X,Z){return await lY(),rY(X,Z)}function b(X,Z){return rY(X,Z)}function DX(X,Z,Y,q){try{if(X=f(Z,q),Z.$type==="color"&&Z.original?.$value&&Z.original?.$value!==Z.$value){if(P(Z.original.$value))X=v(Z.original.$value,Y,q,Z);else X=C(Z);if(!D(q)&&Z.original?.$extensions?.mode?.[q])X=Z.original.$extensions.mode[q]}if(P(X))X=v(X,Y,q,Z);return b(X)}catch{return X=f(Z,q),b(X)}}function p(X){try{if(X)return new iX(X),!0;return!1}catch{return!1}}var bX=null;var EX=S(()=>{g()});function iY(X,Z){let Y=X.$extensions?.delimiter?.character||" ",q=f(X,Z)??{},$=X.$extensions?.sort??[],U=C(X)??{};if($.length>0)U=Object.keys(U).sort((W,K)=>{let z=$.indexOf(W),G=$.indexOf(K);return z-G}).reduce((W,K)=>{return W[K]=q[K],W},{});return Object.keys(U).reduce((W,K)=>{let z=C(q[K]);if(q[K]?.$type==="color"||q[K].$property==="color")z=b(z,q[K]);return[...Array.isArray(W)?W:[W],z]},[]).join(Y).trim()}function c(X,Z){let Y=($)=>{if($===void 0||$===null)return;if(typeof $==="object"&&"value"in $)return $.value;return $},q=X.match(/^\{(.+)\}$/);if(q){let $=q[1],U=Z.get($);if(U===void 0)return`/* Unknown token: ${$} */`;let W=Y(U);if(W===void 0)return`/* Unknown token: ${$} */`;if(typeof W==="object"&&W!==null){let K=[];for(let z in W){if(z.startsWith("$"))continue;let G=W[z],A=typeof G==="object"&&G?.value!==void 0?G.value:G;if(typeof A==="string"&&A.match(/^\{.+\}$/))K.push(c(A,Z));else K.push(String(A))}return K.join(" ")}if(typeof W==="string"&&W.match(/^\{.+\}$/))return c(W,Z);return String(W)}if(X.includes("{"))return X.replace(/\{([^}]+)\}/g,($,U)=>{let W=Z.get(U);if(W===void 0)return`/* Unknown token: ${U} */`;let K=Y(W);if(K===void 0)return`/* Unknown token: ${U} */`;if(typeof K==="object"&&K!==null)return`/* Cannot embed composite token: ${U} */`;if(typeof K==="string"&&K.match(/^\{.+\}$/))return c(K,Z);return String(K)});return X}function b0(X,Z,Y,q){return Object.keys(Z??{}).reduce((U,W)=>{let K=Z[W];if(typeof K==="string"||typeof K==="number")K={$value:K,$type:typeof K,value:K};if(K.$type=K.type||X?.original?.$value?.[W]?.type||K.$type||X.$type,!D(q)&&l(K,"mode",{isIncludedOriginalValue:!0}))K.$value=f(K,q);if(K?.$type==="composition"&&(typeof K.$value!=="string"||typeof K.$value!=="number"||P(K.$value))&&Object.keys(K).length>0){if(P(K.$value))return K.$value=v(K.$value,Y,q,K),{...U,[W]:{...K,$property:W,$type:K.$type,$value:ZX(K,Y,q)}};return{...U,[W]:{...K,$property:W,$type:K.$type,$value:ZX(K,Y,q)}}}if(K?.$value){let G=v(K.$value,Y,q,K);return{...U,[W]:{...K,$property:W,$type:K.$type,$value:G}}}return U},{})}function ZX(X,Z,Y){let q=C(X,{isIncludedOriginalValue:!0});if(typeof q==="string"){if(P(q)){if(q=aX(q,Z,Y,X),!D(Y)&&l(q,"mode",{isIncludedOriginalValue:!0}))q.$value=f(q,Y)}let $=$X(q);if($&&($?.length??0)>1)q=qX(q,$,Z,Y)}else if(Array.isArray(q))q=q.map(($)=>{if(typeof $==="string"&&P($))return v($,Z,Y,X);return $});if(!X.name)return q;return X.$value=b0(X,q,Z,Y),iY(X,Y)}var SX=S(()=>{g()});function C(X,Z){let{isIncludedOriginalValue:Y=!1,fallbackValue:q=null}=Z??{};if(Y)return X?.original?.$value??X?.$value??X.value??q;return X?.$value??X?.value??q}function f(X,Z){return Z&&(X?.$extensions?.mode?.[Z]||typeof X?.$extensions?.mode?.[Z]==="number")?X.$extensions.mode[Z]:C(X,{fallbackValue:X?.original?.$value??X?.$value??X?.value})??null}function l(X,Z,{isIncludedOriginalValue:Y=!1}={}){let q=!1;if(Y&&X?.original?.$extensions?.[Z])q=!0;if(X?.$extensions?.[Z])q=!0;return q}function nX(X,Z,Y){let q=C(X,{isIncludedOriginalValue:!0});if(!D(Y)&&l(X,"mode",{isIncludedOriginalValue:!0}))q=f(X,Y);if(P(q))return oX(q,Z,Y,X);return q}function qX(X,Z,Y,q){let $=Z.reduce((U,W)=>{let K=tX(W,Y);if(!K)return U;let z=C(K,{isIncludedOriginalValue:!0});if(P(z))z=v(`{${W}}`,Y,q,K);return{...U,[W]:PX(K,z,Y,q)}},{});return X?.replace(/\{([^}]+)\}/g,(U,W)=>{return $[W]!==void 0?$[W]:U})??null}function aX(X,Z,Y,q){if(P(X))return v(X,Z,Y,q);return X}function tX(X,Z){return Z.allTokens.find((Y)=>Y.path.join(".")===X)??null}function v(X,Z,Y,q){let $=P(X),U=null,W=X??C(q),K=null;if($){if(U=tX($,Z),Y&&U&&U?.$extensions?.mode?.[Y]!==U.original?.$extensions?.mode?.[Y])W=U.original?.$extensions?.mode?.[Y],K=U.original?.$extensions?.alpha??K;else if(U?.$extensions?.mode?.[Y])W=U.$extensions.mode[Y],K=U.$extensions?.alpha??K;else if(U?.original?.$value)W=U?.original.$value??U?.$value,K=U?.original.$extensions?.alpha??K}if(W!==X&&P(W))W=v(W,Z,Y,q);if(W&&(K||q?.$extensions?.alpha||K===0||q?.original?.$extensions?.alpha===0))K=K??q?.$extensions?.alpha??null,W=AX(W,K);return W=b(W,U??q),W??X}function oX(X,Z,Y,q){let $=q?.original?.$extensions?.mode?.[Y]??q?.original?.$value,U=P($);if(Y&&U){let W=Z.allTokens.find((z)=>z.path.join(".")===U);if(!W)return X;let K=C(W);if(P(K))return oX(K,Z,Y,W);if(W?.$extensions?.mode?.[Y])K=W.$extensions.mode[Y];if(K&&W?.$extensions?.alpha)K=AX(W.$value,W.$extensions.alpha);return b(K,W)??X}else if($)return b($,q);return X}function P(X){if(typeof X!=="string")return null;let Z=/{[^}]+}/g,Y=X.match(Z);if(Y?.length!==1)return null;return Y[0].slice(1,-1)}function $X(X){if(typeof X!=="string")return null;return[...X.matchAll(/\{([^}]+)\}/g)].map(([,Y])=>Y)??null}function UX(X){return X}function LX(X){return X}var eX=S(()=>{g()});var IZ={};sX(IZ,{wrapThemeValue:()=>QY,wrapFormatCSSFile:()=>QZ,typographyFileName:()=>$Z,tokensFileName:()=>ZZ,removeDirectoryContents:()=>EY,readConfigFile:()=>GX,namespaceUUID:()=>WZ,iconsFileName:()=>UZ,getTokenfileName:()=>GZ,getRelativePath:()=>BZ,getRelativeCSSPath:()=>JZ,getRawTokensFileName:()=>LZ,getProjectPaths:()=>d,getProjectModes:()=>HY,getProjectMetaData:()=>T,getProjectFonts:()=>y0,getLazyTokensConfig:()=>XY,getLazyProjectPaths:()=>_Y,getLazyProjectModes:()=>HX,getLazyProjectMetaData:()=>JX,getLazyProjectFonts:()=>g0,getLazyProjectData:()=>r,getLazyIcons:()=>gX,getJSDocHeader:()=>HZ,getIconDestinationFileName:()=>WX,getFiles:()=>yX,getFileHeader:()=>LY,getDistThemeFileDelimeter:()=>zZ,getDistConfigFile:()=>CX,getDestinationFileName:()=>AZ,getDefaultIconObjectPath:()=>KZ,getCSSDestinationFileName:()=>EZ,getBaseDirectory:()=>o,getBaseConfigFile:()=>QX,generatedFileHeader:()=>KX,filterTokensByType:()=>VX,createFileHeaderTitle:()=>_X,compileConfigFile:()=>AY,combineCSSFiles:()=>OZ,checkAndCreateDirectory:()=>t,breakpointFileName:()=>qZ});import{spawnSync as D0}from"child_process";import{existsSync as h,mkdirSync as S0,readFileSync as P0,unlinkSync as aY,writeFileSync as C0}from"fs";import{readdir as eY,rmdir as V0,unlink as T0}from"fs/promises";import{resolve as XZ,join as x,basename as YZ,normalize as nY,relative as tY,sep as YY,dirname as oY}from"path";async function KZ(){return`${(await OX()).$metaData?.tokenNamespace||"tokens"}.icons`}async function AY(X){let Y=x(X,"designid.config.ts");if(h(x(X,"designid.config.mjs")))aY(x(X,"designid.config.mjs"));let q=x(X,"designid.config.js");if(h(q))aY(q);if(h(Y)){let $=D0("bun",["build",Y,"--outfile ./designid.config.mjs","--minify","--target","node","--packages","external","--no-bundle"],{stdio:"inherit",cwd:X,shell:!0});if($.status!==0)console.error("Failed to compile designid.config.mjs with bun."),process.exit($.status??1);if($.status===0)return new Promise((U)=>U(!0))}}async function EY(X){try{if(h(X)){let Z=await eY(X,{withFileTypes:!0});for(let Y of Z){let q=x(X,Y.name);if(Y.isDirectory())await EY(q),await V0(q);else await T0(q)}}}catch(Z){console.error(`Error removing contents of ${X}:`,Z)}}async function yX(X){let Z=await eY(X,{withFileTypes:!0}),Y=await Promise.all(Z.map((q)=>{let $=XZ(X,q.name);return q.isDirectory()?yX($):$}));return Array.prototype.concat(...Y)}async function WZ(X){let{dsNamespace:Z,tokenNamespace:Y}=await T();return`${(Z??Y).toUpperCase()}DesignSystem${X.charAt(0).toUpperCase()+X.slice(1)}Tokens`}function GZ(X,Z="d.ts",Y){if(!X)return`tokens.${Y}.config.${Z}`;return x(X,`tokens.${Y}.config.${Z}`)}function zZ(X,Z){return X.length>1?`.${Z}`:""}async function AZ(X="d.ts",Z){let{tokenNamespace:Y}=await T();if(Z)return`${Y}-design-system.${Z}.tokens.config.${X}`;return`${Y}-design-system.tokens.config.${X}`}async function WX(X="json"){let{tokenNamespace:Z}=await T();return`${Z}-design-system.tokens.svg${X==="d.ts"||X==="js"?".config":""}.${X}`}async function EZ(){let{tokenNamespace:X}=await T();return`${X}-design-system.tokens.css`}async function LZ(){let{tokenNamespace:X}=await T();return`${X}-design-system-raw.tokens.json`}async function LY(X){let{tokenNamespace:Z}=await T();return`${Z} | ${X}`}function HZ(X,Z){return`/** @type {import("./${X}").${Z}} */`}function _X(X){return`/* ${LY(X)} */`}function t(X){if(!h(X))S0(X,{recursive:!0})}async function GX(X,Z=!1){let Y=QX(),q;if(Y.endsWith(".json"))q=JSON.parse(P0(Y,"utf8").trim()??"{}");else if(Y.endsWith(".ts"))if(typeof globalThis.Bun<"u"){if(q=await import(Y),q.default)q=q.default}else{X=X??oY(Y)+"/";let U=CX(X);if(U&&(Z||!h(U)))await AY(X);if(q=await import(U),q.default)q=q.default}else{X=X??oY(Y)+"/";let $=CX(X);if($&&(Z||!h($)))await AY(X);if(q=await import($),q.default)q=q.default}return q}async function o(X=!1){let{baseDir:Z}=await d(),Y=process.cwd(),$=x(Y,Z),{buildDir:U,distDir:W}=await d();if(X)try{t(x($,U)),t(x($,W))}catch(K){console.error("Error creating directories:",K)}return $}function CX(X){return X?x(X,"designid.config.mjs"):x(process.cwd(),"designid.config.mjs")}function QX(){let X=process.argv.find((K)=>K.startsWith("--config=")),[,Z]=X?.split("=")??[];if(Z)return Z;let Y=process.cwd(),q=CX(Y),$=x(Y,"designid.config.ts"),U=h(q),W=h($);if(U)return q;else if(W)return $;throw console.error("Config file not found"),Error("Config file not found")}async function d(X=!1){let Z=QX(),q=(await GX(process.cwd(),X)).$paths;if(!q)throw console.error("Project paths not found"),Error("Project paths not found");return{configFile:Z,...q}}async function T(){let Z=(await GX(process.cwd())).$metaData;if(!Z)throw console.error("Project metaData not found"),Error("Project metaData not found");if(!Z.colorspace)Z.colorspace="hex";if(!Z.fontNamespace)Z.fontNamespace=`${Z.dsNamespace}.font`;if(!Z?.tokens?.css?.mediaQuery?.match)Z={...Z??{},tokens:{...Z.tokens??{},css:{...Z.tokens?.css??{},mediaQuery:{...Z.tokens?.css?.mediaQuery??{},match:"[data-theme]"}}}};if(Z?.tokens?.css?.mediaQuery&&typeof Z.tokens.css.mediaQuery.separateThemeFiles!=="boolean")Z.tokens.css.mediaQuery.separateThemeFiles=!1;if(!Z.dsNamespace)Z.dsNamespace=Z.tokenNamespace;let Y=await KZ();return{...Z,icons:Z.icons??{objectPath:Y},dsNamespace:Z.dsNamespace}}async function HY(){return(await GX(process.cwd())).$modes??{default:"light"}}async function OX(){if(!ZY){let X=QX();ZY=await GX(process.cwd()),_Z=X}return ZY}async function HX(){if(!qY)qY=(await OX()).$modes??{default:"light"};return qY}async function JX(){if(!$Y){let Z=(await OX()).$metaData;if(!Z)throw console.error("Project metaData not found"),Error("Project metaData not found");if(!Z.dsNamespace)Z.dsNamespace=Z.tokenNamespace;let q=`${Z.tokenNamespace||"tokens"}.icons`;$Y={...Z,icons:Z.icons??{objectPath:q},dsNamespace:Z.dsNamespace}}return $Y}async function _Y(X=!1){if(!UY){let Y=(await OX()).$paths;if(!Y)throw console.error("Project paths not found"),Error("Project paths not found");UY={configFile:_Z,...Y}}return UY}async function r(){if(!KY){let{distDir:X,assets:Z,buildDir:Y}=await _Y(!0),{fontNamespace:q,tokenNamespace:$,icons:U}=await JX(),W=await o(),K=process.cwd(),z=x(K,X,"css");KY={distDir:X,assets:Z,fontNamespace:q,__dirname:W,workspaceRoot:K,distCSSPath:z,buildDir:Y,tokenNamespace:$,icons:U}}return KY}async function gX(){if(!WY){let{icons:X}=await JX();WY=X}return WY}async function XY(){if(!GY){let{tokens:X}=await JX();GY=X}return GY}async function y0(){return(await GX(process.cwd())).$fonts??[]}async function g0(){if(!zY)zY=(await OX()).$fonts??[];return zY}async function QY(X){if(D(X))return":root";let Y=(await T())?.tokens?.css?.mediaQuery?.match??"[data-theme]";if(Y.startsWith("[")&&Y.endsWith("]"))return`${Y.replace("]",`="${X}"]`)}`;else if(Y.startsWith(".")||Y.startsWith("#"))return`${Y}${X}`;else return`${Y}${X}`}async function QZ(X,Z,Y,q,$,U={}){let W;if(D(Y))W=Z.allTokens;else W=X(Z,Y);let z=(await T())?.tokens?.css?.mediaQuery?.separateThemeFiles?"Theme: "+Y:U.headerTitle??"",G=`${_X(z)}
|
|
3
|
+
${KX}`,A=D(Y)?`:root {
|
|
4
4
|
`:`@media (123prefers-color-scheme: ${Y}) {
|
|
5
5
|
:root {
|
|
6
|
-
`,
|
|
6
|
+
`,E=`${G}
|
|
7
7
|
|
|
8
|
-
${
|
|
8
|
+
${A}`;if(W.forEach((L)=>{if(VX(L,U,$))return;let H=TX(L,Z,Y);if(U.transformValue)H=U.transformValue(H);H=LX(H),E+=`${!D(Y)?" ":" "}--${UX(L.name)}: ${H};
|
|
9
9
|
`}),Array.isArray(q)&&q.length>1){let L=`
|
|
10
|
-
`;for(let H of q){if(Y===H)continue;let _=await
|
|
11
|
-
`,X(Z,H).forEach((J)=>{if(
|
|
12
|
-
`}),L+=`${!
|
|
10
|
+
`;for(let H of q){if(Y===H)continue;let _=await QY(H);L+=`${!D(Y)?" ":" "}&${_} {
|
|
11
|
+
`,X(Z,H).forEach((J)=>{if(VX(J,U,$))return;let O=TX(J,Z,H);if(U.transformValue)O=U.transformValue(O);O=LX(O),L+=`${!D(Y)?" ":" "}--${UX(J.name)}: ${O};
|
|
12
|
+
`}),L+=`${!D(Y)?" ":" "}}
|
|
13
13
|
|
|
14
|
-
`}
|
|
14
|
+
`}E+=L}return E+=!D(Y)?` }
|
|
15
15
|
`:`}
|
|
16
|
-
`,
|
|
17
|
-
`:"",
|
|
16
|
+
`,E+=!D(Y)?`}
|
|
17
|
+
`:"",E}function VX(X,Z,Y){let{namespace:q}=Z.filter??{};if(!X.$type)return!0;if(q?.length&&X.path){let $=X.path.join("."),U=q.some((K)=>$.startsWith(K)),W=Z.filter?.isInclusion!==void 0&&Z.filter.isInclusion;return U&&!W||!U&&W}if(Z.filter?.isInclusion!==void 0&&Z.filter.isInclusion===!1){if(X.$type&&!Y.includes(X.$type))return!0}else if(!X.$type||Y.includes(X.$type))return!0;return!1}async function OZ(){let X=await HY(),{baseDir:Z,distDir:Y}=await d(),q=await yX(x(Z,Y,"css")),$=x(Z,Y,await EZ()),U=KX+`
|
|
18
18
|
|
|
19
|
-
`,W=[{name:
|
|
20
|
-
`}}),!
|
|
19
|
+
`,W=[{name:UZ,order:100},{name:ZZ,order:200},{name:$Z,order:300},{name:qZ,order:400}];if(q=q.sort((K,z)=>{let G=(A)=>{let E=YZ(A,".css"),L=W.find((H)=>E.includes(H.name));for(let H in X)if(E.includes(H)){let _=X[H]===X.default?1:2;return L?L.order+_:0}return L?L.order:0};return G(K)-G(z)}),q.forEach((K)=>{if(K.endsWith(".css")){let G=`@import url("${JZ(K,Z,Y)}");`;U+=G+`
|
|
20
|
+
`}}),!h(x(Z,Y)))t(x(Z,Y));C0($,U)}function JZ(X,Z,Y){let q=XZ(Z,Y);return X.startsWith(q)?X.slice(q.length+1):X}function BZ(X,Z,Y,q){let $=nY(X),U=YZ(nY(Z)),W=$.split(YY),K=W.lastIndexOf(U);if(U===".")return tY(Y,q).split(YY).join("/");else if(K===-1)throw Error(`Base directory '${U}' not found in '${$}'`);let z=x(...W.slice(0,K+1)),G=x(z,Y),A=x(z,q);return tY(G,A).split(YY).join("/")}var ZZ="tokens",qZ="breakpoints",$Z="typography",UZ="icons",KX=`/*
|
|
21
21
|
* This file is automatically generated.
|
|
22
22
|
* DO NOT EDIT THIS FILE DIRECTLY.
|
|
23
23
|
* Changes will be overwritten. Please update the source design tokens instead.
|
|
24
|
-
*/`,
|
|
25
|
-
`,Q.linkHref){let O=await(await fetch(Q.linkHref)).text();
|
|
26
|
-
`}else if(Q?.src&&W){let J=Q.directory??Q.family.toLowerCase().replace(/\s+/g,"-"),O=
|
|
24
|
+
*/`,ZY=null,_Z=null,qY=null,$Y=null,UY=null,KY=null,WY=null,GY=null,zY=null;var BX=S(()=>{g()});function D(X){return X===OY}var OY="light";var wZ=S(()=>{BX()});async function JY(X){let Z=await gX();X=X.replace(/<\?xml[^>]*\?>\s*/,""),X=X.replace(/<!DOCTYPE [^>]*>\s*/,"");let Y=X.match(/<svg[^>]*>/),q=X.match(/viewBox="([\d\s.]+)"/),[$]=Y??[],U=$;if($&&U){let K=Z?.style?.fill||Z?.style?.stroke?.color,z=/id="[^"]*"/.test($);if(!U.includes("xmlns="))U=U.replace("<svg",'<svg xmlns="http://www.w3.org/2000/svg"');if(!z&&K)U=U.replace("<svg",`<svg id="${K}"`);else if(z&&K)U=U.replace(/id="[^"]*"/,`id="${K}"`)}if(q&&$&&U){let K=q[1].split(" ").map(Number),z=K[2],G=K[3],A=Z?.size??24,E=z/G*A;X=X.replace(/height="[\d.]+px?"/,`height="${A}px"`),X=X.replace(/width="[\d.]+px?"/,`width="${E}px"`);let L=/width="[\d.]+(px)?"/.test($),H=/height="[\d.]+(px)?"/.test($);if(!L)U=U.replace("<svg",`<svg width="${E}px"`);else U=U.replace(/width="[\d.]+(px)?"/,`width="${E}px"`);if(!H)U=U.replace("<svg",`<svg height="${A}px"`);else U=U.replace(/height="[\d.]+(px)?"/,`height="${A}px"`);X=X.replace($,U)}if(!X?.match(/data-style="([^"]*)"/)&&Z?.style?.type)X=X.replace("<svg ",`<svg data-style="${Z.style.type}" `);if(Z?.style?.type)X=f0(X,Z.style);return X}function f0(X,Z){switch(Z.type){case"mono":if(X=X.replace(/stroke="[^"]*"/g,""),X=X.replace(/stroke-width="[^"]*"/g,""),X=X.replace(/stroke-linecap="[^"]*"/g,""),X=X.replace(/stroke-linejoin="[^"]*"/g,""),X=X.replace(/fill="none"/g,'fill="currentColor"'),Z.fill&&!X.includes("fill="))X=X.replace("<svg",'<svg fill="currentColor"');else if(Z.fill)X=X.replace(/fill="(?!currentColor)[^"]*"/g,'fill="currentColor"');break;case"stroke":if(Z.stroke){let{color:q,width:$,linecap:U,linejoin:W}=Z.stroke;if(q){if(X=X.replace(/stroke="[^"]*"/g,'stroke="currentColor"'),!X.includes("stroke="))X=X.replace("<svg",'<svg stroke="currentColor"')}if($!==void 0){let K=typeof $==="number"?`${$}`:$;if(X=X.replace(/stroke-width="[^"]*"/g,`stroke-width="${K}"`),!X.includes("stroke-width="))X=X.replace("<svg",`<svg stroke-width="${K}"`)}if(U){if(X=X.replace(/stroke-linecap="[^"]*"/g,`stroke-linecap="${U}"`),!X.includes("stroke-linecap="))X=X.replace("<svg",`<svg stroke-linecap="${U}"`)}if(W){if(X=X.replace(/stroke-linejoin="[^"]*"/g,`stroke-linejoin="${W}"`),!X.includes("stroke-linejoin="))X=X.replace("<svg",`<svg stroke-linejoin="${W}"`)}if(!X.includes("fill="))X=X.replace("<svg",'<svg fill="none"')}break;case"fill":if(X=X.replace(/stroke="[^"]*"/g,""),X=X.replace(/stroke-width="[^"]*"/g,""),Z.fill){if(X=X.replace(/fill="[^"]*"/g,'fill="currentColor"'),!X.includes("fill="))X=X.replace("<svg",'<svg fill="currentColor"')}break;case"animated":case"custom":break;default:break}return X}var RZ=S(()=>{g()});var MZ=S(()=>{BX();g()});import{copyFileSync as m0,existsSync as p0,mkdirSync as NZ,statSync as d0}from"fs";import{writeFile as u0}from"fs/promises";import{join as y,relative as k0}from"path";async function BY(X,Z){try{let{assets:Y,workspaceRoot:q,distDir:$,__dirname:U}=await r(),W=Y?.fonts?.sourceDir?y(U,Y.fonts.sourceDir):null,K=y("assets","fonts"),z=y(q,$),G=Y?.fonts?.distDir?y(z,Y.fonts.distDir.replace(/^\.\//,"")):y(z,K);if(!X||!W)return;let A="",E=Z&&Y?.fonts?.distDir?y(Z,Y.fonts.distDir.replace(/^\.\//,"")):G;for(let Q of X){if(!Q)continue;if(A+=`/**** ${Q.family} ${Q.style} ****/
|
|
25
|
+
`,Q.linkHref){let O=await(await fetch(Q.linkHref)).text();A+=`${O.replace(/\s+/g," ").replace(/:\s+/g,":")}
|
|
26
|
+
`}else if(Q?.src&&W){let J=Q.directory??Q.family.toLowerCase().replace(/\s+/g,"-"),O=y(W,J,Q.src);try{if(!p0(O)||!d0(O).isFile()){console.warn(`Font file not found: ${O}`);continue}}catch{console.warn(`Error accessing font file: ${O}`);continue}try{NZ(y(E,J),{recursive:!0}),m0(y(W,J,Q.src),y(E,J,Q.src))}catch(R){console.warn(`Error copying font file ${Q.src}:`,R instanceof Error?R.message:R);continue}let B;if(Y?.fonts?.cssImportPath)B=y(Y.fonts.cssImportPath,J,Q.src).replace(/\\/g,"/");else{let{distCSSPath:R}=await r(),I=Z?y(Z,"css"):R,w=k0(I,E);B=y(w,J,Q.src).replace(/\\/g,"/")}A+=`@font-face {
|
|
27
27
|
font-family: "${Q.family}";
|
|
28
28
|
font-style: ${Q.faceStyle};
|
|
29
29
|
font-weight: ${Q.weight};
|
|
30
|
-
src: url("${
|
|
30
|
+
src: url("${B}") format("${Q.format}");
|
|
31
31
|
}
|
|
32
|
-
`}}let{distCSSPath:L}=await
|
|
33
|
-
${G.map((
|
|
34
|
-
`)}`;throw Error(E)}return K}function VZ(X,Z,Y){let q=[];if(Z.generateModes&&X.extensions?.mode){for(let[$,U]of Object.entries(X.extensions.mode))if(U!==void 0)q.push({...X,name:`${X.name}#${$}`,value:U,path:[...X.path,`#${$}`]})}if(Z.generateModes&&!X.extensions?.mode&&(Array.isArray(X.value)||typeof X.value==="object"&&X.value!==null)){let $=!1,U=!1,W=(K)=>{if(typeof K!=="object"||K===null)return!1;if(K.$extensions?.mode)return!0;return Object.values(K).some((z)=>{if(typeof z==="object"&&z!==null)return W(z);return!1})};if(Array.isArray(X.value))$=X.value.some((K)=>typeof K==="string"&&K.includes("{")||typeof K==="object"&&K!==null&&Object.values(K).some((z)=>typeof z==="string"&&z.includes("{"))),U=X.value.some((K)=>W(K));else $=Object.values(X.value).some((K)=>typeof K==="string"&&K.includes("{")),U=W(X.value);if($||U){if(["color","shadow","border","background","surface","composition"].includes(X.type)){let G;if(Array.isArray(X.value))G=X.value.map((E)=>{if(typeof E==="string"&&E.startsWith("{")&&E.endsWith("}")){let A=E.slice(1,-1);if(!A.includes("#dark")&&!A.includes("@dark"))return`{${A}#dark}`;return E}else if(typeof E==="object"&&E!==null){let A={};for(let[L,H]of Object.entries(E))if(typeof H==="string"&&H.startsWith("{")&&H.endsWith("}")){let _=H.slice(1,-1),Q=`${_}#dark`,J=Y?.get(_),O=Y?.has(Q)||J?.extensions?.mode?.dark!==void 0||J&&(Array.isArray(J.value)||typeof J.value==="object"&&J.value!==null);if(!_.includes("#dark")&&!_.includes("@dark")&&O)A[L]=`{${Q}}`;else A[L]=H}else A[L]=H;return A}return E});else if(typeof X.value==="object"&&X.value!==null){G={};let E=(A)=>{if(typeof A==="string"){if(A.startsWith("{")&&A.endsWith("}")){let L=A.slice(1,-1),H=`${L}#dark`,_=(J,O=new Set)=>{if(O.has(J))return!1;O.add(J);let w=Y?.get(J);if(!w){let R=J.match(/^(.+)@([^@]+)$/);if(R){let[,B,I]=R,C=Y?.get(B);if(C){if(C.extensions?.mode?.dark!==void 0)return!0;if(C.extensions?.generators)return!0;return _(B,O)}}return!1}if(w.extensions?.mode?.dark!==void 0)return!0;if(Y?.has(`${J}#dark`))return!0;if(typeof w.value==="string"&&w.value.startsWith("{")&&w.value.endsWith("}")){let R=w.value.slice(1,-1);return _(R,O)}if(Array.isArray(w.value)||typeof w.value==="object"&&w.value!==null){let R=(B)=>{if(typeof B!=="object"||B===null)return!1;if(B.$extensions?.mode)return!0;return Object.values(B).some((I)=>{if(typeof I==="object"&&I!==null)return R(I);return!1})};if(Array.isArray(w.value))return w.value.some((B)=>typeof B==="string"&&B.includes("{")&&_(B.slice(1,-1),new Set(O))||typeof B==="object"&&B!==null&&(Object.values(B).some((I)=>typeof I==="string"&&I.includes("{")&&_(I.slice(1,-1),new Set(O)))||R(B)));else if(typeof w.value==="object")return Object.values(w.value).some((B)=>typeof B==="string"&&B.includes("{")&&_(B.slice(1,-1),new Set(O)))||R(w.value)}return!1},Q=_(L);if(!L.includes("#dark")&&!L.includes("@dark")&&Q)return`{${H}}`}return A}if(typeof A==="object"&&A!==null){if(A.$extensions?.mode?.dark)return A.$extensions.mode.dark;let L={};for(let[H,_]of Object.entries(A))L[H]=E(_);return L}return A};for(let[A,L]of Object.entries(X.value))G[A]=E(L)}q.push({...X,name:`${X.name}#dark`,value:G,path:[...X.path,"#dark"],extensions:{...X.extensions,autoGenerated:!0}})}}}if(Z.generateModes&&!X.extensions?.mode&&typeof X.value==="string"&&X.value.startsWith("{")&&X.value.endsWith("}")){let $=X.value.slice(1,-1),U=(E,A=new Set)=>{if(A.has(E))return!1;A.add(E);let L=Y?.get(E);if(!L){let H=E.match(/^(.+)@([^@]+)$/);if(H){let[,_,Q]=H,J=Y?.get(_);if(J){if(J.extensions?.mode?.dark!==void 0)return!0;if(J.extensions?.generators)return!0;return U(_,A)}}return!1}if(L.extensions?.mode?.dark!==void 0)return!0;if(Y?.has(`${E}#dark`))return!0;if(typeof L.value==="string"&&L.value.startsWith("{")&&L.value.endsWith("}")){let H=L.value.slice(1,-1);return U(H,A)}if(Array.isArray(L.value)||typeof L.value==="object"&&L.value!==null){let H=(_)=>{if(typeof _!=="object"||_===null)return!1;if(_.$extensions?.mode)return!0;return Object.values(_).some((Q)=>{if(typeof Q==="object"&&Q!==null)return H(Q);return!1})};if(Array.isArray(L.value))return L.value.some((_)=>typeof _==="string"&&_.includes("{")&&U(_.slice(1,-1),new Set(A))||typeof _==="object"&&_!==null&&(Object.values(_).some((Q)=>typeof Q==="string"&&Q.includes("{")&&U(Q.slice(1,-1),new Set(A)))||H(_)));else if(typeof L.value==="object")return Object.values(L.value).some((_)=>typeof _==="string"&&_.includes("{")&&U(_.slice(1,-1),new Set(A)))||H(L.value)}return!1},W=U($);if(["color","shadow","border","background","surface","composition"].includes(X.type)&&W&&W&&!$.includes("#dark")&&!$.includes("@dark")){let E=`{${$}#dark}`;q.push({...X,name:`${X.name}#dark`,value:E,path:[...X.path,"#dark"],extensions:{...X.extensions,autoGenerated:!0}})}}if(Z.generateDerivedTokens&&X.extensions?.generators)for(let $ of X.extensions.generators)for(let[U,W]of Object.entries($.value)){let K=xZ(X.name,U),{generators:z,...G}=X.extensions;q.push({...X,name:K,value:X.value,path:[...X.path,U],extensions:{...G,generator:{type:$.type,value:W}}})}if(Z.generateBreakpointTokens&&X.extensions?.breakpoints)for(let[$,U]of Object.entries(X.extensions.breakpoints)){let W=`${X.name}@${$.replace(/[^a-zA-Z0-9]/g,"_")}`,K=U.$value||U.value;if(K&&typeof K==="object"&&"$value"in K)K=K.$value;else if(!K&&typeof U==="object"){let{...E}=U;if(Object.keys(E).length>0)K=E}let z=U.$extensions||U.$extensions,G=U.$type;if(!G&&U.value&&typeof U.value==="object")G=U.value.$type;q.push({...X,name:W,value:K,path:[...X.path,`@${$}`],type:G||X.type,extensions:{mediaQuery:$,...z?{mode:z.mode||z.$mode,generators:z.generators||z.$generators,...Object.fromEntries(Object.entries(z).filter(([E])=>!["mode","$mode","generators","$generators"].includes(E)))}:{}}})}return q}function i0(X,Z){let Y=o(X.value,Z),q=X.type;if(typeof X.value==="string"&&BX(X.value)){let U=X.value.slice(1,-1),W=Z.tokens.get(U);if(W){if(["border","shadow","typography","composition"].includes(W.type))q=W.type;else if(typeof W.value==="string"&&IX(W.value)){let K=yX(W.value),z=new Set;for(let G of K)if(G.type==="reference"&&G.ref&&typeof G.ref==="string"){let E=G.ref.slice(1,-1),A=Z.tokens.get(E);if(A&&["border","shadow","typography","composition"].includes(A.type))z.add(A.type)}if(z.size===1)q=Array.from(z)[0]}}}if(typeof X.value==="string"&&IX(X.value)){let U=yX(X.value),W=new Set;for(let K of U)if(K.type==="reference"&&K.ref&&typeof K.ref==="string"){let z=K.ref.slice(1,-1),G=Z.tokens.get(z);if(G&&["border","shadow","typography","composition"].includes(G.type))W.add(G.type)}if(W.size===1)q=Array.from(W)[0]}if(typeof Y==="object"&&Y!==null&&["border","shadow","typography","composition"].includes(q))Y=r(Y,Z);if(X.extensions?.generator&&typeof X.extensions.generator==="object"&&"type"in X.extensions.generator&&"value"in X.extensions.generator)Y=gX(X.value,X.extensions.generator.type,X.extensions.generator.value,Z);let $=a0(X.name,Z.options);if(q==="color"&&typeof Y==="string"&&m(Y))Y=x(Y,X);if(typeof Y==="string"&&d(Y))Y=wX(Y);return{...X,type:q,value:Y,cssVar:$}}function r(X,Z){if(typeof X==="string"){if(BX(X))return MY(X,Z);else if(IX(X))return fZ(X,Z)}if(Array.isArray(X))return X.map((Y)=>r(Y,Z));if(typeof X==="object"&&X!==null){if("$value"in X&&typeof X.$value==="string")return r(X.$value,Z);if("value"in X&&typeof X.value==="string"&&"$type"in X){if(Z.mode&&X.$extensions?.mode?.[Z.mode])return r(X.$extensions.mode[Z.mode],Z);return r(X.value,Z)}if("value"in X&&typeof X.value==="object"&&"$type"in X){let q=X.value,$=X.$extensions?.delimiter?.character||" ";if(X.$type==="composition"&&q&&typeof q==="object")return Object.values(q).map((W)=>r(W,Z)).join($);return r(X.value,Z)}let Y={};for(let[q,$]of Object.entries(X))Y[q]=r($,Z);return Y}return X}function o(X,Z){if(typeof X==="string"){if(IX(X))return fZ(X,Z);else if(BX(X))return MY(X,Z)}else if(typeof X==="object"&&X!==null&&"$ref"in X)return gZ(X,Z);return X}function MY(X,Z){let Y=X.slice(1,-1),q=Z.tokens.get(Y),$=Z.options.modes||[];if(!q){if($.length>0){for(let K of $)if(Y.endsWith(`@${K}`)){let z=Y.slice(0,-K.length-1)+`#${K}`;if(q=Z.tokens.get(z),q)return BY(q,Z);break}}let W=Y.match(/#([^#@]+)$/);if(W){let K=Y.substring(0,W.index),z=W[1];if(q=Z.tokens.get(K),q){if(q.extensions?.mode?.[z]){let G=q.extensions.mode[z],E=o(G,{...Z,mode:z});if(q.extensions?.generator&&typeof q.extensions.generator==="object"&&"type"in q.extensions.generator&&"value"in q.extensions.generator)E=gX(E,q.extensions.generator.type,q.extensions.generator.value,Z);if(q.type==="color"&&typeof E==="string"&&m(E))E=x(E,q);if(typeof E==="string"&&d(E))E=wX(E);return E}}}if($.length>0)for(let K of $){let z=new RegExp(`(@[^@]+)@${K}$`);if(z.test(Y)){let G=Y.replace(z,`$1#${K}`);if(q=Z.tokens.get(G),!q){let E=G.match(/#([^#@]+)$/);if(E){let A=G.substring(0,E.index),L=E[1];if(q=Z.tokens.get(A),q&&q.extensions?.mode?.[L]){let H=q.extensions.mode[L],_=o(H,{...Z,mode:L});if(q.extensions?.generator&&typeof q.extensions.generator==="object"&&"type"in q.extensions.generator&&"value"in q.extensions.generator)_=gX(_,q.extensions.generator.type,q.extensions.generator.value,Z);if(q.type==="color"&&typeof _==="string"&&m(_))_=x(_,q);if(typeof _==="string"&&d(_))_=wX(_);return _}}}else return BY(q,Z);break}}}if(!q)return console.warn(`Token reference not found: ${X}`),Z.brokenReferences.push(X),X;return BY(q,Z)}function BY(X,Z){let Y;if(X.extensions?.generator&&typeof X.extensions.generator==="object"&&"type"in X.extensions.generator&&"value"in X.extensions.generator)Y=gX(X.value,X.extensions.generator.type,X.extensions.generator.value,Z);else if(Z.mode&&X.extensions?.mode?.[Z.mode])Y=o(X.extensions.mode[Z.mode],Z);else Y=o(X.value,Z);if(X.type==="color"&&typeof Y==="string"&&m(Y))Y=x(Y,X);if(typeof Y==="string"&&d(Y))Y=wX(Y);return Y}function gZ(X,Z){let q=X.$ref.slice(2).replace(/\//g,"."),$=Z.tokens.get(q);if(!$)return console.warn(`JSON Pointer reference not found: ${X.$ref}`),Z.brokenReferences.push(X.$ref),X.$ref;return o($.value,Z)}function fZ(X,Z){let Y=yX(X),q=Y.some((W)=>W.value.includes(",")),$=!0,U=[];for(let W of Y){let K;if(W.type==="reference"&&W.ref){if(typeof W.ref==="string"&&BX(W.ref)){K=MY(W.ref,Z);let z=W.ref.slice(1,-1),G=Z.tokens.get(z);if(!G||!["border","shadow","typography","composition"].includes(G.type))$=!1}else if(typeof W.ref==="object"&&"$ref"in W.ref)K=gZ(W.ref,Z)}else if(K=W.value,W.value.trim()&&W.value.trim()!==",")$=!1;U.push(K)}if(q&&$)return U.filter((W)=>typeof W==="object"&&W!==null&&typeof W!=="string");return U.map((W)=>String(W)).join("")}function gX(X,Z,Y,q){let $=o(X,q);switch(Z){case"alpha":if(typeof $==="string")return n0($,Number(Y)/100);break;case"scale":if(typeof $==="string"&&$.match(/[\d.]+/))return t0($,Number(Y));break;case"hue":if(typeof $==="string")return o0($,Number(Y));break;default:return console.warn(`Unknown generator type: ${Z}`),$}return $}function a0(X,Z,Y){let q=X.replace(/\./g,"-");q=q.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase(),q=q.replace(/@[^@#]*(?:screen|width|height|min|max|orientation).*$/i,""),q=q.replace(/#[^#]*$/,""),q=q.replace(/-@/g,"-").replace(/@/g,"-");let $=q,U=!0,W=Z.prefix||"";if(Z.transformName){if($=Z.transformName(q),$=$.replace(/-+$/,""),$!==q)U=!1}let K=U&&W?`${W}-${$}`:$,z=Y?`-${Y}`:"";return`--${K}${z}`.replace(/[^a-zA-Z0-9-_]/g,"-")}function n0(X,Z){try{if(!m(X))return X;let Y=new TZ(X);return Y.alpha=Z,x(Y)}catch(Y){return console.warn(`Failed to apply alpha to color "${X}": ${Y}`),X}}function t0(X,Z){let Y=X.match(/([\d.]+)(\w+)/);if(Y){let[,q,$]=Y;return`${parseFloat(q)*Z}${$}`}return X}function o0(X,Z){try{if(!m(X))return X;let q=new TZ(X).to("oklch");return q.h=(q.h+Z)%360,x(q)}catch(Y){return console.warn(`Failed to shift hue for color "${X}": ${Y}`),X}}var NY=b(()=>{DZ();AX()});function FY(X){if(X.type==="typography"||X.type==="fontWeight"||X.type==="fontFamily")return!0;if(X.type==="dimension"&&X.name.includes("typography"))return!0;if(X.name.includes("typography")||X.name.includes("font"))return!0;return!1}function s(X,Z,Y){if(Y){if(X===Z)return":host";return`:host([data-theme="${X}"])`}if(X===Z)return":root";return`[data-theme="${X}"]`}function fX(X,Z={}){let{rootSelector:Y=":root",separateThemeFiles:q=!1,generateMediaQueries:$=!1,customHeader:U,modes:W=["light","dark"]}=Z;if(q)return X1(X,Z);let K=new Map,z=new Map;for(let w of W)K.set(w,[]);let G=W.join("|"),E=new RegExp(`#(${G})$`);for(let w of X){if(typeof w.value==="string"&&d(w.value))continue;if(FY(w))continue;let R=` ${w.cssVar}: ${h(w.value,w.type)};`;if($&&w.name.includes("@media")){let I=hX(w);if(I){if(!z.has(I))z.set(I,[]);z.get(I).push(R);continue}}let B=w.name.match(E);if(B){let I=B[1];if(!K.has(I))K.set(I,[]);K.get(I).push(R)}else{let I=W[0]||"light";K.get(I).push(R)}}let A="";if(U)A+=`${U}
|
|
32
|
+
`}}let{distCSSPath:L}=await r(),H=Z?y(Z,"css"):L,_=`${H}/fonts.css`;NZ(H,{recursive:!0}),await u0(_,A,{flag:"w",encoding:"utf-8"})}catch(Y){console.error("Error appending typography tokens:",Y)}}var IY=S(()=>{g()});function IX(X){if(typeof X!=="string"||!X.startsWith("{")||!X.endsWith("}"))return!1;let Z=X.slice(1,-1);return!Z.includes("{")&&!Z.includes("}")&&Z.trim()!==""}function wX(X){if(typeof X!=="string")return!1;let Z=/\{[^}]+\}/g,Y=X.match(Z);return!!(Y&&Y.length>0&&X.length>Y.join("").length)}function fX(X){let Z=[],Y=/\{[^}]+\}/g,q=0,$;while(($=Y.exec(X))!==null){if($.index>q){let W=X.slice(q,$.index);if(W)Z.push({type:"literal",value:W})}let U=$[0];if(U.startsWith("{#/"))Z.push({type:"reference",value:U,ref:{$ref:U.slice(2,-1)}});else Z.push({type:"reference",value:U,ref:U});q=$.index+$[0].length}if(q<X.length){let U=X.slice(q);if(U)Z.push({type:"literal",value:U})}return Z}function FZ(X){return!!X.$extensions?.$mode}function xZ(X){return!!(X.$extensions?.$generators&&Array.isArray(X.$extensions.$generators))}function jZ(X){return!!(X.$extensions?.$breakpoints&&typeof X.$extensions.$breakpoints==="object")}function bZ(X,Z){return`${X}${Z}`}function DZ(X){return typeof X==="object"&&X!==null&&"$value"in X}function SZ(X){return typeof X==="object"&&X!==null&&!("$value"in X)}var PZ=()=>{};function CZ(X){if(typeof X!=="string")return!1;let Z=X.trim();return Z.startsWith("<svg")&&Z.includes("</svg>")}function VZ(X){if(typeof X!=="string")return!1;return X.startsWith("data:image/png;base64,")||X.startsWith("iVBORw0KGgo")}function TZ(X){if(typeof X!=="string")return!1;return X.startsWith("data:image/jpeg;base64,")||X.startsWith("data:image/jpg;base64,")||X.startsWith("/9j/")}function l0(X){let Z=X.trim();return Z=Z.replace(/\s+/g," ").replace(/>\s+</g,"><").trim(),`data:image/svg+xml;base64,${Buffer.from(Z,"utf-8").toString("base64")}`}function r0(X){if(X.startsWith("data:image/png;base64,"))return X;return`data:image/png;base64,${X}`}function s0(X){if(X.startsWith("data:image/jpeg;base64,")||X.startsWith("data:image/jpg;base64,"))return X;return`data:image/jpeg;base64,${X}`}function RX(X){if(!X||typeof X!=="string")return X;if(X.startsWith("data:"))return X;if(CZ(X))return l0(X);else if(VZ(X))return r0(X);else if(TZ(X))return s0(X);return X}function i0(X){if(typeof X!=="string")return!1;return X.startsWith("data:image/svg+xml;")||X.startsWith("data:image/png;")||X.startsWith("data:image/jpeg;")||X.startsWith("data:image/jpg;")||X.startsWith("data:image/gif;")||X.startsWith("data:image/webp;")}function u(X){return CZ(X)||VZ(X)||TZ(X)||i0(X)}import{readFileSync as a0,readdirSync as n0,statSync as t0}from"fs";import{join as o0}from"path";import gZ from"colorjs.io";function RY(X){let Z={};function Y(q){let $=n0(q);for(let U of $){let W=o0(q,U);if(t0(W).isDirectory())Y(W);else if(U.endsWith(".tokens.json"))try{let z=a0(W,"utf-8");if(!z.trim())continue;let G=JSON.parse(z);fZ(Z,G)}catch(z){console.warn(`Failed to load token file: ${W}`,z)}}}return Y(X),Z}function fZ(X,Z){for(let Y in Z)if(Z[Y]&&typeof Z[Y]==="object"&&!Array.isArray(Z[Y])){if(!X[Y])X[Y]={};fZ(X[Y],Z[Y])}else X[Y]=Z[Y]}function MY(X,Z={}){let Y=[];function q($,U=[]){for(let[W,K]of Object.entries($)){if(W.startsWith("$"))continue;let z=[...U,W],G=z.join(".");if(DZ(K)){let A={path:z,name:G,type:K.$type,value:K.$value,description:K.$description,extensions:K.$extensions?{mode:FZ(K)?K.$extensions.$mode:K.$extensions.mode?K.$extensions.mode:void 0,generators:xZ(K)?K.$extensions.$generators:K.$extensions.generators?K.$extensions.generators:void 0,breakpoints:jZ(K)?K.$extensions.$breakpoints:K.$extensions.breakpoint?K.$extensions.breakpoint:void 0,...Object.fromEntries(Object.entries(K.$extensions).filter(([E])=>!["$mode","$generators","$breakpoints","mode","generators","breakpoint"].includes(E)))}:void 0,original:K};if(!Z.namespace||G.startsWith(Z.namespace))Y.push(A)}else if(SZ(K))q(K,z)}}return q(X),Y}function NY(X,Z={}){let Y=[...X],q=new Map(X.map((G)=>[G.name,G]));if(Z.generateModes||Z.generateDerivedTokens||Z.generateBreakpointTokens)for(let G of X){let A=yZ(G,Z,q);if(Y.push(...A),Z.generateModes){for(let E of A)if(E.extensions?.mode&&!E.name.includes("#")){let L=yZ(E,Z,q);Y.push(...L)}}}let $=Z.modes||[],U=$.length>0?$[0]:void 0,W={tokens:new Map(Y.map((G)=>[G.name,G])),mode:Z.generateModes?U:void 0,options:Z,brokenReferences:[]},K=[];for(let G of Y){let A=void 0;for(let H of $)if(G.name.endsWith(`#${H}`)){A=H;break}if(!A&&Z.generateModes)A=U;let E={...W,mode:A},L=e0(G,E);K.push(L)}if(Z.failOnBrokenReferences!==!1&&W.brokenReferences.length>0){let G=[...new Set(W.brokenReferences)],A=`Token reference${G.length>1?"s":""} not found:
|
|
33
|
+
${G.map((E)=>` - ${E}`).join(`
|
|
34
|
+
`)}`;throw Error(A)}return K}function yZ(X,Z,Y){let q=[];if(Z.generateModes&&X.extensions?.mode){for(let[$,U]of Object.entries(X.extensions.mode))if(U!==void 0)q.push({...X,name:`${X.name}#${$}`,value:U,path:[...X.path,`#${$}`]})}if(Z.generateModes&&!X.extensions?.mode&&(Array.isArray(X.value)||typeof X.value==="object"&&X.value!==null)){let $=!1,U=!1,W=(K)=>{if(typeof K!=="object"||K===null)return!1;if(K.$extensions?.mode)return!0;return Object.values(K).some((z)=>{if(typeof z==="object"&&z!==null)return W(z);return!1})};if(Array.isArray(X.value))$=X.value.some((K)=>typeof K==="string"&&K.includes("{")||typeof K==="object"&&K!==null&&Object.values(K).some((z)=>typeof z==="string"&&z.includes("{"))),U=X.value.some((K)=>W(K));else $=Object.values(X.value).some((K)=>typeof K==="string"&&K.includes("{")),U=W(X.value);if($||U){if(["color","shadow","border","background","surface","composition"].includes(X.type)){let G;if(Array.isArray(X.value))G=X.value.map((A)=>{if(typeof A==="string"&&A.startsWith("{")&&A.endsWith("}")){let E=A.slice(1,-1);if(!E.includes("#dark")&&!E.includes("@dark"))return`{${E}#dark}`;return A}else if(typeof A==="object"&&A!==null){let E={};for(let[L,H]of Object.entries(A))if(typeof H==="string"&&H.startsWith("{")&&H.endsWith("}")){let _=H.slice(1,-1),Q=`${_}#dark`,J=Y?.get(_),O=Y?.has(Q)||J?.extensions?.mode?.dark!==void 0||J&&(Array.isArray(J.value)||typeof J.value==="object"&&J.value!==null);if(!_.includes("#dark")&&!_.includes("@dark")&&O)E[L]=`{${Q}}`;else E[L]=H}else E[L]=H;return E}return A});else if(typeof X.value==="object"&&X.value!==null){G={};let A=(E)=>{if(typeof E==="string"){if(E.startsWith("{")&&E.endsWith("}")){let L=E.slice(1,-1),H=`${L}#dark`,_=(J,O=new Set)=>{if(O.has(J))return!1;O.add(J);let B=Y?.get(J);if(!B){let R=J.match(/^(.+)@([^@]+)$/);if(R){let[,I,w]=R,M=Y?.get(I);if(M){if(M.extensions?.mode?.dark!==void 0)return!0;if(M.extensions?.generators)return!0;return _(I,O)}}return!1}if(B.extensions?.mode?.dark!==void 0)return!0;if(Y?.has(`${J}#dark`))return!0;if(typeof B.value==="string"&&B.value.startsWith("{")&&B.value.endsWith("}")){let R=B.value.slice(1,-1);return _(R,O)}if(Array.isArray(B.value)||typeof B.value==="object"&&B.value!==null){let R=(I)=>{if(typeof I!=="object"||I===null)return!1;if(I.$extensions?.mode)return!0;return Object.values(I).some((w)=>{if(typeof w==="object"&&w!==null)return R(w);return!1})};if(Array.isArray(B.value))return B.value.some((I)=>typeof I==="string"&&I.includes("{")&&_(I.slice(1,-1),new Set(O))||typeof I==="object"&&I!==null&&(Object.values(I).some((w)=>typeof w==="string"&&w.includes("{")&&_(w.slice(1,-1),new Set(O)))||R(I)));else if(typeof B.value==="object")return Object.values(B.value).some((I)=>typeof I==="string"&&I.includes("{")&&_(I.slice(1,-1),new Set(O)))||R(B.value)}return!1},Q=_(L);if(!L.includes("#dark")&&!L.includes("@dark")&&Q)return`{${H}}`}return E}if(typeof E==="object"&&E!==null){if(E.$extensions?.mode?.dark)return E.$extensions.mode.dark;let L={};for(let[H,_]of Object.entries(E))L[H]=A(_);return L}return E};for(let[E,L]of Object.entries(X.value))G[E]=A(L)}q.push({...X,name:`${X.name}#dark`,value:G,path:[...X.path,"#dark"],extensions:{...X.extensions,autoGenerated:!0}})}}}if(Z.generateModes&&!X.extensions?.mode&&typeof X.value==="string"&&X.value.startsWith("{")&&X.value.endsWith("}")){let $=X.value.slice(1,-1),U=(A,E=new Set)=>{if(E.has(A))return!1;E.add(A);let L=Y?.get(A);if(!L){let H=A.match(/^(.+)@([^@]+)$/);if(H){let[,_,Q]=H,J=Y?.get(_);if(J){if(J.extensions?.mode?.dark!==void 0)return!0;if(J.extensions?.generators)return!0;return U(_,E)}}return!1}if(L.extensions?.mode?.dark!==void 0)return!0;if(Y?.has(`${A}#dark`))return!0;if(typeof L.value==="string"&&L.value.startsWith("{")&&L.value.endsWith("}")){let H=L.value.slice(1,-1);return U(H,E)}if(Array.isArray(L.value)||typeof L.value==="object"&&L.value!==null){let H=(_)=>{if(typeof _!=="object"||_===null)return!1;if(_.$extensions?.mode)return!0;return Object.values(_).some((Q)=>{if(typeof Q==="object"&&Q!==null)return H(Q);return!1})};if(Array.isArray(L.value))return L.value.some((_)=>typeof _==="string"&&_.includes("{")&&U(_.slice(1,-1),new Set(E))||typeof _==="object"&&_!==null&&(Object.values(_).some((Q)=>typeof Q==="string"&&Q.includes("{")&&U(Q.slice(1,-1),new Set(E)))||H(_)));else if(typeof L.value==="object")return Object.values(L.value).some((_)=>typeof _==="string"&&_.includes("{")&&U(_.slice(1,-1),new Set(E)))||H(L.value)}return!1},W=U($);if(["color","shadow","border","background","surface","composition"].includes(X.type)&&W&&W&&!$.includes("#dark")&&!$.includes("@dark")){let A=`{${$}#dark}`;q.push({...X,name:`${X.name}#dark`,value:A,path:[...X.path,"#dark"],extensions:{...X.extensions,autoGenerated:!0}})}}if(Z.generateDerivedTokens&&X.extensions?.generators)for(let $ of X.extensions.generators)for(let[U,W]of Object.entries($.value)){let K=bZ(X.name,U),{generators:z,...G}=X.extensions;q.push({...X,name:K,value:X.value,path:[...X.path,U],extensions:{...G,generator:{type:$.type,value:W}}})}if(Z.generateBreakpointTokens&&X.extensions?.breakpoints)for(let[$,U]of Object.entries(X.extensions.breakpoints)){let W=`${X.name}@${$.replace(/[^a-zA-Z0-9]/g,"_")}`,K=U.$value||U.value;if(K&&typeof K==="object"&&"$value"in K)K=K.$value;else if(!K&&typeof U==="object"){let{...A}=U;if(Object.keys(A).length>0)K=A}let z=U.$extensions||U.$extensions,G=U.$type;if(!G&&U.value&&typeof U.value==="object")G=U.value.$type;q.push({...X,name:W,value:K,path:[...X.path,`@${$}`],type:G||X.type,extensions:{mediaQuery:$,...z?{mode:z.mode||z.$mode,generators:z.generators||z.$generators,...Object.fromEntries(Object.entries(z).filter(([A])=>!["mode","$mode","generators","$generators"].includes(A)))}:{}}})}return q}function e0(X,Z){let Y=e(X.value,Z),q=X.type;if(typeof X.value==="string"&&IX(X.value)){let U=X.value.slice(1,-1),W=Z.tokens.get(U);if(W){if(["border","shadow","typography","composition"].includes(W.type))q=W.type;else if(typeof W.value==="string"&&wX(W.value)){let K=fX(W.value),z=new Set;for(let G of K)if(G.type==="reference"&&G.ref&&typeof G.ref==="string"){let A=G.ref.slice(1,-1),E=Z.tokens.get(A);if(E&&["border","shadow","typography","composition"].includes(E.type))z.add(E.type)}if(z.size===1)q=Array.from(z)[0]}}}if(typeof X.value==="string"&&wX(X.value)){let U=fX(X.value),W=new Set;for(let K of U)if(K.type==="reference"&&K.ref&&typeof K.ref==="string"){let z=K.ref.slice(1,-1),G=Z.tokens.get(z);if(G&&["border","shadow","typography","composition"].includes(G.type))W.add(G.type)}if(W.size===1)q=Array.from(W)[0]}if(typeof Y==="object"&&Y!==null&&["border","shadow","typography","composition"].includes(q))Y=s(Y,Z);if(X.extensions?.generator&&typeof X.extensions.generator==="object"&&"type"in X.extensions.generator&&"value"in X.extensions.generator)Y=vX(X.value,X.extensions.generator.type,X.extensions.generator.value,Z);let $=X1(X.name,Z.options);if(q==="color"&&typeof Y==="string"&&p(Y))Y=b(Y,X);if(typeof Y==="string"&&u(Y))Y=RX(Y);return{...X,type:q,value:Y,cssVar:$}}function s(X,Z){if(typeof X==="string"){if(IX(X))return FY(X,Z);else if(wX(X))return hZ(X,Z)}if(Array.isArray(X))return X.map((Y)=>s(Y,Z));if(typeof X==="object"&&X!==null){if("$value"in X&&typeof X.$value==="string")return s(X.$value,Z);if("value"in X&&typeof X.value==="string"&&"$type"in X){if(Z.mode&&X.$extensions?.mode?.[Z.mode])return s(X.$extensions.mode[Z.mode],Z);return s(X.value,Z)}if("value"in X&&typeof X.value==="object"&&"$type"in X){let q=X.value,$=X.$extensions?.delimiter?.character||" ";if(X.$type==="composition"&&q&&typeof q==="object")return Object.values(q).map((W)=>s(W,Z)).join($);return s(X.value,Z)}let Y={};for(let[q,$]of Object.entries(X))Y[q]=s($,Z);return Y}return X}function e(X,Z){if(typeof X==="string"){if(wX(X))return hZ(X,Z);else if(IX(X))return FY(X,Z)}else if(typeof X==="object"&&X!==null&&"$ref"in X)return vZ(X,Z);return X}function FY(X,Z){let Y=X.slice(1,-1),q=Z.tokens.get(Y),$=Z.options.modes||[];if(!q){if($.length>0){for(let K of $)if(Y.endsWith(`@${K}`)){let z=Y.slice(0,-K.length-1)+`#${K}`;if(q=Z.tokens.get(z),q)return wY(q,Z);break}}let W=Y.match(/#([^#@]+)$/);if(W){let K=Y.substring(0,W.index),z=W[1];if(q=Z.tokens.get(K),q){if(q.extensions?.mode?.[z]){let G=q.extensions.mode[z],A=e(G,{...Z,mode:z});if(q.extensions?.generator&&typeof q.extensions.generator==="object"&&"type"in q.extensions.generator&&"value"in q.extensions.generator)A=vX(A,q.extensions.generator.type,q.extensions.generator.value,Z);if(q.type==="color"&&typeof A==="string"&&p(A))A=b(A,q);if(typeof A==="string"&&u(A))A=RX(A);return A}}}if($.length>0)for(let K of $){let z=new RegExp(`(@[^@]+)@${K}$`);if(z.test(Y)){let G=Y.replace(z,`$1#${K}`);if(q=Z.tokens.get(G),!q){let A=G.match(/#([^#@]+)$/);if(A){let E=G.substring(0,A.index),L=A[1];if(q=Z.tokens.get(E),q&&q.extensions?.mode?.[L]){let H=q.extensions.mode[L],_=e(H,{...Z,mode:L});if(q.extensions?.generator&&typeof q.extensions.generator==="object"&&"type"in q.extensions.generator&&"value"in q.extensions.generator)_=vX(_,q.extensions.generator.type,q.extensions.generator.value,Z);if(q.type==="color"&&typeof _==="string"&&p(_))_=b(_,q);if(typeof _==="string"&&u(_))_=RX(_);return _}}}else return wY(q,Z);break}}}if(!q)return console.warn(`Token reference not found: ${X}`),Z.brokenReferences.push(X),X;return wY(q,Z)}function wY(X,Z){let Y;if(X.extensions?.generator&&typeof X.extensions.generator==="object"&&"type"in X.extensions.generator&&"value"in X.extensions.generator)Y=vX(X.value,X.extensions.generator.type,X.extensions.generator.value,Z);else if(Z.mode&&X.extensions?.mode?.[Z.mode])Y=e(X.extensions.mode[Z.mode],Z);else Y=e(X.value,Z);if(X.type==="color"&&typeof Y==="string"&&p(Y))Y=b(Y,X);if(typeof Y==="string"&&u(Y))Y=RX(Y);return Y}function vZ(X,Z){let q=X.$ref.slice(2).replace(/\//g,"."),$=Z.tokens.get(q);if(!$)return console.warn(`JSON Pointer reference not found: ${X.$ref}`),Z.brokenReferences.push(X.$ref),X.$ref;return e($.value,Z)}function hZ(X,Z){let Y=fX(X),q=Y.some((W)=>W.value.includes(",")),$=!0,U=[];for(let W of Y){let K;if(W.type==="reference"&&W.ref){if(typeof W.ref==="string"&&IX(W.ref)){K=FY(W.ref,Z);let z=W.ref.slice(1,-1),G=Z.tokens.get(z);if(!G||!["border","shadow","typography","composition"].includes(G.type))$=!1}else if(typeof W.ref==="object"&&"$ref"in W.ref)K=vZ(W.ref,Z)}else if(K=W.value,W.value.trim()&&W.value.trim()!==",")$=!1;U.push(K)}if(q&&$)return U.filter((W)=>typeof W==="object"&&W!==null&&typeof W!=="string");return U.map((W)=>String(W)).join("")}function vX(X,Z,Y,q){let $=e(X,q);switch(Z){case"alpha":if(typeof $==="string")return Y1($,Number(Y)/100);break;case"scale":if(typeof $==="string"&&$.match(/[\d.]+/))return Z1($,Number(Y));break;case"hue":if(typeof $==="string")return q1($,Number(Y));break;default:return console.warn(`Unknown generator type: ${Z}`),$}return $}function X1(X,Z,Y){let q=X.replace(/\./g,"-");q=q.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase(),q=q.replace(/@[^@#]*(?:screen|width|height|min|max|orientation).*$/i,""),q=q.replace(/#[^#]*$/,""),q=q.replace(/-@/g,"-").replace(/@/g,"-");let $=q,U=!0,W=Z.prefix||"";if(Z.transformName){if($=Z.transformName(q),$=$.replace(/-+$/,""),$!==q)U=!1}let K=U&&W?`${W}-${$}`:$,z=Y?`-${Y}`:"";return`--${K}${z}`.replace(/[^a-zA-Z0-9-_]/g,"-")}function Y1(X,Z){try{if(!p(X))return X;let Y=new gZ(X);return Y.alpha=Z,b(Y)}catch(Y){return console.warn(`Failed to apply alpha to color "${X}": ${Y}`),X}}function Z1(X,Z){let Y=X.match(/([\d.]+)(\w+)/);if(Y){let[,q,$]=Y;return`${parseFloat(q)*Z}${$}`}return X}function q1(X,Z){try{if(!p(X))return X;let q=new gZ(X).to("oklch");return q.h=(q.h+Z)%360,b(q)}catch(Y){return console.warn(`Failed to shift hue for color "${X}": ${Y}`),X}}var xY=S(()=>{PZ();EX()});function jY(X){if(X.type==="typography"||X.type==="fontWeight"||X.type==="fontFamily")return!0;if(X.type==="dimension"&&X.name.includes("typography"))return!0;if(X.name.includes("typography")||X.name.includes("font"))return!0;return!1}function i(X,Z,Y){if(Y){if(X===Z)return":host";return`:host([data-theme="${X}"])`}if(X===Z)return":root";return`[data-theme="${X}"]`}function hX(X,Z={}){let{rootSelector:Y=":root",separateThemeFiles:q=!1,generateMediaQueries:$=!1,customHeader:U,modes:W=["light","dark"]}=Z;if(q)return U1(X,Z);let K=new Map,z=new Map;for(let B of W)K.set(B,[]);let G=W.join("|"),A=new RegExp(`#(${G})$`);for(let B of X){if(typeof B.value==="string"&&u(B.value))continue;if(jY(B))continue;let R=` ${B.cssVar}: ${m(B.value,B.type)};`;if($&&B.name.includes("@media")){let w=pX(B);if(w){if(!z.has(w))z.set(w,[]);z.get(w).push(R);continue}}let I=B.name.match(A);if(I){let w=I[1];if(!K.has(w))K.set(w,[]);K.get(w).push(R)}else{let w=W[0]||"light";K.get(w).push(R)}}let E="";if(U)E+=`${U}
|
|
35
35
|
|
|
36
|
-
`;let L=Z.defaultMode||W[0]||"light",H=Z.isHost||!1,_=K.get(L)||[];if(_.length>0){_.sort();let
|
|
36
|
+
`;let L=Z.defaultMode||W[0]||"light",H=Z.isHost||!1,_=K.get(L)||[];if(_.length>0){_.sort();let B=i(L,L,H);E+=`${B} {
|
|
37
37
|
${_.join(`
|
|
38
38
|
`)}
|
|
39
|
-
`;for(let R of W){if(R===L)continue;let
|
|
39
|
+
`;for(let R of W){if(R===L)continue;let I=K.get(R)||[];if(I.length>0){I.sort();let w=i(R,L,H);if(H)E+=`}
|
|
40
40
|
|
|
41
|
-
${
|
|
42
|
-
${
|
|
41
|
+
${w} {
|
|
42
|
+
${I.join(`
|
|
43
43
|
`)}
|
|
44
|
-
`;else{let
|
|
45
|
-
${
|
|
46
|
-
${
|
|
44
|
+
`;else{let M=w.replace("[data-theme=","&[data-theme=");E+=`
|
|
45
|
+
${M} {
|
|
46
|
+
${I.map((N)=>` ${N}`).join(`
|
|
47
47
|
`)}
|
|
48
48
|
}
|
|
49
|
-
`}}}
|
|
50
|
-
`}if($&&z.size>0){let
|
|
49
|
+
`}}}E+=`}
|
|
50
|
+
`}if($&&z.size>0){let B=i(L,L,H);for(let[R,I]of z)I.sort(),E+=`
|
|
51
51
|
${R} {
|
|
52
|
-
${
|
|
53
|
-
${
|
|
52
|
+
${B} {
|
|
53
|
+
${I.map((w)=>` ${w}`).join(`
|
|
54
54
|
`)}
|
|
55
55
|
}
|
|
56
56
|
}
|
|
57
|
-
`}let Q=[{fileName:"tokens.css",content:
|
|
58
|
-
`)?
|
|
59
|
-
`}],J=
|
|
57
|
+
`}let Q=[{fileName:"tokens.css",content:E.endsWith(`
|
|
58
|
+
`)?E:`${E}
|
|
59
|
+
`}],J=kZ(X,Z);Q.push(...J);let O=cZ(X,Z);return Q.push(...O),Q}function $1(X,Z){let Y=[];for(let $ of X){let W=` ${$.cssVar||mX($,Z)}: ${m($.value,$.type)};`;Y.push(W)}let q="";if(Z.customHeader)q+=`${Z.customHeader}
|
|
60
60
|
|
|
61
61
|
`;if(Y.length>0)Y.sort(),q+=`${Z.rootSelector||":root"} {
|
|
62
62
|
${Y.join(`
|
|
@@ -64,7 +64,7 @@ ${Y.join(`
|
|
|
64
64
|
}
|
|
65
65
|
`;return{fileName:"theme.css",content:q.endsWith(`
|
|
66
66
|
`)?q:`${q}
|
|
67
|
-
`}}function
|
|
67
|
+
`}}function U1(X,Z){let Y=[],q=new Map,$=[],U=Z.modes||["light","dark"],W=new Set(U),K=U.join("|"),z=new RegExp(`#(${K})$`);for(let _ of X){if(pX(_))continue;if(typeof _.value==="string"&&u(_.value))continue;if(jY(_))continue;let Q=_.name.match(z);if(Q){let J=Q[1];if(W.has(J)){if(!q.has(J))q.set(J,[]);q.get(J).push(_)}else $.push(_)}else $.push(_)}if($.length>0){let _=hX($,{...Z,separateThemeFiles:!1})[0];Y.push({..._,fileName:"tokens.css"})}let G=Z.defaultMode||(U.length>0?U[0]:"default"),A=Z.isHost||!1;for(let[_,Q]of q){let J=i(_,G,A),O=$1(Q,{...Z,separateThemeFiles:!1,rootSelector:J});Y.push({...O,fileName:`tokens.${_}.css`,theme:_})}let E=K1(X,Z);Y.push(...E);let L=kZ(X,Z);Y.push(...L);let H=cZ(X,Z);return Y.push(...H),Y}function K1(X,Z){let Y=new Map;for(let U of X){let W=pX(U);if(W){let K=U.name.match(/@(dark|light)$/),z=K?K[1]:"light";if(!Y.has(W))Y.set(W,new Map);let G=Y.get(W);if(!G.has(z))G.set(z,[]);G.get(z).push(U)}}if(Y.size===0)return[];let q=`/**
|
|
68
68
|
* Design System Tokens - Responsive Breakpoints
|
|
69
69
|
* Generated: ${new Date().toISOString()}
|
|
70
70
|
*
|
|
@@ -72,19 +72,19 @@ ${Y.join(`
|
|
|
72
72
|
* Each media query section overrides tokens for specific screen sizes.
|
|
73
73
|
*/
|
|
74
74
|
|
|
75
|
-
`,$=Array.from(Y.keys()).sort();for(let U of $){let W=Y.get(U),K=Z.defaultMode||(Z.modes&&Z.modes.length>0?Z.modes[0]:"light"),z=Z.isHost||!1;for(let[G,
|
|
75
|
+
`,$=Array.from(Y.keys()).sort();for(let U of $){let W=Y.get(U),K=Z.defaultMode||(Z.modes&&Z.modes.length>0?Z.modes[0]:"light"),z=Z.isHost||!1;for(let[G,A]of W){let E=[];for(let L of A){let _=` ${L.cssVar||mX(L,Z)}: ${m(L.value,L.type)};`;E.push(_)}if(E.length>0){E.sort();let L=i(G,K,z);q+=`${U} {
|
|
76
76
|
${L} {
|
|
77
|
-
${
|
|
77
|
+
${E.join(`
|
|
78
78
|
`)}
|
|
79
79
|
}
|
|
80
80
|
}
|
|
81
81
|
|
|
82
82
|
`}}}return[{fileName:"tokens.breakpoints.css",content:q.trim()+`
|
|
83
|
-
`}]}function
|
|
83
|
+
`}]}function kZ(X,Z){let Y=new Map;for(let $ of X)if(typeof $.value==="string"&&u($.value)){let U=$.name.match(/@(dark|light)$/),W=U?U[1]:"light";if(!Y.has(W))Y.set(W,[]);Y.get(W).push($)}let q=[];if(Y.size===0)return[];if(Y.size===1){let[$,U]=Array.from(Y.entries())[0],W=mZ(U,$,Z);q.push({fileName:"tokens.icons.css",content:W.endsWith(`
|
|
84
84
|
`)?W:`${W}
|
|
85
|
-
`})}else for(let[$,U]of Y){let W=
|
|
85
|
+
`})}else for(let[$,U]of Y){let W=mZ(U,$,Z);q.push({fileName:`tokens.icons.${$}.css`,content:W.endsWith(`
|
|
86
86
|
`)?W:`${W}
|
|
87
|
-
`})}return q}function
|
|
87
|
+
`})}return q}function mZ(X,Z,Y){let q=`/**
|
|
88
88
|
* Design System Tokens - Icons (${Z})
|
|
89
89
|
* Generated: ${new Date().toISOString()}
|
|
90
90
|
*
|
|
@@ -92,14 +92,17 @@ ${A.join(`
|
|
|
92
92
|
* Icons are provided as data URIs for direct embedding.
|
|
93
93
|
*/
|
|
94
94
|
|
|
95
|
-
`,$=[];for(let U of X){let K=` ${U.cssVar||
|
|
95
|
+
`,$=[];for(let U of X){let K=` ${U.cssVar||mX(U,Y)}: ${m(U.value,U.type)};`;$.push(K)}if($.length>0){$.sort();let U=Y.defaultMode||"light",W=Y.isHost||!1,K=i(Z,U,W);q+=`${K} {
|
|
96
96
|
${$.join(`
|
|
97
97
|
`)}
|
|
98
98
|
}
|
|
99
99
|
`}return q+`
|
|
100
|
-
`}function
|
|
101
|
-
`)?
|
|
102
|
-
`})}
|
|
100
|
+
`}function mX(X,Z){let q=X.name.split("@")[0].replace(/\.$/,"").replace(/\.+/g,"."),$=bY(q,Z.hooks);return`--${Z.prefix||MX}-${$.replace(/\./g,"-")}`}function bY(X,Z,Y){if(!Z?.shortenName?.enabled)return X;let q=X;if(Z.shortenName.prefix)for(let $ of Z.shortenName.prefix)q=q.replace(new RegExp($.find,"g"),$.replace);if(Z.shortenName.suffix){for(let $ of Z.shortenName.suffix)if(q.endsWith($.find))q=q.substring(0,q.length-$.find.length)+$.replace}if(Y&&Y!=="light"){let $=`-${Y}`;if(q.endsWith($))q=q.slice(0,-$.length)}return q}function cZ(X,Z){let Y=new Map,q=Z.modes||[];for(let W of X)if(jY(W)){if(pX(W))continue;let z=q.length>0?q[0]:"default";if(W.name.includes("#")){let G=W.name.split("#"),A=G[G.length-1];if(q.includes(A))z=A}if(!Y.has(z))Y.set(z,[]);Y.get(z).push(W)}let $=[];if(Z.separateThemeFiles??!1)for(let[W,K]of Y.entries()){let z=pZ(K,W,Z,q);$.push({fileName:`tokens.typography.${W}.css`,content:z.endsWith(`
|
|
101
|
+
`)?z:`${z}
|
|
102
|
+
`})}else{let W="";for(let[K,z]of Y.entries()){let G=pZ(z,K,Z,q);if(W)W+=`
|
|
103
|
+
`;W+=G}if(W)$.push({fileName:"tokens.typography.css",content:W.endsWith(`
|
|
104
|
+
`)?W:`${W}
|
|
105
|
+
`})}return $}function pZ(X,Z,Y,q){let $=`/**
|
|
103
106
|
* Design System Tokens - Typography (${Z})
|
|
104
107
|
* Generated: ${new Date().toISOString()}
|
|
105
108
|
*
|
|
@@ -107,27 +110,27 @@ ${$.join(`
|
|
|
107
110
|
* Includes fontSize, fontWeight, fontFamily, lineHeight, and typography compositions.
|
|
108
111
|
*/
|
|
109
112
|
|
|
110
|
-
`,U=new Map;for(let W of X){let K="default";if(W.name.includes("@")){let z=W.name.split("@");for(let G of z)if(G.includes("screen_")||G.includes("min_width")||G.includes("max_width")){K=G.replace(/screen_and__/g,"").replace(/min_width__(\d+)px_/g,"min-width: $1px").replace(/max_width__(\d+)px_/g,"max-width: $1px").replace(/_/g," ");break}}if(!U.has(K))U.set(K,[]);U.get(K).push(W)}for(let[W,K]of U.entries()){let z=[];for(let G of K){let
|
|
113
|
+
`,U=new Map;for(let W of X){let K="default";if(W.name.includes("@")){let z=W.name.split("@");for(let G of z)if(G.includes("screen_")||G.includes("min_width")||G.includes("max_width")){K=G.replace(/screen_and__/g,"").replace(/min_width__(\d+)px_/g,"min-width: $1px").replace(/max_width__(\d+)px_/g,"max-width: $1px").replace(/_/g," ");break}}if(!U.has(K))U.set(K,[]);U.get(K).push(W)}for(let[W,K]of U.entries()){let z=[];for(let G of K){let E=` ${G.cssVar||mX(G,Y)}: ${m(G.value,G.type)};`;z.push(E)}if(z.length>0){let G=Y.defaultMode||"light",A=Y.isHost||!1,E=i(Z,G,A);if(W==="default")z.sort(),$+=`${E} {
|
|
111
114
|
${z.join(`
|
|
112
115
|
`)}
|
|
113
116
|
}
|
|
114
117
|
|
|
115
118
|
`;else{let L=W.startsWith("(")?W:`(${W})`;$+=`@media ${L} {
|
|
116
|
-
`,$+=` ${
|
|
119
|
+
`,$+=` ${E} {
|
|
117
120
|
${z.sort().map((H)=>` ${H}`).join(`
|
|
118
121
|
`)}
|
|
119
122
|
}
|
|
120
123
|
`,$+=`}
|
|
121
124
|
|
|
122
125
|
`}}}return $+`
|
|
123
|
-
`}function
|
|
126
|
+
`}function m(X,Z){if(X===null||X===void 0)return"";if(typeof X==="object"&&X!==null&&!Array.isArray(X)){let q=X;if(q.$value!==void 0){if(typeof q.$value==="string")return q.$value;return m(q.$value,q.$type||Z)}}let Y=String(X);switch(Z){case"color":return W1(Y);case"dimension":return G1(Y);case"duration":return z1(Y);case"fontFamily":return A1(Y);case"fontWeight":return E1(Y);case"cubicBezier":return L1(X);case"shadow":return H1(X);case"border":return _1(X);case"typography":return Q1(X);case"composition":return DY(X);default:if(Y.startsWith("data:"))return`"${Y}"`;return Y}}function W1(X){if(X.startsWith("oklch(")||X.startsWith("rgb(")||X.startsWith("rgba(")||X.startsWith("hsl(")||X.startsWith("hsla(")||X.startsWith("#"))return X;return X}function G1(X){if(/^\d+(\.\d+)?(px|rem|em|%|vh|vw|vmin|vmax)$/.test(X))return X;if(/^\d+(\.\d+)?$/.test(X))return`${X}rem`;return X}function z1(X){if(/^\d+(\.\d+)?(s|ms)$/.test(X))return X;if(/^\d+(\.\d+)?$/.test(X))return`${X}ms`;return X}function A1(X){if((X.includes(",")||X.includes(" "))&&!X.startsWith('"')&&!X.startsWith("'"))return`"${X}"`;return X}function E1(X){return{thin:"100","extra-light":"200",light:"300",normal:"400",medium:"500","semi-bold":"600",bold:"700","extra-bold":"800",black:"900"}[X]||X}function L1(X){if(Array.isArray(X)&&X.length===4)return`cubic-bezier(${X.join(", ")})`;return String(X)}function H1(X){if(Array.isArray(X))return X.map((Z)=>dZ(Z)).join(", ");return dZ(X)}function dZ(X){if(typeof X==="object"&&X!==null){let Z=X,Y=Z.color||"transparent";if(typeof Y==="string"&&Y.includes("{")&&Y.includes("}")){console.warn(`Unresolved token reference in shadow color: ${Y}`);let $=Y.match(/\{([^}]+)\}/)?.[1];if($)Y=`var(${`--${MX}-${$.replace(/\./g,"-").replace(/@/g,"-")}`})`}let q=[Z.offsetX||"0",Z.offsetY||"0",Z.blur||"0",Z.spread||"0",Y];if(Z.inset)q.unshift("inset");return q.join(" ")}return String(X)}function _1(X){if(typeof X==="object"&&X!==null){let Z=X,Y=j(Z.width)||"1px",q=j(Z.style)||"solid",$=j(Z.color)||"transparent";return`${Y} ${q} ${$}`}return String(X)}function Q1(X){if(typeof X==="object"&&X!==null){let Z=X,Y=Z.fontWeight||"normal",q=Z.fontSize||"1rem",$=Z.lineHeight||"normal",U=Z.fontFamily||"sans-serif";if(U.includes(" ")&&!U.startsWith('"')&&!U.startsWith("'"))U=`'${U}'`;let W;if(q.includes("/"))W=q;else W=`${q}/${$}`;return`${Y} ${W} ${U}`}return String(X)}function DY(X){if(typeof X!=="object"||X===null)return String(X);if(Array.isArray(X))return X.map((Y)=>DY(Y)).join(", ");let Z=X;if(Z.offsetX!==void 0&&Z.offsetY!==void 0)return lZ(Z);if(Z.width!==void 0&&Z.style!==void 0&&Z.color!==void 0){let Y=String(Z.width||"1px"),q=String(Z.style||"solid"),$=String(Z.color||"transparent");return`${Y} ${q} ${$}`}if(Z.blur!==void 0||Z.saturate!==void 0||Z.brightness!==void 0)return O1(Z);if(Z.fontSize!==void 0||Z.fontFamily!==void 0)return J1(Z);return B1(Z)}function lZ(X){let Z=[j(X.offsetX)||"0",j(X.offsetY)||"0",j(X.blur)||"0",j(X.spread)||"0",j(X.color)||"transparent"];if(X.inset&&j(X.inset)==="true")Z.unshift("inset");return Z.join(" ")}function O1(X){let Z=[];if(X.blur)Z.push(j(X.blur)||"blur(0)");if(X.saturate)Z.push(j(X.saturate)||"saturate(100%)");if(X.brightness)Z.push(j(X.brightness)||"brightness(100%)");if(X.contrast)Z.push(j(X.contrast)||"contrast(100%)");if(X.hueRotate)Z.push(j(X.hueRotate)||"hue-rotate(0deg)");return Z.join(" ")||"none"}function J1(X){let Z=j(X.fontWeight)||"normal",Y=j(X.fontSize)||"1rem",q=j(X.lineHeight),$=j(X.fontFamily)||"sans-serif";if($.includes(" ")&&!$.startsWith('"')&&!$.startsWith("'"))$=`'${$}'`;if(Y.includes("/"))return`${Z} ${Y} ${$}`;else if(q)return`${Z} ${Y}/${q} ${$}`;return`${Z} ${Y} ${$}`}function uZ(X,Z,Y){let q=X.match(/^\{(.+)\}$/);if(!q)return X;let U=q[1].replace(/\./g,"-");if(Y)U=bY(U,{shortenName:Y.$metaData?.tokens?.css?.hooks?.shortenName});return`var(--${U})`}function j(X,Z,Y){if(X===null||X===void 0)return"";if(typeof X==="string"){if(X.match(/^\{.+\}$/))return uZ(X,Z||"ds",Y);return X}if(typeof X==="object"&&X.value!==void 0){let q=String(X.value);if(q.match(/^\{.+\}$/))return uZ(q,Z||"ds",Y);return q}return String(X)}function B1(X){let Z=[];for(let[,$]of Object.entries(X)){let U=$;if(typeof $==="object"&&$!==null&&U.$value&&typeof U.$value==="object"){let W=U.$value;if(W.offsetX!==void 0&&W.offsetY!==void 0){let K=lZ(W);if(K)Z.push(K)}else{let K=DY(W);if(K)Z.push(K)}}else{let W=j($);if(W)Z.push(W)}}let q=Z.some(($)=>/^\d/.test($)&&$.includes(" "))?", ":" ";return Z.join(q)||String(X)}function pX(X){if(X.extensions?.mediaQuery&&typeof X.extensions.mediaQuery==="string"){let Y=X.extensions.mediaQuery;if(Y=Y.replace(/\{universe\.foundation\.breakpoint\.screen\.width\.lg\}/g,"64rem"),!Y.startsWith("@media"))Y=`@media ${Y}`;return Y}let Z=X.name.match(/@(media[^@]+)/);if(Z)return`@${Z[1].replace(/_/g," ")}`;if(X.name.includes("@screen_and__min_width__300px_"))return"@media screen and (min-width: 300px)";if(X.name.includes("@screen_and__min_width__600px_"))return"@media screen and (min-width: 600px)";if(X.name.includes("@")&&X.name.includes("_"))return"@media (unknown-breakpoint)";return null}function dX(X){let Z=X?.$name||"Design System",Y=X?.$version||"1.0.0",q=new Date().toISOString();return`/**
|
|
124
127
|
* ${Z} - CSS Custom Properties
|
|
125
128
|
* Version: ${Y}
|
|
126
129
|
* Generated: ${q}
|
|
127
130
|
*
|
|
128
131
|
* This file contains CSS custom properties (CSS variables) generated from design tokens.
|
|
129
132
|
* Do not edit this file directly - it will be overwritten.
|
|
130
|
-
*/`}function
|
|
133
|
+
*/`}function I1(X){let Z=X.replace(/\r?\n|\r/g,"").replace(/\s+/g," ").trim();return`data:image/svg+xml;base64,${Buffer.from(Z,"utf8").toString("base64")}`}function SY(X,Z={}){let{customHeader:Y,objectPath:q="universe.custom.path.icons",isHost:$=!1,defaultMode:U="light"}=Z,W="--"+q.replace(/\./g,"-"),K="";if(Y)K+=Y+`
|
|
131
134
|
|
|
132
135
|
`;else K+=`/**
|
|
133
136
|
* Icon CSS - Base64 Encoded SVG Icons as CSS Custom Properties
|
|
@@ -143,21 +146,21 @@ ${z.sort().map((H)=>` ${H}`).join(`
|
|
|
143
146
|
* Do not edit this file directly - it will be overwritten.
|
|
144
147
|
*/
|
|
145
148
|
|
|
146
|
-
`;let z=
|
|
147
|
-
`;let G=[...X].sort((E
|
|
149
|
+
`;let z=i(U,U,$);K+=`${z} {
|
|
150
|
+
`;let G=[...X].sort((A,E)=>A.name.localeCompare(E.name));for(let A of G){let E=A.name.replace(/([A-Z])/g,"-$1").toLowerCase().replace(/^-/,""),L=A.category?`${W}-${A.category}-${E}`:`${W}-${E}`;if(Z.hooks?.shortenName?.enabled)L=bY(L,Z.hooks);let H=I1(A.value);K+=` ${L}: url("${H}");
|
|
148
151
|
`}return K+=`}
|
|
149
152
|
`,{fileName:"tokens.icons.css",content:K.trim()+`
|
|
150
|
-
`}}var
|
|
151
|
-
`}function
|
|
153
|
+
`}}var uX=S(()=>{g()});import{readFileSync as w1,existsSync as R1}from"fs";import{join as rZ,relative as M1}from"path";async function PY(){try{let{assets:X}=await d(!0),{icons:Z}=await T(),Y=await o(),q=X?.icons?.distDir??"build",$=rZ(Y,q),U=rZ($,"tokens",await WX("json"));if(!R1(U)){let _=M1(process.cwd(),U);return console.log(`ℹ️ Icon data not found (skipping icon types): ${_}`),console.log(" Run icon build first if you need icon types generated."),[]}let W=JSON.parse(w1(U,"utf8")),K=Z?.objectPath??"universe.icons",z=K.split("."),G=W;for(let _ of z)if(G&&typeof G==="object"&&_ in G)G=G[_];else throw Error(`Icon path ${K} not found in icons file`);let A=[],E=Object.keys(G)[0],L=G[E];if(L&&typeof L==="object"&&"$value"in L){for(let[_,Q]of Object.entries(G))if(typeof Q==="object"&&Q!==null){let J=Q;if(_.startsWith("$"))continue;A.push({name:_,category:"",value:J.$value||"",description:J.$description||"",style:J.$style||"",dimensions:J.$extensions?.dimensions||J.$dimensions})}}else for(let[_,Q]of Object.entries(G))if(typeof Q==="object"&&Q!==null){for(let[J,O]of Object.entries(Q))if(typeof O==="object"&&O!==null){let B=O;if(J.startsWith("$"))continue;A.push({name:J,category:_,value:B.$value||"",description:B.$description||"",style:B.$style||"",dimensions:B.$extensions?.dimensions||B.$dimensions})}}return A}catch(X){if(X instanceof Error){if("code"in X&&X.code!=="ENOENT")console.warn(`⚠️ Could not load icon data: ${X.message}`)}return[]}}async function CY(X,Z={},Y){let{generateTypes:q=!0,generateConsts:$=!0}=Z,U=Z.icons;if(!U)U=await PY();let W={...Z,icons:U},K=[];if(q)K.push({fileName:"tokens.types.ts",content:N1(X,W),type:"types"});if($)K.push({fileName:"tokens.constants.ts",content:F1(X,W),type:"constants"});return K.push({fileName:"index.ts",content:x1(K,Y),type:"index"}),K}function N1(X,Z){let{tokenInterface:Y="DesignTokens",includeJSDoc:q=!0,icons:$=[]}=Z,U=VY("Type Definitions");if(U+=j1(X,q),U+=b1(X,q),$.length>0)U+=D1($,q);return U+=S1(X,Y,q),U+=C1(X,q),U+`
|
|
154
|
+
`}function F1(X,Z){let{includeJSDoc:Y=!0,icons:q=[]}=Z,$=VY("Token Constants"),U="TokenPaths, CSSVariableNames";if(q.length>0)U+=", IconNames, IconCategories, Icon";if($+=`import type { ${U} } from './tokens.types';
|
|
152
155
|
|
|
153
|
-
`,$+=
|
|
154
|
-
`}function
|
|
156
|
+
`,$+=V1(X,Y),$+=y1(X,Y),q.length>0)$+=T1(q,Y);return $+=g1(X,Y),$+`
|
|
157
|
+
`}function x1(X,Z){let Y=VY("Main Export");if(X.some((q)=>q.type==="types"))Y+=`export type * from './tokens.types';
|
|
155
158
|
`;if(X.some((q)=>q.type==="constants"))Y+=`export * from './tokens.constants';
|
|
156
|
-
`;if(Z)try{let q=
|
|
159
|
+
`;if(Z)try{let q=n("fs"),U=n("path").join(Z,"typescript","tokens.icons.ts");if(q.existsSync(U))Y+=`export type * from './tokens.icons';
|
|
157
160
|
`,Y+=`export * from './tokens.icons';
|
|
158
161
|
`}catch(q){}return Y+=`
|
|
159
162
|
`,Y+`
|
|
160
|
-
`}function
|
|
163
|
+
`}function j1(X,Z){let Y=X.map(($)=>`"${$.name}"`).join(`
|
|
161
164
|
| `),q="";if(Z)q+=`/**
|
|
162
165
|
* All available token paths as string literals
|
|
163
166
|
*/
|
|
@@ -165,7 +168,7 @@ ${z.sort().map((H)=>` ${H}`).join(`
|
|
|
165
168
|
| ${Y};
|
|
166
169
|
|
|
167
170
|
`,q+`
|
|
168
|
-
`}function
|
|
171
|
+
`}function b1(X,Z){let Y=f1(X),q="";for(let[$,U]of Y){let W=`${h1($)}TokenValue`,K=new Set(U.map((G)=>NX(G.value))),z=Array.from(K).join(`
|
|
169
172
|
| `);if(Z)q+=`/**
|
|
170
173
|
* Possible values for ${$} tokens
|
|
171
174
|
*/
|
|
@@ -173,7 +176,7 @@ ${z.sort().map((H)=>` ${H}`).join(`
|
|
|
173
176
|
| ${z};
|
|
174
177
|
|
|
175
178
|
`}return q+`
|
|
176
|
-
`}function
|
|
179
|
+
`}function D1(X,Z){let Y="",q=X.map((W)=>`"${W.name}"`).join(`
|
|
177
180
|
| `);if(Z)Y+=`/**
|
|
178
181
|
* All available icon names as string literals
|
|
179
182
|
*/
|
|
@@ -209,23 +212,23 @@ ${z.sort().map((H)=>` ${H}`).join(`
|
|
|
209
212
|
`,Y+=`}
|
|
210
213
|
|
|
211
214
|
`,Y+`
|
|
212
|
-
`}function
|
|
215
|
+
`}function S1(X,Z,Y){let q="";if(Y)q+=`/**
|
|
213
216
|
* Design tokens interface with all token paths and their values
|
|
214
217
|
*/
|
|
215
218
|
`;q+=`export interface ${Z} {
|
|
216
219
|
`;for(let $ of X){if(Y&&$.description)q+=` /** ${$.description} */
|
|
217
|
-
`;q+=` "${$.name}": ${
|
|
220
|
+
`;q+=` "${$.name}": ${NX($.value)};
|
|
218
221
|
`}return q+=`}
|
|
219
222
|
|
|
220
|
-
`,q+=
|
|
221
|
-
`}function
|
|
223
|
+
`,q+=P1(X,`${Z}Nested`,Y),q+`
|
|
224
|
+
`}function P1(X,Z,Y){let q=v1(X),$="";if(Y)$+=`/**
|
|
222
225
|
* Design tokens interface with nested structure
|
|
223
226
|
*/
|
|
224
227
|
`;return $+=`export interface ${Z} {
|
|
225
|
-
`,$+=
|
|
228
|
+
`,$+=sZ(q,1),$+=`}
|
|
226
229
|
|
|
227
230
|
`,$+`
|
|
228
|
-
`}function
|
|
231
|
+
`}function C1(X,Z){let q=Array.from(new Set(X.map((U)=>U.cssVar))).map((U)=>`"${U}"`).join(`
|
|
229
232
|
| `),$="";if(Z)$+=`/**
|
|
230
233
|
* All available CSS variable names
|
|
231
234
|
*/
|
|
@@ -233,7 +236,7 @@ ${z.sort().map((H)=>` ${H}`).join(`
|
|
|
233
236
|
| ${q};
|
|
234
237
|
|
|
235
238
|
`,$+`
|
|
236
|
-
`}function
|
|
239
|
+
`}function V1(X,Z){let Y="";if(Z)Y+=`/**
|
|
237
240
|
* Object containing all token values
|
|
238
241
|
*/
|
|
239
242
|
`;Y+=`export const tokenValues = {
|
|
@@ -241,7 +244,7 @@ ${z.sort().map((H)=>` ${H}`).join(`
|
|
|
241
244
|
`;Y+=` "${q.name}": ${JSON.stringify(q.value)},
|
|
242
245
|
`}return Y+=`} as const;
|
|
243
246
|
|
|
244
|
-
`,Y}function
|
|
247
|
+
`,Y}function T1(X,Z){let Y="";if(Z)Y+=`/**
|
|
245
248
|
* Array of all available icons
|
|
246
249
|
*/
|
|
247
250
|
`;Y+=`export const icons: Icon[] = [
|
|
@@ -284,7 +287,7 @@ ${z.sort().map((H)=>` ${H}`).join(`
|
|
|
284
287
|
`,Y+=`}
|
|
285
288
|
|
|
286
289
|
`,Y+`
|
|
287
|
-
`}function
|
|
290
|
+
`}function y1(X,Z){let Y="";if(Z)Y+=`/**
|
|
288
291
|
* Object mapping token paths to CSS variable names
|
|
289
292
|
*/
|
|
290
293
|
`;Y+=`export const cssVariableNames = {
|
|
@@ -292,7 +295,7 @@ ${z.sort().map((H)=>` ${H}`).join(`
|
|
|
292
295
|
`;return Y+=`} as const;
|
|
293
296
|
|
|
294
297
|
`,Y+`
|
|
295
|
-
`}function
|
|
298
|
+
`}function g1(X,Z){let Y="";if(Z)Y+=`/**
|
|
296
299
|
* Get the value of a design token
|
|
297
300
|
*/
|
|
298
301
|
`;if(Y+=`export function getTokenValue<T extends TokenPaths>(tokenPath: T): typeof tokenValues[T] {
|
|
@@ -321,10 +324,10 @@ ${z.sort().map((H)=>` ${H}`).join(`
|
|
|
321
324
|
}
|
|
322
325
|
|
|
323
326
|
`,Y+`
|
|
324
|
-
`}function
|
|
325
|
-
`,Y+=
|
|
327
|
+
`}function f1(X){let Z=new Map;for(let Y of X){if(!Z.has(Y.type))Z.set(Y.type,[]);Z.get(Y.type).push(Y)}return Z}function v1(X){let Z={};for(let Y of X){if(Y.path.some((z)=>z.includes("@")||z.includes("#")||z.includes("-")||z.includes(".")))continue;let $=Z,U=[...Y.path];for(let z=0;z<U.length-1;z++){let G=U[z];if(!$[G])$[G]={};$=$[G]}let W=U[U.length-1],K=NX(Y.value);$[W]=K}return Z}function sZ(X,Z){let Y="",q=" ".repeat(Z);for(let[$,U]of Object.entries(X)){let W=/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test($)?$:`"${$}"`;if(typeof U==="object"&&!Array.isArray(U))Y+=`${q}${W}: {
|
|
328
|
+
`,Y+=sZ(U,Z+1),Y+=`${q}};
|
|
326
329
|
`;else Y+=`${q}${W}: ${U};
|
|
327
|
-
`}return Y}function
|
|
330
|
+
`}return Y}function NX(X){if(typeof X==="string")return`"${X}"`;else if(typeof X==="number")return X.toString();else if(typeof X==="boolean")return X.toString();else if(Array.isArray(X)){let Z=new Set(X.map((q)=>NX(q)));return`Array<${Array.from(Z).join(" | ")}>`}else if(X===null)return"null";else if(X===void 0)return"undefined";else if(typeof X==="object"&&X!==null)return`{ ${Object.entries(X).map(([q,$])=>`${q}: ${NX($)}`).join("; ")} }`;else return"unknown"}function h1(X){if(!X||typeof X!=="string")return"";return X.charAt(0).toUpperCase()+X.slice(1)}function VY(X){let Z=new Date().toISOString();return`/**
|
|
328
331
|
* ${X}
|
|
329
332
|
* Generated: ${Z}
|
|
330
333
|
*
|
|
@@ -332,7 +335,7 @@ ${z.sort().map((H)=>` ${H}`).join(`
|
|
|
332
335
|
* Do not edit this file directly - it will be overwritten.
|
|
333
336
|
*/
|
|
334
337
|
|
|
335
|
-
`}var
|
|
338
|
+
`}var TY=S(()=>{g()});import{readFileSync as m1,mkdirSync as nZ}from"fs";import{writeFile as iZ,readdir as p1,mkdir as d1}from"fs/promises";import{resolve as u1,relative as aZ,join as kX,dirname as tZ}from"path";import k1 from"lodash";async function oZ(X){let Z=await p1(X,{withFileTypes:!0}),Y=await Promise.all(Z.map((q)=>{let $=u1(X,q.name);return q.isDirectory()?oZ($):$}));return Array.prototype.concat(...Y)}async function eZ(X,Z){if(!X)throw Error("outputDir is required for buildIcons");let{assets:Y,icons:q,tokenNamespace:$,__dirname:U,buildDir:W}=await r(),K=kX(U,Y?.icons?.sourceDir??"icons"),z="build",G=Y?.icons?.distDir??z,A=kX(U,G),E=kX(U,W,"icons");if(!Y?.icons?.sourceDir){console.warn("Skipping icon build: iconsDir is not defined in the project paths.");return}t(kX(U,W));let L=(await oZ(K)).filter((M)=>M.endsWith(".svg")),Q=(await Promise.all(L.map(async(M)=>{let N=m1(M,"utf8").replace(/(\s+(?=(?:[^"]*"[^"]*")*[^"]*$))/g," ").trim()??"";N=await JY(N);let YX=aZ(K,M).split("/").pop(),xX=(N.match(/name="(.*?)"/)??[])[1]??YX?.replace(".svg",""),lX=(N.match(/data-style="(.*?)"/)??[])[1],_0=(N.match(/description="(.*?)"/)??[])[1],[dY]=N.match(/<svg[^>]*>/)??[],[,Q0]=dY?.match(/width="([\d.]+)(px)?"/)??[],[,O0]=dY?.match(/height="([\d.]+)(px)?"/)??[];if(lX!=="animated"&&lX!=="custom")return{path:M,folder:aZ(K,M).split("/").slice(0,-1).concat(xX),file:YX,style:lX,content:N,name:xX,dimensions:{width:Number(Q0),height:Number(O0)},description:_0??""};return}))).filter((M)=>M!==void 0).reduce((M,N)=>{if(N?.style!=="animated"&&N?.style!=="custom"&&N)yY(M,N.folder.join("."),{$type:"icon",$name:N.name,$description:N.description,$style:N.style,$value:N.content,$extensions:{dimensions:N.dimensions},...c1(M,N.folder.join("."))});return M},{}),J=q?.objectPath??`${$}.icons`,B=Object.keys(Q).some((M)=>M.includes("."));Object.keys(Q).forEach(async(M)=>{let N,YX;if(B)N=`${E}/${M}`,YX=`${N}/svg.${M}.tokens.json`;else N=E,YX=`${E}/svg.${M}.tokens.json`;await d1(N,{recursive:!0});let xX=yY({},`${J}${J?".":""}${M}`,Q[M]);await iZ(YX,JSON.stringify(xX,null,2),{flag:"w",encoding:"utf-8"})});let R=`${A}/tokens/${await WX("json")}`,I=tZ(R);nZ(I,{recursive:!0});let w=yY({},J,Q);await iZ(R,JSON.stringify(w,null,2),{flag:"w",encoding:"utf-8"}),await l1(Q,X,Z)}async function l1(X,Z,Y){let{writeFileSync:q}=n("fs"),{join:$}=n("path");try{let U=Object.keys(X).sort(),W=`/**
|
|
336
339
|
* Icon Names Type Definition
|
|
337
340
|
* Generated: ${new Date().toISOString()}
|
|
338
341
|
*
|
|
@@ -341,30 +344,30 @@ ${z.sort().map((H)=>` ${H}`).join(`
|
|
|
341
344
|
*/
|
|
342
345
|
|
|
343
346
|
export const icons = [
|
|
344
|
-
${U.map((
|
|
347
|
+
${U.map((G)=>`'${G}'`).join(`,
|
|
345
348
|
`)}
|
|
346
349
|
] as const;
|
|
347
350
|
|
|
348
351
|
export type IconName = typeof icons[number];
|
|
349
|
-
`,K=$(Z,"typescript","tokens.icons.ts");q(K,W,"utf-8"),console.log(`✓ Generated ${U.length} icon names`)}catch(U){console.error("Failed to generate icon names:",U)}}var
|
|
352
|
+
`,K=$(Z,"typescript","tokens.icons.ts"),z=tZ(K);nZ(z,{recursive:!0}),q(K,W,"utf-8"),console.log(`✓ Generated ${U.length} icon names`)}catch(U){console.error("Failed to generate icon names:",U)}}var yY,c1;var X0=S(()=>{g();({set:yY,get:c1}=k1)});function q0(X,Z={}){let Y=[],q=Z.typescript?"ts":"js",$=Z.modes||[],U=X.filter((K)=>K.extensions?.mediaQuery||K.name.includes("@screen")||K.name.includes("@_")),W=X.filter((K)=>!K.extensions?.mediaQuery&&!K.name.includes("@screen")&&!K.name.includes("@_"));if(Z.separateThemeFiles&&$.length>0){let K=$.join("|"),z=new RegExp(`#(${K})$`),G=new Map;for(let A of $)G.set(A,[]);for(let A of W){let E=A.name.match(z);if(E){let L=E[1];G.get(L).push(A)}else{let L=$[0];G.get(L).push(A)}}for(let A of $){let E=G.get(A)||[];if(E.length>0){if(Z.typescript){let L=$0(E,A);Y.push({fileName:`${A}.d.ts`,content:t1(L,Z,A),theme:A})}Y.push({fileName:`${A}.${q}`,content:Z0(E,{...Z,theme:A}),theme:A})}}}else Y.push({fileName:`tokens.${q}`,content:Z0(W,Z)});if(U.length>0)Y.push({fileName:`breakpoints.${q}`,content:r1(U,X,Z)});if(Z.separateThemeFiles&&Y.length>1)Y.push({fileName:`index.${q}`,content:e1(Y,Z)});return Y}function r1(X,Z,Y={}){let{typescript:q,includeJSDoc:$,moduleType:U="es",customHeader:W,modes:K=[]}=Y,z=new Map(Z.map((L)=>[L.name,L])),G={};for(let L of X){let H=L.extensions?.mediaQuery||s1(L.name),_=K.length>0?K[0]:"default";for(let O of K)if(L.name.includes(`#${O}`)){_=O;break}if(typeof H==="string"&&H.includes("{")&&H.includes("}"))H=a1(H,z);if(!G[H])G[H]={};if(!G[H][_])G[H][_]={};let Q=i1(L.name),J=n1(Q,cX(L.value,z));G[H][_]={...G[H][_],...J}}let A=Object.keys(G).sort((L,H)=>{let _=Y0(L),Q=Y0(H);return _-Q}).reduce((L,H)=>{return L[H]=G[H],L},{}),E="";if(W)E+=`${W}
|
|
350
353
|
|
|
351
|
-
`;else
|
|
352
|
-
`,
|
|
353
|
-
`,
|
|
354
|
-
`,
|
|
355
|
-
`,
|
|
354
|
+
`;else E+=`/**
|
|
355
|
+
`,E+=` * Design Tokens - Breakpoints
|
|
356
|
+
`,E+=` * Auto-generated from design token definitions
|
|
357
|
+
`,E+=` * Do not edit this file directly
|
|
358
|
+
`,E+=` */
|
|
356
359
|
|
|
357
|
-
`;if(q)
|
|
358
|
-
`;if(U==="es"){if(q)
|
|
360
|
+
`;if(q)E+=U0(A,$),E+=`
|
|
361
|
+
`;if(U==="es"){if(q)E+=`const breakpoints: Tokens = ${XX(A,$,0)};
|
|
359
362
|
|
|
360
|
-
`;else
|
|
363
|
+
`;else E+=`const breakpoints = ${XX(A,$,0)};
|
|
361
364
|
|
|
362
|
-
`;
|
|
363
|
-
`}else
|
|
365
|
+
`;E+=`export default breakpoints;
|
|
366
|
+
`}else E+=`const breakpoints = ${XX(A,$,0)};
|
|
364
367
|
|
|
365
|
-
`,
|
|
366
|
-
`,
|
|
367
|
-
`;return
|
|
368
|
+
`,E+=`module.exports = breakpoints;
|
|
369
|
+
`,E+=`module.exports.default = breakpoints;
|
|
370
|
+
`;return E}function s1(X){if(X.includes("@_max_width_")){let Z=X.match(/@_max_width___(.+?)__/);if(Z)return`screen and (max-width: {${Z[1].replace(/_/g,".")}})`}if(X.includes("@_min_width_")){let Z=X.match(/@_min_width___(.+?)__/);if(Z)return`screen and (min-width: {${Z[1].replace(/_/g,".")}})`}return"screen"}function i1(X){let Z=X.replace(/@_.*?__/,"").replace(/@screen.*/,"").replace(/#[^#]*$/,"").replace(/^universe\./,"");return Z=Z.replace(/_universe_foundation_breakpoint_screen_width_[^_]+__?$/,""),Z}function Y0(X){let Z=X.match(/(\d+(?:\.\d+)?)/);return Z?parseFloat(Z[1]):0}function a1(X,Z){return X.replace(/\{([^}]+)\}/g,(Y,q)=>{let $=Z.get(q);if($){let U=$.value;if(typeof U==="object"&&U!==null&&"$value"in U)U=U.$value;return String(U)}return Y})}function n1(X,Z){let Y=X.split("."),q={},$=q;for(let U=0;U<Y.length-1;U++)$[Y[U]]={},$=$[Y[U]];return $[Y[Y.length-1]]=Z,q}function Z0(X,Z={}){let{typescript:Y,includeJSDoc:q,moduleType:$="es",customHeader:U,theme:W}=Z,K="";if(U)K+=`${U}
|
|
368
371
|
|
|
369
372
|
`;else K+=`/**
|
|
370
373
|
`,K+=` * Design Tokens - ${W?`${W.charAt(0).toUpperCase()+W.slice(1)} Theme`:"All Tokens"}
|
|
@@ -372,27 +375,27 @@ export type IconName = typeof icons[number];
|
|
|
372
375
|
`,K+=` * Do not edit this file directly
|
|
373
376
|
`,K+=` */
|
|
374
377
|
|
|
375
|
-
`;let z
|
|
378
|
+
`;let z=$0(X,W);if(Y)if(Z.separateThemeFiles&&W)K+=`import type { Tokens } from "./${W}.d";
|
|
376
379
|
|
|
377
|
-
`;else K+=
|
|
378
|
-
`;if($==="es"){if(Y)K+=`const tokens: Tokens = ${
|
|
380
|
+
`;else K+=U0(z,q),K+=`
|
|
381
|
+
`;if($==="es"){if(Y)K+=`const tokens: Tokens = ${XX(z,q,0)};
|
|
379
382
|
|
|
380
|
-
`;else K+=`const tokens = ${
|
|
383
|
+
`;else K+=`const tokens = ${XX(z,q,0)};
|
|
381
384
|
|
|
382
385
|
`;K+=`export default tokens;
|
|
383
386
|
`;let G=Object.keys(z);if(G.length>0){K+=`
|
|
384
387
|
// Named exports for convenience
|
|
385
|
-
`;for(let
|
|
386
|
-
`}}else K+=`const tokens = ${
|
|
388
|
+
`;for(let A of G)K+=`export const ${A} = tokens.${A};
|
|
389
|
+
`}}else K+=`const tokens = ${XX(z,q,0)};
|
|
387
390
|
|
|
388
391
|
`,K+=`module.exports = tokens;
|
|
389
392
|
`,K+=`module.exports.default = tokens;
|
|
390
393
|
`;return K+`
|
|
391
|
-
`}function
|
|
394
|
+
`}function $0(X,Z){let Y={},q=new Map(X.map(($)=>[$.name,$]));for(let $ of X){let U=$.name;if(Z){if(U.includes(`#${Z}`))U=U.replace(`#${Z}`,"")}else U=U.replace(/#[^#]*$/,"");let W=U.split("."),K=Y;for(let G=0;G<W.length-1;G++){let A=W[G];if(!K[A])K[A]={};K=K[A]}let z=W[W.length-1];K[z]=cX($.value,q)}return Y}function cX(X,Z){if(typeof X==="object"&&X!==null&&!Array.isArray(X)){let Y=X;if(Y.color&&typeof Y.color==="string"&&Y.color.includes("{")&&Y.color.includes("}")){let q=m(X,"shadow");if(typeof q==="string"&&!q.includes("{")){let $={...Y},U=q.split(" "),W=U[U.length-1];if(W&&W.startsWith("#"))$.color=W;else $.color=m(Y.color,"color");return $}}}if(typeof X==="string"){if(X.startsWith("{")&&X.endsWith("}")){let Y=X.slice(1,-1),q=Z.get(Y);if(q)return q.value;let $=m(X,"color");if($!==X)return $}return X}if(Array.isArray(X))return X.map((Y)=>cX(Y,Z));if(typeof X==="object"&&X!==null){let Y={};for(let[q,$]of Object.entries(X))Y[q]=cX($,Z);return Y}return X}function U0(X,Z){let Y="";if(Z)Y+=`/**
|
|
392
395
|
* Token object type definition
|
|
393
396
|
*/
|
|
394
|
-
`;return Y+=`type Tokens = ${
|
|
395
|
-
`,Y}function
|
|
397
|
+
`;return Y+=`type Tokens = ${gY(X,0)};
|
|
398
|
+
`,Y}function t1(X,Z,Y){let{customHeader:q,includeJSDoc:$}=Z,U="";if(q)U+=`${q}
|
|
396
399
|
|
|
397
400
|
`;else{let W=Y?` - ${Y.charAt(0).toUpperCase()+Y.slice(1)} Theme`:"";U+=`/**
|
|
398
401
|
`,U+=` * Universe Design System Tokens - Type Definitions${W}
|
|
@@ -403,14 +406,14 @@ export type IconName = typeof icons[number];
|
|
|
403
406
|
`}if($)U+=`/**
|
|
404
407
|
* Token object type definition
|
|
405
408
|
*/
|
|
406
|
-
`;return U+=`export type Tokens = ${
|
|
409
|
+
`;return U+=`export type Tokens = ${gY(X,0)};
|
|
407
410
|
`,U+`
|
|
408
|
-
`}function
|
|
409
|
-
`;for(let[U,W]of q){let K=
|
|
410
|
-
`}return $+=" ".repeat(Z)+"}",$}function
|
|
411
|
-
`;for(let K=0;K<U.length;K++){let[z,G]=U[K],
|
|
412
|
-
`;let
|
|
413
|
-
`}return W+=`${q}}`,W}function
|
|
411
|
+
`}function gY(X,Z){if(typeof X!=="object"||X===null)return typeof X==="string"?"string":typeof X==="number"?"number":typeof X==="boolean"?"boolean":"any";let Y=" ".repeat(Z+1),q=Object.entries(X);if(q.length===0)return"{}";let $=`{
|
|
412
|
+
`;for(let[U,W]of q){let K=o1(U)?`"${U}"`:U;$+=`${Y}${K}: ${gY(W,Z+1)};
|
|
413
|
+
`}return $+=" ".repeat(Z)+"}",$}function o1(X){return X.startsWith("@")||X.includes(" ")||X.includes("-")||X.includes("(")||X.includes(")")||X.includes("@")||X.includes(":")||!/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(X)}function XX(X,Z,Y=0){if(typeof X!=="object"||X===null)return JSON.stringify(X);let q=" ".repeat(Y),$=" ".repeat(Y+1),U=Object.entries(X);if(U.length===0)return"{}";let W=`{
|
|
414
|
+
`;for(let K=0;K<U.length;K++){let[z,G]=U[K],A=K===U.length-1;if(Z&&typeof G==="string")W+=`${$}/** Token value: ${JSON.stringify(G)} */
|
|
415
|
+
`;let E=/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(z)?z:JSON.stringify(z),L=XX(G,Z,Y+1);W+=`${$}${E}: ${L}${A?"":","}
|
|
416
|
+
`}return W+=`${q}}`,W}function e1(X,Z){let Y=Z.typescript?"ts":"js",{moduleType:q="es",customHeader:$}=Z,U=(K)=>{return K.replace(/-([a-z])/g,(z,G)=>G.toUpperCase())},W="";if($)W+=`${$}
|
|
414
417
|
|
|
415
418
|
`;else W+=`/**
|
|
416
419
|
`,W+=` * Design Tokens - Index
|
|
@@ -428,7 +431,7 @@ export type IconName = typeof icons[number];
|
|
|
428
431
|
// Default export points to light theme
|
|
429
432
|
`,W+=`module.exports = require('./light');
|
|
430
433
|
`}return W+`
|
|
431
|
-
`}var
|
|
434
|
+
`}var K0=S(()=>{uX()});var W0={};sX(W0,{validateCSSFiles:()=>X2,printValidationResults:()=>Y2});import{readFileSync as fY,existsSync as zX}from"fs";import{join as k}from"path";function X2(X,Z){let Y={isValid:!0,errors:[],warnings:[],checks:[]},q=k(X,"css"),$=k(q,"tokens.css"),U=zX($);if(Y.checks.push({name:"CSS file exists: tokens.css",passed:U,message:U?void 0:"Missing required CSS file: tokens.css"}),!U)Y.errors.push("Missing required CSS file: tokens.css"),Y.isValid=!1;if(Z.$metaData?.tokens?.css?.mediaQuery?.separateThemeFiles??!1){let E=k(q,"tokens.dark.css"),L=zX(E);if(Y.checks.push({name:"CSS file exists: tokens.dark.css",passed:L,message:L?void 0:"Missing required CSS file: tokens.dark.css (separateThemeFiles is enabled)"}),!L)Y.errors.push("Missing required CSS file: tokens.dark.css (separateThemeFiles is enabled)"),Y.isValid=!1}let K=k(q,"tokens.breakpoints.css");if(zX(K))Y.checks.push({name:"CSS file exists: tokens.breakpoints.css",passed:!0,message:void 0});let G=Z.$metaData?.tokens?.css?.hooks?.shortenName;if(G?.enabled&&zX(k(q,"tokens.css"))){let E=fY(k(q,"tokens.css"),"utf8");if(G.prefix)for(let{find:L,replace:H}of G.prefix){let _=`--${MX}-${L}`,Q=`--${H}`,J=E.includes(_),O=E.includes(Q);if(Y.checks.push({name:`Prefix hook applied: ${L} → ${H}`,passed:!J&&O,message:J?`Old prefix "${_}" still found in CSS, should be "${Q}"`:void 0}),J)Y.errors.push(`Prefix transformation failed: "${_}" should be replaced with "${Q}"`),Y.isValid=!1}if(G.suffix)for(let{find:L,replace:H}of G.suffix){let Q=new RegExp(`--[^:]+${L.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}:`,"g").test(E);if(Y.checks.push({name:`Suffix hook applied: ${L} → ${H}`,passed:!Q,message:Q?`Old suffix "${L}" still found in CSS variable names`:void 0}),Q)Y.errors.push(`Suffix transformation failed: "${L}" should be removed/replaced with "${H}"`),Y.isValid=!1}}if(zX(k(q,"tokens.css"))){let L=fY(k(q,"tokens.css"),"utf8").match(/:\s*{[^}]+}/g);if(Y.checks.push({name:"No unresolved token references",passed:!L,message:L?`Found unresolved references: ${L.join(", ")}`:void 0}),L)Y.errors.push(`Unresolved token references found: ${L.join(", ")}`),Y.isValid=!1}let A=["tokens.css","tokens.dark.css","tokens.breakpoints.css"];for(let E of A){let L=k(q,E);if(zX(L)){let H=fY(L,"utf8"),_=(H.match(/\{/g)||[]).length-(H.match(/\}/g)||[]).length;if(Y.checks.push({name:`CSS syntax valid: ${E}`,passed:_===0,message:_!==0?`Mismatched braces in ${E}`:void 0}),_!==0)Y.errors.push(`CSS syntax error in ${E}: mismatched braces`),Y.isValid=!1}}return Y}function Y2(X){console.log(`
|
|
432
435
|
|
|
433
436
|
Build Validation Results:`),console.log("========================================================");for(let Z of X.checks){let Y=Z.passed?"✓":"✗";if(console.log(` ${Y} ${Z.name}`),Z.message)console.log(` ${Z.message}`)}if(X.warnings.length>0){console.log(`
|
|
434
437
|
⚠️ Warnings:`);for(let Z of X.warnings)console.log(` ${Z}`)}if(X.errors.length>0){console.log(`
|
|
@@ -436,7 +439,7 @@ Build Validation Results:`),console.log("=======================================
|
|
|
436
439
|
Validation Summary:`),console.log(` - Checks: ${X.checks.filter((Z)=>Z.passed).length}/${X.checks.length} passed`),console.log(` - Errors: ${X.errors.length}`),console.log(` - Warnings: ${X.warnings.length}`),console.log(`
|
|
437
440
|
${X.isValid?"✅":"❌"} Build ${X.isValid?"passed":"failed"}`),console.log(`
|
|
438
441
|
========================================================
|
|
439
|
-
`)}var
|
|
442
|
+
`)}var G0=S(()=>{g()});import{writeFileSync as Z2,mkdirSync as q2,existsSync as hY,readFileSync as vY,readdirSync as $2,statSync as z0}from"fs";import{join as V,dirname as FX}from"path";function U2(X,Z,Y=!1,q=!1){let $=[],U=[],W=[];for(let z of X)if(z.fileName.includes("breakpoint"))U.push(`@import url("./css/${z.fileName}");`);else W.push(`@import url("./css/${z.fileName}");`);if($.push(...W),Y)$.push('@import url("./css/tokens.icons.css");');if(q)$.push('@import url("./css/fonts.css");');$.push(...U);let K=`/**
|
|
440
443
|
* ${Z} Design System - Main CSS Entry Point
|
|
441
444
|
* Generated: ${new Date().toISOString()}
|
|
442
445
|
*
|
|
@@ -449,7 +452,7 @@ ${X.isValid?"✅":"❌"} Build ${X.isValid?"passed":"failed"}`),console.log(`
|
|
|
449
452
|
${$.join(`
|
|
450
453
|
`)}
|
|
451
454
|
`;return{fileName:`${Z}.design-system.tokens.css`,content:K+`
|
|
452
|
-
`,theme:void 0}}function
|
|
455
|
+
`,theme:void 0}}function K2(X,Z,Y=!1,q=!1,$,U){let{readFileSync:W}=n("fs"),{join:K}=n("path"),z=[],G=(H)=>{try{let _=K($,"css",H);return W(_,"utf-8")}catch(_){return console.warn(`Could not read ${H}:`,_),""}},A=[];for(let H of X){let _=G(H.fileName);if(!_)continue;if(H.fileName.includes("breakpoint"))A.push(_);else z.push(_)}let E=U?.$paths?.assets?.icons?.excludeFromRaw??!1;if(Y&&!E){let H=G("tokens.icons.css");if(H)z.push(H)}if(q){let H=G("fonts.css");if(H)z.push(H)}z.push(...A);let L=`/**
|
|
453
456
|
* ${Z} Design System - Raw/Inline CSS
|
|
454
457
|
* Generated: ${new Date().toISOString()}
|
|
455
458
|
*
|
|
@@ -464,29 +467,29 @@ ${z.join(`
|
|
|
464
467
|
|
|
465
468
|
`)}
|
|
466
469
|
`;return{fileName:`${Z}.design-system.tokens.raw.css`,content:L+`
|
|
467
|
-
`,theme:void 0}}function
|
|
470
|
+
`,theme:void 0}}function W2(X,Z){let Y=X.replace(/\\/g,"/");if(Z.replace(/\\/g,"/").startsWith(Y))return{valid:!1,error:`⚠️ Compositions directory cannot be inside tokens directory.
|
|
468
471
|
`+` Tokens dir: ${X}
|
|
469
472
|
Compositions dir: ${Z}
|
|
470
|
-
Please move compositions to a separate directory (e.g., './compositions')`};return{valid:!0}}function
|
|
471
|
-
`),G.length===0)
|
|
472
|
-
`);$.push({fileName:z,content:
|
|
473
|
-
`,theme:void 0})}return $}async function
|
|
474
|
-
Starting token build process...`,X.verbose);let{initializeColorspace:q}=await Promise.resolve().then(() => (
|
|
475
|
-
Generating CSS files...`,X.verbose);let G=
|
|
476
|
-
Generated icon tokens`,X.verbose)}catch(G){if(X.verbose)console.warn("Could not build icon tokens:",G)}if(X.generateCSS!==!1)try{let G=await
|
|
477
|
-
Processing composition files...`,X.verbose);let O=
|
|
478
|
-
Generating TypeScript files...`,X.verbose);let G=
|
|
479
|
-
Generating JavaScript files...`,X.verbose);let G=
|
|
480
|
-
Generating JSON files...`,X.verbose);let G=
|
|
481
|
-
Build completed in ${Y.duration}ms`,X.verbose)}catch(q){let $=q instanceof Error?q.message:String(q);Y.errors.push($),
|
|
482
|
-
Validating build output...`,X.verbose);let{validateCSSFiles:q,printValidationResults:$}=await Promise.resolve().then(() => (
|
|
473
|
+
Please move compositions to a separate directory (e.g., './compositions')`};return{valid:!0}}function G2(X,Z){let Y=[];if(hY(X)){let q=z0(X);if(q.isDirectory())try{let $=$2(X);for(let U of $){if(!U.endsWith(".json"))continue;let W=V(X,U);if(z0(W).isFile())try{let z=vY(W,"utf-8"),G=JSON.parse(z);if(Array.isArray(G))Y.push(...G);else Y.push(G)}catch(z){console.warn(`⚠️ Failed to parse composition file ${U}:`,z)}}}catch($){console.warn("⚠️ Failed to read compositions directory:",$)}else if(q.isFile()&&X.endsWith(".json"))try{let $=vY(X,"utf-8"),U=JSON.parse($);if(Array.isArray(U))Y.push(...U);else Y.push(U)}catch($){console.warn("⚠️ Failed to parse compositions file:",$)}}if(Z&&Y.length===0){let q=V(Z,"compositions.json");if(hY(q))try{let $=vY(q,"utf-8"),U=JSON.parse($);if(Array.isArray(U))Y.push(...U)}catch($){console.warn("⚠️ Failed to parse compositions.json:",$)}}return Y}function A0(X,Z){let Y=Z.$metaData?.tokens?.css?.hooks?.shortenName;if(!Y?.enabled)return X;let q=X;if(Y.prefix&&Array.isArray(Y.prefix))for(let $ of Y.prefix)q=q.replace(new RegExp($.find,"g"),$.replace);if(Y.suffix&&Array.isArray(Y.suffix)){for(let $ of Y.suffix)if(q.endsWith($.find))q=q.substring(0,q.length-$.find.length)+$.replace}return q}function z2(X,Z){let Y=X.match(/^\{(.+)\}$/);if(Y){let $=Y[1].replace(/\./g,"-");return $=A0($,Z),`var(--${$})`}return X.replace(/\{([^}]+)\}/g,(q,$)=>{let U=$.replace(/\./g,"-");return U=A0(U,Z),`var(--${U})`})}function A2(X,Z,Y,q){let $=[],U=X.filter((z)=>z.platform==="css");if(U.length===0)return $;let W=new Map,K="compositions.css";for(let z of U){let G=z.fileName||"";if(G.endsWith(".css"))G=G.slice(0,-4);let A=G?`${G}.css`:K;if(!W.has(A))W.set(A,[]);W.get(A).push(z)}for(let[z,G]of W.entries()){let A=[];if(A.push("/**"),A.push(" * Design System Compositions - Generated Styles"),A.push(" * DO NOT EDIT THIS FILE DIRECTLY"),A.push(" * Generated from composition definitions"),A.push(` * Namespace: ${Z.$metaData?.dsNamespace||"ds"}.${Z.$metaData?.tokenNamespace||"tokens"}`),A.push(` * File: ${z}`),A.push(` */
|
|
474
|
+
`),G.length===0)A.push("/* No compositions defined */");else for(let L of G){A.push(`/* ${L.name} */`);let H=L.groupProperties,_=H&&(H.mediaQuery||H.parentSelector||H.containerQuery||H.customAtRule),Q="",J=[];if(_){if(H.customAtRule){let O=c(H.customAtRule,Y);A.push(`${O} {`),J.push("}"),Q=" "}if(H.mediaQuery){let O=c(H.mediaQuery,Y);A.push(`${Q}${O} {`),J.push("}"),Q+=" "}if(H.containerQuery){let O=c(H.containerQuery,Y);A.push(`${Q}${O} {`),J.push("}"),Q+=" "}if(H.parentSelector){let O=c(H.parentSelector,Y);A.push(`${Q}${O} {`),J.push("}"),Q+=" "}}A.push(`${Q}${L.selector} {`);for(let O of L.properties){let B=z2(O.token,Z);A.push(`${Q} ${O.property}: ${B};`)}A.push(`${Q}}`);while(J.length>0)Q=Q.slice(2),A.push(`${Q}${J.pop()}`);A.push("")}let E=A.join(`
|
|
475
|
+
`);$.push({fileName:z,content:E+`
|
|
476
|
+
`,theme:void 0})}return $}async function L0(X){let Z=Date.now(),Y={tokenCount:0,cssFiles:[],typescriptFiles:[],javascriptFiles:[],jsonFiles:[],duration:0,warnings:[],errors:[]};try{F(`
|
|
477
|
+
Starting token build process...`,X.verbose);let{initializeColorspace:q}=await Promise.resolve().then(() => (EX(),sY));await q(),F("Loading token files...",X.verbose);let $=RY(X.tokensDir);F("Parsing tokens...",X.verbose);let U=E2(X.config),W=MY($,U);if(F(`Found ${W.length} tokens`,X.verbose),Y.tokenCount=W.length,W.length===0&&U.namespace){let G=Object.keys($).filter((A)=>!A.startsWith("$"));if(G.length>0)Y.warnings.push(`⚠️ No tokens found matching tokenNamespace "${U.namespace}". Found root keys: ${G.join(", ")}. Please check if your $metaData.tokenNamespace in designid.config.ts matches.`)}let K=NY(W,U);if(F(`Resolved ${K.length} tokens`,X.verbose),X.generateCSS!==!1){F(`
|
|
478
|
+
Generating CSS files...`,X.verbose);let G=E0(X.config,X.cssOptions),A=hX(K,G);for(let E of A){let L=V(X.outputDir,"css",E.fileName);a(L,E.content),F(` ✓ ${E.fileName}`,X.verbose)}Y.cssFiles=A}if(X.generateCSS!==!1)try{await eZ(X.outputDir,X.config),F(`
|
|
479
|
+
Generated icon tokens`,X.verbose)}catch(G){if(X.verbose)console.warn("Could not build icon tokens:",G)}if(X.generateCSS!==!1)try{let G=await PY();if(G.length>0){let A=E0(X.config,X.cssOptions),E=X.config.$metaData?.modes?.isHost??!1,L=X.config.$modes?.default||"light",H=SY(G,{customHeader:dX(X.config),objectPath:X.config.$metaData?.icons?.objectPath||"universe.custom.path.icons",hooks:A.hooks,isHost:E,defaultMode:L}),_=V(X.outputDir,"css",H.fileName);if(a(_,H.content),F(` ✓ Generated ${H.fileName}`,X.verbose),Y.cssFiles)Y.cssFiles.push(H);else Y.cssFiles=[H]}}catch(G){if(X.verbose)console.warn("Could not generate icon CSS:",G)}let z=!1;if(X.generateCSS!==!1)try{let G=X.config.$fonts;if(G&&G.length>0){await BY(G,X.outputDir),F(" ✓ Generated fonts.css",X.verbose),z=!0;let A={fileName:"fonts.css",content:"Generated by appendTypographyTokens",theme:void 0};if(Y.cssFiles)Y.cssFiles.push(A);else Y.cssFiles=[A]}}catch(G){if(X.verbose)console.warn("Could not generate font CSS:",G)}if(X.generateCSS!==!1&&Y.cssFiles.length>0){let G=X.config.$metaData?.tokenNamespace||"tokens",A=Y.cssFiles.some((Q)=>Q.fileName==="tokens.icons.css"),E=X.config.$metaData?.modes?.isHost||!1,L=Y.cssFiles.filter((Q)=>{if(Q.fileName==="tokens.icons.css"||Q.fileName==="fonts.css")return!1;if(E&&Q.fileName.includes("composition"))return!1;return!0}),H=U2(L,G,A,z),_=V(X.outputDir,H.fileName);if(a(_,H.content),F(` ✓ Generated ${H.fileName}`,X.verbose),Y.cssFiles.push(H),E){let Q=K2(Y.cssFiles.filter((O)=>O.fileName!=="tokens.icons.css"&&O.fileName!=="fonts.css"&&!O.fileName.includes(".design-system.tokens.css")),G,A,z,X.outputDir,X.config),J=V(X.outputDir,Q.fileName);a(J,Q.content),F(` ✓ Generated ${Q.fileName} (raw/inline for web components)`,X.verbose),Y.cssFiles.push(Q)}}if(X.generateCSS!==!1&&X.config.$paths.compositionsDir)try{let G=X.config.$paths.baseDir,A=X.config.$paths.tokensDir,E=X.tokensDir,L=A.split("/").filter((O)=>O&&O!=="."&&O!=="..");for(let O=0;O<L.length;O++)E=FX(E);let H=G.split("/").filter((O)=>O&&O!=="."&&O!=="..");for(let O=0;O<H.length;O++)E=FX(E);let _=V(E,G,X.config.$paths.compositionsDir),Q=V(E,G);if(X.verbose)console.log(` Project root: ${E}`),console.log(` Base dir: ${Q}`),console.log(` Compositions dir: ${_}`);let J=W2(X.tokensDir,_);if(!J.valid)console.error(J.error),Y.errors.push(J.error);else{F(`
|
|
480
|
+
Processing composition files...`,X.verbose);let O=G2(_,Q);if(O.length>0){F(` Found ${O.length} composition(s)`,X.verbose);let B=new Map;for(let I of K){let w=Array.isArray(I.path)?I.path.join("."):I.path;B.set(w,I)}let R=A2(O,X.config,B,X.outputDir);for(let I of R){let w=V(X.outputDir,"css",I.fileName);a(w,I.content),F(` ✓ Generated ${I.fileName}`,X.verbose),Y.cssFiles.push(I)}}else F(` No compositions found in ${_}`,X.verbose)}}catch(G){if(X.verbose)console.warn("Could not generate composition CSS:",G)}if(X.generateTypeScript!==!1){F(`
|
|
481
|
+
Generating TypeScript files...`,X.verbose);let G=L2(X.config,X.typescriptOptions),A=await CY(K,G,X.outputDir);for(let E of A){let L=V(X.outputDir,"typescript",E.fileName);a(L,E.content),F(` ✓ Generated ${E.fileName}`,X.verbose)}Y.typescriptFiles=A}if(X.generateJavaScript!==!1){F(`
|
|
482
|
+
Generating JavaScript files...`,X.verbose);let G=H2(X.config,X.javascriptOptions),A=q0(K,G);for(let E of A){let L=V(X.outputDir,"js",E.fileName);a(L,E.content),F(` ✓ Generated ${E.fileName}`,X.verbose)}Y.javascriptFiles=A}if(X.generateJSON!==!1){F(`
|
|
483
|
+
Generating JSON files...`,X.verbose);let G=_2(K,W,X.config);for(let A of G){let E=V(X.outputDir,"json",A.fileName);a(E,A.content),F(` ✓ Generated ${A.fileName}`,X.verbose)}Y.jsonFiles=G}Y.duration=Date.now()-Z,F(`
|
|
484
|
+
Build completed in ${Y.duration}ms`,X.verbose)}catch(q){let $=q instanceof Error?q.message:String(q);Y.errors.push($),F(`❌ Build failed: ${$}`,X.verbose)}if(X.validate!==!1){F(`
|
|
485
|
+
Validating build output...`,X.verbose);let{validateCSSFiles:q,printValidationResults:$}=await Promise.resolve().then(() => (G0(),W0)),U=q(X.outputDir,X.config);if(X.verbose||!U.isValid)$(U);if(!U.isValid)Y.errors.push(...U.errors)}return Y}function E2(X){let Z=X.$metaData,Y=X.$modes?[...Object.values(X.$modes)]:[];return{prefix:Z.dsNamespace||Z.tokenNamespace,namespace:Z.tokenNamespace,generateModes:!0,modes:Y,generateDerivedTokens:!0,generateBreakpointTokens:!0,failOnBrokenReferences:!0,transformName:(q)=>{let $=Z.tokens?.css?.hooks?.shortenName;if($?.enabled){let U=q;if($.prefix)for(let{find:W,replace:K}of $.prefix){let z=W.replace(/\./g,"-").replace(/-$/,""),G=K.replace(/\./g,"-").replace(/-$/,"");U=U.replace(z,G)}if($.suffix){for(let{find:W,replace:K}of $.suffix)if(U.endsWith(W))U=U.substring(0,U.length-W.length)+K}return U}return q}}}function E0(X,Z){let Y=X.$metaData,q=Y.tokens?.css,$=X.$modes?[...Object.values(X.$modes)]:["light","dark"],U=$.length>0?$[0]:"light",W=Y.modes?.isHost??!1;return{...Z,separateThemeFiles:q?.mediaQuery?.separateThemeFiles??!1,rootSelector:":root",generateMediaQueries:!0,customHeader:dX(X),themeSelector:q?.mediaQuery?.match||"[data-theme]",modes:$,defaultMode:U,isHost:W,hooks:q?.hooks}}function L2(X,Z){let Y=X.$metaData;return{...Z,tokenInterface:"DesignTokens",exportNamespace:Y.dsNamespace||Y.tokenNamespace,generateTypes:!0,generateConsts:!0,generateCSSVarMappings:!0,includeJSDoc:!0}}function H2(X,Z){let Y=X.$modes?[...Object.values(X.$modes)]:["light","dark"];return{...Z,modes:Y,typescript:!0,separateThemeFiles:!0,includeJSDoc:!1,moduleType:"es",customHeader:`/**
|
|
483
486
|
* ${X.$name}
|
|
484
487
|
* Generated: ${new Date().toISOString()}
|
|
485
|
-
*/`}}function
|
|
488
|
+
*/`}}function _2(X,Z,Y){let q=[],$=JSON.stringify({$schema:"https://schemas.designtokens.org/design-tokens.schema.json",$name:Y.$name,$version:Y.$version,tokens:Z.reduce((K,z)=>{return K[z.name]={$type:z.type,$value:z.value,$description:z.description,$extensions:z.extensions},K},{})},null,2);q.push({fileName:"tokens.raw.json",content:$+`
|
|
486
489
|
`});let U=JSON.stringify({$name:Y.$name,$version:Y.$version,tokens:X.reduce((K,z)=>{return K[z.name]={$type:z.type,$value:z.value,$description:z.description,cssVar:z.cssVar},K},{})},null,2);q.push({fileName:"tokens.resolved.json",content:U+`
|
|
487
490
|
`});let W=JSON.stringify({$name:`${Y.$name} - CSS Variables`,$version:Y.$version,variables:X.reduce((K,z)=>{return K[z.cssVar]=z.value,K},{})},null,2);return q.push({fileName:"css-variables.json",content:W+`
|
|
488
|
-
`}),q}function
|
|
489
|
-
`);return!0}catch(W){if(console.error("❌ Failed to compile config file"),W instanceof Error)console.error(W.message);throw W}}
|
|
491
|
+
`}),q}function a(X,Z){let Y=FX(X);if(!hY(Y))q2(Y,{recursive:!0});Z2(X,Z,"utf-8")}function F(X,Z){if(Z!==!1)console.log(X)}async function mY(X,Z){let Y=typeof globalThis.Bun<"u",q=X,$=null;if(X.endsWith(".ts")&&!Y){let{compileConfigFile:E,getDistConfigFile:L}=await Promise.resolve().then(() => (BX(),IZ)),H=FX(X);await E(H),q=L(H),$=q}let W=(await import(q)).default,K=FX(X),z=(E)=>{if(E.startsWith("../"))return V(K,E);return V(K,W.$paths.baseDir,E)},G=V(K,W.$paths.baseDir,W.$paths.tokensDir),A=Z||z(W.$paths.distDir);try{return await L0({config:W,tokensDir:G,outputDir:A,verbose:!0})}finally{if($){let{existsSync:E,unlinkSync:L}=await import("fs");if(E($))try{L($)}catch(H){}}}}var pY=S(()=>{X0();uX();K0();xY();TY();IY();SX()});function Q2(X,Z,Y){let q=C(X,{isIncludedOriginalValue:!0}),$=f(X,Y);if(!$||!l(X,"mode",{isIncludedOriginalValue:!1}))$=q;return PX(X,$,Z,Y)}function TX(X,Z,Y){let q=Q2(X,Z,Y),$=typeof q==="string"?$X(q):null;if($&&($?.length??0)>=1)return qX(q,$,Z,Y);else return O2(X,Z,Y)}function O2(X,Z,Y){return PX(X,nX(X,Z,Y),Z,Y)}function PX(X,Z,Y,q){if(!X)return null;if(X.$type==="color")Z=DX(Z,X,Y,q);else if(X.$type==="composition"||X.$type==="typography")Z=ZX(X,Y,q);return Z}var MX="did";var g=S(()=>{EX();SX();eX();EX();BX();wZ();RZ();MZ();SX();eX();IY();xY();uX();TY();pY()});import{existsSync as J2}from"fs";import{resolve as B2,join as H0}from"path";import I2 from"chokidar";import{execSync as N0}from"child_process";import{existsSync as jX,statSync as uY}from"fs";import{resolve as kY}from"path";async function cY(X,Z=!1){let Y=process.cwd(),q=X||kY(Y,"designid.config.ts"),$=kY(Y,"designid.config.mjs");if(!jX(q))return!1;if(!(!jX($)||jX(q)&&jX($)&&uY(q).mtimeMs>uY($).mtimeMs)){if(Z)console.log("✓ Config file is up to date");return!1}if(Z)console.log("\uD83D\uDD04 Compiling config file...");try{if(N0(`bun build ${q} --outfile ${$} --minify --target node --packages external --no-bundle`,{stdio:Z?"inherit":"pipe"}),Z)console.log(`✅ Config compiled successfully
|
|
492
|
+
`);return!0}catch(W){if(console.error("❌ Failed to compile config file"),W instanceof Error)console.error(W.message);throw W}}g();pY();if(process.argv.includes("--help")||process.argv.includes("-h"))console.log(`
|
|
490
493
|
Watch Tokens - File watcher for design token changes
|
|
491
494
|
|
|
492
495
|
Usage:
|
|
@@ -501,12 +504,12 @@ Example:
|
|
|
501
504
|
bun src/scripts/watch-tokens.ts
|
|
502
505
|
bun src/scripts/watch-tokens.ts --config=./custom-config.ts
|
|
503
506
|
bun src/scripts/watch-tokens.ts --dev
|
|
504
|
-
`),process.exit(0);async function
|
|
505
|
-
`);let
|
|
507
|
+
`),process.exit(0);async function w2(){let X=await o(),{distDir:Z,buildDir:Y}=await d(),q=[/node_modules/,/dist/,/build/,H0(X,Z),H0(X,Y)],$=I2.watch(["**/*.tokens.json","designid.config.ts"],{ignored:q,persistent:!0}),U,W=300,K=!1;function z(E){let L=[E,"./designid.config.ts","./designid.config.mjs","./designid.config.js","./tokens.config.ts","./tokens.config.js"].filter(Boolean);for(let H of L){let _=B2(H);if(J2(_))return _}throw Error(`Config file not found. Tried: ${L.join(", ")}`)}let G=async()=>{if(K){console.log(`[${new Date().toLocaleTimeString()}] Build already in progress, skipping...`);return}clearTimeout(U),U=setTimeout(async()=>{K=!0,console.clear(),process.stdout.write("\x1Bc"),console.log(`[${new Date().toLocaleTimeString()}] Changes detected. Re-building tokens...
|
|
508
|
+
`);let E=(()=>{let L=process.argv.find((H)=>H.startsWith("--config="));return L?L.split("=")[1]:void 0})();try{await cY(E,!1);let L=z(E);console.log(`Using config: ${L}`);let H=await mY(L);if(H.errors.length>0){console.log(`
|
|
506
509
|
❌ Build failed with ${H.errors.length} error${H.errors.length>1?"s":""}:`),H.errors.forEach((_)=>console.log(` - ${_}`)),K=!1;return}if(console.log(`
|
|
507
510
|
✅ Build completed successfully!`),console.log(`Processed ${H.tokenCount} tokens in ${H.duration}ms`),H.cssFiles.length>0)console.log(`Generated ${H.cssFiles.length} CSS files`);if(H.typescriptFiles.length>0)console.log(`Generated ${H.typescriptFiles.length} TypeScript files`);if(H.warnings.length>0)console.log(`
|
|
508
511
|
Warnings:`),H.warnings.forEach((_)=>console.log(` - ${_}`));console.log(`
|
|
509
512
|
Completed at ${new Date().toLocaleTimeString()}
|
|
510
513
|
`)}catch(L){console.error(`
|
|
511
514
|
❌ Build failed:`,L)}finally{K=!1}},300)};$.on("ready",()=>{console.log("Watching for changes in .tokens.json files and designid.config.ts..."),console.log(`Working directory: ${process.cwd()}`),console.log(`Press Ctrl+C to stop watching
|
|
512
|
-
`)}).on("change",(
|
|
515
|
+
`)}).on("change",(E)=>{console.log(`Changed: ${E}`),G().catch((L)=>{console.error("Error during token build:",L)})}).on("add",(E)=>{console.log(`Added: ${E}`),G().catch((L)=>{console.error("Error during token build:",L)})}).on("unlink",(E)=>{console.log(`Deleted: ${E}`),G().catch((L)=>{console.error("Error during token build:",L)})}).on("error",(E)=>{console.error(`Watcher error: ${E}`)});let A=()=>{clearTimeout(U),$.close().then(()=>{console.log("File watcher closed successfully"),process.exit(0)}).catch((E)=>{console.error("Error closing file watcher:",E),process.exit(1)})};process.on("SIGINT",A),process.on("SIGTERM",A),process.on("SIGHUP",A),process.on("uncaughtException",(E)=>{console.error("Uncaught Exception:",E),A()}),process.on("unhandledRejection",(E,L)=>{console.error("Unhandled Rejection at:",L,"reason:",E),A()})}var R2=process.argv[1]?.includes("tokens-watch")||process.argv[1]?.endsWith("watch.js")||import.meta.url===`file://${process.argv[1]}`;if(R2)w2().catch((X)=>{console.error("Error starting watch process:",X),process.exit(1)});export{w2 as runWatch};
|