Mangane/app/soapbox/features/edit_profile/components/profile-preview.tsx
2022-08-22 23:28:17 +02:00

47 lines
1.6 KiB
TypeScript

import React from 'react';
import StillImage from 'soapbox/components/still_image';
import { HStack, Stack, Text } from 'soapbox/components/ui';
import VerificationBadge from 'soapbox/components/verification_badge';
import { useSoapboxConfig } from 'soapbox/hooks';
import type { Account } from 'soapbox/types/entities';
interface IProfilePreview {
account: Account,
}
/** Displays a preview of the user's account, including avatar, banner, etc. */
const ProfilePreview: React.FC<IProfilePreview> = ({ account }) => {
const { displayFqn } = useSoapboxConfig();
return (
<div className='bg-white dark:bg-slate-800 rounded-lg text-black dark:text-white sm:shadow dark:sm:shadow-inset overflow-hidden'>
<div>
<div className='relative w-full h-32 md:rounded-t-lg bg-gray-200 dark:bg-slate-900/50'>
<StillImage alt='' src={account.header} className='absolute inset-0 object-cover md:rounded-t-lg' />
</div>
</div>
<HStack space={3} alignItems='center' className='p-3'>
<div className='relative'>
<div className='h-12 w-12 bg-gray-400 rounded-full'>
<StillImage alt='' className='h-12 w-12 rounded-full' src={account.avatar} />
</div>
{account.verified && <div className='absolute -top-1.5 -right-1.5'><VerificationBadge /></div>}
</div>
<Stack className='truncate'>
<Text weight='medium' size='sm' truncate>
{account.display_name}
</Text>
<Text theme='muted' size='sm'>@{displayFqn ? account.fqn : account.acct}</Text>
</Stack>
</HStack>
</div>
);
};
export default ProfilePreview;