App Switcher
The sidebar-header launcher for the Nexus app family: an animated grid of product tiles with search, the active app marked, coming-soon entries disabled and no-access apps locked.
bunx shadcn@latest add @nx-ui/app-switcherSearch and status
With more than six apps the popover gains a filter (name, description and keywords are matched; ArrowDown moves into the grid). A `statusBadge` marks beta apps.
Driven by the nx-apps directory
In production the data comes from the nx-apps module: the real Nexus directory, one entry per app with its own tone + identity mark. By default the directory is the same everywhere — every app visible and enabled (apps gate their own auth). Pass enforceAccessPolicy once roles/entitlements are reliable: staff apps then hide from known non-staff users and entitlement-gated apps lock ('No access').
Scope carries across
Switching apps is expected to keep the user signed in (shared nx-id session) and in the same organisation. That carry-over is platform infrastructure, deliberately outside this block: AppSwitcher only renders links, and the target app restores scope on arrival. See docs/scoped-shell.md.
<AppSwitcher apps={resolveNxApps({ activeId: "…", user: { role, entitlements } })} />API reference
Exported parts and their props, extracted from the component source.
| Prop | Type | Default | Description |
|---|---|---|---|
apps* | AppSwitcherApp[] | — | — |
title | string | "Nexus apps" | Heading shown at the top of the popover. |
footer | React.ReactNode | — | Optional footer rendered at the bottom of the popover (e.g. an environment hint or a link to a apps directory page). |
onSelect | (app: AppSwitcherApp) => void | — | Called when an enabled, non-active app tile is chosen (the link still navigates). Use for telemetry or SPA-side bookkeeping. |
className | string | — | — |