diff --git a/.svglintrc.js b/.svglintrc.js
index 334cf527..e822e161 100644
--- a/.svglintrc.js
+++ b/.svglintrc.js
@@ -90,7 +90,7 @@ module.exports = {
iconIgnored.size.hasOwnProperty(iconPath) ||
iconIgnored.center.hasOwnProperty(iconPath)
) {
- return
+ return;
}
const targetCenter = iconSize / 2;
diff --git a/_data/simple-icons.json b/_data/simple-icons.json
index 68eecd27..cf97f622 100644
--- a/_data/simple-icons.json
+++ b/_data/simple-icons.json
@@ -1455,6 +1455,11 @@
"hex": "0066DC",
"source": "http://press.dailymotion.com/?page_id=346"
},
+ {
+ "title": "Dark Reader",
+ "hex": "141E24",
+ "source": "https://github.com/simple-icons/simple-icons/pull/3348"
+ },
{
"title": "Dart",
"hex": "0175C2",
@@ -3350,6 +3355,11 @@
"hex": "00558C",
"source": "https://www.kofax.com/styleguide/logos"
},
+ {
+ "title": "Komoot",
+ "hex": "6AA127",
+ "source": "http://newsroom.komoot.com/media_kits/219423/"
+ },
{
"title": "Kotlin",
"hex": "0095D5",
@@ -3425,6 +3435,11 @@
"hex": "F8C300",
"source": "https://help.launchpad.net/logo/submissions"
},
+ {
+ "title": "LBRY",
+ "hex": "2F9176",
+ "source": "https://lbry.com/press-kit"
+ },
{
"title": "Leaflet",
"hex": "199900",
@@ -4870,6 +4885,11 @@
"hex": "14161A",
"source": "https://github.com/purescript/logo"
},
+ {
+ "title": "PyCharm",
+ "hex": "000000",
+ "source": "https://www.jetbrains.com/company/brand/logos/"
+ },
{
"title": "PyPI",
"hex": "3775A9",
@@ -5155,6 +5175,16 @@
"hex": "525DDC",
"source": "https://roots.io/about/brand/"
},
+ {
+ "title": "Roots Bedrock",
+ "hex": "525DDC",
+ "source": "https://roots.io/about/brand/"
+ },
+ {
+ "title": "Roots Sage",
+ "hex": "525DDC",
+ "source": "https://roots.io/about/brand/"
+ },
{
"title": "Roundcube",
"hex": "37BEFF",
@@ -5175,6 +5205,11 @@
"hex": "00A7B3",
"source": "https://www.rte.ie/archives/"
},
+ {
+ "title": "RTL",
+ "hex": "E9113B",
+ "source": "https://commons.wikimedia.org/wiki/File:RTL_Cornerlogo.svg"
+ },
{
"title": "RTLZWEI",
"hex": "00BCF6",
@@ -6170,6 +6205,11 @@
"hex": "53B50A",
"source": "http://www.trulia.com"
},
+ {
+ "title": "Trusted Shops",
+ "hex": "FFDC0F",
+ "source": "https://brand.trustedshops.com/d/dorIFVeUmcN9/corporate-design"
+ },
{
"title": "Trustpilot",
"hex": "00B67A",
diff --git a/icons/darkreader.svg b/icons/darkreader.svg
new file mode 100644
index 00000000..0119da00
--- /dev/null
+++ b/icons/darkreader.svg
@@ -0,0 +1 @@
+
diff --git a/icons/komoot.svg b/icons/komoot.svg
new file mode 100644
index 00000000..315af66c
--- /dev/null
+++ b/icons/komoot.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/icons/lbry.svg b/icons/lbry.svg
new file mode 100644
index 00000000..368a7923
--- /dev/null
+++ b/icons/lbry.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/icons/pycharm.svg b/icons/pycharm.svg
new file mode 100644
index 00000000..124575d6
--- /dev/null
+++ b/icons/pycharm.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/icons/rootsbedrock.svg b/icons/rootsbedrock.svg
new file mode 100644
index 00000000..d3a96baa
--- /dev/null
+++ b/icons/rootsbedrock.svg
@@ -0,0 +1 @@
+
diff --git a/icons/rootssage.svg b/icons/rootssage.svg
new file mode 100644
index 00000000..20548a30
--- /dev/null
+++ b/icons/rootssage.svg
@@ -0,0 +1 @@
+
diff --git a/icons/rtl.svg b/icons/rtl.svg
new file mode 100644
index 00000000..1abd2e27
--- /dev/null
+++ b/icons/rtl.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/icons/trustedshops.svg b/icons/trustedshops.svg
new file mode 100644
index 00000000..b3d1e09a
--- /dev/null
+++ b/icons/trustedshops.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/package-lock.json b/package-lock.json
index 57baedad..8ee99dfa 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,6 +1,6 @@
{
"name": "simple-icons",
- "version": "3.3.0",
+ "version": "3.4.0",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
@@ -1793,20 +1793,6 @@
"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
"dev": true
},
- "configstore": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/configstore/-/configstore-4.0.0.tgz",
- "integrity": "sha512-CmquAXFBocrzaSM8mtGPMM/HiWmyIpr4CcJl/rgY2uCObZ/S7cKU0silxslqJejl+t/T9HS8E0PUNQD81JGUEQ==",
- "dev": true,
- "requires": {
- "dot-prop": "^4.1.0",
- "graceful-fs": "^4.1.2",
- "make-dir": "^1.0.0",
- "unique-string": "^1.0.0",
- "write-file-atomic": "^2.0.0",
- "xdg-basedir": "^3.0.0"
- }
- },
"convert-source-map": {
"version": "1.7.0",
"resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz",
@@ -1852,12 +1838,6 @@
}
}
},
- "crypto-random-string": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz",
- "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=",
- "dev": true
- },
"css-select": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz",
@@ -2120,15 +2100,6 @@
"domelementtype": "1"
}
},
- "dot-prop": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz",
- "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==",
- "dev": true,
- "requires": {
- "is-obj": "^1.0.0"
- }
- },
"ecc-jsbn": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
@@ -2476,14 +2447,10 @@
"dev": true
},
"fast-xml-parser": {
- "version": "3.12.17",
- "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-3.12.17.tgz",
- "integrity": "sha512-gyvL0R5PGOW3gQssS/IVhANnsz1ANMK7tmE7YwqcdS7sAN8vDVKwXdQPZw5KH+nrSKSl5sXiGfhFnNflZwSgPQ==",
- "dev": true,
- "requires": {
- "configstore": "^4.0.0",
- "nimnjs": "^1.3.2"
- }
+ "version": "3.17.4",
+ "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-3.17.4.tgz",
+ "integrity": "sha512-qudnQuyYBgnvzf5Lj/yxMcf4L9NcVWihXJg7CiU1L+oUCq8MUnFEfH2/nXR/W5uq+yvUN1h7z6s7vs2v1WkL1A==",
+ "dev": true
},
"fb-watchman": {
"version": "2.0.1",
@@ -3011,12 +2978,6 @@
"integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
"dev": true
},
- "is-obj": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz",
- "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=",
- "dev": true
- },
"is-plain-object": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
@@ -4841,23 +4802,6 @@
"signal-exit": "^3.0.0"
}
},
- "make-dir": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz",
- "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==",
- "dev": true,
- "requires": {
- "pify": "^3.0.0"
- },
- "dependencies": {
- "pify": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
- "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
- "dev": true
- }
- }
- },
"makeerror": {
"version": "1.0.11",
"resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz",
@@ -5011,20 +4955,12 @@
}
},
"mkdirp": {
- "version": "0.5.1",
- "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
- "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
+ "version": "0.5.5",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
+ "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
"dev": true,
"requires": {
- "minimist": "0.0.8"
- },
- "dependencies": {
- "minimist": {
- "version": "0.0.8",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
- "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
- "dev": true
- }
+ "minimist": "^1.2.5"
}
},
"ms": {
@@ -5064,28 +5000,6 @@
"integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==",
"dev": true
},
- "nimn-date-parser": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/nimn-date-parser/-/nimn-date-parser-1.0.0.tgz",
- "integrity": "sha512-1Nf+x3EeMvHUiHsVuEhiZnwA8RMeOBVTQWfB1S2n9+i6PYCofHd2HRMD+WOHIHYshy4T4Gk8wQoCol7Hq3av8Q==",
- "dev": true
- },
- "nimn_schema_builder": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/nimn_schema_builder/-/nimn_schema_builder-1.1.0.tgz",
- "integrity": "sha512-DK5/B8CM4qwzG2URy130avcwPev4uO0ev836FbQyKo1ms6I9z/i6EJyiZ+d9xtgloxUri0W+5gfR8YbPq7SheA==",
- "dev": true
- },
- "nimnjs": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/nimnjs/-/nimnjs-1.3.2.tgz",
- "integrity": "sha512-TIOtI4iqkQrUM1tiM76AtTQem0c7e56SkDZ7sj1d1MfUsqRcq2ZWQvej/O+HBTZV7u/VKnwlKTDugK/75IRPPw==",
- "dev": true,
- "requires": {
- "nimn-date-parser": "^1.0.0",
- "nimn_schema_builder": "^1.0.0"
- }
- },
"node-fetch": {
"version": "2.6.0",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz",
@@ -7308,15 +7222,6 @@
"set-value": "^2.0.1"
}
},
- "unique-string": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz",
- "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=",
- "dev": true,
- "requires": {
- "crypto-random-string": "^1.0.0"
- }
- },
"unquote": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz",
@@ -7562,29 +7467,12 @@
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
"dev": true
},
- "write-file-atomic": {
- "version": "2.4.1",
- "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.1.tgz",
- "integrity": "sha512-TGHFeZEZMnv+gBFRfjAcxL5bPHrsGKtnb4qsFAws7/vlh+QfwAaySIw4AXP9ZskTTh5GWu3FLuJhsWVdiJPGvg==",
- "dev": true,
- "requires": {
- "graceful-fs": "^4.1.11",
- "imurmurhash": "^0.1.4",
- "signal-exit": "^3.0.2"
- }
- },
"ws": {
"version": "7.3.0",
"resolved": "https://registry.npmjs.org/ws/-/ws-7.3.0.tgz",
"integrity": "sha512-iFtXzngZVXPGgpTlP1rBqsUK82p9tKqsWRPg5L56egiljujJT3vGAYnHANvFxBieXrTFavhzhxW52jnaWV+w2w==",
"dev": true
},
- "xdg-basedir": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz",
- "integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=",
- "dev": true
- },
"xml-name-validator": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz",
diff --git a/package.json b/package.json
index e16abe79..48dda086 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "simple-icons",
- "version": "3.3.0",
+ "version": "3.4.0",
"description": "SVG icons for popular brands https://simpleicons.org",
"homepage": "https://www.simpleicons.org",
"keywords": [
diff --git a/scripts/build-package.js b/scripts/build-package.js
index d2cdd71f..065ba591 100644
--- a/scripts/build-package.js
+++ b/scripts/build-package.js
@@ -28,7 +28,7 @@ const { titleToFilename } = require("./utils");
// Local helper functions
function escape(value) {
- return value.replace(/'/g, "\\'");
+ return value.replace(/(? (
htmlFriendlyTitle
- .replace(/&/g, "&")
.replace(/'/g, "’")
+ .replace(/&/g, "&")
)
}
diff --git a/site_script.js b/site_script.js
index 757d1f00..45d4cb50 100644
--- a/site_script.js
+++ b/site_script.js
@@ -54,12 +54,12 @@
};
}
- // Get any parameter from the URL's search section (location.search).
- // see
+ // Get a parameter from the URL's search section (location.search). Based on:
// - https://davidwalsh.name/query-string-javascript
// - https://github.com/WebReflection/url-search-params
+ // - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#Escaping
function getUrlParameter(parameter) {
- name = parameter.replace(/[\[]/, '\\[').replace(/[\]]/, '\\]');
+ var name = parameter.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
var regex = new RegExp('[\\?&]' + name + '=([^]*)');
var results = regex.exec(location.search);
return results === null ? '' : decodeURIComponent(results[1].replace(/\+/g, ' '));
@@ -84,9 +84,9 @@
queryLetters = query.split('');
var matchedIcons = icons.filter(function(iconName, iconIndex) {
- var element = $icons[iconIndex],
- score = iconName.length - query.length;
- index = 0;
+ var element = $icons[iconIndex];
+ var score = iconName.length - query.length;
+ var index = 0;
for (var i = 0; i < queryLetters.length; i++) {
var letter = queryLetters[i];