@backstage/ui 0.11.0 → 0.12.0-next.0

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.
Files changed (59) hide show
  1. package/CHANGELOG.md +226 -104
  2. package/css/styles.css +17 -11
  3. package/dist/components/Alert/Alert.esm.js +81 -0
  4. package/dist/components/Alert/Alert.esm.js.map +1 -0
  5. package/dist/components/Alert/Alert.module.css.esm.js +8 -0
  6. package/dist/components/Alert/Alert.module.css.esm.js.map +1 -0
  7. package/dist/components/Alert/definition.esm.js +37 -0
  8. package/dist/components/Alert/definition.esm.js.map +1 -0
  9. package/dist/components/Box/Box.esm.js +10 -23
  10. package/dist/components/Box/Box.esm.js.map +1 -1
  11. package/dist/components/Box/definition.esm.js +20 -6
  12. package/dist/components/Box/definition.esm.js.map +1 -1
  13. package/dist/components/Button/Button.esm.js +12 -35
  14. package/dist/components/Button/Button.esm.js.map +1 -1
  15. package/dist/components/Button/Button.module.css.esm.js +2 -2
  16. package/dist/components/Button/definition.esm.js +22 -6
  17. package/dist/components/Button/definition.esm.js.map +1 -1
  18. package/dist/components/ButtonIcon/ButtonIcon.esm.js +9 -40
  19. package/dist/components/ButtonIcon/ButtonIcon.esm.js.map +1 -1
  20. package/dist/components/ButtonIcon/ButtonIcon.module.css.esm.js +3 -3
  21. package/dist/components/ButtonIcon/definition.esm.js +21 -2
  22. package/dist/components/ButtonIcon/definition.esm.js.map +1 -1
  23. package/dist/components/ButtonLink/ButtonLink.esm.js +16 -43
  24. package/dist/components/ButtonLink/ButtonLink.esm.js.map +1 -1
  25. package/dist/components/ButtonLink/ButtonLink.module.css.esm.js +8 -0
  26. package/dist/components/ButtonLink/ButtonLink.module.css.esm.js.map +1 -0
  27. package/dist/components/ButtonLink/definition.esm.js +24 -3
  28. package/dist/components/ButtonLink/definition.esm.js.map +1 -1
  29. package/dist/components/Dialog/Dialog.esm.js +3 -0
  30. package/dist/components/Dialog/Dialog.esm.js.map +1 -1
  31. package/dist/components/InternalLinkProvider/InternalLinkProvider.esm.js +55 -0
  32. package/dist/components/InternalLinkProvider/InternalLinkProvider.esm.js.map +1 -0
  33. package/dist/components/Link/Link.esm.js +2 -9
  34. package/dist/components/Link/Link.esm.js.map +1 -1
  35. package/dist/components/Menu/Menu.esm.js +13 -16
  36. package/dist/components/Menu/Menu.esm.js.map +1 -1
  37. package/dist/components/Table/components/Row.esm.js +5 -18
  38. package/dist/components/Table/components/Row.esm.js.map +1 -1
  39. package/dist/components/Table/components/Table.esm.js +5 -4
  40. package/dist/components/Table/components/Table.esm.js.map +1 -1
  41. package/dist/components/TablePagination/TablePagination.esm.js +5 -1
  42. package/dist/components/TablePagination/TablePagination.esm.js.map +1 -1
  43. package/dist/components/Tabs/Tabs.esm.js +120 -54
  44. package/dist/components/Tabs/Tabs.esm.js.map +1 -1
  45. package/dist/components/TagGroup/TagGroup.esm.js +7 -13
  46. package/dist/components/TagGroup/TagGroup.esm.js.map +1 -1
  47. package/dist/hooks/useDefinition/defineComponent.esm.js +6 -0
  48. package/dist/hooks/useDefinition/defineComponent.esm.js.map +1 -0
  49. package/dist/hooks/useDefinition/helpers.esm.js +69 -0
  50. package/dist/hooks/useDefinition/helpers.esm.js.map +1 -0
  51. package/dist/hooks/useDefinition/useDefinition.esm.js +78 -0
  52. package/dist/hooks/useDefinition/useDefinition.esm.js.map +1 -0
  53. package/dist/hooks/useStyles.esm.js +7 -54
  54. package/dist/hooks/useStyles.esm.js.map +1 -1
  55. package/dist/index.d.ts +313 -104
  56. package/dist/index.esm.js +4 -2
  57. package/dist/index.esm.js.map +1 -1
  58. package/dist/utils/utilityClassMap.esm.js.map +1 -1
  59. package/package.json +4 -4
package/CHANGELOG.md CHANGED
@@ -1,5 +1,74 @@
1
1
  # @backstage/ui
2
2
 
3
+ ## 0.12.0-next.0
4
+
5
+ ### Minor Changes
6
+
7
+ - b1f723b: **BREAKING**: Changed CSS selectors for `ButtonIcon` and `ButtonLink` components. Custom styles targeting `.bui-Button` to style these components must be updated to use `.bui-ButtonIcon` or `.bui-ButtonLink` respectively.
8
+
9
+ ```diff
10
+ -/* This no longer styles ButtonIcon or ButtonLink */
11
+ -.bui-Button[data-variant="primary"] { ... }
12
+ +/* Use component-specific selectors */
13
+ +.bui-ButtonIcon[data-variant="primary"] { ... }
14
+ +.bui-ButtonLink[data-variant="primary"] { ... }
15
+ ```
16
+
17
+ Affected components: ButtonIcon, ButtonLink
18
+
19
+ - caeb9ad: **BREAKING**: The `cell` and `header` properties in `ColumnConfig` now return `ReactElement` instead of `ReactNode`.
20
+
21
+ This fixes an issue where React Aria's Collection component would inject an `id` prop into Fragment wrappers, causing "Invalid prop `id` supplied to `React.Fragment`" errors on render.
22
+
23
+ Migration:
24
+
25
+ ```diff
26
+ const columns: ColumnConfig<MyItem>[] = [
27
+ {
28
+ id: 'name',
29
+ label: 'Name',
30
+ - cell: (item) => item.name,
31
+ + cell: (item) => <CellText title={item.name} />,
32
+ - header: () => 'Name',
33
+ + header: () => <Column>Name</Column>,
34
+ },
35
+ ];
36
+ ```
37
+
38
+ ### Patch Changes
39
+
40
+ - 350c948: Fixed Box component to forward HTML attributes to the underlying div element.
41
+
42
+ **Affected components:** Box
43
+
44
+ - 7455dae: Use node prefix on native imports
45
+ - 508bd1a: Added new `Alert` component with support for status variants (info, success, warning, danger), icons, loading states, and custom actions.
46
+
47
+ Updated status color tokens for improved contrast and consistency across light and dark themes:
48
+
49
+ - Added new `--bui-bg-info` and `--bui-fg-info` tokens for info status
50
+ - Updated `--bui-bg-danger`, `--bui-fg-danger` tokens
51
+ - Updated `--bui-bg-warning`, `--bui-fg-warning` tokens
52
+ - Updated `--bui-bg-success`, `--bui-fg-success` tokens
53
+
54
+ **Affected components**: Alert
55
+
56
+ - da30862: Fixed client-side navigation for container components by wrapping the container (not individual items) in RouterProvider. Components now conditionally provide routing context only when children have internal links, removing the Router context requirement when not needed. This also removes the need to wrap these components in MemoryRouter during tests when they are not using the `href` prop.
57
+
58
+ Additionally, when multiple tabs match the current URL via prefix matching, the tab with the most specific path (highest segment count) is now selected. For example, with URL `/catalog/users/john`, a tab with path `/catalog/users` is now selected over a tab with path `/catalog`.
59
+
60
+ Affected components: Tabs, Tab, TagGroup, Tag, Menu, MenuItem, MenuAutocomplete
61
+
62
+ - 092c453: Fixed an infinite render loop in Tabs when navigating to a URL that doesn't match any tab `href`.
63
+ - 5320aa8: Fixed components to not require a Router context when rendering without internal links.
64
+
65
+ Affected components: Link, ButtonLink, Row
66
+
67
+ - cb090b4: Bump react-aria-components to v1.14.0
68
+ - c429101: Fixed React 17 compatibility by using `useId` from `react-aria` instead of the built-in React hook which is only available in React 18+.
69
+ - Updated dependencies
70
+ - @backstage/version-bridge@1.0.11
71
+
3
72
  ## 0.11.0
4
73
 
5
74
  ### Minor Changes
@@ -13,7 +82,7 @@
13
82
 
14
83
  New features include unified pagination modes, debounced query changes, stale data preservation during reloads, and row selection with toggle/replace behaviors.
15
84
 
16
- **Migration guide:**
85
+ **Migration:**
17
86
 
18
87
  1. Update imports and use the new `useTable` hook:
19
88
 
@@ -43,11 +112,11 @@
43
112
  +<Table columnConfig={columns} {...tableProps} />
44
113
  ```
45
114
 
46
- Affected components: Table, TableRoot, TablePagination
115
+ **Affected components:** Table, TableRoot, TablePagination
47
116
 
48
- - 95246eb: **Breaking** Updating color tokens to match the new neutral style on different surfaces.
117
+ - 95246eb: **BREAKING**: Updating color tokens to match the new neutral style on different surfaces.
49
118
 
50
- ## Migration notes
119
+ **Migration:**
51
120
 
52
121
  There's no direct replacement for the old tint tokens but you can use the new neutral set of color tokens on surface 0 or 1 as a replacement.
53
122
 
@@ -56,49 +125,67 @@
56
125
  - `--bui-bg-tint-pressed` can be replaced by `--bui-bg-neutral-on-surface-0-pressed`
57
126
  - `--bui-bg-tint-disabled` can be replaced by `--bui-bg-neutral-on-surface-0-disabled`
58
127
 
59
- - ea0c6d8: Introduce new `ToggleButton` & `ToggleButtonGroup` components in Backstage UI
128
+ - ea0c6d8: **BREAKING**: Introduce new `ToggleButton` & `ToggleButtonGroup` components in Backstage UI
129
+
130
+ **Affected components:** ToggleButton, ToggleButtonGroup
131
+
60
132
  - 4ea1d15: **BREAKING**: Renamed CSS variable `--bui-bg` to `--bui-bg-surface-0` for consistency.
61
133
 
62
134
  ### Patch Changes
63
135
 
64
136
  - 1880402: Fixes app background color on dark mode.
137
+
138
+ **Affected components:** Box
139
+
65
140
  - d2fdded: Added indeterminate state support to the Checkbox component for handling partial selection scenarios like table header checkboxes.
66
141
 
67
- Affected components: Checkbox
142
+ **Affected components:** Checkbox
68
143
 
69
144
  - 4fb15d2: Added missing `aria-label` attributes to `SearchField` components in `Select`, `MenuAutocomplete`, and `MenuAutocompleteListbox` to fix accessibility warnings.
70
145
 
71
- Affected components: Select, MenuAutocomplete, MenuAutocompleteListbox
146
+ **Affected components:** Select, MenuAutocomplete, MenuAutocompleteListbox
72
147
 
73
148
  - 21c87cc: Fixes disabled state in primary and secondary buttons in Backstage UI.
149
+
150
+ **Affected components:** Button
151
+
74
152
  - 9c76682: build(deps-dev): bump `storybook` from 10.1.9 to 10.1.10
75
153
  - de80336: Fixed disabled tertiary buttons incorrectly showing hover effects on surfaces.
154
+
155
+ **Affected components:** Button
156
+
76
157
  - 133d5c6: Added new Popover component for Backstage UI with automatic overflow handling, and full placement support. Also introduced `--bui-shadow` token for consistent elevation styling across overlay components (Popover, Tooltip, Menu).
158
+
159
+ **Affected components:** Popover
160
+
77
161
  - 973c839: Fixed Table sorting indicator not being visible when a column is actively sorted.
78
162
 
79
- Affected components: Table, Column
163
+ **Affected components:** Table, Column
80
164
 
81
165
  - df40cfc: Fixed Menu component trigger button not toggling correctly. Removed custom click-outside handler that was interfering with React Aria's built-in state management, allowing the menu to properly open and close when clicking the trigger button.
166
+
167
+ **Affected components:** Menu
168
+
82
169
  - b01ab96: Added support for column width configuration in Table component. Columns now accept `width`, `defaultWidth`, `minWidth`, and `maxWidth` props for responsive layout control.
83
170
 
84
- Affected components: Table, Column
171
+ **Affected components:** Table, Column
85
172
 
86
173
  - b4a4911: Fixed SearchField `startCollapsed` prop not working correctly in Backstage UI. The field now properly starts in a collapsed state, expands when clicked and focused, and collapses back when unfocused with no input. Also fixed CSS logic to work correctly in all layout contexts (flex row, flex column, and regular containers).
87
174
 
88
- Affected components: SearchField
175
+ **Affected components:** SearchField
89
176
 
90
177
  - b3253b6: Fixed `Link` component causing hard page refreshes for internal routes. The component now properly uses React Router's navigation instead of full page reloads.
91
178
  - fe7fe69: Added support for custom pagination options in `useTable` hook and `Table` component. You can now configure `pageSizeOptions` to customize the page size dropdown, and hook into pagination events via `onPageSizeChange`, `onNextPage`, and `onPreviousPage` callbacks. When `pageSize` doesn't match any option, the first option is used and a warning is logged.
92
179
 
93
- Affected components: Table, TablePagination
180
+ **Affected components:** Table, TablePagination
94
181
 
95
182
  - cfac8a4: Fixed missing border styles on table selection cells in multi-select mode.
96
183
 
97
- Affected components: Table
184
+ **Affected components:** Table
98
185
 
99
186
  - 2532d2a: Added `className` and `style` props to the `Table` component.
100
187
 
101
- Affected components: Table
188
+ **Affected components:** Table
102
189
 
103
190
  ## 0.11.0-next.1
104
191
 
@@ -113,7 +200,7 @@
113
200
 
114
201
  New features include unified pagination modes, debounced query changes, stale data preservation during reloads, and row selection with toggle/replace behaviors.
115
202
 
116
- **Migration guide:**
203
+ **Migration:**
117
204
 
118
205
  1. Update imports and use the new `useTable` hook:
119
206
 
@@ -143,11 +230,11 @@
143
230
  +<Table columnConfig={columns} {...tableProps} />
144
231
  ```
145
232
 
146
- Affected components: Table, TableRoot, TablePagination
233
+ **Affected components:** Table, TableRoot, TablePagination
147
234
 
148
- - 95246eb: **Breaking** Updating color tokens to match the new neutral style on different surfaces.
235
+ - 95246eb: **BREAKING**: Updating color tokens to match the new neutral style on different surfaces.
149
236
 
150
- ## Migration notes
237
+ **Migration:**
151
238
 
152
239
  There's no direct replacement for the old tint tokens but you can use the new neutral set of color tokens on surface 0 or 1 as a replacement.
153
240
 
@@ -175,15 +262,15 @@
175
262
  - 9c76682: build(deps-dev): bump `storybook` from 10.1.9 to 10.1.10
176
263
  - b4a4911: Fixed SearchField `startCollapsed` prop not working correctly in Backstage UI. The field now properly starts in a collapsed state, expands when clicked and focused, and collapses back when unfocused with no input. Also fixed CSS logic to work correctly in all layout contexts (flex row, flex column, and regular containers).
177
264
 
178
- Affected components: SearchField
265
+ **Affected components:** SearchField
179
266
 
180
267
  ## 0.10.0
181
268
 
182
269
  ### Minor Changes
183
270
 
184
- - 16543fa: **Breaking change** The `Cell` component has been refactored to be a generic wrapper component that accepts `children` for custom cell content. The text-specific functionality (previously part of `Cell`) has been moved to a new `CellText` component.
271
+ - 16543fa: **BREAKING**: The `Cell` component has been refactored to be a generic wrapper component that accepts `children` for custom cell content. The text-specific functionality (previously part of `Cell`) has been moved to a new `CellText` component.
185
272
 
186
- ### Migration Guide
273
+ **Migration:**
187
274
 
188
275
  If you were using `Cell` with text-specific props (`title`, `description`, `leadingIcon`, `href`), you need to update your code to use `CellText` instead:
189
276
 
@@ -219,32 +306,32 @@
219
306
 
220
307
  - 50b7927: Fixed Checkbox indicator showing checkmark color when unchecked.
221
308
 
222
- Affected components: Checkbox
309
+ **Affected components:** Checkbox
223
310
 
224
311
  - 5bacf55: Fixed `ButtonIcon` incorrectly applying `className` to inner elements instead of only the root element.
225
312
 
226
- Affected components: ButtonIcon
313
+ **Affected components:** ButtonIcon
227
314
 
228
315
  - b3ad928: Fixed Table Row component to correctly handle cases where no `href` is provided, preventing unnecessary router provider wrapping and fixing the cursor incorrectly showing as a pointer despite the element not being a link.
229
316
 
230
- Affected components: Row
317
+ **Affected components:** Row
231
318
 
232
319
  - a20d317: Added row selection support with visual state styling for hover, selected, and pressed states. Fixed checkbox rendering to only show for multi-select toggle mode.
233
320
 
234
- Affected components: Table, TableHeader, Row, Column
321
+ **Affected components:** Table, TableHeader, Row, Column
235
322
 
236
323
  - fe7c751: Fixed `useTable` hook to prioritize `providedRowCount` over data length for accurate row count in server-side pagination scenarios.
237
324
  - c145031: Fixed Table column sorting indicator to show up arrow when no sort is active, correctly indicating that clicking will sort ascending.
238
325
 
239
- Affected components: Column
326
+ **Affected components:** Column
240
327
 
241
328
  ## 0.10.0-next.1
242
329
 
243
330
  ### Minor Changes
244
331
 
245
- - 16543fa: **Breaking change** The `Cell` component has been refactored to be a generic wrapper component that accepts `children` for custom cell content. The text-specific functionality (previously part of `Cell`) has been moved to a new `CellText` component.
332
+ - 16543fa: **BREAKING**: The `Cell` component has been refactored to be a generic wrapper component that accepts `children` for custom cell content. The text-specific functionality (previously part of `Cell`) has been moved to a new `CellText` component.
246
333
 
247
- ### Migration Guide
334
+ **Migration:**
248
335
 
249
336
  If you were using `Cell` with text-specific props (`title`, `description`, `leadingIcon`, `href`), you need to update your code to use `CellText` instead:
250
337
 
@@ -280,15 +367,15 @@
280
367
 
281
368
  - 50b7927: Fixed Checkbox indicator showing checkmark color when unchecked.
282
369
 
283
- Affected components: Checkbox
370
+ **Affected components:** Checkbox
284
371
 
285
372
  - 5bacf55: Fixed `ButtonIcon` incorrectly applying `className` to inner elements instead of only the root element.
286
373
 
287
- Affected components: ButtonIcon
374
+ **Affected components:** ButtonIcon
288
375
 
289
376
  - a20d317: Added row selection support with visual state styling for hover, selected, and pressed states. Fixed checkbox rendering to only show for multi-select toggle mode.
290
377
 
291
- Affected components: Table, TableHeader, Row, Column
378
+ **Affected components:** Table, TableHeader, Row, Column
292
379
 
293
380
  ## 0.9.1-next.0
294
381
 
@@ -296,12 +383,12 @@
296
383
 
297
384
  - b3ad928: Fixed Table Row component to correctly handle cases where no `href` is provided, preventing unnecessary router provider wrapping and fixing the cursor incorrectly showing as a pointer despite the element not being a link.
298
385
 
299
- Affected components: Row
386
+ **Affected components:** Row
300
387
 
301
388
  - fe7c751: Fixed `useTable` hook to prioritize `providedRowCount` over data length for accurate row count in server-side pagination scenarios.
302
389
  - c145031: Fixed Table column sorting indicator to show up arrow when no sort is active, correctly indicating that clicking will sort ascending.
303
390
 
304
- Affected components: Column
391
+ **Affected components:** Column
305
392
 
306
393
  ## 0.9.0
307
394
 
@@ -317,7 +404,7 @@
317
404
  - `large` size **changed from 3rem to 2.5rem** (40px)
318
405
  - New `x-large` size added (3rem / 48px)
319
406
 
320
- Migration:
407
+ **Migration:**
321
408
 
322
409
  ```diff
323
410
  # Remove Base UI-specific props
@@ -331,6 +418,8 @@
331
418
 
332
419
  Added `purpose` prop for accessibility control (`'informative'` or `'decoration'`).
333
420
 
421
+ **Affected components:** Avatar
422
+
334
423
  - 5c614ff: **BREAKING**: Migrated Checkbox component from Base UI to React Aria Components.
335
424
 
336
425
  API changes required:
@@ -344,7 +433,7 @@
344
433
  - Data attribute: `data-checked` → `data-selected`
345
434
  - Use without label is no longer supported
346
435
 
347
- Migration examples:
436
+ **Migration:**
348
437
 
349
438
  Before:
350
439
 
@@ -386,12 +475,12 @@
386
475
  </Checkbox>
387
476
  ```
388
477
 
389
- - 134151f: Fixing styles on SearchField in Backstage UI after migration to CSS modules. `SearchField` has now its own set of class names. We previously used class names from `TextField` but this approach was creating some confusion so going forward in your theme you'll be able to theme `TextField` and `SearchField` separately.
478
+ - 134151f: **BREAKING**: Fixing styles on SearchField in Backstage UI after migration to CSS modules. `SearchField` has now its own set of class names. We previously used class names from `TextField` but this approach was creating some confusion so going forward in your theme you'll be able to theme `TextField` and `SearchField` separately.
390
479
  - a67670d: **BREAKING**: Removed central `componentDefinitions` object and related type utilities (`ComponentDefinitionName`, `ComponentClassNames`).
391
480
 
392
481
  Component definitions are primarily intended for documenting the CSS class API for theming purposes, not for programmatic use in JavaScript/TypeScript.
393
482
 
394
- **Migration Guide:**
483
+ **Migration:**
395
484
 
396
485
  If you were using component definitions or class names to build custom components, we recommend migrating to either:
397
486
 
@@ -400,21 +489,15 @@
400
489
 
401
490
  - b78fc45: **BREAKING**: Changed className prop behavior to augment default styles instead of being ignored or overriding them.
402
491
 
403
- Affected components:
404
-
405
- - Menu, MenuListBox, MenuAutocomplete, MenuAutocompleteListbox, MenuItem, MenuListBoxItem, MenuSection, MenuSeparator
406
- - Switch
407
- - Skeleton
408
- - FieldLabel
409
- - Header, HeaderToolbar
410
- - HeaderPage
411
- - Tabs, TabList, Tab, TabPanel
412
-
413
492
  If you were passing custom className values to any of these components that relied on the previous behavior, you may need to adjust your styles to account for the default classes now being applied alongside your custom classes.
414
493
 
494
+ **Affected components:** Menu, MenuListBox, MenuAutocomplete, MenuAutocompleteListbox, MenuItem, MenuListBoxItem, MenuSection, MenuSeparator, Switch, Skeleton, FieldLabel, Header, HeaderToolbar, HeaderPage, Tabs, TabList, Tab, TabPanel
495
+
415
496
  - 83c100e: **BREAKING**: Removed `Collapsible` component. Migrate to `Accordion` or use React Aria `Disclosure`.
416
497
 
417
- ## Migration Path 1: Accordion (Opinionated Styled Component)
498
+ **Migration:**
499
+
500
+ **Path 1: Accordion (Opinionated Styled Component)**
418
501
 
419
502
  Accordion provides preset styling with a similar component structure.
420
503
 
@@ -435,7 +518,7 @@
435
518
 
436
519
  CSS classes: `.bui-CollapsibleRoot` → `.bui-Accordion`, `.bui-CollapsibleTrigger` → `.bui-AccordionTrigger` (now on heading element), `.bui-CollapsiblePanel` → `.bui-AccordionPanel`
437
520
 
438
- ## Migration Path 2: React Aria Disclosure (Full Customization)
521
+ **Path 2: React Aria Disclosure (Full Customization)**
439
522
 
440
523
  For custom styling without preset styles:
441
524
 
@@ -452,30 +535,73 @@
452
535
 
453
536
  Added searchable and multiple selection support to Select component. The component now accepts `searchable`, `selectionMode`, and `searchPlaceholder` props to enable filtering and multi-selection modes.
454
537
 
455
- Migration: If you're using `SelectProps` type directly, update from `SelectProps` to `SelectProps<'single' | 'multiple'>`. Component usage remains backward compatible.
538
+ **Migration:**
539
+
540
+ If you're using `SelectProps` type directly, update from `SelectProps` to `SelectProps<'single' | 'multiple'>`. Component usage remains backward compatible.
541
+
542
+ **Affected components:** Select
456
543
 
457
544
  ### Patch Changes
458
545
 
459
546
  - d01de00: Fix broken external links in Backstage UI Header component.
547
+
548
+ **Affected components:** Header
549
+
460
550
  - 35a3614: Fixed CSS issues in Select component including popover width constraints, focus outline behavior, and overflow handling.
551
+
552
+ **Affected components:** Select
553
+
461
554
  - 01476f0: Improved visual consistency of PasswordField, SearchField, and MenuAutocomplete components.
555
+
556
+ **Affected components:** PasswordField, SearchField, MenuAutocomplete
557
+
462
558
  - 26c6a78: Fix default text color in Backstage UI
559
+
560
+ **Affected components:** Text
561
+
463
562
  - deaa427: Fixed Text component to prevent `truncate` prop from being spread to the underlying DOM element.
563
+
564
+ **Affected components:** Text
565
+
464
566
  - 1059f95: Improved the Link component structure in Backstage UI.
567
+
568
+ **Affected components:** Link
569
+
465
570
  - 836b0c7: Fixed dialog backdrop appearance in dark mode.
571
+
572
+ **Affected components:** Dialog
573
+
466
574
  - 6874094: Migrated CellProfile component from Base UI Avatar to Backstage UI Avatar component.
575
+
576
+ **Affected components:** Avatar
577
+
467
578
  - 719d772: Avatar components in x-small and small sizes now display only one initial instead of two, improving readability at smaller dimensions.
579
+
580
+ **Affected components:** Avatar
581
+
468
582
  - 6d35a6b: Removed `@base-ui-components/react` dependency as all components now use React Aria Components.
469
583
  - dac851f: Fix the default font size in Backstage UI.
470
584
  - 3c0ea67: Fix CSS layer ordering in Backstage UI to make sure component styles are loaded after tokens and base declarations.
471
585
  - 3b18d80: Fixed RadioGroup radio button ellipse distortion by preventing flex shrink and grow.
586
+
587
+ **Affected components:** RadioGroup
588
+
472
589
  - 4eb455c: Fix font smoothing as default in Backstage UI.
473
590
  - ff9f0c3: Enable tree-shaking of imports other than `*.css`.
474
591
  - 7839e7b: Added `loading` prop to Button and ButtonIcon components for displaying spinner during async operations.
592
+
593
+ **Affected components:** Button, ButtonIcon
594
+
475
595
  - a00fb88: Fixed Table Row component to properly support opening links in new tabs via right-click or Cmd+Click when using the `href` prop.
596
+
597
+ **Affected components:** Table
598
+
476
599
  - e16ece5: Set the color-scheme property depending on theme
477
600
  - 1ef3ca4: Added new VisuallyHidden component for hiding content visually while keeping it accessible to screen readers.
478
- - 00bfb83: Fix default font wight and font family in Backstage UI.
601
+
602
+ **Affected components:** VisuallyHidden
603
+
604
+ - 00bfb83: Fix default font weight and font family in Backstage UI.
479
605
 
480
606
  ## 0.9.0-next.3
481
607
 
@@ -483,7 +609,9 @@
483
609
 
484
610
  - 83c100e: **BREAKING**: Removed `Collapsible` component. Migrate to `Accordion` or use React Aria `Disclosure`.
485
611
 
486
- ## Migration Path 1: Accordion (Opinionated Styled Component)
612
+ **Migration:**
613
+
614
+ **Path 1: Accordion (Opinionated Styled Component)**
487
615
 
488
616
  Accordion provides preset styling with a similar component structure.
489
617
 
@@ -504,7 +632,7 @@
504
632
 
505
633
  CSS classes: `.bui-CollapsibleRoot` → `.bui-Accordion`, `.bui-CollapsibleTrigger` → `.bui-AccordionTrigger` (now on heading element), `.bui-CollapsiblePanel` → `.bui-AccordionPanel`
506
634
 
507
- ## Migration Path 2: React Aria Disclosure (Full Customization)
635
+ **Path 2: React Aria Disclosure (Full Customization)**
508
636
 
509
637
  For custom styling without preset styles:
510
638
 
@@ -521,7 +649,9 @@
521
649
 
522
650
  Added searchable and multiple selection support to Select component. The component now accepts `searchable`, `selectionMode`, and `searchPlaceholder` props to enable filtering and multi-selection modes.
523
651
 
524
- Migration: If you're using `SelectProps` type directly, update from `SelectProps` to `SelectProps<'single' | 'multiple'>`. Component usage remains backward compatible.
652
+ **Migration:**
653
+
654
+ If you're using `SelectProps` type directly, update from `SelectProps` to `SelectProps<'single' | 'multiple'>`. Component usage remains backward compatible.
525
655
 
526
656
  ### Patch Changes
527
657
 
@@ -546,7 +676,7 @@
546
676
  - `large` size **changed from 3rem to 2.5rem** (40px)
547
677
  - New `x-large` size added (3rem / 48px)
548
678
 
549
- Migration:
679
+ **Migration:**
550
680
 
551
681
  ```diff
552
682
  # Remove Base UI-specific props
@@ -560,7 +690,7 @@
560
690
 
561
691
  Added `purpose` prop for accessibility control (`'informative'` or `'decoration'`).
562
692
 
563
- - 134151f: Fixing styles on SearchField in Backstage UI after migration to CSS modules. `SearchField` has now its own set of class names. We previously used class names from `TextField` but this approach was creating some confusion so going forward in your theme you'll be able to theme `TextField` and `SearchField` separately.
693
+ - 134151f: **BREAKING**: Fixing styles on SearchField in Backstage UI after migration to CSS modules. `SearchField` has now its own set of class names. We previously used class names from `TextField` but this approach was creating some confusion so going forward in your theme you'll be able to theme `TextField` and `SearchField` separately.
564
694
 
565
695
  ### Patch Changes
566
696
 
@@ -589,7 +719,7 @@
589
719
  - Data attribute: `data-checked` → `data-selected`
590
720
  - Use without label is no longer supported
591
721
 
592
- Migration examples:
722
+ **Migration:**
593
723
 
594
724
  Before:
595
725
 
@@ -633,18 +763,10 @@
633
763
 
634
764
  - b78fc45: **BREAKING**: Changed className prop behavior to augment default styles instead of being ignored or overriding them.
635
765
 
636
- Affected components:
637
-
638
- - Menu, MenuListBox, MenuAutocomplete, MenuAutocompleteListbox, MenuItem, MenuListBoxItem, MenuSection, MenuSeparator
639
- - Switch
640
- - Skeleton
641
- - FieldLabel
642
- - Header, HeaderToolbar
643
- - HeaderPage
644
- - Tabs, TabList, Tab, TabPanel
645
-
646
766
  If you were passing custom className values to any of these components that relied on the previous behavior, you may need to adjust your styles to account for the default classes now being applied alongside your custom classes.
647
767
 
768
+ **Affected components:** Menu, MenuListBox, MenuAutocomplete, MenuAutocompleteListbox, MenuItem, MenuListBoxItem, MenuSection, MenuSeparator, Switch, Skeleton, FieldLabel, Header, HeaderToolbar, HeaderPage, Tabs, TabList, Tab, TabPanel
769
+
648
770
  ### Patch Changes
649
771
 
650
772
  - ff9f0c3: Enable tree-shaking of imports other than `*.css`.
@@ -658,7 +780,7 @@
658
780
  - dac851f: Fix the default font size in Backstage UI.
659
781
  - 3c0ea67: Fix CSS layer ordering in Backstage UI to make sure component styles are loaded after tokens and base declarations.
660
782
  - 4eb455c: Fix font smoothing as default in Backstage UI.
661
- - 00bfb83: Fix default font wight and font family in Backstage UI.
783
+ - 00bfb83: Fix default font weight and font family in Backstage UI.
662
784
 
663
785
  ## 0.8.0
664
786
 
@@ -731,10 +853,10 @@
731
853
 
732
854
  ### Minor Changes
733
855
 
734
- - 0615e54: We are moving our DataTable component to React Aria. We removed our DataTable to only use Table as a single and opinionated option for tables. This new structure is made possible by using React Aria under the hood.
735
- - b245c9d: Backstage UI - HeaderPage - We are updating the breadcrumb to be more visible and accessible.
736
- - 800f593: **Breaking change** We are updating the Menu component to use React Aria under the hood. The structure and all props are changing to follow React Aria's guidance.
737
- - b0e47f3: **Breaking** We are upgrading our `Text` component to support all font sizes making the `Heading` component redundant. The new `Text` component introduces 4 sizes for title and 4 sizes for body text. All of these work in multiple colors and font weights. We improved the `as` prop to include all possible values. The `Link` component has also been updated to match the new `Text` component.
856
+ - 0615e54: **BREAKING**: We are moving our DataTable component to React Aria. We removed our DataTable to only use Table as a single and opinionated option for tables. This new structure is made possible by using React Aria under the hood.
857
+ - b245c9d: **BREAKING**: Backstage UI - HeaderPage - We are updating the breadcrumb to be more visible and accessible.
858
+ - 800f593: **BREAKING**: We are updating the Menu component to use React Aria under the hood. The structure and all props are changing to follow React Aria's guidance.
859
+ - b0e47f3: **BREAKING**: We are upgrading our `Text` component to support all font sizes making the `Heading` component redundant. The new `Text` component introduces 4 sizes for title and 4 sizes for body text. All of these work in multiple colors and font weights. We improved the `as` prop to include all possible values. The `Link` component has also been updated to match the new `Text` component.
738
860
 
739
861
  ### Patch Changes
740
862
 
@@ -743,7 +865,7 @@
743
865
  - f761306: Add new TagGroup component to Backstage UI.
744
866
  - 75fead9: Fixes a couple of small bugs in BUI including setting H1 and H2 correctly on the Header and HeaderPage.
745
867
  - e7ff178: Update styling of Tooltip element
746
- - 230b410: **Breaking change** Move breadcrumb to fit in the `HeaderPage` instead of the `Header` in Backstage UI.
868
+ - 230b410: **BREAKING**: Move breadcrumb to fit in the `HeaderPage` instead of the `Header` in Backstage UI.
747
869
  - 2f9a084: We are motion away from `motion` to use `gsap` instead to make Backstage UI backward compatible with React 17.
748
870
  - d4e603e: Updated Menu component in Backstage UI to use useId() from React Aria instead of React to support React 17.
749
871
  - 8bdc491: Remove stylesheet import from Select component.
@@ -754,11 +876,11 @@
754
876
 
755
877
  ### Minor Changes
756
878
 
757
- - 0615e54: We are moving our DataTable component to React Aria. We removed our DataTable to only use Table as a single and opinionated option for tables. This new structure is made possible by using React Aria under the hood.
879
+ - 0615e54: **BREAKING**: We are moving our DataTable component to React Aria. We removed our DataTable to only use Table as a single and opinionated option for tables. This new structure is made possible by using React Aria under the hood.
758
880
 
759
881
  ### Patch Changes
760
882
 
761
- - 230b410: **Breaking change** Move breadcrumb to fit in the `HeaderPage` instead of the `Header` in Backstage UI.
883
+ - 230b410: **BREAKING**: Move breadcrumb to fit in the `HeaderPage` instead of the `Header` in Backstage UI.
762
884
  - 8bdc491: Remove stylesheet import from Select component.
763
885
  - 404b426: Add `startCollapsed` prop on the `SearchField` component in BUI.
764
886
 
@@ -780,7 +902,7 @@
780
902
 
781
903
  ### Minor Changes
782
904
 
783
- - b0e47f3: **Breaking** We are upgrading our `Text` component to support all font sizes making the `Heading` component redundant. The new `Text` component introduces 4 sizes for title and 4 sizes for body text. All of these work in multiple colors and font weights. We improved the `as` prop to include all possible values. The `Link` component has also been updated to match the new `Text` component.
905
+ - b0e47f3: **BREAKING**: We are upgrading our `Text` component to support all font sizes making the `Heading` component redundant. The new `Text` component introduces 4 sizes for title and 4 sizes for body text. All of these work in multiple colors and font weights. We improved the `as` prop to include all possible values. The `Link` component has also been updated to match the new `Text` component.
784
906
 
785
907
  ### Patch Changes
786
908
 
@@ -791,13 +913,13 @@
791
913
 
792
914
  ### Minor Changes
793
915
 
794
- - e92bb9b: Canon has been renamed to Backstage UI. This means that `@backstage/canon` has been deprecated and replaced by `@backstage/ui`.
916
+ - e92bb9b: **BREAKING**: Canon has been renamed to Backstage UI. This means that `@backstage/canon` has been deprecated and replaced by `@backstage/ui`.
795
917
 
796
918
  ## 0.6.0-next.1
797
919
 
798
920
  ### Minor Changes
799
921
 
800
- - 2e30459: We are moving our Tooltip component to use React Aria under the hood. In doing so, the structure of the component and its prop are changing to follow the new underlying structure.
922
+ - 2e30459: **BREAKING**: We are moving our Tooltip component to use React Aria under the hood. In doing so, the structure of the component and its prop are changing to follow the new underlying structure.
801
923
 
802
924
  ### Patch Changes
803
925
 
@@ -812,7 +934,7 @@
812
934
 
813
935
  ### Minor Changes
814
936
 
815
- - 4c6d891: **BREAKING CHANGES**
937
+ - 4c6d891: **BREAKING**:
816
938
 
817
939
  We’re updating our Button component to provide better support for button links.
818
940
 
@@ -835,12 +957,12 @@
835
957
 
836
958
  ### Minor Changes
837
959
 
838
- - 621fac9: We are updating the default size of the Button component in Canon to be small instead of medium.
839
- - a842554: We set the default size for IconButton in Canon to be small instead of medium.
840
- - 35fd51d: Move TextField component to use react Aria under the hood. Introducing a new FieldLabel component to help build custom fields.
841
- - 78204a2: **Breaking** We are adding a new as prop on the Heading and Text component to make it easier to change the component tag. We are removing the render prop in favour of the as prop.
842
- - c49e335: TextField in Canon now has multiple label sizes as well as the capacity to hide label and description but still make them available for screen readers.
843
- - 24b45ef: Fixes spacing props on layout components and aligned on naming for the Grid component. You should now call the Grid root component using <Grid.Root /> instead of just <Grid />.
960
+ - 621fac9: **BREAKING**: We are updating the default size of the Button component in Canon to be small instead of medium.
961
+ - a842554: **BREAKING**: We set the default size for IconButton in Canon to be small instead of medium.
962
+ - 35fd51d: **BREAKING**: Move TextField component to use react Aria under the hood. Introducing a new FieldLabel component to help build custom fields.
963
+ - 78204a2: **BREAKING**: We are adding a new as prop on the Heading and Text component to make it easier to change the component tag. We are removing the render prop in favour of the as prop.
964
+ - c49e335: **BREAKING**: TextField in Canon now has multiple label sizes as well as the capacity to hide label and description but still make them available for screen readers.
965
+ - 24b45ef: **BREAKING**: Fixes spacing props on layout components and aligned on naming for the Grid component. You should now call the Grid root component using `<Grid.Root />` instead of just `<Grid />`.
844
966
 
845
967
  ### Patch Changes
846
968
 
@@ -870,7 +992,7 @@
870
992
 
871
993
  ### Minor Changes
872
994
 
873
- - 24b45ef: Fixes spacing props on layout components and aligned on naming for the Grid component. You should now call the Grid root component using <Grid.Root /> instead of just <Grid />.
995
+ - 24b45ef: Fixes spacing props on layout components and aligned on naming for the Grid component. You should now call the Grid root component using `<Grid.Root />` instead of just `<Grid />`.
874
996
 
875
997
  ### Patch Changes
876
998
 
@@ -880,9 +1002,9 @@
880
1002
 
881
1003
  ### Minor Changes
882
1004
 
883
- - ea36f74: **Breaking Change** Icons on Button and IconButton now need to be imported and placed like this: <Button iconStart={<ChevronDownIcon />} />
884
- - ccb1fc6: We are modifying the way we treat custom render using 'useRender()' under the hood from BaseUI.
885
- - 04a65c6: The icon prop in TextField now accept a ReactNode instead of an icon name. We also updated the icon sizes for each input sizes.
1005
+ - ea36f74: **BREAKING**: Icons on Button and IconButton now need to be imported and placed like this: `<Button iconStart={<ChevronDownIcon />} />`
1006
+ - ccb1fc6: **BREAKING**: We are modifying the way we treat custom render using 'useRender()' under the hood from BaseUI.
1007
+ - 04a65c6: **BREAKING**: The icon prop in TextField now accept a ReactNode instead of an icon name. We also updated the icon sizes for each input sizes.
886
1008
 
887
1009
  ### Patch Changes
888
1010
 
@@ -916,7 +1038,7 @@
916
1038
 
917
1039
  ### Minor Changes
918
1040
 
919
- - ea36f74: **Breaking Change** Icons on Button and IconButton now need to be imported and placed like this: <Button iconStart={<ChevronDownIcon />} />
1041
+ - ea36f74: **BREAKING**: Icons on Button and IconButton now need to be imported and placed like this: `<Button iconStart={<ChevronDownIcon />} />`
920
1042
 
921
1043
  ### Patch Changes
922
1044
 
@@ -934,9 +1056,9 @@
934
1056
 
935
1057
  ### Minor Changes
936
1058
 
937
- - df4e292: Improve class name structure using data attributes instead of class names.
938
- - f038613: Updated TextField and Select component to work with React Hook Form.
939
- - 1b0cf40: Add new Select component for Canon
1059
+ - df4e292: **BREAKING**: Improve class name structure using data attributes instead of class names.
1060
+ - f038613: **BREAKING**: Updated TextField and Select component to work with React Hook Form.
1061
+ - 1b0cf40: **BREAKING**: Add new Select component for Canon
940
1062
  - 5074d61: **BREAKING**: Added a new TextField component to replace the Field and Input component. After feedback, it became clear that we needed to build a more opinionated version to avoid any problem in the future.
941
1063
 
942
1064
  ### Patch Changes
@@ -948,7 +1070,7 @@
948
1070
  - 35b36ec: Add new Collapsible component for Canon.
949
1071
  - a47fd39: Removes instances of default React imports, a necessary update for the upcoming React 19 migration.
950
1072
 
951
- <https://legacy.reactjs.org/blog/2020/09/22/introducing-the-new-jsx-transform.html>
1073
+ https://legacy.reactjs.org/blog/2020/09/22/introducing-the-new-jsx-transform.html
952
1074
 
953
1075
  - 513477f: Add global CSS reset for anchor tags.
954
1076
  - 24f0e08: Improved Container styles, changing our max-width to 120rem and improving padding on smaller screens.
@@ -975,7 +1097,7 @@
975
1097
 
976
1098
  - a47fd39: Removes instances of default React imports, a necessary update for the upcoming React 19 migration.
977
1099
 
978
- <https://legacy.reactjs.org/blog/2020/09/22/introducing-the-new-jsx-transform.html>
1100
+ https://legacy.reactjs.org/blog/2020/09/22/introducing-the-new-jsx-transform.html
979
1101
 
980
1102
  - 24f0e08: Improved Container styles, changing our max-width to 120rem and improving padding on smaller screens.
981
1103
  - 7ae28ba: Move styles to the root of the TextField component.
@@ -1000,14 +1122,14 @@
1000
1122
 
1001
1123
  ### Minor Changes
1002
1124
 
1003
- - 5a5db29: Fix CSS imports and move CSS outputs out of the dist folder.
1004
- - 4557beb: Added a new Tooltip component to Canon.
1005
- - 1e4dfdb: We added a new IconButton component with fixed sizes showcasing a single icon.
1006
- - e8d12f9: Added about 40 new icons to Canon.
1007
- - 8689010: We are renaming CanonProvider to IconProvider to improve clarity on how to override icons.
1008
- - bf319b7: Added a new Menu component to Canon.
1009
- - cb7e99d: Updating styles for Text and Link components as well as global surface tokens.
1010
- - bd8520d: Added a new ScrollArea component for Canon.
1125
+ - 5a5db29: **BREAKING**: Fix CSS imports and move CSS outputs out of the dist folder.
1126
+ - 4557beb: **BREAKING**: Added a new Tooltip component to Canon.
1127
+ - 1e4dfdb: **BREAKING**: We added a new IconButton component with fixed sizes showcasing a single icon.
1128
+ - e8d12f9: **BREAKING**: Added about 40 new icons to Canon.
1129
+ - 8689010: **BREAKING**: We are renaming CanonProvider to IconProvider to improve clarity on how to override icons.
1130
+ - bf319b7: **BREAKING**: Added a new Menu component to Canon.
1131
+ - cb7e99d: **BREAKING**: Updating styles for Text and Link components as well as global surface tokens.
1132
+ - bd8520d: **BREAKING**: Added a new ScrollArea component for Canon.
1011
1133
 
1012
1134
  ### Patch Changes
1013
1135
 
@@ -1036,9 +1158,9 @@
1036
1158
  ### Minor Changes
1037
1159
 
1038
1160
  - 72c9800: **BREAKING**: Merged the Stack and Inline component into a single component called Flex.
1039
- - 65f4acc: This is the first alpha release for Canon. As part of this release we are introducing 5 layout components and 7 components. All theming is done through CSS variables.
1161
+ - 65f4acc: **BREAKING**: This is the first alpha release for Canon. As part of this release we are introducing 5 layout components and 7 components. All theming is done through CSS variables.
1040
1162
  - 1e4ccce: **BREAKING**: Fixing css structure and making sure that props are applying the correct styles for all responsive values.
1041
- - 8309bdb: Updated core CSS tokens and fixing the Button component accordingly.
1163
+ - 8309bdb: **BREAKING**: Updated core CSS tokens and fixing the Button component accordingly.
1042
1164
 
1043
1165
  ### Patch Changes
1044
1166