import { Controller, type Control, type FieldErrors, type UseFormRegister } from "react-hook-form"; import { Autocomplete, FormControl, InputLabel, MenuItem, Select, Stack, TextField, Typography, } from "@mui/material"; import type { AccountListItem } from "@/domain/accounts/types/account"; import type { LocationFormValues } from "@/domain/locations/schemas/location-schema"; import { LOCATION_STATUS_OPTIONS } from "@/domain/locations/types/location"; import { LocationContactsFieldArray } from "./location-contacts-field-array"; import { StateSelect } from "./state-select"; interface SharedFieldsProps { control: Control; errors: FieldErrors; register: UseFormRegister; } interface LocationDetailsFieldsProps extends SharedFieldsProps { accountOptions: AccountListItem[]; isLoadingAccounts: boolean; onAccountSearchChange: (value: string) => void; } export function LocationDetailsFields({ accountOptions, control, errors, isLoadingAccounts, onAccountSearchChange, register, }: LocationDetailsFieldsProps) { return ( Location Information ( option.name || String(option.id)} isOptionEqualToValue={(option, value) => String(option.id) === String(value.id)} value={accountOptions.find((account) => String(account.id) === field.value) ?? null} onChange={(_event, option) => field.onChange(option ? String(option.id) : "")} onInputChange={(_event, value, reason) => { if (reason === "input") { onAccountSearchChange(value); } }} renderInput={(params) => ( )} className="flex-1" /> )} /> ); } export function LocationContactFields({ control, errors, register }: SharedFieldsProps) { return ( Contact Information ( Status )} /> ); }