Something went wrong. Try again.
Monorepo for Tangled tangled.org
Something went wrong. Try again.
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758<script lang="ts"> import type { Snippet } from "svelte"; import EmptyState from "#lib/components/ui/EmptyState.svelte"; import TimelineRepoEvent from "#lib/components/timeline/TimelineRepoEvent.svelte"; import TimelineStarEvent from "#lib/components/timeline/TimelineStarEvent.svelte"; import TimelineFollowEvent from "#lib/components/timeline/TimelineFollowEvent.svelte"; import TimelineFollowers from "#lib/components/timeline/TimelineFollowers.svelte"; import TimelineStargazers from "#lib/components/timeline/TimelineStargazers.svelte"; import TimelineForkers from "#lib/components/timeline/TimelineForkers.svelte"; import { groupTimeline } from "#lib/components/timeline/group.ts"; import type * as OrgTangledFeedGetTimeline from "#lib/api/lexicons/types/org/tangled/feed/getTimeline.ts";
let { feed, emptyMessage = "Nothing here yet.", emptyAction, signedIn = false }: { feed: OrgTangledFeedGetTimeline.$output["feed"]; emptyMessage?: string; emptyAction?: Snippet; signedIn?: boolean; } = $props();
const entries = $derived(groupTimeline(feed));</script>
{#if entries.length > 0} <div class="flex flex-col gap-md"> {#each entries as entry, i (entry.key)} <div class="relative"> <!-- connector bridging the gap up to the previous card --> {#if i !== 0} <div class="absolute -top-4 left-6.5 h-4 w-px bg-border-default" aria-hidden="true" ></div> {/if} {#if entry.kind === "follow"} <TimelineFollowEvent actor={entry.actor} items={entry.items} {signedIn} /> {:else if entry.kind === "star"} <TimelineStarEvent actor={entry.actor} items={entry.items} {signedIn} /> {:else if entry.kind === "create" || entry.kind === "fork"} <TimelineRepoEvent actor={entry.actor} items={entry.items} {signedIn} /> {:else if entry.kind === "followers"} <TimelineFollowers items={entry.items} {signedIn} /> {:else if entry.kind === "stargazers"} <TimelineStargazers items={entry.items} {signedIn} /> {:else} <TimelineForkers items={entry.items} {signedIn} /> {/if} </div> {/each} </div>{:else} <EmptyState message={emptyMessage} messageDirection="vertical" children={emptyAction} />{/if}