import { Dispatch, ReactNode, SetStateAction } from 'react'; import { useForm, UseFormProps } from '../../hooks/useForm.js'; import { FormFieldProps } from './FormField.js'; import { SelectInputProps } from '../SelectInput/index.js'; import { FormValues } from './types.js'; import { FormFields as FormFieldsComponent } from './FormFields.js'; import { FormTabs } from './FormTabs.js'; import { TextInputProps } from '../TextInput/index.js'; import { EnumTagInputProps, TagInputProps } from '../TagInput/index.js'; import { SchemaTypeName } from '@based/sdk/schema'; import { IconProps } from '../Icon/index.js'; import { MultiSelectInputProps } from '../MultiSelectInput/index.js'; export type FormContextProps = { fields: FormFieldsType; groups: FormProps['groups']; form: ReturnType; activeGroup?: string; setActiveGroup: Dispatch>; validate: UseFormProps['validate']; onSubmit: UseFormProps['onSubmit']; onRefOrderChange?: (path: string, draggedId: number, idx: number) => void; }; export declare const FormContext: import("react").Context; type TextFormField = { type: 'text'; inputType?: TextInputProps['type']; placeholder?: string; disabled?: boolean; }; type TextAreaFormField = { type: 'textarea'; placeholder?: string; disabled?: boolean; }; type NumberFormField = { type: 'number'; placeholder?: string; disabled?: boolean; }; type SwitchFormField = { type: 'switch'; placeholder?: string; disabled?: boolean; }; type CheckboxFormField = { type: 'checkbox'; placeholder?: string; disabled?: boolean; }; type DateFormField = { type: 'date'; placeholder?: string; disabled?: boolean; }; type DateTimeFormField = { type: 'datetime'; placeholder?: string; disabled?: boolean; }; type SelectFormField = { type: 'select'; placeholder?: string; disabled?: boolean; } & Pick; type MultiSelectFormField = { type: 'multiselect'; placeholder?: string; disabled?: boolean; } & Pick; type RichTextFormField = { type: 'richtext'; placeholder?: string; disabled?: boolean; }; type ReferenceField = { type: 'reference'; variant: 'single' | 'multiple'; ref: SchemaTypeName; placeholder?: string; placeholderIcon?: IconProps['variant']; disabled?: boolean; }; type TagField = { type: 'tag'; variant: TagInputProps['variant']; options?: EnumTagInputProps['options']; placeholder?: string; placeholderIcon?: IconProps['variant']; disabled?: boolean; }; type JsonField = { type: 'json'; placeholder?: string; disabled?: boolean; }; export type FormFieldType = (TextFormField | TextAreaFormField | NumberFormField | SwitchFormField | CheckboxFormField | DateFormField | DateTimeFormField | SelectFormField | MultiSelectFormField | RichTextFormField | ReferenceField | TagField | JsonField) & Pick; export type FormFieldsType = { [key: string]: FormFieldType | FormFieldsType; }; export type FormProps = { children: ReactNode | ((form: ReturnType) => React.ReactNode); groups?: { label: string; description?: string; fields: string[]; }[]; fields: FormFieldsType | ((values: FormValues) => FormFieldsType); onRefOrderChange?: (path: string, draggedId: number, idx: number) => void; } & UseFormProps; export declare const Form: { ({ fields: fieldsProp, groups, children, onRefOrderChange, ...useFormProps }: FormProps): import("react/jsx-runtime").JSX.Element; Fields: typeof FormFieldsComponent; Tabs: typeof FormTabs; }; export {};