import { useEffect } from 'react'; import { Trans } from '@lingui/react/macro'; import { Bird } from 'lucide-react'; import { useSearchParams } from 'react-router'; import { formatAvatarUrl } from '@documenso/lib/utils/avatars'; import { formatDocumentsPath, formatTemplatesPath } from '@documenso/lib/utils/teams'; import { trpc } from '@documenso/trpc/react'; import { Avatar, AvatarFallback, AvatarImage } from '@documenso/ui/primitives/avatar'; import { TemplateCreateDialog } from '~/components/dialogs/template-create-dialog'; import { TemplatesTable } from '~/components/tables/templates-table'; import { useOptionalCurrentTeam } from '~/providers/team'; import { appMetaTags } from '~/utils/meta'; export function meta() { return appMetaTags('Templates'); } export default function TemplatesPage() { const [searchParams] = useSearchParams(); const team = useOptionalCurrentTeam(); const page = Number(searchParams.get('page')) || 1; const perPage = Number(searchParams.get('perPage')) || 10; const documentRootPath = formatDocumentsPath(team?.url); const templateRootPath = formatTemplatesPath(team?.url); const { data, isLoading, isLoadingError, refetch } = trpc.template.findTemplates.useQuery({ page: page, perPage: perPage, }); // Refetch the templates when the team URL changes. useEffect(() => { void refetch(); }, [team?.url]); return (
{team && ( {team.avatarImageId && } {team.name.slice(0, 1)} )}

Templates

{data && data.count === 0 ? (

We're all empty

You have not yet created any templates. To create a template please upload one.

) : ( )}
); }