feat(icons): expand brands icon pack and update all packs

Also, refactor icon resolution to avoid duplicated logic:

get_icon_svg.html	New shared core — alias resolution, pack lookup, hb fallback, user assets, hugo fallback. Returns raw SVG string.

get_icon.html	Thin wrapper — emoji handling, calls get_icon_svg, Unicode emoji fallback for bare names, attribute injection, safeHTML return.

get_icon_data.html	Thin wrapper — one-liner delegating to get_icon_svg.
This commit is contained in:
George Cushen committed 2026-03-27 00:19:41 +00:00
1 parent 2bb78df692
commit 5733b053bb
13 files changed
+18841 -4737

No files matched your search

@@ -1 +0,0 @@
<svg fill="none" viewBox="0 0 600 600" xmlns="http://www.w3.org/2000/svg"><path d="m307.031 292.969h-14.062v14.062h14.062z" fill="#fff"/><path d="m600 0h-600v600h600z" fill="#fff"/><path d="m600 0h-600v600h600z" fill="#0056d2"/><g fill="#fff"><path d="m117.913 300.434c0-19.301 15.923-34.875 35.859-34.875 20.07 0 35.992 15.574 35.992 34.875 0 19.167-15.922 35.007-35.992 35.007-19.936 0-35.859-15.973-35.859-35.007zm54.725 0c0-9.583-8.43-18.104-18.866-18.104-10.303 0-18.598 8.521-18.598 18.104 0 9.717 8.429 18.236 18.598 18.236 10.436 0 18.866-8.519 18.866-18.236z"/><path d="m478.15 300.965c0-21.164 17.326-35.406 33.036-35.406 10.747 0 16.924 3.194 21.086 9.452l1.612-8.253h16.116v67.353h-16.116l-2.015-6.923c-4.701 5.059-10.61 8.253-20.546 8.253-15.713 0-33.173-13.577-33.173-34.476zm54.795-.133c0-10.247-8.463-18.502-18.936-18.502-10.341 0-18.668 8.388-18.668 18.771 0 9.316 8.461 17.702 18.668 17.702 10.607-.133 18.936-8.519 18.936-17.971z"/><path d="m458.833 274.982v-7.721h-17.101v66.211h17.101v-35.724c0-10.729 5.221-16.356 14.487-16.356.652 0 1.176 0 1.697.131l3.133-15.964c-8.875.131-15.272 3.14-19.317 9.423z"/><path d="m284.158 274.982v-7.721h-17.623l.135 66.211h17.625l-.137-35.724c0-10.729 5.382-16.356 14.801-16.356.672 0 1.209 0 1.75.131l3.228-15.964c-9.15.131-15.741 3.14-19.779 9.423z"/><path d="m196.654 307.776v-41.233h17.209v39.104c0 8.645 4.73 13.699 13.006 13.699 9.196 0 14.583-5.718 14.583-16.624v-36.179h17.209v67.3h-17.209v-7.845c-4.073 6.383-10.641 9.442-19.706 9.442-15.502.133-25.092-11.172-25.092-27.664z"/><path d="m365.945 300.369c0-18.867 13.621-34.942 34.985-34.809 19.893 0 33.913 15.942 33.913 34.541 0 1.861-.134 3.854-.401 5.582l-51.405-.133c2.004 8.104 8.678 13.816 18.693 13.949 6.141 0 12.685-2.259 16.69-7.308l11.885 9.567c-6.144 8.634-16.959 13.683-28.441 13.683-20.297-.265-35.919-15.411-35.919-35.072zm51.408-6.909c-.937-6.777-8.145-12.091-16.423-12.091-8.145 0-14.689 4.783-17.226 11.958z"/><path d="m303.937 319.559 15.522-8.073c2.542 5.558 7.76 8.734 14.984 8.734 6.691 0 9.234-2.118 9.234-5.029 0-10.721-36.93-4.234-36.93-28.853 0-13.631 12.043-20.779 26.894-20.779 11.239 0 21.274 4.897 26.76 14.163l-15.388 8.073c-2.272-4.5-6.555-7.015-12.041-7.015-5.352 0-7.894 1.854-7.894 4.897 0 10.456 36.93 3.837 36.93 28.853 0 12.97-10.704 20.911-27.966 20.911-14.717-.132-25.02-4.897-30.105-15.882z"/><path d="m50 300.074c0-19.161 15.7897-34.515 35.5599-34.515 12.7377 0 23.7511 6.301 30.1201 15.747l-14.861 8.532c-3.4503-4.724-8.8902-7.873-15.2591-7.873-10.2169 0-18.4434 8.398-18.4434 17.978 0 9.578 8.359 17.976 18.4434 17.976 6.6342 0 12.4724-3.411 15.6571-8.529l14.728 8.66c-6.236 9.843-17.5148 16.406-30.3851 16.406-19.7702.131-35.5599-15.616-35.5599-34.382z"/></g></svg>

Before

Width:  |  Height:  |  Size: 2.7 KiB

@@ -1 +0,0 @@
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 26 34"><path d="M14.001 25.028v-7.224l11.393-6.498-2.77-1.588-8.623 4.918V7.391c0-.491-.265-.95-.69-1.194L2.938.245a1.974 1.974 0 00-2.006.06A1.98 1.98 0 000 1.992v20.375c0 .69.35 1.321.934 1.687a1.973 1.973 0 002.002.061l8.317-4.743v6.457c0 .494.266.952.695 1.196l10.658 6.067 2.771-1.589-11.376-6.475zm-2.748-16.84v8.016l-8.504 4.85V3.31l8.504 4.88z" fill="#03EF62" fill-rule="evenodd"></path></svg>

Before

Width:  |  Height:  |  Size: 469 B

@@ -1,36 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 24.1.2, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 552.88 310.72" style="enable-background:new 0 0 552.88 310.72;" xml:space="preserve">
<style type="text/css">
.st0{fill:#02262B;}
.st1{fill:#FFFFFF;}
</style>
<polygon class="st0" points="353.43,50.96 364.08,0 51.3,0 0,245.01 261.52,245.01 247.12,310.72 497.63,310.72 552.88,50.96 "/>
<path class="st1" d="M106.6,213.73c-7.09,0-13.79-1.16-20.09-3.49c-6.3-2.32-11.8-5.75-16.49-10.28
c-4.69-4.53-8.39-10.1-11.11-16.72c-2.72-6.62-4.08-14.22-4.08-22.81c0-11.74,1.63-22.44,4.9-32.09
c3.27-9.65,7.82-17.92,13.65-24.82c5.83-6.89,12.82-12.23,20.98-16.01c8.15-3.78,17.08-5.67,26.77-5.67
c6.54,0,12.74,1.14,18.62,3.43c5.87,2.29,11.01,5.61,15.42,9.99c4.41,4.37,7.92,9.75,10.52,16.13c2.6,6.38,3.9,13.71,3.9,21.98
c0,1.26-0.04,2.74-0.12,4.43c-0.08,1.7-0.2,3.43-0.36,5.2c-0.16,1.77-0.32,3.51-0.47,5.2c-0.16,1.69-0.35,3.13-0.59,4.31H76.22
c-0.08,1.11-0.14,2.17-0.18,3.19c-0.04,1.03-0.06,2.09-0.06,3.19c0,6.54,0.95,12.11,2.84,16.72c1.89,4.61,4.35,8.37,7.39,11.29
c3.03,2.92,6.44,5.02,10.22,6.32c3.78,1.3,7.6,1.95,11.46,1.95c8.43,0,15.21-1.46,20.33-4.37c5.12-2.91,9.02-6.85,11.7-11.82h21.63
c-1.34,4.89-3.55,9.46-6.62,13.71c-3.07,4.25-6.95,7.94-11.64,11.05c-4.69,3.11-10.13,5.56-16.31,7.33
C120.8,212.84,114,213.73,106.6,213.73z M148.08,136.08c0.08-0.39,0.14-1.12,0.18-2.19c0.04-1.06,0.06-2.11,0.06-3.13
c0-4.18-0.61-8.14-1.83-11.88c-1.22-3.74-3.05-7.03-5.5-9.87c-2.44-2.84-5.48-5.08-9.1-6.74c-3.63-1.65-7.84-2.48-12.65-2.48
c-4.89,0-9.46,0.87-13.71,2.6c-4.26,1.73-8.12,4.2-11.58,7.39c-3.47,3.19-6.46,7.01-8.98,11.46c-2.52,4.45-4.53,9.4-6.03,14.83
H148.08z"/>
<path class="st1" d="M227.58,213.73c-6.38,0-12.37-1.2-17.97-3.61c-5.6-2.4-10.5-5.85-14.71-10.34c-4.22-4.49-7.55-9.93-9.99-16.31
c-2.44-6.38-3.66-13.51-3.66-21.39c0-7.64,0.77-14.95,2.3-21.92s3.72-13.43,6.56-19.38c2.84-5.95,6.24-11.33,10.22-16.13
c3.98-4.81,8.39-8.9,13.24-12.29c4.85-3.39,10.08-5.99,15.72-7.8c5.63-1.81,11.52-2.72,17.67-2.72c4.57,0,8.92,0.63,13.06,1.89
c4.14,1.26,7.88,3.01,11.23,5.26c3.35,2.25,6.22,4.96,8.63,8.15c2.4,3.19,4.16,6.68,5.26,10.46h1.89l15.72-74.11h20.68l-37.82,178
h-19.62l3.66-17.37h-1.89c-4.65,6.07-10.48,10.85-17.49,14.36C243.26,211.97,235.69,213.73,227.58,213.73z M234.08,195.41
c6.62,0,12.74-1.55,18.38-4.67c5.63-3.11,10.54-7.37,14.71-12.76c4.18-5.4,7.45-11.74,9.81-19.03c2.36-7.29,3.55-15.15,3.55-23.58
c0-5.44-0.75-10.32-2.25-14.66c-1.5-4.33-3.63-8.02-6.38-11.05c-2.76-3.03-6.11-5.38-10.05-7.03c-3.94-1.66-8.39-2.48-13.36-2.48
c-6.54,0-12.61,1.46-18.2,4.37c-5.6,2.92-10.44,6.97-14.54,12.17c-4.1,5.2-7.33,11.41-9.69,18.61s-3.55,15.11-3.55,23.7
c0,5.36,0.77,10.28,2.31,14.77c1.54,4.49,3.68,8.33,6.44,11.52c2.76,3.19,6.07,5.67,9.93,7.45
C225.05,194.52,229.35,195.41,234.08,195.41z"/>
<g>
<polygon class="st1" points="508.94,84.45 462.81,84.45 412.49,146.75 410.01,146.75 383.4,84.45 336.74,84.45 376.74,174.94
290.39,277.23 335.9,277.23 391.32,211.52 395.06,211.52 425,277.23 470.79,277.23 426.51,179.47 "/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 3.1 KiB

File diff suppressed because it is too large. Load diff
+9
View File
@@ -0,0 +1,9 @@
# HugoBlox icon aliases — survives icon pack updates.
# Format: pack/old-name → pack/new-name (or cross-pack)
#
# Each entry maps <pack>/<alias> → <pack>/<canonical>
# If the target pack differs, specify it explicitly.
brands:
google-scholar: googlescholar
weixin: wechat
File diff suppressed because it is too large. Load diff
-25
View File
@@ -1,25 +0,0 @@
icons:
github: <svg fill="currentColor" viewBox="3 3 18 18"><path d="M12 3C7.0275 3 3 7.12937 3 12.2276C3 16.3109 5.57625 19.7597 9.15374 20.9824C9.60374 21.0631 9.77249 20.7863 9.77249 20.5441C9.77249 20.3249 9.76125 19.5982 9.76125 18.8254C7.5 19.2522 6.915 18.2602 6.735 17.7412C6.63375 17.4759 6.19499 16.6569 5.8125 16.4378C5.4975 16.2647 5.0475 15.838 5.80124 15.8264C6.51 15.8149 7.01625 16.4954 7.18499 16.7723C7.99499 18.1679 9.28875 17.7758 9.80625 17.5335C9.885 16.9337 10.1212 16.53 10.38 16.2993C8.3775 16.0687 6.285 15.2728 6.285 11.7432C6.285 10.7397 6.63375 9.9092 7.20749 9.26326C7.1175 9.03257 6.8025 8.08674 7.2975 6.81794C7.2975 6.81794 8.05125 6.57571 9.77249 7.76377C10.4925 7.55615 11.2575 7.45234 12.0225 7.45234C12.7875 7.45234 13.5525 7.55615 14.2725 7.76377C15.9937 6.56418 16.7475 6.81794 16.7475 6.81794C17.2424 8.08674 16.9275 9.03257 16.8375 9.26326C17.4113 9.9092 17.76 10.7281 17.76 11.7432C17.76 15.2843 15.6563 16.0687 13.6537 16.2993C13.98 16.5877 14.2613 17.1414 14.2613 18.0065C14.2613 19.2407 14.25 20.2326 14.25 20.5441C14.25 20.7863 14.4188 21.0746 14.8688 20.9824C16.6554 20.364 18.2079 19.1866 19.3078 17.6162C20.4077 16.0457 20.9995 14.1611 21 12.2276C21 7.12937 16.9725 3 12 3Z"></path></svg>
instagram: <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 15 15"><path fill="currentColor" fill-rule="evenodd" d="M12.91 12.909c.326-.327.582-.72.749-1.151c.16-.414.27-.886.302-1.578c.032-.693.04-.915.04-2.68c0-1.765-.008-1.987-.04-2.68c-.032-.692-.142-1.164-.302-1.578a3.185 3.185 0 0 0-.75-1.151a3.187 3.187 0 0 0-1.151-.75c-.414-.16-.886-.27-1.578-.302C9.487 1.007 9.265 1 7.5 1c-1.765 0-1.987.007-2.68.04c-.692.03-1.164.14-1.578.301a3.2 3.2 0 0 0-1.151.75a3.2 3.2 0 0 0-.75 1.151c-.16.414-.27.886-.302 1.578C1.007 5.513 1 5.735 1 7.5c0 1.765.007 1.987.04 2.68c.03.692.14 1.164.301 1.578c.164.434.42.826.75 1.151c.325.33.718.586 1.151.75c.414.16.886.27 1.578.302c.693.031.915.039 2.68.039c1.765 0 1.987-.008 2.68-.04c.692-.03 1.164-.14 1.578-.301a3.323 3.323 0 0 0 1.151-.75ZM2 6.735v1.53c-.002.821-.002 1.034.02 1.5c.026.586.058 1.016.156 1.34c.094.312.199.63.543 1.012c.344.383.675.556 1.097.684c.423.127.954.154 1.415.175c.522.024.73.024 1.826.024H8.24c.842.001 1.054.002 1.526-.02c.585-.027 1.015-.059 1.34-.156c.311-.094.629-.2 1.011-.543c.383-.344.556-.676.684-1.098c.127-.422.155-.953.176-1.414C13 9.247 13 9.04 13 7.947v-.89c0-1.096 0-1.303-.023-1.826c-.021-.461-.049-.992-.176-1.414c-.127-.423-.3-.754-.684-1.098c-.383-.344-.7-.449-1.011-.543c-.325-.097-.755-.13-1.34-.156A27.29 27.29 0 0 0 8.24 2H7.057c-1.096 0-1.304 0-1.826.023c-.461.021-.992.049-1.415.176c-.422.128-.753.301-1.097.684c-.344.383-.45.7-.543 1.012c-.098.324-.13.754-.156 1.34c-.022.466-.022.679-.02 1.5ZM7.5 5.25a2.25 2.25 0 1 0 0 4.5a2.25 2.25 0 0 0 0-4.5ZM4.25 7.5a3.25 3.25 0 1 1 6.5 0a3.25 3.25 0 0 1-6.5 0Zm6.72-2.72a.75.75 0 1 0 0-1.5a.75.75 0 0 0 0 1.5Z" clip-rule="evenodd"/></svg>
facebook: <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M22 12c0-5.52-4.48-10-10-10S2 6.48 2 12c0 4.84 3.44 8.87 8 9.8V15H8v-3h2V9.5C10 7.57 11.57 6 13.5 6H16v3h-2c-.55 0-1 .45-1 1v2h3v3h-3v6.95c5.05-.5 9-4.76 9-9.95z"/></svg>
discord: <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M20.317 4.3698a19.7913 19.7913 0 00-4.8851-1.5152.0741.0741 0 00-.0785.0371c-.211.3753-.4447.8648-.6083 1.2495-1.8447-.2762-3.68-.2762-5.4868 0-.1636-.3933-.4058-.8742-.6177-1.2495a.077.077 0 00-.0785-.037 19.7363 19.7363 0 00-4.8852 1.515.0699.0699 0 00-.0321.0277C.5334 9.0458-.319 13.5799.0992 18.0578a.0824.0824 0 00.0312.0561c2.0528 1.5076 4.0413 2.4228 5.9929 3.0294a.0777.0777 0 00.0842-.0276c.4616-.6304.8731-1.2952 1.226-1.9942a.076.076 0 00-.0416-.1057c-.6528-.2476-1.2743-.5495-1.8722-.8923a.077.077 0 01-.0076-.1277c.1258-.0943.2517-.1923.3718-.2914a.0743.0743 0 01.0776-.0105c3.9278 1.7933 8.18 1.7933 12.0614 0a.0739.0739 0 01.0785.0095c.1202.099.246.1981.3728.2924a.077.077 0 01-.0066.1276 12.2986 12.2986 0 01-1.873.8914.0766.0766 0 00-.0407.1067c.3604.698.7719 1.3628 1.225 1.9932a.076.076 0 00.0842.0286c1.961-.6067 3.9495-1.5219 6.0023-3.0294a.077.077 0 00.0313-.0552c.5004-5.177-.8382-9.6739-3.5485-13.6604a.061.061 0 00-.0312-.0286zM8.02 15.3312c-1.1825 0-2.1569-1.0857-2.1569-2.419 0-1.3332.9555-2.4189 2.157-2.4189 1.2108 0 2.1757 1.0952 2.1568 2.419 0 1.3332-.9555 2.4189-2.1569 2.4189zm7.9748 0c-1.1825 0-2.1569-1.0857-2.1569-2.419 0-1.3332.9554-2.4189 2.1569-2.4189 1.2108 0 2.1757 1.0952 2.1568 2.419 0 1.3332-.946 2.4189-2.1568 2.4189Z"></path></svg>
twitter: <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M23.953 4.57a10 10 0 01-2.825.775 4.958 4.958 0 002.163-2.723c-.951.555-2.005.959-3.127 1.184a4.92 4.92 0 00-8.384 4.482C7.69 8.095 4.067 6.13 1.64 3.162a4.822 4.822 0 00-.666 2.475c0 1.71.87 3.213 2.188 4.096a4.904 4.904 0 01-2.228-.616v.06a4.923 4.923 0 003.946 4.827 4.996 4.996 0 01-2.212.085 4.936 4.936 0 004.604 3.417 9.867 9.867 0 01-6.102 2.105c-.39 0-.779-.023-1.17-.067a13.995 13.995 0 007.557 2.209c9.053 0 13.998-7.496 13.998-13.985 0-.21 0-.42-.015-.63A9.935 9.935 0 0024 4.59z"></path></svg>
bluesky: <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 568 501"> <path fill="currentColor" d="M123.121 33.6637C188.241 82.5526 258.281 181.681 284 234.873C309.719 181.681 379.759 82.5526 444.879 33.6637C491.866 -1.61183 568 -28.9064 568 57.9464C568 75.2916 558.055 203.659 552.222 224.501C531.947 296.954 458.067 315.434 392.347 304.249C507.222 323.8 536.444 388.56 473.333 453.32C353.473 576.312 301.061 422.461 287.631 383.039C285.169 375.812 284.017 372.431 284 375.306C283.983 372.431 282.831 375.812 280.369 383.039C266.939 422.461 214.527 576.312 94.6667 453.32C31.5556 388.56 60.7778 323.8 175.653 304.249C109.933 315.434 36.0535 296.954 15.7778 224.501C9.94525 203.659 0 75.2916 0 57.9464C0 -28.9064 76.1345 -1.61183 123.121 33.6637Z"/></svg>
mastodon: <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M23.268 5.313c-.35-2.578-2.617-4.61-5.304-5.004C17.51.242 15.792 0 11.813 0h-.03c-3.98 0-4.835.242-5.288.309C3.882.692 1.496 2.518.917 5.127.64 6.412.61 7.837.661 9.143c.074 1.874.088 3.745.26 5.611.118 1.24.325 2.47.62 3.68.55 2.237 2.777 4.098 4.96 4.857 2.336.792 4.849.923 7.256.38.265-.061.527-.132.786-.213.585-.184 1.27-.39 1.774-.753a.057.057 0 0 0 .023-.043v-1.809a.052.052 0 0 0-.02-.041.053.053 0 0 0-.046-.01 20.282 20.282 0 0 1-4.709.545c-2.73 0-3.463-1.284-3.674-1.818a5.593 5.593 0 0 1-.319-1.433.053.053 0 0 1 .066-.054c1.517.363 3.072.546 4.632.546.376 0 .75 0 1.125-.01 1.57-.044 3.224-.124 4.768-.422.038-.008.077-.015.11-.024 2.435-.464 4.753-1.92 4.989-5.604.008-.145.03-1.52.03-1.67.002-.512.167-3.63-.024-5.545zm-3.748 9.195h-2.561V8.29c0-1.309-.55-1.976-1.67-1.976-1.23 0-1.846.79-1.846 2.35v3.403h-2.546V8.663c0-1.56-.617-2.35-1.848-2.35-1.112 0-1.668.668-1.67 1.977v6.218H4.822V8.102c0-1.31.337-2.35 1.011-3.12.696-.77 1.608-1.164 2.74-1.164 1.311 0 2.302.5 2.962 1.498l.638 1.06.638-1.06c.66-.999 1.65-1.498 2.96-1.498 1.13 0 2.043.395 2.74 1.164.675.77 1.012 1.81 1.012 3.12z"></path></svg>
youtube: <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path fill="currentColor" d="M8.051 1.999h.089c.822.003 4.987.033 6.11.335a2.01 2.01 0 0 1 1.415 1.42c.101.38.172.883.22 1.402l.01.104l.022.26l.008.104c.065.914.073 1.77.074 1.957v.075c-.001.194-.01 1.108-.082 2.06l-.008.105l-.009.104c-.05.572-.124 1.14-.235 1.558a2.007 2.007 0 0 1-1.415 1.42c-1.16.312-5.569.334-6.18.335h-.142c-.309 0-1.587-.006-2.927-.052l-.17-.006l-.087-.004l-.171-.007l-.171-.007c-1.11-.049-2.167-.128-2.654-.26a2.007 2.007 0 0 1-1.415-1.419c-.111-.417-.185-.986-.235-1.558L.09 9.82l-.008-.104A31.4 31.4 0 0 1 0 7.68v-.123c.002-.215.01-.958.064-1.778l.007-.103l.003-.052l.008-.104l.022-.26l.01-.104c.048-.519.119-1.023.22-1.402a2.007 2.007 0 0 1 1.415-1.42c.487-.13 1.544-.21 2.654-.26l.17-.007l.172-.006l.086-.003l.171-.007A99.788 99.788 0 0 1 7.858 2h.193zM6.4 5.209v4.818l4.157-2.408L6.4 5.209z"/></svg>
x: <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M389.2 48h70.6L305.6 224.2 487 464H345L233.7 318.6 106.5 464H35.8L200.7 275.5 26.8 48H172.4L272.9 180.9 389.2 48zM364.4 421.8h39.1L151.1 88h-42L364.4 421.8z"/></svg>
linkedin: <svg xmlns="http://www.w3.org/2000/svg" height="1em" viewBox="0 0 448 512"><path fill="currentColor" d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3zM135.4 416H69V202.2h66.5V416zm-33.2-243c-21.3 0-38.5-17.3-38.5-38.5S80.9 96 102.2 96c21.2 0 38.5 17.3 38.5 38.5 0 21.3-17.2 38.5-38.5 38.5zm282.1 243h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9V416z"/></svg>
cv: <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" style="stroke-width:.07717" d="M249.18 328.324c-9.788 15.384-19.179 30.434-40.222 45.055-11.256 7.89-37.164 23.306-73.99 23.306C64.709 396.685 8 345.605 8 255.801c0-78.486 53.345-140.486 128.466-140.486 30.434 0 57.474 10.521 77.387 26.304 18.414 14.65 27.038 29.304 34.563 42.456l-52.58 26.273c-3.762-8.626-8.29-17.649-19.913-27.406-12.784-10.155-25.54-13.152-36.46-13.152-42.821 0-65.364 39.825-65.364 84.145 0 58.238 29.7 87.143 65.364 87.143 34.563 0 48.48-24.042 57.474-39.426l52.243 26.673zm184.194-204.75H504l-92.037 265.22h-67.597l-90.904-265.22h70.625l54.843 188.6z"/></svg>
telegram: <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256" fill="currentColor"><path d="M236.88 26.19a9 9 0 0 0-9.16-1.57L25.06 103.93a14.22 14.22 0 0 0 2.43 27.21L80 141.45V200a15.92 15.92 0 0 0 10 14.83 15.91 15.91 0 0 0 17.51-3.73l25.32-26.26L173 220a15.88 15.88 0 0 0 10.51 4 16.3 16.3 0 0 0 5-.79 15.85 15.85 0 0 0 10.67-11.63L239.77 35a9 9 0 0 0-2.89-8.81Zm-61.14 36-89.59 64.16-49.6-9.73ZM96 200v-47.48l24.79 21.74Zm87.53 8-82.68-72.5 119-85.29Z"/></svg>
whatsapp: <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256" fill="currentColor"><path d="m187.58 144.84-32-16a8 8 0 0 0-8 .5l-14.69 9.8a40.55 40.55 0 0 1-16-16l9.8-14.69a8 8 0 0 0 .5-8l-16-32A8 8 0 0 0 104 64a40 40 0 0 0-40 40 88.1 88.1 0 0 0 88 88 40 40 0 0 0 40-40 8 8 0 0 0-4.42-7.16ZM152 176a72.08 72.08 0 0 1-72-72 24 24 0 0 1 19.29-23.54l11.48 23L101 118a8 8 0 0 0-.73 7.51 56.47 56.47 0 0 0 30.15 30.15A8 8 0 0 0 138 155l14.61-9.74 23 11.48A24 24 0 0 1 152 176ZM128 24a104 104 0 0 0-91.82 152.88l-11.35 34.05a16 16 0 0 0 20.24 20.24l34.05-11.35A104 104 0 1 0 128 24Zm0 192a87.87 87.87 0 0 1-44.06-11.81 8 8 0 0 0-6.54-.67L40 216l12.47-37.4a8 8 0 0 0-.66-6.54A88 88 0 1 1 128 216Z"/></svg>
weixin: <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256" fill="currentColor"><path d="M231.79 187.33a80 80 0 0 0-62.21-114.74 80 80 0 1 0-145.37 66.74l-7.66 26.82A14 14 0 0 0 30 184a13.65 13.65 0 0 0 3.84-.54l26.82-7.66a78.86 78.86 0 0 0 25.77 7.63 80 80 0 0 0 108.89 40.37l26.82 7.66a14 14 0 0 0 17.3-17.3ZM65.36 160.21a8 8 0 0 0-6-.68l-26.41 7.55 7.55-26.41a8 8 0 0 0-.68-6 64 64 0 0 1 111.86-62.24A80.12 80.12 0 0 0 80 152a79.31 79.31 0 0 0 1.31 14.3 63.34 63.34 0 0 1-15.95-6.09Zm150.17 28.46 7.55 26.41-26.41-7.55a8 8 0 0 0-6 .68 63.95 63.95 0 1 1 25.57-25.57 8 8 0 0 0-.71 6.03ZM144 140a12 12 0 1 1-12-12 12 12 0 0 1 12 12Zm56 0a12 12 0 1 1-12-12 12 12 0 0 1 12 12Z"/></svg>
arxiv: <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><g style="stroke-width:.645161"><path fill="currentColor" d="M119.65 351.996a14.333 14.333 0 0 1-13.502-8.676c-2.196-5.27-.62-8.967 4.197-15.865 7.055-10.38 78.824-96.562 78.824-96.562l-15.882-14.864c-13.381-13.378-13.956-31.333-1.51-43.775l18.492-17.613-51.598-63.377c-4.005-4.268-6.485-11.756-4.248-17.131a14.643 14.643 0 0 1 13.684-9.07 13.05 13.05 0 0 1 9.838 4.86l61.369 57.057 94.576-90.07A17.51 17.51 0 0 1 325.773 32c1.604.004 3.198.245 4.732.715a17.844 17.844 0 0 1 11.871 12.252 16.52 16.52 0 0 1-4.181 15.283l-83.086 100.012 14.879 13.834c11.096 10.003 11.154 27.39.127 37.469l-16.295 15.63 56.256 66.444.074.086.066.09c5.028 6.531 7.432 11.561 4.84 17.94a23.335 23.335 0 0 1-15.256 11.85c-.676.092-1.36.137-2.043.138l-.004-.012a18.402 18.402 0 0 1-11.775-5.24l-.13-.108-.124-.111-65.207-59.127-89.896 86.24s-5.334 6.478-10.971 6.611zm178.104-33.041a11.33 11.33 0 0 0 1.432-.096 18.907 18.907 0 0 0 11.431-8.91c1.45-3.562 1.003-6.457-4.197-13.215l-56.059-66.218-26.375 25.302 64.955 58.906a14.045 14.045 0 0 0 8.813 4.217v.014zm-105.318-91.553 142.01-170.158c2.787-3.49 4.53-6.98 3.342-10.912a13.062 13.062 0 0 0-8.686-9.057 11.366 11.366 0 0 0-3.336-.506 12.77 12.77 0 0 0-8.576 3.588L175.157 175.642c-11.172 11.172-9.482 26.02 1.393 36.895z" style="stroke-width:.416233" transform="matrix(1.55 0 0 -1.55 -123.2 553.6)"/></g></svg>
google-scholar: <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 384 512"><path fill="currentColor" d="M343.759 106.662V79.43L363.524 64h-213.89L20.476 176.274h85.656a82.339 82.339 0 0 0-.219 6.225c0 20.845 7.22 38.087 21.672 51.861 14.453 13.797 32.252 20.648 53.327 20.648 4.923 0 9.75-.368 14.438-1.024-2.907 6.5-4.374 12.523-4.374 18.142 0 9.875 4.499 20.43 13.467 31.642-39.234 2.67-68.061 9.732-86.437 21.163-10.531 6.5-19 14.704-25.39 24.531-6.391 9.9-9.578 20.515-9.578 31.962 0 9.648 2.062 18.336 6.219 26.062 4.156 7.726 9.578 14.07 16.312 18.984 6.718 4.968 14.469 9.101 23.219 12.469 8.734 3.344 17.406 5.718 26.061 7.062A167.052 167.052 0 0 0 180.555 448c13.469 0 26.953-1.734 40.547-5.187 13.562-3.485 26.28-8.642 38.171-15.493 11.86-6.805 21.515-16.086 28.922-27.718 7.39-11.68 11.094-24.805 11.094-39.336 0-11.016-2.25-21.039-6.75-30.14-4.468-9.073-9.938-16.542-16.452-22.345-6.501-5.813-13-11.155-19.516-15.968-6.5-4.845-12-9.75-16.468-14.813-4.485-5.046-6.735-10.054-6.735-14.984 0-4.921 1.734-9.672 5.216-14.265 3.455-4.61 7.674-9.048 12.61-13.306 4.937-4.25 9.875-8.968 14.796-14.133 4.922-5.147 9.141-11.827 12.61-20.008 3.485-8.18 5.203-17.445 5.203-27.757 0-13.453-2.547-24.46-7.547-33.314-.594-1.022-1.218-1.803-1.875-3.022l56.907-46.672v17.119c-7.393.93-6.624 5.345-6.624 10.635V245.96c0 5.958 4.875 10.834 10.834 10.834h3.989c5.958 0 10.833-4.875 10.833-10.834V117.293c0-5.277.778-9.688-6.561-10.63zm-107.36 222.48c1.14.75 3.704 2.78 7.718 6.038 4.05 3.243 6.797 5.695 8.266 7.414a443.553 443.553 0 0 1 6.376 7.547c2.813 3.375 4.718 6.304 5.718 8.734 1 2.477 2.016 5.461 3.047 8.946a38.27 38.27 0 0 1 1.485 10.562c0 17.048-6.564 29.68-19.656 37.859-13.125 8.18-28.767 12.274-46.938 12.274-9.187 0-18.203-1.093-27.063-3.196-8.843-2.116-17.311-5.336-25.39-9.601-8.078-4.258-14.577-10.204-19.5-17.797-4.938-7.64-7.407-16.415-7.407-26.25 0-10.32 2.797-19.29 8.422-26.906 5.594-7.625 12.938-13.391 22.032-17.315 9.063-3.946 18.25-6.742 27.562-8.398a157.865 157.865 0 0 1 28.438-2.555c4.47 0 7.936.25 10.405.696.455.219 3.032 2.07 7.735 5.563 4.704 3.462 7.625 5.595 8.75 6.384zm-3.359-100.579c-7.406 8.86-17.734 13.288-30.953 13.288-11.86 0-22.298-4.764-31.266-14.312-9-9.523-15.422-20.328-19.344-32.43-3.937-12.109-5.906-23.984-5.906-35.648 0-13.694 3.596-25.352 10.781-34.976 7.187-9.65 17.5-14.485 30.938-14.485 11.875 0 22.374 5.038 31.437 15.157 9.094 10.085 15.61 21.413 19.517 33.968 3.922 12.54 5.873 24.53 5.873 35.984 0 13.446-3.702 24.61-11.076 33.454z" style="stroke-width:.0647871"/></svg>
orcid: <svg xmlns="http://www.w3.org/2000/svg" fill="currentColor" viewBox="0 0 512 512"><path d="M336.62 194.538c-7.13-3.328-13.866-5.56-20.253-6.614-6.365-1.095-16.574-1.612-30.71-1.612h-36.704v152.747h37.634c14.673 0 26.081-1.013 34.224-3.017 8.142-2.004 14.921-4.526 20.356-7.626a69.448 69.448 0 0 0 14.942-11.388c14.488-14.714 21.742-33.273 21.742-55.717 0-22.052-7.44-40.052-22.341-53.982-5.498-5.166-11.822-9.444-18.89-12.793zM256 8C119.022 8 8 119.042 8 256s111.022 248 248 248 248-111.042 248-248S392.978 8 256 8Zm-82.336 357.513h-29.389V160.148h29.389zM158.95 138.696c-11.14 0-20.213-9.01-20.213-20.212 0-11.118 9.052-20.191 20.213-20.191 11.18 0 20.232 9.052 20.232 20.191a20.194 20.194 0 0 1-20.232 20.212zm241.386 163.597c-5.29 12.545-12.834 23.581-22.65 33.088-9.982 9.837-21.597 17.194-34.844 22.196-7.75 3.017-14.839 5.063-21.307 6.117-6.49 1.013-18.828 1.509-37.076 1.509h-64.956V160.148h69.233c27.962 0 50.034 4.154 66.32 12.545 16.265 8.37 29.181 20.728 38.792 36.972 9.61 16.265 14.425 34.018 14.425 53.196.023 13.765-2.666 26.908-7.936 39.432z" style="stroke-width:.07717"/></svg>
reddit: <svg xmlns="http://www.w3.org/2000/svg" fill="currentColor" viewBox="0 0 28.901 28.901"><path d="M28.901,13.375v0.183c0,0.66-0.2,1.261-0.598,1.803c-0.374,0.519-0.842,0.915-1.405,1.191 c0.021,0.119,0.039,0.248,0.051,0.387c0.013,0.14,0.021,0.278,0.021,0.425c0,1.431-0.481,2.723-1.443,3.879 c-0.844,1.034-1.865,1.866-3.068,2.498c-1.204,0.631-2.459,1.104-3.77,1.415c-0.71,0.146-1.416,0.262-2.123,0.353 c-0.702,0.091-1.408,0.137-2.117,0.137c-1.082,0-2.147-0.095-3.194-0.282c-1.044-0.187-2.061-0.465-3.047-0.838 c-1.034-0.397-2.015-0.909-2.94-1.533c-0.929-0.625-1.697-1.407-2.31-2.347c-0.325-0.491-0.571-1.021-0.74-1.586 c-0.169-0.566-0.254-1.13-0.254-1.695c0-0.121,0.008-0.249,0.019-0.389c0.014-0.138,0.028-0.267,0.055-0.387 c-0.59-0.325-1.048-0.725-1.371-1.191C0.245,14.831,0.021,14.24,0,13.629c0-0.445,0.097-0.868,0.297-1.273 c0.199-0.403,0.458-0.767,0.783-1.091c0.348-0.324,0.73-0.577,1.147-0.757c0.414-0.182,0.868-0.271,1.359-0.271h0.037h0.289 c0.494,0,0.962,0.073,1.405,0.217c0.423,0.144,0.807,0.343,1.157,0.596c0.046-0.024,0.101-0.049,0.162-0.072 c0.059-0.024,0.125-0.049,0.197-0.074c1.037-0.564,2.143-0.975,3.328-1.235c1.186-0.257,2.367-0.43,3.545-0.512 c0-0.544,0.049-1.089,0.146-1.642c0.095-0.553,0.294-1.078,0.595-1.569c0.24-0.423,0.553-0.78,0.939-1.076 c0.384-0.293,0.821-0.501,1.315-0.621h0.036c0.374-0.072,0.738-0.107,1.101-0.107c0.964,0,1.938,0.196,2.923,0.595 c0.397-0.587,0.947-1.024,1.662-1.299h0.033c0.445-0.123,0.868-0.184,1.265-0.184c0.494,0,0.927,0.085,1.298,0.254h0.038 c0.587,0.216,1.081,0.583,1.479,1.1c0.396,0.542,0.591,1.126,0.579,1.749c0,0.146-0.014,0.254-0.036,0.327 c-0.049,0.42-0.169,0.795-0.362,1.127c-0.193,0.33-0.439,0.622-0.74,0.873c-0.663,0.543-1.413,0.812-2.255,0.812h-0.413 c-0.844-0.07-1.552-0.401-2.131-0.989c-0.276-0.277-0.498-0.588-0.665-0.93c-0.169-0.344-0.254-0.726-0.254-1.146v-0.11 c-0.396-0.144-0.793-0.273-1.193-0.388c-0.395-0.112-0.806-0.172-1.225-0.172h-0.325c-0.686,0.071-1.167,0.381-1.443,0.922 c-0.216,0.371-0.358,0.774-0.423,1.208c-0.066,0.434-0.103,0.866-0.103,1.299c1.184,0.072,2.339,0.246,3.476,0.523 c1.137,0.274,2.225,0.685,3.255,1.227l0.037,0.036c0.047,0,0.098,0.023,0.145,0.072c0.194-0.146,0.355-0.247,0.486-0.306 c0.611-0.398,1.316-0.59,2.112-0.579c0.301,0,0.62,0.036,0.956,0.109h0.036c0.731,0.193,1.377,0.57,1.93,1.135 C28.52,11.961,28.829,12.619,28.901,13.375z M4.885,12.076c-0.169-0.047-0.327-0.095-0.476-0.144 c-0.15-0.049-0.317-0.071-0.496-0.071H3.767H3.733c-0.445,0.048-0.866,0.22-1.262,0.523c-0.352,0.322-0.54,0.703-0.579,1.137v0.108 c0,0.3,0.085,0.546,0.254,0.74c0.118,0.216,0.259,0.376,0.415,0.486c0.274-0.541,0.609-1.041,0.998-1.499 C3.951,12.9,4.395,12.474,4.885,12.076z M25.129,17.4c0-0.494-0.087-0.968-0.262-1.427c-0.177-0.456-0.406-0.889-0.693-1.298 c-0.618-0.796-1.364-1.449-2.257-1.969c-0.891-0.515-1.828-0.911-2.814-1.189l-0.578-0.145l-0.559-0.143 c-0.563-0.122-1.145-0.212-1.741-0.272c-0.594-0.06-1.175-0.091-1.738-0.091c-1.626,0-3.178,0.219-4.656,0.65 c-0.988,0.278-1.92,0.68-2.807,1.209c-0.884,0.529-1.639,1.189-2.263,1.983c-0.639,0.796-0.956,1.703-0.956,2.726 c0,0.397,0.047,0.739,0.144,1.029c0.219,0.758,0.615,1.459,1.193,2.11c0.566,0.565,1.211,1.081,1.945,1.55l0.272,0.127l0.254,0.146 c1.034,0.541,2.136,0.936,3.309,1.181c1.172,0.247,2.36,0.37,3.564,0.37h0.612c0.201,0,0.409-0.01,0.612-0.037 c1.203-0.097,2.383-0.317,3.536-0.667c1.154-0.348,2.225-0.854,3.211-1.515c0.663-0.469,1.203-0.986,1.623-1.552 c0.495-0.613,0.819-1.269,0.976-1.967c0.047-0.12,0.072-0.247,0.072-0.378L25.129,17.4L25.129,17.4z M9.415,17.579 c0.169,0.071,0.354,0.107,0.56,0.107c0.468,0,0.891-0.156,1.263-0.47c0.398-0.323,0.596-0.721,0.596-1.188V15.99v-0.072 c0-0.443-0.187-0.822-0.559-1.135c-0.396-0.325-0.832-0.488-1.3-0.488c-0.145,0-0.267,0.011-0.359,0.037 c-0.325,0.048-0.612,0.176-0.857,0.388c-0.249,0.21-0.418,0.466-0.516,0.768c-0.049,0.07-0.073,0.149-0.073,0.233v0.236 c0,0.396,0.109,0.744,0.327,1.046C8.736,17.292,9.041,17.483,9.415,17.579z M19.518,19.764c-0.189-0.098-0.353-0.146-0.486-0.146 c-0.143,0-0.297,0.036-0.451,0.11c-1.31,0.733-2.737,1.105-4.276,1.117c-1.154,0-2.225-0.222-3.211-0.667 c-0.143-0.049-0.319-0.162-0.522-0.343c-0.049-0.024-0.102-0.046-0.161-0.071c-0.061-0.024-0.123-0.049-0.183-0.071 c-0.143-0.049-0.252-0.075-0.325-0.075c-0.071,0-0.181,0.026-0.324,0.075h-0.04c-0.144,0.047-0.28,0.153-0.413,0.323 c-0.071,0.12-0.107,0.271-0.107,0.451c0,0.144,0.036,0.294,0.107,0.449c0.072,0.122,0.182,0.218,0.326,0.289 c1.383,0.867,2.896,1.301,4.545,1.301c0.085,0,0.177,0,0.269,0c0.794,0,1.565-0.076,2.31-0.226c0.746-0.15,1.47-0.389,2.167-0.712 c0.095-0.049,0.197-0.098,0.308-0.146c0.107-0.047,0.222-0.107,0.34-0.179c0.123-0.05,0.226-0.121,0.311-0.217 c0.118-0.119,0.189-0.247,0.215-0.381c0.025-0.047,0.038-0.106,0.038-0.179c0-0.071-0.025-0.181-0.076-0.325 C19.805,19.96,19.685,19.834,19.518,19.764z M20.652,15.449c0.075,0.193,0.11,0.374,0.11,0.541c0,0.373-0.11,0.711-0.326,1.013 c-0.299,0.323-0.606,0.516-0.919,0.576h-0.053c-0.193,0.071-0.362,0.107-0.505,0.107c-0.449,0-0.843-0.131-1.191-0.395 c-0.35-0.218-0.561-0.536-0.635-0Line truncated
# AI/ML Platforms
huggingface: <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 475 439"><path d="M235.793 396.126a187.281 187.281 0 00187.285-187.284A187.283 187.283 0 00235.793 21.558 187.287 187.287 0 0048.509 208.842a187.286 187.286 0 00187.284 187.284z" fill="#FFD21E"/><path d="M423.078 208.842A187.283 187.283 0 00235.793 21.558 187.283 187.283 0 0048.509 208.842a187.283 187.283 0 00319.714 132.43 187.284 187.284 0 0054.855-132.43zm-396.127 0a208.842 208.842 0 11417.685 0 208.842 208.842 0 01-417.685 0z" fill="#FF9D0B"/><path d="M296.641 157.912c6.898 2.371 9.593 16.491 16.545 12.827a26.946 26.946 0 008.24-40.841 26.952 26.952 0 00-28.632-8.767 26.942 26.942 0 00-19.055 23.099 26.943 26.943 0 003.014 15.352c3.288 6.198 13.744-3.88 19.941-1.724l-.053.054zm-126.923 0c-6.898 2.371-9.647 16.491-16.545 12.827a26.946 26.946 0 01-8.24-40.841 26.952 26.952 0 0128.632-8.767 26.944 26.944 0 0116.041 38.451c-3.288 6.198-13.797-3.88-19.941-1.724l.053.054z" fill="#3A3B45"/><path d="M234.446 287.205c52.979 0 70.063-47.212 70.063-71.464 0-12.612-8.461-8.624-22.043-1.941-12.557 6.198-29.426 14.768-47.966 14.768-38.75 0-70.063-37.08-70.063-12.827 0 24.252 17.031 71.464 70.063 71.464h-.054z" fill="#FF323D"/></svg>
# Development
hugo: <svg viewBox="0 0 370 391" xmlns="http://www.w3.org/2000/svg"><g clip-rule="evenodd" fill-rule="evenodd"><path d="m207.5 22.4 114.4 66.6c13.5 7.9 21.9 22.4 21.9 38v136.4c0 17.3-9.3 33.3-24.5 41.8l-113.5 63.9a49.06 49.06 0 0 1 -48.5-.2l-104.5-60.1c-16.4-9.5-26.6-27-26.6-45.9v-129.5c0-19.1 9.9-36.8 26.1-46.8l102.8-63.5c16-9.9 36.2-10.1 52.4-.7z" fill="#ff4088" stroke="#c9177e" stroke-width="27" /><path d="m105.6 298.2v-207.2h43.4v75.5h71.9v-75.5h43.5v207.2h-43.5v-90.6h-71.9v90.6z" fill="#fff" /></g></svg>
File diff suppressed because it is too large. Load diff
+2
View File
@@ -27,5 +27,7 @@ icons:
cat: <svg xmlns="http://www.w3.org/2000/svg" fill="currentColor" viewBox="0 0 256 256"><path d="M96,140a12,12,0,1,1-12-12A12,12,0,0,1,96,140Zm76-12a12,12,0,1,0,12,12A12,12,0,0,0,172,128Zm60-80v88c0,52.93-46.65,96-104,96S24,188.93,24,136V48A16,16,0,0,1,51.31,36.69c.14.14.26.27.38.41L69,57a111.22,111.22,0,0,1,118.1,0L204.31,37.1c.12-.14.24-.27.38-.41A16,16,0,0,1,232,48Zm-16,0-21.56,24.8A8,8,0,0,1,183.63,74,88.86,88.86,0,0,0,168,64.75V88a8,8,0,1,1-16,0V59.05a97.43,97.43,0,0,0-16-2.72V88a8,8,0,1,1-16,0V56.33a97.43,97.43,0,0,0-16,2.72V88a8,8,0,1,1-16,0V64.75A88.86,88.86,0,0,0,72.37,74a8,8,0,0,1-10.81-1.17L40,48v88c0,41.66,35.21,76,80,79.67V195.31l-13.66-13.66a8,8,0,0,1,11.32-11.31L128,180.68l10.34-10.34a8,8,0,0,1,11.32,11.31L136,195.31v20.36c44.79-3.69,80-38,80-79.67Z"></path></svg>
person-simple-walk: <svg xmlns="http://www.w3.org/2000/svg" fill="currentColor" viewBox="0 0 256 256"><path d="M152,80a32,32,0,1,0-32-32A32,32,0,0,0,152,80Zm0-48a16,16,0,1,1-16,16A16,16,0,0,1,152,32Zm64,112a8,8,0,0,1-8,8c-35.31,0-52.95-17.81-67.12-32.12-2.74-2.77-5.36-5.4-8-7.84l-13.43,30.88,37.2,26.57A8,8,0,0,1,160,176v56a8,8,0,0,1-16,0V180.12l-31.07-22.2L79.34,235.19A8,8,0,0,1,72,240a7.84,7.84,0,0,1-3.19-.67,8,8,0,0,1-4.15-10.52l54.08-124.37c-9.31-1.65-20.92,1.2-34.7,8.58a163.88,163.88,0,0,0-30.57,21.77a8,8,0,0,1-10.95-11.66c2.5-2.35,61.69-57.23,98.72-25.08,3.83,3.32,7.48,7,11,10.57C166.19,122.7,179.36,136,208,136A8,8,0,0,1,216,144Z"></path></svg>
cv: <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" style="stroke-width:.07717" d="M249.18 328.324c-9.788 15.384-19.179 30.434-40.222 45.055-11.256 7.89-37.164 23.306-73.99 23.306C64.709 396.685 8 345.605 8 255.801c0-78.486 53.345-140.486 128.466-140.486 30.434 0 57.474 10.521 77.387 26.304 18.414 14.65 27.038 29.304 34.563 42.456l-52.58 26.273c-3.762-8.626-8.29-17.649-19.913-27.406-12.784-10.155-25.54-13.152-36.46-13.152-42.821 0-65.364 39.825-65.364 84.145 0 58.238 29.7 87.143 65.364 87.143 34.563 0 48.48-24.042 57.474-39.426l52.243 26.673zm184.194-204.75H504l-92.037 265.22h-67.597l-90.904-265.22h70.625l54.843 188.6z"/></svg>
# Git icons
git-fork: <svg xmlns="http://www.w3.org/2000/svg" fill="currentColor" viewBox="0 0 24 24"><path d="M6 2C4.89543 2 4 2.89543 4 4C4 4.74028 4.4022 5.38663 5 5.73244V7C5 8.65685 6.34315 10 8 10H10V11.2676C9.4022 11.6134 9 12.2597 9 13C9 14.1046 9.89543 15 11 15C12.1046 15 13 14.1046 13 13C13 12.2597 12.5978 11.6134 12 11.2676V10H14C15.6569 10 17 8.65685 17 7V5.73244C17.5978 5.38663 18 4.74028 18 4C18 2.89543 17.1046 2 16 2C14.8954 2 14 2.89543 14 4C14 4.74028 14.4022 5.38663 15 5.73244V7C15 7.55228 14.5523 8 14 8H8C7.44772 8 7 7.55228 7 7V5.73244C7.5978 5.38663 8 4.74028 8 4C8 2.89543 7.10457 2 6 2ZM6 4C6 3.44772 6.44772 3 7 3C7.55228 3 8 3.44772 8 4C8 4.55228 7.55228 5 7 5C6.44772 5 6 4.55228 6 4ZM11 13C11 12.4477 11.4477 12 12 12C12.5523 12 13 12.4477 13 13C13 13.5523 12.5523 14 12 14C11.4477 14 11 13.5523 11 13ZM16 3C15.4477 3 15 3.44772 15 4C15 4.55228 15.4477 5 16 5C16.5523 5 17 4.55228 17 4C17 3.44772 16.5523 3 16 3Z"/></svg>
File diff suppressed because it is too large. Load diff
@@ -1,5 +1,5 @@
{{/* Return the requested SVG icon */}}
{{/* Search for the icon in the Hugo Blox Kit icon library, falling back to user's icon library */}}
{{/* Return the requested SVG icon as safeHTML for Go template rendering.
Handles emoji packs and attribute injection on top of the shared get_icon_svg.html core. */}}
{{ $dirFile := path.Split .name }}
{{ $pack := .pack | default (strings.Replace $dirFile.Dir "/" "") | default "hero" }}
@@ -31,71 +31,24 @@
{{ $attrs = printf "%s %s" $attrs $style_attr }}
{{ $icon = printf "<span %s>%s</span>" $attrs $emoji }}
{{- else -}}
{{- $icon_pack := index site.Data.icons $pack -}}
{{- $pack_icon := index (index $icon_pack "icons") $name -}}
{{/* Try to resolve as an SVG icon from packs / user assets */}}
{{ $icon = partial "functions/get_icon_svg" (dict "name" .name "pack" (.pack | default "") "Page" .Page) }}
{{ if $pack_icon }}
{{ if in (slice "hb" "brands") $pack }}
{{ $icon = $pack_icon }}
{{/* Pass */}}
{{ else }}
{{ $icon_body := index $pack_icon "body" }}
{{ $icon_size := index $icon_pack "height" }}
{{ $icon = printf `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 %s %s">%s</svg>` (cast.ToString $icon_size) (cast.ToString $icon_size) $icon_body }}
{{ end }}
{{ else }}
{{/* Icon NOT found in pack - check if it's a direct Unicode emoji */}}
{{ if not (strings.Contains $.name "/") }}
{{/* No explicit pack specified (defaulted to hero) - treat as direct Unicode emoji */}}
{{ $attrs := .attributes | default "" }}
{{/* Convert SVG sizing to emoji text sizing (same as emoji pack) */}}
{{ if in $attrs "w-24" }}{{ $attrs = replaceRE "w-24 h-24" "text-8xl" $attrs }}{{ end }}
{{ if in $attrs "w-16" }}{{ $attrs = replaceRE "w-16 h-16" "text-5xl" $attrs }}{{ end }}
{{ if in $attrs "w-12" }}{{ $attrs = replaceRE "w-12 h-12" "text-5xl" $attrs }}{{ end }}
{{ if in $attrs "w-8" }}{{ $attrs = replaceRE "w-8 h-8" "text-4xl" $attrs }}{{ end }}
{{ if in $attrs "w-6" }}{{ $attrs = replaceRE "w-6 h-6" "text-2xl" $attrs }}{{ end }}
{{ if in $attrs "w-5" }}{{ $attrs = replaceRE "w-5 h-5" "text-xl" $attrs }}{{ end }}
{{ if in $attrs "w-4" }}{{ $attrs = replaceRE "w-4 h-4" "text-lg" $attrs }}{{ end }}
{{/* Add centering and line-height classes if not already present */}}
{{ if not (in $attrs "flex") }}{{ $attrs = replaceRE "class=\"" "class=\"flex items-center justify-center leading-none " $attrs }}{{ end }}
{{ $icon = printf "<span %s>%s</span>" $attrs $.name }}
{{ else }}
{{/* Explicit pack specified but icon not found - continue with fallback logic */}}
{{ with index (index site.Data.icons.hb "icons") $name -}}
{{ $icon = . }}
{{ else }}
{{- $prefix := printf "media/icons/%s/" $pack -}}
{{- $icon_path := printf "%s%s.svg" $prefix $name -}}
{{- if not (fileExists (printf "assets/%s" $icon_path)) -}}
{{ $pageRef := "unknown location" }}
{{ if .Page }}
{{ if .Page.File }}
{{ if .Page.File.Path }}
{{ $pageRef = .Page.File.Path }}
{{ else if .Page.RelPermalink }}
{{ $pageRef = .Page.RelPermalink }}
{{ end }}
{{ else if .Page.RelPermalink }}
{{ $pageRef = .Page.RelPermalink }}
{{ end }}
{{ end }}
{{ partial "functions/logger" (dict
"page" .Page
"level" "warn"
"id" (printf "missing-icon-%s-%s" $pack $name)
"message" (printf "The icon `%s` was not found in `assets/media/icons/%s/`. Referenced in: %s" $name $pack $pageRef)
)
}}
{{- end -}}
{{- $icon_resource := resources.Get $icon_path -}}
{{ if $icon_resource }}
{{ $icon = $icon_resource.Content }}
{{ else }}
{{ $icon = index (index site.Data.icons.brands "icons") "hugo" }}
{{ end }}
{{- if not $icon -}}
{{/* No pack prefix and not found in hero — treat the raw name as a Unicode emoji */}}
{{ if not (strings.Contains $.name "/") }}
{{ $attrs := .attributes | default "" }}
{{ if in $attrs "w-24" }}{{ $attrs = replaceRE "w-24 h-24" "text-8xl" $attrs }}{{ end }}
{{ if in $attrs "w-16" }}{{ $attrs = replaceRE "w-16 h-16" "text-5xl" $attrs }}{{ end }}
{{ if in $attrs "w-12" }}{{ $attrs = replaceRE "w-12 h-12" "text-5xl" $attrs }}{{ end }}
{{ if in $attrs "w-8" }}{{ $attrs = replaceRE "w-8 h-8" "text-4xl" $attrs }}{{ end }}
{{ if in $attrs "w-6" }}{{ $attrs = replaceRE "w-6 h-6" "text-2xl" $attrs }}{{ end }}
{{ if in $attrs "w-5" }}{{ $attrs = replaceRE "w-5 h-5" "text-xl" $attrs }}{{ end }}
{{ if in $attrs "w-4" }}{{ $attrs = replaceRE "w-4 h-4" "text-lg" $attrs }}{{ end }}
{{ if not (in $attrs "flex") }}{{ $attrs = replaceRE "class=\"" "class=\"flex items-center justify-center leading-none " $attrs }}{{ end }}
{{ $icon = printf "<span %s>%s</span>" $attrs $.name }}
{{ end }}
{{ end }}
{{ end }}
{{- end -}}
{{- end -}}
{{ if .attributes }}
@@ -1,63 +1,14 @@
{{/* Hugo Blox: Get Icon Data for Preact Components */}}
{{/* Documentation: https://hugoblox.com/blocks/ */}}
{{/* License: https://github.com/HugoBlox/kit/blob/main/LICENSE.md */}}
{{/* Return raw SVG content for Preact component consumption.
Thin wrapper around get_icon_svg.html — see that partial for resolution logic.
{{/*
This partial returns raw SVG content for icons, designed for Preact component integration.
PURPOSE:
- Provides SVG strings that can be passed as props to Preact components
- Enables dynamic icon rendering in client-side Preact blocks
- Mirrors get_icon.html logic but returns raw content instead of safeHTML
DIFFERENCE FROM get_icon.html:
- get_icon.html: Returns safeHTML for direct template rendering in Go HTML templates
- get_icon_data.html: Returns raw SVG string for JavaScript/Preact component consumption
USAGE:
{{ $icon_svg := partial "functions/get_icon_data" (dict "name" "arrow-right" "pack" "hero") }}
Then pass $icon_svg as a prop to Preact components for client-side rendering.
ICON PACK HANDLING:
1. Hero pack (heroicons): Assembles <svg> wrapper around "body" content using pack "height"
2. HB/Brands packs: Returns stored SVG strings as-is
3. User assets: Returns content from assets/media/icons/{pack}/{name}.svg
4. Fallback: Returns Hugo brand icon if not found
PARAMETERS:
- name: Icon name, optionally with pack prefix (e.g., "arrow-right" or "hero/arrow-right")
- pack: Icon pack name (defaults to "hero" if not specified in name)
USAGE:
{{ $svg := partial "functions/get_icon_data" (dict "name" "hero/arrow-right") }}
Then pass $svg as a prop to a Preact component.
*/}}
{{/* Return the raw SVG content for a requested icon */}}
{{- $name := .name | default "" -}}
{{- $icon_content := "" -}}
{{- $icon := "" -}}
{{- if $name -}}
{{- $dirFile := path.Split $name -}}
{{- $pack := .pack | default (strings.Replace $dirFile.Dir "/" "") | default "hero" -}}
{{- $iconName := $dirFile.File -}}
{{- $icon_pack := index site.Data.icons $pack -}}
{{- with index (index $icon_pack "icons") $iconName -}}
{{- /* If this pack stores full SVG strings (hb/brands), return as-is. */ -}}
{{- if in (slice "hb" "brands") $pack -}}
{{- $icon_content = . -}}
{{- else -}}
{{- $icon_body := index . "body" -}}
{{- $icon_size := index $icon_pack "height" -}}
{{- $icon_content = printf `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 %s %s">%s</svg>` (cast.ToString $icon_size) (cast.ToString $icon_size) $icon_body -}}
{{- end -}}
{{- else -}}
{{- with resources.GetMatch (path.Join "media" "icons" $pack (printf "%s.svg" $iconName)) -}}
{{- $icon_content = .Content -}}
{{- else -}}
{{- /* Fallback to a default icon if not found. */ -}}
{{- with index (index site.Data.icons.brands "icons") "hugo" -}}
{{- $icon_content = . -}}
{{- end -}}
{{- end -}}
{{- end -}}
{{- $icon = partial "functions/get_icon_svg" (dict "name" $name "pack" (.pack | default "")) -}}
{{- end -}}
{{- $icon_content -}}
{{- $icon -}}
@@ -0,0 +1,83 @@
{{/* Resolve an icon name to a raw SVG string.
Shared core used by get_icon.html (Go templates) and get_icon_data.html (Preact).
PARAMETERS:
- name: Icon name, optionally with pack prefix (e.g., "arrow-right" or "hero/arrow-right")
- pack: Icon pack name (defaults to "hero" if not specified in name)
- Page: (optional) Page context for logging missing icons
RETURNS: Raw SVG string, or empty string if not found.
RESOLUTION ORDER:
1. Alias resolution via data/icons/aliases.yaml
2. Named pack lookup (hb returns full SVG; others wrap body in <svg> tag)
3. Fallback to hb pack
4. User assets at assets/media/icons/{pack}/{name}.svg
5. Hugo brand icon as last resort (only when an explicit pack was specified)
*/}}
{{- $dirFile := path.Split .name -}}
{{- $pack := .pack | default (strings.Replace $dirFile.Dir "/" "") | default "hero" -}}
{{- $name := $dirFile.File -}}
{{- $explicitPack := or (.pack) (strings.Contains .name "/") -}}
{{- /* Resolve icon aliases (e.g. brands/google-scholar → brands/googlescholar) */ -}}
{{- with index site.Data.icons.aliases $pack -}}
{{- with index . $name -}}
{{- $name = . -}}
{{- end -}}
{{- end -}}
{{- $icon := "" -}}
{{- $icon_pack := index site.Data.icons $pack -}}
{{- $pack_icon := index (index $icon_pack "icons") $name -}}
{{- if $pack_icon -}}
{{- if eq $pack "hb" -}}
{{- $icon = $pack_icon -}}
{{- else -}}
{{- $icon_body := index $pack_icon "body" -}}
{{- $icon_size := index $icon_pack "height" -}}
{{- $icon = printf `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 %s %s">%s</svg>` (cast.ToString $icon_size) (cast.ToString $icon_size) $icon_body -}}
{{- end -}}
{{- else -}}
{{- /* Icon not found in pack — try hb fallback, then user assets */ -}}
{{- with index (index site.Data.icons.hb "icons") $name -}}
{{- $icon = . -}}
{{- else -}}
{{- $prefix := printf "media/icons/%s/" $pack -}}
{{- $icon_path := printf "%s%s.svg" $prefix $name -}}
{{- $icon_resource := resources.Get $icon_path -}}
{{- if $icon_resource -}}
{{- $icon = $icon_resource.Content -}}
{{- else if $explicitPack -}}
{{- /* Only warn and use Hugo brand fallback when user specified an explicit pack */ -}}
{{- if not (fileExists (printf "assets/%s" $icon_path)) -}}
{{ $pageRef := "unknown location" }}
{{ if $.Page }}
{{ if $.Page.File }}
{{ if $.Page.File.Path }}
{{ $pageRef = $.Page.File.Path }}
{{ else if $.Page.RelPermalink }}
{{ $pageRef = $.Page.RelPermalink }}
{{ end }}
{{ else if $.Page.RelPermalink }}
{{ $pageRef = $.Page.RelPermalink }}
{{ end }}
{{ end }}
{{ partial "functions/logger" (dict
"page" $.Page
"level" "warn"
"id" (printf "missing-icon-%s-%s" $pack $name)
"message" (printf "The icon `%s` was not found in `assets/media/icons/%s/`. Referenced in: %s" $name $pack $pageRef)
)
}}
{{- end -}}
{{- with index (index site.Data.icons.brands "icons") "hugo" -}}
{{- $icon = printf `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">%s</svg>` (index . "body") -}}
{{- end -}}
{{- end -}}
{{- end -}}
{{- end -}}
{{- return $icon -}}