import type { InviteLink, WorkspaceInviteLinkExpireTime, } from '@affine/graphql'; import { useI18n } from '@affine/i18n'; import { EmailIcon, LinkIcon } from '@blocksuite/icons/rc'; import { RadioGroup } from '../../../ui/radio'; import { EmailInvite } from './email-invite'; import { LinkInvite } from './link-invite'; import * as styles from './styles.css'; export type InviteMethodType = 'email' | 'link'; export const ModalContent = ({ inviteEmail, setInviteEmail, inviteMethod, onInviteMethodChange, handleConfirm, isMutating, isValidEmail, copyTextToClipboard, onGenerateInviteLink, onRevokeInviteLink, importCSV, invitationLink, }: { inviteEmail: string; importCSV: React.ReactNode; invitationLink: InviteLink | null; setInviteEmail: (value: string) => void; inviteMethod: InviteMethodType; onInviteMethodChange: (value: InviteMethodType) => void; handleConfirm: () => void; isMutating: boolean; isValidEmail: boolean; copyTextToClipboard: (text: string) => Promise; onGenerateInviteLink: ( expireTime: WorkspaceInviteLinkExpireTime ) => Promise; onRevokeInviteLink: () => Promise; }) => { const t = useI18n(); return (
{t['com.affine.payment.member.team.invite.description']()}
} label={t[ 'com.affine.payment.member.team.invite.email-invite' ]()} /> ), value: 'email', }, { label: ( } label={t['com.affine.payment.member.team.invite.invite-link']()} /> ), value: 'link', }, ]} /> {inviteMethod === 'email' ? ( ) : ( )}
); }; const RadioItem = ({ icon, label, }: { icon: React.ReactNode; label: string; }) => { return (
{icon}
{label}
); };