<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/styles/monokai-sublime.min.css" integrity="sha512-ade8vHOXH67Cm9z/U2vBpckPD1Enhdxl3N05ChXyFx5xikfqggrK4RrEele+VWY/iaZyfk7Bhk6CyZvlh7+5JQ==" crossorigin="anonymous" referrerpolicy="no-referrer" />
🌾 ng-oatv0.6.0Angular UI library

Toolbar

Application toolbar for top-level navigation. Like Angular Material's mat-toolbar, it uses content projection with named slots for brand, navigation links, and actions.

InputTypeDefaultDescription
color'default' | 'primary' | 'accent''default'Bar color variant
densebooleanfalseCompact height
fixedbooleantrueFix to viewport top
navClassstring''Extra CSS classes applied to the inner <nav> element
SlotDescription
[toolbarStart]Left-aligned content (logo, brand, hamburger)
[toolbarCenter]Truly centered content (nav links, search, title)
defaultFree-form content rendered inside the start region
[toolbarEnd]Right-aligned content (user menu, theme toggle, actions)

Import

typescript
import { NgOatToolbar, NgOatToolbarRow } from '@letsprogram/ng-oat/toolbar';

@Component({
  imports: [NgOatToolbar, NgOatToolbarRow],
  template: `
    <ng-oat-toolbar>
      <strong toolbarStart>🌾 Brand</strong>
      <nav toolbarCenter class="flex flex-wrap items-center gap-3">Links</nav>
      <button toolbarEnd>Actions</button>
    </ng-oat-toolbar>
  `,
})
export class MyComponent {}

App Toolbar

A production application header with responsive start, brand, title, and action slots. Its dimensions and colors are controlled by --ng-oat-app-toolbar-* tokens.

AcmeWorkspace
html
import { NgOatAppToolbar } from '@letsprogram/ng-oat/app-toolbar';

<ng-oat-app-toolbar title="Workspace">
  <button appToolbarStart type="button" aria-label="Open navigation">Menu</button>
  <strong appToolbarBrand>Acme</strong>
  <div appToolbarEnd>Actions</div>
</ng-oat-app-toolbar>

Basic Toolbar

html
<ng-oat-toolbar>
  <strong toolbarStart>🌾 MyApp</strong>
  <nav toolbarCenter class="flex flex-wrap items-center gap-3">
    <a routerLink="/home">Home</a>
    <a routerLink="/about">About</a>
    <a routerLink="/contact">Contact</a>
  </nav>
  <span toolbarEnd class="flex flex-wrap items-center gap-2">
    <ng-oat-theme-selector />
    <button class="ghost"><ng-oat-icon [icon]="iconUser" size="18" /></button>
  </span>
</ng-oat-toolbar>

With Center Slot & User Menu

html
<ng-oat-toolbar>
  <strong toolbarStart><ng-oat-icon [icon]="iconRocket" size="18" /> Dashboard</strong>
  <nav toolbarCenter class="flex flex-wrap items-center gap-3">
    <a routerLink="/projects">Projects</a>
    <a routerLink="/analytics">Analytics</a>
    <a routerLink="/settings">Settings</a>
  </nav>
  <ng-oat-dropdown toolbarEnd>
    <button trigger class="ghost"><ng-oat-icon [icon]="iconUser" size="16" /> Jane <ng-oat-icon [icon]="iconChevronDown" size="14" /></button>
    <a role="menuitem">Profile</a>
    <a role="menuitem">Settings</a>
    <hr />
    <a role="menuitem">Log out</a>
  </ng-oat-dropdown>
</ng-oat-toolbar>

Custom Nav Styling (navClass)

html
<!-- navClass forwards CSS classes to the inner <nav data-topnav> element -->
<ng-oat-toolbar navClass="px-8">
  <strong toolbarStart>🌾 MyApp</strong>
  <span toolbarCenter>Centered title</span>
  <button toolbarEnd class="ghost">Actions</button>
</ng-oat-toolbar>

Primary Color

html
<ng-oat-toolbar color="primary">
  <strong toolbarStart><ng-oat-icon [icon]="iconPalette" size="18" /> Themed</strong>
  <span toolbarCenter>Primary toolbar with accent background</span>
  <button toolbarEnd class="ghost">Actions</button>
</ng-oat-toolbar>

Dense

html
<ng-oat-toolbar [dense]="true">
  <strong toolbarStart><ng-oat-icon [icon]="iconRuler2" size="18" /> Compact</strong>
  <span toolbarCenter>A shorter, denser toolbar</span>
</ng-oat-toolbar>