Header.tsx 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. import { Avatar, ConfigProvider, Menu, MenuProps } from 'antd';
  2. import './index.scss';
  3. import useStore from "@/store";
  4. interface HeaderProps {
  5. items: MenuProps['items'];
  6. current?: string[];
  7. onChange: (...args: any) => void;
  8. }
  9. function Header({ items, current, onChange }: HeaderProps) {
  10. const store = useStore();
  11. function onClick(...args: any[]) {
  12. onChange?.(...args);
  13. }
  14. return <div className="header">
  15. <div className="header-icons">
  16. <div>
  17. Logo
  18. </div>
  19. <div>
  20. /name
  21. </div>
  22. </div>
  23. <div className="header-menu">
  24. <ConfigProvider
  25. theme={{
  26. components: {
  27. Menu: {
  28. horizontalItemSelectedColor: '#597d3b',
  29. algorithm : true,
  30. },
  31. },
  32. }}
  33. >
  34. <Menu onClick={onClick} selectedKeys={current} mode="horizontal" items={items}/>
  35. </ConfigProvider>
  36. </div>
  37. {
  38. store.token !== '' ?
  39. <div className="header-userName">
  40. {
  41. store.user.userAvatar ?
  42. <Avatar size={32} src={store.user.userAvatar} /> :
  43. <Avatar size={32}>
  44. user
  45. </Avatar>
  46. }
  47. <div className="nickName">
  48. {store.user.name}
  49. </div>
  50. </div> :
  51. <div className="header-userName">
  52. <Avatar size={32}>
  53. user
  54. </Avatar>
  55. <div className="nickName">
  56. user
  57. </div>
  58. </div>
  59. }
  60. </div>;
  61. }
  62. export default Header;