"use client"; import { useTranslations } from "next-intl"; import { AttributeElement } from "../../../../components/contents"; import { EditableAvatar } from "../../../../components/EditableAvatar"; import { getInitials } from "../../../../utils/getInitials"; import { Modules } from "../../../../core"; import { usePageUrlGenerator } from "../../../../hooks"; import { Badge, Link } from "../../../../shadcnui"; import { RoleInterface } from "../../../role"; import { UserInterface } from "../../data"; import { UserService } from "../../data/user.service"; import { useCurrentUserContext, useUserContext } from "../../contexts"; import { BriefcaseIcon, MailIcon, PhoneIcon } from "lucide-react"; type UserContentProps = { user: UserInterface; }; export function UserContent({ user }: UserContentProps) { const t = useTranslations(); const generateUrl = usePageUrlGenerator(); const { setUser } = useUserContext(); const { company } = useCurrentUserContext(); const hasBio = !!user.bio; return (
{/* Hero Section */}
{ const updated = await UserService.patchAvatar({ id: user.id, avatar: imageKey }); setUser(updated); }} companyId={company?.id ?? ""} className="h-24 w-24" fallbackClassName="text-2xl" />
{user.roles && user.roles.length > 0 && (
{user.roles.map((role: RoleInterface) => ( {t(`role.roles`, { role: role.id.replaceAll(`-`, ``) })} ))}
)} {user.isDeleted ? (
{t(`user.errors.deleted`)}
) : ( <> {!user.isActivated && (
{t(`user.errors.inactive`)}
)} )} {user.title && (
{user.title}
)} {user.email && (
{user.email}
)} {user.phone && (
{user.phone}
)}
{/* Bio Section */} {hasBio && }
); }