@recursica/mantine-adapter 0.9.2 → 0.9.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../common/dist/detectors.js","../../common/dist/strings/autoGeneratedFile.js","../../common/dist/strings/capitalize.js","../../adapter/generateVanillaExtractThemes.ts","../../adapter/generateRecursicaTokens.ts","../../adapter/generateUiKit.ts","../../adapter/generateMantineTheme.ts","../../adapter/generateRecursicaObject.ts","../../adapter/generateColorTypes.ts","../../adapter/generateIcons.ts","../../adapter/generateSpacersType.ts","../../adapter/generateBorderRadiusType.ts","../../adapter/generateRecursicaThemes.ts","../../adapter/generatePrettierignore.ts","../../adapter/index.ts","../../utils/fileCheck.ts","../../utils/loadConfig.ts","../../shared/processTokens.ts","../../shared/common.ts","../../cli.ts"],"sourcesContent":["/**\n * Type guard function to check if a token is a FontFamilyToken\n *\n * @param token - The token to check\n * @returns True if the token has fontFamily and variableName properties, indicating it's a FontFamilyToken\n */\nexport function isFontFamilyToken(token) {\n return \"fontFamily\" in token && \"variableName\" in token;\n}\n/**\n * Type guard function to check if a token is an EffectToken\n *\n * @param token - The token to check\n * @returns True if the token has effects and variableName properties, indicating it's an EffectToken\n */\nexport function isEffectToken(token) {\n return \"effects\" in token && \"variableName\" in token;\n}\n/**\n * Type guard function to check if a token is a basic Token (color or float)\n *\n * @param token - The token to check\n * @returns True if the token has mode, type, name, and value properties, indicating it's a basic Token\n */\nexport function isColorOrFloatToken(token) {\n return (\"mode\" in token && \"type\" in token && \"name\" in token && \"value\" in token);\n}\n","export function autoGeneratedFile() {\n return `/* prettier-ignore */\n/* eslint-disable */\n/* tslint:disable */\n/*\nAuto-generated by Recursica.\nDo NOT edit these files directly\\n\nFor more information about Recursica, go to https://recursica.com\n*/\n`;\n}\n","export function capitalize(str) {\n return str.replace(/-/g, \" \").replace(/\\b\\w/g, (char) => char.toUpperCase());\n}\n","import type {\n Themes,\n ExportingProps,\n ValueToken,\n ContractTokens,\n ThemeTokens,\n ExportingResult,\n} from \"../types\";\nimport { autoGeneratedFile, capitalize } from \"@recursica/common\";\ninterface ThemeContent {\n name: string;\n content: string;\n}\n\nexport function parseValue(\n value: ValueToken | string,\n recursicaTokens: string,\n) {\n if (typeof value === \"object\") {\n if (value.collection === \"Tokens\") {\n return `${recursicaTokens}[\"${value.name}\"]`;\n }\n if (value.collection === \"Themes\") {\n return `themeVars[\"${value.name}\"]`;\n }\n } else if (!isNaN(Number(value))) {\n return `\"${value}\"`;\n }\n return `\"${value.toString()}\"`;\n}\n\nfunction generateTypeDefinitions(\n themeDef: Record<string, Record<string, string>>,\n): string {\n // Extract all unique theme modes from themeDef\n const allThemeModes = new Set<string>();\n Object.values(themeDef).forEach((themeVariants) => {\n Object.keys(themeVariants).forEach((mode) => {\n allThemeModes.add(mode);\n });\n });\n\n // Generate the ThemeVariant interface dynamically\n const themeVariantProperties = Array.from(allThemeModes)\n .sort() // Sort for consistent output\n .map((mode) => ` ${mode}: string;`)\n .join(\"\\n\");\n\n return `${autoGeneratedFile()}\nimport { THEMES } from \"./RecursicaThemes\";\n\nexport interface ThemeVariant {\n${themeVariantProperties}\n}\n\n// TypeScript will automatically infer this as a union of literal types\nexport type ThemeType = typeof THEMES[keyof typeof THEMES];\n\nexport type ThemeDictionary = Record<ThemeType, ThemeVariant>;\n`;\n}\n\nexport interface VanillaExtractThemesOutput {\n themesFileContent: ExportingResult;\n vanillaExtractThemes: ExportingResult[];\n availableThemes: ExportingResult;\n themeContract: ExportingResult;\n contractTokens: ContractTokens;\n typeDefinitions: ExportingResult;\n}\n\nexport function generateVanillaExtractThemes(\n tokens: ThemeTokens,\n themes: Themes,\n recursicaTokensFilename: string,\n { outputPath, project }: ExportingProps,\n): VanillaExtractThemesOutput {\n const themesContent: ThemeContent[] = [];\n // Contract tokens\n const projectName =\n typeof project === \"string\" ? project : (project.name ?? \"Recursica\");\n const themeContractFilename = `Recursica${projectName}ContractTheme.css`;\n const contractThemeOutputPath =\n outputPath + \"/\" + `${themeContractFilename}.ts`;\n const contractTokens: ContractTokens = {};\n\n const themeDef: Record<string, Record<string, string>> = {};\n\n for (const [rawThemeName, currentTheme] of Object.entries(themes)) {\n for (const [key, theme] of Object.entries(currentTheme)) {\n const currentThemeName = capitalize(rawThemeName);\n const recursicaTokens = `Recursica${projectName}Tokens`;\n\n const themeKey = key.replace(/-([a-z])/g, (_, letter: string) =>\n letter.toUpperCase(),\n );\n\n const themeName = `${currentThemeName}${themeKey}Theme`;\n\n if (!themeDef[currentThemeName]) {\n themeDef[currentThemeName] = {};\n }\n themeDef[currentThemeName][themeKey] = themeName;\n\n const generatedThemeContent = `${autoGeneratedFile()}\nimport { createTheme } from '@vanilla-extract/css';\n\nimport { themeVars } from './${themeContractFilename.replace(\".ts\", \"\")}'\nimport { ${recursicaTokens} } from './${recursicaTokensFilename.replace(\".ts\", \"\")}'\n\nexport const ${themeName} = createTheme(themeVars,{\n ${Object.entries(theme)\n .map(([key, value]) => {\n contractTokens[key] = null;\n return `'${key}': ${parseValue(value as ValueToken | string, recursicaTokens)}`;\n })\n .join(\",\\n\\t\")},\n ${Object.entries(tokens?.[rawThemeName] ?? {})\n .map(([key, value]) => {\n contractTokens[key] = null;\n return `'${key}': ${parseValue(value as ValueToken | string, recursicaTokens)}`;\n })\n .join(\",\\n\\t\")}\n})`;\n\n themesContent.push({\n name: themeName,\n content: generatedThemeContent,\n });\n }\n }\n\n let themesFileContent = autoGeneratedFile();\n const vanillaExtractThemes: ExportingResult[] = [];\n for (const theme of themesContent) {\n const themeName = `Recursica${projectName}${theme.name}`;\n const autoGeneratedThemeFilename = `${themeName}.css.ts`;\n const themeFilePath = outputPath + \"/\" + autoGeneratedThemeFilename;\n vanillaExtractThemes.push({\n content: theme.content,\n path: themeFilePath,\n filename: autoGeneratedThemeFilename,\n });\n // generate a theme.css.ts where we import all the themes using just 1 variables (1 export)\n themesFileContent += `export { ${theme.name} } from './${autoGeneratedThemeFilename.replace(\".ts\", \"\")}';\\n`;\n themesFileContent += `import { ${theme.name} } from './${autoGeneratedThemeFilename.replace(\".ts\", \"\")}';\\n`;\n }\n themesFileContent += `\\nexport const Themes = {\n ${Object.entries(themeDef)\n .map(\n ([key, value]) =>\n `'${key}': {\n ${Object.entries(value)\n .map(([key, value]) => `'${key}': ${value}`)\n .join(\",\\n\\t\\t\")}`,\n )\n .join(\"\\n\\t},\\n\\t\")}\n }\n}`;\n // create the themes.ts file\n const availableThemesContent = `${autoGeneratedFile()}\nexport const AvailableThemes = [${themesContent.map((theme) => `\"${theme.name}\"`).join(\", \")}] as const;\nexport type AvailableThemesType = (typeof AvailableThemes)[number];\n`;\n const availableThemesPath = outputPath + \"/types.ts\";\n\n const themeContractContent = `${autoGeneratedFile()}\nimport { createThemeContract } from '@vanilla-extract/css';\n\nexport const themeVars = createThemeContract(${JSON.stringify(contractTokens, null, 2)});\n`;\n\n const themesFilename = `Recursica${projectName}Themes.css.ts`;\n const themesFilePath = outputPath + \"/\" + themesFilename;\n\n // Generate type definitions in types.d.ts\n const typeDefinitionsContent = generateTypeDefinitions(themeDef);\n const typesPath = outputPath + \"/types.d.ts\";\n return {\n typeDefinitions: {\n content: typeDefinitionsContent,\n path: typesPath,\n filename: \"types.d.ts\",\n },\n themesFileContent: {\n content: themesFileContent,\n path: themesFilePath,\n filename: themesFilename,\n },\n availableThemes: {\n content: availableThemesContent,\n path: availableThemesPath,\n filename: \"types.ts\",\n },\n vanillaExtractThemes,\n themeContract: {\n content: themeContractContent,\n path: contractThemeOutputPath,\n filename: themeContractFilename,\n },\n contractTokens,\n };\n}\n","import type { ThemeTokens, ExportingProps, ExportingResult } from \"../types\";\nimport { autoGeneratedFile } from \"@recursica/common\";\n\nexport function generateRecursicaTokens(\n baseTokens: ThemeTokens,\n { outputPath, project }: ExportingProps,\n): ExportingResult {\n const projectName =\n typeof project === \"string\" ? project : (project.name ?? \"Recursica\");\n const recursicaTokensFilename = `Recursica${projectName}Tokens.ts`;\n const recursicaTokensPath = outputPath + \"/\" + recursicaTokensFilename;\n const recursicaTokensContent = `${autoGeneratedFile()}\nexport const Recursica${projectName}Tokens = {\n ${Object.entries(baseTokens)\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n .filter(([_, value]) => typeof value === \"string\")\n .map(([key, value]) => `\"${key}\": \"${value as string}\"`)\n .join(\",\\n \")}\n};\n`;\n return {\n content: recursicaTokensContent,\n path: recursicaTokensPath,\n filename: recursicaTokensFilename,\n };\n}\n","import type {\n ThemeTokens,\n ExportingProps,\n ValueToken,\n ExportingResult,\n} from \"../types\";\nimport { autoGeneratedFile } from \"@recursica/common\";\nimport { parseValue } from \"./generateVanillaExtractThemes\";\n\ninterface GenerateUiKitParams {\n recursicaTokensFilename: string;\n themeContractFilename: string;\n}\n\nexport function generateUiKit(\n uiKit: ThemeTokens,\n { recursicaTokensFilename, themeContractFilename }: GenerateUiKitParams,\n { outputPath, project }: ExportingProps,\n): ExportingResult {\n const projectName =\n typeof project === \"string\" ? project : (project.name ?? \"Recursica\");\n const uiKitFilename = `Recursica${projectName}UiKit.ts`;\n const uiKitPath = outputPath + \"/\" + uiKitFilename;\n\n const recursicaTokens = `Recursica${projectName}Tokens`;\n const uiKitContent = `${autoGeneratedFile()}\nimport { themeVars } from './${themeContractFilename.replace(\".ts\", \"\")}'\nimport { ${recursicaTokens} } from './${recursicaTokensFilename.replace(\".ts\", \"\")}'\n\nexport const uiKit = {\n ${Object.entries(uiKit)\n .map(\n ([key, value]) =>\n `'${key}': ${parseValue(value as ValueToken | string, recursicaTokens)}`,\n )\n .join(\",\\n\\t\")}\\n\\t}`;\n\n return {\n content: uiKitContent,\n path: uiKitPath,\n filename: uiKitFilename,\n };\n}\n","import type {\n ThemeTokens,\n ContractTokens,\n ExportingProps,\n MantineThemeOverride,\n ExportingResult,\n} from \"../types\";\nimport { autoGeneratedFile } from \"@recursica/common\";\n\ninterface ContractTokensObject {\n tokens: ContractTokens;\n filename: string;\n}\n\ninterface GenerateMantineThemeParams {\n mantineThemeOverride: MantineThemeOverride | undefined;\n tokens: ThemeTokens;\n breakpoints: Record<string, string>;\n contractTokens: ContractTokensObject;\n exportingProps: ExportingProps;\n}\n\nfunction parseKey(key: string): string {\n return key.replaceAll(\"/\", \"-\");\n}\n\ninterface ThemeTokensObject {\n colors: Record<string, string>;\n spacing: Record<string, string>;\n radius: Record<string, string>;\n fontSizes: Record<string, string>;\n primaryColor: string | undefined;\n white: string | undefined;\n}\n\nexport interface GenerateMantineThemeOutput {\n mantineTheme: ExportingResult;\n postCss: ExportingResult;\n}\n\nexport function generateMantineTheme({\n mantineThemeOverride,\n tokens,\n breakpoints,\n contractTokens: { tokens: contractTokens, filename: contractFilename },\n exportingProps: { outputPath, project, rootPath },\n}: GenerateMantineThemeParams): GenerateMantineThemeOutput {\n const themeTokens: ThemeTokensObject = {\n colors: {},\n spacing: {},\n radius: {},\n fontSizes: {},\n primaryColor: mantineThemeOverride?.[\"1-scale\"],\n white: mantineThemeOverride?.background,\n };\n\n for (const [key, value] of Object.entries(tokens)) {\n if (typeof value === \"object\") continue;\n if (key.includes(\"border-radius\")) {\n themeTokens.radius[parseKey(key)] = value;\n }\n if (key.includes(\"font/size\")) {\n themeTokens.fontSizes[parseKey(key)] = `\"${value}\"`;\n }\n }\n\n for (const [key] of Object.entries(contractTokens)) {\n if (key.includes(\"color/\") || key.includes(\"color-on/\")) {\n themeTokens.colors[parseKey(key)] = `themeVars['${key}']`;\n }\n if (/font\\/(\\w+)\\/size/.test(key)) {\n themeTokens.fontSizes[parseKey(key)] = `themeVars['${key}']`;\n }\n }\n\n const postCssFilename = \"postcss.config.cjs\";\n let postCssContent = `${autoGeneratedFile()}\\n`;\n postCssContent += `module.exports = {\n plugins: {\n 'postcss-preset-mantine': {},\n 'postcss-simple-vars': {\n variables: {`;\n\n for (const [key, value] of Object.entries(breakpoints)) {\n postCssContent += `\\n\\t\\t\\t\\t'mantine-breakpoint-${key}': '${value}',`;\n }\n\n postCssContent += `\n }\n }\n }\n}`;\n\n const postCssFileContent = {\n content: postCssContent,\n path: rootPath ? rootPath + \"/\" + postCssFilename : postCssFilename,\n filename: postCssFilename,\n };\n\n const fileContent = `${autoGeneratedFile()}\nimport { colorsTuple, createTheme } from '@mantine/core'\nimport { themeVars } from './${contractFilename.replace(\".ts\", \"\")}'\n\nexport const mantineTheme = createTheme({\n ${themeTokens.primaryColor ? `primaryColor: ${themeTokens.primaryColor},` : \"\"}\n ${themeTokens.white ? `white: ${themeTokens.white},` : \"\"}\n breakpoints: {\n ${Object.entries(breakpoints)\n .map(([key, value]) => `'${key}': '${value}'`)\n .join(\",\\n\\t\\t\")}\n },\n colors: {\n ${Object.entries(themeTokens.colors)\n .map(([key, value]) => `\"${key}\": colorsTuple(${value})`)\n .join(\",\\n\\t\\t\")}\n },\n radius: {\n ${Object.entries(themeTokens.radius)\n .map(([key, value]) => `\"${key}\": \"${value}\"`)\n .join(\",\\n\\t\\t\")}\n },\n fontSizes: {\n ${Object.entries(themeTokens.fontSizes)\n .map(([key, value]) => `\"${key}\": ${value}`)\n .join(\",\\n\\t\\t\")}\n }\n})`;\n\n const projectName =\n typeof project === \"string\" ? project : (project.name ?? \"Recursica\");\n const filename = `Recursica${projectName}MantineTheme.ts`;\n const mantineThemeFileContent = {\n content: fileContent,\n path: outputPath + \"/\" + filename,\n filename,\n };\n\n return { mantineTheme: mantineThemeFileContent, postCss: postCssFileContent };\n}\n","import { autoGeneratedFile } from \"@recursica/common\";\nimport type { RecursicaConfiguration } from \"@recursica/schemas\";\n\nexport function createRecursicaObject(\n project: RecursicaConfiguration[\"project\"],\n outputPath: string,\n) {\n const projectName =\n typeof project === \"string\" ? project : (project.name ?? \"Recursica\");\n const tokens = `Recursica${projectName}Tokens`;\n const contract = `Recursica${projectName}ContractTheme`;\n const uiKit = `Recursica${projectName}UiKit`;\n\n const recursicaObjectContent = `${autoGeneratedFile()}\nimport { ${tokens} } from './${tokens}';\nimport { themeVars } from './${contract}.css';\nimport { uiKit } from './${uiKit}';\n\nexport const recursica = {\n ...uiKit,\n ...themeVars,\n ...${tokens},\n}\n`;\n return {\n content: recursicaObjectContent,\n path: outputPath + \"/Recursica.ts\",\n filename: \"Recursica.ts\",\n };\n}\n","import { autoGeneratedFile } from \"@recursica/common\";\n\nexport function generateColorsType(colorTokens: string[], outputPath: string) {\n const colorsType = `${autoGeneratedFile()}\nexport type RecursicaColors = \\n\\t\"${colorTokens.join('\" |\\n\\t\"')}\";\\n`;\n return {\n content: colorsType,\n path: `${outputPath}/RecursicaColorsType.ts`,\n filename: \"RecursicaColorsType.ts\",\n };\n}\n","import { autoGeneratedFile } from \"@recursica/common\";\nimport { ExportingResult, RecursicaConfigIcons } from \"../types\";\n\nexport interface GenerateIconsOutput {\n exportedIcons: ExportingResult[];\n iconExports: ExportingResult;\n iconResourceMap: ExportingResult;\n}\n\nexport function generateIcons(\n icons: Record<string, string>,\n srcPath: string,\n config: RecursicaConfigIcons | undefined,\n): GenerateIconsOutput {\n let iconsPath: string;\n if (!config?.output) {\n iconsPath = srcPath + \"/components\" + \"/Icons\";\n } else {\n iconsPath = srcPath + \"/\" + config.output;\n }\n const svgPath = iconsPath + \"/Svg\";\n\n const exportedIcons: ExportingResult[] = [];\n // Generate svg files\n for (const [rawIconName, iconPath] of Object.entries(icons)) {\n const [iconName, variant] = rawIconName.split(\"[\");\n let cleanIconName = iconName.replaceAll(\"-\", \"_\");\n // check if the iconName is in the names array, if not, skip\n if (!config?.include?.names?.includes(cleanIconName)) {\n continue;\n }\n // detect if the iconName starts with a number, if so, add an underscore to the beginning\n if (cleanIconName.match(/^\\d/)) {\n cleanIconName = `_${cleanIconName}`;\n }\n const cleanVariant = variant.replace(\"]\", \"\").replace(\"Style=\", \"\");\n const codedVariant = cleanVariant.replaceAll(\" \", \"_\");\n // check if the codedVariant is in the variants array, if not, skip\n if (!config?.include?.variants?.includes(codedVariant)) {\n continue;\n }\n const finalIconName = `${cleanIconName}_${codedVariant}`;\n exportedIcons.push({\n content: iconPath\n .replaceAll('fill=\"black\"', \"\")\n .replaceAll('fill=\"none\"', \"\"),\n path: `${svgPath}/${finalIconName}.svg`,\n filename: `${finalIconName}`,\n });\n }\n // Generate icon exports file\n const exportsPath = iconsPath + \"/icon_exports.ts\";\n let exportsContent = `${autoGeneratedFile()}\n/// <reference types=\"vite-plugin-svgr/client\" />\\n`;\n for (const icon of exportedIcons) {\n exportsContent += `import ${icon.filename} from './Svg/${icon.filename}.svg?react';\\n`;\n exportsContent += `export { ${icon.filename} };\\n`;\n }\n\n // Generate icon map file\n const mapPath = iconsPath + \"/icon_resource_map.ts\";\n let mapContent = `${autoGeneratedFile()}\\nimport * as IconExports from './icon_exports';\\n\\n`;\n mapContent += \"export const IconResourceMap = {\";\n mapContent += exportedIcons\n .map((icon) => `\\n\\t'${icon.filename}': IconExports.${icon.filename},`)\n .join(\"\");\n mapContent += \"\\n};\\n\";\n\n return {\n exportedIcons,\n iconExports: {\n content: exportsContent,\n path: exportsPath,\n filename: \"icon_exports.ts\",\n },\n iconResourceMap: {\n content: mapContent,\n path: mapPath,\n filename: \"icon_resource_map.ts\",\n },\n };\n}\n","import { autoGeneratedFile } from \"@recursica/common\";\nimport { ExportingResult } from \"../types\";\n\nexport function generateSpacersType(\n spacerTokens: string[],\n outputPath: string,\n): ExportingResult {\n const spacersType = `${autoGeneratedFile()}\nexport type RecursicaSpacersType = \\n\\t\"${spacerTokens.join('\" |\\n\\t\"')}\";\\n`;\n\n return {\n content: spacersType,\n path: `${outputPath}/RecursicaSpacersType.ts`,\n filename: \"RecursicaSpacersType.ts\",\n };\n}\n","import { autoGeneratedFile } from \"@recursica/common\";\nimport { ExportingResult } from \"../types\";\n\nexport function generateBorderRadiusType(\n borderRadius: string[],\n outputPath: string,\n): ExportingResult {\n const borderRadiusTypeContent = `${autoGeneratedFile()}\nexport type RecursicaBorderRadiusType = ${borderRadius\n .map((key) => `'${key}'`)\n .join(\" | \")};\n`;\n\n return {\n content: borderRadiusTypeContent,\n path: `${outputPath}/RecursicaBorderRadiusType.ts`,\n filename: \"RecursicaBorderRadiusType.ts\",\n };\n}\n","import type { ExportingResult, Themes } from \"../types\";\nimport { capitalize } from \"@recursica/common\";\n\ninterface GenerateRecursicaThemesParams {\n outputPath: string;\n themes: Themes;\n}\n\n/**\n * Generates the RecursicaThemes.ts file that contains the THEMES constant\n * based on the theme dictionary\n */\nexport function generateRecursicaThemes({\n outputPath,\n themes,\n}: GenerateRecursicaThemesParams): ExportingResult {\n const themeDef: Record<string, Record<string, string>> = {};\n\n // Build themeDef object similar to generateVanillaExtractThemes\n for (const [rawThemeName, currentTheme] of Object.entries(themes)) {\n for (const [key] of Object.entries(currentTheme)) {\n const currentThemeName = capitalize(rawThemeName);\n const themeKey = key.replace(/-([a-z])/g, (_, letter: string) =>\n letter.toUpperCase(),\n );\n themeDef[currentThemeName] ??= {};\n themeDef[currentThemeName][themeKey] = currentThemeName;\n }\n }\n\n const content = `/* prettier-ignore */\n/* eslint-disable */\n/* tslint:disable */\n/*\nAuto-generated by Recursica.\nDo NOT edit these files directly\n\nFor more information about Recursica, go to https://recursica.com\n*/\n\n// Auto-generated THEMES constant from ThemeType\nexport const THEMES = {\n${Object.entries(themeDef)\n .map(([key]) => ` ${key}: '${key}'`)\n .join(\",\\n\")}\n} as const;\n`;\n\n return {\n content,\n path: outputPath + \"/RecursicaThemes.ts\",\n filename: \"RecursicaThemes.ts\",\n };\n}\n","import { ExportingResult } from \"../types\";\n\nexport function generatePrettierignore(): ExportingResult {\n return {\n filename: \".prettierignore\",\n path: \".prettierignore\",\n content: `recursica/\nrecursica.json\nrecursica-bundle.json\nrecursica-icons.json\nicon_exports.ts\nicon_resource_map.ts`,\n };\n}\n","import type {\n RecursicaConfigOverrides,\n RecursicaConfigIcons,\n ExportingResult,\n} from \"../types\";\nimport {\n generateVanillaExtractThemes,\n VanillaExtractThemesOutput,\n} from \"./generateVanillaExtractThemes\";\nimport { generateRecursicaTokens } from \"./generateRecursicaTokens\";\nimport { generateUiKit } from \"./generateUiKit\";\nimport {\n generateMantineTheme,\n GenerateMantineThemeOutput,\n} from \"./generateMantineTheme\";\nimport { createRecursicaObject } from \"./generateRecursicaObject\";\nimport { generateColorsType } from \"./generateColorTypes\";\nimport { generateIcons, GenerateIconsOutput } from \"./generateIcons\";\nimport { generateSpacersType } from \"./generateSpacersType\";\nimport { generateBorderRadiusType } from \"./generateBorderRadiusType\";\nimport { generateRecursicaThemes } from \"./generateRecursicaThemes\";\nimport { ProcessTokens } from \"../shared/processTokens\";\nimport type { RecursicaConfiguration } from \"@recursica/schemas\";\nimport { generatePrettierignore } from \"./generatePrettierignore\";\n\ninterface GenerateThemeFileParams {\n overrides: RecursicaConfigOverrides | undefined;\n rootPath: string;\n srcPath: string;\n project: RecursicaConfiguration[\"project\"];\n icons: Record<string, string>;\n iconsConfig: RecursicaConfigIcons | undefined;\n processTokens: ProcessTokens;\n}\n\n/**\n * Generates Mantine theme files including:\n * - Generic theme file with base theme and createColorToken function\n * - Individual theme files for each theme variant\n * - CSS variables file\n * - Type declarations for theme colors\n * - Index file exporting all themes\n *\n * @param srcPath - Path to the source directory for type declarations\n * @param tokens - Base theme tokens\n * @param themes - Theme variants\n * @param project - Project name\n */\ninterface RunAdapterOutput {\n recursicaTokens: ExportingResult;\n vanillaExtractThemes: VanillaExtractThemesOutput;\n mantineTheme: GenerateMantineThemeOutput;\n uiKitObject: ExportingResult;\n recursicaObject: ExportingResult;\n colorsType: ExportingResult;\n spacersType: ExportingResult;\n borderRadiusType: ExportingResult;\n iconsObject: GenerateIconsOutput | undefined;\n recursicaThemes: ExportingResult;\n prettierignore: ExportingResult;\n}\nexport function runAdapter({\n rootPath,\n overrides,\n srcPath,\n project,\n icons,\n iconsConfig,\n processTokens,\n}: GenerateThemeFileParams): RunAdapterOutput {\n const outputPath = srcPath + \"/recursica\";\n\n const recursicaTokens = generateRecursicaTokens(processTokens.tokens, {\n outputPath,\n project,\n });\n\n const vanillaExtractThemes = generateVanillaExtractThemes(\n processTokens.tokens,\n processTokens.themes,\n recursicaTokens.filename,\n {\n outputPath,\n project,\n },\n );\n\n const mantineTheme = generateMantineTheme({\n mantineThemeOverride: overrides?.mantineTheme,\n tokens: processTokens.tokens,\n breakpoints: processTokens.breakpoints,\n contractTokens: {\n tokens: vanillaExtractThemes.contractTokens,\n filename: vanillaExtractThemes.themeContract.filename,\n },\n exportingProps: {\n outputPath,\n project,\n rootPath,\n },\n });\n\n const uiKitObject = generateUiKit(\n processTokens.uiKit,\n {\n recursicaTokensFilename: recursicaTokens.filename,\n themeContractFilename: vanillaExtractThemes.themeContract.filename,\n },\n { outputPath, project },\n );\n\n const recursicaObject = createRecursicaObject(project, outputPath);\n\n const colorsType = generateColorsType(processTokens.colors, outputPath);\n const spacersType = generateSpacersType(processTokens.spacers, outputPath);\n const borderRadiusType = generateBorderRadiusType(\n processTokens.borderRadius,\n outputPath,\n );\n\n let iconsObject: GenerateIconsOutput | undefined;\n if (icons) {\n iconsObject = generateIcons(icons, srcPath, iconsConfig);\n }\n\n const recursicaThemes = generateRecursicaThemes({\n outputPath,\n themes: processTokens.themes,\n });\n\n const prettierignore = generatePrettierignore();\n\n const fileContents = {\n recursicaTokens,\n vanillaExtractThemes,\n mantineTheme,\n uiKitObject,\n recursicaObject,\n colorsType,\n spacersType,\n borderRadiusType,\n iconsObject,\n recursicaThemes,\n prettierignore,\n };\n return fileContents;\n}\n","import fs from \"fs\";\nimport path from \"path\";\n\n/**\n * Checks if a given directory contains files with either theme-tokens or ui-kit suffix\n * @param directoryPath - The path to check for files\n * @returns FileCheckResult - Object containing boolean result and array of matching files with full paths\n */\nexport function hasThemeOrKitFiles(directoryPath: string): string | undefined {\n try {\n const files = fs.readdirSync(directoryPath);\n\n const matchingFiles = files.find((file) => {\n const fileName = file.toLowerCase();\n return fileName === \"recursica-bundle.json\";\n });\n\n return matchingFiles ? path.join(directoryPath, matchingFiles) : undefined;\n } catch (error) {\n console.error(`Error checking directory ${directoryPath}:`, error);\n return undefined;\n }\n}\n\nexport function hasIconsJsonFiles(directoryPath: string): string | undefined {\n try {\n const files = fs.readdirSync(directoryPath);\n\n const matchingFiles = files\n .filter((file) => {\n const fileName = file.toLowerCase();\n return fileName === \"recursica-icons.json\";\n })\n .map((file) => path.join(directoryPath, file));\n\n return matchingFiles.length > 0 ? matchingFiles[0] : undefined;\n } catch (error) {\n console.error(`Error checking directory ${directoryPath}:`, error);\n return undefined;\n }\n}\n","import path from \"path\";\nimport fs from \"fs\";\nimport { hasThemeOrKitFiles, hasIconsJsonFiles } from \"./fileCheck\";\nimport type { RecursicaConfigIcons, RecursicaConfigOverrides } from \"../types\";\nimport { RecursicaConfiguration } from \"@recursica/schemas\";\n\ninterface RecursicaConfig {\n rootPath: string;\n iconsJson: string | undefined;\n bundledJson: string | undefined;\n srcPath: string;\n project: RecursicaConfiguration[\"project\"];\n iconsConfig: RecursicaConfigIcons | undefined;\n overrides: RecursicaConfigOverrides | undefined;\n}\n\ninterface RecursicaConfigContent {\n jsonsPath: string;\n project: RecursicaConfiguration[\"project\"];\n overrides: RecursicaConfigOverrides;\n icons: RecursicaConfigIcons | undefined;\n}\n\n/**\n * Loads and validates the configuration from recursicaConfig.json\n *\n * @throws {Error} If the config file is not found or required fields are missing\n * @returns {Object} Configuration object with the following properties:\n * - jsons: Path to the themes-tokens and ui-kit directories\n * - srcPath: Path to the source directory\n * - project: Project name\n */\nexport function loadConfig(): RecursicaConfig {\n let rootPath = getRootPath();\n const configPath = path.join(rootPath, \"recursica.json\");\n\n if (!fs.existsSync(configPath)) {\n throw new Error(\"Config file not found at: \" + configPath);\n }\n\n const config = JSON.parse(\n fs.readFileSync(configPath, \"utf-8\"),\n ) as RecursicaConfigContent;\n\n if (typeof config.project === \"object\" && config.project?.root) {\n rootPath = path.join(rootPath, config.project.root);\n }\n\n const bundledJson = hasThemeOrKitFiles(rootPath);\n const iconsJson = hasIconsJsonFiles(rootPath);\n\n const project = config.project;\n if (!project) {\n throw new Error(\"project is required in config file\");\n }\n\n return {\n rootPath,\n srcPath: path.join(rootPath, \"src\"),\n project,\n bundledJson,\n iconsJson,\n overrides: config.overrides,\n iconsConfig: config.icons,\n };\n}\n\nexport function getRootPath() {\n // recursively search for the package.json file starting from the current working directory\n let currentDir = process.cwd();\n let level = 0;\n while (!fs.existsSync(path.join(currentDir, \"recursica.json\"))) {\n currentDir = path.join(currentDir, \"..\");\n level++;\n if (level > 10) {\n throw new Error(\"Could not find recursica.json\");\n }\n }\n return currentDir;\n}\n","import type { Themes, ThemeTokens, RecursicaConfigOverrides } from \"../types\";\nimport type { Token, CollectionToken } from \"@recursica/schemas\";\nimport {\n isFontFamilyToken,\n isEffectToken,\n isColorOrFloatToken,\n capitalize,\n} from \"@recursica/common\";\n\nexport interface ProcessTokensParams {\n tokens: ThemeTokens;\n themes: Themes;\n overrides: RecursicaConfigOverrides | undefined;\n}\nexport class ProcessTokens {\n public tokens: ThemeTokens = {};\n public themes: Themes = {};\n\n public breakpoints: Record<string, string> = {};\n public colors: string[] = [];\n public spacers: string[] = [];\n public borderRadius: string[] = [];\n public uiKit: ThemeTokens = {};\n\n public overrides: RecursicaConfigOverrides | undefined;\n\n constructor(overrides: RecursicaConfigOverrides | undefined) {\n this.overrides = overrides;\n }\n\n private processValue = (\n target: Record<string, number | string | Token | ThemeTokens>,\n token: Token,\n ) => {\n if (typeof token.value === \"string\") {\n target[token.name] = token.value;\n return true;\n }\n if (typeof token.value === \"number\") {\n target[token.name] = `${token.value}px`;\n return true;\n }\n if (typeof token.value === \"object\") {\n target[token.name] = token.value as Token;\n return true;\n }\n return false;\n };\n\n private processTokenValue(\n token: Token,\n modeName: string,\n jsonThemeName?: string,\n ) {\n if (token.collection === \"Breakpoints\") {\n this.processValue(this.breakpoints, token);\n // Add breakpoints to uiKit with 'breakpoints/' prefix\n const uiKitTarget: Record<string, number | string | Token | ThemeTokens> =\n {};\n this.processValue(uiKitTarget, token);\n Object.entries(uiKitTarget).forEach(([key, value]) => {\n // Ensure we only store string values\n if (typeof value === \"string\") {\n this.uiKit[`breakpoint/${key}`] = value;\n } else if (typeof value === \"number\") {\n this.uiKit[`breakpoint/${key}`] = `${value.toString()}px`;\n }\n });\n } else if (token.collection === \"UI Kit\") {\n this.processValue(this.uiKit, token);\n } else if (token.collection === \"Tokens\") {\n this.processValue(this.tokens, token);\n } else {\n if (!jsonThemeName) return;\n if (!this.themes[jsonThemeName]) this.themes[jsonThemeName] = {};\n\n if (!this.themes[jsonThemeName][modeName])\n this.themes[jsonThemeName][modeName] = {};\n this.processValue(this.themes[jsonThemeName][modeName], token);\n }\n }\n\n public processTokens(\n variables: Record<string, CollectionToken>,\n jsonThemeName?: string,\n ) {\n // Process tokens collection\n for (const token of Object.values(variables)) {\n if (isFontFamilyToken(token)) {\n if (!jsonThemeName) continue;\n if (!this.tokens[jsonThemeName]) this.tokens[jsonThemeName] = {};\n if (typeof this.tokens[jsonThemeName] !== \"object\")\n this.tokens[jsonThemeName] = {};\n\n this.tokens[jsonThemeName][`typography/${token.variableName}`] =\n this.overrides?.fontFamily?.[token.fontFamily] ?? token.fontFamily;\n this.tokens[jsonThemeName][`typography/${token.variableName}-size`] =\n `${token.fontSize.toString()}px`;\n // check if overrides.fontWeight is defined\n if (this.overrides?.fontWeight) {\n const weight = this.overrides.fontWeight.find(\n (weight) =>\n weight.alias === token.fontWeight.alias &&\n weight.fontFamily === token.fontFamily,\n );\n // check if there's a weight that matches the alias and fontFamily\n // if there is, use the value from the overrides\n // if there isn't, use the value from the token\n if (weight) {\n this.tokens[jsonThemeName][\n `typography/${token.variableName}-weight`\n ] = weight.value.toString();\n } else {\n this.tokens[jsonThemeName][\n `typography/${token.variableName}-weight`\n ] = token.fontWeight.value.toString();\n }\n } else {\n this.tokens[jsonThemeName][\n `typography/${token.variableName}-weight`\n ] = token.fontWeight.value.toString();\n }\n if (token.lineHeight.unit === \"PERCENT\") {\n this.tokens[jsonThemeName][\n `typography/${token.variableName}-line-height`\n ] = `${token.lineHeight.value.toString()}%`;\n } else {\n this.tokens[jsonThemeName][\n `typography/${token.variableName}-line-height`\n ] = \"1.2\";\n }\n this.tokens[jsonThemeName][\n `typography/${token.variableName}-letter-spacing`\n ] =\n token.letterSpacing.unit === \"PIXELS\"\n ? `${token.letterSpacing.value.toString()}px`\n : `${token.letterSpacing.value.toString()}%`;\n this.tokens[jsonThemeName][\n `typography/${token.variableName}-text-case`\n ] = token.textCase;\n this.tokens[jsonThemeName][\n `typography/${token.variableName}-text-decoration`\n ] = token.textDecoration;\n continue;\n }\n if (isEffectToken(token)) {\n const effectValue: string[] = [];\n token.effects.forEach((effect) => {\n const {\n color: { r, g, b, a },\n offset: { x, y },\n radius,\n spread,\n } = effect;\n effectValue.push(\n `${x.toString()}px ${y.toString()}px ${radius.toString()}px ${spread.toString()}px rgba(${r.toString()}, ${g.toString()}, ${b.toString()}, ${a.toString()})`,\n );\n });\n this.tokens[`effect/${token.variableName}`] = effectValue.join(\", \");\n continue;\n }\n if (isColorOrFloatToken(token)) {\n const modeName = capitalize(token.mode)\n .replace(/[()/]/g, \"-\")\n .replace(/\\s/g, \"\")\n .replace(/-$/, \"\");\n\n if (modeName !== \"mode1\") this.themes[modeName] = {};\n if (token.type === \"color\" && !this.colors.includes(token.name)) {\n this.colors.push(token.name);\n }\n if (\n token.name.startsWith(\"size/spacer/\") &&\n !this.spacers.includes(token.name)\n ) {\n this.spacers.push(token.name);\n }\n if (\n token.name.startsWith(\"size/border-radius/\") &&\n !this.borderRadius.includes(token.name)\n ) {\n this.borderRadius.push(token.name);\n }\n this.processTokenValue(token, modeName, jsonThemeName);\n } else {\n console.warn(\n `${JSON.stringify(token, null, 2)} could not be processed`,\n );\n }\n }\n }\n}\n","import type {\n JsonContentIcons,\n RecursicaConfigOverrides,\n RecursicaConfigIcons,\n} from \"../types\";\nimport type { RecursicaVariablesSchema } from \"@recursica/schemas\";\nimport type { RecursicaConfiguration } from \"@recursica/schemas\";\nimport { ProcessTokens } from \"./processTokens\";\nimport { runAdapter } from \"../adapter\";\n\nexport interface ProcessJsonParams {\n project: RecursicaConfiguration[\"project\"];\n overrides: RecursicaConfigOverrides | undefined;\n}\n\nexport interface RunAdapterParams {\n bundledJsonContent: string;\n project: RecursicaConfiguration[\"project\"];\n overrides: RecursicaConfigOverrides | undefined;\n rootPath: string;\n srcPath: string;\n iconsJsonContent?: string;\n iconsConfig?: RecursicaConfigIcons;\n}\n\n/**\n * Processes JSON content and creates ProcessTokens instance\n * This is shared logic between CLI and WebWorker\n */\nexport function processJsonContent(\n jsonFileContent: string,\n { project, overrides }: ProcessJsonParams,\n): ProcessTokens {\n const jsonContent: RecursicaVariablesSchema = JSON.parse(jsonFileContent);\n\n const jsonProjectId = jsonContent.projectId;\n if (!jsonProjectId) {\n throw new Error(\"project-id is required in the json file\");\n }\n if (\n jsonProjectId.toLowerCase() !==\n (typeof project === \"string\"\n ? project.toLowerCase()\n : project.name?.toLowerCase())\n ) {\n throw new Error(\"project-id does not match the project in the config file\");\n }\n\n const processTokens = new ProcessTokens(overrides);\n processTokens.processTokens(jsonContent.tokens);\n for (const theme of Object.keys(jsonContent.themes)) {\n processTokens.processTokens(jsonContent.themes[theme], theme);\n }\n processTokens.processTokens(jsonContent.uiKit);\n\n return processTokens;\n}\n\n/**\n * Processes icons JSON content and returns icons object\n * This is shared logic between CLI and WebWorker\n */\nexport function processIcons(iconsJsonContent: string): Record<string, string> {\n const icons: Record<string, string> = {};\n const iconsJsonParsed: JsonContentIcons = JSON.parse(\n iconsJsonContent,\n ) as JsonContentIcons;\n\n for (const [iconName, iconPath] of Object.entries(iconsJsonParsed)) {\n icons[iconName] = iconPath;\n }\n\n return icons;\n}\n\n/**\n * Core adapter processing logic shared between CLI and WebWorker\n * This function handles the main processing workflow\n */\nexport function processAdapter({\n rootPath,\n bundledJsonContent,\n project,\n overrides,\n srcPath,\n iconsJsonContent,\n iconsConfig,\n}: RunAdapterParams) {\n let icons: Record<string, string> = {};\n\n // Process icons if provided\n if (iconsJsonContent) {\n icons = processIcons(iconsJsonContent);\n }\n\n if (!bundledJsonContent) {\n throw new Error(\"bundledJson content not found\");\n }\n\n // Process the main JSON content\n const processTokens = processJsonContent(bundledJsonContent, {\n project,\n overrides,\n });\n\n // Run the adapter\n const files = runAdapter({\n rootPath,\n overrides,\n srcPath,\n icons,\n processTokens,\n project,\n iconsConfig,\n });\n\n return files;\n}\n","import fs from \"fs\";\nimport type { ExportingResult } from \"./types\";\nimport { loadConfig } from \"./utils/loadConfig\";\nimport { processAdapter } from \"./shared/common\";\n\n/**\n * Main CLI function that can be called programmatically\n * This is the same logic as main.ts but exported as a function\n */\nexport async function runMain(): Promise<void> {\n try {\n const {\n rootPath,\n bundledJson,\n srcPath,\n project,\n iconsJson,\n overrides,\n iconsConfig,\n } = loadConfig();\n\n if (!bundledJson) throw new Error(\"bundledJson not found\");\n\n // Read file contents\n const bundledJsonContent = fs.readFileSync(bundledJson, \"utf-8\");\n const iconsJsonContent = iconsJson\n ? fs.readFileSync(iconsJson, \"utf-8\")\n : undefined;\n\n // Use shared processing logic\n const files = processAdapter({\n bundledJsonContent,\n project,\n overrides,\n rootPath,\n srcPath,\n iconsJsonContent,\n iconsConfig,\n });\n\n const {\n recursicaTokens,\n vanillaExtractThemes,\n mantineTheme,\n uiKitObject,\n recursicaObject,\n colorsType,\n iconsObject,\n spacersType,\n borderRadiusType,\n recursicaThemes,\n prettierignore,\n } = files;\n\n const filesToWrite: ExportingResult[] = [\n recursicaTokens,\n vanillaExtractThemes.availableThemes,\n vanillaExtractThemes.themeContract,\n vanillaExtractThemes.themesFileContent,\n vanillaExtractThemes.typeDefinitions,\n mantineTheme.mantineTheme,\n mantineTheme.postCss,\n uiKitObject,\n recursicaObject,\n colorsType,\n spacersType,\n borderRadiusType,\n recursicaThemes,\n prettierignore,\n ];\n\n // check if src/recursica folder exists, if not create it\n const outputPath = srcPath + \"/recursica\";\n if (!fs.existsSync(outputPath)) {\n fs.mkdirSync(outputPath);\n }\n\n for (const file of filesToWrite) {\n fs.writeFileSync(file.path, file.content);\n }\n for (const theme of vanillaExtractThemes.vanillaExtractThemes) {\n fs.writeFileSync(theme.path, theme.content);\n }\n\n if (iconsObject) {\n fs.writeFileSync(\n iconsObject.iconExports.path,\n iconsObject.iconExports.content,\n );\n fs.writeFileSync(\n iconsObject.iconResourceMap.path,\n iconsObject.iconResourceMap.content,\n );\n for (const icon of iconsObject.exportedIcons) {\n fs.writeFileSync(icon.path, icon.content);\n }\n }\n\n console.log(\"Theme generated successfully\");\n } catch (error) {\n console.error(\"Error generating theme:\", error);\n throw error;\n }\n}\n"],"names":[],"mappings":"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"}