Something went wrong. Try again.
Monorepo for Tangled tangled.org
Something went wrong. Try again.
Svelte
at icy/tmrrpn
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677<script lang="ts"> import { resolve } from "$app/paths"; import Avatar from "$lib/components/ui/Avatar.svelte"; import Users from "$icon/users"; import FollowButton from "./FollowButton.svelte"; import type { FollowChange, PersonData } from "./types"; import { createOptimisticCount } from "$lib/optimistic.svelte"; import Separator from "$lib/components/ui/Separator.svelte"; import { formatCount } from "$lib/format";
let { person }: { person: PersonData } = $props();
const followerCount = createOptimisticCount({ key: () => person.did, loaded: () => person.followers });
const followed = (change: FollowChange) => followerCount.adjust(change.delta);</script>
<div class="flex flex-col gap-4 md:flex-row md:items-start md:justify-between"> <div class="flex min-w-0 flex-1 items-center gap-4"> <div class="flex size-24 shrink-0 items-center justify-center"> <Avatar did={person.did} handle={person.handle} size="full" /> </div>
<div class="flex min-w-0 flex-1 flex-col justify-around"> <div class="flex max-w-full items-center gap-2"> <a href={resolve(`/${person.handle}` as "/")} class="min-w-0 truncate font-bold text-foreground-default hover:underline" > {person.handle} </a> {#if person.pronouns} <span class="shrink-0 whitespace-nowrap text-foreground-muted" >{person.pronouns}</span > {/if} </div> {#if person.description} <p class="pb-2 wrap-break-word md:pb-2"> {person.description} </p> {/if} <div class="my-2 flex max-w-full items-center gap-2 truncate text-foreground-subtle"> <Users class="size-4 shrink-0" /> <span ><a href={resolve(`/${person.handle}?tab=followers` as "/")} class="hover:text-foreground-default hover:underline" >{formatCount(followerCount.value)} followers</a ></span > <Separator variant="dot" /> <span ><a href={resolve(`/${person.handle}?tab=following` as "/")} class="hover:text-foreground-default hover:underline" >{formatCount(person.following)} following</a ></span > </div> </div> </div>
{#if !person.isSelf} <div class="w-full md:w-auto md:max-w-32"> <FollowButton profileDid={person.did} initialRkey={person.viewerFollowRkey} onCommit={followed} /> </div> {/if}</div>