@connect-soft/form-generator 1.0.0-alpha → 1.1.0-alpha10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. package/README.md +1102 -28
  2. package/dist/index.js +1184 -391
  3. package/dist/index.js.map +1 -1
  4. package/dist/{index.m.js → index.mjs} +1163 -389
  5. package/dist/index.mjs.map +1 -0
  6. package/dist/types/components/form/array-field-renderer.d.ts +39 -0
  7. package/dist/types/components/form/array-field-renderer.d.ts.map +1 -0
  8. package/dist/types/components/form/create-template-fields.d.ts +3 -0
  9. package/dist/types/components/form/create-template-fields.d.ts.map +1 -0
  10. package/dist/types/components/form/field-renderer.d.ts +1 -6
  11. package/dist/types/components/form/field-renderer.d.ts.map +1 -1
  12. package/dist/types/components/form/fields-context.d.ts +26 -0
  13. package/dist/types/components/form/fields-context.d.ts.map +1 -0
  14. package/dist/types/components/form/form-generator-typed.d.ts +47 -0
  15. package/dist/types/components/form/form-generator-typed.d.ts.map +1 -0
  16. package/dist/types/components/form/form-generator.d.ts +43 -6
  17. package/dist/types/components/form/form-generator.d.ts.map +1 -1
  18. package/dist/types/components/form/form-utils.d.ts +47 -0
  19. package/dist/types/components/form/form-utils.d.ts.map +1 -0
  20. package/dist/types/components/form/index.d.ts +5 -3
  21. package/dist/types/components/form/index.d.ts.map +1 -1
  22. package/dist/types/index.d.ts +13 -6
  23. package/dist/types/index.d.ts.map +1 -1
  24. package/dist/types/lib/field-registry.d.ts +19 -59
  25. package/dist/types/lib/field-registry.d.ts.map +1 -1
  26. package/dist/types/lib/field-types.d.ts +127 -26
  27. package/dist/types/lib/field-types.d.ts.map +1 -1
  28. package/dist/types/lib/index.d.ts +3 -4
  29. package/dist/types/lib/index.d.ts.map +1 -1
  30. package/dist/types/lib/template-types.d.ts +55 -0
  31. package/dist/types/lib/template-types.d.ts.map +1 -0
  32. package/package.json +11 -25
  33. package/MIGRATION.md +0 -503
  34. package/dist/index.m.js.map +0 -1
  35. package/dist/styles/globals.css +0 -2
@@ -16,35 +16,136 @@ export interface FieldOption {
16
16
  value: string;
17
17
  disabled?: boolean;
18
18
  }
19
- export type CreateFieldType<TType extends string, TValue = any, TProps extends Record<string, any> = Record<string, never>> = BaseField<TType, TValue> & TProps;
20
- export type Field = BaseField<string, any> & Record<string, any>;
21
- export interface BaseLayout<TType extends string = string> {
22
- type: TType;
23
- name?: string;
19
+ export type CreateFieldType<TType extends string, TValue = any, TProps extends Record<string, any> = object> = BaseField<TType, TValue> & TProps;
20
+ export interface TextFieldProps {
21
+ placeholder?: string;
22
+ minLength?: number;
23
+ maxLength?: number;
24
+ pattern?: string;
25
+ }
26
+ export interface NumberFieldProps {
27
+ placeholder?: string;
28
+ min?: number;
29
+ max?: number;
30
+ step?: number;
31
+ }
32
+ export interface OptionsFieldProps {
33
+ options: FieldOption[];
34
+ placeholder?: string;
35
+ }
36
+ export interface TextareaFieldProps {
37
+ placeholder?: string;
38
+ rows?: number;
39
+ minLength?: number;
40
+ maxLength?: number;
41
+ }
42
+ export interface DateFieldProps {
43
+ min?: string;
44
+ max?: string;
45
+ }
46
+ export interface FieldTypeRegistry {
47
+ 'text': CreateFieldType<'text', string, TextFieldProps & {
48
+ fieldType?: 'text' | 'email' | 'password' | 'tel' | 'url' | 'search';
49
+ }>;
50
+ 'email': CreateFieldType<'email', string, TextFieldProps>;
51
+ 'password': CreateFieldType<'password', string, TextFieldProps>;
52
+ 'tel': CreateFieldType<'tel', string, TextFieldProps>;
53
+ 'url': CreateFieldType<'url', string, TextFieldProps>;
54
+ 'search': CreateFieldType<'search', string, TextFieldProps>;
55
+ 'number': CreateFieldType<'number', number, NumberFieldProps>;
56
+ 'range': CreateFieldType<'range', number, NumberFieldProps>;
57
+ 'textarea': CreateFieldType<'textarea', string, TextareaFieldProps>;
58
+ 'checkbox': CreateFieldType<'checkbox', boolean>;
59
+ 'switch': CreateFieldType<'switch', boolean>;
60
+ 'select': CreateFieldType<'select', string, OptionsFieldProps>;
61
+ 'radio': CreateFieldType<'radio', string, OptionsFieldProps>;
62
+ 'date': CreateFieldType<'date', Date, DateFieldProps>;
63
+ 'time': CreateFieldType<'time', string>;
64
+ 'datetime': CreateFieldType<'datetime', Date, DateFieldProps>;
65
+ 'datetime-local': CreateFieldType<'datetime-local', Date, DateFieldProps>;
66
+ 'month': CreateFieldType<'month', string>;
67
+ 'week': CreateFieldType<'week', string>;
68
+ 'color': CreateFieldType<'color', string>;
69
+ 'file': CreateFieldType<'file', File | FileList, {
70
+ accept?: string;
71
+ multiple?: boolean;
72
+ }>;
73
+ 'hidden': CreateFieldType<'hidden', string>;
74
+ }
75
+ export interface ArrayField<TFields extends readonly BaseField[] = readonly BaseField[]> {
76
+ type: 'array';
77
+ name: string;
78
+ label?: string;
79
+ description?: string;
24
80
  hidden?: boolean;
25
81
  className?: string;
26
- wrapFieldNames?: boolean;
82
+ fields: TFields;
83
+ minItems?: number;
84
+ maxItems?: number;
85
+ defaultValue?: Array<Record<string, unknown>>;
27
86
  }
28
- export interface ColumnConfig {
29
- title?: string;
30
- width?: string | number;
31
- children: FormItem[];
32
- className?: string;
87
+ export declare function isArrayField(field: FormItem | ArrayField): field is ArrayField;
88
+ export type RegisteredFieldType = keyof FieldTypeRegistry;
89
+ export type RegisteredField = FieldTypeRegistry[RegisteredFieldType];
90
+ export type FieldByType<T extends RegisteredFieldType> = FieldTypeRegistry[T];
91
+ export type Field = RegisteredField;
92
+ export type FormItem = Field | ArrayField;
93
+ export interface FieldTypeValueMap {
94
+ 'text': string;
95
+ 'textarea': string;
96
+ 'email': string;
97
+ 'password': string;
98
+ 'url': string;
99
+ 'tel': string;
100
+ 'search': string;
101
+ 'number': number;
102
+ 'range': number;
103
+ 'checkbox': boolean;
104
+ 'switch': boolean;
105
+ 'radio': string;
106
+ 'select': string;
107
+ 'date': Date;
108
+ 'datetime': Date;
109
+ 'datetime-local': Date;
110
+ 'time': string;
111
+ 'month': string;
112
+ 'week': string;
113
+ 'color': string;
114
+ 'file': File | FileList;
115
+ 'hidden': string;
33
116
  }
34
- export interface ColumnsLayout extends BaseLayout<'columns'> {
35
- type: 'columns';
36
- columns: ColumnConfig[];
37
- gap?: string | number;
38
- }
39
- export interface SectionLayout extends BaseLayout<'section'> {
40
- type: 'section';
41
- title?: string;
42
- children: FormItem[];
43
- }
44
- export type LayoutBlock = ColumnsLayout | SectionLayout;
45
- export type FormItem = Field | LayoutBlock;
46
- export declare function isLayoutBlock(item: FormItem): item is LayoutBlock;
47
- export type InferFormValues<Fields extends readonly BaseField[]> = {
48
- [K in Fields[number] as K['name']]: K extends BaseField<any, infer V> ? V : any;
117
+ export type FieldValueType<T extends string> = T extends keyof FieldTypeValueMap ? FieldTypeValueMap[T] : unknown;
118
+ export type InferFieldValue<F> = F extends BaseField<infer T, infer V> ? (unknown extends V ? FieldValueType<T> : V) : unknown;
119
+ export type InferArrayItemValues<T extends readonly BaseField[]> = {
120
+ [K in T[number] as K['name']]: InferFieldValue<K>;
121
+ };
122
+ export type InferFormValues<T extends readonly FormItem[]> = {
123
+ [K in T[number] as K['name']]: K extends ArrayField<infer TFields> ? Array<InferArrayItemValues<TFields>> : K extends BaseField ? K['required'] extends true ? InferFieldValue<K> : InferFieldValue<K> | undefined : unknown;
49
124
  };
125
+ export type InferFormValuesFromFields<T extends FormItem[]> = InferFormValues<readonly [...T]>;
126
+ export declare function createField<F extends RegisteredField>(field: F): F;
127
+ export declare function createArrayField<TFields extends readonly BaseField[]>(field: Omit<ArrayField<TFields>, 'type'> & {
128
+ fields: TFields;
129
+ }): ArrayField<TFields>;
130
+ export type ValidateFieldType<T> = T extends {
131
+ type: infer TType;
132
+ } ? TType extends RegisteredFieldType | 'array' ? T : {
133
+ __error: `Invalid field type '${TType & string}'. Must be a registered field type.`;
134
+ type: TType;
135
+ } : T;
136
+ export type StrictFormItem<T> = T extends ArrayField ? T : T extends {
137
+ type: infer TType;
138
+ } ? TType extends RegisteredFieldType ? T : {
139
+ __error: `Invalid field type '${TType & string}'`;
140
+ type: TType;
141
+ name: string;
142
+ } : never;
143
+ export declare function strictFields<T extends FormItem[]>(fields: {
144
+ [K in keyof T]: StrictFormItem<T[K]>;
145
+ }): T;
146
+ export declare function validateFieldType(type: string, registeredTypes: string[]): RegisteredFieldType;
147
+ export declare function validateFieldTypes<T extends readonly FormItem[]>(fields: T, registeredTypes: string[], options?: {
148
+ throwOnError?: boolean;
149
+ warn?: boolean;
150
+ }): T;
50
151
  //# sourceMappingURL=field-types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"field-types.d.ts","sourceRoot":"","sources":["../../../src/lib/field-types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,MAAM,WAAW,SAAS,CAAC,KAAK,SAAS,MAAM,GAAG,MAAM,EAAE,MAAM,GAAG,GAAG;IAClE,IAAI,EAAE,KAAK,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAKD,MAAM,WAAW,WAAW;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;CACtB;AAaD,MAAM,MAAM,eAAe,CACvB,KAAK,SAAS,MAAM,EACpB,MAAM,GAAG,GAAG,EACZ,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,IAC1D,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC;AAMtC,MAAM,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AASjE,MAAM,WAAW,UAAU,CAAC,KAAK,SAAS,MAAM,GAAG,MAAM;IACrD,IAAI,EAAE,KAAK,CAAC;IAEZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC5B;AAKD,MAAM,WAAW,YAAY;IAEzB,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAExB,QAAQ,EAAE,QAAQ,EAAE,CAAC;IAErB,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAKD,MAAM,WAAW,aAAc,SAAQ,UAAU,CAAC,SAAS,CAAC;IACxD,IAAI,EAAE,SAAS,CAAC;IAEhB,OAAO,EAAE,YAAY,EAAE,CAAC;IAExB,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACzB;AAKD,MAAM,WAAW,aAAc,SAAQ,UAAU,CAAC,SAAS,CAAC;IACxD,IAAI,EAAE,SAAS,CAAC;IAEhB,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,QAAQ,EAAE,QAAQ,EAAE,CAAC;CACxB;AAKD,MAAM,MAAM,WAAW,GAAG,aAAa,GAAG,aAAa,CAAC;AAKxD,MAAM,MAAM,QAAQ,GAAG,KAAK,GAAG,WAAW,CAAC;AAK3C,wBAAgB,aAAa,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,IAAI,WAAW,CAEjE;AAKD,MAAM,MAAM,eAAe,CAAC,MAAM,SAAS,SAAS,SAAS,EAAE,IAAI;KAC9D,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;CAClF,CAAC"}
1
+ {"version":3,"file":"field-types.d.ts","sourceRoot":"","sources":["../../../src/lib/field-types.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,7 @@
1
1
  export * from './field-types';
2
- export { registerField, registerFields, getFieldComponent, getFieldClassName, getFieldOptions, getFieldValidator, hasFieldType, unregisterField, getRegisteredFieldTypes, clearFieldRegistry } from './field-registry';
2
+ export type { TemplateFields, TemplateFieldsUtils, TemplateButtons, TemplateRenderProps, TemplateRenderFn, FieldRenderOptions, TemplateArrayField, TemplateArrayItem } from './template-types';
3
+ export { registerField, registerFields, getFieldComponent, getFieldOptions, getFieldValidator, hasFieldType, unregisterField, getRegisteredFieldTypes, clearFieldRegistry } from './field-registry';
3
4
  export type { FieldComponentProps, FieldComponent, FieldRegistrationOptions, FieldDefinition, ValidatorFactory, FieldState } from './field-registry';
4
5
  export { registerFormComponents, registerFormComponent, getFormComponent, hasFormComponent, getFormComponents, clearFormComponentRegistry, clearAllRegistries } from './field-registry';
5
- export type { FormComponents, FormItemProps, FormLabelProps, FormDescriptionProps, FormMessageProps, SubmitButtonProps } from './field-registry';
6
- export { registerLayoutComponents, registerLayoutComponent, getLayoutComponent, hasLayoutComponent, clearLayoutRegistry } from './field-registry';
7
- export type { LayoutComponents, ColumnsLayoutProps, SectionLayoutProps } from './field-registry';
6
+ export type { FormComponents, SubmitButtonProps, FieldWrapperProps, FieldsWrapperProps } from './field-registry';
8
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/index.ts"],"names":[],"mappings":"AACA,cAAc,eAAe,CAAC;AAG9B,OAAO,EACH,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EACjB,YAAY,EACZ,eAAe,EACf,uBAAuB,EACvB,kBAAkB,EACrB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACR,mBAAmB,EACnB,cAAc,EACd,wBAAwB,EACxB,eAAe,EACf,gBAAgB,EAChB,UAAU,EACb,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACH,sBAAsB,EACtB,qBAAqB,EACrB,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,0BAA0B,EAC1B,kBAAkB,EACrB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACR,cAAc,EACd,aAAa,EACb,cAAc,EACd,oBAAoB,EACpB,gBAAgB,EAChB,iBAAiB,EACpB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACH,wBAAwB,EACxB,uBAAuB,EACvB,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,EACtB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/index.ts"],"names":[],"mappings":"AACA,cAAc,eAAe,CAAC;AAG9B,YAAY,EACR,cAAc,EACd,mBAAmB,EACnB,eAAe,EACf,mBAAmB,EACnB,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,EAClB,iBAAiB,EACpB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACH,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EACjB,YAAY,EACZ,eAAe,EACf,uBAAuB,EACvB,kBAAkB,EACrB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACR,mBAAmB,EACnB,cAAc,EACd,wBAAwB,EACxB,eAAe,EACf,gBAAgB,EAChB,UAAU,EACb,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACH,sBAAsB,EACtB,qBAAqB,EACrB,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,0BAA0B,EAC1B,kBAAkB,EACrB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EAAE,cAAc,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,55 @@
1
+ import type { FieldWrapperProps, FieldsWrapperProps } from './field-registry';
2
+ import type { ArrayField, BaseField } from './field-types';
3
+ import type { ComponentType, ReactElement } from 'react';
4
+ import type { FieldValues, UseFormReturn } from 'react-hook-form';
5
+ export interface FieldRenderOptions {
6
+ className?: string;
7
+ namePrefix?: string;
8
+ }
9
+ export interface TemplateFieldsUtils {
10
+ all: ReactElement[];
11
+ remaining: ReactElement[];
12
+ names: string[];
13
+ has(name: string): boolean;
14
+ render(...names: string[]): ReactElement[];
15
+ }
16
+ export type TemplateFields = TemplateFieldsUtils & {
17
+ [fieldName: string]: ReactElement;
18
+ };
19
+ export interface TemplateButtons {
20
+ submit: ReactElement;
21
+ reset?: ReactElement;
22
+ }
23
+ export interface TemplateArrayItem {
24
+ id: string;
25
+ index: number;
26
+ remove: () => void;
27
+ move: (toIndex: number) => void;
28
+ fields: Record<string, ReactElement>;
29
+ fieldNames: string[];
30
+ namePrefix: string;
31
+ }
32
+ export interface TemplateArrayField {
33
+ field: ArrayField;
34
+ }
35
+ export interface TemplateRenderProps<TValues extends FieldValues = FieldValues> {
36
+ fields: TemplateFields;
37
+ arrays: Record<string, TemplateArrayField>;
38
+ buttons: TemplateButtons;
39
+ title?: string;
40
+ description?: string;
41
+ form: UseFormReturn<TValues>;
42
+ isSubmitting: boolean;
43
+ isValid: boolean;
44
+ isDirty: boolean;
45
+ renderField: (field: BaseField, options?: FieldRenderOptions) => ReactElement;
46
+ FieldWrapper: ComponentType<FieldWrapperProps>;
47
+ FieldsWrapper: ComponentType<FieldsWrapperProps>;
48
+ }
49
+ export type TemplateRenderFn<TValues extends FieldValues = FieldValues> = (props: TemplateRenderProps<TValues>) => ReactElement | null;
50
+ export interface FieldEntry {
51
+ field: BaseField;
52
+ element: ReactElement;
53
+ accessed: boolean;
54
+ }
55
+ //# sourceMappingURL=template-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template-types.d.ts","sourceRoot":"","sources":["../../../src/lib/template-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC9E,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AACzD,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAKlE,MAAM,WAAW,kBAAkB;IAE/B,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB;AAKD,MAAM,WAAW,mBAAmB;IAEhC,GAAG,EAAE,YAAY,EAAE,CAAC;IAGpB,SAAS,EAAE,YAAY,EAAE,CAAC;IAG1B,KAAK,EAAE,MAAM,EAAE,CAAC;IAGhB,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IAG3B,MAAM,CAAC,GAAG,KAAK,EAAE,MAAM,EAAE,GAAG,YAAY,EAAE,CAAC;CAC9C;AAOD,MAAM,MAAM,cAAc,GAAG,mBAAmB,GAAG;IAE/C,CAAC,SAAS,EAAE,MAAM,GAAG,YAAY,CAAC;CACrC,CAAC;AAKF,MAAM,WAAW,eAAe;IAE5B,MAAM,EAAE,YAAY,CAAC;IAErB,KAAK,CAAC,EAAE,YAAY,CAAC;CACxB;AAKD,MAAM,WAAW,iBAAiB;IAE9B,EAAE,EAAE,MAAM,CAAC;IAEX,KAAK,EAAE,MAAM,CAAC;IAEd,MAAM,EAAE,MAAM,IAAI,CAAC;IAEnB,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAEhC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAErC,UAAU,EAAE,MAAM,EAAE,CAAC;IAErB,UAAU,EAAE,MAAM,CAAC;CACtB;AA6BD,MAAM,WAAW,kBAAkB;IAE/B,KAAK,EAAE,UAAU,CAAC;CACrB;AAKD,MAAM,WAAW,mBAAmB,CAAC,OAAO,SAAS,WAAW,GAAG,WAAW;IAE1E,MAAM,EAAE,cAAc,CAAC;IAGvB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IAG3C,OAAO,EAAE,eAAe,CAAC;IAGzB,KAAK,CAAC,EAAE,MAAM,CAAC;IAGf,WAAW,CAAC,EAAE,MAAM,CAAC;IAGrB,IAAI,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;IAG7B,YAAY,EAAE,OAAO,CAAC;IAGtB,OAAO,EAAE,OAAO,CAAC;IAGjB,OAAO,EAAE,OAAO,CAAC;IAGjB,WAAW,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,kBAAkB,KAAK,YAAY,CAAC;IAG9E,YAAY,EAAE,aAAa,CAAC,iBAAiB,CAAC,CAAC;IAG/C,aAAa,EAAE,aAAa,CAAC,kBAAkB,CAAC,CAAC;CACpD;AAKD,MAAM,MAAM,gBAAgB,CAAC,OAAO,SAAS,WAAW,GAAG,WAAW,IAAI,CACtE,KAAK,EAAE,mBAAmB,CAAC,OAAO,CAAC,KAClC,YAAY,GAAG,IAAI,CAAC;AAKzB,MAAM,WAAW,UAAU;IAEvB,KAAK,EAAE,SAAS,CAAC;IAEjB,OAAO,EAAE,YAAY,CAAC;IAEtB,QAAQ,EAAE,OAAO,CAAC;CACrB"}
package/package.json CHANGED
@@ -1,43 +1,27 @@
1
1
  {
2
2
  "name": "@connect-soft/form-generator",
3
- "version": "1.0.0-alpha",
4
- "description": "Type-safe form generator with Radix UI, Tailwind CSS, and react-hook-form",
3
+ "version": "1.1.0-alpha10",
4
+ "description": "Headless, type-safe form generator with react-hook-form and Zod validation",
5
5
  "author": "Lukáš Černý <lukas.cerny@connect-soft.cz>",
6
6
  "license": "ISC",
7
7
  "main": "dist/index.js",
8
- "module": "dist/index.m.js",
8
+ "module": "dist/index.mjs",
9
9
  "types": "dist/types/index.d.ts",
10
- "sideEffects": [
11
- "*.css"
12
- ],
10
+ "sideEffects": false,
13
11
  "exports": {
14
12
  ".": {
15
13
  "types": "./dist/types/index.d.ts",
16
- "import": "./dist/index.m.js",
14
+ "import": "./dist/index.mjs",
17
15
  "require": "./dist/index.js"
18
- },
19
- "./styles": "./dist/styles/globals.css",
20
- "./advanced": {
21
- "types": "./dist/types/components/ui/advanced/index.d.ts",
22
- "import": "./dist/components/ui/advanced/index.m.js",
23
- "require": "./dist/components/ui/advanced/index.js"
24
- },
25
- "./adapters": {
26
- "types": "./dist/types/adapters/index.d.ts",
27
- "import": "./dist/adapters/index.m.js",
28
- "require": "./dist/adapters/index.js"
29
16
  }
30
17
  },
31
18
  "files": [
32
19
  "dist",
33
- "README.md",
34
- "MIGRATION.md"
20
+ "README.md"
35
21
  ],
36
22
  "keywords": [
37
23
  "react",
38
- "radix-ui",
39
- "tailwind",
40
- "shadcn",
24
+ "headless",
41
25
  "form",
42
26
  "forms",
43
27
  "form-generator",
@@ -45,7 +29,9 @@
45
29
  "validation",
46
30
  "typescript",
47
31
  "react-hooks",
48
- "react-hook-form"
32
+ "react-hook-form",
33
+ "zod",
34
+ "type-safe"
49
35
  ],
50
36
  "peerDependencies": {
51
37
  "react": "^19.0.0",
@@ -85,7 +71,7 @@
85
71
  "scripts": {
86
72
  "clean": "rimraf dist",
87
73
  "prebuild": "pnpm clean",
88
- "build": "rollup --config rollup.config.cjs && tsc -p tsconfig.build.json && mkdir -p dist/styles && cp src/styles/globals.css dist/styles/",
74
+ "build": "rollup --config rollup.config.cjs && tsc -p tsconfig.build.json",
89
75
  "type": "tsc --noEmit -p tsconfig.build.json",
90
76
  "test": "jest",
91
77
  "test:watch": "jest --watch",