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
import { createRootRoute, Outlet } from "@tanstack/solid-router"
2
import { Link } from "@tanstack/solid-router"
3
-
import { BookmarkIcon, CircleUserRoundIcon, LogInIcon } from "lucide-solid"
0
0
0
0
0
4
import { Show } from "solid-js"
5
import "./main.css"
6
import "./root.css"
···
18
19
return (
20
<main>
21
-
{!query.isPending &&
22
-
(query.data ? <Outlet /> : <LoggedOutPage />)}
0
0
0
0
0
0
0
23
24
<BottomNav />
25
···
1
import { createRootRoute, Outlet } from "@tanstack/solid-router"
2
import { Link } from "@tanstack/solid-router"
3
+
import {
4
+
BookmarkIcon,
5
+
CircleUserRoundIcon,
6
+
LoaderIcon,
7
+
LogInIcon,
8
+
} from "lucide-solid"
9
import { Show } from "solid-js"
10
import "./main.css"
11
import "./root.css"
···
23
24
return (
25
<main>
26
+
<div>
27
+
{!query.isPending
28
+
? (query.data ? <Outlet /> : <LoggedOutPage />)
29
+
: (
30
+
<div class="loading">
31
+
<LoaderIcon class="spinner" />
32
+
</div>
33
+
)}
34
+
</div>
35
36
<BottomNav />
37
+4
-53
src/routes/root.css
···
6
min-height: 100svh;
7
font-family: var(--font-sans);
8
9
-
header {
10
display: flex;
11
-
justify-content: space-between;
12
align-items: center;
13
-
padding: calc(var(--spacing) * 1.25) calc(var(--spacing) * 2.5);
14
-
background: oklch(from var(--page-bg) 0.8 c h / 0.1);
15
-
border-bottom: 1px solid oklch(from var(--primary-text) l c h / 0.08);
16
-
box-shadow: 0 1px 3px oklch(from var(--primary-text) l c h / 0.04);
17
-
18
-
nav {
19
-
display: flex;
20
-
align-items: center;
21
-
gap: calc(var(--spacing) * 2);
22
-
23
-
a {
24
-
text-decoration: none;
25
-
transition: color 0.15s ease;
26
-
27
-
&:first-child {
28
-
font-size: 1.1rem;
29
-
font-weight: 700;
30
-
color: var(--primary-text);
31
-
letter-spacing: -0.02em;
32
-
line-height: unset;
33
-
display: flex;
34
-
align-items: center;
35
-
gap: 0.5rem;
36
-
margin-inline-end: var(--spacing);
37
-
}
38
-
39
-
&:not(:first-child) {
40
-
font-size: 0.875rem;
41
-
font-weight: 500;
42
-
color: oklch(from var(--primary-text) l c h / 0.9);
43
-
}
44
-
}
45
-
}
46
-
47
-
& > div {
48
-
display: flex;
49
-
align-items: center;
50
-
gap: var(--spacing);
51
-
52
-
img {
53
-
--size: 2.25rem;
54
-
border-radius: 50%;
55
-
object-fit: cover;
56
-
border: 2px solid oklch(from var(--primary) l c h / 0.2);
57
-
transition: border-color 0.15s ease;
58
-
59
-
&:hover {
60
-
border-color: var(--primary);
61
-
}
62
-
}
63
-
}
64
}
65
66
footer {
···
6
min-height: 100svh;
7
font-family: var(--font-sans);
8
9
+
.loading {
10
display: flex;
11
+
flex-direction: column;
12
align-items: center;
13
+
justify-content: center;
14
+
gap: var(--spacing);
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
}
16
17
footer {