getBadge.tsx 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. import type {BaseBadgeProps} from './baseBadge';
  2. import MemberBadge, {type MemberBadgeProps} from './memberBadge';
  3. import OrganizationBadge, {type OrganizationBadgeProps} from './organizationBadge';
  4. import ProjectBadge, {type ProjectBadgeProps} from './projectBadge';
  5. import {TeamBadge, type TeamBadgeProps} from './teamBadge';
  6. import UserBadge, {type UserBadgeProps} from './userBadge';
  7. interface AddedBaseBadgeProps {
  8. displayName?: React.ReactNode;
  9. }
  10. interface GetOrganizationBadgeProps
  11. extends AddedBaseBadgeProps,
  12. Omit<BaseBadgeProps, 'displayName' | 'organization'>,
  13. OrganizationBadgeProps {}
  14. interface GetMemberBadgeProps
  15. extends Omit<BaseBadgeProps, 'displayName' | 'member'>,
  16. AddedBaseBadgeProps,
  17. MemberBadgeProps {}
  18. interface GetUserBadgeProps
  19. extends Omit<BaseBadgeProps, 'displayName' | 'user'>,
  20. UserBadgeProps,
  21. AddedBaseBadgeProps {}
  22. interface GetTeamBadgeProps
  23. extends Omit<BaseBadgeProps, 'displayName' | 'team'>,
  24. TeamBadgeProps,
  25. AddedBaseBadgeProps {}
  26. interface GetProjectBadgeProps
  27. extends Omit<BaseBadgeProps, 'displayName' | 'project'>,
  28. ProjectBadgeProps,
  29. AddedBaseBadgeProps {}
  30. export type GetBadgeProps =
  31. | GetOrganizationBadgeProps
  32. | GetTeamBadgeProps
  33. | GetProjectBadgeProps
  34. | GetUserBadgeProps
  35. | GetMemberBadgeProps;
  36. function getBadge(props): React.ReactElement | null {
  37. if (props.organization) {
  38. return <OrganizationBadge {...props} />;
  39. }
  40. if (props.team) {
  41. return <TeamBadge {...props} />;
  42. }
  43. if (props.project) {
  44. return <ProjectBadge {...props} />;
  45. }
  46. if (props.user) {
  47. return <UserBadge {...props} />;
  48. }
  49. if (props.member) {
  50. return <MemberBadge {...props} />;
  51. }
  52. return null;
  53. }
  54. export default getBadge;