diff --git a/icons/Facebook.svg b/icons/Facebook.svg
new file mode 100644
index 00000000..0e81d741
--- /dev/null
+++ b/icons/Facebook.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/icons/ShadCnUi.svg b/icons/ShadCnUi.svg
new file mode 100644
index 00000000..125a003d
--- /dev/null
+++ b/icons/ShadCnUi.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/index.js b/index.js
index 8067b2b8..048f0f04 100644
--- a/index.js
+++ b/index.js
@@ -41,6 +41,8 @@ const shortNames = {
rxjava: 'reactivex',
ghactions: 'githubactions',
sklearn: 'scikitlearn',
+ facebook: 'facebook',
+ shadcnui: 'shadcnui',
};
const themedIcons = [
...Object.keys(icons)
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
new file mode 100644
index 00000000..7b3222e6
--- /dev/null
+++ b/pnpm-lock.yaml
@@ -0,0 +1,810 @@
+lockfileVersion: '9.0'
+
+settings:
+ autoInstallPeers: true
+ excludeLinksFromLockfile: false
+
+importers:
+
+ .:
+ devDependencies:
+ '@cloudflare/wrangler':
+ specifier: ^1.19.8
+ version: 1.21.0
+ miniflare:
+ specifier: ^2.3.0
+ version: 2.14.4(cron-schedule@3.0.6)
+ prettier:
+ specifier: ^2.5.1
+ version: 2.8.8
+
+packages:
+
+ '@cloudflare/wrangler@1.21.0':
+ resolution: {integrity: sha512-rsF1cGQT+CcTbk6d/s7c/CWOnKAtKi26LSkSbjDPnXsaEMso3RGRPWdStav/xmMLbvKOeDdtL8NDoxrtimrpQg==}
+ deprecated: This package is for Wrangler v1.x and is no longer supported. Please visit https://www.npmjs.com/package/wrangler for Wrangler v2+.
+ hasBin: true
+
+ '@fastify/busboy@2.1.1':
+ resolution: {integrity: sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==}
+ engines: {node: '>=14'}
+
+ '@iarna/toml@2.2.5':
+ resolution: {integrity: sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==}
+
+ '@miniflare/cache@2.14.4':
+ resolution: {integrity: sha512-ayzdjhcj+4mjydbNK7ZGDpIXNliDbQY4GPcY2KrYw0v1OSUdj5kZUkygD09fqoGRfAks0d91VelkyRsAXX8FQA==}
+ engines: {node: '>=16.13'}
+ deprecated: Miniflare v2 is no longer supported. Please upgrade to Miniflare v4
+
+ '@miniflare/cli-parser@2.14.4':
+ resolution: {integrity: sha512-ltc6DDg0Sb1ZI6zbaPf9+CJbpRQXOLoCZqUdwtQyWCdZpAYQCT3tOeN19/tJC/uuL8NHj+EWKQIQriDYwp6uYQ==}
+ engines: {node: '>=16.13'}
+ deprecated: Miniflare v2 is no longer supported. Please upgrade to Miniflare v4
+
+ '@miniflare/core@2.14.4':
+ resolution: {integrity: sha512-FMmZcC1f54YpF4pDWPtdQPIO8NXfgUxCoR9uyrhxKJdZu7M6n8QKopPVNuaxR40jcsdxb7yKoQoFWnHfzJD9GQ==}
+ engines: {node: '>=16.13'}
+ deprecated: Miniflare v2 is no longer supported. Please upgrade to Miniflare v4
+
+ '@miniflare/d1@2.14.4':
+ resolution: {integrity: sha512-pMBVq9XWxTDdm+RRCkfXZP+bREjPg1JC8s8C0JTovA9OGmLQXqGTnFxIaS9vf1d8k3uSUGhDzPTzHr0/AUW1gA==}
+ engines: {node: '>=16.7'}
+ deprecated: Miniflare v2 is no longer supported. Please upgrade to Miniflare v4
+
+ '@miniflare/durable-objects@2.14.4':
+ resolution: {integrity: sha512-+JrmHP6gHHrjxV8S3axVw5lGHLgqmAGdcO/1HJUPswAyJEd3Ah2YnKhpo+bNmV4RKJCtEq9A2hbtVjBTD2YzwA==}
+ engines: {node: '>=16.13'}
+ deprecated: Miniflare v2 is no longer supported. Please upgrade to Miniflare v4
+
+ '@miniflare/html-rewriter@2.14.4':
+ resolution: {integrity: sha512-GB/vZn7oLbnhw+815SGF+HU5EZqSxbhIa3mu2L5MzZ2q5VOD5NHC833qG8c2GzDPhIaZ99ITY+ZJmbR4d+4aNQ==}
+ engines: {node: '>=16.13'}
+ deprecated: Miniflare v2 is no longer supported. Please upgrade to Miniflare v4
+
+ '@miniflare/http-server@2.14.4':
+ resolution: {integrity: sha512-2YrJi4o5Jf1FdT2XvdPCgaYpxuai7jn6Z1k5pgL1+s2qIaXr/uShceBLjJjEf3jz+daDxwmB1+BP0xyO/Cu4+g==}
+ engines: {node: '>=16.13'}
+ deprecated: Miniflare v2 is no longer supported. Please upgrade to Miniflare v4
+
+ '@miniflare/kv@2.14.4':
+ resolution: {integrity: sha512-QlERH0Z+klwLg0xw+/gm2yC34Nnr/I0GcQ+ASYqXeIXBwjqOtMBa3YVQnocaD+BPy/6TUtSpOAShHsEj76R2uw==}
+ engines: {node: '>=16.13'}
+ deprecated: Miniflare v2 is no longer supported. Please upgrade to Miniflare v4
+
+ '@miniflare/queues@2.14.4':
+ resolution: {integrity: sha512-aXQ5Ik8Iq1KGMBzGenmd6Js/jJgqyYvjom95/N9GptCGpiVWE5F0XqC1SL5rCwURbHN+aWY191o8XOFyY2nCUA==}
+ engines: {node: '>=16.7'}
+ deprecated: Miniflare v2 is no longer supported. Please upgrade to Miniflare v4
+
+ '@miniflare/r2@2.14.4':
+ resolution: {integrity: sha512-4ctiZWh7Ty7LB3brUjmbRiGMqwyDZgABYaczDtUidblo2DxX4JZPnJ/ZAyxMPNJif32kOJhcg6arC2hEthR9Sw==}
+ engines: {node: '>=16.13'}
+ deprecated: Miniflare v2 is no longer supported. Please upgrade to Miniflare v4
+
+ '@miniflare/runner-vm@2.14.4':
+ resolution: {integrity: sha512-Nog0bB9SVhPbZAkTWfO4lpLAUsBXKEjlb4y+y66FJw77mPlmPlVdpjElCvmf8T3VN/pqh83kvELGM+/fucMf4g==}
+ engines: {node: '>=16.13'}
+ deprecated: Miniflare v2 is no longer supported. Please upgrade to Miniflare v4
+
+ '@miniflare/scheduler@2.14.4':
+ resolution: {integrity: sha512-tBgQGFiRoqDSSuWyJDPbk6sNvGYrjE7O6Fhsx1d7h7/2ThofSqPxOnlttTTzeqnGc7Nt4Rf/s/JjQnzXOVXmqQ==}
+ engines: {node: '>=16.13'}
+ deprecated: Miniflare v2 is no longer supported. Please upgrade to Miniflare v4
+
+ '@miniflare/shared@2.14.4':
+ resolution: {integrity: sha512-upl4RSB3hyCnITOFmRZjJj4A72GmkVrtfZTilkdq5Qe5TTlzsjVeDJp7AuNUM9bM8vswRo+N5jOiot6O4PVwwQ==}
+ engines: {node: '>=16.13'}
+ deprecated: Miniflare v2 is no longer supported. Please upgrade to Miniflare v4
+
+ '@miniflare/sites@2.14.4':
+ resolution: {integrity: sha512-O5npWopi+fw9W9Ki0gy99nuBbgDva/iXy8PDC4dAXDB/pz45nISDqldabk0rL2t4W2+lY6LXKzdOw+qJO1GQTA==}
+ engines: {node: '>=16.13'}
+ deprecated: Miniflare v2 is no longer supported. Please upgrade to Miniflare v4
+
+ '@miniflare/storage-file@2.14.4':
+ resolution: {integrity: sha512-JxcmX0hXf4cB0cC9+s6ZsgYCq+rpyUKRPCGzaFwymWWplrO3EjPVxKCcMxG44jsdgsII6EZihYUN2J14wwCT7A==}
+ engines: {node: '>=16.13'}
+ deprecated: Miniflare v2 is no longer supported. Please upgrade to Miniflare v4
+
+ '@miniflare/storage-memory@2.14.4':
+ resolution: {integrity: sha512-9jB5BqNkMZ3SFjbPFeiVkLi1BuSahMhc/W1Y9H0W89qFDrrD+z7EgRgDtHTG1ZRyi9gIlNtt9qhkO1B6W2qb2A==}
+ engines: {node: '>=16.13'}
+ deprecated: Miniflare v2 is no longer supported. Please upgrade to Miniflare v4
+
+ '@miniflare/watcher@2.14.4':
+ resolution: {integrity: sha512-PYn05ET2USfBAeXF6NZfWl0O32KVyE8ncQ/ngysrh3hoIV7l3qGGH7ubeFx+D8VWQ682qYhwGygUzQv2j1tGGg==}
+ engines: {node: '>=16.13'}
+ deprecated: Miniflare v2 is no longer supported. Please upgrade to Miniflare v4
+
+ '@miniflare/web-sockets@2.14.4':
+ resolution: {integrity: sha512-stTxvLdJ2IcGOs76AnvGYAzGvx8JvQPRxC5DW0P5zdAAnhL33noqb5LKdPt3P37BKp9FzBKZHuihQI9oVqwm0g==}
+ engines: {node: '>=16.13'}
+ deprecated: Miniflare v2 is no longer supported. Please upgrade to Miniflare v4
+
+ '@types/better-sqlite3@7.6.13':
+ resolution: {integrity: sha512-NMv9ASNARoKksWtsq/SHakpYAYnhBrQgGD8zkLYk/jaK8jUGn08CfEdTRgYhMypUQAfzSP8W6gNLe0q19/t4VA==}
+
+ '@types/node-forge@1.3.14':
+ resolution: {integrity: sha512-mhVF2BnD4BO+jtOp7z1CdzaK4mbuK0LLQYAvdOLqHTavxFNq4zA1EmYkpnFjP8HOUzedfQkRnp0E2ulSAYSzAw==}
+
+ '@types/node@25.0.7':
+ resolution: {integrity: sha512-C/er7DlIZgRJO7WtTdYovjIFzGsz0I95UlMyR9anTb4aCpBSRWe5Jc1/RvLKUfzmOxHPGjSE5+63HgLtndxU4w==}
+
+ '@types/stack-trace@0.0.29':
+ resolution: {integrity: sha512-TgfOX+mGY/NyNxJLIbDWrO9DjGoVSW9+aB8H2yy1fy32jsvxijhmyJI9fDFgvz3YP4lvJaq9DzdR/M1bOgVc9g==}
+
+ axios@0.21.4:
+ resolution: {integrity: sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==}
+
+ balanced-match@1.0.2:
+ resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
+
+ brace-expansion@1.1.12:
+ resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==}
+
+ buffer-from@1.1.2:
+ resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==}
+
+ builtins@5.1.0:
+ resolution: {integrity: sha512-SW9lzGTLvWTP1AY8xeAMZimqDrIaSdLQUcVr9DMef51niJ022Ri87SwRRKYm4A6iHfkPaiVUu/Duw2Wc4J7kKg==}
+
+ busboy@1.6.0:
+ resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==}
+ engines: {node: '>=10.16.0'}
+
+ chownr@2.0.0:
+ resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==}
+ engines: {node: '>=10'}
+
+ concat-map@0.0.1:
+ resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
+
+ cookie@0.4.2:
+ resolution: {integrity: sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==}
+ engines: {node: '>= 0.6'}
+
+ cron-schedule@3.0.6:
+ resolution: {integrity: sha512-izfGgKyzzIyLaeb1EtZ3KbglkS6AKp9cv7LxmiyoOu+fXfol1tQDC0Cof0enVZGNtudTHW+3lfuW9ZkLQss4Wg==}
+
+ cross-spawn@7.0.6:
+ resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==}
+ engines: {node: '>= 8'}
+
+ dotenv@10.0.0:
+ resolution: {integrity: sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==}
+ engines: {node: '>=10'}
+
+ execa@6.1.0:
+ resolution: {integrity: sha512-QVWlX2e50heYJcCPG0iWtf8r0xjEYfz/OYLGDYH+IyjWezzPNxz63qNFOu0l4YftGWuizFVZHHs8PrLU5p2IDA==}
+ engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+
+ follow-redirects@1.15.11:
+ resolution: {integrity: sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==}
+ engines: {node: '>=4.0'}
+ peerDependencies:
+ debug: '*'
+ peerDependenciesMeta:
+ debug:
+ optional: true
+
+ fs-minipass@2.1.0:
+ resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==}
+ engines: {node: '>= 8'}
+
+ fs.realpath@1.0.0:
+ resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
+
+ get-stream@6.0.1:
+ resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==}
+ engines: {node: '>=10'}
+
+ glob@7.2.3:
+ resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
+ deprecated: Glob versions prior to v9 are no longer supported
+
+ html-rewriter-wasm@0.4.1:
+ resolution: {integrity: sha512-lNovG8CMCCmcVB1Q7xggMSf7tqPCijZXaH4gL6iE8BFghdQCbaY5Met9i1x2Ex8m/cZHDUtXK9H6/znKamRP8Q==}
+
+ http-cache-semantics@4.2.0:
+ resolution: {integrity: sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==}
+
+ human-signals@3.0.1:
+ resolution: {integrity: sha512-rQLskxnM/5OCldHo+wNXbpVgDn5A17CUoKX+7Sokwaknlq7CdSnphy0W39GU8dw59XiCXmFXDg4fRuckQRKewQ==}
+ engines: {node: '>=12.20.0'}
+
+ inflight@1.0.6:
+ resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==}
+ deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.
+
+ inherits@2.0.4:
+ resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
+
+ is-stream@3.0.0:
+ resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==}
+ engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+
+ isexe@2.0.0:
+ resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
+
+ kleur@4.1.5:
+ resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==}
+ engines: {node: '>=6'}
+
+ merge-stream@2.0.0:
+ resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==}
+
+ mimic-fn@4.0.0:
+ resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==}
+ engines: {node: '>=12'}
+
+ miniflare@2.14.4:
+ resolution: {integrity: sha512-sMV8oJRWwqxPsgg7EOMizkv7pLxd1HOzqv055PcsM4kcRECPhnJSaCtAUc+ZfpOgR4musgfooM6kQo8o+ifZ+w==}
+ engines: {node: '>=16.13'}
+ deprecated: Miniflare v2 is no longer supported. Please upgrade to Miniflare v4
+ hasBin: true
+ peerDependencies:
+ '@miniflare/storage-redis': 2.14.4
+ cron-schedule: ^3.0.4
+ ioredis: ^4.27.9
+ peerDependenciesMeta:
+ '@miniflare/storage-redis':
+ optional: true
+ cron-schedule:
+ optional: true
+ ioredis:
+ optional: true
+
+ minimatch@3.1.2:
+ resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
+
+ minipass@3.3.6:
+ resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==}
+ engines: {node: '>=8'}
+
+ minipass@5.0.0:
+ resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==}
+ engines: {node: '>=8'}
+
+ minizlib@2.1.2:
+ resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==}
+ engines: {node: '>= 8'}
+
+ mkdirp@1.0.4:
+ resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==}
+ engines: {node: '>=10'}
+ hasBin: true
+
+ mustache@4.2.0:
+ resolution: {integrity: sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==}
+ hasBin: true
+
+ node-forge@1.3.3:
+ resolution: {integrity: sha512-rLvcdSyRCyouf6jcOIPe/BgwG/d7hKjzMKOas33/pHEr6gbq18IK9zV7DiPvzsz0oBJPme6qr6H6kGZuI9/DZg==}
+ engines: {node: '>= 6.13.0'}
+
+ npm-run-path@5.3.0:
+ resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==}
+ engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+
+ npx-import@1.1.4:
+ resolution: {integrity: sha512-3ShymTWOgqGyNlh5lMJAejLuIv3W1K3fbI5Ewc6YErZU3Sp0PqsNs8UIU1O8z5+KVl/Du5ag56Gza9vdorGEoA==}
+
+ once@1.4.0:
+ resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
+
+ onetime@6.0.0:
+ resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==}
+ engines: {node: '>=12'}
+
+ parse-package-name@1.0.0:
+ resolution: {integrity: sha512-kBeTUtcj+SkyfaW4+KBe0HtsloBJ/mKTPoxpVdA57GZiPerREsUWJOhVj9anXweFiJkm5y8FG1sxFZkZ0SN6wg==}
+
+ path-is-absolute@1.0.1:
+ resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==}
+ engines: {node: '>=0.10.0'}
+
+ path-key@3.1.1:
+ resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
+ engines: {node: '>=8'}
+
+ path-key@4.0.0:
+ resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==}
+ engines: {node: '>=12'}
+
+ picomatch@2.3.1:
+ resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
+ engines: {node: '>=8.6'}
+
+ prettier@2.8.8:
+ resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==}
+ engines: {node: '>=10.13.0'}
+ hasBin: true
+
+ rimraf@3.0.2:
+ resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==}
+ deprecated: Rimraf versions prior to v4 are no longer supported
+ hasBin: true
+
+ selfsigned@2.4.1:
+ resolution: {integrity: sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==}
+ engines: {node: '>=10'}
+
+ semiver@1.1.0:
+ resolution: {integrity: sha512-QNI2ChmuioGC1/xjyYwyZYADILWyW6AmS1UH6gDj/SFUUUS4MBAWs/7mxnkRPc/F4iHezDP+O8t0dO8WHiEOdg==}
+ engines: {node: '>=6'}
+
+ semver@7.7.3:
+ resolution: {integrity: sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==}
+ engines: {node: '>=10'}
+ hasBin: true
+
+ set-cookie-parser@2.7.2:
+ resolution: {integrity: sha512-oeM1lpU/UvhTxw+g3cIfxXHyJRc/uidd3yK1P242gzHds0udQBYzs3y8j4gCCW+ZJ7ad0yctld8RYO+bdurlvw==}
+
+ shebang-command@2.0.0:
+ resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
+ engines: {node: '>=8'}
+
+ shebang-regex@3.0.0:
+ resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
+ engines: {node: '>=8'}
+
+ signal-exit@3.0.7:
+ resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==}
+
+ source-map-support@0.5.21:
+ resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==}
+
+ source-map@0.6.1:
+ resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==}
+ engines: {node: '>=0.10.0'}
+
+ stack-trace@0.0.10:
+ resolution: {integrity: sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==}
+
+ streamsearch@1.1.0:
+ resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==}
+ engines: {node: '>=10.0.0'}
+
+ strip-final-newline@3.0.0:
+ resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==}
+ engines: {node: '>=12'}
+
+ tar@6.2.1:
+ resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==}
+ engines: {node: '>=10'}
+
+ undici-types@7.16.0:
+ resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==}
+
+ undici@5.28.4:
+ resolution: {integrity: sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==}
+ engines: {node: '>=14.0'}
+
+ urlpattern-polyfill@4.0.3:
+ resolution: {integrity: sha512-DOE84vZT2fEcl9gqCUTcnAw5ZY5Id55ikUcziSUntuEFL3pRvavg5kwDmTEUJkeCHInTlV/HexFomgYnzO5kdQ==}
+
+ validate-npm-package-name@4.0.0:
+ resolution: {integrity: sha512-mzR0L8ZDktZjpX4OB46KT+56MAhl4EIazWP/+G/HPGuvfdaqg4YsCdtOm6U9+LOFyYDoh4dpnpxZRB9MQQns5Q==}
+ engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
+
+ which@2.0.2:
+ resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
+ engines: {node: '>= 8'}
+ hasBin: true
+
+ wrappy@1.0.2:
+ resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
+
+ ws@8.19.0:
+ resolution: {integrity: sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg==}
+ engines: {node: '>=10.0.0'}
+ peerDependencies:
+ bufferutil: ^4.0.1
+ utf-8-validate: '>=5.0.2'
+ peerDependenciesMeta:
+ bufferutil:
+ optional: true
+ utf-8-validate:
+ optional: true
+
+ yallist@4.0.0:
+ resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==}
+
+ youch@2.2.2:
+ resolution: {integrity: sha512-/FaCeG3GkuJwaMR34GHVg0l8jCbafZLHiFowSjqLlqhC6OMyf2tPJBu8UirF7/NI9X/R5ai4QfEKUCOxMAGxZQ==}
+
+snapshots:
+
+ '@cloudflare/wrangler@1.21.0':
+ dependencies:
+ axios: 0.21.4
+ rimraf: 3.0.2
+ tar: 6.2.1
+ transitivePeerDependencies:
+ - debug
+
+ '@fastify/busboy@2.1.1': {}
+
+ '@iarna/toml@2.2.5': {}
+
+ '@miniflare/cache@2.14.4':
+ dependencies:
+ '@miniflare/core': 2.14.4
+ '@miniflare/shared': 2.14.4
+ http-cache-semantics: 4.2.0
+ undici: 5.28.4
+
+ '@miniflare/cli-parser@2.14.4':
+ dependencies:
+ '@miniflare/shared': 2.14.4
+ kleur: 4.1.5
+
+ '@miniflare/core@2.14.4':
+ dependencies:
+ '@iarna/toml': 2.2.5
+ '@miniflare/queues': 2.14.4
+ '@miniflare/shared': 2.14.4
+ '@miniflare/watcher': 2.14.4
+ busboy: 1.6.0
+ dotenv: 10.0.0
+ kleur: 4.1.5
+ set-cookie-parser: 2.7.2
+ undici: 5.28.4
+ urlpattern-polyfill: 4.0.3
+
+ '@miniflare/d1@2.14.4':
+ dependencies:
+ '@miniflare/core': 2.14.4
+ '@miniflare/shared': 2.14.4
+
+ '@miniflare/durable-objects@2.14.4':
+ dependencies:
+ '@miniflare/core': 2.14.4
+ '@miniflare/shared': 2.14.4
+ '@miniflare/storage-memory': 2.14.4
+ undici: 5.28.4
+
+ '@miniflare/html-rewriter@2.14.4':
+ dependencies:
+ '@miniflare/core': 2.14.4
+ '@miniflare/shared': 2.14.4
+ html-rewriter-wasm: 0.4.1
+ undici: 5.28.4
+
+ '@miniflare/http-server@2.14.4':
+ dependencies:
+ '@miniflare/core': 2.14.4
+ '@miniflare/shared': 2.14.4
+ '@miniflare/web-sockets': 2.14.4
+ kleur: 4.1.5
+ selfsigned: 2.4.1
+ undici: 5.28.4
+ ws: 8.19.0
+ youch: 2.2.2
+ transitivePeerDependencies:
+ - bufferutil
+ - utf-8-validate
+
+ '@miniflare/kv@2.14.4':
+ dependencies:
+ '@miniflare/shared': 2.14.4
+
+ '@miniflare/queues@2.14.4':
+ dependencies:
+ '@miniflare/shared': 2.14.4
+
+ '@miniflare/r2@2.14.4':
+ dependencies:
+ '@miniflare/core': 2.14.4
+ '@miniflare/shared': 2.14.4
+ undici: 5.28.4
+
+ '@miniflare/runner-vm@2.14.4':
+ dependencies:
+ '@miniflare/shared': 2.14.4
+
+ '@miniflare/scheduler@2.14.4':
+ dependencies:
+ '@miniflare/core': 2.14.4
+ '@miniflare/shared': 2.14.4
+ cron-schedule: 3.0.6
+
+ '@miniflare/shared@2.14.4':
+ dependencies:
+ '@types/better-sqlite3': 7.6.13
+ kleur: 4.1.5
+ npx-import: 1.1.4
+ picomatch: 2.3.1
+
+ '@miniflare/sites@2.14.4':
+ dependencies:
+ '@miniflare/kv': 2.14.4
+ '@miniflare/shared': 2.14.4
+ '@miniflare/storage-file': 2.14.4
+
+ '@miniflare/storage-file@2.14.4':
+ dependencies:
+ '@miniflare/shared': 2.14.4
+ '@miniflare/storage-memory': 2.14.4
+
+ '@miniflare/storage-memory@2.14.4':
+ dependencies:
+ '@miniflare/shared': 2.14.4
+
+ '@miniflare/watcher@2.14.4':
+ dependencies:
+ '@miniflare/shared': 2.14.4
+
+ '@miniflare/web-sockets@2.14.4':
+ dependencies:
+ '@miniflare/core': 2.14.4
+ '@miniflare/shared': 2.14.4
+ undici: 5.28.4
+ ws: 8.19.0
+ transitivePeerDependencies:
+ - bufferutil
+ - utf-8-validate
+
+ '@types/better-sqlite3@7.6.13':
+ dependencies:
+ '@types/node': 25.0.7
+
+ '@types/node-forge@1.3.14':
+ dependencies:
+ '@types/node': 25.0.7
+
+ '@types/node@25.0.7':
+ dependencies:
+ undici-types: 7.16.0
+
+ '@types/stack-trace@0.0.29': {}
+
+ axios@0.21.4:
+ dependencies:
+ follow-redirects: 1.15.11
+ transitivePeerDependencies:
+ - debug
+
+ balanced-match@1.0.2: {}
+
+ brace-expansion@1.1.12:
+ dependencies:
+ balanced-match: 1.0.2
+ concat-map: 0.0.1
+
+ buffer-from@1.1.2: {}
+
+ builtins@5.1.0:
+ dependencies:
+ semver: 7.7.3
+
+ busboy@1.6.0:
+ dependencies:
+ streamsearch: 1.1.0
+
+ chownr@2.0.0: {}
+
+ concat-map@0.0.1: {}
+
+ cookie@0.4.2: {}
+
+ cron-schedule@3.0.6: {}
+
+ cross-spawn@7.0.6:
+ dependencies:
+ path-key: 3.1.1
+ shebang-command: 2.0.0
+ which: 2.0.2
+
+ dotenv@10.0.0: {}
+
+ execa@6.1.0:
+ dependencies:
+ cross-spawn: 7.0.6
+ get-stream: 6.0.1
+ human-signals: 3.0.1
+ is-stream: 3.0.0
+ merge-stream: 2.0.0
+ npm-run-path: 5.3.0
+ onetime: 6.0.0
+ signal-exit: 3.0.7
+ strip-final-newline: 3.0.0
+
+ follow-redirects@1.15.11: {}
+
+ fs-minipass@2.1.0:
+ dependencies:
+ minipass: 3.3.6
+
+ fs.realpath@1.0.0: {}
+
+ get-stream@6.0.1: {}
+
+ glob@7.2.3:
+ dependencies:
+ fs.realpath: 1.0.0
+ inflight: 1.0.6
+ inherits: 2.0.4
+ minimatch: 3.1.2
+ once: 1.4.0
+ path-is-absolute: 1.0.1
+
+ html-rewriter-wasm@0.4.1: {}
+
+ http-cache-semantics@4.2.0: {}
+
+ human-signals@3.0.1: {}
+
+ inflight@1.0.6:
+ dependencies:
+ once: 1.4.0
+ wrappy: 1.0.2
+
+ inherits@2.0.4: {}
+
+ is-stream@3.0.0: {}
+
+ isexe@2.0.0: {}
+
+ kleur@4.1.5: {}
+
+ merge-stream@2.0.0: {}
+
+ mimic-fn@4.0.0: {}
+
+ miniflare@2.14.4(cron-schedule@3.0.6):
+ dependencies:
+ '@miniflare/cache': 2.14.4
+ '@miniflare/cli-parser': 2.14.4
+ '@miniflare/core': 2.14.4
+ '@miniflare/d1': 2.14.4
+ '@miniflare/durable-objects': 2.14.4
+ '@miniflare/html-rewriter': 2.14.4
+ '@miniflare/http-server': 2.14.4
+ '@miniflare/kv': 2.14.4
+ '@miniflare/queues': 2.14.4
+ '@miniflare/r2': 2.14.4
+ '@miniflare/runner-vm': 2.14.4
+ '@miniflare/scheduler': 2.14.4
+ '@miniflare/shared': 2.14.4
+ '@miniflare/sites': 2.14.4
+ '@miniflare/storage-file': 2.14.4
+ '@miniflare/storage-memory': 2.14.4
+ '@miniflare/web-sockets': 2.14.4
+ kleur: 4.1.5
+ semiver: 1.1.0
+ source-map-support: 0.5.21
+ undici: 5.28.4
+ optionalDependencies:
+ cron-schedule: 3.0.6
+ transitivePeerDependencies:
+ - bufferutil
+ - utf-8-validate
+
+ minimatch@3.1.2:
+ dependencies:
+ brace-expansion: 1.1.12
+
+ minipass@3.3.6:
+ dependencies:
+ yallist: 4.0.0
+
+ minipass@5.0.0: {}
+
+ minizlib@2.1.2:
+ dependencies:
+ minipass: 3.3.6
+ yallist: 4.0.0
+
+ mkdirp@1.0.4: {}
+
+ mustache@4.2.0: {}
+
+ node-forge@1.3.3: {}
+
+ npm-run-path@5.3.0:
+ dependencies:
+ path-key: 4.0.0
+
+ npx-import@1.1.4:
+ dependencies:
+ execa: 6.1.0
+ parse-package-name: 1.0.0
+ semver: 7.7.3
+ validate-npm-package-name: 4.0.0
+
+ once@1.4.0:
+ dependencies:
+ wrappy: 1.0.2
+
+ onetime@6.0.0:
+ dependencies:
+ mimic-fn: 4.0.0
+
+ parse-package-name@1.0.0: {}
+
+ path-is-absolute@1.0.1: {}
+
+ path-key@3.1.1: {}
+
+ path-key@4.0.0: {}
+
+ picomatch@2.3.1: {}
+
+ prettier@2.8.8: {}
+
+ rimraf@3.0.2:
+ dependencies:
+ glob: 7.2.3
+
+ selfsigned@2.4.1:
+ dependencies:
+ '@types/node-forge': 1.3.14
+ node-forge: 1.3.3
+
+ semiver@1.1.0: {}
+
+ semver@7.7.3: {}
+
+ set-cookie-parser@2.7.2: {}
+
+ shebang-command@2.0.0:
+ dependencies:
+ shebang-regex: 3.0.0
+
+ shebang-regex@3.0.0: {}
+
+ signal-exit@3.0.7: {}
+
+ source-map-support@0.5.21:
+ dependencies:
+ buffer-from: 1.1.2
+ source-map: 0.6.1
+
+ source-map@0.6.1: {}
+
+ stack-trace@0.0.10: {}
+
+ streamsearch@1.1.0: {}
+
+ strip-final-newline@3.0.0: {}
+
+ tar@6.2.1:
+ dependencies:
+ chownr: 2.0.0
+ fs-minipass: 2.1.0
+ minipass: 5.0.0
+ minizlib: 2.1.2
+ mkdirp: 1.0.4
+ yallist: 4.0.0
+
+ undici-types@7.16.0: {}
+
+ undici@5.28.4:
+ dependencies:
+ '@fastify/busboy': 2.1.1
+
+ urlpattern-polyfill@4.0.3: {}
+
+ validate-npm-package-name@4.0.0:
+ dependencies:
+ builtins: 5.1.0
+
+ which@2.0.2:
+ dependencies:
+ isexe: 2.0.0
+
+ wrappy@1.0.2: {}
+
+ ws@8.19.0: {}
+
+ yallist@4.0.0: {}
+
+ youch@2.2.2:
+ dependencies:
+ '@types/stack-trace': 0.0.29
+ cookie: 0.4.2
+ mustache: 4.2.0
+ stack-trace: 0.0.10
diff --git a/readme.md b/readme.md
index 3798b7cf..01174e00 100644
--- a/readme.md
+++ b/readme.md
@@ -150,6 +150,7 @@ Here's a list of all the icons currently supported. Feel free to open an issue t
| `ember` |
|
| `emotion` |
|
| `express` |
|
+| `facebook` |
|
| `fastapi` |
|
| `fediverse` |
|
| `figma` |
|
@@ -270,6 +271,7 @@ Here's a list of all the icons currently supported. Feel free to open an issue t
| `ruby` |
|
| `rust` |
|
| `sass` |
|
+| `shadcnui` |
|
| `spring` |
|
| `sqlite` |
|
| `stackoverflow` |
|