Skip to content

feat: MUI 4 to BUI migration - core component codemods (#112, #113, #114, #115, #116)#129

Open
schultzp2020 wants to merge 6 commits into
mainfrom
feat/mui4-to-bui-core-components
Open

feat: MUI 4 to BUI migration - core component codemods (#112, #113, #114, #115, #116)#129
schultzp2020 wants to merge 6 commits into
mainfrom
feat/mui4-to-bui-core-components

Conversation

@schultzp2020

@schultzp2020 schultzp2020 commented Jun 25, 2026

Copy link
Copy Markdown
Contributor

Summary

Add 5 core component codemods for the MUI 4 to BUI migration:

Codemod Issue Description
@backstage/migrate-mui-typography-to-text #112 Typography→Text with variant/color mapping
@backstage/migrate-mui-alert-to-bui-alert #113 Alert with severity→status mapping
@backstage/migrate-mui-button-to-bui-button #114 Button with variant mapping (contained→primary, etc.)
@backstage/migrate-mui-icon-button-to-button-icon #115 IconButton→ButtonIcon with icon/aria-label extraction
@backstage/migrate-mui-tooltip-to-bui-tooltip #116 Tooltip→TooltipTrigger wrapper pattern

All codemods use AST-based transforms (JSSG/ast-grep). All tests pass. All workflows validate.

Closes #112
Closes #113
Closes #114
Closes #115
Closes #116

schultzp2020 and others added 3 commits June 24, 2026 21:22
Add 5 core component codemods:
- migrate-mui-typography-to-text (#112)
- migrate-mui-alert-to-bui-alert (#113)
- migrate-mui-button-to-bui-button (#114)
- migrate-mui-icon-button-to-button-icon (#115)
- migrate-mui-tooltip-to-bui-tooltip (#116)

Closes #112, #113, #114, #115, #116
Replace async transforms with Promise.resolve returns and remove non-null
assertions to satisfy oxlint --deny-warnings in CI.

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR adds five new “misc” codemod packages intended to help migrate Backstage code from MUI v4 components to BUI equivalents (Typography→Text, Alert→Alert, Button→Button, IconButton→ButtonIcon, Tooltip→TooltipTrigger pattern), along with fixture-based tests, workflow definitions, and a changeset to publish initial minor versions.

Changes:

  • Add 5 new codemod packages under codemods/misc/ with codemod.yaml, workflow, TS configs, and AST-grep transforms.
  • Add fixture-based tests (input/expected) + metrics for each codemod.
  • Wire the new packages into repo metadata (README.md, yarn.lock) and publishing (.changeset/...).

Reviewed changes

Copilot reviewed 172 out of 173 changed files in this pull request and generated 6 comments.

Show a summary per file
File Description
yarn.lock Adds workspace entries for the 5 new codemod packages
README.md Documents new misc codemods with links/descriptions
codemods/misc/migrate-mui-typography-to-text/workflow.yaml Workflow to run Typography→Text transform
codemods/misc/migrate-mui-typography-to-text/tsconfig.json TS config for the codemod package
codemods/misc/migrate-mui-typography-to-text/package.json Package metadata + test script
codemods/misc/migrate-mui-typography-to-text/codemod.yaml Codemod registry metadata
codemods/misc/migrate-mui-typography-to-text/CHANGELOG.md Initial changelog stub
codemods/misc/migrate-mui-typography-to-text/scripts/codemod.ts AST transform implementation
codemods/misc/migrate-mui-typography-to-text/tests/unmapped-variant-todo/metrics.json Test metrics fixture
codemods/misc/migrate-mui-typography-to-text/tests/unmapped-variant-todo/input.tsx Test input fixture
codemods/misc/migrate-mui-typography-to-text/tests/unmapped-variant-todo/expected.tsx Test expected fixture
codemods/misc/migrate-mui-typography-to-text/tests/preserve-children/metrics.json Test metrics fixture
codemods/misc/migrate-mui-typography-to-text/tests/preserve-children/input.tsx Test input fixture
codemods/misc/migrate-mui-typography-to-text/tests/preserve-children/expected.tsx Test expected fixture
codemods/misc/migrate-mui-typography-to-text/tests/noop-no-mui-import/input.tsx Test input fixture
codemods/misc/migrate-mui-typography-to-text/tests/noop-no-mui-import/expected.tsx Test expected fixture
codemods/misc/migrate-mui-typography-to-text/tests/noop-no-import/input.tsx Test input fixture
codemods/misc/migrate-mui-typography-to-text/tests/noop-no-import/expected.tsx Test expected fixture
codemods/misc/migrate-mui-typography-to-text/tests/named-barrel-import/metrics.json Test metrics fixture
codemods/misc/migrate-mui-typography-to-text/tests/named-barrel-import/input.tsx Test input fixture
codemods/misc/migrate-mui-typography-to-text/tests/named-barrel-import/expected.tsx Test expected fixture
codemods/misc/migrate-mui-typography-to-text/tests/merge-existing-bui/metrics.json Test metrics fixture
codemods/misc/migrate-mui-typography-to-text/tests/merge-existing-bui/input.tsx Test input fixture
codemods/misc/migrate-mui-typography-to-text/tests/merge-existing-bui/expected.tsx Test expected fixture
codemods/misc/migrate-mui-typography-to-text/tests/heading-variant/metrics.json Test metrics fixture
codemods/misc/migrate-mui-typography-to-text/tests/heading-variant/input.tsx Test input fixture
codemods/misc/migrate-mui-typography-to-text/tests/heading-variant/expected.tsx Test expected fixture
codemods/misc/migrate-mui-typography-to-text/tests/gutter-bottom-dropped/metrics.json Test metrics fixture
codemods/misc/migrate-mui-typography-to-text/tests/gutter-bottom-dropped/input.tsx Test input fixture
codemods/misc/migrate-mui-typography-to-text/tests/gutter-bottom-dropped/expected.tsx Test expected fixture
codemods/misc/migrate-mui-typography-to-text/tests/extra-props-preserved/metrics.json Test metrics fixture
codemods/misc/migrate-mui-typography-to-text/tests/extra-props-preserved/input.tsx Test input fixture
codemods/misc/migrate-mui-typography-to-text/tests/extra-props-preserved/expected.tsx Test expected fixture
codemods/misc/migrate-mui-typography-to-text/tests/dialog-content-text/metrics.json Test metrics fixture
codemods/misc/migrate-mui-typography-to-text/tests/dialog-content-text/input.tsx Test input fixture
codemods/misc/migrate-mui-typography-to-text/tests/dialog-content-text/expected.tsx Test expected fixture
codemods/misc/migrate-mui-typography-to-text/tests/component-to-as/metrics.json Test metrics fixture
codemods/misc/migrate-mui-typography-to-text/tests/component-to-as/input.tsx Test input fixture
codemods/misc/migrate-mui-typography-to-text/tests/component-to-as/expected.tsx Test expected fixture
codemods/misc/migrate-mui-typography-to-text/tests/basic-body-text/metrics.json Test metrics fixture
codemods/misc/migrate-mui-typography-to-text/tests/basic-body-text/input.tsx Test input fixture
codemods/misc/migrate-mui-typography-to-text/tests/basic-body-text/expected.tsx Test expected fixture
codemods/misc/migrate-mui-tooltip-to-bui-tooltip/workflow.yaml Workflow to run Tooltip→TooltipTrigger transform
codemods/misc/migrate-mui-tooltip-to-bui-tooltip/tsconfig.json TS config for the codemod package
codemods/misc/migrate-mui-tooltip-to-bui-tooltip/package.json Package metadata + test script
codemods/misc/migrate-mui-tooltip-to-bui-tooltip/codemod.yaml Codemod registry metadata
codemods/misc/migrate-mui-tooltip-to-bui-tooltip/CHANGELOG.md Initial changelog stub
codemods/misc/migrate-mui-tooltip-to-bui-tooltip/scripts/codemod.ts AST transform implementation
codemods/misc/migrate-mui-tooltip-to-bui-tooltip/tests/simple-wrapper/metrics.json Test metrics fixture
codemods/misc/migrate-mui-tooltip-to-bui-tooltip/tests/simple-wrapper/input.tsx Test input fixture
codemods/misc/migrate-mui-tooltip-to-bui-tooltip/tests/simple-wrapper/expected.tsx Test expected fixture
codemods/misc/migrate-mui-tooltip-to-bui-tooltip/tests/placement-dropped/metrics.json Test metrics fixture
codemods/misc/migrate-mui-tooltip-to-bui-tooltip/tests/placement-dropped/input.tsx Test input fixture
codemods/misc/migrate-mui-tooltip-to-bui-tooltip/tests/placement-dropped/expected.tsx Test expected fixture
codemods/misc/migrate-mui-tooltip-to-bui-tooltip/tests/noop-no-import/input.tsx Test input fixture
codemods/misc/migrate-mui-tooltip-to-bui-tooltip/tests/noop-no-import/expected.tsx Test expected fixture
codemods/misc/migrate-mui-tooltip-to-bui-tooltip/tests/named-barrel-import/metrics.json Test metrics fixture
codemods/misc/migrate-mui-tooltip-to-bui-tooltip/tests/named-barrel-import/input.tsx Test input fixture
codemods/misc/migrate-mui-tooltip-to-bui-tooltip/tests/named-barrel-import/expected.tsx Test expected fixture
codemods/misc/migrate-mui-tooltip-to-bui-tooltip/tests/merge-existing-bui/metrics.json Test metrics fixture
codemods/misc/migrate-mui-tooltip-to-bui-tooltip/tests/merge-existing-bui/input.tsx Test input fixture
codemods/misc/migrate-mui-tooltip-to-bui-tooltip/tests/merge-existing-bui/expected.tsx Test expected fixture
codemods/misc/migrate-mui-tooltip-to-bui-tooltip/tests/dynamic-title/metrics.json Test metrics fixture
codemods/misc/migrate-mui-tooltip-to-bui-tooltip/tests/dynamic-title/input.tsx Test input fixture
codemods/misc/migrate-mui-tooltip-to-bui-tooltip/tests/dynamic-title/expected.tsx Test expected fixture
codemods/misc/migrate-mui-tooltip-to-bui-tooltip/tests/controlled-todo/metrics.json Test metrics fixture
codemods/misc/migrate-mui-tooltip-to-bui-tooltip/tests/controlled-todo/input.tsx Test input fixture
codemods/misc/migrate-mui-tooltip-to-bui-tooltip/tests/controlled-todo/expected.tsx Test expected fixture
codemods/misc/migrate-mui-icon-button-to-button-icon/workflow.yaml Workflow to run IconButton→ButtonIcon transform
codemods/misc/migrate-mui-icon-button-to-button-icon/tsconfig.json TS config for the codemod package
codemods/misc/migrate-mui-icon-button-to-button-icon/package.json Package metadata + test script
codemods/misc/migrate-mui-icon-button-to-button-icon/codemod.yaml Codemod registry metadata
codemods/misc/migrate-mui-icon-button-to-button-icon/CHANGELOG.md Initial changelog stub
codemods/misc/migrate-mui-icon-button-to-button-icon/scripts/codemod.ts AST transform implementation
codemods/misc/migrate-mui-icon-button-to-button-icon/tests/spread-props/metrics.json Test metrics fixture
codemods/misc/migrate-mui-icon-button-to-button-icon/tests/spread-props/input.tsx Test input fixture
codemods/misc/migrate-mui-icon-button-to-button-icon/tests/spread-props/expected.tsx Test expected fixture
codemods/misc/migrate-mui-icon-button-to-button-icon/tests/noop-no-import/input.tsx Test input fixture
codemods/misc/migrate-mui-icon-button-to-button-icon/tests/noop-no-import/expected.tsx Test expected fixture
codemods/misc/migrate-mui-icon-button-to-button-icon/tests/named-barrel-import/metrics.json Test metrics fixture
codemods/misc/migrate-mui-icon-button-to-button-icon/tests/named-barrel-import/input.tsx Test input fixture
codemods/misc/migrate-mui-icon-button-to-button-icon/tests/named-barrel-import/expected.tsx Test expected fixture
codemods/misc/migrate-mui-icon-button-to-button-icon/tests/missing-aria-label-todo/metrics.json Test metrics fixture
codemods/misc/migrate-mui-icon-button-to-button-icon/tests/missing-aria-label-todo/input.tsx Test input fixture
codemods/misc/migrate-mui-icon-button-to-button-icon/tests/missing-aria-label-todo/expected.tsx Test expected fixture
codemods/misc/migrate-mui-icon-button-to-button-icon/tests/merge-existing-bui/metrics.json Test metrics fixture
codemods/misc/migrate-mui-icon-button-to-button-icon/tests/merge-existing-bui/input.tsx Test input fixture
codemods/misc/migrate-mui-icon-button-to-button-icon/tests/merge-existing-bui/expected.tsx Test expected fixture
codemods/misc/migrate-mui-icon-button-to-button-icon/tests/dropped-props/metrics.json Test metrics fixture
codemods/misc/migrate-mui-icon-button-to-button-icon/tests/dropped-props/input.tsx Test input fixture
codemods/misc/migrate-mui-icon-button-to-button-icon/tests/dropped-props/expected.tsx Test expected fixture
codemods/misc/migrate-mui-icon-button-to-button-icon/tests/disabled-boolean/metrics.json Test metrics fixture
codemods/misc/migrate-mui-icon-button-to-button-icon/tests/disabled-boolean/input.tsx Test input fixture
codemods/misc/migrate-mui-icon-button-to-button-icon/tests/disabled-boolean/expected.tsx Test expected fixture
codemods/misc/migrate-mui-icon-button-to-button-icon/tests/complex-children-todo/metrics.json Test metrics fixture
codemods/misc/migrate-mui-icon-button-to-button-icon/tests/complex-children-todo/input.tsx Test input fixture
codemods/misc/migrate-mui-icon-button-to-button-icon/tests/complex-children-todo/expected.tsx Test expected fixture
codemods/misc/migrate-mui-icon-button-to-button-icon/tests/className-preserved/metrics.json Test metrics fixture
codemods/misc/migrate-mui-icon-button-to-button-icon/tests/className-preserved/input.tsx Test input fixture
codemods/misc/migrate-mui-icon-button-to-button-icon/tests/className-preserved/expected.tsx Test expected fixture
codemods/misc/migrate-mui-icon-button-to-button-icon/tests/basic-migration/metrics.json Test metrics fixture
codemods/misc/migrate-mui-icon-button-to-button-icon/tests/basic-migration/input.tsx Test input fixture
codemods/misc/migrate-mui-icon-button-to-button-icon/tests/basic-migration/expected.tsx Test expected fixture
codemods/misc/migrate-mui-button-to-bui-button/workflow.yaml Workflow to run Button→Button transform
codemods/misc/migrate-mui-button-to-bui-button/tsconfig.json TS config for the codemod package
codemods/misc/migrate-mui-button-to-bui-button/package.json Package metadata + test script
codemods/misc/migrate-mui-button-to-bui-button/codemod.yaml Codemod registry metadata
codemods/misc/migrate-mui-button-to-bui-button/CHANGELOG.md Initial changelog stub
codemods/misc/migrate-mui-button-to-bui-button/scripts/codemod.ts AST transform implementation
codemods/misc/migrate-mui-button-to-bui-button/tests/text-button/metrics.json Test metrics fixture
codemods/misc/migrate-mui-button-to-bui-button/tests/text-button/input.tsx Test input fixture
codemods/misc/migrate-mui-button-to-bui-button/tests/text-button/expected.tsx Test expected fixture
codemods/misc/migrate-mui-button-to-bui-button/tests/start-icon-todo/metrics.json Test metrics fixture
codemods/misc/migrate-mui-button-to-bui-button/tests/start-icon-todo/input.tsx Test input fixture
codemods/misc/migrate-mui-button-to-bui-button/tests/start-icon-todo/expected.tsx Test expected fixture
codemods/misc/migrate-mui-button-to-bui-button/tests/spread-props/metrics.json Test metrics fixture
codemods/misc/migrate-mui-button-to-bui-button/tests/spread-props/input.tsx Test input fixture
codemods/misc/migrate-mui-button-to-bui-button/tests/spread-props/expected.tsx Test expected fixture
codemods/misc/migrate-mui-button-to-bui-button/tests/self-closing/metrics.json Test metrics fixture
codemods/misc/migrate-mui-button-to-bui-button/tests/self-closing/input.tsx Test input fixture
codemods/misc/migrate-mui-button-to-bui-button/tests/self-closing/expected.tsx Test expected fixture
codemods/misc/migrate-mui-button-to-bui-button/tests/outlined-button/metrics.json Test metrics fixture
codemods/misc/migrate-mui-button-to-bui-button/tests/outlined-button/input.tsx Test input fixture
codemods/misc/migrate-mui-button-to-bui-button/tests/outlined-button/expected.tsx Test expected fixture
codemods/misc/migrate-mui-button-to-bui-button/tests/noop-no-import/input.tsx Test input fixture
codemods/misc/migrate-mui-button-to-bui-button/tests/noop-no-import/expected.tsx Test expected fixture
codemods/misc/migrate-mui-button-to-bui-button/tests/no-variant/metrics.json Test metrics fixture
codemods/misc/migrate-mui-button-to-bui-button/tests/no-variant/input.tsx Test input fixture
codemods/misc/migrate-mui-button-to-bui-button/tests/no-variant/expected.tsx Test expected fixture
codemods/misc/migrate-mui-button-to-bui-button/tests/named-barrel-import/metrics.json Test metrics fixture
codemods/misc/migrate-mui-button-to-bui-button/tests/named-barrel-import/input.tsx Test input fixture
codemods/misc/migrate-mui-button-to-bui-button/tests/named-barrel-import/expected.tsx Test expected fixture
codemods/misc/migrate-mui-button-to-bui-button/tests/merge-existing-bui/metrics.json Test metrics fixture
codemods/misc/migrate-mui-button-to-bui-button/tests/merge-existing-bui/input.tsx Test input fixture
codemods/misc/migrate-mui-button-to-bui-button/tests/merge-existing-bui/expected.tsx Test expected fixture
codemods/misc/migrate-mui-button-to-bui-button/tests/dynamic-variant-todo/metrics.json Test metrics fixture
codemods/misc/migrate-mui-button-to-bui-button/tests/dynamic-variant-todo/input.tsx Test input fixture
codemods/misc/migrate-mui-button-to-bui-button/tests/dynamic-variant-todo/expected.tsx Test expected fixture
codemods/misc/migrate-mui-button-to-bui-button/tests/disabled-boolean/metrics.json Test metrics fixture
codemods/misc/migrate-mui-button-to-bui-button/tests/disabled-boolean/input.tsx Test input fixture
codemods/misc/migrate-mui-button-to-bui-button/tests/disabled-boolean/expected.tsx Test expected fixture
codemods/misc/migrate-mui-button-to-bui-button/tests/contained-button/metrics.json Test metrics fixture
codemods/misc/migrate-mui-button-to-bui-button/tests/contained-button/input.tsx Test input fixture
codemods/misc/migrate-mui-button-to-bui-button/tests/contained-button/expected.tsx Test expected fixture
codemods/misc/migrate-mui-button-to-bui-button/tests/color-secondary-todo/metrics.json Test metrics fixture
codemods/misc/migrate-mui-button-to-bui-button/tests/color-secondary-todo/input.tsx Test input fixture
codemods/misc/migrate-mui-button-to-bui-button/tests/color-secondary-todo/expected.tsx Test expected fixture
codemods/misc/migrate-mui-button-to-bui-button/tests/color-primary-ok/metrics.json Test metrics fixture
codemods/misc/migrate-mui-button-to-bui-button/tests/color-primary-ok/input.tsx Test input fixture
codemods/misc/migrate-mui-button-to-bui-button/tests/color-primary-ok/expected.tsx Test expected fixture
codemods/misc/migrate-mui-alert-to-bui-alert/workflow.yaml Workflow to run Alert→Alert transform
codemods/misc/migrate-mui-alert-to-bui-alert/tsconfig.json TS config for the codemod package
codemods/misc/migrate-mui-alert-to-bui-alert/package.json Package metadata + test script
codemods/misc/migrate-mui-alert-to-bui-alert/codemod.yaml Codemod registry metadata
codemods/misc/migrate-mui-alert-to-bui-alert/CHANGELOG.md Initial changelog stub
codemods/misc/migrate-mui-alert-to-bui-alert/scripts/codemod.ts AST transform implementation
codemods/misc/migrate-mui-alert-to-bui-alert/tests/with-title/metrics.json Test metrics fixture
codemods/misc/migrate-mui-alert-to-bui-alert/tests/with-title/input.tsx Test input fixture
codemods/misc/migrate-mui-alert-to-bui-alert/tests/with-title/expected.tsx Test expected fixture
codemods/misc/migrate-mui-alert-to-bui-alert/tests/simple-warning/metrics.json Test metrics fixture
codemods/misc/migrate-mui-alert-to-bui-alert/tests/simple-warning/input.tsx Test input fixture
codemods/misc/migrate-mui-alert-to-bui-alert/tests/simple-warning/expected.tsx Test expected fixture
codemods/misc/migrate-mui-alert-to-bui-alert/tests/noop-no-mui-import/input.tsx Test input fixture
codemods/misc/migrate-mui-alert-to-bui-alert/tests/noop-no-mui-import/expected.tsx Test expected fixture
codemods/misc/migrate-mui-alert-to-bui-alert/tests/noop-no-import/input.tsx Test input fixture
codemods/misc/migrate-mui-alert-to-bui-alert/tests/noop-no-import/expected.tsx Test expected fixture
codemods/misc/migrate-mui-alert-to-bui-alert/tests/merge-existing-bui/metrics.json Test metrics fixture
codemods/misc/migrate-mui-alert-to-bui-alert/tests/merge-existing-bui/input.tsx Test input fixture
codemods/misc/migrate-mui-alert-to-bui-alert/tests/merge-existing-bui/expected.tsx Test expected fixture
codemods/misc/migrate-mui-alert-to-bui-alert/tests/core-import/metrics.json Test metrics fixture
codemods/misc/migrate-mui-alert-to-bui-alert/tests/core-import/input.tsx Test input fixture
codemods/misc/migrate-mui-alert-to-bui-alert/tests/core-import/expected.tsx Test expected fixture
.changeset/mui-to-bui-core-components.md Changeset to publish initial minor versions for the 5 packages

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread codemods/misc/migrate-mui-button-to-bui-button/scripts/codemod.ts Outdated
Comment thread codemods/misc/migrate-mui-icon-button-to-button-icon/scripts/codemod.ts Outdated
Comment thread codemods/misc/migrate-mui-alert-to-bui-alert/scripts/codemod.ts Outdated
Comment thread codemods/misc/migrate-mui-typography-to-text/scripts/codemod.ts
Comment thread codemods/misc/migrate-mui-typography-to-text/scripts/codemod.ts
Comment thread codemods/misc/migrate-mui-tooltip-to-bui-tooltip/codemod.yaml Outdated
Co-authored-by: Cursor <cursoragent@cursor.com>

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 172 out of 173 changed files in this pull request and generated 6 comments.

Comment thread codemods/misc/migrate-mui-button-to-bui-button/scripts/codemod.ts
Comment thread codemods/misc/migrate-mui-tooltip-to-bui-tooltip/scripts/codemod.ts
Comment thread codemods/misc/migrate-mui-alert-to-bui-alert/scripts/codemod.ts
Comment thread codemods/misc/migrate-mui-alert-to-bui-alert/scripts/codemod.ts
Comment thread codemods/misc/migrate-mui-icon-button-to-button-icon/scripts/codemod.ts Outdated
Comment thread codemods/misc/migrate-mui-alert-to-bui-alert/tests/with-title/expected.tsx Outdated
Co-authored-by: Cursor <cursoragent@cursor.com>

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 172 out of 173 changed files in this pull request and generated 8 comments.

Comment thread codemods/misc/migrate-mui-typography-to-text/scripts/codemod.ts
Comment thread codemods/misc/migrate-mui-button-to-bui-button/scripts/codemod.ts
Comment on lines +128 to +147
if (existingImport) {
const namedImports = existingImport.find({ rule: { kind: 'named_imports' } })
if (namedImports) {
const text = namedImports.text()
const inner = text.slice(1, -1).trim()
const existing = inner
.split(',')
.map((n) => n.trim())
.filter(Boolean)
for (const name of names) {
if (!existing.includes(name)) {
existing.push(name)
}
}
existing.sort()
edits.push(namedImports.replace(`{ ${existing.join(', ')} }`))
migrationMetric.increment({ action: 'import-merged' })
}
return false
}
Comment thread codemods/misc/migrate-mui-alert-to-bui-alert/scripts/codemod.ts
Comment on lines +362 to +366
if (hasProp(opening, 'action') || hasProp(opening, 'onClose')) {
insertTodo('action-or-onClose')
continue
}

targets:
languages: ['tsx', 'ts']

keywords: ['backstage', 'migration', 'mui', 'bui', 'icon', 'button', 'button', 'icon']
Comment thread codemods/misc/migrate-mui-button-to-bui-button/codemod.yaml Outdated
Add named BUI imports when only a namespace import exists, skip default
Alert icon when custom icon props are present, and dedupe codemod.yaml
keywords.

Co-authored-by: Cursor <cursoragent@cursor.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment