react-native-24

A clean, modern React Native component library

Usage no npm install needed!

<script type="module">
  import reactNative24 from 'https://cdn.skypack.dev/react-native-24';
</script>

README

react 24 logo

A clean, modern React Native component library. Light and easy to use. Built for 2020 and beyond.
Made with 🔥 in the UK.

💻 Installation

npm install react-native-24

or

yarn add react-native-24

🚀 Usage

Here is a quick example to get you started, it's all you need:

import React from "react";
import { Text, Flex } from "react-native-24";

function App() {
  return (
    <Flex justifyContent="center">
      <Text type="h1" color="blue">
        24
      </Text>
    </Flex>
  );
}

📚 Components

Flex (for flexible, dynamic divs)

<Flex props>
  {...children}
</Flex>

justifyContent?:
| "space-between"
| "space-evenly"
| "flex-start"
| "flex-end"
| "center"
| "space-around";
alignItems?:
| "space-between"
| "center"
| "stretch"
| "flex-start"
| "flex-end"
| "baseline"
| "initial"
| "inherit";
children: any;
style?: ViewStyle;
vertical?: boolean;

Text (for all kinds of text)

<Text props>
  {...children}
</Text>

children: any
size?: oneOf(['p', 'span', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6']); Default is 'p'.
color?: string;
bold?: boolean;
skeletonLoading?: boolean;
camel?: boolean;
underlined?: boolean;
numberOfLines?: number;
style?: TextStyle;

Space (handy replacement for margins)

<Space props>
  {...children}
</Space>

size?: oneOf(['xs', 'sm', 'md', 'lg', 'xl']). Default is 'md';
children?: any;
style?: ViewStyle;

Button (buttons)

<Button props>
  {...children}
</Button>

feedback?: FeedbackType;
theme?: ThemeType;
children: any;
style?: ViewStyle | ViewStyle[];
onPress?: () => void;
onPressIn?: () => void;
onPressOut?: () => void;
disabled?: boolean;

Divider (hr)

<Divider props />

color?: string;
width?: string | number;
style?: ViewStyle;

Spinner (ActivityIndicator)

<Spinner props />

color?: string;
size?: number;
style?: ViewStyle;

SkeletonLoader

<SkeletonLoader>
  <Text>Custom text</Text>
</SkeletonLoader>

children: any;

Input (TextInput)

<Input props />

height?: number;
style?: ViewStyle;
value?: string;
onChange?: Function;
multiline?: boolean;
editable?: boolean;
placeholder?: string;

Avatar (for profile/display pictures)

<Avatar props />

source: any; // uri or require local
style?: ViewStyle;
size?: "xxs" | "xs" | "sm" | "md" | "lg";

Image

<Image source="image URI source" width={100} />

width: number;
style: ImageStyle | ImageStyle[];
source: ImageURISource;
onLoad?: (args: any) => any;

Card

<Card props />

children: any;
style?: ViewStyle;
noPadding?: boolean;

Icon

<Icon name="camera" size={20} color="#fff" />

name: string;
size?: number;
color?: string;

Inherits props from react-native-vector-icons/Icon

Select

<Select
  onValueChange={(value) => console.log(value)}
  items={[
    { label: "Football", value: "football" },
    { label: "Baseball", value: "baseball" },
    { label: "Hockey", value: "hockey" },
  ]}
/>

Inherits props from react-native-picker-select

Notification (for in-app toasts)

import { Notification, Notify } from "react-native-24";
import { Text } from "...";
// Use at the root level of your app. Then you can call Notify.open elsewhere.
<Notification
  ref={(ref) => {
    Notify.setNotification(ref);
  }}
  text={Text} // use whatever text component you want (so you can have custom fonts)
/>;

Notify (to call Notification ☝️)

Notify.open(message, type);

message: string;
success: "success" | "info" | "error";

Roadmap

Currently in active development, and not ready for production projects. Any feedback is welcome.

License

This project is licensed under the terms of the MIT license.