tangled
alpha
login
or
join now
margin.at
/
margin
86
fork
atom
Write on the margins of the internet. Powered by the AT Protocol.
margin.at
extension
web
atproto
comments
86
fork
atom
overview
issues
4
pulls
1
pipelines
lint fixes and donation url
scanash.com
1 week ago
bbb1e693
3ad4cf4a
+75
-12
3 changed files
expand all
collapse all
unified
split
web
src
components
navigation
RightSidebar.tsx
views
About.tsx
core
Discover.tsx
+41
-1
web/src/components/navigation/RightSidebar.tsx
···
1
1
import React, { useCallback, useEffect, useRef, useState } from "react";
2
2
import { useNavigate } from "react-router-dom";
3
3
-
import { Search } from "lucide-react";
3
3
+
import { Search, Coffee, Heart, Globe } from "lucide-react";
4
4
import {
5
5
getTrendingTags,
6
6
searchActors,
···
229
229
? "Edge"
230
230
: "Chrome"}
231
231
</a>
232
232
+
</div>
233
233
+
234
234
+
<div className="rounded-xl p-3 border border-surface-200/60 dark:border-surface-700/60">
235
235
+
<p className="text-surface-500 dark:text-surface-400 text-xs mb-2">
236
236
+
Support Margin
237
237
+
</p>
238
238
+
<div className="flex flex-col gap-1.5">
239
239
+
<div className="flex gap-1.5">
240
240
+
<a
241
241
+
href="https://ko-fi.com/scan"
242
242
+
target="_blank"
243
243
+
rel="noopener noreferrer"
244
244
+
title="Ko-fi"
245
245
+
className="flex items-center justify-center flex-1 px-2 py-1.5 rounded-lg border border-surface-200/80 dark:border-surface-700/80 text-surface-500 dark:text-surface-400 hover:border-[#FF5E5B] hover:text-[#FF5E5B] dark:hover:border-[#FF5E5B] dark:hover:text-[#FF5E5B] text-xs font-medium transition-colors gap-1.5"
246
246
+
>
247
247
+
<Coffee size={13} className="shrink-0" />
248
248
+
Ko-fi
249
249
+
</a>
250
250
+
<a
251
251
+
href="https://github.com/sponsors/margin-at"
252
252
+
target="_blank"
253
253
+
rel="noopener noreferrer"
254
254
+
title="GitHub Sponsors"
255
255
+
className="flex items-center justify-center flex-1 px-2 py-1.5 rounded-lg border border-surface-200/80 dark:border-surface-700/80 text-surface-500 dark:text-surface-400 hover:border-[#EA4AAA] hover:text-[#EA4AAA] dark:hover:border-[#EA4AAA] dark:hover:text-[#EA4AAA] text-xs font-medium transition-colors gap-1.5"
256
256
+
>
257
257
+
<Heart size={13} className="shrink-0" />
258
258
+
GitHub
259
259
+
</a>
260
260
+
</div>
261
261
+
<a
262
262
+
href="https://opencollective.com/margin"
263
263
+
target="_blank"
264
264
+
rel="noopener noreferrer"
265
265
+
title="Open Collective"
266
266
+
className="flex items-center justify-center w-full px-2 py-1.5 rounded-lg border border-surface-200/80 dark:border-surface-700/80 text-surface-500 dark:text-surface-400 hover:border-[#7FADF2] hover:text-[#7FADF2] dark:hover:border-[#7FADF2] dark:hover:text-[#7FADF2] text-xs font-medium transition-colors gap-1.5"
267
267
+
>
268
268
+
<Globe size={13} className="shrink-0" />
269
269
+
Open Collective
270
270
+
</a>
271
271
+
</div>
232
272
</div>
233
273
234
274
<div>
+31
web/src/views/About.tsx
···
19
19
ExternalLink,
20
20
Hash,
21
21
Heart,
22
22
+
Coffee,
23
23
+
Globe,
22
24
Eye,
23
25
Sun,
24
26
Moon,
···
623
625
>
624
626
<TangledIcon size={16} />
625
627
View on Tangled
628
628
+
</a>
629
629
+
</div>
630
630
+
<div className="mt-10 flex items-center gap-5 flex-wrap justify-center">
631
631
+
<a
632
632
+
href="https://ko-fi.com/scan"
633
633
+
target="_blank"
634
634
+
rel="noopener noreferrer"
635
635
+
className="inline-flex items-center gap-2 text-surface-500 dark:text-surface-400 hover:text-[#FF5E5B] dark:hover:text-[#FF5E5B] transition-colors font-medium"
636
636
+
>
637
637
+
<Coffee size={16} />
638
638
+
Ko-fi
639
639
+
</a>
640
640
+
<a
641
641
+
href="https://github.com/sponsors/margin-at"
642
642
+
target="_blank"
643
643
+
rel="noopener noreferrer"
644
644
+
className="inline-flex items-center gap-2 text-surface-500 dark:text-surface-400 hover:text-[#EA4AAA] dark:hover:text-[#EA4AAA] transition-colors font-medium"
645
645
+
>
646
646
+
<Heart size={16} />
647
647
+
GitHub Sponsors
648
648
+
</a>
649
649
+
<a
650
650
+
href="https://opencollective.com/margin"
651
651
+
target="_blank"
652
652
+
rel="noopener noreferrer"
653
653
+
className="inline-flex items-center gap-2 text-surface-500 dark:text-surface-400 hover:text-[#7FADF2] dark:hover:text-[#7FADF2] transition-colors font-medium"
654
654
+
>
655
655
+
<Globe size={16} />
656
656
+
Open Collective
626
657
</a>
627
658
</div>
628
659
</div>
+3
-11
web/src/views/core/Discover.tsx
···
62
62
);
63
63
64
64
useEffect(() => {
65
65
-
setItems([]);
66
66
-
setOffset(0);
67
67
-
fetchItems(activeTab, 0);
65
65
+
queueMicrotask(() => fetchItems(activeTab, 0));
68
66
}, [activeTab, fetchItems]);
69
67
70
68
const handleTabChange = (id: string) => {
···
122
120
layout === "mosaic" ? "break-inside-avoid mb-4" : undefined
123
121
}
124
122
>
125
125
-
<DocumentCard doc={doc} layout={layout} />
123
123
+
<DocumentCard doc={doc} />
126
124
</div>
127
125
))}
128
126
···
146
144
);
147
145
}
148
146
149
149
-
function DocumentCard({
150
150
-
doc,
151
151
-
layout = "list",
152
152
-
}: {
153
153
-
doc: DocumentItem;
154
154
-
layout?: "list" | "mosaic";
155
155
-
}) {
147
147
+
function DocumentCard({ doc }: { doc: DocumentItem }) {
156
148
const [ogData, setOgData] = useState<{
157
149
title?: string;
158
150
description?: string;