@backstage/ui 0.11.1 → 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 +222 -106
  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 +4 -4
  40. package/dist/components/Table/components/Table.esm.js.map +1 -1
  41. package/dist/components/TablePagination/TablePagination.esm.js +4 -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,10 +1,73 @@
1
1
  # @backstage/ui
2
2
 
3
- ## 0.11.1
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
+ ```
4
37
 
5
38
  ### Patch Changes
6
39
 
7
- - 7849d81: Fixed React 17 compatibility by using `useId` from `react-aria` instead of React's built-in hook which is only available in React 18+.
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
8
71
 
9
72
  ## 0.11.0
10
73
 
@@ -19,7 +82,7 @@
19
82
 
20
83
  New features include unified pagination modes, debounced query changes, stale data preservation during reloads, and row selection with toggle/replace behaviors.
21
84
 
22
- **Migration guide:**
85
+ **Migration:**
23
86
 
24
87
  1. Update imports and use the new `useTable` hook:
25
88
 
@@ -49,11 +112,11 @@
49
112
  +<Table columnConfig={columns} {...tableProps} />
50
113
  ```
51
114
 
52
- Affected components: Table, TableRoot, TablePagination
115
+ **Affected components:** Table, TableRoot, TablePagination
53
116
 
54
- - 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.
55
118
 
56
- ## Migration notes
119
+ **Migration:**
57
120
 
58
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.
59
122
 
@@ -62,49 +125,67 @@
62
125
  - `--bui-bg-tint-pressed` can be replaced by `--bui-bg-neutral-on-surface-0-pressed`
63
126
  - `--bui-bg-tint-disabled` can be replaced by `--bui-bg-neutral-on-surface-0-disabled`
64
127
 
65
- - 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
+
66
132
  - 4ea1d15: **BREAKING**: Renamed CSS variable `--bui-bg` to `--bui-bg-surface-0` for consistency.
67
133
 
68
134
  ### Patch Changes
69
135
 
70
136
  - 1880402: Fixes app background color on dark mode.
137
+
138
+ **Affected components:** Box
139
+
71
140
  - d2fdded: Added indeterminate state support to the Checkbox component for handling partial selection scenarios like table header checkboxes.
72
141
 
73
- Affected components: Checkbox
142
+ **Affected components:** Checkbox
74
143
 
75
144
  - 4fb15d2: Added missing `aria-label` attributes to `SearchField` components in `Select`, `MenuAutocomplete`, and `MenuAutocompleteListbox` to fix accessibility warnings.
76
145
 
77
- Affected components: Select, MenuAutocomplete, MenuAutocompleteListbox
146
+ **Affected components:** Select, MenuAutocomplete, MenuAutocompleteListbox
78
147
 
79
148
  - 21c87cc: Fixes disabled state in primary and secondary buttons in Backstage UI.
149
+
150
+ **Affected components:** Button
151
+
80
152
  - 9c76682: build(deps-dev): bump `storybook` from 10.1.9 to 10.1.10
81
153
  - de80336: Fixed disabled tertiary buttons incorrectly showing hover effects on surfaces.
154
+
155
+ **Affected components:** Button
156
+
82
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
+
83
161
  - 973c839: Fixed Table sorting indicator not being visible when a column is actively sorted.
84
162
 
85
- Affected components: Table, Column
163
+ **Affected components:** Table, Column
86
164
 
87
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
+
88
169
  - b01ab96: Added support for column width configuration in Table component. Columns now accept `width`, `defaultWidth`, `minWidth`, and `maxWidth` props for responsive layout control.
89
170
 
90
- Affected components: Table, Column
171
+ **Affected components:** Table, Column
91
172
 
92
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).
93
174
 
94
- Affected components: SearchField
175
+ **Affected components:** SearchField
95
176
 
96
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.
97
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.
98
179
 
99
- Affected components: Table, TablePagination
180
+ **Affected components:** Table, TablePagination
100
181
 
101
182
  - cfac8a4: Fixed missing border styles on table selection cells in multi-select mode.
102
183
 
103
- Affected components: Table
184
+ **Affected components:** Table
104
185
 
105
186
  - 2532d2a: Added `className` and `style` props to the `Table` component.
106
187
 
107
- Affected components: Table
188
+ **Affected components:** Table
108
189
 
109
190
  ## 0.11.0-next.1
110
191
 
@@ -119,7 +200,7 @@
119
200
 
120
201
  New features include unified pagination modes, debounced query changes, stale data preservation during reloads, and row selection with toggle/replace behaviors.
121
202
 
122
- **Migration guide:**
203
+ **Migration:**
123
204
 
124
205
  1. Update imports and use the new `useTable` hook:
125
206
 
@@ -149,11 +230,11 @@
149
230
  +<Table columnConfig={columns} {...tableProps} />
150
231
  ```
151
232
 
152
- Affected components: Table, TableRoot, TablePagination
233
+ **Affected components:** Table, TableRoot, TablePagination
153
234
 
154
- - 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.
155
236
 
156
- ## Migration notes
237
+ **Migration:**
157
238
 
158
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.
159
240
 
@@ -181,15 +262,15 @@
181
262
  - 9c76682: build(deps-dev): bump `storybook` from 10.1.9 to 10.1.10
182
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).
183
264
 
184
- Affected components: SearchField
265
+ **Affected components:** SearchField
185
266
 
186
267
  ## 0.10.0
187
268
 
188
269
  ### Minor Changes
189
270
 
190
- - 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.
191
272
 
192
- ### Migration Guide
273
+ **Migration:**
193
274
 
194
275
  If you were using `Cell` with text-specific props (`title`, `description`, `leadingIcon`, `href`), you need to update your code to use `CellText` instead:
195
276
 
@@ -225,32 +306,32 @@
225
306
 
226
307
  - 50b7927: Fixed Checkbox indicator showing checkmark color when unchecked.
227
308
 
228
- Affected components: Checkbox
309
+ **Affected components:** Checkbox
229
310
 
230
311
  - 5bacf55: Fixed `ButtonIcon` incorrectly applying `className` to inner elements instead of only the root element.
231
312
 
232
- Affected components: ButtonIcon
313
+ **Affected components:** ButtonIcon
233
314
 
234
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.
235
316
 
236
- Affected components: Row
317
+ **Affected components:** Row
237
318
 
238
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.
239
320
 
240
- Affected components: Table, TableHeader, Row, Column
321
+ **Affected components:** Table, TableHeader, Row, Column
241
322
 
242
323
  - fe7c751: Fixed `useTable` hook to prioritize `providedRowCount` over data length for accurate row count in server-side pagination scenarios.
243
324
  - c145031: Fixed Table column sorting indicator to show up arrow when no sort is active, correctly indicating that clicking will sort ascending.
244
325
 
245
- Affected components: Column
326
+ **Affected components:** Column
246
327
 
247
328
  ## 0.10.0-next.1
248
329
 
249
330
  ### Minor Changes
250
331
 
251
- - 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.
252
333
 
253
- ### Migration Guide
334
+ **Migration:**
254
335
 
255
336
  If you were using `Cell` with text-specific props (`title`, `description`, `leadingIcon`, `href`), you need to update your code to use `CellText` instead:
256
337
 
@@ -286,15 +367,15 @@
286
367
 
287
368
  - 50b7927: Fixed Checkbox indicator showing checkmark color when unchecked.
288
369
 
289
- Affected components: Checkbox
370
+ **Affected components:** Checkbox
290
371
 
291
372
  - 5bacf55: Fixed `ButtonIcon` incorrectly applying `className` to inner elements instead of only the root element.
292
373
 
293
- Affected components: ButtonIcon
374
+ **Affected components:** ButtonIcon
294
375
 
295
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.
296
377
 
297
- Affected components: Table, TableHeader, Row, Column
378
+ **Affected components:** Table, TableHeader, Row, Column
298
379
 
299
380
  ## 0.9.1-next.0
300
381
 
@@ -302,12 +383,12 @@
302
383
 
303
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.
304
385
 
305
- Affected components: Row
386
+ **Affected components:** Row
306
387
 
307
388
  - fe7c751: Fixed `useTable` hook to prioritize `providedRowCount` over data length for accurate row count in server-side pagination scenarios.
308
389
  - c145031: Fixed Table column sorting indicator to show up arrow when no sort is active, correctly indicating that clicking will sort ascending.
309
390
 
310
- Affected components: Column
391
+ **Affected components:** Column
311
392
 
312
393
  ## 0.9.0
313
394
 
@@ -323,7 +404,7 @@
323
404
  - `large` size **changed from 3rem to 2.5rem** (40px)
324
405
  - New `x-large` size added (3rem / 48px)
325
406
 
326
- Migration:
407
+ **Migration:**
327
408
 
328
409
  ```diff
329
410
  # Remove Base UI-specific props
@@ -337,6 +418,8 @@
337
418
 
338
419
  Added `purpose` prop for accessibility control (`'informative'` or `'decoration'`).
339
420
 
421
+ **Affected components:** Avatar
422
+
340
423
  - 5c614ff: **BREAKING**: Migrated Checkbox component from Base UI to React Aria Components.
341
424
 
342
425
  API changes required:
@@ -350,7 +433,7 @@
350
433
  - Data attribute: `data-checked` → `data-selected`
351
434
  - Use without label is no longer supported
352
435
 
353
- Migration examples:
436
+ **Migration:**
354
437
 
355
438
  Before:
356
439
 
@@ -392,12 +475,12 @@
392
475
  </Checkbox>
393
476
  ```
394
477
 
395
- - 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.
396
479
  - a67670d: **BREAKING**: Removed central `componentDefinitions` object and related type utilities (`ComponentDefinitionName`, `ComponentClassNames`).
397
480
 
398
481
  Component definitions are primarily intended for documenting the CSS class API for theming purposes, not for programmatic use in JavaScript/TypeScript.
399
482
 
400
- **Migration Guide:**
483
+ **Migration:**
401
484
 
402
485
  If you were using component definitions or class names to build custom components, we recommend migrating to either:
403
486
 
@@ -406,21 +489,15 @@
406
489
 
407
490
  - b78fc45: **BREAKING**: Changed className prop behavior to augment default styles instead of being ignored or overriding them.
408
491
 
409
- Affected components:
410
-
411
- - Menu, MenuListBox, MenuAutocomplete, MenuAutocompleteListbox, MenuItem, MenuListBoxItem, MenuSection, MenuSeparator
412
- - Switch
413
- - Skeleton
414
- - FieldLabel
415
- - Header, HeaderToolbar
416
- - HeaderPage
417
- - Tabs, TabList, Tab, TabPanel
418
-
419
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.
420
493
 
494
+ **Affected components:** Menu, MenuListBox, MenuAutocomplete, MenuAutocompleteListbox, MenuItem, MenuListBoxItem, MenuSection, MenuSeparator, Switch, Skeleton, FieldLabel, Header, HeaderToolbar, HeaderPage, Tabs, TabList, Tab, TabPanel
495
+
421
496
  - 83c100e: **BREAKING**: Removed `Collapsible` component. Migrate to `Accordion` or use React Aria `Disclosure`.
422
497
 
423
- ## Migration Path 1: Accordion (Opinionated Styled Component)
498
+ **Migration:**
499
+
500
+ **Path 1: Accordion (Opinionated Styled Component)**
424
501
 
425
502
  Accordion provides preset styling with a similar component structure.
426
503
 
@@ -441,7 +518,7 @@
441
518
 
442
519
  CSS classes: `.bui-CollapsibleRoot` → `.bui-Accordion`, `.bui-CollapsibleTrigger` → `.bui-AccordionTrigger` (now on heading element), `.bui-CollapsiblePanel` → `.bui-AccordionPanel`
443
520
 
444
- ## Migration Path 2: React Aria Disclosure (Full Customization)
521
+ **Path 2: React Aria Disclosure (Full Customization)**
445
522
 
446
523
  For custom styling without preset styles:
447
524
 
@@ -458,30 +535,73 @@
458
535
 
459
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.
460
537
 
461
- 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
462
543
 
463
544
  ### Patch Changes
464
545
 
465
546
  - d01de00: Fix broken external links in Backstage UI Header component.
547
+
548
+ **Affected components:** Header
549
+
466
550
  - 35a3614: Fixed CSS issues in Select component including popover width constraints, focus outline behavior, and overflow handling.
551
+
552
+ **Affected components:** Select
553
+
467
554
  - 01476f0: Improved visual consistency of PasswordField, SearchField, and MenuAutocomplete components.
555
+
556
+ **Affected components:** PasswordField, SearchField, MenuAutocomplete
557
+
468
558
  - 26c6a78: Fix default text color in Backstage UI
559
+
560
+ **Affected components:** Text
561
+
469
562
  - deaa427: Fixed Text component to prevent `truncate` prop from being spread to the underlying DOM element.
563
+
564
+ **Affected components:** Text
565
+
470
566
  - 1059f95: Improved the Link component structure in Backstage UI.
567
+
568
+ **Affected components:** Link
569
+
471
570
  - 836b0c7: Fixed dialog backdrop appearance in dark mode.
571
+
572
+ **Affected components:** Dialog
573
+
472
574
  - 6874094: Migrated CellProfile component from Base UI Avatar to Backstage UI Avatar component.
575
+
576
+ **Affected components:** Avatar
577
+
473
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
+
474
582
  - 6d35a6b: Removed `@base-ui-components/react` dependency as all components now use React Aria Components.
475
583
  - dac851f: Fix the default font size in Backstage UI.
476
584
  - 3c0ea67: Fix CSS layer ordering in Backstage UI to make sure component styles are loaded after tokens and base declarations.
477
585
  - 3b18d80: Fixed RadioGroup radio button ellipse distortion by preventing flex shrink and grow.
586
+
587
+ **Affected components:** RadioGroup
588
+
478
589
  - 4eb455c: Fix font smoothing as default in Backstage UI.
479
590
  - ff9f0c3: Enable tree-shaking of imports other than `*.css`.
480
591
  - 7839e7b: Added `loading` prop to Button and ButtonIcon components for displaying spinner during async operations.
592
+
593
+ **Affected components:** Button, ButtonIcon
594
+
481
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
+
482
599
  - e16ece5: Set the color-scheme property depending on theme
483
600
  - 1ef3ca4: Added new VisuallyHidden component for hiding content visually while keeping it accessible to screen readers.
484
- - 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.
485
605
 
486
606
  ## 0.9.0-next.3
487
607
 
@@ -489,7 +609,9 @@
489
609
 
490
610
  - 83c100e: **BREAKING**: Removed `Collapsible` component. Migrate to `Accordion` or use React Aria `Disclosure`.
491
611
 
492
- ## Migration Path 1: Accordion (Opinionated Styled Component)
612
+ **Migration:**
613
+
614
+ **Path 1: Accordion (Opinionated Styled Component)**
493
615
 
494
616
  Accordion provides preset styling with a similar component structure.
495
617
 
@@ -510,7 +632,7 @@
510
632
 
511
633
  CSS classes: `.bui-CollapsibleRoot` → `.bui-Accordion`, `.bui-CollapsibleTrigger` → `.bui-AccordionTrigger` (now on heading element), `.bui-CollapsiblePanel` → `.bui-AccordionPanel`
512
634
 
513
- ## Migration Path 2: React Aria Disclosure (Full Customization)
635
+ **Path 2: React Aria Disclosure (Full Customization)**
514
636
 
515
637
  For custom styling without preset styles:
516
638
 
@@ -527,7 +649,9 @@
527
649
 
528
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.
529
651
 
530
- 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.
531
655
 
532
656
  ### Patch Changes
533
657
 
@@ -552,7 +676,7 @@
552
676
  - `large` size **changed from 3rem to 2.5rem** (40px)
553
677
  - New `x-large` size added (3rem / 48px)
554
678
 
555
- Migration:
679
+ **Migration:**
556
680
 
557
681
  ```diff
558
682
  # Remove Base UI-specific props
@@ -566,7 +690,7 @@
566
690
 
567
691
  Added `purpose` prop for accessibility control (`'informative'` or `'decoration'`).
568
692
 
569
- - 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.
570
694
 
571
695
  ### Patch Changes
572
696
 
@@ -595,7 +719,7 @@
595
719
  - Data attribute: `data-checked` → `data-selected`
596
720
  - Use without label is no longer supported
597
721
 
598
- Migration examples:
722
+ **Migration:**
599
723
 
600
724
  Before:
601
725
 
@@ -639,18 +763,10 @@
639
763
 
640
764
  - b78fc45: **BREAKING**: Changed className prop behavior to augment default styles instead of being ignored or overriding them.
641
765
 
642
- Affected components:
643
-
644
- - Menu, MenuListBox, MenuAutocomplete, MenuAutocompleteListbox, MenuItem, MenuListBoxItem, MenuSection, MenuSeparator
645
- - Switch
646
- - Skeleton
647
- - FieldLabel
648
- - Header, HeaderToolbar
649
- - HeaderPage
650
- - Tabs, TabList, Tab, TabPanel
651
-
652
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.
653
767
 
768
+ **Affected components:** Menu, MenuListBox, MenuAutocomplete, MenuAutocompleteListbox, MenuItem, MenuListBoxItem, MenuSection, MenuSeparator, Switch, Skeleton, FieldLabel, Header, HeaderToolbar, HeaderPage, Tabs, TabList, Tab, TabPanel
769
+
654
770
  ### Patch Changes
655
771
 
656
772
  - ff9f0c3: Enable tree-shaking of imports other than `*.css`.
@@ -664,7 +780,7 @@
664
780
  - dac851f: Fix the default font size in Backstage UI.
665
781
  - 3c0ea67: Fix CSS layer ordering in Backstage UI to make sure component styles are loaded after tokens and base declarations.
666
782
  - 4eb455c: Fix font smoothing as default in Backstage UI.
667
- - 00bfb83: Fix default font wight and font family in Backstage UI.
783
+ - 00bfb83: Fix default font weight and font family in Backstage UI.
668
784
 
669
785
  ## 0.8.0
670
786
 
@@ -737,10 +853,10 @@
737
853
 
738
854
  ### Minor Changes
739
855
 
740
- - 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.
741
- - b245c9d: Backstage UI - HeaderPage - We are updating the breadcrumb to be more visible and accessible.
742
- - 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.
743
- - 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.
744
860
 
745
861
  ### Patch Changes
746
862
 
@@ -749,7 +865,7 @@
749
865
  - f761306: Add new TagGroup component to Backstage UI.
750
866
  - 75fead9: Fixes a couple of small bugs in BUI including setting H1 and H2 correctly on the Header and HeaderPage.
751
867
  - e7ff178: Update styling of Tooltip element
752
- - 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.
753
869
  - 2f9a084: We are motion away from `motion` to use `gsap` instead to make Backstage UI backward compatible with React 17.
754
870
  - d4e603e: Updated Menu component in Backstage UI to use useId() from React Aria instead of React to support React 17.
755
871
  - 8bdc491: Remove stylesheet import from Select component.
@@ -760,11 +876,11 @@
760
876
 
761
877
  ### Minor Changes
762
878
 
763
- - 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.
764
880
 
765
881
  ### Patch Changes
766
882
 
767
- - 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.
768
884
  - 8bdc491: Remove stylesheet import from Select component.
769
885
  - 404b426: Add `startCollapsed` prop on the `SearchField` component in BUI.
770
886
 
@@ -786,7 +902,7 @@
786
902
 
787
903
  ### Minor Changes
788
904
 
789
- - 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.
790
906
 
791
907
  ### Patch Changes
792
908
 
@@ -797,13 +913,13 @@
797
913
 
798
914
  ### Minor Changes
799
915
 
800
- - 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`.
801
917
 
802
918
  ## 0.6.0-next.1
803
919
 
804
920
  ### Minor Changes
805
921
 
806
- - 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.
807
923
 
808
924
  ### Patch Changes
809
925
 
@@ -818,7 +934,7 @@
818
934
 
819
935
  ### Minor Changes
820
936
 
821
- - 4c6d891: **BREAKING CHANGES**
937
+ - 4c6d891: **BREAKING**:
822
938
 
823
939
  We’re updating our Button component to provide better support for button links.
824
940
 
@@ -841,12 +957,12 @@
841
957
 
842
958
  ### Minor Changes
843
959
 
844
- - 621fac9: We are updating the default size of the Button component in Canon to be small instead of medium.
845
- - a842554: We set the default size for IconButton in Canon to be small instead of medium.
846
- - 35fd51d: Move TextField component to use react Aria under the hood. Introducing a new FieldLabel component to help build custom fields.
847
- - 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.
848
- - 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.
849
- - 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 />`.
850
966
 
851
967
  ### Patch Changes
852
968
 
@@ -876,7 +992,7 @@
876
992
 
877
993
  ### Minor Changes
878
994
 
879
- - 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 />`.
880
996
 
881
997
  ### Patch Changes
882
998
 
@@ -886,9 +1002,9 @@
886
1002
 
887
1003
  ### Minor Changes
888
1004
 
889
- - ea36f74: **Breaking Change** Icons on Button and IconButton now need to be imported and placed like this: <Button iconStart={<ChevronDownIcon />} />
890
- - ccb1fc6: We are modifying the way we treat custom render using 'useRender()' under the hood from BaseUI.
891
- - 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.
892
1008
 
893
1009
  ### Patch Changes
894
1010
 
@@ -922,7 +1038,7 @@
922
1038
 
923
1039
  ### Minor Changes
924
1040
 
925
- - 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 />} />`
926
1042
 
927
1043
  ### Patch Changes
928
1044
 
@@ -940,9 +1056,9 @@
940
1056
 
941
1057
  ### Minor Changes
942
1058
 
943
- - df4e292: Improve class name structure using data attributes instead of class names.
944
- - f038613: Updated TextField and Select component to work with React Hook Form.
945
- - 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
946
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.
947
1063
 
948
1064
  ### Patch Changes
@@ -954,7 +1070,7 @@
954
1070
  - 35b36ec: Add new Collapsible component for Canon.
955
1071
  - a47fd39: Removes instances of default React imports, a necessary update for the upcoming React 19 migration.
956
1072
 
957
- <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
958
1074
 
959
1075
  - 513477f: Add global CSS reset for anchor tags.
960
1076
  - 24f0e08: Improved Container styles, changing our max-width to 120rem and improving padding on smaller screens.
@@ -981,7 +1097,7 @@
981
1097
 
982
1098
  - a47fd39: Removes instances of default React imports, a necessary update for the upcoming React 19 migration.
983
1099
 
984
- <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
985
1101
 
986
1102
  - 24f0e08: Improved Container styles, changing our max-width to 120rem and improving padding on smaller screens.
987
1103
  - 7ae28ba: Move styles to the root of the TextField component.
@@ -1006,14 +1122,14 @@
1006
1122
 
1007
1123
  ### Minor Changes
1008
1124
 
1009
- - 5a5db29: Fix CSS imports and move CSS outputs out of the dist folder.
1010
- - 4557beb: Added a new Tooltip component to Canon.
1011
- - 1e4dfdb: We added a new IconButton component with fixed sizes showcasing a single icon.
1012
- - e8d12f9: Added about 40 new icons to Canon.
1013
- - 8689010: We are renaming CanonProvider to IconProvider to improve clarity on how to override icons.
1014
- - bf319b7: Added a new Menu component to Canon.
1015
- - cb7e99d: Updating styles for Text and Link components as well as global surface tokens.
1016
- - 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.
1017
1133
 
1018
1134
  ### Patch Changes
1019
1135
 
@@ -1042,9 +1158,9 @@
1042
1158
  ### Minor Changes
1043
1159
 
1044
1160
  - 72c9800: **BREAKING**: Merged the Stack and Inline component into a single component called Flex.
1045
- - 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.
1046
1162
  - 1e4ccce: **BREAKING**: Fixing css structure and making sure that props are applying the correct styles for all responsive values.
1047
- - 8309bdb: Updated core CSS tokens and fixing the Button component accordingly.
1163
+ - 8309bdb: **BREAKING**: Updated core CSS tokens and fixing the Button component accordingly.
1048
1164
 
1049
1165
  ### Patch Changes
1050
1166