/* eslint-disable */
// @ts-nocheck
import {
Avatar,
AvatarProps,
DropdownItem,
Masthead,
MastheadBrand,
MastheadBrandProps,
MastheadContent,
MastheadMainProps,
MastheadToggle,
PageToggleButton,
Toolbar,
ToolbarContent,
ToolbarItem,
} from "../../@patternfly/react-core";
import { BarsIcon } from "../../@patternfly/react-icons";
import { TFunction } from "i18next";
import type { Keycloak, KeycloakTokenParsed } from "oidc-spa/keycloak-js";
import { ReactNode } from "react";
import { useTranslation } from "react-i18next";
import { DefaultAvatar } from "./DefaultAvatar";
import { KeycloakDropdown } from "./KeycloakDropdown";
function loggedInUserName(
token: KeycloakTokenParsed | undefined,
t: TFunction,
) {
if (!token) {
return t("unknownUser");
}
const givenName = token.given_name;
const familyName = token.family_name;
const preferredUsername = token.preferred_username;
if (givenName && familyName) {
return t("fullName", { givenName, familyName });
}
return givenName || familyName || preferredUsername || t("unknownUser");
}
type BrandLogo = MastheadBrandProps;
type KeycloakMastheadProps = MastheadMainProps & {
keycloak: Keycloak;
brand: BrandLogo;
avatar?: AvatarProps;
features?: {
hasLogout?: boolean;
hasManageAccount?: boolean;
hasUsername?: boolean;
};
kebabDropdownItems?: ReactNode[];
dropdownItems?: ReactNode[];
toolbarItems?: ReactNode[];
toolbar?: ReactNode;
};
const KeycloakMasthead = ({
keycloak,
brand: { src, alt, className, ...brandProps },
avatar,
features: {
hasLogout = true,
hasManageAccount = true,
hasUsername = true,
} = {},
kebabDropdownItems,
dropdownItems = [],
toolbarItems,
toolbar,
...rest
}: KeycloakMastheadProps) => {
const { t } = useTranslation();
const extraItems = [];
if (hasManageAccount) {
extraItems.push(
keycloak.accountManagement()}
>
{t("manageAccount")}
,
);
}
if (hasLogout) {
extraItems.push(
keycloak.logout()}>
{t("signOut")}
,
);
}
const picture = keycloak.idTokenParsed?.picture;
return (
{toolbar}
{toolbarItems?.map((item, index) => (
{item}
))}
{picture || avatar?.src ? (
) : (
)}
);
};
export default KeycloakMasthead;