'use client'; import { useRef, type ComponentProps } from 'react'; import { Controller, type Control, type FieldErrors, type UseFormRegister, } from 'react-hook-form'; import { Loader2 } from 'lucide-react'; import { FormField, PhoneInput } from '@/components/form'; import { RoleSelect } from '@/components/lookups/RoleSelect'; import { Button } from '@/components/ui/button'; import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, } from '@/components/ui/dialog'; import { Input } from '@/components/ui/input'; import type { UserFormValues } from '../hooks/useUserForm'; interface UserSheetProps { open: boolean; onOpenChange: (open: boolean) => void; userId?: number; register: UseFormRegister; control: Control; errors: FieldErrors; isSubmitted: boolean; onSubmit: ComponentProps<'form'>['onSubmit']; roleId: string; onRoleChange: (roleId: string) => void; canSubmit: boolean; isSaving: boolean; } export function UserSheet({ open, onOpenChange, userId, register, control, errors, isSubmitted, onSubmit, roleId, onRoleChange, canSubmit, isSaving, }: UserSheetProps) { const roleComboboxPortalRef = useRef(null); const firstNameErrorMessage = isSubmitted ? errors.first_name?.message : undefined; const lastNameErrorMessage = isSubmitted ? errors.last_name?.message : undefined; const emailErrorMessage = isSubmitted ? errors.email?.message : undefined; const phoneErrorMessage = isSubmitted ? errors.phone_number?.message : undefined; const roleErrorMessage = isSubmitted ? errors.role_id?.message : undefined; return ( {userId ? 'Edit User' : 'Create User'} Assign user details and a role.
( )} />
); }