diff options
Diffstat (limited to 'src/components/ui/avatar.tsx')
| -rw-r--r-- | src/components/ui/avatar.tsx | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/src/components/ui/avatar.tsx b/src/components/ui/avatar.tsx new file mode 100644 index 0000000..d1c9aef --- /dev/null +++ b/src/components/ui/avatar.tsx @@ -0,0 +1,53 @@ +'use client'; + +import * as AvatarPrimitive from '@radix-ui/react-avatar'; +import type * as React from 'react'; + +import { cn } from '@/lib/utils'; + +function Avatar({ + className, + ...props +}: React.ComponentProps<typeof AvatarPrimitive.Root>) { + return ( + <AvatarPrimitive.Root + data-slot='avatar' + className={cn( + 'relative flex size-8 shrink-0 overflow-hidden rounded-full', + className, + )} + {...props} + /> + ); +} + +function AvatarImage({ + className, + ...props +}: React.ComponentProps<typeof AvatarPrimitive.Image>) { + return ( + <AvatarPrimitive.Image + data-slot='avatar-image' + className={cn('aspect-square size-full', className)} + {...props} + /> + ); +} + +function AvatarFallback({ + className, + ...props +}: React.ComponentProps<typeof AvatarPrimitive.Fallback>) { + return ( + <AvatarPrimitive.Fallback + data-slot='avatar-fallback' + className={cn( + 'flex size-full items-center justify-center rounded-full bg-muted', + className, + )} + {...props} + /> + ); +} + +export { Avatar, AvatarImage, AvatarFallback }; |
