diff --git a/apps/marketing/src/app/(marketing)/blog/[post]/opengraph-image.tsx b/apps/marketing/src/app/(marketing)/blog/[post]/opengraph-image.tsx
new file mode 100644
index 000000000..f9987dd27
--- /dev/null
+++ b/apps/marketing/src/app/(marketing)/blog/[post]/opengraph-image.tsx
@@ -0,0 +1,76 @@
+import { ImageResponse } from 'next/server';
+
+import { allBlogPosts } from 'contentlayer/generated';
+
+export const runtime = 'edge';
+
+export const size = {
+ width: 1200,
+ height: 630,
+};
+
+export const contentType = 'image/png';
+
+type BlogPostOpenGraphImageProps = {
+ params: { post: string };
+};
+
+export default async function BlogPostOpenGraphImage({ params }: BlogPostOpenGraphImageProps) {
+ const blogPost = allBlogPosts.find((post) => post._raw.flattenedPath === `blog/${params.post}`);
+
+ if (!blogPost) {
+ return null;
+ }
+
+ // The long urls are needed for a compiler optimisation on the Next.js side, lifting this up
+ // to a constant will break og image generation.
+ const [interBold, interRegular, backgroundImage, logoImage] = await Promise.all([
+ fetch(new URL('./../../../../assets/inter-bold.ttf', import.meta.url)).then(async (res) =>
+ res.arrayBuffer(),
+ ),
+ fetch(new URL('./../../../../assets/inter-regular.ttf', import.meta.url)).then(async (res) =>
+ res.arrayBuffer(),
+ ),
+ fetch(new URL('./../../../../assets/background-blog-og.png', import.meta.url)).then(
+ async (res) => res.arrayBuffer(),
+ ),
+ fetch(new URL('./../../../../../public/logo.png', import.meta.url)).then(async (res) =>
+ res.arrayBuffer(),
+ ),
+ ]);
+
+ return new ImageResponse(
+ (
+
+ {/* @ts-expect-error Lack of typing from ImageResponse */}
+

+
+ {/* @ts-expect-error Lack of typing from ImageResponse */}
+

+
+
+ {blogPost.title}
+
+
+
Written by {blogPost.authorName}
+
+ ),
+ {
+ ...size,
+ fonts: [
+ {
+ name: 'Inter',
+ data: interRegular,
+ style: 'normal',
+ weight: 400,
+ },
+ {
+ name: 'Inter',
+ data: interBold,
+ style: 'normal',
+ weight: 700,
+ },
+ ],
+ },
+ );
+}
diff --git a/apps/marketing/src/app/(marketing)/blog/[post]/page.tsx b/apps/marketing/src/app/(marketing)/blog/[post]/page.tsx
index 5192dec32..7edf29ec2 100644
--- a/apps/marketing/src/app/(marketing)/blog/[post]/page.tsx
+++ b/apps/marketing/src/app/(marketing)/blog/[post]/page.tsx
@@ -17,7 +17,9 @@ export const generateMetadata = ({ params }: { params: { post: string } }) => {
notFound();
}
- return { title: `Documenso - ${blogPost.title}` };
+ return {
+ title: `Documenso - ${blogPost.title}`,
+ };
};
const mdxComponents: MDXComponents = {
diff --git a/apps/marketing/src/assets/background-blog-og.png b/apps/marketing/src/assets/background-blog-og.png
new file mode 100644
index 000000000..d5d48a21a
Binary files /dev/null and b/apps/marketing/src/assets/background-blog-og.png differ
diff --git a/apps/marketing/src/assets/inter-bold.ttf b/apps/marketing/src/assets/inter-bold.ttf
new file mode 100644
index 000000000..8e82c70d1
Binary files /dev/null and b/apps/marketing/src/assets/inter-bold.ttf differ
diff --git a/apps/marketing/src/assets/inter-regular.ttf b/apps/marketing/src/assets/inter-regular.ttf
new file mode 100644
index 000000000..8d4eebf20
Binary files /dev/null and b/apps/marketing/src/assets/inter-regular.ttf differ
diff --git a/apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx b/apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx
index e1c9a79e1..7ed28feca 100644
--- a/apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx
+++ b/apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx
@@ -130,7 +130,13 @@ export const EditDocumentForm = ({
},
});
- router.refresh();
+ toast({
+ title: 'Document sent',
+ description: 'Your document has been sent successfully.',
+ duration: 5000,
+ });
+
+ router.push('/dashboard');
} catch (err) {
console.error(err);
diff --git a/apps/web/src/app/(signing)/sign/[token]/form.tsx b/apps/web/src/app/(signing)/sign/[token]/form.tsx
index 3666941dc..e18571e33 100644
--- a/apps/web/src/app/(signing)/sign/[token]/form.tsx
+++ b/apps/web/src/app/(signing)/sign/[token]/form.tsx
@@ -87,9 +87,6 @@ export const SigningForm = ({ document, recipient, fields }: SigningFormProps) =
className="h-44 w-full"
defaultValue={signature ?? undefined}
onChange={(value) => {
- console.log({
- signpadValue: value,
- });
setSignature(value);
}}
/>
diff --git a/apps/web/src/app/(signing)/sign/[token]/signature-field.tsx b/apps/web/src/app/(signing)/sign/[token]/signature-field.tsx
index 03fc40914..e3a66c656 100644
--- a/apps/web/src/app/(signing)/sign/[token]/signature-field.tsx
+++ b/apps/web/src/app/(signing)/sign/[token]/signature-field.tsx
@@ -63,11 +63,6 @@ export const SignatureField = ({ field, recipient }: SignatureFieldProps) => {
const onSign = async (source: 'local' | 'provider' = 'provider') => {
try {
- console.log({
- providedSignature,
- localSignature,
- });
-
if (!providedSignature && !localSignature) {
setShowSignatureModal(true);
return;