Skip to content

React components to create a Holy Grail Layout, with styled-components and styled-system

Notifications You must be signed in to change notification settings

rudin/react-holy-grail-layout

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Apr 16, 2018
60ca2eb · Apr 16, 2018

History

10 Commits
Apr 12, 2018
Apr 13, 2018
Apr 12, 2018
Apr 12, 2018
Apr 13, 2018
Apr 12, 2018
Apr 16, 2018
Apr 16, 2018

Repository files navigation

React components to create a Holy Grail Layout, with styled-components and styled-system

Installation

yarn add react-holy-grail-layout

Example

import React from 'react'
import {
  Container,
  Header,
  Body,
  Content,
  Aside,
  Footer
} from 'react-holy-grail-layout'
export default () => (
  <Container>
    <Header bg="lightgreen" p={2}>
      Header
    </Header>
    <Body>
      <Content bg="lightblue" p={2}>
        Content
      </Content>
      <Aside bg="pink" left primary p={2}>
        Left
      </Aside>
      <Aside bg="orange" right p={2}>
        Right
      </Aside>
    </Body>
    <Footer bg="yellow" p={2}>
      Footer
    </Footer>
  </Container>
)

You can use the styled-components theme provider to configure breakpoints and space.

import React from 'react'
import { ThemeProvider } from 'styled-components'
import {
  Container,
  Header,
  Body,
  Content,
  Aside,
  Footer
} from 'react-holy-grail-layout'
export default () => (
  <ThemeProvider
    theme={{
      breakpoints: ['50em', '70em', '90em'],
      space: [0, 14, 28, 64, 132]
    }}
  >
    <Container>
      <Header bg="lightgreen" p={2}>
        Header
      </Header>
      <Body>
        <Content bg="lightblue" p={2}>
          Content
        </Content>
        <Aside bg="pink" left primary p={2}>
          Left
        </Aside>
        <Aside bg="orange" right p={2}>
          Right
        </Aside>
      </Body>
      <Footer bg="yellow" p={2}>
        Footer
      </Footer>
    </Container>
  </ThemeProvider>
)

Use this pattern if you want to extend the styling of the Layout components:

import * as Layout from 'react-holy-grail-layout'

const Container = Layout.Container.extend`
  max-width: 1280px;
`

const Header = Layout.Header.extend`
  border-radius: 24px;
`

I love this pattern:

const Header = Layout.Header.extend.attrs({ p: 2, bg: 'lightgreen' })``

Cheers!

About

React components to create a Holy Grail Layout, with styled-components and styled-system

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published