Links Repo
This commit is contained in:
commit
709d584247
5
config.yaml
Normal file
5
config.yaml
Normal file
@ -0,0 +1,5 @@
|
||||
output_dir: public/
|
||||
links:
|
||||
source: data/links/links.yaml
|
||||
template: templates/links/links.html
|
||||
static_dir: static/
|
114
data/links/links.yaml
Normal file
114
data/links/links.yaml
Normal file
@ -0,0 +1,114 @@
|
||||
config:
|
||||
title: Where to find Tyrel Souza
|
||||
name: Tyrel Souza
|
||||
description: Software Engineer, gamer, tech-enthusiast, ham, pilot, father
|
||||
avatar: loupe.jpg
|
||||
background: moroccan-flower-dark.png
|
||||
background_opacity: 0.7
|
||||
|
||||
links:
|
||||
- title: Personal
|
||||
links:
|
||||
- text: Pronouns and Pronounciation
|
||||
icon: fa fa-person
|
||||
href: https://name.pn/tyrel-souza
|
||||
|
||||
- title: Sites
|
||||
links:
|
||||
- text: Blog
|
||||
icon: fa-solid fa-blog
|
||||
href: https://tyrel.dev/blog
|
||||
|
||||
- title: Code
|
||||
links:
|
||||
- text: Gitea
|
||||
icon: fa fa-gitea
|
||||
href: https://gitea.tyrel.dev/tyrel
|
||||
|
||||
- title: Chat
|
||||
links:
|
||||
- text: Matrix
|
||||
icon: fa fa-matrix-org
|
||||
href: https://matrix.to/#/@tyrelsouza:matrix.org
|
||||
- text: Discord
|
||||
icon: fa fa-discord
|
||||
href: https://discordapp.com/users/73990019756339200
|
||||
copy: "@tyrel"
|
||||
|
||||
|
||||
- title: Music
|
||||
links:
|
||||
- text: LastFM
|
||||
icon: fa fa-lastfm
|
||||
href: https://last.fm/user/tacidsky
|
||||
- text: Bandcamp
|
||||
icon: fa fa-bandcamp
|
||||
href: https://bandcamp.com/tyrelsouza
|
||||
|
||||
- title: Photography
|
||||
links:
|
||||
- text: Pixelfed
|
||||
icon: fa fa-pixelfed
|
||||
href: https://pixelfed.social/tyrel
|
||||
- text: Flickr
|
||||
icon: fa-brands fa-flickr
|
||||
href: https://www.flickr.com/photos/tyrelsouza
|
||||
- text: Instagram
|
||||
icon: fa-brands fa-instagram
|
||||
href: https://www.instagram.com/tyrelsouza/
|
||||
|
||||
- title: Gaming
|
||||
links:
|
||||
- text: Board Game Geek
|
||||
icon: fa-solid fa-dice
|
||||
href: https://boardgamegeek.com/user/tyrelsouza
|
||||
- text: Steam
|
||||
icon: fa fa-steam-square
|
||||
href: https://steamcommunity.com/id/tyrels
|
||||
- text: Xbox Gamertag
|
||||
icon: fa-brands fa-xbox
|
||||
copy: tacidsky
|
||||
- text: Switch Friendcode
|
||||
icon: fa-solid fa-gamepad
|
||||
copy: "SW-1711-7753-4091"
|
||||
|
||||
|
||||
- title: Socials
|
||||
links:
|
||||
- text: Bluesky
|
||||
icon: fa-solid fa-cloud
|
||||
href: https://bsky.app/profile/tyrel.dev
|
||||
- text: Mastodon
|
||||
rels: me
|
||||
icon: fa fa-mastodon
|
||||
href: https://mastodon.social/@tyrel
|
||||
- text: Facebook
|
||||
icon: fa-brands fa-facebook
|
||||
href: https://www.facebook.com/tyrel.souza
|
||||
- text: YouTube
|
||||
icon: fa-brands fa-youtube
|
||||
href: https://youtube.com/tacidsky
|
||||
- text: Goodreads
|
||||
icon: fa-brands fa-goodreads
|
||||
href: https://www.goodreads.com/user/show/24381583-tyrel-souza
|
||||
- text: LinkedIn
|
||||
icon: fa-brands fa-linkedin
|
||||
href: http://www.linkedin.com/in/tyrel-souza
|
||||
- text: Pinterest
|
||||
icon: fa fa-pinterest
|
||||
href: https://www.pinterest.com/tyrelsouza/
|
||||
- text: QRZ
|
||||
icon: fa-solid fa-radio
|
||||
href: https://www.qrz.com/db/k3tas
|
||||
- text: Hackernews
|
||||
icon: fa fa-hacker-news
|
||||
href: https://news.ycombinator.com/user?id=tyrel
|
||||
- text: Lobsters
|
||||
icon: fa-solid fa-loster
|
||||
href: https://lobste.rs/u/tyrel
|
||||
|
||||
- title: Misc
|
||||
links:
|
||||
- text: Fork this project!
|
||||
icon: fa-solid fa-code-fork
|
||||
href: https://gitea.tyrel.dev/tyrel/rust-ssg
|
BIN
static/favicon.ico
Normal file
BIN
static/favicon.ico
Normal file
Binary file not shown.
After Width: | Height: | Size: 42 KiB |
BIN
static/icon192.png
Normal file
BIN
static/icon192.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 5.2 KiB |
192
static/links.css
Normal file
192
static/links.css
Normal file
@ -0,0 +1,192 @@
|
||||
/*
|
||||
Borrowed and modified from https://github.com/alisa-yar/linktree-template/tree/main
|
||||
Thanks, Alisa!
|
||||
|
||||
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2022 alisayar
|
||||
|
||||
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.
|
||||
*/
|
||||
|
||||
@import url('https://fonts.googleapis.com/css?family=Karla:400,700&display=swap');
|
||||
|
||||
:root {
|
||||
--textColor: #FFFFFF;
|
||||
--font: 'Karla', sans-serif;
|
||||
}
|
||||
|
||||
html {
|
||||
margin: 0;
|
||||
height: 100%;
|
||||
|
||||
/* migrated to template
|
||||
background: linear-gradient(rgba(0, 0, 0, 0.75), rgba(0, 0, 0, 0.75)), url('garbage.png');
|
||||
*/
|
||||
background-repeat: no-repeat;
|
||||
background-size: cover;
|
||||
background-attachment: fixed;
|
||||
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
|
||||
font-family: var(--font);
|
||||
color: var(--textColor);
|
||||
text-shadow: 0px 0px 10px black, 0px 0px 5px black, 0px 0px 3px black ;
|
||||
}
|
||||
|
||||
body {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
height: fit-content;
|
||||
min-height: 100%;
|
||||
}
|
||||
|
||||
.tooltip {
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.tooltip .tooltiptext {
|
||||
visibility: hidden;
|
||||
width: 140px;
|
||||
background-color: #555;
|
||||
color: #fff;
|
||||
text-align: center;
|
||||
border-radius: 6px;
|
||||
padding: 5px;
|
||||
position: absolute;
|
||||
z-index: 1;
|
||||
bottom: 150%;
|
||||
left: 50%;
|
||||
margin-left: -75px;
|
||||
opacity: 0;
|
||||
transition: opacity 0.3s;
|
||||
}
|
||||
|
||||
.tooltip .tooltiptext::after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
top: 100%;
|
||||
left: 50%;
|
||||
margin-left: -5px;
|
||||
border-width: 5px;
|
||||
border-style: solid;
|
||||
border-color: #555 transparent transparent transparent;
|
||||
}
|
||||
|
||||
.tooltip:hover .tooltiptext {
|
||||
visibility: visible;
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
.description {
|
||||
font-size: 18px;
|
||||
color: var(--textColor);
|
||||
text-align: center;
|
||||
margin: 27px auto;
|
||||
margin-top: 10px;
|
||||
width: 90%;
|
||||
max-width: 500px;
|
||||
}
|
||||
|
||||
.footer {
|
||||
font-size: 16px;
|
||||
color: var(--textColor);
|
||||
font-style: italic;
|
||||
text-align: center;
|
||||
margin: 27px auto;
|
||||
margin-top: 10px;
|
||||
width: 90%;
|
||||
max-width: 500px;
|
||||
padding-bottom: 20px;
|
||||
padding-top: 50px;
|
||||
}
|
||||
|
||||
.profilePicture img {
|
||||
position: relative;
|
||||
display: block;
|
||||
margin: 35px auto 20px;
|
||||
border-radius: 50%;
|
||||
object-fit: cover;
|
||||
width: 130px;
|
||||
height: 130px;
|
||||
}
|
||||
|
||||
.userName {
|
||||
color: var(--textColor);
|
||||
font-size: 20px;
|
||||
font-weight: bold;
|
||||
line-height: 1.25;
|
||||
display: block;
|
||||
font-family: var(--font);
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.sectionTitle {
|
||||
color: var(--textColor);
|
||||
font-size: 20px;
|
||||
font-weight: bold;
|
||||
line-height: 1.25;
|
||||
display: block;
|
||||
font-family: var(--font);
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
margin-bottom: -10px;
|
||||
padding-bottom: 10px;
|
||||
border-bottom: 1px dashed;
|
||||
}
|
||||
|
||||
.links {
|
||||
max-width: 675px;
|
||||
width: auto;
|
||||
display: block;
|
||||
margin: 27px auto;
|
||||
}
|
||||
|
||||
.block {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.link {
|
||||
position: relative;
|
||||
background-color: rgba(0, 0, 0, 0.5);
|
||||
color: var(--textColor);
|
||||
border: solid var(--textColor) 2px;
|
||||
border-radius: 10px;
|
||||
font-size: 18px;
|
||||
text-align: center;
|
||||
display: block;
|
||||
margin-left: 10px;
|
||||
margin-right: 10px;
|
||||
margin-bottom: 10px;
|
||||
padding: 10px;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.link a {
|
||||
position: relative;
|
||||
color: var(--textColor);
|
||||
font-size: 18px;
|
||||
text-align: center;
|
||||
text-decoration: none;
|
||||
}
|
BIN
static/loupe.jpg
Normal file
BIN
static/loupe.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 9.2 KiB |
BIN
static/moroccan-flower-dark.png
Normal file
BIN
static/moroccan-flower-dark.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 40 KiB |
92
templates/links/links.html
Normal file
92
templates/links/links.html
Normal file
@ -0,0 +1,92 @@
|
||||
<!DOCTYPE htmstylel>
|
||||
<html lang="en-US">
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>{{config.title}}</title>
|
||||
<link rel="stylesheet" href="links.css">
|
||||
<style>
|
||||
html {
|
||||
background:
|
||||
linear-gradient(
|
||||
rgba(0, 0, 0, {{config.background_opacity}}),
|
||||
rgba(0, 0, 0, {{config.background_opacity}})
|
||||
),
|
||||
url('{{config.background}}'),
|
||||
rgba(0,0,0);
|
||||
}
|
||||
</style>
|
||||
<script src="https://kit.fontawesome.com/6bee25835f.js" crossorigin="anonymous"></script>
|
||||
<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">
|
||||
<link rel="icon" href="{{config.avatar}}" type="image/x-icon" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<a class="profilePicture">
|
||||
<img src="{{config.avatar}}" alt="Profile Picture">
|
||||
</a>
|
||||
|
||||
<div class="userName">
|
||||
{{config.name}}
|
||||
</div>
|
||||
|
||||
<div class="description">
|
||||
{{config.description}}
|
||||
</div>
|
||||
{% for section in links %}
|
||||
<div class="sectionTitle">
|
||||
{{section.title}}
|
||||
</div>
|
||||
<div class="links">
|
||||
{% for link in section.links %}
|
||||
{% if link.href and link.copy %}
|
||||
<a class="link" {% if link.rels %}rel="{{link.rels}}"{% endif %} href="{{link.href}}" target="_blank">
|
||||
<i class="{{link.icon}}"></i> {{link.text}}
|
||||
<div class="tooltip">
|
||||
<span class="" href="#" onclick="copytext('{{link.copy}}','{{loop.index}}')" onmouseout="outFunc('{{loop.index}}')">
|
||||
<span class="tooltiptext" id="{{loop.index}}">Copy to clipboard</span>
|
||||
<i class="fa-solid fa-copy"></i>
|
||||
</span>
|
||||
</div>
|
||||
</a>
|
||||
{% elif link.href %}
|
||||
<a class="link" {% if link.rels %}rel="{{link.rels}}"{% endif %} href="{{link.href}}" target="_blank">
|
||||
<i class="{{link.icon}}"></i> {{link.text}}
|
||||
</a>
|
||||
{% elif link.copy %}
|
||||
<div class="tooltip block">
|
||||
<a class="link" href="#" onclick="copytext('{{link.copy}}','{{loop.index}}')" onmouseout="outFunc('{{loop.index}}')">
|
||||
<span class="tooltiptext" id="{{loop.index}}">Copy to clipboard</span>
|
||||
<i class="{{link.icon}}"></i> {{link.text}}
|
||||
</a>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</div>
|
||||
{% endfor %}
|
||||
|
||||
<footer>
|
||||
<div class="footer">
|
||||
Last updated: {{metadata.last_updated}}
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
</body>
|
||||
<script>
|
||||
|
||||
function copytext(val, linkid) {
|
||||
event.preventDefault();
|
||||
console.log(val);
|
||||
navigator.clipboard.writeText(val);
|
||||
var tooltip = document.getElementById(linkid);
|
||||
tooltip.innerHTML = "Copied: " + val;
|
||||
}
|
||||
|
||||
function outFunc(linkid) {
|
||||
var tooltip = document.getElementById(linkid);
|
||||
tooltip.innerHTML = "Copy to clipboard";
|
||||
}
|
||||
|
||||
</script>
|
||||
</html>
|
Loading…
Reference in New Issue
Block a user