From 625945d88f9ae516c7169dd7f7a35d3b780ae1ca Mon Sep 17 00:00:00 2001 From: Fabian Schieder Date: Sat, 28 Feb 2026 01:19:02 +0100 Subject: [PATCH] Add SVG logos for Gitea, Nextcloud, NAS, and Geizkragen; update index.php to use logos instead of icons --- icons/geizkragen.png | Bin 0 -> 11842 bytes icons/geizkragen.svg | 5 +++++ icons/gitea.svg | 31 +++++++++++++++++++++++++++++++ icons/nas.svg | 14 ++++++++++++++ icons/nextcloud.svg | 3 +++ icons/synology.svg | 1 + index.php | 36 +++++++++++++++++++++++++----------- style.css | 21 +++++++++++++++++++++ 8 files changed, 100 insertions(+), 11 deletions(-) create mode 100644 icons/geizkragen.png create mode 100644 icons/geizkragen.svg create mode 100644 icons/gitea.svg create mode 100644 icons/nas.svg create mode 100644 icons/nextcloud.svg create mode 100644 icons/synology.svg diff --git a/icons/geizkragen.png b/icons/geizkragen.png new file mode 100644 index 0000000000000000000000000000000000000000..6698b4a07aea06975225f2fda42761113d773b4f GIT binary patch literal 11842 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 lPu}uC60lYxA3hU`Oh*O&?Lr%P^8~<_P1`8 + + G + + diff --git a/icons/gitea.svg b/icons/gitea.svg new file mode 100644 index 0000000..9df6b83 --- /dev/null +++ b/icons/gitea.svg @@ -0,0 +1,31 @@ + + + + + + + + + + + + diff --git a/icons/nas.svg b/icons/nas.svg new file mode 100644 index 0000000..0937bbf --- /dev/null +++ b/icons/nas.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/icons/nextcloud.svg b/icons/nextcloud.svg new file mode 100644 index 0000000..cc0cdb6 --- /dev/null +++ b/icons/nextcloud.svg @@ -0,0 +1,3 @@ + + +image/svg+xml \ No newline at end of file diff --git a/icons/synology.svg b/icons/synology.svg new file mode 100644 index 0000000..1627dfd --- /dev/null +++ b/icons/synology.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/index.php b/index.php index 903e49b..3e46f17 100644 --- a/index.php +++ b/index.php @@ -5,14 +5,14 @@ $projects = [ "title" => "Gitea", "description" => "Mein privates Git-Repository – Quellcode, Projekte & mehr.", "url" => "/git", - "icon" => "fab fa-git-alt", - "color" => "#f97316" + "logo" => "icons/gitea.svg", + "color" => "#609926" ], [ "title" => "Nextcloud", "description" => "Meine persönliche Cloud – Dateien, Kalender & Kontakte.", "url" => "/nextcloud", - "icon" => "fas fa-cloud", + "logo" => "icons/nextcloud.svg", "color" => "#0082c9" ], ], @@ -21,8 +21,8 @@ $projects = [ "title" => "Geizkragen.store", "description" => "Schulprojekt – Ein Online-Shop für Schnäppchenjäger.", "url" => "https://geizkragen.store", - "icon" => "fas fa-store", - "color" => "#22c55e", + "logo" => "icons/geizkragen.png", + "color" => "#e8281e", "external" => true ], ], @@ -30,16 +30,16 @@ $projects = [ [ "title" => "Home Assistant", "description" => "Meine Smart-Home-Zentrale – Automatisierungen & Geräte.", - "url" => "https://homeassistant.fabianschieder.com", - "icon" => "fas fa-house-signal", - "color" => "#f59e0b", + "url" => "http://homeassistant.fabianschieder.com", + "logo" => "icons/homeassistant.svg", + "color" => "#18BCF2", "external" => true ], [ "title" => "NAS", "description" => "Mein Netzwerkspeicher – Daten & Backups.", - "url" => "https://nas.fabianschieder.com", - "icon" => "fas fa-server", + "url" => "http://nas.fabianschieder.com", + "logo" => "icons/nas.svg", "color" => "#a855f7", "external" => true ], @@ -86,7 +86,15 @@ $projects = [ style="--accent: ;" >
- + + <?= htmlspecialchars($project['title']) ?> Logo + + +

@@ -111,3 +119,9 @@ $projects = [ + + + + + + diff --git a/style.css b/style.css index 9bc4e9b..f65f170 100644 --- a/style.css +++ b/style.css @@ -179,6 +179,25 @@ section { background: rgba(255, 255, 255, 0.09); } +.card-logo { + width: 28px; + height: 28px; + object-fit: contain; +} + +.card-logo--invert { + filter: invert(1) brightness(1.8); +} + +.card-logo--bg { + width: 36px; + height: 36px; + border-radius: 6px; + background: #fff; + padding: 3px; + object-fit: contain; +} + /* ===== CARD BODY ===== */ .card-body { flex: 1; @@ -234,3 +253,5 @@ footer { } } + +