Compare commits
30 Commits
fix/carbon
...
feat/struc
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ee297afbf4 | ||
|
|
038e4dc73d | ||
|
|
6001d195a6 | ||
|
|
40482771fa | ||
|
|
34fef44222 | ||
|
|
3e2709e7a8 | ||
|
|
245033befc | ||
|
|
9949f663eb | ||
|
|
a579d41f45 | ||
|
|
293f67bcc8 | ||
|
|
2c71578fa1 | ||
|
|
a8a24ae364 | ||
|
|
73a75ae124 | ||
|
|
3a91838364 | ||
|
|
185e5fa075 | ||
|
|
a456697fbe | ||
|
|
5f33a8a401 | ||
|
|
699302e475 | ||
|
|
372d2bf652 | ||
|
|
97a870ca49 | ||
|
|
df229355fb | ||
|
|
0f3afe29fe | ||
|
|
6940dbeca5 | ||
|
|
0d7c599a3a | ||
|
|
b4f1a6385d | ||
|
|
ff3312bef1 | ||
|
|
a3b6c4765a | ||
|
|
da6c0b88b4 | ||
|
|
32a7c170a4 | ||
|
|
c355e76f91 |
3
.github/ISSUE_TEMPLATE/add_normal_icon.yml
vendored
@@ -10,16 +10,19 @@ body:
|
||||
Once you've submitted the issue, sombody from the team will review it, before adding a label which automatically creates a pull request with the other filetypes.
|
||||
If you submit a PNG icon, please note, that the SVG can not be generated from it.
|
||||
- type: input
|
||||
id: name
|
||||
attributes:
|
||||
label: Icon name
|
||||
description: The name has to be unique and should be kebab-case.
|
||||
placeholder: e.g. "icon-name"
|
||||
- type: textarea
|
||||
id: icon
|
||||
attributes:
|
||||
label: Paste icon
|
||||
description: |
|
||||
Please paste the icon here. It will automatically upload it to github.
|
||||
- type: dropdown
|
||||
id: type
|
||||
attributes:
|
||||
label: Icon type
|
||||
options:
|
||||
|
||||
14
meta/buildium.json
Normal file
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"base": "svg",
|
||||
"aliases": [],
|
||||
"categories": [
|
||||
"Finance"
|
||||
],
|
||||
"update": {
|
||||
"timestamp": "2025-04-22T18:36:00.262663",
|
||||
"author": {
|
||||
"id": 41155244,
|
||||
"login": "giovannicalabro"
|
||||
}
|
||||
}
|
||||
}
|
||||
14
meta/calibre-web-automated-book-downloader.json
Normal file
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"base": "png",
|
||||
"aliases": [],
|
||||
"categories": [
|
||||
"Media"
|
||||
],
|
||||
"update": {
|
||||
"timestamp": "2025-04-22T17:31:36.311538",
|
||||
"author": {
|
||||
"id": 2319445,
|
||||
"login": "samcro1967"
|
||||
}
|
||||
}
|
||||
}
|
||||
14
meta/doplarr.json
Normal file
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"base": "svg",
|
||||
"aliases": [],
|
||||
"categories": [
|
||||
"Media"
|
||||
],
|
||||
"update": {
|
||||
"timestamp": "2025-04-22T17:34:50.612136",
|
||||
"author": {
|
||||
"id": 2319445,
|
||||
"login": "samcro1967"
|
||||
}
|
||||
}
|
||||
}
|
||||
14
meta/entergy.json
Normal file
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"base": "svg",
|
||||
"aliases": [],
|
||||
"categories": [
|
||||
"Finance"
|
||||
],
|
||||
"update": {
|
||||
"timestamp": "2025-04-22T18:33:50.980132",
|
||||
"author": {
|
||||
"id": 41155244,
|
||||
"login": "giovannicalabro"
|
||||
}
|
||||
}
|
||||
}
|
||||
12
meta/gone-man-switch.json
Normal file
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"base": "png",
|
||||
"aliases": [],
|
||||
"categories": [],
|
||||
"update": {
|
||||
"timestamp": "2025-04-22T17:37:06.429465",
|
||||
"author": {
|
||||
"id": 2319445,
|
||||
"login": "samcro1967"
|
||||
}
|
||||
}
|
||||
}
|
||||
14
meta/image-maid.json
Normal file
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"base": "png",
|
||||
"aliases": [],
|
||||
"categories": [
|
||||
"Media"
|
||||
],
|
||||
"update": {
|
||||
"timestamp": "2025-04-22T18:22:01.834809",
|
||||
"author": {
|
||||
"id": 2319445,
|
||||
"login": "samcro1967"
|
||||
}
|
||||
}
|
||||
}
|
||||
14
meta/karaoke-eternal.json
Normal file
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"base": "png",
|
||||
"aliases": [],
|
||||
"categories": [
|
||||
"Media"
|
||||
],
|
||||
"update": {
|
||||
"timestamp": "2025-04-22T17:43:20.146082",
|
||||
"author": {
|
||||
"id": 2319445,
|
||||
"login": "samcro1967"
|
||||
}
|
||||
}
|
||||
}
|
||||
16
meta/librechat.json
Normal file
@@ -0,0 +1,16 @@
|
||||
{
|
||||
"base": "svg",
|
||||
"aliases": [
|
||||
"libre-chat"
|
||||
],
|
||||
"categories": [
|
||||
"Development"
|
||||
],
|
||||
"update": {
|
||||
"timestamp": "2025-04-22T19:10:20.864971",
|
||||
"author": {
|
||||
"id": 1473979,
|
||||
"login": "lukacat10"
|
||||
}
|
||||
}
|
||||
}
|
||||
14
meta/loxone-full.json
Normal file
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"base": "svg",
|
||||
"aliases": [],
|
||||
"categories": [
|
||||
"Hardware"
|
||||
],
|
||||
"update": {
|
||||
"timestamp": "2025-04-22T18:55:13.785687",
|
||||
"author": {
|
||||
"id": 63781622,
|
||||
"login": "Meierschlumpf"
|
||||
}
|
||||
}
|
||||
}
|
||||
14
meta/loxone.json
Normal file
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"base": "svg",
|
||||
"aliases": [],
|
||||
"categories": [
|
||||
"Hardware"
|
||||
],
|
||||
"update": {
|
||||
"timestamp": "2025-04-22T18:51:42.311628",
|
||||
"author": {
|
||||
"id": 39389502,
|
||||
"login": "TeHtloTs"
|
||||
}
|
||||
}
|
||||
}
|
||||
14
meta/marzban.json
Normal file
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"base": "png",
|
||||
"aliases": [],
|
||||
"categories": [
|
||||
"Security"
|
||||
],
|
||||
"update": {
|
||||
"timestamp": "2025-04-22T17:17:13.363083",
|
||||
"author": {
|
||||
"id": 27157792,
|
||||
"login": "nazarukroman"
|
||||
}
|
||||
}
|
||||
}
|
||||
14
meta/noisedash.json
Normal file
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"base": "svg",
|
||||
"aliases": [],
|
||||
"categories": [
|
||||
"Media"
|
||||
],
|
||||
"update": {
|
||||
"timestamp": "2025-04-22T17:48:13.427885",
|
||||
"author": {
|
||||
"id": 2319445,
|
||||
"login": "samcro1967"
|
||||
}
|
||||
}
|
||||
}
|
||||
17
meta/pangolin.json
Normal file
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"base": "svg",
|
||||
"aliases": [
|
||||
"pangolin",
|
||||
"pangolin-newt"
|
||||
],
|
||||
"categories": [
|
||||
"Cloud"
|
||||
],
|
||||
"update": {
|
||||
"timestamp": "2025-04-22T18:57:05.718417",
|
||||
"author": {
|
||||
"id": 7034912,
|
||||
"login": "leodr99"
|
||||
}
|
||||
}
|
||||
}
|
||||
14
meta/pretix.json
Normal file
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"base": "svg",
|
||||
"aliases": [],
|
||||
"categories": [
|
||||
"E-Commerce"
|
||||
],
|
||||
"update": {
|
||||
"timestamp": "2025-04-22T18:58:38.751308",
|
||||
"author": {
|
||||
"id": 1832823,
|
||||
"login": "alemairebe"
|
||||
}
|
||||
}
|
||||
}
|
||||
12
meta/recyclarr.json
Normal file
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"base": "svg",
|
||||
"aliases": [],
|
||||
"categories": [],
|
||||
"update": {
|
||||
"timestamp": "2025-04-22T19:06:08.669890",
|
||||
"author": {
|
||||
"id": 100090983,
|
||||
"login": "Dan-Ev"
|
||||
}
|
||||
}
|
||||
}
|
||||
12
meta/release-argus.json
Normal file
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"base": "svg",
|
||||
"aliases": [],
|
||||
"categories": [],
|
||||
"update": {
|
||||
"timestamp": "2025-04-22T17:25:54.525668",
|
||||
"author": {
|
||||
"id": 2319445,
|
||||
"login": "samcro1967"
|
||||
}
|
||||
}
|
||||
}
|
||||
14
meta/series-troxide.json
Normal file
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"base": "svg",
|
||||
"aliases": [],
|
||||
"categories": [
|
||||
"Media"
|
||||
],
|
||||
"update": {
|
||||
"timestamp": "2025-04-22T18:25:38.709896",
|
||||
"author": {
|
||||
"id": 2319445,
|
||||
"login": "samcro1967"
|
||||
}
|
||||
}
|
||||
}
|
||||
14
meta/stream-harvestarr.json
Normal file
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"base": "png",
|
||||
"aliases": [],
|
||||
"categories": [
|
||||
"Media"
|
||||
],
|
||||
"update": {
|
||||
"timestamp": "2025-04-22T18:28:27.157439",
|
||||
"author": {
|
||||
"id": 2319445,
|
||||
"login": "samcro1967"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"base": "svg",
|
||||
"aliases": [
|
||||
"vodacom"
|
||||
"vodafone"
|
||||
],
|
||||
"categories": [],
|
||||
"update": {
|
||||
@@ -11,4 +11,4 @@
|
||||
"login": "JonasJoKuJonas"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
14
meta/watchlistarr.json
Normal file
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"base": "png",
|
||||
"aliases": [],
|
||||
"categories": [
|
||||
"Media"
|
||||
],
|
||||
"update": {
|
||||
"timestamp": "2025-04-22T18:31:18.100212",
|
||||
"author": {
|
||||
"id": 2319445,
|
||||
"login": "samcro1967"
|
||||
}
|
||||
}
|
||||
}
|
||||
267
metadata.json
@@ -466,6 +466,20 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"loxone": {
|
||||
"base": "svg",
|
||||
"aliases": [],
|
||||
"categories": [
|
||||
"Hardware"
|
||||
],
|
||||
"update": {
|
||||
"timestamp": "2025-04-22T18:51:42.311628",
|
||||
"author": {
|
||||
"id": 39389502,
|
||||
"login": "TeHtloTs"
|
||||
}
|
||||
}
|
||||
},
|
||||
"nginx": {
|
||||
"base": "svg",
|
||||
"aliases": [
|
||||
@@ -3988,6 +4002,20 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"image-maid": {
|
||||
"base": "png",
|
||||
"aliases": [],
|
||||
"categories": [
|
||||
"Media"
|
||||
],
|
||||
"update": {
|
||||
"timestamp": "2025-04-22T18:22:01.834809",
|
||||
"author": {
|
||||
"id": 2319445,
|
||||
"login": "samcro1967"
|
||||
}
|
||||
}
|
||||
},
|
||||
"infisical": {
|
||||
"base": "svg",
|
||||
"aliases": [],
|
||||
@@ -13906,6 +13934,20 @@
|
||||
"light": "libreddit-light"
|
||||
}
|
||||
},
|
||||
"karaoke-eternal": {
|
||||
"base": "png",
|
||||
"aliases": [],
|
||||
"categories": [
|
||||
"Media"
|
||||
],
|
||||
"update": {
|
||||
"timestamp": "2025-04-22T17:43:20.146082",
|
||||
"author": {
|
||||
"id": 2319445,
|
||||
"login": "samcro1967"
|
||||
}
|
||||
}
|
||||
},
|
||||
"google-compute-engine": {
|
||||
"base": "svg",
|
||||
"aliases": [],
|
||||
@@ -14801,6 +14843,18 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"recyclarr": {
|
||||
"base": "svg",
|
||||
"aliases": [],
|
||||
"categories": [],
|
||||
"update": {
|
||||
"timestamp": "2025-04-22T19:06:08.669890",
|
||||
"author": {
|
||||
"id": 100090983,
|
||||
"login": "Dan-Ev"
|
||||
}
|
||||
}
|
||||
},
|
||||
"synology-surveillance-station": {
|
||||
"base": "png",
|
||||
"aliases": [],
|
||||
@@ -15469,6 +15523,20 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"loxone-full": {
|
||||
"base": "svg",
|
||||
"aliases": [],
|
||||
"categories": [
|
||||
"Hardware"
|
||||
],
|
||||
"update": {
|
||||
"timestamp": "2025-04-22T18:55:13.785687",
|
||||
"author": {
|
||||
"id": 63781622,
|
||||
"login": "Meierschlumpf"
|
||||
}
|
||||
}
|
||||
},
|
||||
"microsoft-access": {
|
||||
"base": "svg",
|
||||
"aliases": [],
|
||||
@@ -16213,6 +16281,20 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"calibre-web-automated-book-downloader": {
|
||||
"base": "png",
|
||||
"aliases": [],
|
||||
"categories": [
|
||||
"Media"
|
||||
],
|
||||
"update": {
|
||||
"timestamp": "2025-04-22T17:31:36.311538",
|
||||
"author": {
|
||||
"id": 2319445,
|
||||
"login": "samcro1967"
|
||||
}
|
||||
}
|
||||
},
|
||||
"rstudio": {
|
||||
"base": "svg",
|
||||
"aliases": [],
|
||||
@@ -18715,6 +18797,20 @@
|
||||
"light": "5etools"
|
||||
}
|
||||
},
|
||||
"buildium": {
|
||||
"base": "svg",
|
||||
"aliases": [],
|
||||
"categories": [
|
||||
"Finance"
|
||||
],
|
||||
"update": {
|
||||
"timestamp": "2025-04-22T18:36:00.262663",
|
||||
"author": {
|
||||
"id": 41155244,
|
||||
"login": "giovannicalabro"
|
||||
}
|
||||
}
|
||||
},
|
||||
"element": {
|
||||
"base": "svg",
|
||||
"aliases": [],
|
||||
@@ -18739,6 +18835,20 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"pretix": {
|
||||
"base": "svg",
|
||||
"aliases": [],
|
||||
"categories": [
|
||||
"E-Commerce"
|
||||
],
|
||||
"update": {
|
||||
"timestamp": "2025-04-22T18:58:38.751308",
|
||||
"author": {
|
||||
"id": 1832823,
|
||||
"login": "alemairebe"
|
||||
}
|
||||
}
|
||||
},
|
||||
"azure-dns": {
|
||||
"base": "svg",
|
||||
"aliases": [],
|
||||
@@ -19219,6 +19329,23 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"pangolin": {
|
||||
"base": "svg",
|
||||
"aliases": [
|
||||
"pangolin",
|
||||
"pangolin-newt"
|
||||
],
|
||||
"categories": [
|
||||
"Cloud"
|
||||
],
|
||||
"update": {
|
||||
"timestamp": "2025-04-22T18:57:05.718417",
|
||||
"author": {
|
||||
"id": 7034912,
|
||||
"login": "leodr99"
|
||||
}
|
||||
}
|
||||
},
|
||||
"plume": {
|
||||
"base": "svg",
|
||||
"aliases": [],
|
||||
@@ -19477,6 +19604,20 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"watchlistarr": {
|
||||
"base": "png",
|
||||
"aliases": [],
|
||||
"categories": [
|
||||
"Media"
|
||||
],
|
||||
"update": {
|
||||
"timestamp": "2025-04-22T18:31:18.100212",
|
||||
"author": {
|
||||
"id": 2319445,
|
||||
"login": "samcro1967"
|
||||
}
|
||||
}
|
||||
},
|
||||
"xbrowsersync": {
|
||||
"base": "svg",
|
||||
"aliases": [],
|
||||
@@ -19868,6 +20009,20 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"series-troxide": {
|
||||
"base": "svg",
|
||||
"aliases": [],
|
||||
"categories": [
|
||||
"Media"
|
||||
],
|
||||
"update": {
|
||||
"timestamp": "2025-04-22T18:25:38.709896",
|
||||
"author": {
|
||||
"id": 2319445,
|
||||
"login": "samcro1967"
|
||||
}
|
||||
}
|
||||
},
|
||||
"reddit": {
|
||||
"base": "svg",
|
||||
"aliases": [],
|
||||
@@ -20754,6 +20909,20 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"stream-harvestarr": {
|
||||
"base": "png",
|
||||
"aliases": [],
|
||||
"categories": [
|
||||
"Media"
|
||||
],
|
||||
"update": {
|
||||
"timestamp": "2025-04-22T18:28:27.157439",
|
||||
"author": {
|
||||
"id": 2319445,
|
||||
"login": "samcro1967"
|
||||
}
|
||||
}
|
||||
},
|
||||
"sogo": {
|
||||
"base": "svg",
|
||||
"aliases": [],
|
||||
@@ -20909,7 +21078,7 @@
|
||||
"vodafone": {
|
||||
"base": "svg",
|
||||
"aliases": [
|
||||
"vodacom"
|
||||
"vodafone"
|
||||
],
|
||||
"categories": [],
|
||||
"update": {
|
||||
@@ -22110,6 +22279,20 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"doplarr": {
|
||||
"base": "svg",
|
||||
"aliases": [],
|
||||
"categories": [
|
||||
"Media"
|
||||
],
|
||||
"update": {
|
||||
"timestamp": "2025-04-22T17:34:50.612136",
|
||||
"author": {
|
||||
"id": 2319445,
|
||||
"login": "samcro1967"
|
||||
}
|
||||
}
|
||||
},
|
||||
"nextcloud-ncdownloader": {
|
||||
"base": "svg",
|
||||
"aliases": [],
|
||||
@@ -22434,6 +22617,22 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"librechat": {
|
||||
"base": "svg",
|
||||
"aliases": [
|
||||
"libre-chat"
|
||||
],
|
||||
"categories": [
|
||||
"Development"
|
||||
],
|
||||
"update": {
|
||||
"timestamp": "2025-04-22T19:10:20.864971",
|
||||
"author": {
|
||||
"id": 1473979,
|
||||
"login": "lukacat10"
|
||||
}
|
||||
}
|
||||
},
|
||||
"huawei": {
|
||||
"base": "svg",
|
||||
"aliases": [],
|
||||
@@ -24968,6 +25167,20 @@
|
||||
"light": "javascript-light"
|
||||
}
|
||||
},
|
||||
"marzban": {
|
||||
"base": "png",
|
||||
"aliases": [],
|
||||
"categories": [
|
||||
"Security"
|
||||
],
|
||||
"update": {
|
||||
"timestamp": "2025-04-22T17:17:13.363083",
|
||||
"author": {
|
||||
"id": 27157792,
|
||||
"login": "nazarukroman"
|
||||
}
|
||||
}
|
||||
},
|
||||
"oracle": {
|
||||
"base": "svg",
|
||||
"aliases": [],
|
||||
@@ -25072,6 +25285,20 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"entergy": {
|
||||
"base": "svg",
|
||||
"aliases": [],
|
||||
"categories": [
|
||||
"Finance"
|
||||
],
|
||||
"update": {
|
||||
"timestamp": "2025-04-22T18:33:50.980132",
|
||||
"author": {
|
||||
"id": 41155244,
|
||||
"login": "giovannicalabro"
|
||||
}
|
||||
}
|
||||
},
|
||||
"graylog": {
|
||||
"base": "svg",
|
||||
"aliases": [],
|
||||
@@ -25638,6 +25865,18 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"release-argus": {
|
||||
"base": "svg",
|
||||
"aliases": [],
|
||||
"categories": [],
|
||||
"update": {
|
||||
"timestamp": "2025-04-22T17:25:54.525668",
|
||||
"author": {
|
||||
"id": 2319445,
|
||||
"login": "samcro1967"
|
||||
}
|
||||
}
|
||||
},
|
||||
"synology-calendar": {
|
||||
"base": "png",
|
||||
"aliases": [],
|
||||
@@ -26490,6 +26729,20 @@
|
||||
"light": "windows-95-light"
|
||||
}
|
||||
},
|
||||
"noisedash": {
|
||||
"base": "svg",
|
||||
"aliases": [],
|
||||
"categories": [
|
||||
"Media"
|
||||
],
|
||||
"update": {
|
||||
"timestamp": "2025-04-22T17:48:13.427885",
|
||||
"author": {
|
||||
"id": 2319445,
|
||||
"login": "samcro1967"
|
||||
}
|
||||
}
|
||||
},
|
||||
"pgbackweb": {
|
||||
"base": "svg",
|
||||
"aliases": [],
|
||||
@@ -26518,6 +26771,18 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"gone-man-switch": {
|
||||
"base": "png",
|
||||
"aliases": [],
|
||||
"categories": [],
|
||||
"update": {
|
||||
"timestamp": "2025-04-22T17:37:06.429465",
|
||||
"author": {
|
||||
"id": 2319445,
|
||||
"login": "samcro1967"
|
||||
}
|
||||
}
|
||||
},
|
||||
"gentoo-linux": {
|
||||
"base": "svg",
|
||||
"aliases": [],
|
||||
|
||||
BIN
png/buildium.png
Normal file
|
After Width: | Height: | Size: 3.0 KiB |
BIN
png/calibre-web-automated-book-downloader.png
Normal file
|
After Width: | Height: | Size: 36 KiB |
BIN
png/doplarr.png
Normal file
|
After Width: | Height: | Size: 23 KiB |
BIN
png/entergy.png
Normal file
|
After Width: | Height: | Size: 18 KiB |
BIN
png/gone-man-switch.png
Normal file
|
After Width: | Height: | Size: 5.5 KiB |
BIN
png/image-maid.png
Normal file
|
After Width: | Height: | Size: 32 KiB |
BIN
png/karaoke-eternal.png
Normal file
|
After Width: | Height: | Size: 44 KiB |
BIN
png/librechat.png
Normal file
|
After Width: | Height: | Size: 34 KiB |
BIN
png/loxone-full.png
Normal file
|
After Width: | Height: | Size: 22 KiB |
BIN
png/loxone.png
Normal file
|
After Width: | Height: | Size: 4.0 KiB |
BIN
png/marzban.png
Normal file
|
After Width: | Height: | Size: 33 KiB |
BIN
png/noisedash.png
Normal file
|
After Width: | Height: | Size: 13 KiB |
BIN
png/pangolin.png
Normal file
|
After Width: | Height: | Size: 8.6 KiB |
BIN
png/pretix.png
Normal file
|
After Width: | Height: | Size: 5.2 KiB |
BIN
png/recyclarr.png
Normal file
|
After Width: | Height: | Size: 15 KiB |
BIN
png/release-argus.png
Normal file
|
After Width: | Height: | Size: 18 KiB |
BIN
png/series-troxide.png
Normal file
|
After Width: | Height: | Size: 27 KiB |
BIN
png/stream-harvestarr.png
Normal file
|
After Width: | Height: | Size: 169 KiB |
BIN
png/watchlistarr.png
Normal file
|
After Width: | Height: | Size: 199 KiB |
21
svg/buildium.svg
Normal file
@@ -0,0 +1,21 @@
|
||||
<svg xmlns:x="ns_extend;" xmlns:i="ns_ai;" xmlns:graph="ns_graphs;" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="Layer_1" x="0px" y="0px" style="enable-background:new 0 0 100 100;" xml:space="preserve" viewBox="0 0 100 100">
|
||||
<style type="text/css">
|
||||
.st0{fill:#70B37F;}
|
||||
</style>
|
||||
<metadata>
|
||||
<sfw xmlns="ns_sfw;">
|
||||
<slices>
|
||||
</slices>
|
||||
<sliceSourceBounds bottomLeftOrigin="true" height="100" width="100" x="-125.6" y="67.8">
|
||||
</sliceSourceBounds>
|
||||
</sfw>
|
||||
</metadata>
|
||||
<g>
|
||||
<g>
|
||||
<g>
|
||||
<path class="st0" d="M0,0v100h100V0H0z M54.4,49v34l-16.6-5c-1.1-0.3-2-1.6-2-2.7V49h-7l20.8-26.2c0.7-0.9,2.3-1.8,3.4-2.1 l18.2-4.4L45.4,49H54.4z">
|
||||
</path>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 743 B |
21
svg/doplarr.svg
Normal file
@@ -0,0 +1,21 @@
|
||||
<svg xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg" version="1.1" id="svg5" inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20, custom)" sodipodi:docname="logo.svg" inkscape:export-filename="/home/kiran/Projects/Clojure/Doplarr/logos/logo.png" inkscape:export-xdpi="300" inkscape:export-ydpi="300" viewBox="0 0 100 100">
|
||||
<sodipodi:namedview id="namedview7" pagecolor="#ffffff" bordercolor="#111111" borderopacity="1" inkscape:pageshadow="0" inkscape:pageopacity="0" inkscape:pagecheckerboard="true" inkscape:document-units="mm" showgrid="false" height="100mm" scale-x="1" inkscape:zoom="0.97213405" inkscape:cx="261.79517" inkscape:cy="523.07601" inkscape:window-width="1758" inkscape:window-height="1350" inkscape:window-x="3338" inkscape:window-y="66" inkscape:window-maximized="1" inkscape:current-layer="text1822"/>
|
||||
<defs id="defs2">
|
||||
<inkscape:path-effect effect="mirror_symmetry" start_point="28.682452,9.1988852" end_point="28.682452,90.801115" center_point="28.682452,50" id="path-effect20182" is_visible="true" lpeversion="1.1" mode="vertical" discard_orig_path="false" fuse_paths="false" oposite_fuse="false" split_items="false" split_open="false"/>
|
||||
</defs>
|
||||
<g inkscape:label="Layer 1" inkscape:groupmode="layer" id="layer1">
|
||||
<circle style="fill:#7289da;fill-opacity:1;stroke:none;stroke-width:0.262264;stroke-linecap:square;stroke-dasharray:1.5736, 0.262264" id="path866" cx="50" cy="50" r="50"/>
|
||||
<g aria-label="D" id="text1956" style="font-size:83.3059px;line-height:1.25;font-family:Impact;-inkscape-font-specification:'Impact, Normal';fill:#ffffff;stroke-width:2.08265" transform="matrix(0.92504678,0,0,0.92504678,71.71317,13.992208)">
|
||||
<path d="m -43.302405,5.9975786 h 12.813163 c 8.270931,0 13.857199,0.3796489 16.758804,1.1389467 2.928723,0.7592987 5.1523828,2.0067177 6.6709798,3.7422577 1.518597,1.735539 2.46772,3.674462 2.847369,5.816769 0.379649,2.115189 0.569474,6.291331 0.569474,12.528426 v 23.063695 c 0,5.911681 -0.284737,9.870881 -0.854211,11.877599 -0.542356,1.9796 -1.505038,3.538874 -2.888046,4.677821 -1.383008,1.11183 -3.0914288,1.898246 -5.1252648,2.359249 -2.033835,0.433885 -5.098147,0.650828 -9.192936,0.650828 h -21.599332 z" id="path23416" sodipodi:nodetypes="cscscsscccscc"/>
|
||||
</g>
|
||||
<path id="path21610" style="fill:#fffffe;stroke:#000000;stroke-width:0.264583" d="M 50.0178,51.760883 A 0.01779476,0.01779476 0 0 1 50,51.778673 0.01779476,0.01779476 0 0 1 49.9822,51.760883 0.01779476,0.01779476 0 0 1 50,51.743093 a 0.01779476,0.01779476 0 0 1 0.0178,0.01779 z"/>
|
||||
<path id="path21612" style="fill:#fffffe;stroke:#000000;stroke-width:0.264583" d="M 50.0178,51.760883 A 0.01779476,0.01779476 0 0 1 50,51.778673 0.01779476,0.01779476 0 0 1 49.9822,51.760883 0.01779476,0.01779476 0 0 1 50,51.743093 a 0.01779476,0.01779476 0 0 1 0.0178,0.01779 z"/>
|
||||
<g aria-label="λ" id="text24934" style="font-size:47.894px;line-height:1.25;font-family:Impact;-inkscape-font-specification:Impact;fill:#7289da;stroke-width:1.19735">
|
||||
<path d="m 38.342206,68.802139 5.168249,-28.50722 q 0.3274,-1.824088 0.3274,-3.016761 0,-1.473302 -1.941017,-1.473302 h -1.26283 v -4.88762 h 5.752893 q 4.770692,0 6.852023,1.052359 2.081331,1.052358 2.806289,3.507861 0.748344,2.432117 1.356373,8.325324 l 1.870859,17.773165 q 0.140315,1.520073 0.420944,1.870859 0.304014,0.327401 0.724958,0.327401 0.350786,0 1.239444,-0.04677 v 5.027935 q -2.736132,0.3274 -5.402107,0.3274 -4.560219,0 -4.934391,-5.355335 L 50.035077,45.322854 46.924773,68.802139 Z" id="path2772"/>
|
||||
</g>
|
||||
<g aria-label="(" id="text16135" style="font-size:89.8502px;line-height:1.25;font-family:'Times New Roman';-inkscape-font-specification:'Times New Roman, Normal';fill:#ffffff;stroke-width:2.24626" inkscape:path-effect="#path-effect20182" transform="translate(4.5800001,-0.28635574)">
|
||||
<path d="m 28.682452,89.464201 v 1.62327 C 24.265987,88.864614 20.580725,86.261532 17.626666,83.278225 13.414938,79.037249 10.168398,74.035822 7.8870448,68.273944 5.6056921,62.512066 4.4650158,56.530827 4.4650158,50.330228 c 0,-9.066914 2.2374804,-17.329505 6.7124412,-24.787774 4.474961,-7.487516 10.30996,-12.83992 17.504995,-16.0572134 v 1.8426314 c -3.597518,1.988872 -6.551577,4.708946 -8.862178,8.160223 -2.310601,3.451277 -4.036239,7.82387 -5.176916,13.117778 -1.140676,5.293908 -1.711014,10.821801 -1.711014,16.583679 0,6.259095 0.482594,11.947853 1.447781,17.066273 0.760451,4.036239 1.681767,7.268155 2.763947,9.695748 1.08218,2.456841 2.529961,4.811314 4.343344,7.063419 1.842631,2.252105 4.240977,4.401841 7.195036,6.449209 z m 33.475096,0 v 1.62327 c 4.416465,-2.222857 8.101727,-4.825939 11.055786,-7.809246 4.211728,-4.240976 7.458268,-9.242403 9.739621,-15.004281 2.281353,-5.761878 3.422029,-11.743117 3.422029,-17.943716 0,-9.066914 -2.23748,-17.329505 -6.712441,-24.787774 C 75.187582,18.054938 69.352583,12.702534 62.157548,9.4852406 v 1.8426314 c 3.597518,1.988872 6.551577,4.708946 8.862178,8.160223 2.310601,3.451277 4.036239,7.82387 5.176916,13.117778 1.140676,5.293908 1.711014,10.821801 1.711014,16.583679 0,6.259095 -0.482594,11.947853 -1.447781,17.066273 -0.760451,4.036239 -1.681767,7.268155 -2.763947,9.695748 -1.08218,2.456841 -2.529961,4.811314 -4.343344,7.063419 -1.842631,2.252105 -4.240977,4.401841 -7.195036,6.449209 z" id="path20161" inkscape:original-d="m 28.682452,89.464201 v 1.62327 Q 22.057755,87.753186 17.626666,83.278225 11.309074,76.916761 7.8870448,68.273944 4.4650158,59.631127 4.4650158,50.330228 q 0,-13.600371 6.7124412,-24.787774 Q 17.889899,14.31118 28.682452,9.4852406 v 1.8426314 q -5.396277,2.983308 -8.862178,8.160223 -3.465901,5.176916 -5.176916,13.117778 -1.711014,7.940862 -1.711014,16.583679 0,9.388643 1.447781,17.066273 1.140677,6.054359 2.763947,9.695748 1.62327,3.685262 4.343344,7.063419 2.763947,3.378157 7.195036,6.449209 z"/>
|
||||
</g>
|
||||
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 5.9 KiB |
14
svg/entergy.svg
Normal file
@@ -0,0 +1,14 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" viewBox="0 0.01 115.52 143.76">
|
||||
<title>horizLogo</title>
|
||||
<defs>
|
||||
<linearGradient x1="76.6452875%" y1="106.733429%" x2="28.7462587%" y2="3.49216114%" id="linearGradient-1">
|
||||
<stop stop-color="#8026FF" offset="25%"/>
|
||||
<stop stop-color="#FF1A58" offset="75%"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<g id="horizLogo" transform="translate(0.000000, 0.009657)" fill-rule="nonzero">
|
||||
<path d="M3.22,65.9903428 C7.36,48.9903428 20.85,39.4403428 38.69,39.4403428 C56.1,39.4403428 70.25,48.8003428 74.38,65.9903428 L3.22,65.9903428 Z M105.22,38.5203428 C95.0100528,20.8238516 78.1856989,7.91046115 58.4510992,2.62326895 C38.7164996,-2.66392325 17.6896641,0.108571645 1.42108547e-14,10.3303428 L9.71,27.1503428 C18.6760705,22.5434556 28.6302113,20.1922189 38.71,20.3003428 C72.66,20.3003428 96.16,44.2403428 96.16,76.8803428 L96.16,84.5003428 L2.57,84.5003428 C5.62,103.650343 19.98,114.310343 38.69,114.310343 C52.62,114.310343 62.41,109.960343 68.69,100.600343 L91.54,100.600343 C86.8570334,112.00133 78.2280851,121.336638 67.23,126.900343 L77,143.760343 C94.6992057,133.550362 107.614545,116.724187 112.901881,96.9871749 C118.189217,77.2501625 115.414946,56.220907 105.19,38.5303428 L105.22,38.5203428 Z" id="Shape" fill="url(#linearGradient-1)"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.5 KiB |
32
svg/librechat.svg
Normal file
@@ -0,0 +1,32 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" viewBox="39.31 0 433.4 512.01">
|
||||
<defs>
|
||||
<linearGradient id="linearGradient22708">
|
||||
<stop stop-color="#21facf" offset="0"/>
|
||||
<stop stop-color="#0970ef" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="linearGradient6949" x1="68.454" x2="198.59" y1="246.73" y2="96.35" gradientTransform="translate(-5.754,-56.594)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#72004e" offset="0"/>
|
||||
<stop stop-color="#0015b1" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="linearGradient22718" x1="56.735" x2="155.2" y1="246.96" y2="58.575" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#4f00da" offset="0"/>
|
||||
<stop stop-color="#e5311b" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="linearGradient23463" x1="68.454" x2="198.59" y1="246.73" y2="96.35" gradientUnits="userSpaceOnUse" xlink:href="#linearGradient22708"/>
|
||||
<linearGradient id="linearGradient903" x1="54.478" x2="192.1" y1="247.56" y2="9.8095" gradientTransform="matrix(.87923 0 0 .87923 -9.551 48.787)" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#dc180d" offset="0"/>
|
||||
<stop stop-color="#f96e20" offset=".5"/>
|
||||
<stop stop-color="#f4ce41" offset="1"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="linearGradient918" x1="39.468" x2="154.99" y1="204.22" y2="124.47" gradientUnits="userSpaceOnUse" xlink:href="#linearGradient22708"/>
|
||||
</defs>
|
||||
<g transform="matrix(2.473 0 0 2.473 -4.8978 -4.8812)">
|
||||
<path transform="translate(-5.5496,-57.412)" d="m148.16 59.393c-7.7098 9.3985-19.951 42.888-20.696 49.204-0.16994 4.6737 1.3731 14.231 0.67182 15.805-0.71909 1.6134-5.117-9.4461-7.2151-6.3266-12.219 18.168-10.7 17.731-15.582 31.378-1.8357 5.1315-0.42447 21.99-1.5666 23.773-1.273 1.9866-3.962-12.31-6.8063-9.236-11.603 12.54-16.279 20.379-22.336 30.607-3.3589 5.6725-2.1817 23.33-3.506 24.674-1.3023 1.3215-3.8566-18.326-7.6437-14.309-8.5193 9.038-14.054 13.441-18.946 19.252-5.1981 6.1739-0.78251 17.584-5.0672 35.383l0.1448 0.22073c77.447-50.308 101.52-127.16 107.61-181.19-0.68051 63.93-29.41 142.78-105.33 184.65l0.1127 0.17141c20.241-2.181 22.307 10.458 44.562-4.2837 55.792-48.277 81.856-124.29 61.593-199.78z" display="none" fill="url(#linearGradient903)"/>
|
||||
<path transform="translate(-5.5498,-57.412)" d="m148.16 59.393c-7.7098 9.3985-19.951 42.888-20.696 49.204-0.16994 4.6737 1.3731 14.231 0.67182 15.805-0.71909 1.6134-5.117-9.4461-7.2151-6.3266-12.219 18.168-10.7 17.731-15.582 31.378-1.8357 5.1315-0.42447 21.99-1.5666 23.773-1.273 1.9866-3.962-12.31-6.8063-9.236-11.603 12.54-16.279 20.379-22.336 30.607-3.3589 5.6725-2.1817 23.33-3.506 24.674-1.3023 1.3215-3.8566-18.326-7.6437-14.309-8.5193 9.038-14.054 13.441-18.946 19.252-5.1981 6.1739-0.78251 17.584-5.0672 35.383l0.1448 0.22073c77.447-50.308 101.52-127.16 107.61-181.19-0.68051 63.93-29.41 142.78-105.33 184.65l0.1127 0.17141c20.241-2.181 22.307 10.458 44.562-4.2837 55.792-48.277 81.856-124.29 61.593-199.78z" fill="url(#linearGradient918)"/>
|
||||
<g transform="translate(0 2.0218e-5)">
|
||||
<path transform="translate(-5.7543,-56.594)" d="m111.25 81.024c-48.394-1.5e-5 -87.625 39.231-87.625 87.625 0.0174 20.443 7.1818 40.236 20.253 55.954 0.2523-0.42224 0.53629-0.82423 0.85783-1.2061 4.892-5.8104 10.427-10.214 18.946-19.252 3.7871-4.0176 6.3412 15.63 7.6435 14.309 1.3243-1.3439 0.1473-19.001 3.5062-24.674 6.0563-10.228 10.733-18.067 22.336-30.607 2.8443-3.0741 5.5333 11.223 6.8063 9.2361 1.1421-1.7823-0.26941-18.641 1.5663-23.773 4.8819-13.647 3.3631-13.21 15.582-31.378 2.098-3.1195 6.496 7.9402 7.2151 6.3268 0.70126-1.5734-0.84173-11.131-0.67179-15.805 0.37161-3.1498 3.6036-13.059 7.7055-23.367-7.8432-2.2472-15.962-3.3881-24.12-3.3895zm43.142 11.356c5.5662 61.595-18.426 120.7-62.796 161.65 6.446 1.4857 13.04 2.2367 19.655 2.2386 48.394 1e-5 87.625-39.231 87.625-87.625-3.1e-4 -31.581-16.995-60.719-44.484-76.268z" display="none" fill="url(#linearGradient22718)"/>
|
||||
<path transform="translate(-5.754,-56.594)" d="m111.25 81.024c-48.394-1.5e-5 -87.625 39.231-87.625 87.625 0.0174 20.443 7.1818 40.236 20.253 55.954 0.2523-0.42224 0.53629-0.82423 0.85783-1.2061 4.892-5.8104 10.427-10.214 18.946-19.252 3.7871-4.0176 6.3412 15.63 7.6435 14.309 1.3243-1.3439 0.1473-19.001 3.5062-24.674 6.0563-10.228 10.733-18.067 22.336-30.607 2.8443-3.0741 5.5333 11.223 6.8063 9.2361 1.1421-1.7823-0.26941-18.641 1.5663-23.773 4.8819-13.647 3.3631-13.21 15.582-31.378 2.098-3.1195 6.496 7.9402 7.2151 6.3268 0.70126-1.5734-0.84173-11.131-0.67179-15.805 0.37161-3.1498 3.6036-13.059 7.7055-23.367-7.8432-2.2472-15.962-3.3881-24.12-3.3895zm43.142 11.356c5.5662 61.595-18.426 120.7-62.796 161.65 6.446 1.4857 13.04 2.2367 19.655 2.2386 48.394 1e-5 87.625-39.231 87.625-87.625-3.1e-4 -31.581-16.995-60.719-44.484-76.268z" display="none" fill="url(#linearGradient23463)"/>
|
||||
<path d="m105.5 24.43c-48.394-1.5e-5 -87.625 39.231-87.625 87.625 0.0174 20.443 7.1818 40.236 20.253 55.954 0.2523-0.42224 0.53629-0.82423 0.85783-1.2061 4.892-5.8104 10.427-10.214 18.946-19.252 3.7871-4.0176 6.3412 15.63 7.6435 14.309 1.3243-1.3439 0.1473-19.001 3.5062-24.674 6.0563-10.228 10.733-18.067 22.336-30.607 2.8443-3.0741 5.5333 11.223 6.8063 9.2361 1.1421-1.7823-0.26941-18.641 1.5663-23.773 4.8819-13.647 3.3631-13.21 15.582-31.378 2.098-3.1195 6.496 7.9402 7.2151 6.3268 0.70126-1.5734-0.84173-11.131-0.67179-15.805 0.37161-3.1498 3.6036-13.059 7.7055-23.367-7.8432-2.2472-15.962-3.3881-24.12-3.3895zm43.142 11.356c5.5662 61.595-18.426 120.7-62.796 161.65 6.446 1.4857 13.04 2.2367 19.655 2.2386 48.394 1e-5 87.625-39.231 87.625-87.625-3.1e-4 -31.581-16.995-60.719-44.484-76.268z" fill="url(#linearGradient6949)"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 5.6 KiB |
3
svg/loxone-full.svg
Normal file
@@ -0,0 +1,3 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 100 22.09">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M91.4149 18.1044V12.2562H96.9392V8.69613H91.4149V5.93341L90.1667 4.01636H92.8082H100V0.456299H87.6289V0.471142V4.01636V18.1044V19.7067L88.9035 21.6644H100V18.1044H91.4149ZM83.4455 21.6508H83.8794V0.471191H80.4177V15.7242L72.6247 0.471191H71.489H68.8387H68.0273V21.6508H71.489V5.65867L79.6594 21.6508H80.4177H83.4455ZM63.5224 18.7948C64.4444 17.1971 64.544 15.5118 64.544 14.8618V7.21299C64.5051 3.63618 62.7241 1.86947 61.2373 1.01732C59.6341 0.0989541 57.9447 0 57.2933 0H56.0908C52.5047 0.0384399 50.7329 1.81467 49.8784 3.29784C48.958 4.89632 48.8584 6.58083 48.8584 7.23126L48.8587 14.8804C48.8973 18.4572 50.6783 20.2236 52.1651 21.0761C53.7683 21.9941 55.4573 22.093 56.1091 22.093H57.2967H57.3062C60.8942 22.0534 62.6672 20.2776 63.5224 18.7948ZM61.1099 14.8617C61.1099 16.2661 60.6111 18.6265 57.2773 18.6676H56.1095C54.6998 18.6676 52.3292 18.171 52.293 14.8617V7.23122C52.293 5.82531 52.7917 3.46069 56.1095 3.42529H57.2937C58.703 3.42529 61.0744 3.92197 61.1099 7.23122V14.8617ZM44.0577 21.6861H48.2971L42.3396 12.5366L40.2197 15.7922L44.0577 21.6861ZM42.3396 9.62064L48.2971 0.471191H44.0577L40.2197 6.36505L42.3396 9.62064ZM41.3893 11.0787L34.482 0.471191H30.2422L37.1495 11.0787L30.2422 21.6862H34.482L41.3893 11.0787ZM28.6586 18.7948C29.5806 17.1971 29.6798 15.5118 29.6798 14.8618V7.21299C29.6416 3.63618 27.8602 1.86947 26.3731 1.01732C24.7703 0.0989541 23.0809 0 22.429 0H21.227C17.6405 0.0384399 15.869 1.81467 15.0146 3.29784C14.0937 4.89632 13.9941 6.58083 13.9941 7.23126V14.8804C14.0331 18.4572 15.8141 20.2236 17.3016 21.0761C18.904 21.9941 20.5931 22.093 21.2453 22.093H22.4329H22.442C26.0308 22.0534 27.8034 20.2776 28.6586 18.7948ZM26.2443 14.8617C26.2443 16.2661 25.7462 18.6265 22.4121 18.6676H21.2443C19.8346 18.6676 17.464 18.171 17.4277 14.8617V7.23122C17.4277 5.82531 17.9261 3.46069 21.2443 3.42529H22.4281C23.8382 3.42529 26.2092 3.92197 26.2443 7.23122V14.8617ZM1.25362 21.6644H12.3717V18.1044H3.78565V0.471133H0V18.1044V19.7398L1.25362 21.6644Z" fill="#69C350"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.1 KiB |
3
svg/loxone.svg
Normal file
@@ -0,0 +1,3 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 128 128">
|
||||
<rect fill="#69C350" width="128" height="128"/>
|
||||
<path xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" d="M91.4149 18.1044V12.2562H96.9392V8.69613H91.4149V5.93341L90.1667 4.01636H92.8082H100V0.456299H87.6289V0.471142V4.01636V18.1044V19.7067L88.9035 21.6644H100V18.1044H91.4149ZM83.4455 21.6508H83.8794V0.471191H80.4177V15.7242L72.6247 0.471191H71.489H68.8387H68.0273V21.6508H71.489V5.65867L79.6594 21.6508H80.4177H83.4455ZM63.5224 18.7948C64.4444 17.1971 64.544 15.5118 64.544 14.8618V7.21299C64.5051 3.63618 62.7241 1.86947 61.2373 1.01732C59.6341 0.0989541 57.9447 0 57.2933 0H56.0908C52.5047 0.0384399 50.7329 1.81467 49.8784 3.29784C48.958 4.89632 48.8584 6.58083 48.8584 7.23126L48.8587 14.8804C48.8973 18.4572 50.6783 20.2236 52.1651 21.0761C53.7683 21.9941 55.4573 22.093 56.1091 22.093H57.2967H57.3062C60.8942 22.0534 62.6672 20.2776 63.5224 18.7948ZM61.1099 14.8617C61.1099 16.2661 60.6111 18.6265 57.2773 18.6676H56.1095C54.6998 18.6676 52.3292 18.171 52.293 14.8617V7.23122C52.293 5.82531 52.7917 3.46069 56.1095 3.42529H57.2937C58.703 3.42529 61.0744 3.92197 61.1099 7.23122V14.8617ZM44.0577 21.6861H48.2971L42.3396 12.5366L40.2197 15.7922L44.0577 21.6861ZM42.3396 9.62064L48.2971 0.471191H44.0577L40.2197 6.36505L42.3396 9.62064ZM41.3893 11.0787L34.482 0.471191H30.2422L37.1495 11.0787L30.2422 21.6862H34.482L41.3893 11.0787ZM28.6586 18.7948C29.5806 17.1971 29.6798 15.5118 29.6798 14.8618V7.21299C29.6416 3.63618 27.8602 1.86947 26.3731 1.01732C24.7703 0.0989541 23.0809 0 22.429 0H21.227C17.6405 0.0384399 15.869 1.81467 15.0146 3.29784C14.0937 4.89632 13.9941 6.58083 13.9941 7.23126V14.8804C14.0331 18.4572 15.8141 20.2236 17.3016 21.0761C18.904 21.9941 20.5931 22.093 21.2453 22.093H22.4329H22.442C26.0308 22.0534 27.8034 20.2776 28.6586 18.7948ZM26.2443 14.8617C26.2443 16.2661 25.7462 18.6265 22.4121 18.6676H21.2443C19.8346 18.6676 17.464 18.171 17.4277 14.8617V7.23122C17.4277 5.82531 17.9261 3.46069 21.2443 3.42529H22.4281C23.8382 3.42529 26.2092 3.92197 26.2443 7.23122V14.8617ZM1.25362 21.6644H12.3717V18.1044H3.78565V0.471133H0V18.1044V19.7398L1.25362 21.6644Z" fill="#ffffff" style="transform: translate(14px, 53px);"/> </svg>
|
||||
|
After Width: | Height: | Size: 2.2 KiB |
1
svg/noisedash.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 87.5 100"><defs><style>.cls-1{fill:#1697f6;}.cls-2{fill:#7bc6ff;}.cls-3{fill:#1867c0;}.cls-4{fill:#aeddff;}</style></defs><title>Artboard 46</title><polyline class="cls-1" points="43.75 0 23.31 0 43.75 48.32"/><polygon class="cls-2" points="43.75 62.5 43.75 100 0 14.58 22.92 14.58 43.75 62.5"/><polyline class="cls-3" points="43.75 0 64.19 0 43.75 48.32"/><polygon class="cls-4" points="64.58 14.58 87.5 14.58 43.75 100 43.75 62.5 64.58 14.58"/></svg>
|
||||
|
After Width: | Height: | Size: 539 B |
1
svg/pangolin.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg" version="1.1" x="0px" y="0px" enable-background="new 0 0 419.528 419.528" xml:space="preserve" id="svg52" sodipodi:docname="pangolin_orange.svg" inkscape:version="1.2.2 (b0a8486541, 2022-12-01)" viewBox="18.18 30 360.87 338.3"><defs id="defs56"/><sodipodi:namedview id="namedview54" pagecolor="#ffffff" bordercolor="#666666" borderopacity="1.0" inkscape:showpageshadow="2" inkscape:pageopacity="0.0" inkscape:pagecheckerboard="0" inkscape:deskcolor="#d1d1d1" showgrid="false" inkscape:zoom="1.9583914" inkscape:cx="127.40048" inkscape:cy="262.71561" inkscape:window-width="1436" inkscape:window-height="1236" inkscape:window-x="2208" inkscape:window-y="511" inkscape:window-maximized="0" inkscape:current-layer="svg52"/><path d="m 62.232921,184.91974 c 0,2.431 -1.97,4.402 -4.399,4.402 -2.429,0 -4.399,-1.972 -4.399,-4.402 0,-2.429 1.97,-4.399 4.399,-4.399 2.429,-10e-4 4.399,1.97 4.399,4.399 z m 58.993999,-4.821 c -25.943999,-2.826 -38.978999,7.453 -71.181999,31.357 -27.572,20.467 -32.767,4.381 -31.748,-2.614 1.499,-10.282 25.222,-58.573 48.079,-88.461 28.273,7.34 49.869999,30.727 54.850999,59.718 z m -55.915999,4.821 c 0,-4.131 -3.349,-7.478 -7.478,-7.478 -4.129,0 -7.478,3.347 -7.478,7.478 0,4.131 3.349,7.481 7.478,7.481 4.13,0 7.478,-3.35 7.478,-7.481 z m -15.032,48.424 -0.234,14.041 20.413,22.687 -9.818,7.353 33.306,27.492 -11.759,8.124 42.631999,19.939 -10.825,9.747 48.291,8.078 -7.526,10.307 48.758,-4.531 -3.997,11.725 53.916,-18.153 -2.76,13.357 48.077,-34.345 1.479,13.562 34.087,-48.576 7.478,14.206 15.187,-58.89 10.391,8.533 -2.14,-57.884 13.814,5.13 -21.082,-51.204 13.404,0.048 -33.696,-42.131 15.312,-1.366 -47.026,-32.831002 14.255,-8.399 -54.817,-14.682 9.257,-11.695 -49.625,0.352 0.6,-13.337 -38.537,14.084 -1.597,-12.689 -29.984,21.429 -6.446,-10.852 -22.59,26.504 -7.021,-9.572 -18.923,30.294 -9.595999,-8.744 -16.754,30.138002 c 31.509999,10.197 54.979999,37.951 59.126999,71.547 0.404,0.087 -22.37,31.257 10.955,57.85 -0.576,-2.985 -6.113,-53.902 47.496,-57.61 26.668,-1.844 48.4,21.666 48.4,48.399 0,8.184 -2.05,15.883 -5.636,22.64 -15.927,29.611 -64.858,30.755 -80.429,30.596 -45.154,-0.459 -104.051999,-51.521 -104.051999,-51.521 z" id="path46" style="fill:#f97315;fill-opacity:1"/></svg>
|
||||
|
After Width: | Height: | Size: 2.4 KiB |
1
svg/pretix.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" version="1.1" viewBox="20.41 20.41 108.77 108.77"><g transform="matrix(.9375 0 0 .9375 20.413 20.413)"><path d="M45.52 48.98c-.74 0-1.28.13-1.75.27v17.43c.4.13.94.27 1.61.27 3.63 0 5.18-3.03 5.18-8.95s-1.35-9.02-5.05-9.02z" fill="#3b1c4a"/><path d="M114.72 36.13c.74-.07 1.28-.61 1.28-1.35V1.35c0-.74-.61-1.35-1.35-1.35H75.99v5.38c0 1.15-.94 2.09-2.09 2.09s-2.09-.94-2.09-2.09V0H1.35C.61 0 0 .61 0 1.35v33.44c0 .74.54 1.28 1.28 1.35 11.51.67 20.66 10.23 20.66 21.94s-9.15 21.2-20.66 21.8c-.74.07-1.28.61-1.28 1.35v33.44c0 .74.61 1.35 1.35 1.35h70.48v-5.38c0-1.19.9-2.09 2.09-2.09s2.09.94 2.09 2.09v5.38h38.66c.74 0 1.35-.61 1.35-1.35V81.23c0-.74-.54-1.28-1.28-1.35-11.51-.67-20.66-10.16-20.66-21.87s9.15-21.26 20.66-21.87zM47.87 72.87c-1.82 0-3.36-.2-4.1-.4v11.64H33.54V45.22C36.3 43.94 40 43 45.58 43c8.95 0 15.07 4.78 15.07 14.94 0 9.15-5.32 14.94-12.78 14.94zm28.12 25.3c0 1.15-.94 2.09-2.09 2.09s-2.09-.94-2.09-2.09V87.4c0-1.15.94-2.09 2.09-2.09s2.09.97 2.09 2.09zm0-23.28c0 1.11-.97 2.09-2.09 2.09-1.12 0-2.09-.97-2.09-2.09V64.12c0-1.19.9-2.09 2.09-2.09s2.09.94 2.09 2.09zm0-23.15c0 1.15-.94 2.09-2.09 2.09s-2.09-.94-2.09-2.09V40.97c0-1.15.94-2.09 2.09-2.09s2.09.97 2.09 2.09zm0-23.28c0 1.11-.97 2.09-2.09 2.09-1.12 0-2.09-.97-2.09-2.09V17.69c0-1.19.9-2.09 2.09-2.09s2.09.94 2.09 2.09z" fill="#3b1c4a"/></g></svg>
|
||||
|
After Width: | Height: | Size: 1.3 KiB |
17
svg/recyclarr.svg
Normal file
@@ -0,0 +1,17 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="Layer_1" x="0px" y="0px" style="enable-background:new 0 0 1920 1080;" xml:space="preserve" viewBox="762.04 306.21 401.81 459.59">
|
||||
<style type="text/css">
|
||||
.st0{fill:#FEFEFE;}
|
||||
.st1{fill:#6DB653;}
|
||||
</style>
|
||||
<g>
|
||||
|
||||
<path class="st1" d="M962.86,420.95c52.13,0,104.27,0,156.4,0c10.34,0,14.29,3.85,13.74,14.34c-1.15,21.76-2.65,43.5-3.95,65.25 c-2.45,41.02-4.84,82.04-7.29,123.06c-1.65,27.56-3.17,55.14-5.18,82.67c-0.66,9.09-0.13,18.37-2.71,27.25 c-4.62,15.89-15.62,25.12-31.1,30.06c-7.01,2.24-14.01,2.12-21.1,2.12c-69.12,0.02-138.25,0.31-207.37-0.18 c-19.52-0.14-38.4-11.46-43.69-32.65c-2.58-10.33-2.1-21.14-2.74-31.77c-2.07-34.04-4.33-68.06-6.44-102.09 c-1.25-20.08-2.28-40.18-3.54-60.27c-2.11-33.7-4.33-67.38-6.48-101.08c-0.3-4.66-0.56-9.23,3.16-13.08c2.82-2.91,6-3.7,9.87-3.69 C857.26,420.98,910.06,420.95,962.86,420.95z"/>
|
||||
<path class="st1" d="M962.25,392.98c-61.96,0-123.92-0.01-185.88,0.02c-3.37,0-6.8,0.07-9.6-1.97c-2.88-2.1-4.81-4.8-4.73-8.82 c0.2-8.82-0.02-17.65,0.04-26.48c0.09-11.44,9.18-20.45,20.72-20.46c31.81-0.04,63.63-0.05,95.44,0.05 c3.55,0.01,5.82-0.65,7.19-4.44c1.56-4.32,4.04-8.32,6.16-12.44c4.09-7.94,10.79-12.08,19.54-12.12 c34.14-0.16,68.29-0.13,102.43-0.02c8.63,0.03,15.23,4.16,19.45,11.67c2.43,4.32,4.76,8.77,6.42,13.41 c1.24,3.47,3.27,3.94,6.41,3.93c30.98-0.08,61.96-0.05,92.94-0.05c12.57,0,20.61,5.4,24.67,16.93c0.68,1.94,0.29,4.28,0.3,6.44 c0.03,6.66,0.01,13.32,0.01,19.99c0,9.54-4.85,14.36-14.63,14.36C1086.83,392.99,1024.54,392.98,962.25,392.98z"/>
|
||||
<path class="st0" d="M1043.97,491.95c-1.3,4.31-3.67,7.25-5.52,10.43c-6.34,10.87-12.72,21.72-19.06,32.59 c-1.48,2.54-3.04,4.4-6.56,4.2c-15.92-0.92-31.86-1.58-47.79-2.37c-0.23-0.01-0.45-0.39-0.95-0.85c3.67-3.41,8.24-5.36,12.51-7.6 c4.05-2.13,4.89-4.04,2.95-8.5c-7.91-18.24-17.55-35.23-32.58-48.7c1.6-1.76,3.36-1.07,4.91-1.07c15.8-0.03,31.61,0.03,47.41,0.06 c6.05,0.01,10.46,2.92,13.53,7.91c4.08,6.63,8.13,13.28,11.89,20.09c1.51,2.74,2.6,3.09,5.33,1.4 C1034.32,496.89,1038.48,493.93,1043.97,491.95z"/>
|
||||
<path class="st0" d="M875.62,638.11c-8.67-16.31-16.96-31.76-25.1-47.28c-2.8-5.35-1.77-10.7,1.14-15.7 c3.76-6.45,7.51-12.91,11.63-19.14c1.81-2.73,1.19-3.99-1.31-5.44c-4.36-2.53-8.6-5.25-12.7-7.78c11.2,0,22.22-0.06,33.24,0.02 c5.83,0.04,11.65,0.44,17.48,0.44c2.31,0,3.81,0.73,4.77,2.77c7,14.8,14.01,29.59,20.98,44.39c0.11,0.22-0.14,0.61-0.37,1.54 c-4.72-2.87-9.54-5.3-13.77-8.52c-3.14-2.39-4.76-1.51-6.87,1.04c-12.62,15.24-22.96,31.71-27.95,51.12 C876.63,636.18,876.26,636.73,875.62,638.11z"/>
|
||||
<path class="st0" d="M997.95,687.53c-4.01-3.79-5.57-7.62-7.73-11c-6.86-10.76-13.55-21.63-20.36-32.42 c-1.21-1.92-2.02-3.53-0.62-5.89c7.95-13.38,15.75-26.85,23.6-40.28c0.5-0.85,1.02-1.71,3.26-1.68c0,5.34-0.01,10.73,0,16.11 c0.01,2.02-0.16,4.13,2.77,4.36c17.63,1.37,35.19,1.77,52.47-2.99c0.64-0.18,1.27-0.41,1.92-0.55c2.48-0.5,5.28-3.59,7.14-1.47 c1.38,1.57-1.6,4.28-2.7,6.43c-6.48,12.66-13.09,25.26-19.63,37.9c-3.17,6.13-8.17,9.45-15.05,9.85 c-7.13,0.41-14.27,0.96-21.41,1.04c-3.55,0.04-4.77,1.33-4.52,4.72C997.47,676.54,997.64,681.43,997.95,687.53z"/>
|
||||
<path class="st0" d="M928.28,468.79c5.76-0.28,10.77,1.86,15.26,5.15c5.81,4.25,10.58,9.6,15.26,15.04 c1.54,1.8,1.66,3.17,0.36,5.28c-9.99,16.24-19.92,32.52-29.65,48.91c-2.01,3.39-3.45,4.42-7.25,2.06 c-11.41-7.09-23.05-13.8-34.71-20.47c-3.44-1.97-4.2-3.57-1.79-7.24c8.46-12.9,16.66-25.98,24.67-39.17 C914.61,471.49,920.49,468.55,928.28,468.79z"/>
|
||||
<path class="st0" d="M1074.28,583.98c-0.68,11.35-6.36,18.12-14.99,22.52c-6.37,3.25-13.48,4.6-20.34,6.54 c-1.8,0.51-3.04-0.08-4.06-1.86c-9.83-17.28-20.48-34.07-31.18-50.82c-1.66-2.61-0.71-3.79,1.47-5.14 c12.4-7.67,24.8-15.35,37.1-23.19c2.33-1.49,3.4-0.39,4.38,1.27c8.64,14.69,17.29,29.37,25.75,44.17 C1073.69,579.71,1074.51,582.38,1074.28,583.98z"/>
|
||||
<path class="st0" d="M953.01,630.07c-0.55,11.62-1.27,23.23-1.57,34.85c-0.1,3.74-1.61,4.48-4.85,4.25 c-16.41-1.17-32.83-2.14-49.24-3.37c-8.47-0.64-16.49-9.9-17.16-19.99c-0.67-10.23,3.25-19.52,6.78-28.84 c0.77-2.03,2.57-1.65,4.26-1.48c18.2,1.86,36.47,2.33,54.73,3.06c7.28,0.29,7.28,0.16,7.16,7.52c-0.02,1.33,0,2.66,0,3.99 C953.09,630.07,953.05,630.07,953.01,630.07z"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 4.2 KiB |
16
svg/release-argus.svg
Normal file
@@ -0,0 +1,16 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg" version="1.1" id="svg1" viewBox="4.5 0 58.74 67.73">
|
||||
<defs id="defs1">
|
||||
<linearGradient id="linearGradient4">
|
||||
<stop style="stop-color:#000000;stop-opacity:1;" offset="0" id="stop4"/>
|
||||
<stop style="stop-color:#000000;stop-opacity:0;" offset="1" id="stop5"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<g id="layer2">
|
||||
<rect style="fill:#0082c7;fill-opacity:1;stroke-width:78.4285" id="rect6" width="7.2357788" height="16.960531" x="37.661629" y="50.772774" rx="2.9794366"/>
|
||||
<rect style="fill:#0082c7;fill-opacity:1;stroke-width:78.4285" id="rect6-6" width="7.2357788" height="16.960531" x="22.835808" y="50.772804" rx="2.9794366"/>
|
||||
<ellipse style="fill:#0eabff;fill-opacity:1;stroke-width:63.9157" id="path6" cx="33.866619" cy="29.256916" rx="29.36875" ry="29.256916"/>
|
||||
<ellipse style="fill:#0081c7;fill-opacity:1;stroke-width:96.3698" id="path7-9" cx="33.866619" cy="29.256916" rx="27.95863" ry="19.221935"/>
|
||||
<ellipse style="fill:#ffffff;fill-opacity:1;stroke-width:82.2933" id="path7" cx="33.866619" cy="29.256916" rx="26.034615" ry="15.05247"/>
|
||||
<ellipse style="fill:#004970;fill-opacity:1;stroke-width:124.026" id="path8" cx="33.866619" cy="29.256916" rx="4.8238525" ry="4.8054838"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.3 KiB |
32
svg/series-troxide.svg
Normal file
@@ -0,0 +1,32 @@
|
||||
<svg xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg" version="1.1" id="svg1" inkscape:version="1.3 (0e150ed6c4, 2023-07-21)" sodipodi:docname="series-troxide.svg" inkscape:export-filename="series-troxide.png" inkscape:export-xdpi="179.29411" inkscape:export-ydpi="179.29411" viewBox="9.47 5.66 83.47 87.95">
|
||||
<sodipodi:namedview id="namedview1" pagecolor="#ffffff" bordercolor="#000000" borderopacity="0.25" inkscape:showpageshadow="2" inkscape:pageopacity="0.0" inkscape:pagecheckerboard="0" inkscape:deskcolor="#d1d1d1" inkscape:document-units="mm" inkscape:zoom="1.0721378" inkscape:cx="200.06757" inkscape:cy="226.18362" inkscape:window-width="1920" inkscape:window-height="1055" inkscape:window-x="0" inkscape:window-y="25" inkscape:window-maximized="1" inkscape:current-layer="layer2"/>
|
||||
<defs id="defs1">
|
||||
<inkscape:path-effect effect="skeletal" id="path-effect11" is_visible="true" lpeversion="1" pattern="M 0,4.9921382 C 0,2.2364779 2.2364779,0 4.9921382,0 c 2.7556604,0 4.9921383,2.2364779 4.9921383,4.9921382 0,2.7556604 -2.2364779,4.9921383 -4.9921383,4.9921383 C 2.2364779,9.9842765 0,7.7477986 0,4.9921382 Z" copytype="single_stretched" prop_scale="0.1221914" scale_y_rel="false" spacing="0" normal_offset="0" tang_offset="0" prop_units="false" vertical_pattern="false" hide_knot="false" fuse_tolerance="0"/>
|
||||
<inkscape:path-effect effect="skeletal" id="path-effect11-7" is_visible="true" lpeversion="1" pattern="M 0,4.9921382 C 0,2.2364779 2.2364779,0 4.9921382,0 c 2.7556604,0 4.9921383,2.2364779 4.9921383,4.9921382 0,2.7556604 -2.2364779,4.9921383 -4.9921383,4.9921383 C 2.2364779,9.9842765 0,7.7477986 0,4.9921382 Z" copytype="single_stretched" prop_scale="0.3067289" scale_y_rel="false" spacing="0" normal_offset="0" tang_offset="0" prop_units="false" vertical_pattern="false" hide_knot="false" fuse_tolerance="0"/>
|
||||
</defs>
|
||||
<g inkscape:groupmode="layer" id="layer7" inkscape:label="stand" style="display:inline">
|
||||
<ellipse style="fill:#b3b3b3;fill-opacity:1;stroke:#000000;stroke-width:0.362231" id="path10" cx="53.734413" cy="88.932671" rx="18.540586" ry="4.4936233"/>
|
||||
</g>
|
||||
<g inkscape:groupmode="layer" id="layer2" inkscape:label="body">
|
||||
<ellipse style="fill:#8f6593;fill-opacity:1;stroke:#000000;stroke-width:0.264583" id="path2" cx="53.173447" cy="59.926918" rx="39.631786" ry="31.20598"/>
|
||||
</g>
|
||||
<g inkscape:groupmode="layer" id="layer6" inkscape:label="right-antenna" transform="rotate(26.626716,63.663425,91.348082)" style="display:inline">
|
||||
<rect style="fill:#b3b3b3;stroke:#000000;stroke-width:0.264583" id="rect5" width="2.0064371" height="21.225708" x="27.764742" y="25.941788"/>
|
||||
<rect style="fill:#b3b3b3;stroke:#000000;stroke-width:0.264583" id="rect6" width="0.87785858" height="11.139125" x="28.320299" y="14.803336"/>
|
||||
<rect style="fill:#b3b3b3;stroke:#000000;stroke-width:0.264583" id="rect7" width="1.7391598" height="1.0371615" x="27.84543" y="13.598304"/>
|
||||
</g>
|
||||
<g inkscape:groupmode="layer" id="g10" inkscape:label="left-antenna" transform="matrix(0.78455439,-0.39703989,0.36681053,0.84921059,-42.959282,47.424815)" style="display:inline">
|
||||
<rect style="fill:#b3b3b3;stroke:#000000;stroke-width:0.264583" id="rect8" width="2.0064371" height="21.225708" x="88.477699" y="6.2007856"/>
|
||||
<rect style="fill:#b3b3b3;stroke:#000000;stroke-width:0.264583" id="rect9" width="0.87785858" height="11.139125" x="89.033257" y="-4.9376626"/>
|
||||
<rect style="fill:#b3b3b3;stroke:#000000;stroke-width:0.264583" id="rect10" width="1.7391598" height="1.0371615" x="88.558388" y="-6.142695"/>
|
||||
</g>
|
||||
<g inkscape:label="screen" inkscape:groupmode="layer" id="layer1" style="display:inline">
|
||||
<ellipse style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.264583" id="path3" cx="38.638641" cy="60.920479" rx="29.03672" ry="22.062567"/>
|
||||
<ellipse style="fill:#666666;stroke:#000000;stroke-width:0.247975" id="ellipse3" cx="38.034561" cy="60.978752" rx="27.778275" ry="20.257765"/>
|
||||
<path style="fill:#b3b3b3;fill-opacity:1;stroke:none;stroke-width:0.264583" d="m 34.697799,122.55314 c 0.01833,0.006 0.0316,0.0245 0.04135,0.0555 0,0 0,0 0,0 0.0092,0.0295 0.01472,0.0703 0.0168,0.12182 v 0 0 0 c 0.0042,0.10159 -0.005,0.24651 -0.02457,0.42892 v 0 c -0.03801,0.35347 -0.118996,0.87532 -0.215147,1.50114 v 0 c -0.185128,1.20614 -0.442822,2.88292 -0.559325,4.78641 -0.04494,0.75002 -0.07046,1.54169 -0.05525,2.34859 0.02287,1.21336 0.135161,2.31717 0.339835,3.3493 0,0 0,0 0,0 0.650332,3.24476 2.351371,5.07761 2.173869,5.2629 -0.149012,0.15556 -2.3584,-1.29697 -3.279062,-5.01429 0,0 0,0 0,0 -0.274838,-1.0998 -0.429558,-2.29119 -0.455419,-3.57407 -0.01726,-0.85628 0.02422,-1.68546 0.100139,-2.4653 0.190754,-1.9852 0.603085,-3.67762 0.988428,-4.87091 v 0 c 0.201418,-0.62408 0.395557,-1.10979 0.558632,-1.44128 v 0 c 0.08263,-0.16796 0.156338,-0.2943 0.218718,-0.37713 v 0 0 0 c 0.03135,-0.0416 0.05963,-0.0719 0.0846,-0.0907 0,0 0,0 0,0 0.02622,-0.0197 0.04803,-0.0268 0.06641,-0.0208 z" id="path11" inkscape:path-effect="#path-effect11" inkscape:original-d="m 34.697819,122.55308 c 0,0 -4.11305,12.26932 1.717536,17.85462" sodipodi:nodetypes="cc" transform="matrix(0.97122863,0.08809259,-0.09412623,0.90897134,-6.1653708,-61.757664)"/>
|
||||
</g>
|
||||
<g inkscape:groupmode="layer" id="layer3" inkscape:label="knob" style="display:inline">
|
||||
<ellipse style="fill:#000000;stroke:#000000;stroke-width:0.264583" id="ellipse10" cx="84.35968" cy="58.413628" rx="2.9122553" ry="4.9937477"/>
|
||||
<ellipse style="fill:#b3b3b3;stroke:#000000;stroke-width:0.22029" id="path4" cx="84.715714" cy="58.418968" rx="2.3879521" ry="4.2217774"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 5.6 KiB |
50
tree.json
@@ -225,6 +225,7 @@
|
||||
"budgetbee.png",
|
||||
"budibase.png",
|
||||
"buffalo.png",
|
||||
"buildium.png",
|
||||
"bunkerweb.png",
|
||||
"buxfer.png",
|
||||
"bytestash.png",
|
||||
@@ -237,6 +238,7 @@
|
||||
"cal-com.png",
|
||||
"calckey.png",
|
||||
"caldera.png",
|
||||
"calibre-web-automated-book-downloader.png",
|
||||
"calibre-web.png",
|
||||
"calibre.png",
|
||||
"camera-ui.png",
|
||||
@@ -440,6 +442,7 @@
|
||||
"domainmod.png",
|
||||
"domoticz.png",
|
||||
"donetick.png",
|
||||
"doplarr.png",
|
||||
"dopplertask.png",
|
||||
"double-commander.png",
|
||||
"double-take-dark.png",
|
||||
@@ -500,6 +503,7 @@
|
||||
"endless.png",
|
||||
"endurain.png",
|
||||
"enhance.png",
|
||||
"entergy.png",
|
||||
"epic-games-light.png",
|
||||
"epic-games.png",
|
||||
"epson-iprint.png",
|
||||
@@ -676,6 +680,7 @@
|
||||
"gogs.png",
|
||||
"gollum.png",
|
||||
"gomft.png",
|
||||
"gone-man-switch.png",
|
||||
"gonic.png",
|
||||
"goodreads.png",
|
||||
"google-admin.png",
|
||||
@@ -845,6 +850,7 @@
|
||||
"idrac.png",
|
||||
"ihatemoney.png",
|
||||
"ilo.png",
|
||||
"image-maid.png",
|
||||
"immich-frame-light.png",
|
||||
"immich-frame.png",
|
||||
"immich-kiosk-light.png",
|
||||
@@ -928,6 +934,7 @@
|
||||
"kapowarr.png",
|
||||
"karakeep-dark.png",
|
||||
"karakeep.png",
|
||||
"karaoke-eternal.png",
|
||||
"kasm-workspaces.png",
|
||||
"kasm.png",
|
||||
"kasten-k10.png",
|
||||
@@ -988,6 +995,7 @@
|
||||
"lemmy.png",
|
||||
"lemonldap-ng.png",
|
||||
"lets-encrypt.png",
|
||||
"librechat.png",
|
||||
"libreddit-light.png",
|
||||
"libreddit.png",
|
||||
"libremdb.png",
|
||||
@@ -1036,6 +1044,8 @@
|
||||
"logto.png",
|
||||
"loki.png",
|
||||
"longhorn.png",
|
||||
"loxone-full.png",
|
||||
"loxone.png",
|
||||
"lsio.png",
|
||||
"lua.png",
|
||||
"lubelogger.png",
|
||||
@@ -1068,6 +1078,7 @@
|
||||
"marginalia.png",
|
||||
"mariadb.png",
|
||||
"marktplaats.png",
|
||||
"marzban.png",
|
||||
"mastodon.png",
|
||||
"matomo.png",
|
||||
"matrix-light.png",
|
||||
@@ -1274,6 +1285,7 @@
|
||||
"nodebb.png",
|
||||
"nodejs-alt.png",
|
||||
"nodejs.png",
|
||||
"noisedash.png",
|
||||
"nomad.png",
|
||||
"nomie.png",
|
||||
"nordvpn.png",
|
||||
@@ -1406,6 +1418,7 @@
|
||||
"pairdrop.png",
|
||||
"palemoon.png",
|
||||
"palo-alto.png",
|
||||
"pangolin.png",
|
||||
"paperless-ng.png",
|
||||
"paperless-ngx.png",
|
||||
"paperless.png",
|
||||
@@ -1557,6 +1570,7 @@
|
||||
"powerpanel.png",
|
||||
"premium-mobile.png",
|
||||
"premiumize.png",
|
||||
"pretix.png",
|
||||
"prime-video-alt-dark.png",
|
||||
"prime-video-alt.png",
|
||||
"prime-video-light.png",
|
||||
@@ -1634,12 +1648,14 @@
|
||||
"receipt-wrangler.png",
|
||||
"recipesage.png",
|
||||
"recipya.png",
|
||||
"recyclarr.png",
|
||||
"reddit.png",
|
||||
"redict.png",
|
||||
"redis.png",
|
||||
"redlib-light.png",
|
||||
"redlib.png",
|
||||
"rekor.png",
|
||||
"release-argus.png",
|
||||
"remmina.png",
|
||||
"remotely.png",
|
||||
"renovate.png",
|
||||
@@ -1728,6 +1744,7 @@
|
||||
"sentry-light.png",
|
||||
"sentry.png",
|
||||
"seq.png",
|
||||
"series-troxide.png",
|
||||
"serpbear.png",
|
||||
"servarr-light.png",
|
||||
"servarr.png",
|
||||
@@ -1830,6 +1847,7 @@
|
||||
"storm.png",
|
||||
"stormkit.png",
|
||||
"strapi.png",
|
||||
"stream-harvestarr.png",
|
||||
"streama.png",
|
||||
"stremio.png",
|
||||
"stump-alt.png",
|
||||
@@ -2084,6 +2102,7 @@
|
||||
"watcharr-light.png",
|
||||
"watcharr.png",
|
||||
"watcher.png",
|
||||
"watchlistarr.png",
|
||||
"watchtower.png",
|
||||
"watchyourlan.png",
|
||||
"watchyourports.png",
|
||||
@@ -2392,6 +2411,7 @@
|
||||
"budgetbee-light.svg",
|
||||
"budgetbee.svg",
|
||||
"budibase.svg",
|
||||
"buildium.svg",
|
||||
"bunkerweb.svg",
|
||||
"bytestash.svg",
|
||||
"c.svg",
|
||||
@@ -2551,6 +2571,7 @@
|
||||
"dokemon.svg",
|
||||
"dokuwiki.svg",
|
||||
"donetick.svg",
|
||||
"doplarr.svg",
|
||||
"double-commander.svg",
|
||||
"double-take-dark.svg",
|
||||
"double-take.svg",
|
||||
@@ -2605,6 +2626,7 @@
|
||||
"endless.svg",
|
||||
"endurain.svg",
|
||||
"enhance.svg",
|
||||
"entergy.svg",
|
||||
"epic-games-light.svg",
|
||||
"epic-games.svg",
|
||||
"erste-george.svg",
|
||||
@@ -3027,6 +3049,7 @@
|
||||
"lemmy-light.svg",
|
||||
"lemmy.svg",
|
||||
"lets-encrypt.svg",
|
||||
"librechat.svg",
|
||||
"libreddit-light.svg",
|
||||
"libreddit.svg",
|
||||
"librenms.svg",
|
||||
@@ -3067,6 +3090,8 @@
|
||||
"logto.svg",
|
||||
"loki.svg",
|
||||
"longhorn.svg",
|
||||
"loxone-full.svg",
|
||||
"loxone.svg",
|
||||
"lua.svg",
|
||||
"lunasea.svg",
|
||||
"lynx-light.svg",
|
||||
@@ -3264,6 +3289,7 @@
|
||||
"nodebb.svg",
|
||||
"nodejs-alt.svg",
|
||||
"nodejs.svg",
|
||||
"noisedash.svg",
|
||||
"nomad.svg",
|
||||
"nomie.svg",
|
||||
"nordvpn.svg",
|
||||
@@ -3370,6 +3396,7 @@
|
||||
"pagerduty.svg",
|
||||
"palemoon.svg",
|
||||
"palo-alto.svg",
|
||||
"pangolin.svg",
|
||||
"paperless-ng.svg",
|
||||
"paperless-ngx.svg",
|
||||
"paperless.svg",
|
||||
@@ -3496,6 +3523,7 @@
|
||||
"powerbi.svg",
|
||||
"powerdns.svg",
|
||||
"premiumize.svg",
|
||||
"pretix.svg",
|
||||
"prime-video-alt-dark.svg",
|
||||
"prime-video-alt.svg",
|
||||
"prime-video-light.svg",
|
||||
@@ -3558,12 +3586,14 @@
|
||||
"recalbox.svg",
|
||||
"receipt-wrangler.svg",
|
||||
"recipesage.svg",
|
||||
"recyclarr.svg",
|
||||
"reddit.svg",
|
||||
"redict.svg",
|
||||
"redis.svg",
|
||||
"redlib-light.svg",
|
||||
"redlib.svg",
|
||||
"rekor.svg",
|
||||
"release-argus.svg",
|
||||
"remmina.svg",
|
||||
"renovate.svg",
|
||||
"reolink.svg",
|
||||
@@ -3635,6 +3665,7 @@
|
||||
"sensu.svg",
|
||||
"sentry-light.svg",
|
||||
"sentry.svg",
|
||||
"series-troxide.svg",
|
||||
"servarr-light.svg",
|
||||
"servarr.svg",
|
||||
"serviio-light.svg",
|
||||
@@ -4226,6 +4257,7 @@
|
||||
"budgetbee.webp",
|
||||
"budibase.webp",
|
||||
"buffalo.webp",
|
||||
"buildium.webp",
|
||||
"bunkerweb.webp",
|
||||
"buxfer.webp",
|
||||
"bytestash.webp",
|
||||
@@ -4238,6 +4270,7 @@
|
||||
"cal-com.webp",
|
||||
"calckey.webp",
|
||||
"caldera.webp",
|
||||
"calibre-web-automated-book-downloader.webp",
|
||||
"calibre-web.webp",
|
||||
"calibre.webp",
|
||||
"camera-ui.webp",
|
||||
@@ -4441,6 +4474,7 @@
|
||||
"domainmod.webp",
|
||||
"domoticz.webp",
|
||||
"donetick.webp",
|
||||
"doplarr.webp",
|
||||
"dopplertask.webp",
|
||||
"double-commander.webp",
|
||||
"double-take-dark.webp",
|
||||
@@ -4501,6 +4535,7 @@
|
||||
"endless.webp",
|
||||
"endurain.webp",
|
||||
"enhance.webp",
|
||||
"entergy.webp",
|
||||
"epic-games-light.webp",
|
||||
"epic-games.webp",
|
||||
"epson-iprint.webp",
|
||||
@@ -4677,6 +4712,7 @@
|
||||
"gogs.webp",
|
||||
"gollum.webp",
|
||||
"gomft.webp",
|
||||
"gone-man-switch.webp",
|
||||
"gonic.webp",
|
||||
"goodreads.webp",
|
||||
"google-admin.webp",
|
||||
@@ -4846,6 +4882,7 @@
|
||||
"idrac.webp",
|
||||
"ihatemoney.webp",
|
||||
"ilo.webp",
|
||||
"image-maid.webp",
|
||||
"immich-frame-light.webp",
|
||||
"immich-frame.webp",
|
||||
"immich-kiosk-light.webp",
|
||||
@@ -4929,6 +4966,7 @@
|
||||
"kapowarr.webp",
|
||||
"karakeep-dark.webp",
|
||||
"karakeep.webp",
|
||||
"karaoke-eternal.webp",
|
||||
"kasm-workspaces.webp",
|
||||
"kasm.webp",
|
||||
"kasten-k10.webp",
|
||||
@@ -4989,6 +5027,7 @@
|
||||
"lemmy.webp",
|
||||
"lemonldap-ng.webp",
|
||||
"lets-encrypt.webp",
|
||||
"librechat.webp",
|
||||
"libreddit-light.webp",
|
||||
"libreddit.webp",
|
||||
"libremdb.webp",
|
||||
@@ -5037,6 +5076,8 @@
|
||||
"logto.webp",
|
||||
"loki.webp",
|
||||
"longhorn.webp",
|
||||
"loxone-full.webp",
|
||||
"loxone.webp",
|
||||
"lsio.webp",
|
||||
"lua.webp",
|
||||
"lubelogger.webp",
|
||||
@@ -5069,6 +5110,7 @@
|
||||
"marginalia.webp",
|
||||
"mariadb.webp",
|
||||
"marktplaats.webp",
|
||||
"marzban.webp",
|
||||
"mastodon.webp",
|
||||
"matomo.webp",
|
||||
"matrix-light.webp",
|
||||
@@ -5275,6 +5317,7 @@
|
||||
"nodebb.webp",
|
||||
"nodejs-alt.webp",
|
||||
"nodejs.webp",
|
||||
"noisedash.webp",
|
||||
"nomad.webp",
|
||||
"nomie.webp",
|
||||
"nordvpn.webp",
|
||||
@@ -5407,6 +5450,7 @@
|
||||
"pairdrop.webp",
|
||||
"palemoon.webp",
|
||||
"palo-alto.webp",
|
||||
"pangolin.webp",
|
||||
"paperless-ng.webp",
|
||||
"paperless-ngx.webp",
|
||||
"paperless.webp",
|
||||
@@ -5558,6 +5602,7 @@
|
||||
"powerpanel.webp",
|
||||
"premium-mobile.webp",
|
||||
"premiumize.webp",
|
||||
"pretix.webp",
|
||||
"prime-video-alt-dark.webp",
|
||||
"prime-video-alt.webp",
|
||||
"prime-video-light.webp",
|
||||
@@ -5635,12 +5680,14 @@
|
||||
"receipt-wrangler.webp",
|
||||
"recipesage.webp",
|
||||
"recipya.webp",
|
||||
"recyclarr.webp",
|
||||
"reddit.webp",
|
||||
"redict.webp",
|
||||
"redis.webp",
|
||||
"redlib-light.webp",
|
||||
"redlib.webp",
|
||||
"rekor.webp",
|
||||
"release-argus.webp",
|
||||
"remmina.webp",
|
||||
"remotely.webp",
|
||||
"renovate.webp",
|
||||
@@ -5729,6 +5776,7 @@
|
||||
"sentry-light.webp",
|
||||
"sentry.webp",
|
||||
"seq.webp",
|
||||
"series-troxide.webp",
|
||||
"serpbear.webp",
|
||||
"servarr-light.webp",
|
||||
"servarr.webp",
|
||||
@@ -5831,6 +5879,7 @@
|
||||
"storm.webp",
|
||||
"stormkit.webp",
|
||||
"strapi.webp",
|
||||
"stream-harvestarr.webp",
|
||||
"streama.webp",
|
||||
"stremio.webp",
|
||||
"stump-alt.webp",
|
||||
@@ -6085,6 +6134,7 @@
|
||||
"watcharr-light.webp",
|
||||
"watcharr.webp",
|
||||
"watcher.webp",
|
||||
"watchlistarr.webp",
|
||||
"watchtower.webp",
|
||||
"watchyourlan.webp",
|
||||
"watchyourports.webp",
|
||||
|
||||
@@ -22,6 +22,9 @@
|
||||
"recommended": true,
|
||||
"suspicious": {
|
||||
"noArrayIndexKey": "off"
|
||||
},
|
||||
"security": {
|
||||
"noDangerouslySetInnerHtml": "off"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
6
web/public/robots.txt
Normal file
@@ -0,0 +1,6 @@
|
||||
# Allow all user agents
|
||||
User-agent: *
|
||||
Allow: /
|
||||
|
||||
# Sitemap location (adjust if needed)
|
||||
Sitemap: https://dashboardicons.com/sitemap.xml
|
||||
@@ -1,5 +1,6 @@
|
||||
import { readFile } from "node:fs/promises"
|
||||
import { join } from "node:path"
|
||||
import { SITE_NAME, SITE_TAGLINE, WEB_URL, getIconDescription } from "@/constants"
|
||||
import { getAllIcons } from "@/lib/api"
|
||||
import { ImageResponse } from "next/og"
|
||||
|
||||
@@ -32,10 +33,9 @@ export default async function Image({ params }: { params: { icon: string } }) {
|
||||
let iconData: Buffer | null = null
|
||||
try {
|
||||
const iconPath = join(process.cwd(), `../png/${icon}.png`)
|
||||
console.log(`Generating opengraph image for ${icon} (${index + 1} / ${totalIcons}) from path ${iconPath}`)
|
||||
iconData = await readFile(iconPath)
|
||||
} catch (error) {
|
||||
console.error(`Icon ${icon} was not found locally`)
|
||||
// Icon file might not be found, fallback handled below
|
||||
}
|
||||
|
||||
// Convert the image data to a data URL or use placeholder
|
||||
@@ -52,9 +52,9 @@ export default async function Image({ params }: { params: { icon: string } }) {
|
||||
position: "relative",
|
||||
fontFamily: "Inter, system-ui, sans-serif",
|
||||
overflow: "hidden",
|
||||
backgroundColor: "white",
|
||||
backgroundColor: "#0f172a", // Dark background (slate-900)
|
||||
backgroundImage:
|
||||
"radial-gradient(circle at 25px 25px, lightgray 2%, transparent 0%), radial-gradient(circle at 75px 75px, lightgray 2%, transparent 0%)",
|
||||
"radial-gradient(circle at 25px 25px, #1e293b 2%, transparent 0%), radial-gradient(circle at 75px 75px, #1e293b 2%, transparent 0%)",
|
||||
backgroundSize: "100px 100px",
|
||||
}}
|
||||
>
|
||||
@@ -67,7 +67,7 @@ export default async function Image({ params }: { params: { icon: string } }) {
|
||||
width: 400,
|
||||
height: 400,
|
||||
borderRadius: "50%",
|
||||
background: "linear-gradient(135deg, rgba(56, 189, 248, 0.1) 0%, rgba(59, 130, 246, 0.1) 100%)",
|
||||
background: "linear-gradient(135deg, rgba(56, 189, 248, 0.15) 0%, rgba(59, 130, 246, 0.15) 100%)",
|
||||
filter: "blur(80px)",
|
||||
zIndex: 2,
|
||||
}}
|
||||
@@ -80,7 +80,7 @@ export default async function Image({ params }: { params: { icon: string } }) {
|
||||
width: 500,
|
||||
height: 500,
|
||||
borderRadius: "50%",
|
||||
background: "linear-gradient(135deg, rgba(249, 115, 22, 0.1) 0%, rgba(234, 88, 12, 0.1) 100%)",
|
||||
background: "linear-gradient(135deg, rgba(249, 115, 22, 0.15) 0%, rgba(234, 88, 12, 0.15) 100%)",
|
||||
filter: "blur(100px)",
|
||||
zIndex: 2,
|
||||
}}
|
||||
@@ -109,8 +109,8 @@ export default async function Image({ params }: { params: { icon: string } }) {
|
||||
width: 320,
|
||||
height: 320,
|
||||
borderRadius: 32,
|
||||
background: "white",
|
||||
boxShadow: "0 25px 50px -12px rgba(0, 0, 0, 0.15), 0 0 0 1px rgba(0, 0, 0, 0.05)",
|
||||
background: "#1e293b", // Dark container (slate-800)
|
||||
boxShadow: "0 25px 50px -12px rgba(0, 0, 0, 0.5), 0 0 0 1px rgba(255, 255, 255, 0.1)",
|
||||
padding: 30,
|
||||
flexShrink: 0,
|
||||
position: "relative",
|
||||
@@ -121,7 +121,7 @@ export default async function Image({ params }: { params: { icon: string } }) {
|
||||
style={{
|
||||
position: "absolute",
|
||||
inset: 0,
|
||||
background: "linear-gradient(145deg, #ffffff 0%, #f8fafc 100%)",
|
||||
background: "linear-gradient(145deg, #1e293b 0%, #0f172a 100%)",
|
||||
zIndex: 0,
|
||||
}}
|
||||
/>
|
||||
@@ -134,7 +134,7 @@ export default async function Image({ params }: { params: { icon: string } }) {
|
||||
objectFit: "contain",
|
||||
position: "relative",
|
||||
zIndex: 1,
|
||||
filter: "drop-shadow(0 10px 15px rgba(0, 0, 0, 0.1))",
|
||||
filter: "drop-shadow(0 10px 15px rgba(0, 0, 0, 0.3))",
|
||||
}}
|
||||
/>
|
||||
</div>
|
||||
@@ -154,7 +154,7 @@ export default async function Image({ params }: { params: { icon: string } }) {
|
||||
display: "flex",
|
||||
fontSize: 64,
|
||||
fontWeight: 800,
|
||||
color: "#0f172a",
|
||||
color: "#f8fafc", // Light text for dark background (slate-50)
|
||||
lineHeight: 1.1,
|
||||
letterSpacing: "-0.02em",
|
||||
}}
|
||||
@@ -167,14 +167,14 @@ export default async function Image({ params }: { params: { icon: string } }) {
|
||||
display: "flex",
|
||||
fontSize: 32,
|
||||
fontWeight: 500,
|
||||
color: "#64748b",
|
||||
color: "#94a3b8", // Muted text (slate-400)
|
||||
lineHeight: 1.4,
|
||||
position: "relative",
|
||||
paddingLeft: 16,
|
||||
borderLeft: "4px solid #94a3b8",
|
||||
borderLeft: "4px solid #64748b", // slate-500
|
||||
}}
|
||||
>
|
||||
Amongst {totalIcons} other high-quality dashboard icons
|
||||
{getIconDescription(formattedIconName, totalIcons)}
|
||||
</div>
|
||||
|
||||
<div
|
||||
@@ -191,14 +191,14 @@ export default async function Image({ params }: { params: { icon: string } }) {
|
||||
display: "flex",
|
||||
alignItems: "center",
|
||||
justifyContent: "center",
|
||||
backgroundColor: "#f1f5f9",
|
||||
color: "#475569",
|
||||
border: "2px solid #e2e8f0",
|
||||
backgroundColor: "#334155", // slate-700
|
||||
color: "#e2e8f0", // slate-200
|
||||
border: "2px solid #475569", // slate-600
|
||||
borderRadius: 12,
|
||||
padding: "8px 16px",
|
||||
fontSize: 18,
|
||||
fontWeight: 600,
|
||||
boxShadow: "0 1px 2px rgba(0, 0, 0, 0.05)",
|
||||
boxShadow: "0 1px 2px rgba(0, 0, 0, 0.2)",
|
||||
}}
|
||||
>
|
||||
{format}
|
||||
@@ -219,8 +219,8 @@ export default async function Image({ params }: { params: { icon: string } }) {
|
||||
display: "flex",
|
||||
alignItems: "center",
|
||||
justifyContent: "center",
|
||||
background: "#ffffff",
|
||||
borderTop: "2px solid rgba(0, 0, 0, 0.05)",
|
||||
background: "#1e293b", // slate-800
|
||||
borderTop: "2px solid rgba(255, 255, 255, 0.1)",
|
||||
zIndex: 20,
|
||||
}}
|
||||
>
|
||||
@@ -229,7 +229,7 @@ export default async function Image({ params }: { params: { icon: string } }) {
|
||||
display: "flex",
|
||||
fontSize: 24,
|
||||
fontWeight: 600,
|
||||
color: "#334155",
|
||||
color: "#e2e8f0", // slate-200
|
||||
alignItems: "center",
|
||||
gap: 10,
|
||||
}}
|
||||
@@ -239,11 +239,11 @@ export default async function Image({ params }: { params: { icon: string } }) {
|
||||
width: 8,
|
||||
height: 8,
|
||||
borderRadius: "50%",
|
||||
backgroundColor: "#3b82f6",
|
||||
backgroundColor: "#3b82f6", // blue-500
|
||||
marginRight: 4,
|
||||
}}
|
||||
/>
|
||||
dashboardicons.com
|
||||
{WEB_URL.replace("https://", "")}
|
||||
</div>
|
||||
</div>
|
||||
</div>,
|
||||
|
||||
@@ -1,8 +1,20 @@
|
||||
import { IconDetails } from "@/components/icon-details"
|
||||
import { BASE_URL, WEB_URL } from "@/constants"
|
||||
import { StructuredData } from "@/components/structured-data"
|
||||
import {
|
||||
BASE_URL,
|
||||
GITHUB_URL,
|
||||
ICON_DETAIL_KEYWORDS,
|
||||
SITE_NAME,
|
||||
SITE_TAGLINE,
|
||||
TITLE_SEPARATOR,
|
||||
WEB_URL,
|
||||
getIconDescription,
|
||||
getIconSchema,
|
||||
} from "@/constants"
|
||||
import { getAllIcons, getAuthorData } from "@/lib/api"
|
||||
import type { Metadata, ResolvingMetadata } from "next"
|
||||
import { notFound } from "next/navigation"
|
||||
import Script from "next/script"
|
||||
|
||||
export const dynamicParams = false
|
||||
|
||||
@@ -16,12 +28,12 @@ export async function generateStaticParams() {
|
||||
export const dynamic = "force-static"
|
||||
|
||||
type Props = {
|
||||
params: Promise<{ icon: string }>
|
||||
searchParams: Promise<{ [key: string]: string | string[] | undefined }>
|
||||
params: { icon: string }
|
||||
searchParams: { [key: string]: string | string[] | undefined }
|
||||
}
|
||||
|
||||
export async function generateMetadata({ params, searchParams }: Props, parent: ResolvingMetadata): Promise<Metadata> {
|
||||
const { icon } = await params
|
||||
const { icon } = params
|
||||
const iconsData = await getAllIcons()
|
||||
if (!iconsData[icon]) {
|
||||
notFound()
|
||||
@@ -31,8 +43,6 @@ export async function generateMetadata({ params, searchParams }: Props, parent:
|
||||
const updateDate = new Date(iconsData[icon].update.timestamp)
|
||||
const totalIcons = Object.keys(iconsData).length
|
||||
|
||||
console.debug(`Generated metadata for ${icon} by ${authorName} (${authorData.html_url}) updated at ${updateDate.toLocaleString()}`)
|
||||
|
||||
const iconImageUrl = `${BASE_URL}/png/${icon}.png`
|
||||
const pageUrl = `${WEB_URL}/icons/${icon}`
|
||||
const formattedIconName = icon
|
||||
@@ -40,43 +50,39 @@ export async function generateMetadata({ params, searchParams }: Props, parent:
|
||||
.map((word) => word.charAt(0).toUpperCase() + word.slice(1))
|
||||
.join(" ")
|
||||
|
||||
const title = `${formattedIconName} Icon ${TITLE_SEPARATOR} ${SITE_NAME}`
|
||||
const fullTitle = `${formattedIconName} Icon ${TITLE_SEPARATOR} ${SITE_NAME} ${TITLE_SEPARATOR} ${SITE_TAGLINE}`
|
||||
const description = getIconDescription(formattedIconName, totalIcons)
|
||||
|
||||
return {
|
||||
title: `${formattedIconName} Icon | Dashboard Icons`,
|
||||
description: `Download the ${formattedIconName} icon in SVG, PNG, and WEBP formats for FREE. Part of a collection of ${totalIcons} curated icons for services, applications and tools, designed specifically for dashboards and app directories.`,
|
||||
title,
|
||||
description,
|
||||
assets: [iconImageUrl],
|
||||
category: "icons",
|
||||
keywords: [
|
||||
`${formattedIconName} icon`,
|
||||
"dashboard icon",
|
||||
"service icon",
|
||||
"application icon",
|
||||
"tool icon",
|
||||
"web dashboard",
|
||||
"app directory",
|
||||
],
|
||||
category: "Icons",
|
||||
keywords: ICON_DETAIL_KEYWORDS(formattedIconName),
|
||||
icons: {
|
||||
icon: iconImageUrl,
|
||||
},
|
||||
abstract: `Download the ${formattedIconName} icon in SVG, PNG, and WEBP formats for FREE. Part of a collection of ${totalIcons} curated icons for services, applications and tools, designed specifically for dashboards and app directories.`,
|
||||
abstract: description,
|
||||
robots: {
|
||||
index: true,
|
||||
follow: true,
|
||||
},
|
||||
openGraph: {
|
||||
title: `${formattedIconName} Icon | Dashboard Icons`,
|
||||
description: `Download the ${formattedIconName} icon in SVG, PNG, and WEBP formats for FREE. Part of a collection of ${totalIcons} curated icons for services, applications and tools, designed specifically for dashboards and app directories.`,
|
||||
title: title,
|
||||
description,
|
||||
type: "article",
|
||||
url: pageUrl,
|
||||
authors: [authorName],
|
||||
publishedTime: updateDate.toISOString(),
|
||||
modifiedTime: updateDate.toISOString(),
|
||||
section: "Icons",
|
||||
tags: [formattedIconName, "dashboard icon", "service icon", "application icon", "tool icon", "web dashboard", "app directory"],
|
||||
tags: [formattedIconName, ...ICON_DETAIL_KEYWORDS(formattedIconName)],
|
||||
},
|
||||
twitter: {
|
||||
card: "summary_large_image",
|
||||
title: `${formattedIconName} Icon | Dashboard Icons`,
|
||||
description: `Download the ${formattedIconName} icon in SVG, PNG, and WEBP formats for FREE. Part of a collection of ${totalIcons} curated icons for services, applications and tools, designed specifically for dashboards and app directories.`,
|
||||
title: title,
|
||||
description,
|
||||
images: [iconImageUrl],
|
||||
},
|
||||
alternates: {
|
||||
@@ -90,8 +96,8 @@ export async function generateMetadata({ params, searchParams }: Props, parent:
|
||||
}
|
||||
}
|
||||
|
||||
export default async function IconPage({ params }: { params: Promise<{ icon: string }> }) {
|
||||
const { icon } = await params
|
||||
export default async function IconPage({ params }: { params: { icon: string } }) {
|
||||
const { icon } = params
|
||||
const iconsData = await getAllIcons()
|
||||
const originalIconData = iconsData[icon]
|
||||
|
||||
@@ -100,6 +106,26 @@ export default async function IconPage({ params }: { params: Promise<{ icon: str
|
||||
}
|
||||
|
||||
const authorData = await getAuthorData(originalIconData.update.author.id)
|
||||
const updateDate = new Date(originalIconData.update.timestamp)
|
||||
const authorName = authorData.name || authorData.login
|
||||
const formattedIconName = icon
|
||||
.split("-")
|
||||
.map((word) => word.charAt(0).toUpperCase() + word.slice(1))
|
||||
.join(" ")
|
||||
|
||||
return <IconDetails icon={icon} iconData={originalIconData} authorData={authorData} />
|
||||
const imageSchema = getIconSchema(
|
||||
formattedIconName,
|
||||
icon,
|
||||
authorName,
|
||||
authorData.html_url,
|
||||
updateDate.toISOString(),
|
||||
Object.keys(iconsData).length,
|
||||
)
|
||||
|
||||
return (
|
||||
<>
|
||||
<StructuredData data={imageSchema} id="image-schema" />
|
||||
<IconDetails icon={icon} iconData={originalIconData} authorData={authorData} />
|
||||
</>
|
||||
)
|
||||
}
|
||||
|
||||
@@ -1,4 +1,17 @@
|
||||
import { BASE_URL } from "@/constants"
|
||||
import { StructuredData } from "@/components/structured-data"
|
||||
import {
|
||||
BASE_URL,
|
||||
BROWSE_KEYWORDS,
|
||||
DEFAULT_OG_IMAGE,
|
||||
GITHUB_URL,
|
||||
ORGANIZATION_NAME,
|
||||
ORGANIZATION_SCHEMA,
|
||||
SITE_NAME,
|
||||
SITE_TAGLINE,
|
||||
TITLE_SEPARATOR,
|
||||
WEB_URL,
|
||||
getBrowseDescription,
|
||||
} from "@/constants"
|
||||
import { getIconsArray } from "@/lib/api"
|
||||
import type { Metadata } from "next"
|
||||
import { IconSearch } from "./components/icon-search"
|
||||
@@ -7,42 +20,28 @@ export async function generateMetadata(): Promise<Metadata> {
|
||||
const icons = await getIconsArray()
|
||||
const totalIcons = icons.length
|
||||
|
||||
const title = `Browse Icons ${TITLE_SEPARATOR} ${SITE_NAME}`
|
||||
const description = getBrowseDescription(totalIcons)
|
||||
|
||||
return {
|
||||
title: "Browse Icons | Free Dashboard Icons",
|
||||
description: `Search and browse through our collection of ${totalIcons} curated icons for services, applications and tools, designed specifically for dashboards and app directories.`,
|
||||
keywords: [
|
||||
"browse icons",
|
||||
"dashboard icons",
|
||||
"icon search",
|
||||
"service icons",
|
||||
"application icons",
|
||||
"tool icons",
|
||||
"web dashboard",
|
||||
"app directory",
|
||||
],
|
||||
title,
|
||||
description,
|
||||
keywords: BROWSE_KEYWORDS,
|
||||
openGraph: {
|
||||
title: "Browse Icons | Free Dashboard Icons",
|
||||
description: `Search and browse through our collection of ${totalIcons} curated icons for services, applications and tools, designed specifically for dashboards and app directories.`,
|
||||
title: title,
|
||||
description,
|
||||
type: "website",
|
||||
url: `${BASE_URL}/icons`,
|
||||
images: [
|
||||
{
|
||||
url: "/og-image.png",
|
||||
width: 1200,
|
||||
height: 630,
|
||||
alt: "Browse Dashboard Icons Collection",
|
||||
type: "image/png",
|
||||
},
|
||||
],
|
||||
url: `${WEB_URL}/icons`,
|
||||
images: [DEFAULT_OG_IMAGE],
|
||||
},
|
||||
twitter: {
|
||||
card: "summary_large_image",
|
||||
title: "Browse Icons | Free Dashboard Icons",
|
||||
description: `Search and browse through our collection of ${totalIcons} curated icons for services, applications and tools, designed specifically for dashboards and app directories.`,
|
||||
images: ["/og-image-browse.png"],
|
||||
title: title,
|
||||
description,
|
||||
images: [DEFAULT_OG_IMAGE.url],
|
||||
},
|
||||
alternates: {
|
||||
canonical: `${BASE_URL}/icons`,
|
||||
canonical: `${WEB_URL}/icons`,
|
||||
},
|
||||
}
|
||||
}
|
||||
@@ -51,20 +50,40 @@ export const dynamic = "force-static"
|
||||
|
||||
export default async function IconsPage() {
|
||||
const icons = await getIconsArray()
|
||||
return (
|
||||
<div className="isolate overflow-hidden">
|
||||
<div className="py-8">
|
||||
<div className="space-y-4 mb-8 mx-auto max-w-7xl">
|
||||
<div className="flex flex-col sm:flex-row sm:items-center justify-between gap-4">
|
||||
<div>
|
||||
<h1 className="text-3xl font-bold">Browse icons</h1>
|
||||
<p className="text-muted-foreground">Search through our collection of {icons.length} beautiful icons.</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<IconSearch icons={icons} />
|
||||
const gallerySchema = {
|
||||
"@context": "https://schema.org",
|
||||
"@type": "ImageGallery",
|
||||
name: `${SITE_NAME} - Browse ${icons.length} Icons - ${SITE_TAGLINE}`,
|
||||
description: getBrowseDescription(icons.length),
|
||||
url: `${WEB_URL}/icons`,
|
||||
numberOfItems: icons.length,
|
||||
creator: {
|
||||
"@type": "Organization",
|
||||
name: ORGANIZATION_NAME,
|
||||
url: GITHUB_URL,
|
||||
},
|
||||
}
|
||||
|
||||
return (
|
||||
<>
|
||||
<StructuredData data={gallerySchema} id="gallery-schema" />
|
||||
<div className="isolate overflow-hidden">
|
||||
<div className="py-8">
|
||||
<div className="space-y-4 mb-8 mx-auto max-w-7xl px-4 sm:px-6 lg:px-8">
|
||||
<div className="flex flex-col sm:flex-row sm:items-center justify-between gap-4">
|
||||
<div>
|
||||
<h1 className="text-3xl font-bold">Icons</h1>
|
||||
<p className="text-muted-foreground">
|
||||
Search our collection of {icons.length} icons - {SITE_TAGLINE}.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<IconSearch icons={icons} />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</>
|
||||
)
|
||||
}
|
||||
|
||||
@@ -2,12 +2,26 @@ import { PostHogProvider } from "@/components/PostHogProvider"
|
||||
import { Footer } from "@/components/footer"
|
||||
import { HeaderWrapper } from "@/components/header-wrapper"
|
||||
import { LicenseNotice } from "@/components/license-notice"
|
||||
import { WebsiteStructuredData } from "@/components/structured-data"
|
||||
import { getTotalIcons } from "@/lib/api"
|
||||
import type { Metadata, Viewport } from "next"
|
||||
import { Inter } from "next/font/google"
|
||||
import { Toaster } from "sonner"
|
||||
import "./globals.css"
|
||||
import { getDescription, websiteTitle } from "@/constants"
|
||||
import {
|
||||
DEFAULT_KEYWORDS,
|
||||
DEFAULT_OG_IMAGE,
|
||||
GITHUB_URL,
|
||||
ORGANIZATION_NAME,
|
||||
ORGANIZATION_SCHEMA,
|
||||
SITE_NAME,
|
||||
SITE_TAGLINE,
|
||||
WEB_URL,
|
||||
getDescription,
|
||||
getWebsiteSchema,
|
||||
websiteFullTitle,
|
||||
websiteTitle,
|
||||
} from "@/constants"
|
||||
import { ThemeProvider } from "./theme-provider"
|
||||
|
||||
const inter = Inter({
|
||||
@@ -27,12 +41,16 @@ export const viewport: Viewport = {
|
||||
|
||||
export async function generateMetadata(): Promise<Metadata> {
|
||||
const { totalIcons } = await getTotalIcons()
|
||||
const description = getDescription(totalIcons)
|
||||
|
||||
return {
|
||||
metadataBase: new URL("https://dashboardicons.com"),
|
||||
title: websiteTitle,
|
||||
description: getDescription(totalIcons),
|
||||
keywords: ["dashboard icons", "service icons", "application icons", "tool icons", "web dashboard", "app directory"],
|
||||
metadataBase: new URL(WEB_URL),
|
||||
title: {
|
||||
default: websiteTitle,
|
||||
template: `%s | ${websiteTitle}`,
|
||||
},
|
||||
description,
|
||||
keywords: DEFAULT_KEYWORDS,
|
||||
robots: {
|
||||
index: true,
|
||||
follow: true,
|
||||
@@ -42,33 +60,23 @@ export async function generateMetadata(): Promise<Metadata> {
|
||||
googleBot: "index, follow",
|
||||
},
|
||||
openGraph: {
|
||||
siteName: "Dashboard Icons",
|
||||
siteName: SITE_NAME,
|
||||
type: "website",
|
||||
locale: "en_US",
|
||||
title: websiteTitle,
|
||||
description: getDescription(totalIcons),
|
||||
url: "https://dashboardicons.com",
|
||||
images: [
|
||||
{
|
||||
url: "/og-image.png",
|
||||
width: 1200,
|
||||
height: 630,
|
||||
alt: "Dashboard Icons",
|
||||
type: "image/png",
|
||||
},
|
||||
],
|
||||
title: websiteFullTitle,
|
||||
description,
|
||||
url: WEB_URL,
|
||||
images: [DEFAULT_OG_IMAGE],
|
||||
},
|
||||
twitter: {
|
||||
card: "summary_large_image",
|
||||
site: "@homarr_app",
|
||||
creator: "@homarr_app",
|
||||
title: websiteTitle,
|
||||
description: getDescription(totalIcons),
|
||||
images: ["/og-image.png"],
|
||||
title: websiteFullTitle,
|
||||
description,
|
||||
images: [DEFAULT_OG_IMAGE.url],
|
||||
},
|
||||
applicationName: "Dashboard Icons",
|
||||
applicationName: SITE_NAME,
|
||||
appleWebApp: {
|
||||
title: "Dashboard Icons",
|
||||
title: SITE_NAME,
|
||||
statusBarStyle: "default",
|
||||
capable: true,
|
||||
},
|
||||
@@ -88,14 +96,26 @@ export async function generateMetadata(): Promise<Metadata> {
|
||||
],
|
||||
},
|
||||
manifest: "/site.webmanifest",
|
||||
authors: [{ name: ORGANIZATION_NAME, url: GITHUB_URL }],
|
||||
creator: ORGANIZATION_NAME,
|
||||
publisher: ORGANIZATION_NAME,
|
||||
category: "Icons",
|
||||
classification: "Dashboard Design Resources",
|
||||
other: {
|
||||
"revisit-after": "7 days",
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
export default function RootLayout({ children }: Readonly<{ children: React.ReactNode }>) {
|
||||
export default async function RootLayout({ children }: Readonly<{ children: React.ReactNode }>) {
|
||||
const { totalIcons } = await getTotalIcons()
|
||||
const websiteSchema = getWebsiteSchema(totalIcons)
|
||||
|
||||
return (
|
||||
<html lang="en" suppressHydrationWarning>
|
||||
<body className={`${inter.variable} antialiased bg-background flex flex-col min-h-screen`}>
|
||||
<PostHogProvider>
|
||||
<WebsiteStructuredData websiteSchema={websiteSchema} organizationSchema={ORGANIZATION_SCHEMA} />
|
||||
<ThemeProvider attribute="class" defaultTheme="system" enableSystem disableTransitionOnChange>
|
||||
<HeaderWrapper />
|
||||
<main className="flex-grow">{children}</main>
|
||||
|
||||
@@ -1,42 +1,50 @@
|
||||
import { HeroSection } from "@/components/hero"
|
||||
import { RecentlyAddedIcons } from "@/components/recently-added-icons"
|
||||
import { BASE_URL, REPO_NAME, getDescription, websiteTitle } from "@/constants"
|
||||
import {
|
||||
BASE_URL,
|
||||
DEFAULT_KEYWORDS,
|
||||
DEFAULT_OG_IMAGE,
|
||||
GITHUB_URL,
|
||||
ORGANIZATION_NAME,
|
||||
ORGANIZATION_SCHEMA,
|
||||
REPO_NAME,
|
||||
SITE_NAME,
|
||||
SITE_TAGLINE,
|
||||
WEB_URL,
|
||||
getHomeDescription,
|
||||
websiteFullTitle,
|
||||
websiteTitle,
|
||||
} from "@/constants"
|
||||
import { getRecentlyAddedIcons, getTotalIcons } from "@/lib/api"
|
||||
import type { Metadata } from "next"
|
||||
|
||||
export async function generateMetadata(): Promise<Metadata> {
|
||||
const { totalIcons } = await getTotalIcons()
|
||||
const description = getHomeDescription(totalIcons)
|
||||
|
||||
return {
|
||||
title: websiteTitle,
|
||||
description: getDescription(totalIcons),
|
||||
keywords: ["dashboard icons", "service icons", "application icons", "tool icons", "web dashboard", "app directory"],
|
||||
description,
|
||||
keywords: DEFAULT_KEYWORDS,
|
||||
robots: {
|
||||
index: true,
|
||||
follow: true,
|
||||
},
|
||||
openGraph: {
|
||||
title: websiteTitle,
|
||||
description: getDescription(totalIcons),
|
||||
title: websiteFullTitle,
|
||||
description,
|
||||
type: "website",
|
||||
url: BASE_URL,
|
||||
images: [
|
||||
{
|
||||
url: "/og-image.png",
|
||||
width: 1200,
|
||||
height: 630,
|
||||
alt: "Dashboard Icons",
|
||||
},
|
||||
],
|
||||
url: WEB_URL,
|
||||
images: [DEFAULT_OG_IMAGE],
|
||||
},
|
||||
twitter: {
|
||||
title: websiteTitle,
|
||||
description: getDescription(totalIcons),
|
||||
title: websiteFullTitle,
|
||||
description,
|
||||
card: "summary_large_image",
|
||||
images: ["/og-image.png"],
|
||||
images: [DEFAULT_OG_IMAGE.url],
|
||||
},
|
||||
alternates: {
|
||||
canonical: BASE_URL,
|
||||
canonical: WEB_URL,
|
||||
},
|
||||
}
|
||||
}
|
||||
@@ -44,7 +52,7 @@ export async function generateMetadata(): Promise<Metadata> {
|
||||
async function getGitHubStars() {
|
||||
const response = await fetch(`https://api.github.com/repos/${REPO_NAME}`)
|
||||
const data = await response.json()
|
||||
console.log(`GitHub stars: ${data.stargazers_count}`)
|
||||
// TODO: Consider caching this result or fetching at build time to avoid rate limits.
|
||||
return data.stargazers_count
|
||||
}
|
||||
|
||||
@@ -54,9 +62,11 @@ export default async function Home() {
|
||||
const stars = await getGitHubStars()
|
||||
|
||||
return (
|
||||
<div className="flex flex-col min-h-screen">
|
||||
<HeroSection totalIcons={totalIcons} stars={stars} />
|
||||
<RecentlyAddedIcons icons={recentIcons} />
|
||||
</div>
|
||||
<>
|
||||
<div className="flex flex-col min-h-screen">
|
||||
<HeroSection totalIcons={totalIcons} stars={stars} />
|
||||
<RecentlyAddedIcons icons={recentIcons} />
|
||||
</div>
|
||||
</>
|
||||
)
|
||||
}
|
||||
|
||||
@@ -1,3 +0,0 @@
|
||||
User-Agent: *
|
||||
Allow: /
|
||||
Sitemap: https://dashboardicons.com/sitemap.xml
|
||||
@@ -7,7 +7,7 @@ export function Carbon() {
|
||||
}
|
||||
|
||||
useEffect(() => {
|
||||
const serve = "CW7IP27L"
|
||||
const serve = "CW7IKKQM"
|
||||
const placement = "dashboardiconscom"
|
||||
ref.current.innerHTML = ""
|
||||
const s = document.createElement("script")
|
||||
|
||||
22
web/src/components/structured-data.tsx
Normal file
@@ -0,0 +1,22 @@
|
||||
type StructuredDataProps = {
|
||||
data: Record<string, unknown>
|
||||
id?: string
|
||||
}
|
||||
|
||||
export const StructuredData = ({ data, id }: StructuredDataProps) => {
|
||||
return <script id={id} type="application/ld+json" dangerouslySetInnerHTML={{ __html: JSON.stringify(data) }} />
|
||||
}
|
||||
|
||||
type WebsiteStructuredDataProps = {
|
||||
websiteSchema: Record<string, unknown>
|
||||
organizationSchema: Record<string, unknown>
|
||||
}
|
||||
|
||||
export const WebsiteStructuredData = ({ websiteSchema, organizationSchema }: WebsiteStructuredDataProps) => {
|
||||
return (
|
||||
<>
|
||||
<StructuredData data={websiteSchema} id="website-schema" />
|
||||
<StructuredData data={organizationSchema} id="organization-schema" />
|
||||
</>
|
||||
)
|
||||
}
|
||||
@@ -4,7 +4,126 @@ export const METADATA_URL = "https://raw.githubusercontent.com/homarr-labs/dashb
|
||||
export const WEB_URL = "https://dashboardicons.com"
|
||||
export const REPO_NAME = "homarr-labs/dashboard-icons"
|
||||
|
||||
export const getDescription = (totalIcons: number) =>
|
||||
`A collection of ${totalIcons} curated icons for services, applications and tools, designed specifically for dashboards and app directories.`
|
||||
// Site-wide metadata constants
|
||||
export const SITE_NAME = "Dashboard Icons"
|
||||
export const TITLE_SEPARATOR = " | "
|
||||
export const SITE_TAGLINE = "Your definitive source for dashboard icons"
|
||||
export const ORGANIZATION_NAME = "Homarr Labs"
|
||||
|
||||
export const websiteTitle = "Free Dashboard Icons - Download High-Quality UI & App Icons"
|
||||
export const getDescription = (totalIcons: number) =>
|
||||
`A curated collection of ${totalIcons} free icons for dashboards and app directories. Available in SVG, PNG, and WEBP formats. ${SITE_TAGLINE}.`
|
||||
|
||||
export const getHomeDescription = (totalIcons: number) =>
|
||||
`Discover our curated collection of ${totalIcons} icons designed specifically for dashboards and app directories. ${SITE_TAGLINE}.`
|
||||
|
||||
export const getBrowseDescription = (totalIcons: number) =>
|
||||
`Browse, search and download from our collection of ${totalIcons} curated icons. All icons available in SVG, PNG, and WEBP formats. ${SITE_TAGLINE}.`
|
||||
|
||||
export const getIconDescription = (iconName: string, totalIcons: number) =>
|
||||
`Download the ${iconName} icon in SVG, PNG, and WEBP formats. Part of our curated collection of ${totalIcons} free icons for dashboards. ${SITE_TAGLINE}.`
|
||||
|
||||
export const websiteTitle = `${SITE_NAME} ${TITLE_SEPARATOR} Free, Curated Icons for Apps & Services`
|
||||
export const websiteFullTitle = `${SITE_NAME} ${TITLE_SEPARATOR} Free, Curated Icons for Apps & Services ${TITLE_SEPARATOR} ${SITE_TAGLINE}`
|
||||
|
||||
// Various keyword sets for different pages
|
||||
export const DEFAULT_KEYWORDS = [
|
||||
"dashboard icons",
|
||||
"app icons",
|
||||
"service icons",
|
||||
"curated icons",
|
||||
"free icons",
|
||||
"SVG icons",
|
||||
"web dashboard",
|
||||
"app directory",
|
||||
]
|
||||
|
||||
export const BROWSE_KEYWORDS = [
|
||||
"browse icons",
|
||||
"search icons",
|
||||
"download icons",
|
||||
"minimal icons",
|
||||
"dashboard design",
|
||||
"UI icons",
|
||||
...DEFAULT_KEYWORDS,
|
||||
]
|
||||
|
||||
// Add format-specific keywords
|
||||
export const ICON_DETAIL_KEYWORDS = (iconName: string): string[] => [
|
||||
`${iconName} icon`, // e.g., "Homarr icon"
|
||||
`${iconName} logo`, // e.g., "Homarr logo"
|
||||
`${iconName} svg icon`, // e.g., "Homarr svg icon"
|
||||
`${iconName} png icon`, // e.g., "Homarr png icon"
|
||||
`${iconName} webp icon`, // e.g., "Homarr webp icon"
|
||||
`${iconName} download`, // e.g., "Homarr download"
|
||||
`${iconName} dashboard icon`, // e.g., "Homarr dashboard icon"
|
||||
...DEFAULT_KEYWORDS,
|
||||
]
|
||||
|
||||
// Core structured data for the website (JSON-LD)
|
||||
export const getWebsiteSchema = (totalIcons: number) => ({
|
||||
"@context": "https://schema.org",
|
||||
"@type": "WebSite",
|
||||
name: SITE_NAME,
|
||||
url: WEB_URL,
|
||||
description: getDescription(totalIcons),
|
||||
potentialAction: {
|
||||
"@type": "SearchAction",
|
||||
target: {
|
||||
"@type": "EntryPoint",
|
||||
urlTemplate: `${WEB_URL}/icons?q={search_term_string}`,
|
||||
},
|
||||
"query-input": "required name=search_term_string",
|
||||
},
|
||||
slogan: SITE_TAGLINE,
|
||||
})
|
||||
|
||||
// Organization schema
|
||||
export const ORGANIZATION_SCHEMA = {
|
||||
"@context": "https://schema.org",
|
||||
"@type": "Organization",
|
||||
name: ORGANIZATION_NAME,
|
||||
url: `https://github.com/${REPO_NAME}`,
|
||||
logo: `${WEB_URL}/og-image.png`,
|
||||
sameAs: [`https://github.com/${REPO_NAME}`, "https://homarr.dev"],
|
||||
slogan: SITE_TAGLINE,
|
||||
}
|
||||
|
||||
// Social media
|
||||
export const GITHUB_URL = `https://github.com/${REPO_NAME}`
|
||||
|
||||
// Image schemas
|
||||
export const getIconSchema = (
|
||||
iconName: string,
|
||||
iconId: string,
|
||||
authorName: string,
|
||||
authorUrl: string,
|
||||
updateDate: string,
|
||||
totalIcons: number,
|
||||
) => ({
|
||||
"@context": "https://schema.org",
|
||||
"@type": "ImageObject",
|
||||
name: `${iconName} Icon`,
|
||||
description: getIconDescription(iconName, totalIcons),
|
||||
contentUrl: `${BASE_URL}/png/${iconId}.png`,
|
||||
thumbnailUrl: `${BASE_URL}/png/${iconId}.png`,
|
||||
uploadDate: updateDate,
|
||||
author: {
|
||||
"@type": "Person",
|
||||
name: authorName,
|
||||
url: authorUrl,
|
||||
},
|
||||
encodingFormat: ["image/png", "image/svg+xml", "image/webp"],
|
||||
contentSize: "Variable",
|
||||
representativeOfPage: true,
|
||||
creditText: `Icon contributed by ${authorName} to the ${SITE_NAME} collection by ${ORGANIZATION_NAME}`,
|
||||
embedUrl: `${WEB_URL}/icons/${iconId}`,
|
||||
})
|
||||
|
||||
// OpenGraph defaults
|
||||
export const DEFAULT_OG_IMAGE = {
|
||||
url: "/og-image.png",
|
||||
width: 1200,
|
||||
height: 630,
|
||||
alt: `${SITE_NAME} - ${SITE_TAGLINE}`,
|
||||
type: "image/png",
|
||||
}
|
||||
|
||||
BIN
webp/buildium.webp
Normal file
|
After Width: | Height: | Size: 5.9 KiB |
BIN
webp/calibre-web-automated-book-downloader.webp
Normal file
|
After Width: | Height: | Size: 106 KiB |
BIN
webp/doplarr.webp
Normal file
|
After Width: | Height: | Size: 57 KiB |
BIN
webp/entergy.webp
Normal file
|
After Width: | Height: | Size: 32 KiB |
BIN
webp/gone-man-switch.webp
Normal file
|
After Width: | Height: | Size: 45 KiB |
BIN
webp/image-maid.webp
Normal file
|
After Width: | Height: | Size: 61 KiB |
BIN
webp/karaoke-eternal.webp
Normal file
|
After Width: | Height: | Size: 58 KiB |
BIN
webp/librechat.webp
Normal file
|
After Width: | Height: | Size: 57 KiB |
BIN
webp/loxone-full.webp
Normal file
|
After Width: | Height: | Size: 58 KiB |
BIN
webp/loxone.webp
Normal file
|
After Width: | Height: | Size: 24 KiB |
BIN
webp/marzban.webp
Normal file
|
After Width: | Height: | Size: 69 KiB |
BIN
webp/noisedash.webp
Normal file
|
After Width: | Height: | Size: 20 KiB |
BIN
webp/pangolin.webp
Normal file
|
After Width: | Height: | Size: 26 KiB |
BIN
webp/pretix.webp
Normal file
|
After Width: | Height: | Size: 13 KiB |
BIN
webp/recyclarr.webp
Normal file
|
After Width: | Height: | Size: 34 KiB |
BIN
webp/release-argus.webp
Normal file
|
After Width: | Height: | Size: 48 KiB |
BIN
webp/series-troxide.webp
Normal file
|
After Width: | Height: | Size: 40 KiB |
BIN
webp/stream-harvestarr.webp
Normal file
|
After Width: | Height: | Size: 161 KiB |
BIN
webp/watchlistarr.webp
Normal file
|
After Width: | Height: | Size: 169 KiB |