1+ import { Avatar , AvatarFallback , AvatarImage } from '@/components/ui/avatar' ;
12import { Button } from '@/components/ui/button' ;
23import { Dialog , DialogContent , DialogHeader , DialogTitle , DialogTrigger } from '@/components/ui/dialog' ;
3-
4+ import { useInitials } from '@/hooks/use-initials' ;
45import { useForm } from '@inertiajs/react' ;
56import { useRef , useState } from 'react' ;
67import { toast } from 'sonner' ;
78import { ImageCrop , ImageCropApply , ImageCropContent } from '../../../components/ui/kibo-ui/image-crop' ;
89
910interface AvatarUploadProps {
1011 user : {
11- avatar ? : string | null | undefined ;
12+ avatar : string ;
1213 name : string ;
1314 } ;
1415}
@@ -30,12 +31,15 @@ export function AvatarUpload({ user }: AvatarUploadProps) {
3031 const [ selectedFile , setSelectedFile ] = useState < File | null > ( null ) ;
3132 const [ open , setOpen ] = useState ( false ) ;
3233 const fileInputRef = useRef < HTMLInputElement > ( null ) ;
34+ const getInitials = useInitials ( ) ;
3335 const {
3436 setData,
3537 post,
3638 processing,
3739 delete : destroy ,
38- } = useForm < {
40+ }
41+
42+ = useForm < {
3943 avatar : File | null ;
4044 } > ( {
4145 avatar : null ,
@@ -76,7 +80,10 @@ export function AvatarUpload({ user }: AvatarUploadProps) {
7680
7781 return (
7882 < div className = "flex items-center gap-4" >
79- < img src = { user . avatar || '' } alt = { user . name } className = "h-16 w-16 rounded-full object-cover" />
83+ < Avatar className = "h-16 w-16" >
84+ < AvatarImage src = { user . avatar } />
85+ < AvatarFallback > { getInitials ( user . name ) } </ AvatarFallback >
86+ </ Avatar >
8087 < div className = "grid gap-2" >
8188 < div className = "flex gap-2" >
8289 < Dialog open = { open } onOpenChange = { setOpen } >
0 commit comments