header.js 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. import logo from '../images/musicico.png';
  2. import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
  3. import {faArrowRightFromBracket, faCompactDisc, faUserEdit} from '@fortawesome/free-solid-svg-icons'
  4. import {connect} from 'react-redux';
  5. import { actionAuthLogout } from '../store/authReducer';
  6. import React from 'react';
  7. import {Link} from 'react-router-dom';
  8. import {Container, Nav, Navbar, NavDropdown, ContainerProps, Image} from "react-bootstrap";
  9. import image from "../images/card.png";
  10. import {store} from "../store/store";
  11. export const Header = ({children}) =>
  12. <header id="header">
  13. <Navbar collapseOnSelect expand="lg" bg="dark" variant="dark" className="border-bottom">
  14. <Container>
  15. <Navbar.Brand className="">
  16. <Link to={'/allplaylists'} className="text-decoration-none text-white d-flex align-items-center">
  17. <img className='logo' src={"https://cdn0.iconfinder.com/data/icons/internet-2020/1080/Applemusicandroid-512.png"} alt='logo'/>
  18. Music
  19. </Link>
  20. </Navbar.Brand>
  21. <Navbar.Toggle aria-controls="responsive-navbar-nav" />
  22. <Navbar.Collapse id="responsive-navbar-nav">
  23. <Nav className="me-auto">
  24. <Link to={'/user'} className="nav-link">Home</Link>
  25. <Link to={'/allplaylists'} className="nav-link">Playlists</Link>
  26. <Link to={'/search'} className="nav-link">Search</Link>
  27. {/*<Nav.Link href="/allplaylists">Albums</Nav.Link>*/}
  28. {/*<Nav.Link href="/allplaylists">Artists</Nav.Link>*/}
  29. </Nav>
  30. <Nav className="d-flex align-items-center">
  31. {/*<Link to={"/user"} className="nav-link me-2">{store.getState().auth.user?.name}</Link>*/}
  32. <NavDropdown className="me-2" title={store.getState().auth.user?.name} id="collasible-nav-dropdown">
  33. <NavDropdown.Item className="px-0">
  34. <Link to={'/user'}><FontAwesomeIcon icon={faCompactDisc} className="me-2"/>My playlists</Link>
  35. </NavDropdown.Item>
  36. <NavDropdown.Item className="px-0">
  37. <Link to={'/editprofile'}><FontAwesomeIcon icon={faUserEdit} className="me-2"/>Edit profile</Link>
  38. </NavDropdown.Item>
  39. <NavDropdown.Item className="px-0">
  40. <CLogout/>
  41. </NavDropdown.Item>
  42. </NavDropdown>
  43. <Link to={"/user"}>
  44. <Image className="nav-avatar rounded-circle" src={store.getState().auth.user?.avatar}></Image>
  45. </Link>
  46. </Nav>
  47. </Navbar.Collapse>
  48. </Container>
  49. </Navbar>
  50. {children}
  51. </header>
  52. const ImgLogout = () => {
  53. return <><FontAwesomeIcon icon={faArrowRightFromBracket} className="me-2"/>Logout</>
  54. }
  55. const CLogout = connect(state => ({children: <ImgLogout/>}),
  56. {onClick: actionAuthLogout})('a')