diff --git a/README.md b/README.md index bf32fdea5..c1f5e23fc 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 000000000..87bcd0a77 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 000000000..721446b81 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 7c9e882ca..000000000 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 9345a1f52..000000000 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 000000000..929a57a1d 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 000000000..3e94f341d 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 000000000..0a11f3dc8 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 000000000..8922842a0 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 000000000..7c531eb09 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 5e6e409dc..000000000 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 000000000..5ffe0eb4e 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 000000000..aa475b5ff 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 000000000..e5725812c 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 000000000..2073f5329 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 000000000..eb0a6951d 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 000000000..3a51f9e2a 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 000000000..2b2878f3a --- /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 d4c056635..1eb86e1a3 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 000000000..13c195837 --- /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 000000000..198944b93 --- /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 61d6229d2..6a1f2a16d 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 ( -