npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2025 – Pkg Stats / Ryan Hefner

@geekyhawks/react-native-ui-components

v0.2.6

Published

Lightweight, reusable React Native UI components with built-in theming — including Text, TextInput, FloatingLabelTextInput, Button, and more. Fully typed with TypeScript and easy to integrate into any project.

Readme

Geeky Hawks React Native UI Components

Build consistent, theme-aware React Native apps faster.

A lightweight and reusable React Native UI components library — providing not just components, but also an optional theming system (colors, spacing, typography) for building consistent designs in your React Native apps.

All components can be used individually without the ThemeProvider — just pass your own colors, styles, or props directly.
The Theme System is entirely optional but helps maintain a unified look and easily supports light/dark modes.

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.

npm version npm License

✨ Features

  • 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.

🚀 Get Started

1. Install

# npm
npm install @geekyhawks/react-native-ui-components

# yarn
yarn add @geekyhawks/react-native-ui-components

2. Wrap your app with ThemeProvider (optional, but recommended)

Using the ThemeProvider is optional — all components can be used directly and styled via props.

However, wrapping your app with the ThemeProvider allows you to:

import 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>
  );
}

If you choose to use the ThemeProvider, make sure it wraps your entire app (usually in App.tsx), so that all components can access the theme consistently.

If you don’t use the ThemeProvider, simply pass custom styles or colors directly to each component.

3. Use a component

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>
    </>
  );
}

🎯 Demo

🎨 Theme & Components

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.

📘 Documentation

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.

📱 Example App

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.

🤝 Contributing

  1. Fork the repository
  2. Create a new branch for your feature or fix
  3. Commit your changes with clear messages
  4. Push to your branch and create a Pull Request

💬 Feedback

We’d love to hear from you!

Whether you’re using our components in production or just trying them out, your feedback helps us improve @geekyhawks/react-native-ui-components.

  • What do you like about the library?
  • What could be improved?
  • Any components or features you’d like to see next?

📩 Send your thoughts and suggestions to [email protected]

We read every message and really appreciate your time in helping us make this library better for the React Native community. ❤️

📄 License

This project is licensed under the MIT License. See the LICENSE file for details.