@axeptio/design-system
Version:
Design System for Axeptio
58 lines (50 loc) • 1.25 kB
JSX
import React from 'react';
import styled from 'styled-components';
import PropTypes from 'prop-types';
import { MenuProvider } from '../_contexts/menuContext';
import AppHeader from './AppHeader';
import AppSidebar from './AppSidebar';
const Root = styled.div`
display: flex;
align-items: flex-start;
padding-top: 90px;
`;
const Main = styled.div`
margin-left: auto;
margin-right: auto;
width: 100%;
padding: 20px 30px 90px;
max-width: ${props => props.theme.container.xxxlarge}px;
@media (min-width: ${props => props.theme.breakpoints.large}px) {
flex: 1;
width: auto;
padding: 20px 60px 90px;
}
`;
const SideMenu = styled.div`
display: none;
@media (min-width: ${props => props.theme.breakpoints.xlarge}px) {
display: block;
position: sticky;
top: 90px;
width: 240px;
flex-shrink: 0;
padding: 20px;
}
`;
export default function AppLayout({ children, quickNav }) {
return (
<Root>
<MenuProvider>
<AppHeader />
<AppSidebar />
</MenuProvider>
<Main>{children}</Main>
{quickNav ? <SideMenu>{quickNav}</SideMenu> : null}
</Root>
);
}
AppLayout.propTypes = {
children: PropTypes.node.isRequired,
quickNav: PropTypes.node
};