This commit is contained in:
Juli 2024-09-14 12:29:32 +03:00
commit ac0cbe9f5b
45 changed files with 2819 additions and 0 deletions

12
feed.xml Normal file
View file

@ -0,0 +1,12 @@
<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom">
<title>Juli's site</title>
<link>http://127.0.0.1:8000</link>
<updated>2024-02-19</updated>
<entry>
<title>I installed linux on my phone</title>
<link href="http://127.0.0.1:8000/posts/pmosphone"/>
<updated>2024-02-19</updated>
<summary></summary>
</entry>
</feed>

90
index.html Normal file
View file

@ -0,0 +1,90 @@
<!DOCTYPE html>
<html>
<head>
<title>Juli's silly website</title>
<link rel="stylesheet" href="/static/style.css">
<meta charset="utf-8"/>
<meta name="author" content="ConfusionUnknown" />
<meta name="generator" content="basalt" />
<meta content="juli's page" property="og:title" />
<meta content="some furry's page" property="og:description" />
<meta content="#001B29" data-react-helmet="true" name="theme-color"/>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="twitter:site" content="https://julimiro.eu" />
<meta name="twitter:title" content="juli's website" />
<meta name="twitter:description" content="a silly fur's page" />
<script src="/static/particles.js"></script>
<script src="/static/animal.js"></script>
</head>
<body>
<script src="/static/oneko.js"></script>
<div id="particles-js"></div>
<div class="page">
<div class="content container">
<h1>Juli's silly website</h1>
<p>I am Juli, a Finnish pansexual furry of some gender from '09(thats 15 years old). I go by Juli or Julimiro, any pronouns are fine.</p>
<p>I have a few coding projects which are on my <a href="https://git.julimiro.eu/Juli">git</a>(and still a bit on my <a href="https://github.com/Juliasmatius">github</a>)</p>
<div class="socials">
<a alt="Fediverse" target="_blank" href="https://eepykitty.lol/@juli"><img alt="Fediverse" title="Fediverse" width=50px height=50px src="/static/icons/fediverse.svg" /></a>
<a alt="Lemmy" target="_blank" href="https://pawb.social/u/Juli"><img alt="Lemmy" title="Lemmy" width=50px height=50px src="/static/icons/lemmy.svg" /></a>
<a alt="Last.fm" target="_blank" href="https://www.last.fm/user/Julimiro"><img alt="Last.fm" title="Last.fm" width=50px height=50px src="/static/icons/lastfm.svg" /></a>
<a alt="Youtube" target="_blank" href="https://www.youtube.com/@JuliTheFurry"><img alt="Youtube"title="Youtube" width=50px height=50px src="/static/icons/youtube.svg" /></a>
</div>
<div class="footer_images">
<a target="_blank" href="https://www.codecademy.com/learn/learn-css"><img id="gif_buttons" loading="lazy" src="/static/buttons/csshard.gif"></a>
<a target="_blank" href="https://www.linux.org/"><img id="gif_buttons" loading="lazy" src="/static/buttons/linux.gif"></a>
<a target="_blank" href="https://www.furaffinity.net/"><img id="gif_buttons" loading="lazy" src="/static/buttons/paws.gif"></a>
<a target="_blank" href="https://jointhefediverse.net/join"><img id="gif_buttons" loading="lazy" src="/static/buttons/fediverse.gif"></a>
<a><img id="gif_buttons" loading="lazy" src="/static/buttons/juli.gif"></a>
<a target="_blank" href="https://x86.breadtf.com/"><img id="gif_buttons" loading="lazy" src="/static/buttons/cutie.gif"></a>
<a target="_blank" href="https://confusionunknown.nekoweb.org/"><img id="gif_buttons" loading="lazy" src="https://confusionunknown.nekoweb.org/static/buttons/cnfunknown.gif"></a>
<a target="_blank" href="https://www.linux.org/"><img id="gif_buttons" loading="lazy" src="/static/buttons/powered_linux.gif"></a>
<a target="_blank" href="https://www.linux.org/"><img id="gif_buttons" loading="lazy" src="/static/buttons/madeonlinux.png"></a>
<a target="_blank" href='https://www.humanrightscareers.com/issues/trans-rights-101-definition-examples-significance/'><img id="gif_buttons" loading="lazy" src="/static/buttons/transrights.gif"></a>
<a><img id="gif_buttons" loading="lazy" src="/static/buttons/flag-pan.gif"></a>
<a target="_blank" href="https://breadtf.com/"><img id="gif_buttons" loading="lazy" src="/static/buttons/gayweb.gif"></a>
<a target="_blank" href='https://transfem.social/@x86overflow'><img id="gif_buttons" loading="lazy" src="/static/buttons/boykisser.gif"></a>
<a><img id="gif_buttons" loading="lazy" src="/static/buttons/boykiss.gif"></a>
</div>
</div>
<div class="sidebar">
<div class="sidebar_box container">
<header>
<h2>Juli's site</h2>
<h4>a silly site for a silly goober</h4>
</header>
<ul>
<li><a href="http://127.0.0.1:8000/">Home</a></li>
<li><a href="http://127.0.0.1:8000/posts.html">Posts</a></li>
<li><a href="http://127.0.0.1:8000/pages/contact">Contact</a></li>
<li><a href="http://127.0.0.1:8000/pages/feed">Feed</a></li>
<li><a href="http://127.0.0.1:8000/pages/license">License info</a></li>
</ul>
</div>
<div class="sidebar_box container">
<div class="animal_div">
<img src="" id="animal_img" alt="randomly picked image of cute animal">
<p id="animal_subtitle"></p>
<p>Images stolen from <a target="_blank" href="https://tinyfox.dev/image-list/">tinyfox.dev</a></p>
</div>
</div>
</div>
</div>
</body>
</html>
<!-- trans rights :3 -->

69
pages/contact/index.html Normal file
View file

@ -0,0 +1,69 @@
<!DOCTYPE html>
<html>
<head>
<title>Contact</title>
<link rel="stylesheet" href="/static/style.css">
<meta charset="utf-8"/>
<meta name="author" content="ConfusionUnknown" />
<meta name="generator" content="basalt" />
<meta content="juli's page" property="og:title" />
<meta content="some furry's page" property="og:description" />
<meta content="#001B29" data-react-helmet="true" name="theme-color"/>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="twitter:site" content="https://julimiro.eu" />
<meta name="twitter:title" content="juli's website" />
<meta name="twitter:description" content="a silly fur's page" />
<script src="/static/particles.js"></script>
<script src="/static/animal.js"></script>
</head>
<body>
<script src="/static/oneko.js"></script>
<div id="particles-js"></div>
<div class="page">
<div class="content container">
<p>Discord : @julimiro</p>
<p>Email : <a href="mailto:juli@julimiro.eu">juli@julimiro.eu</a></p>
<p>Matrix : <a href="https://invite.arcticfoxes.net/#/@juli:arcticfoxes.net">@juli:arcticfoxes.net</a></p>
<p>XMPP : <a href="xmpp:juli@404.city">juli@404.city</a></p>
</div>
<div class="sidebar">
<div class="sidebar_box container">
<header>
<h2>Juli's site</h2>
<h4>a silly site for a silly goober</h4>
</header>
<ul>
<li><a href="http://127.0.0.1:8000/">Home</a></li>
<li><a href="http://127.0.0.1:8000/posts.html">Posts</a></li>
<li><a href="http://127.0.0.1:8000/pages/contact">Contact</a></li>
<li><a href="http://127.0.0.1:8000/pages/feed">Feed</a></li>
<li><a href="http://127.0.0.1:8000/pages/license">License info</a></li>
</ul>
</div>
<div class="sidebar_box container">
<div class="animal_div">
<img src="" id="animal_img" alt="randomly picked image of cute animal">
<p id="animal_subtitle"></p>
<p>Images stolen from <a target="_blank" href="https://tinyfox.dev/image-list/">tinyfox.dev</a></p>
</div>
</div>
</div>
</div>
</body>
</html>
<!-- trans rights :3 -->

66
pages/feed/index.html Normal file
View file

@ -0,0 +1,66 @@
<!DOCTYPE html>
<html>
<head>
<title>Feed</title>
<link rel="stylesheet" href="/static/style.css">
<meta charset="utf-8"/>
<meta name="author" content="ConfusionUnknown" />
<meta name="generator" content="basalt" />
<meta content="juli's page" property="og:title" />
<meta content="some furry's page" property="og:description" />
<meta content="#001B29" data-react-helmet="true" name="theme-color"/>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="twitter:site" content="https://julimiro.eu" />
<meta name="twitter:title" content="juli's website" />
<meta name="twitter:description" content="a silly fur's page" />
<script src="/static/particles.js"></script>
<script src="/static/animal.js"></script>
</head>
<body>
<script src="/static/oneko.js"></script>
<div id="particles-js"></div>
<div class="page">
<div class="content container">
<p>A feed for posts can be found at <a href="/feed.xml">/feed.xml</a></p>
</div>
<div class="sidebar">
<div class="sidebar_box container">
<header>
<h2>Juli's site</h2>
<h4>a silly site for a silly goober</h4>
</header>
<ul>
<li><a href="http://127.0.0.1:8000/">Home</a></li>
<li><a href="http://127.0.0.1:8000/posts.html">Posts</a></li>
<li><a href="http://127.0.0.1:8000/pages/contact">Contact</a></li>
<li><a href="http://127.0.0.1:8000/pages/feed">Feed</a></li>
<li><a href="http://127.0.0.1:8000/pages/license">License info</a></li>
</ul>
</div>
<div class="sidebar_box container">
<div class="animal_div">
<img src="" id="animal_img" alt="randomly picked image of cute animal">
<p id="animal_subtitle"></p>
<p>Images stolen from <a target="_blank" href="https://tinyfox.dev/image-list/">tinyfox.dev</a></p>
</div>
</div>
</div>
</div>
</body>
</html>
<!-- trans rights :3 -->

69
pages/license/index.html Normal file
View file

@ -0,0 +1,69 @@
<!DOCTYPE html>
<html>
<head>
<title>License info</title>
<link rel="stylesheet" href="/static/style.css">
<meta charset="utf-8"/>
<meta name="author" content="ConfusionUnknown" />
<meta name="generator" content="basalt" />
<meta content="juli's page" property="og:title" />
<meta content="some furry's page" property="og:description" />
<meta content="#001B29" data-react-helmet="true" name="theme-color"/>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="twitter:site" content="https://julimiro.eu" />
<meta name="twitter:title" content="juli's website" />
<meta name="twitter:description" content="a silly fur's page" />
<script src="/static/particles.js"></script>
<script src="/static/animal.js"></script>
</head>
<body>
<script src="/static/oneko.js"></script>
<div id="particles-js"></div>
<div class="page">
<div class="content container">
<p>This website uses <a href="https://github.com/VincentGarreau/particles.js">particles.js</a> (<a href="https://github.com/VincentGarreau/particles.js/blob/master/LICENSE.md">License</a>)</p>
<p>This website uses the <a href="https://www.brailleinstitute.org/freefont/">Atkinson Hyperlegible</a> font (<a href="https://braileinstitute.app.box.com/s/rin3vzegmcy7sil28yfqslz2r5etv5nl">License</a>)</p>
<p>This website uses the <a href="https://fonts.google.com/specimen/Roboto+Mono">Roboto Mono</a> font (<a href="https://www.apache.org/licenses/LICENSE-2.0">License</a>)</p>
<p>This website uses <a href="https://github.com/tylxr59/oneko.js">oneko.js</a> (<a href="https://github.com/tylxr59/oneko.js/blob/main/LICENSE">License</a>)</p>
</div>
<div class="sidebar">
<div class="sidebar_box container">
<header>
<h2>Juli's site</h2>
<h4>a silly site for a silly goober</h4>
</header>
<ul>
<li><a href="http://127.0.0.1:8000/">Home</a></li>
<li><a href="http://127.0.0.1:8000/posts.html">Posts</a></li>
<li><a href="http://127.0.0.1:8000/pages/contact">Contact</a></li>
<li><a href="http://127.0.0.1:8000/pages/feed">Feed</a></li>
<li><a href="http://127.0.0.1:8000/pages/license">License info</a></li>
</ul>
</div>
<div class="sidebar_box container">
<div class="animal_div">
<img src="" id="animal_img" alt="randomly picked image of cute animal">
<p id="animal_subtitle"></p>
<p>Images stolen from <a target="_blank" href="https://tinyfox.dev/image-list/">tinyfox.dev</a></p>
</div>
</div>
</div>
</div>
</body>
</html>
<!-- trans rights :3 -->

77
posts.html Normal file
View file

@ -0,0 +1,77 @@
<!DOCTYPE html>
<html>
<head>
<title>Posts - Juli's site</title>
<link rel="stylesheet" href="/static/style.css">
<meta charset="utf-8"/>
<meta name="author" content="ConfusionUnknown" />
<meta name="generator" content="basalt" />
<meta content="juli's page" property="og:title" />
<meta content="some furry's page" property="og:description" />
<meta content="#001B29" data-react-helmet="true" name="theme-color"/>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="twitter:site" content="https://julimiro.eu" />
<meta name="twitter:title" content="juli's website" />
<meta name="twitter:description" content="a silly fur's page" />
<script src="/static/particles.js"></script>
<script src="/static/animal.js"></script>
</head>
<body>
<script src="/static/oneko.js"></script>
<div id="particles-js"></div>
<div class="page">
<div class="content container">
<h2>Posts - Juli's site</h2>
<div>
<h2>
<a href="http://127.0.0.1:8000/posts/pmosphone">I installed linux on my phone</a>
</h2>
<h5>Mon 19 Feb 2024</h5>
<p>
</p>
</div>
<hr />
</div>
<div class="sidebar">
<div class="sidebar_box container">
<header>
<h2>Juli's site</h2>
<h4>a silly site for a silly goober</h4>
</header>
<ul>
<li><a href="http://127.0.0.1:8000/">Home</a></li>
<li><a href="http://127.0.0.1:8000/posts.html">Posts</a></li>
<li><a href="http://127.0.0.1:8000/pages/contact">Contact</a></li>
<li><a href="http://127.0.0.1:8000/pages/feed">Feed</a></li>
<li><a href="http://127.0.0.1:8000/pages/license">License info</a></li>
</ul>
</div>
<div class="sidebar_box container">
<div class="animal_div">
<img src="" id="animal_img" alt="randomly picked image of cute animal">
<p id="animal_subtitle"></p>
<p>Images stolen from <a target="_blank" href="https://tinyfox.dev/image-list/">tinyfox.dev</a></p>
</div>
</div>
</div>
</div>
</body>
</html>
<!-- trans rights :3 -->

View file

@ -0,0 +1,75 @@
<!DOCTYPE html>
<html>
<head>
<title>I installed linux on my phone</title>
<link rel="stylesheet" href="/static/style.css">
<meta charset="utf-8"/>
<meta name="author" content="ConfusionUnknown" />
<meta name="generator" content="basalt" />
<meta content="juli's page" property="og:title" />
<meta content="some furry's page" property="og:description" />
<meta content="#001B29" data-react-helmet="true" name="theme-color"/>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="twitter:site" content="https://julimiro.eu" />
<meta name="twitter:title" content="juli's website" />
<meta name="twitter:description" content="a silly fur's page" />
<script src="/static/particles.js"></script>
<script src="/static/animal.js"></script>
</head>
<body>
<script src="/static/oneko.js"></script>
<div id="particles-js"></div>
<div class="page">
<div class="content container">
<h2>I installed linux on my phone</h2>
<h5>Mon 19 Feb 2024</h5>
<p>Tags:</p>
<ul>
<li><a href="http://127.0.0.1:8000/tags/ linux"># linux</a></li>
<li><a href="http://127.0.0.1:8000/tags/ mobile"># mobile</a></li>
</ul>
</div>
<div class="sidebar">
<div class="sidebar_box container">
<header>
<h2>Juli's site</h2>
<h4>a silly site for a silly goober</h4>
</header>
<ul>
<li><a href="http://127.0.0.1:8000/">Home</a></li>
<li><a href="http://127.0.0.1:8000/posts.html">Posts</a></li>
<li><a href="http://127.0.0.1:8000/pages/contact">Contact</a></li>
<li><a href="http://127.0.0.1:8000/pages/feed">Feed</a></li>
<li><a href="http://127.0.0.1:8000/pages/license">License info</a></li>
</ul>
</div>
<div class="sidebar_box container">
<div class="animal_div">
<img src="" id="animal_img" alt="randomly picked image of cute animal">
<p id="animal_subtitle"></p>
<p>Images stolen from <a target="_blank" href="https://tinyfox.dev/image-list/">tinyfox.dev</a></p>
</div>
</div>
</div>
</div>
</body>
</html>
<!-- trans rights :3 -->

17
static/animal.js Normal file
View file

@ -0,0 +1,17 @@
function getRandomInt(max) {
return Math.floor(Math.random() * max);
}
function load_animal() {
images = ["https://api.tinyfox.dev/img?animal=caracal","https://api.tinyfox.dev/img?animal=chee","https://api.tinyfox.dev/img?animal=yote","https://api.tinyfox.dev/img?animal=dook","https://api.tinyfox.dev/img?animal=fox","https://api.tinyfox.dev/img?animal=mane","https://api.tinyfox.dev/img?animal=ott","https://api.tinyfox.dev/img?animal=marten","https://api.tinyfox.dev/img?animal=wah","https://api.tinyfox.dev/img?animal=serval","https://api.tinyfox.dev/img?animal=woof","https://api.tinyfox.dev/img?animal=yeen"]
names = ["caracal", "cheetah","cayote","ferret","fox","maned wolf","otter","marten","red panda","serval","wolf","hyena"]
number = getRandomInt(images.length)
document.getElementById('animal_subtitle').innerText = "Current animal is "+names[number]+"."
document.getElementById('animal_img').alt = "A "+names[number]
document.getElementById('animal_img').title = "A "+names[number]
document.getElementById("animal_img").src = images[number];
}
window.addEventListener('load', function () {
load_animal()
})

BIN
static/buttons/boykiss.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 485 B

BIN
static/buttons/csshard.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 495 B

BIN
static/buttons/cutie.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
static/buttons/flag-pan.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 267 B

BIN
static/buttons/gayweb.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

BIN
static/buttons/juli.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

BIN
static/buttons/linux.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 456 B

BIN
static/buttons/neofox.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

BIN
static/buttons/paws.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 885 B

BIN
static/buttons/php.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1 KiB

BIN
static/buttons/support.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 471 B

BIN
static/buttons/ubuntu.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

View file

@ -0,0 +1,37 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
version="1.1"
viewBox="-10 0 1034 1024"
id="svg1"
sodipodi:docname="fediverse.svg"
inkscape:version="1.3.2 (091e20e, 2023-11-25, custom)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs1" />
<sodipodi:namedview
id="namedview1"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:zoom="0.39697266"
inkscape:cx="583.16359"
inkscape:cy="895.52767"
inkscape:window-width="1920"
inkscape:window-height="1009"
inkscape:window-x="-8"
inkscape:window-y="-5"
inkscape:window-maximized="1"
inkscape:current-layer="svg1" />
<path
fill="currentColor"
d="m 553.61627,0.92496883 q -38.82552,0 -66.73138,26.53352017 -27.90584,26.533519 -30.33243,66.3338 -2.4266,39.800281 24.8726,69.952011 27.29919,30.15172 67.94467,32.56387 40.64547,2.41214 70.97792,-24.72442 30.33244,-27.13655 32.75903,-67.53988 2.4266,-40.403308 -24.8726,-71.158069 Q 600.93489,2.1310379 559.68277,0.92496883 Z M 448.05937,115.50153 166.57431,257.81769 q 24.26595,24.12138 30.33243,57.89131 L 477.17851,173.39285 q -23.05265,-24.12138 -29.11914,-57.89132 z m 202.62072,32.56387 q -15.77287,30.15172 -46.10532,45.83062 l 222.03348,221.91673 q 15.77288,-30.15174 47.31862,-45.83063 z M 478.39182,174.59892 314.59662,494.20724 363.12853,542.45 536.6301,204.75065 q -33.97233,-6.03034 -58.23828,-30.15173 z m 126.18295,19.2971 q -26.69254,13.26677 -55.81169,12.06069 l -9.70638,-1.20606 25.47926,159.20113 67.94467,10.85461 z M 87.709953,234.90238 q -38.825526,0 -66.731367,27.13656 -27.9058506,27.13655 -30.332446,66.3338 -2.426595,39.19724 24.872603,69.952 27.299201,30.75476 68.551323,32.56387 41.252124,1.8091 71.584554,-25.32746 30.33245,-27.13655 32.15239,-67.53986 1.81995,-40.40332 -25.47924,-70.55505 -27.2992,-30.15173 -67.338031,-32.56386 z m 109.196787,82.0127 q 1.21331,10.85461 1.21331,21.70924 -1.21331,22.91531 -12.13298,42.21242 l 160.15529,25.32745 31.54574,-60.30345 z m 272.99199,43.41849 -31.54574,61.50952 377.33559,59.09738 q -1.2133,-9.64855 -1.2133,-20.50317 1.2133,-22.91532 12.13297,-43.41849 z m 451.34674,7.23641 q -38.82552,1.20607 -66.73136,27.73959 -27.90586,26.53352 -29.7258,66.33381 -1.81994,39.80027 25.47925,69.952 27.2992,30.15173 67.94467,32.56387 40.64548,2.41213 70.97791,-24.72442 30.33246,-27.13656 32.75906,-68.14291 2.4266,-41.00634 -24.87262,-71.15807 -27.2992,-30.15173 -68.55132,-32.56387 z m -735.2584,15.6789 Q 170.2142,413.4006 138.66846,429.0795 l 254.79252,253.27452 61.87817,-30.15173 z m -48.53191,45.83062 q -25.47925,13.26677 -53.385094,12.06069 l -10.919685,-1.20606 48.531909,308.75369 q 25.47925,-12.0607 54.5984,-10.85462 l 9.70638,1.20607 z m 441.64037,26.53353 58.23829,375.08749 q 25.47924,-12.0607 53.3851,-10.85462 l 12.13297,1.20607 -55.81169,-354.58432 z m 236.59305,27.73958 -143.16914,72.36415 9.70639,67.53988 163.79519,-82.01271 Q 821.75506,517.12255 815.68858,483.35261 Z M 847.23432,542.45 702.85189,821.05197 q 33.97234,6.03034 58.23829,30.15173 L 905.47261,572.60173 Q 871.50027,566.57138 847.23432,542.45 Z m -576.31641,34.97601 -82.50424,161.61326 q 33.97233,6.03035 58.23828,30.15173 l 72.79786,-143.52223 z m 317.884,20.50317 -340.93665,172.46788 q 23.05265,24.12138 29.11914,57.89132 L 598.50829,665.46905 Z m -66.73138,120.60691 -61.87818,30.15173 128.60956,129.04939 q 15.77286,-30.15172 47.3186,-45.83062 z M 169.0009,747.48175 q -38.82552,0 -67.33802,27.13655 -28.512499,27.13656 -30.332443,66.33381 -1.819944,39.19724 25.479257,69.34897 27.299186,30.15173 67.944666,32.56387 40.64547,2.41214 70.97792,-24.72442 30.33244,-27.13655 32.75903,-67.53988 2.4266,-40.40331 -24.8726,-70.55504 -27.29919,-30.15172 -68.55132,-32.56386 z m 107.9835,82.0127 q 2.4266,10.85462 1.21329,21.70925 -1.21329,22.9153 -10.91967,42.21241 l 310.60421,49.44884 q -1.2133,-10.85463 -1.2133,-21.70925 1.2133,-21.70924 12.13298,-42.21241 z m 406.45473,0 q -38.82553,0 -66.73138,27.13656 -27.90584,27.13655 -29.72579,66.3338 -1.81995,39.19724 24.8726,69.95201 26.69255,30.75478 67.94467,32.56388 41.25212,1.8091 71.58457,-25.3275 30.33244,-27.13652 32.75903,-67.53984 2.4266,-40.40332 -24.87259,-70.55505 -27.2992,-30.15172 -68.55132,-32.56386 z"
id="path1"
style="stroke-width:1.20968" />
</svg>

After

Width:  |  Height:  |  Size: 4.5 KiB

1
static/icons/git.svg Normal file
View file

@ -0,0 +1 @@
<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Git</title><path d="M23.546 10.93L13.067.452c-.604-.603-1.582-.603-2.188 0L8.708 2.627l2.76 2.76c.645-.215 1.379-.07 1.889.441.516.515.658 1.258.438 1.9l2.658 2.66c.645-.223 1.387-.078 1.9.435.721.72.721 1.884 0 2.604-.719.719-1.881.719-2.6 0-.539-.541-.674-1.337-.404-1.996L12.86 8.955v6.525c.176.086.342.203.488.348.713.721.713 1.883 0 2.6-.719.721-1.889.721-2.609 0-.719-.719-.719-1.879 0-2.598.182-.18.387-.316.605-.406V8.835c-.217-.091-.424-.222-.6-.401-.545-.545-.676-1.342-.396-2.009L7.636 3.7.45 10.881c-.6.605-.6 1.584 0 2.189l10.48 10.477c.604.604 1.582.604 2.186 0l10.43-10.43c.605-.603.605-1.582 0-2.187"/></svg>

After

Width:  |  Height:  |  Size: 702 B

1
static/icons/github.svg Normal file
View file

@ -0,0 +1 @@
<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>GitHub</title><path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"/></svg>

After

Width:  |  Height:  |  Size: 822 B

1
static/icons/itch.svg Normal file
View file

@ -0,0 +1 @@
<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Itch.io</title><path d="M3.13 1.338C2.08 1.96.02 4.328 0 4.95v1.03c0 1.303 1.22 2.45 2.325 2.45 1.33 0 2.436-1.102 2.436-2.41 0 1.308 1.07 2.41 2.4 2.41 1.328 0 2.362-1.102 2.362-2.41 0 1.308 1.137 2.41 2.466 2.41h.024c1.33 0 2.466-1.102 2.466-2.41 0 1.308 1.034 2.41 2.363 2.41 1.33 0 2.4-1.102 2.4-2.41 0 1.308 1.106 2.41 2.435 2.41C22.78 8.43 24 7.282 24 5.98V4.95c-.02-.62-2.082-2.99-3.13-3.612-3.253-.114-5.508-.134-8.87-.133-3.362 0-7.945.053-8.87.133zm6.376 6.477a2.74 2.74 0 0 1-.468.602c-.5.49-1.19.795-1.947.795a2.786 2.786 0 0 1-1.95-.795c-.182-.178-.32-.37-.446-.59-.127.222-.303.412-.486.59a2.788 2.788 0 0 1-1.95.795c-.092 0-.187-.025-.264-.052-.107 1.113-.152 2.176-.168 2.95v.005l-.006 1.167c.02 2.334-.23 7.564 1.03 8.85 1.952.454 5.545.662 9.15.663 3.605 0 7.198-.21 9.15-.664 1.26-1.284 1.01-6.514 1.03-8.848l-.006-1.167v-.004c-.016-.775-.06-1.838-.168-2.95-.077.026-.172.052-.263.052a2.788 2.788 0 0 1-1.95-.795c-.184-.178-.36-.368-.486-.59-.127.22-.265.412-.447.59a2.786 2.786 0 0 1-1.95.794c-.76 0-1.446-.303-1.948-.793a2.74 2.74 0 0 1-.468-.602 2.738 2.738 0 0 1-.463.602 2.787 2.787 0 0 1-1.95.794h-.16a2.787 2.787 0 0 1-1.95-.793 2.738 2.738 0 0 1-.464-.602zm-2.004 2.59v.002c.795.002 1.5 0 2.373.953.687-.072 1.406-.108 2.125-.107.72 0 1.438.035 2.125.107.873-.953 1.578-.95 2.372-.953.376 0 1.876 0 2.92 2.934l1.123 4.028c.832 2.995-.266 3.068-1.636 3.07-2.03-.075-3.156-1.55-3.156-3.025-1.124.184-2.436.276-3.748.277-1.312 0-2.624-.093-3.748-.277 0 1.475-1.125 2.95-3.156 3.026-1.37-.004-2.468-.077-1.636-3.072l1.122-4.027c1.045-2.934 2.545-2.934 2.92-2.934zM12 12.714c-.002.002-2.14 1.964-2.523 2.662l1.4-.056v1.22c0 .056.56.033 1.123.007.562.026 1.124.05 1.124-.008v-1.22l1.4.055C14.138 14.677 12 12.713 12 12.713z"/></svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

1
static/icons/lastfm.svg Normal file
View file

@ -0,0 +1 @@
<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Last.fm</title><path d="M10.584 17.21l-.88-2.392s-1.43 1.594-3.573 1.594c-1.897 0-3.244-1.649-3.244-4.288 0-3.382 1.704-4.591 3.381-4.591 2.42 0 3.189 1.567 3.849 3.574l.88 2.749c.88 2.666 2.529 4.81 7.285 4.81 3.409 0 5.718-1.044 5.718-3.793 0-2.227-1.265-3.381-3.63-3.931l-1.758-.385c-1.21-.275-1.567-.77-1.567-1.595 0-.934.742-1.484 1.952-1.484 1.32 0 2.034.495 2.144 1.677l2.749-.33c-.22-2.474-1.924-3.492-4.729-3.492-2.474 0-4.893.935-4.893 3.932 0 1.87.907 3.051 3.189 3.601l1.87.44c1.402.33 1.869.907 1.869 1.704 0 1.017-.99 1.43-2.86 1.43-2.776 0-3.93-1.457-4.59-3.464l-.907-2.75c-1.155-3.573-2.997-4.893-6.653-4.893C2.144 5.333 0 7.89 0 12.233c0 4.18 2.144 6.434 5.993 6.434 3.106 0 4.591-1.457 4.591-1.457z"/></svg>

After

Width:  |  Height:  |  Size: 803 B

1
static/icons/lemmy.svg Normal file
View file

@ -0,0 +1 @@
<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Lemmy</title><path d="M2.9595 4.2228a3.9132 3.9132 0 0 0-.332.019c-.8781.1012-1.67.5699-2.155 1.3862-.475.8-.5922 1.6809-.35 2.4971.2421.8162.8297 1.5575 1.6982 2.1449.0053.0035.0106.0076.0163.0114.746.4498 1.492.7431 2.2877.8994-.02.3318-.0272.6689-.006 1.0181.0634 1.0432.4368 2.0006.996 2.8492l-2.0061.8189a.4163.4163 0 0 0-.2276.2239.416.416 0 0 0 .0879.455.415.415 0 0 0 .2941.1231.4156.4156 0 0 0 .1595-.0312l2.2093-.9035c.408.4859.8695.9315 1.3723 1.318.0196.0151.0407.0264.0603.0423l-1.2918 1.7103a.416.416 0 0 0 .664.501l1.314-1.7385c.7185.4548 1.4782.7927 2.2294 1.0242.3833.7209 1.1379 1.1871 2.0202 1.1871.8907 0 1.6442-.501 2.0242-1.2072.744-.2347 1.4959-.5729 2.2073-1.0262l1.332 1.7606a.4157.4157 0 0 0 .7439-.1936.4165.4165 0 0 0-.0799-.3074l-1.3099-1.7345c.0083-.0075.0178-.0113.0261-.0188.4968-.3803.9549-.8175 1.3622-1.2939l2.155.8794a.4156.4156 0 0 0 .5412-.2276.4151.4151 0 0 0-.2273-.5432l-1.9438-.7928c.577-.8538.9697-1.8183 1.0504-2.8693.0268-.3507.0242-.6914.0079-1.0262.7905-.1572 1.5321-.4502 2.2737-.8974.0053-.0033.011-.0076.0163-.0113.8684-.5874 1.456-1.3287 1.6982-2.145.2421-.8161.125-1.697-.3501-2.497-.4849-.8163-1.2768-1.2852-2.155-1.3863a3.2175 3.2175 0 0 0-.332-.0189c-.7852-.0151-1.6231.229-2.4286.6942-.5926.342-1.1252.867-1.5433 1.4387-1.1699-.6703-2.6923-1.0476-4.5635-1.0785a15.5768 15.5768 0 0 0-.5111 0c-2.085.034-3.7537.43-5.0142 1.1449-.0033-.0038-.0045-.0114-.008-.0152-.4233-.5916-.973-1.1365-1.5835-1.489-.8055-.465-1.6434-.7083-2.4286-.6941Zm.2858.7365c.5568.042 1.1696.2358 1.7787.5875.485.28.9757.7554 1.346 1.2696a5.6875 5.6875 0 0 0-.4969.4085c-.9201.8516-1.4615 1.9597-1.668 3.2335-.6809-.1402-1.3183-.3945-1.984-.7948-.7553-.5128-1.2159-1.1225-1.4004-1.7445-.1851-.624-.1074-1.2712.2776-1.9196.3743-.63.9275-.9534 1.6118-1.0322a2.796 2.796 0 0 1 .5352-.0076Zm17.5094 0a2.797 2.797 0 0 1 .5353.0075c.6842.0786 1.2374.4021 1.6117 1.0322.385.6484.4627 1.2957.2776 1.9196-.1845.622-.645 1.2317-1.4004 1.7445-.6578.3955-1.2881.6472-1.9598.7888-.1942-1.2968-.7375-2.4338-1.666-3.302a5.5639 5.5639 0 0 0-.4709-.3923c.3645-.49.8287-.9428 1.2938-1.2113.6091-.3515 1.2219-.5454 1.7787-.5875ZM12.006 6.0036a14.832 14.832 0 0 1 .487 0c2.3901.0393 4.0848.67 5.1631 1.678 1.1501 1.0754 1.6423 2.6006 1.499 4.467-.1311 1.7079-1.2203 3.2281-2.652 4.324-.694.5313-1.4626.9354-2.2254 1.2294.0031-.0453.014-.0888.014-.1349.0029-1.1964-.9313-2.2133-2.2918-2.2133-1.3606 0-2.3222 1.0154-2.2918 2.2213.0013.0507.014.0972.0181.1471-.781-.2933-1.5696-.7013-2.2777-1.2456-1.4239-1.0945-2.4997-2.6129-2.6037-4.322-.1129-1.8567.3778-3.3382 1.5212-4.3965C7.5094 6.7 9.352 6.047 12.006 6.0036Zm-3.6419 6.8291c-.6053 0-1.0966.4903-1.0966 1.0966 0 .6063.4913 1.0986 1.0966 1.0986s1.0966-.4923 1.0966-1.0986c0-.6063-.4913-1.0966-1.0966-1.0966zm7.2819.0113c-.5998 0-1.0866.4859-1.0866 1.0866s.4868 1.0885 1.0866 1.0885c.5997 0 1.0865-.4878 1.0865-1.0885s-.4868-1.0866-1.0865-1.0866zM12 16.0835c1.0237 0 1.5654.638 1.5634 1.4829-.0018.7849-.6723 1.485-1.5634 1.485-.9167 0-1.54-.5629-1.5634-1.493-.0212-.8347.5397-1.4749 1.5634-1.4749Z"/></svg>

After

Width:  |  Height:  |  Size: 3.1 KiB

47
static/icons/mastodon.svg Normal file
View file

@ -0,0 +1,47 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
role="img"
viewBox="0 0 24 24"
version="1.1"
id="svg1"
sodipodi:docname="mastodon.svg"
inkscape:version="1.3.2 (091e20ef0f, 2023-11-25, custom)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs1" />
<sodipodi:namedview
id="namedview1"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:zoom="20.5"
inkscape:cx="11.97561"
inkscape:cy="12"
inkscape:window-width="1366"
inkscape:window-height="696"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg1" />
<title
id="title1">Mastodon</title>
<rect
style="fill:#ffffff"
id="rect1"
width="16.916731"
height="11.88186"
x="3.4818978"
y="3.2237043" />
<path
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"
id="path1"
inkscape:label="path1"
style="fill:#000000" />
</svg>

After

Width:  |  Height:  |  Size: 2.3 KiB

3
static/icons/reddit.svg Normal file
View file

@ -0,0 +1,3 @@
<?xml version="1.0" ?><svg id="Layer_1" style="enable-background:new 0 0 1000 1000;" version="1.1" viewBox="0 0 1000 1000" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><style type="text/css">
.st0{fill:#FFFFFF;}
</style><title/><g><path d="M500,1000L500,1000C223.9,1000,0,776.1,0,500l0,0C0,223.9,223.9,0,500,0l0,0c276.1,0,500,223.9,500,500l0,0 C1000,776.1,776.1,1000,500,1000z"/><path class="st0" d="M614.6,604.2c-28.7,0-52.1-23.4-52.1-52.1c0-28.7,23.4-52.1,52.1-52.1s52.1,23.4,52.1,52.1 C666.7,580.8,643.3,604.2,614.6,604.2 M623.8,689.7C588.2,725.2,520.1,728,500.1,728c-20,0-88.2-2.8-123.7-38.3 c-5.3-5.3-5.3-13.8,0-19.1s13.8-5.3,19.1,0C417.9,693,465.8,701,500.1,701c34.2,0,82.2-8,104.6-30.4c5.3-5.3,13.8-5.3,19.1,0 C629,675.9,629,684.4,623.8,689.7 M333.3,552.1c0-28.7,23.4-52.1,52.1-52.1s52.1,23.4,52.1,52.1s-23.4,52.1-52.1,52.1 C356.7,604.2,333.3,580.8,333.3,552.1 M833.3,500c0-40.3-32.6-72.9-72.9-72.9c-19.7,0-37.5,7.8-50.6,20.5 c-49.8-36-118.5-59.2-195-61.9L548,229.4l108.5,23.1c1.3,27.6,23.9,49.6,51.8,49.6c28.8,0,52.1-23.3,52.1-52.1 s-23.3-52.1-52.1-52.1c-20.5,0-38,11.9-46.5,29.1l-121.2-25.8c-3.4-0.7-6.9-0.1-9.8,1.8c-2.9,1.9-4.9,4.8-5.6,8.2l-36.4,171.5 c-0.2,1,0,1.9,0,2.9c-77.9,2-147.9,25.3-198.5,61.8c-13.1-12.6-30.8-20.3-50.4-20.3c-40.3,0-72.9,32.7-72.9,72.9 c0,29.6,17.7,55.1,43.1,66.5c-1.1,7.2-1.7,14.6-1.7,22.1c0,112.2,130.6,203.1,291.7,203.1s291.7-90.9,291.7-203.1 c0-7.4-0.6-14.7-1.7-21.9C815.4,555.3,833.3,529.8,833.3,500" id="Fill-3"/></g></svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

1
static/icons/replit.svg Normal file
View file

@ -0,0 +1 @@
<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Replit</title><path d="M2 1.5A1.5 1.5 0 0 1 3.5 0h7A1.5 1.5 0 0 1 12 1.5V8H3.5A1.5 1.5 0 0 1 2 6.5ZM12 8h8.5A1.5 1.5 0 0 1 22 9.5v5a1.5 1.5 0 0 1-1.5 1.5H12ZM2 17.5A1.5 1.5 0 0 1 3.5 16H12v6.5a1.5 1.5 0 0 1-1.5 1.5h-7A1.5 1.5 0 0 1 2 22.5Z"/></svg>

After

Width:  |  Height:  |  Size: 326 B

1
static/icons/steam.svg Normal file
View file

@ -0,0 +1 @@
<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Steam</title><path d="M11.979 0C5.678 0 .511 4.86.022 11.037l6.432 2.658c.545-.371 1.203-.59 1.912-.59.063 0 .125.004.188.006l2.861-4.142V8.91c0-2.495 2.028-4.524 4.524-4.524 2.494 0 4.524 2.031 4.524 4.527s-2.03 4.525-4.524 4.525h-.105l-4.076 2.911c0 .052.004.105.004.159 0 1.875-1.515 3.396-3.39 3.396-1.635 0-3.016-1.173-3.331-2.727L.436 15.27C1.862 20.307 6.486 24 11.979 24c6.627 0 11.999-5.373 11.999-12S18.605 0 11.979 0zM7.54 18.21l-1.473-.61c.262.543.714.999 1.314 1.25 1.297.539 2.793-.076 3.332-1.375.263-.63.264-1.319.005-1.949s-.75-1.121-1.377-1.383c-.624-.26-1.29-.249-1.878-.03l1.523.63c.956.4 1.409 1.5 1.009 2.455-.397.957-1.497 1.41-2.454 1.012H7.54zm11.415-9.303c0-1.662-1.353-3.015-3.015-3.015-1.665 0-3.015 1.353-3.015 3.015 0 1.665 1.35 3.015 3.015 3.015 1.663 0 3.015-1.35 3.015-3.015zm-5.273-.005c0-1.252 1.013-2.266 2.265-2.266 1.249 0 2.266 1.014 2.266 2.266 0 1.251-1.017 2.265-2.266 2.265-1.253 0-2.265-1.014-2.265-2.265z"/></svg>

After

Width:  |  Height:  |  Size: 1 KiB

47
static/icons/twitter.svg Normal file
View file

@ -0,0 +1,47 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
role="img"
viewBox="0 0 24 24"
version="1.1"
id="svg1"
sodipodi:docname="x.svg"
inkscape:version="1.3.2 (091e20ef0f, 2023-11-25, custom)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs1" />
<sodipodi:namedview
id="namedview1"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:zoom="20.5"
inkscape:cx="9.4634146"
inkscape:cy="12.243902"
inkscape:window-width="1366"
inkscape:window-height="696"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg1" />
<title
id="title1">X</title>
<rect
style="fill:#ffffff;stroke-width:1.158"
id="rect1"
width="5.3889108"
height="24.203014"
x="-0.37450975"
y="4.843503"
rx="2.6944554"
transform="matrix(0.80886759,-0.58799083,0.60724221,0.79451677,0,0)" />
<path
d="M18.901 1.153h3.68l-8.04 9.19L24 22.846h-7.406l-5.8-7.584-6.638 7.584H.474l8.6-9.83L0 1.154h7.594l5.243 6.932ZM17.61 20.644h2.039L6.486 3.24H4.298Z"
id="path1" />
</svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

View file

@ -0,0 +1 @@
<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Twitter</title><path d="M21.543 7.104c.015.211.015.423.015.636 0 6.507-4.954 14.01-14.01 14.01v-.003A13.94 13.94 0 0 1 0 19.539a9.88 9.88 0 0 0 7.287-2.041 4.93 4.93 0 0 1-4.6-3.42 4.916 4.916 0 0 0 2.223-.084A4.926 4.926 0 0 1 .96 9.167v-.062a4.887 4.887 0 0 0 2.235.616A4.928 4.928 0 0 1 1.67 3.148 13.98 13.98 0 0 0 11.82 8.292a4.929 4.929 0 0 1 8.39-4.49 9.868 9.868 0 0 0 3.128-1.196 4.941 4.941 0 0 1-2.165 2.724A9.828 9.828 0 0 0 24 4.555a10.019 10.019 0 0 1-2.457 2.549z"/></svg>

After

Width:  |  Height:  |  Size: 565 B

1
static/icons/youtube.svg Normal file
View file

@ -0,0 +1 @@
<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>YouTube</title><path d="M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z"/></svg>

After

Width:  |  Height:  |  Size: 459 B

BIN
static/oneko.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

282
static/oneko.js Normal file
View file

@ -0,0 +1,282 @@
// oneko.js: https://github.com/adryd325/oneko.js
(function oneko() {
const isReducedMotion =
window.matchMedia(`(prefers-reduced-motion: reduce)`) === true ||
window.matchMedia(`(prefers-reduced-motion: reduce)`).matches === true;
if (isReducedMotion) return;
const nekoEl = document.createElement("div");
let nekoPosX = 32;
let nekoPosY = 32;
let mousePosX = 0;
let mousePosY = 0;
let frameCount = 0;
let idleTime = 0;
let idleAnimation = null;
let idleAnimationFrame = 0;
const nekoSpeed = 10;
const spriteSets = {
idle: [[-3, -3]],
alert: [[-7, -3]],
scratchSelf: [
[-5, 0],
[-6, 0],
[-7, 0],
],
scratchWallN: [
[0, 0],
[0, -1],
],
scratchWallS: [
[-7, -1],
[-6, -2],
],
scratchWallE: [
[-2, -2],
[-2, -3],
],
scratchWallW: [
[-4, 0],
[-4, -1],
],
tired: [[-3, -2]],
sleeping: [
[-2, 0],
[-2, -1],
],
N: [
[-1, -2],
[-1, -3],
],
NE: [
[0, -2],
[0, -3],
],
E: [
[-3, 0],
[-3, -1],
],
SE: [
[-5, -1],
[-5, -2],
],
S: [
[-6, -3],
[-7, -2],
],
SW: [
[-5, -3],
[-6, -1],
],
W: [
[-4, -2],
[-4, -3],
],
NW: [
[-1, 0],
[-1, -1],
],
};
function init() {
nekoEl.id = "oneko";
nekoEl.ariaHidden = true;
nekoEl.style.width = "32px";
nekoEl.style.height = "32px";
nekoEl.style.position = "fixed";
nekoEl.style.pointerEvents = "auto";
nekoEl.style.imageRendering = "pixelated";
nekoEl.style.left = `${nekoPosX - 16}px`;
nekoEl.style.top = `${nekoPosY - 16}px`;
nekoEl.style.zIndex = Number.MAX_VALUE;
let nekoFile = "/static/oneko.gif"
const curScript = document.currentScript
if (curScript && curScript.dataset.cat) {
nekoFile = curScript.dataset.cat
}
nekoEl.style.backgroundImage = `url(${nekoFile})`;
document.body.appendChild(nekoEl);
document.addEventListener("mousemove", function (event) {
mousePosX = event.clientX;
mousePosY = event.clientY;
});
window.requestAnimationFrame(onAnimationFrame);
}
let lastFrameTimestamp;
function onAnimationFrame(timestamp) {
// Stops execution if the neko element is removed from DOM
if (!nekoEl.isConnected) {
return;
}
if (!lastFrameTimestamp) {
lastFrameTimestamp = timestamp;
}
if (timestamp - lastFrameTimestamp > 100) {
lastFrameTimestamp = timestamp
frame()
}
window.requestAnimationFrame(onAnimationFrame);
}
function setSprite(name, frame) {
const sprite = spriteSets[name][frame % spriteSets[name].length];
nekoEl.style.backgroundPosition = `${sprite[0] * 32}px ${sprite[1] * 32}px`;
}
function resetIdleAnimation() {
idleAnimation = null;
idleAnimationFrame = 0;
}
function idle() {
idleTime += 1;
// every ~ 20 seconds
if (
idleTime > 10 &&
Math.floor(Math.random() * 200) == 0 &&
idleAnimation == null
) {
let avalibleIdleAnimations = ["sleeping", "scratchSelf"];
if (nekoPosX < 32) {
avalibleIdleAnimations.push("scratchWallW");
}
if (nekoPosY < 32) {
avalibleIdleAnimations.push("scratchWallN");
}
if (nekoPosX > window.innerWidth - 32) {
avalibleIdleAnimations.push("scratchWallE");
}
if (nekoPosY > window.innerHeight - 32) {
avalibleIdleAnimations.push("scratchWallS");
}
idleAnimation =
avalibleIdleAnimations[
Math.floor(Math.random() * avalibleIdleAnimations.length)
];
}
switch (idleAnimation) {
case "sleeping":
if (idleAnimationFrame < 8) {
setSprite("tired", 0);
break;
}
setSprite("sleeping", Math.floor(idleAnimationFrame / 4));
if (idleAnimationFrame > 192) {
resetIdleAnimation();
}
break;
case "scratchWallN":
case "scratchWallS":
case "scratchWallE":
case "scratchWallW":
case "scratchSelf":
setSprite(idleAnimation, idleAnimationFrame);
if (idleAnimationFrame > 9) {
resetIdleAnimation();
}
break;
default:
setSprite("idle", 0);
return;
}
idleAnimationFrame += 1;
}
function explodeHearts() {
const parent = nekoEl.parentElement;
const rect = nekoEl.getBoundingClientRect();
const scrollLeft = window.scrollX || document.documentElement.scrollLeft;
const scrollTop = window.scrollY || document.documentElement.scrollTop;
const centerX = rect.left + rect.width / 2 + scrollLeft;
const centerY = rect.top + rect.height / 2 + scrollTop;
for (let i = 0; i < 10; i++) {
const heart = document.createElement('div');
heart.className = 'heart';
heart.textContent = '❤';
const offsetX = (Math.random() - 0.5) * 50;
const offsetY = (Math.random() - 0.5) * 50;
heart.style.left = `${centerX + offsetX - 16}px`;
heart.style.top = `${centerY + offsetY - 16}px`;
heart.style.transform = `translate(-50%, -50%) rotate(${Math.random() * 360}deg)`;
parent.appendChild(heart);
setTimeout(() => {
parent.removeChild(heart);
}, 1000);
}
}
const style = document.createElement('style');
style.innerHTML = `
@keyframes heartBurst {
0% { transform: scale(0); opacity: 1; }
100% { transform: scale(1); opacity: 0; }
}
.heart {
position: absolute;
font-size: 2em;
animation: heartBurst 1s ease-out;
animation-fill-mode: forwards;
color: #ab9df2;
}
`;
document.head.appendChild(style);
nekoEl.addEventListener('click', explodeHearts);
function frame() {
frameCount += 1;
const diffX = nekoPosX - mousePosX;
const diffY = nekoPosY - mousePosY;
const distance = Math.sqrt(diffX ** 2 + diffY ** 2);
if (distance < nekoSpeed || distance < 48) {
idle();
return;
}
idleAnimation = null;
idleAnimationFrame = 0;
if (idleTime > 1) {
setSprite("alert", 0);
// count down after being alerted before moving
idleTime = Math.min(idleTime, 7);
idleTime -= 1;
return;
}
let direction;
direction = diffY / distance > 0.5 ? "N" : "";
direction += diffY / distance < -0.5 ? "S" : "";
direction += diffX / distance > 0.5 ? "W" : "";
direction += diffX / distance < -0.5 ? "E" : "";
setSprite(direction, frameCount);
nekoPosX -= (diffX / distance) * nekoSpeed;
nekoPosY -= (diffY / distance) * nekoSpeed;
nekoPosX = Math.min(Math.max(16, nekoPosX), window.innerWidth - 16);
nekoPosY = Math.min(Math.max(16, nekoPosY), window.innerHeight - 16);
nekoEl.style.left = `${nekoPosX - 16}px`;
nekoEl.style.top = `${nekoPosY - 16}px`;
}
init();
})();

1546
static/particles.js Normal file

File diff suppressed because it is too large Load diff

110
static/particles.json Normal file
View file

@ -0,0 +1,110 @@
{
"particles": {
"number": {
"value": 80,
"density": {
"enable": true,
"value_area": 800
}
},
"color": {
"value": "#f5c2e7"
},
"shape": {
"type": "circle",
"stroke": {
"width": 0,
"color": "#000000"
},
"polygon": {
"nb_sides": 5
},
"image": {
"src": "img/github.svg",
"width": 100,
"height": 100
}
},
"opacity": {
"value": 0.5,
"random": false,
"anim": {
"enable": false,
"speed": 1,
"opacity_min": 0.1,
"sync": false
}
},
"size": {
"value": 3,
"random": true,
"anim": {
"enable": false,
"speed": 40,
"size_min": 0.1,
"sync": false
}
},
"line_linked": {
"enable": true,
"distance": 150,
"color": "#f5c2e7",
"opacity": 0.4,
"width": 1
},
"move": {
"enable": true,
"speed": 6,
"direction": "none",
"random": false,
"straight": false,
"out_mode": "out",
"bounce": false,
"attract": {
"enable": false,
"rotateX": 600,
"rotateY": 1200
}
}
},
"interactivity": {
"detect_on": "window",
"events": {
"onhover": {
"enable": true,
"mode": "repulse"
},
"onclick": {
"enable": true,
"mode": "remove"
},
"resize": true
},
"modes": {
"grab": {
"distance": 400,
"line_linked": {
"opacity": 1
}
},
"bubble": {
"distance": 400,
"size": 40,
"duration": 2,
"opacity": 8,
"speed": 3
},
"repulse": {
"distance": 200,
"duration": 0.4
},
"push": {
"particles_nb": 4
},
"remove": {
"particles_nb": 2
}
}
},
"retina_detect": true
}

109
static/style.css Normal file
View file

@ -0,0 +1,109 @@
@import url("https://api.fonts.coollabs.io/css2?family=Atkinson+Hyperlegible&display=swap");
@import url('https://api.fonts.coollabs.io/css2?family=Roboto+Mono:ital,wght@0,100..700;1,100..700&display=swap');
html, body{
padding: 0;
margin: 0;
height: 100%;
font-size: 1.1em;
}
body * {
color: #cdd6f4;
font-family: 'Atkinson Hyperlegible', 'Roboto Mono' Arial, sans-serif;
}
.page {
display: flex;
width: 65%;
margin: 0 auto;
align-items: start;
padding-top: 3em;
}
.page .content{
flex-grow: 7;
padding: 0.25em;
max-width: 70%;
min-width: 68%;
}
.page .sidebar {
flex-grow: 3;
min-width: 27%; /* this is highly cursed */
max-width: 40%;
}
.container {
border-color: #f5c2e7;
border-width: 2px;
border-style: solid;
margin: 1em;
background-color: #1e1e2e;
padding: 0.6em;
}
/* time to fix these cursed media queries */
@media only screen and (min-width: 0px) and (max-width: 600px){
.page {
width: 100%;
margin-top: 0;
flex-direction: column-reverse;
}
.container {
margin: 0.5em;
}
.sidebar {
min-width: 95% !important;
/*max-width: 100% !important;*/
width: 100% !important;
}
.content {
min-width: 95% !important;
width: 100% !important;
}
}
@media only screen and (min-width: 600px) and (max-width: 1000px){
.page {
margin-top: 0;
width: 85%;
}
}
.page .sidebar header{
text-align: right;
}
canvas {
display: block;
vertical-align: bottom;
}
#particles-js {
z-index: -1;
position: absolute;
width: 100%;
height: 100%;
background-color: #1e1e2e;
background-image: url("");
background-repeat: no-repeat;
background-size: cover;
background-position: 50% 50%;
}
.content hr:last-of-type {
display:none;
}
.socials {
background-color: #fff;
display: inline-block;
padding:5px;
padding-bottom: 0px;
border: 2px solid #f5c2e7;
margin-bottom: 1em;
}
#animal_img {
width: 100%;
height: auto;
}
#gif_buttons {
image-rendering: pixelated;
}

77
tags/linux/index.html Normal file
View file

@ -0,0 +1,77 @@
<!DOCTYPE html>
<html>
<head>
<title># linux</title>
<link rel="stylesheet" href="/static/style.css">
<meta charset="utf-8"/>
<meta name="author" content="ConfusionUnknown" />
<meta name="generator" content="basalt" />
<meta content="juli's page" property="og:title" />
<meta content="some furry's page" property="og:description" />
<meta content="#001B29" data-react-helmet="true" name="theme-color"/>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="twitter:site" content="https://julimiro.eu" />
<meta name="twitter:title" content="juli's website" />
<meta name="twitter:description" content="a silly fur's page" />
<script src="/static/particles.js"></script>
<script src="/static/animal.js"></script>
</head>
<body>
<script src="/static/oneko.js"></script>
<div id="particles-js"></div>
<div class="page">
<div class="content container">
<h2># linux</h2>
<div>
<h2>
<a href="http://127.0.0.1:8000/posts/pmosphone">I installed linux on my phone</a>
</h2>
<h5>Mon 19 Feb 2024</h5>
<p>
</p>
</div>
<hr />
</div>
<div class="sidebar">
<div class="sidebar_box container">
<header>
<h2>Juli's site</h2>
<h4>a silly site for a silly goober</h4>
</header>
<ul>
<li><a href="http://127.0.0.1:8000/">Home</a></li>
<li><a href="http://127.0.0.1:8000/posts.html">Posts</a></li>
<li><a href="http://127.0.0.1:8000/pages/contact">Contact</a></li>
<li><a href="http://127.0.0.1:8000/pages/feed">Feed</a></li>
<li><a href="http://127.0.0.1:8000/pages/license">License info</a></li>
</ul>
</div>
<div class="sidebar_box container">
<div class="animal_div">
<img src="" id="animal_img" alt="randomly picked image of cute animal">
<p id="animal_subtitle"></p>
<p>Images stolen from <a target="_blank" href="https://tinyfox.dev/image-list/">tinyfox.dev</a></p>
</div>
</div>
</div>
</div>
</body>
</html>
<!-- trans rights :3 -->

77
tags/mobile/index.html Normal file
View file

@ -0,0 +1,77 @@
<!DOCTYPE html>
<html>
<head>
<title># mobile</title>
<link rel="stylesheet" href="/static/style.css">
<meta charset="utf-8"/>
<meta name="author" content="ConfusionUnknown" />
<meta name="generator" content="basalt" />
<meta content="juli's page" property="og:title" />
<meta content="some furry's page" property="og:description" />
<meta content="#001B29" data-react-helmet="true" name="theme-color"/>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="twitter:site" content="https://julimiro.eu" />
<meta name="twitter:title" content="juli's website" />
<meta name="twitter:description" content="a silly fur's page" />
<script src="/static/particles.js"></script>
<script src="/static/animal.js"></script>
</head>
<body>
<script src="/static/oneko.js"></script>
<div id="particles-js"></div>
<div class="page">
<div class="content container">
<h2># mobile</h2>
<div>
<h2>
<a href="http://127.0.0.1:8000/posts/pmosphone">I installed linux on my phone</a>
</h2>
<h5>Mon 19 Feb 2024</h5>
<p>
</p>
</div>
<hr />
</div>
<div class="sidebar">
<div class="sidebar_box container">
<header>
<h2>Juli's site</h2>
<h4>a silly site for a silly goober</h4>
</header>
<ul>
<li><a href="http://127.0.0.1:8000/">Home</a></li>
<li><a href="http://127.0.0.1:8000/posts.html">Posts</a></li>
<li><a href="http://127.0.0.1:8000/pages/contact">Contact</a></li>
<li><a href="http://127.0.0.1:8000/pages/feed">Feed</a></li>
<li><a href="http://127.0.0.1:8000/pages/license">License info</a></li>
</ul>
</div>
<div class="sidebar_box container">
<div class="animal_div">
<img src="" id="animal_img" alt="randomly picked image of cute animal">
<p id="animal_subtitle"></p>
<p>Images stolen from <a target="_blank" href="https://tinyfox.dev/image-list/">tinyfox.dev</a></p>
</div>
</div>
</div>
</div>
</body>
</html>
<!-- trans rights :3 -->