From 045bded8b160b0b9121f4337176f680f247e428d Mon Sep 17 00:00:00 2001 From: abefernan <44572727+abefernan@users.noreply.github.com> Date: Mon, 22 Jul 2024 12:30:35 +0200 Subject: [PATCH] Add address field and schema --- .../CreateTxForm/Fields/FieldAddress.tsx | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 components/forms/CreateTxForm/Fields/FieldAddress.tsx diff --git a/components/forms/CreateTxForm/Fields/FieldAddress.tsx b/components/forms/CreateTxForm/Fields/FieldAddress.tsx new file mode 100644 index 0000000..a6fe54f --- /dev/null +++ b/components/forms/CreateTxForm/Fields/FieldAddress.tsx @@ -0,0 +1,39 @@ +import { FormControl, FormField, FormItem, FormLabel, FormMessage } from "@/components/ui/form"; +import { Input } from "@/components/ui/input"; +import { useChains } from "@/context/ChainsContext"; +import { exampleAddress } from "@/lib/displayHelpers"; +import { prettyFieldName } from "@/lib/form"; +import * as z from "zod"; +import type { FieldProps, FieldSchemaInput } from "./types"; + +export const getFieldAddressSchema = ({ chain }: FieldSchemaInput) => { + if (!chain) { + throw new Error("Could not get field address schema because of missing chain parameter"); + } + + return z + .string({ invalid_type_error: "Must be a string", required_error: "Required" }) + .trim() + .min(1, "Required") + .startsWith(chain.addressPrefix, `Invalid prefix for ${chain.chainDisplayName}`); +}; + +export default function FieldAddress({ form, fieldFormName }: FieldProps) { + const { chain } = useChains(); + + return ( + ( + + {prettyFieldName(fieldFormName)} + + + + + + )} + /> + ); +}