diff --git a/README.md b/README.md
index d40aef0..62411fa 100644
--- a/README.md
+++ b/README.md
@@ -11,7 +11,7 @@ Az alábbi paraméterekkel szabályozhatod a `/badge` végpont működését:
| `icon` | `portainer` | A SimpleIcons ikon neve (kisbetű, kötőjellel). | `github`, `docker`, `nginx` |
| `label` | `Portainer` | A badge-en megjelenő szöveg. | `MyApp`, `Status` |
| `bg` | `#f0f0f0` | Háttérszín (hex vagy CSS színnév). | `#fff`, `#222`, `red` |
-| `color` | `#000000` | Szöveg színe (hex vagy CSS színnév). | `#333`, `white` |
+| `color` | `#000000` | Szöveg színe (hex vagy CSS színnév). Harmonizál az icon szinével ha nem kérünk külön. | `#333`, `white` |
| `size` | `24` | Ikon (és badge) magassága pixelben. | `16`, `32`, `64` |
| `labelpos` | `right` | Szöveg pozíciója az ikonhoz képest: `right`, `left`, `above`, `below`. | `left`, `above` |
| `fontweight`| `normal` | Szöveg vastagsága (`normal`, `bold`, `lighter`, szám is lehet pl. `600`). | `bold`, `600` |
diff --git a/index.js b/index.js
index 26032f3..8e74e13 100644
--- a/index.js
+++ b/index.js
@@ -24,6 +24,25 @@ app.get('/badge', async (req, res) => {
}
const iconSVG = iconResponse.data;
+ // Ha a color paraméter nincs megadva, próbáljuk kinyerni az ikon színét
+ let effectiveColor = color;
+ if (!req.query.color || req.query.color === '#000000') {
+ // Próbáljuk kinyerni az ikon fő színét a SimpleIcons API-ból
+ try {
+ const iconMetaUrl = `https://cdn.simpleicons.org/${icon}`;
+ const iconMetaResp = await axios.get(iconMetaUrl, { responseType: 'text' });
+ // Kikeressük az első "fill=" attribútumot
+ const match = iconMetaResp.data.match(/fill="([^"]+)"/);
+ if (match && match[1]) {
+ effectiveColor = match[1];
+ } else {
+ effectiveColor = "#222"; // fallback
+ }
+ } catch {
+ effectiveColor = "#222";
+ }
+ }
+
// Badge méretek
const padding = 10;
const iconSize = parseInt(size);
@@ -44,25 +63,25 @@ app.get('/badge', async (req, res) => {
height = padding * 2 + iconSize + textPadding + fontSize;
if (labelpos === 'above') {
// Szöveg felül, ikon alul
- textElem = `${label}`;
+ textElem = `${label}`;
iconGroup = `${iconSVG}`;
} else {
// Szöveg alul, ikon felül
iconGroup = `${iconSVG}`;
- textElem = `${label}`;
+ textElem = `${label}`;
}
} else if (labelpos === 'left') {
width = padding * 2 + iconSize + textPadding + textWidth;
height = Math.max(iconSize + padding * 2, fontSize + padding * 2);
// Szöveg balra, ikon jobbra (függőleges közép)
- textElem = `${label}`;
+ textElem = `${label}`;
iconGroup = `${iconSVG}`;
} else {
width = padding * 2 + iconSize + textPadding + textWidth;
height = Math.max(iconSize + padding * 2, fontSize + padding * 2);
// Alapértelmezett: ikon balra, szöveg jobbra (függőleges közép)
iconGroup = `${iconSVG}`;
- textElem = `${label}`;
+ textElem = `${label}`;
}
// SVG badge string összefűzéssel, szöveg árnyékkal