zod-to-fields
Version:
Turn your Zod schemas into configurable field arrays for easy integration with HTML, React, Vue, and more.
28 lines (27 loc) • 1.2 kB
TypeScript
import type { BaseFieldAttributes } from '../types/FieldAttributes';
import type { PartialFieldInputAttributes, PartialFieldSelectAttributes, PartialFieldOptionAttributes } from '../types/HTMLAttributes';
type ExtendedFieldInputAttributes = BaseFieldAttributes & Omit<PartialFieldInputAttributes, 'name'>;
type ExtendedFieldSelectAttributes = BaseFieldAttributes & Omit<PartialFieldSelectAttributes, 'options'> & {
type: 'select';
options: Array<PartialFieldOptionAttributes>;
};
export type InputBooleanFieldOptions = ExtendedFieldInputAttributes & {
tag: 'input';
type: 'checkbox' | 'radio';
};
export type InputStringFieldOptions = ExtendedFieldInputAttributes & {
tag: 'input';
type: 'url' | 'text' | 'password' | 'search' | 'tel' | 'email';
};
export type InputNumberFieldOptions = ExtendedFieldInputAttributes & {
tag: 'input';
type: 'number';
};
type InputEnumFieldSelectOptions = {
tag: 'select';
} & ExtendedFieldSelectAttributes;
type InputEnumFieldInputOptions = InputBooleanFieldOptions & {
options: Array<PartialFieldOptionAttributes>;
};
export type InputEnumFieldOptions = InputEnumFieldSelectOptions | InputEnumFieldInputOptions;
export {};