import { DueInvoiceBanner, type DueInvoiceBannerProps, } from "@calcom/web/modules/ee/billing/components/DueInvoiceBanner"; import ImpersonatingBanner, { type ImpersonatingBannerProps, } from "@calcom/web/modules/ee/impersonation/components/ImpersonatingBanner"; import { OrgUpgradeBanner, type OrgUpgradeBannerProps, } from "@calcom/web/modules/ee/organizations/components/OrgUpgradeBanner"; import { TeamsUpgradeBanner, type TeamsUpgradeBannerProps, } from "@calcom/web/modules/ee/teams/components/TeamsUpgradeBanner"; import AdminPasswordBanner, { type AdminPasswordBannerProps, } from "@calcom/web/modules/users/components/AdminPasswordBanner"; import CalendarCredentialBanner, { type CalendarCredentialBannerProps, } from "@calcom/web/modules/users/components/CalendarCredentialBanner"; import { InvalidAppCredentialBanners, type InvalidAppCredentialBannersProps, } from "@calcom/web/modules/users/components/InvalidAppCredentialsBanner"; import VerifyEmailBanner, { type VerifyEmailBannerProps, } from "@calcom/web/modules/users/components/VerifyEmailBanner"; type BannerTypeProps = { teamUpgradeBanner: TeamsUpgradeBannerProps; orgUpgradeBanner: OrgUpgradeBannerProps; verifyEmailBanner: VerifyEmailBannerProps; adminPasswordBanner: AdminPasswordBannerProps; impersonationBanner: ImpersonatingBannerProps; calendarCredentialBanner: CalendarCredentialBannerProps; invalidAppCredentialBanners: InvalidAppCredentialBannersProps; dueInvoiceBanner: DueInvoiceBannerProps; }; type BannerType = keyof BannerTypeProps; type BannerComponent = { [Key in BannerType]: (props: BannerTypeProps[Key]) => JSX.Element; }; export type AllBannerProps = { [Key in BannerType]: BannerTypeProps[Key]["data"] }; export const BannerComponent: BannerComponent = { teamUpgradeBanner: (props: TeamsUpgradeBannerProps) => , orgUpgradeBanner: (props: OrgUpgradeBannerProps) => , verifyEmailBanner: (props: VerifyEmailBannerProps) => , adminPasswordBanner: (props: AdminPasswordBannerProps) => , impersonationBanner: (props: ImpersonatingBannerProps) => , calendarCredentialBanner: (props: CalendarCredentialBannerProps) => , invalidAppCredentialBanners: (props: InvalidAppCredentialBannersProps) => ( ), dueInvoiceBanner: (props: DueInvoiceBannerProps) => , }; interface BannerContainerProps { banners: AllBannerProps; } export const BannerContainer: React.FC = ({ banners }) => { return (
{Object.keys(banners).map((key) => { if (key === "teamUpgradeBanner") { const Banner = BannerComponent[key]; return ; } else if (key === "orgUpgradeBanner") { const Banner = BannerComponent[key]; return ; } else if (key === "verifyEmailBanner") { const Banner = BannerComponent[key]; return ; } else if (key === "adminPasswordBanner") { const Banner = BannerComponent[key]; return ; } else if (key === "impersonationBanner") { const Banner = BannerComponent[key]; return ; } else if (key === "calendarCredentialBanner") { const Banner = BannerComponent[key]; return ; } else if (key === "invalidAppCredentialBanners") { const Banner = BannerComponent[key]; return ; } else if (key === "dueInvoiceBanner") { const Banner = BannerComponent[key]; return ; } })}
); };