Commit Graph

322 Commits

Author SHA1 Message Date
Charles de Dreuille 693f1c59d7 Merge pull request #33358 from backstage/charlesdedreuille/bacui-42-code-listboxlistrow-component
feat(ui): add List and ListRow components
2026-03-17 11:01:09 +00:00
Patrik Oldsberg 1f25382e56 Move table cell requirement docs to docs-ui
Move the cell wrapper requirement documentation from the package
README to the docs-ui table component page where it belongs.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
2026-03-16 20:27:02 +01:00
Johan Persson 42f8c9b2b8 feat(ui): centralize routing in BUIProvider (#33267)
* feat(ui): centralize routing in BUIProvider

BUIProvider now auto-detects React Router context and provides
client-side navigation for all BUI components. Retired
InternalLinkProvider and added BUIRouterProvider as a public
export for integration use.

Signed-off-by: Johan Persson <johanopersson@gmail.com>

* feat(plugin-app): move BUIProvider inside app router

Moved BUIProvider from wrapping AppRouter to being a child inside
it, so it detects the React Router context and provides client-side
routing for all BUI components.

Signed-off-by: Johan Persson <johanopersson@gmail.com>

* feat(core-app-api): add BUIRouterProvider to legacy app router

Added BUIRouterProvider inside the legacy AppRouter to provide
React Aria routing for all BUI components.

Signed-off-by: Johan Persson <johanopersson@gmail.com>

* docs(ui): update BUIProvider documentation for routing

Updated installation docs to cover BUIProvider's routing role
and the requirement to render it inside a React Router context.

Signed-off-by: Johan Persson <johanopersson@gmail.com>

* refactor(ui): move BUIProvider from analytics to provider directory

BUIProvider now handles both analytics and routing, so it no longer
belongs in the analytics directory.

Signed-off-by: Johan Persson <johanopersson@gmail.com>

* fix(ui): add BUIProvider to storybook stories with MemoryRouter

Added BUIProvider inside MemoryRouter in all stories that use
routing, so client-side navigation works in Storybook.

Signed-off-by: Johan Persson <johanopersson@gmail.com>

* fix(plugin-app): move BUIProvider inside RouterComponent

Moved BUIProvider to wrap all content inside RouterComponent
so that extraElements (like dialogs) also get BUI context.

Signed-off-by: Johan Persson <johanopersson@gmail.com>

* refactor: replace BUIRouterProvider with BUIProvider in legacy app

Use BUIProvider directly inside the legacy AppRouter instead of a
separate BUIRouterProvider export. Removes BUIRouterProvider from
the public API of @backstage/ui.

Signed-off-by: Johan Persson <johanopersson@gmail.com>

* refactor(ui): inline routing logic into BUIProvider

Removed the routing/ directory and inlined the RouterProvider
setup directly into BUIProvider since it's the only consumer.

Signed-off-by: Johan Persson <johanopersson@gmail.com>

---------

Signed-off-by: Johan Persson <johanopersson@gmail.com>
2026-03-16 18:56:24 +01:00
Johan Persson d9d2dd6827 feat(ui): add SearchAutocomplete component
Add SearchAutocomplete and SearchAutocompleteItem components for
building accessible search-with-results patterns. Built on React
Aria's Autocomplete with virtual focus for keyboard navigation
and a non-modal popover for results.

Features:
- Controlled input via inputValue/onInputChange
- Configurable popover width and placement
- Rich content support per result item
- Item selection via onAction
- defaultOpen prop for visual testing
- Close on interact outside and input clear

Includes Storybook stories, docs-ui documentation, changeset,
and API report.

Signed-off-by: Johan Persson <johanopersson@gmail.com>
2026-03-16 15:41:58 +01:00
Charles de Dreuille b0a6ee2a8a Update page.mdx
Signed-off-by: Charles de Dreuille <charles.dedreuille@gmail.com>
2026-03-16 13:31:11 +00:00
Charles de Dreuille 5fd81db713 Update types.ts
Signed-off-by: Charles de Dreuille <charles.dedreuille@gmail.com>
2026-03-16 12:10:32 +00:00
Charles de Dreuille 985788ff6d Move to GridList
Signed-off-by: Charles de Dreuille <charles.dedreuille@gmail.com>
2026-03-16 12:05:48 +00:00
Charles de Dreuille a8dfc35a9e Update page.mdx
Signed-off-by: Charles de Dreuille <charles.dedreuille@gmail.com>
2026-03-15 17:41:05 +00:00
Charles de Dreuille fa23437a87 Update components.tsx
Signed-off-by: Charles de Dreuille <charles.dedreuille@gmail.com>
2026-03-15 09:02:29 +00:00
Charles de Dreuille 668639722c Cleanups
Signed-off-by: Charles de Dreuille <charles.dedreuille@gmail.com>
2026-03-15 08:39:46 +00:00
Charles de Dreuille 04d9d8df40 feat(ui): add ListBox and ListBoxItem components
Adds standalone `ListBox` and `ListBoxItem` components to `@backstage/ui`,
built on top of React Aria's ListBox primitives. Items support icons,
descriptions, and single or multiple selection modes.

Includes Storybook stories and docs-ui documentation page.

Signed-off-by: Charles de Dreuille <charles.dedreuille@gmail.com>
Made-with: Cursor
2026-03-14 14:37:33 +00:00
Jonathan Roebuck b838cc97b0 docs(ui): add changeset and docs for TableRoot loading prop
Signed-off-by: Jonathan Roebuck <jroebuck@spotify.com>
2026-03-13 18:29:27 +00:00
renovate[bot] b9a41c0a22 chore(deps): update dependency @uiw/react-codemirror to v4.25.8
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-11 12:14:09 +01:00
renovate[bot] 6ea57c4fed chore(deps): update dependency @uiw/codemirror-themes to v4.25.8
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-11 12:13:27 +01:00
Fredrik Adelöw da08dd1a8b Merge pull request #33244 from backstage/renovate/eslint-monorepo
chore(deps): update dependency eslint to v9.39.4
2026-03-11 11:24:03 +01:00
Fredrik Adelöw 22475eaba9 Merge pull request #33237 from backstage/renovate/shiki-monorepo
chore(deps): update shiki monorepo to v3.23.0
2026-03-11 11:23:45 +01:00
Fredrik Adelöw c08e4daf24 Merge pull request #33178 from backstage/renovate/postcss-8.x-lockfile
chore(deps): update dependency postcss to v8.5.8
2026-03-11 11:23:27 +01:00
renovate[bot] 9148bbaf88 chore(deps): update dependency motion to v12.35.1
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-11 11:12:10 +01:00
Fredrik Adelöw 1340c82948 fixup icons
Signed-off-by: Fredrik Adelöw <freben@spotify.com>
2026-03-10 16:33:24 +01:00
Fredrik Adelöw cbc012c664 Merge pull request #32340 from Believe-SA/docs/hooks
feat(docs-ui): document BUI's hooks
2026-03-10 16:29:22 +01:00
renovate[bot] d26488e5e3 chore(deps): update dependency eslint to v9.39.4
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-09 22:08:00 +00:00
renovate[bot] cfebfed724 chore(deps): update shiki monorepo to v3.23.0
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-09 19:23:33 +00:00
Patrik Oldsberg ad7c883dee Deprecate HeaderPage in favor of Header in @backstage/ui (#33188)
* Deprecate HeaderPage in favor of Header in @backstage/ui

Rename the HeaderPage component to Header, keeping HeaderPage as a
deprecated alias for backwards compatibility. Also deprecate
HeaderPageProps, HeaderPageOwnProps, HeaderPageBreadcrumb, and
HeaderPageDefinition with new Header* equivalents. Update all internal
usages, stories, and docs-ui documentation to use the new names.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor

* Rename HeaderPage files and directories to Header

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor

* Add changeset for mui-to-bui Header rename

Document the plugin release impact of switching the MUI to BUI theme converter page to the renamed Header component.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor

---------

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
2026-03-09 11:52:19 +01:00
renovate[bot] 3ad401e92f chore(deps): update dependency postcss to v8.5.8
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-07 15:09:41 +00:00
Johan Persson 12d8afe82d feat(ui): add analytics event tracking to BUI navigation components (#33150)
* feat(ui): add analytics types

Signed-off-by: Johan Persson <johanopersson@gmail.com>

* feat(ui): add useAnalytics hook with dev-mode swap guard

Signed-off-by: Johan Persson <johanopersson@gmail.com>

* feat(ui): add AnalyticsProvider, getNodeText, and analytics barrel exports

Signed-off-by: Johan Persson <johanopersson@gmail.com>

* feat(ui): integrate analytics into defineComponent and useDefinition

Signed-off-by: Johan Persson <johanopersson@gmail.com>

* feat(ui): add analytics tracking to Link component

Signed-off-by: Johan Persson <johanopersson@gmail.com>

* feat(ui): add analytics tracking to ButtonLink component

Signed-off-by: Johan Persson <johanopersson@gmail.com>

* feat(ui): add analytics tracking to Tab component

Signed-off-by: Johan Persson <johanopersson@gmail.com>

* feat(ui): add analytics tracking to MenuItem component

Signed-off-by: Johan Persson <johanopersson@gmail.com>

* feat(ui): add analytics tracking to Tag component

Signed-off-by: Johan Persson <johanopersson@gmail.com>

* feat(ui): add analytics tracking to Table Row component

Signed-off-by: Johan Persson <johanopersson@gmail.com>

* feat(ui): widen getNodeText to accept render functions

Signed-off-by: Johan Persson <johanopersson@gmail.com>

* chore(ui): update API reports

Signed-off-by: Johan Persson <johanopersson@gmail.com>

* chore: add changeset for BUI analytics

Signed-off-by: Johan Persson <johanopersson@gmail.com>

* fix(ui): chain MenuItem onAction with user-provided handler instead of overwriting

Signed-off-by: Johan Persson <johanopersson@gmail.com>

* chore(ui): address review feedback — changeset wording and types docs

Signed-off-by: Johan Persson <johanopersson@gmail.com>

* feat(core-app-api): wire AnalyticsProvider from @backstage/ui into app shell

Signed-off-by: Johan Persson <johanopersson@gmail.com>

* feat(plugin-app): add AnalyticsProvider wrapper extension for BUI components

Signed-off-by: Johan Persson <johanopersson@gmail.com>

* chore: update API reports

Signed-off-by: Johan Persson <johanopersson@gmail.com>

* chore: update API reports for core-components and scaffolder

Signed-off-by: Johan Persson <johanopersson@gmail.com>

* docs(ui): add analytics documentation and noTrack prop to component docs

Signed-off-by: Johan Persson <johanopersson@gmail.com>

* chore: update yarn.lock

Signed-off-by: Johan Persson <johanopersson@gmail.com>

* feat(plugin-app): move AnalyticsProvider into AppRoot directly

Signed-off-by: Johan Persson <johanopersson@gmail.com>

* chore: format installation docs

Signed-off-by: Johan Persson <johanopersson@gmail.com>

* fix(ui): call user onPress before analytics in Tag component

Signed-off-by: Johan Persson <johanopersson@gmail.com>

* refactor(ui): replace AnalyticsProvider with generic BUIProvider

Signed-off-by: Johan Persson <johanopersson@gmail.com>

* chore: replace remaining AnalyticsProvider references with BUIProvider

Signed-off-by: Johan Persson <johanopersson@gmail.com>

* fix(plugin-app): import useAnalytics from frontend-plugin-api

Signed-off-by: Johan Persson <johanopersson@gmail.com>

* docs(ui): improve noTrack prop description

Signed-off-by: Johan Persson <johanopersson@gmail.com>

---------

Signed-off-by: Johan Persson <johanopersson@gmail.com>
2026-03-06 14:45:57 +01:00
Ambrish R 3e68fcae92 bui(docs-ui): Add discord link to backstage ui docs header (#33108)
* Add discord link to backstage ui docs header

Signed-off-by: AmbrishRamachandiran <ambrish.r@infosys.com>

* Addressing review comments

Signed-off-by: AmbrishRamachandiran <ambrish.r@infosys.com>

---------

Signed-off-by: AmbrishRamachandiran <ambrish.r@infosys.com>
2026-03-06 14:42:14 +01:00
renovate[bot] c576b621c0 chore(deps): update dependency motion to v12.34.4
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-06 14:37:55 +01:00
renovate[bot] 56f39bffdd chore(deps): update dependency eslint to v9.39.3
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-06 09:02:25 +01:00
renovate[bot] 4792ecfc44 chore(deps): update dependency @uiw/codemirror-themes to v4.25.7
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-06 09:01:57 +01:00
Fredrik Adelöw ad288d8f94 Merge pull request #32659 from backstage/renovate/remixicon-react-4.x-lockfile
chore(deps): update dependency @remixicon/react to v4.9.0
2026-03-05 22:54:27 +01:00
renovate[bot] a375c557a3 chore(deps): update dependency @remixicon/react to v4.9.0
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-05 14:33:30 +00:00
renovate[bot] 53aa8034a8 chore(deps): update codemirror
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-05 14:25:17 +00:00
Charles de Dreuille 16d424276a Improve types
Signed-off-by: Charles de Dreuille <charles.dedreuille@gmail.com>
2026-03-04 20:24:12 +00:00
Charles de Dreuille db927510dc Add new Interactive card
Signed-off-by: Charles de Dreuille <charles.dedreuille@gmail.com>
2026-03-04 15:24:23 +00:00
Johan Persson 096dfdf86e Migrate Link component from useStyles to useDefinition
Fix pre-existing variant default from 'body' to 'body-medium' to match
actual CSS selectors. Add missing 'info' color to docs-ui props definition.

Signed-off-by: Johan Persson <johanopersson@gmail.com>
2026-02-27 17:18:03 +01:00
Charles de Dreuille 1afa036222 Cleanup
Signed-off-by: Charles de Dreuille <charles.dedreuille@gmail.com>
2026-02-25 19:46:17 +00:00
Fredrik Adelöw 6c4708b4bf Merge pull request #32941 from backstage/renovate/next-mdx-remote-client-2.x-lockfile
chore(deps): update dependency next-mdx-remote-client to v2.1.8
2026-02-22 16:34:30 +01:00
renovate[bot] cf30f34746 chore(deps): update dependency motion to v12.34.2
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-21 16:49:27 +00:00
renovate[bot] 230b7a3a16 chore(deps): update dependency next-mdx-remote-client to v2.1.8
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-20 22:43:37 +00:00
Charles de Dreuille ed7b4ad052 docs-ui: replace CSS sync script with postcss-import
Signed-off-by: Charles de Dreuille <charles.dedreuille@gmail.com>
2026-02-20 07:32:10 +01:00
dependabot[bot] b17c46b6b0 build(deps): bump tar from 7.5.7 to 7.5.9 in /docs-ui (#32902)
Bumps [tar](https://github.com/isaacs/node-tar) from 7.5.7 to 7.5.9.
- [Release notes](https://github.com/isaacs/node-tar/releases)
- [Changelog](https://github.com/isaacs/node-tar/blob/main/CHANGELOG.md)
- [Commits](https://github.com/isaacs/node-tar/compare/v7.5.7...v7.5.9)

---
updated-dependencies:
- dependency-name: tar
  dependency-version: 7.5.9
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-19 08:22:05 +01:00
renovate[bot] 647ebbf951 chore(deps): update dependency motion to v12.34.0 (#32889)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-19 08:21:02 +01:00
Patrik Oldsberg 0ec3c0e50e ui: rename Header to PluginHeader
Renamed the Header component to PluginHeader for clarity, along with
all associated exports (HeaderProps, HeaderDefinition) and CSS class
names. Updated docs-ui documentation to match.

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
2026-02-17 11:37:45 +01:00
renovate[bot] e1c5d1ec34 chore(deps): update dependency @codemirror/view to v6.39.14
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-15 11:28:35 +00:00
Charles de Dreuille e8670d00f1 Cleanup docs
Signed-off-by: Charles de Dreuille <charles.dedreuille@gmail.com>
2026-02-13 14:01:13 +00:00
Charles de Dreuille 0bf7ff679a Cleanups
Signed-off-by: Charles de Dreuille <charles.dedreuille@gmail.com>
2026-02-13 13:28:09 +00:00
Charles de Dreuille 4137a43a1b Rename and remove CSS design tokens
Signed-off-by: Charles de Dreuille <charles.dedreuille@gmail.com>
2026-02-13 13:16:16 +00:00
Antony Bouyon 175176729d fix: hopefully fix everything that was broken/changed
Signed-off-by: Antony Bouyon <antony.bouyon@believe.com>
2026-02-13 10:05:44 +01:00
Antony 0022eb1e0a Update docs-ui/src/app/hooks/use-breakpoint/page.mdx
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Signed-off-by: Antony <antony.bouyon@believe.com>
2026-02-13 10:05:44 +01:00
Antony 15da6ee359 Update docs-ui/src/app/hooks/page.mdx
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Signed-off-by: Antony <antony.bouyon@believe.com>
2026-02-13 10:05:44 +01:00