{"version":3,"sources":["../package.json","../../utils/src/wait.ts","../../zeytal-assets/src/processors/process-download.ts","../../zeytal-assets/src/processors/process-nodes.ts","../../zeytal-assets/src/processors/process-prepare.ts","../../zeytal-assets/src/processors/process-sort-settings.ts","../../zeytal-assets/src/optimizers/svg.ts","../../zeytal-assets/src/optimizers/index.ts","../../zeytal-figma/src/utils/index.ts","../../zeytal-figma/src/endpoints/file.ts","../../zeytal-figma/src/endpoints/images.ts","../../zeytal-figma/src/endpoints/versions.ts","../../zeytal-figma/src/usecases/find-file-version.ts","../../zeytal-kit/src/config.ts","../../zeytal-kit/src/api.ts","../src/commands/assets/index.ts","../src/utils/box.ts","../src/utils/highlighter.ts","../src/utils/logger.ts","../src/lib/figma.ts","../../utils/src/fillInDaBlanks.ts","../src/utils/errors.ts","../src/utils/file-system.ts","../src/utils/get-config.ts","../src/utils/get-cwd.ts","../src/utils/get-zeytal-api-base-url.ts","../src/utils/icons.ts","../src/commands/generate/index.ts","../../zeytal-tokens/src/utils/figma-data.ts","../../zeytal-tokens/src/styles/map-styles.ts","../../zeytal-tokens/src/styles/process-nodes.ts","../../utils/src/toKebabCase.ts","../../zeytal-tokens/src/core/getters/get-color-value.ts","../../zeytal-tokens/src/core/getters/get-effect-value.ts","../../zeytal-tokens/src/core/getters/get-font-value.ts","../../zeytal-tokens/src/core/getters/get-grid-value.ts","../../zeytal-tokens/src/utils/tokens.ts","../../zeytal-tokens/src/styles/process-styles.ts","../../utils/src/roundNumber.ts","../../zeytal-tokens/src/utils/colors.ts","../../zeytal-tokens/src/core/makers/colors/angular-gradient.ts","../../zeytal-tokens/src/core/makers/colors/diamond-gradient.ts","../../zeytal-tokens/src/core/makers/colors/linear-gradient.ts","../../zeytal-tokens/src/core/makers/colors/radial-gradient.ts","../../zeytal-tokens/src/core/makers/colors/solid.ts","../../zeytal-tokens/src/core/makers/colors/index.ts","../../zeytal-tokens/src/core/makers/effects/blur.ts","../../zeytal-tokens/src/core/makers/effects/drop-shadow.ts","../../zeytal-tokens/src/core/makers/effects/inner-shadow.ts","../../zeytal-tokens/src/core/makers/effects/index.ts","../../zeytal-tokens/src/utils/font.ts","../../zeytal-tokens/src/core/makers/fonts/index.ts","../../zeytal-tokens/src/core/makers/grids/index.ts","../../zeytal-tokens/src/styles/transform-styles.ts","../../utils/src/camelize.ts","../../zeytal-tokens/src/core/translators/cjs.ts","../../zeytal-tokens/src/core/translators/css.ts","../../zeytal-tokens/src/core/translators/esm.ts","../../zeytal-tokens/src/core/translators/json.ts","../../zeytal-tokens/src/core/translators/less.ts","../../zeytal-tokens/src/core/translators/sass.ts","../../zeytal-tokens/src/core/translators/scss.ts","../../zeytal-tokens/src/core/translators/ts.ts","../../zeytal-tokens/src/utils/regexp.ts","../../zeytal-tokens/src/core/translators/tw4.ts","../../zeytal-tokens/src/styles/translate-styles.ts","../../zeytal-tokens/src/variables/process-variables.ts","../../zeytal-tokens/src/variables/transform-variables.ts","../../zeytal-tokens/src/variables/translate-variables.ts","../src/commands/styles/index.ts","../src/commands/variables/index.ts","../src/utils/options.ts","../src/utils/check-for-update.ts","../src/utils/show-version.ts","../src/index.ts"],"names":["package_default","wait","ms","resolve","downloadAsset","assetUrl","response","fetch","status","data","findNestedNodes","nodes","parentFrame","acc","node","getNestedNodesByFileId","figmaFiles","file","fileId","document","nestedNodes","prepareAssetForTransit","assetData","sortNodesByExportSettings","nodesByFileId","id","name","exportSettings","format","suffix","constraint","lowerCasedFormat","settingQuery","dashedSuffix","nameWithSuffix","nameWithPath","generateUniquePrefix","optimizeSvg","userConfig","assetName","svgOptimizerConfig","svgFilename","part","uniquePrefix","multipass","floatPrecision","plugins","filteredPlugins","plugin","optimizedData","optimize","optimizeAsset","assetType","optimizedAssetData","addQueryParams","figmaFileUrl","queryParams","url","getFigmaEndpoint","figmaApiKey","figmaApiUrl","e","getFigmaFileEndpoint","figmaFileId","endpoint","getFigmaImagesEndpoint","getFigmaVersionsEndpoint","publishedFigmaDefaultLabel","savedFilter","version","publishedFilter","handleFileVersionSaved","versions","handleFileVersionPublished","findLatestFileVersion","fileVersionType","zeytalDefaultConfig","projectTokenHeaderName","zeytalAPIBaseUrl","border","nothing","box","message","borderColor","padding","textAlignment","cols","lines","line","stripAnsi","maxLine","p","len","borderColorFn","chalk","clampedSidePadding","narrowMode","sidePadding","innerWidth","hr","topLeft","topRight","left","right","bottomLeft","bottomRight","spacerRow","renderLine","leftPadding","rightPadding","highlighter","red","yellow","cyan","green","debugModeActive","spinner","messageToString","debug","inspect","logger","toggle","args","m","ora","spinnerText","wasSpinning","bold","gray","figmaAPICallsDelay","batchIds","nodesArray","batchSize","result","i","batch","obj","fetchFilesVersions","zeytalConfig","category","filesWithVersion","fileVersion","fetchFilesData","figmaFilesPagesBatchSize","figmaFilesData","versionQueryParam","depth1QueryParam","filePagesQueryParams","filePages","pagesList","pageName","pagesListIds","pagesListIdsLength","loopIndex","pageIds","pageIdQueryParam","pageQueryParams","styles","pagesData","fillInDaBlanks","template","values","_","key","errorMessages","createFolder","dir","existsSync","mkdirSync","error","refreshFolder","path","trash","writeFile","filePath","fileContent","writeFileSync","getConfig","cwd","config","loadConfig","getCWD","rawCWD","apiBaseUrl","getZeytalApiBaseUrl","unicode","isUnicodeSupported","defineIcon","unicodeIcon","fallbackIcon","icons","assetsActionCore","commandOptions","magenta","figmaAssetsAPIData","currentPagesBatchSize","cleanPagesBatchSize","sortedNodes","filesAssetsUrls","urlsBatchIndex","settingsForAssetsIds","settingParams","rawAssetsData","ids","assetsUrls","assetsFilesTuples","fileName","refreshedFolders","assetsFilesLength","writingLoopIndex","writePath","xe","assetTypeFolderPath","assetsCmd","Command","command","optsWithGlobals","options","errorMessage","getStyleImplementationKeyRegExp","styleType","findStyleValueKey","mappedStyle","styleImplementationKeyRegExp","refType","sType","sRef","mapStyles","remote","implementationNode","sKey","getUniqueStyles","mappedStyles","current","item","getMappedStyles","allMappedStyles","getNestedNodes","toKebabCase","str","getColorStyleValue","styleValueKey","getEffectStyleValue","getFontStyleValue","getGridStyleValue","variableAliasKeyword","varNameStartKeyword","styleNameStartKeyword","structureStyles","styleValue","styleNameOriginal","makeStylesStructure","roundNumber","num","decimals","n","paintToHex","color","r","g","b","blue","alpha","paintToRgba","paintToHsla","max","min","hue","saturation","lightness","d","paintToSelectedFormat","colorsConfig","calculateGradientColorStops","stylesFormatsConfig","gradientStops","value","stop","index","position","calculateLinearGradientDegree","gradientHandlePositions","handle1","handle2","calculateRadialGradientPosition","handle3","positionX","positionY","deltaX1","deltaY1","distance1","deltaX2","deltaY2","distance2","sizeX","sizeY","calculateAngularGradientPosition","angle","createAngularGradient","paint","createDiamondGradient","quadrantDenomination","colors","positionOnDistance","createLinearGradient","createRadialGradient","createSolidColor","colorMaker","colorValues","createBlur","effect","createDropShadow","x","y","radius","effectColor","createInnerShadow","effectMaker","effectValues","combine","defaultRootEMSize","fontValToPx","fontValToRem","fontMaker","fontValues","usePostscriptFontNames","unit","relativeLineHeight","fontPostScriptName","fontFamily","fontSize","letterSpacing","lineHeightPx","lineHeightPercentFontSize","fontWeight","italic","textCase","textDecoration","gridMaker","gridValues","visible","pattern","sectionSize","alignment","gutterSize","offset","count","gridStyleValue","transformStylesValues","tempTransformedStyles","styleVal","val","word","gridAcc","gridKey","gridVal","k","v","camelize","formatName","booleanValue","boolean","numberValue","number","stringValue","string","formatValue","translateCjs","variables","variablesString","exportString","originType","cleanString","token","translateCss","translateEsm","translateJson","varsDeepCopy","variablesByName","noAliasVariables","translateLess","translateSass","translateScss","translateTs","checkStringRegExpMatch","patternString","text","configToTwNamespacePrefixes","twNamespacesConfig","twGlobalRewriteTokenNames","namespaceMapName","tokensPrefix","formattedName","matcherStr","replacementStr","namespace","namespaceKey","namespaceConfig","twNamespacePrefix","mappingMatcherStr","filterTokensBySpaces","tokens","tokensMapping","filteredTokens","tokenCopy","globalModeName","acc1","modeKeywords","keywordMatch","acc2","keyword","isThemeToken","fileTokenDefSpace","tokenValue","makeTokenSpaces","tokensModeKey","tokensModeSpace","cleanedUpModeKey","shouldNamespaceMapName","doubleSpaceChars","spaceDefStart","spaceDefEnd","defSpace","spaceLines","translateTwV4","tokensSpaces","tokensModeKeyA","tokensModeKeyB","tokensModeSpaces","authorizedTranslations","translationsFilesBasenames","translationsFilesExtensions","authorizedTranslationsFilter","target","getTranslationFilename","filename","translateStylesInTargetLanguage","translateStyles","targets","authorizedTargets","transformedValuesByTarget","flattenVariables","figmaVariablesExportsStrings","flatVarsStructure","varsExportString","collection","collectionName","modes","mode","modeName","variable","varId","variableName","resolvedType","varNameCollection","varNameMode","structuredVariableName","getVarsAndAliasesModeVariants","varEntries","currentVarData","parentDepthLevel","currentDepthLevel","varValue","currentVarModeName","aliasData","chainedModes","modeAndAliasVariablesNames","aliasedStructure","currentVarName","alias","sortVariables","dependencyGraph","varName","varData","referencedVar","visited","temp","visit","dependencies","dependency","verifySorting","sortedVars","varPositions","makeVariablesStructure","modedAndAliasedVarsNamesStructure","transformVariablesValues","varType","varTransformedValue","tempVal","numberFormats","valueWithUnit","mapping","translateVarsInTargetLanguage","translation","translateVariables","stylesActionCore","figmaStylesAPIData","structuredStyles","transformedStyles","t","stylesFiles","Ie","stylesCmd","variablesActionCore","figmaVariablesAPIData","structuredVariables","transformedVariables","variablesFiles","Ve","variablesCmd","globalOptions","Option","generateCmd","o","checkForUpdate","packageName","currentVersion","latestVersion","semver","showVersion","zeytalVersion","main","program"],"mappings":"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","file":"index.cjs","sourcesContent":["{\n  \"name\": \"zeytal\",\n  \"version\": \"1.4.0\",\n  \"type\": \"module\",\n  \"private\": false,\n  \"publishConfig\": {\n    \"provenance\": false,\n    \"access\": \"public\",\n    \"registry\": \"https://registry.npmjs.org/\"\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"https://github.com/provok-exe/zeytal\"\n  },\n  \"homepage\": \"https://zeytal.com/docs\",\n  \"description\": \"From Figma to code in only one command line. Zeytal allows designers and developers to sync their work by auto-generating front-end code from their Figma files. Generate variables, styles, and SVGs from Figma.\",\n  \"license\": \"MIT\",\n  \"keywords\": [\n    \"figma\",\n    \"zeytal\",\n    \"design-system\",\n    \"tailwind\",\n    \"tailwindcss\",\n    \"svg\",\n    \"css\",\n    \"components\",\n    \"assets\",\n    \"ui\",\n    \"scss\",\n    \"sass\",\n    \"less\"\n  ],\n  \"bin\": {\n    \"zeytal\": \"./bin/zeytal\"\n  },\n  \"exports\": {\n    \".\": {\n      \"types\": \"./dist/index.d.ts\",\n      \"import\": \"./dist/index.js\",\n      \"require\": \"./dist/index.cjs\"\n    },\n    \"./schema/zeytal.json\": \"./schema/zeytal.json\"\n  },\n  \"files\": [\n    \"dist\",\n    \"schema\"\n  ],\n  \"scripts\": {\n    \"dev\": \"tsup --watch ./src\",\n    \"build\": \"tsup\",\n    \"lint\": \"eslint . --max-warnings 0\",\n    \"lint:fix\": \"pnpm lint --fix\",\n    \"pretty\": \"pnpm lint:fix && pnpx prettier --write .\",\n    \"check-types\": \"tsc --noEmit\",\n    \"clean\": \"rm -rf ./.turbo ./node_modules ./dist ./schema\"\n  },\n  \"dependencies\": {\n    \"c12\": \"^3.0.3\",\n    \"chalk\": \"^5.4.1\",\n    \"colorette\": \"^2.0.20\",\n    \"commander\": \"^14.0.0\",\n    \"dotenv\": \"^16.4.5\",\n    \"is-unicode-supported\": \"^2.1.0\",\n    \"node-fetch\": \"^3.3.2\",\n    \"ora\": \"^8.2.0\",\n    \"semver\": \"^7.7.2\",\n    \"strip-ansi\": \"^7.1.0\",\n    \"svgo\": \"^4.0.0\",\n    \"trash\": \"^9.0.0\"\n  },\n  \"devDependencies\": {\n    \"@endgame/eslint-config\": \"workspace:*\",\n    \"@endgame/prettier-config\": \"workspace:*\",\n    \"@endgame/typescript-config\": \"workspace:*\",\n    \"@endgame/utils\": \"workspace:*\",\n    \"@types/node\": \"^22.15.3\",\n    \"@types/semver\": \"^7.7.0\",\n    \"@zeytal/assets\": \"workspace:*\",\n    \"@zeytal/figma\": \"workspace:*\",\n    \"@zeytal/kit\": \"workspace:*\",\n    \"@zeytal/tokens\": \"workspace:*\",\n    \"@zeytal/types\": \"workspace:*\",\n    \"tsup\": \"^8.3.6\"\n  }\n}\n","export const wait = (ms: number) =>\n  new Promise((resolve) => {\n    setTimeout(resolve, ms);\n  });\n","import fetch from \"node-fetch\";\n\n/**\n * @description Download asset from asset url\n */\nexport const downloadAsset = async (assetUrl: string) => {\n  if (!assetUrl) {\n    return;\n  }\n\n  const response = await fetch(assetUrl);\n  const { status } = response;\n  const data = await response.arrayBuffer();\n\n  if (status !== 200 || !data) {\n    return;\n  }\n\n  return Buffer.from(data);\n};\n","import type { ZeytalFigma, ZeytalAssets } from \"@zeytal/types\";\n\nconst findNestedNodes = (\n  nodes: ZeytalAssets.AbstractNestedNode[],\n  parentFrame: ZeytalAssets.AbstractNestedNode | null = null,\n) => {\n  return nodes.reduce<ZeytalAssets.LeafNode[]>((acc, node) => {\n    if (\n      Object.prototype.hasOwnProperty.call(node, \"exportSettings\") &&\n      !!node.exportSettings?.length\n    ) {\n      // Add the variant component name to its variants names\n      // The comma is added to respect the variant child name syntax\n      if (parentFrame) {\n        node.name = parentFrame.name + \", \" + node.name;\n      }\n\n      // Add elements w/ export settings\n      acc.push(node as unknown as ZeytalAssets.LeafNode);\n    } else if (\n      node.type === \"COMPONENT_SET\" &&\n      node.children &&\n      node.children.length\n    ) {\n      // Search for variants and pass the parent\n      acc.push(...findNestedNodes(node.children, node));\n    } else if (node.children && node.children.length) {\n      // Search for elements w/ children\n      acc.push(...findNestedNodes(node.children));\n    }\n    return acc;\n  }, []);\n};\n\nexport const getNestedNodesByFileId = (\n  figmaFiles: ZeytalFigma.MinimalFigmaFile[],\n) => {\n  return figmaFiles.reduce<ZeytalAssets.LeafNodesByFileId>((acc, file) => {\n    const { fileId, document } = file;\n\n    const nestedNodes = findNestedNodes(document.children);\n\n    acc.push([fileId, nestedNodes]);\n\n    return acc;\n  }, []);\n};\n","export const prepareAssetForTransit = (assetData: Buffer) =>\n  assetData.toString(\"base64\");\n","import type { ZeytalAssets } from \"@zeytal/types\";\n\n/**\n * @description Sorting all the assets ids by export settings.\n */\nexport const sortNodesByExportSettings = (\n  nodesByFileId: ZeytalAssets.LeafNodesByFileId,\n): ZeytalAssets.NodesSortedByExportSettingsByFileId =>\n  nodesByFileId.map(([fileId, nodes]) => [\n    fileId,\n    nodes.reduce<ZeytalAssets.NodesSortedByExportSettings>(\n      (acc, { id, name, exportSettings }) => {\n        exportSettings\n          // Support only SVGs\n          .filter(({ format }) => format.toLowerCase() === \"svg\")\n          .forEach(({ suffix, format, constraint }) => {\n            const lowerCasedFormat = format.toLowerCase();\n\n            let settingQuery = `format=${lowerCasedFormat}`;\n            if (constraint.type === \"SCALE\") {\n              settingQuery += `&scale=${constraint.value}`;\n            }\n\n            if (!acc[settingQuery]) {\n              acc[settingQuery] = [];\n            }\n\n            // Getting the export suffix\n            const dashedSuffix = suffix ? `-${suffix}` : \"\";\n\n            // Figma variants names support\n            const variantNameTransform = name\n              // Replacing by a dash any character sequence that is not a letter or a number.\n              .replace(/[^a-zA-Z0-9]+/g, \"-\");\n\n            let nameWithSuffix = (\n              variantNameTransform + dashedSuffix\n            ).toLowerCase();\n\n            nameWithSuffix = nameWithSuffix.startsWith(\"-\")\n              ? nameWithSuffix.slice(1)\n              : nameWithSuffix;\n\n            const nameWithPath = `${lowerCasedFormat}/${nameWithSuffix}.${lowerCasedFormat}`;\n\n            acc[settingQuery]!.push({ id, name: nameWithPath });\n          });\n\n        return acc;\n      },\n      {},\n    ),\n  ]);\n","import type { ZeytalCLIPureConfig } from \"@zeytal/kit\";\nimport type * as SVGO from \"svgo\";\n\nimport { optimize } from \"svgo\";\n\nconst generateUniquePrefix = () =>\n  `${Math.random().toString(36).substring(2, 10)}-${Date.now().toString(36)}`;\n\nexport const optimizeSvg = (\n  userConfig: ZeytalCLIPureConfig,\n  assetName: string,\n  assetData: Buffer,\n): Buffer => {\n  const svgOptimizerConfig = userConfig.assets.optimize.svg ?? {};\n\n  const [svgFilename] = assetName\n    .split(\"/\")\n    .filter((part) => part.includes(\".svg\"));\n\n  // If the filename is weird and doesn't contain .svg, we generate a random prefix to avoid id conflicts\n  const uniquePrefix = svgFilename\n    ? svgFilename.replace(\".svg\", \"\")\n    : generateUniquePrefix();\n\n  // Allowed config keys\n  const { multipass, floatPrecision, plugins } = svgOptimizerConfig;\n\n  const typedPlugins = plugins as SVGO.PluginConfig[];\n\n  const filteredPlugins = typedPlugins?.filter(\n    (plugin: string | { name: string }) => {\n      if (\n        (typeof plugin === \"string\" && plugin === \"cleanupIds\") ||\n        (typeof plugin !== \"string\" && plugin.name === \"cleanupIds\")\n      ) {\n        return false;\n      } else if (\n        (typeof plugin === \"string\" && plugin === \"prefixIds\") ||\n        (typeof plugin !== \"string\" && plugin.name === \"prefixIds\")\n      ) {\n        return false;\n      }\n      return true;\n    },\n  );\n\n  const { data: optimizedData } = optimize(assetData.toString(\"utf-8\"), {\n    multipass,\n    floatPrecision,\n    plugins: [\n      // User's svgo plugins config\n      ...(filteredPlugins ?? []),\n      // Opinionated config that cannot be overriden to force unique ids generation\n      {\n        name: \"cleanupIds\",\n        params: {\n          remove: true,\n          minify: true,\n        },\n      },\n      {\n        name: \"prefixIds\",\n        params: {\n          delim: \"-\",\n          prefix: uniquePrefix,\n          prefixIds: true,\n          prefixClassNames: false,\n        },\n      },\n    ],\n  });\n\n  return Buffer.from(optimizedData, \"utf-8\");\n};\n","import type { ZeytalCLIPureConfig } from \"@zeytal/kit\";\n\nimport { prepareAssetForTransit } from \"../processors/index.ts\";\n\nimport { optimizeSvg } from \"./svg.ts\";\n\nexport const optimizeAsset = (\n  userConfig: ZeytalCLIPureConfig,\n  assetName: string,\n  assetData: Buffer,\n) => {\n  const [assetType] = assetName.split(\"/\");\n  let optimizedAssetData = assetData;\n\n  if (assetType === \"svg\") {\n    optimizedAssetData = optimizeSvg(userConfig, assetName, assetData);\n  }\n\n  return prepareAssetForTransit(optimizedAssetData);\n};\n","import type { FetchError } from \"node-fetch\";\n\nimport fetch from \"node-fetch\";\n\nexport const addQueryParams = (figmaFileUrl: string, queryParams: string) => {\n  if (!queryParams) {\n    return figmaFileUrl;\n  }\n\n  // If there's a version defined we'll add a '&' to the end of the already defined query\n  // else we'll start a query by adding '?'\n  let url = figmaFileUrl;\n  url += figmaFileUrl.includes(\"?\") ? \"&\" : \"?\";\n  url += queryParams;\n  return url;\n};\n\nexport async function getFigmaEndpoint<ResponseType>(\n  figmaApiKey: string,\n  figmaApiUrl: string,\n) {\n  if (!figmaApiKey || !figmaApiUrl) {\n    throw new Error(\n      'Missing one or more of required arguments: \"figmaToken\", \"figmaUrl\" when attempting to get data from Figma API!',\n    );\n  }\n\n  try {\n    const response = await fetch(figmaApiUrl, {\n      method: \"GET\",\n      headers: {\n        \"X-Figma-Token\": figmaApiKey,\n      },\n    });\n\n    const data = (await response.json()) as ResponseType;\n    if (!data) {\n      throw { code: \"404\" };\n    }\n\n    return data;\n  } catch (e) {\n    const error = e as FetchError;\n    if (error.code === \"404\") {\n      throw new Error(\"Could not retrieve any data.\");\n    }\n    throw new Error(\n      'Missing one or more of required arguments: \"figmaToken\", \"figmaUrl\" when attempting to get data from Figma API!',\n    );\n  }\n}\n","import type { FigmaRestApi } from \"@zeytal/types\";\n\nimport { addQueryParams, getFigmaEndpoint } from \"../utils/index.ts\";\n\nexport const getFigmaFileEndpoint = async (\n  figmaApiKey: string,\n  figmaFileId: string,\n  queryParams = \"\",\n) => {\n  const endpoint = `https://api.figma.com/v1/files/${figmaFileId}`;\n  return getFigmaEndpoint<FigmaRestApi.GetFileResponse>(\n    figmaApiKey,\n    addQueryParams(endpoint, queryParams),\n  );\n};\n","import type { FigmaRestApi } from \"@zeytal/types\";\n\nimport { addQueryParams, getFigmaEndpoint } from \"../utils/index.ts\";\n\nexport const getFigmaImagesEndpoint = async (\n  figmaApiKey: string,\n  figmaFileId: string,\n  queryParams = \"\",\n) => {\n  const endpoint = `https://api.figma.com/v1/images/${figmaFileId}`;\n  return getFigmaEndpoint<FigmaRestApi.GetImagesResponse>(\n    figmaApiKey,\n    addQueryParams(endpoint, queryParams),\n  );\n};\n","import type { FigmaRestApi } from \"@zeytal/types\";\n\nimport { addQueryParams, getFigmaEndpoint } from \"../utils/index.ts\";\n\nexport const getFigmaVersionsEndpoint = async (\n  figmaApiKey: string,\n  figmaFileId: string,\n  queryParams = \"\",\n) => {\n  const endpoint = `https://api.figma.com/v1/files/${figmaFileId}/versions`;\n  return getFigmaEndpoint<FigmaRestApi.GetFileVersionsResponse>(\n    figmaApiKey,\n    addQueryParams(endpoint, queryParams),\n  );\n};\n","import type { FigmaRestApi } from \"@zeytal/types\";\n\nimport { getFigmaVersionsEndpoint } from \"../endpoints/index.ts\";\n\nconst publishedFigmaDefaultLabel = /^components published$/i;\n\nconst savedFilter = (version: FigmaRestApi.Version) => !!version.label;\n\nconst publishedFilter = (version: FigmaRestApi.Version) =>\n  publishedFigmaDefaultLabel.test(version.label ?? \"\");\n\nconst handleFileVersionSaved = (versions: FigmaRestApi.Version[]) => {\n  const [version] = versions.filter(savedFilter);\n\n  if (!version || !version.id) {\n    return null;\n  }\n\n  return version.id;\n};\n\nconst handleFileVersionPublished = (versions: FigmaRestApi.Version[]) => {\n  const [version] = versions.filter(publishedFilter);\n\n  if (!version || !version.id) {\n    return null;\n  }\n\n  return version.id;\n};\n\nexport const findLatestFileVersion = async (\n  figmaApiKey: string,\n  fileId: string,\n  fileVersionType: string,\n) => {\n  if (!fileVersionType || fileVersionType === \"live\") {\n    return { id: fileId, version: null };\n  } else if (\n    fileVersionType !== \"live\" &&\n    fileVersionType !== \"saved\" &&\n    fileVersionType !== \"published\"\n  ) {\n    return { id: fileId, version: null };\n  }\n\n  const response = await getFigmaVersionsEndpoint(\n    figmaApiKey,\n    fileId,\n    \"page_size=100\",\n  );\n\n  const { versions } = response;\n\n  if (!versions.length) {\n    return { id: fileId, version: null };\n  }\n\n  if (fileVersionType === \"saved\") {\n    return { id: fileId, version: handleFileVersionSaved(versions) };\n  } else if (fileVersionType === \"published\") {\n    return { id: fileId, version: handleFileVersionPublished(versions) };\n  }\n};\n","import type { DeepRequired, DeepOmit } from \"@endgame/utils/types\";\nimport type * as SVGO from \"svgo\";\n\ntype SVGOPlugin =\n  | string\n  | {\n      name: string;\n      params?: Record<string, unknown>;\n    }\n  | SVGO.CustomPlugin;\n\ntype SVGOPickedConfig = {\n  multipass?: boolean;\n  floatPrecision?: number;\n  plugins?: SVGOPlugin[];\n};\n\ntype FigmaFilesVersion = \"published\" | \"saved\" | \"live\";\n\ntype FileFormatsTarget =\n  | \"tw\"\n  | \"ts\"\n  | \"esm\"\n  | \"cjs\"\n  | \"json\"\n  | \"css\"\n  | \"scss\"\n  | \"sass\"\n  | \"less\";\n\ntype FileFormatsTargets = FileFormatsTarget[];\n\ntype ColorFormats = \"hex\" | \"rgba\" | \"hsla\";\n\ntype LengthDimensionUnit = \"px\" | \"rem\";\n\ninterface VariablesNumberFormatter {\n  /**\n   * Target number variables.\n   *\n   * Docs: https://zeytal.com/docs/variables-config#numbers-format\n   */\n  mapping: TokenMatcherArray;\n  /**\n   * Choose the unit of the targeted number variables.\n   *\n   * Docs: https://zeytal.com/docs/variables-config#numbers-format\n   */\n  unit: LengthDimensionUnit;\n}\ntype VariablesNumberFormats = VariablesNumberFormatter[];\n\ntype TokenMatcher = string;\ntype TokenMatcherArray = TokenMatcher[];\ntype TokenMatcherRecord = Record<TokenMatcher, string>;\n\nexport type CLIConfig = {\n  /**\n   * Zeytal project secret token.\n   */\n  projectToken?: string;\n  /**\n   * Figma assets generation config object.\n   *\n   * Docs: https://zeytal.com/docs/assets-config\n   */\n  assets?: {\n    /**\n     * Get the correct version of your Figma file to generate assets from.\n     *\n     * Docs: https://zeytal.com/docs/assets-config#figma-files-version\n     */\n    figmaFilesVersion?: FigmaFilesVersion;\n    /**\n     * Set the number of Figma file pages to fetch at the same time.\n     *\n     * Docs: https://zeytal.com/docs/assets-config#figma-files-pages-batch-size\n     */\n    figmaFilesPagesBatchSize?: number;\n    /**\n     * This is the directory path into which your optimized assets will be written.\n     *\n     * This path is relative to your root directory.\n     *\n     * Docs: https://zeytal.com/docs/assets-config#directory-path\n     */\n    directoryPath?: string;\n    /**\n     * Figma assets generation optimization config object.\n     *\n     * Docs: https://zeytal.com/docs/assets-config#svgs-optimization\n     */\n    optimize?: {\n      /**\n       * SVG files optimization config.\n       *\n       * Docs: https://zeytal.com/docs/assets-config#svgs-optimization\n       */\n      svg?: SVGOPickedConfig;\n    };\n  };\n  /**\n   * Figma styles generation config object.\n   *\n   * Docs: https://zeytal.com/docs/styles-config\n   */\n  styles?: {\n    /**\n     * Get the correct version of your Figma file to generate styles from.\n     *\n     * Docs: https://zeytal.com/docs/styles-config#figma-files-version\n     */\n    figmaFilesVersion?: FigmaFilesVersion;\n    /**\n     * Set the number of Figma file pages to fetch at the same time.\n     *\n     * Docs: https://zeytal.com/docs/styles-config#figma-files-pages-batch-size\n     */\n    figmaFilesPagesBatchSize?: number;\n    /**\n     * This is the directory path into which your transformed styles will be written.\n     *\n     * This path is relative to your root directory.\n     *\n     * Docs: https://zeytal.com/docs/styles-config#directory-path\n     */\n    directoryPath?: string;\n    /**\n     * Figma styles file formats config object.\n     *\n     * Docs: https://zeytal.com/docs/styles-config#output-formats\n     */\n    formats?: {\n      /**\n       * This setting controls the format of your generated styles files.\n       *\n       * Docs: https://zeytal.com/docs/styles-config#output-formats\n       */\n      targets?: FileFormatsTargets;\n      /**\n       * Color styles config object.\n       *\n       * Docs: https://zeytal.com/docs/styles-config#colors-format\n       */\n      colors?: {\n        /**\n         * This setting controls the color format in which your color styles are generated.\n         *\n         * Docs: https://zeytal.com/docs/styles-config#colors-format\n         */\n        format?: ColorFormats;\n      };\n      /**\n       * Font styles config object.\n       *\n       * Docs: https://zeytal.com/docs/styles-config#use-postscript-font-names\n       */\n      fonts?: {\n        /**\n         * Choose whether or not to use the `fontPostScriptName` value as `fontName`.\n         *\n         * Docs: https://zeytal.com/docs/styles-config#use-postscript-font-names\n         */\n        usePostscriptFontNames?: boolean;\n        /**\n         * Choose the unit of your generated font styles.\n         *\n         * Docs: https://zeytal.com/docs/styles-config#fonts-unit\n         */\n        unit?: LengthDimensionUnit;\n        /**\n         * Choose whether or not to use a line-height value relative to the font size.\n         *\n         * Docs: https://zeytal.com/docs/styles-config#fonts-relative-line-height\n         */\n        relativeLineHeight?: boolean;\n      };\n      /**\n       * Effect styles config object.\n       *\n       * Docs: https://zeytal.com/docs/styles-config#combine-effects\n       */\n      effects?: {\n        /**\n         * Choose whether or not to combine effects that belong to the same CSS property.\n         *\n         * Docs: https://zeytal.com/docs/styles-config#combine-effects\n         */\n        combine?: boolean;\n      };\n      /**\n       * Grid styles config object.\n       *\n       * Docs: https://zeytal.com/docs/styles-config#extract-grid-colors\n       */\n      grids?: {\n        /**\n         * Choose whether or not to extract the colors of the grid styles.\n         *\n         * Docs: https://zeytal.com/docs/styles-config#extract-grid-colors\n         */\n        extractColors?: boolean;\n      };\n    };\n  };\n  /**\n   * Figma variables generation config object.\n   *\n   * Docs: https://zeytal.com/docs/variables-config\n   */\n  variables?: {\n    /**\n     * This is the directory path into which your transformed variables will be written.\n     *\n     * This path is relative to your root directory.\n     *\n     * Docs: https://zeytal.com/docs/variables-config#directory-path\n     */\n    directoryPath?: string;\n    /**\n     * Choose whether or not to exclude Figma variable collections from the variables generation process.\n     *\n     * Docs: https://zeytal.com/docs/variables-config#collections-ignore-prefix\n     */\n    collectionsIgnorePrefix?: string;\n    /**\n     * Figma variables file formats config object.\n     *\n     * Docs: https://zeytal.com/docs/variables-config#output-formats\n     */\n    formats?: {\n      /**\n       * This setting controls the format of your generated variables files.\n       *\n       * Docs: https://zeytal.com/docs/variables-config#output-formats\n       */\n      targets?: FileFormatsTargets;\n      /**\n       * Color variables config object.\n       *\n       * Docs: https://zeytal.com/docs/variables-config#colors-format\n       */\n      colors?: {\n        /**\n         * This setting controls the color format in which your color variables are generated.\n         *\n         * Docs: https://zeytal.com/docs/variables-config#colors-format\n         */\n        format?: ColorFormats;\n      };\n      /**\n       * Number variables config object.\n       *\n       * Docs: https://zeytal.com/docs/variables-config#numbers-format\n       */\n      numbers?: {\n        /**\n         * This setting specifies the number format in which some of your number variables will be generated.\n         *\n         * Docs: https://zeytal.com/docs/variables-config#numbers-format\n         */\n        format?: VariablesNumberFormats;\n      };\n    };\n  };\n  /**\n   * Figma tailwind config generation object.\n   *\n   * Docs: https://zeytal.com/docs/tailwind-config\n   */\n  tailwind?: {\n    /**\n     * Add a prefix to your generated TailwindCSS theme variables.\n     *\n     * Docs: https://zeytal.com/docs/tailwind-config#tokens-prefix\n     */\n    tokensPrefix?: string;\n    /**\n     * Generate scoped CSS variable declarations to automatically handle Figma variable modes.\n     *\n     * Docs: https://zeytal.com/docs/tailwind-config#global-modes\n     */\n    globalModes?: TokenMatcherArray[];\n    /**\n     * Exclude matching Figma styles and Figma variables from your generated TailwindCSS config files.\n     *\n     * Docs: https://zeytal.com/docs/tailwind-config#global-ignore-token-names\n     */\n    globalIgnoreTokenNames?: TokenMatcherArray;\n    /**\n     * Remove matching parts of your Figma style and Figma variable names.\n     *\n     * Docs: https://zeytal.com/docs/tailwind-config#global-strip-token-names\n     */\n    globalStripTokenNames?: TokenMatcherArray;\n    /**\n     * Rewrite matching parts of your Figma style and Figma variable names.\n     *\n     * Docs: https://zeytal.com/docs/tailwind-config#global-rewrite-token-names\n     */\n    globalRewriteTokenNames?: TokenMatcherRecord;\n    /**\n     * TailwindCSS theme namespaces config object.\n     *\n     * Docs: https://zeytal.com/docs/tailwind-config#namespaces\n     */\n    namespaces?: {\n      /**\n       * TailwindCSS font family namespace config object.\n       *\n       * Docs: https://zeytal.com/docs/tailwind-config#namespaces\n       * Tailwind docs: https://tailwindcss.com/docs/theme#theme-variable-namespaces\n       */\n      fontFamily?: {\n        /**\n         * Map your Figma styles and Figma variables to your TailwindCSS font family namespace by name-matching them.\n         *\n         * Docs: https://zeytal.com/docs/tailwind-config#tokens-mapping\n         * Tailwind docs: https://tailwindcss.com/docs/theme#theme-variable-namespaces\n         */\n        tokensMapping?: TokenMatcherArray;\n        /**\n         * Remove matching parts of your TailwindCSS font family namespace theme variables.\n         *\n         * Docs: https://zeytal.com/docs/tailwind-config#strip-token-names\n         * Tailwind docs: https://tailwindcss.com/docs/theme#theme-variable-namespaces\n         */\n        stripTokenNames?: TokenMatcherArray;\n        /**\n         * Rewrite matching parts of your TailwindCSS font family namespace theme variables.\n         *\n         * Docs: https://zeytal.com/docs/tailwind-config#rewrite-token-names\n         * Tailwind docs: https://tailwindcss.com/docs/theme#theme-variable-namespaces\n         */\n        rewriteTokenNames?: TokenMatcherRecord;\n      };\n      /**\n       * TailwindCSS font size namespace config object.\n       *\n       * Docs: https://zeytal.com/docs/tailwind-config#namespaces\n       * Tailwind docs: https://tailwindcss.com/docs/theme#theme-variable-namespaces\n       */\n      fontSize?: {\n        /**\n         * Map your Figma styles and Figma variables to your TailwindCSS font size namespace by name-matching them.\n         *\n         * Docs: https://zeytal.com/docs/tailwind-config#tokens-mapping\n         * Tailwind docs: https://tailwindcss.com/docs/theme#theme-variable-namespaces\n         */\n        tokensMapping?: TokenMatcherArray;\n        /**\n         * Remove matching parts of your TailwindCSS font size namespace theme variables.\n         *\n         * Docs: https://zeytal.com/docs/tailwind-config#strip-token-names\n         * Tailwind docs: https://tailwindcss.com/docs/theme#theme-variable-namespaces\n         */\n        stripTokenNames?: TokenMatcherArray;\n        /**\n         * Rewrite matching parts of your TailwindCSS font size namespace theme variables.\n         *\n         * Docs: https://zeytal.com/docs/tailwind-config#rewrite-token-names\n         * Tailwind docs: https://tailwindcss.com/docs/theme#theme-variable-namespaces\n         */\n        rewriteTokenNames?: TokenMatcherRecord;\n      };\n      /**\n       * TailwindCSS font weight namespace config object.\n       *\n       * Docs: https://zeytal.com/docs/tailwind-config#namespaces\n       * Tailwind docs: https://tailwindcss.com/docs/theme#theme-variable-namespaces\n       */\n      fontWeight?: {\n        /**\n         * Map your Figma styles and Figma variables to your TailwindCSS font weight namespace by name-matching them.\n         *\n         * Docs: https://zeytal.com/docs/tailwind-config#tokens-mapping\n         * Tailwind docs: https://tailwindcss.com/docs/theme#theme-variable-namespaces\n         */\n        tokensMapping?: TokenMatcherArray;\n        /**\n         * Remove matching parts of your TailwindCSS font weight namespace theme variables.\n         *\n         * Docs: https://zeytal.com/docs/tailwind-config#strip-token-names\n         * Tailwind docs: https://tailwindcss.com/docs/theme#theme-variable-namespaces\n         */\n        stripTokenNames?: TokenMatcherArray;\n        /**\n         * Rewrite matching parts of your TailwindCSS font weight namespace theme variables.\n         *\n         * Docs: https://zeytal.com/docs/tailwind-config#rewrite-token-names\n         * Tailwind docs: https://tailwindcss.com/docs/theme#theme-variable-namespaces\n         */\n        rewriteTokenNames?: TokenMatcherRecord;\n      };\n      /**\n       * TailwindCSS letter spacing namespace config object.\n       *\n       * Docs: https://zeytal.com/docs/tailwind-config#namespaces\n       * Tailwind docs: https://tailwindcss.com/docs/theme#theme-variable-namespaces\n       */\n      letterSpacing?: {\n        /**\n         * Map your Figma styles and Figma variables to your TailwindCSS letter spacing namespace by name-matching them.\n         *\n         * Docs: https://zeytal.com/docs/tailwind-config#tokens-mapping\n         * Tailwind docs: https://tailwindcss.com/docs/theme#theme-variable-namespaces\n         */\n        tokensMapping?: TokenMatcherArray;\n        /**\n         * Remove matching parts of your TailwindCSS letter spacing namespace theme variables.\n         *\n         * Docs: https://zeytal.com/docs/tailwind-config#strip-token-names\n         * Tailwind docs: https://tailwindcss.com/docs/theme#theme-variable-namespaces\n         */\n        stripTokenNames?: TokenMatcherArray;\n        /**\n         * Rewrite matching parts of your TailwindCSS letter spacing namespace theme variables.\n         *\n         * Docs: https://zeytal.com/docs/tailwind-config#rewrite-token-names\n         * Tailwind docs: https://tailwindcss.com/docs/theme#theme-variable-namespaces\n         */\n        rewriteTokenNames?: TokenMatcherRecord;\n      };\n      /**\n       * TailwindCSS line height namespace config object.\n       *\n       * Docs: https://zeytal.com/docs/tailwind-config#namespaces\n       * Tailwind docs: https://tailwindcss.com/docs/theme#theme-variable-namespaces\n       */\n      lineHeight?: {\n        /**\n         * Map your Figma styles and Figma variables to your TailwindCSS line height namespace by name-matching them.\n         *\n         * Docs: https://zeytal.com/docs/tailwind-config#tokens-mapping\n         * Tailwind docs: https://tailwindcss.com/docs/theme#theme-variable-namespaces\n         */\n        tokensMapping?: TokenMatcherArray;\n        /**\n         * Remove matching parts of your TailwindCSS line height namespace theme variables.\n         *\n         * Docs: https://zeytal.com/docs/tailwind-config#strip-token-names\n         * Tailwind docs: https://tailwindcss.com/docs/theme#theme-variable-namespaces\n         */\n        stripTokenNames?: TokenMatcherArray;\n        /**\n         * Rewrite matching parts of your TailwindCSS line height namespace theme variables.\n         *\n         * Docs: https://zeytal.com/docs/tailwind-config#rewrite-token-names\n         * Tailwind docs: https://tailwindcss.com/docs/theme#theme-variable-namespaces\n         */\n        rewriteTokenNames?: TokenMatcherRecord;\n      };\n      /**\n       * TailwindCSS color namespace config object.\n       *\n       * Docs: https://zeytal.com/docs/tailwind-config#namespaces\n       * Tailwind docs: https://tailwindcss.com/docs/theme#theme-variable-namespaces\n       */\n      color?: {\n        /**\n         * Map your Figma styles and Figma variables to your TailwindCSS color namespace by name-matching them.\n         *\n         * Docs: https://zeytal.com/docs/tailwind-config#tokens-mapping\n         * Tailwind docs: https://tailwindcss.com/docs/theme#theme-variable-namespaces\n         */\n        tokensMapping?: TokenMatcherArray;\n        /**\n         * Remove matching parts of your TailwindCSS color namespace theme variables.\n         *\n         * Docs: https://zeytal.com/docs/tailwind-config#strip-token-names\n         * Tailwind docs: https://tailwindcss.com/docs/theme#theme-variable-namespaces\n         */\n        stripTokenNames?: TokenMatcherArray;\n        /**\n         * Rewrite matching parts of your TailwindCSS color namespace theme variables.\n         *\n         * Docs: https://zeytal.com/docs/tailwind-config#rewrite-token-names\n         * Tailwind docs: https://tailwindcss.com/docs/theme#theme-variable-namespaces\n         */\n        rewriteTokenNames?: TokenMatcherRecord;\n      };\n      /**\n       * TailwindCSS spacing namespace config object.\n       *\n       * Docs: https://zeytal.com/docs/tailwind-config#namespaces\n       * Tailwind docs: https://tailwindcss.com/docs/theme#theme-variable-namespaces\n       */\n      spacing?: {\n        /**\n         * Map your Figma styles and Figma variables to your TailwindCSS spacing namespace by name-matching them.\n         *\n         * Docs: https://zeytal.com/docs/tailwind-config#tokens-mapping\n         * Tailwind docs: https://tailwindcss.com/docs/theme#theme-variable-namespaces\n         */\n        tokensMapping?: TokenMatcherArray;\n        /**\n         * Remove matching parts of your TailwindCSS spacing namespace theme variables.\n         *\n         * Docs: https://zeytal.com/docs/tailwind-config#strip-token-names\n         * Tailwind docs: https://tailwindcss.com/docs/theme#theme-variable-namespaces\n         */\n        stripTokenNames?: TokenMatcherArray;\n        /**\n         * Rewrite matching parts of your TailwindCSS spacing namespace theme variables.\n         *\n         * Docs: https://zeytal.com/docs/tailwind-config#rewrite-token-names\n         * Tailwind docs: https://tailwindcss.com/docs/theme#theme-variable-namespaces\n         */\n        rewriteTokenNames?: TokenMatcherRecord;\n      };\n      /**\n       * TailwindCSS breakpoint namespace config object.\n       *\n       * Docs: https://zeytal.com/docs/tailwind-config#namespaces\n       * Tailwind docs: https://tailwindcss.com/docs/theme#theme-variable-namespaces\n       */\n      breakpoint?: {\n        /**\n         * Map your Figma styles and Figma variables to your TailwindCSS breakpoint namespace by name-matching them.\n         *\n         * Docs: https://zeytal.com/docs/tailwind-config#tokens-mapping\n         * Tailwind docs: https://tailwindcss.com/docs/theme#theme-variable-namespaces\n         */\n        tokensMapping?: TokenMatcherArray;\n        /**\n         * Remove matching parts of your TailwindCSS breakpoint namespace theme variables.\n         *\n         * Docs: https://zeytal.com/docs/tailwind-config#strip-token-names\n         * Tailwind docs: https://tailwindcss.com/docs/theme#theme-variable-namespaces\n         */\n        stripTokenNames?: TokenMatcherArray;\n        /**\n         * Rewrite matching parts of your TailwindCSS breakpoint namespace theme variables.\n         *\n         * Docs: https://zeytal.com/docs/tailwind-config#rewrite-token-names\n         * Tailwind docs: https://tailwindcss.com/docs/theme#theme-variable-namespaces\n         */\n        rewriteTokenNames?: TokenMatcherRecord;\n      };\n      /**\n       * TailwindCSS container namespace config object.\n       *\n       * Docs: https://zeytal.com/docs/tailwind-config#namespaces\n       * Tailwind docs: https://tailwindcss.com/docs/theme#theme-variable-namespaces\n       */\n      container?: {\n        /**\n         * Map your Figma styles and Figma variables to your TailwindCSS container namespace by name-matching them.\n         *\n         * Docs: https://zeytal.com/docs/tailwind-config#tokens-mapping\n         * Tailwind docs: https://tailwindcss.com/docs/theme#theme-variable-namespaces\n         */\n        tokensMapping?: TokenMatcherArray;\n        /**\n         * Remove matching parts of your TailwindCSS container namespace theme variables.\n         *\n         * Docs: https://zeytal.com/docs/tailwind-config#strip-token-names\n         * Tailwind docs: https://tailwindcss.com/docs/theme#theme-variable-namespaces\n         */\n        stripTokenNames?: TokenMatcherArray;\n        /**\n         * Rewrite matching parts of your TailwindCSS container namespace theme variables.\n         *\n         * Docs: https://zeytal.com/docs/tailwind-config#rewrite-token-names\n         * Tailwind docs: https://tailwindcss.com/docs/theme#theme-variable-namespaces\n         */\n        rewriteTokenNames?: TokenMatcherRecord;\n      };\n      /**\n       * TailwindCSS radius namespace config object.\n       *\n       * Docs: https://zeytal.com/docs/tailwind-config#namespaces\n       * Tailwind docs: https://tailwindcss.com/docs/theme#theme-variable-namespaces\n       */\n      radius?: {\n        /**\n         * Map your Figma styles and Figma variables to your TailwindCSS radius namespace by name-matching them.\n         *\n         * Docs: https://zeytal.com/docs/tailwind-config#tokens-mapping\n         * Tailwind docs: https://tailwindcss.com/docs/theme#theme-variable-namespaces\n         */\n        tokensMapping?: TokenMatcherArray;\n        /**\n         * Remove matching parts of your TailwindCSS radius namespace theme variables.\n         *\n         * Docs: https://zeytal.com/docs/tailwind-config#strip-token-names\n         * Tailwind docs: https://tailwindcss.com/docs/theme#theme-variable-namespaces\n         */\n        stripTokenNames?: TokenMatcherArray;\n        /**\n         * Rewrite matching parts of your TailwindCSS radius namespace theme variables.\n         *\n         * Docs: https://zeytal.com/docs/tailwind-config#rewrite-token-names\n         * Tailwind docs: https://tailwindcss.com/docs/theme#theme-variable-namespaces\n         */\n        rewriteTokenNames?: TokenMatcherRecord;\n      };\n      /**\n       * TailwindCSS shadow namespace config object.\n       *\n       * Docs: https://zeytal.com/docs/tailwind-config#namespaces\n       * Tailwind docs: https://tailwindcss.com/docs/theme#theme-variable-namespaces\n       */\n      shadow?: {\n        /**\n         * Map your Figma styles and Figma variables to your TailwindCSS shadow namespace by name-matching them.\n         *\n         * Docs: https://zeytal.com/docs/tailwind-config#tokens-mapping\n         * Tailwind docs: https://tailwindcss.com/docs/theme#theme-variable-namespaces\n         */\n        tokensMapping?: TokenMatcherArray;\n        /**\n         * Remove matching parts of your TailwindCSS shadow namespace theme variables.\n         *\n         * Docs: https://zeytal.com/docs/tailwind-config#strip-token-names\n         * Tailwind docs: https://tailwindcss.com/docs/theme#theme-variable-namespaces\n         */\n        stripTokenNames?: TokenMatcherArray;\n        /**\n         * Rewrite matching parts of your TailwindCSS shadow namespace theme variables.\n         *\n         * Docs: https://zeytal.com/docs/tailwind-config#rewrite-token-names\n         * Tailwind docs: https://tailwindcss.com/docs/theme#theme-variable-namespaces\n         */\n        rewriteTokenNames?: TokenMatcherRecord;\n      };\n      /**\n       * TailwindCSS inset shadow namespace config object.\n       *\n       * Docs: https://zeytal.com/docs/tailwind-config#namespaces\n       * Tailwind docs: https://tailwindcss.com/docs/theme#theme-variable-namespaces\n       */\n      insetShadow?: {\n        /**\n         * Map your Figma styles and Figma variables to your TailwindCSS inset shadow namespace by name-matching them.\n         *\n         * Docs: https://zeytal.com/docs/tailwind-config#tokens-mapping\n         * Tailwind docs: https://tailwindcss.com/docs/theme#theme-variable-namespaces\n         */\n        tokensMapping?: TokenMatcherArray;\n        /**\n         * Remove matching parts of your TailwindCSS inset shadow namespace theme variables.\n         *\n         * Docs: https://zeytal.com/docs/tailwind-config#strip-token-names\n         * Tailwind docs: https://tailwindcss.com/docs/theme#theme-variable-namespaces\n         */\n        stripTokenNames?: TokenMatcherArray;\n        /**\n         * Rewrite matching parts of your TailwindCSS inset shadow namespace theme variables.\n         *\n         * Docs: https://zeytal.com/docs/tailwind-config#rewrite-token-names\n         * Tailwind docs: https://tailwindcss.com/docs/theme#theme-variable-namespaces\n         */\n        rewriteTokenNames?: TokenMatcherRecord;\n      };\n      /**\n       * TailwindCSS drop shadow namespace config object.\n       *\n       * Docs: https://zeytal.com/docs/tailwind-config#namespaces\n       * Tailwind docs: https://tailwindcss.com/docs/theme#theme-variable-namespaces\n       */\n      dropShadow?: {\n        /**\n         * Map your Figma styles and Figma variables to your TailwindCSS drop shadow namespace by name-matching them.\n         *\n         * Docs: https://zeytal.com/docs/tailwind-config#tokens-mapping\n         * Tailwind docs: https://tailwindcss.com/docs/theme#theme-variable-namespaces\n         */\n        tokensMapping?: TokenMatcherArray;\n        /**\n         * Remove matching parts of your TailwindCSS drop shadow namespace theme variables.\n         *\n         * Docs: https://zeytal.com/docs/tailwind-config#strip-token-names\n         * Tailwind docs: https://tailwindcss.com/docs/theme#theme-variable-namespaces\n         */\n        stripTokenNames?: TokenMatcherArray;\n        /**\n         * Rewrite matching parts of your TailwindCSS drop shadow namespace theme variables.\n         *\n         * Docs: https://zeytal.com/docs/tailwind-config#rewrite-token-names\n         * Tailwind docs: https://tailwindcss.com/docs/theme#theme-variable-namespaces\n         */\n        rewriteTokenNames?: TokenMatcherRecord;\n      };\n      /**\n       * TailwindCSS blur namespace config object.\n       *\n       * Docs: https://zeytal.com/docs/tailwind-config#namespaces\n       * Tailwind docs: https://tailwindcss.com/docs/theme#theme-variable-namespaces\n       */\n      blur?: {\n        /**\n         * Map your Figma styles and Figma variables to your TailwindCSS blur namespace by name-matching them.\n         *\n         * Docs: https://zeytal.com/docs/tailwind-config#tokens-mapping\n         * Tailwind docs: https://tailwindcss.com/docs/theme#theme-variable-namespaces\n         */\n        tokensMapping?: TokenMatcherArray;\n        /**\n         * Remove matching parts of your TailwindCSS blur namespace theme variables.\n         *\n         * Docs: https://zeytal.com/docs/tailwind-config#strip-token-names\n         * Tailwind docs: https://tailwindcss.com/docs/theme#theme-variable-namespaces\n         */\n        stripTokenNames?: TokenMatcherArray;\n        /**\n         * Rewrite matching parts of your TailwindCSS blur namespace theme variables.\n         *\n         * Docs: https://zeytal.com/docs/tailwind-config#rewrite-token-names\n         * Tailwind docs: https://tailwindcss.com/docs/theme#theme-variable-namespaces\n         */\n        rewriteTokenNames?: TokenMatcherRecord;\n      };\n      /**\n       * TailwindCSS perspective namespace config object.\n       *\n       * Docs: https://zeytal.com/docs/tailwind-config#namespaces\n       * Tailwind docs: https://tailwindcss.com/docs/theme#theme-variable-namespaces\n       */\n      perspective?: {\n        /**\n         * Map your Figma styles and Figma variables to your TailwindCSS perspective namespace by name-matching them.\n         *\n         * Docs: https://zeytal.com/docs/tailwind-config#tokens-mapping\n         * Tailwind docs: https://tailwindcss.com/docs/theme#theme-variable-namespaces\n         */\n        tokensMapping?: TokenMatcherArray;\n        /**\n         * Remove matching parts of your TailwindCSS perspective namespace theme variables.\n         *\n         * Docs: https://zeytal.com/docs/tailwind-config#strip-token-names\n         * Tailwind docs: https://tailwindcss.com/docs/theme#theme-variable-namespaces\n         */\n        stripTokenNames?: TokenMatcherArray;\n        /**\n         * Rewrite matching parts of your TailwindCSS perspective namespace theme variables.\n         *\n         * Docs: https://zeytal.com/docs/tailwind-config#rewrite-token-names\n         * Tailwind docs: https://tailwindcss.com/docs/theme#theme-variable-namespaces\n         */\n        rewriteTokenNames?: TokenMatcherRecord;\n      };\n      /**\n       * TailwindCSS aspect namespace config object.\n       *\n       * Docs: https://zeytal.com/docs/tailwind-config#namespaces\n       * Tailwind docs: https://tailwindcss.com/docs/theme#theme-variable-namespaces\n       */\n      aspect?: {\n        /**\n         * Map your Figma styles and Figma variables to your TailwindCSS aspect namespace by name-matching them.\n         *\n         * Docs: https://zeytal.com/docs/tailwind-config#tokens-mapping\n         * Tailwind docs: https://tailwindcss.com/docs/theme#theme-variable-namespaces\n         */\n        tokensMapping?: TokenMatcherArray;\n        /**\n         * Remove matching parts of your TailwindCSS aspect namespace theme variables.\n         *\n         * Docs: https://zeytal.com/docs/tailwind-config#strip-token-names\n         * Tailwind docs: https://tailwindcss.com/docs/theme#theme-variable-namespaces\n         */\n        stripTokenNames?: TokenMatcherArray;\n        /**\n         * Rewrite matching parts of your TailwindCSS aspect namespace theme variables.\n         *\n         * Docs: https://zeytal.com/docs/tailwind-config#rewrite-token-names\n         * Tailwind docs: https://tailwindcss.com/docs/theme#theme-variable-namespaces\n         */\n        rewriteTokenNames?: TokenMatcherRecord;\n      };\n      /**\n       * TailwindCSS ease namespace config object.\n       *\n       * Docs: https://zeytal.com/docs/tailwind-config#namespaces\n       * Tailwind docs: https://tailwindcss.com/docs/theme#theme-variable-namespaces\n       */\n      ease?: {\n        /**\n         * Map your Figma styles and Figma variables to your TailwindCSS ease namespace by name-matching them.\n         *\n         * Docs: https://zeytal.com/docs/tailwind-config#tokens-mapping\n         * Tailwind docs: https://tailwindcss.com/docs/theme#theme-variable-namespaces\n         */\n        tokensMapping?: TokenMatcherArray;\n        /**\n         * Remove matching parts of your TailwindCSS ease namespace theme variables.\n         *\n         * Docs: https://zeytal.com/docs/tailwind-config#strip-token-names\n         * Tailwind docs: https://tailwindcss.com/docs/theme#theme-variable-namespaces\n         */\n        stripTokenNames?: TokenMatcherArray;\n        /**\n         * Rewrite matching parts of your TailwindCSS ease namespace theme variables.\n         *\n         * Docs: https://zeytal.com/docs/tailwind-config#rewrite-token-names\n         * Tailwind docs: https://tailwindcss.com/docs/theme#theme-variable-namespaces\n         */\n        rewriteTokenNames?: TokenMatcherRecord;\n      };\n      /**\n       * TailwindCSS animate namespace config object.\n       *\n       * Docs: https://zeytal.com/docs/tailwind-config#namespaces\n       * Tailwind docs: https://tailwindcss.com/docs/theme#theme-variable-namespaces\n       */\n      animate?: {\n        /**\n         * Map your Figma styles and Figma variables to your TailwindCSS animate namespace by name-matching them.\n         *\n         * Docs: https://zeytal.com/docs/tailwind-config#tokens-mapping\n         * Tailwind docs: https://tailwindcss.com/docs/theme#theme-variable-namespaces\n         */\n        tokensMapping?: TokenMatcherArray;\n        /**\n         * Remove matching parts of your TailwindCSS animate namespace theme variables.\n         *\n         * Docs: https://zeytal.com/docs/tailwind-config#strip-token-names\n         * Tailwind docs: https://tailwindcss.com/docs/theme#theme-variable-namespaces\n         */\n        stripTokenNames?: TokenMatcherArray;\n        /**\n         * Rewrite matching parts of your TailwindCSS animate namespace theme variables.\n         *\n         * Docs: https://zeytal.com/docs/tailwind-config#rewrite-token-names\n         * Tailwind docs: https://tailwindcss.com/docs/theme#theme-variable-namespaces\n         */\n        rewriteTokenNames?: TokenMatcherRecord;\n      };\n    };\n  };\n};\n\nexport type CLIPureConfig = DeepOmit<\n  DeepRequired<CLIConfig>,\n  \"assets.optimize.svg\"\n> & {\n  assets: {\n    optimize: {\n      svg: SVGOPickedConfig;\n    };\n  };\n};\n\nexport type ZeytalCLIConfigSchema = {\n  /**\n   * Ignored. Can be set to get completions, validations and documentation in some editors.\n   *\n   * Docs: https://zeytal.com/docs/cli-config-files#schema-autocomplete\n   */\n  $schema: \"node_modules/zeytal/schema/zeytal.json\";\n} & Omit<CLIConfig, \"projectToken\">;\n\nexport const zeytalDefaultConfig: CLIPureConfig = {\n  projectToken: \"\",\n  assets: {\n    figmaFilesVersion: \"live\",\n    figmaFilesPagesBatchSize: 5,\n    directoryPath: \".zeytal/assets\",\n    optimize: {\n      svg: {},\n    },\n  },\n  styles: {\n    figmaFilesVersion: \"live\",\n    figmaFilesPagesBatchSize: 5,\n    directoryPath: \".zeytal/styles\",\n    formats: {\n      targets: [],\n      colors: {\n        format: \"hex\",\n      },\n      fonts: {\n        usePostscriptFontNames: false,\n        unit: \"px\",\n        relativeLineHeight: false,\n      },\n      effects: {\n        combine: true,\n      },\n      grids: {\n        extractColors: false,\n      },\n    },\n  },\n  variables: {\n    directoryPath: \".zeytal/variables\",\n    collectionsIgnorePrefix: \"\",\n    formats: {\n      targets: [],\n      colors: {\n        format: \"hex\",\n      },\n      numbers: {\n        format: [],\n      },\n    },\n  },\n  tailwind: {\n    tokensPrefix: \"\",\n    globalModes: [],\n    globalIgnoreTokenNames: [],\n    globalStripTokenNames: [],\n    globalRewriteTokenNames: {},\n    namespaces: {\n      fontFamily: {\n        tokensMapping: [],\n        stripTokenNames: [],\n        rewriteTokenNames: {},\n      },\n      fontSize: {\n        tokensMapping: [],\n        stripTokenNames: [],\n        rewriteTokenNames: {},\n      },\n      fontWeight: {\n        tokensMapping: [],\n        stripTokenNames: [],\n        rewriteTokenNames: {},\n      },\n      letterSpacing: {\n        tokensMapping: [],\n        stripTokenNames: [],\n        rewriteTokenNames: {},\n      },\n      lineHeight: {\n        tokensMapping: [],\n        stripTokenNames: [],\n        rewriteTokenNames: {},\n      },\n      color: {\n        tokensMapping: [],\n        stripTokenNames: [],\n        rewriteTokenNames: {},\n      },\n      spacing: {\n        tokensMapping: [],\n        stripTokenNames: [],\n        rewriteTokenNames: {},\n      },\n      breakpoint: {\n        tokensMapping: [],\n        stripTokenNames: [],\n        rewriteTokenNames: {},\n      },\n      container: {\n        tokensMapping: [],\n        stripTokenNames: [],\n        rewriteTokenNames: {},\n      },\n      radius: {\n        tokensMapping: [],\n        stripTokenNames: [],\n        rewriteTokenNames: {},\n      },\n      shadow: {\n        tokensMapping: [],\n        stripTokenNames: [],\n        rewriteTokenNames: {},\n      },\n      insetShadow: {\n        tokensMapping: [],\n        stripTokenNames: [],\n        rewriteTokenNames: {},\n      },\n      dropShadow: {\n        tokensMapping: [],\n        stripTokenNames: [],\n        rewriteTokenNames: {},\n      },\n      blur: {\n        tokensMapping: [],\n        stripTokenNames: [],\n        rewriteTokenNames: {},\n      },\n      perspective: {\n        tokensMapping: [],\n        stripTokenNames: [],\n        rewriteTokenNames: {},\n      },\n      aspect: {\n        tokensMapping: [],\n        stripTokenNames: [],\n        rewriteTokenNames: {},\n      },\n      ease: {\n        tokensMapping: [],\n        stripTokenNames: [],\n        rewriteTokenNames: {},\n      },\n      animate: {\n        tokensMapping: [],\n        stripTokenNames: [],\n        rewriteTokenNames: {},\n      },\n    },\n  },\n};\n","export const zeytalVariablesFigmaPluginId = \"1502811310740851813\";\n\nexport const projectTokenHeaderName = \"X-Zeytal-Project-Token\";\nexport const figmaPluginIdHeaderName = \"X-FIGMA-PLUGIN-ID\";\n\nexport const zeytalAPIBaseUrl = \"https://api.zeytal.com\";\n\nexport const lineEndSignature = \"xxx-l_e-xxx\";\n","import type { FigmaFilesAPIData } from \"@/src/types/index.ts\";\nimport type { ZeytalCLIPureConfig } from \"@zeytal/kit\";\nimport type { ZeytalApi } from \"@zeytal/types\";\nimport type { OptionValues } from \"commander\";\n\nimport * as path from \"node:path\";\n\nimport { wait } from \"@endgame/utils/wait\";\nimport {\n  downloadAsset,\n  getNestedNodesByFileId,\n  optimizeAsset,\n  sortNodesByExportSettings,\n} from \"@zeytal/assets\";\nimport { getFigmaImagesEndpoint } from \"@zeytal/figma\";\nimport { zeytalDefaultConfig } from \"@zeytal/kit\";\nimport { projectTokenHeaderName } from \"@zeytal/kit/api\";\nimport { cyan, green, magenta } from \"colorette\";\nimport { Command } from \"commander\";\nimport fetch from \"node-fetch\";\n\nimport { fetchFilesData, fetchFilesVersions } from \"@/src/lib/figma.ts\";\nimport { errorMessages } from \"@/src/utils/errors.ts\";\nimport { refreshFolder, writeFile } from \"@/src/utils/file-system.ts\";\nimport { getConfig } from \"@/src/utils/get-config.ts\";\nimport { getCWD } from \"@/src/utils/get-cwd.ts\";\nimport { getZeytalApiBaseUrl } from \"@/src/utils/get-zeytal-api-base-url.ts\";\nimport { icons } from \"@/src/utils/icons.ts\";\nimport { logger } from \"@/src/utils/logger.ts\";\n\nconst assetsActionCore = async (\n  commandOptions: OptionValues,\n  zeytalConfig: ZeytalCLIPureConfig,\n) => {\n  logger.log(`${magenta(icons.leftHalfCircle)} Assets fetching started...`);\n\n  logger.spinner().start(\"Assessing your configuration parameters...\");\n\n  const zeytalAPIBaseUrl = getZeytalApiBaseUrl();\n\n  logger.debug(\"Getting user’s zeytal project data and figma files list.\");\n\n  const figmaAssetsAPIRes = await fetch(`${zeytalAPIBaseUrl}/api/assets`, {\n    method: \"GET\",\n    headers: {\n      \"Content-Type\": \"application/json\",\n      [projectTokenHeaderName]: zeytalConfig.projectToken ?? \"\",\n    },\n  }).catch(() => {\n    logger.spinner().fail();\n    throw errorMessages.zeytalApiError500();\n  });\n\n  const figmaAssetsAPIData =\n    (await figmaAssetsAPIRes.json()) as ZeytalApi.ApiResponse<FigmaFilesAPIData>;\n\n  if (!figmaAssetsAPIData || !figmaAssetsAPIData.success) {\n    logger.spinner().fail();\n    throw figmaAssetsAPIData.message;\n  }\n\n  if (!figmaAssetsAPIData.data || figmaAssetsAPIData.data === null) {\n    logger.spinner().fail();\n    throw errorMessages.zeytalApiNoData();\n  }\n\n  logger.spinner().succeed();\n\n  logger\n    .spinner()\n    .start(\n      `Searching for the latest ${zeytalConfig.assets.figmaFilesVersion} version of your figma files...`,\n    );\n\n  if (!figmaAssetsAPIData.data.projectData.figmaApiKey) {\n    logger.spinner().fail();\n    throw errorMessages.noFigmaApiKey({\n      projectName: figmaAssetsAPIData.data.projectData.name,\n    });\n  }\n\n  // Get the right files versions\n  const filesWithVersion =\n    (await fetchFilesVersions(\n      figmaAssetsAPIData.data.figmaFiles,\n      figmaAssetsAPIData.data.projectData.figmaApiKey,\n      zeytalConfig,\n      \"assets\",\n    )) ?? [];\n\n  logger.spinner().succeed();\n\n  logger.spinner().start(\"Figma files fetching started...\");\n\n  const currentPagesBatchSize = zeytalConfig.assets.figmaFilesPagesBatchSize;\n  const cleanPagesBatchSize =\n    !currentPagesBatchSize ||\n    typeof currentPagesBatchSize !== \"number\" ||\n    currentPagesBatchSize <= 1\n      ? zeytalDefaultConfig.assets.figmaFilesPagesBatchSize\n      : currentPagesBatchSize;\n\n  logger.spinner().succeed();\n\n  // Get the pages in the Figma files that are not empty\n  const figmaFilesData = await fetchFilesData(\n    cleanPagesBatchSize,\n    filesWithVersion,\n    figmaAssetsAPIData.data.projectData.figmaApiKey,\n  );\n\n  logger.spinner().start(\"Processing your figma files data...\");\n\n  logger.debug(\"Nesting Figma files nodes.\");\n  const nestedNodes = getNestedNodesByFileId(figmaFilesData);\n\n  logger.debug(\"Filtering and sorting Figma files nodes.\");\n  const sortedNodes = sortNodesByExportSettings(nestedNodes);\n\n  logger.spinner().succeed();\n\n  logger.spinner().succeed(\"Requesting your figma assets URLs...\");\n\n  const filesAssetsUrls: [string, string][] = [];\n\n  let urlsBatchIndex = 0;\n  for (const [fileId, settingsForAssetsIds] of sortedNodes) {\n    urlsBatchIndex += 1;\n\n    logger.resetSpinner();\n    logger\n      .spinner()\n      .start(\n        `Fetching assets URLs batch ${urlsBatchIndex}/${sortedNodes.length}`,\n      );\n\n    for (const [settingParams, rawAssetsData] of Object.entries(\n      settingsForAssetsIds,\n    )) {\n      const ids = rawAssetsData.map(({ id }) => id).join(\",\");\n      const queryParams = settingParams + `&ids=${ids}`;\n\n      logger.debug(\"Fetching data from Figma assets endpoints.\");\n      const { images: assetsUrls } = await getFigmaImagesEndpoint(\n        figmaAssetsAPIData.data.projectData.figmaApiKey,\n        fileId,\n        queryParams,\n      );\n\n      if (filesAssetsUrls.length > 0) {\n        // delay between requests\n        logger.debug(\"Delaying requests to avoid rejections from Figma’s API.\");\n        await wait(50);\n      }\n\n      // Process each asset and add to results\n      for (const { id, name } of rawAssetsData) {\n        if (!assetsUrls[id]) continue;\n        filesAssetsUrls.push([name, assetsUrls[id]]);\n      }\n    }\n\n    logger.spinner().succeed();\n  }\n\n  const assetsFilesTuples: [string, string][] = [];\n  for (const [assetName, assetUrl] of filesAssetsUrls) {\n    const fileName = assetName.slice(assetName.indexOf(\"/\") + 1);\n\n    logger.log(\n      `${green(icons.checkmark)} Downloading and optimizing ${cyan(fileName)}`,\n    );\n\n    logger.debug(\"Downloading asset.\");\n    const assetData = await downloadAsset(assetUrl);\n\n    logger.debug(\n      \"Delaying next request to avoid rejections from Figma’s servers.\",\n    );\n    // Avoiding Figma AWS server limits restrictions.\n    await wait(150);\n\n    if (!assetData) {\n      logger.warn(`${icons.warning} No asset data found for ${cyan(fileName)}`);\n    } else {\n      logger.debug(\"Optimizing asset.\");\n\n      const optimizedAssetData = optimizeAsset(\n        zeytalConfig,\n        assetName,\n        assetData,\n      );\n\n      assetsFilesTuples.push([assetName, optimizedAssetData]);\n    }\n  }\n\n  logger.spinner().succeed(\"All assets downloaded and optimized.\");\n\n  logger\n    .spinner()\n    .succeed(\n      `Writing assets files inside ${cyan(zeytalConfig.assets.directoryPath)}...`,\n    );\n\n  // ⚡ Avoid computing and creating variables at each step of the loop\n  const refreshedFolders: string[] = [];\n  const assetsFilesLength = assetsFilesTuples.length;\n  let writingLoopIndex = 0;\n\n  // Writing assets files\n  for (\n    writingLoopIndex;\n    writingLoopIndex < assetsFilesLength;\n    writingLoopIndex += 1\n  ) {\n    const [filePath, fileContent] = assetsFilesTuples[writingLoopIndex]!;\n    const writePath = path.join(\n      commandOptions.cwd,\n      zeytalConfig.assets.directoryPath,\n      filePath,\n    );\n\n    const [assetType, fileName] = filePath.split(\"/\");\n\n    logger.resetSpinner();\n    logger.spinner().start(`Writing ${cyan(fileName ?? \"\")}...`);\n\n    if (assetType) {\n      logger.debug(\"Refreshing assets directory.\");\n\n      const assetTypeFolderPath = path.join(\n        commandOptions.cwd,\n        zeytalConfig.assets.directoryPath,\n        assetType,\n      );\n\n      // Refresh assets type folder only once\n      if (!refreshedFolders.includes(assetTypeFolderPath)) {\n        // debug(`Step: Assets of type \"${assetType}\" folder created.`);\n        await refreshFolder(assetTypeFolderPath);\n        refreshedFolders.push(assetTypeFolderPath);\n      }\n    }\n\n    logger.debug(\"Writing asset.\");\n\n    writeFile(writePath, Buffer.from(fileContent, \"base64\"));\n\n    logger.debug(\"Asset written.\");\n    logger.spinner().succeed(`${cyan(fileName ?? \"\")} written.`);\n  }\n\n  logger\n    .spinner()\n    .succeed(\n      `All assets files written to ${cyan(zeytalConfig.assets.directoryPath)}`,\n    );\n};\n\nexport const assetsCmd = new Command()\n  .name(\"assets\")\n  .description(\"extract and optimize SVGs from your Figma files\")\n  .action(async (_, command) => {\n    logger.break();\n\n    const optsWithGlobals = command.optsWithGlobals();\n    logger.setDebugModeTo(optsWithGlobals.debug);\n\n    const options = { ...optsWithGlobals, cwd: getCWD(optsWithGlobals.cwd) };\n\n    logger.debug(\"Getting user’s zeytal CLI config.\");\n    const zeytalConfig = await getConfig(options.cwd);\n\n    try {\n      await assetsActionCore(options, zeytalConfig);\n    } catch (errorMessage) {\n      logger.error(errorMessage);\n      logger.break();\n      process.exit(1);\n    }\n  });\n","import chalk from \"chalk\";\nimport stripAnsi from \"strip-ansi\";\n\nconst border = [\"─\", \"╭\", \"╮\", \"│\", \"│\", \"╰\", \"╯\"];\nconst nothing = [\"─\", \"\", \"\", \"\", \"\", \"\", \"\"];\n\nexport type BoxOptions = {\n  borderColor?:\n    | \"black\"\n    | \"red\"\n    | \"green\"\n    | \"yellow\"\n    | \"blue\"\n    | \"magenta\"\n    | \"cyan\"\n    | \"white\";\n  padding?: number;\n  textAlignment?: \"left\" | \"center\" | \"right\";\n  terminalColumns?: number;\n};\n\n/**\n * Renders text centered inside a yellow box. If terminal is too narrow to fit\n * the text without wrapping, the box will only consist of a top and bottom\n * horizontal rule with the text left justified.\n *\n * @param message The multiline message to display\n * @param options Various formatting options\n * @returns The rendered string\n *\n * @example Simple box\n *\n * # Usage\n * ```\n * console.log(box('Hello world!\\nThe quick brown fox jumps over the lazy dog'));\n * ```\n *\n * # Result\n * ```\n * ╭─────────────────────────────────────────────────╮\n * │                                                 │\n * │                  Hello world!                   │\n * │   The quick brown fox jumps over the lazy dog   │\n * │                                                 │\n * ╰─────────────────────────────────────────────────╯\n * ```\n */\nexport const box = (\n  message: string,\n  {\n    borderColor,\n    padding = 1,\n    textAlignment = \"center\",\n    terminalColumns: cols = process.stdout.columns || 80,\n  }: BoxOptions = {},\n): string => {\n  const lines: [string, number][] = message\n    .split(/\\r?\\n/)\n    .map((line) => [line, stripAnsi(line).length]);\n  const maxLine = lines.reduce((p, [, len]) => Math.max(p, len), 0);\n  const borderColorFn = (borderColor && chalk[borderColor]) || chalk.yellow;\n  const clampedSidePadding = Math.max(1, padding * 3);\n  const narrowMode = maxLine + 2 + clampedSidePadding * 2 > cols;\n  const sidePadding = narrowMode ? 0 : clampedSidePadding;\n  const innerWidth = Math.min(maxLine + sidePadding * 2, cols);\n  const [hr, topLeft, topRight, left, right, bottomLeft, bottomRight] =\n    narrowMode ? nothing : border;\n  const spacerRow = narrowMode\n    ? \"\\n\".repeat(padding)\n    : `${borderColorFn(`${left}${\" \".repeat(innerWidth)}${right}`)}\\n`.repeat(\n        padding,\n      );\n\n  const renderLine = ([line, len]: [string, number]) => {\n    let leftPadding = 0;\n    let rightPadding = 0;\n\n    if (!narrowMode) {\n      leftPadding = sidePadding;\n      rightPadding = sidePadding;\n\n      if (textAlignment === \"center\") {\n        leftPadding += Math.floor((maxLine - len) / 2);\n        rightPadding += maxLine - len - leftPadding + sidePadding;\n      } else if (textAlignment === \"right\") {\n        leftPadding += maxLine - len;\n      } else if (textAlignment === \"left\") {\n        rightPadding += maxLine - len;\n      }\n    }\n\n    return (\n      borderColorFn(left) +\n      \" \".repeat(leftPadding) +\n      line +\n      \" \".repeat(rightPadding) +\n      borderColorFn(right)\n    );\n  };\n\n  return (\n    borderColorFn(`${topLeft}${hr?.repeat(innerWidth)}${topRight}`) +\n    \"\\n\" +\n    spacerRow +\n    lines.map(renderLine).join(\"\\n\") +\n    \"\\n\" +\n    spacerRow +\n    borderColorFn(`${bottomLeft}${hr?.repeat(innerWidth)}${bottomRight}`)\n  );\n};\n","import { cyan, green, red, yellow } from \"colorette\";\n\nexport const highlighter = {\n  error: red,\n  warn: yellow,\n  info: cyan,\n  success: green,\n};\n","import type { Ora } from \"ora\";\n\nimport { inspect } from \"node:util\";\n\nimport { bold, cyan, gray } from \"colorette\";\nimport ora from \"ora\";\n\nimport { box } from \"@/src/utils/box.ts\";\nimport { highlighter } from \"@/src/utils/highlighter.ts\";\n\nlet debugModeActive = false;\nlet spinner: Ora;\n\nexport const messageToString = (debug: unknown): string => {\n  if (typeof debug === \"string\") {\n    return debug;\n  }\n  return inspect(debug);\n};\n\nexport const logger = {\n  setDebugModeTo(toggle: boolean) {\n    debugModeActive = toggle;\n  },\n  error(...args: unknown[]) {\n    console.log(\n      highlighter.error(args.map((m) => messageToString(m)).join(\" \")),\n    );\n  },\n  warn(...args: unknown[]) {\n    console.log(highlighter.warn(args.join(\" \")));\n  },\n  info(...args: unknown[]) {\n    console.log(highlighter.info(args.join(\" \")));\n  },\n  success(...args: unknown[]) {\n    console.log(highlighter.success(args.join(\" \")));\n  },\n  log(...args: unknown[]) {\n    console.log(args.join(\" \"));\n  },\n  box(...args: Parameters<typeof box>) {\n    console.log(box(...args));\n  },\n  resetSpinner() {\n    spinner = ora({\n      interval: 40,\n      spinner: \"dots\",\n    });\n  },\n  spinner() {\n    if (!spinner) {\n      this.resetSpinner();\n    }\n    return spinner;\n  },\n  debug(debug: unknown) {\n    if (debugModeActive) {\n      if (!spinner) {\n        this.resetSpinner();\n      }\n\n      const spinnerText = spinner.text;\n      const wasSpinning = spinner.isSpinning;\n      if (wasSpinning) {\n        spinner.stop();\n        this.log(`${cyan(\"⠴\")} ${spinnerText}`);\n      }\n\n      console.log(\n        `${bold(\"[debug]\")} ${gray(\n          `[${new Date().toISOString()}]`,\n        )} ${messageToString(debug)}`,\n      );\n\n      if (wasSpinning) {\n        spinner.start(spinnerText);\n      }\n    }\n  },\n  break() {\n    console.log(\"\");\n  },\n};\n","import type { FigmaFilesData, FigmaFilesAPIData } from \"@/src/types/index.ts\";\nimport type { ZeytalCLIPureConfig } from \"@zeytal/kit\";\nimport type { FigmaRestApi } from \"@zeytal/types\";\n\nimport { wait } from \"@endgame/utils/wait\";\nimport { findLatestFileVersion, getFigmaFileEndpoint } from \"@zeytal/figma\";\nimport { cyan } from \"colorette\";\n\nimport { logger } from \"@/src/utils/logger.ts\";\n\nexport const figmaAPICallsDelay = 0;\nexport const figmaAWSAssetsCallsDelay = 150;\n\nfunction batchIds(nodesArray: FigmaRestApi.CanvasNode[], batchSize: number) {\n  const result = [];\n\n  for (let i = 0; i < nodesArray.length; i += batchSize) {\n    const batch = nodesArray\n      .slice(i, i + batchSize)\n      .map((obj) => obj.id)\n      .join(\",\");\n    result.push(batch);\n  }\n\n  return result;\n}\n\nexport const fetchFilesVersions = async (\n  figmaFiles: FigmaFilesAPIData[\"figmaFiles\"],\n  figmaApiKey: string,\n  zeytalConfig: ZeytalCLIPureConfig,\n  category: \"assets\" | \"styles\",\n) => {\n  const filesWithVersion = [];\n\n  for (const { fileId } of figmaFiles) {\n    if (!fileId || !figmaApiKey) continue;\n\n    if (filesWithVersion.length > 0) {\n      // delay between requests\n      await wait(figmaAPICallsDelay);\n    }\n\n    const fileVersion = await findLatestFileVersion(\n      figmaApiKey,\n      fileId,\n      zeytalConfig[category].figmaFilesVersion,\n    );\n\n    if (fileVersion) {\n      filesWithVersion.push(fileVersion);\n    }\n  }\n\n  return filesWithVersion;\n};\n\nexport const fetchFilesData = async (\n  figmaFilesPagesBatchSize: number,\n  filesWithVersion: NonNullable<Awaited<ReturnType<typeof fetchFilesVersions>>>,\n  figmaApiKey: string,\n) => {\n  const figmaFilesData: FigmaFilesData = [];\n\n  // Get the pages in the Figma files that are not empty\n  for (const { id: fileId, version } of filesWithVersion) {\n    const versionQueryParam = version ? `version=${version}` : \"\";\n    const depth1QueryParam = \"depth=1\";\n    const filePagesQueryParams = versionQueryParam\n      ? `${versionQueryParam}&${depth1QueryParam}`\n      : depth1QueryParam;\n\n    logger.resetSpinner();\n    logger.spinner().start(`Fetching file...`);\n\n    // Step 1: Get all file's pages\n    const filePages = await getFigmaFileEndpoint(\n      figmaApiKey,\n      fileId,\n      filePagesQueryParams,\n    );\n    let { children: pagesList } = filePages.document;\n\n    // Ignoring Figma divider pages\n    pagesList = pagesList.filter(({ name: pageName }) => pageName !== \"---\");\n\n    const pagesListIds = batchIds(pagesList, figmaFilesPagesBatchSize);\n    const pagesListIdsLength = pagesListIds.length;\n    let loopIndex: number;\n\n    // Reset file childrens (Figma pages)\n    filePages.document.children = [];\n    filePages.styles = {};\n\n    logger.spinner().succeed(`${cyan(filePages.name)} file fetched.`);\n\n    // Step 2: Process each page sequentially with a delay\n    for (loopIndex = 0; loopIndex < pagesListIdsLength; loopIndex++) {\n      const pageIds = pagesListIds[loopIndex];\n      if (!pageIds) {\n        continue;\n      }\n\n      logger\n        .spinner()\n        .start(\n          `Getting file pages data — Batch ${loopIndex + 1}/${pagesListIdsLength}`,\n        );\n\n      // Make the API calls for the current page and store the result\n      const pageIdQueryParam = \"ids=\" + pageIds;\n      const pageQueryParams = versionQueryParam\n        ? `${versionQueryParam}&${pageIdQueryParam}`\n        : pageIdQueryParam;\n\n      const { document, styles } = await getFigmaFileEndpoint(\n        figmaApiKey,\n        fileId,\n        pageQueryParams,\n      );\n\n      // filter out irrelevant empty file pages\n      const pagesData = document.children.filter(({ id }) =>\n        pageIds.includes(id),\n      );\n\n      if (pagesData.length <= 0) {\n        continue;\n      }\n\n      filePages.document.children.push(...pagesData);\n      filePages.styles = { ...filePages.styles, ...styles };\n\n      // Add a delay after the API call, if figmaAPICallsDelay is positive\n      if (figmaAPICallsDelay >= 0) {\n        await wait(figmaAPICallsDelay);\n      }\n\n      logger.spinner().succeed();\n    }\n\n    figmaFilesData.push({\n      fileId,\n      document: filePages.document,\n      styles: filePages.styles,\n    });\n\n    logger.spinner().succeed(`${cyan(filePages.name)} pages data fetched.`);\n  }\n\n  return figmaFilesData;\n};\n","export type FillInDaBlanksTemplate = string;\n\nexport type FillInDaBlanksValues = Record<string, string | number>;\n\nexport function fillInDaBlanks(\n  template: FillInDaBlanksTemplate,\n  values: FillInDaBlanksValues,\n): string {\n  return template.replace(/{(.*?)}/g, (_, key) => {\n    if (values[key] === undefined) {\n      console.error(`[fillInDaBlanks] Missing value for: {${key}}`);\n      return `{${key}}`;\n    }\n    return String(values[key]);\n  });\n}\n","import type { FillInDaBlanksValues } from \"@endgame/utils/fillInDaBlanks\";\n\nimport { fillInDaBlanks } from \"@endgame/utils/fillInDaBlanks\";\n\nexport const errorMessages = {\n  zeytalApiError500: () =>\n    \"We couldn’t contact our API or it returned a 500 error.\\nCheck your internet connection.\\nContact the support if this lasts.\",\n\n  zeytalApiNoData: () =>\n    \"No project data returned by our API.\\nEnsure you have passed a valid project secret token.\\n Check zeytal.com/docs for more info about secret project tokens.\",\n\n  noFigmaApiKey: (values: FillInDaBlanksValues) =>\n    fillInDaBlanks(\n      `No figma personal token found for project {projectName}.\\nAdd it in your project dashboard on zeytal.com`,\n      values,\n    ),\n\n  undefinedCreateFolderDir: () => \"No directory specified for createFolder()!\",\n\n  undefinedRefreshPath: () => \"No path provided to refreshFolder()!\",\n\n  writingFile: () => \"Error while attempting to write file(s)!\",\n};\n","import { existsSync, mkdirSync, writeFileSync } from \"node:fs\";\n\nimport trash from \"trash\";\n\nimport { errorMessages } from \"@/src/utils/errors.ts\";\nimport { logger } from \"@/src/utils/logger.ts\";\n\n/**\n * @description Create folder, checking also if it already exists\n */\nexport function createFolder(dir: string) {\n  try {\n    if (!dir) {\n      throw errorMessages.undefinedCreateFolderDir();\n    }\n    if (!existsSync(dir)) {\n      mkdirSync(dir, { recursive: true });\n    }\n  } catch (error) {\n    logger.error(error);\n  }\n}\n\n/**\n * @description Refresh a folder by trashing it first, then creating a new folder\n */\nexport const refreshFolder = async (path: string) => {\n  try {\n    if (!path) {\n      throw errorMessages.undefinedRefreshPath();\n    }\n    await trash([path]);\n    createFolder(path);\n  } catch (error) {\n    logger.error(error);\n  }\n};\n\n/**\n * @description Helper that writes files. Prefer using the writeFile function since that is hooked up for any pre-processing.\n */\nexport function writeFile(filePath: string, fileContent: string | Buffer) {\n  try {\n    if (!filePath || !fileContent) {\n      throw errorMessages.writingFile();\n    }\n    writeFileSync(filePath, fileContent, \"utf8\");\n  } catch (error) {\n    logger.error(error);\n  }\n}\n","import type { ZeytalCLIPureConfig } from \"@zeytal/kit\";\n\nimport { zeytalDefaultConfig } from \"@zeytal/kit\";\nimport { loadConfig } from \"c12\";\n\nexport const getConfig = async (cwd?: string): Promise<ZeytalCLIPureConfig> => {\n  const { config } = await loadConfig<ZeytalCLIPureConfig>({\n    name: \"zeytal\",\n    configFile: \"zeytal\",\n    cwd,\n    globalRc: false,\n    dotenv: true,\n    packageJson: false,\n    envName: false,\n    omit$Keys: true,\n    jitiOptions: {\n      extensions: [\".json\"],\n    },\n    defaultConfig: zeytalDefaultConfig,\n  });\n\n  const zeytalConfig: ZeytalCLIPureConfig = {\n    ...config,\n    projectToken: process.env.ZEYTAL_PROJECT_TOKEN ?? \"\",\n  };\n\n  return zeytalConfig;\n};\n","import { resolve } from \"node:path\";\n\nexport const getCWD = (rawCWD: string) =>\n  typeof rawCWD === \"string\" && rawCWD !== \"undefined\" ? resolve(rawCWD) : \".\";\n","import { zeytalAPIBaseUrl } from \"@zeytal/kit/api\";\n\nlet apiBaseUrl = zeytalAPIBaseUrl;\n\nexport const getZeytalApiBaseUrl = () => {\n  if (process.env.ZEYTAL_API_BASE) {\n    apiBaseUrl = process.env.ZEYTAL_API_BASE;\n  }\n  return apiBaseUrl;\n};\n","import isUnicodeSupported from \"is-unicode-supported\";\n\nconst unicode = isUnicodeSupported();\n\nconst defineIcon = (unicodeIcon: string, fallbackIcon: string) =>\n  unicode ? unicodeIcon : fallbackIcon;\n\nexport const icons = {\n  arrowRight: defineIcon(\"→\", \"→\"),\n  checkmark: defineIcon(\"✔\", \"√\"),\n  cross: defineIcon(\"✖\", \"×\"),\n  gear: defineIcon(\"⚙\", \"D\"),\n  info: defineIcon(\"ℹ\", \"i\"),\n  leftHalfCircle: defineIcon(\"◐\", \"o\"),\n  warning: defineIcon(\"‼\", \"‼\"),\n};\n","import { Command } from \"commander\";\n\nimport { assetsCmd } from \"@/src/commands/assets/index.ts\";\nimport { stylesCmd } from \"@/src/commands/styles/index.ts\";\nimport { variablesCmd } from \"@/src/commands/variables/index.ts\";\nimport { logger } from \"@/src/utils/logger.ts\";\nimport { globalOptions } from \"@/src/utils/options.ts\";\n\nexport const generateCmd = new Command()\n  .name(\"generate\")\n  .alias(\"gen\")\n  .description(\n    \"run `variables`, `styles`, and `assets` commands in this specific order\",\n  )\n  .action(async (_, command) => {\n    const optsWithGlobals = command.optsWithGlobals();\n    logger.setDebugModeTo(optsWithGlobals.debug);\n\n    logger.debug(\n      \"Mapping global options to each command called by the generate command.\",\n    );\n\n    // Add global options\n    globalOptions.forEach((o) => {\n      assetsCmd.addOption(o);\n      stylesCmd.addOption(o);\n      variablesCmd.addOption(o);\n    });\n\n    logger.debug(\"Starting assets command.\");\n    await assetsCmd.parseAsync([]);\n\n    logger.debug(\"Starting styles command.\");\n    await stylesCmd.parseAsync([]);\n\n    logger.debug(\"Starting variables command.\");\n    await variablesCmd.parseAsync([]);\n  });\n","import type { FigmaRestApi, ZeytalTokens } from \"@zeytal/types\";\n\nexport const getStyleImplementationKeyRegExp = (\n  styleType: FigmaRestApi.StyleType,\n) => {\n  if (styleType === \"FILL\") {\n    return /^(stroke|fill)$/;\n  } else if (styleType === \"TEXT\") {\n    return /^text$/;\n  } else if (styleType === \"EFFECT\") {\n    return /^effect$/;\n  } else if (styleType === \"GRID\") {\n    return /^grid$/;\n  }\n  return / /;\n};\n\nexport const findStyleValueKey = (mappedStyle: ZeytalTokens.MappedStyle) => {\n  const { key, styleType, node } = mappedStyle;\n\n  const styleImplementationKeyRegExp =\n    getStyleImplementationKeyRegExp(styleType);\n\n  const refType = Object.entries(node.styles).reduce((acc, [sType, sRef]) => {\n    if (sRef === key && styleImplementationKeyRegExp.test(sType)) {\n      acc = sType;\n    }\n    return acc;\n  }, \"\");\n\n  if (refType === \"fill\") {\n    return \"fills\";\n  } else if (refType === \"stroke\") {\n    return \"strokes\";\n  } else if (refType === \"text\") {\n    return \"style\";\n  } else if (refType === \"effect\") {\n    return \"effects\";\n  } else if (refType === \"grid\") {\n    return \"layoutGrids\";\n  }\n};\n","import type { FigmaRestApi, ZeytalFigma, ZeytalTokens } from \"@zeytal/types\";\n\nimport { getStyleImplementationKeyRegExp } from \"../utils/figma-data.ts\";\n\nconst mapStyles = (\n  styles: Record<string, FigmaRestApi.Style>,\n  nodes: ZeytalTokens.LeafNode[],\n) => {\n  return Object.entries(styles)\n    .filter(([, { remote }]) => !remote)\n    .reduce<ZeytalTokens.MappedStyle[]>((acc, [key, values]) => {\n      const styleImplementationKeyRegExp = getStyleImplementationKeyRegExp(\n        values.styleType,\n      );\n\n      // Find a node implementing the style\n      const [implementationNode] = nodes.filter(({ styles }) => {\n        const foundImplementations = Object.entries(styles).filter(\n          ([sType, sKey]) =>\n            sKey === key && styleImplementationKeyRegExp.test(sType),\n        );\n        return !!foundImplementations.length;\n      });\n\n      // Skip the style since it hasn't been implemented\n      if (!implementationNode) {\n        return acc;\n      }\n\n      return [\n        ...acc,\n        {\n          ...values,\n          key,\n          node: implementationNode,\n        },\n      ];\n    }, []);\n};\n\n// Removing conflicting styles based on their names.\nconst getUniqueStyles = (mappedStyles: ZeytalTokens.MappedStyle[]) =>\n  mappedStyles.reduce<ZeytalTokens.MappedStyle[]>((acc, current) => {\n    const x = acc.find((item) => item.name === current.name);\n\n    if (!x) {\n      return acc.concat([current]);\n    }\n\n    return acc;\n  }, []);\n\nexport const getMappedStyles = (\n  figmaFiles: ZeytalFigma.MinimalFigmaFile[],\n  nodes: ZeytalTokens.LeafNode[],\n) => {\n  const allMappedStyles = figmaFiles.reduce<ZeytalTokens.MappedStyle[]>(\n    (acc, file) => {\n      const { styles } = file;\n\n      let mappedStyles = [] as ZeytalTokens.MappedStyle[];\n\n      if (!styles) {\n        return acc;\n      }\n\n      mappedStyles = mapStyles(styles, nodes);\n\n      return [...acc, ...mappedStyles];\n    },\n    [],\n  );\n\n  // Removing conflicting styles.\n  const uniqueStyles = getUniqueStyles(allMappedStyles);\n\n  return uniqueStyles;\n};\n","import type { ZeytalFigma, ZeytalTokens } from \"@zeytal/types\";\n\nconst findNestedNodes = (nodes: ZeytalTokens.AbstractNestedNode[]) => {\n  return nodes.reduce<ZeytalTokens.LeafNode[]>((acc, node) => {\n    if (Object.prototype.hasOwnProperty.call(node, \"styles\") && node.styles) {\n      // Push only nodes with styles property\n      acc.push(node as unknown as ZeytalTokens.LeafNode);\n    } else if (node.children && node.children.length) {\n      // Search for elements w/ children\n      acc.push(...findNestedNodes(node.children));\n    }\n    return acc;\n  }, []);\n};\n\nexport const getNestedNodes = (figmaFiles: ZeytalFigma.MinimalFigmaFile[]) =>\n  figmaFiles.reduce<ZeytalTokens.LeafNode[]>((acc, file) => {\n    const { document } = file;\n\n    const nestedNodes = findNestedNodes(document.children);\n\n    return [...acc, ...nestedNodes];\n  }, []);\n","export const toKebabCase = (str: string) =>\n  str\n    .normalize(\"NFD\") // Normalize to decomposed form for handling accents\n    .replace(/[\\u0300-\\u036f]/g, \"\") // Remove diacritics/accents\n    .toLowerCase() // Convert to lowercase\n    .replace(/[^\\w\\s-]/g, \"-\") // Remove special characters except spaces, hyphens, and underscores\n    .replace(/[\\s_]+/g, \"-\") // Replace spaces and underscores with hyphens\n    .replace(/-+/g, \"-\") // Replace multiple hyphens with a single hyphen\n    .replace(/^-+|-+$/g, \"\"); // Remove leading and trailing hyphens\n","import type { FigmaRestApi, ZeytalTokens } from \"@zeytal/types\";\n\nimport { findStyleValueKey } from \"../../utils/figma-data.ts\";\n\nexport const getColorStyleValue = (mappedStyle: ZeytalTokens.MappedStyle) => {\n  const { node } = mappedStyle;\n\n  const styleValueKey = findStyleValueKey(mappedStyle);\n\n  if (!styleValueKey) {\n    return [];\n  }\n\n  return node[styleValueKey] as FigmaRestApi.Paint[];\n};\n","import type { FigmaRestApi, ZeytalTokens } from \"@zeytal/types\";\n\nimport { findStyleValueKey } from \"../../utils/figma-data.ts\";\n\nexport const getEffectStyleValue = (mappedStyle: ZeytalTokens.MappedStyle) => {\n  const { node } = mappedStyle;\n\n  const styleValueKey = findStyleValueKey(mappedStyle);\n\n  if (!styleValueKey) {\n    return [];\n  }\n\n  return node[styleValueKey] as FigmaRestApi.Effect[];\n};\n","import type { FigmaRestApi, ZeytalTokens } from \"@zeytal/types\";\n\nimport { findStyleValueKey } from \"../../utils/figma-data.ts\";\n\nexport const getFontStyleValue = (mappedStyle: ZeytalTokens.MappedStyle) => {\n  const { node } = mappedStyle;\n\n  const styleValueKey = findStyleValueKey(mappedStyle);\n\n  if (!styleValueKey) {\n    return {};\n  }\n\n  return node[styleValueKey] as FigmaRestApi.TypeStyle;\n};\n","import type { FigmaRestApi, ZeytalTokens } from \"@zeytal/types\";\n\nimport { findStyleValueKey } from \"../../utils/figma-data.ts\";\n\nexport const getGridStyleValue = (mappedStyle: ZeytalTokens.MappedStyle) => {\n  const { node } = mappedStyle;\n\n  const styleValueKey = findStyleValueKey(mappedStyle);\n\n  if (!styleValueKey) {\n    return [];\n  }\n\n  return node[styleValueKey] as FigmaRestApi.LayoutGrid[];\n};\n","export const variableAliasKeyword = \"alias:\";\n\nexport const varNameStartKeyword = \"var-\";\n\nexport const styleNameStartKeyword = \"style-\";\n","import type { ZeytalTokens } from \"@zeytal/types\";\n\nimport { toKebabCase } from \"@endgame/utils/toKebabCase\";\n\nimport { getColorStyleValue } from \"../core/getters/get-color-value.ts\";\nimport { getEffectStyleValue } from \"../core/getters/get-effect-value.ts\";\nimport { getFontStyleValue } from \"../core/getters/get-font-value.ts\";\nimport { getGridStyleValue } from \"../core/getters/get-grid-value.ts\";\nimport { styleNameStartKeyword } from \"../utils/tokens.ts\";\n\nconst structureStyles = (mappedStyles: ZeytalTokens.MappedStyle[]) => {\n  const structuredStyles: ZeytalTokens.StructuredStylesArray = mappedStyles.map(\n    (mappedStyle) => {\n      let styleValue = undefined;\n\n      switch (mappedStyle.styleType) {\n        case \"FILL\":\n          styleValue = getColorStyleValue(mappedStyle);\n          break;\n        case \"TEXT\":\n          styleValue = getFontStyleValue(mappedStyle);\n          break;\n        case \"EFFECT\":\n          styleValue = getEffectStyleValue(mappedStyle);\n          break;\n        case \"GRID\":\n          styleValue = getGridStyleValue(mappedStyle);\n          break;\n      }\n\n      const styleNameOriginal = mappedStyle.name;\n\n      const structuredStyleName = toKebabCase(\n        `${styleNameStartKeyword}${styleNameOriginal}`,\n      );\n\n      return {\n        name: structuredStyleName,\n        styleType: mappedStyle.styleType,\n        value: styleValue,\n      };\n    },\n  );\n\n  return structuredStyles;\n};\n\nexport const makeStylesStructure = (\n  mappedStyles: ZeytalTokens.MappedStyle[],\n) => {\n  const structuredStyles = structureStyles(mappedStyles);\n\n  return structuredStyles;\n};\n","export const roundNumber = (num: number, decimals = 6): number => {\n  const n = num.toFixed(decimals);\n  return parseFloat(n);\n};\n","import type { ZeytalCLIPureConfig } from \"@zeytal/kit\";\nimport type { FigmaRestApi } from \"@zeytal/types\";\n\nimport { roundNumber } from \"@endgame/utils/roundNumber\";\n\nconst paintToHex = (color: FigmaRestApi.RGBA) => {\n  const { r, g, b, a } = color;\n\n  const red = parseFloat((r * 255).toFixed(0))\n    .toString(16)\n    .padStart(2, \"0\");\n  const green = parseFloat((g * 255).toFixed(0))\n    .toString(16)\n    .padStart(2, \"0\");\n  const blue = parseFloat((b * 255).toFixed(0))\n    .toString(16)\n    .padStart(2, \"0\");\n  const alpha = parseFloat((a * 255).toFixed(0))\n    .toString(16)\n    .padStart(2, \"0\");\n\n  return `#${red}${green}${blue}${a !== 1 ? alpha : \"\"}`;\n};\n\nconst paintToRgba = (color: FigmaRestApi.RGBA) => {\n  const { r, g, b, a } = color;\n\n  const red = (r * 255).toFixed(0);\n  const green = (g * 255).toFixed(0);\n  const blue = (b * 255).toFixed(0);\n  const alpha = roundNumber(a, 2);\n\n  return `rgb(${red}, ${green}, ${blue}, ${alpha})`;\n};\n\nconst paintToHsla = (color: FigmaRestApi.RGBA) => {\n  const { r, g, b, a } = color;\n\n  const max = Math.max(r, g, b);\n  const min = Math.min(r, g, b);\n  let hue = (max + min) / 2;\n  let saturation = (max + min) / 2;\n  let lightness = (max + min) / 2;\n  const alpha = roundNumber(a, 2);\n\n  if (max === min) {\n    hue = saturation = 0; // achromatic\n  } else {\n    const d = max - min;\n    saturation = lightness > 0.5 ? d / (2 - max - min) : d / (max + min);\n    switch (max) {\n      case r:\n        hue = (g - b) / d + (g < b ? 6 : 0);\n        break;\n      case g:\n        hue = (b - r) / d + 2;\n        break;\n      case b:\n        hue = (r - g) / d + 4;\n        break;\n    }\n    hue /= 6;\n  }\n\n  hue = Math.round(hue * 360);\n  saturation = Math.round(saturation * 100);\n  lightness = Math.round(lightness * 100);\n\n  return `hsl(${hue}, ${saturation}%, ${lightness}%, ${alpha})`;\n};\n\nexport const paintToSelectedFormat = (\n  colorsConfig: ZeytalCLIPureConfig[\"styles\"][\"formats\"][\"colors\"],\n  color: FigmaRestApi.RGBA,\n) => {\n  const { format } = colorsConfig;\n\n  if (format === \"hex\") {\n    return paintToHex(color);\n  } else if (format === \"rgba\") {\n    return paintToRgba(color);\n  } else if (format === \"hsla\") {\n    return paintToHsla(color);\n  }\n\n  return paintToHex(color);\n};\n\nexport const calculateGradientColorStops = (\n  stylesFormatsConfig: ZeytalCLIPureConfig[\"styles\"][\"formats\"],\n  gradientStops: FigmaRestApi.ColorStop[],\n) => {\n  let value = \"\";\n\n  gradientStops.forEach((stop, index) => {\n    const color = paintToSelectedFormat(stylesFormatsConfig.colors, stop.color);\n    const position = (stop.position ?? 0) * 100;\n\n    if (index > 0) {\n      value += \" \";\n    }\n    value += `${color} ${position}%`;\n    if (index < gradientStops.length - 1) {\n      value += \",\";\n    }\n  });\n\n  return value;\n};\n\nexport const calculateLinearGradientDegree = (\n  gradientHandlePositions: FigmaRestApi.Vector[],\n) => {\n  if (gradientHandlePositions.length < 2) {\n    throw new Error(\"gradientHandlePositions must contain at least two points\");\n  }\n\n  const [handle1, handle2] = gradientHandlePositions as [\n    FigmaRestApi.Vector,\n    FigmaRestApi.Vector,\n  ];\n\n  const angle = roundNumber(\n    ((Math.atan2(handle2.y - handle1.y, handle2.x - handle1.x) * 180) /\n      Math.PI +\n      450) %\n      360,\n    2,\n  );\n\n  return `${angle}deg, `;\n};\n\nexport const calculateRadialGradientPosition = (\n  gradientHandlePositions: FigmaRestApi.Vector[],\n) => {\n  if (gradientHandlePositions.length < 3) {\n    throw new Error(\"gradientHandlePositions must contain at least two points\");\n  }\n\n  const [handle1, handle2, handle3] = gradientHandlePositions as [\n    FigmaRestApi.Vector,\n    FigmaRestApi.Vector,\n    FigmaRestApi.Vector,\n  ];\n\n  // Use handle1 point for the gradient position\n  const positionX = roundNumber(handle1.x * 100, 2);\n  const positionY = roundNumber(handle1.y * 100, 2);\n\n  // Calculate the distances for the gradient sizes\n  const deltaX1 = handle2.x - handle1.x;\n  const deltaY1 = handle2.y - handle1.y;\n  const distance1 = Math.sqrt(deltaX1 * deltaX1 + deltaY1 * deltaY1);\n\n  const deltaX2 = handle3.x - handle1.x;\n  const deltaY2 = handle3.y - handle1.y;\n  const distance2 = Math.sqrt(deltaX2 * deltaX2 + deltaY2 * deltaY2);\n\n  const sizeX = roundNumber(distance1 * 100, 2);\n  const sizeY = roundNumber(distance2 * 100, 2);\n\n  // Create the gradient position and shape string\n  return `${sizeX}% ${sizeY}% at ${positionX}% ${positionY}%, `;\n};\n\nexport const calculateAngularGradientPosition = (\n  gradientHandlePositions: FigmaRestApi.Vector[],\n) => {\n  if (gradientHandlePositions.length < 2) {\n    throw new Error(\"gradientHandlePositions must contain at least two points\");\n  }\n\n  const [handle1, handle2] = gradientHandlePositions as [\n    FigmaRestApi.Vector,\n    FigmaRestApi.Vector,\n  ];\n\n  // Calculate the angle for the gradient from handle1 to handle2\n  const angle = roundNumber(\n    ((Math.atan2(handle2.y - handle1.y, handle2.x - handle1.x) * 180) /\n      Math.PI +\n      450) %\n      360,\n    2,\n  );\n\n  // Use handle1 point for the gradient position\n  const positionX = roundNumber(handle1.x * 100, 2);\n  const positionY = roundNumber(handle1.y * 100, 2);\n\n  // Create the gradient angle and position string\n  return `from ${angle}deg at ${positionX}% ${positionY}%, `;\n};\n","import type { ZeytalCLIPureConfig } from \"@zeytal/kit\";\nimport type { FigmaRestApi } from \"@zeytal/types\";\n\nimport {\n  calculateAngularGradientPosition,\n  calculateGradientColorStops,\n} from \"../../../utils/colors.ts\";\n\nexport function createAngularGradient(\n  stylesFormatsConfig: ZeytalCLIPureConfig[\"styles\"][\"formats\"],\n  paint: FigmaRestApi.GradientPaint,\n): string {\n  const { gradientHandlePositions, gradientStops } = paint;\n  let value = \"conic-gradient(\";\n\n  value += calculateAngularGradientPosition(gradientHandlePositions);\n\n  value += calculateGradientColorStops(stylesFormatsConfig, gradientStops);\n\n  value += \")\";\n\n  return value;\n}\n","import type { ZeytalCLIPureConfig } from \"@zeytal/kit\";\nimport type { FigmaRestApi } from \"@zeytal/types\";\n\nimport { roundNumber } from \"@endgame/utils/roundNumber\";\n\nimport { paintToSelectedFormat } from \"../../../utils/colors.ts\";\n\nexport const createDiamondGradient = (\n  stylesFormatsConfig: ZeytalCLIPureConfig[\"styles\"][\"formats\"],\n  paint: FigmaRestApi.GradientPaint,\n) => {\n  const { gradientStops } = paint;\n\n  // Quadrant CSS values arrays for later interporlation\n  const quadrantDenomination = [\n    \"top right\",\n    \"bottom right\",\n    \"bottom left\",\n    \"top left\",\n  ];\n\n  const gradients = Array.from(Array(4))\n    .map((_, index) => {\n      const colors = gradientStops\n        .map((stop) => {\n          const color = paintToSelectedFormat(\n            stylesFormatsConfig.colors,\n            stop.color,\n          );\n          const position = stop.position ?? 0;\n          const positionOnDistance = roundNumber((position / 2) * 100, 2);\n          return `${color} ${positionOnDistance}%`;\n        })\n        .join(\", \");\n\n      return `linear-gradient(to ${quadrantDenomination[index]}, ${colors}) ${quadrantDenomination[index]} / 50% 50% no-repeat`;\n    })\n    .join(\", \");\n\n  return gradients;\n};\n","import type { ZeytalCLIPureConfig } from \"@zeytal/kit\";\nimport type { FigmaRestApi } from \"@zeytal/types\";\n\nimport {\n  calculateGradientColorStops,\n  calculateLinearGradientDegree,\n} from \"../../../utils/colors.ts\";\n\nexport function createLinearGradient(\n  stylesFormatsConfig: ZeytalCLIPureConfig[\"styles\"][\"formats\"],\n  paint: FigmaRestApi.GradientPaint,\n): string {\n  const { gradientHandlePositions, gradientStops } = paint;\n  let value = \"linear-gradient(\";\n\n  value += calculateLinearGradientDegree(gradientHandlePositions);\n\n  value += calculateGradientColorStops(stylesFormatsConfig, gradientStops);\n\n  value += \")\";\n\n  return value;\n}\n","import type { ZeytalCLIPureConfig } from \"@zeytal/kit\";\nimport type { FigmaRestApi } from \"@zeytal/types\";\n\nimport {\n  calculateGradientColorStops,\n  calculateRadialGradientPosition,\n} from \"../../../utils/colors.ts\";\n\nexport function createRadialGradient(\n  stylesFormatsConfig: ZeytalCLIPureConfig[\"styles\"][\"formats\"],\n  paint: FigmaRestApi.GradientPaint,\n): string {\n  const { gradientHandlePositions, gradientStops } = paint;\n  let value = \"radial-gradient(\";\n\n  value += calculateRadialGradientPosition(gradientHandlePositions);\n\n  value += calculateGradientColorStops(stylesFormatsConfig, gradientStops);\n\n  value += \")\";\n\n  return value;\n}\n","import type { ZeytalCLIPureConfig } from \"@zeytal/kit\";\nimport type { FigmaRestApi } from \"@zeytal/types\";\n\nimport { paintToSelectedFormat } from \"../../../utils/colors.ts\";\n\nexport const createSolidColor = (\n  stylesFormatsConfig: ZeytalCLIPureConfig[\"styles\"][\"formats\"],\n  paint: FigmaRestApi.SolidPaint,\n) => paintToSelectedFormat(stylesFormatsConfig.colors, paint.color);\n","import type { ZeytalCLIPureConfig } from \"@zeytal/kit\";\nimport type { FigmaRestApi, ZeytalTokens } from \"@zeytal/types\";\n\nimport { createAngularGradient } from \"./angular-gradient.ts\";\nimport { createDiamondGradient } from \"./diamond-gradient.ts\";\nimport { createLinearGradient } from \"./linear-gradient.ts\";\nimport { createRadialGradient } from \"./radial-gradient.ts\";\nimport { createSolidColor } from \"./solid.ts\";\n\nexport const colorMaker = (\n  stylesFormatsConfig: ZeytalCLIPureConfig[\"styles\"][\"formats\"],\n  colorValues: FigmaRestApi.Paint[],\n) => {\n  // Only handle single paint value styles.\n  const [paint] = colorValues;\n  let value = \"\" as ZeytalTokens.ColorStyleValue;\n\n  if (paint?.type === \"SOLID\") {\n    value = createSolidColor(stylesFormatsConfig, paint);\n  } else if (paint?.type === \"GRADIENT_LINEAR\") {\n    value = createLinearGradient(stylesFormatsConfig, paint);\n  } else if (paint?.type === \"GRADIENT_ANGULAR\") {\n    value = createAngularGradient(stylesFormatsConfig, paint);\n  } else if (paint?.type === \"GRADIENT_DIAMOND\") {\n    value = createDiamondGradient(stylesFormatsConfig, paint);\n  } else if (paint?.type === \"GRADIENT_RADIAL\") {\n    value = createRadialGradient(stylesFormatsConfig, paint);\n  }\n\n  return value;\n};\n","import type { ZeytalCLIPureConfig } from \"@zeytal/kit\";\nimport type { FigmaRestApi } from \"@zeytal/types\";\n\nexport const createBlur = (\n  stylesFormatsConfig: ZeytalCLIPureConfig[\"styles\"][\"formats\"],\n  effect: FigmaRestApi.BlurEffect,\n) => {\n  return `blur(${effect.radius}px)`;\n};\n","import type { ZeytalCLIPureConfig } from \"@zeytal/kit\";\nimport type { FigmaRestApi } from \"@zeytal/types\";\n\nimport { paintToSelectedFormat } from \"../../../utils/colors.ts\";\n\nexport const createDropShadow = (\n  stylesFormatsConfig: ZeytalCLIPureConfig[\"styles\"][\"formats\"],\n  effect: FigmaRestApi.DropShadowEffect,\n) => {\n  const {\n    offset: { x, y },\n    radius,\n    color,\n  } = effect;\n  const effectColor = paintToSelectedFormat(stylesFormatsConfig.colors, color);\n\n  return `${x}px ${y}px ${radius}px ${effectColor}`;\n};\n","import type { ZeytalCLIPureConfig } from \"@zeytal/kit\";\nimport type { FigmaRestApi } from \"@zeytal/types\";\n\nimport { createDropShadow } from \"./drop-shadow.ts\";\n\nexport const createInnerShadow = (\n  stylesFormatsConfig: ZeytalCLIPureConfig[\"styles\"][\"formats\"],\n  effect: FigmaRestApi.InnerShadowEffect,\n) =>\n  createDropShadow(\n    stylesFormatsConfig,\n    effect as unknown as FigmaRestApi.DropShadowEffect,\n  ) + \" inset\";\n","import type { ZeytalCLIPureConfig } from \"@zeytal/kit\";\nimport type { FigmaRestApi, ZeytalTokens } from \"@zeytal/types\";\n\nimport { createBlur } from \"./blur.ts\";\nimport { createDropShadow } from \"./drop-shadow.ts\";\nimport { createInnerShadow } from \"./inner-shadow.ts\";\n\nexport const effectMaker = (\n  stylesFormatsConfig: ZeytalCLIPureConfig[\"styles\"][\"formats\"],\n  effectValues: FigmaRestApi.Effect[],\n) => {\n  // Only handle single paint value styles.\n  const value = {} as ZeytalTokens.EffectStyleValue;\n  const { combine } = stylesFormatsConfig.effects;\n\n  effectValues.forEach((effect) => {\n    // Prepare shadow property w/ or w/o combination\n    if (\n      !value.shadow &&\n      (effect.type === \"INNER_SHADOW\" || effect.type === \"DROP_SHADOW\")\n    ) {\n      value.shadow = combine ? \"\" : [];\n    }\n\n    // Add to shadow string if combination\n    if (\n      stylesFormatsConfig.effects.combine &&\n      (effect.type === \"INNER_SHADOW\" || effect.type === \"DROP_SHADOW\")\n    ) {\n      value.shadow += value.shadow ? \", \" : \"\";\n    }\n\n    // Handle effects types making\n    if (effect.type === \"INNER_SHADOW\") {\n      if (!combine && Array.isArray(value.shadow)) {\n        value.shadow.push(createInnerShadow(stylesFormatsConfig, effect));\n      } else {\n        value.shadow += createInnerShadow(stylesFormatsConfig, effect);\n      }\n    } else if (effect.type === \"DROP_SHADOW\") {\n      if (!combine && Array.isArray(value.shadow)) {\n        value.shadow.push(createDropShadow(stylesFormatsConfig, effect));\n      } else {\n        value.shadow += createDropShadow(stylesFormatsConfig, effect);\n      }\n    } else if (effect.type === \"LAYER_BLUR\") {\n      value.layerBlur = createBlur(stylesFormatsConfig, effect);\n    } else if (effect.type === \"BACKGROUND_BLUR\") {\n      value.backgroundBlur = createBlur(stylesFormatsConfig, effect);\n    }\n  });\n\n  // If no shadow combination and only one shadow, return a string instead of an array of one string\n  if (\n    value.shadow &&\n    Array.isArray(value.shadow) &&\n    value.shadow.length === 1\n  ) {\n    value.shadow = value.shadow[0];\n  }\n\n  return value;\n};\n","import { roundNumber } from \"@endgame/utils/roundNumber\";\n\nconst defaultRootEMSize = 16;\n\nexport const fontValToPx = (value: number) => `${roundNumber(value, 5)}px`;\n\nexport const fontValToRem = (value: number) =>\n  `${roundNumber(value / defaultRootEMSize, 5)}rem`;\n","import type { ZeytalCLIPureConfig } from \"@zeytal/kit\";\nimport type { FigmaRestApi, ZeytalTokens } from \"@zeytal/types\";\n\nimport { fontValToPx, fontValToRem } from \"../../../utils/font.ts\";\n\nexport const fontMaker = (\n  stylesFormatsConfig: ZeytalCLIPureConfig[\"styles\"][\"formats\"],\n  fontValues: FigmaRestApi.TypeStyle,\n) => {\n  const { usePostscriptFontNames, unit, relativeLineHeight } =\n    stylesFormatsConfig.fonts;\n\n  const {\n    fontPostScriptName,\n    fontFamily,\n    fontSize,\n    letterSpacing,\n    lineHeightPx,\n    lineHeightPercentFontSize,\n    fontWeight,\n    italic,\n    textCase,\n    textDecoration,\n  } = fontValues;\n\n  const value = {\n    fontName: (usePostscriptFontNames ? fontPostScriptName : fontFamily) ?? \"\",\n    fontSize: fontValToPx(fontSize ?? 0),\n    lineHeight: lineHeightPx\n      ? fontValToPx(lineHeightPx)\n      : fontValToPx(fontSize ?? 0),\n    fontWeight: fontWeight ?? 400,\n  } as ZeytalTokens.FontStyleValue;\n\n  // Transform font size based on config\n  if (fontSize) {\n    if (unit === \"rem\") {\n      value.fontSize = fontValToRem(fontSize);\n    } else if (unit === \"px\") {\n      value.fontSize = fontValToPx(fontSize);\n    }\n  }\n\n  // Transform line height based on config\n  if (relativeLineHeight && lineHeightPercentFontSize) {\n    value.lineHeight = lineHeightPercentFontSize / 100;\n  } else if (unit === \"rem\" && lineHeightPx) {\n    value.lineHeight = fontValToRem(lineHeightPx);\n  } else if (unit === \"px\" && lineHeightPx) {\n    value.lineHeight = fontValToPx(lineHeightPx);\n  }\n\n  // Add letter spacing only if defined\n  if (letterSpacing) {\n    if (unit === \"rem\") {\n      value.letterSpacing = fontValToRem(letterSpacing);\n    } else if (unit === \"px\") {\n      value.letterSpacing = fontValToPx(letterSpacing);\n    }\n  }\n\n  // Add italic only if defined\n  if (italic !== undefined) {\n    value.italic = italic;\n  }\n\n  // Add text case only if defined\n  if (textCase) {\n    value.textCase = textCase;\n  }\n\n  // Add text decoration only if defined\n  if (textDecoration) {\n    value.textDecoration = textDecoration;\n  }\n\n  return value;\n};\n","import type { ZeytalCLIPureConfig } from \"@zeytal/kit\";\nimport type { FigmaRestApi, ZeytalTokens } from \"@zeytal/types\";\n\nimport { paintToSelectedFormat } from \"../../../utils/colors.ts\";\n\nexport const gridMaker = (\n  stylesFormatsConfig: ZeytalCLIPureConfig[\"styles\"][\"formats\"],\n  gridValues: FigmaRestApi.LayoutGrid[],\n) => {\n  const value: ZeytalTokens.GridStyleValue = gridValues\n    .filter(({ visible }) => visible)\n    .map(\n      ({\n        pattern,\n        sectionSize,\n        color,\n        alignment,\n        gutterSize,\n        offset,\n        count,\n      }) => {\n        const gridStyleValue: ZeytalTokens.GridStyle = {\n          pattern: pattern.toLowerCase() as Lowercase<\n            FigmaRestApi.LayoutGrid[\"pattern\"]\n          >,\n          sectionSize,\n          alignment: alignment.toLowerCase() as Lowercase<\n            FigmaRestApi.LayoutGrid[\"alignment\"]\n          >,\n          gutterSize,\n          offset,\n          count,\n        };\n\n        if (stylesFormatsConfig.grids.extractColors) {\n          gridStyleValue.color = paintToSelectedFormat(\n            stylesFormatsConfig.colors,\n            color,\n          );\n        }\n\n        return gridStyleValue;\n      },\n    );\n\n  return value;\n};\n","import type { ZeytalCLIPureConfig } from \"@zeytal/kit\";\nimport type { FigmaRestApi, ZeytalTokens } from \"@zeytal/types\";\n\nimport { toKebabCase } from \"@endgame/utils/toKebabCase\";\n\nimport { colorMaker } from \"../core/makers/colors/index.ts\";\nimport { effectMaker } from \"../core/makers/effects/index.ts\";\nimport { fontMaker } from \"../core/makers/fonts/index.ts\";\nimport { gridMaker } from \"../core/makers/grids/index.ts\";\n\nexport const transformStylesValues = (\n  styles: ZeytalTokens.StructuredStylesArray,\n  userConfig: ZeytalCLIPureConfig,\n) => {\n  const transformedStyles = styles.reduce((acc, { name, styleType, value }) => {\n    let tempTransformedStyles: ZeytalTokens.TransformedTokensArray = [];\n\n    if (styleType === \"FILL\") {\n      const styleVal = colorMaker(\n        userConfig.styles.formats,\n        value as FigmaRestApi.Paint[],\n      );\n\n      tempTransformedStyles = [\n        { name, value: styleVal, originType: styleType },\n      ];\n    } else if (styleType === \"EFFECT\") {\n      const styleVal = effectMaker(\n        userConfig.styles.formats,\n        value as FigmaRestApi.Effect[],\n      );\n\n      tempTransformedStyles = Object.entries(styleVal).map(([key, val]) => ({\n        name: `${name}-${toKebabCase(\n          key.replace(/[A-Z]+/g, (word) => \" \" + word), // Add a space after capital letters\n        )}`,\n        value: Array.isArray(val) ? val.join(\", \") : val,\n        originType: styleType,\n      }));\n    } else if (styleType === \"TEXT\") {\n      const styleVal = fontMaker(\n        userConfig.styles.formats,\n        value as FigmaRestApi.TypeStyle,\n      );\n\n      tempTransformedStyles = Object.entries(styleVal).map(([key, val]) => ({\n        name: `${name}-${toKebabCase(\n          key.replace(/[A-Z]+/g, (word) => \" \" + word), // Add a space after capital letters\n        )}`,\n        value: val,\n        originType: styleType,\n      }));\n    } else if (styleType === \"GRID\") {\n      const styleVal = gridMaker(\n        userConfig.styles.formats,\n        value as FigmaRestApi.LayoutGrid[],\n      );\n\n      tempTransformedStyles = Object.entries(styleVal).reduce(\n        (gridAcc, [gridKey, gridVal]) => {\n          Object.entries(gridVal).forEach(([k, v]) => {\n            gridAcc.push({\n              name: `${name}-${toKebabCase(\n                gridKey.replace(/[A-Z]+/g, (word) => \" \" + word), // Add a space after capital letters\n              )}-${toKebabCase(\n                k.replace(/[A-Z]+/g, (word) => \" \" + word), // Add a space after capital letters\n              )}`,\n              value: v,\n              originType: styleType,\n            });\n          });\n\n          return gridAcc;\n        },\n        [] as ZeytalTokens.TransformedTokensArray,\n      );\n    }\n\n    acc.push(...tempTransformedStyles);\n\n    return acc;\n  }, [] as ZeytalTokens.TransformedTokensArray);\n\n  return transformedStyles;\n};\n","export const camelize = (str: string) =>\n  str\n    // Add a space after uppercase words\n    .replace(/[A-Z]+/g, (word) => \" \" + word)\n    // Replace all characters that are not letter or number with a space\n    .replace(/[^a-zA-Z0-9]+/g, \" \")\n    // Remove leading and trailing spaces\n    .trim()\n    // Find all words, and capitalize the first letter and lowercase the rest of the word. Except the first word which is fully lowercased.\n    .replace(/[a-zA-Z0-9]+/g, (word, index) =>\n      index === 0\n        ? word.toLowerCase()\n        : (word[0] as string).toUpperCase() + word.slice(1).toLowerCase(),\n    )\n    // Finally remove all remaining spaces\n    .replace(/ /g, \"\");\n","import type { ZeytalTokens } from \"@zeytal/types\";\n\nimport { camelize } from \"@endgame/utils/camelize\";\n\nimport { variableAliasKeyword } from \"../../utils/tokens.ts\";\n\nconst formatName = (name: ZeytalTokens.TransformedToken[\"name\"]) => {\n  return `${camelize(name)}`;\n};\n\nconst booleanValue = (boolean: boolean) => `${boolean}`;\n\nconst numberValue = (number: number) => number.toString();\n\nconst stringValue = (string: string) => {\n  return string.startsWith(variableAliasKeyword)\n    ? formatName(string.replace(variableAliasKeyword, \"\"))\n    : `\"${string}\"`;\n};\n\nconst formatValue = (value: ZeytalTokens.TransformedToken[\"value\"]): string => {\n  switch (typeof value) {\n    case \"boolean\":\n      return booleanValue(value);\n    case \"number\":\n      return numberValue(value);\n    case \"string\":\n      return stringValue(value);\n    default:\n      return \"null\";\n  }\n};\n\nexport const translateCjs = (\n  variables: ZeytalTokens.TransformedTokensArray,\n) => {\n  const variablesString = variables.reduce(\n    (acc, item) =>\n      `${acc}const ${formatName(item.name)} = ${formatValue(item.value)};\\n`,\n    \"\",\n  );\n\n  const exportString = `\\nmodule.exports = {\\n${variables.reduce((acc, item) => `${acc}  ${formatName(item.name)},\\n`, \"\")}}\\n`;\n\n  return variablesString + exportString;\n};\n","import type { ZeytalTokens } from \"@zeytal/types\";\n\nimport { variableAliasKeyword } from \"../../utils/tokens.ts\";\n\nconst formatName = (name: ZeytalTokens.TransformedToken[\"name\"]) => {\n  return `--${name}`;\n};\n\nconst booleanValue = (boolean: boolean) => `${boolean}`;\n\nconst numberValue = (number: number) => number.toString();\n\nconst stringValue = (\n  name: string,\n  value: string,\n  originType: ZeytalTokens.TransformedToken[\"originType\"],\n) => {\n  let cleanString = value;\n\n  if (\n    originType === \"STRING\" ||\n    (originType === \"TEXT\" && name.endsWith(\"font-family\"))\n  ) {\n    cleanString = `\"${value}\"`;\n  } else if (value.startsWith(variableAliasKeyword)) {\n    cleanString = `var(${formatName(value.replace(variableAliasKeyword, \"\"))})`;\n  } else {\n    cleanString = value === \"\" ? '\"\"' : value;\n  }\n\n  return cleanString;\n};\n\nconst formatValue = (token: ZeytalTokens.TransformedToken): string => {\n  switch (typeof token.value) {\n    case \"boolean\":\n      return booleanValue(token.value);\n    case \"number\":\n      return numberValue(token.value);\n    case \"string\":\n      return stringValue(token.name, token.value, token.originType);\n    default:\n      return \"null\";\n  }\n};\n\nexport const translateCss = (variables: ZeytalTokens.TransformedTokensArray) =>\n  \":root {\\n\" +\n  variables.reduce(\n    (acc, item) => `${acc}  ${formatName(item.name)}: ${formatValue(item)};\\n`,\n    \"\",\n  ) +\n  \"}\\n\";\n","import type { ZeytalTokens } from \"@zeytal/types\";\n\nimport { camelize } from \"@endgame/utils/camelize\";\n\nimport { variableAliasKeyword } from \"../../utils/tokens.ts\";\n\nconst formatName = (name: ZeytalTokens.TransformedToken[\"name\"]) => {\n  return `${camelize(name)}`;\n};\n\nconst booleanValue = (boolean: boolean) => `${boolean}`;\n\nconst numberValue = (number: number) => number.toString();\n\nconst stringValue = (string: string) => {\n  return string.startsWith(variableAliasKeyword)\n    ? formatName(string.replace(variableAliasKeyword, \"\"))\n    : `\"${string}\"`;\n};\n\nconst formatValue = (value: ZeytalTokens.TransformedToken[\"value\"]): string => {\n  switch (typeof value) {\n    case \"boolean\":\n      return booleanValue(value);\n    case \"number\":\n      return numberValue(value);\n    case \"string\":\n      return stringValue(value);\n    default:\n      return \"null\";\n  }\n};\n\nexport const translateEsm = (variables: ZeytalTokens.TransformedTokensArray) =>\n  variables.reduce(\n    (acc, item) =>\n      `${acc}export const ${formatName(item.name)} = ${formatValue(item.value)};\\n`,\n    \"\",\n  );\n","import type { ZeytalTokens } from \"@zeytal/types\";\n\nimport { camelize } from \"@endgame/utils/camelize\";\n\nimport { variableAliasKeyword } from \"../../utils/tokens.ts\";\n\nconst formatName = (name: ZeytalTokens.TransformedToken[\"name\"]) => {\n  return `\"${camelize(name)}\"`;\n};\n\nconst booleanValue = (boolean: boolean) => `${boolean}`;\n\nconst numberValue = (number: number) => number.toString();\n\nconst stringValue = (string: string) => {\n  return `\"${string}\"`;\n};\n\nconst formatValue = (value: ZeytalTokens.TransformedToken[\"value\"]): string => {\n  switch (typeof value) {\n    case \"boolean\":\n      return booleanValue(value);\n    case \"number\":\n      return numberValue(value);\n    case \"string\":\n      return stringValue(value);\n    default:\n      return \"null\";\n  }\n};\n\nexport const translateJson = (\n  variables: ZeytalTokens.TransformedTokensArray,\n) => {\n  // Deep copy of array to avoid mutating the orignal variables array\n  const varsDeepCopy: ZeytalTokens.TransformedTokensArray = JSON.parse(\n    JSON.stringify(variables),\n  );\n\n  const variablesByName = varsDeepCopy.reduce(\n    (acc, v) => {\n      return { ...acc, [v.name]: v.value };\n    },\n    {} as Record<string, ZeytalTokens.TransformedToken[\"value\"]>,\n  );\n\n  const noAliasVariables = varsDeepCopy.map((v) => {\n    if (\n      typeof v.value !== \"string\" ||\n      !v.value.startsWith(variableAliasKeyword)\n    ) {\n      return v;\n    }\n\n    v.value =\n      variablesByName[v.value.replace(variableAliasKeyword, \"\")] ?? v.value;\n\n    return v;\n  });\n\n  return (\n    \"{\\n\" +\n    noAliasVariables.reduce(\n      (acc, item, index) =>\n        `${acc}  ${formatName(item.name)}: ${formatValue(item.value)}${index !== noAliasVariables.length - 1 ? \",\" : \"\"}\\n`,\n      \"\",\n    ) +\n    \"}\\n\"\n  );\n};\n","import type { ZeytalTokens } from \"@zeytal/types\";\n\nimport { variableAliasKeyword } from \"../../utils/tokens.ts\";\n\nconst formatName = (name: ZeytalTokens.TransformedToken[\"name\"]) => {\n  return `@${name}`;\n};\n\nconst booleanValue = (boolean: boolean) => `${boolean}`;\n\nconst numberValue = (number: number) => number.toString();\n\nconst stringValue = (\n  name: string,\n  value: string,\n  originType: ZeytalTokens.TransformedToken[\"originType\"],\n) => {\n  let cleanString = value;\n\n  if (\n    originType === \"STRING\" ||\n    (originType === \"TEXT\" && name.endsWith(\"font-family\"))\n  ) {\n    cleanString = `\"${value}\"`;\n  } else if (value.startsWith(variableAliasKeyword)) {\n    cleanString = `var(${formatName(value.replace(variableAliasKeyword, \"\"))})`;\n  } else {\n    cleanString = value === \"\" ? '\"\"' : value;\n  }\n\n  return cleanString;\n};\n\nconst formatValue = (token: ZeytalTokens.TransformedToken): string => {\n  switch (typeof token.value) {\n    case \"boolean\":\n      return booleanValue(token.value);\n    case \"number\":\n      return numberValue(token.value);\n    case \"string\":\n      return stringValue(token.name, token.value, token.originType);\n    default:\n      return \"null\";\n  }\n};\n\nexport const translateLess = (variables: ZeytalTokens.TransformedTokensArray) =>\n  variables.reduce(\n    (acc, item) => `${acc}${formatName(item.name)}: ${formatValue(item)};\\n`,\n    \"\",\n  );\n","import type { ZeytalTokens } from \"@zeytal/types\";\n\nimport { variableAliasKeyword } from \"../../utils/tokens.ts\";\n\nconst formatName = (name: ZeytalTokens.TransformedToken[\"name\"]) => {\n  return `$${name}`;\n};\n\nconst booleanValue = (boolean: boolean) => `${boolean}`;\n\nconst numberValue = (number: number) => number.toString();\n\nconst stringValue = (\n  name: string,\n  value: string,\n  originType: ZeytalTokens.TransformedToken[\"originType\"],\n) => {\n  let cleanString = value;\n\n  if (\n    originType === \"STRING\" ||\n    (originType === \"TEXT\" && name.endsWith(\"font-family\"))\n  ) {\n    cleanString = `\"${value}\"`;\n  } else if (value.startsWith(variableAliasKeyword)) {\n    cleanString = `var(${formatName(value.replace(variableAliasKeyword, \"\"))})`;\n  } else {\n    cleanString = value === \"\" ? '\"\"' : value;\n  }\n\n  return cleanString;\n};\n\nconst formatValue = (token: ZeytalTokens.TransformedToken): string => {\n  switch (typeof token.value) {\n    case \"boolean\":\n      return booleanValue(token.value);\n    case \"number\":\n      return numberValue(token.value);\n    case \"string\":\n      return stringValue(token.name, token.value, token.originType);\n    default:\n      return \"null\";\n  }\n};\n\nexport const translateSass = (variables: ZeytalTokens.TransformedTokensArray) =>\n  variables.reduce(\n    (acc, item) => `${acc}${formatName(item.name)}: ${formatValue(item)};\\n`,\n    \"\",\n  );\n","import type { ZeytalTokens } from \"@zeytal/types\";\n\nimport { variableAliasKeyword } from \"../../utils/tokens.ts\";\n\nconst formatName = (name: ZeytalTokens.TransformedToken[\"name\"]) => {\n  return `$${name}`;\n};\n\nconst booleanValue = (boolean: boolean) => `${boolean}`;\n\nconst numberValue = (number: number) => number.toString();\n\nconst stringValue = (\n  name: string,\n  value: string,\n  originType: ZeytalTokens.TransformedToken[\"originType\"],\n) => {\n  let cleanString = value;\n\n  if (\n    originType === \"STRING\" ||\n    (originType === \"TEXT\" && name.endsWith(\"font-family\"))\n  ) {\n    cleanString = `\"${value}\"`;\n  } else if (value.startsWith(variableAliasKeyword)) {\n    cleanString = `var(${formatName(value.replace(variableAliasKeyword, \"\"))})`;\n  } else {\n    cleanString = value === \"\" ? '\"\"' : value;\n  }\n\n  return cleanString;\n};\n\nconst formatValue = (token: ZeytalTokens.TransformedToken): string => {\n  switch (typeof token.value) {\n    case \"boolean\":\n      return booleanValue(token.value);\n    case \"number\":\n      return numberValue(token.value);\n    case \"string\":\n      return stringValue(token.name, token.value, token.originType);\n    default:\n      return \"null\";\n  }\n};\n\nexport const translateScss = (variables: ZeytalTokens.TransformedTokensArray) =>\n  variables.reduce(\n    (acc, item) => `${acc}${formatName(item.name)}: ${formatValue(item)};\\n`,\n    \"\",\n  );\n","import type { ZeytalTokens } from \"@zeytal/types\";\n\nimport { camelize } from \"@endgame/utils/camelize\";\n\nimport { variableAliasKeyword } from \"../../utils/tokens.ts\";\n\nconst formatName = (name: ZeytalTokens.TransformedToken[\"name\"]) => {\n  return `${camelize(name)}`;\n};\n\nconst booleanValue = (boolean: boolean) => `${boolean}`;\n\nconst numberValue = (number: number) => number.toString();\n\nconst stringValue = (string: string) => {\n  return string.startsWith(variableAliasKeyword)\n    ? formatName(string.replace(variableAliasKeyword, \"\"))\n    : `\"${string}\"`;\n};\n\nconst formatValue = (value: ZeytalTokens.TransformedToken[\"value\"]): string => {\n  switch (typeof value) {\n    case \"boolean\":\n      return booleanValue(value);\n    case \"number\":\n      return numberValue(value);\n    case \"string\":\n      return stringValue(value);\n    default:\n      return \"null\";\n  }\n};\n\nexport const translateTs = (variables: ZeytalTokens.TransformedTokensArray) =>\n  variables.reduce((acc, item) => {\n    return `${acc}export const ${formatName(item.name)} = ${formatValue(item.value)};\\n`;\n  }, \"\");\n","export const checkStringRegExpMatch = (patternString: string, text: string) => {\n  if (typeof patternString !== \"string\") return false;\n  const matcher = new RegExp(patternString);\n  return matcher.test(text);\n};\n","import type { ValueOf } from \"@endgame/utils/types\";\nimport type { ZeytalCLIPureConfig } from \"@zeytal/kit\";\nimport type { ZeytalTokens } from \"@zeytal/types\";\n\nimport { checkStringRegExpMatch } from \"../../utils/regexp.ts\";\nimport {\n  styleNameStartKeyword,\n  variableAliasKeyword,\n  varNameStartKeyword,\n} from \"../../utils/tokens.ts\";\n\ntype ZeytalConfigTwNamespaceKey =\n  keyof ZeytalCLIPureConfig[\"tailwind\"][\"namespaces\"];\n\ntype ZeytalConfigTwNamespaceConfig =\n  ZeytalCLIPureConfig[\"tailwind\"][\"namespaces\"][ZeytalConfigTwNamespaceKey];\n\ntype FilteredTokensSpaces = {\n  zeytalTwRoot: ZeytalTokens.TransformedTokensArray; // Specific prop naming to avoid clashing w/ users modes\n  zeytalTwTheme: ZeytalTokens.TransformedTokensArray; // Specific prop naming to avoid clashing w/ users modes\n  [x: string]: ZeytalTokens.TransformedTokensArray;\n};\n\nconst configToTwNamespacePrefixes: Record<ZeytalConfigTwNamespaceKey, string> =\n  {\n    fontFamily: \"font-\",\n    fontSize: \"text-\",\n    fontWeight: \"font-weight-\",\n    letterSpacing: \"tracking-\",\n    lineHeight: \"leading-\",\n    color: \"color-\",\n    spacing: \"spacing-\",\n    breakpoint: \"breakpoint-\",\n    container: \"container-\",\n    radius: \"radius-\",\n    shadow: \"shadow-\",\n    insetShadow: \"inset-shadow-\",\n    dropShadow: \"drop-shadow-\",\n    blur: \"blur-\",\n    perspective: \"perspective-\",\n    aspect: \"aspect-\",\n    ease: \"ease-\",\n    animate: \"animate-\",\n  };\n\nlet twNamespacesConfig: [string, ZeytalConfigTwNamespaceConfig][];\n\nlet twGlobalRewriteTokenNames: [\n  string,\n  ZeytalCLIPureConfig[\"tailwind\"][\"globalRewriteTokenNames\"][string],\n][];\n\nconst formatName = (\n  userConfig: ZeytalCLIPureConfig,\n  name: ZeytalTokens.TransformedToken[\"name\"],\n  namespaceMapName: boolean,\n) => {\n  const tokensPrefix =\n    typeof userConfig.tailwind.tokensPrefix === \"string\"\n      ? userConfig.tailwind.tokensPrefix\n      : \"\";\n\n  // Replacing the var/style prefix to avoid lengthy token names when using tailwind\n  let formattedName = name\n    .replace(varNameStartKeyword, \"\")\n    .replace(styleNameStartKeyword, \"\");\n\n  // Strip token name based on globalTokenNamesStrip strings\n  formattedName = userConfig.tailwind.globalStripTokenNames.reduce(\n    (acc, matcherStr) => acc.replace(new RegExp(matcherStr), \"\"),\n    formattedName,\n  );\n\n  // Rewrite token name based on globalRewriteTokenNames strings\n  formattedName = twGlobalRewriteTokenNames.reduce(\n    (acc, [matcherStr, replacementStr]) =>\n      acc.replace(new RegExp(matcherStr), replacementStr),\n    formattedName,\n  );\n\n  if (namespaceMapName) {\n    twNamespacesConfig.forEach((namespace) => {\n      const [namespaceKey, namespaceConfig] = namespace as [\n        ZeytalConfigTwNamespaceKey,\n        ZeytalConfigTwNamespaceConfig,\n      ];\n\n      const twNamespacePrefix = configToTwNamespacePrefixes[namespaceKey];\n\n      namespaceConfig.tokensMapping.forEach((mappingMatcherStr) => {\n        if (checkStringRegExpMatch(mappingMatcherStr, formattedName)) {\n          // Strip token name based on namespaced stripTokenNames strings\n          formattedName = namespaceConfig.stripTokenNames.reduce(\n            (acc, matcherStr) => acc.replace(new RegExp(matcherStr), \"\"),\n            formattedName,\n          );\n\n          // Rewrite token name based on namespaced rewriteTokenNames strings\n          formattedName = Object.entries(\n            namespaceConfig.rewriteTokenNames,\n          ).reduce(\n            (acc, [matcherStr, replacementStr]) =>\n              acc.replace(new RegExp(matcherStr), replacementStr),\n            formattedName,\n          );\n\n          formattedName = twNamespacePrefix + tokensPrefix + formattedName;\n        }\n      });\n    });\n  } else {\n    formattedName = tokensPrefix + formattedName;\n  }\n\n  return `--${formattedName}`;\n};\n\nconst booleanValue = (boolean: boolean) => `${boolean}`;\n\nconst numberValue = (number: number) => number.toString();\n\nconst stringValue = (\n  userConfig: ZeytalCLIPureConfig,\n  name: string,\n  value: string,\n  originType: ZeytalTokens.TransformedToken[\"originType\"],\n) => {\n  let cleanString = value;\n\n  if (value.startsWith(variableAliasKeyword)) {\n    cleanString = `var(${formatName(userConfig, value.replace(variableAliasKeyword, \"\"), false)})`;\n  } else if (\n    originType === \"STRING\" ||\n    (originType === \"TEXT\" && name.endsWith(\"font-family\"))\n  ) {\n    cleanString = `\"${value}\"`;\n  } else {\n    cleanString = value === \"\" ? '\"\"' : value;\n  }\n\n  return cleanString;\n};\n\nconst formatValue = (\n  userConfig: ZeytalCLIPureConfig,\n  token: ZeytalTokens.TransformedToken,\n): string => {\n  switch (typeof token.value) {\n    case \"boolean\":\n      return booleanValue(token.value);\n    case \"number\":\n      return numberValue(token.value);\n    case \"string\":\n      return stringValue(userConfig, token.name, token.value, token.originType);\n    default:\n      return \"null\";\n  }\n};\n\nconst filterTokensBySpaces = (\n  userConfig: ZeytalCLIPureConfig,\n  tokens: ZeytalTokens.TransformedTokensArray,\n) => {\n  const tokensMapping = twNamespacesConfig.flatMap(([, v]) => v.tokensMapping);\n\n  const filteredTokens = tokens.reduce(\n    (acc, token) => {\n      const tokenCopy = JSON.parse(JSON.stringify(token));\n\n      // Ignore tokens globally based on globalIgnoreTokenNames strings\n      const shouldIgnore =\n        userConfig.tailwind.globalIgnoreTokenNames.filter((matcherStr) =>\n          checkStringRegExpMatch(matcherStr, tokenCopy.name),\n        ).length > 0;\n\n      if (shouldIgnore) {\n        return acc;\n      }\n\n      const globalModeName = userConfig.tailwind.globalModes.reduce(\n        (acc1, modeKeywords) => {\n          const keywordMatch = modeKeywords.reduce(\n            (acc2, keyword) =>\n              tokenCopy.name.endsWith(keyword) ? keyword : acc2,\n            \"\",\n          );\n\n          return keywordMatch === \"\" ? acc1 : keywordMatch;\n        },\n        \"\",\n      );\n\n      // Place tokens in the right tailwind properties category: :root or @theme\n      const isThemeToken =\n        tokensMapping.filter((matcherStr) =>\n          checkStringRegExpMatch(matcherStr, tokenCopy.name),\n        ).length > 0;\n\n      const fileTokenDefSpace =\n        globalModeName !== \"\"\n          ? globalModeName\n          : isThemeToken\n            ? \"zeytalTwTheme\"\n            : \"zeytalTwRoot\";\n\n      // Remove the mode from the token name if one is detected\n      if (globalModeName !== \"\") {\n        tokenCopy.name = tokenCopy.name.replace(globalModeName, \"\");\n      }\n\n      // Push the token def to the right space\n      if (!acc[fileTokenDefSpace]) {\n        acc[fileTokenDefSpace] = [];\n      }\n      acc[fileTokenDefSpace].push(tokenCopy);\n\n      // If the token belongs to a specific mode and to tailwind theme namespaces,\n      // add it to both so @theme references the css var defined in its mode\n      if (globalModeName !== \"\" && isThemeToken) {\n        let tokenValue = tokenCopy.value;\n        if (isThemeToken) {\n          // Add the theme token with a ref its mode css var\n          tokenValue = `${variableAliasKeyword}${tokenCopy.name}`;\n        }\n\n        acc.zeytalTwTheme.push({ ...tokenCopy, value: tokenValue });\n      }\n\n      return acc;\n    },\n    {\n      zeytalTwRoot: [],\n      zeytalTwTheme: [],\n    } as FilteredTokensSpaces,\n  );\n\n  // Removing duplicates from the theme tokens array\n  filteredTokens.zeytalTwTheme = Array.from(\n    new Map(\n      filteredTokens.zeytalTwTheme.map((item) => [item.name, item]),\n    ).values(),\n  );\n\n  return filteredTokens;\n};\n\nconst makeTokenSpaces = (\n  userConfig: ZeytalCLIPureConfig,\n  tokensModeKey: string,\n  tokensModeSpace: ValueOf<FilteredTokensSpaces>,\n) => {\n  const cleanedUpModeKey = tokensModeKey.replace(/^-+|-+$/g, \"\"); // Remove leading and trailing hyphens\n  const shouldNamespaceMapName = tokensModeKey === \"zeytalTwTheme\";\n  const doubleSpaceChars = \"  \";\n  let spaceDefStart = \"\";\n  let spaceDefEnd = \"\";\n  let defSpace = \"\";\n\n  if (tokensModeKey === \"zeytalTwRoot\") {\n    spaceDefStart = \":root {\\n\";\n    spaceDefEnd = \"\\n}\";\n  } else if (tokensModeKey === \"zeytalTwTheme\") {\n    spaceDefStart = \"@theme {\\n\";\n    spaceDefEnd = \"\\n}\";\n  } else {\n    spaceDefStart = `.${cleanedUpModeKey} {\\n`;\n    spaceDefEnd = \"\\n}\";\n  }\n\n  const spaceLines = tokensModeSpace\n    .map((token) => {\n      return `${doubleSpaceChars}${formatName(userConfig, token.name, shouldNamespaceMapName)}: ${formatValue(userConfig, token)};`;\n    })\n    .join(\"\\n\");\n\n  defSpace = `${spaceDefStart}${spaceLines}${spaceDefEnd}`;\n\n  return defSpace;\n};\n\nexport const translateTwV4 = (\n  tokens: ZeytalTokens.TransformedTokensArray,\n  userConfig: ZeytalCLIPureConfig,\n) => {\n  twNamespacesConfig = Object.entries(userConfig.tailwind.namespaces);\n  twGlobalRewriteTokenNames = Object.entries(\n    userConfig.tailwind.globalRewriteTokenNames,\n  );\n\n  const tokensSpaces = filterTokensBySpaces(userConfig, tokens);\n\n  const tokensSpacesEntries = Object.entries(tokensSpaces).sort(\n    ([tokensModeKeyA], [tokensModeKeyB]) => {\n      // Put zeytalTwRoot first\n      if (tokensModeKeyA === \"zeytalTwRoot\") return -1;\n      if (tokensModeKeyB === \"zeytalTwRoot\") return 1;\n\n      // Put zeytalTwTheme last\n      if (tokensModeKeyA === \"zeytalTwTheme\") return 1;\n      if (tokensModeKeyB === \"zeytalTwTheme\") return -1;\n\n      // Preserve original order for non-special keys\n      return 0;\n    },\n  );\n\n  return tokensSpacesEntries\n    .map(([tokensModeKey, tokensModeSpaces]) =>\n      makeTokenSpaces(userConfig, tokensModeKey, tokensModeSpaces),\n    )\n    .join(\"\\n\\n\");\n};\n","import type { ZeytalCLIPureConfig } from \"@zeytal/kit\";\nimport type { ZeytalTokens } from \"@zeytal/types\";\n\nimport { translateCjs } from \"../core/translators/cjs.ts\";\nimport { translateCss } from \"../core/translators/css.ts\";\nimport { translateEsm } from \"../core/translators/esm.ts\";\nimport { translateJson } from \"../core/translators/json.ts\";\nimport { translateLess } from \"../core/translators/less.ts\";\nimport { translateSass } from \"../core/translators/sass.ts\";\nimport { translateScss } from \"../core/translators/scss.ts\";\nimport { translateTs } from \"../core/translators/ts.ts\";\nimport { translateTwV4 } from \"../core/translators/tw4.ts\";\n\nconst authorizedTranslations: ZeytalCLIPureConfig[\"styles\"][\"formats\"][\"targets\"] =\n  [\"tw\", \"ts\", \"esm\", \"cjs\", \"json\", \"css\", \"scss\", \"sass\", \"less\"];\n\nconst translationsFilesBasenames = {\n  twV4: \"styles-tw\",\n  twV3: \"styles-tw\",\n  ts: \"styles\",\n  esm: \"styles\",\n  cjs: \"styles\",\n  json: \"styles\",\n  css: \"styles\",\n  scss: \"styles\",\n  sass: \"styles\",\n  less: \"styles\",\n};\n\nconst translationsFilesExtensions = {\n  twV4: \"css\",\n  twV3: \"js\",\n  ts: \"ts\",\n  esm: \"mjs\",\n  cjs: \"cjs\",\n  json: \"json\",\n  css: \"css\",\n  scss: \"scss\",\n  sass: \"sass\",\n  less: \"less\",\n};\n\nconst authorizedTranslationsFilter = (\n  target: ZeytalCLIPureConfig[\"styles\"][\"formats\"][\"targets\"][number],\n) => authorizedTranslations.includes(target);\n\nconst getTranslationFilename = (\n  target: ZeytalCLIPureConfig[\"styles\"][\"formats\"][\"targets\"][number],\n) => {\n  let filename;\n  switch (target) {\n    case \"tw\":\n      filename = `${translationsFilesBasenames.twV4}.${translationsFilesExtensions.twV4}`;\n      break;\n    case \"ts\":\n      filename = `${translationsFilesBasenames.ts}.${translationsFilesExtensions.ts}`;\n      break;\n    case \"esm\":\n      filename = `${translationsFilesBasenames.esm}.${translationsFilesExtensions.esm}`;\n      break;\n    case \"cjs\":\n      filename = `${translationsFilesBasenames.cjs}.${translationsFilesExtensions.cjs}`;\n      break;\n    case \"json\":\n      filename = `${translationsFilesBasenames.json}.${translationsFilesExtensions.json}`;\n      break;\n    case \"css\":\n      filename = `${translationsFilesBasenames.css}.${translationsFilesExtensions.css}`;\n      break;\n    case \"scss\":\n      filename = `${translationsFilesBasenames.scss}.${translationsFilesExtensions.scss}`;\n      break;\n    case \"sass\":\n      filename = `${translationsFilesBasenames.sass}.${translationsFilesExtensions.sass}`;\n      break;\n    case \"less\":\n      filename = `${translationsFilesBasenames.less}.${translationsFilesExtensions.less}`;\n      break;\n    default:\n      filename = \"\";\n      break;\n  }\n\n  return filename;\n};\n\nconst translateStylesInTargetLanguage = (\n  target: ZeytalCLIPureConfig[\"styles\"][\"formats\"][\"targets\"][number],\n  userConfig: ZeytalCLIPureConfig,\n  styles: ZeytalTokens.TransformedTokensArray,\n) => {\n  switch (target) {\n    case \"tw\":\n      return translateTwV4(styles, userConfig);\n    case \"ts\":\n      return translateTs(styles);\n    case \"esm\":\n      return translateEsm(styles);\n    case \"cjs\":\n      return translateCjs(styles);\n    case \"json\":\n      return translateJson(styles);\n    case \"css\":\n      return translateCss(styles);\n    case \"scss\":\n      return translateScss(styles);\n    case \"sass\":\n      return translateSass(styles);\n    case \"less\":\n      return translateLess(styles);\n    default:\n      return \"\";\n  }\n};\n\nexport const translateStyles = (\n  styles: ZeytalTokens.TransformedTokensArray,\n  userConfig: ZeytalCLIPureConfig,\n) => {\n  const { targets } = userConfig.styles.formats;\n\n  const authorizedTargets = [...new Set(targets)].filter(\n    authorizedTranslationsFilter,\n  ) as ZeytalCLIPureConfig[\"styles\"][\"formats\"][\"targets\"];\n\n  // Make an object initialized with targets as key and an empty object as value for the soon to be translated styles values.\n  const transformedValuesByTarget = Object.assign(\n    {},\n    ...authorizedTargets.map((target) => ({\n      [getTranslationFilename(target)]: {},\n    })),\n  ) as Record<string, string>;\n\n  authorizedTargets.forEach((target) => {\n    transformedValuesByTarget[getTranslationFilename(target)] =\n      translateStylesInTargetLanguage(target, userConfig, styles);\n  });\n\n  return transformedValuesByTarget;\n};\n","import type { ZeytalCLIPureConfig } from \"@zeytal/kit\";\nimport type { FigmaPluginApi, ZeytalTokens } from \"@zeytal/types\";\n\nimport { toKebabCase } from \"@endgame/utils/toKebabCase\";\n\nimport { variableAliasKeyword, varNameStartKeyword } from \"../utils/tokens.ts\";\n\nconst flattenVariables = (\n  figmaVariablesExportsStrings: string[],\n  userConfig: ZeytalCLIPureConfig,\n) => {\n  const flatVarsStructure: ZeytalTokens.FlatVarsStructure = {};\n\n  for (const varsExportString of figmaVariablesExportsStrings) {\n    if (!varsExportString) continue;\n\n    const varsExport: ZeytalTokens.FigmaVariableCollections =\n      JSON.parse(varsExportString);\n\n    varsExport.forEach((collection) => {\n      const { name: collectionName, modes } = collection;\n\n      if (\n        !!userConfig.variables.collectionsIgnorePrefix &&\n        typeof userConfig.variables.collectionsIgnorePrefix === \"string\" &&\n        collectionName.startsWith(userConfig.variables.collectionsIgnorePrefix)\n      ) {\n        return;\n      }\n\n      modes.forEach((mode) => {\n        const { name: modeName, variables } = mode;\n\n        variables.forEach((variable) => {\n          const {\n            id: varId,\n            name: variableName,\n            resolvedType,\n            value,\n          } = variable;\n\n          if (!value) {\n            return;\n          }\n\n          const varNameCollection = `${\n            collectionName.replace(/^[^a-zA-Z]+/, \"\") // No starting digit or special chars in collection names\n          }-`;\n          const varNameMode = modes.length > 1 ? `-${modeName}` : \"\";\n          const varNameOriginal = variableName;\n\n          const structuredVariableName = toKebabCase(\n            `${varNameStartKeyword}${varNameCollection}${varNameOriginal}${varNameMode}`,\n          );\n\n          if (\n            typeof value === \"string\" ||\n            typeof value === \"boolean\" ||\n            typeof value === \"number\"\n          ) {\n            // Is a string, boolean or number variable\n            flatVarsStructure[structuredVariableName] = {\n              id: varId,\n              varType: resolvedType,\n              modeName: modes.length > 1 ? modeName : undefined,\n              value,\n            };\n          } else if (\n            typeof value === \"object\" &&\n            value !== null &&\n            Object.hasOwn(value, \"r\") &&\n            Object.hasOwn(value, \"g\") &&\n            Object.hasOwn(value, \"b\")\n          ) {\n            // Is a rgb or rgba color variable\n            flatVarsStructure[structuredVariableName] = {\n              id: varId,\n              varType: resolvedType,\n              modeName: modes.length > 1 ? modeName : undefined,\n              value,\n            };\n          } else if (\n            typeof value === \"object\" &&\n            value !== null &&\n            Object.hasOwn(value, \"type\") &&\n            Object.hasOwn(value, \"id\")\n          ) {\n            const val = value as FigmaPluginApi.VariableAlias;\n            if (val.type !== \"VARIABLE_ALIAS\") {\n              return;\n            }\n\n            // Is an aliased variable\n            flatVarsStructure[structuredVariableName] = {\n              id: varId,\n              varType: resolvedType,\n              modeName: modes.length > 1 ? modeName : undefined,\n              value: val,\n            };\n          }\n        });\n      });\n    });\n  }\n\n  return flatVarsStructure;\n};\n\nconst getVarsAndAliasesModeVariants = (\n  varEntries: [string, ZeytalTokens.FlatVar][],\n  currentVarData: ZeytalTokens.FlatVar,\n  parentDepthLevel = 0,\n): {\n  modeName: string;\n  value: FigmaPluginApi.VariableValue;\n}[] => {\n  const currentDepthLevel = parentDepthLevel + 1;\n  const varValue = currentVarData.value as FigmaPluginApi.VariableAlias;\n  const currentVarModeName = currentVarData.modeName\n    ? `-${toKebabCase(currentVarData.modeName)}`\n    : \"\";\n\n  if (\n    typeof varValue === \"object\" &&\n    varValue !== null &&\n    Object.hasOwn(varValue, \"type\") &&\n    varValue.type === \"VARIABLE_ALIAS\" &&\n    !!varValue.id\n  ) {\n    const aliases = varEntries.filter(([, { id }]) => id === varValue.id);\n\n    return aliases.flatMap(([, aliasData]) => {\n      const aliasedModesAndVals = getVarsAndAliasesModeVariants(\n        varEntries,\n        aliasData,\n        currentDepthLevel,\n      ).map(({ modeName: chainedModes, value }) => {\n        const modeToAdd = currentDepthLevel > 1 ? currentVarModeName : \"\";\n\n        return {\n          modeName: modeToAdd + chainedModes,\n          value,\n        };\n      });\n\n      return aliasedModesAndVals;\n    });\n  } else {\n    return [\n      {\n        modeName: currentVarModeName,\n        value: currentVarData.value,\n      },\n    ];\n  }\n};\n\nconst modeAndAliasVariablesNames = (\n  flatVarsStructure: ZeytalTokens.FlatVarsStructure,\n) => {\n  const varEntries = Object.entries(flatVarsStructure);\n  const aliasedStructure: ZeytalTokens.FlatVarsStructure = {};\n\n  varEntries.forEach(([currentVarName, currentVarData]) => {\n    const varValue = currentVarData.value as FigmaPluginApi.VariableAlias;\n\n    if (\n      typeof varValue === \"object\" &&\n      varValue !== null &&\n      Object.hasOwn(varValue, \"type\") &&\n      varValue.type === \"VARIABLE_ALIAS\" &&\n      !!varValue.id\n    ) {\n      const aliases = getVarsAndAliasesModeVariants(varEntries, currentVarData);\n\n      aliases.forEach((alias) => {\n        aliasedStructure[currentVarName + alias.modeName] = {\n          ...currentVarData,\n          value: alias.value,\n        };\n      });\n    } else {\n      aliasedStructure[currentVarName] = currentVarData;\n    }\n  });\n\n  return aliasedStructure;\n};\n\nconst sortVariables = (flatVarsStructure: ZeytalTokens.FlatVarsStructure) => {\n  const varEntries = Object.entries(flatVarsStructure);\n\n  // Create a dependency graph to track which variables reference others\n  const dependencyGraph: Record<string, string[]> = {};\n\n  // Build the dependency graph\n  varEntries.forEach(([varName, varData]) => {\n    const { value } = varData;\n    if (typeof value === \"string\" && value.startsWith(variableAliasKeyword)) {\n      const referencedVar = value.replace(variableAliasKeyword, \"\");\n\n      // Initialize arrays if they don't exist\n      if (!dependencyGraph[varName]) {\n        dependencyGraph[varName] = [];\n      }\n\n      // IMPORTANT: The variable depends on the referenced variable\n      // not the other way around\n      dependencyGraph[varName].push(referencedVar);\n    }\n  });\n\n  // Topological sort\n  const visited = new Set<string>();\n  const temp = new Set<string>(); // For cycle detection\n  const result: ZeytalTokens.ProcessedVarsArray = [];\n\n  function visit(name: string) {\n    // Skip if already visited\n    if (visited.has(name)) return;\n    // Check for cycles (not strictly necessary as you mentioned)\n    if (temp.has(name)) return;\n\n    temp.add(name);\n\n    // Visit all dependencies first\n    const dependencies = dependencyGraph[name] || [];\n    for (const dependency of dependencies) {\n      visit(dependency);\n    }\n\n    temp.delete(name);\n    visited.add(name);\n\n    // Add to result\n    if (flatVarsStructure[name]) {\n      result.push({ ...flatVarsStructure[name], name });\n    }\n  }\n\n  // Visit all nodes\n  Object.keys(flatVarsStructure).forEach((name) => {\n    if (!visited.has(name)) {\n      visit(name);\n    }\n  });\n\n  // The result is in reverse topological order (dependencies first)\n  // This is what we want - variables come before the variables that reference them\n  return result;\n};\n\nfunction verifySorting(sortedVars: ZeytalTokens.ProcessedVarsArray): boolean {\n  const varPositions: Record<string, number> = {};\n\n  // Record the position of each variable\n  sortedVars.forEach((varData, index) => {\n    varPositions[varData.name] = index;\n  });\n\n  // Check that each alias comes after its referenced variable\n  for (let i = 0; i < sortedVars.length; i++) {\n    const varData = sortedVars[i];\n\n    if (!varData) continue;\n\n    if (\n      typeof varData.value === \"string\" &&\n      varData.value.startsWith(variableAliasKeyword)\n    ) {\n      const referencedVar = varData.value.replace(variableAliasKeyword, \"\");\n      if (referencedVar in varPositions) {\n        if (!varPositions[referencedVar]) continue;\n\n        if (varPositions[referencedVar] > i) {\n          console.warn(\n            `Sorting error: ${varData.name} at position ${i} references ${referencedVar} at position ${varPositions[referencedVar]}`,\n          );\n          return false;\n        }\n      }\n    }\n  }\n\n  return true;\n}\n\nexport const makeVariablesStructure = (\n  figmaVariablesExportsStrings: string[],\n  userConfig: ZeytalCLIPureConfig,\n) => {\n  const flatVarsStructure = flattenVariables(\n    figmaVariablesExportsStrings,\n    userConfig,\n  );\n\n  const modedAndAliasedVarsNamesStructure =\n    modeAndAliasVariablesNames(flatVarsStructure);\n\n  const sortedVars = sortVariables(modedAndAliasedVarsNamesStructure);\n\n  verifySorting(sortedVars);\n\n  return sortedVars;\n};\n","import type { ZeytalCLIPureConfig } from \"@zeytal/kit\";\nimport type { FigmaPluginApi, ZeytalTokens } from \"@zeytal/types\";\n\nimport { roundNumber } from \"@endgame/utils/roundNumber\";\n\nimport { paintToSelectedFormat } from \"../utils/colors.ts\";\nimport { fontValToPx, fontValToRem } from \"../utils/font.ts\";\nimport { checkStringRegExpMatch } from \"../utils/regexp.ts\";\n\nexport const transformVariablesValues = (\n  variables: ZeytalTokens.ProcessedVarsArray,\n  userConfig: ZeytalCLIPureConfig,\n) => {\n  const transformedVars: ZeytalTokens.TransformedTokensArray = variables\n    .map(({ name, varType, value }) => {\n      let varTransformedValue = undefined;\n\n      if (typeof value === \"boolean\") {\n        varTransformedValue = value;\n      } else if (\n        varType === \"COLOR\" &&\n        typeof value === \"object\" &&\n        Object.hasOwn(value, \"r\") &&\n        Object.hasOwn(value, \"g\") &&\n        Object.hasOwn(value, \"b\")\n      ) {\n        const tempVal = { ...(value as FigmaPluginApi.RGBA) };\n        tempVal.a = tempVal.a ?? 1;\n\n        varTransformedValue = paintToSelectedFormat(\n          userConfig.variables.formats.colors,\n          tempVal,\n        );\n      } else if (typeof value === \"number\") {\n        const { format: numberFormats } = userConfig.variables.formats.numbers;\n\n        let valueWithUnit = \"\";\n        numberFormats.forEach(({ mapping, unit }) => {\n          if (valueWithUnit.endsWith(unit)) {\n            return;\n          }\n\n          mapping.forEach((matcherStr) => {\n            if (checkStringRegExpMatch(matcherStr, name)) {\n              if (unit === \"rem\") {\n                valueWithUnit = fontValToRem(value);\n              } else if (unit === \"px\") {\n                valueWithUnit = fontValToPx(value);\n              }\n            }\n          });\n        });\n\n        varTransformedValue =\n          valueWithUnit !== \"\" ? valueWithUnit : roundNumber(value, 5);\n      } else if (typeof value === \"string\") {\n        varTransformedValue = value;\n      }\n\n      return varTransformedValue\n        ? { name, value: varTransformedValue, originType: varType }\n        : undefined;\n    })\n    .filter((v) => !!v);\n\n  return transformedVars;\n};\n","import type { ZeytalCLIPureConfig } from \"@zeytal/kit\";\nimport type { ZeytalTokens } from \"@zeytal/types\";\n\nimport { translateCjs } from \"../core/translators/cjs.ts\";\nimport { translateCss } from \"../core/translators/css.ts\";\nimport { translateEsm } from \"../core/translators/esm.ts\";\nimport { translateJson } from \"../core/translators/json.ts\";\nimport { translateLess } from \"../core/translators/less.ts\";\nimport { translateSass } from \"../core/translators/sass.ts\";\nimport { translateScss } from \"../core/translators/scss.ts\";\nimport { translateTs } from \"../core/translators/ts.ts\";\nimport { translateTwV4 } from \"../core/translators/tw4.ts\";\n\nconst authorizedTranslations: ZeytalCLIPureConfig[\"variables\"][\"formats\"][\"targets\"] =\n  [\"tw\", \"ts\", \"esm\", \"cjs\", \"json\", \"css\", \"scss\", \"sass\", \"less\"];\n\nconst translationsFilesBasenames = {\n  twV4: \"variables-tw\",\n  ts: \"variables\",\n  esm: \"variables\",\n  cjs: \"variables\",\n  json: \"variables\",\n  css: \"variables\",\n  scss: \"variables\",\n  sass: \"variables\",\n  less: \"variables\",\n};\n\nconst translationsFilesExtensions = {\n  twV4: \"css\",\n  ts: \"ts\",\n  esm: \"mjs\",\n  cjs: \"cjs\",\n  json: \"json\",\n  css: \"css\",\n  scss: \"scss\",\n  sass: \"sass\",\n  less: \"less\",\n};\n\nconst authorizedTranslationsFilter = (\n  target: ZeytalCLIPureConfig[\"variables\"][\"formats\"][\"targets\"][number],\n) => authorizedTranslations.includes(target);\n\nconst getTranslationFilename = (\n  target: ZeytalCLIPureConfig[\"variables\"][\"formats\"][\"targets\"][number],\n) => {\n  let filename;\n  switch (target) {\n    case \"tw\":\n      filename = `${translationsFilesBasenames.twV4}.${translationsFilesExtensions.twV4}`;\n      break;\n    case \"ts\":\n      filename = `${translationsFilesBasenames.ts}.${translationsFilesExtensions.ts}`;\n      break;\n    case \"esm\":\n      filename = `${translationsFilesBasenames.esm}.${translationsFilesExtensions.esm}`;\n      break;\n    case \"cjs\":\n      filename = `${translationsFilesBasenames.cjs}.${translationsFilesExtensions.cjs}`;\n      break;\n    case \"json\":\n      filename = `${translationsFilesBasenames.json}.${translationsFilesExtensions.json}`;\n      break;\n    case \"css\":\n      filename = `${translationsFilesBasenames.css}.${translationsFilesExtensions.css}`;\n      break;\n    case \"scss\":\n      filename = `${translationsFilesBasenames.scss}.${translationsFilesExtensions.scss}`;\n      break;\n    case \"sass\":\n      filename = `${translationsFilesBasenames.sass}.${translationsFilesExtensions.sass}`;\n      break;\n    case \"less\":\n      filename = `${translationsFilesBasenames.less}.${translationsFilesExtensions.less}`;\n      break;\n    default:\n      filename = \"\";\n      break;\n  }\n\n  return filename;\n};\n\nconst translateVarsInTargetLanguage = (\n  target: ZeytalCLIPureConfig[\"variables\"][\"formats\"][\"targets\"][number],\n  userConfig: ZeytalCLIPureConfig,\n  variables: ZeytalTokens.TransformedTokensArray,\n) => {\n  let translation;\n  switch (target) {\n    case \"tw\":\n      translation = translateTwV4(variables, userConfig);\n      break;\n    case \"ts\":\n      translation = translateTs(variables);\n      break;\n    case \"esm\":\n      translation = translateEsm(variables);\n      break;\n    case \"cjs\":\n      translation = translateCjs(variables);\n      break;\n    case \"json\":\n      translation = translateJson(variables);\n      break;\n    case \"css\":\n      translation = translateCss(variables);\n      break;\n    case \"scss\":\n      translation = translateScss(variables);\n      break;\n    case \"sass\":\n      translation = translateSass(variables);\n      break;\n    case \"less\":\n      translation = translateLess(variables);\n      break;\n    default:\n      translation = \"\";\n      break;\n  }\n\n  return translation;\n};\n\nexport const translateVariables = (\n  variables: ZeytalTokens.TransformedTokensArray,\n  userConfig: ZeytalCLIPureConfig,\n) => {\n  const { targets } = userConfig.variables.formats;\n\n  const authorizedTargets = [...new Set(targets)].filter(\n    authorizedTranslationsFilter,\n  ) as ZeytalCLIPureConfig[\"variables\"][\"formats\"][\"targets\"];\n\n  // Make an object initialized with targets as key and an empty object as value for the soon to be translated variables values.\n  const transformedValuesByTarget = Object.assign(\n    {},\n    ...authorizedTargets.map((target) => ({\n      [getTranslationFilename(target)]: {},\n    })),\n  ) as Record<string, string>;\n\n  authorizedTargets.forEach((target) => {\n    transformedValuesByTarget[getTranslationFilename(target)] =\n      translateVarsInTargetLanguage(target, userConfig, variables);\n  });\n\n  return transformedValuesByTarget;\n};\n","import type { FigmaFilesAPIData } from \"@/src/types/index.ts\";\nimport type { ZeytalCLIPureConfig } from \"@zeytal/kit\";\nimport type { ZeytalApi } from \"@zeytal/types\";\nimport type { OptionValues } from \"commander\";\n\nimport * as path from \"node:path\";\n\nimport { zeytalDefaultConfig } from \"@zeytal/kit\";\nimport { projectTokenHeaderName } from \"@zeytal/kit/api\";\nimport {\n  getMappedStyles,\n  getNestedNodes,\n  makeStylesStructure,\n  transformStylesValues,\n  translateStyles,\n} from \"@zeytal/tokens\";\nimport { cyan, magenta } from \"colorette\";\nimport { Command } from \"commander\";\n\nimport { fetchFilesData, fetchFilesVersions } from \"@/src/lib/figma.ts\";\nimport { errorMessages } from \"@/src/utils/errors.ts\";\nimport { refreshFolder, writeFile } from \"@/src/utils/file-system.ts\";\nimport { getConfig } from \"@/src/utils/get-config.ts\";\nimport { getCWD } from \"@/src/utils/get-cwd.ts\";\nimport { getZeytalApiBaseUrl } from \"@/src/utils/get-zeytal-api-base-url.ts\";\nimport { icons } from \"@/src/utils/icons.ts\";\nimport { logger } from \"@/src/utils/logger.ts\";\n\nconst stylesActionCore = async (\n  commandOptions: OptionValues,\n  zeytalConfig: ZeytalCLIPureConfig,\n) => {\n  logger.log(`${magenta(icons.leftHalfCircle)} Styles fetching started...`);\n\n  logger.spinner().start(\"Assessing your configuration parameters...\");\n\n  const zeytalAPIBaseUrl = getZeytalApiBaseUrl();\n\n  logger.debug(\"Getting user’s zeytal project data and figma files list.\");\n\n  const figmaStylesAPIRes = await fetch(`${zeytalAPIBaseUrl}/api/styles`, {\n    method: \"GET\",\n    headers: {\n      \"Content-Type\": \"application/json\",\n      [projectTokenHeaderName]: zeytalConfig.projectToken ?? \"\",\n    },\n  }).catch(() => {\n    logger.spinner().fail();\n    throw errorMessages.zeytalApiError500();\n  });\n\n  const figmaStylesAPIData =\n    (await figmaStylesAPIRes.json()) as ZeytalApi.ApiResponse<FigmaFilesAPIData>;\n\n  if (!figmaStylesAPIData || !figmaStylesAPIData.success) {\n    logger.spinner().fail();\n    throw figmaStylesAPIData.message;\n  }\n\n  if (!figmaStylesAPIData.data || figmaStylesAPIData.data === null) {\n    logger.spinner().fail();\n    throw errorMessages.zeytalApiNoData();\n  }\n\n  logger.spinner().succeed();\n\n  logger\n    .spinner()\n    .start(\n      `Searching for the latest ${zeytalConfig.styles.figmaFilesVersion} version of your figma files...`,\n    );\n\n  if (!figmaStylesAPIData.data.projectData.figmaApiKey) {\n    logger.spinner().fail();\n    throw errorMessages.noFigmaApiKey({\n      projectName: figmaStylesAPIData.data.projectData.name,\n    });\n  }\n\n  // Get the right files versions\n  const filesWithVersion =\n    (await fetchFilesVersions(\n      figmaStylesAPIData.data.figmaFiles,\n      figmaStylesAPIData.data.projectData.figmaApiKey,\n      zeytalConfig,\n      \"styles\",\n    )) ?? [];\n\n  logger.spinner().succeed();\n\n  logger.spinner().start(\"Figma files fetching started...\");\n\n  const currentPagesBatchSize = zeytalConfig.styles.figmaFilesPagesBatchSize;\n  const cleanPagesBatchSize =\n    !currentPagesBatchSize ||\n    typeof currentPagesBatchSize !== \"number\" ||\n    currentPagesBatchSize <= 1\n      ? zeytalDefaultConfig.styles.figmaFilesPagesBatchSize\n      : currentPagesBatchSize;\n\n  logger.spinner().succeed();\n\n  // Get the pages in the Figma files that are not empty\n  const figmaFilesData = await fetchFilesData(\n    cleanPagesBatchSize,\n    filesWithVersion,\n    figmaStylesAPIData.data.projectData.figmaApiKey,\n  );\n\n  logger.spinner().start(\"Processing your figma files data...\");\n\n  logger.debug(\"Nesting Figma files nodes.\");\n  const nestedNodes = getNestedNodes(figmaFilesData);\n\n  logger.spinner().succeed();\n\n  logger.spinner().start(\"Extracting your styles...\");\n\n  logger.debug(\"Mapping Figma styles.\");\n  const mappedStyles = getMappedStyles(figmaFilesData, nestedNodes);\n\n  logger.debug(\"Structuring Figma styles.\");\n  const structuredStyles = makeStylesStructure(mappedStyles);\n\n  logger.spinner().succeed();\n\n  logger.spinner().start(\"Remodelling your styles values...\");\n\n  logger.debug(\"Transforming Figma styles values.\");\n  const transformedStyles = transformStylesValues(\n    structuredStyles,\n    zeytalConfig,\n  );\n\n  logger.spinner().succeed();\n\n  if (zeytalConfig.styles.formats.targets.length <= 0) {\n    logger.warn(\n      `${icons.warning} Your style's format target array is empty. No style translation will be performed.`,\n    );\n    return;\n  }\n\n  logger\n    .spinner()\n    .start(\n      `Translating your styles into ${[\n        ...new Set(zeytalConfig.styles.formats.targets),\n      ]\n        .map((t) => cyan(t))\n        .join(\", \")}.`,\n    );\n\n  logger.debug(\"Translating Figma styles.\");\n  const stylesFiles = translateStyles(transformedStyles, zeytalConfig);\n\n  logger.spinner().succeed();\n\n  logger.spinner().succeed(\"Styles extraction and remodelling done.\");\n\n  logger\n    .spinner()\n    .start(\n      `Writing styles files inside ${cyan(zeytalConfig.styles.directoryPath)}...`,\n    );\n\n  logger.debug(\"Refreshing styles directory.\");\n  await refreshFolder(\n    path.join(commandOptions.cwd, zeytalConfig.styles.directoryPath),\n  );\n\n  // Writing styles files\n  Object.entries(stylesFiles!).forEach(([fileName, fileContent]) => {\n    logger.debug(\"Writing styles file.\");\n    const writePath = path.join(\n      commandOptions.cwd,\n      zeytalConfig.styles.directoryPath,\n      fileName,\n    );\n    writeFile(writePath, fileContent);\n  });\n\n  logger\n    .spinner()\n    .succeed(\n      `All styles files written to ${cyan(zeytalConfig.styles.directoryPath)}`,\n    );\n};\n\nexport const stylesCmd = new Command()\n  .name(\"styles\")\n  .description(\"extract and transform Figma styles from your Figma files\")\n  .action(async (_, command) => {\n    logger.break();\n\n    const optsWithGlobals = command.optsWithGlobals();\n    logger.setDebugModeTo(optsWithGlobals.debug);\n\n    const options = { ...optsWithGlobals, cwd: getCWD(optsWithGlobals.cwd) };\n\n    logger.debug(\"Getting user’s zeytal CLI config.\");\n    const zeytalConfig = await getConfig(options.cwd);\n\n    try {\n      await stylesActionCore(options, zeytalConfig);\n    } catch (errorMessage) {\n      logger.error(errorMessage);\n      logger.break();\n      process.exit(1);\n    }\n  });\n","import type { FigmaVariablesExportsAPIData } from \"@/src/types/index.ts\";\nimport type { ZeytalCLIPureConfig } from \"@zeytal/kit\";\nimport type { ZeytalApi } from \"@zeytal/types\";\nimport type { OptionValues } from \"commander\";\n\nimport * as path from \"node:path\";\n\nimport { projectTokenHeaderName } from \"@zeytal/kit/api\";\nimport {\n  makeVariablesStructure,\n  transformVariablesValues,\n  translateVariables,\n} from \"@zeytal/tokens\";\nimport { cyan, magenta } from \"colorette\";\nimport { Command } from \"commander\";\n\nimport { errorMessages } from \"@/src/utils/errors.ts\";\nimport { refreshFolder, writeFile } from \"@/src/utils/file-system.ts\";\nimport { getConfig } from \"@/src/utils/get-config.ts\";\nimport { getCWD } from \"@/src/utils/get-cwd.ts\";\nimport { getZeytalApiBaseUrl } from \"@/src/utils/get-zeytal-api-base-url.ts\";\nimport { icons } from \"@/src/utils/icons.ts\";\nimport { logger } from \"@/src/utils/logger.ts\";\n\nconst variablesActionCore = async (\n  commandOptions: OptionValues,\n  zeytalConfig: ZeytalCLIPureConfig,\n) => {\n  logger.log(`${magenta(icons.leftHalfCircle)} Variables fetching started...`);\n\n  logger.spinner().start(\"Assessing your configuration parameters...\");\n\n  const zeytalAPIBaseUrl = getZeytalApiBaseUrl();\n\n  logger.debug(\"Getting user’s zeytal project data and figma files list.\");\n\n  const figmaVariablesAPIRes = await fetch(\n    `${zeytalAPIBaseUrl}/api/variables`,\n    {\n      method: \"GET\",\n      headers: {\n        \"Content-Type\": \"application/json\",\n        [projectTokenHeaderName]: zeytalConfig.projectToken ?? \"\",\n      },\n    },\n  ).catch(() => {\n    logger.spinner().fail();\n    throw errorMessages.zeytalApiError500();\n  });\n\n  const figmaVariablesAPIData =\n    (await figmaVariablesAPIRes.json()) as ZeytalApi.ApiResponse<FigmaVariablesExportsAPIData>;\n\n  if (!figmaVariablesAPIData || !figmaVariablesAPIData.success) {\n    logger.spinner().fail();\n    throw figmaVariablesAPIData.message;\n  }\n\n  if (!figmaVariablesAPIData.data || figmaVariablesAPIData.data === null) {\n    logger.spinner().fail();\n    throw errorMessages.zeytalApiNoData();\n  }\n\n  logger.spinner().succeed();\n\n  logger.spinner().start(\"Processing your Figma variables exports data...\");\n\n  logger.debug(\"Structuring Figma variables.\");\n  const structuredVariables = makeVariablesStructure(\n    figmaVariablesAPIData.data.figmaVariablesExports\n      .map((e) => e.variablesExportData)\n      .filter((e) => e !== null),\n    zeytalConfig,\n  );\n\n  logger.spinner().succeed();\n\n  logger.spinner().start(\"Remodelling your variables values...\");\n\n  logger.debug(\"Transforming Figma variables values.\");\n  const transformedVariables = transformVariablesValues(\n    structuredVariables,\n    zeytalConfig,\n  );\n\n  logger.spinner().succeed();\n\n  logger\n    .spinner()\n    .start(\n      `Translating your variables into ${[\n        ...new Set(zeytalConfig.variables.formats.targets),\n      ]\n        .map((t) => cyan(t))\n        .join(\", \")}.`,\n    );\n\n  logger.debug(\"Translating Figma variables.\");\n  const variablesFiles = translateVariables(transformedVariables, zeytalConfig);\n\n  logger.spinner().succeed();\n\n  logger.spinner().succeed(\"Variables remodelling and translation done.\");\n\n  logger\n    .spinner()\n    .start(\n      `Writing variables files inside ${cyan(zeytalConfig.variables.directoryPath)}...`,\n    );\n\n  logger.debug(\"Refreshing variables directory.\");\n  await refreshFolder(\n    path.join(commandOptions.cwd, zeytalConfig.variables.directoryPath),\n  );\n\n  // Writing variables files\n  Object.entries(variablesFiles).forEach(([fileName, fileContent]) => {\n    logger.debug(\"Writing variables file.\");\n    const writePath = path.join(\n      commandOptions.cwd,\n      zeytalConfig.variables.directoryPath,\n      fileName,\n    );\n    writeFile(writePath, fileContent);\n  });\n\n  logger\n    .spinner()\n    .succeed(\n      `All variables files written to ${cyan(zeytalConfig.variables.directoryPath)}`,\n    );\n};\n\nexport const variablesCmd = new Command()\n  .name(\"variables\")\n  .alias(\"vars\")\n  .description(\"extract and transform Figma variables from your Figma files\")\n  .action(async (_, command) => {\n    logger.break();\n\n    const optsWithGlobals = command.optsWithGlobals();\n    logger.setDebugModeTo(optsWithGlobals.debug);\n\n    const options = { ...optsWithGlobals, cwd: getCWD(optsWithGlobals.cwd) };\n\n    logger.debug(\"Getting user’s zeytal CLI config.\");\n    const zeytalConfig = await getConfig(options.cwd);\n\n    try {\n      await variablesActionCore(options, zeytalConfig);\n    } catch (errorMessage) {\n      logger.error(errorMessage);\n      logger.break();\n      process.exit(1);\n    }\n  });\n","import { Option } from \"commander\";\n\nexport const globalOptions = [\n  new Option(\"-d, --debug\", \"debug mode\").default(false, \"off\"),\n  new Option(\n    \"-c, --cwd <cwd>\",\n    \"the working directory. defaults to the current directory.\",\n  ).default(\".\"),\n];\n","import { gray, green } from \"colorette\";\nimport fetch from \"node-fetch\";\nimport semver from \"semver\";\n\nimport { logger } from \"@/src/utils/logger.ts\";\n\ninterface PackageInfo {\n  name: string;\n  version: string;\n  \"dist-tags\": {\n    latest: string;\n  };\n}\n\nexport const checkForUpdate = async (\n  packageName: string,\n  currentVersion: string,\n) => {\n  // Check npm registry for latest version\n  try {\n    const packageInfo = (await (\n      await fetch(`https://registry.npmjs.org/${packageName}`)\n    ).json()) as PackageInfo;\n\n    const latestVersion = packageInfo[\"dist-tags\"].latest;\n\n    // Compare versions\n    if (semver.gt(latestVersion, currentVersion)) {\n      logger.break();\n      logger.box(\n        `Update available! ${gray(`v${currentVersion}`)} ≫ ${green(\n          `v${latestVersion}`,\n        )}\nRun \\`pnpm i -D zeytal@latest\\` to update.`,\n        { borderColor: \"black\" },\n      );\n    }\n  } catch {\n    // Silently fail if we can't check\n  }\n};\n","import { bold } from \"colorette\";\n\nimport packageJson from \"@/package.json\" with { type: \"json\" };\nimport { logger } from \"@/src/utils/logger.ts\";\n\nexport const showVersion = () => {\n  const zeytalVersion = packageJson.version;\n  logger.break();\n  logger.success(bold(`Starting Zeytal v${zeytalVersion}`));\n};\n","import \"dotenv/config\";\nimport { Command } from \"commander\";\n\nimport packageJson from \"@/package.json\" with { type: \"json\" };\nimport { assetsCmd } from \"@/src/commands/assets/index.ts\";\nimport { generateCmd } from \"@/src/commands/generate/index.ts\";\nimport { stylesCmd } from \"@/src/commands/styles/index.ts\";\nimport { variablesCmd } from \"@/src/commands/variables/index.ts\";\nimport { checkForUpdate } from \"@/src/utils/check-for-update.ts\";\nimport { globalOptions } from \"@/src/utils/options.ts\";\nimport { showVersion } from \"@/src/utils/show-version.ts\";\n\nexport async function main() {\n  const program = new Command()\n    .name(\"zeytal\")\n    .description(\"From Figma to code in only one command line.\")\n    .version(\n      packageJson.version || \"1.0.0\",\n      \"-v, --version\",\n      \"display the version number\",\n    );\n\n  // Add global options\n  globalOptions.forEach((o) => {\n    program.addOption(o);\n  });\n\n  program\n    .addCommand(assetsCmd)\n    .addCommand(stylesCmd)\n    .addCommand(variablesCmd)\n    .addCommand(generateCmd, { isDefault: true });\n\n  showVersion();\n\n  await checkForUpdate(packageJson.name, packageJson.version).catch(() => {\n    // Silently handle errors\n  });\n\n  await program.parseAsync();\n}\n"]}