import { Box, Button, DialogActions, DialogContent, DialogTitle, FormControlLabel, InputAdornment, Radio, RadioGroup, TextField, Typography } from "@mui/material"; import FileUploader from "common/FileUploads/FileUploader"; import ResponsiveDialog from "common/ResponsiveDialog"; import SearchSelect, { Option } from "common/SearchSelect"; import { useMobile, useUserAPI } from "hooks"; import { Bin, Field, Contract, GrainBag, teamScope } from "models"; // import { Contract } from "models/Contract"; // import { GrainBag } from "models/GrainBag"; import moment from "moment"; import { pond } from "protobuf-ts/pond"; import { useBinAPI, useFieldAPI, useGlobalState, useGrainBagAPI, useSnackbar, useTransactionAPI } from "providers"; import { useState, useEffect } from "react"; import { getGrainUnit } from "utils"; interface Props { mainObject: Bin | GrainBag | Field | Contract; grainAdjustment?: number; hideFields?: boolean; asDestination?: boolean; restrictMatching?: boolean; open: boolean; close: () => void; callback?: (newTransaction?: pond.Transaction) => void; allowAttachmentUploads?: boolean; } export default function GrainTransaction(props: Props) { const { open, mainObject, close, grainAdjustment, callback, restrictMatching, hideFields, asDestination, allowAttachmentUploads } = props; const [isObject, setIsObject] = useState<"source" | "destination" | "">(""); const [selectedSource, setSelectedSource] = useState