--- system: carbon category: guidance topic: components/ui-shell content_type: guidance status: latest version_label: "Carbon v11" retrieved: 2026-05-12 source_url: https://carbondesignsystem.com/components/UI-shell-header/usage/ derived_from: - kb/design-systems/carbon/guidance/foundations/color-system - kb/design-systems/carbon/guidance/foundations/themes tags: [component, navigation, ui-shell, header, side-nav, carbon, ibm] --- # Carbon Design System — UI Shell ## Overview The UI Shell is Carbon's application-level navigation framework. It provides the structural chrome for IBM Cloud and enterprise products: a persistent header, an optional side panel (left nav), and an optional right panel (switcher/notifications). These elements combine to form the outer shell of any Carbon-based app. Shell components are styled with the `g100` (dark) or `g10` (light) theme regardless of the page theme — the shell is always themed independently. --- ## Components ### Header (`Header`, `HeaderName`, `HeaderNavigation`) The full-width top bar. Contains: - **Product name** — `HeaderName` with optional prefix: `[IBM] Product name` - **Global nav** (optional) — `HeaderNavigation` with `HeaderMenuItem` links - **Action bar** (optional) — icon buttons for search, notifications, app switcher - **Menu button** — hamburger icon; visible on mobile and when side nav is present ```jsx
Platform Dashboard Reports Profile Preferences
``` ### SideNav Left panel for hierarchical navigation. Two modes: **Rail** (icon-only, collapsed, 48px wide) — shows icons with tooltips; used on wider viewports when space is at a premium. **Full** (expanded, 256px wide) — shows icons + labels; can be fixed or expandable. ```jsx Dashboard Monthly Annual Settings ``` - `SideNavLink` — top-level flat destination - `SideNavMenu` — expandable group; contains `SideNavMenuItem` children - `SideNavMenuItem` — nested item, no icon (text only) - Maximum nesting: 2 levels (menu → menu item) ### SideNavDivider Visual separator between logical groups within the side nav. ### Panel (right panel) Optional slide-in panel from the right. Used for notifications, help, or the app switcher. Not part of the core shell by default; composed with `HeaderPanel` + `Switcher`. --- ## Responsive behavior | Viewport | Header | SideNav | |---|---|---| | ≥ 1056px (lg) | Full, all items visible | Fixed expanded or rail | | 672–1055px (md) | Truncated nav, hamburger visible | Overlay on hamburger press | | < 672px (sm) | Hamburger only | Overlay on hamburger press | On smaller viewports, `SideNav` becomes an overlay that opens on top of content. --- ## Theming The shell's background is always themed separately from page content: ```jsx // g100 (dark) shell is default for IBM products
``` `$shell-header-bg-01` and `$shell-side-nav-bg-01` are the relevant tokens (mapped from the shell theme). --- ## SkipToContent Always include `SkipToContent` as the first child of `Header`. It renders a hidden link that appears on keyboard focus and skips to the main content region, satisfying WCAG 2.4.1. ```jsx
``` --- ## Accessibility - `Header`: `role="banner"`, `aria-label` required - `SideNav`: `role="navigation"`, `aria-label` required - Active link: `aria-current="page"` on the current `SideNavLink` or `HeaderMenuItem` - `HeaderMenuButton`: `aria-expanded` reflects open/closed state of side nav - `SideNavMenu` (expandable): `aria-expanded` on the trigger button - Focus order: SkipToContent → Header actions → SideNav → main content