Navigation
Your notes, in one place.
Compact or large-title navigation with circular actions and an optional vertical rail.
Your notes, in one place.
Three ways in. They share one source, so the pixels match whichever you pick.
npm install @noorddev/vlak-react
// once, next to your app's root
import "@noorddev/vlak-react/css";
import { IOSNavigationBar } from "@noorddev/vlak-react";Precompiled React and one stylesheet. No compiler to configure. Per-component imports work too: @noorddev/vlak-react/components/ios-navigation-bar.
npx @noorddev/vlak-cli add ios-navigation-bar
The StyleX leaf lands in components/vlak/ with its dependencies, for your own compiler to own. See StyleX.
npx shadcn add https://vlak.dev/r/ios-navigation-bar.json
The same registry item, installed by shadcn's CLI.
<link rel="stylesheet" href="node_modules/@noorddev/vlak/css/vlak.css" />
No React. Link vlak.css and use the markup and classes below.
import { IOSNavigationBar } from "@noorddev/vlak-react";
<IOSNavigationBar title="Notes" onBack={() => history.back()} actions={[{ id: "done", label: "Done", type: "submit", form: "note-editor" }]} />Compact and large-title navigation, with an optional trailing Duo action rail.
| Prop | Type | Default | Description |
|---|---|---|---|
titlerequired | ReactNode | ||
onBack | () => void | ||
backLabel | string | "Back" | |
actions | IOSNavigationBarAction[] | [] | |
orientation | "horizontal" | "vertical" | "horizontal" | |
largeTitle | boolean | false |
Also accepts Omit<HTMLAttributes<HTMLElement>, "title" | "children">.
| Keys | Does |
|---|---|
| Tab, Shift+Tab | Moves through enabled Back and action buttons. |
| Enter, Space | Activates a focused action with native button behavior. |
<header class="rs-ios-navigation-bar"><div class="rs-ios-navigation-bar-row"><button class="rs-ios-navigation-bar-button rs-ios-navigation-bar-back" type="button" aria-label="Back">←</button><h2 class="rs-ios-navigation-bar-title">Notes</h2><div class="rs-ios-navigation-bar-actions"><button class="rs-ios-navigation-bar-button" type="button">Done</button></div></div></header>