Files
zitadel/apps/login/ui/UserAvatar.tsx

58 lines
1.5 KiB
TypeScript
Raw Normal View History

2023-05-19 13:02:09 +02:00
import { Avatar } from "#/ui/Avatar";
import { ChevronDownIcon } from "@heroicons/react/24/outline";
import Link from "next/link";
2023-04-19 10:37:35 +02:00
type Props = {
2023-06-21 14:11:04 +02:00
loginName?: string;
2023-05-17 15:25:25 +02:00
displayName?: string;
showDropdown: boolean;
2024-05-03 10:09:18 +02:00
searchParams?: Record<string | number | symbol, string | undefined>;
2023-04-19 10:37:35 +02:00
};
2023-05-17 15:25:25 +02:00
export default function UserAvatar({
loginName,
displayName,
showDropdown,
2024-05-03 10:09:18 +02:00
searchParams,
2023-05-17 15:25:25 +02:00
}: Props) {
2024-05-03 10:09:18 +02:00
const params = new URLSearchParams({});
if (searchParams?.sessionId) {
params.set("sessionId", searchParams.sessionId);
}
if (searchParams?.organization) {
params.set("organization", searchParams.organization);
}
if (searchParams?.authRequestId) {
params.set("authRequestId", searchParams.authRequestId);
}
if (searchParams?.loginName) {
params.set("loginName", searchParams.loginName);
}
2023-04-19 10:37:35 +02:00
return (
2023-06-15 13:58:32 +02:00
<div className="flex h-full flex-row items-center rounded-full border p-[1px] dark:border-white/20">
<div>
<Avatar
2023-05-19 13:02:09 +02:00
size="small"
2023-06-29 13:10:28 +02:00
name={displayName ?? loginName ?? ""}
loginName={loginName ?? ""}
/>
</div>
<span className="ml-4 text-14px">{loginName}</span>
<span className="flex-grow"></span>
{showDropdown && (
<Link
2024-05-03 10:09:18 +02:00
href={"/accounts?" + params}
2023-06-15 13:58:32 +02:00
className="ml-4 flex items-center justify-center p-1 hover:bg-black/10 dark:hover:bg-white/10 rounded-full mr-1 transition-all"
>
<ChevronDownIcon className="h-4 w-4" />
</Link>
)}
2023-04-19 10:37:35 +02:00
</div>
);
}