summaryrefslogtreecommitdiffstats
path: root/src/server/content/webmanifest.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/content/webmanifest.ts')
-rw-r--r--src/server/content/webmanifest.ts26
1 files changed, 26 insertions, 0 deletions
diff --git a/src/server/content/webmanifest.ts b/src/server/content/webmanifest.ts
new file mode 100644
index 0000000..6e4031e
--- /dev/null
+++ b/src/server/content/webmanifest.ts
@@ -0,0 +1,26 @@
+import metadata from "../metadata.js"
+import { contentType } from "mime-types"
+import setStingRoute from "../utils/setStingRoute.js"
+
+setStingRoute("/app.webmanifest", "app.webmanifest", async () => ({
+ $schema: "https://json.schemastore.org/web-manifest-combined.json",
+ name: metadata.title,
+ lang: metadata.language,
+ start_url: "/",
+ id: "/", scope: "/",
+ display: "minimal-ui",
+ background_color: metadata.theme,
+ theme_color: metadata.theme,
+ description: metadata.description,
+ icons: ["png", "svg"].flatMap(format => format == "svg" ? {
+ src: "/favicon.svg",
+ type: contentType(format),
+ sizes: "any",
+ purpose: "any maskable"
+ } : [192, 512, 1024].map(size => ({
+ src: `/favicon.svg?format=${format}&width=${size}`,
+ type: contentType(format),
+ sizes: `${size}x${size}`,
+ purpose: "maskable"
+ })))
+}))