Coder Social home page Coder Social logo

millergregor / react-native-material-ui Goto Github PK

View Code? Open in Web Editor NEW

This project forked from xotahal/react-native-material-ui

0.0 2.0 0.0 516 KB

Highly customizable material design components for React Native

License: MIT License

JavaScript 100.00%

react-native-material-ui's Introduction

React Native Material UI (iOS and Android supported)

Highly customizable material design components for React Native!

npm codecov npm GitHub issues Dependencies GitHub license

Getting Started

$ npm i react-native-material-ui --save

Setting of vector icons

You can see this repo for much more information.

React Native Link (recommended)

Make sure you have atleast v0.31.0 react-native version.

$ react-native link react-native-vector-icons

Manual Installation

Android (see original)

Copy the MaterialIcons font file from react-native-vector-icons to your local working directory:

./node_modules/react-native-vector-icons/Fonts/MaterialIcons.ttf -> ./android/app/src/main/assets/fonts.

iOS (see original)

Adding Roboto Font

This project uses Roboto as the main font for text. Make sure to add Roboto to your project, as it will give the following error on iOS. Unrecognized font family Roboto.

You can obtain Roboto free from here.

Here is a great tutorial which shows how to add custom fonts.

Usage

To achieve the level of customizability, React Native Material UI is using a single JS object called uiTheme that is passed in via context. By default, this uiTheme object is based on the lightTheme that you can find here. So, you can change almost everything very easily.

The uiTheme object contains the following keys:

spacing: {} // can be used to change the spacing of components.
fontFamily: {} // can be used to change the default font family.
palette: {  // can be used to change the color of components.
    primaryColor: blue500,
    accentColor: red500,
    ...
}
typography: {} // can be used to change the typography of components
// you can change style of every each component
avatar: {}
button: {}
toolbar: {}
...
import React, { Component } from 'react';
import { Navigator, NativeModules } from 'react-native';

import { COLOR, ThemeProvider } from '../react-native-material-ui';

// you can set your style right here, it'll be propagated to application
const uiTheme = {
    palette: {
        primaryColor: COLOR.green500,
    },
    toolbar: {
        container: {
            height: 50,
        },
    },
};

class Main extends Component {
    render() {
        return (
            <ThemeProvider uiTheme={uiTheme}>
                <App />
            </ThemeProvider>
        );
    }
}

It means, if you want to change primary color of your application for example. You can just pass to ThemeProvider object with your own settings. Your settings will be merged with default theme.

What else?

Another great feature is, you can use the uiTheme everywhere. Even in your own components. So if you built your own implementation of Button for example, look how you can get the primary color.

import ...

const contextTypes = {
    uiTheme: PropTypes.object.isRequired,
};

class MyButton extends Component {
    render() {
	    // it's really easy to get primary color everywhere in your app
        const { primaryColor } = this.context.uiTheme.palette;

        return ...
    }
}

export ...

Local changes

Of course, sometimes we need to change style of only one component. It means, all buttons have red background, but facebook login button that should have blue background. Every each component have style property. So you can very easily override whatever you want.

<Button style={{ container: { backgroundColor: 'blue' }}} />

Animations are included

Note: You have to allow the animations for Android (see React Native's documentation)

UIManager.setLayoutAnimationEnabledExperimental && 
UIManager.setLayoutAnimationEnabledExperimental(true);

Themes are supported

Toolbar with search feature

Examples

You can try our Demo App!

Example 1 Example 2 Example 3

Components

Here is a list of all component included in this library. (I'm working on documentation for every each component. Be patient please :))

react-native-material-ui's People

Contributors

alwx avatar andrewda avatar avishayil avatar bozzmob avatar cakecatz avatar chirag04 avatar dalcib avatar davearata avatar ehesp avatar feelingweird avatar frankros91 avatar gitter-badger avatar golovinov avatar hofmannz avatar iroachie avatar janziemba avatar kennethpdev avatar kevinresol avatar matthewfbenjamin avatar mlabrum avatar newoldmax avatar pfulop avatar salakar avatar simsim0709 avatar travishaagen avatar vongkim avatar vonovak avatar xotahal avatar xvonabur avatar zoontek avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.