Compare commits

...

No commits in common. "v1" and "7c74d12cd8433bfc3f65d71f636eb9dcc8e67b9a" have entirely different histories.

26 changed files with 4103 additions and 1729 deletions

2
.gitattributes vendored Normal file
View File

@ -0,0 +1,2 @@
# Auto detect text files and perform LF normalization
* text=auto

24
.gitignore vendored Normal file
View File

@ -0,0 +1,24 @@
# Compiled class file
*.class
# Log file
*.log
# BlueJ files
*.ctxt
# Mobile Tools for Java (J2ME)
.mtj.tmp/
# Package Files #
*.jar
*.war
*.nar
*.ear
*.zip
*.tar.gz
*.rar
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*
replay_pid*

21
LICENSE Normal file
View File

@ -0,0 +1,21 @@
MIT License
Copyright (c) 2023 Vitor Antoni
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

47
README.md Normal file
View File

@ -0,0 +1,47 @@
# Linktree Template
### Presentation
Hi there. How are you? Hope you're fine. 😁
In this repository, I would like to make available a website template for people who wants to share your's most important links in any social media. It's very customizable, so you are able to make any changes that you wants.
If necessary, feel free for ask or suggest me about anything. Intend to monitor this repository every day.
## 🎯 Website demo
![Website Demo](https://github.com/vitor-antoni/linktree-template/blob/main/assets/gif-readme/gif-readme.gif)
## 💻 Somethings you can do
The `index.html` can imports two differents snowfall effects, but you must choose between one of these.
> Don't use both at the same time, it might seem a little strange.
If you want to keep default effect, don't change the lines where are this code:
```
<!-- Snowfall Background Animation -->
<section class="animated-background">
<div id="stars1"></div>
<div id="stars2"></div>
<div id="stars3"></div>
</section>
<!-- End of Snowfall Background Animation -->
```
But, if you want, comment this code above. After commenting the code above, go to the end of `index.html`, you may see a code code like that:
```
<!--
A different snowfall
<script src="snowfall.js"></script>
-->
```
Uncomment this code and press `ctrl+s` for see the updates in your website.
## 📑 Additional Information
This project was developed to contribute to the *open source* movement. Therefore, it doesn't have any complex code here.
I liked this project so much that I used it to develop a website for myself. You can see it [clicking here](https://links.vitor-antoni.com.br).
Furthermore, I must to give the credit to these people, that I got some pieces of code from their own projects to develop this.
[©️ johnggli](https://github.com/johnggli/linktree) <br>
[©️ SamirPaul1](https://github.com/SamirPaul1/links)
In case you are interested to follow or conected with me on LinkedIn, you can do it in this link: [LinkedIn](linkedin.com/in/vitor-silva-de-antoni/)

File diff suppressed because it is too large Load Diff

1497
assets/css/style.css Normal file

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 MiB

View File

Before

Width:  |  Height:  |  Size: 357 B

After

Width:  |  Height:  |  Size: 357 B

View File

Before

Width:  |  Height:  |  Size: 9.0 KiB

After

Width:  |  Height:  |  Size: 9.0 KiB

BIN
assets/images/credly.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

View File

@ -1,9 +1,9 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg xmlns="http://www.w3.org/2000/svg" width="800" height="480" viewBox="0 0 800 480"> <svg xmlns="http://www.w3.org/2000/svg" width="800" height="480" viewBox="0 0 800 480">
<g fill-rule="evenodd"> <g fill-rule="evenodd">
<rect width="800" height="120" fill="#fef433"/> <rect width="800" height="120" fill="#fef433"/>
<rect width="800" height="120" y="120" fill="#ffffff"/> <rect width="800" height="120" y="120" fill="#ffffff"/>
<rect width="800" height="120" y="240" fill="#9a59cf"/> <rect width="800" height="120" y="240" fill="#9a59cf"/>
<rect width="800" height="120" y="360" fill="#000000"/> <rect width="800" height="120" y="360" fill="#000000"/>
</g> </g>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 422 B

After

Width:  |  Height:  |  Size: 414 B

BIN
assets/images/facebook.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

BIN
assets/images/favicon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB

BIN
assets/images/github.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 882 B

BIN
assets/images/instagram.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

BIN
assets/images/linkedin.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

BIN
assets/images/logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 224 KiB

View File

@ -1,20 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!-- Generator: Adobe Illustrator 16.0.4, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> <!-- Generator: Adobe Illustrator 16.0.4, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg enable-background="new 0 0 419.53 297.64" height="297.64px" version="1.1" viewBox="0 0 419.53 297.64" width="419.53px" x="0px" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px"> <svg enable-background="new 0 0 419.53 297.64" height="297.64px" version="1.1" viewBox="0 0 419.53 297.64" width="419.53px" x="0px" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
<switch> <switch>
<g extraneous="self"> <g extraneous="self">
<g id="Ebene_1"> <g id="Ebene_1">
<rect fill="#4AAAE0" height="297.638" width="419.528" x="0.001" y="-0.569"/> <rect fill="#4AAAE0" height="297.638" width="419.528" x="0.001" y="-0.569"/>
</g> </g>
<g id="Ebene_2"> <g id="Ebene_2">
<rect fill="#FED905" height="198.425" width="419.528" x="0.002" y="0"/> <rect fill="#FED905" height="198.425" width="419.528" x="0.002" y="0"/>
</g> </g>
<g id="Ebene_3"> <g id="Ebene_3">
<rect fill="#E5318A" height="99.213" width="419.527"/> <rect fill="#E5318A" height="99.213" width="419.527"/>
</g> </g>
</g> </g>
</switch> </switch>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 816 B

After

Width:  |  Height:  |  Size: 797 B

View File

Before

Width:  |  Height:  |  Size: 7.3 MiB

After

Width:  |  Height:  |  Size: 7.3 MiB

View File

@ -1,2 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" id="Ebene_1" data-name="Ebene 1" viewBox="0 0 419.53 297.64"><defs><style>.cls-1{fill:#ee3124;}.cls-2{fill:#f57f29;}.cls-3{fill:#fff000;}.cls-4{fill:#58b947;}.cls-5{fill:#0054a6;}.cls-6{fill:#9f248f;}.cls-7{fill:#603917;}.cls-8{fill:#7cc0ea;}.cls-9{fill:#f498c0;}.cls-10{fill:#fff;}</style></defs><rect class="cls-1" x="-44.5" y="0.02" width="468.17" height="49.36"/><rect class="cls-2" x="-44.5" y="49.38" width="468.17" height="49.89"/><rect class="cls-3" x="-44.5" y="99.27" width="468.17" height="49.89"/><rect class="cls-4" x="-44.5" y="149.16" width="468.17" height="49.89"/><rect class="cls-5" x="-44.5" y="199.05" width="468.17" height="49.89"/><rect class="cls-6" x="-44.5" y="248.94" width="468.17" height="48.76"/><polygon points="-123.67 -190.44 -462.99 148.88 -126.49 488.08 212.83 148.76 -123.67 -190.44"/><polygon class="cls-7" points="179.93 148.76 -123.75 -157.63 -432.88 148.8 -126.49 455.18 179.93 148.76"/><polygon class="cls-8" points="147.04 148.76 -123.58 -124.55 -399.8 148.97 -126.49 422.29 147.04 148.76"/><polygon class="cls-9" points="116.84 148.76 -123.92 -92 -364.55 148.63 -126.49 389.39 116.84 148.76"/><polygon class="cls-10" points="83.94 148.76 -123.74 -58.93 -331.48 148.81 -126.49 356.49 83.94 148.76"/></svg> <svg xmlns="http://www.w3.org/2000/svg" id="Ebene_1" data-name="Ebene 1" viewBox="0 0 419.53 297.64"><defs><style>.cls-1{fill:#ee3124;}.cls-2{fill:#f57f29;}.cls-3{fill:#fff000;}.cls-4{fill:#58b947;}.cls-5{fill:#0054a6;}.cls-6{fill:#9f248f;}.cls-7{fill:#603917;}.cls-8{fill:#7cc0ea;}.cls-9{fill:#f498c0;}.cls-10{fill:#fff;}</style></defs><rect class="cls-1" x="-44.5" y="0.02" width="468.17" height="49.36"/><rect class="cls-2" x="-44.5" y="49.38" width="468.17" height="49.89"/><rect class="cls-3" x="-44.5" y="99.27" width="468.17" height="49.89"/><rect class="cls-4" x="-44.5" y="149.16" width="468.17" height="49.89"/><rect class="cls-5" x="-44.5" y="199.05" width="468.17" height="49.89"/><rect class="cls-6" x="-44.5" y="248.94" width="468.17" height="48.76"/><polygon points="-123.67 -190.44 -462.99 148.88 -126.49 488.08 212.83 148.76 -123.67 -190.44"/><polygon class="cls-7" points="179.93 148.76 -123.75 -157.63 -432.88 148.8 -126.49 455.18 179.93 148.76"/><polygon class="cls-8" points="147.04 148.76 -123.58 -124.55 -399.8 148.97 -126.49 422.29 147.04 148.76"/><polygon class="cls-9" points="116.84 148.76 -123.92 -92 -364.55 148.63 -126.49 389.39 116.84 148.76"/><polygon class="cls-10" points="83.94 148.76 -123.74 -58.93 -331.48 148.81 -126.49 356.49 83.94 148.76"/></svg>

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

BIN
assets/images/replit.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 800 400"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 800 400">
<path fill="#5BCEFA" d="M0 0h800v400H0z"/> <path fill="#5BCEFA" d="M0 0h800v400H0z"/>
<path fill="#F5A9B8" d="M0 80h800v240H0z"/> <path fill="#F5A9B8" d="M0 80h800v240H0z"/>
<path fill="#FFF" d="M0 160h800v80H0z"/> <path fill="#FFF" d="M0 160h800v80H0z"/>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 247 B

After

Width:  |  Height:  |  Size: 242 B

904
assets/js/snowfall.js Normal file
View File

@ -0,0 +1,904 @@
(() => {
var n = {
576: (n, t, r) => {
var e;
function i(n) {
return i = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(n) {
return typeof n
} : function(n) {
return n && "function" == typeof Symbol && n.constructor === Symbol && n !== Symbol.prototype ? "symbol" : typeof n
}, i(n)
}
n = r.nmd(n),
function() {
var u = "object" == ("undefined" == typeof self ? "undefined" : i(self)) && self.self === self && self || "object" == (void 0 === r.g ? "undefined" : i(r.g)) && r.g.global === r.g && r.g || this || {},
o = u._,
a = Array.prototype,
c = Object.prototype,
f = "undefined" != typeof Symbol ? Symbol.prototype : null,
l = a.push,
s = a.slice,
p = c.toString,
h = c.hasOwnProperty,
d = Array.isArray,
v = Object.keys,
y = Object.create,
g = function() {},
m = function n(t) {
return t instanceof n ? t : this instanceof n ? void(this._wrapped = t) : new n(t)
};
t.nodeType ? u._ = m : (!n.nodeType && n.exports && (t = n.exports = m), t._ = m), m.VERSION = "1.9.1";
var b, w = function(n, t, r) {
if (void 0 === t) return n;
switch (null == r ? 3 : r) {
case 1:
return function(r) {
return n.call(t, r)
};
case 3:
return function(r, e, i) {
return n.call(t, r, e, i)
};
case 4:
return function(r, e, i, u) {
return n.call(t, r, e, i, u)
}
}
return function() {
return n.apply(t, arguments)
}
},
j = function(n, t, r) {
return m.iteratee !== b ? m.iteratee(n, t) : null == n ? m.identity : m.isFunction(n) ? w(n, t, r) : m.isObject(n) && !m.isArray(n) ? m.matcher(n) : m.property(n)
};
m.iteratee = b = function(n, t) {
return j(n, t, 1 / 0)
};
var x = function(n, t) {
return t = null == t ? n.length - 1 : +t,
function() {
for (var r = Math.max(arguments.length - t, 0), e = Array(r), i = 0; i < r; i++) e[i] = arguments[i + t];
switch (t) {
case 0:
return n.call(this, e);
case 1:
return n.call(this, arguments[0], e);
case 2:
return n.call(this, arguments[0], arguments[1], e)
}
var u = Array(t + 1);
for (i = 0; i < t; i++) u[i] = arguments[i];
return u[t] = e, n.apply(this, u)
}
},
O = function(n) {
if (!m.isObject(n)) return {};
if (y) return y(n);
g.prototype = n;
var t = new g;
return g.prototype = null, t
},
A = function(n) {
return function(t) {
return null == t ? void 0 : t[n]
}
},
_ = function(n, t) {
return null != n && h.call(n, t)
},
S = function(n, t) {
for (var r = t.length, e = 0; e < r; e++) {
if (null == n) return;
n = n[t[e]]
}
return r ? n : void 0
},
k = Math.pow(2, 53) - 1,
E = A("length"),
F = function(n) {
var t = E(n);
return "number" == typeof t && t >= 0 && t <= k
};
m.each = m.forEach = function(n, t, r) {
var e, i;
if (t = w(t, r), F(n))
for (e = 0, i = n.length; e < i; e++) t(n[e], e, n);
else {
var u = m.keys(n);
for (e = 0, i = u.length; e < i; e++) t(n[u[e]], u[e], n)
}
return n
}, m.map = m.collect = function(n, t, r) {
t = j(t, r);
for (var e = !F(n) && m.keys(n), i = (e || n).length, u = Array(i), o = 0; o < i; o++) {
var a = e ? e[o] : o;
u[o] = t(n[a], a, n)
}
return u
};
var I = function(n) {
var t = function(t, r, e, i) {
var u = !F(t) && m.keys(t),
o = (u || t).length,
a = n > 0 ? 0 : o - 1;
for (i || (e = t[u ? u[a] : a], a += n); a >= 0 && a < o; a += n) {
var c = u ? u[a] : a;
e = r(e, t[c], c, t)
}
return e
};
return function(n, r, e, i) {
var u = arguments.length >= 3;
return t(n, w(r, i, 4), e, u)
}
};
m.reduce = m.foldl = m.inject = I(1), m.reduceRight = m.foldr = I(-1), m.find = m.detect = function(n, t, r) {
var e = (F(n) ? m.findIndex : m.findKey)(n, t, r);
if (void 0 !== e && -1 !== e) return n[e]
}, m.filter = m.select = function(n, t, r) {
var e = [];
return t = j(t, r), m.each(n, (function(n, r, i) {
t(n, r, i) && e.push(n)
})), e
}, m.reject = function(n, t, r) {
return m.filter(n, m.negate(j(t)), r)
}, m.every = m.all = function(n, t, r) {
t = j(t, r);
for (var e = !F(n) && m.keys(n), i = (e || n).length, u = 0; u < i; u++) {
var o = e ? e[u] : u;
if (!t(n[o], o, n)) return !1
}
return !0
}, m.some = m.any = function(n, t, r) {
t = j(t, r);
for (var e = !F(n) && m.keys(n), i = (e || n).length, u = 0; u < i; u++) {
var o = e ? e[u] : u;
if (t(n[o], o, n)) return !0
}
return !1
}, m.contains = m.includes = m.include = function(n, t, r, e) {
return F(n) || (n = m.values(n)), ("number" != typeof r || e) && (r = 0), m.indexOf(n, t, r) >= 0
}, m.invoke = x((function(n, t, r) {
var e, i;
return m.isFunction(t) ? i = t : m.isArray(t) && (e = t.slice(0, -1), t = t[t.length - 1]), m.map(n, (function(n) {
var u = i;
if (!u) {
if (e && e.length && (n = S(n, e)), null == n) return;
u = n[t]
}
return null == u ? u : u.apply(n, r)
}))
})), m.pluck = function(n, t) {
return m.map(n, m.property(t))
}, m.where = function(n, t) {
return m.filter(n, m.matcher(t))
}, m.findWhere = function(n, t) {
return m.find(n, m.matcher(t))
}, m.max = function(n, t, r) {
var e, u, o = -1 / 0,
a = -1 / 0;
if (null == t || "number" == typeof t && "object" != i(n[0]) && null != n)
for (var c = 0, f = (n = F(n) ? n : m.values(n)).length; c < f; c++) null != (e = n[c]) && e > o && (o = e);
else t = j(t, r), m.each(n, (function(n, r, e) {
((u = t(n, r, e)) > a || u === -1 / 0 && o === -1 / 0) && (o = n, a = u)
}));
return o
}, m.min = function(n, t, r) {
var e, u, o = 1 / 0,
a = 1 / 0;
if (null == t || "number" == typeof t && "object" != i(n[0]) && null != n)
for (var c = 0, f = (n = F(n) ? n : m.values(n)).length; c < f; c++) null != (e = n[c]) && e < o && (o = e);
else t = j(t, r), m.each(n, (function(n, r, e) {
((u = t(n, r, e)) < a || u === 1 / 0 && o === 1 / 0) && (o = n, a = u)
}));
return o
}, m.shuffle = function(n) {
return m.sample(n, 1 / 0)
}, m.sample = function(n, t, r) {
if (null == t || r) return F(n) || (n = m.values(n)), n[m.random(n.length - 1)];
var e = F(n) ? m.clone(n) : m.values(n),
i = E(e);
t = Math.max(Math.min(t, i), 0);
for (var u = i - 1, o = 0; o < t; o++) {
var a = m.random(o, u),
c = e[o];
e[o] = e[a], e[a] = c
}
return e.slice(0, t)
}, m.sortBy = function(n, t, r) {
var e = 0;
return t = j(t, r), m.pluck(m.map(n, (function(n, r, i) {
return {
value: n,
index: e++,
criteria: t(n, r, i)
}
})).sort((function(n, t) {
var r = n.criteria,
e = t.criteria;
if (r !== e) {
if (r > e || void 0 === r) return 1;
if (r < e || void 0 === e) return -1
}
return n.index - t.index
})), "value")
};
var M = function(n, t) {
return function(r, e, i) {
var u = t ? [
[],
[]
] : {};
return e = j(e, i), m.each(r, (function(t, i) {
var o = e(t, i, r);
n(u, t, o)
})), u
}
};
m.groupBy = M((function(n, t, r) {
_(n, r) ? n[r].push(t) : n[r] = [t]
})), m.indexBy = M((function(n, t, r) {
n[r] = t
})), m.countBy = M((function(n, t, r) {
_(n, r) ? n[r]++ : n[r] = 1
}));
var N = /[^\ud800-\udfff]|[\ud800-\udbff][\udc00-\udfff]|[\ud800-\udfff]/g;
m.toArray = function(n) {
return n ? m.isArray(n) ? s.call(n) : m.isString(n) ? n.match(N) : F(n) ? m.map(n, m.identity) : m.values(n) : []
}, m.size = function(n) {
return null == n ? 0 : F(n) ? n.length : m.keys(n).length
}, m.partition = M((function(n, t, r) {
n[r ? 0 : 1].push(t)
}), !0), m.first = m.head = m.take = function(n, t, r) {
return null == n || n.length < 1 ? null == t ? void 0 : [] : null == t || r ? n[0] : m.initial(n, n.length - t)
}, m.initial = function(n, t, r) {
return s.call(n, 0, Math.max(0, n.length - (null == t || r ? 1 : t)))
}, m.last = function(n, t, r) {
return null == n || n.length < 1 ? null == t ? void 0 : [] : null == t || r ? n[n.length - 1] : m.rest(n, Math.max(0, n.length - t))
}, m.rest = m.tail = m.drop = function(n, t, r) {
return s.call(n, null == t || r ? 1 : t)
}, m.compact = function(n) {
return m.filter(n, Boolean)
};
var P = function n(t, r, e, i) {
for (var u = (i = i || []).length, o = 0, a = E(t); o < a; o++) {
var c = t[o];
if (F(c) && (m.isArray(c) || m.isArguments(c)))
if (r)
for (var f = 0, l = c.length; f < l;) i[u++] = c[f++];
else n(c, r, e, i), u = i.length;
else e || (i[u++] = c)
}
return i
};
m.flatten = function(n, t) {
return P(n, t, !1)
}, m.without = x((function(n, t) {
return m.difference(n, t)
})), m.uniq = m.unique = function(n, t, r, e) {
m.isBoolean(t) || (e = r, r = t, t = !1), null != r && (r = j(r, e));
for (var i = [], u = [], o = 0, a = E(n); o < a; o++) {
var c = n[o],
f = r ? r(c, o, n) : c;
t && !r ? (o && u === f || i.push(c), u = f) : r ? m.contains(u, f) || (u.push(f), i.push(c)) : m.contains(i, c) || i.push(c)
}
return i
}, m.union = x((function(n) {
return m.uniq(P(n, !0, !0))
})), m.intersection = function(n) {
for (var t = [], r = arguments.length, e = 0, i = E(n); e < i; e++) {
var u = n[e];
if (!m.contains(t, u)) {
var o = void 0;
for (o = 1; o < r && m.contains(arguments[o], u); o++);
o === r && t.push(u)
}
}
return t
}, m.difference = x((function(n, t) {
return t = P(t, !0, !0), m.filter(n, (function(n) {
return !m.contains(t, n)
}))
})), m.unzip = function(n) {
for (var t = n && m.max(n, E).length || 0, r = Array(t), e = 0; e < t; e++) r[e] = m.pluck(n, e);
return r
}, m.zip = x(m.unzip), m.object = function(n, t) {
for (var r = {}, e = 0, i = E(n); e < i; e++) t ? r[n[e]] = t[e] : r[n[e][0]] = n[e][1];
return r
};
var R = function(n) {
return function(t, r, e) {
r = j(r, e);
for (var i = E(t), u = n > 0 ? 0 : i - 1; u >= 0 && u < i; u += n)
if (r(t[u], u, t)) return u;
return -1
}
};
m.findIndex = R(1), m.findLastIndex = R(-1), m.sortedIndex = function(n, t, r, e) {
for (var i = (r = j(r, e, 1))(t), u = 0, o = E(n); u < o;) {
var a = Math.floor((u + o) / 2);
r(n[a]) < i ? u = a + 1 : o = a
}
return u
};
var T = function(n, t, r) {
return function(e, i, u) {
var o = 0,
a = E(e);
if ("number" == typeof u) n > 0 ? o = u >= 0 ? u : Math.max(u + a, o) : a = u >= 0 ? Math.min(u + 1, a) : u + a + 1;
else if (r && u && a) return e[u = r(e, i)] === i ? u : -1;
if (i != i) return (u = t(s.call(e, o, a), m.isNaN)) >= 0 ? u + o : -1;
for (u = n > 0 ? o : a - 1; u >= 0 && u < a; u += n)
if (e[u] === i) return u;
return -1
}
};
m.indexOf = T(1, m.findIndex, m.sortedIndex), m.lastIndexOf = T(-1, m.findLastIndex), m.range = function(n, t, r) {
null == t && (t = n || 0, n = 0), r || (r = t < n ? -1 : 1);
for (var e = Math.max(Math.ceil((t - n) / r), 0), i = Array(e), u = 0; u < e; u++, n += r) i[u] = n;
return i
}, m.chunk = function(n, t) {
if (null == t || t < 1) return [];
for (var r = [], e = 0, i = n.length; e < i;) r.push(s.call(n, e, e += t));
return r
};
var z = function(n, t, r, e, i) {
if (!(e instanceof t)) return n.apply(r, i);
var u = O(n.prototype),
o = n.apply(u, i);
return m.isObject(o) ? o : u
};
m.bind = x((function(n, t, r) {
if (!m.isFunction(n)) throw new TypeError("Bind must be called on a function");
var e = x((function(i) {
return z(n, e, t, this, r.concat(i))
}));
return e
})), m.partial = x((function(n, t) {
var r = m.partial.placeholder;
return function e() {
for (var i = 0, u = t.length, o = Array(u), a = 0; a < u; a++) o[a] = t[a] === r ? arguments[i++] : t[a];
for (; i < arguments.length;) o.push(arguments[i++]);
return z(n, e, this, this, o)
}
})), m.partial.placeholder = m, m.bindAll = x((function(n, t) {
var r = (t = P(t, !1, !1)).length;
if (r < 1) throw new Error("bindAll must be passed function names");
for (; r--;) {
var e = t[r];
n[e] = m.bind(n[e], n)
}
})), m.memoize = function(n, t) {
var r = function r(e) {
var i = r.cache,
u = "" + (t ? t.apply(this, arguments) : e);
return _(i, u) || (i[u] = n.apply(this, arguments)), i[u]
};
return r.cache = {}, r
}, m.delay = x((function(n, t, r) {
return setTimeout((function() {
return n.apply(null, r)
}), t)
})), m.defer = m.partial(m.delay, m, 1), m.throttle = function(n, t, r) {
var e, i, u, o, a = 0;
r || (r = {});
var c = function() {
a = !1 === r.leading ? 0 : m.now(), e = null, o = n.apply(i, u), e || (i = u = null)
},
f = function() {
var f = m.now();
a || !1 !== r.leading || (a = f);
var l = t - (f - a);
return i = this, u = arguments, l <= 0 || l > t ? (e && (clearTimeout(e), e = null), a = f, o = n.apply(i, u), e || (i = u = null)) : e || !1 === r.trailing || (e = setTimeout(c, l)), o
};
return f.cancel = function() {
clearTimeout(e), a = 0, e = i = u = null
}, f
}, m.debounce = function(n, t, r) {
var e, i, u = function(t, r) {
e = null, r && (i = n.apply(t, r))
},
o = x((function(o) {
if (e && clearTimeout(e), r) {
var a = !e;
e = setTimeout(u, t), a && (i = n.apply(this, o))
} else e = m.delay(u, t, this, o);
return i
}));
return o.cancel = function() {
clearTimeout(e), e = null
}, o
}, m.wrap = function(n, t) {
return m.partial(t, n)
}, m.negate = function(n) {
return function() {
return !n.apply(this, arguments)
}
}, m.compose = function() {
var n = arguments,
t = n.length - 1;
return function() {
for (var r = t, e = n[t].apply(this, arguments); r--;) e = n[r].call(this, e);
return e
}
}, m.after = function(n, t) {
return function() {
if (--n < 1) return t.apply(this, arguments)
}
}, m.before = function(n, t) {
var r;
return function() {
return --n > 0 && (r = t.apply(this, arguments)), n <= 1 && (t = null), r
}
}, m.once = m.partial(m.before, 2), m.restArguments = x;
var B = !{
toString: null
}.propertyIsEnumerable("toString"),
q = ["valueOf", "isPrototypeOf", "toString", "propertyIsEnumerable", "hasOwnProperty", "toLocaleString"],
D = function(n, t) {
var r = q.length,
e = n.constructor,
i = m.isFunction(e) && e.prototype || c,
u = "constructor";
for (_(n, u) && !m.contains(t, u) && t.push(u); r--;)(u = q[r]) in n && n[u] !== i[u] && !m.contains(t, u) && t.push(u)
};
m.keys = function(n) {
if (!m.isObject(n)) return [];
if (v) return v(n);
var t = [];
for (var r in n) _(n, r) && t.push(r);
return B && D(n, t), t
}, m.allKeys = function(n) {
if (!m.isObject(n)) return [];
var t = [];
for (var r in n) t.push(r);
return B && D(n, t), t
}, m.values = function(n) {
for (var t = m.keys(n), r = t.length, e = Array(r), i = 0; i < r; i++) e[i] = n[t[i]];
return e
}, m.mapObject = function(n, t, r) {
t = j(t, r);
for (var e = m.keys(n), i = e.length, u = {}, o = 0; o < i; o++) {
var a = e[o];
u[a] = t(n[a], a, n)
}
return u
}, m.pairs = function(n) {
for (var t = m.keys(n), r = t.length, e = Array(r), i = 0; i < r; i++) e[i] = [t[i], n[t[i]]];
return e
}, m.invert = function(n) {
for (var t = {}, r = m.keys(n), e = 0, i = r.length; e < i; e++) t[n[r[e]]] = r[e];
return t
}, m.functions = m.methods = function(n) {
var t = [];
for (var r in n) m.isFunction(n[r]) && t.push(r);
return t.sort()
};
var W = function(n, t) {
return function(r) {
var e = arguments.length;
if (t && (r = Object(r)), e < 2 || null == r) return r;
for (var i = 1; i < e; i++)
for (var u = arguments[i], o = n(u), a = o.length, c = 0; c < a; c++) {
var f = o[c];
t && void 0 !== r[f] || (r[f] = u[f])
}
return r
}
};
m.extend = W(m.allKeys), m.extendOwn = m.assign = W(m.keys), m.findKey = function(n, t, r) {
t = j(t, r);
for (var e, i = m.keys(n), u = 0, o = i.length; u < o; u++)
if (t(n[e = i[u]], e, n)) return e
};
var H, K, C = function(n, t, r) {
return t in r
};
m.pick = x((function(n, t) {
var r = {},
e = t[0];
if (null == n) return r;
m.isFunction(e) ? (t.length > 1 && (e = w(e, t[1])), t = m.allKeys(n)) : (e = C, t = P(t, !1, !1), n = Object(n));
for (var i = 0, u = t.length; i < u; i++) {
var o = t[i],
a = n[o];
e(a, o, n) && (r[o] = a)
}
return r
})), m.omit = x((function(n, t) {
var r, e = t[0];
return m.isFunction(e) ? (e = m.negate(e), t.length > 1 && (r = t[1])) : (t = m.map(P(t, !1, !1), String), e = function(n, r) {
return !m.contains(t, r)
}), m.pick(n, e, r)
})), m.defaults = W(m.allKeys, !0), m.create = function(n, t) {
var r = O(n);
return t && m.extendOwn(r, t), r
}, m.clone = function(n) {
return m.isObject(n) ? m.isArray(n) ? n.slice() : m.extend({}, n) : n
}, m.tap = function(n, t) {
return t(n), n
}, m.isMatch = function(n, t) {
var r = m.keys(t),
e = r.length;
if (null == n) return !e;
for (var i = Object(n), u = 0; u < e; u++) {
var o = r[u];
if (t[o] !== i[o] || !(o in i)) return !1
}
return !0
}, H = function(n, t, r, e) {
if (n === t) return 0 !== n || 1 / n == 1 / t;
if (null == n || null == t) return !1;
if (n != n) return t != t;
var u = i(n);
return ("function" === u || "object" === u || "object" == i(t)) && K(n, t, r, e)
}, K = function(n, t, r, e) {
n instanceof m && (n = n._wrapped), t instanceof m && (t = t._wrapped);
var u = p.call(n);
if (u !== p.call(t)) return !1;
switch (u) {
case "[object RegExp]":
case "[object String]":
return "" + n == "" + t;
case "[object Number]":
return +n != +n ? +t != +t : 0 == +n ? 1 / +n == 1 / t : +n == +t;
case "[object Date]":
case "[object Boolean]":
return +n == +t;
case "[object Symbol]":
return f.valueOf.call(n) === f.valueOf.call(t)
}
var o = "[object Array]" === u;
if (!o) {
if ("object" != i(n) || "object" != i(t)) return !1;
var a = n.constructor,
c = t.constructor;
if (a !== c && !(m.isFunction(a) && a instanceof a && m.isFunction(c) && c instanceof c) && "constructor" in n && "constructor" in t) return !1
}
e = e || [];
for (var l = (r = r || []).length; l--;)
if (r[l] === n) return e[l] === t;
if (r.push(n), e.push(t), o) {
if ((l = n.length) !== t.length) return !1;
for (; l--;)
if (!H(n[l], t[l], r, e)) return !1
} else {
var s, h = m.keys(n);
if (l = h.length, m.keys(t).length !== l) return !1;
for (; l--;)
if (s = h[l], !_(t, s) || !H(n[s], t[s], r, e)) return !1
}
return r.pop(), e.pop(), !0
}, m.isEqual = function(n, t) {
return H(n, t)
}, m.isEmpty = function(n) {
return null == n || (F(n) && (m.isArray(n) || m.isString(n) || m.isArguments(n)) ? 0 === n.length : 0 === m.keys(n).length)
}, m.isElement = function(n) {
return !(!n || 1 !== n.nodeType)
}, m.isArray = d || function(n) {
return "[object Array]" === p.call(n)
}, m.isObject = function(n) {
var t = i(n);
return "function" === t || "object" === t && !!n
}, m.each(["Arguments", "Function", "String", "Number", "Date", "RegExp", "Error", "Symbol", "Map", "WeakMap", "Set", "WeakSet"], (function(n) {
m["is" + n] = function(t) {
return p.call(t) === "[object " + n + "]"
}
})), m.isArguments(arguments) || (m.isArguments = function(n) {
return _(n, "callee")
});
var L = u.document && u.document.childNodes;
"object" != ("undefined" == typeof Int8Array ? "undefined" : i(Int8Array)) && "function" != typeof L && (m.isFunction = function(n) {
return "function" == typeof n || !1
}), m.isFinite = function(n) {
return !m.isSymbol(n) && isFinite(n) && !isNaN(parseFloat(n))
}, m.isNaN = function(n) {
return m.isNumber(n) && isNaN(n)
}, m.isBoolean = function(n) {
return !0 === n || !1 === n || "[object Boolean]" === p.call(n)
}, m.isNull = function(n) {
return null === n
}, m.isUndefined = function(n) {
return void 0 === n
}, m.has = function(n, t) {
if (!m.isArray(t)) return _(n, t);
for (var r = t.length, e = 0; e < r; e++) {
var i = t[e];
if (null == n || !h.call(n, i)) return !1;
n = n[i]
}
return !!r
}, m.noConflict = function() {
return u._ = o, this
}, m.identity = function(n) {
return n
}, m.constant = function(n) {
return function() {
return n
}
}, m.noop = function() {}, m.property = function(n) {
return m.isArray(n) ? function(t) {
return S(t, n)
} : A(n)
}, m.propertyOf = function(n) {
return null == n ? function() {} : function(t) {
return m.isArray(t) ? S(n, t) : n[t]
}
}, m.matcher = m.matches = function(n) {
return n = m.extendOwn({}, n),
function(t) {
return m.isMatch(t, n)
}
}, m.times = function(n, t, r) {
var e = Array(Math.max(0, n));
t = w(t, r, 1);
for (var i = 0; i < n; i++) e[i] = t(i);
return e
}, m.random = function(n, t) {
return null == t && (t = n, n = 0), n + Math.floor(Math.random() * (t - n + 1))
}, m.now = Date.now || function() {
return (new Date).getTime()
};
var U = {
"&": "&amp;",
"<": "&lt;",
">": "&gt;",
'"': "&quot;",
"'": "&#x27;",
"`": "&#x60;"
},
$ = m.invert(U),
J = function(n) {
var t = function(t) {
return n[t]
},
r = "(?:" + m.keys(n).join("|") + ")",
e = RegExp(r),
i = RegExp(r, "g");
return function(n) {
return n = null == n ? "" : "" + n, e.test(n) ? n.replace(i, t) : n
}
};
m.escape = J(U), m.unescape = J($), m.result = function(n, t, r) {
m.isArray(t) || (t = [t]);
var e = t.length;
if (!e) return m.isFunction(r) ? r.call(n) : r;
for (var i = 0; i < e; i++) {
var u = null == n ? void 0 : n[t[i]];
void 0 === u && (u = r, i = e), n = m.isFunction(u) ? u.call(n) : u
}
return n
};
var V = 0;
m.uniqueId = function(n) {
var t = ++V + "";
return n ? n + t : t
}, m.templateSettings = {
evaluate: /<%([\s\S]+?)%>/g,
interpolate: /<%=([\s\S]+?)%>/g,
escape: /<%-([\s\S]+?)%>/g
};
var G = /(.)^/,
Q = {
"'": "'",
"\\": "\\",
"\r": "r",
"\n": "n",
"\u2028": "u2028",
"\u2029": "u2029"
},
X = /\\|'|\r|\n|\u2028|\u2029/g,
Y = function(n) {
return "\\" + Q[n]
};
m.template = function(n, t, r) {
!t && r && (t = r), t = m.defaults({}, t, m.templateSettings);
var e, i = RegExp([(t.escape || G).source, (t.interpolate || G).source, (t.evaluate || G).source].join("|") + "|$", "g"),
u = 0,
o = "__p+='";
n.replace(i, (function(t, r, e, i, a) {
return o += n.slice(u, a).replace(X, Y), u = a + t.length, r ? o += "'+\n((__t=(" + r + "))==null?'':_.escape(__t))+\n'" : e ? o += "'+\n((__t=(" + e + "))==null?'':__t)+\n'" : i && (o += "';\n" + i + "\n__p+='"), t
})), o += "';\n", t.variable || (o = "with(obj||{}){\n" + o + "}\n"), o = "var __t,__p='',__j=Array.prototype.join,print=function(){__p+=__j.call(arguments,'');};\n" + o + "return __p;\n";
try {
e = new Function(t.variable || "obj", "_", o)
} catch (n) {
throw n.source = o, n
}
var a = function(n) {
return e.call(this, n, m)
},
c = t.variable || "obj";
return a.source = "function(" + c + "){\n" + o + "}", a
}, m.chain = function(n) {
var t = m(n);
return t._chain = !0, t
};
var Z = function(n, t) {
return n._chain ? m(t).chain() : t
};
m.mixin = function(n) {
return m.each(m.functions(n), (function(t) {
var r = m[t] = n[t];
m.prototype[t] = function() {
var n = [this._wrapped];
return l.apply(n, arguments), Z(this, r.apply(m, n))
}
})), m
}, m.mixin(m), m.each(["pop", "push", "reverse", "shift", "sort", "splice", "unshift"], (function(n) {
var t = a[n];
m.prototype[n] = function() {
var r = this._wrapped;
return t.apply(r, arguments), "shift" !== n && "splice" !== n || 0 !== r.length || delete r[0], Z(this, r)
}
})), m.each(["concat", "join", "slice"], (function(n) {
var t = a[n];
m.prototype[n] = function() {
return Z(this, t.apply(this._wrapped, arguments))
}
})), m.prototype.value = function() {
return this._wrapped
}, m.prototype.valueOf = m.prototype.toJSON = m.prototype.value, m.prototype.toString = function() {
return String(this._wrapped)
}, void 0 === (e = function() {
return m
}.apply(t, [])) || (n.exports = e)
}()
}
},
t = {};
function r(e) {
var i = t[e];
if (void 0 !== i) return i.exports;
var u = t[e] = {
id: e,
loaded: !1,
exports: {}
};
return n[e](u, u.exports, r), u.loaded = !0, u.exports
}
r.g = function() {
if ("object" == typeof globalThis) return globalThis;
try {
return this || new Function("return this")()
} catch (n) {
if ("object" == typeof window) return window
}
}(), r.nmd = n => (n.paths = [], n.children || (n.children = []), n), (() => {
function n(n) {
return function(n) {
if (Array.isArray(n)) return t(n)
}(n) || function(n) {
if ("undefined" != typeof Symbol && null != n[Symbol.iterator] || null != n["@@iterator"]) return Array.from(n)
}(n) || function(n, r) {
if (!n) return;
if ("string" == typeof n) return t(n, r);
var e = Object.prototype.toString.call(n).slice(8, -1);
"Object" === e && n.constructor && (e = n.constructor.name);
if ("Map" === e || "Set" === e) return Array.from(n);
if ("Arguments" === e || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e)) return t(n, r)
}(n) || function() {
throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
}()
}
function t(n, t) {
(null == t || t > n.length) && (t = n.length);
for (var r = 0, e = new Array(t); r < t; r++) e[r] = n[r];
return e
}
function e(n, t) {
var r = Object.keys(n);
if (Object.getOwnPropertySymbols) {
var e = Object.getOwnPropertySymbols(n);
t && (e = e.filter((function(t) {
return Object.getOwnPropertyDescriptor(n, t).enumerable
}))), r.push.apply(r, e)
}
return r
}
function i(n) {
for (var t = 1; t < arguments.length; t++) {
var r = null != arguments[t] ? arguments[t] : {};
t % 2 ? e(Object(r), !0).forEach((function(t) {
u(n, t, r[t])
})) : Object.getOwnPropertyDescriptors ? Object.defineProperties(n, Object.getOwnPropertyDescriptors(r)) : e(Object(r)).forEach((function(t) {
Object.defineProperty(n, t, Object.getOwnPropertyDescriptor(r, t))
}))
}
return n
}
function u(n, t, r) {
return t in n ? Object.defineProperty(n, t, {
value: r,
enumerable: !0,
configurable: !0,
writable: !0
}) : n[t] = r, n
}
var o = r(576),
a = {
color: "orange",
radius: [.6, 5],
speed: [1, 3],
wind: [-1.5, 4]
},
c = function(t) {
var r = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : null,
e = arguments.length > 2 ? arguments[2] : void 0,
u = i(i({}, a), e),
c = u.radius,
f = u.speed,
l = u.wind,
s = u.color,
p = {
color: s,
x: o.random(0, t.offsetWidth),
y: o.random(-t.offsetHeight, t.offsetHeight),
radius: o.random.apply(o, n(c)),
speed: o.random.apply(o, n(f)),
wind: o.random.apply(o, n(l)),
isResized: !1
},
h = t.getContext("2d"),
d = function() {
p.x = o.random(0, t.offsetWidth), p.y = o.random(-t.offsetHeight, 0)
},
v = function() {
return p.isResized = !0
},
y = function() {
h.beginPath(), h.arc(p.x, p.y, p.radius, 0, 2 * Math.PI), h.fillStyle = p.color, h.fill(), h.closePath()
},
g = r ? function() {
return r(h, p)
} : y,
m = function() {
p.y += p.speed, p.x += p.wind
},
b = function() {
p.y < t.offsetHeight || (p.isResized ? (d(), p.isResized = !1) : (p.y = 0, p.x = o.random(0, t.offsetWidth)))
},
w = function() {
m(), b()
};
return {
update: w,
resized: v,
draw: g
}
},
f = (document.getElementById("background_div"), document.querySelector("body"), document.getElementById("bg-canvas")),
l = window.requestAnimationFrame || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame || window.msRequestAnimationFrame;
! function(n, t, r) {
var e = n.getContext("2d"),
i = [],
u = function(t) {
return i.push(t(n))
},
a = function() {
e.canvas.width = n.offsetWidth, e.canvas.height = n.offsetHeight, o.forEach(i, (function(n) {
return n.resized()
}))
},
f = function t() {
e.clearRect(0, 0, n.offsetWidth, n.offsetHeight), o.forEach(i, (function(n) {
return n.draw()
})), o.forEach(i, (function(n) {
return n.update()
})), l(t)
};
o.times(t, (function() {
return u((function(n) {
return c(n, null, r)
}))
})), window.addEventListener("resize", a), f(), a()
}(f, 500, {
color: "white"
})
})()
})();

View File

@ -1,145 +0,0 @@
/*
__ __
__ __ __ /_//_/ __ __
| | / /__ ____/ /__ ___ __ _____ / _/_ _____ ___ ____ / / ___ ___ ____ _
| |/ / -_) __/ '_// _ \/ // / _ \/ _/ // / _ \/ _ `(_-</ _ \/ _ `/ // / ' \
|___/\__/_/ /_/\_\/_//_/\_,_/ .__/_/ \_,_/_//_/\_, /___/_.__/\_,_/\_,_/_/_/_/
/_/ /___/
*/
html,
body {
margin: 0;
height: 100%;
font-family: monospace;
}
html {
background-image: url('../images/background.webp');
background-color: black;
background-size: cover;
background-attachment: fixed;
}
body {
padding-top: 35px;
padding-bottom: 35px;
height: fit-content;
min-height: 100%;
}
:root {
--accentcolor: #fff;
--delay: .3s;
}
.description,
.source {
color: white;
text-align: center;
margin: 27px auto;
margin-top: 10px;
width: 90%;
max-width: 500px;
}
.separator {
font-size: 1.1rem;
font-weight: unset;
}
.separator, .source {
color: white;
text-align: center;
margin: 25px auto;
margin-top: 20px;
width: 90%;
max-width: 500px;
}
.source {
font-size: small;
margin-top: 50px;
}
.picture, .picture img {
position: relative;
width: 130px;
height: 130px;
display: block;
margin: 35px auto 20px;
border-radius: 50%;
}
.user {
color: var(--accentcolor);
font-size: x-large;
font-weight: bold;
line-height: 1.25;
display: block;
width: 100%;
text-align: center;
text-decoration: none;
}
.links, .link_list {
max-width: 675px;
width: auto;
display: block;
margin: 27px auto;
padding-inline-start: 0;
}
.link_item {
list-style: none;
}
.link {
position: relative;
background-color: rgba(0, 0, 0, 0.8);
color: var(--accentcolor);
border: solid var(--accentcolor) 2px;
border-radius: 5px;
font-size: 1rem;
text-align: center;
display: block;
margin-left: 10px;
margin-right: 10px;
margin-bottom: 10px;
padding: 10px;
text-decoration: none;
-webkit-tap-highlight-color: transparent;
}
footer a {
color: var(--accentcolor);
font-weight: bold;
text-decoration: none;
}
@media (hover: hover) {
.link:hover {
background-color: var(--accentcolor);
color: #000;
/* Fallback for older browsers */
color: rgba(0, 0, 0, 0.5);
}
}
.link:active {
background-color: var(--accentcolor);
color: #000;
/* Fallback for older browsers */
color: rgba(0, 0, 0, 0.5);
}
.flag {
width: 1em;
border-radius: 0.15em;
}
svg {
height: 1.1em;
width: auto;
}

View File

@ -1,164 +1,177 @@
<!-- <!DOCTYPE html>
__ __ <html lang="en">
__ __ __ /_//_/ __ __ <head>
| | / /__ ____/ /__ ___ __ _____ / _/_ _____ ___ ____ / / ___ ___ ____ _ <meta charset="utf-8">
| |/ / -_) __/ '_// _ \/ // / _ \/ _/ // / _ \/ _ `(_-</ _ \/ _ `/ // / ' \ <link href="assets/css/style.css" rel="stylesheet">
|___/\__/_/ /_/\_\/_//_/\_,_/ .__/_/ \_,_/_//_/\_, /___/_.__/\_,_/\_,_/_/_/_/ <link href="assets/css/sites.css" rel="stylesheet">
/_/ /___/ <meta name='viewport' content='width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0'>
<link rel="shortcut icon" href="assets/images/favicon.png" type="image/webp">
--> <link rel="apple-touch-icon" sizes="180x180" href="images/favicon.png">
<!DOCTYPE html> <link rel="icon" href="assets/images/favicon.png" type="image/webp">
<html lang="en-US"> <title>dalfuss.link</title>
<head> <!--TEST--> <link href="https://fonts.googleapis.com/css2?family=Noto+Sans:ital,wght@0,100..900;1,100..900&display=swap" rel="stylesheet">
<meta charset="UTF-8"> <script src="https://kit.fontawesome.com/14a35c233c.js" crossorigin="anonymous"></script>
<meta name="viewport" content="width=device-width, initial-scale=1.0"> </head>
<meta name="description" content="YOUR DESCRIPTION HERE"> <body>
<title>Dalfuss - Verknüpfungsbaum 🌳🔗 </title> <!-- Snowfall Background Animation -->
<link rel="icon" href="./images/profile.jpg" type="image/x-icon"> <section class="animated-background">
<link rel="stylesheet" href="./css/style.css"> <div id="stars1"></div>
<!-- <div id="stars2"></div>
With sites.css you can give the button a different color <div id="stars3"></div>
--> </section>
<link rel="stylesheet" href="./css/sites.css"> <!-- End of Snowfall Background Animation -->
<!--
This script is designed to optimize the display of meta tags when sharing content on social media. By using this script, you can ensure that your content looks its best when it's shared on platforms like Mastodon, Diaspora, and Friendica (and the other pages from corpos!). The script is easy to use and can be customized to fit the specific needs of your website or social media campaign. <div class="min-h-full flex-h-center" id="background_div">
--> <input type="hidden" value="https://bio.link" id="app-url">
<meta property="og:title" content="Sam Dalfuss - Verknüpfungsbaum 🌳🔗 "> <input type="hidden" value="null" id="is-featured">
<meta property="og:type" content="website"> <canvas id="bg-canvas" class="background-overlay"></canvas>
<meta property="og:image" content="./images/socialmediacard.webp"> </input>
<meta property="og:url" content="https://dalfuss.link"> </input>
<meta name="twitter:card" content="summary_large_image">
<meta property="og:description" content="send nudes"> <div class="mt-48 page-full-wrap relative ">
<meta property="og:site_name" content="Dalfuss - Verknüpfungsbaum 🌳🔗"> <input type="hidden" value="creator-page" id="page-type">
<!-- <img class="display-image m-auto" data-src="assets/images/logo.png" src="assets/images/logo.png" alt="[Your photo alt]"/>
This script is designed to include the ForkAwesome icon font in your Verknüpfungsbaum. ForkAwesome is a popular icon font that includes hundreds of customizable icons for a variety of purposes. <h2 class="page-title page-text-color page-text-font mt-16 text-center">Sam Dalfuss</h2>
<p class="description">
For Icon list see: https://forkaweso.me/Fork-Awesome/icons/ <script>
--> var dob = new Date("08/21/1998");
<!-- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/fork-awesome@1.2.0/css/fork-awesome.min.css" integrity="sha256-XoaMnoYC5TH6/+ihMEnospgm0J1PM/nioxbOUdnM8HY=" crossorigin="anonymous"> --> //calculate month difference from current date in time
<script src="https://kit.fontawesome.com/14a35c233c.js" crossorigin="anonymous"></script> var month_diff = Date.now() - dob.getTime();
</head>
<body> //convert the calculated difference in date format
<header aria-label="Header with profile image and description"> var age_dt = new Date(month_diff);
<div class="picture" role="img" aria-label="Profile picture">
<img src="./images/profilepicture.webp" alt="YOUR ALT TEXT"> //extract year from date
</div> var year = age_dt.getUTCFullYear();
<h1 class="user" tabindex="0" title="USERNAME">
Sam Dalfuss //now calculate the age of the user
</h1> var age = Math.abs(year - 1970);
<p class="description">
<script> //display the calculated age
var dob = new Date("08/21/1998"); document.write(age);
//calculate month difference from current date in time </script>
var month_diff = Date.now() - dob.getTime(); | they/them/dey/er | Heidelberg | Streamer | Gamer | "Musician" <br>
<img class="flag" src="./assets/images/pansexual.svg" /> <img class="flag" src="./assets/images/enby.svg" /> <img class="flag" src="./assets/images/trans.svg" /> <img class="flag" src="./assets/images/prog.svg" />
//convert the calculated difference in date format </p>
var age_dt = new Date(month_diff); <div class="page-item-wrap relative dalfuss-net">
<div class="page-item flex-both-center absolute dalfuss-net"></div>
//extract year from date <a target="_blank" class="page-item-each py-10 flex-both-center dalfuss-net" href="https://dalfuss.net" data-id="261652" data-type="page_item">
var year = age_dt.getUTCFullYear(); <i class="fa-brands fa-mastodon link-each-image" aria-hidden="true"></i>
<span class="item-title text-center">dalfuss.net</span>
//now calculate the age of the user </a>
var age = Math.abs(year - 1970); </div>
<h2 class="separator" title="Social Media / About Me">
//display the calculated age Social Media / About Me
document.write(age); </h2>
</script> <div class="mt-24">
| they/them/dey/er | Heidelberg | Streamer | Gamer | "Musician" <br> <div class="page-item-wrap relative mastodon">
<img class="flag" src="./images/pansexual.svg" /> <img class="flag" src="./images/enby.svg" /> <img class="flag" src="./images/trans.svg" /> <img class="flag" src="./images/prog.svg" /> <div class="page-item flex-both-center absolute mastodon"></div>
</p> <a target="_blank" class="page-item-each py-10 flex-both-center mastodon" href="https://dalfuss24.de/@sam" data-id="261652" data-type="page_item">
<div class="links link_item"> <i class="fa-brands fa-mastodon link-each-image" aria-hidden="true"></i>
<a class="link" href="https://dalfuss.net" target="_blank"> <span class="item-title text-center">Mastodon/Fediverse</span>
Dalfuss.net </a>
</a> </div>
</div> <div class="page-item-wrap relative">
</header> <div class="page-item flex-both-center absolute"></div>
<main id="main" aria-label="Main content with links"> <a target="_blank" class="page-item-each py-10 flex-both-center twitch" href="https://dalfuss.live" data-id="261685" data-type="page_item">
<div class="link_container"> <i class="fa fa-twitch link-each-image" aria-hidden="true"></i>
<h2 class="separator" title="Social Media / About Me"> <span class="item-title text-center">Twitch</span>
Social Media / About Me </a>
</h2> </div>
<ul class="link_list" aria-label="Social Media Link List"> <div class="page-item-wrap relative">
<li class="link_item"><a class="link mastodon" rel="me" href="https://dalfuss24.de/@sam" target="_blank"><i class="fa-brands fa-mastodon" aria-hidden="true"></i> <div class="page-item flex-both-center absolute"></div>
Mastodon / Fediverse <a target="_blank" class="page-item-each py-10 flex-both-center instagram" href="https://dalfuss.link/insta" data-id="261685" data-type="page_item">
</a></li> <i class="fa fa-instagram link-each-image" aria-hidden="true"></i>
<span class="item-title text-center">Instagram</span>
<li class="link_item"><a class="link twitch" href="https://dalfuss.live" target="_blank"><i class="fa fa-twitch" aria-hidden="true"></i> </a>
Twitch </div>
</a></li> <div class="page-item-wrap relative">
<div class="page-item flex-both-center absolute"></div>
<li class="link_item"><a class="link instagram" href="https://dalfuss.link/insta" target="_blank"><i class="fa fa-instagram" aria-hidden="true"></i> <a target="_blank" class="page-item-each py-10 flex-both-center discord" href="https://dalfuss.link/discord" data-id="261685" data-type="page_item">
Instagram <i class="fa-brands fa-discord link-each-image" aria-hidden="true"></i>
</a></li> <span class="item-title text-center">Discord Server</span>
</a>
<li class="link_item"><a class="link discord" href="https://dalfuss.link/discord" target="_blank"><i class="fa-brands fa-discord" aria-hidden="true"></i> </div>
Discord Server <div class="page-item-wrap relative">
</a></li> <div class="page-item flex-both-center absolute"></div>
<a target="_blank" class="page-item-each py-10 flex-both-center youtube" href="https://dalfuss.link/youtube" data-id="261685" data-type="page_item">
<li class="link_item"><a class="link youtube" href="https://dalfuss.link/youtube" target="_blank"><i class="fa fa-youtube" aria-hidden="true"></i> <i class="fa fa-youtube link-each-image" aria-hidden="true"></i>
YouTube <span class=" item-title text-center">YouTube</span>
</a></li> </a>
</div>
<li class="link_item"><a class="link tiktok" href="https://dalfuss.link/titok" target="_blank"><i class="fa-brands fa-tiktok" aria-hidden="true"></i> <div class="page-item-wrap relative">
TikTok <div class="page-item flex-both-center absolute"></div>
</a></li> <a target="_blank" class="page-item-each py-10 flex-both-center tiktok" href="https://dalfuss.link/tiktok" data-id="261685" data-type="page_item">
<i class="fa-brands fa-tiktok link-each-image" aria-hidden="true"></i>
<li class="link_item"><a class="link anilist" href="https://dalfuss.link/anilist" target="_blank"><svg fill="currentColor" width="800px" height="800px" viewBox="0 0 24 24" role="img" xmlns="http://www.w3.org/2000/svg"><path d="M6.361 2.943 0 21.056h4.942l1.077-3.133H11.4l1.052 3.133H22.9c.71 0 1.1-.392 1.1-1.101V17.53c0-.71-.39-1.101-1.1-1.101h-6.483V4.045c0-.71-.392-1.102-1.101-1.102h-2.422c-.71 0-1.101.392-1.101 1.102v1.064l-.758-2.166zm2.324 5.948 1.688 5.018H7.144z"/></svg> <span class="item-title text-center">TikTok</span>
Anilist </a>
</a></li> </div>
<div class="page-item-wrap relative">
<li class="link_item"><a class="link pronouns" href="https://pronouns.page/@dalfuss" target="_blank"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 650 650"><path d="M396.52 174.35c1.35-2.4.21-4.35-2.54-4.35l-48.2.03c-2.75 0-6.15 1.94-7.54 4.31l-118.1 199.77c-16.48 27.15-39.48 33.15-61.58 30.47-37.94-4.6-58.34-32.45-58.34-69.54 0-37.25 30.31-67.56 67.56-67.56h75c2.75 0 6.12-1.95 7.48-4.34l27.03-47.2c1.37-2.39.23-4.34-2.52-4.34h-107c-68.06 0-123.44 55.37-123.44 123.44 0 32.89 12.85 68.36 36.22 91.54 23.03 22.84 53.8 31.21 86.64 31.89 18.54.21 69.46-.21 93.33-42.68 26.73-47.57 136-241.44 136-241.44zM571.94 244.44c-23.03-22.84-53.8-31.21-86.64-31.89-18.54-.21-69.46.21-93.33 42.68-26.72 47.55-136 241.42-136 241.42-1.35 2.4-.21 4.35 2.54 4.35l48.2-.03c2.75 0 6.15-1.94 7.54-4.31l118.1-199.77c16.48-27.15 39.48-33.15 61.58-30.47 37.94 4.6 58.34 32.45 58.34 69.54 0 37.25-30.31 67.56-67.56 67.56h-75c-2.75 0-6.12 1.95-7.48 4.34l-27.03 47.2c-1.37 2.39-.23 4.34 2.52 4.34h107c68.06 0 123.44-55.37 123.44-123.44 0-32.87-12.85-68.34-36.22-91.52z" fill="#F8F9FA"/></svg> <div class="page-item flex-both-center absolute"></div>
Pronouns.page <a target="_blank" class="page-item-each py-10 flex-both-center anilist" href="https://dalfuss.link/anilist" data-id="261685" data-type="page_item">
</a></li> <svg class="link-each-image" fill="currentColor" width="800px" height="800px" viewBox="0 0 24 24" role="img" xmlns="http://www.w3.org/2000/svg"><path d="M6.361 2.943 0 21.056h4.942l1.077-3.133H11.4l1.052 3.133H22.9c.71 0 1.1-.392 1.1-1.101V17.53c0-.71-.39-1.101-1.1-1.101h-6.483V4.045c0-.71-.392-1.102-1.101-1.102h-2.422c-.71 0-1.101.392-1.101 1.102v1.064l-.758-2.166zm2.324 5.948 1.688 5.018H7.144z"/></svg>
<span class="item-title text-center">Anilist</span>
</ul> </a>
</div> </div>
<div class="link_container"> <div class="page-item-wrap relative">
<h2 class="separator" title="Projects"> <div class="page-item flex-both-center absolute"></div>
Projects <a target="_blank" class="page-item-each py-10 flex-both-center pronouns" href="https://dalfuss.link/anilist" data-id="261685" data-type="page_item">
</h2> <svg class="link-each-image" xmlns="http://www.w3.org/2000/svg" fill="currentColor" viewBox="0 0 650 650"><path d="M396.52 174.35c1.35-2.4.21-4.35-2.54-4.35l-48.2.03c-2.75 0-6.15 1.94-7.54 4.31l-118.1 199.77c-16.48 27.15-39.48 33.15-61.58 30.47-37.94-4.6-58.34-32.45-58.34-69.54 0-37.25 30.31-67.56 67.56-67.56h75c2.75 0 6.12-1.95 7.48-4.34l27.03-47.2c1.37-2.39.23-4.34-2.52-4.34h-107c-68.06 0-123.44 55.37-123.44 123.44 0 32.89 12.85 68.36 36.22 91.54 23.03 22.84 53.8 31.21 86.64 31.89 18.54.21 69.46-.21 93.33-42.68 26.73-47.57 136-241.44 136-241.44zM571.94 244.44c-23.03-22.84-53.8-31.21-86.64-31.89-18.54-.21-69.46.21-93.33 42.68-26.72 47.55-136 241.42-136 241.42-1.35 2.4-.21 4.35 2.54 4.35l48.2-.03c2.75 0 6.15-1.94 7.54-4.31l118.1-199.77c16.48-27.15 39.48-33.15 61.58-30.47 37.94 4.6 58.34 32.45 58.34 69.54 0 37.25-30.31 67.56-67.56 67.56h-75c-2.75 0-6.12 1.95-7.48 4.34l-27.03 47.2c-1.37 2.39-.23 4.34 2.52 4.34h107c68.06 0 123.44-55.37 123.44-123.44 0-32.87-12.85-68.34-36.22-91.52z"/></svg>
<ul class="link_list" aria-label="Project Link List"> <span class="item-title text-center">Pronouns.page</span>
</a>
<li class="link_item"><a class="link git" href="https://git.cyberwa.re/dalfuss" target="_blank"><i class="fa-brands fa-git-alt" aria-hidden="true"></i> </div>
Git <h2 class="separator" title="Projects">
</a></li> Projects
</h2>
<li class="link_item"><a class="link elftwinks" href="https://elftwinks.gay" target="_blank"><i class="fa fa-link" aria-hidden="true"></i> <div class="page-item-wrap relative">
ElfTwinks.Gay <div class="page-item flex-both-center absolute"></div>
</a></li> <a target="_blank" class="page-item-each py-10 flex-both-center git" href="https://git.dalfuss.cloud/dalfuss" data-id="261685" data-type="page_item">
<i class="fa-brands fa-git-alt link-each-image" aria-hidden="true"></i>
<li class="link_item"><a class="link colours" href="https://colours.dalfuss.link" target="_blank"><i class="fa fa-link" aria-hidden="true"></i> <span class="item-title text-center">Git</span>
colours.dalfuss.link </a>
</a></li> </div>
<div class="page-item-wrap relative">
<li class="link_item"><a class="link oc" href="https://oc.dalfuss.link" target="_blank"><i class="fa fa-link" aria-hidden="true"></i> <div class="page-item flex-both-center absolute"></div>
OC Site <a target="_blank" class="page-item-each py-10 flex-both-center elftwinks" href="https://elftwinks.gay" data-id="261685" data-type="page_item">
</a></li> <i class="fa fa-link link-each-image" aria-hidden="true"></i>
<span class="item-title text-center">elftwinks.gay</span>
<li class="link_item"><a class="link Dave" href="https://cyber.ms/@dave" target="_blank"><i class="fa fa-link" aria-hidden="true"></i> </a>
Dave </div>
</a></li> <div class="page-item-wrap relative">
<div class="page-item flex-both-center absolute"></div>
</ul> <a target="_blank" class="page-item-each py-10 flex-both-center colours" href="https://colours.dalfuss.link" data-id="261685" data-type="page_item">
</div> <i class="fa fa-link link-each-image" aria-hidden="true"></i>
<span class="item-title text-center">colours.dalfuss.link</span>
<div class="link_container"> </a>
<h2 class="separator" title="Contact"> </div>
Contact <div class="page-item-wrap relative">
</h2> <div class="page-item flex-both-center absolute"></div>
<ul class="link_list" aria-label="Contact Link List"> <a target="_blank" class="page-item-each py-10 flex-both-center oc" href="https://oc.dalfuss.link" data-id="261685" data-type="page_item">
<i class="fa fa-link link-each-image" aria-hidden="true"></i>
<li class="link_item"><a class="link matrix-org" href="https://matrix.to/#/@dalfuss:catgirl.cloud" target="_blank"> <span class="item-title text-center">OC Site</span>
Matrix </a>
</a></li> </div>
<h2 class="separator" title="Projects">
</ul> Contact
</div> </h2>
</main> <div class="page-item-wrap relative">
<footer class="source" aria-label="Footer information"> <div class="page-item flex-both-center absolute"></div>
<p>&copy; Sam Dalfuss <a target="_blank" class="page-item-each py-10 flex-both-center matrix-org" href="https://matrix.to/#/@dalfuss:catgirl.cloud" data-id="261685" data-type="page_item">
<script>document.write(new Date().getFullYear())</script> <span class="item-title text-center">Matrix</span>
- Created with <a href="https://github.com/revengeday/verknuepfungsbaum" target="_blank">Verknüpfungsbaum 🔗🌳</a></p> </a>
</footer> </div>
</body> </div>
</html> </div>
</div>
<footer class="source" aria-label="Footer information">
<p>&copy; Sam Dalfuss
<script>document.write(new Date().getFullYear())</script>
</p>
</footer>
</body>
<!--
A different snowfall
<script src="assets/js/snowfall.js"></script>
-->
</html>