~james/core

core/web/src/lib/components/timeline/TrendingRepos.svelte -rw-r--r-- 982 bytes
452f17b7 — james chore(import): snapshot james.dad.town/core at f70c71c7696a 16 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
<script lang="ts">
	import TrendingUp from "$icon/trending-up";
	import type { RepoCardData } from "#lib/components/profile/types.ts";
	import PreviewCard from "#lib/components/timeline/PreviewCard.svelte";
	import TrendingReposList from "#lib/components/timeline/TrendingReposList.svelte";
	import Pending from "#lib/components/ui/Pending.svelte";
	import Bones from "#lib/components/ui/Bones.svelte";
	import timelineTrendingreposlistSkeletonFixture from "#lib/bones/timeline-trendingreposlist--skeleton-fixture.bones.json";

	let {
		repos = []
	}: {
		repos?: RepoCardData[] | Promise<RepoCardData[]>;
	} = $props();
</script>

<PreviewCard title="Trending" icon={TrendingUp}>
	{#if repos instanceof Promise}
		<Pending>
			{#snippet skeleton()}
				<Bones capture={timelineTrendingreposlistSkeletonFixture} />
			{/snippet}
			{@const resolved = await repos}
			<TrendingReposList repos={resolved} />
		</Pending>
	{:else}
		<TrendingReposList {repos} />
	{/if}
</PreviewCard>