Studio.tsx 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. import { Avatar, Space } from "antd";
  2. import StudioCard from "./StudioCard";
  3. export const getAvatarColor = (name?: string) => {
  4. const avatarColor = ["indianred", "blueviolet", "#87d068", "#108ee9"];
  5. if (!name) {
  6. return undefined;
  7. }
  8. let char = 0;
  9. if (name.length > 1) {
  10. char = name.length - 1;
  11. }
  12. const colorIndex = name.charCodeAt(char) % avatarColor.length;
  13. return avatarColor[colorIndex];
  14. };
  15. interface IWidget {
  16. data?: IStudio;
  17. hideAvatar?: boolean;
  18. hideName?: boolean;
  19. popOver?: React.ReactNode;
  20. onClick?: Function;
  21. }
  22. const StudioWidget = ({
  23. data,
  24. hideAvatar = false,
  25. hideName = false,
  26. popOver,
  27. onClick,
  28. }: IWidget) => {
  29. return (
  30. <StudioCard popOver={popOver} studio={data}>
  31. <Space
  32. onClick={() => {
  33. if (typeof onClick !== "undefined") {
  34. onClick(data?.studioName);
  35. }
  36. }}
  37. >
  38. {hideAvatar ? (
  39. <></>
  40. ) : (
  41. <Avatar
  42. size="small"
  43. src={data?.avatar}
  44. style={{ backgroundColor: getAvatarColor(data?.nickName) }}
  45. >
  46. {data?.nickName?.slice(0, 2)}
  47. </Avatar>
  48. )}
  49. {hideName ? "" : data?.nickName}
  50. </Space>
  51. </StudioCard>
  52. );
  53. };
  54. export default StudioWidget;