diff --git a/icons/ansible-wordmark.svg b/icons/ansible-wordmark.svg
index adca713..a9bbfad 100644
--- a/icons/ansible-wordmark.svg
+++ b/icons/ansible-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/ansible.svg b/icons/ansible.svg
index 8086fac..ff7ae40 100644
--- a/icons/ansible.svg
+++ b/icons/ansible.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/anthropic-basic-dark.svg b/icons/anthropic-basic-dark.svg
index 1139b2d..b9eeb4a 100644
--- a/icons/anthropic-basic-dark.svg
+++ b/icons/anthropic-basic-dark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/anthropic-basic-light.svg b/icons/anthropic-basic-light.svg
index fcc2b3f..1c21b52 100644
--- a/icons/anthropic-basic-light.svg
+++ b/icons/anthropic-basic-light.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/bluesky.svg b/icons/bluesky.svg
index 9cc47ed..c93fefe 100644
--- a/icons/bluesky.svg
+++ b/icons/bluesky.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/chatgpt.svg b/icons/chatgpt.svg
index 7afeb56..06b46e3 100644
--- a/icons/chatgpt.svg
+++ b/icons/chatgpt.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/clerk.svg b/icons/clerk.svg
index cb714e2..1663efe 100644
--- a/icons/clerk.svg
+++ b/icons/clerk.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/convex.svg b/icons/convex.svg
index 94def82..e9df1a7 100644
--- a/icons/convex.svg
+++ b/icons/convex.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/deno-fresh.svg b/icons/deno-fresh.svg
index 16ec60b..79d33d1 100644
--- a/icons/deno-fresh.svg
+++ b/icons/deno-fresh.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/developer-icons.svg b/icons/developer-icons.svg
index c47d7b5..9d54129 100644
--- a/icons/developer-icons.svg
+++ b/icons/developer-icons.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/discord.svg b/icons/discord.svg
index 6424dd7..f341799 100644
--- a/icons/discord.svg
+++ b/icons/discord.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/doctrine.svg b/icons/doctrine.svg
index 7e1bc0d..6acc0f2 100644
--- a/icons/doctrine.svg
+++ b/icons/doctrine.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/expressjs-dark.svg b/icons/expressjs-dark.svg
index 2db2152..7e7cca4 100644
--- a/icons/expressjs-dark.svg
+++ b/icons/expressjs-dark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/expressjs-light.svg b/icons/expressjs-light.svg
index 2bd3482..2bd3f7d 100644
--- a/icons/expressjs-light.svg
+++ b/icons/expressjs-light.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/fast-api.svg b/icons/fast-api.svg
index e25037b..bfff01b 100644
--- a/icons/fast-api.svg
+++ b/icons/fast-api.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/flask-light.svg b/icons/flask-light.svg
index ef6bb2c..4622715 100644
--- a/icons/flask-light.svg
+++ b/icons/flask-light.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/framer-dark.svg b/icons/framer-dark.svg
index 4ca29b1..68fa30d 100644
--- a/icons/framer-dark.svg
+++ b/icons/framer-dark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/framer-light.svg b/icons/framer-light.svg
index 723076d..e070a6b 100644
--- a/icons/framer-light.svg
+++ b/icons/framer-light.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/gmail.svg b/icons/gmail.svg
index 3c5fc7a..abb0650 100644
--- a/icons/gmail.svg
+++ b/icons/gmail.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/hugging-face.svg b/icons/hugging-face.svg
index 593dcb3..37bd00a 100644
--- a/icons/hugging-face.svg
+++ b/icons/hugging-face.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/instagram.svg b/icons/instagram.svg
index 5f3e6aa..3546409 100644
--- a/icons/instagram.svg
+++ b/icons/instagram.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/jenkins.svg b/icons/jenkins.svg
index 87193d1..ab457fa 100644
--- a/icons/jenkins.svg
+++ b/icons/jenkins.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/k6.svg b/icons/k6.svg
index dd548dc..89140e1 100644
--- a/icons/k6.svg
+++ b/icons/k6.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/kafka.svg b/icons/kafka.svg
index 23460cf..1fb75ec 100644
--- a/icons/kafka.svg
+++ b/icons/kafka.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/lerna-dark.svg b/icons/lerna-dark.svg
index 577114f..ad0b23c 100644
--- a/icons/lerna-dark.svg
+++ b/icons/lerna-dark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/lerna-light.svg b/icons/lerna-light.svg
index a5da749..713516b 100644
--- a/icons/lerna-light.svg
+++ b/icons/lerna-light.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/linkedin.svg b/icons/linkedin.svg
index fe41444..6d1b5a5 100644
--- a/icons/linkedin.svg
+++ b/icons/linkedin.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/linux.svg b/icons/linux.svg
index 2b557a6..facd218 100644
--- a/icons/linux.svg
+++ b/icons/linux.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/microsoft-sql-server-2.svg b/icons/microsoft-sql-server-2.svg
index bced698..7cfa087 100644
--- a/icons/microsoft-sql-server-2.svg
+++ b/icons/microsoft-sql-server-2.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/numpy.svg b/icons/numpy.svg
index 2cd4eba..bdd956b 100644
--- a/icons/numpy.svg
+++ b/icons/numpy.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/nx.svg b/icons/nx.svg
index 83e5922..44ad822 100644
--- a/icons/nx.svg
+++ b/icons/nx.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/pnpm-dark-wordmark.svg b/icons/pnpm-dark-wordmark.svg
index bee7f85..99c16f8 100644
--- a/icons/pnpm-dark-wordmark.svg
+++ b/icons/pnpm-dark-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/pnpm-dark.svg b/icons/pnpm-dark.svg
index 89b6d2d..79f04bc 100644
--- a/icons/pnpm-dark.svg
+++ b/icons/pnpm-dark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/pnpm-light-wordmark.svg b/icons/pnpm-light-wordmark.svg
index d7aa41a..27ae7c4 100644
--- a/icons/pnpm-light-wordmark.svg
+++ b/icons/pnpm-light-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/pnpm-light.svg b/icons/pnpm-light.svg
index 0157ac2..38b8142 100644
--- a/icons/pnpm-light.svg
+++ b/icons/pnpm-light.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/pulumi-dark-wordmark.svg b/icons/pulumi-dark-wordmark.svg
index 397c0a1..dd6d648 100644
--- a/icons/pulumi-dark-wordmark.svg
+++ b/icons/pulumi-dark-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/pulumi-light-wordmark.svg b/icons/pulumi-light-wordmark.svg
index ee88de2..e9f05d2 100644
--- a/icons/pulumi-light-wordmark.svg
+++ b/icons/pulumi-light-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/pulumi.svg b/icons/pulumi.svg
index bcf73bd..82696d0 100644
--- a/icons/pulumi.svg
+++ b/icons/pulumi.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/r.svg b/icons/r.svg
index fd94db7..565686f 100644
--- a/icons/r.svg
+++ b/icons/r.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/reddit-wordmark.svg b/icons/reddit-wordmark.svg
index 562ca8c..7c81922 100644
--- a/icons/reddit-wordmark.svg
+++ b/icons/reddit-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/remix-dark-wordmark.svg b/icons/remix-dark-wordmark.svg
index e8689a3..943d06d 100644
--- a/icons/remix-dark-wordmark.svg
+++ b/icons/remix-dark-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/remix-dark.svg b/icons/remix-dark.svg
index 3a0ba4b..fc718d9 100644
--- a/icons/remix-dark.svg
+++ b/icons/remix-dark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/remix-light-wordmark.svg b/icons/remix-light-wordmark.svg
index 69b6515..4b6df93 100644
--- a/icons/remix-light-wordmark.svg
+++ b/icons/remix-light-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/remix-light.svg b/icons/remix-light.svg
index d1585ff..f318757 100644
--- a/icons/remix-light.svg
+++ b/icons/remix-light.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/rust-light.svg b/icons/rust-light.svg
index a19672f..97b3669 100644
--- a/icons/rust-light.svg
+++ b/icons/rust-light.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/shopware.svg b/icons/shopware.svg
index ca01de3..fc234ef 100644
--- a/icons/shopware.svg
+++ b/icons/shopware.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/skype.svg b/icons/skype.svg
index 42ac885..22c5389 100644
--- a/icons/skype.svg
+++ b/icons/skype.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/symfony-dark.svg b/icons/symfony-dark.svg
index c9478db..da09c18 100644
--- a/icons/symfony-dark.svg
+++ b/icons/symfony-dark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/symfony-light.svg b/icons/symfony-light.svg
index cd06aac..77c9c8f 100644
--- a/icons/symfony-light.svg
+++ b/icons/symfony-light.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/terraform.svg b/icons/terraform.svg
index d0257ee..315f8b6 100644
--- a/icons/terraform.svg
+++ b/icons/terraform.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/threads-dark.svg b/icons/threads-dark.svg
index a753e62..9e8d78a 100644
--- a/icons/threads-dark.svg
+++ b/icons/threads-dark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/threads-light.svg b/icons/threads-light.svg
index 932954e..6700c97 100644
--- a/icons/threads-light.svg
+++ b/icons/threads-light.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/threejs-dark.svg b/icons/threejs-dark.svg
index d300f3d..0b41c42 100644
--- a/icons/threejs-dark.svg
+++ b/icons/threejs-dark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/threejs-light.svg b/icons/threejs-light.svg
index afde7de..c8b4b11 100644
--- a/icons/threejs-light.svg
+++ b/icons/threejs-light.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/upwork-wordmark.svg b/icons/upwork-wordmark.svg
index d3e671e..1e377a8 100644
--- a/icons/upwork-wordmark.svg
+++ b/icons/upwork-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/vagrant.svg b/icons/vagrant.svg
index c717c64..a49b44c 100644
--- a/icons/vagrant.svg
+++ b/icons/vagrant.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/vercel-dark-wordmark.svg b/icons/vercel-dark-wordmark.svg
index 7c2755b..ac1e605 100644
--- a/icons/vercel-dark-wordmark.svg
+++ b/icons/vercel-dark-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/vercel-dark.svg b/icons/vercel-dark.svg
index eac51d3..3179fe3 100644
--- a/icons/vercel-dark.svg
+++ b/icons/vercel-dark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/vercel-light-wordmark.svg b/icons/vercel-light-wordmark.svg
index ce47fa2..2f1d7e1 100644
--- a/icons/vercel-light-wordmark.svg
+++ b/icons/vercel-light-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/vercel-light.svg b/icons/vercel-light.svg
index cfc1bf4..0984ab9 100644
--- a/icons/vercel-light.svg
+++ b/icons/vercel-light.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/webrtc.svg b/icons/webrtc.svg
index 3691e75..c3efd46 100644
--- a/icons/webrtc.svg
+++ b/icons/webrtc.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/youtube-wordmark.svg b/icons/youtube-wordmark.svg
index 71ccf85..81c787a 100644
--- a/icons/youtube-wordmark.svg
+++ b/icons/youtube-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/zen.svg b/icons/zen.svg
index 9671a4a..571e273 100644
--- a/icons/zen.svg
+++ b/icons/zen.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/lib/createDeveloperIcon.ts b/lib/createDeveloperIcon.ts
index fb0899b..0f6941f 100644
--- a/lib/createDeveloperIcon.ts
+++ b/lib/createDeveloperIcon.ts
@@ -8,14 +8,27 @@ export const createDeveloperIcon = (
iconContent: string,
path: string,
) => {
+ const idPrefix = capitalizeFirstletter(iconName, true);
+ let keySeq = 0;
+
const optimizedSvg = optimize(iconContent, {
path,
plugins: [
...svgoConfig.plugins,
+ {
+ name: "addKeyAttr",
+ fn: () => ({
+ element: {
+ enter: (node) => {
+ node.attributes.key = `${idPrefix}__${keySeq++}`;
+ },
+ },
+ }),
+ },
{
name: "prefixIds",
params: {
- prefix: capitalizeFirstletter(iconName, true),
+ prefix: idPrefix,
},
},
] as PluginConfig[],
diff --git a/svgo.config.mjs b/svgo.config.mjs
index 83a12e6..ee781be 100644
--- a/svgo.config.mjs
+++ b/svgo.config.mjs
@@ -24,18 +24,5 @@ export default {
};
},
},
- {
- name: "addKeyAttr",
- description: "Add key attribute",
- fn: () => {
- return {
- element: {
- enter: (node) => {
- node.attributes.key = Math.random().toString(36).substring(2, 9);
- },
- },
- };
- },
- },
],
};