@delightui/components 0.1.161 → 0.1.162-alpha.1

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 (89) hide show
  1. package/dist/cjs/components/atoms/Checkbox/Checkbox.d.ts +1 -1
  2. package/dist/cjs/components/atoms/Checkbox/Checkbox.presenter.d.ts +1 -1
  3. package/dist/cjs/components/atoms/CheckboxItem/CheckboxItem.d.ts +1 -1
  4. package/dist/cjs/components/atoms/CheckboxItem/CheckboxItem.presenter.d.ts +2 -2
  5. package/dist/cjs/components/atoms/CustomToggle/CustomToggle.d.ts +1 -1
  6. package/dist/cjs/components/atoms/Input/Input.d.ts +1 -1
  7. package/dist/cjs/components/atoms/Input/Input.presenter.d.ts +2 -2
  8. package/dist/cjs/components/atoms/Password/Password.presenter.d.ts +2 -2
  9. package/dist/cjs/components/atoms/RadioButton/RadioButton.d.ts +1 -1
  10. package/dist/cjs/components/atoms/RadioButtonItem/RadioButtonItem.d.ts +1 -1
  11. package/dist/cjs/components/atoms/RadioButtonItem/RadioButtonItem.presenter.d.ts +2 -2
  12. package/dist/cjs/components/atoms/TextArea/TextArea.d.ts +1 -1
  13. package/dist/cjs/components/atoms/TextArea/TextArea.presenter.d.ts +1 -1
  14. package/dist/cjs/components/atoms/Toggle/Toggle.d.ts +1 -1
  15. package/dist/cjs/components/atoms/Toggle/Toggle.presenter.d.ts +2 -2
  16. package/dist/cjs/components/atoms/ToggleButton/ToggleButton.d.ts +1 -1
  17. package/dist/cjs/components/molecules/FormField/FormField.d.ts +28 -2
  18. package/dist/cjs/components/molecules/FormField/FormField.presenter.d.ts +16 -8
  19. package/dist/cjs/components/molecules/FormField/FormField.types.d.ts +85 -52
  20. package/dist/cjs/components/molecules/FormField/FormField.utils.d.ts +8 -11
  21. package/dist/cjs/components/molecules/FormField/index.d.ts +1 -2
  22. package/dist/cjs/components/molecules/FormField/useSafeController.d.ts +14 -0
  23. package/dist/cjs/components/molecules/FormField/useSafeFormContext.d.ts +8 -0
  24. package/dist/cjs/components/molecules/Search/Search.d.ts +1 -1
  25. package/dist/cjs/components/molecules/Search/Search.presenter.d.ts +2 -2
  26. package/dist/cjs/components/molecules/Select/Select.presenter.d.ts +4 -4
  27. package/dist/cjs/components/organisms/Form/Form.d.ts +22 -1
  28. package/dist/cjs/components/organisms/Form/Form.presenter.d.ts +290 -0
  29. package/dist/cjs/components/organisms/Form/Form.types.d.ts +24 -131
  30. package/dist/cjs/components/organisms/Form/examples/DropzoneFormExample.d.ts +6 -0
  31. package/dist/cjs/components/organisms/Form/examples/UpdatedFormExample.d.ts +2 -0
  32. package/dist/cjs/components/organisms/Form/{UseFormExample.d.ts → examples/UseFormExample.d.ts} +0 -3
  33. package/dist/cjs/components/organisms/Form/index.d.ts +4 -4
  34. package/dist/cjs/components/organisms/Form/useAutosave.d.ts +10 -0
  35. package/dist/cjs/library.js +3 -3
  36. package/dist/cjs/library.js.map +1 -1
  37. package/dist/esm/components/atoms/Checkbox/Checkbox.d.ts +1 -1
  38. package/dist/esm/components/atoms/Checkbox/Checkbox.presenter.d.ts +1 -1
  39. package/dist/esm/components/atoms/CheckboxItem/CheckboxItem.d.ts +1 -1
  40. package/dist/esm/components/atoms/CheckboxItem/CheckboxItem.presenter.d.ts +2 -2
  41. package/dist/esm/components/atoms/CustomToggle/CustomToggle.d.ts +1 -1
  42. package/dist/esm/components/atoms/Input/Input.d.ts +1 -1
  43. package/dist/esm/components/atoms/Input/Input.presenter.d.ts +2 -2
  44. package/dist/esm/components/atoms/Password/Password.presenter.d.ts +2 -2
  45. package/dist/esm/components/atoms/RadioButton/RadioButton.d.ts +1 -1
  46. package/dist/esm/components/atoms/RadioButtonItem/RadioButtonItem.d.ts +1 -1
  47. package/dist/esm/components/atoms/RadioButtonItem/RadioButtonItem.presenter.d.ts +2 -2
  48. package/dist/esm/components/atoms/TextArea/TextArea.d.ts +1 -1
  49. package/dist/esm/components/atoms/TextArea/TextArea.presenter.d.ts +1 -1
  50. package/dist/esm/components/atoms/Toggle/Toggle.d.ts +1 -1
  51. package/dist/esm/components/atoms/Toggle/Toggle.presenter.d.ts +2 -2
  52. package/dist/esm/components/atoms/ToggleButton/ToggleButton.d.ts +1 -1
  53. package/dist/esm/components/molecules/FormField/FormField.d.ts +28 -2
  54. package/dist/esm/components/molecules/FormField/FormField.presenter.d.ts +16 -8
  55. package/dist/esm/components/molecules/FormField/FormField.types.d.ts +85 -52
  56. package/dist/esm/components/molecules/FormField/FormField.utils.d.ts +8 -11
  57. package/dist/esm/components/molecules/FormField/index.d.ts +1 -2
  58. package/dist/esm/components/molecules/FormField/useSafeController.d.ts +14 -0
  59. package/dist/esm/components/molecules/FormField/useSafeFormContext.d.ts +8 -0
  60. package/dist/esm/components/molecules/Search/Search.d.ts +1 -1
  61. package/dist/esm/components/molecules/Search/Search.presenter.d.ts +2 -2
  62. package/dist/esm/components/molecules/Select/Select.presenter.d.ts +4 -4
  63. package/dist/esm/components/organisms/Form/Form.d.ts +22 -1
  64. package/dist/esm/components/organisms/Form/Form.presenter.d.ts +290 -0
  65. package/dist/esm/components/organisms/Form/Form.types.d.ts +24 -131
  66. package/dist/esm/components/organisms/Form/examples/DropzoneFormExample.d.ts +6 -0
  67. package/dist/esm/components/organisms/Form/examples/UpdatedFormExample.d.ts +2 -0
  68. package/dist/esm/components/organisms/Form/{UseFormExample.d.ts → examples/UseFormExample.d.ts} +0 -3
  69. package/dist/esm/components/organisms/Form/index.d.ts +4 -4
  70. package/dist/esm/components/organisms/Form/useAutosave.d.ts +10 -0
  71. package/dist/esm/library.js +3 -3
  72. package/dist/esm/library.js.map +1 -1
  73. package/dist/index.d.ts +162 -232
  74. package/docs/FORM_MIGRATION_GUIDE.md +631 -0
  75. package/docs/components/molecules/FormField.md +129 -34
  76. package/docs/components/organisms/Form.md +858 -162
  77. package/package.json +4 -1
  78. package/dist/cjs/components/organisms/Form/DropzoneFormExample.d.ts +0 -6
  79. package/dist/cjs/components/organisms/Form/Form.utils.d.ts +0 -2
  80. package/dist/cjs/components/organisms/Form/FormContext.d.ts +0 -5
  81. package/dist/cjs/components/organisms/Form/UpdatedFormExample.d.ts +0 -23
  82. package/dist/cjs/components/organisms/Form/useForm.d.ts +0 -50
  83. package/dist/esm/components/organisms/Form/DropzoneFormExample.d.ts +0 -6
  84. package/dist/esm/components/organisms/Form/Form.utils.d.ts +0 -2
  85. package/dist/esm/components/organisms/Form/FormContext.d.ts +0 -5
  86. package/dist/esm/components/organisms/Form/UpdatedFormExample.d.ts +0 -23
  87. package/dist/esm/components/organisms/Form/useForm.d.ts +0 -50
  88. /package/dist/cjs/components/organisms/Form/{AutosaveFormExample.d.ts → examples/AutosaveFormExample.d.ts} +0 -0
  89. /package/dist/esm/components/organisms/Form/{AutosaveFormExample.d.ts → examples/AutosaveFormExample.d.ts} +0 -0
@@ -0,0 +1,290 @@
1
+ import { type FieldValues } from 'react-hook-form';
2
+ import type { FormProps } from './Form.types';
3
+ /**
4
+ * Presenter hook for Form component
5
+ * Handles RHF initialization and form state management
6
+ */
7
+ declare const usePresenter: <TFormValues extends FieldValues = FieldValues>(props: FormProps<TFormValues>) => {
8
+ methods: import("react-hook-form").UseFormReturn<TFormValues, any, TFormValues>;
9
+ onFormSubmit: import("react").FormEventHandler<HTMLFormElement>;
10
+ autosave: boolean;
11
+ onSubmit: import("./Form.types").FormSubmitHandler<TFormValues> | undefined;
12
+ autosaveDelayMs: number;
13
+ variantProps: {
14
+ 'component-variant': string;
15
+ };
16
+ className?: string | undefined;
17
+ children?: import("react").ReactNode | undefined;
18
+ role?: import("react").AriaRole | undefined;
19
+ onLoad?: import("react").ReactEventHandler<HTMLFormElement> | undefined;
20
+ onError?: import("react").ReactEventHandler<HTMLFormElement> | undefined;
21
+ defaultChecked?: boolean | undefined;
22
+ defaultValue?: string | number | readonly string[] | undefined;
23
+ suppressContentEditableWarning?: boolean | undefined;
24
+ suppressHydrationWarning?: boolean | undefined;
25
+ accessKey?: string | undefined;
26
+ autoFocus?: boolean | undefined;
27
+ contentEditable?: (boolean | "true" | "false") | "inherit" | "plaintext-only" | undefined;
28
+ contextMenu?: string | undefined;
29
+ dir?: string | undefined;
30
+ draggable?: (boolean | "true" | "false") | undefined;
31
+ hidden?: boolean | undefined;
32
+ id?: string | undefined;
33
+ lang?: string | undefined;
34
+ nonce?: string | undefined;
35
+ slot?: string | undefined;
36
+ spellCheck?: (boolean | "true" | "false") | undefined;
37
+ style?: import("react").CSSProperties | undefined;
38
+ tabIndex?: number | undefined;
39
+ title?: string | undefined;
40
+ translate?: "yes" | "no" | undefined;
41
+ radioGroup?: string | undefined;
42
+ about?: string | undefined;
43
+ content?: string | undefined;
44
+ datatype?: string | undefined;
45
+ inlist?: any;
46
+ prefix?: string | undefined;
47
+ property?: string | undefined;
48
+ rel?: string | undefined;
49
+ resource?: string | undefined;
50
+ rev?: string | undefined;
51
+ typeof?: string | undefined;
52
+ vocab?: string | undefined;
53
+ autoCapitalize?: string | undefined;
54
+ autoCorrect?: string | undefined;
55
+ autoSave?: string | undefined;
56
+ color?: string | undefined;
57
+ itemProp?: string | undefined;
58
+ itemScope?: boolean | undefined;
59
+ itemType?: string | undefined;
60
+ itemID?: string | undefined;
61
+ itemRef?: string | undefined;
62
+ results?: number | undefined;
63
+ security?: string | undefined;
64
+ unselectable?: "on" | "off" | undefined;
65
+ inputMode?: "none" | "text" | "tel" | "url" | "email" | "numeric" | "decimal" | "search" | undefined;
66
+ is?: string | undefined;
67
+ "aria-activedescendant"?: string | undefined;
68
+ "aria-atomic"?: (boolean | "true" | "false") | undefined;
69
+ "aria-autocomplete"?: "none" | "inline" | "list" | "both" | undefined;
70
+ "aria-braillelabel"?: string | undefined;
71
+ "aria-brailleroledescription"?: string | undefined;
72
+ "aria-busy"?: (boolean | "true" | "false") | undefined;
73
+ "aria-checked"?: boolean | "false" | "mixed" | "true" | undefined;
74
+ "aria-colcount"?: number | undefined;
75
+ "aria-colindex"?: number | undefined;
76
+ "aria-colindextext"?: string | undefined;
77
+ "aria-colspan"?: number | undefined;
78
+ "aria-controls"?: string | undefined;
79
+ "aria-current"?: boolean | "false" | "true" | "page" | "step" | "location" | "date" | "time" | undefined;
80
+ "aria-describedby"?: string | undefined;
81
+ "aria-description"?: string | undefined;
82
+ "aria-details"?: string | undefined;
83
+ "aria-disabled"?: (boolean | "true" | "false") | undefined;
84
+ "aria-dropeffect"?: "none" | "copy" | "execute" | "link" | "move" | "popup" | undefined;
85
+ "aria-errormessage"?: string | undefined;
86
+ "aria-expanded"?: (boolean | "true" | "false") | undefined;
87
+ "aria-flowto"?: string | undefined;
88
+ "aria-grabbed"?: (boolean | "true" | "false") | undefined;
89
+ "aria-haspopup"?: boolean | "false" | "true" | "menu" | "listbox" | "tree" | "grid" | "dialog" | undefined;
90
+ "aria-hidden"?: (boolean | "true" | "false") | undefined;
91
+ "aria-invalid"?: boolean | "false" | "true" | "grammar" | "spelling" | undefined;
92
+ "aria-keyshortcuts"?: string | undefined;
93
+ "aria-label"?: string | undefined;
94
+ "aria-labelledby"?: string | undefined;
95
+ "aria-level"?: number | undefined;
96
+ "aria-live"?: "off" | "assertive" | "polite" | undefined;
97
+ "aria-modal"?: (boolean | "true" | "false") | undefined;
98
+ "aria-multiline"?: (boolean | "true" | "false") | undefined;
99
+ "aria-multiselectable"?: (boolean | "true" | "false") | undefined;
100
+ "aria-orientation"?: "horizontal" | "vertical" | undefined;
101
+ "aria-owns"?: string | undefined;
102
+ "aria-placeholder"?: string | undefined;
103
+ "aria-posinset"?: number | undefined;
104
+ "aria-pressed"?: boolean | "false" | "mixed" | "true" | undefined;
105
+ "aria-readonly"?: (boolean | "true" | "false") | undefined;
106
+ "aria-relevant"?: "additions" | "additions removals" | "additions text" | "all" | "removals" | "removals additions" | "removals text" | "text" | "text additions" | "text removals" | undefined;
107
+ "aria-required"?: (boolean | "true" | "false") | undefined;
108
+ "aria-roledescription"?: string | undefined;
109
+ "aria-rowcount"?: number | undefined;
110
+ "aria-rowindex"?: number | undefined;
111
+ "aria-rowindextext"?: string | undefined;
112
+ "aria-rowspan"?: number | undefined;
113
+ "aria-selected"?: (boolean | "true" | "false") | undefined;
114
+ "aria-setsize"?: number | undefined;
115
+ "aria-sort"?: "none" | "ascending" | "descending" | "other" | undefined;
116
+ "aria-valuemax"?: number | undefined;
117
+ "aria-valuemin"?: number | undefined;
118
+ "aria-valuenow"?: number | undefined;
119
+ "aria-valuetext"?: string | undefined;
120
+ dangerouslySetInnerHTML?: {
121
+ __html: string | TrustedHTML;
122
+ } | undefined;
123
+ onCopy?: import("react").ClipboardEventHandler<HTMLFormElement> | undefined;
124
+ onCopyCapture?: import("react").ClipboardEventHandler<HTMLFormElement> | undefined;
125
+ onCut?: import("react").ClipboardEventHandler<HTMLFormElement> | undefined;
126
+ onCutCapture?: import("react").ClipboardEventHandler<HTMLFormElement> | undefined;
127
+ onPaste?: import("react").ClipboardEventHandler<HTMLFormElement> | undefined;
128
+ onPasteCapture?: import("react").ClipboardEventHandler<HTMLFormElement> | undefined;
129
+ onCompositionEnd?: import("react").CompositionEventHandler<HTMLFormElement> | undefined;
130
+ onCompositionEndCapture?: import("react").CompositionEventHandler<HTMLFormElement> | undefined;
131
+ onCompositionStart?: import("react").CompositionEventHandler<HTMLFormElement> | undefined;
132
+ onCompositionStartCapture?: import("react").CompositionEventHandler<HTMLFormElement> | undefined;
133
+ onCompositionUpdate?: import("react").CompositionEventHandler<HTMLFormElement> | undefined;
134
+ onCompositionUpdateCapture?: import("react").CompositionEventHandler<HTMLFormElement> | undefined;
135
+ onFocus?: import("react").FocusEventHandler<HTMLFormElement> | undefined;
136
+ onFocusCapture?: import("react").FocusEventHandler<HTMLFormElement> | undefined;
137
+ onBlur?: import("react").FocusEventHandler<HTMLFormElement> | undefined;
138
+ onBlurCapture?: import("react").FocusEventHandler<HTMLFormElement> | undefined;
139
+ onChange?: import("react").FormEventHandler<HTMLFormElement> | undefined;
140
+ onChangeCapture?: import("react").FormEventHandler<HTMLFormElement> | undefined;
141
+ onBeforeInput?: import("react").FormEventHandler<HTMLFormElement> | undefined;
142
+ onBeforeInputCapture?: import("react").FormEventHandler<HTMLFormElement> | undefined;
143
+ onInput?: import("react").FormEventHandler<HTMLFormElement> | undefined;
144
+ onInputCapture?: import("react").FormEventHandler<HTMLFormElement> | undefined;
145
+ onReset?: import("react").FormEventHandler<HTMLFormElement> | undefined;
146
+ onResetCapture?: import("react").FormEventHandler<HTMLFormElement> | undefined;
147
+ onSubmitCapture?: import("react").FormEventHandler<HTMLFormElement> | undefined;
148
+ onInvalid?: import("react").FormEventHandler<HTMLFormElement> | undefined;
149
+ onInvalidCapture?: import("react").FormEventHandler<HTMLFormElement> | undefined;
150
+ onLoadCapture?: import("react").ReactEventHandler<HTMLFormElement> | undefined;
151
+ onErrorCapture?: import("react").ReactEventHandler<HTMLFormElement> | undefined;
152
+ onKeyDown?: import("react").KeyboardEventHandler<HTMLFormElement> | undefined;
153
+ onKeyDownCapture?: import("react").KeyboardEventHandler<HTMLFormElement> | undefined;
154
+ onKeyPress?: import("react").KeyboardEventHandler<HTMLFormElement> | undefined;
155
+ onKeyPressCapture?: import("react").KeyboardEventHandler<HTMLFormElement> | undefined;
156
+ onKeyUp?: import("react").KeyboardEventHandler<HTMLFormElement> | undefined;
157
+ onKeyUpCapture?: import("react").KeyboardEventHandler<HTMLFormElement> | undefined;
158
+ onAbort?: import("react").ReactEventHandler<HTMLFormElement> | undefined;
159
+ onAbortCapture?: import("react").ReactEventHandler<HTMLFormElement> | undefined;
160
+ onCanPlay?: import("react").ReactEventHandler<HTMLFormElement> | undefined;
161
+ onCanPlayCapture?: import("react").ReactEventHandler<HTMLFormElement> | undefined;
162
+ onCanPlayThrough?: import("react").ReactEventHandler<HTMLFormElement> | undefined;
163
+ onCanPlayThroughCapture?: import("react").ReactEventHandler<HTMLFormElement> | undefined;
164
+ onDurationChange?: import("react").ReactEventHandler<HTMLFormElement> | undefined;
165
+ onDurationChangeCapture?: import("react").ReactEventHandler<HTMLFormElement> | undefined;
166
+ onEmptied?: import("react").ReactEventHandler<HTMLFormElement> | undefined;
167
+ onEmptiedCapture?: import("react").ReactEventHandler<HTMLFormElement> | undefined;
168
+ onEncrypted?: import("react").ReactEventHandler<HTMLFormElement> | undefined;
169
+ onEncryptedCapture?: import("react").ReactEventHandler<HTMLFormElement> | undefined;
170
+ onEnded?: import("react").ReactEventHandler<HTMLFormElement> | undefined;
171
+ onEndedCapture?: import("react").ReactEventHandler<HTMLFormElement> | undefined;
172
+ onLoadedData?: import("react").ReactEventHandler<HTMLFormElement> | undefined;
173
+ onLoadedDataCapture?: import("react").ReactEventHandler<HTMLFormElement> | undefined;
174
+ onLoadedMetadata?: import("react").ReactEventHandler<HTMLFormElement> | undefined;
175
+ onLoadedMetadataCapture?: import("react").ReactEventHandler<HTMLFormElement> | undefined;
176
+ onLoadStart?: import("react").ReactEventHandler<HTMLFormElement> | undefined;
177
+ onLoadStartCapture?: import("react").ReactEventHandler<HTMLFormElement> | undefined;
178
+ onPause?: import("react").ReactEventHandler<HTMLFormElement> | undefined;
179
+ onPauseCapture?: import("react").ReactEventHandler<HTMLFormElement> | undefined;
180
+ onPlay?: import("react").ReactEventHandler<HTMLFormElement> | undefined;
181
+ onPlayCapture?: import("react").ReactEventHandler<HTMLFormElement> | undefined;
182
+ onPlaying?: import("react").ReactEventHandler<HTMLFormElement> | undefined;
183
+ onPlayingCapture?: import("react").ReactEventHandler<HTMLFormElement> | undefined;
184
+ onProgress?: import("react").ReactEventHandler<HTMLFormElement> | undefined;
185
+ onProgressCapture?: import("react").ReactEventHandler<HTMLFormElement> | undefined;
186
+ onRateChange?: import("react").ReactEventHandler<HTMLFormElement> | undefined;
187
+ onRateChangeCapture?: import("react").ReactEventHandler<HTMLFormElement> | undefined;
188
+ onResize?: import("react").ReactEventHandler<HTMLFormElement> | undefined;
189
+ onResizeCapture?: import("react").ReactEventHandler<HTMLFormElement> | undefined;
190
+ onSeeked?: import("react").ReactEventHandler<HTMLFormElement> | undefined;
191
+ onSeekedCapture?: import("react").ReactEventHandler<HTMLFormElement> | undefined;
192
+ onSeeking?: import("react").ReactEventHandler<HTMLFormElement> | undefined;
193
+ onSeekingCapture?: import("react").ReactEventHandler<HTMLFormElement> | undefined;
194
+ onStalled?: import("react").ReactEventHandler<HTMLFormElement> | undefined;
195
+ onStalledCapture?: import("react").ReactEventHandler<HTMLFormElement> | undefined;
196
+ onSuspend?: import("react").ReactEventHandler<HTMLFormElement> | undefined;
197
+ onSuspendCapture?: import("react").ReactEventHandler<HTMLFormElement> | undefined;
198
+ onTimeUpdate?: import("react").ReactEventHandler<HTMLFormElement> | undefined;
199
+ onTimeUpdateCapture?: import("react").ReactEventHandler<HTMLFormElement> | undefined;
200
+ onVolumeChange?: import("react").ReactEventHandler<HTMLFormElement> | undefined;
201
+ onVolumeChangeCapture?: import("react").ReactEventHandler<HTMLFormElement> | undefined;
202
+ onWaiting?: import("react").ReactEventHandler<HTMLFormElement> | undefined;
203
+ onWaitingCapture?: import("react").ReactEventHandler<HTMLFormElement> | undefined;
204
+ onAuxClick?: import("react").MouseEventHandler<HTMLFormElement> | undefined;
205
+ onAuxClickCapture?: import("react").MouseEventHandler<HTMLFormElement> | undefined;
206
+ onClick?: import("react").MouseEventHandler<HTMLFormElement> | undefined;
207
+ onClickCapture?: import("react").MouseEventHandler<HTMLFormElement> | undefined;
208
+ onContextMenu?: import("react").MouseEventHandler<HTMLFormElement> | undefined;
209
+ onContextMenuCapture?: import("react").MouseEventHandler<HTMLFormElement> | undefined;
210
+ onDoubleClick?: import("react").MouseEventHandler<HTMLFormElement> | undefined;
211
+ onDoubleClickCapture?: import("react").MouseEventHandler<HTMLFormElement> | undefined;
212
+ onDrag?: import("react").DragEventHandler<HTMLFormElement> | undefined;
213
+ onDragCapture?: import("react").DragEventHandler<HTMLFormElement> | undefined;
214
+ onDragEnd?: import("react").DragEventHandler<HTMLFormElement> | undefined;
215
+ onDragEndCapture?: import("react").DragEventHandler<HTMLFormElement> | undefined;
216
+ onDragEnter?: import("react").DragEventHandler<HTMLFormElement> | undefined;
217
+ onDragEnterCapture?: import("react").DragEventHandler<HTMLFormElement> | undefined;
218
+ onDragExit?: import("react").DragEventHandler<HTMLFormElement> | undefined;
219
+ onDragExitCapture?: import("react").DragEventHandler<HTMLFormElement> | undefined;
220
+ onDragLeave?: import("react").DragEventHandler<HTMLFormElement> | undefined;
221
+ onDragLeaveCapture?: import("react").DragEventHandler<HTMLFormElement> | undefined;
222
+ onDragOver?: import("react").DragEventHandler<HTMLFormElement> | undefined;
223
+ onDragOverCapture?: import("react").DragEventHandler<HTMLFormElement> | undefined;
224
+ onDragStart?: import("react").DragEventHandler<HTMLFormElement> | undefined;
225
+ onDragStartCapture?: import("react").DragEventHandler<HTMLFormElement> | undefined;
226
+ onDrop?: import("react").DragEventHandler<HTMLFormElement> | undefined;
227
+ onDropCapture?: import("react").DragEventHandler<HTMLFormElement> | undefined;
228
+ onMouseDown?: import("react").MouseEventHandler<HTMLFormElement> | undefined;
229
+ onMouseDownCapture?: import("react").MouseEventHandler<HTMLFormElement> | undefined;
230
+ onMouseEnter?: import("react").MouseEventHandler<HTMLFormElement> | undefined;
231
+ onMouseLeave?: import("react").MouseEventHandler<HTMLFormElement> | undefined;
232
+ onMouseMove?: import("react").MouseEventHandler<HTMLFormElement> | undefined;
233
+ onMouseMoveCapture?: import("react").MouseEventHandler<HTMLFormElement> | undefined;
234
+ onMouseOut?: import("react").MouseEventHandler<HTMLFormElement> | undefined;
235
+ onMouseOutCapture?: import("react").MouseEventHandler<HTMLFormElement> | undefined;
236
+ onMouseOver?: import("react").MouseEventHandler<HTMLFormElement> | undefined;
237
+ onMouseOverCapture?: import("react").MouseEventHandler<HTMLFormElement> | undefined;
238
+ onMouseUp?: import("react").MouseEventHandler<HTMLFormElement> | undefined;
239
+ onMouseUpCapture?: import("react").MouseEventHandler<HTMLFormElement> | undefined;
240
+ onSelect?: import("react").ReactEventHandler<HTMLFormElement> | undefined;
241
+ onSelectCapture?: import("react").ReactEventHandler<HTMLFormElement> | undefined;
242
+ onTouchCancel?: import("react").TouchEventHandler<HTMLFormElement> | undefined;
243
+ onTouchCancelCapture?: import("react").TouchEventHandler<HTMLFormElement> | undefined;
244
+ onTouchEnd?: import("react").TouchEventHandler<HTMLFormElement> | undefined;
245
+ onTouchEndCapture?: import("react").TouchEventHandler<HTMLFormElement> | undefined;
246
+ onTouchMove?: import("react").TouchEventHandler<HTMLFormElement> | undefined;
247
+ onTouchMoveCapture?: import("react").TouchEventHandler<HTMLFormElement> | undefined;
248
+ onTouchStart?: import("react").TouchEventHandler<HTMLFormElement> | undefined;
249
+ onTouchStartCapture?: import("react").TouchEventHandler<HTMLFormElement> | undefined;
250
+ onPointerDown?: import("react").PointerEventHandler<HTMLFormElement> | undefined;
251
+ onPointerDownCapture?: import("react").PointerEventHandler<HTMLFormElement> | undefined;
252
+ onPointerMove?: import("react").PointerEventHandler<HTMLFormElement> | undefined;
253
+ onPointerMoveCapture?: import("react").PointerEventHandler<HTMLFormElement> | undefined;
254
+ onPointerUp?: import("react").PointerEventHandler<HTMLFormElement> | undefined;
255
+ onPointerUpCapture?: import("react").PointerEventHandler<HTMLFormElement> | undefined;
256
+ onPointerCancel?: import("react").PointerEventHandler<HTMLFormElement> | undefined;
257
+ onPointerCancelCapture?: import("react").PointerEventHandler<HTMLFormElement> | undefined;
258
+ onPointerEnter?: import("react").PointerEventHandler<HTMLFormElement> | undefined;
259
+ onPointerLeave?: import("react").PointerEventHandler<HTMLFormElement> | undefined;
260
+ onPointerOver?: import("react").PointerEventHandler<HTMLFormElement> | undefined;
261
+ onPointerOverCapture?: import("react").PointerEventHandler<HTMLFormElement> | undefined;
262
+ onPointerOut?: import("react").PointerEventHandler<HTMLFormElement> | undefined;
263
+ onPointerOutCapture?: import("react").PointerEventHandler<HTMLFormElement> | undefined;
264
+ onGotPointerCapture?: import("react").PointerEventHandler<HTMLFormElement> | undefined;
265
+ onGotPointerCaptureCapture?: import("react").PointerEventHandler<HTMLFormElement> | undefined;
266
+ onLostPointerCapture?: import("react").PointerEventHandler<HTMLFormElement> | undefined;
267
+ onLostPointerCaptureCapture?: import("react").PointerEventHandler<HTMLFormElement> | undefined;
268
+ onScroll?: import("react").UIEventHandler<HTMLFormElement> | undefined;
269
+ onScrollCapture?: import("react").UIEventHandler<HTMLFormElement> | undefined;
270
+ onWheel?: import("react").WheelEventHandler<HTMLFormElement> | undefined;
271
+ onWheelCapture?: import("react").WheelEventHandler<HTMLFormElement> | undefined;
272
+ onAnimationStart?: import("react").AnimationEventHandler<HTMLFormElement> | undefined;
273
+ onAnimationStartCapture?: import("react").AnimationEventHandler<HTMLFormElement> | undefined;
274
+ onAnimationEnd?: import("react").AnimationEventHandler<HTMLFormElement> | undefined;
275
+ onAnimationEndCapture?: import("react").AnimationEventHandler<HTMLFormElement> | undefined;
276
+ onAnimationIteration?: import("react").AnimationEventHandler<HTMLFormElement> | undefined;
277
+ onAnimationIterationCapture?: import("react").AnimationEventHandler<HTMLFormElement> | undefined;
278
+ onTransitionEnd?: import("react").TransitionEventHandler<HTMLFormElement> | undefined;
279
+ onTransitionEndCapture?: import("react").TransitionEventHandler<HTMLFormElement> | undefined;
280
+ autoComplete?: string | undefined;
281
+ name?: string | undefined;
282
+ action?: string | undefined | import("react").DO_NOT_USE_OR_YOU_WILL_BE_FIRED_EXPERIMENTAL_FORM_ACTIONS[keyof import("react").DO_NOT_USE_OR_YOU_WILL_BE_FIRED_EXPERIMENTAL_FORM_ACTIONS];
283
+ target?: string | undefined;
284
+ acceptCharset?: string | undefined;
285
+ encType?: string | undefined;
286
+ method?: string | undefined;
287
+ noValidate?: boolean | undefined;
288
+ formRef?: React.Ref<HTMLFormElement>;
289
+ };
290
+ export default usePresenter;
@@ -1,138 +1,31 @@
1
- import React from 'react';
2
- import type { FormHTMLAttributes, Ref } from 'react';
1
+ import type { FormHTMLAttributes } from 'react';
2
+ import type { FieldValues, UseFormProps } from 'react-hook-form';
3
+ export type { FieldValue, FieldValidationFunction, AsyncFieldValidationFunction, } from '../../molecules/FormField/FormField.types';
3
4
  /**
4
- * Type representing the allowed values for form fields
5
+ * Form submission handler
5
6
  */
6
- export type FieldValue = string | number | Date | boolean | File | Array<string | number | Date | File>;
7
+ export type FormSubmitHandler<TFormValues extends FieldValues = FieldValues> = (values: TFormValues) => void | Promise<void>;
7
8
  /**
8
- * Type representing the form values as a partial record of field names to field values
9
- * @example
10
- * ```typescript
11
- * const formState: FormState = {
12
- * name: 'John Doe',
13
- * age: 30,
14
- * dob: new Date('1990-01-01')
15
- * };
16
- * ```
9
+ * Form component props
17
10
  */
18
- export type FormState<T extends FieldValue = FieldValue> = Partial<Record<string, T>>;
19
- /**
20
- * Type representing the form errors as a partial record of field names to error messages
21
- */
22
- export type FormErrors<T extends FormState = FormState> = Partial<Record<keyof T, string>>;
23
- /**
24
- * Type representing a validation function for a form field
25
- * It takes an error setter function and the field value (optional) and returns a boolean indicating if the value is valid
26
- * @example
27
- * ```typescript
28
- * const nameValidator: FieldValidationFunction = (setError, value) => {
29
- * if (!value) {
30
- * setError('Name is required');
31
- * return false;
32
- * }
33
- * return true;
34
- * };
35
- * ```
36
- */
37
- export type FieldValidationFunction<T extends FieldValue = FieldValue> = (setError: (message: string) => void, value?: T) => boolean;
38
- /**
39
- * Type representing the required fields in a form
40
- * It's a partial record of field names to a boolean indicating if the field is required
41
- */
42
- export type RequiredFields<T extends FormState = FormState> = Partial<Record<keyof T, boolean>>;
43
- /**
44
- * Type representing the validation functions for each field in a form
45
- * It's a partial record of field names to validation functions (or undefined)
46
- * @example
47
- * ```typescript
48
- * const nameValidator: FieldValidationFunction = (setError, value) => {
49
- * if (!value) {
50
- * setError('Name is required');
51
- * return false;
52
- * }
53
- * return true;
54
- * };
55
- * const fieldValidators: FieldValidators = {
56
- * name: nameValidator,
57
- * age: undefined,
58
- * };
59
- * ```
60
- */
61
- export type FieldValidators<T extends FormState = FormState> = Partial<Record<keyof T, FieldValidationFunction | undefined>>;
62
- /**
63
- * Type representing a function that handles form state changes
64
- * It takes the new form state and an error setter function and doesn't return anything
65
- * @example
66
- * ```typescript
67
- * const handleFormStateChange: FormStateChangeHandler = (state, setError) => {
68
- * // Validate form state and set errors
69
- * if (!state.name) {
70
- * setError('name', 'Name is required');
71
- * }
72
- * };
73
- * ```
74
- */
75
- export type FormStateChangeHandler<T extends FormState = FormState> = (state: T, setError: (field: keyof T, errorMessage: string) => void) => void;
76
- /**
77
- * Type representing a function that validates the entire form
78
- * It takes the form values and an error setter function and returns a boolean indicating if the form is valid
79
- * @example
80
- * ```typescript
81
- * const validateForm: FormValidator = (state, setError) => {
82
- * let isValid = true;
83
- * if (!state.name) {
84
- * setError('name', 'Name is required');
85
- * isValid = false;
86
- * }
87
- * if (!state.age || typeof state.age !== 'number') {
88
- * setError('age', 'Age must be a number');
89
- * isValid = false;
90
- * }
91
- * return isValid;
92
- * };
93
- * ```
94
- */
95
- export type FormValidator<T extends FormState = FormState> = (state: T, setError: (field: keyof T, errorMessage: string) => void) => boolean;
96
- /**
97
- * Type representing a function that handles form submission.
98
- * It takes updated form state and a function to set error messages for specific fields.
99
- *
100
- * @template T - The type of the form state, defaulting to `FormState`.
101
- *
102
- * @param {T} values - The updated form state values.
103
- * @param {(field: keyof T, errorMessage: string) => void} setError - A function to set error messages for specific fields.
104
- *
105
- * @example
106
- * ```typescript
107
- * const handleFormSubmit: FormSubmitHandler = (values, setError) => {
108
- * // Submit form data
109
- * console.log(values);
110
- * };
111
- * ```
112
- */
113
- export type FormSubmitHandler<T extends FormState = FormState> = (values: T, setError: (field: keyof T, errorMessage: string) => void) => void;
114
- export type FormProps = Omit<FormHTMLAttributes<HTMLFormElement>, 'onSubmit'> & {
115
- formRef?: Ref<HTMLFormElement>;
116
- };
117
- export type FormContextValues<T extends FormState = FormState> = {
118
- formRef?: Ref<HTMLFormElement>;
119
- formState?: T;
120
- updateFieldValue: (name: string, value: FieldValue) => void;
121
- formErrors: FormErrors<T>;
122
- updateFieldError: (name: keyof T, errorMessage: string) => void;
123
- onFormSubmit: React.FormEventHandler<HTMLFormElement>;
124
- updateFieldValidators: (name: keyof T, validate?: FieldValidationFunction) => void;
125
- updateRequiredFields: (name: keyof T, required?: boolean) => void;
126
- resetForm: () => void;
127
- };
128
- export type FormProviderProps<T extends FormState = FormState> = {
129
- formRef?: Ref<HTMLFormElement>;
130
- children?: React.ReactNode;
131
- formState?: T;
132
- onFormStateChange?: FormStateChangeHandler<T>;
133
- formValidator?: FormValidator<T>;
134
- onSubmit?: FormSubmitHandler<T>;
135
- validateOnChange?: boolean;
11
+ export type FormProps<TFormValues extends FieldValues = FieldValues> = Omit<FormHTMLAttributes<HTMLFormElement>, 'onSubmit' | 'ref'> & {
12
+ /** Initial form values (uncontrolled mode) */
13
+ defaultValues?: UseFormProps<TFormValues>['defaultValues'];
14
+ /** Form submission handler - receives typed form values */
15
+ onSubmit?: FormSubmitHandler<TFormValues>;
16
+ /** Enable autosave functionality */
136
17
  autosave?: boolean;
18
+ /** Autosave debounce delay in milliseconds */
137
19
  autosaveDelayMs?: number;
20
+ /** RHF validation mode */
21
+ mode?: UseFormProps<TFormValues>['mode'];
22
+ /** Additional RHF options */
23
+ formOptions?: Omit<UseFormProps<TFormValues>, 'defaultValues' | 'mode'>;
24
+ /** Ref to the form element */
25
+ formRef?: React.Ref<HTMLFormElement>;
138
26
  };
27
+ /**
28
+ * @deprecated Use FormProps instead
29
+ * Legacy alias for backwards compatibility
30
+ */
31
+ export type FormProviderProps<TFormValues extends FieldValues = FieldValues> = Omit<FormProps<TFormValues>, 'className' | 'style' | 'formRef'>;
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Placeholder for DropzoneFormExample
3
+ * This example needs to be updated to work with the new Form implementation
4
+ */
5
+ declare const DropzoneFormExample: () => import("react/jsx-runtime").JSX.Element;
6
+ export default DropzoneFormExample;
@@ -0,0 +1,2 @@
1
+ declare const UpdatedFormExample: () => import("react/jsx-runtime").JSX.Element;
2
+ export default UpdatedFormExample;
@@ -1,5 +1,2 @@
1
- /**
2
- * Main example demonstrating the useForm hook
3
- */
4
1
  declare const UseFormExample: () => import("react/jsx-runtime").JSX.Element;
5
2
  export default UseFormExample;
@@ -1,5 +1,5 @@
1
- import type { FormProps, FormProviderProps, FormState } from './Form.types';
2
- declare const Form: <T extends FormState>(props: FormProviderProps<T> & FormProps) => import("react/jsx-runtime").JSX.Element;
1
+ import Form from './Form';
3
2
  export default Form;
4
- export * from './Form.types';
5
- export { useForm, useFormTyped } from './useForm';
3
+ export type { FormProps, FormSubmitHandler, FormProviderProps, } from './Form.types';
4
+ export type { FieldValue } from './Form.types';
5
+ export { useAutosave } from './useAutosave';
@@ -0,0 +1,10 @@
1
+ import { type FieldValues } from 'react-hook-form';
2
+ import type { FormSubmitHandler } from './Form.types';
3
+ /**
4
+ * Hook to enable autosave functionality for forms
5
+ * Debounces changes and validates before submitting
6
+ *
7
+ * Note: Uses formState.isDirty to detect changes instead of watching all values
8
+ * for better performance
9
+ */
10
+ export declare const useAutosave: <TFormValues extends FieldValues>(enabled: boolean, onSubmit: FormSubmitHandler<TFormValues> | undefined, delayMs?: number) => void;