import { FilePointer } from "@sealcode/file-manager"; import type { FlatTemplatable } from "tempstream"; import type { FormField } from "./fields/field.js"; import { FieldMessages } from "./controls/form-control.js"; export type FormDataPrimitive = string | string[] | number | undefined | FilePointer; export type FormDataValue = FormDataPrimitive | Record; export type FieldValueType = F extends FormField ? R : never; export type FormFieldsToValues>> = { [Property in keyof F]: FieldValueType; }; export type FormMessage = { type: "info" | "success" | "error"; text: string; }; export type FormData = { raw_values: Record; messages: FormMessage[]; field_messages: FieldMessages; }; export type FormReaction = { action: "stay"; content: FlatTemplatable; messages?: FormMessage[]; } | { action: "redirect"; url: string; messages?: FormMessage[]; };