'use client' interface BasicInfoFieldsProps { uniqueId: string formData: { firstName: string lastName: string username: string } setFormData: (updater: (prev: any) => any) => void isLoading: boolean usernameError: string isCheckingUsername: boolean } /** * Basic information fields for the profile edit form * @param props - Component props */ export function BasicInfoFields({ uniqueId, formData, setFormData, isLoading, usernameError, isCheckingUsername }: BasicInfoFieldsProps) { return (
Basic Information
{ setFormData(prev => ({ ...prev, firstName: e.target.value })) }} disabled={isLoading} className="flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50" />
{ setFormData(prev => ({ ...prev, lastName: e.target.value })) }} disabled={isLoading} className="flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50" />
{ const value = e.target.value.toLowerCase().replace(/[^a-z0-9_-]/g, '') setFormData(prev => ({ ...prev, username: value })) }} disabled={isLoading} className={`flex h-10 w-full rounded-md border bg-background px-3 py-2 text-sm ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 ${ usernameError ? 'border-destructive' : 'border-input' }`} />

Used for your profile URL: /u/{formData.username || 'username'}

{isCheckingUsername && Checking...}
{usernameError &&

{usernameError}

}
) }