@designid/tokens 1.2.2 → 1.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +121 -1
- package/bin/build.js +6 -6
- package/bin/editor.js +6 -6
- package/bin/watch.js +6 -6
- package/package.json +4 -1
- package/types/files.d.ts +3 -0
package/bin/watch.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import{createRequire as _Y}from"node:module";var zY=Object.create;var{getPrototypeOf:AY,defineProperty:m$,getOwnPropertyNames:EY}=Object;var LY=Object.prototype.hasOwnProperty;var HY=($,X,Y)=>{Y=$!=null?zY(AY($)):{};let Z=X||!$||!$.__esModule?m$(Y,"default",{value:$,enumerable:!0}):Y;for(let q of EY($))if(!LY.call(Z,q))m$(Z,q,{get:()=>$[q],enumerable:!0});return Z};var d$=($,X)=>{for(var Y in X)m$($,Y,{get:X[Y],enumerable:!0,configurable:!0,set:(Z)=>X[Y]=()=>Z})};var S=($,X)=>()=>($&&(X=$($=0)),X);var u$=_Y(import.meta.url);var d0={};d$(d0,{transformColorValueAsync:()=>BY,transformColorValue:()=>F,transformColorToken:()=>M$,setAlpha:()=>W$,isColor:()=>p,initializeColorspace:()=>OY});import k$ from"colorjs.io";async function p0(){if(R$===null){let{colorspace:$}=await C();R$=$||"hex"}return R$}function QY(){return R$||"hex"}async function OY(){await p0()}function W$($,X){let Y=new k$($);if(X||X===0)Y.alpha=X/100;return F(Y)}function m0($,X){if(!$)return $;if(X&&X.type!=="color")return $;if(typeof $==="string")$=new k$($);if(typeof $?.to!=="function")return $;let Y=QY();try{switch(Y){case"hex":return $.to("srgb").toString({format:"hex"});case"rgb":case"srgb":return $.to("srgb").toString();case"srgb-linear":return $.to("srgb-linear").toString();case"display-p3":case"p3":return $.to("p3").toString();case"a98rgb":case"a98-rgb":return $.to("a98rgb").toString();case"prophoto":case"prophoto-rgb":return $.to("prophoto").toString();case"rec2020":case"rec-2020":return $.to("rec2020").toString();case"xyz":case"xyz-d65":return $.to("xyz-d65").toString();case"xyz-d50":return $.to("xyz-d50").toString();case"lab":case"cielab":return $.to("lab").toString();case"lab-d65":return $.to("lab-d65").toString();case"oklab":return $.to("oklab").toString();case"lch":case"cielch":return $.to("lch").toString();case"oklch":return $.to("oklch").toString();case"hsl":return $.to("hsl").toString();case"hsv":case"hsb":return $.to("hsv").toString();case"hwb":return $.to("hwb").toString();case"luv":return $.to("luv").toString();case"lchuv":return $.to("lchuv").toString();case"jzazbz":return $.to("jzazbz").toString();case"jzczhz":return $.to("jzczhz").toString();case"ictcp":return $.to("ictcp").toString();default:return $.to(Y).toString()}}catch(Z){return console.warn(`Unsupported colorspace '${Y}', falling back to hex. Error:`,Z),$.to("srgb").toString({format:"hex"})}}async function BY($,X){return await p0(),m0($,X)}function F($,X){return m0($,X)}function M$($,X,Y,Z){try{if($=g(X,Z),X.$type==="color"&&X.original?.$value&&X.original?.$value!==X.$value){if(P(X.original.$value))$=y(X.original.$value,Y,Z,X);else $=D(X);if(!j(Z)&&X.original?.$extensions?.mode?.[Z])$=X.original.$extensions.mode[Z]}if(P($))$=y($,Y,Z,X);return F($)}catch{return $=g(X,Z),F($)}}function p($){try{if($)return new k$($),!0;return!1}catch{return!1}}var R$=null;var K$=S(()=>{T()});function u0($,X){let Y=$.$extensions?.delimiter?.character||" ",Z=g($,X)??{},q=$.$extensions?.sort??[],U=D($)??{};if(q.length>0)U=Object.keys(U).sort((K,W)=>{let A=q.indexOf(K),G=q.indexOf(W);return A-G}).reduce((K,W)=>{return K[W]=Z[W],K},{});return Object.keys(U).reduce((K,W)=>{let A=D(Z[W]);if(Z[W]?.$type==="color"||Z[W].$property==="color")A=F(A,Z[W]);return[...Array.isArray(K)?K:[K],A]},[]).join(Y).trim()}function wY($,X,Y,Z){return Object.keys(X??{}).reduce((U,K)=>{let W=X[K];if(typeof W==="string"||typeof W==="number")W={$value:W,$type:typeof W,value:W};if(W.$type=W.type||$?.original?.$value?.[K]?.type||W.$type||$.$type,!j(Z)&&k(W,"mode",{isIncludedOriginalValue:!0}))W.$value=g(W,Z);if(W?.$type==="composition"&&(typeof W.$value!=="string"||typeof W.$value!=="number"||P(W.$value))&&Object.keys(W).length>0){if(P(W.$value))return W.$value=y(W.$value,Y,Z,W),{...U,[K]:{...W,$property:K,$type:W.$type,$value:o(W,Y,Z)}};return{...U,[K]:{...W,$property:K,$type:W.$type,$value:o(W,Y,Z)}}}if(W?.$value){let G=y(W.$value,Y,Z,W);return{...U,[K]:{...W,$property:K,$type:W.$type,$value:G}}}return U},{})}function o($,X,Y){let Z=D($,{isIncludedOriginalValue:!0});if(typeof Z==="string"){if(P(Z)){if(Z=l$(Z,X,Y,$),!j(Y)&&k(Z,"mode",{isIncludedOriginalValue:!0}))Z.$value=g(Z,Y)}let q=$$(Z);if(q&&(q?.length??0)>1)Z=e(Z,q,X,Y)}else if(Array.isArray(Z))Z=Z.map((q)=>{if(typeof q==="string"&&P(q))return y(q,X,Y,$);return q});if(!$.name)return Z;return $.$value=wY($,Z,X,Y),u0($,Y)}var c$=S(()=>{T()});function D($,X){let{isIncludedOriginalValue:Y=!1,fallbackValue:Z=null}=X??{};if(Y)return $?.original?.$value??$?.$value??$.value??Z;return $?.$value??$?.value??Z}function g($,X){return X&&($?.$extensions?.mode?.[X]||typeof $?.$extensions?.mode?.[X]==="number")?$.$extensions.mode[X]:D($,{fallbackValue:$?.original?.$value??$?.$value??$?.value})??null}function k($,X,{isIncludedOriginalValue:Y=!1}={}){let Z=!1;if(Y&&$?.original?.$extensions?.[X])Z=!0;if($?.$extensions?.[X])Z=!0;return Z}function r$($,X,Y){let Z=D($,{isIncludedOriginalValue:!0});if(!j(Y)&&k($,"mode",{isIncludedOriginalValue:!0}))Z=g($,Y);if(P(Z))return s$(Z,X,Y,$);return Z}function e($,X,Y,Z){let q=X.reduce((U,K)=>{let W=i$(K,Y);if(!W)return U;let A=D(W,{isIncludedOriginalValue:!0});if(P(A))A=y(`{${K}}`,Y,Z,W);return{...U,[K]:N$(W,A,Y,Z)}},{});return $?.replace(/\{([^}]+)\}/g,(U,K)=>{return q[K]!==void 0?q[K]:U})??null}function l$($,X,Y,Z){if(P($))return y($,X,Y,Z);return $}function i$($,X){return X.allTokens.find((Y)=>Y.path.join(".")===$)??null}function y($,X,Y,Z){let q=P($),U=null,K=$??D(Z),W=null;if(q){if(U=i$(q,X),Y&&U&&U?.$extensions?.mode?.[Y]!==U.original?.$extensions?.mode?.[Y])K=U.original?.$extensions?.mode?.[Y],W=U.original?.$extensions?.alpha??W;else if(U?.$extensions?.mode?.[Y])K=U.$extensions.mode[Y],W=U.$extensions?.alpha??W;else if(U?.original?.$value)K=U?.original.$value??U?.$value,W=U?.original.$extensions?.alpha??W}if(K!==$&&P(K))K=y(K,X,Y,Z);if(K&&(W||Z?.$extensions?.alpha||W===0||Z?.original?.$extensions?.alpha===0))W=W??Z?.$extensions?.alpha??null,K=W$(K,W);return K=F(K,U??Z),K??$}function s$($,X,Y,Z){let q=Z?.original?.$extensions?.mode?.[Y]??Z?.original?.$value,U=P(q);if(Y&&U){let K=X.allTokens.find((A)=>A.path.join(".")===U);if(!K)return $;let W=D(K);if(P(W))return s$(W,X,Y,K);if(K?.$extensions?.mode?.[Y])W=K.$extensions.mode[Y];if(W&&K?.$extensions?.alpha)W=W$(K.$value,K.$extensions.alpha);return F(W,K)??$}else if(q)return F(q,Z);return $}function P($){if(typeof $!=="string")return null;let X=/{[^}]+}/g,Y=$.match(X);if(Y?.length!==1)return null;return Y[0].slice(1,-1)}function $$($){if(typeof $!=="string")return null;return[...$.matchAll(/\{([^}]+)\}/g)].map(([,Y])=>Y)??null}function Y$($){return $}function G$($){return $}var a$=S(()=>{T()});var H2={};d$(H2,{wrapThemeValue:()=>E0,wrapFormatCSSFile:()=>z2,typographyFileName:()=>o0,tokensFileName:()=>n0,removeDirectoryContents:()=>K0,readConfigFile:()=>q$,namespaceUUID:()=>Y2,iconsFileName:()=>e0,getTokenfileName:()=>X2,getRelativePath:()=>L2,getRelativeCSSPath:()=>E2,getRawTokensFileName:()=>W2,getProjectPaths:()=>m,getProjectModes:()=>z0,getProjectMetaData:()=>C,getProjectFonts:()=>FY,getLazyTokensConfig:()=>n$,getLazyProjectPaths:()=>A0,getLazyProjectModes:()=>z$,getLazyProjectMetaData:()=>H$,getLazyProjectFonts:()=>jY,getLazyProjectData:()=>c,getLazyIcons:()=>P$,getJSDocHeader:()=>K2,getIconDestinationFileName:()=>Z$,getFiles:()=>S$,getFileHeader:()=>G0,getDistThemeFileDelimeter:()=>Z2,getDistConfigFile:()=>x$,getDestinationFileName:()=>q2,getDefaultIconObjectPath:()=>$2,getCSSDestinationFileName:()=>U2,getBaseDirectory:()=>s,getBaseConfigFile:()=>E$,generatedFileHeader:()=>X$,filterTokensByType:()=>F$,createFileHeaderTitle:()=>A$,compileConfigFile:()=>W0,combineCSSFiles:()=>A2,checkAndCreateDirectory:()=>i,breakpointFileName:()=>t0});import{spawnSync as IY}from"child_process";import{existsSync as v,mkdirSync as JY,readFileSync as RY,unlinkSync as k0,writeFileSync as MY}from"fs";import{readdir as i0,rmdir as NY,unlink as xY}from"fs/promises";import{resolve as s0,join as N,basename as a0,normalize as c0,relative as l0,sep as t$,dirname as r0}from"path";async function $2(){return`${(await L$()).$metaData?.tokenNamespace||"tokens"}.icons`}async function W0($){let Y=N($,"designid.config.ts");if(v(N($,"designid.config.mjs")))k0(N($,"designid.config.mjs"));let Z=N($,"designid.config.js");if(v(Z))k0(Z);if(v(Y)){let q=IY("bun",["build",Y,"--outfile ./designid.config.mjs","--minify","--target","node","--packages","external","--no-bundle"],{stdio:"inherit",cwd:$,shell:!0});if(q.status!==0)console.error("Failed to compile designid.config.mjs with bun."),process.exit(q.status??1);if(q.status===0)return new Promise((U)=>U(!0))}}async function K0($){try{if(v($)){let X=await i0($,{withFileTypes:!0});for(let Y of X){let Z=N($,Y.name);if(Y.isDirectory())await K0(Z),await NY(Z);else await xY(Z)}}}catch(X){console.error(`Error removing contents of ${$}:`,X)}}async function S$($){let X=await i0($,{withFileTypes:!0}),Y=await Promise.all(X.map((Z)=>{let q=s0($,Z.name);return Z.isDirectory()?S$(q):q}));return Array.prototype.concat(...Y)}async function Y2($){let{dsNamespace:X,tokenNamespace:Y}=await C();return`${(X??Y).toUpperCase()}DesignSystem${$.charAt(0).toUpperCase()+$.slice(1)}Tokens`}function X2($,X="d.ts",Y){if(!$)return`tokens.${Y}.config.${X}`;return N($,`tokens.${Y}.config.${X}`)}function Z2($,X){return $.length>1?`.${X}`:""}async function q2($="d.ts",X){let{tokenNamespace:Y}=await C();if(X)return`${Y}-design-system.${X}.tokens.config.${$}`;return`${Y}-design-system.tokens.config.${$}`}async function Z$($="json"){let{tokenNamespace:X}=await C();return`${X}-design-system.tokens.svg${$==="d.ts"||$==="js"?".config":""}.${$}`}async function U2(){let{tokenNamespace:$}=await C();return`${$}-design-system.tokens.css`}async function W2(){let{tokenNamespace:$}=await C();return`${$}-design-system-raw.tokens.json`}async function G0($){let{tokenNamespace:X}=await C();return`${X} | ${$}`}function K2($,X){return`/** @type {import("./${$}").${X}} */`}function A$($){return`/* ${G0($)} */`}function i($){if(!v($))JY($,{recursive:!0})}async function q$($,X=!1){let Y=E$(),Z;if(Y.endsWith(".json"))Z=JSON.parse(RY(Y,"utf8").trim()??"{}");else if(Y.endsWith(".ts"))if(typeof globalThis.Bun<"u"){if(Z=await import(Y),Z.default)Z=Z.default}else{$=$??r0(Y)+"/";let U=x$($);if(U&&(X||!v(U)))await W0($);if(Z=await import(U),Z.default)Z=Z.default}else{$=$??r0(Y)+"/";let q=x$($);if(q&&(X||!v(q)))await W0($);if(Z=await import(q),Z.default)Z=Z.default}return Z}async function s($=!1){let{baseDir:X}=await m(),Y=process.cwd(),q=N(Y,X),{buildDir:U,distDir:K}=await m();if($)try{i(N(q,U)),i(N(q,K))}catch(W){console.error("Error creating directories:",W)}return q}function x$($){return $?N($,"designid.config.mjs"):N(process.cwd(),"designid.config.mjs")}function E$(){let $=process.argv.find((W)=>W.startsWith("--config=")),[,X]=$?.split("=")??[];if(X)return X;let Y=process.cwd(),Z=x$(Y),q=N(Y,"designid.config.ts"),U=v(Z),K=v(q);if(U)return Z;else if(K)return q;throw console.error("Config file not found"),Error("Config file not found")}async function m($=!1){let X=E$(),Z=(await q$(process.cwd(),$)).$paths;if(!Z)throw console.error("Project paths not found"),Error("Project paths not found");return{configFile:X,...Z}}async function C(){let X=(await q$(process.cwd())).$metaData;if(!X)throw console.error("Project metaData not found"),Error("Project metaData not found");if(!X.colorspace)X.colorspace="hex";if(!X.fontNamespace)X.fontNamespace=`${X.dsNamespace}.font`;if(!X?.tokens?.css?.mediaQuery?.match)X={...X??{},tokens:{...X.tokens??{},css:{...X.tokens?.css??{},mediaQuery:{...X.tokens?.css?.mediaQuery??{},match:"[data-theme]"}}}};if(X?.tokens?.css?.mediaQuery&&typeof X.tokens.css.mediaQuery.separateThemeFiles!=="boolean")X.tokens.css.mediaQuery.separateThemeFiles=!1;if(!X.dsNamespace)X.dsNamespace=X.tokenNamespace;let Y=await $2();return{...X,icons:X.icons??{objectPath:Y},dsNamespace:X.dsNamespace}}async function z0(){return(await q$(process.cwd())).$modes??{default:"light"}}async function L$(){if(!o$){let $=E$();o$=await q$(process.cwd()),G2=$}return o$}async function z$(){if(!e$)e$=(await L$()).$modes??{default:"light"};return e$}async function H$(){if(!$0){let X=(await L$()).$metaData;if(!X)throw console.error("Project metaData not found"),Error("Project metaData not found");if(!X.dsNamespace)X.dsNamespace=X.tokenNamespace;let Z=`${X.tokenNamespace||"tokens"}.icons`;$0={...X,icons:X.icons??{objectPath:Z},dsNamespace:X.dsNamespace}}return $0}async function A0($=!1){if(!Y0){let Y=(await L$()).$paths;if(!Y)throw console.error("Project paths not found"),Error("Project paths not found");Y0={configFile:G2,...Y}}return Y0}async function c(){if(!X0){let{distDir:$,assets:X,buildDir:Y}=await A0(!0),{fontNamespace:Z,tokenNamespace:q,icons:U}=await H$(),K=await s(),W=process.cwd(),A=N(W,$,"css");X0={distDir:$,assets:X,fontNamespace:Z,__dirname:K,workspaceRoot:W,distCSSPath:A,buildDir:Y,tokenNamespace:q,icons:U}}return X0}async function P$(){if(!Z0){let{icons:$}=await H$();Z0=$}return Z0}async function n$(){if(!q0){let{tokens:$}=await H$();q0=$}return q0}async function FY(){return(await q$(process.cwd())).$fonts??[]}async function jY(){if(!U0)U0=(await L$()).$fonts??[];return U0}async function E0($){if(j($))return":root";let Y=(await C())?.tokens?.css?.mediaQuery?.match??"[data-theme]";if(Y.startsWith("[")&&Y.endsWith("]"))return`${Y.replace("]",`="${$}"]`)}`;else if(Y.startsWith(".")||Y.startsWith("#"))return`${Y}${$}`;else return`${Y}${$}`}async function z2($,X,Y,Z,q,U={}){let K;if(j(Y))K=X.allTokens;else K=$(X,Y);let A=(await C())?.tokens?.css?.mediaQuery?.separateThemeFiles?"Theme: "+Y:U.headerTitle??"",G=`${A$(A)}
|
|
2
|
+
import{createRequire as _Y}from"node:module";var zY=Object.create;var{getPrototypeOf:AY,defineProperty:m$,getOwnPropertyNames:EY}=Object;var LY=Object.prototype.hasOwnProperty;var HY=($,X,Y)=>{Y=$!=null?zY(AY($)):{};let Z=X||!$||!$.__esModule?m$(Y,"default",{value:$,enumerable:!0}):Y;for(let q of EY($))if(!LY.call(Z,q))m$(Z,q,{get:()=>$[q],enumerable:!0});return Z};var d$=($,X)=>{for(var Y in X)m$($,Y,{get:X[Y],enumerable:!0,configurable:!0,set:(Z)=>X[Y]=()=>Z})};var S=($,X)=>()=>($&&(X=$($=0)),X);var u$=_Y(import.meta.url);var d0={};d$(d0,{transformColorValueAsync:()=>BY,transformColorValue:()=>F,transformColorToken:()=>M$,setAlpha:()=>W$,isColor:()=>p,initializeColorspace:()=>OY});import k$ from"colorjs.io";async function p0(){if(R$===null){let{colorspace:$}=await C();R$=$||"hex"}return R$}function QY(){return R$||"hex"}async function OY(){await p0()}function W$($,X){let Y=new k$($);if(X||X===0)Y.alpha=X/100;return F(Y)}function m0($,X){if(!$)return $;if(X&&X.type!=="color")return $;if(typeof $==="string")$=new k$($);if(typeof $?.to!=="function")return $;let Y=QY();try{switch(Y){case"hex":return $.to("srgb").toString({format:"hex"});case"rgb":case"srgb":return $.to("srgb").toString();case"srgb-linear":return $.to("srgb-linear").toString();case"display-p3":case"p3":return $.to("p3").toString();case"a98rgb":case"a98-rgb":return $.to("a98rgb").toString();case"prophoto":case"prophoto-rgb":return $.to("prophoto").toString();case"rec2020":case"rec-2020":return $.to("rec2020").toString();case"xyz":case"xyz-d65":return $.to("xyz-d65").toString();case"xyz-d50":return $.to("xyz-d50").toString();case"lab":case"cielab":return $.to("lab").toString();case"lab-d65":return $.to("lab-d65").toString();case"oklab":return $.to("oklab").toString();case"lch":case"cielch":return $.to("lch").toString();case"oklch":return $.to("oklch").toString();case"hsl":return $.to("hsl").toString();case"hsv":case"hsb":return $.to("hsv").toString();case"hwb":return $.to("hwb").toString();case"luv":return $.to("luv").toString();case"lchuv":return $.to("lchuv").toString();case"jzazbz":return $.to("jzazbz").toString();case"jzczhz":return $.to("jzczhz").toString();case"ictcp":return $.to("ictcp").toString();default:return $.to(Y).toString()}}catch(Z){return console.warn(`Unsupported colorspace '${Y}', falling back to hex. Error:`,Z),$.to("srgb").toString({format:"hex"})}}async function BY($,X){return await p0(),m0($,X)}function F($,X){return m0($,X)}function M$($,X,Y,Z){try{if($=g(X,Z),X.$type==="color"&&X.original?.$value&&X.original?.$value!==X.$value){if(P(X.original.$value))$=y(X.original.$value,Y,Z,X);else $=D(X);if(!j(Z)&&X.original?.$extensions?.mode?.[Z])$=X.original.$extensions.mode[Z]}if(P($))$=y($,Y,Z,X);return F($)}catch{return $=g(X,Z),F($)}}function p($){try{if($)return new k$($),!0;return!1}catch{return!1}}var R$=null;var K$=S(()=>{T()});function u0($,X){let Y=$.$extensions?.delimiter?.character||" ",Z=g($,X)??{},q=$.$extensions?.sort??[],U=D($)??{};if(q.length>0)U=Object.keys(U).sort((K,W)=>{let A=q.indexOf(K),G=q.indexOf(W);return A-G}).reduce((K,W)=>{return K[W]=Z[W],K},{});return Object.keys(U).reduce((K,W)=>{let A=D(Z[W]);if(Z[W]?.$type==="color"||Z[W].$property==="color")A=F(A,Z[W]);return[...Array.isArray(K)?K:[K],A]},[]).join(Y).trim()}function wY($,X,Y,Z){return Object.keys(X??{}).reduce((U,K)=>{let W=X[K];if(typeof W==="string"||typeof W==="number")W={$value:W,$type:typeof W,value:W};if(W.$type=W.type||$?.original?.$value?.[K]?.type||W.$type||$.$type,!j(Z)&&k(W,"mode",{isIncludedOriginalValue:!0}))W.$value=g(W,Z);if(W?.$type==="composition"&&(typeof W.$value!=="string"||typeof W.$value!=="number"||P(W.$value))&&Object.keys(W).length>0){if(P(W.$value))return W.$value=y(W.$value,Y,Z,W),{...U,[K]:{...W,$property:K,$type:W.$type,$value:o(W,Y,Z)}};return{...U,[K]:{...W,$property:K,$type:W.$type,$value:o(W,Y,Z)}}}if(W?.$value){let G=y(W.$value,Y,Z,W);return{...U,[K]:{...W,$property:K,$type:W.$type,$value:G}}}return U},{})}function o($,X,Y){let Z=D($,{isIncludedOriginalValue:!0});if(typeof Z==="string"){if(P(Z)){if(Z=l$(Z,X,Y,$),!j(Y)&&k(Z,"mode",{isIncludedOriginalValue:!0}))Z.$value=g(Z,Y)}let q=$$(Z);if(q&&(q?.length??0)>1)Z=e(Z,q,X,Y)}else if(Array.isArray(Z))Z=Z.map((q)=>{if(typeof q==="string"&&P(q))return y(q,X,Y,$);return q});if(!$.name)return Z;return $.$value=wY($,Z,X,Y),u0($,Y)}var c$=S(()=>{T()});function D($,X){let{isIncludedOriginalValue:Y=!1,fallbackValue:Z=null}=X??{};if(Y)return $?.original?.$value??$?.$value??$.value??Z;return $?.$value??$?.value??Z}function g($,X){return X&&($?.$extensions?.mode?.[X]||typeof $?.$extensions?.mode?.[X]==="number")?$.$extensions.mode[X]:D($,{fallbackValue:$?.original?.$value??$?.$value??$?.value})??null}function k($,X,{isIncludedOriginalValue:Y=!1}={}){let Z=!1;if(Y&&$?.original?.$extensions?.[X])Z=!0;if($?.$extensions?.[X])Z=!0;return Z}function r$($,X,Y){let Z=D($,{isIncludedOriginalValue:!0});if(!j(Y)&&k($,"mode",{isIncludedOriginalValue:!0}))Z=g($,Y);if(P(Z))return s$(Z,X,Y,$);return Z}function e($,X,Y,Z){let q=X.reduce((U,K)=>{let W=i$(K,Y);if(!W)return U;let A=D(W,{isIncludedOriginalValue:!0});if(P(A))A=y(`{${K}}`,Y,Z,W);return{...U,[K]:N$(W,A,Y,Z)}},{});return $?.replace(/\{([^}]+)\}/g,(U,K)=>{return q[K]!==void 0?q[K]:U})??null}function l$($,X,Y,Z){if(P($))return y($,X,Y,Z);return $}function i$($,X){return X.allTokens.find((Y)=>Y.path.join(".")===$)??null}function y($,X,Y,Z){let q=P($),U=null,K=$??D(Z),W=null;if(q){if(U=i$(q,X),Y&&U&&U?.$extensions?.mode?.[Y]!==U.original?.$extensions?.mode?.[Y])K=U.original?.$extensions?.mode?.[Y],W=U.original?.$extensions?.alpha??W;else if(U?.$extensions?.mode?.[Y])K=U.$extensions.mode[Y],W=U.$extensions?.alpha??W;else if(U?.original?.$value)K=U?.original.$value??U?.$value,W=U?.original.$extensions?.alpha??W}if(K!==$&&P(K))K=y(K,X,Y,Z);if(K&&(W||Z?.$extensions?.alpha||W===0||Z?.original?.$extensions?.alpha===0))W=W??Z?.$extensions?.alpha??null,K=W$(K,W);return K=F(K,U??Z),K??$}function s$($,X,Y,Z){let q=Z?.original?.$extensions?.mode?.[Y]??Z?.original?.$value,U=P(q);if(Y&&U){let K=X.allTokens.find((A)=>A.path.join(".")===U);if(!K)return $;let W=D(K);if(P(W))return s$(W,X,Y,K);if(K?.$extensions?.mode?.[Y])W=K.$extensions.mode[Y];if(W&&K?.$extensions?.alpha)W=W$(K.$value,K.$extensions.alpha);return F(W,K)??$}else if(q)return F(q,Z);return $}function P($){if(typeof $!=="string")return null;let X=/{[^}]+}/g,Y=$.match(X);if(Y?.length!==1)return null;return Y[0].slice(1,-1)}function $$($){if(typeof $!=="string")return null;return[...$.matchAll(/\{([^}]+)\}/g)].map(([,Y])=>Y)??null}function Y$($){return $}function G$($){return $}var a$=S(()=>{T()});var H2={};d$(H2,{wrapThemeValue:()=>E0,wrapFormatCSSFile:()=>z2,typographyFileName:()=>o0,tokensFileName:()=>n0,removeDirectoryContents:()=>K0,readConfigFile:()=>q$,namespaceUUID:()=>Y2,iconsFileName:()=>e0,getTokenfileName:()=>X2,getRelativePath:()=>L2,getRelativeCSSPath:()=>E2,getRawTokensFileName:()=>W2,getProjectPaths:()=>m,getProjectModes:()=>z0,getProjectMetaData:()=>C,getProjectFonts:()=>FY,getLazyTokensConfig:()=>n$,getLazyProjectPaths:()=>A0,getLazyProjectModes:()=>z$,getLazyProjectMetaData:()=>H$,getLazyProjectFonts:()=>jY,getLazyProjectData:()=>c,getLazyIcons:()=>P$,getJSDocHeader:()=>K2,getIconDestinationFileName:()=>Z$,getFiles:()=>S$,getFileHeader:()=>G0,getDistThemeFileDelimeter:()=>Z2,getDistConfigFile:()=>x$,getDestinationFileName:()=>q2,getDefaultIconObjectPath:()=>$2,getCSSDestinationFileName:()=>U2,getBaseDirectory:()=>s,getBaseConfigFile:()=>E$,generatedFileHeader:()=>X$,filterTokensByType:()=>F$,createFileHeaderTitle:()=>A$,compileConfigFile:()=>W0,combineCSSFiles:()=>A2,checkAndCreateDirectory:()=>i,breakpointFileName:()=>t0});import{spawnSync as IY}from"child_process";import{existsSync as v,mkdirSync as JY,readFileSync as RY,unlinkSync as k0,writeFileSync as MY}from"fs";import{readdir as i0,rmdir as NY,unlink as xY}from"fs/promises";import{resolve as s0,join as N,basename as a0,normalize as c0,relative as l0,sep as t$,dirname as r0}from"path";async function $2(){return`${(await L$()).$metaData?.tokenNamespace||"tokens"}.icons`}async function W0($){let Y=N($,"designid.config.ts");if(v(N($,"designid.config.mjs")))k0(N($,"designid.config.mjs"));let Z=N($,"designid.config.js");if(v(Z))k0(Z);if(v(Y)){let q=IY("bun",["build",Y,"--outfile ./designid.config.mjs","--minify","--target","node","--packages","external","--no-bundle"],{stdio:"inherit",cwd:$,shell:!0});if(q.status!==0)console.error("Failed to compile designid.config.mjs with bun."),process.exit(q.status??1);if(q.status===0)return new Promise((U)=>U(!0))}}async function K0($){try{if(v($)){let X=await i0($,{withFileTypes:!0});for(let Y of X){let Z=N($,Y.name);if(Y.isDirectory())await K0(Z),await NY(Z);else await xY(Z)}}}catch(X){console.error(`Error removing contents of ${$}:`,X)}}async function S$($){let X=await i0($,{withFileTypes:!0}),Y=await Promise.all(X.map((Z)=>{let q=s0($,Z.name);return Z.isDirectory()?S$(q):q}));return Array.prototype.concat(...Y)}async function Y2($){let{dsNamespace:X,tokenNamespace:Y}=await C();return`${(X??Y).toUpperCase()}DesignSystem${$.charAt(0).toUpperCase()+$.slice(1)}Tokens`}function X2($,X="d.ts",Y){if(!$)return`tokens.${Y}.config.${X}`;return N($,`tokens.${Y}.config.${X}`)}function Z2($,X){return $.length>1?`.${X}`:""}async function q2($="d.ts",X){let{tokenNamespace:Y}=await C();if(X)return`${Y}-design-system.${X}.tokens.config.${$}`;return`${Y}-design-system.tokens.config.${$}`}async function Z$($="json"){let{tokenNamespace:X}=await C();return`${X}-design-system.tokens.svg${$==="d.ts"||$==="js"?".config":""}.${$}`}async function U2(){let{tokenNamespace:$}=await C();return`${$}-design-system.tokens.css`}async function W2(){let{tokenNamespace:$}=await C();return`${$}-design-system-raw.tokens.json`}async function G0($){let{tokenNamespace:X}=await C();return`${X} | ${$}`}function K2($,X){return`/** @type {import("./${$}").${X}} */`}function A$($){return`/* ${G0($)} */`}function i($){if(!v($))JY($,{recursive:!0})}async function q$($,X=!1){let Y=E$(),Z;if(Y.endsWith(".json"))Z=JSON.parse(RY(Y,"utf8").trim()??"{}");else if(Y.endsWith(".ts"))if(typeof globalThis.Bun!=="undefined"){if(Z=await import(Y),Z.default)Z=Z.default}else{$=$??r0(Y)+"/";let U=x$($);if(U&&(X||!v(U)))await W0($);if(Z=await import(U),Z.default)Z=Z.default}else{$=$??r0(Y)+"/";let q=x$($);if(q&&(X||!v(q)))await W0($);if(Z=await import(q),Z.default)Z=Z.default}return Z}async function s($=!1){let{baseDir:X}=await m(),Y=process.cwd(),q=N(Y,X),{buildDir:U,distDir:K}=await m();if($)try{i(N(q,U)),i(N(q,K))}catch(W){console.error("Error creating directories:",W)}return q}function x$($){return $?N($,"designid.config.mjs"):N(process.cwd(),"designid.config.mjs")}function E$(){let $=process.argv.find((W)=>W.startsWith("--config=")),[,X]=$?.split("=")??[];if(X)return X;let Y=process.cwd(),Z=x$(Y),q=N(Y,"designid.config.ts"),U=v(Z),K=v(q);if(U)return Z;else if(K)return q;throw console.error("Config file not found"),new Error("Config file not found")}async function m($=!1){let X=E$(),Z=(await q$(process.cwd(),$)).$paths;if(!Z)throw console.error("Project paths not found"),new Error("Project paths not found");return{configFile:X,...Z}}async function C(){let X=(await q$(process.cwd())).$metaData;if(!X)throw console.error("Project metaData not found"),new Error("Project metaData not found");if(!X.colorspace)X.colorspace="hex";if(!X.fontNamespace)X.fontNamespace=`${X.dsNamespace}.font`;if(!X?.tokens?.css?.mediaQuery?.match)X={...X??{},tokens:{...X.tokens??{},css:{...X.tokens?.css??{},mediaQuery:{...X.tokens?.css?.mediaQuery??{},match:"[data-theme]"}}}};if(X?.tokens?.css?.mediaQuery&&typeof X.tokens.css.mediaQuery.separateThemeFiles!=="boolean")X.tokens.css.mediaQuery.separateThemeFiles=!1;if(!X.dsNamespace)X.dsNamespace=X.tokenNamespace;let Y=await $2();return{...X,icons:X.icons??{objectPath:Y},dsNamespace:X.dsNamespace}}async function z0(){return(await q$(process.cwd())).$modes??{default:"light"}}async function L$(){if(!o$){let $=E$();o$=await q$(process.cwd()),G2=$}return o$}async function z$(){if(!e$)e$=(await L$()).$modes??{default:"light"};return e$}async function H$(){if(!$0){let X=(await L$()).$metaData;if(!X)throw console.error("Project metaData not found"),new Error("Project metaData not found");if(!X.dsNamespace)X.dsNamespace=X.tokenNamespace;let Z=`${X.tokenNamespace||"tokens"}.icons`;$0={...X,icons:X.icons??{objectPath:Z},dsNamespace:X.dsNamespace}}return $0}async function A0($=!1){if(!Y0){let Y=(await L$()).$paths;if(!Y)throw console.error("Project paths not found"),new Error("Project paths not found");Y0={configFile:G2,...Y}}return Y0}async function c(){if(!X0){let{distDir:$,assets:X,buildDir:Y}=await A0(!0),{fontNamespace:Z,tokenNamespace:q,icons:U}=await H$(),K=await s(),W=process.cwd(),A=N(W,$,"css");X0={distDir:$,assets:X,fontNamespace:Z,__dirname:K,workspaceRoot:W,distCSSPath:A,buildDir:Y,tokenNamespace:q,icons:U}}return X0}async function P$(){if(!Z0){let{icons:$}=await H$();Z0=$}return Z0}async function n$(){if(!q0){let{tokens:$}=await H$();q0=$}return q0}async function FY(){return(await q$(process.cwd())).$fonts??[]}async function jY(){if(!U0)U0=(await L$()).$fonts??[];return U0}async function E0($){if(j($))return":root";let Y=(await C())?.tokens?.css?.mediaQuery?.match??"[data-theme]";if(Y.startsWith("[")&&Y.endsWith("]"))return`${Y.replace("]",`="${$}"]`)}`;else if(Y.startsWith(".")||Y.startsWith("#"))return`${Y}${$}`;else return`${Y}${$}`}async function z2($,X,Y,Z,q,U={}){let K;if(j(Y))K=X.allTokens;else K=$(X,Y);let A=(await C())?.tokens?.css?.mediaQuery?.separateThemeFiles?"Theme: "+Y:U.headerTitle??"",G=`${A$(A)}
|
|
3
3
|
${X$}`,E=j(Y)?`:root {
|
|
4
4
|
`:`@media (123prefers-color-scheme: ${Y}) {
|
|
5
5
|
:root {
|
|
@@ -17,7 +17,7 @@ ${E}`;if(K.forEach((L)=>{if(F$(L,U,q))return;let _=j$(L,X,Y);if(U.transformValue
|
|
|
17
17
|
`:"",z}function F$($,X,Y){let{namespace:Z}=X.filter??{};if(!$.$type)return!0;if(Z?.length&&$.path){let q=$.path.join("."),U=Z.some((W)=>q.startsWith(W)),K=X.filter?.isInclusion!==void 0&&X.filter.isInclusion;return U&&!K||!U&&K}if(X.filter?.isInclusion!==void 0&&X.filter.isInclusion===!1){if($.$type&&!Y.includes($.$type))return!0}else if(!$.$type||Y.includes($.$type))return!0;return!1}async function A2(){let $=await z0(),{baseDir:X,distDir:Y}=await m(),Z=await S$(N(X,Y,"css")),q=N(X,Y,await U2()),U=X$+`
|
|
18
18
|
|
|
19
19
|
`,K=[{name:e0,order:100},{name:n0,order:200},{name:o0,order:300},{name:t0,order:400}];if(Z=Z.sort((W,A)=>{let G=(E)=>{let z=a0(E,".css"),L=K.find((_)=>z.includes(_.name));for(let _ in $)if(z.includes(_)){let H=$[_]===$.default?1:2;return L?L.order+H:0}return L?L.order:0};return G(W)-G(A)}),Z.forEach((W)=>{if(W.endsWith(".css")){let G=`@import url("${E2(W,X,Y)}");`;U+=G+`
|
|
20
|
-
`}}),!v(N(X,Y)))i(N(X,Y));MY(q,U)}function E2($,X,Y){let Z=s0(X,Y);return $.startsWith(Z)?$.slice(Z.length+1):$}function L2($,X,Y,Z){let q=c0($),U=a0(c0(X)),K=q.split(t$),W=K.lastIndexOf(U);if(U===".")return l0(Y,Z).split(t$).join("/");else if(W===-1)throw Error(`Base directory '${U}' not found in '${q}'`);let A=N(...K.slice(0,W+1)),G=N(A,Y),E=N(A,Z);return l0(G,E).split(t$).join("/")}var n0="tokens",t0="breakpoints",o0="typography",e0="icons",X$=`/*
|
|
20
|
+
`}}),!v(N(X,Y)))i(N(X,Y));MY(q,U)}function E2($,X,Y){let Z=s0(X,Y);return $.startsWith(Z)?$.slice(Z.length+1):$}function L2($,X,Y,Z){let q=c0($),U=a0(c0(X)),K=q.split(t$),W=K.lastIndexOf(U);if(U===".")return l0(Y,Z).split(t$).join("/");else if(W===-1)throw new Error(`Base directory '${U}' not found in '${q}'`);let A=N(...K.slice(0,W+1)),G=N(A,Y),E=N(A,Z);return l0(G,E).split(t$).join("/")}var n0="tokens",t0="breakpoints",o0="typography",e0="icons",X$=`/*
|
|
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.
|
|
@@ -31,7 +31,7 @@ ${E}`;if(K.forEach((L)=>{if(F$(L,U,q))return;let _=j$(L,X,Y);if(U.transformValue
|
|
|
31
31
|
}
|
|
32
32
|
`}}let{distCSSPath:L}=await c(),_=X?V(X,"css"):L,H=`${_}/fonts.css`;B2(_,{recursive:!0}),await VY(H,E,{flag:"w",encoding:"utf-8"})}catch(Y){console.error("Error appending typography tokens:",Y)}}var Q0=S(()=>{T()});function Q$($){if(typeof $!=="string"||!$.startsWith("{")||!$.endsWith("}"))return!1;let X=$.slice(1,-1);return!X.includes("{")&&!X.includes("}")&&X.trim()!==""}function O$($){if(typeof $!=="string")return!1;let X=/\{[^}]+\}/g,Y=$.match(X);return!!(Y&&Y.length>0&&$.length>Y.join("").length)}function D$($){let X=[],Y=/\{[^}]+\}/g,Z=0,q;while((q=Y.exec($))!==null){if(q.index>Z){let K=$.slice(Z,q.index);if(K)X.push({type:"literal",value:K})}let U=q[0];if(U.startsWith("{#/"))X.push({type:"reference",value:U,ref:{$ref:U.slice(2,-1)}});else X.push({type:"reference",value:U,ref:U});Z=q.index+q[0].length}if(Z<$.length){let U=$.slice(Z);if(U)X.push({type:"literal",value:U})}return X}function w2($){return!!$.$extensions?.$mode}function I2($){return!!($.$extensions?.$generators&&Array.isArray($.$extensions.$generators))}function J2($){return!!($.$extensions?.$breakpoints&&typeof $.$extensions.$breakpoints==="object")}function R2($,X){return`${$}${X}`}function M2($){return typeof $==="object"&&$!==null&&"$value"in $}function N2($){return typeof $==="object"&&$!==null&&!("$value"in $)}var x2=()=>{};function F2($){if(typeof $!=="string")return!1;let X=$.trim();return X.startsWith("<svg")&&X.includes("</svg>")}function j2($){if(typeof $!=="string")return!1;return $.startsWith("data:image/png;base64,")||$.startsWith("iVBORw0KGgo")}function S2($){if(typeof $!=="string")return!1;return $.startsWith("data:image/jpeg;base64,")||$.startsWith("data:image/jpg;base64,")||$.startsWith("/9j/")}function yY($){let X=$.trim();return X=X.replace(/\s+/g," ").replace(/>\s+</g,"><").trim(),`data:image/svg+xml;base64,${Buffer.from(X,"utf-8").toString("base64")}`}function vY($){if($.startsWith("data:image/png;base64,"))return $;return`data:image/png;base64,${$}`}function hY($){if($.startsWith("data:image/jpeg;base64,")||$.startsWith("data:image/jpg;base64,"))return $;return`data:image/jpeg;base64,${$}`}function B$($){if(!$||typeof $!=="string")return $;if($.startsWith("data:"))return $;if(F2($))return yY($);else if(j2($))return vY($);else if(S2($))return hY($);return $}function fY($){if(typeof $!=="string")return!1;return $.startsWith("data:image/svg+xml;")||$.startsWith("data:image/png;")||$.startsWith("data:image/jpeg;")||$.startsWith("data:image/jpg;")||$.startsWith("data:image/gif;")||$.startsWith("data:image/webp;")}function d($){return F2($)||j2($)||S2($)||fY($)}import{readFileSync as pY,readdirSync as mY,statSync as dY}from"fs";import{join as uY}from"path";import D2 from"colorjs.io";function B0($){let X={};function Y(Z){let q=mY(Z);for(let U of q){let K=uY(Z,U);if(dY(K).isDirectory())Y(K);else if(U.endsWith(".tokens.json"))try{let A=pY(K,"utf-8");if(!A.trim())continue;let G=JSON.parse(A);b2(X,G)}catch(A){console.warn(`Failed to load token file: ${K}`,A)}}}return Y($),X}function b2($,X){for(let Y in X)if(X[Y]&&typeof X[Y]==="object"&&!Array.isArray(X[Y])){if(!$[Y])$[Y]={};b2($[Y],X[Y])}else $[Y]=X[Y]}function w0($,X={}){let Y=[];function Z(q,U=[]){for(let[K,W]of Object.entries(q)){if(K.startsWith("$"))continue;let A=[...U,K],G=A.join(".");if(M2(W)){let E={path:A,name:G,type:W.$type,value:W.$value,description:W.$description,extensions:W.$extensions?{mode:w2(W)?W.$extensions.$mode:W.$extensions.mode?W.$extensions.mode:void 0,generators:I2(W)?W.$extensions.$generators:W.$extensions.generators?W.$extensions.generators:void 0,breakpoints:J2(W)?W.$extensions.$breakpoints:W.$extensions.breakpoint?W.$extensions.breakpoint:void 0,...Object.fromEntries(Object.entries(W.$extensions).filter(([z])=>!["$mode","$generators","$breakpoints","mode","generators","breakpoint"].includes(z)))}:void 0,original:W};if(!X.namespace||G.startsWith(X.namespace))Y.push(E)}else if(N2(W))Z(W,A)}}return Z($),Y}function I0($,X={}){let Y=[...$],Z=new Map($.map((G)=>[G.name,G]));if(X.generateModes||X.generateDerivedTokens||X.generateBreakpointTokens)for(let G of $){let E=P2(G,X,Z);if(Y.push(...E),X.generateModes){for(let z of E)if(z.extensions?.mode&&!z.name.includes("#")){let L=P2(z,X,Z);Y.push(...L)}}}let q=X.modes||[],U=q.length>0?q[0]:void 0,K={tokens:new Map(Y.map((G)=>[G.name,G])),mode:X.generateModes?U:void 0,options:X,brokenReferences:[]},W=[];for(let G of Y){let E=void 0;for(let _ of q)if(G.name.endsWith(`#${_}`)){E=_;break}if(!E&&X.generateModes)E=U;let z={...K,mode:E},L=kY(G,z);W.push(L)}if(X.failOnBrokenReferences!==!1&&K.brokenReferences.length>0){let G=[...new Set(K.brokenReferences)],E=`Token reference${G.length>1?"s":""} not found:
|
|
33
33
|
${G.map((z)=>` - ${z}`).join(`
|
|
34
|
-
`)}`;throw Error(E)}return W}function P2($,X,Y){let Z=[];if(X.generateModes&&$.extensions?.mode){for(let[q,U]of Object.entries($.extensions.mode))if(U!==void 0)Z.push({...$,name:`${$.name}#${q}`,value:U,path:[...$.path,`#${q}`]})}if(X.generateModes&&!$.extensions?.mode&&(Array.isArray($.value)||typeof $.value==="object"&&$.value!==null)){let q=!1,U=!1,K=(W)=>{if(typeof W!=="object"||W===null)return!1;if(W.$extensions?.mode)return!0;return Object.values(W).some((A)=>{if(typeof A==="object"&&A!==null)return K(A);return!1})};if(Array.isArray($.value))q=$.value.some((W)=>typeof W==="string"&&W.includes("{")||typeof W==="object"&&W!==null&&Object.values(W).some((A)=>typeof A==="string"&&A.includes("{"))),U=$.value.some((W)=>K(W));else q=Object.values($.value).some((W)=>typeof W==="string"&&W.includes("{")),U=K($.value);if(q||U){if(["color","shadow","border","background","surface","composition"].includes($.type)){let G;if(Array.isArray($.value))G=$.value.map((E)=>{if(typeof E==="string"&&E.startsWith("{")&&E.endsWith("}")){let z=E.slice(1,-1);if(!z.includes("#dark")&&!z.includes("@dark"))return`{${z}#dark}`;return E}else if(typeof E==="object"&&E!==null){let z={};for(let[L,_]of Object.entries(E))if(typeof _==="string"&&_.startsWith("{")&&_.endsWith("}")){let H=_.slice(1,-1),Q=`${H}#dark`,B=Y?.get(H),w=Y?.has(Q)||B?.extensions?.mode?.dark!==void 0||B&&(Array.isArray(B.value)||typeof B.value==="object"&&B.value!==null);if(!H.includes("#dark")&&!H.includes("@dark")&&w)z[L]=`{${Q}}`;else z[L]=_}else z[L]=_;return z}return E});else if(typeof $.value==="object"&&$.value!==null){G={};let E=(z)=>{if(typeof z==="string"){if(z.startsWith("{")&&z.endsWith("}")){let L=z.slice(1,-1),_=`${L}#dark`,H=(B,w=new Set)=>{if(w.has(B))return!1;w.add(B);let O=Y?.get(B);if(!O){let I=B.match(/^(.+)@([^@]+)$/);if(I){let[,J,R]=I,f=Y?.get(J);if(f){if(f.extensions?.mode?.dark!==void 0)return!0;if(f.extensions?.generators)return!0;return H(J,w)}}return!1}if(O.extensions?.mode?.dark!==void 0)return!0;if(Y?.has(`${B}#dark`))return!0;if(typeof O.value==="string"&&O.value.startsWith("{")&&O.value.endsWith("}")){let I=O.value.slice(1,-1);return H(I,w)}if(Array.isArray(O.value)||typeof O.value==="object"&&O.value!==null){let I=(J)=>{if(typeof J!=="object"||J===null)return!1;if(J.$extensions?.mode)return!0;return Object.values(J).some((R)=>{if(typeof R==="object"&&R!==null)return I(R);return!1})};if(Array.isArray(O.value))return O.value.some((J)=>typeof J==="string"&&J.includes("{")&&H(J.slice(1,-1),new Set(w))||typeof J==="object"&&J!==null&&(Object.values(J).some((R)=>typeof R==="string"&&R.includes("{")&&H(R.slice(1,-1),new Set(w)))||I(J)));else if(typeof O.value==="object")return Object.values(O.value).some((J)=>typeof J==="string"&&J.includes("{")&&H(J.slice(1,-1),new Set(w)))||I(O.value)}return!1},Q=H(L);if(!L.includes("#dark")&&!L.includes("@dark")&&Q)return`{${_}}`}return z}if(typeof z==="object"&&z!==null){if(z.$extensions?.mode?.dark)return z.$extensions.mode.dark;let L={};for(let[_,H]of Object.entries(z))L[_]=E(H);return L}return z};for(let[z,L]of Object.entries($.value))G[z]=E(L)}Z.push({...$,name:`${$.name}#dark`,value:G,path:[...$.path,"#dark"],extensions:{...$.extensions,autoGenerated:!0}})}}}if(X.generateModes&&!$.extensions?.mode&&typeof $.value==="string"&&$.value.startsWith("{")&&$.value.endsWith("}")){let q=$.value.slice(1,-1),U=(E,z=new Set)=>{if(z.has(E))return!1;z.add(E);let L=Y?.get(E);if(!L){let _=E.match(/^(.+)@([^@]+)$/);if(_){let[,H,Q]=_,B=Y?.get(H);if(B){if(B.extensions?.mode?.dark!==void 0)return!0;if(B.extensions?.generators)return!0;return U(H,z)}}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 _=L.value.slice(1,-1);return U(_,z)}if(Array.isArray(L.value)||typeof L.value==="object"&&L.value!==null){let _=(H)=>{if(typeof H!=="object"||H===null)return!1;if(H.$extensions?.mode)return!0;return Object.values(H).some((Q)=>{if(typeof Q==="object"&&Q!==null)return _(Q);return!1})};if(Array.isArray(L.value))return L.value.some((H)=>typeof H==="string"&&H.includes("{")&&U(H.slice(1,-1),new Set(z))||typeof H==="object"&&H!==null&&(Object.values(H).some((Q)=>typeof Q==="string"&&Q.includes("{")&&U(Q.slice(1,-1),new Set(z)))||_(H)));else if(typeof L.value==="object")return Object.values(L.value).some((H)=>typeof H==="string"&&H.includes("{")&&U(H.slice(1,-1),new Set(z)))||_(L.value)}return!1},K=U(q);if(["color","shadow","border","background","surface","composition"].includes($.type)&&K&&K&&!q.includes("#dark")&&!q.includes("@dark")){let E=`{${q}#dark}`;Z.push({...$,name:`${$.name}#dark`,value:E,path:[...$.path,"#dark"],extensions:{...$.extensions,autoGenerated:!0}})}}if(X.generateDerivedTokens&&$.extensions?.generators)for(let q of $.extensions.generators)for(let[U,K]of Object.entries(q.value)){let W=R2($.name,U),{generators:A,...G}=$.extensions;Z.push({...$,name:W,value:$.value,path:[...$.path,U],extensions:{...G,generator:{type:q.type,value:K}}})}if(X.generateBreakpointTokens&&$.extensions?.breakpoints)for(let[q,U]of Object.entries($.extensions.breakpoints)){let K=`${$.name}@${q.replace(/[^a-zA-Z0-9]/g,"_")}`,W=U.$value||U.value;if(W&&typeof W==="object"&&"$value"in W)W=W.$value;else if(!W&&typeof U==="object"){let{...E}=U;if(Object.keys(E).length>0)W=E}let A=U.$extensions||U.$extensions,G=U.$type;if(!G&&U.value&&typeof U.value==="object")G=U.value.$type;Z.push({...$,name:K,value:W,path:[...$.path,`@${q}`],type:G||$.type,extensions:{mediaQuery:q,...A?{mode:A.mode||A.$mode,generators:A.generators||A.$generators,...Object.fromEntries(Object.entries(A).filter(([E])=>!["mode","$mode","generators","$generators"].includes(E)))}:{}}})}return Z}function kY($,X){let Y=a($.value,X),Z=$.type;if(typeof $.value==="string"&&Q$($.value)){let U=$.value.slice(1,-1),K=X.tokens.get(U);if(K){if(["border","shadow","typography","composition"].includes(K.type))Z=K.type;else if(typeof K.value==="string"&&O$(K.value)){let W=D$(K.value),A=new Set;for(let G of W)if(G.type==="reference"&&G.ref&&typeof G.ref==="string"){let E=G.ref.slice(1,-1),z=X.tokens.get(E);if(z&&["border","shadow","typography","composition"].includes(z.type))A.add(z.type)}if(A.size===1)Z=Array.from(A)[0]}}}if(typeof $.value==="string"&&O$($.value)){let U=D$($.value),K=new Set;for(let W of U)if(W.type==="reference"&&W.ref&&typeof W.ref==="string"){let A=W.ref.slice(1,-1),G=X.tokens.get(A);if(G&&["border","shadow","typography","composition"].includes(G.type))K.add(G.type)}if(K.size===1)Z=Array.from(K)[0]}if(typeof Y==="object"&&Y!==null&&["border","shadow","typography","composition"].includes(Z))Y=l(Y,X);if($.extensions?.generator&&typeof $.extensions.generator==="object"&&"type"in $.extensions.generator&&"value"in $.extensions.generator)Y=b$($.value,$.extensions.generator.type,$.extensions.generator.value,X);let q=cY($.name,X.options);if(Z==="color"&&typeof Y==="string"&&p(Y))Y=F(Y,$);if(typeof Y==="string"&&d(Y))Y=B$(Y);return{...$,type:Z,value:Y,cssVar:q}}function l($,X){if(typeof $==="string"){if(Q$($))return J0($,X);else if(O$($))return V2($,X)}if(Array.isArray($))return $.map((Y)=>l(Y,X));if(typeof $==="object"&&$!==null){if("$value"in $&&typeof $.$value==="string")return l($.$value,X);if("value"in $&&typeof $.value==="string"&&"$type"in $){if(X.mode&&$.$extensions?.mode?.[X.mode])return l($.$extensions.mode[X.mode],X);return l($.value,X)}if("value"in $&&typeof $.value==="object"&&"$type"in $){let Z=$.value,q=$.$extensions?.delimiter?.character||" ";if($.$type==="composition"&&Z&&typeof Z==="object")return Object.values(Z).map((K)=>l(K,X)).join(q);return l($.value,X)}let Y={};for(let[Z,q]of Object.entries($))Y[Z]=l(q,X);return Y}return $}function a($,X){if(typeof $==="string"){if(O$($))return V2($,X);else if(Q$($))return J0($,X)}else if(typeof $==="object"&&$!==null&&"$ref"in $)return C2($,X);return $}function J0($,X){let Y=$.slice(1,-1),Z=X.tokens.get(Y),q=X.options.modes||[];if(!Z){if(q.length>0){for(let W of q)if(Y.endsWith(`@${W}`)){let A=Y.slice(0,-W.length-1)+`#${W}`;if(Z=X.tokens.get(A),Z)return O0(Z,X);break}}let K=Y.match(/#([^#@]+)$/);if(K){let W=Y.substring(0,K.index),A=K[1];if(Z=X.tokens.get(W),Z){if(Z.extensions?.mode?.[A]){let G=Z.extensions.mode[A],E=a(G,{...X,mode:A});if(Z.extensions?.generator&&typeof Z.extensions.generator==="object"&&"type"in Z.extensions.generator&&"value"in Z.extensions.generator)E=b$(E,Z.extensions.generator.type,Z.extensions.generator.value,X);if(Z.type==="color"&&typeof E==="string"&&p(E))E=F(E,Z);if(typeof E==="string"&&d(E))E=B$(E);return E}}}if(q.length>0)for(let W of q){let A=new RegExp(`(@[^@]+)@${W}$`);if(A.test(Y)){let G=Y.replace(A,`$1#${W}`);if(Z=X.tokens.get(G),!Z){let E=G.match(/#([^#@]+)$/);if(E){let z=G.substring(0,E.index),L=E[1];if(Z=X.tokens.get(z),Z&&Z.extensions?.mode?.[L]){let _=Z.extensions.mode[L],H=a(_,{...X,mode:L});if(Z.extensions?.generator&&typeof Z.extensions.generator==="object"&&"type"in Z.extensions.generator&&"value"in Z.extensions.generator)H=b$(H,Z.extensions.generator.type,Z.extensions.generator.value,X);if(Z.type==="color"&&typeof H==="string"&&p(H))H=F(H,Z);if(typeof H==="string"&&d(H))H=B$(H);return H}}}else return O0(Z,X);break}}}if(!Z)return console.warn(`Token reference not found: ${$}`),X.brokenReferences.push($),$;return O0(Z,X)}function O0($,X){let Y;if($.extensions?.generator&&typeof $.extensions.generator==="object"&&"type"in $.extensions.generator&&"value"in $.extensions.generator)Y=b$($.value,$.extensions.generator.type,$.extensions.generator.value,X);else if(X.mode&&$.extensions?.mode?.[X.mode])Y=a($.extensions.mode[X.mode],X);else Y=a($.value,X);if($.type==="color"&&typeof Y==="string"&&p(Y))Y=F(Y,$);if(typeof Y==="string"&&d(Y))Y=B$(Y);return Y}function C2($,X){let Z=$.$ref.slice(2).replace(/\//g,"."),q=X.tokens.get(Z);if(!q)return console.warn(`JSON Pointer reference not found: ${$.$ref}`),X.brokenReferences.push($.$ref),$.$ref;return a(q.value,X)}function V2($,X){let Y=D$($),Z=Y.some((K)=>K.value.includes(",")),q=!0,U=[];for(let K of Y){let W;if(K.type==="reference"&&K.ref){if(typeof K.ref==="string"&&Q$(K.ref)){W=J0(K.ref,X);let A=K.ref.slice(1,-1),G=X.tokens.get(A);if(!G||!["border","shadow","typography","composition"].includes(G.type))q=!1}else if(typeof K.ref==="object"&&"$ref"in K.ref)W=C2(K.ref,X)}else if(W=K.value,K.value.trim()&&K.value.trim()!==",")q=!1;U.push(W)}if(Z&&q)return U.filter((K)=>typeof K==="object"&&K!==null&&typeof K!=="string");return U.map((K)=>String(K)).join("")}function b$($,X,Y,Z){let q=a($,Z);switch(X){case"alpha":if(typeof q==="string")return lY(q,Number(Y)/100);break;case"scale":if(typeof q==="string"&&q.match(/[\d.]+/))return rY(q,Number(Y));break;case"hue":if(typeof q==="string")return iY(q,Number(Y));break;default:return console.warn(`Unknown generator type: ${X}`),q}return q}function cY($,X,Y){let Z=$.replace(/\./g,"-");Z=Z.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase(),Z=Z.replace(/@[^@#]*(?:screen|width|height|min|max|orientation).*$/i,""),Z=Z.replace(/#[^#]*$/,""),Z=Z.replace(/-@/g,"-").replace(/@/g,"-");let q=Z,U=!0,K=X.prefix||"";if(X.transformName){if(q=X.transformName(Z),q=q.replace(/-+$/,""),q!==Z)U=!1}let W=U&&K?`${K}-${q}`:q,A=Y?`-${Y}`:"";return`--${W}${A}`.replace(/[^a-zA-Z0-9-_]/g,"-")}function lY($,X){try{if(!p($))return $;let Y=new D2($);return Y.alpha=X,F(Y)}catch(Y){return console.warn(`Failed to apply alpha to color "${$}": ${Y}`),$}}function rY($,X){let Y=$.match(/([\d.]+)(\w+)/);if(Y){let[,Z,q]=Y;return`${parseFloat(Z)*X}${q}`}return $}function iY($,X){try{if(!p($))return $;let Z=new D2($).to("oklch");return Z.h=(Z.h+X)%360,F(Z)}catch(Y){return console.warn(`Failed to shift hue for color "${$}": ${Y}`),$}}var R0=S(()=>{x2();K$()});function M0($){if($.type==="typography"||$.type==="fontWeight"||$.type==="fontFamily")return!0;if($.type==="dimension"&&$.name.includes("typography"))return!0;if($.name.includes("typography")||$.name.includes("font"))return!0;return!1}function n($,X,Y){if(Y){if($===X)return":host";return`:host([data-theme="${$}"])`}if($===X)return":root";return`[data-theme="${$}"]`}function C$($,X={}){let{rootSelector:Y=":root",separateThemeFiles:Z=!1,generateMediaQueries:q=!1,customHeader:U,modes:K=["light","dark"]}=X;if(Z)return aY($,X);let W=new Map,A=new Map;for(let O of K)W.set(O,[]);let G=K.join("|"),E=new RegExp(`#(${G})$`);for(let O of $){if(typeof O.value==="string"&&d(O.value))continue;if(M0(O))continue;let I=` ${O.cssVar}: ${h(O.value,O.type)};`;if(q&&O.name.includes("@media")){let R=T$(O);if(R){if(!A.has(R))A.set(R,[]);A.get(R).push(I);continue}}let J=O.name.match(E);if(J){let R=J[1];if(!W.has(R))W.set(R,[]);W.get(R).push(I)}else{let R=K[0]||"light";W.get(R).push(I)}}let z="";if(U)z+=`${U}
|
|
34
|
+
`)}`;throw new Error(E)}return W}function P2($,X,Y){let Z=[];if(X.generateModes&&$.extensions?.mode){for(let[q,U]of Object.entries($.extensions.mode))if(U!==void 0)Z.push({...$,name:`${$.name}#${q}`,value:U,path:[...$.path,`#${q}`]})}if(X.generateModes&&!$.extensions?.mode&&(Array.isArray($.value)||typeof $.value==="object"&&$.value!==null)){let q=!1,U=!1,K=(W)=>{if(typeof W!=="object"||W===null)return!1;if(W.$extensions?.mode)return!0;return Object.values(W).some((A)=>{if(typeof A==="object"&&A!==null)return K(A);return!1})};if(Array.isArray($.value))q=$.value.some((W)=>typeof W==="string"&&W.includes("{")||typeof W==="object"&&W!==null&&Object.values(W).some((A)=>typeof A==="string"&&A.includes("{"))),U=$.value.some((W)=>K(W));else q=Object.values($.value).some((W)=>typeof W==="string"&&W.includes("{")),U=K($.value);if(q||U){if(["color","shadow","border","background","surface","composition"].includes($.type)){let G;if(Array.isArray($.value))G=$.value.map((E)=>{if(typeof E==="string"&&E.startsWith("{")&&E.endsWith("}")){let z=E.slice(1,-1);if(!z.includes("#dark")&&!z.includes("@dark"))return`{${z}#dark}`;return E}else if(typeof E==="object"&&E!==null){let z={};for(let[L,_]of Object.entries(E))if(typeof _==="string"&&_.startsWith("{")&&_.endsWith("}")){let H=_.slice(1,-1),Q=`${H}#dark`,B=Y?.get(H),w=Y?.has(Q)||B?.extensions?.mode?.dark!==void 0||B&&(Array.isArray(B.value)||typeof B.value==="object"&&B.value!==null);if(!H.includes("#dark")&&!H.includes("@dark")&&w)z[L]=`{${Q}}`;else z[L]=_}else z[L]=_;return z}return E});else if(typeof $.value==="object"&&$.value!==null){G={};let E=(z)=>{if(typeof z==="string"){if(z.startsWith("{")&&z.endsWith("}")){let L=z.slice(1,-1),_=`${L}#dark`,H=(B,w=new Set)=>{if(w.has(B))return!1;w.add(B);let O=Y?.get(B);if(!O){let I=B.match(/^(.+)@([^@]+)$/);if(I){let[,J,R]=I,f=Y?.get(J);if(f){if(f.extensions?.mode?.dark!==void 0)return!0;if(f.extensions?.generators)return!0;return H(J,w)}}return!1}if(O.extensions?.mode?.dark!==void 0)return!0;if(Y?.has(`${B}#dark`))return!0;if(typeof O.value==="string"&&O.value.startsWith("{")&&O.value.endsWith("}")){let I=O.value.slice(1,-1);return H(I,w)}if(Array.isArray(O.value)||typeof O.value==="object"&&O.value!==null){let I=(J)=>{if(typeof J!=="object"||J===null)return!1;if(J.$extensions?.mode)return!0;return Object.values(J).some((R)=>{if(typeof R==="object"&&R!==null)return I(R);return!1})};if(Array.isArray(O.value))return O.value.some((J)=>typeof J==="string"&&J.includes("{")&&H(J.slice(1,-1),new Set(w))||typeof J==="object"&&J!==null&&(Object.values(J).some((R)=>typeof R==="string"&&R.includes("{")&&H(R.slice(1,-1),new Set(w)))||I(J)));else if(typeof O.value==="object")return Object.values(O.value).some((J)=>typeof J==="string"&&J.includes("{")&&H(J.slice(1,-1),new Set(w)))||I(O.value)}return!1},Q=H(L);if(!L.includes("#dark")&&!L.includes("@dark")&&Q)return`{${_}}`}return z}if(typeof z==="object"&&z!==null){if(z.$extensions?.mode?.dark)return z.$extensions.mode.dark;let L={};for(let[_,H]of Object.entries(z))L[_]=E(H);return L}return z};for(let[z,L]of Object.entries($.value))G[z]=E(L)}Z.push({...$,name:`${$.name}#dark`,value:G,path:[...$.path,"#dark"],extensions:{...$.extensions,autoGenerated:!0}})}}}if(X.generateModes&&!$.extensions?.mode&&typeof $.value==="string"&&$.value.startsWith("{")&&$.value.endsWith("}")){let q=$.value.slice(1,-1),U=(E,z=new Set)=>{if(z.has(E))return!1;z.add(E);let L=Y?.get(E);if(!L){let _=E.match(/^(.+)@([^@]+)$/);if(_){let[,H,Q]=_,B=Y?.get(H);if(B){if(B.extensions?.mode?.dark!==void 0)return!0;if(B.extensions?.generators)return!0;return U(H,z)}}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 _=L.value.slice(1,-1);return U(_,z)}if(Array.isArray(L.value)||typeof L.value==="object"&&L.value!==null){let _=(H)=>{if(typeof H!=="object"||H===null)return!1;if(H.$extensions?.mode)return!0;return Object.values(H).some((Q)=>{if(typeof Q==="object"&&Q!==null)return _(Q);return!1})};if(Array.isArray(L.value))return L.value.some((H)=>typeof H==="string"&&H.includes("{")&&U(H.slice(1,-1),new Set(z))||typeof H==="object"&&H!==null&&(Object.values(H).some((Q)=>typeof Q==="string"&&Q.includes("{")&&U(Q.slice(1,-1),new Set(z)))||_(H)));else if(typeof L.value==="object")return Object.values(L.value).some((H)=>typeof H==="string"&&H.includes("{")&&U(H.slice(1,-1),new Set(z)))||_(L.value)}return!1},K=U(q);if(["color","shadow","border","background","surface","composition"].includes($.type)&&K&&K&&!q.includes("#dark")&&!q.includes("@dark")){let E=`{${q}#dark}`;Z.push({...$,name:`${$.name}#dark`,value:E,path:[...$.path,"#dark"],extensions:{...$.extensions,autoGenerated:!0}})}}if(X.generateDerivedTokens&&$.extensions?.generators)for(let q of $.extensions.generators)for(let[U,K]of Object.entries(q.value)){let W=R2($.name,U),{generators:A,...G}=$.extensions;Z.push({...$,name:W,value:$.value,path:[...$.path,U],extensions:{...G,generator:{type:q.type,value:K}}})}if(X.generateBreakpointTokens&&$.extensions?.breakpoints)for(let[q,U]of Object.entries($.extensions.breakpoints)){let K=`${$.name}@${q.replace(/[^a-zA-Z0-9]/g,"_")}`,W=U.$value||U.value;if(W&&typeof W==="object"&&"$value"in W)W=W.$value;else if(!W&&typeof U==="object"){let{...E}=U;if(Object.keys(E).length>0)W=E}let A=U.$extensions||U.$extensions,G=U.$type;if(!G&&U.value&&typeof U.value==="object")G=U.value.$type;Z.push({...$,name:K,value:W,path:[...$.path,`@${q}`],type:G||$.type,extensions:{mediaQuery:q,...A?{mode:A.mode||A.$mode,generators:A.generators||A.$generators,...Object.fromEntries(Object.entries(A).filter(([E])=>!["mode","$mode","generators","$generators"].includes(E)))}:{}}})}return Z}function kY($,X){let Y=a($.value,X),Z=$.type;if(typeof $.value==="string"&&Q$($.value)){let U=$.value.slice(1,-1),K=X.tokens.get(U);if(K){if(["border","shadow","typography","composition"].includes(K.type))Z=K.type;else if(typeof K.value==="string"&&O$(K.value)){let W=D$(K.value),A=new Set;for(let G of W)if(G.type==="reference"&&G.ref&&typeof G.ref==="string"){let E=G.ref.slice(1,-1),z=X.tokens.get(E);if(z&&["border","shadow","typography","composition"].includes(z.type))A.add(z.type)}if(A.size===1)Z=Array.from(A)[0]}}}if(typeof $.value==="string"&&O$($.value)){let U=D$($.value),K=new Set;for(let W of U)if(W.type==="reference"&&W.ref&&typeof W.ref==="string"){let A=W.ref.slice(1,-1),G=X.tokens.get(A);if(G&&["border","shadow","typography","composition"].includes(G.type))K.add(G.type)}if(K.size===1)Z=Array.from(K)[0]}if(typeof Y==="object"&&Y!==null&&["border","shadow","typography","composition"].includes(Z))Y=l(Y,X);if($.extensions?.generator&&typeof $.extensions.generator==="object"&&"type"in $.extensions.generator&&"value"in $.extensions.generator)Y=b$($.value,$.extensions.generator.type,$.extensions.generator.value,X);let q=cY($.name,X.options);if(Z==="color"&&typeof Y==="string"&&p(Y))Y=F(Y,$);if(typeof Y==="string"&&d(Y))Y=B$(Y);return{...$,type:Z,value:Y,cssVar:q}}function l($,X){if(typeof $==="string"){if(Q$($))return J0($,X);else if(O$($))return V2($,X)}if(Array.isArray($))return $.map((Y)=>l(Y,X));if(typeof $==="object"&&$!==null){if("$value"in $&&typeof $.$value==="string")return l($.$value,X);if("value"in $&&typeof $.value==="string"&&"$type"in $){if(X.mode&&$.$extensions?.mode?.[X.mode])return l($.$extensions.mode[X.mode],X);return l($.value,X)}if("value"in $&&typeof $.value==="object"&&"$type"in $){let Z=$.value,q=$.$extensions?.delimiter?.character||" ";if($.$type==="composition"&&Z&&typeof Z==="object")return Object.values(Z).map((K)=>l(K,X)).join(q);return l($.value,X)}let Y={};for(let[Z,q]of Object.entries($))Y[Z]=l(q,X);return Y}return $}function a($,X){if(typeof $==="string"){if(O$($))return V2($,X);else if(Q$($))return J0($,X)}else if(typeof $==="object"&&$!==null&&"$ref"in $)return C2($,X);return $}function J0($,X){let Y=$.slice(1,-1),Z=X.tokens.get(Y),q=X.options.modes||[];if(!Z){if(q.length>0){for(let W of q)if(Y.endsWith(`@${W}`)){let A=Y.slice(0,-W.length-1)+`#${W}`;if(Z=X.tokens.get(A),Z)return O0(Z,X);break}}let K=Y.match(/#([^#@]+)$/);if(K){let W=Y.substring(0,K.index),A=K[1];if(Z=X.tokens.get(W),Z){if(Z.extensions?.mode?.[A]){let G=Z.extensions.mode[A],E=a(G,{...X,mode:A});if(Z.extensions?.generator&&typeof Z.extensions.generator==="object"&&"type"in Z.extensions.generator&&"value"in Z.extensions.generator)E=b$(E,Z.extensions.generator.type,Z.extensions.generator.value,X);if(Z.type==="color"&&typeof E==="string"&&p(E))E=F(E,Z);if(typeof E==="string"&&d(E))E=B$(E);return E}}}if(q.length>0)for(let W of q){let A=new RegExp(`(@[^@]+)@${W}$`);if(A.test(Y)){let G=Y.replace(A,`$1#${W}`);if(Z=X.tokens.get(G),!Z){let E=G.match(/#([^#@]+)$/);if(E){let z=G.substring(0,E.index),L=E[1];if(Z=X.tokens.get(z),Z&&Z.extensions?.mode?.[L]){let _=Z.extensions.mode[L],H=a(_,{...X,mode:L});if(Z.extensions?.generator&&typeof Z.extensions.generator==="object"&&"type"in Z.extensions.generator&&"value"in Z.extensions.generator)H=b$(H,Z.extensions.generator.type,Z.extensions.generator.value,X);if(Z.type==="color"&&typeof H==="string"&&p(H))H=F(H,Z);if(typeof H==="string"&&d(H))H=B$(H);return H}}}else return O0(Z,X);break}}}if(!Z)return console.warn(`Token reference not found: ${$}`),X.brokenReferences.push($),$;return O0(Z,X)}function O0($,X){let Y;if($.extensions?.generator&&typeof $.extensions.generator==="object"&&"type"in $.extensions.generator&&"value"in $.extensions.generator)Y=b$($.value,$.extensions.generator.type,$.extensions.generator.value,X);else if(X.mode&&$.extensions?.mode?.[X.mode])Y=a($.extensions.mode[X.mode],X);else Y=a($.value,X);if($.type==="color"&&typeof Y==="string"&&p(Y))Y=F(Y,$);if(typeof Y==="string"&&d(Y))Y=B$(Y);return Y}function C2($,X){let Z=$.$ref.slice(2).replace(/\//g,"."),q=X.tokens.get(Z);if(!q)return console.warn(`JSON Pointer reference not found: ${$.$ref}`),X.brokenReferences.push($.$ref),$.$ref;return a(q.value,X)}function V2($,X){let Y=D$($),Z=Y.some((K)=>K.value.includes(",")),q=!0,U=[];for(let K of Y){let W;if(K.type==="reference"&&K.ref){if(typeof K.ref==="string"&&Q$(K.ref)){W=J0(K.ref,X);let A=K.ref.slice(1,-1),G=X.tokens.get(A);if(!G||!["border","shadow","typography","composition"].includes(G.type))q=!1}else if(typeof K.ref==="object"&&"$ref"in K.ref)W=C2(K.ref,X)}else if(W=K.value,K.value.trim()&&K.value.trim()!==",")q=!1;U.push(W)}if(Z&&q)return U.filter((K)=>typeof K==="object"&&K!==null&&typeof K!=="string");return U.map((K)=>String(K)).join("")}function b$($,X,Y,Z){let q=a($,Z);switch(X){case"alpha":if(typeof q==="string")return lY(q,Number(Y)/100);break;case"scale":if(typeof q==="string"&&q.match(/[\d.]+/))return rY(q,Number(Y));break;case"hue":if(typeof q==="string")return iY(q,Number(Y));break;default:return console.warn(`Unknown generator type: ${X}`),q}return q}function cY($,X,Y){let Z=$.replace(/\./g,"-");Z=Z.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase(),Z=Z.replace(/@[^@#]*(?:screen|width|height|min|max|orientation).*$/i,""),Z=Z.replace(/#[^#]*$/,""),Z=Z.replace(/-@/g,"-").replace(/@/g,"-");let q=Z,U=!0,K=X.prefix||"";if(X.transformName){if(q=X.transformName(Z),q=q.replace(/-+$/,""),q!==Z)U=!1}let W=U&&K?`${K}-${q}`:q,A=Y?`-${Y}`:"";return`--${W}${A}`.replace(/[^a-zA-Z0-9-_]/g,"-")}function lY($,X){try{if(!p($))return $;let Y=new D2($);return Y.alpha=X,F(Y)}catch(Y){return console.warn(`Failed to apply alpha to color "${$}": ${Y}`),$}}function rY($,X){let Y=$.match(/([\d.]+)(\w+)/);if(Y){let[,Z,q]=Y;return`${parseFloat(Z)*X}${q}`}return $}function iY($,X){try{if(!p($))return $;let Z=new D2($).to("oklch");return Z.h=(Z.h+X)%360,F(Z)}catch(Y){return console.warn(`Failed to shift hue for color "${$}": ${Y}`),$}}var R0=S(()=>{x2();K$()});function M0($){if($.type==="typography"||$.type==="fontWeight"||$.type==="fontFamily")return!0;if($.type==="dimension"&&$.name.includes("typography"))return!0;if($.name.includes("typography")||$.name.includes("font"))return!0;return!1}function n($,X,Y){if(Y){if($===X)return":host";return`:host([data-theme="${$}"])`}if($===X)return":root";return`[data-theme="${$}"]`}function C$($,X={}){let{rootSelector:Y=":root",separateThemeFiles:Z=!1,generateMediaQueries:q=!1,customHeader:U,modes:K=["light","dark"]}=X;if(Z)return aY($,X);let W=new Map,A=new Map;for(let O of K)W.set(O,[]);let G=K.join("|"),E=new RegExp(`#(${G})$`);for(let O of $){if(typeof O.value==="string"&&d(O.value))continue;if(M0(O))continue;let I=` ${O.cssVar}: ${h(O.value,O.type)};`;if(q&&O.name.includes("@media")){let R=T$(O);if(R){if(!A.has(R))A.set(R,[]);A.get(R).push(I);continue}}let J=O.name.match(E);if(J){let R=J[1];if(!W.has(R))W.set(R,[]);W.get(R).push(I)}else{let R=K[0]||"light";W.get(R).push(I)}}let z="";if(U)z+=`${U}
|
|
35
35
|
|
|
36
36
|
`;let L=X.defaultMode||K[0]||"light",_=X.isHost||!1,H=W.get(L)||[];if(H.length>0){H.sort();let O=n(L,L,_);z+=`${O} {
|
|
37
37
|
${H.join(`
|
|
@@ -133,7 +133,7 @@ ${A.sort().map((_)=>` ${_}`).join(`
|
|
|
133
133
|
`;U+=`:root {
|
|
134
134
|
`;let K=[...$].sort((W,A)=>W.name.localeCompare(A.name));for(let W of K){let A=W.name.replace(/([A-Z])/g,"-$1").toLowerCase().replace(/^-/,""),G=`${q}-${W.category}-${A}`;if(X.hooks?.shortenName?.enabled)G=N0(G,X.hooks);let E=A1(W.value);U+=` ${G}: url("${E}");
|
|
135
135
|
`}return U+=`}
|
|
136
|
-
`,{fileName:"tokens.icons.css",content:U.trim()}}var y$=S(()=>{T()});import{readFileSync as E1,existsSync as L1}from"fs";import{join as p2,relative as H1}from"path";async function j0(){try{let{assets:$}=await m(!0),{icons:X}=await C(),Y=await s(),Z=$?.icons?.distDir??"build",q=p2(Y,Z),U=p2(q,"tokens",await Z$("json"));if(!L1(U)){let z=H1(process.cwd(),U);return console.log(`ℹ️ Icon data not found (skipping icon types): ${z}`),console.log(" Run icon build first if you need icon types generated."),[]}let K=JSON.parse(E1(U,"utf8")),W=X?.objectPath??"universe.icons",A=W.split("."),G=K;for(let z of A)if(G&&typeof G==="object"&&z in G)G=G[z];else throw Error(`Icon path ${W} not found in icons file`);let E=[];for(let[z,L]of Object.entries(G))if(typeof L==="object"&&L!==null){for(let[_,H]of Object.entries(L))if(typeof H==="object"&&H!==null){let Q=H;E.push({name:_,category:z,value:Q.$value||"",description:Q.$description||"",style:Q.$style||"",dimensions:Q.$dimensions})}}return E}catch($){if($ instanceof Error){if("code"in $&&$.code!=="ENOENT")console.warn(`⚠️ Could not load icon data: ${$.message}`)}return[]}}async function S0($,X={}){let{generateTypes:Y=!0,generateConsts:Z=!0}=X,q=X.icons;if(!q)q=await j0();let U={...X,icons:q},K=[];if(Y)K.push({fileName:"tokens.types.ts",content:_1($,U),type:"types"});if(Z)K.push({fileName:"tokens.constants.ts",content:Q1($,U),type:"constants"});return K.push({fileName:"index.ts",content:O1(K),type:"index"}),K}function _1($,X){let{tokenInterface:Y="DesignTokens",includeJSDoc:Z=!0,icons:q=[]}=X,U=P0("Type Definitions");if(U+=B1($,Z),U+=w1($,Z),q.length>0)U+=I1(q,Z);return U+=J1($,Y,Z),U+=M1($,Z),U}function Q1($,X){let{includeJSDoc:Y=!0,icons:Z=[]}=X,q=P0("Token Constants"),U="TokenPaths, CSSVariableNames";if(Z.length>0)U+=", IconNames, IconCategories, Icon";if(q+=`import type { ${U} } from './tokens.types';
|
|
136
|
+
`,{fileName:"tokens.icons.css",content:U.trim()}}var y$=S(()=>{T()});import{readFileSync as E1,existsSync as L1}from"fs";import{join as p2,relative as H1}from"path";async function j0(){try{let{assets:$}=await m(!0),{icons:X}=await C(),Y=await s(),Z=$?.icons?.distDir??"build",q=p2(Y,Z),U=p2(q,"tokens",await Z$("json"));if(!L1(U)){let z=H1(process.cwd(),U);return console.log(`ℹ️ Icon data not found (skipping icon types): ${z}`),console.log(" Run icon build first if you need icon types generated."),[]}let K=JSON.parse(E1(U,"utf8")),W=X?.objectPath??"universe.icons",A=W.split("."),G=K;for(let z of A)if(G&&typeof G==="object"&&z in G)G=G[z];else throw new Error(`Icon path ${W} not found in icons file`);let E=[];for(let[z,L]of Object.entries(G))if(typeof L==="object"&&L!==null){for(let[_,H]of Object.entries(L))if(typeof H==="object"&&H!==null){let Q=H;E.push({name:_,category:z,value:Q.$value||"",description:Q.$description||"",style:Q.$style||"",dimensions:Q.$dimensions})}}return E}catch($){if($ instanceof Error){if("code"in $&&$.code!=="ENOENT")console.warn(`⚠️ Could not load icon data: ${$.message}`)}return[]}}async function S0($,X={}){let{generateTypes:Y=!0,generateConsts:Z=!0}=X,q=X.icons;if(!q)q=await j0();let U={...X,icons:q},K=[];if(Y)K.push({fileName:"tokens.types.ts",content:_1($,U),type:"types"});if(Z)K.push({fileName:"tokens.constants.ts",content:Q1($,U),type:"constants"});return K.push({fileName:"index.ts",content:O1(K),type:"index"}),K}function _1($,X){let{tokenInterface:Y="DesignTokens",includeJSDoc:Z=!0,icons:q=[]}=X,U=P0("Type Definitions");if(U+=B1($,Z),U+=w1($,Z),q.length>0)U+=I1(q,Z);return U+=J1($,Y,Z),U+=M1($,Z),U}function Q1($,X){let{includeJSDoc:Y=!0,icons:Z=[]}=X,q=P0("Token Constants"),U="TokenPaths, CSSVariableNames";if(Z.length>0)U+=", IconNames, IconCategories, Icon";if(q+=`import type { ${U} } from './tokens.types';
|
|
137
137
|
|
|
138
138
|
`,q+=N1($,Y),q+=F1($,Y),Z.length>0)q+=x1(Z,Y);return q+=j1($,Y),q}function O1($){let X=P0("Main Export");if($.some((Y)=>Y.type==="types"))X+=`export type * from './tokens.types';
|
|
139
139
|
`;if($.some((Y)=>Y.type==="constants"))X+=`export * from './tokens.constants';
|
|
@@ -435,7 +435,7 @@ Build completed in ${Y.duration}ms`,$.verbose)}catch(Z){let q=Z instanceof Error
|
|
|
435
435
|
Validating build output...`,$.verbose);let{validateCSSFiles:Z,printValidationResults:q}=await Promise.resolve().then(() => (o2(),t2)),U=Z($.outputDir,$.config);if($.verbose||!U.isValid)q(U);if(!U.isValid)Y.errors.push(...U.errors)}return Y}function Z4($){let X=$.$metaData,Y=$.$modes?[...Object.values($.$modes)]:[];return{prefix:X.dsNamespace||X.tokenNamespace,namespace:X.tokenNamespace,generateModes:!0,modes:Y,generateDerivedTokens:!0,generateBreakpointTokens:!0,failOnBrokenReferences:!0,transformName:(Z)=>{let q=X.tokens?.css?.hooks?.shortenName;if(q?.enabled){let U=Z;if(q.prefix)for(let{find:K,replace:W}of q.prefix){let A=K.replace(/\./g,"-").replace(/-$/,""),G=W.replace(/\./g,"-").replace(/-$/,"");U=U.replace(A,G)}if(q.suffix){for(let{find:K,replace:W}of q.suffix)if(U.endsWith(K))U=U.substring(0,U.length-K.length)+W}return U}return Z}}}function YY($,X){let Y=$.$metaData,Z=Y.tokens?.css,q=$.$modes?[...Object.values($.$modes)]:["light","dark"],U=q.length>0?q[0]:"light",K=Y.modes?.isHost??!1;return{...X,separateThemeFiles:Z?.mediaQuery?.separateThemeFiles??!1,rootSelector:":root",generateMediaQueries:!0,customHeader:g$($),themeSelector:Z?.mediaQuery?.match||"[data-theme]",modes:q,defaultMode:U,isHost:K,hooks:Z?.hooks}}function q4($,X){let Y=$.$metaData;return{...X,tokenInterface:"DesignTokens",exportNamespace:Y.dsNamespace||Y.tokenNamespace,generateTypes:!0,generateConsts:!0,generateCSSVarMappings:!0,includeJSDoc:!0}}function U4($,X){let Y=$.$modes?[...Object.values($.$modes)]:["light","dark"];return{...X,modes:Y,typescript:!0,separateThemeFiles:!0,includeJSDoc:!1,moduleType:"es",customHeader:`/**
|
|
436
436
|
* ${$.$name}
|
|
437
437
|
* Generated: ${new Date().toISOString()}
|
|
438
|
-
*/`}}function W4($,X,Y){let Z=[],q=JSON.stringify({$schema:"https://schemas.designtokens.org/design-tokens.schema.json",$name:Y.$name,$version:Y.$version,tokens:X.reduce((W,A)=>{return W[A.name]={$type:A.type,$value:A.value,$description:A.description,$extensions:A.extensions},W},{})},null,2);Z.push({fileName:"tokens.raw.json",content:q});let U=JSON.stringify({$name:Y.$name,$version:Y.$version,tokens:$.reduce((W,A)=>{return W[A.name]={$type:A.type,$value:A.value,$description:A.description,cssVar:A.cssVar},W},{})},null,2);Z.push({fileName:"tokens.resolved.json",content:U});let K=JSON.stringify({$name:`${Y.$name} - CSS Variables`,$version:Y.$version,variables:$.reduce((W,A)=>{return W[A.cssVar]=A.value,W},{})},null,2);return Z.push({fileName:"css-variables.json",content:K}),Z}function r($,X){let Y=J$($);if(!y0(Y))a1(Y,{recursive:!0});s1($,X,"utf-8")}function M($,X){if(X!==!1)console.log($)}async function v0($,X){let Y=typeof globalThis.Bun
|
|
438
|
+
*/`}}function W4($,X,Y){let Z=[],q=JSON.stringify({$schema:"https://schemas.designtokens.org/design-tokens.schema.json",$name:Y.$name,$version:Y.$version,tokens:X.reduce((W,A)=>{return W[A.name]={$type:A.type,$value:A.value,$description:A.description,$extensions:A.extensions},W},{})},null,2);Z.push({fileName:"tokens.raw.json",content:q});let U=JSON.stringify({$name:Y.$name,$version:Y.$version,tokens:$.reduce((W,A)=>{return W[A.name]={$type:A.type,$value:A.value,$description:A.description,cssVar:A.cssVar},W},{})},null,2);Z.push({fileName:"tokens.resolved.json",content:U});let K=JSON.stringify({$name:`${Y.$name} - CSS Variables`,$version:Y.$version,variables:$.reduce((W,A)=>{return W[A.cssVar]=A.value,W},{})},null,2);return Z.push({fileName:"css-variables.json",content:K}),Z}function r($,X){let Y=J$($);if(!y0(Y))a1(Y,{recursive:!0});s1($,X,"utf-8")}function M($,X){if(X!==!1)console.log($)}async function v0($,X){let Y=typeof globalThis.Bun!=="undefined",Z=$,q=null;if($.endsWith(".ts")&&!Y){let{compileConfigFile:z,getDistConfigFile:L}=await Promise.resolve().then(() => (_$(),H2)),_=J$($);await z(_),Z=L(_),q=Z}let K=(await import(Z)).default,W=J$($),A=(z)=>{if(z.startsWith("../"))return b(W,z);return b(W,K.$paths.baseDir,z)},G=b(W,K.$paths.baseDir,K.$paths.tokensDir),E=X||A(K.$paths.distDir);try{return await XY({config:K,tokensDir:G,outputDir:E,verbose:!0})}finally{if(q){let{existsSync:z,unlinkSync:L}=await import("fs");if(z(q))try{L(q)}catch(_){}}}}var h0=S(()=>{c2();y$();n2();R0();D0();Q0()});function K4($,X,Y){let Z=D($,{isIncludedOriginalValue:!0}),q=g($,Y);if(!q||!k($,"mode",{isIncludedOriginalValue:!1}))q=Z;return N$($,q,X,Y)}function j$($,X,Y){let Z=K4($,X,Y),q=typeof Z==="string"?$$(Z):null;if(q&&(q?.length??0)>=1)return e(Z,q,X,Y);else return G4($,X,Y)}function G4($,X,Y){return N$($,r$($,X,Y),X,Y)}function N$($,X,Y,Z){if(!$)return null;if($.$type==="color")X=M$(X,$,Y,Z);else if($.$type==="composition"||$.$type==="typography")X=o($,Y,Z);return X}var w$="did";var T=S(()=>{K$();c$();a$();K$();_$();_2();Q2();O2();c$();a$();Q0();R0();y$();D0();h0()});T();h0();import{existsSync as A4}from"fs";import{resolve as E4,join as WY}from"path";import L4 from"chokidar";import{existsSync as f$,statSync as ZY}from"fs";import{resolve as qY}from"path";import{execSync as z4}from"child_process";async function UY($,X=!1){let Y=process.cwd(),Z=$||qY(Y,"designid.config.ts"),q=qY(Y,"designid.config.mjs");if(!f$(Z))return!1;if(!(!f$(q)||f$(Z)&&f$(q)&&ZY(Z).mtimeMs>ZY(q).mtimeMs)){if(X)console.log("✓ Config file is up to date");return!1}if(X)console.log("\uD83D\uDD04 Compiling config file...");try{if(z4(`bun build ${Z} --outfile ${q} --minify --target node --packages external --no-bundle`,{stdio:X?"inherit":"pipe"}),X)console.log(`✅ Config compiled successfully
|
|
439
439
|
`);return!0}catch(K){if(console.error("❌ Failed to compile config file"),K instanceof Error)console.error(K.message);throw K}}if(process.argv.includes("--help")||process.argv.includes("-h"))console.log(`
|
|
440
440
|
Watch Tokens - File watcher for design token changes
|
|
441
441
|
|
|
@@ -451,7 +451,7 @@ Example:
|
|
|
451
451
|
bun src/scripts/watch-tokens.ts
|
|
452
452
|
bun src/scripts/watch-tokens.ts --config=./custom-config.ts
|
|
453
453
|
bun src/scripts/watch-tokens.ts --dev
|
|
454
|
-
`),process.exit(0);async function H4(){let $=await s(),{distDir:X,buildDir:Y}=await m(),Z=[/node_modules/,/dist/,/build/,WY($,X),WY($,Y)],q=L4.watch(["**/*.tokens.json","designid.config.ts"],{ignored:Z,persistent:!0}),U,K=300,W=!1;function A(z){let L=[z,"./designid.config.ts","./designid.config.mjs","./designid.config.js","./tokens.config.ts","./tokens.config.js"].filter(Boolean);for(let _ of L){let H=E4(_);if(A4(H))return H}throw Error(`Config file not found. Tried: ${L.join(", ")}`)}let G=async()=>{if(W){console.log(`[${new Date().toLocaleTimeString()}] Build already in progress, skipping...`);return}clearTimeout(U),U=setTimeout(async()=>{W=!0,console.clear(),process.stdout.write("\x1Bc"),console.log(`[${new Date().toLocaleTimeString()}] Changes detected. Re-building tokens...
|
|
454
|
+
`),process.exit(0);async function H4(){let $=await s(),{distDir:X,buildDir:Y}=await m(),Z=[/node_modules/,/dist/,/build/,WY($,X),WY($,Y)],q=L4.watch(["**/*.tokens.json","designid.config.ts"],{ignored:Z,persistent:!0}),U,K=300,W=!1;function A(z){let L=[z,"./designid.config.ts","./designid.config.mjs","./designid.config.js","./tokens.config.ts","./tokens.config.js"].filter(Boolean);for(let _ of L){let H=E4(_);if(A4(H))return H}throw new Error(`Config file not found. Tried: ${L.join(", ")}`)}let G=async()=>{if(W){console.log(`[${new Date().toLocaleTimeString()}] Build already in progress, skipping...`);return}clearTimeout(U),U=setTimeout(async()=>{W=!0,console.clear(),process.stdout.write("\x1Bc"),console.log(`[${new Date().toLocaleTimeString()}] Changes detected. Re-building tokens...
|
|
455
455
|
`);let z=(()=>{let L=process.argv.find((_)=>_.startsWith("--config="));return L?L.split("=")[1]:void 0})();try{await UY(z,!1);let L=A(z);console.log(`Using config: ${L}`);let _=await v0(L);if(_.errors.length>0){console.log(`
|
|
456
456
|
❌ Build failed with ${_.errors.length} error${_.errors.length>1?"s":""}:`),_.errors.forEach((H)=>console.log(` - ${H}`)),W=!1;return}if(console.log(`
|
|
457
457
|
✅ Build completed successfully!`),console.log(`Processed ${_.tokenCount} tokens in ${_.duration}ms`),_.cssFiles.length>0)console.log(`Generated ${_.cssFiles.length} CSS files`);if(_.typescriptFiles.length>0)console.log(`Generated ${_.typescriptFiles.length} TypeScript files`);if(_.warnings.length>0)console.log(`
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@designid/tokens",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.3",
|
|
4
4
|
"author": "Isa Ozler",
|
|
5
5
|
"packageManager": "bun@1.2.16",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -8,6 +8,8 @@
|
|
|
8
8
|
"prebuild": "bun install",
|
|
9
9
|
"build": "bun src/cli/build-tokens.ts",
|
|
10
10
|
"build:cli": "bun ./scripts/build-cli.ts",
|
|
11
|
+
"build:figma": "bun ./scripts/build-figma-plugin.ts",
|
|
12
|
+
"watch:figma": "bun ./scripts/watch-figma-plugin.ts",
|
|
11
13
|
"lint": "bun run lint:prettier && bun run lint:fix",
|
|
12
14
|
"lint:prettier": "prettier --write \"./**/*.tokens.json\"",
|
|
13
15
|
"lint:fix": "eslint src --ext .ts,.tokens.json --fix",
|
|
@@ -24,6 +26,7 @@
|
|
|
24
26
|
},
|
|
25
27
|
"devDependencies": {
|
|
26
28
|
"@eslint/js": "^9.27.0",
|
|
29
|
+
"@figma/plugin-typings": "^1.121.0",
|
|
27
30
|
"@types/bun": "^1.3.1",
|
|
28
31
|
"@types/lodash": "^4.17.17",
|
|
29
32
|
"@types/node": "^22.15.30",
|