import { NavLink } from 'react-router-dom' import classNames from 'classnames/bind' import Button from './button' import Icon from './icon' import Text from './text' const cx = classNames.bind(_s) export default class SidebarSectionItem extends PureComponent { static propTypes = { to: PropTypes.string, active: PropTypes.bool, icon: PropTypes.string, image: PropTypes.string, title: PropTypes.string, me: PropTypes.bool, suffix: PropTypes.node, } state = { hovering: false, } handleOnMouseEnter = () => { this.setState({ hovering: true }) } handleOnMouseLeave = () => { this.setState({ hovering: false }) } render() { const { to, active, icon, image, title, me, count } = this.props const { hovering } = this.state const iconSize = '16px' const shouldShowActive = hovering || active const isNotifications = to === '/notifications' const containerClasses = cx({ default: 1, maxWidth100PC: 1, width100PC: 1, flexRow: 1, py5: 1, px10: 1, alignItemsCenter: 1, radiusSmall: 1, // border1PX: shouldShowActive, // borderColorSecondary: shouldShowActive, backgroundSubtle2: shouldShowActive, }) const textClasses = cx({ default: 1, fontWeightNormal: 1, fontSize15PX: 1, text: 1, textOverflowEllipsis: 1, colorPrimary: shouldShowActive || me, colorSecondary: !hovering && !active && !me, }) const iconClasses = cx({ fillColorBlack: shouldShowActive, fillcolorSecondary: !hovering && !active, }) const countClasses = cx({ default: 1, text: 1, marginLeftAuto: 1, fontSize12PX: 1, px5: 1, mr2: 1, lineHeight15: 1, ml5: 1, colorSecondary: !isNotifications, colorWhite: isNotifications, backgroundColorBrand: isNotifications, radiusSmall: isNotifications, }) return ( this.handleOnMouseEnter()} onMouseLeave={() => this.handleOnMouseLeave()} className={[_s.default, _s.noUnderline, _s.cursorPointer, _s.width100PC, _s.alignItemsStart].join(' ')} >
{ icon && } { image && }
{title}
{ count > 0 && {count} }
) } }