Components
NativeLaunch includes a structured set of UI components grouped into three main categories:
- Reusables — components from HeroUI Native, organized in the
shared/uifolder - UI primitives — reusable low-level components
- Widgets — high-level, logic-rich UI blocks
The component architecture is styled using a utility-first approach powered by UniWind (Tailwind CSS v4).
Folders overview
widgets/ ← Custom animated and logic-based components
shared/
├── ui/ ← Components from HeroUI Native
├── ui-primitives/ ← Custom layout and interaction components1. Reusable UI components
The shared/ui folder contains prebuilt components from HeroUI Native. These include
common UI elements like Button, Card, Switch, Input, Checkbox, Tabs, and more.
All components support className and work seamlessly with UniWind utility classes.
import {Button} from '@/shared/ui'
<Button className="bg-primary text-white">
Continue
</Button>2. UI Primitives
Located in shared/ui-primitives, these are small building blocks used throughout the app:
Sheet— modal bottom sheet (@gorhom/bottom-sheet)Skeleton— loading placeholderConfirmationDialog— modal with confirm/cancelExternalLink— consistent styled external anchorColorPicker,DatePicker,MonthYearPickerTextTicker,GenericIcon,MenuItem, etc.
import {ConfirmationDialog} from '@/shared/ui-primitives'
<ConfirmationDialog
title="Are you sure?"
description="This action cannot be undone."
onConfirm={() => doSomething()}
/>3. Widgets
In shared/widgets, you'll find more advanced, logic-based components:
AnimatedNumber— number counting animation using ReanimatedLoadingModal— full-screen modal with spinner and statusDonutChart,CircularProgressBar— data visualizationsScreenContent— page layout wrapperNumericPad— custom number input for money, PINs, etc.
import {AnimatedNumber} from '@/shared/widgets'
<AnimatedNumber value={4523} />Best practices
- Use
shared/uifor standard elements like buttons and inputs - Use
ui-primitivesfor layout, control, and display logic - Use
widgetsfor animated or high-level interactive components - All components support
classNamevia UniWind - Themes are powered by shared design tokens
This component structure is designed to be clean, scalable, and easy to extend. You can add your
own folders inside shared/ while keeping compatibility with UniWind.