index.tsx 1.0 KB

123456789101112131415161718192021222324252627282930313233343536
  1. import React from 'react';
  2. import OrganizationAvatar from 'app/components/avatar/organizationAvatar';
  3. import ProjectAvatar from 'app/components/avatar/projectAvatar';
  4. import TeamAvatar from 'app/components/avatar/teamAvatar';
  5. import UserAvatar from 'app/components/avatar/userAvatar';
  6. import {AvatarProject, OrganizationSummary, Team} from 'app/types';
  7. type Props = {
  8. team?: Team;
  9. organization?: OrganizationSummary;
  10. project?: AvatarProject;
  11. } & UserAvatar['props'];
  12. const Avatar = React.forwardRef(function Avatar(
  13. {hasTooltip = false, user, team, project, organization, ...props}: Props,
  14. ref: React.Ref<HTMLSpanElement>
  15. ) {
  16. const commonProps = {hasTooltip, forwardedRef: ref, ...props};
  17. if (user) {
  18. return <UserAvatar user={user} {...commonProps} />;
  19. }
  20. if (team) {
  21. return <TeamAvatar team={team} {...commonProps} />;
  22. }
  23. if (project) {
  24. return <ProjectAvatar project={project} {...commonProps} />;
  25. }
  26. return <OrganizationAvatar organization={organization} {...commonProps} />;
  27. });
  28. export default Avatar;