# Navigation

Source: /tuil/docs/reference/components/navigation
Locale: en

Provide terminal-native local navigation, command menus, hierarchical trails, and workflow progress.





## Overview [#overview]

Provide terminal-native local navigation, command menus, hierarchical trails, and workflow progress.

## Installation [#installation]

<CodeBlockTabs defaultValue="npm">
  <CodeBlockTabsList>
    <CodeBlockTabsTrigger value="npm">
      npm
    </CodeBlockTabsTrigger>

    <CodeBlockTabsTrigger value="pnpm">
      pnpm
    </CodeBlockTabsTrigger>

    <CodeBlockTabsTrigger value="yarn">
      yarn
    </CodeBlockTabsTrigger>

    <CodeBlockTabsTrigger value="bun">
      bun
    </CodeBlockTabsTrigger>
  </CodeBlockTabsList>

  <CodeBlockTab value="npm">
    ```bash
    npx @mwillbanks/tuil add tabs menu menubar breadcrumbs stepper tab-select pagination outline
    ```
  </CodeBlockTab>

  <CodeBlockTab value="pnpm">
    ```bash
    pnpm dlx @mwillbanks/tuil add tabs menu menubar breadcrumbs stepper tab-select pagination outline
    ```
  </CodeBlockTab>

  <CodeBlockTab value="yarn">
    ```bash
    yarn dlx @mwillbanks/tuil add tabs menu menubar breadcrumbs stepper tab-select pagination outline
    ```
  </CodeBlockTab>

  <CodeBlockTab value="bun">
    ```bash
    bun x @mwillbanks/tuil add tabs menu menubar breadcrumbs stepper tab-select pagination outline
    ```
  </CodeBlockTab>
</CodeBlockTabs>

The CLI writes source-owned components beneath the destination configured in
`tuil.config.ts`; the default import below assumes `src/components/tuil`.

<PublishedStory storyId="component-acceptance" variant="Tabs" />

## Components and subcomponents [#components-and-subcomponents]

| API                                                                | Signature              | Description                  |
| ------------------------------------------------------------------ | ---------------------- | ---------------------------- |
| [`Tabs`](/tuil/docs/reference/components/navigation/tabs)               | `function Tabs`        | Public function Tabs.        |
| [`Menu`](/tuil/docs/reference/components/navigation/menu)               | `function Menu`        | Public function Menu.        |
| [`Menubar`](/tuil/docs/reference/components/navigation/menubar)         | `function Menubar`     | Public function Menubar.     |
| [`Breadcrumbs`](/tuil/docs/reference/components/navigation/breadcrumbs) | `function Breadcrumbs` | Public function Breadcrumbs. |
| [`Stepper`](/tuil/docs/reference/components/navigation/stepper)         | `function Stepper`     | Public function Stepper.     |
| [`TabSelect`](/tuil/docs/reference/components/navigation/tab-select)    | `constant TabSelect`   | Public constant TabSelect.   |
| [`Pagination`](/tuil/docs/reference/components/navigation/pagination)   | `function Pagination`  | Public function Pagination.  |
| [`Outline`](/tuil/docs/reference/components/navigation/outline)         | `function Outline`     | Public function Outline.     |

## Interaction [#interaction]

Arrow keys move within the active navigation model; Enter selects or activates.

## API and events [#api-and-events]

Selections and value changes are reported through component callbacks.

Every interactive component publishes semantic roles, labels, state, and focus
identity through the renderer's `SemanticRegistry`. Callback failures flow to
the owning application's error boundary.

<Mermaid
  chart="flowchart LR
  S0[&#x22;props and runtime state&#x22;]
  S1[&#x22;semantic registration&#x22;]
  S2[&#x22;focus and input routing&#x22;]
  S3[&#x22;callback or state update&#x22;]
  S4[&#x22;rerender&#x22;]
  S0 --> S1
  S1 --> S2
  S2 --> S3
  S3 --> S4"
/>

## Example [#example]

```tsx
import type { ComponentProps } from "react";
import { Tabs } from "@/components/tuil/navigation/navigation";

export function Example(props: ComponentProps<typeof Tabs>) {
  return <Tabs {...props} />;
}
```

Registry-installed components are source-owned: customize the generated file in
your application, and use the package reference for the shared runtime contracts.
