@saas-ui/modals 2.0.0-next.2 → 2.0.0-next.20

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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,147 @@
1
1
  # @saas-ui/modals
2
2
 
3
+ ## 2.0.0-next.20
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies [a9ca90dd]
8
+ - @saas-ui/forms@2.0.0-next.20
9
+
10
+ ## 2.0.0-next.19
11
+
12
+ ### Patch Changes
13
+
14
+ - @saas-ui/forms@2.0.0-next.19
15
+
16
+ ## 2.0.0-next.18
17
+
18
+ ### Patch Changes
19
+
20
+ - Updated dependencies [01ac442f]
21
+ - @saas-ui/forms@2.0.0-next.18
22
+
23
+ ## 2.0.0-next.17
24
+
25
+ ### Patch Changes
26
+
27
+ - @saas-ui/forms@2.0.0-next.17
28
+
29
+ ## 2.0.0-next.16
30
+
31
+ ### Patch Changes
32
+
33
+ - cc713117: Fix issue where onCloseComplete would not be called
34
+ - @saas-ui/forms@2.0.0-next.16
35
+
36
+ ## 2.0.0-next.15
37
+
38
+ ### Minor Changes
39
+
40
+ - 2d18cdc2: New createFormDialog function to create Zod or Yup specific FormDialogs
41
+
42
+ ### Patch Changes
43
+
44
+ - Updated dependencies [2d18cdc2]
45
+ - @saas-ui/forms@2.0.0-next.15
46
+
47
+ ## 2.0.0-next.14
48
+
49
+ ### Patch Changes
50
+
51
+ - Fix esm bundle import
52
+ - Updated dependencies
53
+ - @saas-ui/react-utils@2.0.0-next.3
54
+ - @saas-ui/forms@2.0.0-next.14
55
+ - @saas-ui/hooks@2.0.0-next.4
56
+
57
+ ## 2.0.0-next.13
58
+
59
+ ### Patch Changes
60
+
61
+ - 1563cc9a: BaseDrawer now accepts header, content and footer props.
62
+ - Bump version
63
+ - Updated dependencies
64
+ - Updated dependencies [6c63217c]
65
+ - @saas-ui/react-utils@2.0.0-next.2
66
+ - @saas-ui/forms@2.0.0-next.13
67
+ - @saas-ui/hooks@2.0.0-next.3
68
+
69
+ ## 2.0.0-next.12
70
+
71
+ ### Patch Changes
72
+
73
+ - Updated dependencies [a7ef6dd9]
74
+ - @saas-ui/forms@2.0.0-next.12
75
+
76
+ ## 2.0.0-next.11
77
+
78
+ ### Patch Changes
79
+
80
+ - @saas-ui/forms@2.0.0-next.11
81
+
82
+ ## 2.0.0-next.10
83
+
84
+ ### Patch Changes
85
+
86
+ - @saas-ui/forms@2.0.0-next.10
87
+
88
+ ## 2.0.0-next.9
89
+
90
+ ### Minor Changes
91
+
92
+ - 84e59fec: Added new createModals method to create typesafe modals managers with support for custom modals
93
+ - 1177329d: BaseModal now accepts header, content and footer props
94
+
95
+ ### Patch Changes
96
+
97
+ - Updated dependencies [84e59fec]
98
+ - @saas-ui/forms@2.0.0-next.9
99
+
100
+ ## 2.0.0-next.8
101
+
102
+ ### Patch Changes
103
+
104
+ - Updated dependencies [6d3f5717]
105
+ - @saas-ui/forms@2.0.0-next.8
106
+
107
+ ## 2.0.0-next.7
108
+
109
+ ### Patch Changes
110
+
111
+ - @saas-ui/forms@2.0.0-next.7
112
+
113
+ ## 2.0.0-next.6
114
+
115
+ ### Patch Changes
116
+
117
+ - Updated dependencies [532011d6]
118
+ - Updated dependencies [532011d6]
119
+ - Updated dependencies [6dd737ce]
120
+ - Updated dependencies [c85541cb]
121
+ - Updated dependencies [39e778d8]
122
+ - @saas-ui/forms@2.0.0-next.6
123
+
124
+ ## 2.0.0-next.5
125
+
126
+ ### Patch Changes
127
+
128
+ - Updated dependencies [a8ea24da]
129
+ - @saas-ui/forms@2.0.0-next.5
130
+
131
+ ## 2.0.0-next.4
132
+
133
+ ### Patch Changes
134
+
135
+ - Updated dependencies [27a68bca]
136
+ - @saas-ui/hooks@2.0.0-next.2
137
+ - @saas-ui/forms@2.0.0-next.4
138
+
139
+ ## 2.0.0-next.3
140
+
141
+ ### Patch Changes
142
+
143
+ - @saas-ui/forms@2.0.0-next.3
144
+
3
145
  ## 2.0.0-next.2
4
146
 
5
147
  ### Patch Changes
@@ -33,6 +175,33 @@
33
175
  - @saas-ui/hooks@2.0.0-next.0
34
176
  - @saas-ui/react-utils@2.0.0-next.0
35
177
 
178
+ ## 1.5.7
179
+
180
+ ### Patch Changes
181
+
182
+ - Fix types path
183
+ - Updated dependencies
184
+ - @saas-ui/button@1.4.2
185
+ - @saas-ui/forms@1.5.5
186
+ - @saas-ui/menu@1.4.3
187
+
188
+ ## 1.5.6
189
+
190
+ ### Patch Changes
191
+
192
+ - b2302a3: Add types to package.json exports
193
+ - Updated dependencies [b2302a3]
194
+ - @saas-ui/button@1.4.1
195
+ - @saas-ui/forms@1.5.4
196
+ - @saas-ui/menu@1.4.2
197
+
198
+ ## 1.5.5
199
+
200
+ ### Patch Changes
201
+
202
+ - Updated dependencies [382e095]
203
+ - @saas-ui/forms@1.5.3
204
+
36
205
  ## 1.5.4
37
206
 
38
207
  ### Patch Changes
package/dist/index.d.ts CHANGED
@@ -1,21 +1,28 @@
1
- import * as React from 'react';
2
- import { AlertDialogProps, ButtonProps, ButtonGroupProps, DrawerProps as DrawerProps$1, ModalProps, MenuListProps } from '@chakra-ui/react';
1
+ import * as React$1 from 'react';
2
+ import { AlertDialogProps, ButtonProps, ButtonGroupProps, DrawerProps as DrawerProps$1, ModalHeaderProps, ModalContentProps, ModalFooterProps, ModalProps, MenuListProps } from '@chakra-ui/react';
3
+ import { MaybeRenderProp } from '@chakra-ui/react-utils';
3
4
  import * as _chakra_ui_system_dist_system_types from '@chakra-ui/system/dist/system.types';
4
- import { FieldValues, FormProps, FieldResolver } from '@saas-ui/forms';
5
+ import * as _saas_ui_forms from '@saas-ui/forms';
6
+ import { DefaultFieldOverrides, FieldValues, FieldProps, FormProps, FieldResolver, FormType, WithFields } from '@saas-ui/forms';
7
+ import { YupFormType, AnyObjectSchema } from '@saas-ui/forms/yup';
8
+ import { ZodFormType } from '@saas-ui/forms/zod';
9
+ import * as _chakra_ui_button_dist_button from '@chakra-ui/button/dist/button';
10
+ import { z } from 'zod';
11
+ import { InferType } from 'yup';
5
12
 
6
13
  interface ConfirmDialogProps extends Omit<AlertDialogProps, 'leastDestructiveRef'> {
7
14
  /**
8
15
  * The dialog title
9
16
  */
10
- title?: React.ReactNode;
17
+ title?: React$1.ReactNode;
11
18
  /**
12
19
  * The cancel button label
13
20
  */
14
- cancelLabel?: React.ReactNode;
21
+ cancelLabel?: React$1.ReactNode;
15
22
  /**
16
23
  * The confirm button label
17
24
  */
18
- confirmLabel?: React.ReactNode;
25
+ confirmLabel?: React$1.ReactNode;
19
26
  /**
20
27
  * The cancel button props
21
28
  */
@@ -52,13 +59,24 @@ interface ConfirmDialogProps extends Omit<AlertDialogProps, 'leastDestructiveRef
52
59
  */
53
60
  onConfirm?: () => void;
54
61
  }
55
- declare const ConfirmDialog: React.FC<ConfirmDialogProps>;
62
+ declare const ConfirmDialog: React$1.FC<ConfirmDialogProps>;
56
63
 
57
64
  interface BaseDrawerProps extends Omit<DrawerProps$1, 'children'> {
58
65
  /**
59
66
  * The drawer title
60
67
  */
61
- title: React.ReactNode;
68
+ title: React$1.ReactNode;
69
+ /**
70
+ * The modal children
71
+ */
72
+ children: MaybeRenderProp<{
73
+ isOpen: boolean;
74
+ onClose: () => void;
75
+ }>;
76
+ /**
77
+ * The modal footer
78
+ */
79
+ footer?: React$1.ReactNode;
62
80
  /**
63
81
  * Hide the close button
64
82
  */
@@ -67,26 +85,44 @@ interface BaseDrawerProps extends Omit<DrawerProps$1, 'children'> {
67
85
  * Hide the overflow
68
86
  */
69
87
  hideOverlay?: boolean;
70
- children?: React.ReactNode;
88
+ /**
89
+ * Props for the modal header
90
+ */
91
+ headerProps?: ModalHeaderProps;
92
+ /**
93
+ * Props for the modal content
94
+ */
95
+ contentProps?: ModalContentProps;
96
+ /**
97
+ * Props for the modal footer
98
+ */
99
+ footerProps?: ModalFooterProps;
71
100
  }
72
- declare const BaseDrawer: React.FC<BaseDrawerProps>;
101
+ declare const BaseDrawer: React$1.FC<BaseDrawerProps>;
73
102
  interface DrawerProps extends BaseDrawerProps {
74
103
  /**
75
104
  * Drawer footer content, wrapped with `DrawerFooter`
76
105
  */
77
- footer?: React.ReactNode;
106
+ footer?: React$1.ReactNode;
78
107
  }
79
- declare const Drawer: React.FC<DrawerProps>;
108
+ declare const Drawer: React$1.FC<DrawerProps>;
80
109
 
81
- interface BaseModalProps extends ModalProps {
110
+ interface BaseModalProps extends Omit<ModalProps, 'children'> {
82
111
  /**
83
112
  * The modal title
84
113
  */
85
- title?: React.ReactNode;
114
+ title?: React$1.ReactNode;
115
+ /**
116
+ * The modal children
117
+ */
118
+ children: MaybeRenderProp<{
119
+ isOpen: boolean;
120
+ onClose: () => void;
121
+ }>;
86
122
  /**
87
123
  * The modal footer
88
124
  */
89
- footer?: React.ReactNode;
125
+ footer?: React$1.ReactNode;
90
126
  /**
91
127
  * Hide the close button
92
128
  */
@@ -95,72 +131,115 @@ interface BaseModalProps extends ModalProps {
95
131
  * Hide the overlay
96
132
  */
97
133
  hideOverlay?: boolean;
134
+ /**
135
+ * Props for the modal header
136
+ */
137
+ headerProps?: ModalHeaderProps;
138
+ /**
139
+ * Props for the modal content
140
+ */
141
+ contentProps?: ModalContentProps;
142
+ /**
143
+ * Props for the modal footer
144
+ */
145
+ footerProps?: ModalFooterProps;
98
146
  }
99
- declare const BaseModal: React.FC<BaseModalProps>;
100
- declare const Modal: React.FC<BaseModalProps>;
147
+ declare const BaseModal: React$1.FC<BaseModalProps>;
148
+ declare const Modal: React$1.FC<BaseModalProps>;
101
149
 
102
150
  interface MenuDialogProps extends BaseModalProps {
103
151
  /**
104
152
  * The modal footer, wrapped with `ModalFooter`
105
153
  */
106
- footer?: React.ReactNode;
154
+ footer?: React$1.ReactNode;
107
155
  }
108
- declare const MenuDialog: React.FC<MenuDialogProps>;
156
+ declare const MenuDialog: React$1.FC<MenuDialogProps>;
109
157
  interface MenuDialogListProps extends Omit<BaseModalProps, 'isOpen' | 'onClose' | 'children' | 'scrollBehavior'>, Omit<MenuListProps, 'title'> {
110
158
  }
111
159
  declare const MenuDialogList: _chakra_ui_system_dist_system_types.ComponentWithAs<"div", MenuDialogListProps>;
112
160
 
113
- interface FormDialogProps<TFieldValues extends FieldValues = FieldValues, TContext extends object = object> extends Omit<BaseModalProps, 'children'>, Pick<FormProps<TFieldValues, TContext>, 'schema' | 'defaultValues' | 'values' | 'context' | 'onChange' | 'onSubmit' | 'onError' | 'resolver' | 'mode' | 'reValidateMode' | 'shouldFocusError' | 'shouldUnregister' | 'shouldUseNativeValidation' | 'criteriaMode' | 'delayError'> {
161
+ type FormDialogFieldOverrides = DefaultFieldOverrides & {
162
+ cancel?: ButtonProps;
163
+ };
164
+ interface FormDialogProps<TSchema = any, TFieldValues extends FieldValues = FieldValues, TContext extends object = object, TFieldTypes = FieldProps<TFieldValues>> extends Omit<BaseModalProps, 'children'>, Pick<FormProps<TSchema, TFieldValues, TContext, TFieldTypes>, 'schema' | 'defaultValues' | 'values' | 'context' | 'onChange' | 'onSubmit' | 'onError' | 'resolver' | 'mode' | 'reValidateMode' | 'shouldFocusError' | 'shouldUnregister' | 'shouldUseNativeValidation' | 'criteriaMode' | 'delayError' | 'resetOptions' | 'children'> {
114
165
  /**
115
166
  * The modal footer, will be wrapped with `ModalFooter`.
116
167
  * Defaults to a cancel and submit button.
117
168
  */
118
- footer?: React.ReactNode;
119
- /**
120
- * The cancel button label
121
- * @default "Cancel"
122
- */
123
- cancelLabel?: React.ReactNode;
124
- /**
125
- * The submit button label
126
- * @default "Submit"
127
- */
128
- submitLabel?: React.ReactNode;
129
- /**
130
- * If no children are passed, this will auto render fields based on the supplied schema.
131
- */
132
- children?: React.ReactNode;
169
+ footer?: React$1.ReactNode;
133
170
  /**
134
171
  * A schema field resolver used to auto generate form fields.
135
172
  */
136
173
  fieldResolver?: FieldResolver;
174
+ /**
175
+ * Field overrides
176
+ */
177
+ fields?: FormDialogFieldOverrides;
137
178
  }
138
- declare const FormDialog: <TFieldValues extends FieldValues>(props: FormDialogProps<TFieldValues, object> & {
139
- ref?: React.ForwardedRef<HTMLFormElement> | undefined;
140
- }) => React.ReactElement;
179
+ /**
180
+ * @todo make this dynamic to support other schema types
181
+ */
182
+ type MergeDialogProps<T> = T extends YupFormType<infer FieldDefs, infer ExtraProps, infer ExtraOverrides, 'yup'> ? YupFormType<FieldDefs, ExtraProps & Omit<BaseModalProps, 'children'>, ExtraOverrides & FormDialogFieldOverrides> : T extends ZodFormType<infer FieldDefs, infer ExtraProps, infer ExtraOverrides, 'zod'> ? ZodFormType<FieldDefs, ExtraProps & Omit<BaseModalProps, 'children'>, ExtraOverrides & FormDialogFieldOverrides> : T extends FormType<infer FieldDefs, infer ExtraProps, infer ExtraOverrides> ? FormType<FieldDefs, ExtraProps & Omit<BaseModalProps, 'children'>, ExtraOverrides & FormDialogFieldOverrides> : never;
183
+ type DefaultFormType<FieldDefs = any, ExtraProps = object, ExtraOverrides = FormDialogFieldOverrides> = (<TSchema = unknown, TFieldValues extends Record<string, any> = any, TContext extends object = object>(props: any) => React$1.ReactElement) & {
184
+ displayName?: string;
185
+ id?: string;
186
+ };
187
+ declare function createFormDialog<FieldDefs = any, ExtraProps = object, ExtraOverrides = FormDialogFieldOverrides, TFormType extends DefaultFormType<FieldDefs, ExtraProps, ExtraOverrides> = DefaultFormType<FieldDefs, ExtraProps, ExtraOverrides>>(Form: TFormType): MergeDialogProps<TFormType>;
188
+ /**
189
+ * Can be used to quickly request information from people without leaving the current page.
190
+ *
191
+ * @see Docs https://saas-ui.dev/docs/components/overlay/form-dialog
192
+ */
193
+ declare const FormDialog: FormType<unknown, object & Omit<BaseModalProps, "children">, object & DefaultFieldOverrides & {
194
+ cancel?: ButtonProps | undefined;
195
+ }>;
141
196
 
142
- interface ModalsContextValue {
143
- open: (options: OpenOptions) => ModalId;
197
+ type FormDialogHandler<T> = T extends YupFormType<infer FieldDefs, infer ExtraProps, infer ExtraOverrides, 'yup'> ? YupHandler<FieldDefs, object, ExtraOverrides & FormDialogFieldOverrides> : T extends ZodFormType<infer FieldDefs, infer ExtraProps, infer ExtraOverrides, 'zod'> ? ZodHandler<FieldDefs, object, ExtraOverrides & FormDialogFieldOverrides> : T extends FormType<infer FieldDefs, infer ExtraProps, infer ExtraOverrides> ? FormHandler<FieldDefs, object, ExtraOverrides & FormDialogFieldOverrides> : never;
198
+ type ZodHandler<FieldDefs, ExtraProps = object, ExtraOverrides = object, Type extends 'zod' = 'zod'> = <TSchema extends z.AnyZodObject = z.AnyZodObject, TFieldValues extends z.infer<TSchema> = z.infer<TSchema>, TContext extends object = object>(props: WithFields<FormProps<TSchema, TFieldValues, TContext>, FieldDefs, ExtraOverrides> & {
199
+ ref?: React.ForwardedRef<HTMLFormElement>;
200
+ } & ExtraProps) => ModalId;
201
+ type FormHandler<FieldDefs, ExtraProps = object, ExtraOverrides = object> = <TSchema = unknown, TFieldValues extends FieldValues = FieldValues, TContext extends object = object>(props: WithFields<FormProps<TSchema, TFieldValues, TContext>, FieldDefs, ExtraOverrides> & {
202
+ ref?: React.ForwardedRef<HTMLFormElement>;
203
+ } & ExtraProps) => ModalId;
204
+ type YupHandler<FieldDefs, ExtraProps = object, ExtraOverrides = object, Type extends 'yup' = 'yup'> = <TSchema extends AnyObjectSchema = AnyObjectSchema, TFieldValues extends InferType<TSchema> = InferType<TSchema>, // placeholder
205
+ TContext extends object = object>(props: WithFields<FormProps<TFieldValues, TContext, TSchema>, FieldDefs, ExtraOverrides> & {
206
+ ref?: React.ForwardedRef<HTMLFormElement>;
207
+ } & ExtraProps) => ModalId;
208
+
209
+ interface ModalsContextValue<TModals extends Record<string, React$1.FC<any>> = Record<string, React$1.FC<any>>, TTypes extends Extract<keyof TModals, string> = Extract<keyof TModals, string>> {
210
+ open: <T extends OpenOptions<TTypes>>(componentOrOptions: T extends {
211
+ component: infer TComponent extends React$1.FC<any>;
212
+ } ? WithModalOptions<React$1.ComponentPropsWithRef<TComponent>> : T extends {
213
+ type: infer TType extends keyof TModals;
214
+ } ? WithModalOptions<React$1.ComponentPropsWithRef<TModals[TType]>> : T, options?: T extends React$1.FC<any> ? WithModalOptions<React$1.ComponentPropsWithRef<T>> : never) => ModalId;
144
215
  drawer: (options: DrawerOptions) => ModalId;
145
216
  alert: (options: ConfirmDialogOptions) => ModalId;
146
217
  confirm: (options: ConfirmDialogOptions) => ModalId;
147
218
  menu: (options: MenuDialogOptions) => ModalId;
148
- form: (options: FormDialogOptions) => ModalId;
219
+ form: FormDialogHandler<TModals['form']>;
149
220
  close: (id: ModalId) => void;
150
221
  closeAll: () => void;
151
222
  }
152
- declare const ModalsContext: React.Context<ModalsContextValue | null>;
153
- interface ModalsProviderProps {
154
- children: React.ReactNode;
155
- modals?: Record<string, React.FC<any>>;
223
+ declare const ModalsContext: React$1.Context<ModalsContextValue<{
224
+ alert: React$1.FC<ConfirmDialogProps>;
225
+ confirm: React$1.FC<ConfirmDialogProps>;
226
+ drawer: React$1.FC<DrawerProps>;
227
+ modal: React$1.FC<BaseModalProps>;
228
+ menu: React$1.FC<MenuDialogProps>;
229
+ form: FormType<unknown, object & Omit<BaseModalProps, "children">, object & _saas_ui_forms.DefaultFieldOverrides & {
230
+ cancel?: _chakra_ui_button_dist_button.ButtonProps | undefined;
231
+ }>;
232
+ }, "confirm" | "form" | "menu" | "alert" | "modal" | "drawer"> | null>;
233
+ interface ModalsProviderProps<TModals extends Record<string, React$1.FC<any>> = Record<string, React$1.FC<any>>> {
234
+ children: React$1.ReactNode;
235
+ modals?: TModals;
156
236
  }
157
237
  type ModalId = string | number;
158
- interface ModalOptions extends Omit<BaseModalProps, 'onClose' | 'isOpen' | 'children'> {
238
+ type WithModalOptions<T> = Omit<T, 'isOpen' | 'onClose'> & ModalOptions;
239
+ interface ModalOptions extends Omit<BaseModalProps, 'isOpen' | 'onClose' | 'children'> {
159
240
  onClose?: (args: {
160
241
  force?: boolean;
161
242
  }) => Promise<boolean | undefined> | void;
162
- body?: React.ReactNode;
163
- children?: React.ReactNode;
164
243
  [key: string]: any;
165
244
  }
166
245
  interface DrawerOptions extends ModalOptions, Omit<DrawerProps, 'onClose' | 'isOpen' | 'children' | 'title' | 'size'> {
@@ -171,13 +250,12 @@ interface MenuDialogOptions extends ModalOptions, Omit<MenuDialogProps, 'onClose
171
250
  }
172
251
  interface FormDialogOptions extends ModalOptions, Omit<FormDialogProps, 'onClose' | 'isOpen' | 'children'> {
173
252
  }
174
- interface OpenOptions extends ModalOptions {
175
- type?: ModalTypes;
253
+ interface OpenOptions<TModalTypes extends string> extends ModalOptions {
254
+ type?: TModalTypes;
176
255
  scope?: ModalScopes;
177
256
  }
178
257
  type ModalScopes = 'modal' | 'alert';
179
- type ModalTypes = 'modal' | 'drawer' | 'alert' | 'confirm' | 'menu' | string;
180
- interface ModalConfig<TModalOptions extends ModalOptions = ModalOptions> {
258
+ interface ModalConfig<TModalOptions extends ModalOptions = ModalOptions, TModalTypes extends string = string> {
181
259
  /**
182
260
  * The modal id, autogenerated when not set.
183
261
  * Can be used to close modals.
@@ -199,12 +277,12 @@ interface ModalConfig<TModalOptions extends ModalOptions = ModalOptions> {
199
277
  *
200
278
  * Custom types can be configured using the `modals` prop of `ModalProvider`
201
279
  */
202
- type?: ModalTypes;
280
+ type?: TModalTypes;
203
281
  /**
204
282
  * Render a custom modal component.
205
283
  * This will ignore the `type` param.
206
284
  */
207
- component?: React.FC<BaseModalProps>;
285
+ component?: React$1.FC<BaseModalProps>;
208
286
  /**
209
287
  * Whether the modal is open or not.
210
288
  * This is used internally to keep track of the modal state.
@@ -212,7 +290,24 @@ interface ModalConfig<TModalOptions extends ModalOptions = ModalOptions> {
212
290
  isOpen?: boolean;
213
291
  }
214
292
  declare function ModalsProvider({ children, modals }: ModalsProviderProps): JSX.Element;
215
- declare const useModalsContext: () => ModalsContextValue;
216
- declare const useModals: () => ModalsContextValue;
293
+ declare const useModalsContext: () => ModalsContextValue<Record<string, React$1.FC<any>>, string>;
294
+ declare const useModals: () => ModalsContextValue<Record<string, React$1.FC<any>>, string>;
295
+
296
+ interface CreateModalsOptions<TModalDefs extends Record<string, React.FC<any>>> {
297
+ modals: TModalDefs;
298
+ }
299
+ declare const createModals: <TModalDefs extends Record<string, React$1.FC<any>>>(options: CreateModalsOptions<TModalDefs>) => {
300
+ ModalsProvider: (props: Omit<ModalsProviderProps, 'modals'>) => JSX.Element;
301
+ useModals: () => ModalsContextValue<{
302
+ alert: React$1.FC<ConfirmDialogProps>;
303
+ confirm: React$1.FC<ConfirmDialogProps>;
304
+ drawer: React$1.FC<DrawerProps>;
305
+ modal: React$1.FC<BaseModalProps>;
306
+ menu: React$1.FC<MenuDialogProps>;
307
+ form: _saas_ui_forms.FormType<unknown, object & Omit<BaseModalProps, "children">, object & _saas_ui_forms.DefaultFieldOverrides & {
308
+ cancel?: _chakra_ui_button_dist_button.ButtonProps | undefined;
309
+ }>;
310
+ } & TModalDefs, "confirm" | "form" | "menu" | "alert" | "modal" | "drawer" | Extract<keyof TModalDefs, string>>;
311
+ };
217
312
 
218
- export { BaseDrawer, BaseDrawerProps, BaseModal, BaseModalProps, ConfirmDialog, ConfirmDialogOptions, ConfirmDialogProps, Drawer, DrawerOptions, DrawerProps, FormDialog, FormDialogOptions, FormDialogProps, MenuDialog, MenuDialogList, MenuDialogListProps, MenuDialogOptions, MenuDialogProps, Modal, ModalConfig, ModalId, ModalScopes, ModalTypes, ModalsContext, ModalsContextValue, ModalsProvider, OpenOptions, useModals, useModalsContext };
313
+ export { BaseDrawer, BaseDrawerProps, BaseModal, BaseModalProps, ConfirmDialog, ConfirmDialogOptions, ConfirmDialogProps, CreateModalsOptions, DefaultFormType, Drawer, DrawerOptions, DrawerProps, FormDialog, FormDialogFieldOverrides, FormDialogOptions, FormDialogProps, MenuDialog, MenuDialogList, MenuDialogListProps, MenuDialogOptions, MenuDialogProps, Modal, ModalConfig, ModalId, ModalScopes, ModalsContext, ModalsContextValue, ModalsProvider, ModalsProviderProps, OpenOptions, createFormDialog, createModals, useModals, useModalsContext };