chat-toggle-button.jsx 1.1 KB

1234567891011121314151617181920212223242526272829303132333435
  1. import PropTypes from 'prop-types'
  2. import classNames from 'classnames'
  3. import { useTranslation } from 'react-i18next'
  4. import MaterialIcon from '@/shared/components/material-icon'
  5. import OLBadge from '@/features/ui/components/ol/ol-badge'
  6. function ChatToggleButton({ chatIsOpen, unreadMessageCount, onClick }) {
  7. const { t } = useTranslation()
  8. const classes = classNames('btn', 'btn-full-height', { active: chatIsOpen })
  9. const hasUnreadMessages = unreadMessageCount > 0
  10. return (
  11. <div className="toolbar-item">
  12. <button type="button" className={classes} onClick={onClick}>
  13. <MaterialIcon
  14. type="chat"
  15. className={classNames('align-middle', {
  16. bounce: hasUnreadMessages,
  17. })}
  18. />
  19. {hasUnreadMessages && <OLBadge bg="info">{unreadMessageCount}</OLBadge>}
  20. <p className="toolbar-label">{t('chat')}</p>
  21. </button>
  22. </div>
  23. )
  24. }
  25. ChatToggleButton.propTypes = {
  26. chatIsOpen: PropTypes.bool,
  27. unreadMessageCount: PropTypes.number.isRequired,
  28. onClick: PropTypes.func.isRequired,
  29. }
  30. export default ChatToggleButton