Animated Number Avatar Badge Button Button Group Toggle Toggle Group Checkbox Chip Countdown Divider Fab Grid Icon Image Input Search Input Textarea Label Loader Marquee Masked Input Message Bubble Notification Banner Offline Banner Progress Progress Ring Radio Group Range Slider Rating Separator Skeleton Slider Stack Stepper Switch Text Theme Toggle Ticker Typing Indicator Accordion Action Sheet Action Swap Alert App Bar Avatar Group Biometric Gate Bloom Menu Bottom Sheet Paywall Sheet Side Sheet Breadcrumb Calendar Card Carousel Charts Coach Marks Collapsible Collapsible Header Combobox Confetti Context Menu Data Table Date Range Picker Dialog Dock Drawer Dropdown Menu Drum Picker Empty State Expandable Control Feature Gate Form Liquid Glass Glass Cluster Glass Dock Morph Glass Fab Morph Glass Lab Glass Orb Glass Search Morph Glass Sheet Edge Gradient Button Image Viewer Keyboard Avoiding Keyboard Toolbar List Reorderable List Swipeable Row Mini Player Morphing Modal Multi Select OTP Input Permission Primer PIN Pad Popover Promo Banner Prompt Input Pull To Refresh Quick Actions Quick Replies Reaction Picker Review Prompt Segmented Control Select Smart Banner Stat Card Stateful Button Steps Stories Viewer Tabs Time Picker Timeline Toast Tooltip Waveform Account Switcher Screen Biometric Setup Screen Delete Account Screen Forgot Password Screen Ugrow Uauth Screen Login Screen Login — Social Screen Nouri Onboarding Onboarding Screen OTP Verification Screen Password Reset Screen Phone Verification Screen Onboarding Quiz Screen Session Devices Screen Signup Screen Social Auth Screen Split Auth Screen Verify Identity Screen Welcome Screen AI Chat Screen AI Assistant Screen Channels List Screen Chat Info Screen Chat List Screen Chat Media Screen Chat Thread Screen Create Group Screen Group Info Screen Message Requests Screen New Message Screen Starred Messages Screen Accessibility Screen Activity log Screen Appearance Screen Blocked accounts Screen Export your data Screen Downloads Screen Edit Profile Screen Edit Profile — Rows Screen Error State Screen Send feedback Screen Help Center Screen Home Feed Screen Invite Friends Screen Language & region Screen Linked accounts Screen Notification settings Screen Notifications Screen Paywall Screen Privacy Screen Profile Screen Report issue Screen Saved items Screen Search Screen Settings Screen Storage & data Screen Terms & privacy Screen Add Payment Screen Address Book Screen Cart Screen Categories Screen Checkout Screen Checkout — Steps Screen Checkout Success Screen Delivery Screen Filters & sort Screen Flash Sale Gift Cards Screen Loyalty Points Screen Order Cancel Screen Order Detail Screen Orders Screen Payment Methods Screen Product Detail Screen Product Detail — Hero Screen Product Grid Screen Product Reviews Screen Promo Codes Screen Recently viewed Screen Return items Screen Search results Screen Ushop Uassistant Screen Store home Screen Order Tracking Screen Wishlist Screen Write a review Screen Add Card Screen Bank Accounts Screen Dashboard — Bento Screen Bill Pay Screen Budgets Screen Card Details Screen Crypto Portfolio Screen Finance Dashboard Screen Dashboard — Dark Screen Exchange Currency Screen Expense List Screen Invoice Detail Screen Manage Cards Screen Savings Goals Screen Send Money Screen Spending Analytics Screen Token Detail Screen Token Swap Screen Transactions Screen Wallet Home Screen Uwallet Umovers Screen Courier Tracking Screen Food Cart Screen Food Home Screen Food Orders Screen Grocery List Screen Recipe Detail Screen Restaurant — Dark Screen Restaurant Detail Screen Activity Rings Screen Fitness Home Screen Habit Quest Screen Habit Tracker Screen Meal Planner Screen Med Store Meditation Player Screen Mood Checkin Nutrition Home Prior Auth Screen Prior Auth Cases Screen Quest Complete Screen Run Tracking Screen Rx Scan Sleep Tracker Screen Uwalk Umap Screen Water Tracker Screen Uworkout Ucomplete Screen Workout Detail Screen Audiobook Player Screen Camera Screen Gallery Albums Screen Ugame Ustore Screen Mini Player Screen Music Player Screen Photo Editor Screen Photo Gallery Screen Playlist Detail Screen Podcast Player Screen Reels Feed Screen Serene Home Stories Screen Video Player Screen Article Reader Screen Course Detail Screen Event Detail Screen Halo Memory Screen Leaderboard Screen Lesson Player Screen Match Detail Screen News — Editorial Screen News Home Screen Prediction Live Screen Prediction Welcome Screen Standings Screen Ticket Wallet Screen Topics Follow Screen Add Task Sheet Screen Alarm Clock Screen Calendar Day Screen Calendar Month Screen File Manager Screen Kanban Board Screen Note Editor Screen Notes List Screen Reminders Screen Task List Screen Time Blocks Arc Create Screen Arc Detail Screen Arc Onboarding Screen Create Post Screen Explore Grid Screen Followers List Screen Hashtag Feed Screen Mentions Screen Post Detail Screen Post Hero Social Profile Screen Boarding Pass Screen Booking Confirm Screen Discover Screen Flight Live Screen Flight Preferences Screen Flight Results Screen Flight Search Screen Hotel Detail Screen Trip — Map Day Screen Seat Select Screen Travel Home Screen Trip Itinerary Screen Trip Onboarding Screen Floating bottom tab bar with a gliding accent disc, labels on the active tab, badge dots, and an optional action button
$ npx lumioui add dock npx pnpm bun
copy import { Dock } from "@/components/ui/dock/dock";
CLI Manual
Files installed into your repo
components/ui/dock/dock.tsx
Registry dependencies (installed automatically)
Native packages required
@lumioui/core@latestreact-native-reanimated@*react-native-svg@*react-native-safe-area-context@*
Props 9
items DockItem[] value string Currently selected item value. onValueChange (value: string) => void variant? "floating" | "attached" | "fused" "floating" renders the detached pill (default); "attached" renders a classic full-width bar; "fused" welds the tabs into one bar — the active tab peels away with a gooey neck. labels? "active" | "always" | "never" Which items show their label. Default "active". action? DockAction Prominent action disc appended at the end of the bar. haptic? "selection" | "light" | false Haptic on selection. Default "selection". safeArea? boolean Lift above / pad past the home indicator. Default true. className? string
Dock — Attached barattached.tsx
Live preview offline the relay is unreachable — check back shortly
Description Usage Code ◐ dock/variants/attached.tsx open $ npx lumioui add dock-attached Floating bottom tab bar with a gliding accent disc, labels on the active tab, badge dots, and an optional action button
copy import { DockAttached } from "@/components/ui/dock/variants/attached";
export function Example() {
return (
<DockAttached />
);
} copy import * as React from "react";
import { View } from "react-native";
import { Dock } from "../dock";
/** DockAttached — classic full-width tab bar, labels always on. */
export function DockAttached() {
const [tab, setTab] = React.useState("home");
return (
<View className="w-full">
<Dock
variant="attached"
labels="always"
value={tab}
onValueChange={setTab}
items={[
{ value: "home", icon: "home", label: "Home" },
{ value: "orders", icon: "package", label: "Orders" },
{ value: "wishlist", icon: "heart", label: "Saved" },
{ value: "profile", icon: "user", label: "Account" },
]}
/>
</View>
);
}
Dock — Icon-onlycompact.tsx
Live preview offline the relay is unreachable — check back shortly
Description Usage Code ◐ dock/variants/compact.tsx open $ npx lumioui add dock-compact Floating bottom tab bar with a gliding accent disc, labels on the active tab, badge dots, and an optional action button
copy import { DockCompact } from "@/components/ui/dock/variants/compact";
export function Example() {
return (
<DockCompact />
);
} copy import * as React from "react";
import { View } from "react-native";
import { Dock } from "../dock";
/** DockCompact — icon-only floating pill; the gliding disc carries the state. */
export function DockCompact() {
const [tab, setTab] = React.useState("feed");
return (
<View className="w-full items-center py-4">
<Dock
variant="floating"
labels="never"
value={tab}
onValueChange={setTab}
items={[
{ value: "feed", icon: "home", label: "Feed" },
{ value: "explore", icon: "grid", label: "Explore" },
{ value: "activity", icon: "bell", label: "Activity", badge: true },
{ value: "profile", icon: "user", label: "Profile" },
]}
/>
</View>
);
}
Dock — Floatingfloating.tsx
Live preview offline the relay is unreachable — check back shortly
Description Usage Code ◐ dock/variants/floating.tsx open $ npx lumioui add dock-floating Floating bottom tab bar with a gliding accent disc, labels on the active tab, badge dots, and an optional action button
copy import { DockFloating } from "@/components/ui/dock/variants/floating";
export function Example() {
return (
<DockFloating />
);
} copy import * as React from "react";
import { View } from "react-native";
import { Dock } from "../dock";
/** DockFloating — detached pill with gliding accent disc, badges, action disc. */
export function DockFloating() {
const [tab, setTab] = React.useState("home");
return (
<View className="w-full items-center py-4">
<Dock
value={tab}
onValueChange={setTab}
items={[
{ value: "home", icon: "home", label: "Home" },
{ value: "search", icon: "search", label: "Search" },
{ value: "messages", icon: "message-circle", label: "Messages", badge: 3 },
{ value: "profile", icon: "user", label: "Profile" },
]}
action={{ icon: "plus", accessibilityLabel: "Create", onPress: () => setTab("search") }}
/>
</View>
);
}
Dock — Fusedfused.tsx
Live preview offline the relay is unreachable — check back shortly
Description Usage Code ◐ dock/variants/fused.tsx open $ npx lumioui add dock-fused Floating bottom tab bar with a gliding accent disc, labels on the active tab, badge dots, and an optional action button
copy import { DockFused } from "@/components/ui/dock/variants/fused";
export function Example() {
return (
<DockFused />
);
} copy import * as React from "react";
import { View } from "react-native";
import { Dock } from "../dock";
/** DockFused — tabs welded into one bar; the active tab peels away with a
* gooey neck. */
export function DockFused() {
const [tab, setTab] = React.useState("home");
return (
<View className="w-full items-center py-4">
<Dock
variant="fused"
labels="always"
value={tab}
onValueChange={setTab}
items={[
{ value: "home", icon: "home", label: "Home" },
{ value: "search", icon: "search", label: "Search" },
{ value: "messages", icon: "message-circle", label: "Messages", badge: 3 },
{ value: "profile", icon: "user", label: "Profile" },
]}
/>
</View>
);
}
← Previous Dialog Next → Drawer