react-native-unicorn v1.2.2
react-native-unicorn
A customizable UI component library for react-native and expo
Installation
npm i react-native-unicornUsage
Components available in this library are as follows:
| Component | Description |
|---|---|
| Accordion | A customizable accordion-style list component for React Native applications. It allows you to display a list of items with expandable content sections. |
| Avatar | A customizable image component for displaying user avatars or other images in different shapes and sizes. |
| Bar Graph | A customizable bar graph component that allows you to display a bar graph. |
| Bouncing Dots | A customizable loading animation component for that displays a series of dots bounce in a sequence |
| Card | A customizable card component that allows you to display content within a styled card layout. |
| Carousel | A customizable carousel component that allows you to display a list of items in a horizontally scrollable carousel layout. |
| Checkbox | A customizable checkbox component allows you to display a checkbox with a label. |
| Circular Graph | A a customizable circular graph component that allows you to display a circular progress graph with an optional percentage label in the center. |
| Countdown Timer | A is a customizable countdown component that allows you to display a countdown timer that triggers a callback function when the time is up. |
| Counter Box | A customizable counter component that allows you to display a counter with increment and decrement buttons. |
| Input | A customizable Text Input component that allows you to display a text input field with optional icon, placeholder, and custom styles. |
| DropDown | A customizable dropdown component that displays a dropdown list with selectable options, each of which can have an optional icon. |
| Grid | A customizable grid component that displays a table-like structure with rows and columns. |
| OTP Input | A customizable One-Time Password (OTP) input component that displays a series of input fields for OTP entry. |
| Password Input | A customizable password input component. |
| Phone Input | A customizable phone number component that allows you to display a phone number input field with an integrated country code picker |
| Radio Button | A customizable radio button that allows you to display a group of radio buttons with selectable options. |
| Vertical Stepper | A customizable vertical stepper component. |
Components
The Accordion component is a versatile, customizable accordion-style list component for React Native applications. It allows you to display a list of items with expandable content sections.
The component accepts the following props:
| Props | Description |
|---|---|
| data | An array of objects, where each object represents an accordion item. Each object should have the following properties:title: The title of the accordion item. component: The content to be displayed when the accordion item is expanded. expanded: A boolean indicating whether the accordion item is initially expanded or not. |
| viewStyle | A string representing additional Tailwind CSS classes to be applied to the accordion item container. |
| textStyle | A TextStyle object for customizing the style of the accordion item title. It uses default css |
| dividerColor | A string representing the color of the divider line that appears when an accordion item is expanded. |
| pageSize | A number representing the number of accordion items to be displayed per page. If this prop is provided, pagination buttons will be displayed. |
Example
import Accordion from 'react-native-unicorn/accordion'
<Accordion
data={[
{
title: 'First Item',
component: <Text>First Item Content</Text>,
expanded: false,
},
{
title: 'Second Item',
component: <Text>Second Item Content</Text>,
expanded: false,
},
]}
viewStyle="bg-white"
textStyle={{ color: 'blue' }}
dividerColor="red"
pageSize={5}
pageButtonStyle="bg-blue-500"
/>The Avatar component is a customizable image component for React Native applications. It allows you to display user avatars or other images in different shapes and sizes.
The component accepts the following props:
| Props | Description |
|---|---|
| source | The image source for the avatar. This can be a local asset or a URL to a remote image. |
| variant | The shape of the avatar. This can be one of the following::'circle': The avatar will be displayed as a circle.'square': The avatar will be displayed as a square.'drop': The avatar will be displayed as a droplet shape, with a rounded top and a flat bottom. |
| size | The size of the avatar in pixels. This will determine both the width and the height of the avatar. |
| style | Additional Tailwind CSS classes to be applied to the avatar. |
Example
import Avatar from 'react-native-unicorn/avatar'
<Avatar
source={{ uri: 'https://example.com/avatar.jpg' }}
variant="circle"
size={100}
style="bg-blue-500"
/>The BarGraph component is a customizable bar graph component for React Native applications. It allows you to display a bar graph with different statuses based on the percentage provided.
The component accepts the following props:
| Props | Description |
|---|---|
| percentage | A number representing the percentage to be displayed by the bar graph. This value should be between 0 and 100. |
| barColor | An optional string representing the color of the active bars in the graph. If not provided, the default color will be used. |
| inactiveColor | An optional string representing the color of the inactive bars in the graph. If not provided, the default color will be used. |
Example
import BarGraph from 'react-native-unicorn/bar-graph'
<BarGraph
percentage={75}
barColor="[#E4959E]"
inactiveColor="neutral-100"
/>The BouncingDots component is a customizable loading animation component that displays a series of dots that bounce in a sequence, creating a smooth loading animation.
The component accepts the following props:
| Props | Description |
|---|---|
| dots | The number of dots to display. Default is 3. |
| colors | An array of colors for the dots. |
| size | The size of the dots in pixels. Default is 10. |
| bounceHeight | The height of the bounce in pixels. Default is 10. |
| borderRadius | The border radius of the dots. If not provided, the dots will be circular. |
| components | An array of custom components to use instead of dots. |
Example
import BouncingDots from 'react-native-unicorn/dots'
<BouncingDots
dots={5}
colors={['red', 'green', 'blue', 'yellow', 'purple']}
size={15}
bounceHeight={15}
/>The Card component is a customizable card component that allows you to display content within a styled card layout.
The component accepts the following props:
| Props | Description |
|---|---|
| children | The content to be displayed within the card. |
| viewStyle | An optional string representing additional Tailwind CSS classes to be applied to the card. |
| props | Any additional props to be passed to the underlying TouchableOpacity component. |
Example
import Card from 'react-native-unicorn/card'
<Card viewStyle={'p-2 m-4 justify-center flex-1'}>
<View style={{ height: 50, justifyContent: 'center' }}>
<Text>This is a card.</Text>
</View>
</Card> The Carousel component is a customizable carousel component that allows you to display a list of items in a horizontally scrollable carousel layout.
The component accepts the following props:
| Props | Description |
|---|---|
| data | An array of items to be displayed in the carousel. |
| renderComponent | The component to be rendered in ths carousel |
| autoplayInterval | An optional number representing the interval (in milliseconds) at which the carousel should automatically scroll to the next item. Default is 3000 (3 seconds). |
Example
import Carousel from 'react-native-unicorn/dots'
<Carousel
data={[{ title: 'Item 1' }, { title: 'Item 2' }, { title: 'Item 3' }]}
renderComponent={(item, index) => <Text>{item.title}</Text>}
autoplayInterval={5000}
/>The Checkbox component is a customizable checkbox component that allows you to display a list of items in a horizontally scrollable checkbox layout.
The component accepts the following props:
| Props | Description |
|---|---|
| label | The label to be displayed next to the checkbox. |
| onSelect | A function that is called when the checkbox is selected or deselected. The function receives a boolean argument indicating whether the checkbox is checked. |
| isChecked | An optional boolean indicating whether the checkbox is initially checked. Default is false. |
| color | An optional string representing the color of the checkbox when it is checked. If not provided, the default color is used. |
| width | An optional string representing the width of the checkbox. If not provided, the default width is '100%'. |
| textStyle | An optional TextStyle object for customizing the style of the label. |
Example
import Checkbox from 'react-native-unicorn/checkbox';
<View
style={{
width: Dimensions.get('window').width,
padding: 5,
justifyContent: 'center',
alignItems: 'center',
alignSelf: 'center',
}}
>
<Checkbox
label={'Default Checked'}
onSelect={() => {}}
color="blue-500"
isChecked={true}
/>
<Checkbox
label={'Default Unchecked'}
onSelect={() => {}}
color="red-500"
isChecked={false}
/>
</View>The CircularGraph component is a customizable circularGraph component that allows you to display a list of items in a horizontally scrollable circularGraph layout.
The component accepts the following props:
| Props | Description |
|---|---|
| percentage | A number representing the percentage to be displayed by the circular graph. This value should be between 0 and 100. |
| radius | The radius of the circular graph in pixels. |
| strokeWidth | The width of the stroke used to draw the circular graph in pixels. |
| strokeColor | An optional string representing the color of the progress stroke. If not provided, the default color is used. |
| displayText | An optional boolean indicating whether to display the percentage text in the center of the graph. Default is false. |
Example
import CircularGraph from 'react-native-unicorn/circular-graph';
<View
style={{
width: Dimensions.get('window').width,
padding: 5,
justifyContent: 'center',
alignItems: 'center',
alignSelf: 'center',
}}
>
<CircularGraph
percentage={25}
radius={35}
strokeWidth={12}
strokeColor="#048BA8"
displayText={true}
/>
<CircularGraph
strokeColor="#F18F01"
percentage={35}
radius={35}
strokeWidth={12}
displayText={true}
/>
<CircularGraph
percentage={75}
radius={35}
strokeWidth={12}
displayText={true}
/>
</View>The Countdown component is a customizable countdown component that allows you to display a countdown timer that triggers a callback function when the time is up.
The component accepts the following props:
| Props | Description |
|---|---|
| seconds | The initial number of seconds for the countdown. |
| onTimeUp | A function that is called when the countdown reaches zero. |
| textStyle | An optional TextStyle object for customizing the style of the countdown text. |
Example
import Countdown from 'react-native-unicorn/countdown';
<View
style={{
width: Dimensions.get('window').width,
padding: 5,
justifyContent: 'center',
alignItems: 'center',
alignSelf: 'center',
}}
>
<Countdown
seconds={120}
onTimeUp={() => {
Alert.alert("Time's up!");
}}
/>
</View>The CounterBox component is a customizable CounterBox component that allows you to display a counter with increment and decrement buttons.
The component accepts the following props:
| Props | Description |
|---|---|
| onTextChanged | A function that is called when the counter value changes. The function receives the new counter value as a string. |
| counterValue | An optional number representing the initial value of the counter. Default is 1. |
| title | An optional string representing the title to be displayed above the counter. |
| textStyle | An optional TextStyle object for customizing the style of the counter text. |
| viewStyle | An optional string representing additional Tailwind CSS classes to be applied to the counter. |
Example
import CounterBox from 'react-native-unicorn/counterBox';
<View
style={{
width: Dimensions.get('window').width,
padding: 5,
justifyContent: 'center',
alignItems: 'center',
alignSelf: 'center',
}}
>
<CounterBox
onTextChanged={(value) => console.log(`Counter value is ${value}`)}
counterValue={10}
title="Quantity"
textStyle={{ fontSize: 20 }}
viewStyle="bg-red-500"
/>
</View>The CustomInput component is a customizable TextInput component that allows you to display a text input field with optional icon, placeholder, and custom styles.
The component accepts the following props:
| Props | Description |
|---|---|
| onTextChange | A function that is called when the text in the input field changes. The function receives the new text as a string. |
| variant | A string representing the variant of the input field. This determines the height and multiline property of the input field. The accepted values are 'small', 'medium', and 'large'. |
| placeholder | A string representing the placeholder text to be displayed in the input field. |
| placeholderTextColor | An optional string representing the color of the placeholder text. |
| viewStyle | An optional string representing additional Tailwind CSS classes to be applied to the input field. |
| textStyle | An optional TextStyle object for customizing the style of the text in the input field. |
| icon | An optional React Node to be displayed next to the input field. |
| disabled | An optional boolean indicating whether the input field is disabled. |
| caps | An optional boolean indicating whether the text in the input field should be auto-capitalized. |
| length | An optional number representing the maximum length of the text in the input field. |
| inputMode | An optional string representing the input mode of the input field. |
| props | Any additional props to be passed to the underlying TextInput component. |
Example
import Input from 'react-native-unicorn/custom-input';
<View
style={{
width: Dimensions.get('window').width,
padding: 5,
justifyContent: 'center',
alignItems: 'center',
alignSelf: 'center',
}}
>
<Input
variant="medium"
placeholder="Medium Input"
onTextChange={(text: string) => {
console.log(text);
}}
/>
</View>The DropDown component is a customizable dropdown component that displays a dropdown list with selectable options, each of which can have an optional icon.
The component accepts the following props:
| Props | Description |
|---|---|
| options | An array of objects representing the options to be displayed in the dropdown. Each object should have an id, label, and value property, and an optional icon property. |
| onSelect | A function that is called when an option is selected. The function receives the value of the selected option. |
| title | A string representing the title to be displayed on the dropdown button. |
| viewStyle | An optional string representing additional Tailwind CSS classes to be applied to the dropdown button. |
| textStyle | An optional TextStyle object for customizing the style of the text in the dropdown button and options. |
Example
import DropDown from 'react-native-unicorn/dropdown';
<View
style={{
width: Dimensions.get('window').width,
padding: 5,
justifyContent: 'center',
alignItems: 'center',
alignSelf: 'center',
}}
>
<DropDown
options={[
{ id: '1', label: 'Option 1', value: '1', icon: <Icon name="home" /> },
{ id: '2', label: 'Option 2', value: '2' },
]}
onSelect={(value) => console.log(`Selected value is ${value}`)}
title="Select an option"
/>
</View>The Grid component is a customizable grid component that displays a table-like structure with rows and columns.
The component accepts the following props:
| Props | Description |
|---|---|
| data | An array of objects representing the data to be displayed in the grid. Each object should have properties corresponding to the keys provided in the keys prop. |
| columns | An array of strings representing the column headers of the grid. |
| keys | An array of strings representing the keys of the data objects. The order of the keys determines the order of the columns in the grid. |
| textStyle | An optional TextStyle object for customizing the style of the text in the grid cells. |
Example
import { Grid } from 'react-native-unicorn/grid';
<Grid
data={[
{ id: '1', name: 'John Doe', age: 30 },
{ id: '2', name: 'Jane Doe', age: 25 },
]}
columns={['ID', 'Name', 'Age']}
keys={['id', 'name', 'age']}
/>The OTPInput component is a customizable One-Time Password (OTP) input component that displays a series of input fields for OTP entry. Long pressing on the first cell allows users to paste the OTP in all the cells.
The component accepts the following props:
| Props | Description |
|---|---|
| length | The number of digits in the OTP. |
| value | The initial value of the OTP. |
| onOtpChange | A function that is called when the OTP value changes. The function receives the new OTP value. |
| incorrect | A boolean indicating whether the entered OTP is incorrect. If true, the input fields are highlighted in red. |
| textStyle | An optional TextStyle object for customizing the style of the text in the input fields. |
| viewStyle | An optional string representing additional Tailwind CSS classes to be applied to the container view of the input fields. |
Example
import { OTPInput } from './otp-input';
<OTPInput
length={6}
onOtpChange={(value) => console.log(`OTP value is ${value}`)}
incorrect={false}
textStyle={{ color: 'black', fontSize: 16 }}
/>The PasswordInput component is a customizable password input component for React Native applications. It allows you to display a password input field with an integrated show/hide password toggle.
The component accepts the following props:
| Props | Description |
|---|---|
| onChangePassword | A function that is called when the password value changes. The function receives the new password value. |
| placeholder | An optional string representing the placeholder text to be displayed in the input field. |
| placeholderTextColor | An optional string representing the color of the placeholder text. |
| textStyle | An optional TextStyle object for customizing the style of the text in the input field. |
| viewStyle | An optional string representing additional Tailwind CSS classes to be applied to the container view of the input field. |
| disabled | An optional boolean indicating whether the input field is disabled. |
| props | An optional object containing additional TextInputProps to be passed to the TextInput component. |
Example
import { PasswordInput } from './password-input';
<PasswordInput
onChangePassword={(text: string) => console.log(text)}
/>The PhoneNumberInput component is a customizable phone number component that allows you to display a phone number input field with an integrated country code picker.
The component accepts the following props:
| Props | Description |
|---|---|
| onPhoneNumberChange | A function that is called when the phone number value changes. The function receives the new phone number value. |
| placeholderTextColor | An optional string representing the color of the placeholder text. |
| placeholder | An optional string representing the placeholder text to be displayed in the input field. |
| textStyle | An optional TextStyle object for customizing the style of the text in the input field. |
| viewStyle | An optional string representing additional Tailwind CSS classes to be applied to the container view of the input field. |
| codeStyle | An optional string representing additional Tailwind CSS classes to be applied to the country code picker. |
| props | An optional object containing additional TextInputProps to be passed to the TextInput component. |
| disabled | An optional boolean indicating whether the input field is disabled. |
| codes | An optional array of strings representing the country codes to be displayed in the country code picker. |
Example
import { PhoneNumberInput } from './phone-input';
<PhoneNumberInput
onPhoneNumberChange={(text: string) => console.log(text)}
/>
<PhoneNumberInput
onPhoneNumberChange={(text: string) => console.log(text)}
viewStyle="my-4"
codes={['KE', 'UG', 'TZ']}
/>The RadioButton component is a customizable radio button that allows you to display a group of radio buttons with selectable options.
The component accepts the following props:
| Props | Description |
|---|---|
| data | An array of objects representing the options to be displayed as radio buttons. Each object should have an id and label property. |
| type | A string representing the type of the radio button. |
| onSelect | A function that is called when a radio button is selected. The function receives the value of the selected option. |
| orientation | A string representing the orientation of the radio buttons. It can be 'horizontal' or 'vertical'. |
| viewStyle | An optional string representing additional Tailwind CSS classes to be applied to the container view of the radio buttons. |
| textStyle | An optional TextStyle object for customizing the style of the text in the radio buttons. |
| width | An optional string representing the width of the radio buttons. |
| defaultSelected | An optional object representing the default selected option. |
Example
import { RadioButton } from './radio-button';
<RadioButton
data={[
{ id: '1', label: 'Option 1' },
{ id: '2', label: 'Option 2' },
]}
onSelect={(item: any) => {
console.log(item.name);
}}
type={''}
orientation={'row'}
/>The VerticalStepper component is a customizable vertical stepper component for React Native applications. It allows you to display a series of steps in a vertical layout.
The component accepts the following props:
| Props | Description |
|---|---|
| steps | An array of objects representing the steps to be displayed in the stepper. Each object should have a title and component property, and an optional pointStyle property. |
| viewStyle | An optional string representing additional Tailwind CSS classes to be applied to the container view of the stepper. |
| textStyle | An optional TextStyle object for customizing the style of the text in the stepper. |
Example
import { VerticalStepper } from './vertical-stepper';
<VerticalStepper
steps={[
{ title: 'Step 1', component: <Text>Step 1 Content</Text> },
{ title: 'Step 2', component: <Text>Step 2 Content</Text>, pointStyle: 'bg-red-500' },
]}
viewStyle="bg-blue-500 my-5"
/>In this example, the VerticalStepper component is used to display a vertical stepper with two steps: 'Step 1' and 'Step 2'. The content of each step is a Text component. The point of 'Step 2' has a red background. The container view of the stepper has a blue background. The text in the stepper is white and has a font size of 16.