Music
Library
Three records for the afternoon.
Floating peer tabs with icon labels, roving focus and horizontal or vertical placement.
Library
Three records for the afternoon.
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 { IOSTabBar } from "@noorddev/vlak-react";Precompiled React and one stylesheet. No compiler to configure. Per-component imports work too: @noorddev/vlak-react/components/ios-tab-bar.
npx @noorddev/vlak-cli add ios-tab-bar
The StyleX leaf lands in components/vlak/, for your own compiler to own. See StyleX.
npx shadcn add https://vlak.dev/r/ios-tab-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 { IOSTabBar } from "@noorddev/vlak-react";
<IOSTabBar defaultValue="library" label="Music" items={[{ id: "library", label: "Library", panelId: "library-panel" }, { id: "search", label: "Search", panelId: "search-panel" }]} />Automatically activated peer tabs. Supply panelId for the associated content.
| Prop | Type | Default | Description |
|---|---|---|---|
itemsrequired | IOSTabBarItem[] | ||
value | string | ||
defaultValue | string | ||
onValueChange | (value: string) => void | ||
orientation | "horizontal" | "vertical" | "horizontal" | |
label | string | "App navigation" |
Also accepts Omit<HTMLAttributes<HTMLDivElement>, "defaultValue" | "onChange" | "children">.
| Keys | Does |
|---|---|
| Tab, Shift+Tab | Enters or leaves the tab bar through its selected tab. |
| Arrows, Home, End | Moves and selects enabled tabs, wrapping at the ends; horizontal arrows respect text direction. |
| Enter, Space | Selects the focused tab. |
<div class="rs-ios-tab-bar" role="tablist" aria-label="Music"><button class="rs-ios-tab-bar-tab rs-ios-tab-bar-active" role="tab" aria-selected="true" tabindex="0">Library</button><button class="rs-ios-tab-bar-tab" role="tab" aria-selected="false" tabindex="-1">Search</button></div>