Build consistent, theme-aware React Native apps faster.
A lightweight and reusable React Native UI components library — providing not just components, but also a full theming system (colors, spacing, typography) for building consistent designs in your React Native apps.
Includes StatusBar, AppBar, Text, TextInput, FloatingLabelTextInput, Button, Radio, CheckBox, Switch, ActivityIndicator, LoaderModal, and more — fully typed with TypeScript, theme-ready, and easy to integrate into any React Native project.
✨ Developed & Maintained by Geeky Hawks.
-
🎨 Theming system out of the box
Define global colors, spacing, and typography to ensure consistent design across your app.- Full light/dark mode support.
- Customize and extend themes for your brand.
-
🧩 Pre-styled, customizable components
Includes:- StatusBar, AppBar
- Text, TextInput, FloatingLabelTextInput, Button
- Radio, CheckBox, Switch
- ActivityIndicator, LoaderModal
(with more components coming soon).
-
📱 Consistent cross-platform UI
Components work seamlessly on both iOS and Android with a unified design language. -
🔒 TypeScript-first
Strongly typed for safer and faster development. -
⚡ Lightweight & easy to integrate
Add to new or existing React Native projects with minimal setup.
# npm
npm install @geekyhawks/react-native-ui-components
# yarn
yarn add @geekyhawks/react-native-ui-componentsimport React from "react";
import { ThemeProvider } from "@geekyhawks/react-native-ui-components";
export default function App() {
return (
<ThemeProvider>
{/* Your App Components (HomeScreen, AppNavigator, NavigationContainer, etc.) */}
<HomeScreen />
</ThemeProvider>
);
}ThemeProvider should wrap your entire app (usually in App.tsx), so that all components can access the theme consistently.
import { useState } from "react";
import { ActivityIndicator, AppBar, Button, CheckBox, FloatingLabelTextInput, Radio, RadioGroup, StatusBar, Switch, Text, TextInput } from "@geekyhawks/react-native-ui-components";
export default function HomeScreen() {
const [selectedValue, setSelectedValue] = useState<string | number>("apple");
const [checked, setChecked] = useState(false);
const [allowed, setAllowed] = useState(false);
return (
<>
<StatusBar />
<AppBar title="Home" />
<Text>Hello, World! 👋</Text>
<Text variant="h1">Heading Text</Text>
<TextInput
label="Name"
placeholder="John Doe"
onChangeText={(text) => {
// Do something with text
}}
/>
<FloatingLabelTextInput
label="Email Address"
keyboardType="email-address"
autoCapitalize="none"
onChangeText={(text) => {
// Do something with text
}}
/>
<RadioGroup selectedValue={selectedValue} onValueChange={setSelectedValue}>
<Radio value="apple" label="Apple" />
<Radio value="banana" label="Banana" />
<Radio value="orange" label="Orange" />
</RadioGroup>
<CheckBox
value="terms"
label="I agree to the Terms & Conditions"
selectedValues={checked ? ["terms"] : []}
onChange={(_, isChecked) => setChecked(isChecked)}
/>
<Switch
value={allowed}
onValueChange={setAllowed}
label="Enable notifications"
/>
<ActivityIndicator
text="Please wait..."
textPosition="right"
textColor={"primary"}
variant="large" />
<Button onPress={() => console.log("Pressed!")}>
Default Button
</Button>
</>
);
}This library provides a growing set of theme-ready UI components:
- Theme – Global theming system (colors, typography, spacing, light/dark).
- StatusBar – Theme-aware wrapper for the native status bar with predefined variants.
- AppBar – Customizable, theme-ready top app bar with left, and right icons.
- Text – Customizable wrapper around React Native's
Text. - TextInput – Styled input field with theme integration.
- FloatingLabelTextInput – TextInput with floating label.
- Button – Enhanced button with default styles, theme support and much more.
- Radio – Themed radio button for single-choice selection, with group support and variant styling.
- CheckBox – Themed checkbox for multi-choice selection, supporting groups and custom variants.
- Switch – Themed toggle control with color variants and optional labeling.
- ActivityIndicator – Flexible loading spinner with text, size, and position options.
- LoaderModal – Full-screen modal loader with spinner, text, and theme variants.
(more coming soon)
🖌️ All components support style overrides, theming, and common React Native props. Customize fonts, colors, and variants globally using the ThemeProvider.
Comprehensive documentation for each component lives in the docs folder.
Each doc file includes:
- 📖 Prop reference – all available props with types.
- ⚡ Usage examples – from basic to advanced.
- 🎨 Customization guides – how to style with themes, spacing, and typography.
- 🌗 Theming examples – light/dark mode and custom themes in action.
👉 Dive into the docs to learn each component’s features and how to adapt them to your app with ease.
A fully working example app is included in the repo to help you explore the components in action.
- Browse and test components with real usage
- See theming and customization applied live
- Use it as a reference for integrating into your project
👉 Try the example app to see components in action and quickly understand how they fit into a real-world React Native setup.
- Fork the repository
- Create a new branch for your feature or fix
- Commit your changes with clear messages
- Push to your branch and create a Pull Request
This project is licensed under the MIT License. See the LICENSE file for details.
