import { Container, Stack, Group, Avatar, Text, Title, Spoiler, ActionIcon, Tooltip, Image, Badge, Card, } from '@mantine/core'; import MinimalProfileHeaderContainer from '../../containers/minimalProfileHeaderContainer/MinimalProfileHeaderContainer'; import { FaBluesky } from 'react-icons/fa6'; import { getProfile } from '../../lib/dal.server'; import { Fragment, Suspense } from 'react'; import RichTextRenderer from '@/components/contentDisplay/richTextRenderer/RichTextRenderer'; import { verifySessionOnServer } from '@/lib/auth/dal.server'; import FollowButton from '@/features/follows/components/followButton/FollowButton'; import ProfileFollowStats from '../profileFollowStats/ProfileFollowStats'; import FollowStatsSkeleton from '../profileFollowStats/Skeleton.FollowStats'; import { IoSearch } from 'react-icons/io5'; import { LinkActionIcon } from '@/components/link/MantineLink'; import { isBotAccount } from '@/features/platforms/bluesky/lib/utils/account'; import BotLabel from '../botLabel/BotLabel'; interface Props { handle: string; } export default async function ProfileHeader(props: Props) { const [session, profile] = await Promise.all([ verifySessionOnServer(), getProfile(props.handle), ]); return ( {profile.bannerUrl ? ( ) : ( )} {props.handle !== session?.handle && ( )} {/* profile info */} {profile.name} {isBotAccount(profile) && } {profile.followsYou && ( Follows you )} @{profile.handle} {profile.description && ( )} {/* follow stats */} }> ); }