import { Trans } from '@lingui/macro'; import { CheckCircle2, Clock } from 'lucide-react'; import { P, match } from 'ts-pattern'; import { setupI18nSSR } from '@documenso/lib/client-only/providers/i18n.server'; import { NEXT_PUBLIC_WEBAPP_URL } from '@documenso/lib/constants/app'; import { getRequiredServerComponentSession } from '@documenso/lib/next-auth/get-server-component-session'; import { getTeamByUrl } from '@documenso/lib/server-only/team/get-team'; import { extractInitials } from '@documenso/lib/utils/recipient-formatter'; import { isTokenExpired } from '@documenso/lib/utils/token-verification'; import { Alert, AlertDescription, AlertTitle } from '@documenso/ui/primitives/alert'; import { AvatarWithText } from '@documenso/ui/primitives/avatar'; import { SettingsHeader } from '~/components/(dashboard)/settings/layout/header'; import { AddTeamEmailDialog } from '~/components/(teams)/dialogs/add-team-email-dialog'; import { DeleteTeamDialog } from '~/components/(teams)/dialogs/delete-team-dialog'; import { TransferTeamDialog } from '~/components/(teams)/dialogs/transfer-team-dialog'; import { UpdateTeamForm } from '~/components/(teams)/forms/update-team-form'; import { AvatarImageForm } from '~/components/forms/avatar-image'; import { TeamEmailDropdown } from './team-email-dropdown'; import { TeamTransferStatus } from './team-transfer-status'; export type TeamsSettingsPageProps = { params: { teamUrl: string; }; }; export default async function TeamsSettingsPage({ params }: TeamsSettingsPageProps) { await setupI18nSSR(); const { teamUrl } = params; const session = await getRequiredServerComponentSession(); const team = await getTeamByUrl({ userId: session.user.id, teamUrl }); const isTransferVerificationExpired = !team.transferVerification || isTokenExpired(team.transferVerification.expiresAt); return (