BottomTabBar
An app's root navigation (the promotion ladder): up to four primary tabs, the rest in a More sheet, with a 2px accent stripe over the active tab.
Examples
Loading examples…
API
From COMPONENTS.md; setup for every native component is on React Native.
| Component | Notes |
|---|---|
BottomTabBar |
Root navigation bar (promotion ladder). ≤4 primary tabs; overflow into a "More" BottomSheet. 2px accent top stripe on active tab. |
Promotion-ladder replacement for the desk sidebar. ≤4 primary tabs visible; extras go into a "More" sheet.
import { BottomTabBar } from 'achery-ui/native'
import type { BottomTabItem } from 'achery-ui/native'
const tabs: BottomTabItem[] = [
{ value: 'today', label: 'Today', glyph: 'calendar' },
{ value: 'projects', label: 'Projects', glyph: 'folder' },
{ value: 'metrics', label: 'Metrics', glyph: 'chart-bar' },
{ value: 'inbox', label: 'Inbox', glyph: 'inbox' },
{ value: 'settings', label: 'Settings', glyph: 'settings' }, // overflows to More
]
<BottomTabBar
items={tabs}
value={activeTab}
onValueChange={setActiveTab}
safeAreaBottom={34} // useSafeAreaInsets().bottom
/>
| Prop | Type | Default |
|---|---|---|
items |
BottomTabItem[] |
required |
value |
string |
required |
onValueChange |
(value: string) => void |
required |
safeAreaBottom |
number |
0 |
style |
ViewStyle |
— |
BottomTabItem:
| Field | Type | Notes |
|---|---|---|
value |
string |
Unique key |
label |
string |
Shown beneath icon |
glyph |
GlyphName |
From the Achery icon set |
hidden |
boolean |
Exclude from bar entirely |