src/components/ui/avatar.tsx (view raw)
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 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
import { cn } from '@/lib/utils' import * as AvatarPrimitive from '@radix-ui/react-avatar' import * as React from 'react' const Avatar = React.forwardRef< React.ElementRef<typeof AvatarPrimitive.Root>, React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Root> >(({ className, ...props }, ref) => ( <AvatarPrimitive.Root ref={ref} className={cn( 'relative flex h-10 w-10 shrink-0 overflow-hidden', className, )} {...props} /> )) Avatar.displayName = AvatarPrimitive.Root.displayName const AvatarImage = React.forwardRef< React.ElementRef<typeof AvatarPrimitive.Image>, React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Image> >(({ className, ...props }, ref) => ( <AvatarPrimitive.Image ref={ref} className={cn('aspect-square size-full', className)} {...props} /> )) AvatarImage.displayName = AvatarPrimitive.Image.displayName const AvatarFallback = React.forwardRef< React.ElementRef<typeof AvatarPrimitive.Fallback>, React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Fallback> >(({ className, ...props }, ref) => ( <AvatarPrimitive.Fallback ref={ref} className={cn( 'flex size-full items-center justify-center bg-muted', className, )} {...props} /> )) AvatarFallback.displayName = AvatarPrimitive.Fallback.displayName interface AvatarComponentProps { src?: string alt?: string fallback?: string className?: string } const AvatarComponent: React.FC<AvatarComponentProps> = ({ src, alt, fallback, className, }) => { return ( <Avatar className={className}> <AvatarImage src={src} alt={alt} /> <AvatarFallback>{fallback}</AvatarFallback> </Avatar> ) } export default AvatarComponent |