diff --git a/docs/.well-known/skills/mui-to-bui-migration/SKILL.md b/docs/.well-known/skills/mui-to-bui-migration/SKILL.md
index 94e2bcfdcd..c47286ec30 100644
--- a/docs/.well-known/skills/mui-to-bui-migration/SKILL.md
+++ b/docs/.well-known/skills/mui-to-bui-migration/SKILL.md
@@ -5,8 +5,8 @@ description: Migrate Backstage plugins from Material-UI (MUI) to Backstage UI (B
# MUI to BUI Migration Skill
-This skill helps migrate Backstage plugins from Material-UI (@material-ui/core, @material-ui/icons) to Backstage UI (
-@backstage/ui).
+This skill helps migrate Backstage plugins from Material-UI (@material-ui/core, @material-ui/icons) to
+Backstage UI (@backstage/ui).
## Prerequisites
@@ -19,6 +19,7 @@ Before starting migration:
```
2. Add the CSS import to your root file (typically `src/index.ts` or app entry point):
+
```typescript
import '@backstage/ui/css/styles.css';
```
@@ -38,11 +39,14 @@ Before starting migration:
- `Accordion` - Collapsible content panels (`Accordion`, `AccordionTrigger`, `AccordionPanel`, `AccordionGroup`)
- `Alert` - Alert/notification banners (`status`, `title`, `description`)
- `Avatar` - User/entity avatars
+- `Badge` - Inline badge/label with optional icon (`size`, `icon`)
- `Button` - Action buttons (`variant="primary"`, `variant="secondary"`, `variant="tertiary"`, `isDisabled`, `destructive`, `loading`)
- `ButtonIcon` - Icon-only buttons (`icon`, `onPress`, `variant`)
- `ButtonLink` - Link styled as button
- `Card` - Content cards (`Card`, `CardHeader`, `CardBody`, `CardFooter`)
- `Checkbox` - Checkbox input
+- `CheckboxGroup` - Grouped checkboxes with shared label (`label`, `orientation`, `isRequired`)
+- `DateRangePicker` - Date range input field (`label`, `value`, `onChange`)
- `Dialog` - Modal dialogs (`DialogTrigger`, `Dialog`, `DialogHeader`, `DialogBody`, `DialogFooter`)
- `FieldLabel` - Form field label with description and secondary label
- `Header` - Page headers with breadcrumbs and tabs
@@ -57,6 +61,7 @@ Before starting migration:
- `SearchField` - Search input
- `Select` - Dropdown select (single and multiple selection modes)
- `Skeleton` - Loading skeleton
+- `Slider` - Range slider input (`label`, `minValue`, `maxValue`, `step`)
- `Switch` - Toggle switch
- `Table` - Data tables (with `useTable` hook for data management)
- `TablePagination` - Standalone pagination component
@@ -103,9 +108,9 @@ Create a `.module.css` file alongside your component using BUI CSS variables.
**Before (MUI `makeStyles`):**
-```typescript
+```tsx
// MyComponent.tsx
-import {makeStyles, Theme} from '@material-ui/core/styles';
+import { makeStyles, Theme } from '@material-ui/core/styles';
const useStyles = makeStyles((theme: Theme) => ({
container: {
@@ -130,18 +135,16 @@ const useStyles = makeStyles((theme: Theme) => ({
function MyComponent() {
const classes = useStyles();
return (
-
-
Title < /Typography>
- < div
- className = {classes.listItem} >
-
-
+
- < span > Content < /span>
- < /div>
- < /div>
-)
- ;
+ );
}
```
@@ -177,27 +180,24 @@ function MyComponent() {
}
```
-```typescript
+```tsx
// MyComponent.tsx
-import {Box, Text} from '@backstage/ui';
-import {RiSomeIcon} from '@remixicon/react';
+import { Box, Text } from '@backstage/ui';
+import { RiSomeIcon } from '@remixicon/react';
import styles from './MyComponent.module.css';
function MyComponent() {
return (
-
- Title < /Text>
- < div
- className = {styles.listItem} >
-
-
- < /div>
- < span > Content < /span>
- < /div>
- < /Box>
-)
- ;
+
+ Title
+
+
+ );
}
```
@@ -205,38 +205,27 @@ function MyComponent() {
**Before (MUI Box with display prop):**
-```typescript
+```tsx
-
- {children}
- < /Box>
- < /Box>
+
+ {children}
+
+
```
**After (BUI `Flex` component):**
-```typescript
-
-
-{
- children
-}
+```tsx
+
+
+ {children}
+
-< /Flex>
```
Note: BUI `Flex` uses `justify="between"` not `justify="space-between"`.
@@ -245,70 +234,40 @@ Note: BUI `Flex` uses `justify="between"` not `justify="space-between"`.
**Before (MUI Grid):**
-```typescript
-
-
- {content}
- < /Grid>
- < /Grid>
+```tsx
+
+
+ {content}
+
+
```
**After (BUI Grid):**
-```typescript
-
-
-{
- content
-}
-
-< /Grid.Root>
+```tsx
+
+ {content}
+
```
### 5. Typography to Text
**Before (MUI Typography):**
-```typescript
- Heading < /Typography>
- < Typography
-variant = "h6" > Subheading < /Typography>
- < Typography
-variant = "body1" > Body
-text < /Typography>
-< Typography
-variant = "body2"
-color = "textSecondary" > Secondary
-text < /Typography>
+```tsx
+Heading
+Subheading
+Body text
+Secondary text
```
**After (BUI Text):**
-```typescript
- Heading < /Text>
- < Text
-variant = "title-small" > Subheading < /Text>
- < Text
-variant = "body-medium" > Body
-text < /Text>
-< Text
-variant = "body-small"
-color = "secondary" > Secondary
-text < /Text>
+```tsx
+Heading
+Subheading
+Body text
+Secondary text
```
Valid Text variants: `title-large`, `title-medium`, `title-small`, `title-x-small`, `body-large`, `body-medium`,
@@ -318,19 +277,17 @@ Valid Text variants: `title-large`, `title-medium`, `title-small`, `title-x-smal
**Before (MUI Tooltip):**
-```typescript
-import {Tooltip, Typography} from '@material-ui/core';
+```tsx
+import { Tooltip, Typography } from '@material-ui/core';
- Tooltip
-content < /Typography>}>
-< span > Hover
-me < /span>
-< /Tooltip>;
+Tooltip content}>
+ Hover me
+;
```
**After (BUI TooltipTrigger pattern):**
-```typescript
+```tsx
import { Tooltip, TooltipTrigger, Text } from '@backstage/ui';
@@ -343,26 +300,23 @@ import { Tooltip, TooltipTrigger, Text } from '@backstage/ui';
**Before (MUI Dialog):**
-```typescript
-import {Dialog, DialogTitle, DialogActions, Button} from '@material-ui/core';
+```tsx
+import { Dialog, DialogTitle, DialogActions, Button } from '@material-ui/core';
-