getBadge.tsx 2.0 KB

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