tuil
ReferenceComponentsNavigation

Navigation

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

View rawEdit

Overview

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

Installation

npx @mwillbanks/tuil add tabs menu menubar breadcrumbs stepper tab-select pagination outline

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

Loading executable example…

Components and subcomponents

APISignatureDescription
Tabsfunction TabsPublic function Tabs.
Menufunction MenuPublic function Menu.
Menubarfunction MenubarPublic function Menubar.
Breadcrumbsfunction BreadcrumbsPublic function Breadcrumbs.
Stepperfunction StepperPublic function Stepper.
TabSelectconstant TabSelectPublic constant TabSelect.
Paginationfunction PaginationPublic function Pagination.
Outlinefunction OutlinePublic function Outline.

Interaction

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

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.

Documentation flow diagram. props and runtime state; semantic registration; focus and input routing; callback or state update; rerender; S0 leads to S1; S1 leads to S2; S2 leads to S3
Documentation flow diagram. props and runtime state; semantic registration; focus and input routing; callback or state update; rerender; S0 leads to S1; S1 leads to S2; S2 leads to S3

Example

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.

On this page