tangled
alpha
login
or
join now
mackuba.eu
/
skythread
14
fork
atom
Thread viewer for Bluesky
14
fork
atom
overview
issues
pulls
pipelines
a bunch of style/layout fixes after visual review
mackuba.eu
3 months ago
9cccbabd
9a0a6853
+34
-21
15 changed files
expand all
collapse all
unified
split
src
components
BiohazardDialog.svelte
RichTextFromFacets.svelte
embeds
EmbedComponent.svelte
posts
PostComponent.svelte
PostFooter.svelte
PostHeader.svelte
ReferencedPostAuthorLink.svelte
models
posts.js
pages
HashtagPage.svelte
LikeStatsPage.svelte
LycanSearchPage.svelte
PostingStatsPage.svelte
QuotesPage.svelte
SearchPage.svelte
style.css
+2
-2
src/components/BiohazardDialog.svelte
···
48
width: 400px;
49
}
50
51
-
p.submit {
52
margin-top: 40px;
53
margin-bottom: 20px;
54
}
55
56
-
input[type="submit"] {
57
width: 180px;
58
margin-left: 5px;
59
margin-right: 5px;
···
48
width: 400px;
49
}
50
51
+
:global(.dialog) p.submit {
52
margin-top: 40px;
53
margin-bottom: 20px;
54
}
55
56
+
:global(.dialog) input[type="submit"] {
57
width: 180px;
58
margin-left: 5px;
59
margin-right: 5px;
+1
-2
src/components/RichTextFromFacets.svelte
···
19
{@const lines = segment.text.split("\n")}
20
21
{#each lines as line, i}
22
-
{#if i > 0}<br>{/if}
23
-
{line}
24
{/each}
25
{/if}
26
{/each}
···
19
{@const lines = segment.text.split("\n")}
20
21
{#each lines as line, i}
22
+
{#if i > 0}<br>{/if}{line}
0
23
{/each}
24
{/if}
25
{/each}
+9
-6
src/components/embeds/EmbedComponent.svelte
···
86
margin-top: 8px;
87
margin-bottom: 4px;
88
line-height: 135%;
0
89
}
90
91
a.link-card.record > div:has(.avatar) {
···
98
99
a.link-card.record .handle {
100
color: #666;
101
-
margin-left: 5px;
0
0
0
102
}
103
104
a.link-card.record .avatar {
···
114
a.link-card.record .stats {
115
margin-top: 9px;
116
margin-bottom: 1px;
0
0
117
}
118
119
-
a.link-card.record .stats i.fa-heart:hover {
0
120
color: #aaa;
121
}
122
}
···
151
152
a.link-card.record .avatar {
153
border-color: #888;
154
-
}
155
-
156
-
a.link-card.record .stats i.fa-heart:hover {
157
-
color: #eee;
158
}
159
}
160
}
···
86
margin-top: 8px;
87
margin-bottom: 4px;
88
line-height: 135%;
89
+
white-space: pre-line;
90
}
91
92
a.link-card.record > div:has(.avatar) {
···
99
100
a.link-card.record .handle {
101
color: #666;
102
+
margin-left: 1px;
103
+
font-weight: normal;
104
+
font-size: 11pt;
105
+
vertical-align: text-top;
106
}
107
108
a.link-card.record .avatar {
···
118
a.link-card.record .stats {
119
margin-top: 9px;
120
margin-bottom: 1px;
121
+
font-size: 10pt;
122
+
color: #666;
123
}
124
125
+
a.link-card.record .stats i.fa-heart {
126
+
font-size: 9pt;
127
color: #aaa;
128
}
129
}
···
158
159
a.link-card.record .avatar {
160
border-color: #888;
0
0
0
0
161
}
162
}
163
}
+1
-1
src/components/posts/PostComponent.svelte
···
187
</div>
188
189
<style>
190
-
.post {
191
position: relative;
192
padding-left: 21px;
193
margin-top: 30px;
···
187
</div>
188
189
<style>
190
+
:global(.post) {
191
position: relative;
192
padding-left: 21px;
193
margin-top: 30px;
+1
-1
src/components/posts/PostFooter.svelte
···
134
}
135
136
span {
137
-
margin-right: 10px;
138
}
139
140
.blocked-info {
···
134
}
135
136
span {
137
+
margin-right: 7px;
138
}
139
140
.blocked-info {
+2
-2
src/components/posts/PostHeader.svelte
···
65
border-radius: 16px;
66
vertical-align: middle;
67
margin-bottom: 3px;
68
-
margin-right: 8px;
69
}
70
71
.no-avatar, .muted-avatar {
···
73
background-color: #eee;
74
border-radius: 16px;
75
vertical-align: middle;
76
-
margin-right: 8px;
77
}
78
79
.muted-avatar {
···
65
border-radius: 16px;
66
vertical-align: middle;
67
margin-bottom: 3px;
68
+
margin-right: 4px;
69
}
70
71
.no-avatar, .muted-avatar {
···
73
background-color: #eee;
74
border-radius: 16px;
75
vertical-align: middle;
76
+
margin-right: 4px;
77
}
78
79
.muted-avatar {
+3
-2
src/components/posts/ReferencedPostAuthorLink.svelte
···
5
let { post, status = undefined }: { post: AnyPost, status?: string | undefined } = $props();
6
7
let handle: string | undefined = $state();
0
8
9
$effect(() => {
10
let did = atURI(post.uri).repo;
···
16
</script>
17
18
{#if status}
19
-
(<a href="{post.didLinkToAuthor}" target="_blank">{handle ?? 'see author'}</a>, {status})
20
{:else}
21
-
(<a href="{post.didLinkToAuthor}" target="_blank">{handle ?? 'see author'}</a>)
22
{/if}
···
5
let { post, status = undefined }: { post: AnyPost, status?: string | undefined } = $props();
6
7
let handle: string | undefined = $state();
8
+
let handleText = $derived(handle ? `@${handle}` : 'see author');
9
10
$effect(() => {
11
let did = atURI(post.uri).repo;
···
17
</script>
18
19
{#if status}
20
+
(<a href="{post.didLinkToAuthor}" target="_blank">{handleText}</a>, {status})
21
{:else}
22
+
(<a href="{post.didLinkToAuthor}" target="_blank">{handleText}</a>)
23
{/if}
+1
-1
src/models/posts.js
···
343
/** @returns {string} */
344
get authorDisplayName() {
345
if (this.author.displayName) {
346
-
return this.author.displayName;
347
} else if (this.author.handle.endsWith('.bsky.social')) {
348
return this.author.handle.replace(/\.bsky\.social$/, '');
349
} else {
···
343
/** @returns {string} */
344
get authorDisplayName() {
345
if (this.author.displayName) {
346
+
return this.author.displayName.trim();
347
} else if (this.author.handle.endsWith('.bsky.social')) {
348
return this.author.handle.replace(/\.bsky\.social$/, '');
349
} else {
+1
-1
src/pages/HashtagPage.svelte
···
66
{/if}
67
68
<style>
69
-
.hashtag :global(.post) {
70
padding-bottom: 10px;
71
border-bottom: 1px solid #ddd;
72
}
···
66
{/if}
67
68
<style>
69
+
.hashtag > :global(.post) {
70
padding-bottom: 10px;
71
border-bottom: 1px solid #ddd;
72
}
+2
src/pages/LikeStatsPage.svelte
···
36
}
37
</script>
38
0
39
<h2>Like statistics</h2>
40
41
<form onsubmit={startScan}>
···
57
<LikeStatsTable cssClass="given-likes" header="❤️ Likes from you:" users={givenLikesUsers} />
58
<LikeStatsTable cssClass="received-likes" header="💛 Likes on your posts:" users={receivedLikesUsers} />
59
{/if}
0
60
61
<style>
62
input[type="range"] {
···
36
}
37
</script>
38
39
+
<main>
40
<h2>Like statistics</h2>
41
42
<form onsubmit={startScan}>
···
58
<LikeStatsTable cssClass="given-likes" header="❤️ Likes from you:" users={givenLikesUsers} />
59
<LikeStatsTable cssClass="received-likes" header="💛 Likes on your posts:" users={receivedLikesUsers} />
60
{/if}
61
+
</main>
62
63
<style>
64
input[type="range"] {
+1
src/pages/LycanSearchPage.svelte
···
240
<style>
241
.search-collections label {
242
vertical-align: middle;
0
243
}
244
245
.lycan-import {
···
240
<style>
241
.search-collections label {
242
vertical-align: middle;
243
+
margin-right: 5px;
244
}
245
246
.lycan-import {
+3
src/pages/PostingStatsPage.svelte
···
109
}
110
</script>
111
0
112
<h2>Bluesky posting statistics</h2>
113
114
<form {onsubmit}>
···
157
{#if results}
158
<PostingStatsTable {...tableOptions} {...results} />
159
{/if}
0
160
161
<style>
162
input[type="radio"] {
···
168
input[type="radio"] + label {
169
user-select: none;
170
-webkit-user-select: none;
0
171
}
172
173
input[type="range"] {
···
109
}
110
</script>
111
112
+
<main>
113
<h2>Bluesky posting statistics</h2>
114
115
<form {onsubmit}>
···
158
{#if results}
159
<PostingStatsTable {...tableOptions} {...results} />
160
{/if}
161
+
</main>
162
163
<style>
164
input[type="radio"] {
···
170
input[type="radio"] + label {
171
user-select: none;
172
-webkit-user-select: none;
173
+
margin-right: 4px;
174
}
175
176
input[type="range"] {
+4
src/pages/QuotesPage.svelte
···
75
{/if}
76
77
<style>
0
0
0
0
78
.quotes :global(.post) {
79
padding-bottom: 5px;
80
}
···
75
{/if}
76
77
<style>
78
+
.quotes :global(p.back) {
79
+
padding-left: 10px;
80
+
}
81
+
82
.quotes :global(.post) {
83
padding-bottom: 5px;
84
}
+2
-2
src/pages/SearchPage.svelte
···
2
let { children } = $props();
3
</script>
4
5
-
<div class="search-page">
6
{@render children()}
7
-
</div>
8
9
<style>
10
.search-page :global {
···
2
let { children } = $props();
3
</script>
4
5
+
<main class="search-page">
6
{@render children()}
7
+
</main>
8
9
<style>
10
.search-page :global {
+1
-1
style.css
···
56
p.back i {
57
font-size: 10pt;
58
color: #888;
59
-
margin-right: 5px;
60
}
61
62
@media (prefers-color-scheme: dark) {
···
56
p.back i {
57
font-size: 10pt;
58
color: #888;
59
+
margin-right: 3px;
60
}
61
62
@media (prefers-color-scheme: dark) {