DEV Community

Leo Kalshteyn
Leo Kalshteyn

Posted on • Updated on

Material UI Intro

A UI component library was developed by Google based on the material design guidelines of Google. It consists of many accessible and configurable UI widgets and the components are self-supporting and only inject the styles they need to display. Supported by a strong community, it is one of the most popular component libraries. The main draws are the user-friendly layout and design features that borrow from Google's experience with UI layouts. Below is a brief introduction on how to install and use it for React.

Installation

Run in your react app:

npm install @material-ui/core

Then update the index.html file by adding a Google Roboto font because material UI was designed with the Roboto font in mind.

<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,500" />

How to Use

Below are some examples utilizing Material UI components. Can also run development server npm start to see how it looks.

In App.js you can import the component from the ‘@material-ui/core/AppBar’, and pass color and position props.

import React, { Component } from 'react';
import AppBar from '@material-ui/core/AppBar';

class App extends Component {
  render() {
    return (
      <div>
        <AppBar color="primary" position="static">
          <h1>My header</h1>
        </AppBar>

      </div>
    );
  }
}
export default App;
Enter fullscreen mode Exit fullscreen mode

You can then import Typgoraphy and Toolbar to make the spacing nicer for the header.

import React, { Component } from 'react';
import AppBar from '@material-ui/core/AppBar';
import Toolbar from '@material-ui/core/Toolbar'
import TypoGraphy from '@material-ui/core/Typography'


class App extends Component {
  render() {
    return (
      <div>
        <AppBar color="primary" position="static">
          <Toolbar>
            <TypoGraphy variant="title"
              color="inherit"
            >
              My header
           </TypoGraphy>
          </Toolbar>
        </AppBar>

      </div>
    );
  }
}
export default App; 
Enter fullscreen mode Exit fullscreen mode

Make a navbar.js and import ListItem and ListItemText. Each ListItem component has a component prop value to nav so that it can get html nav elements.

import React from 'react';
import List from '@material-ui/core/List';
import ListItem from '@material-ui/core/ListItem';
import ListItemText from '@material-ui/core/ListItemText';
import TypoGraphy from '@material-ui/core/Typography'


function NavBar(props) {

    return (
        <List component="nav">
            <ListItem component="div">
                <ListItemText inset>
                    <TypoGraphy color="inherit" variant="title">
                        Home
               </TypoGraphy>
                </ListItemText>


                <ListItemText inset>
                    <TypoGraphy color="inherit" variant="title">
                        Posts
               </TypoGraphy>
                </ListItemText>


                <ListItemText inset>
                    <TypoGraphy color="inherit" variant="title">
                        Contact
               </TypoGraphy>
                </ListItemText>
            </ListItem >

        </List>
    )
}


export default NavBar;
Enter fullscreen mode Exit fullscreen mode

Material UI also has SVG icons for use in the components. Install with: npm install @material-ui/icons

In navbar.jsL:

import React from 'react';
import List from '@material-ui/core/List';
import ListItem from '@material-ui/core/ListItem';
import ListItemText from '@material-ui/core/ListItemText';
import TypoGraphy from '@material-ui/core/Typography'
import ListItemIcon from '@material-ui/core/ListItemIcon'
import { Home, Book, AccountBox } from '@material-ui/icons'

function NavBar(props) {

    return (
        <List component="nav">
            <ListItem component="div" >

                <ListItemText inset>
                    <TypoGraphy color="inherit" variant="title">
                        Home  <Home />
                    </TypoGraphy>
                </ListItemText>


                <ListItemText inset>
                    <TypoGraphy color="inherit" variant="title">
                        Posts <Book />
                    </TypoGraphy>
                </ListItemText>

                <ListItemText inset>
                    <TypoGraphy color="inherit" variant="title">
                        Contact <AccountBox />
                    </TypoGraphy>
                </ListItemText>
            </ListItem >

        </List>
    )
}


export default NavBar;
Enter fullscreen mode Exit fullscreen mode

This is just a glimpse of the Material UI and what you can do with it. You can make grid layouts, form control, and inputs, etc. Check out more on the official site.

References

Discussion (0)