mui-layout

Jump start Material-UI project with out tears

  • 所有者: siriwatknp/mui-layout
  • 平台:
  • 許可證:
  • 分類:
  • 主題:
  • 喜歡:
    0
      比較:

Github星跟蹤圖

This project is moved to mui-treasury

Material-UI Layout PRs Welcome

A set of components that allows you to build dynamic and responsive layout based on Material-UI

Prerequisites

This project based on React Material-UI, so you have to install @material-ui/core @material-ui/styles

Installation

// yarn
yarn add mui-layout @material-ui/core @material-ui/styles @material-ui/icons

// npm
npm install mui-layout @material-ui/core @material-ui/styles @material-ui/icons

Demo

see demo here Storybook Demo

Usage

// this example use icon from material-ui/icons, you can use your own!
import React from 'react';
import { ThemeProvider } from '@material-ui/styles';
import { createMuiTheme } from '@material-ui/core/styles';
import ChevronLeft from '@material-ui/icons/ChevronLeft';
import ChevronRight from '@material-ui/icons/ChevronRight';
import MenuRounded from '@material-ui/icons/MenuRounded';

import {
 Root,
 Header,
 Nav,
 Content,
 Footer,
 presets,
} from 'mui-layout';

const baseTheme = createMuiTheme(); // or use your own theme;
const config = presets.createStandardLayout();

const App = () => (
  <ThemeProvider theme={baseTheme}>
   <Root config={config}>
     <Header
       renderMenuIcon={open => (open ? <ChevronLeft /> : <MenuRounded />)}
     >
       header
     </Header>
     <Nav
       renderIcon={collapsed =>
         collapsed ? <ChevronRight /> : <ChevronLeft />
       }
     >
       nav
     </Nav>
     <Content>
       content
     </Content>
     <Footer>
       footer
     </Footer>
   </Root>
  </ThemeProvider>
)

export default App;

Built-in Features

  • Collapsible Nav

    Alt Text

  • Header Magnet

    alt text

  • Auto Collapsed

    alt text

  • Responsive Config

    const extendedConfigs2 = {
      ...defaultConfig,
    
      // navVariant is 'temporary' in mobile and tablet, 'permanent' in desktop and greater
      navVariant: {
        xs: 'temporary',
        md: 'permanent',
      },
    

Custom Styles

Mostly, you will custom Header & Nav. This is an example for Header

Explanation is in storybook

import { makeStyles } from '@material-ui/styles';

const useHeaderStyles = makeStyles(({ palette, spacing }) => ({
  header: {
    backgroundColor: palette.secondary.main,
  },
  menuBtn: {
    padding: spacing(2.5),
    borderRadius: 0,
  },
  icon: {
    color: palette.common.white,
  },
  toolbar: {
    padding: spacing(0, 1),
  },
}));

function App() {
  const {
    icon: iconCss,
    toolbar: toolbarCss,
    header: headerCss,
    menuBtn: menuBtnCss,
  } = useHeaderStyles();
  return (
    <Header
      classes={{ root: headerCss }}
      renderMenuIcon={open =>
        open ? (
          <ChevronLeft className={iconCss} />
        ) : (
          <MenuRounded classes={{ root: iconCss }} />
        )
      }
      menuButtonProps={{ className: menuBtnCss }}
      toolbarProps={{ className: toolbarCss }}
    />
  );
}

Presets

  • Standard

    Alt Text

  • Fixed

    Alt Text

  • Content Based

    Alt Text

  • Cozy

    Alt Text

How it works

  • They are basically material-ui components that are combined to make things easier.
    AppBar, Toolbar, Drawer

  • use @material-ui/styles to style components

  • use react-hooks

Contributing

Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.

Please make sure to update tests as appropriate.

License

MIT

主要指標

概覽
名稱與所有者siriwatknp/mui-layout
主編程語言JavaScript
編程語言JavaScript (語言數: 3)
平台
許可證
所有者活动
創建於2019-07-02 14:12:37
推送於2020-06-06 23:40:24
最后一次提交2019-08-04 13:35:22
發布數3
最新版本名稱v1.2.7 (發布於 )
第一版名稱v1.2.2 (發布於 )
用户参与
星數109
關注者數4
派生數19
提交數52
已啟用問題?
問題數17
打開的問題數7
拉請求數18
打開的拉請求數2
關閉的拉請求數0
项目设置
已啟用Wiki?
已存檔?
是復刻?
已鎖定?
是鏡像?
是私有?