Update to use selfhosted icons
All checks were successful
Build and Deploy / build (push) Successful in 1m0s

This commit is contained in:
Justin Deal 2025-05-06 20:10:17 -07:00
parent b0d6fcc6d8
commit 29d0b51dfe
4 changed files with 31 additions and 21 deletions

View File

@ -12,14 +12,14 @@
{ {
"name": "Nextcloud", "name": "Nextcloud",
"link": "https://cloud.justin.deal", "link": "https://cloud.justin.deal",
"icon": "https://cdn.jsdelivr.net/gh/selfhst/icons/svg/nextcloud-light.svg", "icon": "https://icons.justin.deal/nextcloud.svg?color=ebdbb2",
"iconDark": "https://cdn.jsdelivr.net/gh/selfhst/icons/svg/nextcloud-dark.svg", "iconDark": "https://cdn.jsdelivr.net/gh/selfhst/icons/svg/nextcloud-dark.svg",
"alt": "Nextcloud" "alt": "Nextcloud"
}, },
{ {
"name": "Gitea", "name": "Gitea",
"link": "https://code.justin.deal", "link": "https://code.justin.deal",
"icon": "https://cdn.jsdelivr.net/gh/selfhst/icons/svg/gitea-light.svg", "icon": "https://icons.justin.deal/gitea.svg?color=ebdbb2",
"iconDark": "https://cdn.jsdelivr.net/gh/selfhst/icons/svg/gitea-dark.svg", "iconDark": "https://cdn.jsdelivr.net/gh/selfhst/icons/svg/gitea-dark.svg",
"alt": "Gitea", "alt": "Gitea",
"tags": ["git", "code", "repository"] "tags": ["git", "code", "repository"]
@ -27,7 +27,7 @@
{ {
"name": "OpenGist", "name": "OpenGist",
"link": "https://snippets.justin.deal", "link": "https://snippets.justin.deal",
"icon": "https://cdn.jsdelivr.net/gh/selfhst/icons/svg/opengist-light.svg", "icon": "https://icons.justin.deal/opengist.svg?color=ebdbb2",
"iconDark": "https://cdn.jsdelivr.net/gh/selfhst/icons/svg/opengist-dark.svg", "iconDark": "https://cdn.jsdelivr.net/gh/selfhst/icons/svg/opengist-dark.svg",
"alt": "OpenGist", "alt": "OpenGist",
"tags": ["gist", "snippets"] "tags": ["gist", "snippets"]
@ -35,7 +35,7 @@
{ {
"name": "Calibre-Web", "name": "Calibre-Web",
"link": "https://books.justin.deal", "link": "https://books.justin.deal",
"icon": "https://cdn.jsdelivr.net/gh/selfhst/icons/svg/calibre-web-light.svg", "icon": "https://icons.justin.deal/calibre-web.svg?color=ebdbb2",
"iconDark": "https://cdn.jsdelivr.net/gh/selfhst/icons/svg/calibre-web-dark.svg", "iconDark": "https://cdn.jsdelivr.net/gh/selfhst/icons/svg/calibre-web-dark.svg",
"alt": "Calibre-Web", "alt": "Calibre-Web",
"tags": ["books", "read"] "tags": ["books", "read"]
@ -43,7 +43,7 @@
{ {
"name": "Jellyfin", "name": "Jellyfin",
"link": "https://watch.justin.deal", "link": "https://watch.justin.deal",
"icon": "https://cdn.jsdelivr.net/gh/selfhst/icons/svg/jellyfin-light.svg", "icon": "https://icons.justin.deal/jellyfin.svg?color=ebdbb2",
"iconDark": "https://cdn.jsdelivr.net/gh/selfhst/icons/svg/jellyfin-dark.svg", "iconDark": "https://cdn.jsdelivr.net/gh/selfhst/icons/svg/jellyfin-dark.svg",
"alt": "Jellyfin", "alt": "Jellyfin",
"tags": ["movies", "tv", "shows", "watch"] "tags": ["movies", "tv", "shows", "watch"]
@ -54,7 +54,7 @@
{ {
"name": "Searxng", "name": "Searxng",
"link": "https://search.justin.deal", "link": "https://search.justin.deal",
"icon": "https://cdn.jsdelivr.net/gh/selfhst/icons/svg/searxng-light.svg", "icon": "https://icons.justin.deal/searxng.svg?color=ebdbb2",
"iconDark": "https://cdn.jsdelivr.net/gh/selfhst/icons/svg/searxng-dark.svg", "iconDark": "https://cdn.jsdelivr.net/gh/selfhst/icons/svg/searxng-dark.svg",
"alt": "Searxng", "alt": "Searxng",
"tags": ["search", "privacy", "metasearch"] "tags": ["search", "privacy", "metasearch"]
@ -62,15 +62,23 @@
{ {
"name": "IT-Tools", "name": "IT-Tools",
"link": "https://tools.justin.deal", "link": "https://tools.justin.deal",
"icon": "https://cdn.jsdelivr.net/gh/selfhst/icons/svg/it-tools-light.svg", "icon": "https://icons.justin.deal/it-tools.svg?color=ebdbb2",
"iconDark": "https://cdn.jsdelivr.net/gh/selfhst/icons/svg/it-tools-dark.svg", "iconDark": "https://cdn.jsdelivr.net/gh/selfhst/icons/svg/it-tools-dark.svg",
"alt": "IT-Tools", "alt": "IT-Tools",
"tags": ["dev"] "tags": ["dev"]
}, },
{
"name": "Icons",
"link": "https://icons.justin.deal",
"icon": "https://icons.justin.deal/selfh-st.svg?color=ebdbb2",
"iconDark": "https://cdn.jsdelivr.net/gh/selfhst/icons/svg/slfh-st-dark.svg",
"alt": "Icons",
"tags": ["icons"]
},
{ {
"name": "Ollama", "name": "Ollama",
"link": "https://ai.justin.deal", "link": "https://ai.justin.deal",
"icon": "https://cdn.jsdelivr.net/gh/selfhst/icons/svg/ollama-light.svg", "icon": "https://icons.justin.deal/ollama.svg?color=ebdbb2",
"iconDark": "https://cdn.jsdelivr.net/gh/selfhst/icons/svg/ollama-dark.svg", "iconDark": "https://cdn.jsdelivr.net/gh/selfhst/icons/svg/ollama-dark.svg",
"alt": "Ollama", "alt": "Ollama",
"tags": ["LLM", "AI", "models", "chatbot"] "tags": ["LLM", "AI", "models", "chatbot"]
@ -81,7 +89,7 @@
{ {
"name": "Uptime Kuma", "name": "Uptime Kuma",
"link": "https://status.justin.deal", "link": "https://status.justin.deal",
"icon": "https://cdn.jsdelivr.net/gh/selfhst/icons/svg/uptime-kuma-light.svg", "icon": "https://icons.justin.deal/uptime-kuma.svg?color=ebdbb2",
"iconDark": "https://cdn.jsdelivr.net/gh/selfhst/icons/svg/uptime-kuma-dark.svg", "iconDark": "https://cdn.jsdelivr.net/gh/selfhst/icons/svg/uptime-kuma-dark.svg",
"alt": "Uptime Kuma", "alt": "Uptime Kuma",
"tags": ["status"] "tags": ["status"]
@ -89,7 +97,7 @@
{ {
"name": "Umami", "name": "Umami",
"link": "https://analytics.justin.deal", "link": "https://analytics.justin.deal",
"icon": "https://cdn.jsdelivr.net/gh/selfhst/icons/svg/umami-light.svg", "icon": "https://icons.justin.deal/umami.svg?color=ebdbb2",
"iconDark": "https://cdn.jsdelivr.net/gh/selfhst/icons/svg/umami-dark.svg", "iconDark": "https://cdn.jsdelivr.net/gh/selfhst/icons/svg/umami-dark.svg",
"alt": "Umami", "alt": "Umami",
"tags": ["analytics"] "tags": ["analytics"]
@ -97,7 +105,7 @@
{ {
"name": "TeslaMate", "name": "TeslaMate",
"link": "https://tesla.justin.deal", "link": "https://tesla.justin.deal",
"icon": "https://cdn.jsdelivr.net/gh/selfhst/icons/svg/teslamate-light.svg", "icon": "https://icons.justin.deal/teslamate.svg?color=ebdbb2",
"iconDark": "https://cdn.jsdelivr.net/gh/selfhst/icons/svg/teslamate-dark.svg", "iconDark": "https://cdn.jsdelivr.net/gh/selfhst/icons/svg/teslamate-dark.svg",
"alt": "TeslaMate", "alt": "TeslaMate",
"tags": ["car", "tesla"] "tags": ["car", "tesla"]
@ -108,7 +116,7 @@
{ {
"name": "Pi-hole", "name": "Pi-hole",
"link": "http://pi.hole/admin/", "link": "http://pi.hole/admin/",
"icon": "https://cdn.jsdelivr.net/gh/selfhst/icons/svg/pi-hole-light.svg", "icon": "https://icons.justin.deal/pi-hole.svg?color=ebdbb2",
"iconDark": "https://cdn.jsdelivr.net/gh/selfhst/icons/svg/pi-hole-dark.svg", "iconDark": "https://cdn.jsdelivr.net/gh/selfhst/icons/svg/pi-hole-dark.svg",
"alt": "Pi-hole", "alt": "Pi-hole",
"tags": ["dns"] "tags": ["dns"]
@ -116,7 +124,7 @@
{ {
"name": "Ntfy", "name": "Ntfy",
"link": "https://ntfy.justin.deal", "link": "https://ntfy.justin.deal",
"icon": "https://cdn.jsdelivr.net/gh/selfhst/icons/svg/ntfy-light.svg", "icon": "https://icons.justin.deal/ntfy.svg?color=ebdbb2",
"iconDark": "https://cdn.jsdelivr.net/gh/selfhst/icons/svg/ntfy-dark.svg", "iconDark": "https://cdn.jsdelivr.net/gh/selfhst/icons/svg/ntfy-dark.svg",
"alt": "Ntfy", "alt": "Ntfy",
"tags": ["notifications"] "tags": ["notifications"]
@ -124,7 +132,7 @@
{ {
"name": "Vaultwarden", "name": "Vaultwarden",
"link": "https://passwords.justin.deal", "link": "https://passwords.justin.deal",
"icon": "https://cdn.jsdelivr.net/gh/selfhst/icons/svg/vaultwarden-light.svg", "icon": "https://icons.justin.deal/vaultwarden.svg?color=ebdbb2",
"iconDark": "https://cdn.jsdelivr.net/gh/selfhst/icons/svg/vaultwarden-dark.svg", "iconDark": "https://cdn.jsdelivr.net/gh/selfhst/icons/svg/vaultwarden-dark.svg",
"alt": "Vaultwarden", "alt": "Vaultwarden",
"tags": ["passwords"] "tags": ["passwords"]
@ -132,7 +140,7 @@
{ {
"name": "Authentik", "name": "Authentik",
"link": "https://auth.justin.deal", "link": "https://auth.justin.deal",
"icon": "https://cdn.jsdelivr.net/gh/selfhst/icons/svg/authentik-light.svg", "icon": "https://icons.justin.deal/authentik.svg?color=ebdbb2",
"iconDark": "https://cdn.jsdelivr.net/gh/selfhst/icons/svg/authentik-dark.svg", "iconDark": "https://cdn.jsdelivr.net/gh/selfhst/icons/svg/authentik-dark.svg",
"alt": "Authentik", "alt": "Authentik",
"tags": ["SSO", "Auth", "Authentication"] "tags": ["SSO", "Auth", "Authentication"]
@ -140,7 +148,7 @@
{ {
"name": "Traefik", "name": "Traefik",
"link": "https://proxy.justin.deal:8080", "link": "https://proxy.justin.deal:8080",
"icon": "https://cdn.jsdelivr.net/gh/selfhst/icons/svg/traefik-light.svg", "icon": "https://icons.justin.deal/traefik.svg?color=ebdbb2",
"iconDark": "https://cdn.jsdelivr.net/gh/selfhst/icons/svg/traefik-dark.svg", "iconDark": "https://cdn.jsdelivr.net/gh/selfhst/icons/svg/traefik-dark.svg",
"alt": "Traefik", "alt": "Traefik",
"tags": ["proxy", "reverse-proxy", "load-balancer"] "tags": ["proxy", "reverse-proxy", "load-balancer"]
@ -148,7 +156,7 @@
{ {
"name": "Syncthing", "name": "Syncthing",
"link": "https://sync.justin.deal", "link": "https://sync.justin.deal",
"icon": "https://cdn.jsdelivr.net/gh/selfhst/icons/svg/syncthing-light.svg", "icon": "https://icons.justin.deal/syncthing.svg?color=ebdbb2",
"iconDark": "https://cdn.jsdelivr.net/gh/selfhst/icons/svg/syncthing-dark.svg", "iconDark": "https://cdn.jsdelivr.net/gh/selfhst/icons/svg/syncthing-dark.svg",
"alt": "Syncthing", "alt": "Syncthing",
"tags": ["sync", "files"] "tags": ["sync", "files"]

View File

@ -3,7 +3,7 @@
"name": "Gitea", "name": "Gitea",
"url": "https://code.justin.deal/dealjus", "url": "https://code.justin.deal/dealjus",
"iconDark": "https://cdn.jsdelivr.net/gh/selfhst/icons/svg/gitea-dark.svg", "iconDark": "https://cdn.jsdelivr.net/gh/selfhst/icons/svg/gitea-dark.svg",
"iconLight": "https://cdn.jsdelivr.net/gh/selfhst/icons/svg/gitea-light.svg", "iconLight": "https://icons.justin.deal/gitea.svg?color=ebdbb2",
"alt": "Gitea Profile", "alt": "Gitea Profile",
"showInFooter": true, "showInFooter": true,
"showInAbout": true "showInAbout": true
@ -12,7 +12,7 @@
"name": "LinkedIn", "name": "LinkedIn",
"url": "https://www.linkedin.com/in/justin-deal/", "url": "https://www.linkedin.com/in/justin-deal/",
"iconDark": "https://cdn.jsdelivr.net/gh/selfhst/icons/svg/linkedin-dark.svg", "iconDark": "https://cdn.jsdelivr.net/gh/selfhst/icons/svg/linkedin-dark.svg",
"iconLight": "https://cdn.jsdelivr.net/gh/selfhst/icons/svg/linkedin-light.svg", "iconLight": "https://icons.justin.deal/linkedin.svg?color=ebdbb2",
"alt": "LinkedIn Profile", "alt": "LinkedIn Profile",
"showInFooter": true, "showInFooter": true,
"showInAbout": true "showInAbout": true
@ -21,7 +21,7 @@
"name": "GitHub", "name": "GitHub",
"url": "https://github.com/justintdeal", "url": "https://github.com/justintdeal",
"iconDark": "https://cdn.jsdelivr.net/gh/selfhst/icons/svg/github-dark.svg", "iconDark": "https://cdn.jsdelivr.net/gh/selfhst/icons/svg/github-dark.svg",
"iconLight": "https://cdn.jsdelivr.net/gh/selfhst/icons/svg/github-light.svg", "iconLight": "https://icons.justin.deal/github.svg?color=ebdbb2",
"alt": "GitHub Profile", "alt": "GitHub Profile",
"showInFooter": true, "showInFooter": true,
"showInAbout": true "showInAbout": true

View File

@ -70,6 +70,7 @@ const cardId = `service-card-${crypto.randomUUID().slice(0, 8)}`;
width="64" width="64"
height="64" height="64"
fetchpriority="low" fetchpriority="low"
onerror="this.onerror=null; this.src=this.src.includes('icons.justin.deal') ? this.src.replace('icons.justin.deal', 'cdn.jsdelivr.net/gh/selfhst/icons/svg').replace(/\.svg\?color=.*$/, '-light.svg') : this.src;"
/> />
<!-- Dark icon (shown in light mode) --> <!-- Dark icon (shown in light mode) -->
<img <img

View File

@ -35,7 +35,8 @@ const sizeClasses = {
<img <img
src={lightIcon} src={lightIcon}
alt={alt} alt={alt}
class={`${sizeClasses[size]} dark-theme-only zag-transition`} class={`${sizeClasses[size]} dark-theme-only zag-transition`}
onerror="this.onerror=null; this.src=this.src.includes('icons.justin.deal') ? this.src.replace('icons.justin.deal', 'cdn.jsdelivr.net/gh/selfhst/icons/svg').replace(/\.svg\?color=.*$/, '-light.svg') : this.src;"
/> />
</Anchor> </Anchor>