DsNavbar component to display a Vercel-style top navigation bar with two rows: a brand row and a navigation row. This component is designed to be used inside NavbarLayout.vue.
Component Location
Layout Structure
The navbar has two rows:- Row 1 (h-14): Brand with team selector on the left, user menu on the right
- Row 2 (h-12): Navigation links and dropdown menus (desktop only)
- Mobile: Row 2 is hidden, hamburger menu opens a Sheet drawer
Usage
The navbar is typically used viaNavbarLayout:
Sub-Components
DsNavbarBrand
Displays the logo and team selector dropdown.DsNavbarLinks
Renders the main navigation links (desktop only).DsNavbarTeamsMenu
Dropdown menu with team-related navigation items: My Teams, Manage Team.DsNavbarAdminMenu
Dropdown menu for admin navigation. Only visible to global admins.
Admin menu items:
- Global Settings
- Users
- Teams
- MCP Catalog
- MCP Categories
- Satellites
- Background Jobs
DsNavbarUserMenu
User avatar with dropdown menu for account and logout.DsNavbarMobileMenu
Hamburger button that opens a Sheet drawer with all navigation on mobile.Variants
The navbar supports style variants via CVA:Active State Detection
Navigation links show an active state when the current route matches:bg-accent text-accent-foreground styling.
Team Selection
The navbar manages team selection state and persists it via EventBus:Responsive Behavior
Styling
Default navbar classes:Architecture Notes
- DsNavbar.vue fetches user and team data on mount
- Sub-components are presentational and receive data via props
- Events bubble up from sub-components to DsNavbar for handling
- EventBus syncs team selection across the application
- i18n keys follow the existing
sidebar.*namespace for compatibility
Related Documentation
- UI Design System - Overall design patterns
- Page Heading with Breadcrumbs - Breadcrumbs component for pages
- Custom UI Components - Component development guide

