import { get } from "es-toolkit/compat" import type { ExtractRecordPaths, RecordPathValue, RecordValue } from "./types" import { useRecord } from "./use-record" export type UseFieldValueOptions< TRecord extends RecordValue = RecordValue, TSource extends ExtractRecordPaths = ExtractRecordPaths, > = { defaultValue?: RecordPathValue record?: TRecord | null source: TSource } /** Reads a direct or nested field from a record override or context. */ export function useFieldValue< TRecord extends RecordValue = RecordValue, TSource extends ExtractRecordPaths = ExtractRecordPaths, >({ defaultValue, record: fallbackRecord, source, }: UseFieldValueOptions): | RecordPathValue | undefined { const record = useRecord({ record: fallbackRecord }) return get(record, source, defaultValue) as | RecordPathValue | undefined }