import { HiEllipsisHorizontal, HiOutlinePlusSmall } from "react-icons/hi2"; import { twMerge } from "tailwind-merge"; import Avatar from "~/components/Avatar"; import Button from "~/components/Button"; import Dropdown from "~/components/Dropdown"; import Modal from "~/components/modal"; import { NewWorkspaceForm } from "~/components/NewWorkspaceForm"; import { PageHead } from "~/components/PageHead"; import { useModal } from "~/providers/modal"; import { useWorkspace } from "~/providers/workspace"; import { api } from "~/utils/api"; import { getAvatarUrl } from "~/utils/helpers"; import { DeleteMemberConfirmation } from "./components/DeleteMemberConfirmation"; import { InviteMemberForm } from "./components/InviteMemberForm"; export default function MembersPage() { const { modalContentType, openModal } = useModal(); const { workspace } = useWorkspace(); const { data, isLoading } = api.workspace.byId.useQuery( { workspacePublicId: workspace.publicId }, // { enabled: workspace?.publicId ? true : false }, ); const TableRow = ({ memberPublicId, memberName, memberEmail, memberImage, memberRole, memberStatus, isLastRow, showSkeleton, }: { memberPublicId?: string; memberName?: string | null | undefined; memberEmail?: string | null | undefined; memberImage?: string | null | undefined; memberRole?: string; memberStatus?: string; isLastRow?: boolean; showSkeleton?: boolean; }) => { return (
{showSkeleton ? (
) : ( )}

{memberName}

{memberEmail}

{memberRole && memberRole.charAt(0).toUpperCase() + memberRole.slice(1)} {memberStatus === "invited" && ( Pending )}
openModal( "REMOVE_MEMBER", memberPublicId, memberEmail ?? "", ), }, ]} >
); }; return ( <>

Members

{!isLoading && data?.members.map((member, index) => ( ))} {isLoading && ( <> )}
User Role
{modalContentType === "NEW_WORKSPACE" && } {modalContentType === "INVITE_MEMBER" && } {modalContentType === "REMOVE_MEMBER" && }
); }