Giter Club home page Giter Club logo

react-native-material-kit's Introduction

Build Status npm react-native MIT Built with JetBrains IDEs

A set of UI components, in the purpose of introducing Material Design to apps built with React Native, quickly and painlessly.

Getting Started

First, cd to your RN project directory, and install RNMK through rnpm . If you don't have rnpm, you can install RNMK from npm with the command npm i -S react-native-material-kit and link it manually (see below).

NOTICE:

react-native-material-kit >= 0.4.0 only supports react-native >= 0.40.0

react-native-material-kit < 0.4.0 only supports react-native < 0.40.0

iOS

  • React Native < 0.29 (Using rnpm)

    rnpm install react-native-material-kit

  • React Native >= 0.29

    npm install -S react-native-material-kit

    react-native link react-native-material-kit

Manually

  1. Add node_modules/react-native-material-kit/iOS/RCTMaterialKit.xcodeproj to your xcode project, usually under the Libraries group
  2. Add libRCTMaterialKit.a (from Products under RCTMaterialKit.xcodeproj) to build target's Linked Frameworks and Libraries list

Option: Using CocoaPods

Assuming you have CocoaPods installed, create a PodFile like this in your app's project directory. You can leave out the modules you don't need.

xcodeproj 'path/to/YourProject.xcodeproj/'

pod 'React', :subspecs => ['Core', 'RCTText', 'RCTWebSocket'], :path => 'node_modules/react-native'
pod 'react-native-material-kit', :path => 'node_modules/react-native-material-kit'

post_install do |installer|
  target = installer.pods_project.targets.select{|t| 'React' == t.name}.first
  phase = target.new_shell_script_build_phase('Run Script')
  phase.shell_script = "if nc -w 5 -z localhost 8081 ; then\n  if ! curl -s \"http://localhost:8081/status\" | grep -q \"packager-status:running\" ; then\n    echo \"Port 8081 already in use, packager is either not running or not running correctly\"\n    exit 2\n  fi\nelse\n  open $SRCROOT/../node_modules/react-native/packager/launchPackager.command || echo \"Can't start packager automatically\"\nfi"
end

Now run pod install. This will create an Xcode workspace containing all necessary native files, including react-native-material-kit. From now on open YourProject.xcworkspace instead of YourProject.xcodeproject in Xcode. Because React Native's iOS code is now pulled in via CocoaPods, you also need to remove the React, RCTImage, etc. subprojects from your app's Xcode project, in case they were added previously.

Android

  • React Native < 0.29 (Using rnpm)

    rnpm install react-native-material-kit

  • React Native >= 0.29

    npm install -S react-native-material-kit

    react-native link react-native-material-kit

Manually

  1. JDK 7+ is required
  2. Add the following snippet to your android/settings.gradle:
include ':RNMaterialKit'
project(':RNMaterialKit').projectDir = file('../node_modules/react-native-material-kit/android')
  1. Declare the dependency in your android/app/build.gradle
dependencies {
    ...
    compile project(':RNMaterialKit')
}
  1. Import com.github.xinthink.rnmk.ReactMaterialKitPackage and register it in your MainActivity (or equivalent, RN >= 0.32 MainApplication.java):
@Override
protected List<ReactPackage> getPackages() {
    return Arrays.asList(
            new MainReactPackage(),
            new ReactMaterialKitPackage()
    );
}

Manual Installation Issues

If you experience any trouble manually installing react-native-material-kit on Android, you should be able to safely skip it.

Finally, you're good to go, feel free to require react-native-material-kit in your JS files.

Have fun! ๐Ÿค˜

Resources

Components

Buttons

img-buttons

Apply Material Design Buttons with a few lines of code using predefined builders, which comply with the Material Design Lite default theme.

// colored button with default theme (configurable)
const ColoredRaisedButton = MKButton.coloredButton()
  .withText('BUTTON')
  .withOnPress(() => {
    console.log("Hi, it's a colored button!");
  })
  .build();

...
<ColoredRaisedButton />

And you can definitely build customized buttons from scratch.

with builder:

const CustomButton = new MKButton.Builder()
  .withBackgroundColor(MKColor.Teal)
  .withShadowRadius(2)
  .withShadowOffset({width:0, height:2})
  .withShadowOpacity(.7)
  .withShadowColor('black')
  .withOnPress(() => {
    console.log('hi, raised button!');
  })
  .withTextStyle({
    color: 'white',
    fontWeight: 'bold',
  })
  .withText('RAISED BUTTON')
  .build();

...
<CustomButton />

the jsx equivalent:

<MKButton
  backgroundColor={MKColor.Teal}
  shadowRadius={2}
  shadowOffset={{width:0, height:2}}
  shadowOpacity={.7}
  shadowColor="black"
  onPress={() => {
    console.log('hi, raised button!');
  }}
  >
  <Text pointerEvents="none"
        style={{color: 'white', fontWeight: 'bold',}}>
    RAISED BUTTON
  </Text>
</MKButton>

๐Ÿ‘‰ props reference and example code

Why builders? See the โ€˜Builder vs. configuration objectโ€™ discussion.

Cards

img-cards

Apply Card Style with only few styles !.

import {
  getTheme,
  ...
} from 'react-native-material-kit';

const theme = getTheme();

<View style={theme.cardStyle}>
  <Image source={{uri : base64Icon}} style={theme.cardImageStyle} />
  <Text style={theme.cardTitleStyle}>Welcome</Text>
  <Text style={theme.cardContentStyle}>
    Lorem ipsum dolor sit amet, consectetur adipiscing elit.
    Mauris sagittis pellentesque lacus eleifend lacinia...
  </Text>
  <View style={theme.cardMenuStyle}>{menu}</View>
  <Text style={theme.cardActionStyle}>My Action</Text>
</View>

๐Ÿ‘‰ example code

Loading

MDL Loading components.

Progress bar

progress-demo

<mdl.Progress
  style={styles.progress}
  progress={0.2}
/>

๐Ÿ‘‰ props reference and example code

Spinner

spinner-demo

<mdl.Spinner />

๐Ÿ‘‰ props reference and example code

Sliders

MDL Slider components. slider-demo

<mdl.Slider style={styles.slider} />
โ€ฆ
const SliderWithValue = mdl.Slider.slider()
  .withStyle(styles.slider)
  .withMin(10)
  .withMax(100)
  .build();
โ€ฆ
<SliderWithValue
  ref="sliderWithValue"
  onChange={(curValue) => this.setState({curValue})}
/>

๐Ÿ‘‰ props reference and example code

Range Slider

range-slider-demo

<mdl.RangeSlider style={styles.slider} />
โ€ฆ
const SliderWithRange = mdl.RangeSlider.slider()
  .withStyle(styles.slider)
  .withMin(10)
  .withMax(100)
  .withMinValue(30)
  .withMaxValue(50)
  .build();
โ€ฆ
<SliderWithRange
  ref="sliderWithRange"
  onChange={(curValue) => this.setState({
    min: curValue.min,
    max: curValue.max,
    })
  }
  onConfirm={(curValue) => {
    console.log("Slider drag ended");
    console.log(curValue);
  }}
/>

๐Ÿ‘‰ props reference and example code

Text Fields

Built-in textfields, which comply with Material Design Lite.

img-tf

// textfield with default theme (configurable)
const Textfield = MKTextField.textfield()
  .withPlaceholder('Text...')
  .withStyle(styles.textfield)
  .build();

...
<Textfield />

Customizing textfields through builder:

const CustomTextfield = mdl.Textfield.textfield()
  .withPlaceholder("Text...")
  .withStyle(styles.textfield)
  .withTintColor(MKColor.Lime)
  .withTextInputStyle({color: MKColor.Orange})
  .build();
...
<CustomTextfield />

the jsx equivalent:

<Textfield
  tintColor={MKColor.Lime}
  textInputStyle={{color: MKColor.Orange}}
  placeholder=โ€œTextโ€ฆโ€
  style={styles.textfield}
/>

๐Ÿ‘‰ props reference and example code

Toggles

Icon toggle & Switch img-toggles

Icon toggle

<MKIconToggle
  checked={true}
  onCheckedChange={this._onIconChecked}
  onPress={this._onIconClicked}
>
  <Text
    pointerEvents="none"
    style={styles.toggleTextOff}>Off</Text>
  <Text state_checked={true}
        pointerEvents="none"
        style={[styles.toggleText, styles.toggleTextOn]}>On</Text>
</MKIconToggle>

The two Text tags here, similar to State List in Android development, which can give you the flexibility to decide what content and how it is shown for each state of the toggle. For example, you can use react-native-icons here, or any other sophisticated contents.

๐Ÿ‘‰ props reference and example code

Switch

<mdl.Switch
  style={styles.appleSwitch}
  onColor="rgba(255,152,0,.3)"
  thumbOnColor={MKColor.Orange}
  rippleColor="rgba(255,152,0,.2)"
  onPress={() => console.log('orange switch pressed')}
  onCheckedChange={(e) => console.log('orange switch checked', e)}
/>

๐Ÿ‘‰ props reference and example code

Checkbox

img-checkbox

<MKCheckbox
  checked={true}
/>

You can customize the styles by changing the global theme, which affects all checkboxes across the whole app.

setTheme({checkboxStyle: {
  fillColor: MKColor.Teal,
  borderOnColor: MKColor.Teal,
  borderOffColor: MKColor.Teal,
  rippleColor: `rgba(${MKColor.RGBTeal},.15)`,
}});

๐Ÿ‘‰ props reference and example code

Radio button

img-radio

constructor() {
  super();
  this.radioGroup = new MKRadioButton.Group();
}
...
<MKRadioButton
  checked={true}
  group={this.radioGroup}
/>

You can customize the styles by changing the global theme, which affects all radio buttons across the whole app.

setTheme({radioStyle: {
  fillColor: `rgba(${MKColor.RGBTeal},.8)`,
  borderOnColor: `rgba(${MKColor.RGBTeal},.6)`,
  borderOffColor: `rgba(${MKColor.RGBTeal},.3)`,
  rippleColor: `rgba(${MKColor.RGBTeal},.15)`,
}});

๐Ÿ‘‰ props reference and example code

react-native-material-kit's People

Contributors

abhinavdabral avatar almost avatar awaidmann avatar bakyeono avatar crash-- avatar dannycochran avatar dependabot[bot] avatar freydal avatar froelund avatar invibot avatar iroachie avatar ivks avatar jakkra avatar lynndylanhurley avatar mihado avatar nemothecapt avatar pasviegas avatar paulbao avatar pyyoshi avatar skyplor avatar srsugara avatar swansontec avatar th317erd avatar tiagogouvea avatar twolfe2 avatar vermiculite avatar vincentfretin avatar vonovak avatar xinthink avatar zidail avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

react-native-material-kit's Issues

Build failed with an exception

I try to follow the guide add RNMK in my Android project .
Build failed with an exception

FAILURE: Build failed with an exception.

* Where:
Settings file '/Users/Pamakids-Dev/js/react/graNote/android/settings.gradle' line: 5

* What went wrong:
A problem occurred evaluating settings 'graNote'.
> No signature of method: java.io.File.toPath() is applicable for argument types: () values: []
  Possible solutions: getPath(), length(), toURI(), toURL(), each(groovy.lang.Closure), with(groovy.lang.Closure)

this is may settings.gradle

rootProject.name = 'xxx'

// resolve the symbolic link if any
def resolve(File dir) {
  dir.toPath().toAbsolutePath().toFile()
}

include ':app'

include ':RNMaterialKit'
project(':RNMaterialKit').projectDir = resolve file('../node_modules/react-native-material-kit/android')

Is there anything I miss?
I install the package from the git

MKButton: onLayout event reset the value of ripple offset

hello,
I tried to add a MKButton in Android5.1 like this

            <MKButton
                backgroundColor={MKColor.Silver}
                rippleColor={"rgba(0,0,0,0.1)"}
                rippleDuration={500}
                rippleLocation={'tapLocation'}
                maskColor={'rgba(0,0,0,0.05)'}
                maskDuration={500}
                shadowRadius={2}
                shadowOffset={{width:0, height:2}}
                shadowOpacity={.7}
                shadowColor={"black"}
                onPress={() => {
                console.log('hi, raised button!');
                }}>
                <View style={(this.props.index==0)?styles.navigationItemFirst:styles.navigationItem}>
                    <Text pointerEvents="none" style={styles.navigationItemText}>{this.props.text}</Text>
                </View>
            </MKButton>

when i touched the button(not in center), at first the offset is right, but at the next tick, the offset turned to center point.

after debug, i found that when the animation playing, onLayout event was emitted, and execute this._calcLayers(width / 2, height / 2, width, height)(mdl/Ripple.js line72), so offset was reset.

Is it a bug?

[Question] - Builder versus configuration object

Question as to why you used the builder pattern instead of a configuration object pattern for configuring instances.

The following has ten total method calls just for one button.

var CustomButton = new MKButton.Builder()
  .withBackgroundColor(MKColor.Teal)
  .withShadowRadius(2)
  .withShadowOffset({width:0, height:2})
  .withShadowOpacity(.7)
  .withShadowColor('black')
  .withOnPress(() => {
    console.log('hi, raised button!');
  })
  .withTextStyle({
    color: 'white',
    fontWeight: 'bold',
  })
  .withText('RAISED BUTTON')
  .build();

The MooTools configuration pattern uses just one

var CustomButton = new MKButton({
    backgroundColor : MKColor.Teal,
    shadow : {
        radius  : 2,
        opacity : .7,
        color   : 'black',
        offset  : {
            width  : 0,
            height : 2
        }
    },
    textStyle {
        color      : 'white',
        fontWeight : 'bold'
    },
    onPress : () => {
        console.log('onPress')
    }

});

flatButton: TypeError: expected dynamic type 'int64', but had type 'string'

The following error is raised when using flatButton on Android: TypeError: expected dynamic type 'int64', but had type 'string'.

If I comment out the line containing withBackgroundColor(...) in function flatButton() in Button.js it works fine.

This also raises the error: (new MKButton.Builder()).build()
This is ok: (new MKButton.Builder()).withStyle({}).build()

Checkbox

I realized that in some situation a toggle is a component that can dominate a form too much if it only references a minor aspect. In such situations, a traditional checkbox would be more appropriate. Are there any plans to implement one?

invoke 'undefined' object measure function in Textfield.js

This happens when the current page quick unmounted. The code should be changed more defensive.

_doMeasurement() {
if (this.refs.input) {
this.refs.input.measure(this._onInputMeasured.bind(this));
if (this.props.floatingLabelEnabled) {
this.refs.floatingLabel.measure(this._onLabelMeasured.bind(this));
}
}
}

get/set makes mdl components incompatible with Webpack/hot load

I've been using this library, but as of 0.1.9, the modules will not load without changing the get/set method of Progress, Slider and Spinner to pure methods.

I have confirmed that changing these to plain functions resolve the issues. I'll send a PR shortly. Thanks!

Could the default dimensions be removed?

It makes flexbox styling a little awkward:

<MKTextField
  style={{
    flex: 1,
    width: undefined
  }}
  placeholder='should take up the whole screen width'
  />

Good job btw! ๐Ÿ‘

"Warning: Native component for "MKTouchable" does not exist"

Hi!

For some reason, whenever I try to use any of the buttons I get the following error on the console and touch events aren't triggered.

Warning: Native component for "MKTouchable" does not exist

I am using react-native 0.14.1 and react-native-material-kit 0.2.2
Anyone else running into this issue?

Thanks :)

MKButton, MKIconToggle and MKSwitch does not exist

I just installed material kit on a fresh react-native project (react-native-cli 0.1.4)

  "dependencies": {
    "react-native": "^0.10.1",
    "react-native-material-kit": "^0.1.8"
  }

and I get these warnings:

Warning: Native component for "MKButton" does not existreactConsoleError @ index.ios.bundle:10719
index.ios.bundle:10719 Warning: Native component for "MKIconToggle" does not existreactConsoleError @ index.ios.bundle:10719
index.ios.bundle:10719 Warning: Native component for "MKSwitch" does not existreactConsoleError @ index.ios.bundle:10719

image

How to increase size?

.withFontSize(44) and style={{ fontSize: 44 }} don't work

im using this constructor MKTextField.textfield()

Floating Action Button / Menu

Hi Team,

are there any plans to integrate FAB buttons / menus.
They are getting more and more relevant.

Best
Timo

build.gradle from npm has wrong dependencies

If I do 'npm install react-native-material-kit', I get the following on build.gradle:

dependencies {
    compile project(':ReactAndroid')
//    provided 'com.facebook.react:react-native:0.12.+'
    //provided ('com.facebook.react:react-native:0.11.+') {
    //    exclude module: 'support-v4'
    //    exclude module: 'appcompat-v7'
    //}
    //compile 'com.android.support:design:23.0.1'
}

But I see that in the repo it is correct:

dependencies {
    provided 'com.facebook.react:react-native:0.12.+'
}

Thanks

[MKTextField] lost focus when component rerender.

Thanks for your quick fix โšก , but I found another issue about TextFiled events.

I did something like this:

_onBlur = ()=> {
  cl(`onBlur`)
  this.setState({
    upper: false,
  })
}

_onFocus = ()=> {
  cl(`onFocus`)
  this.setState({
    upper: true, // let the component upper, avoid hided by keyboard
  })
}

but when I triggered onFocus and ran into setState => render flow, the TextFiled lost focus and triggered onBlur. That not happened with RN.TextInput. Any ideal about that?

[Ripple] this refs.node.measure is not a function

I'm currently implementing some inputs like Radio or Checkbox and I'm trying to use your Ripple component but I got an error...

capture d ecran 2015-10-01 a 12 03 53

Here is my render function :

return  (
      <View style={style.input}>
        <Ripple ref="container"
          >
            <View style={style.rounded}></View>
          </Ripple>
        <Text style={style.label}>FOO</Text>
      </View>
    )

And here is the result of a console.log(this.refs.node) in MKTouchable file.

capture d ecran 2015-10-01 a 12 07 32

I missed something ?

underline animation stops when focussing a textfield while another textfield has focus inside a scrollview with `keyboardShouldPersistTaps={false}`

Example to reproduce:

/**
 * Sample React Native App
 * https://github.com/facebook/react-native
 */
'use strict'

var React = require('react-native')
var {
  AppRegistry,
  StyleSheet,
  ScrollView
} = React
var MKTextField = require('react-native-material-kit').MKTextField

var test = React.createClass({
  componentDidMount: function () {
    setTimeout(() => {
      this.refs.one.focus()
    }, 1000)
  },

  render: function () {
    return (
      <ScrollView
        style={styles.container}
        keyboardShouldPersistTaps={false}
        >
        <MKTextField
          ref='one'
          style={ styles.input }
          floatingLabelEnabled={true}
          placeholder='some placeholder'
          />
        <MKTextField
          style={ styles.input }
          floatingLabelEnabled={true}
          placeholder='some placeholder'
          />
      </ScrollView>
    )
  }
})

var styles = StyleSheet.create({
  container: {
    marginTop: 60
  },
  input: {
    flex: 1,
    width: undefined
  }
})

AppRegistry.registerComponent('test', () => test)

This is an issues with react native. Just so you know.

[Feature] Cards

Question, and maybe a dumb one..

It looks like both this repo and MaterialKit don't implement cards or lists. Is there a reason for this? Is there something out there for this?

Thanks :)

React Native Android?

Hi!
How would one go about installing this for React Native Android? Is it supported? Perhaps a silly question since it's material design, but it'd be nice to be able to use this for a consistent app look on both platforms.

[Feature] Slider with two values

In my use case of a slider, I need to be able to select an interval between 2 values (range of values). I tried to implement it, but didn't figured out how to do that.

If someone else want to look at this; you'll be more than welcome ;)

Icon button

On Android, when you press the back icon, there is this round click effect. Is there a way to achieve this with this library?

[MKTextField] How to get input event like RN.TextInput?

Thanks for this awesome project, the material design effect really perfect. But I have some problem with MKTextField: How can I get input area events like onChangeText, onEndEditing and other on* in RN.TextInput? I can't find anything about that in README or MKTextField.js, it's really hard to work without these event callbacks.

Browser version

Hi, I'm one of the maintainers of https://github.com/callemall/material-ui.
I dream in a world where I could use the same components to target react-dom (the browser) and react-native (iOS and Android).

So, do you think that It could be possible to achieve this?
It would be great if we can find a way to join forces.
I think that we would at least need to share the same API. But since we are using inlined-style, I'm wondering if we can't share more.

Publish lastest version

Hey xinthink can you publish the latest version with the podspec so I can start using it from the npm registry in one of my projects?

Thanks again

How to get text out of a text object

Thanks for this amazing project! This is very easy to use and quite well written.

I started experimenting with MKTextField.Builder(), and I quickly realized that I didn't know the best way to get the text values out of the element, since there doesn't seem to be any withOn... type of handler available for the builder. Looking over the code in https://github.com/xinthink/react-native-material-kit/blob/master/Source/Lib/builder.js#L106, I didn't see anything that popped out.

RadioButton: how to change the color of the innerCircle?

     <Animated.View
              ref="innerCircle"
              style={{
                backgroundColor: MKColor.Indigo,
                width: this._animatedSize,
                height: this._animatedSize,
                borderRadius: this._animatedRadius,
              }}
            />

It looks that I can't have another color for the background of the innerCircle.

Source directory makes installing from github not possible

NPM assumes that the root directory contains the package. With the npm package within the 'Source' directory, it cannot be installed directly from github. In my case, I want to install my branch while #15 is being considered, but can't.

Please reconsider the directory structure? :-)

how to access the value of textfield

I try to use textfield and want to get the value
some part of the code

          <ColoredTextfield ref="nameText" onChangeText={(re)=>
            ToastAndroid.show("onChangeText:"+re,ToastAndroid.SHORT)
        }/>
...
  _commit(){
var name = this.refs.nameText.value; //undefined
ToastAndroid.show("success"+JSON.stringify(name),ToastAndroid.SHORT);
}

onChangeText works fine.

this.refs.nameText.value is undefined anyway.

MKCardStyles returns Object with numbers?

Peculiar. MKCardStyles returns an object with properties containing numbers rather than style objects?

Object {card: 106, image: 107, title: 108, content: 109, action: 110โ€ฆ}

I am logging like this:

var MK = require('react-native-material-kit');

var {
  MKCardStyles
} = MK;

console.log('MKCardStyles', MKCardStyles)

Thoughts? Ideas?

Spinner component locks up InteractionManager

While the Spinner component is shown nothing scheduled via InteractionManager will run. Since it's sensible to wrap loading code in InteractionManager this is a bit of a problem!

I feel like this is more of a problem with Animated than with React Native Material Kit so I've created an issue on the React Native issue tracker also:

facebook/react-native#2434

I thought it would be worth mentioning this issue here also though.

Warning: Failed propType: typeChecker is not a function

I'm getting this error from the AccentColoredFab component

This is how I used it.

var AccentColoredFab = MKButton.accentColoredFab()
  .withText('+')
  .build();

and in render

<AccentColoredFab onPress={this.handlePress} />

Minor styling niggles

Love the work! Some minor styling niggles.

The default size for a focused textfield underline is 2px.

The placeholder grey color is 9e9e9e.

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.