From d7ada1b1c5d4ecc25c899fc2c457c4a237ea032e Mon Sep 17 00:00:00 2001 From: Henry Dollman Date: Wed, 5 Feb 2025 20:27:23 -0500 Subject: [PATCH] add manifest.json with icon for home screen (closes #525) --- beszel/site/index.html | 3 ++- beszel/site/public/static/icon.png | Bin 0 -> 6495 bytes beszel/site/public/static/lock.svg | 1 - beszel/site/public/static/manifest.json | 14 ++++++++++++++ beszel/site/src/lib/utils.ts | 3 ++- 5 files changed, 18 insertions(+), 3 deletions(-) create mode 100644 beszel/site/public/static/icon.png delete mode 100644 beszel/site/public/static/lock.svg create mode 100644 beszel/site/public/static/manifest.json diff --git a/beszel/site/index.html b/beszel/site/index.html index 2b5dcb6..9ebf322 100644 --- a/beszel/site/index.html +++ b/beszel/site/index.html @@ -2,7 +2,8 @@ - + + Beszel diff --git a/beszel/site/public/static/icon.png b/beszel/site/public/static/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..ea319df9c2f18ada37b93fff9b9cd87d7776ede7 GIT binary patch literal 6495 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 F{{VY}Y4QL7 literal 0 HcmV?d00001 diff --git a/beszel/site/public/static/lock.svg b/beszel/site/public/static/lock.svg deleted file mode 100644 index dad77ab..0000000 --- a/beszel/site/public/static/lock.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/beszel/site/public/static/manifest.json b/beszel/site/public/static/manifest.json new file mode 100644 index 0000000..16d59eb --- /dev/null +++ b/beszel/site/public/static/manifest.json @@ -0,0 +1,14 @@ +{ + "name": "Beszel", + "icons": [ + { + "src": "icon.png", + "sizes": "512x512", + "type": "image/png" + } + ], + "start_url": "../", + "display": "standalone", + "background_color": "#202225", + "theme_color": "#202225" +} diff --git a/beszel/site/src/lib/utils.ts b/beszel/site/src/lib/utils.ts index 8f8a5e6..37f08ba 100644 --- a/beszel/site/src/lib/utils.ts +++ b/beszel/site/src/lib/utils.ts @@ -10,6 +10,7 @@ import { useEffect, useState } from "react" import { CpuIcon, HardDriveIcon, MemoryStickIcon, ServerIcon } from "lucide-react" import { EthernetIcon, ThermometerIcon } from "@/components/ui/icons" import { t } from "@lingui/macro" +import { prependBasePath } from "@/components/router" export function cn(...inputs: ClassValue[]) { return twMerge(clsx(inputs)) @@ -106,7 +107,7 @@ export const formatDay = (timestamp: string) => { } export const updateFavicon = (newIcon: string) => { - ;(document.querySelector("link[rel='icon']") as HTMLLinkElement).href = `/static/${newIcon}` + ;(document.querySelector("link[rel='icon']") as HTMLLinkElement).href = prependBasePath( `/static/${newIcon}` ) } export const isAdmin = () => pb.authStore.record?.role === "admin"