Note
For how-to questions and other non-issues,
please use StackOverflow
instead of Github issues. There is a StackOverflow tag called "material-ui"
that you can use to tag your questions.
Material-UI is a set of React components that implement
Google's Material Design
specification.
Check out our documentation site for live examples.
It's still a work in progress, but hopefully you can see where we're headed.
Recently Updated? Please read the changelog, this README and the documentation before posting an issue.
Required Knowledge
We recommend that you get to know React
before diving into material-ui. Material-UI is a set of React components,
so understanding how React fits into web development is important.
(If you're not familiar with Node, or with the concept of Single Page Applications (SPAs),
head over to the documentation website
for a quick introduction before you read on.)
Installation
Material-UI is available as an npm package.
Stable channel
npm install material-ui
Pre-release channel
npm install material-ui@next
Please note that @next
will only point to pre-releases; to get the latest stable release use @latest
instead.
React-Tap-Event-Plugin
(not needed for versions 0.19.0 and higher)
Some components use
react-tap-event-plugin to
listen for touch events because onClick is not fast enough
This dependency is temporary and will eventually go away. Until then,
be sure to inject this plugin at the start of your app.
import injectTapEventPlugin from 'react-tap-event-plugin';
injectTapEventPlugin();
Roboto Font
Material-UI was designed with the Roboto
font in mind. So be sure to include it in your project. Here are
some instructions
on how to do so.
Usage
Beginning with v0.15.0, Material-UI components require a theme to be provided. The quickest way to get up and running is by using the MuiThemeProvider
to inject the theme into your application context. Following that, you can use any of the components as demonstrated in the documentation.
Here is a quick example to get you started:
./App.js
import React from 'react';
import ReactDOM from 'react-dom';
import MuiThemeProvider from 'material-ui/styles/MuiThemeProvider';
import MyAwesomeReactComponent from './MyAwesomeReactComponent';
const App = () => (
<MuiThemeProvider>
<MyAwesomeReactComponent />
</MuiThemeProvider>
);
ReactDOM.render(
<App />,
document.getElementById('app')
);
./MyAwesomeReactComponent.js
import React from 'react';
import RaisedButton from 'material-ui/RaisedButton';
const MyAwesomeReactComponent = () => (
<RaisedButton label="Default" />
);
export default MyAwesomeReactComponent;
Please refer to each component's documentation page to see how they should be imported.
Customization
We have implemented a default theme to render all Material-UI components.
Styling components to your liking is simple and hassle-free. This can be
achieved in the following two ways:
Examples
There are 2 projects that you can look at to get started. They can be found in the
examples folder.
These projects are basic examples that show how to consume material-ui components
in your own project. The first project uses browserify
for module bundling and gulp for JS task automation,
while the second project uses webpack for module bundling and building.
The source code for this documentation site is also included in the repository.
This is a slightly more complex project that also uses webpack, and contains
examples of every material-ui component. Check out the
docs folder
for build instructions.
Roadmap
The future plans and high priority features and enhancements can be found
in the ROADMAP.md file.
Contribute
Material-UI came about from our love of
React and
Google's Material Design.
We're currently using it on a project at Call-Em-All
and plan on adding to it and making it better. If you'd like to help,
check out the docs folder.
We'd greatly appreciate any contribution
you make. :)
Thanks
Thank you to BrowserStack for providing the infrastructure that allows us to test material-ui
in real browsers.
License
This project is licensed under the terms of the
MIT license