diff --git a/README.md b/README.md index bf32fdea5..303a5751a 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@

- - + +

@@ -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 @@ -156,6 +156,7 @@ Huge thanks to the all the contributors who have helped make this project what i - [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..554956a9a 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 ( -