All Projects → react-ui-kit → expo-ui-kit

react-ui-kit / expo-ui-kit

Licence: MIT license
expo-ui-kit - a components based React-Native UI Kit

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to expo-ui-kit

Dribbble2react
Transform Dribbble designs to React-Native code | Shop UI Kit >>
Stars: ✭ 2,443 (+2676.14%)
Mutual labels:  expo, react-ui-kit, expo-ui-kit
react-native-uiw
A UI component library based on React Native (Android & iOS).
Stars: ✭ 28 (-68.18%)
Mutual labels:  ui-kit, react-native-component
pearl-ui
Pearl UI is a powerful UI toolkit that helps you build beautiful production-ready mobile apps right out of the box ⚡️
Stars: ✭ 19 (-78.41%)
Mutual labels:  ui-kit, expo
react-native-select-pro
React Native dropdown (select) component developed by Mobile Reality
Stars: ✭ 79 (-10.23%)
Mutual labels:  react-native-component, expo
react-native-multi-selectbox
Platform independent (Android / iOS) Selectbox | Picker | Multi-select | Multi-picker. The idea is to bring out the common user interface & user experience on both platforms.
Stars: ✭ 169 (+92.05%)
Mutual labels:  react-native-component, expo
jellyfin-expo
Jellyfin Mobile for iOS
Stars: ✭ 164 (+86.36%)
Mutual labels:  expo
Expo-Super-Mario-World
Native Super Mario World in Expo
Stars: ✭ 24 (-72.73%)
Mutual labels:  expo
heylinda-app
The open source and free meditation app alternative for everyone. Built with React Native and Expo.
Stars: ✭ 481 (+446.59%)
Mutual labels:  expo
kikstart-ui
🎀 Set of ready to use declarative Angular UI components.
Stars: ✭ 25 (-71.59%)
Mutual labels:  ui-kit
expo-doodle-jump
No description or website provided.
Stars: ✭ 44 (-50%)
Mutual labels:  expo
maker
Maker is a advanced mobile ToDo app for Android and iOS
Stars: ✭ 35 (-60.23%)
Mutual labels:  expo
react-native-appsync-s3
React Native app for image uploads to S3 and storing their records in Amazon DynamoDB using AWS Amplify and AppSync SDK
Stars: ✭ 18 (-79.55%)
Mutual labels:  expo
proffy
React Native + ReactJS + NodeJS project developed on RocketSeat NexLevelWeek. This project is based on an application for connect students and teachers.
Stars: ✭ 30 (-65.91%)
Mutual labels:  expo
react-native-expo-web
All-in-one React Native project (Expo + react-native-web)
Stars: ✭ 16 (-81.82%)
Mutual labels:  expo
expo-deploy
Bash script to deploy to different Expo environments (https://expo.io)
Stars: ✭ 40 (-54.55%)
Mutual labels:  expo
smovie-expo
[New] New version with more examples: https://github.com/theo-mesnil/WhatToWatch [Old version] Smovie is the simplest and fastest way to discover movies, series and actors. With React Native, Expo and themoviedb 🎥
Stars: ✭ 19 (-78.41%)
Mutual labels:  expo
tic-tac-toe-app
Online multiplayer Tic Tac Toe game for iOS, Android, and web.
Stars: ✭ 34 (-61.36%)
Mutual labels:  expo
react-native-firebase-redux-authentication
Firebase Authentication using React Native, Redux, Router flux.
Stars: ✭ 45 (-48.86%)
Mutual labels:  expo
app-intro-lottie-expo
App Intro component with Expo, styled-components and Lottie
Stars: ✭ 46 (-47.73%)
Mutual labels:  expo
react-native-walkthrough
React Native Walkthrough User Onboarding Flow to start your react native app development
Stars: ✭ 37 (-57.95%)
Mutual labels:  expo

expo-ui-kit - a components based React-Native UI Kit

expo-ui-kit is a React-Native UI framework based on Expo.io SDK that will help build React-Native Expo apps using predefined & customizable UI components.

UI Components:

Tools & Utils:

  • helpers: getMargins, getPaddings, mergeTheme
  • rgba: transform hex colors into rgba colors using opacity
  • theme.js: default theme for UI components with predefined values for: COLORS, SIZES, FONTS

Block

https://reactnative.dev/docs/view

https://reactnative.dev/docs/flexbox

Usage:

  • default Block has flex: 1
<Block>
  <Text>components</Text>
</Block>
  • disable flex
<Block flex="{0}">
  <Text>flex: 0</Text>
</Block>
<Block noFlex>
  <Text>flex: 0</Text>
</Block>
  • flex for half of the size
<Block flex="{0.5}">
  <Text>flex: 0.5</Text>
</Block>
  • row will render flexDirection: row
<Block row>
  <Text>text 1</Text>
  <Text>text 2</Text>
</Block>
  • vertical centering the content
<Block center>
  <Text>text 1</Text>
  <Text>text 2</Text>
</Block>
  • horizontal centering the content
<Block middle>
  <Text>text 1</Text>
  <Text>text 2</Text>
</Block>
  • vertical & horizontal centering the content
<Block center middle>
  <Text>text 1</Text>
  <Text>text 2</Text>
</Block>

Colors

  • will render backgroundColor using predefined colors from theme.js COLORS array
  • predefined colors: primary, secondary, tertiary, black, white, gray, error, warning, success, info
<Block primary>
  <Text>backgroundColor: COLORS.primary</Text>
</Block>
<Block secondary>
  <Text>backgroundColor: COLORS.secondary</Text>
</Block>
  • custom color using hex color
<Block color="#DDDDDD">
  <Text>backgroundColor: #DDDDDD</Text>
</Block>

Arrange content using justifyContent

https://reactnative.dev/docs/layout-props#justifycontent

  • space between the content
<Block space="between">
  <Text>1st text</Text>
  <Text>2nd text</Text>
</Block>
  • space evenly the content
<Block space="evenly">
  <Text>1st text</Text>
  <Text>2nd text</Text>
</Block>
  • space around the content
<Block space="around">
  <Text>1st text</Text>
  <Text>2nd text</Text>
</Block>

Border radius

  • round the corners using borderRadius: 6
<Block radius="{6}">
  <Text>1st text</Text>
  <Text>2nd text</Text>
</Block>

Wrap content using flexWrap, default flexWrap: 'nowrap'

https://reactnative.dev/docs/flexbox#flex-wrap

  • flexWrap: 'wrap'
<Block wrap>
  <Text>1st text</Text>
  <Text>2nd text</Text>
  <Text>3rd text</Text>
</Block>

For animations animate props can be use to render Animated.View component

  • animated will render Animated.View
<Block animated>
  <Text>animated view</Text>
</Block>

For safe area views, safe props can be use to render SafeAreaView component

  • safe will render SafeAreaView
<Block safe>
  <Text>safe area view</Text>
</Block>

Button

https://reactnative.dev/docs/touchableopacity

https://reactnative.dev/docs/touchablehighlight

https://reactnative.dev/docs/touchablenativefeedback

https://reactnative.dev/docs/touchablewithoutfeedback

Default render an instance of TouchableOpacity

  • TouchableHighlight
<button highlight>
  <Text>instance of TouchableHighlight</Text>
</button>
  • TouchableNativeFeedback
<button nativeFeedback>
  <Text>instance of TouchableNativeFeedback</Text>
</button>
  • TouchableWithoutFeedback
<button withoutFeedback>
  <Text>instance of TouchableWithoutFeedback</Text>
</button>

Colors

  • will render backgroundColor using predefined colors from theme.js COLORS array
  • predefined colors: primary, secondary, tertiary, black, white, gray, error, warning, success, info
<button primary>
  <Text>backgroundColor: COLORS.primary</Text>
</button>
<button transparent>
  <Text>backgroundColor: "transparent"</Text>
</button>
  • custom color using hex color
<button color="#DDDDDD">
  <Text>backgroundColor: #DDDDDD</Text>
</button>

Set activeOpacity using opacity prop default activeOpacity=0.8

<button opacity="{0.5}">
  <Text>opacity={0.5}</Text>
</button>

Outlined and add borderColor equal with backgroundColor

<button primary outlined>
  <Text>outlined</Text>
</button>

Disabling the button

<button disabled>
  <Text>disabled</Text>
</button>
<button disabled="{false}">
  <Text>false</Text>
</button>

Add flex to button style

<button flex>
  <Text>flex=1</Text>
</button>
<button flex="{2}">
  <Text>flex=2</Text>
</button>

Add height to button style

<button height="{58}">
  <Text>height=58</Text>
</button>

Card

https://reactnative.dev/docs/view

https://reactnative.dev/docs/flexbox

Using Block component with predefined props: color, radius and padding

<Card>
  <Text>default card</Text>
</Card>

Border radius using radius props

<Card radius="{8}">
  <Text>radius={8}</Text>
</Card>

Padding using padding props

  • default padding={SIZES.base}
<Card padding="{12}">
  <Text>padding={12}</Text>
</Card>

Set shadow using shadow props

  • default shadow with color black and elevation
  • shadowOffset is calculated using elevation - 1
  • shadowRadius is equal with elevation value
<Card shadow>
  <Text>shadow</Text>
</Card>

<Card shadow elevation="{2}">
  <Text>shadow elevation={2}</Text>
</Card>

Set borderColor using outlined prop

  • default borderWidth: 1 and borderColor: Utils.rgba(COLORS.black, 0.16) with alpha 0.16
<Card outlined>
  <Text>outlined</Text>
</Card>

Input

https://reactnative.dev/docs/textinput

Validation

  • onValidation return a single boolean or object with boolean values
  • pattern using regex string for validating the value
  • single pattern to validate the value
<Input pattern="/\d/" // validate digits onValidation={isValid =>
console.log(isValid)} />
  • multiple pattern to validate the value
<Input pattern={[ "/\d/", "/\w/"]} // validate digits and words
onValidation={isValid => console.log(isValid)} />

Border color using color prop

<input color="red" />

Pass ref from props using internalRef reference

<Input internalRef={c => this.c} />

Text

https://reactnative.dev/docs/text

Usage:

  • fontSize predefined by theme.js
<Text h1>fontSize of 34 from FONTS.h1</Text>
<Text h2>fontSize of 24 from FONTS.h2</Text>
<Text h3>fontSize of 20 from FONTS.h3</Text>
<Text title>fontSize of 18 from FONTS.title</Text>
<Text subtitle>fontSize of 14 from FONTS.subtitle</Text>
<Text caption>fontSize of 12 from FONTS.caption</Text>
<Text small>fontSize of 10 from FONTS.small</Text>
  • fontSize defined by user
<Text size="{20}">fontSize of 20</Text>
  • margin & padding
<Text margin="{4}">set margin 4 to: top, right, bottom & left</Text>
<Text padding="{6}">set margin 6 to: top, right, bottom & left</Text>
  • text styling
<Text transform>textTransform: capitalize, lowercase, uppercase</Text>
<Text regular>fontWeight from WEIGHTS.regular</Text>
<Text bold>fontWeight from WEIGHTS.bold</Text>
<Text semibold>fontWeight from WEIGHTS.semibold</Text>
<Text medium>fontWeight from WEIGHTS.medium</Text>
<Text light>fontWeight from WEIGHTS.light</Text>
<Text weight="700">fontWeight from user input</Text>
  • text colors
<Text primary>color from COLORS.primary</Text>
<Text secondary>color from COLORS.secondary</Text>
<Text tertiary>color from COLORS.tertiary</Text>
<Text black>color from COLORS.black</Text>
<Text white>color from COLORS.white</Text>
<Text gray>color from COLORS.gray</Text>
<Text info>color from COLORS.info</Text>
<Text success>color from COLORS.success</Text>
<Text warning>color from COLORS.warning</Text>
<Text error>color from COLORS.error</Text>
<Text color="#DDD">color from user input</Text>

custom theme using the src/theme.js data structure

  • create a custom theme by defining: const customTheme.js
  • with the following structure to rewrite any value
{
  COLORS: {
    primary: "cyan" or "#8A00D4",
    secondary: "fucsia" or "#D527B7",
    tertiary: "yellow" or "#FFC46B"
  },
  SIZES: {
    font: 15,
    h1: 28
    title: 17
  }
}
  • include the custom theme to the component props
<Text primary theme="{customTheme}">primary using new color: #8A00D4</Text>
  • animating text can be used using the "animated" props
<Text animated>will render Animated.Text</Text>
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].