diff --git a/.eslintignore b/.eslintignore index 8ea6ffc..888bc4c 100644 --- a/.eslintignore +++ b/.eslintignore @@ -12,4 +12,3 @@ build .svelte-kit .turbo .vercel -*.woff diff --git a/apps/www/.eslintignore b/apps/www/.eslintignore index 7c1958c..c191179 100644 --- a/apps/www/.eslintignore +++ b/apps/www/.eslintignore @@ -1,3 +1,5 @@ /src/lib/components.d.ts /src/lib/imports.d.ts /.eslint-auto-import.json +*.woff +*.woff2 diff --git a/apps/www/package.json b/apps/www/package.json index f6d30b8..ef6360b 100644 --- a/apps/www/package.json +++ b/apps/www/package.json @@ -31,6 +31,8 @@ "mdsvex": "^0.10.6", "rehype-external-links": "^2.1.0", "sass": "^1.63.4", + "satori": "^0.10.1", + "satori-html": "^0.3.2", "svelte": "^3.59.1", "svelte-check": "^3.4.3", "svelte-preprocess": "^5.0.4", diff --git a/apps/www/src/lib/assets/Mona-Sans-Regular.woff b/apps/www/src/lib/assets/Mona-Sans-Regular.woff new file mode 100644 index 0000000..d31c6ed Binary files /dev/null and b/apps/www/src/lib/assets/Mona-Sans-Regular.woff differ diff --git a/apps/www/src/lib/assets/Mona-Sans-SemiBold.woff b/apps/www/src/lib/assets/Mona-Sans-SemiBold.woff new file mode 100644 index 0000000..b57fb15 Binary files /dev/null and b/apps/www/src/lib/assets/Mona-Sans-SemiBold.woff differ diff --git a/apps/www/src/lib/assets/Mona-Sans.woff2 b/apps/www/src/lib/assets/Mona-Sans.woff2 new file mode 100644 index 0000000..8208a50 Binary files /dev/null and b/apps/www/src/lib/assets/Mona-Sans.woff2 differ diff --git a/apps/www/src/routes/api.svg/+server.ts b/apps/www/src/routes/api.svg/+server.ts new file mode 100644 index 0000000..587020c --- /dev/null +++ b/apps/www/src/routes/api.svg/+server.ts @@ -0,0 +1,36 @@ +import type { RequestHandler } from '@sveltejs/kit'; +import satori from 'satori'; +import { html as satoriHtml } from 'satori-html'; +import Banner from './Banner.html?raw'; +import font400 from '$lib/assets/Mona-Sans-Regular.woff?url'; +import font600 from '$lib/assets/Mona-Sans-SemiBold.woff?url'; + +export const GET = (async ({ fetch }): Promise => { + const html = satoriHtml(Banner); + + const banner = await satori(html, + { + width: 650, + height: 180, + fonts: [ + { + name: 'Mona Sans', + weight: 400, + style: 'normal', + data: await (await fetch(font400)).arrayBuffer(), + }, + { + name: 'Mona Sans', + weight: 600, + style: 'normal', + data: await (await fetch(font600)).arrayBuffer(), + }], + }); + + return new Response(banner, { + status: 200, + headers: { + 'Content-type': 'image/svg+xml', + }, + }); +}) satisfies RequestHandler; diff --git a/apps/www/src/routes/api.svg/Banner.html b/apps/www/src/routes/api.svg/Banner.html new file mode 100644 index 0000000..a3d9ea8 --- /dev/null +++ b/apps/www/src/routes/api.svg/Banner.html @@ -0,0 +1,48 @@ +
+
+
+ + + + + + +
+
+
+

Marknow

+ + Create beautiful markdown for your projects with ease + +
+
+
+