diff --git a/README.md b/README.md index bf32fdea..c1f5e23f 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,12 @@

- - + +

- A modern (fully static, fast), secure (fully proxied), highly customizable application dashboard with integrations for more than 25 services and translations for 15 languages. Easily configured via YAML files (or discovery via docker labels). + A modern (fully static, fast), secure (fully proxied), highly customizable application dashboard with integrations for more than 25 services and translations for over 15 languages. Easily configured via YAML files (or discovery via docker labels).

@@ -38,7 +38,7 @@ - Images built for AMD64 (x86_64), ARM64, ARMv7 and ARMv6 - Supports all Raspberry Pi's, most SBCs & Apple Silicon - Full i18n support with automatic language detection - - Translantions for Chinese, Dutch, French, German, Hebrew, Hungarian, Norwegian Bokmål, Polish, Portuguese, Portuguese (Brazil), Romainian, Russian, Spanish, Swedish and Yue + - Translantions for Chinese, Dutch, Finnish, French, German, Hebrew, Hungarian, Norwegian Bokmål, Polish, Portuguese, Portuguese (Brazil), Romainian, Russian, Spanish, Swedish and Yue - Want to help translate? [Join the Weblate project](https://hosted.weblate.org/engage/homepage/) - Service & Web Bookmarks - Docker Integration @@ -47,7 +47,7 @@ - Service Integration - Sonarr, Radarr, Readarr, Prowlarr, Bazarr, Lidarr, Emby, Jellyfin, Tautulli (Plex) - Ombi, Overseerr, Jellyseerr, Jackett, NZBGet, SABnzbd, ruTorrent, Transmission, qBittorrent - - Portainer, Traefik, Speedtest Tracker, PiHole, AdGuard Home, Nginx Proxy Manager, Gotify, Syncthing Relay Server, Authentic + - Portainer, Traefik, Speedtest Tracker, PiHole, AdGuard Home, Nginx Proxy Manager, Gotify, Syncthing Relay Server, Authentic, Proxmox - Information Providers - Coin Market Cap, Mastodon - Information & Utility Widgets @@ -152,10 +152,11 @@ Huge thanks to the all the contributors who have helped make this project what i - [DevPGSV](https://github.com/benphelps/homepage/commits?author=DevPGSV) - Syncthing Relay Server & Mastodon widgets - [ilusi0n](https://github.com/benphelps/homepage/commits?author=ilusi0n) - Jellyseerr Integration - [ItsJustMeChris](https://github.com/benphelps/homepage/commits?author=ItsJustMeChris) - Coin Market Cap Widget -- [JazzFisch](https://github.com/benphelps/homepage/commits?author=JazzFisch) - Readarr, Bazarr, Lidarr, SABnzbd, Transmission, qBittorrent Integrations & countless more improvements +- [JazzFisch](https://github.com/benphelps/homepage/commits?author=JazzFisch) - Readarr, Bazarr, Lidarr, SABnzbd, Transmission, qBittorrent, Proxmox Integrations & countless more improvements - [josways](https://github.com/benphelps/homepage/commits?author=josways) - Baidu search provider - [mauricio-kalil](https://github.com/benphelps/homepage/commits?author=mauricio-kalil) - Portuguese (Brazil) - [modem7](https://github.com/benphelps/homepage/commits?author=modem7) - Impvoed Docker Image +- [MountainGod2](https://github.com/benphelps/homepage/discussions/243) - Homepage Logo - [quod](https://github.com/benphelps/homepage/commits?author=quod) - Fixed Typos - [schklom](https://github.com/benphelps/homepage/commits?author=schklom) - ARM64, ARMv7 and ARMv6 - [xicopitz](https://github.com/benphelps/homepage/commits?author=xicopitz) - Gotify & Prowlarr Integration @@ -186,3 +187,4 @@ Huge thanks to the all the contributors who have helped make this project what i - Sascha Jelinek - German - [ShlomiPorush](https://github.com/benphelps/homepage/commits?author=ShlomiPorush) - Hebrew - [SuperDOS](https://github.com/benphelps/homepage/commits?author=SuperDOS) - Swedish +- [kaihu](https://github.com/benphelps/homepage/commits?author=kaihu) - Finnish diff --git a/images/banner_dark@2x.png b/images/banner_dark@2x.png new file mode 100644 index 00000000..87bcd0a7 Binary files /dev/null and b/images/banner_dark@2x.png differ diff --git a/images/banner_light@2x.png b/images/banner_light@2x.png new file mode 100644 index 00000000..721446b8 Binary files /dev/null and b/images/banner_light@2x.png differ diff --git a/images/homepage-dark.png b/images/homepage-dark.png deleted file mode 100644 index 7c9e882c..00000000 Binary files a/images/homepage-dark.png and /dev/null differ diff --git a/images/homepage-light.png b/images/homepage-light.png deleted file mode 100644 index 9345a1f5..00000000 Binary files a/images/homepage-light.png and /dev/null differ diff --git a/public/android-chrome-192x192.png b/public/android-chrome-192x192.png new file mode 100644 index 00000000..929a57a1 Binary files /dev/null and b/public/android-chrome-192x192.png differ diff --git a/public/android-chrome-512x512.png b/public/android-chrome-512x512.png new file mode 100644 index 00000000..3e94f341 Binary files /dev/null and b/public/android-chrome-512x512.png differ diff --git a/public/apple-touch-icon.png b/public/apple-touch-icon.png new file mode 100644 index 00000000..0a11f3dc Binary files /dev/null and b/public/apple-touch-icon.png differ diff --git a/public/favicon-16x16.png b/public/favicon-16x16.png new file mode 100644 index 00000000..8922842a Binary files /dev/null and b/public/favicon-16x16.png differ diff --git a/public/favicon-32x32.png b/public/favicon-32x32.png new file mode 100644 index 00000000..7c531eb0 Binary files /dev/null and b/public/favicon-32x32.png differ diff --git a/public/favicon.ico b/public/favicon.ico deleted file mode 100644 index 5e6e409d..00000000 Binary files a/public/favicon.ico and /dev/null differ diff --git a/public/homepage.ico b/public/homepage.ico new file mode 100644 index 00000000..5ffe0eb4 Binary files /dev/null and b/public/homepage.ico differ diff --git a/public/mstile-144x144.png b/public/mstile-144x144.png new file mode 100644 index 00000000..aa475b5f Binary files /dev/null and b/public/mstile-144x144.png differ diff --git a/public/mstile-150x150.png b/public/mstile-150x150.png new file mode 100644 index 00000000..e5725812 Binary files /dev/null and b/public/mstile-150x150.png differ diff --git a/public/mstile-310x150.png b/public/mstile-310x150.png new file mode 100644 index 00000000..2073f532 Binary files /dev/null and b/public/mstile-310x150.png differ diff --git a/public/mstile-310x310.png b/public/mstile-310x310.png new file mode 100644 index 00000000..eb0a6951 Binary files /dev/null and b/public/mstile-310x310.png differ diff --git a/public/mstile-70x70.png b/public/mstile-70x70.png new file mode 100644 index 00000000..3a51f9e2 Binary files /dev/null and b/public/mstile-70x70.png differ diff --git a/public/safari-pinned-tab.svg b/public/safari-pinned-tab.svg new file mode 100644 index 00000000..2b2878f3 --- /dev/null +++ b/public/safari-pinned-tab.svg @@ -0,0 +1,23 @@ + + + + +Created by potrace 1.14, written by Peter Selinger 2001-2017 + + + + + diff --git a/src/components/bookmarks/group.jsx b/src/components/bookmarks/group.jsx index d4c05663..1eb86e1a 100644 --- a/src/components/bookmarks/group.jsx +++ b/src/components/bookmarks/group.jsx @@ -3,9 +3,11 @@ import List from "components/bookmarks/list"; export default function BookmarksGroup({ group }) { return ( -

+

{group.name}

- + + +
); } diff --git a/src/components/favicon.jsx b/src/components/favicon.jsx new file mode 100644 index 00000000..13c19583 --- /dev/null +++ b/src/components/favicon.jsx @@ -0,0 +1,114 @@ +/* eslint-disable @next/next/no-img-element */ +/* eslint-disable jsx-a11y/alt-text */ +import { useRef, useEffect, useContext } from "react"; + +import themes from "utils/styles/themes"; +import { ColorContext } from "utils/contexts/color"; + +export function Svg({ svgRef = null }) { + const { color } = useContext(ColorContext); + + const { iconStart, iconEnd } = themes[color]; + + return ( + + + + + + + + + + + + ); +} + +export default function Favicon() { + const svgRef = useRef(); + const imgRef = useRef(); + const canvasRef = useRef(); + + useEffect(() => { + const svg = svgRef.current; + const img = imgRef.current; + const canvas = canvasRef.current; + + if (!svg || !img || !canvas) { + return; + } + + const xml = new XMLSerializer().serializeToString(svg); + + const svg64 = Buffer.from(xml).toString("base64"); + const b64Start = "data:image/svg+xml;base64,"; + + // prepend a "header" + const image64 = b64Start + svg64; + + // set it as the source of the img element + img.onload = () => { + // draw the image onto the canvas + canvas.getContext("2d").drawImage(img, 0, 0); + // canvas.width = 256; + // canvas.height = 256; + + const link = window.document.createElement("link"); + link.type = "image/x-icon"; + link.rel = "shortcut icon"; + link.href = canvas.toDataURL("image/x-icon"); + document.getElementsByTagName("head")[0].appendChild(link); + }; + + img.src = image64; + }, []); + + return ( +
+ + + +
+ ); +} diff --git a/src/components/widgets/logo/logo.jsx b/src/components/widgets/logo/logo.jsx new file mode 100644 index 00000000..198944b9 --- /dev/null +++ b/src/components/widgets/logo/logo.jsx @@ -0,0 +1,56 @@ +export default function Logo() { + return ( +
+ + + + + + + + + + + +
+ ); +} diff --git a/src/components/widgets/openweathermap/weather.jsx b/src/components/widgets/openweathermap/weather.jsx index 61d6229d..6a1f2a16 100644 --- a/src/components/widgets/openweathermap/weather.jsx +++ b/src/components/widgets/openweathermap/weather.jsx @@ -16,9 +16,9 @@ function Widget({ options }) { if (error || data?.cod === 401 || data?.error) { return ( -
+
-
+
{t("widget.api_error")} @@ -32,9 +32,9 @@ function Widget({ options }) { if (!data) { return ( -
+
-
+
@@ -49,9 +49,9 @@ function Widget({ options }) { const unit = options.units === "metric" ? "celsius" : "fahrenheit"; return ( -
+
-
+
data.sys.sunrise && data.dt < data.sys.sundown ? "day" : "night"} @@ -102,9 +102,13 @@ export default function OpenWeatherMap({ options }) { if (!location) { return ( -