import { Menu, Text, UnstyledButton, Group } from "@mantine/core"; import { IconChevronDown, IconCheck } from "@tabler/icons-react"; import { useTranslation } from "react-i18next"; import { useAtomValue } from "jotai"; import { CustomAvatar } from "@/components/ui/custom-avatar"; import { AutoTooltipText } from "@/components/ui/auto-tooltip-text"; import { IconGroupCircle } from "@/components/icons/icon-people-circle"; import { userAtom } from "@/features/user/atoms/current-user-atom"; import { formatMemberCount } from "@/lib"; import { IPagePermissionMember, PagePermissionRole, } from "@/ee/page-permission/types/page-permission.types"; import { pagePermissionRoleData, getPagePermissionRoleLabel, } from "@/ee/page-permission/types/page-permission-role-data"; import classes from "./page-permission.module.css"; type PagePermissionItemProps = { member: IPagePermissionMember; onRoleChange: (memberId: string, type: "user" | "group", role: string) => void; onRemove: (memberId: string, type: "user" | "group") => void; disabled?: boolean; }; export function PagePermissionItem({ member, onRoleChange, onRemove, disabled, }: PagePermissionItemProps) { const { t } = useTranslation(); const currentUser = useAtomValue(userAtom); const isCurrentUser = member.type === "user" && member.id === currentUser?.id; const roleLabel = getPagePermissionRoleLabel(member.role); return (
{member.type === "user" && ( )} {member.type === "group" && }
{member.name} {isCurrentUser && ({t("You")})} {member.type === "user" ? member.email : formatMemberCount(member.memberCount, t)}
{isCurrentUser || disabled ? ( {t(roleLabel)} ) : ( {t(roleLabel)} {pagePermissionRoleData.map((role) => ( onRoleChange(member.id, member.type, role.value)} rightSection={ role.value === member.role ? : null } >
{t(role.label)} {t(role.description)}
))} onRemove(member.id, member.type)} > {t("Remove access")}
)}
); }