@opensite/ui 2.1.2 → 2.1.3

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.
@@ -1,435 +1,15 @@
1
1
  "use client";
2
- import * as React from 'react';
3
- import React__default from 'react';
2
+ import * as React3 from 'react';
3
+ import React3__default from 'react';
4
4
  import { clsx } from 'clsx';
5
5
  import { twMerge } from 'tailwind-merge';
6
- import { cva } from 'class-variance-authority';
7
- import { jsx, jsxs } from 'react/jsx-runtime';
8
- import { Form } from '@page-speed/forms';
9
- import { useFileUpload, useContactForm, DynamicFormField } from '@page-speed/forms/integration';
6
+ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
7
+ import { useFileUpload, FormEngine } from '@page-speed/forms/integration';
10
8
 
11
9
  // components/blocks/hero/hero-newsletter-minimal.tsx
12
10
  function cn(...inputs) {
13
11
  return twMerge(clsx(inputs));
14
12
  }
15
- function normalizePhoneNumber(input) {
16
- const trimmed = input.trim();
17
- if (trimmed.toLowerCase().startsWith("tel:")) {
18
- return trimmed;
19
- }
20
- const match = trimmed.match(/^[\s\+\-\(\)]*(\d[\d\s\-\(\)\.]*\d)[\s\-]*(x|ext\.?|extension)?[\s\-]*(\d+)?$/i);
21
- if (match) {
22
- const mainNumber = match[1].replace(/[\s\-\(\)\.]/g, "");
23
- const extension = match[3];
24
- const normalized = mainNumber.length >= 10 && !trimmed.startsWith("+") ? `+${mainNumber}` : mainNumber;
25
- const withExtension = extension ? `${normalized};ext=${extension}` : normalized;
26
- return `tel:${withExtension}`;
27
- }
28
- const cleaned = trimmed.replace(/[\s\-\(\)\.]/g, "");
29
- return `tel:${cleaned}`;
30
- }
31
- function normalizeEmail(input) {
32
- const trimmed = input.trim();
33
- if (trimmed.toLowerCase().startsWith("mailto:")) {
34
- return trimmed;
35
- }
36
- return `mailto:${trimmed}`;
37
- }
38
- function isEmail(input) {
39
- const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
40
- return emailRegex.test(input.trim());
41
- }
42
- function isPhoneNumber(input) {
43
- const trimmed = input.trim();
44
- if (trimmed.toLowerCase().startsWith("tel:")) {
45
- return true;
46
- }
47
- const phoneRegex = /^[\s\+\-\(\)]*\d[\d\s\-\(\)\.]*\d[\s\-]*(x|ext\.?|extension)?[\s\-]*\d*$/i;
48
- return phoneRegex.test(trimmed);
49
- }
50
- function isInternalUrl(href) {
51
- if (typeof window === "undefined") {
52
- return href.startsWith("/") && !href.startsWith("//");
53
- }
54
- const trimmed = href.trim();
55
- if (trimmed.startsWith("/") && !trimmed.startsWith("//")) {
56
- return true;
57
- }
58
- try {
59
- const url = new URL(trimmed, window.location.href);
60
- const currentOrigin = window.location.origin;
61
- const normalizeOrigin = (origin) => origin.replace(/^(https?:\/\/)(www\.)?/, "$1");
62
- return normalizeOrigin(url.origin) === normalizeOrigin(currentOrigin);
63
- } catch {
64
- return false;
65
- }
66
- }
67
- function toRelativePath(href) {
68
- if (typeof window === "undefined") {
69
- return href;
70
- }
71
- const trimmed = href.trim();
72
- if (trimmed.startsWith("/") && !trimmed.startsWith("//")) {
73
- return trimmed;
74
- }
75
- try {
76
- const url = new URL(trimmed, window.location.href);
77
- const currentOrigin = window.location.origin;
78
- const normalizeOrigin = (origin) => origin.replace(/^(https?:\/\/)(www\.)?/, "$1");
79
- if (normalizeOrigin(url.origin) === normalizeOrigin(currentOrigin)) {
80
- return url.pathname + url.search + url.hash;
81
- }
82
- } catch {
83
- }
84
- return trimmed;
85
- }
86
- function useNavigation({
87
- href,
88
- onClick
89
- } = {}) {
90
- const linkType = React.useMemo(() => {
91
- if (!href || href.trim() === "") {
92
- return onClick ? "none" : "none";
93
- }
94
- const trimmed = href.trim();
95
- if (trimmed.toLowerCase().startsWith("mailto:") || isEmail(trimmed)) {
96
- return "mailto";
97
- }
98
- if (trimmed.toLowerCase().startsWith("tel:") || isPhoneNumber(trimmed)) {
99
- return "tel";
100
- }
101
- if (isInternalUrl(trimmed)) {
102
- return "internal";
103
- }
104
- try {
105
- new URL(trimmed, typeof window !== "undefined" ? window.location.href : "http://localhost");
106
- return "external";
107
- } catch {
108
- return "internal";
109
- }
110
- }, [href, onClick]);
111
- const normalizedHref = React.useMemo(() => {
112
- if (!href || href.trim() === "") {
113
- return void 0;
114
- }
115
- const trimmed = href.trim();
116
- switch (linkType) {
117
- case "tel":
118
- return normalizePhoneNumber(trimmed);
119
- case "mailto":
120
- return normalizeEmail(trimmed);
121
- case "internal":
122
- return toRelativePath(trimmed);
123
- case "external":
124
- return trimmed;
125
- default:
126
- return trimmed;
127
- }
128
- }, [href, linkType]);
129
- const target = React.useMemo(() => {
130
- switch (linkType) {
131
- case "external":
132
- return "_blank";
133
- case "internal":
134
- return "_self";
135
- case "mailto":
136
- case "tel":
137
- return void 0;
138
- default:
139
- return void 0;
140
- }
141
- }, [linkType]);
142
- const rel = React.useMemo(() => {
143
- if (linkType === "external") {
144
- return "noopener noreferrer";
145
- }
146
- return void 0;
147
- }, [linkType]);
148
- const isExternal = linkType === "external";
149
- const isInternal = linkType === "internal";
150
- const shouldUseRouter = isInternal && typeof normalizedHref === "string" && normalizedHref.startsWith("/");
151
- const handleClick = React.useCallback(
152
- (event) => {
153
- if (onClick) {
154
- try {
155
- onClick(event);
156
- } catch (error) {
157
- console.error("Error in user onClick handler:", error);
158
- }
159
- }
160
- if (event.defaultPrevented) {
161
- return;
162
- }
163
- if (shouldUseRouter && normalizedHref && event.button === 0 && // left-click only
164
- !event.metaKey && !event.altKey && !event.ctrlKey && !event.shiftKey) {
165
- if (typeof window !== "undefined") {
166
- const handler = window.__opensiteNavigationHandler;
167
- if (typeof handler === "function") {
168
- try {
169
- const handled = handler(normalizedHref, event.nativeEvent || event);
170
- if (handled !== false) {
171
- event.preventDefault();
172
- }
173
- } catch (error) {
174
- console.error("Error in navigation handler:", error);
175
- }
176
- }
177
- }
178
- }
179
- },
180
- [onClick, shouldUseRouter, normalizedHref]
181
- );
182
- return {
183
- linkType,
184
- normalizedHref,
185
- target,
186
- rel,
187
- isExternal,
188
- isInternal,
189
- shouldUseRouter,
190
- handleClick
191
- };
192
- }
193
- var baseStyles = [
194
- // Layout
195
- "inline-flex items-center justify-center gap-2 whitespace-nowrap shrink-0",
196
- // Typography - using CSS variables with sensible defaults
197
- "font-[var(--button-font-family,inherit)]",
198
- "font-[var(--button-font-weight,500)]",
199
- "tracking-[var(--button-letter-spacing,0)]",
200
- "leading-[var(--button-line-height,1.25)]",
201
- "[text-transform:var(--button-text-transform,none)]",
202
- "text-sm",
203
- // Border radius
204
- "rounded-[var(--button-radius,var(--radius,0.375rem))]",
205
- // Smooth transition - using [transition:...] to set full shorthand property (not just transition-property)
206
- "[transition:var(--button-transition,all_250ms_cubic-bezier(0.4,0,0.2,1))]",
207
- // Box shadow (master level) - using [box-shadow:...] for complex multi-value shadows
208
- "[box-shadow:var(--button-shadow,none)]",
209
- "hover:[box-shadow:var(--button-shadow-hover,var(--button-shadow,none))]",
210
- // Disabled state
211
- "disabled:pointer-events-none disabled:opacity-50",
212
- // SVG handling
213
- "[&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 [&_svg]:shrink-0",
214
- // Focus styles
215
- "outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]",
216
- // Invalid state
217
- "aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive"
218
- ].join(" ");
219
- var buttonVariants = cva(baseStyles, {
220
- variants: {
221
- variant: {
222
- // Default (Primary) variant - full customization
223
- default: [
224
- "bg-[var(--button-default-bg,hsl(var(--primary)))]",
225
- "text-[var(--button-default-fg,hsl(var(--primary-foreground)))]",
226
- "border-[length:var(--button-default-border-width,0px)]",
227
- "border-[color:var(--button-default-border,transparent)]",
228
- "[box-shadow:var(--button-default-shadow,var(--button-shadow,none))]",
229
- "hover:bg-[var(--button-default-hover-bg,hsl(var(--primary)/0.9))]",
230
- "hover:text-[var(--button-default-hover-fg,var(--button-default-fg,hsl(var(--primary-foreground))))]",
231
- "hover:border-[color:var(--button-default-hover-border,var(--button-default-border,transparent))]",
232
- "hover:[box-shadow:var(--button-default-shadow-hover,var(--button-shadow-hover,var(--button-default-shadow,var(--button-shadow,none))))]"
233
- ].join(" "),
234
- // Destructive variant - full customization
235
- destructive: [
236
- "bg-[var(--button-destructive-bg,hsl(var(--destructive)))]",
237
- "text-[var(--button-destructive-fg,white)]",
238
- "border-[length:var(--button-destructive-border-width,0px)]",
239
- "border-[color:var(--button-destructive-border,transparent)]",
240
- "[box-shadow:var(--button-destructive-shadow,var(--button-shadow,none))]",
241
- "hover:bg-[var(--button-destructive-hover-bg,hsl(var(--destructive)/0.9))]",
242
- "hover:text-[var(--button-destructive-hover-fg,var(--button-destructive-fg,white))]",
243
- "hover:border-[color:var(--button-destructive-hover-border,var(--button-destructive-border,transparent))]",
244
- "hover:[box-shadow:var(--button-destructive-shadow-hover,var(--button-shadow-hover,var(--button-destructive-shadow,var(--button-shadow,none))))]",
245
- "focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40",
246
- "dark:bg-destructive/60"
247
- ].join(" "),
248
- // Outline variant - full customization with proper border handling
249
- outline: [
250
- "bg-[var(--button-outline-bg,hsl(var(--background)))]",
251
- "text-[var(--button-outline-fg,inherit)]",
252
- "border-[length:var(--button-outline-border-width,1px)]",
253
- "border-[color:var(--button-outline-border,hsl(var(--border)))]",
254
- "[box-shadow:var(--button-outline-shadow,var(--button-shadow,0_1px_2px_0_rgb(0_0_0/0.05)))]",
255
- "hover:bg-[var(--button-outline-hover-bg,hsl(var(--accent)))]",
256
- "hover:text-[var(--button-outline-hover-fg,hsl(var(--accent-foreground)))]",
257
- "hover:border-[color:var(--button-outline-hover-border,var(--button-outline-border,hsl(var(--border))))]",
258
- "hover:[box-shadow:var(--button-outline-shadow-hover,var(--button-shadow-hover,var(--button-outline-shadow,var(--button-shadow,none))))]",
259
- "dark:bg-input/30 dark:border-input dark:hover:bg-input/50"
260
- ].join(" "),
261
- // Secondary variant - full customization
262
- secondary: [
263
- "bg-[var(--button-secondary-bg,hsl(var(--secondary)))]",
264
- "text-[var(--button-secondary-fg,hsl(var(--secondary-foreground)))]",
265
- "border-[length:var(--button-secondary-border-width,0px)]",
266
- "border-[color:var(--button-secondary-border,transparent)]",
267
- "[box-shadow:var(--button-secondary-shadow,var(--button-shadow,none))]",
268
- "hover:bg-[var(--button-secondary-hover-bg,hsl(var(--secondary)/0.8))]",
269
- "hover:text-[var(--button-secondary-hover-fg,var(--button-secondary-fg,hsl(var(--secondary-foreground))))]",
270
- "hover:border-[color:var(--button-secondary-hover-border,var(--button-secondary-border,transparent))]",
271
- "hover:[box-shadow:var(--button-secondary-shadow-hover,var(--button-shadow-hover,var(--button-secondary-shadow,var(--button-shadow,none))))]"
272
- ].join(" "),
273
- // Ghost variant - full customization
274
- ghost: [
275
- "bg-[var(--button-ghost-bg,transparent)]",
276
- "text-[var(--button-ghost-fg,inherit)]",
277
- "border-[length:var(--button-ghost-border-width,0px)]",
278
- "border-[color:var(--button-ghost-border,transparent)]",
279
- "[box-shadow:var(--button-ghost-shadow,var(--button-shadow,none))]",
280
- "hover:bg-[var(--button-ghost-hover-bg,hsl(var(--accent)))]",
281
- "hover:text-[var(--button-ghost-hover-fg,hsl(var(--accent-foreground)))]",
282
- "hover:border-[color:var(--button-ghost-hover-border,var(--button-ghost-border,transparent))]",
283
- "hover:[box-shadow:var(--button-ghost-shadow-hover,var(--button-shadow-hover,var(--button-ghost-shadow,var(--button-shadow,none))))]",
284
- "dark:hover:bg-accent/50"
285
- ].join(" "),
286
- // Link variant - full customization
287
- link: [
288
- "bg-[var(--button-link-bg,transparent)]",
289
- "text-[var(--button-link-fg,hsl(var(--primary)))]",
290
- "border-[length:var(--button-link-border-width,0px)]",
291
- "border-[color:var(--button-link-border,transparent)]",
292
- "[box-shadow:var(--button-link-shadow,none)]",
293
- "hover:bg-[var(--button-link-hover-bg,transparent)]",
294
- "hover:text-[var(--button-link-hover-fg,var(--button-link-fg,hsl(var(--primary))))]",
295
- "hover:[box-shadow:var(--button-link-shadow-hover,none)]",
296
- "underline-offset-4 hover:underline"
297
- ].join(" ")
298
- },
299
- size: {
300
- default: [
301
- "h-[var(--button-height-md,2.25rem)]",
302
- "px-[var(--button-padding-x-md,1rem)]",
303
- "py-[var(--button-padding-y-md,0.5rem)]",
304
- "has-[>svg]:px-[calc(var(--button-padding-x-md,1rem)*0.75)]"
305
- ].join(" "),
306
- sm: [
307
- "h-[var(--button-height-sm,2rem)]",
308
- "px-[var(--button-padding-x-sm,0.75rem)]",
309
- "py-[var(--button-padding-y-sm,0.25rem)]",
310
- "gap-1.5",
311
- "has-[>svg]:px-[calc(var(--button-padding-x-sm,0.75rem)*0.83)]"
312
- ].join(" "),
313
- md: [
314
- "h-[var(--button-height-md,2.25rem)]",
315
- "px-[var(--button-padding-x-md,1rem)]",
316
- "py-[var(--button-padding-y-md,0.5rem)]",
317
- "has-[>svg]:px-[calc(var(--button-padding-x-md,1rem)*0.75)]"
318
- ].join(" "),
319
- lg: [
320
- "h-[var(--button-height-lg,2.5rem)]",
321
- "px-[var(--button-padding-x-lg,1.5rem)]",
322
- "py-[var(--button-padding-y-lg,0.5rem)]",
323
- "has-[>svg]:px-[calc(var(--button-padding-x-lg,1.5rem)*0.67)]"
324
- ].join(" "),
325
- icon: "size-[var(--button-height-md,2.25rem)]",
326
- "icon-sm": "size-[var(--button-height-sm,2rem)]",
327
- "icon-lg": "size-[var(--button-height-lg,2.5rem)]"
328
- }
329
- },
330
- defaultVariants: {
331
- variant: "default",
332
- size: "default"
333
- }
334
- });
335
- var Pressable = React.forwardRef(
336
- ({
337
- children,
338
- className,
339
- href,
340
- onClick,
341
- variant,
342
- size,
343
- asButton = false,
344
- fallbackComponentType = "span",
345
- componentType,
346
- "aria-label": ariaLabel,
347
- "aria-describedby": ariaDescribedby,
348
- id,
349
- ...props
350
- }, ref) => {
351
- const navigation = useNavigation({ href, onClick });
352
- const {
353
- normalizedHref,
354
- target,
355
- rel,
356
- linkType,
357
- isInternal,
358
- handleClick
359
- } = navigation;
360
- const shouldRenderLink = normalizedHref && linkType !== "none";
361
- const shouldRenderButton = !shouldRenderLink && onClick;
362
- const effectiveComponentType = componentType || (shouldRenderLink ? "a" : shouldRenderButton ? "button" : fallbackComponentType);
363
- const finalComponentType = isInternal && shouldRenderLink ? "a" : effectiveComponentType;
364
- const shouldApplyButtonStyles = asButton || variant || size;
365
- const combinedClassName = cn(
366
- shouldApplyButtonStyles && buttonVariants({ variant, size }),
367
- className
368
- );
369
- const dataProps = Object.fromEntries(
370
- Object.entries(props).filter(([key]) => key.startsWith("data-"))
371
- );
372
- const buttonDataAttributes = shouldApplyButtonStyles ? {
373
- "data-slot": "button",
374
- "data-variant": variant ?? "default",
375
- "data-size": size ?? "default"
376
- } : {};
377
- const commonProps = {
378
- className: combinedClassName,
379
- onClick: handleClick,
380
- "aria-label": ariaLabel,
381
- "aria-describedby": ariaDescribedby,
382
- id,
383
- ...dataProps,
384
- ...buttonDataAttributes
385
- };
386
- if (finalComponentType === "a" && shouldRenderLink) {
387
- return /* @__PURE__ */ jsx(
388
- "a",
389
- {
390
- ref,
391
- href: normalizedHref,
392
- target,
393
- rel,
394
- ...commonProps,
395
- ...props,
396
- children
397
- }
398
- );
399
- }
400
- if (finalComponentType === "button") {
401
- return /* @__PURE__ */ jsx(
402
- "button",
403
- {
404
- ref,
405
- type: props.type || "button",
406
- ...commonProps,
407
- ...props,
408
- children
409
- }
410
- );
411
- }
412
- if (finalComponentType === "div") {
413
- return /* @__PURE__ */ jsx(
414
- "div",
415
- {
416
- ref,
417
- ...commonProps,
418
- children
419
- }
420
- );
421
- }
422
- return /* @__PURE__ */ jsx(
423
- "span",
424
- {
425
- ref,
426
- ...commonProps,
427
- children
428
- }
429
- );
430
- }
431
- );
432
- Pressable.displayName = "Pressable";
433
13
  var maxWidthStyles = {
434
14
  sm: "max-w-screen-sm",
435
15
  md: "max-w-screen-md",
@@ -439,7 +19,7 @@ var maxWidthStyles = {
439
19
  "4xl": "max-w-[1536px]",
440
20
  full: "max-w-full"
441
21
  };
442
- var Container = React__default.forwardRef(
22
+ var Container = React3__default.forwardRef(
443
23
  ({ children, maxWidth = "xl", className, as = "div", ...props }, ref) => {
444
24
  const Component = as;
445
25
  return /* @__PURE__ */ jsx(
@@ -744,7 +324,7 @@ var spacingStyles = {
744
324
  };
745
325
  var predefinedSpacings = ["none", "sm", "md", "lg", "xl"];
746
326
  var isPredefinedSpacing = (spacing) => predefinedSpacings.includes(spacing);
747
- var Section = React__default.forwardRef(
327
+ var Section = React3__default.forwardRef(
748
328
  ({
749
329
  id,
750
330
  title,
@@ -851,18 +431,7 @@ function HeroNewsletterMinimal({
851
431
  removeFile,
852
432
  resetUpload
853
433
  } = useFileUpload({ onError });
854
- const { form, submissionError, formMethod, resetSubmissionState } = useContactForm({
855
- formFields,
856
- formConfig,
857
- onSubmit,
858
- onSuccess: (data) => {
859
- resetUpload();
860
- onSuccess?.(data);
861
- },
862
- onError,
863
- uploadTokens
864
- });
865
- const renderStats = React.useMemo(() => {
434
+ const renderStats = React3.useMemo(() => {
866
435
  if (statsSlot) return statsSlot;
867
436
  if (!stats || stats.length === 0) return null;
868
437
  return stats.map((stat, index) => /* @__PURE__ */ jsx("div", { className: cn("flex items-center", stat.className), children: /* @__PURE__ */ jsxs("div", { className: "text-center", children: [
@@ -888,81 +457,62 @@ function HeroNewsletterMinimal({
888
457
  /* @__PURE__ */ jsx("div", { className: cn("text-sm"), children: stat.label })
889
458
  ] }) }, index));
890
459
  }, [statsSlot, stats]);
891
- const renderForm = React.useMemo(() => {
460
+ const renderForm = React3.useMemo(() => {
892
461
  if (formSlot) return formSlot;
893
462
  const defaultButtonAction = {
894
463
  label: "Subscribe",
895
- variant: "default",
896
- className: "h-12"
464
+ variant: "default"
897
465
  };
898
466
  const action = buttonAction || defaultButtonAction;
899
- return /* @__PURE__ */ jsxs(
900
- Form,
901
- {
902
- form,
903
- fields: formFields,
904
- notificationConfig: {
905
- submissionError,
906
- successMessage
907
- },
908
- formConfig: {
909
- endpoint: formConfig?.endpoint,
910
- method: formMethod,
911
- submissionConfig: formConfig?.submissionConfig,
912
- formLayout: "button-group",
913
- buttonGroupSize: "lg",
914
- submitLabel: action.label,
915
- submitVariant: action.variant || "default"
916
- },
917
- onNewSubmission: () => {
918
- resetUpload();
919
- resetSubmissionState();
920
- },
921
- children: [
922
- formFields.map((field) => /* @__PURE__ */ jsx("div", { className: "flex-1", children: /* @__PURE__ */ jsx(
923
- DynamicFormField,
924
- {
925
- field,
926
- uploadProgress,
927
- onFileUpload: uploadFiles,
928
- onFileRemove: removeFile,
929
- isUploading
930
- }
931
- ) }, field.name)),
932
- /* @__PURE__ */ jsxs(
933
- Pressable,
934
- {
935
- onClick: form.handleSubmit,
936
- asButton: true,
937
- variant: action.variant,
938
- className: cn("h-12", action.className),
939
- disabled: form.isSubmitting,
940
- children: [
467
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
468
+ /* @__PURE__ */ jsx(
469
+ FormEngine,
470
+ {
471
+ api: formConfig,
472
+ fields: formFields,
473
+ formLayoutSettings: {
474
+ formLayout: "button-group",
475
+ buttonGroupSetup: {
476
+ size: "lg",
477
+ submitLabel: /* @__PURE__ */ jsxs(Fragment, { children: [
941
478
  action.label,
942
479
  action.iconAfter
943
- ]
480
+ ] }),
481
+ submitVariant: action.variant || "default"
944
482
  }
945
- ),
946
- helperText && (typeof helperText === "string" ? /* @__PURE__ */ jsx("p", { className: cn("text-sm mt-2 text-center"), children: helperText }) : helperText)
947
- ]
948
- }
949
- );
483
+ },
484
+ successMessage,
485
+ onSubmit,
486
+ onSuccess: (data) => {
487
+ resetUpload();
488
+ onSuccess?.(data);
489
+ },
490
+ onError,
491
+ uploadTokens,
492
+ uploadProgress,
493
+ onFileUpload: uploadFiles,
494
+ onFileRemove: removeFile,
495
+ isUploading
496
+ }
497
+ ),
498
+ helperText && (typeof helperText === "string" ? /* @__PURE__ */ jsx("p", { className: cn("text-sm mt-2 text-center"), children: helperText }) : helperText)
499
+ ] });
950
500
  }, [
951
501
  formSlot,
952
502
  formFields,
953
- form,
954
503
  formConfig,
955
- formMethod,
956
504
  buttonAction,
505
+ uploadTokens,
957
506
  uploadProgress,
958
507
  uploadFiles,
959
508
  removeFile,
960
509
  isUploading,
961
- submissionError,
962
510
  successMessage,
511
+ onSubmit,
512
+ onSuccess,
513
+ onError,
963
514
  helperText,
964
- resetUpload,
965
- resetSubmissionState
515
+ resetUpload
966
516
  ]);
967
517
  return /* @__PURE__ */ jsx(
968
518
  Section,