diff --git a/apps/web/src/app/(dashboard)/documents/empty-state.tsx b/apps/web/src/app/(dashboard)/documents/empty-state.tsx
new file mode 100644
index 000000000..bdfef3bbe
--- /dev/null
+++ b/apps/web/src/app/(dashboard)/documents/empty-state.tsx
@@ -0,0 +1,50 @@
+import { Bird, CheckCircle2 } from 'lucide-react';
+import { match } from 'ts-pattern';
+
+import { ExtendedDocumentStatus } from '@documenso/prisma/types/extended-document-status';
+
+export type EmptyDocumentProps = { status: ExtendedDocumentStatus };
+
+export const EmptyDocumentState = ({ status }: EmptyDocumentProps) => {
+ const {
+ title,
+ message,
+ icon: Icon,
+ } = match(status)
+ .with(ExtendedDocumentStatus.COMPLETED, () => ({
+ title: 'Nothing to do',
+ message:
+ 'There are no completed documents yet. Documents that you have created or received that become completed will appear here later.',
+ icon: CheckCircle2,
+ }))
+ .with(ExtendedDocumentStatus.DRAFT, () => ({
+ title: 'No active drafts',
+ message:
+ 'There are no active drafts at then current moment. You can upload a document to start drafting.',
+ icon: CheckCircle2,
+ }))
+ .with(ExtendedDocumentStatus.ALL, () => ({
+ title: "We're all empty",
+ message:
+ 'You have not yet created or received any documents. To create a document please upload one.',
+ icon: Bird,
+ }))
+ .otherwise(() => ({
+ title: 'Nothing to do',
+ message:
+ 'All documents are currently actioned. Any new documents are sent or recieved they will start to appear here.',
+ icon: CheckCircle2,
+ }));
+
+ return (
+
+
+
+
+
{title}
+
+
{message}
+
+
+ );
+};
diff --git a/apps/web/src/app/(dashboard)/documents/page.tsx b/apps/web/src/app/(dashboard)/documents/page.tsx
index 32ec4f814..9ae16e44b 100644
--- a/apps/web/src/app/(dashboard)/documents/page.tsx
+++ b/apps/web/src/app/(dashboard)/documents/page.tsx
@@ -12,6 +12,7 @@ import { PeriodSelectorValue } from '~/components/(dashboard)/period-selector/ty
import { DocumentStatus } from '~/components/formatter/document-status';
import { DocumentsDataTable } from './data-table';
+import { EmptyDocumentState } from './empty-state';
import { UploadDocument } from './upload-document';
export type DocumentsPageProps = {
@@ -96,7 +97,8 @@ export default async function DocumentsPage({ searchParams = {} }: DocumentsPage
-
+ {results.count > 0 && }
+ {results.count === 0 && }
);
diff --git a/packages/lib/server-only/pdf/insert-field-in-pdf.ts b/packages/lib/server-only/pdf/insert-field-in-pdf.ts
index 61726f53c..e7b1e7c5a 100644
--- a/packages/lib/server-only/pdf/insert-field-in-pdf.ts
+++ b/packages/lib/server-only/pdf/insert-field-in-pdf.ts
@@ -50,10 +50,10 @@ export const insertFieldInPDF = async (pdf: PDFDocument, field: FieldWithSignatu
let imageWidth = image.width;
let imageHeight = image.height;
- const initialDimensions = {
- width: imageWidth,
- height: imageHeight,
- };
+ // const initialDimensions = {
+ // width: imageWidth,
+ // height: imageHeight,
+ // };
const scalingFactor = Math.min(fieldWidth / imageWidth, fieldHeight / imageHeight, 1);
@@ -76,10 +76,10 @@ export const insertFieldInPDF = async (pdf: PDFDocument, field: FieldWithSignatu
let textWidth = font.widthOfTextAtSize(field.customText, fontSize);
const textHeight = font.heightAtSize(fontSize);
- const initialDimensions = {
- width: textWidth,
- height: textHeight,
- };
+ // const initialDimensions = {
+ // width: textWidth,
+ // height: textHeight,
+ // };
const scalingFactor = Math.min(fieldWidth / textWidth, fieldHeight / textHeight, 1);