tangled
alpha
login
or
join now
finxol.io
/
bookmarker
0
fork
atom
A very simple bookmarking webapp
bookmarker.finxol.deno.net/
0
fork
atom
overview
issues
pulls
pipelines
fix: add loading indicator
finxol.io
3 weeks ago
27280eb0
72e51282
verified
This commit was signed with the committer's
known signature
.
finxol.io
SSH Key Fingerprint:
SHA256:olFE3asYdoBMScuJOt60UxXdJ0RFdGv5kVKrdOtIcPI=
1/1
deploy.yaml
success
9s
+19
-56
2 changed files
expand all
collapse all
unified
split
src
routes
__root.tsx
root.css
+15
-3
src/routes/__root.tsx
···
1
1
import { createRootRoute, Outlet } from "@tanstack/solid-router"
2
2
import { Link } from "@tanstack/solid-router"
3
3
-
import { BookmarkIcon, CircleUserRoundIcon, LogInIcon } from "lucide-solid"
3
3
+
import {
4
4
+
BookmarkIcon,
5
5
+
CircleUserRoundIcon,
6
6
+
LoaderIcon,
7
7
+
LogInIcon,
8
8
+
} from "lucide-solid"
4
9
import { Show } from "solid-js"
5
10
import "./main.css"
6
11
import "./root.css"
···
18
23
19
24
return (
20
25
<main>
21
21
-
{!query.isPending &&
22
22
-
(query.data ? <Outlet /> : <LoggedOutPage />)}
26
26
+
<div>
27
27
+
{!query.isPending
28
28
+
? (query.data ? <Outlet /> : <LoggedOutPage />)
29
29
+
: (
30
30
+
<div class="loading">
31
31
+
<LoaderIcon class="spinner" />
32
32
+
</div>
33
33
+
)}
34
34
+
</div>
23
35
24
36
<BottomNav />
25
37
+4
-53
src/routes/root.css
···
6
6
min-height: 100svh;
7
7
font-family: var(--font-sans);
8
8
9
9
-
header {
9
9
+
.loading {
10
10
display: flex;
11
11
-
justify-content: space-between;
11
11
+
flex-direction: column;
12
12
align-items: center;
13
13
-
padding: calc(var(--spacing) * 1.25) calc(var(--spacing) * 2.5);
14
14
-
background: oklch(from var(--page-bg) 0.8 c h / 0.1);
15
15
-
border-bottom: 1px solid oklch(from var(--primary-text) l c h / 0.08);
16
16
-
box-shadow: 0 1px 3px oklch(from var(--primary-text) l c h / 0.04);
17
17
-
18
18
-
nav {
19
19
-
display: flex;
20
20
-
align-items: center;
21
21
-
gap: calc(var(--spacing) * 2);
22
22
-
23
23
-
a {
24
24
-
text-decoration: none;
25
25
-
transition: color 0.15s ease;
26
26
-
27
27
-
&:first-child {
28
28
-
font-size: 1.1rem;
29
29
-
font-weight: 700;
30
30
-
color: var(--primary-text);
31
31
-
letter-spacing: -0.02em;
32
32
-
line-height: unset;
33
33
-
display: flex;
34
34
-
align-items: center;
35
35
-
gap: 0.5rem;
36
36
-
margin-inline-end: var(--spacing);
37
37
-
}
38
38
-
39
39
-
&:not(:first-child) {
40
40
-
font-size: 0.875rem;
41
41
-
font-weight: 500;
42
42
-
color: oklch(from var(--primary-text) l c h / 0.9);
43
43
-
}
44
44
-
}
45
45
-
}
46
46
-
47
47
-
& > div {
48
48
-
display: flex;
49
49
-
align-items: center;
50
50
-
gap: var(--spacing);
51
51
-
52
52
-
img {
53
53
-
--size: 2.25rem;
54
54
-
border-radius: 50%;
55
55
-
object-fit: cover;
56
56
-
border: 2px solid oklch(from var(--primary) l c h / 0.2);
57
57
-
transition: border-color 0.15s ease;
58
58
-
59
59
-
&:hover {
60
60
-
border-color: var(--primary);
61
61
-
}
62
62
-
}
63
63
-
}
13
13
+
justify-content: center;
14
14
+
gap: var(--spacing);
64
15
}
65
16
66
17
footer {