~james/core

core/web/src/lib/components/timeline/TimelineFollowEvent.svelte -rw-r--r-- 1.3 KiB
452f17b7 — james chore(import): snapshot james.dad.town/core at f70c71c7696a 15 hours ago
                                                                                
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<script lang="ts">
	import User from "#lib/components/ui/User.svelte";
	import FollowCard from "#lib/components/profile/FollowCard.svelte";
	import TimelineGroup from "#lib/components/timeline/TimelineGroup.svelte";
	import TimelineActorHeader from "#lib/components/timeline/TimelineActorHeader.svelte";
	import { toPerson } from "#lib/components/timeline/mappers.ts";
	import type { TimelineEvent } from "#lib/components/timeline/group.ts";
	import type * as OrgTangledActorDefs from "#lib/api/lexicons/types/org/tangled/actor/defs.ts";
	import type { FollowEvent } from "#lib/api/lexicons/types/org/tangled/feed/getTimeline.ts";

	let {
		actor,
		items,
		signedIn = false
	}: {
		actor: OrgTangledActorDefs.ProfileViewBasic;
		items: TimelineEvent<FollowEvent>[];
		signedIn?: boolean;
	} = $props();

	const subject = $derived(items[0].event.subject);
</script>

<TimelineGroup {items}>
	{#snippet title()}
		<TimelineActorHeader {actor} verb="followed" count={items.length} plural="users">
			<User
				handle={subject.handle}
				did={subject.did}
				link
				class="gap-[calc(var(--spacing-word)+1px)]"
			/>
		</TimelineActorHeader>
	{/snippet}
	{#snippet row(event)}
		<FollowCard
			person={toPerson(event.subject)}
			followButton={signedIn}
			border={false}
			background={false}
		/>
	{/snippet}
</TimelineGroup>