Files
calendar/packages/features/shell/banners/LayoutBanner.tsx
T
4553455098 chore: refactor shell to individual files (#16893)
* banners

* useAuthHooks

* fixes to redirect and banner

* extract useIntercom to custom hook

* use app theme

* extract user-dropdown to new component

* Navigation Item

* navigation and profile dropdown

* Fix import

* navigation and sidebar

* fix type errors

* fix banners being an async call

* fix types

* fix banner prop type

* fix mobile nav item import

* fix banner types

* (revert) layout banner render method to fix type error

---------

Co-authored-by: Alex van Andel <me@alexvanandel.com>
Co-authored-by: Keith Williams <keithwillcode@gmail.com>
Co-authored-by: Joe Au-Yeung <65426560+joeauyeung@users.noreply.github.com>
2024-10-02 15:35:56 +01:00

87 lines
3.6 KiB
TypeScript

import ImpersonatingBanner, {
type ImpersonatingBannerProps,
} from "@calcom/features/ee/impersonation/components/ImpersonatingBanner";
import {
OrgUpgradeBanner,
type OrgUpgradeBannerProps,
} from "@calcom/features/ee/organizations/components/OrgUpgradeBanner";
import { TeamsUpgradeBanner, type TeamsUpgradeBannerProps } from "@calcom/features/ee/teams/components";
import AdminPasswordBanner, {
type AdminPasswordBannerProps,
} from "@calcom/features/users/components/AdminPasswordBanner";
import CalendarCredentialBanner, {
type CalendarCredentialBannerProps,
} from "@calcom/features/users/components/CalendarCredentialBanner";
import {
InvalidAppCredentialBanners,
type InvalidAppCredentialBannersProps,
} from "@calcom/features/users/components/InvalidAppCredentialsBanner";
import VerifyEmailBanner, {
type VerifyEmailBannerProps,
} from "@calcom/features/users/components/VerifyEmailBanner";
type BannerTypeProps = {
teamUpgradeBanner: TeamsUpgradeBannerProps;
orgUpgradeBanner: OrgUpgradeBannerProps;
verifyEmailBanner: VerifyEmailBannerProps;
adminPasswordBanner: AdminPasswordBannerProps;
impersonationBanner: ImpersonatingBannerProps;
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 = {
teamUpgradeBanner: (props: TeamsUpgradeBannerProps) => <TeamsUpgradeBanner {...props} />,
orgUpgradeBanner: (props: OrgUpgradeBannerProps) => <OrgUpgradeBanner {...props} />,
verifyEmailBanner: (props: VerifyEmailBannerProps) => <VerifyEmailBanner {...props} />,
adminPasswordBanner: (props: AdminPasswordBannerProps) => <AdminPasswordBanner {...props} />,
impersonationBanner: (props: ImpersonatingBannerProps) => <ImpersonatingBanner {...props} />,
calendarCredentialBanner: (props: CalendarCredentialBannerProps) => <CalendarCredentialBanner {...props} />,
invalidAppCredentialBanners: (props: InvalidAppCredentialBannersProps) => (
<InvalidAppCredentialBanners {...props} />
),
};
interface BannerContainerProps {
banners: AllBannerProps;
}
export const BannerContainer: React.FC<BannerContainerProps> = ({ banners }) => {
return (
<div className="sticky top-0 z-10 w-full divide-y divide-black">
{Object.keys(banners).map((key) => {
if (key === "teamUpgradeBanner") {
const Banner = BannerComponent[key];
return <Banner data={banners[key]} key={key} />;
} else if (key === "orgUpgradeBanner") {
const Banner = BannerComponent[key];
return <Banner data={banners[key]} key={key} />;
} else if (key === "verifyEmailBanner") {
const Banner = BannerComponent[key];
return <Banner data={banners[key]} key={key} />;
} else if (key === "adminPasswordBanner") {
const Banner = BannerComponent[key];
return <Banner data={banners[key]} key={key} />;
} else if (key === "impersonationBanner") {
const Banner = BannerComponent[key];
return <Banner data={banners[key]} key={key} />;
} else if (key === "calendarCredentialBanner") {
const Banner = BannerComponent[key];
return <Banner data={banners[key]} key={key} />;
} else if (key === "invalidAppCredentialBanners") {
const Banner = BannerComponent[key];
return <Banner data={banners[key]} key={key} />;
}
})}
</div>
);
};