{#if profile.isLoading}
{:else if profile.data && !profile.data.cid}
This user doesn't have a Grain profile yet.
View on Bluesky
{:else if profile.data} {@const p = profile.data} {@const name = p.displayName || p.handle || 'Profile'}
{#if viewerDid && viewerDid !== did} {#if !p.viewer?.blocking && !p.viewer?.blockedBy}
(followersOffset += d)} /> {/if} {/if}
Share
{#if viewerDid && viewerDid !== did}
{#if !blockHide}
{p.viewer?.muted ? 'Unmute' : 'Mute'}
{/if}
{p.viewer?.blocking ? 'Unblock' : 'Block'}
{/if}
(showStoryViewer = true) : p.avatar ? () => (lightboxSrc = p.avatar!) : undefined} />
{p.displayName || p.handle || did}
{#if !blockHide && p.viewer?.followedBy}
Follows you
{/if}
{p.handle ? `@${p.handle}` : did}
{#if blockHide}
{#if p.viewer?.blocking}
Account blocked
{:else}
This user has blocked you
{/if}
{:else}
{(p.galleryCount ?? 0).toLocaleString()}
{Number(p.galleryCount) === 1 ? 'gallery' : 'galleries'}
{((p.followersCount ?? 0) + followersOffset).toLocaleString()}
followers
{(p.followsCount ?? 0).toLocaleString()}
following
{#if p.description}
{/if} {#if group.data || (showGermButton && germUrl)}
{#if group.data}
Group
{/if} {#if showGermButton && germUrl}
Germ DM
{/if}
{/if} {#if (knownFollowers.data?.items ?? []).length > 0} {@const known = knownFollowers.data?.items ?? []}
Followed by {known.slice(0, 2).map((k) => k.displayName || k.handle).join(', ')}{#if known.length > 2}{' '}and {known.length - 2} other{known.length - 2 !== 1 ? 's' : ''} you follow{/if}
{/if} {/if}
{/if} {#if profile.isError}
This user doesn't have a Grain profile yet.
View on Bluesky
{:else} {#if lightboxSrc}
(lightboxSrc = null)} /> {/if} {#if !blockHide}
setTab('grid')} aria-label="Grid view">
{#if isOwnProfile}
setTab('favorites')} aria-label="Favorites">
setTab('stories')} aria-label="Story archive">
{/if}
{#if isOwnProfile && viewMode === 'grid' && !selectMode}
(selectMode = true)}>Select
{/if}
{#if viewMode === 'stories' && isOwnProfile}
{:else if viewMode === 'favorites' && isOwnProfile}
favorites.fetchNextPage()} /> {:else}
feed.fetchNextPage()} {selectMode} {selectedUris} onToggle={toggleSelect} /> {/if} {/if} {#if showStoryViewer}
(showStoryViewer = false)} /> {/if} {/if} {#if LOGIN_WALL && !viewerDid && profile.data?.cid}
{/if} {#if selectMode}
{#if deleting}
Deleting {deleteProgress.current} / {deleteProgress.total}...
{:else}
Cancel
{selectedUris.size} selected
Delete
{/if}
{/if}