diff --git a/src/app/[orgId]/settings/access/invitations/InvitationsDataTable.tsx b/src/app/[orgId]/settings/access/invitations/InvitationsDataTable.tsx index ecce6913..57b1d746 100644 --- a/src/app/[orgId]/settings/access/invitations/InvitationsDataTable.tsx +++ b/src/app/[orgId]/settings/access/invitations/InvitationsDataTable.tsx @@ -22,7 +22,7 @@ export function InvitationsDataTable({ diff --git a/src/app/[orgId]/settings/access/invitations/InvitationsTable.tsx b/src/app/[orgId]/settings/access/invitations/InvitationsTable.tsx index 9618df14..5a48646d 100644 --- a/src/app/[orgId]/settings/access/invitations/InvitationsTable.tsx +++ b/src/app/[orgId]/settings/access/invitations/InvitationsTable.tsx @@ -17,6 +17,7 @@ import { useOrgContext } from "@app/hooks/useOrgContext"; import { toast } from "@app/hooks/useToast"; import { createApiClient } from "@app/lib/api"; import { useEnvContext } from "@app/hooks/useEnvContext"; +import { useTranslations } from "next-intl"; export type InvitationRow = { id: string; @@ -39,6 +40,8 @@ export default function InvitationsTable({ const [selectedInvitation, setSelectedInvitation] = useState(null); + const t = useTranslations(); + const api = createApiClient(useEnvContext()); const { org } = useOrgContext(); @@ -51,7 +54,7 @@ export default function InvitationsTable({ @@ -62,7 +65,7 @@ export default function InvitationsTable({ setSelectedInvitation(invitation); }} > - Regenerate Invitation + {t('inviteRegenerate')} { @@ -71,7 +74,7 @@ export default function InvitationsTable({ }} > - Remove Invitation + {t('inviteRemove')} @@ -112,17 +115,16 @@ export default function InvitationsTable({ .catch((e) => { toast({ variant: "destructive", - title: "Failed to remove invitation", - description: - "An error occurred while removing the invitation." + title: t('inviteRemoveError'), + description: t('inviteRemoveErrorDescription') }); }); if (res && res.status === 200) { toast({ variant: "default", - title: "Invitation removed", - description: `The invitation for ${selectedInvitation.email} has been removed.` + title: t('inviteRemoved'), + description: t('inviteRemovedDescription', {email: selectedInvitation.email}) }); setInvitations((prev) => @@ -146,23 +148,20 @@ export default function InvitationsTable({ dialog={

- Are you sure you want to remove the invitation for{" "} - {selectedInvitation?.email}? + {t('inviteQuestionRemove', {email: selectedInvitation?.email ?? ''})}

- Once removed, this invitation will no longer be - valid. You can always re-invite the user later. + {t('inviteMessageRemove')}

- To confirm, please type the email address of the - invitation below. + {t('inviteMessageConfirm')}

} - buttonText="Confirm Remove Invitation" + buttonText={t('inviteRemoveConfirm')} onConfirm={removeInvitation} string={selectedInvitation?.email ?? ""} - title="Remove Invitation" + title={t('inviteRemove')} /> { @@ -79,9 +82,8 @@ export default function RegenerateInvitationForm({ if (!org?.org.orgId) { toast({ variant: "destructive", - title: "Organization ID Missing", - description: - "Unable to regenerate invitation without an organization ID.", + title: t('orgMissing'), + description: t('orgMissingMessage'), duration: 5000 }); return; @@ -105,15 +107,15 @@ export default function RegenerateInvitationForm({ if (sendEmail) { toast({ variant: "default", - title: "Invitation Regenerated", - description: `A new invitation has been sent to ${invitation.email}.`, + title: t('inviteRegenerated'), + description: t('inviteSent', {email: invitation.email}), duration: 5000 }); } else { toast({ variant: "default", - title: "Invitation Regenerated", - description: `A new invitation has been generated for ${invitation.email}.`, + title: t('inviteRegenerated'), + description: t('inviteGenerate', {email: invitation.email}), duration: 5000 }); } @@ -130,24 +132,22 @@ export default function RegenerateInvitationForm({ if (error.response?.status === 409) { toast({ variant: "destructive", - title: "Duplicate Invite", - description: "An invitation for this user already exists.", + title: t('inviteDuplicateError'), + description: t('inviteDuplicateErrorDescription'), duration: 5000 }); } else if (error.response?.status === 429) { toast({ variant: "destructive", - title: "Rate Limit Exceeded", - description: - "You have exceeded the limit of 3 regenerations per hour. Please try again later.", + title: t('inviteRateLimitError'), + description: t('inviteRateLimitErrorDescription'), duration: 5000 }); } else { toast({ variant: "destructive", - title: "Failed to Regenerate Invitation", - description: - "An error occurred while regenerating the invitation.", + title: t('inviteRegenerateError'), + description: t('inviteRegenerateErrorDescription'), duration: 5000 }); } @@ -168,18 +168,16 @@ export default function RegenerateInvitationForm({ > - Regenerate Invitation + {t('inviteRegenerate')} - Revoke previous invitation and create a new one + {t('inviteRegenerateDescription')} {!inviteLink ? (

- Are you sure you want to regenerate the - invitation for {invitation?.email}? This - will revoke the previous invitation. + {t('inviteQuestionRegenerate', {email: invitation?.email ?? ''})}