import { HStack, Input, Button, Menu, MenuButton, MenuList, Stack, MenuItem, } from '@chakra-ui/react' import { ChevronLeftIcon } from '@/components/icons' import { WorkspaceInvitation, WorkspaceRole } from '@typebot.io/prisma' import { FormEvent, useState } from 'react' import { Member } from '../types' import { sendInvitationQuery } from '../queries/sendInvitationQuery' import { useTranslate } from '@tolgee/react' type Props = { workspaceId: string onNewMember: (member: Member) => void onNewInvitation: (invitation: WorkspaceInvitation) => void isLoading: boolean isLocked: boolean } export const AddMemberForm = ({ workspaceId, onNewMember, onNewInvitation, isLoading, isLocked, }: Props) => { const { t } = useTranslate() const [invitationEmail, setInvitationEmail] = useState('') const [invitationRole, setInvitationRole] = useState( WorkspaceRole.MEMBER ) const [isSendingInvitation, setIsSendingInvitation] = useState(false) const handleInvitationSubmit = async (e: FormEvent) => { e.preventDefault() setIsSendingInvitation(true) const { data } = await sendInvitationQuery({ email: invitationEmail, type: invitationRole, workspaceId, }) if (data?.member) onNewMember(data.member) if (data?.invitation) onNewInvitation(data.invitation) setInvitationEmail('') setIsSendingInvitation(false) } return ( setInvitationEmail(e.target.value)} rounded="md" isDisabled={isLocked} /> {!isLocked && ( )} ) } const WorkspaceRoleMenuButton = ({ role, onChange, }: { role: WorkspaceRole onChange: (role: WorkspaceRole) => void }) => { return ( } > {convertWorkspaceRoleToReadable(role)} onChange(WorkspaceRole.ADMIN)}> {convertWorkspaceRoleToReadable(WorkspaceRole.ADMIN)} onChange(WorkspaceRole.MEMBER)}> {convertWorkspaceRoleToReadable(WorkspaceRole.MEMBER)} ) } export const convertWorkspaceRoleToReadable = (role: WorkspaceRole): string => { switch (role) { case WorkspaceRole.ADMIN: return 'Admin' case WorkspaceRole.MEMBER: return 'Member' case WorkspaceRole.GUEST: return 'Guest' } }