From 8659f3331c828aad1d8c143cba651527f0ecc921 Mon Sep 17 00:00:00 2001 From: Johan Persson Date: Fri, 20 Mar 2026 17:31:28 +0100 Subject: [PATCH] feat(ui): replace Header tabs with nav-based grouped navigation Replace the RA Tabs/TabList/Tab rendering in the Header component with a nav-based approach that supports grouped dropdown items via BUI Menu. Active state is consumer-controlled via a new activeTabId prop. The indicator system follows the TabsIndicators CSS custom property pattern for animated active/hover/focus states. Signed-off-by: Johan Persson --- .changeset/chatty-cups-create.md | 24 ++ .../components/header/props-definition.tsx | 30 +-- packages/ui/report.api.md | 76 +++++- .../src/components/Header/Header.stories.tsx | 249 +++++------------- packages/ui/src/components/Header/Header.tsx | 20 +- .../components/Header/HeaderNav.module.css | 115 ++++++++ .../ui/src/components/Header/HeaderNav.tsx | 220 ++++++++++++++++ .../components/Header/HeaderNavDefinition.ts | 70 +++++ .../components/Header/HeaderNavIndicators.tsx | 130 +++++++++ .../ui/src/components/Header/definition.ts | 1 + packages/ui/src/components/Header/index.tsx | 11 +- packages/ui/src/components/Header/types.ts | 32 ++- .../recipes/PluginHeaderAndHeader.stories.tsx | 119 +++++---- 13 files changed, 827 insertions(+), 270 deletions(-) create mode 100644 .changeset/chatty-cups-create.md create mode 100644 packages/ui/src/components/Header/HeaderNav.module.css create mode 100644 packages/ui/src/components/Header/HeaderNav.tsx create mode 100644 packages/ui/src/components/Header/HeaderNavDefinition.ts create mode 100644 packages/ui/src/components/Header/HeaderNavIndicators.tsx diff --git a/.changeset/chatty-cups-create.md b/.changeset/chatty-cups-create.md new file mode 100644 index 0000000000..0fa05b14f3 --- /dev/null +++ b/.changeset/chatty-cups-create.md @@ -0,0 +1,24 @@ +--- +'@backstage/ui': minor +--- + +**BREAKING**: The `Header` component's `tabs` prop now uses `HeaderNavTabItem[]` instead of `HeaderTab[]`. Tabs render as a `