chat-toggle-button.tsx 993 B

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