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 = { verifyEmailBanner: VerifyEmailBannerProps; adminPasswordBanner: AdminPasswordBannerProps; calendarCredentialBanner: CalendarCredentialBannerProps; invalidAppCredentialBanners: InvalidAppCredentialBannersProps; }; 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 = { verifyEmailBanner: (props: VerifyEmailBannerProps) => , adminPasswordBanner: (props: AdminPasswordBannerProps) => , calendarCredentialBanner: (props: CalendarCredentialBannerProps) => , invalidAppCredentialBanners: (props: InvalidAppCredentialBannersProps) => ( ), }; interface BannerContainerProps { banners: AllBannerProps; } export const BannerContainer: React.FC = ({ banners }) => { return (
{Object.keys(banners).map((key) => { if (key === "verifyEmailBanner") { const Banner = BannerComponent[key]; return ; } else if (key === "adminPasswordBanner") { const Banner = BannerComponent[key]; return ; } else if (key === "calendarCredentialBanner") { const Banner = BannerComponent[key]; return ; } else if (key === "invalidAppCredentialBanners") { const Banner = BannerComponent[key]; return ; } })}
); };