PromucFlow_constructor/app/client/src/components/editorComponents/NavBarItem.tsx

75 lines
1.9 KiB
TypeScript
Raw Normal View History

2019-10-18 08:16:26 +00:00
import React from "react";
import styled from "styled-components";
import { NavLink } from "react-router-dom";
2019-10-18 08:16:26 +00:00
type MenuBarItemProps = {
icon: Function;
path: string;
title: string;
exact: boolean;
2019-10-18 08:16:26 +00:00
};
type Props = MenuBarItemProps;
2019-10-18 08:16:26 +00:00
const IconContainer = styled.div`
2019-10-18 08:16:26 +00:00
display: flex;
align-items: center;
justify-content: center;
padding: 5px;
2019-11-13 11:34:11 +00:00
margin-bottom: 5px;
background-color: ${props => props.theme.colors.menuButtonBGInactive};
2019-10-18 08:16:26 +00:00
border-radius: ${props => props.theme.radii[1]}px;
height: 32px;
width: 32px;
svg path {
fill: ${props => props.theme.colors.menuIconColorInactive};
2019-10-18 08:16:26 +00:00
}
`;
const ItemContainer = styled.div`
a {
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
2019-11-13 11:34:11 +00:00
height: 70px;
color: ${props => props.theme.colors.textOnDarkBG}
font-size: ${props => props.theme.fontSizes[1]}px;
cursor: pointer;
background-color: ${props => props.theme.colors.navBG};
&:hover {
background-color: ${props => props.theme.colors.paneBG};
text-decoration: none;
}
2019-11-13 11:34:11 +00:00
color: ${props => props.theme.colors.menuButtonBGInactive};
&.active {
background-color: ${props => props.theme.colors.paneBG}
2019-11-13 11:34:11 +00:00
color: ${props => props.theme.colors.textOnDarkBG};
${IconContainer} {
background-color: ${props => props.theme.colors.primary};
svg path {
fill: ${props => props.theme.colors.textOnDarkBG};
}
}
}
}
`;
2019-10-18 08:16:26 +00:00
class NavBarItem extends React.Component<Props> {
2019-10-18 08:16:26 +00:00
render(): React.ReactNode {
const { title, icon, path, exact } = this.props;
2019-10-18 08:16:26 +00:00
return (
<ItemContainer>
<NavLink exact={exact} to={path}>
<React.Fragment>
<IconContainer>{icon()}</IconContainer>
{title}
</React.Fragment>
</NavLink>
2019-10-18 08:16:26 +00:00
</ItemContainer>
);
}
}
export default NavBarItem;