import Link from "next/link"; import { t } from "@lingui/core/macro"; import { env } from "next-runtime-env"; import { HiBolt, HiEllipsisHorizontal, HiOutlinePlusSmall, } from "react-icons/hi2"; import { twMerge } from "tailwind-merge"; import type { Subscription } from "@kan/shared/utils"; import { authClient } from "@kan/auth/client"; import { getSubscriptionByPlan, hasUnlimitedSeats } from "@kan/shared/utils"; import Avatar from "~/components/Avatar"; import Button from "~/components/Button"; import Dropdown from "~/components/Dropdown"; import FeedbackModal from "~/components/FeedbackModal"; 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, isOpen } = useModal(); const { workspace } = useWorkspace(); const { data, isLoading } = api.workspace.byId.useQuery( { workspacePublicId: workspace.publicId }, // { enabled: workspace?.publicId ? true : false }, ); const { data: session } = authClient.useSession(); const subscriptions = data?.subscriptions as Subscription[] | undefined; const teamSubscription = getSubscriptionByPlan(subscriptions, "team"); const proSubscription = getSubscriptionByPlan(subscriptions, "pro"); const unlimitedSeats = hasUnlimitedSeats(subscriptions); const TableRow = ({ memberPublicId, memberId, memberName, memberEmail, memberImage, memberRole, memberStatus, isLastRow, showSkeleton, }: { memberPublicId?: string; memberId?: string | null | undefined; memberName?: string | null | undefined; memberEmail?: string | null | undefined; memberImage?: string | null | undefined; memberRole?: string; memberStatus?: string; isLastRow?: boolean; showSkeleton?: boolean; }) => { return (
{memberName}
{memberEmail}
| {t`User`} | {t`Role`} |
|---|