46 lines
1 KiB
JavaScript
46 lines
1 KiB
JavaScript
import React from 'react';
|
|
import PropTypes from 'prop-types';
|
|
import { Link } from 'react-router';
|
|
import styled from 'styled-components';
|
|
import { remSize, prop, common } from '../../theme';
|
|
import Header from './Header';
|
|
import IconButton from './IconButton';
|
|
import { ExitIcon } from '../../common/icons';
|
|
|
|
|
|
const SidebarWrapper = styled.div`
|
|
height: 100%;
|
|
width: ${remSize(180)};
|
|
|
|
position: fixed;
|
|
z-index: 2;
|
|
left: 0;
|
|
|
|
background: white;
|
|
box-shadow: 0 6px 6px 0 rgba(0,0,0,0.10);
|
|
`;
|
|
|
|
const Sidebar = ({ title, onPressClose, children }) => (
|
|
<SidebarWrapper>
|
|
{title &&
|
|
<Header slim title={title} fixed={false}>
|
|
<IconButton onClick={onPressClose} icon={ExitIcon} aria-label="Return to ide view" />
|
|
</Header>}
|
|
{children}
|
|
</SidebarWrapper>
|
|
);
|
|
|
|
Sidebar.propTypes = {
|
|
title: PropTypes.string,
|
|
onPressClose: PropTypes.func,
|
|
children: PropTypes.oneOfType([PropTypes.element, PropTypes.arrayOf(PropTypes.element)]),
|
|
};
|
|
|
|
Sidebar.defaultProps = {
|
|
title: null,
|
|
children: [],
|
|
onPressClose: () => {}
|
|
};
|
|
|
|
|
|
export default Sidebar;
|