@typestyles/migrate 0.5.0 → 0.5.1

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.
@@ -237,7 +237,7 @@ function buildVariantStyles(properties) {
237
237
  )
238
238
  );
239
239
  }
240
- function buildVariantComponentConfig(baseObject, booleanInterpolations) {
240
+ function buildVariantRecipeInput(name, baseObject, booleanInterpolations) {
241
241
  const variantGroups = /* @__PURE__ */ new Map();
242
242
  for (const interpolation of booleanInterpolations) {
243
243
  const group = variantGroups.get(interpolation.propName) ?? { true: {}, false: {} };
@@ -254,13 +254,24 @@ function buildVariantComponentConfig(baseObject, booleanInterpolations) {
254
254
  ])
255
255
  )
256
256
  );
257
- const defaultVariantProperties = [...variantGroups.keys()].map(
258
- (propName) => t4.objectProperty(t4.identifier(propName), t4.booleanLiteral(false))
257
+ const axisProperties = [...variantGroups.keys()].map(
258
+ (propName) => t4.objectProperty(
259
+ t4.identifier(propName),
260
+ t4.callExpression(t4.memberExpression(t4.identifier("variant"), t4.identifier("boolean")), [
261
+ t4.objectExpression([t4.objectProperty(t4.identifier("default"), t4.booleanLiteral(false))])
262
+ ])
263
+ )
259
264
  );
260
265
  return t4.objectExpression([
261
- t4.objectProperty(t4.identifier("base"), baseObject),
262
- t4.objectProperty(t4.identifier("variants"), t4.objectExpression(variantsProperties)),
263
- t4.objectProperty(t4.identifier("defaultVariants"), t4.objectExpression(defaultVariantProperties))
266
+ t4.objectProperty(t4.identifier("name"), t4.stringLiteral(name)),
267
+ t4.objectProperty(t4.identifier("variants"), t4.objectExpression(axisProperties)),
268
+ t4.objectProperty(
269
+ t4.identifier("styles"),
270
+ t4.objectExpression([
271
+ t4.objectProperty(t4.identifier("base"), baseObject),
272
+ t4.objectProperty(t4.identifier("variants"), t4.objectExpression(variantsProperties))
273
+ ])
274
+ )
264
275
  ]);
265
276
  }
266
277
 
@@ -358,6 +369,7 @@ function hasLocalBinding(ast, name) {
358
369
  }
359
370
  function ensureTypestylesRuntime(ast, needs) {
360
371
  const requiredSpecifiers = /* @__PURE__ */ new Set(["createTypeStyles"]);
372
+ if (needs.recipe) requiredSpecifiers.add("variant");
361
373
  if (needs.vars) {
362
374
  requiredSpecifiers.add("createVar");
363
375
  requiredSpecifiers.add("assignVars");
@@ -501,10 +513,8 @@ function removeStyledProps(openingElement, propNames) {
501
513
  }
502
514
  function buildComponentClassNameExpression(componentConstName, variantProps, propValues) {
503
515
  const properties = variantProps.filter((propName) => propValues.has(propName)).map((propName) => t4.objectProperty(t4.identifier(propName), propValues.get(propName)));
504
- if (properties.length === 0) {
505
- return t4.callExpression(t4.identifier(componentConstName), []);
506
- }
507
- return t4.callExpression(t4.identifier(componentConstName), [t4.objectExpression(properties)]);
516
+ const call = properties.length === 0 ? t4.callExpression(t4.identifier(componentConstName), []) : t4.callExpression(t4.identifier(componentConstName), [t4.objectExpression(properties)]);
517
+ return t4.memberExpression(call, t4.identifier("className"));
508
518
  }
509
519
  function migrateBooleanVariantTemplate(path, variableName, template, styledTarget, warnings, styledTransforms) {
510
520
  const booleanInterpolations = parseBooleanTemplateInterpolations(template);
@@ -518,7 +528,11 @@ function migrateBooleanVariantTemplate(path, variableName, template, styledTarge
518
528
  const componentConstName = path.scope.generateUidIdentifier(
519
529
  toComponentConstName(variableName)
520
530
  ).name;
521
- const componentConfig = buildVariantComponentConfig(baseObject, booleanInterpolations);
531
+ const recipeInput = buildVariantRecipeInput(
532
+ toKebabCase(variableName),
533
+ baseObject,
534
+ booleanInterpolations
535
+ );
522
536
  const variantProps = [
523
537
  ...new Set(booleanInterpolations.map((interpolation) => interpolation.propName))
524
538
  ];
@@ -527,10 +541,7 @@ function migrateBooleanVariantTemplate(path, variableName, template, styledTarge
527
541
  declaration.node.declarations = [
528
542
  t4.variableDeclarator(
529
543
  t4.identifier(componentConstName),
530
- t4.callExpression(t4.identifier("recipe"), [
531
- t4.stringLiteral(toKebabCase(variableName)),
532
- componentConfig
533
- ])
544
+ t4.callExpression(t4.identifier("recipe"), [recipeInput])
534
545
  )
535
546
  ];
536
547
  styledTransforms.set(variableName, {
@@ -914,5 +925,5 @@ Scanned ${summary.filesScanned} files, changed ${summary.filesChanged}, warnings
914
925
  }
915
926
 
916
927
  export { migrateSource, runMigration };
917
- //# sourceMappingURL=chunk-3USMLGWZ.js.map
918
- //# sourceMappingURL=chunk-3USMLGWZ.js.map
928
+ //# sourceMappingURL=chunk-ZP5DTZ6D.js.map
929
+ //# sourceMappingURL=chunk-ZP5DTZ6D.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/css.ts","../src/interpolations.ts","../src/variants.ts","../src/transform.ts","../src/files.ts","../src/migrate.ts"],"names":["t","camelCaseProperty","t2","t3","toKeyNode","objectExpression","relative"],"mappings":"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","file":"chunk-ZP5DTZ6D.js","sourcesContent":["import postcss, { type ChildNode, type Container } from 'postcss';\nimport * as t from '@babel/types';\nimport type { MigrationWarning } from './types';\n\nfunction camelCaseProperty(property: string): string {\n return property.replace(/-([a-z])/g, (_, letter: string) => letter.toUpperCase());\n}\n\nfunction toValueNode(value: string, varReplacements?: Map<string, t.Identifier>): t.Expression {\n const trimmed = value.trim();\n if (varReplacements?.has(trimmed)) {\n return varReplacements.get(trimmed)!;\n }\n if (/^-?\\d+(\\.\\d+)?$/.test(trimmed)) {\n return t.numericLiteral(Number(trimmed));\n }\n return t.stringLiteral(trimmed);\n}\n\nfunction toKeyNode(key: string): t.Expression {\n if (/^[A-Za-z_$][A-Za-z0-9_$]*$/.test(key)) {\n return t.identifier(key);\n }\n return t.stringLiteral(key);\n}\n\nfunction nodesToObject(\n nodes: ChildNode[] | undefined,\n warnings: MigrationWarning[],\n varReplacements?: Map<string, t.Identifier>,\n): t.ObjectExpression {\n const properties: t.ObjectProperty[] = [];\n\n for (const node of nodes ?? []) {\n if (node.type === 'decl') {\n const normalized = node.prop.startsWith('--') ? node.prop : camelCaseProperty(node.prop);\n properties.push(\n t.objectProperty(toKeyNode(normalized), toValueNode(node.value, varReplacements)),\n );\n continue;\n }\n\n if (node.type === 'rule') {\n const nested = nodesToObject(node.nodes, warnings, varReplacements);\n properties.push(t.objectProperty(t.stringLiteral(node.selector.trim()), nested));\n continue;\n }\n\n if (node.type === 'atrule') {\n const nested = nodesToObject(node.nodes, warnings, varReplacements);\n const atRuleKey = `@${node.name}${node.params ? ` ${node.params}` : ''}`;\n properties.push(t.objectProperty(t.stringLiteral(atRuleKey), nested));\n continue;\n }\n\n warnings.push({\n message: `Unsupported CSS node \"${node.type}\" skipped.`,\n });\n }\n\n return t.objectExpression(properties);\n}\n\nexport function cssToObjectExpression(\n cssText: string,\n warnings: MigrationWarning[],\n varReplacements?: Map<string, t.Identifier>,\n): t.ObjectExpression | null {\n try {\n const root = postcss.parse(cssText);\n return nodesToObject((root as unknown as Container).nodes, warnings, varReplacements);\n } catch (error) {\n warnings.push({\n message: `Could not parse CSS template literal: ${(error as Error).message}`,\n });\n return null;\n }\n}\n","import * as t from '@babel/types';\n\nexport type PropInterpolation = {\n index: number;\n propName: string;\n suffix: string;\n};\n\nexport type BooleanTernaryInterpolation = {\n index: number;\n propName: string;\n trueValue: string;\n falseValue: string;\n cssProperty: string;\n};\n\nconst PLACEHOLDER_PREFIX = '__ts_migrate_var_';\n\nfunction camelCaseProperty(property: string): string {\n return property.replace(/-([a-z])/g, (_, letter: string) => letter.toUpperCase());\n}\n\nexport function placeholderToken(index: number): string {\n return `${PLACEHOLDER_PREFIX}${index}__`;\n}\n\nfunction extractSuffixFromQuasi(quasiText: string): string {\n const match = quasiText.match(/^([^;\\n]*)/);\n return match?.[1] ?? '';\n}\n\nfunction literalToCssValue(node: t.Node): string | null {\n if (t.isStringLiteral(node)) return node.value;\n if (t.isNumericLiteral(node)) return String(node.value);\n return null;\n}\n\nfunction unwrapExpression(expression: t.Expression): t.Expression {\n if (t.isParenthesizedExpression(expression)) {\n return unwrapExpression(expression.expression);\n }\n return expression;\n}\n\nfunction extractCssPropertyBeforeInterpolation(quasiText: string): string | null {\n const match = quasiText.match(/([a-zA-Z-]+)\\s*:\\s*$/);\n return match?.[1] ?? null;\n}\n\nfunction stripTrailingPropertyDeclaration(quasiText: string): string {\n return quasiText.replace(/[a-zA-Z-]+\\s*:\\s*$/, '');\n}\n\nfunction stripLeadingDeclarationRemainder(quasiText: string): string {\n const semiIdx = quasiText.indexOf(';');\n if (semiIdx === -1) return quasiText;\n return quasiText.slice(semiIdx + 1).trimStart();\n}\n\n/**\n * Parse a styled-components prop interpolation such as\n * `(props) => props.color`, `props => props.width`, or `({ color }) => color`.\n */\nexport function parsePropInterpolation(expression: t.Expression): { propName: string } | null {\n if (!t.isArrowFunctionExpression(expression)) return null;\n\n const param = expression.params[0];\n if (!param) return null;\n\n const body = unwrapExpression(expression.body as t.Expression);\n if (!t.isExpression(body)) return null;\n\n if (t.isIdentifier(param)) {\n if (\n t.isMemberExpression(body) &&\n !body.computed &&\n t.isIdentifier(body.object, { name: param.name }) &&\n t.isIdentifier(body.property)\n ) {\n return { propName: body.property.name };\n }\n return null;\n }\n\n if (t.isObjectPattern(param) && t.isIdentifier(body)) {\n const propName = body.name;\n const hasProp = param.properties.some((property) => {\n if (!t.isObjectProperty(property)) return false;\n const keyName = t.isIdentifier(property.key)\n ? property.key.name\n : t.isStringLiteral(property.key)\n ? property.key.value\n : null;\n return keyName === propName;\n });\n if (!hasProp) return null;\n return { propName };\n }\n\n return null;\n}\n\n/**\n * Parse `${(props) => (props.primary ? '#0066ff' : '#6b7280')}` style interpolations.\n */\nexport function parseBooleanTernaryInterpolation(\n expression: t.Expression,\n): { propName: string; trueValue: string; falseValue: string } | null {\n if (!t.isArrowFunctionExpression(expression)) return null;\n\n const param = expression.params[0];\n if (!t.isIdentifier(param)) return null;\n\n const body = unwrapExpression(expression.body as t.Expression);\n if (!t.isConditionalExpression(body)) return null;\n\n if (\n !t.isMemberExpression(body.test) ||\n body.test.computed ||\n !t.isIdentifier(body.test.object, { name: param.name }) ||\n !t.isIdentifier(body.test.property)\n ) {\n return null;\n }\n\n const trueValue = literalToCssValue(body.consequent);\n const falseValue = literalToCssValue(body.alternate);\n if (trueValue === null || falseValue === null) return null;\n\n return {\n propName: body.test.property.name,\n trueValue,\n falseValue,\n };\n}\n\nexport function parseTemplateInterpolations(\n template: t.TemplateLiteral,\n): PropInterpolation[] | null {\n const interpolations: PropInterpolation[] = [];\n\n for (let i = 0; i < template.expressions.length; i++) {\n const expression = template.expressions[i];\n if (!t.isExpression(expression)) return null;\n\n const parsed = parsePropInterpolation(expression);\n if (!parsed) return null;\n\n const followingQuasi = template.quasis[i + 1]?.value.cooked ?? '';\n interpolations.push({\n index: i,\n propName: parsed.propName,\n suffix: extractSuffixFromQuasi(followingQuasi),\n });\n }\n\n return interpolations;\n}\n\nexport function parseBooleanTemplateInterpolations(\n template: t.TemplateLiteral,\n): BooleanTernaryInterpolation[] | null {\n const interpolations: BooleanTernaryInterpolation[] = [];\n\n for (let i = 0; i < template.expressions.length; i++) {\n const expression = template.expressions[i];\n if (!t.isExpression(expression)) return null;\n\n const parsed = parseBooleanTernaryInterpolation(expression);\n if (!parsed) return null;\n\n const quasiBefore = template.quasis[i]?.value.cooked ?? '';\n const cssProperty = extractCssPropertyBeforeInterpolation(quasiBefore);\n if (!cssProperty) return null;\n\n interpolations.push({\n index: i,\n propName: parsed.propName,\n trueValue: parsed.trueValue,\n falseValue: parsed.falseValue,\n cssProperty: camelCaseProperty(cssProperty),\n });\n }\n\n return interpolations;\n}\n\nexport function reconstructInterpolatedCss(\n template: t.TemplateLiteral,\n interpolations: PropInterpolation[],\n): string {\n let result = '';\n\n for (let i = 0; i < template.quasis.length; i++) {\n let quasiText = template.quasis[i].value.cooked ?? '';\n\n if (i > 0) {\n const interpolation = interpolations[i - 1];\n if (interpolation?.suffix && quasiText.startsWith(interpolation.suffix)) {\n quasiText = quasiText.slice(interpolation.suffix.length);\n }\n }\n\n result += quasiText;\n\n if (i < interpolations.length) {\n result += placeholderToken(interpolations[i].index);\n }\n }\n\n return result;\n}\n\nexport function reconstructStaticCssWithoutVariants(\n template: t.TemplateLiteral,\n booleanInterpolations: BooleanTernaryInterpolation[],\n): string {\n const skipIndices = new Set(booleanInterpolations.map((interpolation) => interpolation.index));\n let result = '';\n\n for (let i = 0; i < template.quasis.length; i++) {\n let quasiText = template.quasis[i].value.cooked ?? '';\n\n if (skipIndices.has(i)) {\n quasiText = stripTrailingPropertyDeclaration(quasiText);\n }\n\n if (i > 0 && skipIndices.has(i - 1)) {\n quasiText = stripLeadingDeclarationRemainder(quasiText);\n }\n\n result += quasiText;\n }\n\n return result.trim();\n}\n\nexport function toVarDebugName(componentName: string, propName: string): string {\n return `${componentName}${propName.charAt(0).toUpperCase()}${propName.slice(1)}`;\n}\n\nexport function toComponentConstName(componentName: string): string {\n if (!componentName) return componentName;\n return componentName.charAt(0).toLowerCase() + componentName.slice(1);\n}\n","import * as t from '@babel/types';\nimport type { BooleanTernaryInterpolation } from './interpolations';\n\nfunction toCssValueNode(value: string): t.Expression {\n if (/^-?\\d+(\\.\\d+)?$/.test(value.trim())) {\n return t.numericLiteral(Number(value));\n }\n return t.stringLiteral(value);\n}\n\nfunction toKeyNode(key: string): t.Expression {\n if (/^[A-Za-z_$][A-Za-z0-9_$]*$/.test(key)) {\n return t.identifier(key);\n }\n return t.stringLiteral(key);\n}\n\nfunction buildVariantStyles(properties: Record<string, string>): t.ObjectExpression {\n return t.objectExpression(\n Object.entries(properties).map(([key, value]) =>\n t.objectProperty(toKeyNode(key), toCssValueNode(value)),\n ),\n );\n}\n\n/** `recipe({ name, variants, styles })` argument. Axes are `variant.boolean`; option styles live under `styles`. */\nexport function buildVariantRecipeInput(\n name: string,\n baseObject: t.ObjectExpression,\n booleanInterpolations: BooleanTernaryInterpolation[],\n): t.ObjectExpression {\n const variantGroups = new Map<\n string,\n { true: Record<string, string>; false: Record<string, string> }\n >();\n\n for (const interpolation of booleanInterpolations) {\n const group = variantGroups.get(interpolation.propName) ?? { true: {}, false: {} };\n group.true[interpolation.cssProperty] = interpolation.trueValue;\n group.false[interpolation.cssProperty] = interpolation.falseValue;\n variantGroups.set(interpolation.propName, group);\n }\n\n const variantsProperties = [...variantGroups.entries()].map(([propName, values]) =>\n t.objectProperty(\n t.identifier(propName),\n t.objectExpression([\n t.objectProperty(t.identifier('true'), buildVariantStyles(values.true)),\n t.objectProperty(t.identifier('false'), buildVariantStyles(values.false)),\n ]),\n ),\n );\n\n const axisProperties = [...variantGroups.keys()].map((propName) =>\n t.objectProperty(\n t.identifier(propName),\n t.callExpression(t.memberExpression(t.identifier('variant'), t.identifier('boolean')), [\n t.objectExpression([t.objectProperty(t.identifier('default'), t.booleanLiteral(false))]),\n ]),\n ),\n );\n\n return t.objectExpression([\n t.objectProperty(t.identifier('name'), t.stringLiteral(name)),\n t.objectProperty(t.identifier('variants'), t.objectExpression(axisProperties)),\n t.objectProperty(\n t.identifier('styles'),\n t.objectExpression([\n t.objectProperty(t.identifier('base'), baseObject),\n t.objectProperty(t.identifier('variants'), t.objectExpression(variantsProperties)),\n ]),\n ),\n ]);\n}\n","import { parse } from '@babel/parser';\nimport generate from '@babel/generator';\nimport traverse, { type NodePath } from '@babel/traverse';\nimport * as t from '@babel/types';\nimport { cssToObjectExpression } from './css';\nimport {\n parseBooleanTemplateInterpolations,\n parseTemplateInterpolations,\n placeholderToken,\n reconstructInterpolatedCss,\n reconstructStaticCssWithoutVariants,\n toComponentConstName,\n toVarDebugName,\n} from './interpolations';\nimport type { FileMigrationResult, MigrationWarning } from './types';\nimport { buildVariantRecipeInput } from './variants';\n\ntype StyledTarget =\n | { kind: 'intrinsic'; jsxName: t.JSXIdentifier }\n | { kind: 'component'; jsxName: t.JSXIdentifier | t.JSXMemberExpression };\n\ntype PropVarBinding = {\n propName: string;\n varConstName: string;\n suffix: string;\n};\n\ntype StyledTransform = {\n originalName: string;\n mode: 'class' | 'component';\n classConstName: string;\n target: StyledTarget;\n propVars: PropVarBinding[];\n variantProps: string[];\n};\n\nfunction toKebabCase(input: string): string {\n return input\n .replace(/([a-z0-9])([A-Z])/g, '$1-$2')\n .replace(/[_\\s]+/g, '-')\n .toLowerCase();\n}\n\nfunction memberExpressionToJsxName(\n expression: t.Expression,\n): t.JSXIdentifier | t.JSXMemberExpression | null {\n if (t.isIdentifier(expression)) {\n return t.jsxIdentifier(expression.name);\n }\n\n if (t.isMemberExpression(expression) && !expression.computed) {\n const left = memberExpressionToJsxName(expression.object as t.Expression);\n const right = t.isIdentifier(expression.property)\n ? t.jsxIdentifier(expression.property.name)\n : null;\n if (!left || !right) return null;\n return t.jsxMemberExpression(left, right);\n }\n\n return null;\n}\n\nfunction parseStyledTarget(\n tag: t.TaggedTemplateExpression['tag'],\n styledNames: Set<string>,\n): StyledTarget | null {\n if (\n t.isMemberExpression(tag) &&\n t.isIdentifier(tag.object) &&\n styledNames.has(tag.object.name) &&\n t.isIdentifier(tag.property)\n ) {\n return { kind: 'intrinsic', jsxName: t.jsxIdentifier(tag.property.name) };\n }\n\n if (t.isCallExpression(tag) && t.isIdentifier(tag.callee) && styledNames.has(tag.callee.name)) {\n const firstArg = tag.arguments[0];\n if (!firstArg || !t.isExpression(firstArg)) return null;\n const jsxName = memberExpressionToJsxName(firstArg);\n if (!jsxName) return null;\n return { kind: 'component', jsxName };\n }\n\n return null;\n}\n\nfunction addWarning(warnings: MigrationWarning[], message: string, nodeName?: string): void {\n warnings.push({ message, nodeName });\n}\n\nfunction createMergedClassExpression(\n existing: t.Expression,\n classNameExpression: t.Expression,\n): t.Expression {\n return t.callExpression(\n t.memberExpression(\n t.callExpression(\n t.memberExpression(\n t.arrayExpression([existing, classNameExpression]),\n t.identifier('filter'),\n ),\n [t.identifier('Boolean')],\n ),\n t.identifier('join'),\n ),\n [t.stringLiteral(' ')],\n );\n}\n\nfunction updateClassNameAttribute(\n openingElement: t.JSXOpeningElement,\n classNameExpression: t.Expression,\n): void {\n const existingAttr = openingElement.attributes.find(\n (attribute): attribute is t.JSXAttribute =>\n t.isJSXAttribute(attribute) && t.isJSXIdentifier(attribute.name, { name: 'className' }),\n );\n\n if (!existingAttr) {\n openingElement.attributes.push(\n t.jsxAttribute(t.jsxIdentifier('className'), t.jsxExpressionContainer(classNameExpression)),\n );\n return;\n }\n\n if (!existingAttr.value) {\n existingAttr.value = t.jsxExpressionContainer(classNameExpression);\n return;\n }\n\n if (t.isStringLiteral(existingAttr.value)) {\n existingAttr.value = t.jsxExpressionContainer(\n createMergedClassExpression(t.stringLiteral(existingAttr.value.value), classNameExpression),\n );\n return;\n }\n\n if (t.isJSXExpressionContainer(existingAttr.value)) {\n existingAttr.value = t.jsxExpressionContainer(\n createMergedClassExpression(\n existingAttr.value.expression as t.Expression,\n classNameExpression,\n ),\n );\n }\n}\n\nfunction hasLocalBinding(ast: t.File, name: string): boolean {\n for (const statement of ast.program.body) {\n if (!t.isVariableDeclaration(statement)) continue;\n for (const declarator of statement.declarations) {\n if (t.isIdentifier(declarator.id) && declarator.id.name === name) return true;\n if (t.isObjectPattern(declarator.id)) {\n for (const prop of declarator.id.properties) {\n if (t.isObjectProperty(prop) && t.isIdentifier(prop.value) && prop.value.name === name) {\n return true;\n }\n }\n }\n }\n }\n return false;\n}\n\nfunction ensureTypestylesRuntime(\n ast: t.File,\n needs: { style: boolean; recipe: boolean; vars: boolean },\n): void {\n const requiredSpecifiers = new Set<string>(['createTypeStyles']);\n if (needs.recipe) requiredSpecifiers.add('variant');\n if (needs.vars) {\n requiredSpecifiers.add('createVar');\n requiredSpecifiers.add('assignVars');\n }\n\n let typestylesImport: t.ImportDeclaration | null = null;\n let lastImportIndex = -1;\n\n for (let i = 0; i < ast.program.body.length; i++) {\n const statement = ast.program.body[i];\n if (t.isImportDeclaration(statement)) {\n lastImportIndex = i;\n if (statement.source.value === 'typestyles' && typestylesImport == null) {\n typestylesImport = statement;\n }\n }\n }\n\n const buildSpecifiers = (names: Set<string>): t.ImportSpecifier[] =>\n [...names].map((name) => t.importSpecifier(t.identifier(name), t.identifier(name)));\n\n if (!typestylesImport) {\n ast.program.body.unshift(\n t.importDeclaration(buildSpecifiers(requiredSpecifiers), t.stringLiteral('typestyles')),\n );\n lastImportIndex = 0;\n } else {\n for (const name of requiredSpecifiers) {\n const hasSpecifier = typestylesImport.specifiers.some(\n (specifier) =>\n t.isImportSpecifier(specifier) &&\n t.isIdentifier(specifier.imported, { name }) &&\n t.isIdentifier(specifier.local, { name }),\n );\n\n if (!hasSpecifier) {\n typestylesImport.specifiers.push(t.importSpecifier(t.identifier(name), t.identifier(name)));\n }\n }\n }\n\n const destructureProps: t.ObjectProperty[] = [];\n if (needs.style && !hasLocalBinding(ast, 'style')) {\n destructureProps.push(\n t.objectProperty(t.identifier('style'), t.identifier('style'), false, true),\n );\n }\n if (needs.recipe && !hasLocalBinding(ast, 'recipe')) {\n destructureProps.push(\n t.objectProperty(t.identifier('recipe'), t.identifier('recipe'), false, true),\n );\n }\n\n if (destructureProps.length === 0) return;\n\n const factoryDecl = t.variableDeclaration('const', [\n t.variableDeclarator(\n t.objectPattern(destructureProps),\n t.callExpression(t.identifier('createTypeStyles'), []),\n ),\n ]);\n ast.program.body.splice(lastImportIndex + 1, 0, factoryDecl);\n}\n\nfunction cleanupUnusedImports(ast: t.File): void {\n traverse(ast, {\n Program(path) {\n path.scope.crawl();\n },\n ImportDeclaration(path) {\n const unusedLocals = path.node.specifiers.filter((specifier) => {\n if (\n path.node.source.value === 'typestyles' &&\n t.isImportSpecifier(specifier) &&\n (specifier.local.name === 'createTypeStyles' ||\n specifier.local.name === 'createVar' ||\n specifier.local.name === 'assignVars')\n ) {\n return false;\n }\n const local = specifier.local.name;\n const binding = path.scope.getBinding(local);\n return !binding || binding.referencePaths.length === 0;\n });\n\n if (unusedLocals.length === 0) return;\n\n path.node.specifiers = path.node.specifiers.filter(\n (specifier) => !unusedLocals.includes(specifier),\n );\n if (path.node.specifiers.length === 0) {\n path.remove();\n }\n },\n });\n}\n\nfunction createAssignVarValue(propExpression: t.Expression, suffix: string): t.Expression {\n if (!suffix) return propExpression;\n\n if (t.isStringLiteral(propExpression)) {\n return t.stringLiteral(`${propExpression.value}${suffix}`);\n }\n\n return t.binaryExpression('+', propExpression, t.stringLiteral(suffix));\n}\n\nfunction buildAssignVarsCall(\n propVars: PropVarBinding[],\n propValues: Map<string, t.Expression>,\n): t.CallExpression {\n const properties = propVars\n .filter((binding) => propValues.has(binding.propName))\n .map((binding) => {\n const propExpression = propValues.get(binding.propName)!;\n return t.objectProperty(\n t.identifier(binding.varConstName),\n createAssignVarValue(propExpression, binding.suffix),\n true,\n );\n });\n\n return t.callExpression(t.identifier('assignVars'), [t.objectExpression(properties)]);\n}\n\nfunction mergeStyleExpressions(\n existing: t.Expression,\n assignVarsCall: t.CallExpression,\n): t.Expression {\n return t.objectExpression([t.spreadElement(existing), t.spreadElement(assignVarsCall)]);\n}\n\nfunction updateStyleAttribute(\n openingElement: t.JSXOpeningElement,\n assignVarsCall: t.CallExpression,\n): void {\n const existingAttr = openingElement.attributes.find(\n (attribute): attribute is t.JSXAttribute =>\n t.isJSXAttribute(attribute) && t.isJSXIdentifier(attribute.name, { name: 'style' }),\n );\n\n if (!existingAttr) {\n openingElement.attributes.push(\n t.jsxAttribute(t.jsxIdentifier('style'), t.jsxExpressionContainer(assignVarsCall)),\n );\n return;\n }\n\n if (!existingAttr.value) {\n existingAttr.value = t.jsxExpressionContainer(assignVarsCall);\n return;\n }\n\n if (t.isJSXExpressionContainer(existingAttr.value)) {\n existingAttr.value = t.jsxExpressionContainer(\n mergeStyleExpressions(existingAttr.value.expression as t.Expression, assignVarsCall),\n );\n }\n}\n\nfunction collectPropValuesFromJsx(\n openingElement: t.JSXOpeningElement,\n propNames: Set<string>,\n): Map<string, t.Expression> {\n const values = new Map<string, t.Expression>();\n\n for (const attribute of openingElement.attributes) {\n if (!t.isJSXAttribute(attribute) || !t.isJSXIdentifier(attribute.name)) continue;\n if (!propNames.has(attribute.name.name)) continue;\n\n if (!attribute.value) {\n values.set(attribute.name.name, t.booleanLiteral(true));\n continue;\n }\n\n if (t.isStringLiteral(attribute.value)) {\n values.set(attribute.name.name, t.stringLiteral(attribute.value.value));\n continue;\n }\n\n if (t.isJSXExpressionContainer(attribute.value)) {\n values.set(attribute.name.name, attribute.value.expression as t.Expression);\n }\n }\n\n return values;\n}\n\nfunction removeStyledProps(openingElement: t.JSXOpeningElement, propNames: Set<string>): void {\n openingElement.attributes = openingElement.attributes.filter((attribute) => {\n if (!t.isJSXAttribute(attribute) || !t.isJSXIdentifier(attribute.name)) return true;\n return !propNames.has(attribute.name.name);\n });\n}\n\nfunction buildComponentClassNameExpression(\n componentConstName: string,\n variantProps: string[],\n propValues: Map<string, t.Expression>,\n): t.MemberExpression {\n const properties = variantProps\n .filter((propName) => propValues.has(propName))\n .map((propName) => t.objectProperty(t.identifier(propName), propValues.get(propName)!));\n\n const call =\n properties.length === 0\n ? t.callExpression(t.identifier(componentConstName), [])\n : t.callExpression(t.identifier(componentConstName), [t.objectExpression(properties)]);\n\n return t.memberExpression(call, t.identifier('className'));\n}\n\nfunction migrateBooleanVariantTemplate(\n path: NodePath<t.VariableDeclarator>,\n variableName: string,\n template: t.TemplateLiteral,\n styledTarget: StyledTarget,\n warnings: MigrationWarning[],\n styledTransforms: Map<string, StyledTransform>,\n): boolean {\n const booleanInterpolations = parseBooleanTemplateInterpolations(template);\n if (!booleanInterpolations) return false;\n\n const staticCss = reconstructStaticCssWithoutVariants(template, booleanInterpolations);\n const baseObject = cssToObjectExpression(staticCss, warnings);\n if (!baseObject) {\n addWarning(warnings, 'Skipped because CSS could not be parsed.', variableName);\n return false;\n }\n\n const componentConstName = path.scope.generateUidIdentifier(\n toComponentConstName(variableName),\n ).name;\n const recipeInput = buildVariantRecipeInput(\n toKebabCase(variableName),\n baseObject,\n booleanInterpolations,\n );\n const variantProps = [\n ...new Set(booleanInterpolations.map((interpolation) => interpolation.propName)),\n ];\n\n const declaration = path.parentPath;\n if (!declaration.isVariableDeclaration()) return false;\n\n declaration.node.declarations = [\n t.variableDeclarator(\n t.identifier(componentConstName),\n t.callExpression(t.identifier('recipe'), [recipeInput]),\n ),\n ];\n\n styledTransforms.set(variableName, {\n originalName: variableName,\n mode: 'component',\n classConstName: componentConstName,\n target: styledTarget,\n propVars: [],\n variantProps,\n });\n\n return true;\n}\n\nfunction migrateInterpolatedTemplate(\n path: NodePath<t.VariableDeclarator>,\n variableName: string,\n template: t.TemplateLiteral,\n styledTarget: StyledTarget,\n warnings: MigrationWarning[],\n styledTransforms: Map<string, StyledTransform>,\n): boolean {\n const interpolations = parseTemplateInterpolations(template);\n if (!interpolations) {\n addWarning(\n warnings,\n 'Skipped template literal with unsupported interpolations. Only prop-based patterns like `${props => props.color}` are migrated.',\n variableName,\n );\n return false;\n }\n\n const cssText = reconstructInterpolatedCss(template, interpolations);\n const propVars: PropVarBinding[] = interpolations.map((interpolation) => ({\n propName: interpolation.propName,\n varConstName: path.scope.generateUidIdentifier(\n `${variableName}${interpolation.propName.charAt(0).toUpperCase()}${interpolation.propName.slice(1)}Var`,\n ).name,\n suffix: interpolation.suffix,\n }));\n\n const varReplacements = new Map<string, t.Identifier>();\n for (let i = 0; i < interpolations.length; i++) {\n varReplacements.set(\n placeholderToken(interpolations[i].index),\n t.identifier(propVars[i].varConstName),\n );\n }\n\n const objectExpression = cssToObjectExpression(cssText, warnings, varReplacements);\n if (!objectExpression) {\n addWarning(warnings, 'Skipped because CSS could not be parsed.', variableName);\n return false;\n }\n\n const classConstName = path.scope.generateUidIdentifier(`${variableName}Class`).name;\n const varDeclarators = propVars.map((propVar) =>\n t.variableDeclarator(\n t.identifier(propVar.varConstName),\n t.callExpression(t.identifier('createVar'), [\n t.stringLiteral(toVarDebugName(variableName, propVar.propName)),\n ]),\n ),\n );\n\n const declaration = path.parentPath;\n if (!declaration.isVariableDeclaration()) return false;\n\n declaration.node.declarations = [\n ...varDeclarators,\n t.variableDeclarator(\n t.identifier(classConstName),\n t.callExpression(t.identifier('style'), [\n t.stringLiteral(toKebabCase(variableName)),\n objectExpression,\n ]),\n ),\n ];\n\n styledTransforms.set(variableName, {\n originalName: variableName,\n mode: 'class',\n classConstName,\n target: styledTarget,\n propVars,\n variantProps: [],\n });\n\n return true;\n}\n\nfunction isOnlyJsxReferences(\n binding: NodePath<t.VariableDeclarator>['scope']['bindings'][string],\n): boolean {\n return binding.referencePaths.every((referencePath) => {\n const parent = referencePath.parentPath;\n if (!parent) return false;\n return (\n (parent.isJSXOpeningElement() && parent.get('name') === referencePath) ||\n (parent.isJSXClosingElement() && parent.get('name') === referencePath)\n );\n });\n}\n\nexport function migrateSource(filePath: string, source: string): FileMigrationResult {\n const warnings: MigrationWarning[] = [];\n let changed = false;\n\n const ast = parse(source, {\n sourceType: 'module',\n plugins: ['typescript', 'jsx'],\n });\n\n const styledNames = new Set<string>();\n const cssTagNames = new Set<string>();\n const styledTransforms = new Map<string, StyledTransform>();\n let needsVars = false;\n let needsStyle = false;\n let needsRecipe = false;\n\n traverse(ast, {\n ImportDeclaration(path) {\n if (\n path.node.source.value === 'styled-components' ||\n path.node.source.value === '@emotion/styled'\n ) {\n for (const specifier of path.node.specifiers) {\n if (t.isImportDefaultSpecifier(specifier)) {\n styledNames.add(specifier.local.name);\n }\n if (\n t.isImportSpecifier(specifier) &&\n t.isIdentifier(specifier.imported, { name: 'css' })\n ) {\n cssTagNames.add(specifier.local.name);\n }\n }\n }\n\n if (\n path.node.source.value === '@emotion/react' ||\n path.node.source.value === '@emotion/css'\n ) {\n for (const specifier of path.node.specifiers) {\n if (\n t.isImportSpecifier(specifier) &&\n t.isIdentifier(specifier.imported, { name: 'css' })\n ) {\n cssTagNames.add(specifier.local.name);\n }\n }\n }\n },\n });\n\n traverse(ast, {\n VariableDeclarator(path) {\n if (!t.isIdentifier(path.node.id)) return;\n if (!t.isTaggedTemplateExpression(path.node.init)) return;\n\n const variableName = path.node.id.name;\n const binding = path.scope.getBinding(variableName);\n if (!binding) return;\n\n const template = path.node.init.quasi;\n const hasInterpolations = template.expressions.length > 0;\n const styledTarget = parseStyledTarget(path.node.init.tag, styledNames);\n\n if (hasInterpolations) {\n if (!styledTarget) {\n addWarning(\n warnings,\n 'Skipped template literal with interpolations. Only styled-components prop patterns are migrated.',\n variableName,\n );\n return;\n }\n\n const declaration = path.parentPath;\n if (\n declaration.parentPath?.isExportNamedDeclaration() ||\n declaration.parentPath?.isExportDefaultDeclaration()\n ) {\n addWarning(\n warnings,\n 'Skipped exported styled component to avoid changing external API shape.',\n variableName,\n );\n return;\n }\n\n if (!isOnlyJsxReferences(binding)) {\n addWarning(warnings, 'Skipped styled component with non-JSX references.', variableName);\n return;\n }\n\n if (\n migrateBooleanVariantTemplate(\n path,\n variableName,\n template,\n styledTarget,\n warnings,\n styledTransforms,\n )\n ) {\n needsRecipe = true;\n changed = true;\n return;\n }\n\n if (\n migrateInterpolatedTemplate(\n path,\n variableName,\n template,\n styledTarget,\n warnings,\n styledTransforms,\n )\n ) {\n needsVars = true;\n needsStyle = true;\n changed = true;\n }\n return;\n }\n\n const cssText = template.quasis.map((quasi) => quasi.value.cooked ?? '').join('');\n const objectExpression = cssToObjectExpression(cssText, warnings);\n if (!objectExpression) {\n addWarning(warnings, 'Skipped because CSS could not be parsed.', variableName);\n return;\n }\n\n if (styledTarget) {\n const declaration = path.parentPath;\n if (\n declaration.parentPath?.isExportNamedDeclaration() ||\n declaration.parentPath?.isExportDefaultDeclaration()\n ) {\n addWarning(\n warnings,\n 'Skipped exported styled component to avoid changing external API shape.',\n variableName,\n );\n return;\n }\n\n if (!isOnlyJsxReferences(binding)) {\n addWarning(warnings, 'Skipped styled component with non-JSX references.', variableName);\n return;\n }\n\n const classConstName = path.scope.generateUidIdentifier(`${variableName}Class`).name;\n path.node.id = t.identifier(classConstName);\n path.node.init = t.callExpression(t.identifier('style'), [\n t.stringLiteral(toKebabCase(variableName)),\n objectExpression,\n ]);\n\n styledTransforms.set(variableName, {\n originalName: variableName,\n mode: 'class',\n classConstName,\n target: styledTarget,\n propVars: [],\n variantProps: [],\n });\n needsStyle = true;\n changed = true;\n return;\n }\n\n if (t.isIdentifier(path.node.init.tag) && cssTagNames.has(path.node.init.tag.name)) {\n path.node.init = t.callExpression(t.identifier('style'), [\n t.stringLiteral(toKebabCase(variableName)),\n objectExpression,\n ]);\n needsStyle = true;\n changed = true;\n }\n },\n });\n\n if (styledTransforms.size > 0) {\n traverse(ast, {\n JSXElement(path) {\n const openingName = path.node.openingElement.name;\n if (!t.isJSXIdentifier(openingName)) return;\n const transform = styledTransforms.get(openingName.name);\n if (!transform) return;\n\n path.node.openingElement.name = transform.target.jsxName;\n if (path.node.closingElement) {\n path.node.closingElement.name = transform.target.jsxName;\n }\n\n const classNameExpression =\n transform.mode === 'component'\n ? buildComponentClassNameExpression(\n transform.classConstName,\n transform.variantProps,\n collectPropValuesFromJsx(path.node.openingElement, new Set(transform.variantProps)),\n )\n : t.identifier(transform.classConstName);\n\n updateClassNameAttribute(path.node.openingElement, classNameExpression);\n\n if (transform.propVars.length > 0) {\n const propNames = new Set(transform.propVars.map((propVar) => propVar.propName));\n const propValues = collectPropValuesFromJsx(path.node.openingElement, propNames);\n\n if (propValues.size > 0) {\n const assignVarsCall = buildAssignVarsCall(transform.propVars, propValues);\n updateStyleAttribute(path.node.openingElement, assignVarsCall);\n removeStyledProps(path.node.openingElement, propNames);\n }\n }\n\n if (transform.variantProps.length > 0) {\n removeStyledProps(path.node.openingElement, new Set(transform.variantProps));\n }\n },\n });\n }\n\n if (changed) {\n ensureTypestylesRuntime(ast, {\n style: needsStyle,\n recipe: needsRecipe,\n vars: needsVars,\n });\n cleanupUnusedImports(ast);\n }\n\n const output = generate(\n ast,\n {\n retainLines: false,\n comments: true,\n concise: false,\n },\n source,\n );\n\n return {\n filePath,\n changed: changed && output.code !== source,\n code: output.code,\n warnings,\n };\n}\n","import { stat } from 'node:fs/promises';\nimport { extname, relative, resolve } from 'node:path';\nimport fg from 'fast-glob';\nimport picomatch from 'picomatch';\n\nconst DEFAULT_EXCLUDES = ['**/node_modules/**', '**/dist/**', '**/.next/**', '**/.turbo/**'];\n\nfunction normalizeExtension(extension: string): string {\n return extension.startsWith('.') ? extension : `.${extension}`;\n}\n\nexport async function collectTargetFiles(\n cwd: string,\n targets: string[],\n extensions: string[],\n include: string[],\n exclude: string[],\n): Promise<string[]> {\n const normalizedTargets = targets.length > 0 ? targets : ['.'];\n const literalFiles: string[] = [];\n const dynamicPatterns: string[] = [];\n\n for (const target of normalizedTargets) {\n const absolute = resolve(cwd, target);\n try {\n const targetStat = await stat(absolute);\n if (targetStat.isFile()) {\n literalFiles.push(absolute);\n } else if (targetStat.isDirectory()) {\n dynamicPatterns.push(`${absolute.split('\\\\').join('/')}/**/*`);\n }\n } catch {\n dynamicPatterns.push(target);\n }\n }\n\n const globbed = await fg(dynamicPatterns, {\n cwd,\n absolute: true,\n onlyFiles: true,\n ignore: [...DEFAULT_EXCLUDES, ...exclude],\n });\n\n const extensionSet = new Set(extensions.map(normalizeExtension));\n const includeMatchers = include.length > 0 ? include.map((pattern) => picomatch(pattern)) : null;\n const unique = new Set([...literalFiles, ...globbed]);\n\n return Array.from(unique)\n .filter((filePath) => extensionSet.has(extname(filePath)))\n .filter((filePath) => {\n if (!includeMatchers) return true;\n const rel = relative(cwd, filePath).split('\\\\').join('/');\n return includeMatchers.some((matcher) => matcher(rel));\n })\n .sort();\n}\n","import { mkdir, readFile, writeFile } from 'node:fs/promises';\nimport { dirname, relative } from 'node:path';\nimport { createPatch } from 'diff';\nimport type { CliOptions, MigrationReport, MigrationSummary } from './types';\nimport { collectTargetFiles } from './files';\nimport { migrateSource } from './transform';\n\nfunction renderPatch(filePath: string, before: string, after: string): string {\n return createPatch(filePath, before, after, 'before', 'after').split('\\n').slice(2).join('\\n');\n}\n\nexport async function runMigration(cwd: string, options: CliOptions): Promise<MigrationReport> {\n const files = await collectTargetFiles(\n cwd,\n options.targets,\n options.extensions,\n options.include,\n options.exclude,\n );\n\n const reportEntries: MigrationReport['files'] = [];\n let changedCount = 0;\n let warningCount = 0;\n\n for (const filePath of files) {\n const before = await readFile(filePath, 'utf8');\n const result = migrateSource(filePath, before);\n const relativePath = relative(cwd, filePath);\n\n warningCount += result.warnings.length;\n if (result.changed) {\n changedCount += 1;\n if (options.write) {\n await writeFile(filePath, result.code, 'utf8');\n process.stdout.write(`updated ${relativePath}\\n`);\n } else {\n process.stdout.write(`\\n--- ${relativePath} (dry-run) ---\\n`);\n process.stdout.write(`${renderPatch(relativePath, before, result.code)}\\n`);\n }\n }\n\n for (const warning of result.warnings) {\n const nodeLabel = warning.nodeName ? ` (${warning.nodeName})` : '';\n process.stdout.write(`warning ${relativePath}${nodeLabel}: ${warning.message}\\n`);\n }\n\n reportEntries.push({\n filePath: relativePath,\n changed: result.changed,\n warnings: result.warnings,\n });\n }\n\n const summary: MigrationSummary = {\n filesScanned: files.length,\n filesChanged: changedCount,\n warnings: warningCount,\n };\n\n process.stdout.write(\n `\\nScanned ${summary.filesScanned} files, changed ${summary.filesChanged}, warnings ${summary.warnings}.\\n`,\n );\n\n const report: MigrationReport = {\n summary,\n files: reportEntries,\n };\n\n if (options.reportPath) {\n await mkdir(dirname(options.reportPath), { recursive: true });\n await writeFile(options.reportPath, `${JSON.stringify(report, null, 2)}\\n`, 'utf8');\n process.stdout.write(`Report written to ${options.reportPath}\\n`);\n }\n\n return report;\n}\n"]}
package/dist/cli.cjs CHANGED
@@ -302,7 +302,7 @@ function buildVariantStyles(properties) {
302
302
  )
303
303
  );
304
304
  }
305
- function buildVariantComponentConfig(baseObject, booleanInterpolations) {
305
+ function buildVariantRecipeInput(name, baseObject, booleanInterpolations) {
306
306
  const variantGroups = /* @__PURE__ */ new Map();
307
307
  for (const interpolation of booleanInterpolations) {
308
308
  const group = variantGroups.get(interpolation.propName) ?? { true: {}, false: {} };
@@ -319,13 +319,24 @@ function buildVariantComponentConfig(baseObject, booleanInterpolations) {
319
319
  ])
320
320
  )
321
321
  );
322
- const defaultVariantProperties = [...variantGroups.keys()].map(
323
- (propName) => t4__namespace.objectProperty(t4__namespace.identifier(propName), t4__namespace.booleanLiteral(false))
322
+ const axisProperties = [...variantGroups.keys()].map(
323
+ (propName) => t4__namespace.objectProperty(
324
+ t4__namespace.identifier(propName),
325
+ t4__namespace.callExpression(t4__namespace.memberExpression(t4__namespace.identifier("variant"), t4__namespace.identifier("boolean")), [
326
+ t4__namespace.objectExpression([t4__namespace.objectProperty(t4__namespace.identifier("default"), t4__namespace.booleanLiteral(false))])
327
+ ])
328
+ )
324
329
  );
325
330
  return t4__namespace.objectExpression([
326
- t4__namespace.objectProperty(t4__namespace.identifier("base"), baseObject),
327
- t4__namespace.objectProperty(t4__namespace.identifier("variants"), t4__namespace.objectExpression(variantsProperties)),
328
- t4__namespace.objectProperty(t4__namespace.identifier("defaultVariants"), t4__namespace.objectExpression(defaultVariantProperties))
331
+ t4__namespace.objectProperty(t4__namespace.identifier("name"), t4__namespace.stringLiteral(name)),
332
+ t4__namespace.objectProperty(t4__namespace.identifier("variants"), t4__namespace.objectExpression(axisProperties)),
333
+ t4__namespace.objectProperty(
334
+ t4__namespace.identifier("styles"),
335
+ t4__namespace.objectExpression([
336
+ t4__namespace.objectProperty(t4__namespace.identifier("base"), baseObject),
337
+ t4__namespace.objectProperty(t4__namespace.identifier("variants"), t4__namespace.objectExpression(variantsProperties))
338
+ ])
339
+ )
329
340
  ]);
330
341
  }
331
342
 
@@ -423,6 +434,7 @@ function hasLocalBinding(ast, name) {
423
434
  }
424
435
  function ensureTypestylesRuntime(ast, needs) {
425
436
  const requiredSpecifiers = /* @__PURE__ */ new Set(["createTypeStyles"]);
437
+ if (needs.recipe) requiredSpecifiers.add("variant");
426
438
  if (needs.vars) {
427
439
  requiredSpecifiers.add("createVar");
428
440
  requiredSpecifiers.add("assignVars");
@@ -566,10 +578,8 @@ function removeStyledProps(openingElement, propNames) {
566
578
  }
567
579
  function buildComponentClassNameExpression(componentConstName, variantProps, propValues) {
568
580
  const properties = variantProps.filter((propName) => propValues.has(propName)).map((propName) => t4__namespace.objectProperty(t4__namespace.identifier(propName), propValues.get(propName)));
569
- if (properties.length === 0) {
570
- return t4__namespace.callExpression(t4__namespace.identifier(componentConstName), []);
571
- }
572
- return t4__namespace.callExpression(t4__namespace.identifier(componentConstName), [t4__namespace.objectExpression(properties)]);
581
+ const call = properties.length === 0 ? t4__namespace.callExpression(t4__namespace.identifier(componentConstName), []) : t4__namespace.callExpression(t4__namespace.identifier(componentConstName), [t4__namespace.objectExpression(properties)]);
582
+ return t4__namespace.memberExpression(call, t4__namespace.identifier("className"));
573
583
  }
574
584
  function migrateBooleanVariantTemplate(path, variableName, template, styledTarget, warnings, styledTransforms) {
575
585
  const booleanInterpolations = parseBooleanTemplateInterpolations(template);
@@ -583,7 +593,11 @@ function migrateBooleanVariantTemplate(path, variableName, template, styledTarge
583
593
  const componentConstName = path.scope.generateUidIdentifier(
584
594
  toComponentConstName(variableName)
585
595
  ).name;
586
- const componentConfig = buildVariantComponentConfig(baseObject, booleanInterpolations);
596
+ const recipeInput = buildVariantRecipeInput(
597
+ toKebabCase(variableName),
598
+ baseObject,
599
+ booleanInterpolations
600
+ );
587
601
  const variantProps = [
588
602
  ...new Set(booleanInterpolations.map((interpolation) => interpolation.propName))
589
603
  ];
@@ -592,10 +606,7 @@ function migrateBooleanVariantTemplate(path, variableName, template, styledTarge
592
606
  declaration.node.declarations = [
593
607
  t4__namespace.variableDeclarator(
594
608
  t4__namespace.identifier(componentConstName),
595
- t4__namespace.callExpression(t4__namespace.identifier("recipe"), [
596
- t4__namespace.stringLiteral(toKebabCase(variableName)),
597
- componentConfig
598
- ])
609
+ t4__namespace.callExpression(t4__namespace.identifier("recipe"), [recipeInput])
599
610
  )
600
611
  ];
601
612
  styledTransforms.set(variableName, {