import { FieldType } from "@prismicio/types-internal/lib/customtypes"; import { IconType } from "react-icons"; import { AnyObjectSchema } from "yup"; import { TabField } from "@/legacy/lib/models/common/CustomType"; import { GroupSM, NestedGroupSM } from "@/legacy/lib/models/common/Group"; import { LocalOnlyCustomType } from "@/legacy/lib/models/common/ModelData"; interface WidgetBase { TYPE_NAME: FieldType; create: (label: string) => F; Meta: { icon: IconType; }; schema: S; // eslint-disable-next-line @typescript-eslint/ban-types FormFields: {}; CUSTOM_NAME?: string; // eslint-disable-next-line @typescript-eslint/no-explicit-any CustomListItem?: (props: any) => React.ReactElement; // eslint-disable-next-line @typescript-eslint/ban-types, @typescript-eslint/no-explicit-any Form?: (props: any) => React.ReactNode; prepareInitialValues?: ( customTypes: LocalOnlyCustomType[], initialValues: F["config"], ) => F["config"]; label: string; } export type Widget = F extends | GroupSM | NestedGroupSM ? WidgetBase & { hintItemName: string; } : WidgetBase; // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-explicit-any, @typescript-eslint/no-explicit-any export type AnyWidget = Widget;