tangled
alpha
login
or
join now
vittoriogioda.com
/
website
0
fork
atom
My personal website
vittoriogioda.com
blog
portfolio
personal-website
0
fork
atom
overview
issues
pulls
pipelines
chore: add Tangled link
Vittorio
3 weeks ago
64055786
020b695d
0/1
deploy.yml
failed
26s
+136
9 changed files
expand all
collapse all
unified
split
404.html
categories
index.html
index.html
js
main.js
theme.js
pages
index.html
posts
index.html
test-post
index.html
tags
index.html
+6
404.html
···
141
141
</path>
142
142
</svg>
143
143
</a>
144
144
+
<a href="https://tangled.org/vittoriogioda.com/" target="_blank" rel="noopener noreferrer me"
145
145
+
title="Tangled">
146
146
+
<svg width="25" height="25" color="#fff" viewBox="0 0 25 25" xmlns="http://www.w3.org/2000/svg">
147
147
+
<path class="dolly" fill="currentColor" style="stroke-width:.111183" d="M16.775 24.987c-.785-.006-1.384-.235-2.034-.631-.931-.49-1.643-1.314-2.152-2.222-.808 1.003-1.888 1.61-3.097 1.955-.515.15-1.416.3-2.91-.24-2.155-.724-3.724-2.966-3.546-5.25-.032-.946.313-1.875.802-2.674-1.305-.7-2.37-1.876-2.777-3.319-.248-.789-.237-1.64-.146-2.451.327-1.916 1.765-3.582 3.615-4.182.739-1.683 2.35-2.938 4.176-3.194a5.54 5.54 0 0 1 3.528.702c1.546-1.714 4.238-2.22 6.294-1.168 1.568.749 2.69 2.311 2.962 4.015 1.492.598 2.749 1.817 3.242 3.365.33.958.34 2.013.127 2.997-.381 1.535-1.465 2.842-2.868 3.557.004.273.902 2.243.751 3.73-.032 1.858-1.211 3.62-2.846 4.475-.954.556-2.084.546-3.12.535m-4.47-5.35c1.323-.147 2.19-1.3 2.863-2.338.318-.473.561-1.002.803-1.506.313.287.578.828 1.074.957.522.162 1.134.03 1.453-.444.612-1.14.31-2.516-.046-3.698-.22-.679-.507-1.375-1.054-1.856.117-.824-.371-1.66-1.065-2.091-.591.471-1.49.468-2.061-.036-1.093 1.115-2.095 1.078-3.062.195-.218-.199-.633 1.211-2.089.412-.836.701-1.485 1.376-2.06 2.347-.558 1.046-1.143 1.976-1.194 3.112-.024.665.495 1.36 1.199 1.307.703.063 1.181-.63 1.713-.917.08.927.17 1.923.483 2.829.36 1.17 1.626 1.915 2.825 1.745z" transform="translate(-.43 -.878)"/>
148
148
+
</svg>
149
149
+
</a>
144
150
<a href="https://bsky.app/profile/vittoriogioda.com" target="_blank" rel="noopener noreferrer me"
145
151
title="Bluesky">
146
152
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" stroke="none" stroke-width="2"
+6
categories/index.html
···
144
144
</path>
145
145
</svg>
146
146
</a>
147
147
+
<a href="https://tangled.org/vittoriogioda.com/" target="_blank" rel="noopener noreferrer me"
148
148
+
title="Tangled">
149
149
+
<svg width="25" height="25" color="#fff" viewBox="0 0 25 25" xmlns="http://www.w3.org/2000/svg">
150
150
+
<path class="dolly" fill="currentColor" style="stroke-width:.111183" d="M16.775 24.987c-.785-.006-1.384-.235-2.034-.631-.931-.49-1.643-1.314-2.152-2.222-.808 1.003-1.888 1.61-3.097 1.955-.515.15-1.416.3-2.91-.24-2.155-.724-3.724-2.966-3.546-5.25-.032-.946.313-1.875.802-2.674-1.305-.7-2.37-1.876-2.777-3.319-.248-.789-.237-1.64-.146-2.451.327-1.916 1.765-3.582 3.615-4.182.739-1.683 2.35-2.938 4.176-3.194a5.54 5.54 0 0 1 3.528.702c1.546-1.714 4.238-2.22 6.294-1.168 1.568.749 2.69 2.311 2.962 4.015 1.492.598 2.749 1.817 3.242 3.365.33.958.34 2.013.127 2.997-.381 1.535-1.465 2.842-2.868 3.557.004.273.902 2.243.751 3.73-.032 1.858-1.211 3.62-2.846 4.475-.954.556-2.084.546-3.12.535m-4.47-5.35c1.323-.147 2.19-1.3 2.863-2.338.318-.473.561-1.002.803-1.506.313.287.578.828 1.074.957.522.162 1.134.03 1.453-.444.612-1.14.31-2.516-.046-3.698-.22-.679-.507-1.375-1.054-1.856.117-.824-.371-1.66-1.065-2.091-.591.471-1.49.468-2.061-.036-1.093 1.115-2.095 1.078-3.062.195-.218-.199-.633 1.211-2.089.412-.836.701-1.485 1.376-2.06 2.347-.558 1.046-1.143 1.976-1.194 3.112-.024.665.495 1.36 1.199 1.307.703.063 1.181-.63 1.713-.917.08.927.17 1.923.483 2.829.36 1.17 1.626 1.915 2.825 1.745z" transform="translate(-.43 -.878)"/>
151
151
+
</svg>
152
152
+
</a>
147
153
<a href="https://bsky.app/profile/vittoriogioda.com" target="_blank" rel="noopener noreferrer me"
148
154
title="Bluesky">
149
155
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" stroke="none" stroke-width="2"
+6
index.html
···
181
181
</path>
182
182
</svg>
183
183
</a>
184
184
+
<a href="https://tangled.org/vittoriogioda.com/" target="_blank" rel="noopener noreferrer me"
185
185
+
title="Tangled">
186
186
+
<svg width="25" height="25" color="#fff" viewBox="0 0 25 25" xmlns="http://www.w3.org/2000/svg">
187
187
+
<path class="dolly" fill="currentColor" style="stroke-width:.111183" d="M16.775 24.987c-.785-.006-1.384-.235-2.034-.631-.931-.49-1.643-1.314-2.152-2.222-.808 1.003-1.888 1.61-3.097 1.955-.515.15-1.416.3-2.91-.24-2.155-.724-3.724-2.966-3.546-5.25-.032-.946.313-1.875.802-2.674-1.305-.7-2.37-1.876-2.777-3.319-.248-.789-.237-1.64-.146-2.451.327-1.916 1.765-3.582 3.615-4.182.739-1.683 2.35-2.938 4.176-3.194a5.54 5.54 0 0 1 3.528.702c1.546-1.714 4.238-2.22 6.294-1.168 1.568.749 2.69 2.311 2.962 4.015 1.492.598 2.749 1.817 3.242 3.365.33.958.34 2.013.127 2.997-.381 1.535-1.465 2.842-2.868 3.557.004.273.902 2.243.751 3.73-.032 1.858-1.211 3.62-2.846 4.475-.954.556-2.084.546-3.12.535m-4.47-5.35c1.323-.147 2.19-1.3 2.863-2.338.318-.473.561-1.002.803-1.506.313.287.578.828 1.074.957.522.162 1.134.03 1.453-.444.612-1.14.31-2.516-.046-3.698-.22-.679-.507-1.375-1.054-1.856.117-.824-.371-1.66-1.065-2.091-.591.471-1.49.468-2.061-.036-1.093 1.115-2.095 1.078-3.062.195-.218-.199-.633 1.211-2.089.412-.836.701-1.485 1.376-2.06 2.347-.558 1.046-1.143 1.976-1.194 3.112-.024.665.495 1.36 1.199 1.307.703.063 1.181-.63 1.713-.917.08.927.17 1.923.483 2.829.36 1.17 1.626 1.915 2.825 1.745z" transform="translate(-.43 -.878)"/>
188
188
+
</svg>
189
189
+
</a>
184
190
<a href="https://bsky.app/profile/vittoriogioda.com" target="_blank" rel="noopener noreferrer me"
185
191
title="Bluesky">
186
192
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" stroke="none" stroke-width="2"
+19
js/main.js
···
1
1
+
'use strict';
2
2
+
3
3
+
;
4
4
+
window.addEventListener('load', () => {
5
5
+
const gttButton = document.getElementById("totop");
6
6
+
if (!gttButton) return;
7
7
+
window.onscroll = () => {
8
8
+
if (
9
9
+
document.body.scrollTop > 300 ||
10
10
+
document.documentElement.scrollTop > 300
11
11
+
) {
12
12
+
gttButton.style.visibility = "visible";
13
13
+
gttButton.style.opacity = "1";
14
14
+
} else {
15
15
+
gttButton.style.visibility = "hidden";
16
16
+
gttButton.style.opacity = "0";
17
17
+
}
18
18
+
};
19
19
+
});
+75
js/theme.js
···
1
1
+
(() => {
2
2
+
"use strict";
3
3
+
const LS_THEME_KEY = "theme";
4
4
+
const THEMES = {
5
5
+
LIGHT: "light",
6
6
+
DARK: "dark",
7
7
+
AUTO: "auto",
8
8
+
};
9
9
+
10
10
+
const body = document.body;
11
11
+
const config = body.getAttribute("data-theme");
12
12
+
13
13
+
const getThemeState = () => {
14
14
+
const lsState = localStorage.getItem(LS_THEME_KEY);
15
15
+
if (lsState) return lsState;
16
16
+
17
17
+
let state;
18
18
+
switch (config) {
19
19
+
case THEMES.DARK:
20
20
+
state = THEMES.DARK;
21
21
+
break;
22
22
+
case THEMES.LIGHT:
23
23
+
state = THEMES.LIGHT;
24
24
+
break;
25
25
+
case THEMES.AUTO:
26
26
+
default:
27
27
+
state = window.matchMedia("(prefers-color-scheme: dark)")
28
28
+
.matches
29
29
+
? THEMES.DARK
30
30
+
: THEMES.LIGHT;
31
31
+
break;
32
32
+
}
33
33
+
return state;
34
34
+
};
35
35
+
36
36
+
const initTheme = (state) => {
37
37
+
if (state === THEMES.DARK) {
38
38
+
document.documentElement.classList.add(THEMES.DARK);
39
39
+
document.documentElement.classList.remove(THEMES.LIGHT);
40
40
+
} else if (state === THEMES.LIGHT) {
41
41
+
document.documentElement.classList.remove(THEMES.DARK);
42
42
+
document.documentElement.classList.add(THEMES.LIGHT);
43
43
+
}
44
44
+
};
45
45
+
46
46
+
// init theme ASAP, then do the rest.
47
47
+
initTheme(getThemeState());
48
48
+
requestAnimationFrame(() => body.classList.remove("notransition"))
49
49
+
const toggleTheme = () => {
50
50
+
const state = getThemeState();
51
51
+
if (state === THEMES.DARK) {
52
52
+
localStorage.setItem(LS_THEME_KEY, THEMES.LIGHT);
53
53
+
initTheme(THEMES.LIGHT);
54
54
+
} else if (state === THEMES.LIGHT) {
55
55
+
localStorage.setItem(LS_THEME_KEY, THEMES.DARK);
56
56
+
initTheme(THEMES.DARK);
57
57
+
}
58
58
+
};
59
59
+
60
60
+
window.addEventListener("DOMContentLoaded", () => {
61
61
+
// Theme switch
62
62
+
const lamp = document.getElementById("mode");
63
63
+
64
64
+
lamp.addEventListener("click", () => toggleTheme());
65
65
+
66
66
+
// Blur the content when the menu is open
67
67
+
const cbox = document.getElementById("menu-trigger");
68
68
+
69
69
+
cbox.addEventListener("change", function () {
70
70
+
const area = document.querySelector(".wrapper");
71
71
+
if (this.checked) return area.classList.add("blurry");
72
72
+
area.classList.remove("blurry");
73
73
+
});
74
74
+
});
75
75
+
})();
+6
pages/index.html
···
144
144
</path>
145
145
</svg>
146
146
</a>
147
147
+
<a href="https://tangled.org/vittoriogioda.com/" target="_blank" rel="noopener noreferrer me"
148
148
+
title="Tangled">
149
149
+
<svg width="25" height="25" color="#fff" viewBox="0 0 25 25" xmlns="http://www.w3.org/2000/svg">
150
150
+
<path class="dolly" fill="currentColor" style="stroke-width:.111183" d="M16.775 24.987c-.785-.006-1.384-.235-2.034-.631-.931-.49-1.643-1.314-2.152-2.222-.808 1.003-1.888 1.61-3.097 1.955-.515.15-1.416.3-2.91-.24-2.155-.724-3.724-2.966-3.546-5.25-.032-.946.313-1.875.802-2.674-1.305-.7-2.37-1.876-2.777-3.319-.248-.789-.237-1.64-.146-2.451.327-1.916 1.765-3.582 3.615-4.182.739-1.683 2.35-2.938 4.176-3.194a5.54 5.54 0 0 1 3.528.702c1.546-1.714 4.238-2.22 6.294-1.168 1.568.749 2.69 2.311 2.962 4.015 1.492.598 2.749 1.817 3.242 3.365.33.958.34 2.013.127 2.997-.381 1.535-1.465 2.842-2.868 3.557.004.273.902 2.243.751 3.73-.032 1.858-1.211 3.62-2.846 4.475-.954.556-2.084.546-3.12.535m-4.47-5.35c1.323-.147 2.19-1.3 2.863-2.338.318-.473.561-1.002.803-1.506.313.287.578.828 1.074.957.522.162 1.134.03 1.453-.444.612-1.14.31-2.516-.046-3.698-.22-.679-.507-1.375-1.054-1.856.117-.824-.371-1.66-1.065-2.091-.591.471-1.49.468-2.061-.036-1.093 1.115-2.095 1.078-3.062.195-.218-.199-.633 1.211-2.089.412-.836.701-1.485 1.376-2.06 2.347-.558 1.046-1.143 1.976-1.194 3.112-.024.665.495 1.36 1.199 1.307.703.063 1.181-.63 1.713-.917.08.927.17 1.923.483 2.829.36 1.17 1.626 1.915 2.825 1.745z" transform="translate(-.43 -.878)"/>
151
151
+
</svg>
152
152
+
</a>
147
153
<a href="https://bsky.app/profile/vittoriogioda.com" target="_blank" rel="noopener noreferrer me"
148
154
title="Bluesky">
149
155
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" stroke="none" stroke-width="2"
+6
posts/index.html
···
220
220
</path>
221
221
</svg>
222
222
</a>
223
223
+
<a href="https://tangled.org/vittoriogioda.com/" target="_blank" rel="noopener noreferrer me"
224
224
+
title="Tangled">
225
225
+
<svg width="25" height="25" color="#fff" viewBox="0 0 25 25" xmlns="http://www.w3.org/2000/svg">
226
226
+
<path class="dolly" fill="currentColor" style="stroke-width:.111183" d="M16.775 24.987c-.785-.006-1.384-.235-2.034-.631-.931-.49-1.643-1.314-2.152-2.222-.808 1.003-1.888 1.61-3.097 1.955-.515.15-1.416.3-2.91-.24-2.155-.724-3.724-2.966-3.546-5.25-.032-.946.313-1.875.802-2.674-1.305-.7-2.37-1.876-2.777-3.319-.248-.789-.237-1.64-.146-2.451.327-1.916 1.765-3.582 3.615-4.182.739-1.683 2.35-2.938 4.176-3.194a5.54 5.54 0 0 1 3.528.702c1.546-1.714 4.238-2.22 6.294-1.168 1.568.749 2.69 2.311 2.962 4.015 1.492.598 2.749 1.817 3.242 3.365.33.958.34 2.013.127 2.997-.381 1.535-1.465 2.842-2.868 3.557.004.273.902 2.243.751 3.73-.032 1.858-1.211 3.62-2.846 4.475-.954.556-2.084.546-3.12.535m-4.47-5.35c1.323-.147 2.19-1.3 2.863-2.338.318-.473.561-1.002.803-1.506.313.287.578.828 1.074.957.522.162 1.134.03 1.453-.444.612-1.14.31-2.516-.046-3.698-.22-.679-.507-1.375-1.054-1.856.117-.824-.371-1.66-1.065-2.091-.591.471-1.49.468-2.061-.036-1.093 1.115-2.095 1.078-3.062.195-.218-.199-.633 1.211-2.089.412-.836.701-1.485 1.376-2.06 2.347-.558 1.046-1.143 1.976-1.194 3.112-.024.665.495 1.36 1.199 1.307.703.063 1.181-.63 1.713-.917.08.927.17 1.923.483 2.829.36 1.17 1.626 1.915 2.825 1.745z" transform="translate(-.43 -.878)"/>
227
227
+
</svg>
228
228
+
</a>
223
229
<a href="https://bsky.app/profile/vittoriogioda.com" target="_blank" rel="noopener noreferrer me"
224
230
title="Bluesky">
225
231
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" stroke="none" stroke-width="2"
+6
posts/test-post/index.html
···
210
210
</path>
211
211
</svg>
212
212
</a>
213
213
+
<a href="https://tangled.org/vittoriogioda.com/" target="_blank" rel="noopener noreferrer me"
214
214
+
title="Tangled">
215
215
+
<svg width="25" height="25" color="#fff" viewBox="0 0 25 25" xmlns="http://www.w3.org/2000/svg">
216
216
+
<path class="dolly" fill="currentColor" style="stroke-width:.111183" d="M16.775 24.987c-.785-.006-1.384-.235-2.034-.631-.931-.49-1.643-1.314-2.152-2.222-.808 1.003-1.888 1.61-3.097 1.955-.515.15-1.416.3-2.91-.24-2.155-.724-3.724-2.966-3.546-5.25-.032-.946.313-1.875.802-2.674-1.305-.7-2.37-1.876-2.777-3.319-.248-.789-.237-1.64-.146-2.451.327-1.916 1.765-3.582 3.615-4.182.739-1.683 2.35-2.938 4.176-3.194a5.54 5.54 0 0 1 3.528.702c1.546-1.714 4.238-2.22 6.294-1.168 1.568.749 2.69 2.311 2.962 4.015 1.492.598 2.749 1.817 3.242 3.365.33.958.34 2.013.127 2.997-.381 1.535-1.465 2.842-2.868 3.557.004.273.902 2.243.751 3.73-.032 1.858-1.211 3.62-2.846 4.475-.954.556-2.084.546-3.12.535m-4.47-5.35c1.323-.147 2.19-1.3 2.863-2.338.318-.473.561-1.002.803-1.506.313.287.578.828 1.074.957.522.162 1.134.03 1.453-.444.612-1.14.31-2.516-.046-3.698-.22-.679-.507-1.375-1.054-1.856.117-.824-.371-1.66-1.065-2.091-.591.471-1.49.468-2.061-.036-1.093 1.115-2.095 1.078-3.062.195-.218-.199-.633 1.211-2.089.412-.836.701-1.485 1.376-2.06 2.347-.558 1.046-1.143 1.976-1.194 3.112-.024.665.495 1.36 1.199 1.307.703.063 1.181-.63 1.713-.917.08.927.17 1.923.483 2.829.36 1.17 1.626 1.915 2.825 1.745z" transform="translate(-.43 -.878)"/>
217
217
+
</svg>
218
218
+
</a>
213
219
<a href="https://bsky.app/profile/vittoriogioda.com" target="_blank" rel="noopener noreferrer me"
214
220
title="Bluesky">
215
221
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" stroke="none" stroke-width="2"
+6
tags/index.html
···
144
144
</path>
145
145
</svg>
146
146
</a>
147
147
+
<a href="https://tangled.org/vittoriogioda.com/" target="_blank" rel="noopener noreferrer me"
148
148
+
title="Tangled">
149
149
+
<svg width="25" height="25" color="#fff" viewBox="0 0 25 25" xmlns="http://www.w3.org/2000/svg">
150
150
+
<path class="dolly" fill="currentColor" style="stroke-width:.111183" d="M16.775 24.987c-.785-.006-1.384-.235-2.034-.631-.931-.49-1.643-1.314-2.152-2.222-.808 1.003-1.888 1.61-3.097 1.955-.515.15-1.416.3-2.91-.24-2.155-.724-3.724-2.966-3.546-5.25-.032-.946.313-1.875.802-2.674-1.305-.7-2.37-1.876-2.777-3.319-.248-.789-.237-1.64-.146-2.451.327-1.916 1.765-3.582 3.615-4.182.739-1.683 2.35-2.938 4.176-3.194a5.54 5.54 0 0 1 3.528.702c1.546-1.714 4.238-2.22 6.294-1.168 1.568.749 2.69 2.311 2.962 4.015 1.492.598 2.749 1.817 3.242 3.365.33.958.34 2.013.127 2.997-.381 1.535-1.465 2.842-2.868 3.557.004.273.902 2.243.751 3.73-.032 1.858-1.211 3.62-2.846 4.475-.954.556-2.084.546-3.12.535m-4.47-5.35c1.323-.147 2.19-1.3 2.863-2.338.318-.473.561-1.002.803-1.506.313.287.578.828 1.074.957.522.162 1.134.03 1.453-.444.612-1.14.31-2.516-.046-3.698-.22-.679-.507-1.375-1.054-1.856.117-.824-.371-1.66-1.065-2.091-.591.471-1.49.468-2.061-.036-1.093 1.115-2.095 1.078-3.062.195-.218-.199-.633 1.211-2.089.412-.836.701-1.485 1.376-2.06 2.347-.558 1.046-1.143 1.976-1.194 3.112-.024.665.495 1.36 1.199 1.307.703.063 1.181-.63 1.713-.917.08.927.17 1.923.483 2.829.36 1.17 1.626 1.915 2.825 1.745z" transform="translate(-.43 -.878)"/>
151
151
+
</svg>
152
152
+
</a>
147
153
<a href="https://bsky.app/profile/vittoriogioda.com" target="_blank" rel="noopener noreferrer me"
148
154
title="Bluesky">
149
155
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" stroke="none" stroke-width="2"