tangled
alpha
login
or
join now
vielle.dev
/
site
0
fork
atom
Personal Site
0
fork
atom
overview
issues
pulls
pipelines
Add markdown for header and expose `nav` type
vielle.dev
7 months ago
cdd34513
175e6bd9
verified
This commit was signed with the committer's
known signature
.
vielle.dev
SSH Key Fingerprint:
SHA256:/4bvxqoEh9iMdjAPgcgAgXKZZQTROL3ULiPt6nH9RSs=
+40
-4
2 changed files
expand all
collapse all
unified
split
src
components
Header.astro
site-config.ts
+36
src/components/Header.astro
···
1
1
+
---
2
2
+
import { urls, type nav } from "/site-config";
3
3
+
4
4
+
---
5
5
+
6
6
+
<header>
7
7
+
<h1>vielle.dev</h1>
8
8
+
9
9
+
<ul>
10
10
+
{
11
11
+
(() => {
12
12
+
const name = (url: nav) =>
13
13
+
url.slug ? <a href={url.slug}>{url.name}</a> : url.name;
14
14
+
const flatten = (urls: nav[]) =>
15
15
+
urls.map((url) => (
16
16
+
<li>
17
17
+
{name(url)}
18
18
+
{url.children && <ul>{flatten(url.children)}</ul>}
19
19
+
</li>
20
20
+
));
21
21
+
return urls.map((url) => (
22
22
+
<li>
23
23
+
{url.children ? (
24
24
+
<details name="nav">
25
25
+
<summary>{name(url)}</summary>
26
26
+
<ul>{flatten(url.children)}</ul>
27
27
+
</details>
28
28
+
) : (
29
29
+
name(url)
30
30
+
)}
31
31
+
</li>
32
32
+
));
33
33
+
})()
34
34
+
}
35
35
+
</ul>
36
36
+
</header>
+4
-4
src/site-config.ts
···
6
6
matrix: "afterlifepro:matrix.org",
7
7
} as const;
8
8
9
9
-
type nav = {
9
9
+
export type nav = {
10
10
slug?: string;
11
11
name: string;
12
12
children?: nav[];
···
59
59
],
60
60
},
61
61
{
62
62
-
slug: "https://" + socials.tumblr + ".tumblr.com/",
63
63
-
name: "Tumblr"
62
62
+
slug: "https://" + socials.tumblr + ".tumblr.com/",
63
63
+
name: "Tumblr",
64
64
},
65
65
{
66
66
slug: "https://github.com/" + socials.github,
···
73
73
{
74
74
slug: "https://matrix.to/#/@" + socials.matrix,
75
75
name: "Matrix",
76
76
-
}
76
76
+
},
77
77
],
78
78
},
79
79
{