@saas-ui/forms 0.4.0 → 0.5.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.
- package/CHANGELOG.md +30 -0
 - package/dist/array-field.d.ts +3 -3
 - package/dist/array-field.d.ts.map +1 -1
 - package/dist/display-field.d.ts +3 -0
 - package/dist/display-field.d.ts.map +1 -1
 - package/dist/field.d.ts +3 -2
 - package/dist/field.d.ts.map +1 -1
 - package/dist/form.d.ts +1 -1
 - package/dist/form.d.ts.map +1 -1
 - package/dist/index.d.ts +2 -0
 - package/dist/index.d.ts.map +1 -1
 - package/dist/index.js +1 -1
 - package/dist/index.js.map +1 -1
 - package/dist/index.modern.js +1 -1
 - package/dist/index.modern.js.map +1 -1
 - package/dist/step-form.d.ts +32 -0
 - package/dist/step-form.d.ts.map +1 -0
 - package/dist/use-array-field.d.ts +1 -1
 - package/dist/use-step-form.d.ts +44 -0
 - package/dist/use-step-form.d.ts.map +1 -0
 - package/package.json +3 -1
 - package/src/array-field.tsx +56 -45
 - package/src/display-field.tsx +8 -3
 - package/src/field.tsx +3 -2
 - package/src/form.tsx +2 -2
 - package/src/index.ts +2 -0
 - package/src/step-form.tsx +166 -0
 - package/src/use-array-field.tsx +1 -1
 - package/src/use-step-form.tsx +118 -0
 
    
        package/CHANGELOG.md
    CHANGED
    
    | 
         @@ -1,5 +1,35 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            # @saas-ui/forms
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
      
 3 
     | 
    
         
            +
            ## 0.5.3
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            ### Patch Changes
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
            - 9245460: Make sure Field ref is focusable
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
            ## 0.5.2
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
            ### Patch Changes
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
            - 0f67f76: Fixed circular dependency
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
            ## 0.5.1
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
            ### Patch Changes
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
            - c610881: Fixed a type error
         
     | 
| 
      
 20 
     | 
    
         
            +
            - a26aa7c: ArrayField context can now be accessed using ref.
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
      
 22 
     | 
    
         
            +
            ## 0.5.0
         
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
      
 24 
     | 
    
         
            +
            ### Minor Changes
         
     | 
| 
      
 25 
     | 
    
         
            +
             
     | 
| 
      
 26 
     | 
    
         
            +
            - 9d11ba5: Added StepForm and Stepper components
         
     | 
| 
      
 27 
     | 
    
         
            +
             
     | 
| 
      
 28 
     | 
    
         
            +
            ### Patch Changes
         
     | 
| 
      
 29 
     | 
    
         
            +
             
     | 
| 
      
 30 
     | 
    
         
            +
            - Updated dependencies [9d11ba5]
         
     | 
| 
      
 31 
     | 
    
         
            +
              - @saas-ui/react-utils@0.1.0
         
     | 
| 
      
 32 
     | 
    
         
            +
             
     | 
| 
       3 
33 
     | 
    
         
             
            ## 0.4.0
         
     | 
| 
       4 
34 
     | 
    
         | 
| 
       5 
35 
     | 
    
         
             
            ### Minor Changes
         
     | 
    
        package/dist/array-field.d.ts
    CHANGED
    
    | 
         @@ -2,7 +2,7 @@ import * as React from 'react'; 
     | 
|
| 
       2 
2 
     | 
    
         
             
            import { ResponsiveValue } from '@chakra-ui/system';
         
     | 
| 
       3 
3 
     | 
    
         
             
            import { ButtonProps } from '@saas-ui/button';
         
     | 
| 
       4 
4 
     | 
    
         
             
            import { FieldProps } from './field';
         
     | 
| 
       5 
     | 
    
         
            -
            import { ArrayFieldOptions } from './use-array-field';
         
     | 
| 
      
 5 
     | 
    
         
            +
            import { ArrayFieldOptions, UseArrayFieldReturn } from './use-array-field';
         
     | 
| 
       6 
6 
     | 
    
         
             
            interface ArrayField {
         
     | 
| 
       7 
7 
     | 
    
         
             
                id: string;
         
     | 
| 
       8 
8 
     | 
    
         
             
                [key: string]: unknown;
         
     | 
| 
         @@ -38,11 +38,11 @@ export declare const ArrayFieldRemoveButton: React.FC<ButtonProps>; 
     | 
|
| 
       38 
38 
     | 
    
         
             
            export declare const ArrayFieldAddButton: React.FC<ButtonProps>;
         
     | 
| 
       39 
39 
     | 
    
         
             
            export interface ArrayFieldProps extends ArrayFieldOptions, Omit<FieldProps, 'defaultValue'> {
         
     | 
| 
       40 
40 
     | 
    
         
             
            }
         
     | 
| 
       41 
     | 
    
         
            -
            export declare const ArrayField: React. 
     | 
| 
      
 41 
     | 
    
         
            +
            export declare const ArrayField: React.ForwardRefExoticComponent<ArrayFieldProps & React.RefAttributes<UseArrayFieldReturn>>;
         
     | 
| 
       42 
42 
     | 
    
         
             
            export interface ArrayFieldRowsProps {
         
     | 
| 
       43 
43 
     | 
    
         
             
                children: (fields: ArrayField[]) => React.ReactElement | null;
         
     | 
| 
       44 
44 
     | 
    
         
             
            }
         
     | 
| 
       45 
45 
     | 
    
         
             
            export declare const ArrayFieldRows: ({ children, }: ArrayFieldRowsProps) => React.ReactElement | null;
         
     | 
| 
       46 
     | 
    
         
            -
            export declare const ArrayFieldContainer: React. 
     | 
| 
      
 46 
     | 
    
         
            +
            export declare const ArrayFieldContainer: React.ForwardRefExoticComponent<ArrayFieldProps & React.RefAttributes<UseArrayFieldReturn>>;
         
     | 
| 
       47 
47 
     | 
    
         
             
            export {};
         
     | 
| 
       48 
48 
     | 
    
         
             
            //# sourceMappingURL=array-field.d.ts.map
         
     | 
| 
         @@ -1 +1 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            {"version":3,"file":"array-field.d.ts","sourceRoot":"","sources":["../src/array-field.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,EAAU,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAG3D,OAAO,EAAc,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAGzD,OAAO,EAAa,UAAU,EAAE,MAAM,SAAS,CAAA;AAI/C,OAAO,EAKL,iBAAiB, 
     | 
| 
      
 1 
     | 
    
         
            +
            {"version":3,"file":"array-field.d.ts","sourceRoot":"","sources":["../src/array-field.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,EAAU,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAG3D,OAAO,EAAc,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAGzD,OAAO,EAAa,UAAU,EAAE,MAAM,SAAS,CAAA;AAI/C,OAAO,EAKL,iBAAiB,EAKjB,mBAAmB,EACpB,MAAM,mBAAmB,CAAA;AAE1B,UAAU,UAAU;IAClB,EAAE,EAAE,MAAM,CAAA;IACV,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACvB;AAED,UAAU,kBAAkB;IAC1B;;OAEG;IACH,OAAO,CAAC,EAAE,eAAe,CAAC,MAAM,CAAC,CAAA;IACjC;;OAEG;IACH,OAAO,CAAC,EAAE,eAAe,CAAC,MAAM,GAAG,MAAM,CAAC,CAAA;IAC1C;;OAEG;IACH,KAAK,EAAE,MAAM,CAAA;CACd;AAED,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CActD,CAAA;AAED,MAAM,WAAW,wBAAwB;IACvC;;OAEG;IACH,OAAO,CAAC,EAAE,eAAe,CAAC,MAAM,CAAC,CAAA;IACjC;;OAEG;IACH,OAAO,CAAC,EAAE,eAAe,CAAC,MAAM,GAAG,MAAM,CAAC,CAAA;CAC3C;AAED,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAAE,CAAC,wBAAwB,CAkBlE,CAAA;AAED,eAAO,MAAM,sBAAsB,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAmB/D,CAAA;AAED,eAAO,MAAM,sBAAsB,EAAE,KAAK,CAAC,EAAE,CAAC,WAAW,CASxD,CAAA;AAED,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAAE,CAAC,WAAW,CAUrD,CAAA;AAED,MAAM,WAAW,eACf,SAAQ,iBAAiB,EACvB,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC;CAAG;AAEvC,eAAO,MAAM,UAAU,6FAqBtB,CAAA;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,KAAK,CAAC,YAAY,GAAG,IAAI,CAAA;CAC9D;AAED,eAAO,MAAM,cAAc,kBAExB,mBAAmB,KAAG,MAAM,YAAY,GAAG,IAG7C,CAAA;AAED,eAAO,MAAM,mBAAmB,6FAgC/B,CAAA"}
         
     | 
    
        package/dist/display-field.d.ts
    CHANGED
    
    | 
         @@ -4,4 +4,7 @@ import { FieldProps } from './field'; 
     | 
|
| 
       4 
4 
     | 
    
         
             
            export interface DisplayFieldProps extends FormControlProps, Omit<FieldProps, 'type' | 'label'> {
         
     | 
| 
       5 
5 
     | 
    
         
             
            }
         
     | 
| 
       6 
6 
     | 
    
         
             
            export declare const DisplayField: React.FC<DisplayFieldProps>;
         
     | 
| 
      
 7 
     | 
    
         
            +
            export declare const FormValue: React.FC<{
         
     | 
| 
      
 8 
     | 
    
         
            +
                name: string;
         
     | 
| 
      
 9 
     | 
    
         
            +
            }>;
         
     | 
| 
       7 
10 
     | 
    
         
             
            //# sourceMappingURL=display-field.d.ts.map
         
     | 
| 
         @@ -1 +1 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            {"version":3,"file":"display-field.d.ts","sourceRoot":"","sources":["../src/display-field.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAG9B,OAAO,EAGL,gBAAgB,EAEjB,MAAM,kBAAkB,CAAA;AAEzB,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAEpC,MAAM,WAAW,iBACf,SAAQ,gBAAgB,EACtB,IAAI,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC;CAAG;AAEzC,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAcpD,CAAA"}
         
     | 
| 
      
 1 
     | 
    
         
            +
            {"version":3,"file":"display-field.d.ts","sourceRoot":"","sources":["../src/display-field.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAG9B,OAAO,EAGL,gBAAgB,EAEjB,MAAM,kBAAkB,CAAA;AAEzB,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAEpC,MAAM,WAAW,iBACf,SAAQ,gBAAgB,EACtB,IAAI,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC;CAAG;AAEzC,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAcpD,CAAA;AAED,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAGhD,CAAA"}
         
     | 
    
        package/dist/field.d.ts
    CHANGED
    
    | 
         @@ -1,6 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            import * as React from 'react';
         
     | 
| 
       2 
2 
     | 
    
         
             
            import { RegisterOptions, FieldValues, FieldPath } from 'react-hook-form';
         
     | 
| 
       3 
     | 
    
         
            -
            import {  
     | 
| 
      
 3 
     | 
    
         
            +
            import { FormControlProps } from '@chakra-ui/react';
         
     | 
| 
      
 4 
     | 
    
         
            +
            import { FocusableElement } from '@chakra-ui/utils';
         
     | 
| 
       4 
5 
     | 
    
         
             
            export interface Option {
         
     | 
| 
       5 
6 
     | 
    
         
             
                value: string;
         
     | 
| 
       6 
7 
     | 
    
         
             
                label?: string;
         
     | 
| 
         @@ -60,7 +61,7 @@ export declare const BaseField: React.FC<FieldProps>; 
     | 
|
| 
       60 
61 
     | 
    
         
             
            export declare const Field: <TFieldValues extends FieldValues>(props: FieldProps<TFieldValues, import("react-hook-form").Path<TFieldValues>> & {
         
     | 
| 
       61 
62 
     | 
    
         
             
                [key: string]: unknown;
         
     | 
| 
       62 
63 
     | 
    
         
             
            } & {
         
     | 
| 
       63 
     | 
    
         
            -
                ref?: React.ForwardedRef< 
     | 
| 
      
 64 
     | 
    
         
            +
                ref?: React.ForwardedRef<FocusableElement> | undefined;
         
     | 
| 
       64 
65 
     | 
    
         
             
            }) => React.ReactElement;
         
     | 
| 
       65 
66 
     | 
    
         
             
            export declare const withControlledInput: (InputComponent: any) => import("@chakra-ui/react").ComponentWithAs<any, FieldProps<FieldValues, string>>;
         
     | 
| 
       66 
67 
     | 
    
         
             
            export declare const withUncontrolledInput: (InputComponent: any) => import("@chakra-ui/react").ComponentWithAs<any, FieldProps<FieldValues, string>>;
         
     | 
    
        package/dist/field.d.ts.map
    CHANGED
    
    | 
         @@ -1 +1 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            {"version":3,"file":"field.d.ts","sourceRoot":"","sources":["../src/field.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAKL,eAAe,EACf,WAAW,EACX,SAAS,EACV,MAAM,iBAAiB,CAAA;AAExB,OAAO, 
     | 
| 
      
 1 
     | 
    
         
            +
            {"version":3,"file":"field.d.ts","sourceRoot":"","sources":["../src/field.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAKL,eAAe,EACf,WAAW,EACX,SAAS,EACV,MAAM,iBAAiB,CAAA;AAExB,OAAO,EAIL,gBAAgB,EASjB,MAAM,kBAAkB,CAAA;AAOzB,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AAEnD,MAAM,WAAW,MAAM;IACrB,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACvB;AAED,oBAAY,UAAU,GAAG,IAAI,CAC3B,eAAe,EACf,UAAU,GAAG,KAAK,GAAG,KAAK,GAAG,WAAW,GAAG,WAAW,GAAG,SAAS,CACnE,CAAA;AAED,oBAAY,UAAU,GAClB,MAAM,GACN,QAAQ,GACR,UAAU,GACV,UAAU,GACV,QAAQ,GACR,eAAe,GACf,UAAU,GACV,OAAO,GACP,QAAQ,GACR,KAAK,GACL,MAAM,CAAA;AAEV,MAAM,WAAW,UAAU,CACzB,YAAY,SAAS,WAAW,GAAG,WAAW,EAC9C,KAAK,SAAS,SAAS,CAAC,YAAY,CAAC,GAAG,SAAS,CAAC,YAAY,CAAC,CAC/D,SAAQ,IAAI,CAAC,gBAAgB,EAAE,OAAO,GAAG,MAAM,CAAC;IAChD;;OAEG;IACH,IAAI,EAAE,KAAK,CAAA;IACX;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IACd;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAA;IACb;;OAEG;IACH,KAAK,CAAC,EAAE,IAAI,CACV,eAAe,CAAC,YAAY,EAAE,KAAK,CAAC,EACpC,eAAe,GAAG,aAAa,GAAG,YAAY,GAAG,UAAU,CAC5D,CAAA;IACD;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;IAClB;;;;;;;;;;;;;;;;OAgBG;IACH,IAAI,CAAC,EAAE,UAAU,CAAA;IACjB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAqBD,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,UAAU,CAwB1C,CAAA;AACD,eAAO,MAAM,KAAK;;;;MAkBb,MAAM,YAAY,CAAA;AA0DvB,eAAO,MAAM,mBAAmB,mBAAoB,GAAG,qFAqBtD,CAAA;AAED,eAAO,MAAM,qBAAqB,mBAAoB,GAAG,qFAgBxD,CAAA;AAED,MAAM,WAAW,wBAAwB;IACvC,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,SAAS,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,CAAA;CAC1B;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,iBAAiB,SACtB,MAAM,aACD,MAAM,EAAE,CAAC,GAAG,CAAC,qMAsBzB,CAAA;AAID,eAAO,MAAM,UAAU,kJAAmC,CAAA;AAC1D,eAAO,MAAM,gBAAgB,kJAE3B,CAAA;AACF,eAAO,MAAM,kBAAkB,kJAA+C,CAAA;AAC9E,eAAO,MAAM,aAAa,kJAA0C,CAAA;AACpE,eAAO,MAAM,WAAW,kJAavB,CAAA;AACD,eAAO,MAAM,WAAW,kJAEtB,CAAA;AACF,eAAO,MAAM,aAAa,kJAYzB,CAAA;AACD,eAAO,MAAM,UAAU,kJAErB,CAAA;AACF,eAAO,MAAM,QAAQ,kJAEnB,CAAA;AACF,eAAO,MAAM,iBAAiB,kJAI7B,CAAA"}
         
     | 
    
        package/dist/form.d.ts
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            import * as React from 'react';
         
     | 
| 
       2 
2 
     | 
    
         
             
            import { HTMLChakraProps } from '@chakra-ui/react';
         
     | 
| 
       3 
3 
     | 
    
         
             
            import { UseFormProps, UseFormReturn, FieldValues, SubmitHandler, SubmitErrorHandler } from 'react-hook-form';
         
     | 
| 
       4 
     | 
    
         
            -
            export type { UseFormReturn };
         
     | 
| 
      
 4 
     | 
    
         
            +
            export type { UseFormReturn, FieldValues };
         
     | 
| 
       5 
5 
     | 
    
         
             
            interface FormOptions<TFieldValues extends FieldValues = FieldValues> {
         
     | 
| 
       6 
6 
     | 
    
         
             
                /**
         
     | 
| 
       7 
7 
     | 
    
         
             
                 * The form schema, currently supports Yup schema only.
         
     | 
    
        package/dist/form.d.ts.map
    CHANGED
    
    | 
         @@ -1 +1 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            {"version":3,"file":"form.d.ts","sourceRoot":"","sources":["../src/form.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,EAAU,eAAe,EAAc,MAAM,kBAAkB,CAAA;AAEtE,OAAO,EAGL,YAAY,EACZ,aAAa,EACb,WAAW,EACX,aAAa,EACb,kBAAkB,EACnB,MAAM,iBAAiB,CAAA;AAIxB,YAAY,EAAE,aAAa,EAAE,CAAA; 
     | 
| 
      
 1 
     | 
    
         
            +
            {"version":3,"file":"form.d.ts","sourceRoot":"","sources":["../src/form.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,EAAU,eAAe,EAAc,MAAM,kBAAkB,CAAA;AAEtE,OAAO,EAGL,YAAY,EACZ,aAAa,EACb,WAAW,EACX,aAAa,EACb,kBAAkB,EACnB,MAAM,iBAAiB,CAAA;AAIxB,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,CAAA;AAE1C,UAAU,WAAW,CAAC,YAAY,SAAS,WAAW,GAAG,WAAW;IAClE;;OAEG;IACH,MAAM,CAAC,EAAE,GAAG,CAAA;IACZ;;OAEG;IACH,QAAQ,EAAE,aAAa,CAAC,YAAY,CAAC,CAAA;IACrC;;OAEG;IACH,OAAO,CAAC,EAAE,kBAAkB,CAAC,YAAY,CAAC,CAAA;IAC1C;;OAEG;IACH,OAAO,CAAC,EAAE,KAAK,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAA;CAClD;AAED,MAAM,WAAW,SAAS,CAAC,YAAY,SAAS,WAAW,GAAG,WAAW,CACvE,SAAQ,YAAY,CAAC,YAAY,CAAC,EAChC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC,EACrD,WAAW,CAAC,YAAY,CAAC;CAAG;AAEhC;;;GAGG;AACH,eAAO,MAAM,IAAI;;MA8DZ,MAAM,YAAY,CAAA"}
         
     | 
    
        package/dist/index.d.ts
    CHANGED
    
    | 
         @@ -9,6 +9,8 @@ export * from './array-field'; 
     | 
|
| 
       9 
9 
     | 
    
         
             
            export * from './use-array-field';
         
     | 
| 
       10 
10 
     | 
    
         
             
            export * from './object-field';
         
     | 
| 
       11 
11 
     | 
    
         
             
            export * from './display-if';
         
     | 
| 
      
 12 
     | 
    
         
            +
            export * from './step-form';
         
     | 
| 
      
 13 
     | 
    
         
            +
            export * from './use-step-form';
         
     | 
| 
       12 
14 
     | 
    
         
             
            export * from '@saas-ui/input-right-button';
         
     | 
| 
       13 
15 
     | 
    
         
             
            export type { FieldErrors } from 'react-hook-form';
         
     | 
| 
       14 
16 
     | 
    
         
             
            //# sourceMappingURL=index.d.ts.map
         
     | 
    
        package/dist/index.d.ts.map
    CHANGED
    
    | 
         @@ -1 +1 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAA;AAC/B,cAAc,SAAS,CAAA;AACvB,cAAc,UAAU,CAAA;AACxB,cAAc,QAAQ,CAAA;AACtB,cAAc,aAAa,CAAA;AAC3B,cAAc,UAAU,CAAA;AACxB,cAAc,iBAAiB,CAAA;AAC/B,cAAc,eAAe,CAAA;AAC7B,cAAc,mBAAmB,CAAA;AACjC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,cAAc,CAAA; 
     | 
| 
      
 1 
     | 
    
         
            +
            {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAA;AAC/B,cAAc,SAAS,CAAA;AACvB,cAAc,UAAU,CAAA;AACxB,cAAc,QAAQ,CAAA;AACtB,cAAc,aAAa,CAAA;AAC3B,cAAc,UAAU,CAAA;AACxB,cAAc,iBAAiB,CAAA;AAC/B,cAAc,eAAe,CAAA;AAC7B,cAAc,mBAAmB,CAAA;AACjC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,cAAc,CAAA;AAC5B,cAAc,aAAa,CAAA;AAC3B,cAAc,iBAAiB,CAAA;AAE/B,cAAc,6BAA6B,CAAA;AAE3C,YAAY,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA"}
         
     | 
    
        package/dist/index.js
    CHANGED
    
    | 
         @@ -1,2 +1,2 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            var e=require("react"),r=require("react-hook-form"),t=require("@chakra-ui/react"),n=require("@saas-ui/number-input"),a=require("@saas-ui/password-input"),l=require("@saas-ui/radio"),i=require("@saas-ui/pin-input"),o=require("@saas-ui/select"),u=require("yup"),s=require("@hookform/resolvers/yup"),c=require("@chakra-ui/system"),d=require("@chakra-ui/icons"),m=require("@saas-ui/button"),f=require("@chakra-ui/react-utils"),p=require("@saas-ui/input-right-button");function v(e){if(e&&e.__esModule)return e;var r=Object.create(null);return e&&Object.keys(e).forEach(function(t){if("default"!==t){var n=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,n.get?n:{enumerable:!0,get:function(){return e[t]}})}}),r.default=e,r}var h=/*#__PURE__*/v(e);function b(){return b=Object.assign||function(e){for(var r=1;r<arguments.length;r++){var t=arguments[r];for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])}return e},b.apply(this,arguments)}function x(e,r){if(null==e)return{};var t,n,a={},l=Object.keys(e);for(n=0;n<l.length;n++)r.indexOf(t=l[n])>=0||(a[t]=e[t]);return a}function y(e,r){(null==r||r>e.length)&&(r=e.length);for(var t=0,n=new Array(r);t<r;t++)n[t]=e[t];return n}var F=["name","label","placeholder"],E=["name","label","help","variant","hideLabel","children"],g=["name","label","help","isDisabled","isInvalid","isReadOnly","isRequired","rules","variant"],w=["name","rules"],C=["ref"],I=["name","rules"],R=["ref"],A=["label"],k=["label"],S={},O=function(e){var n=e.name,a=e.label,l=e.help,i=e.variant,o=e.hideLabel,u=e.children,s=x(e,E),c=function(e,t){return r.get(t.errors,e)}(n,r.useFormContext().formState);/*#__PURE__*/return h.createElement(t.FormControl,b({variant:i},s,{isInvalid:!!c}),a&&!o?/*#__PURE__*/h.createElement(t.FormLabel,{variant:i},a):null,/*#__PURE__*/h.createElement(t.Box,null,u,!l||null!=c&&c.message?null:/*#__PURE__*/h.createElement(t.FormHelperText,null,l),(null==c?void 0:c.message)&&/*#__PURE__*/h.createElement(t.FormErrorMessage,null,null==c?void 0:c.message)))},V=t.forwardRef(function(e,r){var t=e.type;/*#__PURE__*/return h.createElement(S[void 0===t?"text":t]||S.text,b({ref:r},e))}),L=function(e){return t.forwardRef(function(n,a){var l=n.name,i=n.rules,o=x(n,w),u=r.useFormContext();/*#__PURE__*/return h.createElement(r.Controller,{name:l,control:u.control,rules:i,render:function(r){var n=r.field,l=n.ref,i=x(n,C);/*#__PURE__*/return h.createElement(e,b({},i,o,{ref:t.useMergeRefs(a,l)}))}})})},q=function(e){return t.forwardRef(function(n,a){var l=n.name,i=n.rules,o=x(n,I),u=(0,r.useFormContext().register)(l,i),s=u.ref,c=x(u,R);/*#__PURE__*/return h.createElement(e,b({},c,o,{ref:t.useMergeRefs(a,s)}))})},j=function(e,r,n){var a=function(e,r){var n=r.displayName,a=r.hideLabel,l=r.BaseField,i=t.forwardRef(function(r,t){var n=r.name,i=r.label,o=r.help,u=r.isDisabled,s=r.isInvalid,c=r.isReadOnly,d=r.isRequired,m=r.rules,f=r.variant,p=x(r,g),v=b({required:d},m);/*#__PURE__*/return h.createElement(l,{name:n,label:i,help:o,hideLabel:a,isDisabled:u,isInvalid:s,isReadOnly:c,isRequired:d,variant:f},/*#__PURE__*/h.createElement(e,b({ref:t,name:n,label:i,rules:v},p)))});return i.displayName=n,i}(null!=n&&n.isControlled?L(r):q(r),{displayName:e.split("-").map(function(e){return e.charAt(0).toUpperCase()+e.slice(1)}).join("")+"Field",hideLabel:null==n?void 0:n.hideLabel,BaseField:(null==n?void 0:n.BaseField)||O});return S[e]=a,a},N=j("text",t.Input),P=j("number",n.NumberInput,{isControlled:!0}),B=j("password",a.PasswordInput),D=j("textarea",t.Textarea),M=j("switch",t.forwardRef(function(e,r){var n=e.label,a=x(e,A);/*#__PURE__*/return h.createElement(t.Switch,b({ref:r},a),n)}),{isControlled:!0,hideLabel:!0}),U=j("select",o.Select,{isControlled:!0}),T=j("checkbox",t.forwardRef(function(e,r){var n=e.label,a=x(e,k);/*#__PURE__*/return h.createElement(t.Checkbox,b({ref:r},a),n)}),{hideLabel:!0}),_=j("radio",l.RadioInput,{isControlled:!0}),G=j("pin",i.PinInput,{isControlled:!0}),H=j("native-select",o.NativeSelect,{isControlled:!0}),z=function(e){var r;if(null!=(r=e.spec.meta)&&r.type)return e.spec.meta.type;switch(e.type){case"array":return"array";case"object":return"object";case"number":return"number";case"date":return"date";default:return"text"}},W=function(e,r){for(var t,n=function(e,r){var t="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(t)return(t=t.call(e)).next.bind(t);if(Array.isArray(e)||(t=function(e,r){if(e){if("string"==typeof e)return y(e,r);var t=Object.prototype.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?y(e,r):void 0}}(e))){t&&(e=t);var n=0;return function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(e.tests);!(t=n()).done;){var a,l=t.value;if(null!=(a=l.OPTIONS)&&a.params[r])return l.OPTIONS.params[r]}},$=function(e){var r,t=[];for(var n in r="array"===e.type?e.innerType.fields:e.fields){var a=r[n],l={};"array"===a.type&&(l.min=W(a,"min"),l.max=W(a,"max")),t.push(b({name:n,label:a.spec.label||n,type:z(a)},l))}return t},J=["children"],K=function(e){/*#__PURE__*/return h.createElement(t.chakra.div,null,e.children)},Q=function(e){var r,n,a,l=e.children,i=x(e,J),o=b({},null!=(r=null==(n=t.useTheme().components)||null==(a=n.FormLayout)?void 0:a.defaultProps)?r:{spacing:4},i);/*#__PURE__*/return h.createElement(t.SimpleGrid,o,h.Children.map(l,function(e){return h.isValidElement(e)?/*#__PURE__*/h.createElement(K,null,e):e}))},X=function(e,r){return h.Children.map(r,function(r){return h.isValidElement(r)&&r.props.name?h.cloneElement(r,b({},r.props,{name:e+"."+r.props.name})):r})},Y=f.createContext({name:"ArrayFieldContext"}),Z=Y[0],ee=Y[1],re=f.createContext({name:"ArrayFieldRowContext"}),te=re[0],ne=re[1],ae=function(e){var t=e.name,n=e.defaultValue,a=void 0===n?{}:n,l=e.keyName,i=e.min,o=e.max,u=r.useFormContext();return b({},r.useFieldArray({control:u.control,name:t,keyName:l}),{name:t,defaultValue:a,min:i,max:o})},le=function(e){var t=e.index,n=r.useFormContext().clearErrors,a=ee(),l=a.name,i=a.remove,o=a.fields;return h.useEffect(function(){n(l)},[]),{index:t,isFirst:0===t,isLast:t===o.length-1,name:l+"."+t,remove:h.useCallback(function(){n(l),i(t)},[t])}},ie=function(){var e=ne(),r=e.isFirst,t=e.remove,n=ee(),a=n.min;return{onClick:function(){return t()},isDisabled:r&&!!(a&&n.fields.length<=a)}},oe=function(){var e=ee(),r=e.append,t=e.defaultValue,n=e.max;return{onClick:function(){return r(t,{shouldFocus:!1})},isDisabled:!!(n&&e.fields.length>=n)}},ue=["children","columns","spacing"],se=["children"],ce=["name","defaultValue","keyName","min","max","children"],de=function(e){/*#__PURE__*/return h.createElement(fe,{index:e.index},/*#__PURE__*/h.createElement(me,{columns:e.columns,spacing:e.spacing},e.children),/*#__PURE__*/h.createElement(pe,null))},me=function(e){var r=e.children,t=e.columns,n=e.spacing,a=x(e,ue),l=ne().name;/*#__PURE__*/return h.createElement(Q,b({flex:"1",columns:t,gridGap:n,mr:"2"},a),X(l,r))},fe=function(e){var r=e.children,t=le({index:e.index});/*#__PURE__*/return h.createElement(te,{value:t},/*#__PURE__*/h.createElement(c.chakra.div,{__css:{display:"flex",flexDirection:"row",alignItems:"flex-end",width:"100%",mb:4}},r))},pe=function(e){/*#__PURE__*/return h.createElement(m.IconButton,b({icon:/*#__PURE__*/h.createElement(d.MinusIcon,null),"aria-label":"Remove row"},ie(),e))},ve=function(e){/*#__PURE__*/return h.createElement(m.IconButton,b({icon:/*#__PURE__*/h.createElement(d.AddIcon,null),"aria-label":"Add row",float:"right"},oe(),e))},he=function(e){var r=e.children,t=x(e,se);/*#__PURE__*/return h.createElement(xe,t,/*#__PURE__*/h.createElement(be,null,function(e){/*#__PURE__*/return h.createElement(h.Fragment,null,e.map(function(e,t){/*#__PURE__*/return h.createElement(de,{key:e.id,index:t},r)}))}),/*#__PURE__*/h.createElement(ve,null))},be=function(e){return(0,e.children)(ee().fields)},xe=function(e){var r=e.name,t=e.defaultValue,n=e.keyName,a=e.min,l=e.max,i=e.children,o=x(e,ce),u=ae({name:r,defaultValue:t,keyName:n,min:a,max:l});/*#__PURE__*/return h.createElement(Z,{value:u},/*#__PURE__*/h.createElement(O,b({name:r},o),i))},ye=["name","label","hideLabel","children","columns","spacing"],Fe=function(e){var r=t.useStyles();/*#__PURE__*/return h.createElement(t.FormLabel,b({as:"legend",sx:r.legend},e))},Ee=function(e){var r=e.name,n=e.label,a=e.hideLabel,l=e.children,i=e.columns,o=e.spacing,u=x(e,ye);/*#__PURE__*/return h.createElement(t.FormControl,b({name:r,as:"fieldset"},u),/*#__PURE__*/h.createElement(Fe,{display:a?"none":"block"},n),/*#__PURE__*/h.createElement(Q,{columns:i,gridGap:o},X(r,l)))},ge=["name","type"],we=["schema"],Ce=["name","type","defaultValue"],Ie=function(e,r){return $(function(e,r){return u.reach(e,r)}(e,r)).map(function(e){var r=e.name,t=e.type,n=x(e,ge);/*#__PURE__*/return h.createElement(V,b({key:r,name:r,type:t},n))})},Re=function(e){var r=e.schema,t=x(e,we);/*#__PURE__*/return h.createElement(Q,t,$(r).map(function(e){var t=e.name,n=e.type,a=x(e,Ce);return"array"===n?/*#__PURE__*/h.createElement(he,b({name:t},a),Ie(r,t)):"object"===n?/*#__PURE__*/h.createElement(Ee,b({name:t},a),Ie(r,t)):/*#__PURE__*/h.createElement(V,b({key:t,name:t,type:n},a))}))},Ae=["mode","resolver","reValidateMode","shouldFocusError","shouldUnregister","shouldUseNativeValidation","criteriaMode","delayError","schema","defaultValues","onSubmit","onError","formRef","children"],ke=t.forwardRef(function(e,n){var a=e.mode,l=void 0===a?"all":a,i=e.resolver,o=e.reValidateMode,u=e.shouldFocusError,c=e.shouldUnregister,d=e.shouldUseNativeValidation,m=e.criteriaMode,f=e.delayError,p=e.schema,v=e.defaultValues,y=e.onSubmit,F=e.onError,E=e.formRef,g=e.children,w=x(e,Ae),C={mode:l,resolver:i,defaultValues:v,reValidateMode:o,shouldFocusError:u,shouldUnregister:c,shouldUseNativeValidation:d,criteriaMode:m,delayError:f};p&&(C.resolver=s.yupResolver(p));var I=r.useForm(C),R=I.handleSubmit;return h.useImperativeHandle(n,function(){return I},[n,I]),/*#__PURE__*/h.createElement(r.FormProvider,I,/*#__PURE__*/h.createElement(t.chakra.form,b({ref:E,onSubmit:R(y,F)},w),g))}),Se=["children","disableIfUntouched","disableIfInvalid"],Oe=c.forwardRef(function(e,t){var n=e.children,a=e.disableIfUntouched,l=e.disableIfInvalid,i=x(e,Se),o=r.useFormContext().formState;/*#__PURE__*/return h.createElement(m.Button,b({type:"submit",isLoading:o.isSubmitting,isPrimary:!0,ref:t,isDisabled:a&&!o.isDirty||l&&!o.isValid},i),n)});Oe.defaultProps={label:"Submit",disableIfUntouched:!1,disableIfInvalid:!1};var Ve=["schema","submitLabel"],Le=t.forwardRef(function(e,r){var t=e.schema,n=e.submitLabel,a=void 0===n?"Submit":n,l=x(e,Ve);/*#__PURE__*/return h.createElement(ke,b({},l,{schema:t,ref:r}),/*#__PURE__*/h.createElement(Q,null,/*#__PURE__*/h.createElement(Re,{schema:t}),a&&/*#__PURE__*/h.createElement(Oe,{label:a})))});exports.ArrayField=he,exports.ArrayFieldAddButton=ve,exports.ArrayFieldContainer=xe,exports.ArrayFieldProvider=Z,exports.ArrayFieldRemoveButton=pe,exports.ArrayFieldRow=de,exports.ArrayFieldRowContainer=fe,exports.ArrayFieldRowFields=me,exports.ArrayFieldRowProvider=te,exports.ArrayFieldRows=be,exports.AutoForm=Le,exports.BaseField=O,exports.CheckboxField=T,exports.DisplayField=function(e){var n=e.name,a=e.label,l=x(e,F),i=r.useFormContext().getValues;/*#__PURE__*/return h.createElement(t.FormControl,l,a?/*#__PURE__*/h.createElement(t.FormLabel,{htmlFor:n},a):null,/*#__PURE__*/h.createElement(t.Text,{fontSize:"md"},i(n)))},exports.DisplayIf=function(e){var t=e.children,n=e.condition;return(void 0===n?function(e){return!!e}:n)(r.useWatch({name:e.name,defaultValue:e.defaultValue,disabled:e.isDisabled,exact:e.isExact}),r.useFormContext())?t:null},exports.Field=V,exports.Fields=Re,exports.Form=ke,exports.FormLayout=Q,exports.FormLegend=Fe,exports.InputField=N,exports.NativeSelectField=H,exports.NumberInputField=P,exports.ObjectField=Ee,exports.PasswordInputFIeld=B,exports.PinField=G,exports.RadioField=_,exports.SelectField=U,exports.SubmitButton=Oe,exports.SwitchField=M,exports.TextareaField=D,exports.registerFieldType=j,exports.useArrayField=ae,exports.useArrayFieldAddButton=oe,exports.useArrayFieldContext=ee,exports.useArrayFieldRemoveButton=ie,exports.useArrayFieldRow=le,exports.useArrayFieldRowContext=ne,exports.withControlledInput=L,exports.withUncontrolledInput=q,Object.keys(p).forEach(function(e){"default"===e||exports.hasOwnProperty(e)||Object.defineProperty(exports,e,{enumerable:!0,get:function(){return p[e]}})});
         
     | 
| 
      
 1 
     | 
    
         
            +
            var e=require("react"),t=require("react-hook-form"),r=require("@chakra-ui/react"),n=require("@saas-ui/number-input"),a=require("@saas-ui/password-input"),l=require("@saas-ui/radio"),i=require("@saas-ui/pin-input"),o=require("@saas-ui/select"),s=require("yup"),u=require("@hookform/resolvers/yup"),c=require("@chakra-ui/system"),m=require("@chakra-ui/icons"),d=require("@saas-ui/button"),p=require("@chakra-ui/react-utils"),f=require("@chakra-ui/utils"),v=require("@saas-ui/react-utils"),h=require("@saas-ui/input-right-button");function x(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach(function(r){if("default"!==r){var n=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,n.get?n:{enumerable:!0,get:function(){return e[r]}})}}),t.default=e,t}var y=/*#__PURE__*/x(e);function b(){return b=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},b.apply(this,arguments)}function E(e,t){if(null==e)return{};var r,n,a={},l=Object.keys(e);for(n=0;n<l.length;n++)t.indexOf(r=l[n])>=0||(a[r]=e[r]);return a}function S(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}var F=["name","label","placeholder"],_=function(e){var r=e.name;return(0,t.useFormContext().getValues)(r)||null},C=["name","label","help","variant","hideLabel","children"],g=["name","label","help","isDisabled","isInvalid","isReadOnly","isRequired","rules","variant"],N=["name","rules"],k=["ref"],w=["name","rules"],I=["ref"],A=["label"],R=["label"],O={},V=function(e){var n=e.name,a=e.label,l=e.help,i=e.variant,o=e.hideLabel,s=e.children,u=E(e,C),c=function(e,r){return t.get(r.errors,e)}(n,t.useFormContext().formState);/*#__PURE__*/return y.createElement(r.FormControl,b({variant:i},u,{isInvalid:!!c}),a&&!o?/*#__PURE__*/y.createElement(r.FormLabel,{variant:i},a):null,/*#__PURE__*/y.createElement(r.Box,null,s,!l||null!=c&&c.message?null:/*#__PURE__*/y.createElement(r.FormHelperText,null,l),(null==c?void 0:c.message)&&/*#__PURE__*/y.createElement(r.FormErrorMessage,null,null==c?void 0:c.message)))},D=r.forwardRef(function(e,t){var r=e.type;/*#__PURE__*/return y.createElement(O[void 0===r?"text":r]||O.text,b({ref:t},e))}),P=function(e){return r.forwardRef(function(n,a){var l=n.name,i=n.rules,o=E(n,N),s=t.useFormContext();/*#__PURE__*/return y.createElement(t.Controller,{name:l,control:s.control,rules:i,render:function(t){var n=t.field,l=n.ref,i=E(n,k);/*#__PURE__*/return y.createElement(e,b({},i,o,{ref:r.useMergeRefs(a,l)}))}})})},L=function(e){return r.forwardRef(function(n,a){var l=n.name,i=n.rules,o=E(n,w),s=(0,t.useFormContext().register)(l,i),u=s.ref,c=E(s,I);/*#__PURE__*/return y.createElement(e,b({},c,o,{ref:r.useMergeRefs(a,u)}))})},j=function(e,t,n){var a=function(e,t){var n=t.displayName,a=t.hideLabel,l=t.BaseField,i=r.forwardRef(function(t,r){var n=t.name,i=t.label,o=t.help,s=t.isDisabled,u=t.isInvalid,c=t.isReadOnly,m=t.isRequired,d=t.rules,p=t.variant,f=E(t,g),v=b({required:m},d);/*#__PURE__*/return y.createElement(l,{name:n,label:i,help:o,hideLabel:a,isDisabled:s,isInvalid:u,isReadOnly:c,isRequired:m,variant:p},/*#__PURE__*/y.createElement(e,b({ref:r,name:n,label:i,rules:v},f)))});return i.displayName=n,i}(null!=n&&n.isControlled?P(t):L(t),{displayName:e.split("-").map(function(e){return e.charAt(0).toUpperCase()+e.slice(1)}).join("")+"Field",hideLabel:null==n?void 0:n.hideLabel,BaseField:(null==n?void 0:n.BaseField)||V});return O[e]=a,a},q=j("text",r.Input),B=j("number",n.NumberInput,{isControlled:!0}),M=j("password",a.PasswordInput),T=j("textarea",r.Textarea),U=j("switch",r.forwardRef(function(e,t){var n=e.label,a=E(e,A);/*#__PURE__*/return y.createElement(r.Switch,b({ref:t},a),n)}),{isControlled:!0,hideLabel:!0}),H=j("select",o.Select,{isControlled:!0}),G=j("checkbox",r.forwardRef(function(e,t){var n=e.label,a=E(e,R);/*#__PURE__*/return y.createElement(r.Checkbox,b({ref:t},a),n)}),{hideLabel:!0}),z=j("radio",l.RadioInput,{isControlled:!0}),W=j("pin",i.PinInput,{isControlled:!0}),$=j("native-select",o.NativeSelect,{isControlled:!0}),J=function(e){var t;if(null!=(t=e.spec.meta)&&t.type)return e.spec.meta.type;switch(e.type){case"array":return"array";case"object":return"object";case"number":return"number";case"date":return"date";default:return"text"}},K=function(e,t){for(var r,n=function(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(r)return(r=r.call(e)).next.bind(r);if(Array.isArray(e)||(r=function(e,t){if(e){if("string"==typeof e)return S(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?S(e,t):void 0}}(e))){r&&(e=r);var n=0;return function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(e.tests);!(r=n()).done;){var a,l=r.value;if(null!=(a=l.OPTIONS)&&a.params[t])return l.OPTIONS.params[t]}},Q=function(e){var t,r=[];for(var n in t="array"===e.type?e.innerType.fields:e.fields){var a=t[n],l={};"array"===a.type&&(l.min=K(a,"min"),l.max=K(a,"max")),r.push(b({name:n,label:a.spec.label||n,type:J(a)},l))}return r},X=["children"],Y=function(e){/*#__PURE__*/return y.createElement(r.chakra.div,null,e.children)},Z=function(e){var t,n,a,l=e.children,i=E(e,X),o=b({},null!=(t=null==(n=r.useTheme().components)||null==(a=n.FormLayout)?void 0:a.defaultProps)?t:{spacing:4},i);/*#__PURE__*/return y.createElement(r.SimpleGrid,o,y.Children.map(l,function(e){return y.isValidElement(e)?/*#__PURE__*/y.createElement(Y,null,e):e}))},ee=function(e,t){return y.Children.map(t,function(t){return y.isValidElement(t)&&t.props.name?y.cloneElement(t,b({},t.props,{name:e+"."+t.props.name})):t})},te=p.createContext({name:"ArrayFieldContext"}),re=te[0],ne=te[1],ae=p.createContext({name:"ArrayFieldRowContext"}),le=ae[0],ie=ae[1],oe=function(e){var r=e.name,n=e.defaultValue,a=void 0===n?{}:n,l=e.keyName,i=e.min,o=e.max,s=t.useFormContext();return b({},t.useFieldArray({control:s.control,name:r,keyName:l}),{name:r,defaultValue:a,min:i,max:o})},se=function(e){var r=e.index,n=t.useFormContext().clearErrors,a=ne(),l=a.name,i=a.remove,o=a.fields;return y.useEffect(function(){n(l)},[]),{index:r,isFirst:0===r,isLast:r===o.length-1,name:l+"."+r,remove:y.useCallback(function(){n(l),i(r)},[r])}},ue=function(){var e=ie(),t=e.isFirst,r=e.remove,n=ne(),a=n.min;return{onClick:function(){return r()},isDisabled:t&&!!(a&&n.fields.length<=a)}},ce=function(){var e=ne(),t=e.append,r=e.defaultValue,n=e.max;return{onClick:function(){return t(r,{shouldFocus:!1})},isDisabled:!!(n&&e.fields.length>=n)}},me=["children","columns","spacing"],de=["children"],pe=["name","defaultValue","keyName","min","max","children"],fe=function(e){/*#__PURE__*/return y.createElement(he,{index:e.index},/*#__PURE__*/y.createElement(ve,{columns:e.columns,spacing:e.spacing},e.children),/*#__PURE__*/y.createElement(xe,null))},ve=function(e){var t=e.children,r=e.columns,n=e.spacing,a=E(e,me),l=ie().name;/*#__PURE__*/return y.createElement(Z,b({flex:"1",columns:r,gridGap:n,mr:"2"},a),ee(l,t))},he=function(e){var t=e.children,r=se({index:e.index});/*#__PURE__*/return y.createElement(le,{value:r},/*#__PURE__*/y.createElement(c.chakra.div,{__css:{display:"flex",flexDirection:"row",alignItems:"flex-end",width:"100%",mb:4}},t))},xe=function(e){/*#__PURE__*/return y.createElement(d.IconButton,b({icon:/*#__PURE__*/y.createElement(m.MinusIcon,null),"aria-label":"Remove row"},ue(),e))},ye=function(e){/*#__PURE__*/return y.createElement(d.IconButton,b({icon:/*#__PURE__*/y.createElement(m.AddIcon,null),"aria-label":"Add row",float:"right"},ce(),e))},be=y.forwardRef(function(e,t){var r=e.children,n=E(e,de);/*#__PURE__*/return y.createElement(Se,b({ref:t},n),/*#__PURE__*/y.createElement(Ee,null,function(e){/*#__PURE__*/return y.createElement(y.Fragment,null,e.map(function(e,t){/*#__PURE__*/return y.createElement(fe,{key:e.id,index:t},r)}))}),/*#__PURE__*/y.createElement(ye,null))}),Ee=function(e){return(0,e.children)(ne().fields)},Se=y.forwardRef(function(e,t){var r=e.name,n=e.defaultValue,a=e.keyName,l=e.min,i=e.max,o=e.children,s=E(e,pe),u=oe({name:r,defaultValue:n,keyName:a,min:l,max:i});return y.useImperativeHandle(t,function(){return u},[t,u]),/*#__PURE__*/y.createElement(re,{value:u},/*#__PURE__*/y.createElement(V,b({name:r},s),o))}),Fe=["name","label","hideLabel","children","columns","spacing"],_e=function(e){var t=r.useStyles();/*#__PURE__*/return y.createElement(r.FormLabel,b({as:"legend",sx:t.legend},e))},Ce=function(e){var t=e.name,n=e.label,a=e.hideLabel,l=e.children,i=e.columns,o=e.spacing,s=E(e,Fe);/*#__PURE__*/return y.createElement(r.FormControl,b({name:t,as:"fieldset"},s),/*#__PURE__*/y.createElement(_e,{display:a?"none":"block"},n),/*#__PURE__*/y.createElement(Z,{columns:i,gridGap:o},ee(t,l)))},ge=["name","type"],Ne=["schema"],ke=["name","type","defaultValue"],we=function(e,t){return Q(function(e,t){return s.reach(e,t)}(e,t)).map(function(e){var t=e.name,r=e.type,n=E(e,ge);/*#__PURE__*/return y.createElement(D,b({key:t,name:t,type:r},n))})},Ie=function(e){var t=e.schema,r=E(e,Ne);/*#__PURE__*/return y.createElement(Z,r,Q(t).map(function(e){var r=e.name,n=e.type,a=E(e,ke);return"array"===n?/*#__PURE__*/y.createElement(be,b({name:r},a),we(t,r)):"object"===n?/*#__PURE__*/y.createElement(Ce,b({name:r},a),we(t,r)):/*#__PURE__*/y.createElement(D,b({key:r,name:r,type:n},a))}))},Ae=["mode","resolver","reValidateMode","shouldFocusError","shouldUnregister","shouldUseNativeValidation","criteriaMode","delayError","schema","defaultValues","onSubmit","onError","formRef","children"],Re=r.forwardRef(function(e,n){var a=e.mode,l=void 0===a?"all":a,i=e.resolver,o=e.reValidateMode,s=e.shouldFocusError,c=e.shouldUnregister,m=e.shouldUseNativeValidation,d=e.criteriaMode,p=e.delayError,f=e.schema,v=e.defaultValues,h=e.onSubmit,x=e.onError,S=e.formRef,F=e.children,_=E(e,Ae),C={mode:l,resolver:i,defaultValues:v,reValidateMode:o,shouldFocusError:s,shouldUnregister:c,shouldUseNativeValidation:m,criteriaMode:d,delayError:p};f&&(C.resolver=u.yupResolver(f));var g=t.useForm(C),N=g.handleSubmit;return y.useImperativeHandle(n,function(){return g},[n,g]),/*#__PURE__*/y.createElement(t.FormProvider,g,/*#__PURE__*/y.createElement(r.chakra.form,b({ref:S,onSubmit:N(h,x)},_),F))}),Oe=["children","disableIfUntouched","disableIfInvalid"],Ve=c.forwardRef(function(e,r){var n=e.children,a=e.disableIfUntouched,l=e.disableIfInvalid,i=E(e,Oe),o=t.useFormContext().formState;/*#__PURE__*/return y.createElement(d.Button,b({type:"submit",isLoading:o.isSubmitting,isPrimary:!0,ref:r,isDisabled:a&&!o.isDirty||l&&!o.isValid},i),n)});Ve.defaultProps={label:"Submit",disableIfUntouched:!1,disableIfInvalid:!1};var De=["schema","submitLabel"],Pe=r.forwardRef(function(e,t){var r=e.schema,n=e.submitLabel,a=void 0===n?"Submit":n,l=E(e,De);/*#__PURE__*/return y.createElement(Re,b({},l,{schema:r,ref:t}),/*#__PURE__*/y.createElement(Z,null,/*#__PURE__*/y.createElement(Ie,{schema:r}),a&&/*#__PURE__*/y.createElement(Ve,{label:a})))});function Le(){return Le=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},Le.apply(this,arguments)}function je(e,t){if(null==e)return{};var r,n,a={},l=Object.keys(e);for(n=0;n<l.length;n++)t.indexOf(r=l[n])>=0||(a[r]=e[r]);return a}var qe=p.createContext({name:"StepperContext",errorMessage:"useStepperContext: `context` is undefined. Seems you forgot to wrap stepper components in `<Stepper />`"}),Be=qe[0],Me=qe[1];function Te(e){var t=e.step,r=y.useState(-1),n=r[0],a=r[1],l=y.useRef([]),i=y.useState(Date.now())[1],o=y.useCallback(function(e){var t=[].concat(l.current);-1===t.indexOf(e)&&t.push(e),l.current=t,i(Date.now())},[l,i]),s=function(e){var t=l.current.indexOf(e);-1!==t&&a(t)};return y.useLayoutEffect(function(){"string"==typeof t?s(t):"number"==typeof t?a(t):-1===n&&a(0)},[t]),{stepsRef:l,activeStep:l.current[n],activeIndex:n,isFirstStep:0===n,isLastStep:n===l.current.length-1,isCompleted:n>=l.current.length,setIndex:a,setStep:s,nextStep:function(){a(n+1)},prevStep:function(){a(n-1)},registerStep:o,unregisterStep:function(e){l.current=l.current.slice(l.current.indexOf(e),1)}}}function Ue(e){var t=e.name,r=e.isActive,n=e.isCompleted,a=Me(),l=a.registerStep,i=a.unregisterStep,o=a.activeStep;return y.useEffect(function(){if(t)return l(t),function(){i(t)}},[]),{isActive:t?o===t:r,isCompleted:n}}var He=["children","orientation"],Ge=["children","orientation","stepComponent"],ze=["children","isOpen"],We=["icon","isActive","isCompleted","className"],$e=["title","icon","isActive","isCompleted"],Je=["isActive"],Ke=c.forwardRef(function(e,t){var r=c.useMultiStyleConfig("Stepper",e),n=c.omitThemingProps(e),a=n.children,l=n.orientation,i=je(n,He),o=Te(e),s=Le({display:"flex",flexDirection:"column"},r.container);return y.createElement(c.StylesProvider,{value:r},/*#__PURE__*/y.createElement(Be,{value:o},/*#__PURE__*/y.createElement(c.chakra.div,Le({ref:t,__css:s},i,{className:f.cx("saas-stepper__container",e.className)}),/*#__PURE__*/y.createElement(Qe,{orientation:l},a))))});f.__DEV__&&(Ke.displayName="Stepper");var Qe=function(e){var t,r,n=e.children,a=e.orientation,l=e.stepComponent,i=je(e,Ge),o=c.useStyles(),s=Me().activeIndex,u=Le({display:"flex",flexDirection:"row",alignItems:"center"},o.steps),m="vertical"===a,d=l||Ze,p=v.getChildrenOfType(n,d),h=p.reduce(function(e,t,r,n){return e.push(/*#__PURE__*/y.createElement(d,Le({key:r},t.props,{icon:t.props.icon||r+1,isActive:s===r,isCompleted:t.props.isCompleted||s>r}))),"vertical"===a&&e.push(/*#__PURE__*/y.createElement(Xe,{key:"content-"+r,isOpen:s===r},t.props.children)),r<n.length-1&&e.push(/*#__PURE__*/y.createElement(et,{key:"separator-"+r,isActive:r<s})),e},[]),x=v.getChildOfType(n,rt),b=s>=p.length?x:m?null:/*#__PURE__*/y.createElement(Xe,null,null==(t=p[s])||null==(r=t.props)?void 0:r.children);return y.createElement(y.Fragment,null,/*#__PURE__*/y.createElement(c.chakra.div,Le({__css:u},i,{className:f.cx("saas-stepper__steps",e.className)}),h),b)};f.__DEV__&&(Qe.displayName="StepperSteps");var Xe=function(e){var t=e.children,n=e.isOpen,a=void 0===n||n,l=je(e,ze),i=c.useStyles();return y.createElement(c.chakra.div,Le({__css:i.content},l,{className:f.cx("saas-stepper__content",e.className)}),/*#__PURE__*/y.createElement(r.Collapse,{in:a},t))};f.__DEV__&&(Xe.displayName="StepperContent");var Ye=function(e){var t,r=e.icon,n=e.isCompleted,a=e.className,l=je(e,We),i=Le({display:"flex",alignItems:"center",justifyContent:"center",borderRadius:"full",fontSize:"1em",me:2},c.useStyles().icon);return t=n?/*#__PURE__*/y.createElement(m.Icon,{as:m.CheckIcon}):r,/*#__PURE__*/y.createElement(c.chakra.div,Le({__css:i},l,{className:f.cx("saas-stepper__icon",a)}),t)};f.__DEV__&&(Ye.displayName="StepperIcon");var Ze=function(e){var t=e.title,r=e.icon,n=e.isActive,a=e.isCompleted,l=je(e,$e),i=Ue(e),o=Le({display:"flex",alignItems:"center",flexDirection:"row"},c.useStyles().step);return y.createElement(c.chakra.div,Le({__css:o,"data-active":i.isActive,"data-completed":i.isCompleted},l,{className:f.cx("saas-stepper__step",e.className)}),/*#__PURE__*/y.createElement(Ye,{icon:r,isActive:n,isCompleted:a}),t&&/*#__PURE__*/y.createElement(tt,null,t))};f.__DEV__&&(Ze.displayName="StepperStep");var et=function(e){var t=e.isActive,r=je(e,Je),n=Le({flex:1,borderTopWidth:"1px",mx:2},c.useStyles().separator);return y.createElement(c.chakra.div,Le({"data-active":t},r,{className:f.cx("saas-stepper__separator",e.className),__css:n}))};f.__DEV__&&(et.displayName="StepperSeparator");var tt=function(e){var t=c.useStyles();return y.createElement(c.chakra.p,Le({},e,{__css:t.title,className:f.cx("saas-stepper__title",e.className)}))};f.__DEV__&&(tt.displayName="StepperStepTitle");var rt=function(e){var t=c.useStyles();return y.createElement(c.chakra.div,Le({__css:t.completed},e,{className:f.cx("saas-stepper__completed",e.className)}))};f.__DEV__&&(rt.displayName="StepperCompleted");var nt=p.createContext({name:"StepFormContext",errorMessage:"useStepFormContext: `context` is undefined. Seems you forgot to wrap step form components in `<StepForm />`"}),at=nt[0],lt=nt[1];function it(e){var t=Te(e),r=t.activeStep,n=t.isLastStep,a=t.nextStep,l=y.useState({}),i=l[0],o=l[1],s=y.useCallback(function(t){try{return n?Promise.resolve(null==e.onSubmit?void 0:e.onSubmit(t).then(function(){c(b({},i[r],{isCompleted:!0}))}).then(a)):(a(),Promise.resolve())}catch(e){return Promise.reject(e)}},[r,n]),u=y.useCallback(function(e){var t=i[r];return{onSubmit:s,schema:null==t?void 0:t.schema}},[i,s,r]),c=y.useCallback(function(e){o(function(t){var r;return b({},t,((r={})[e.name]=e,r))})},[i]);return b({getFormProps:u,updateStep:c,steps:i},t)}function ot(e){var t=e.name,r=e.schema,n=Ue({name:t}),a=lt(),l=a.steps,i=a.updateStep;return y.useEffect(function(){i({name:t,schema:r})},[t,r]),b({},n,l[t]||{name:t,schema:r})}var st=["children","onSubmit"],ut=["getFormProps"],ct=["name","schema","children","className"],mt=["label","submitLabel"],dt=y.forwardRef(function(e,t){var r=e.children,n=E(e,st),a=it(e),l=a.getFormProps,i=E(a,ut),o=y.useMemo(function(){return i},[i]);/*#__PURE__*/return y.createElement(Be,{value:o},/*#__PURE__*/y.createElement(at,{value:o},/*#__PURE__*/y.createElement(Re,b({ref:t},n,l(e)),f.runIfFn(r,a))))}),pt=function(e){var t=e.name,r=e.schema,n=e.children,a=e.className,l=E(e,ct);return ot({name:t,schema:r}).isActive?/*#__PURE__*/y.createElement(c.chakra.div,b({},l,{className:f.cx("saas-form__step",a)}),n):null};f.__DEV__&&(pt.displayName="FormStep");var ft=function(e){var t=Me(),r=t.prevStep;/*#__PURE__*/return y.createElement(d.Button,b({isDisabled:t.isFirstStep||t.isCompleted,label:"Back"},e,{className:f.cx("saas-form__prev-button",e.className),onClick:f.callAllHandlers(e.onClick,r)}))};f.__DEV__&&(ft.displayName="PrevButton");var vt=function(e){var t=e.label,r=void 0===t?"Next":t,n=e.submitLabel,a=void 0===n?"Complete":n,l=E(e,mt),i=Me(),o=i.isCompleted;/*#__PURE__*/return y.createElement(Ve,b({isDisabled:o,label:i.isLastStep||o?a:r},l,{className:f.cx("saas-form__next-button",e.className)}))};f.__DEV__&&(vt.displayName="NextButton"),exports.ArrayField=be,exports.ArrayFieldAddButton=ye,exports.ArrayFieldContainer=Se,exports.ArrayFieldProvider=re,exports.ArrayFieldRemoveButton=xe,exports.ArrayFieldRow=fe,exports.ArrayFieldRowContainer=he,exports.ArrayFieldRowFields=ve,exports.ArrayFieldRowProvider=le,exports.ArrayFieldRows=Ee,exports.AutoForm=Pe,exports.BaseField=V,exports.CheckboxField=G,exports.DisplayField=function(e){var t=e.name,n=e.label,a=E(e,F);/*#__PURE__*/return y.createElement(r.FormControl,a,n?/*#__PURE__*/y.createElement(r.FormLabel,{htmlFor:t},n):null,/*#__PURE__*/y.createElement(r.Text,{fontSize:"md"},/*#__PURE__*/y.createElement(_,{name:t})))},exports.DisplayIf=function(e){var r=e.children,n=e.condition;return(void 0===n?function(e){return!!e}:n)(t.useWatch({name:e.name,defaultValue:e.defaultValue,disabled:e.isDisabled,exact:e.isExact}),t.useFormContext())?r:null},exports.Field=D,exports.Fields=Ie,exports.Form=Re,exports.FormLayout=Z,exports.FormLegend=_e,exports.FormStep=pt,exports.FormStepper=function(e){var t=c.useMultiStyleConfig("Stepper",e),r=y.Children.map(e.children,function(e){if(y.isValidElement(e)&&(null==e?void 0:e.type)===pt){var t=ot(e.props);/*#__PURE__*/return y.createElement(Ze,{name:e.props.name,title:e.props.title,isCompleted:t.isCompleted},e.props.children)}return e});/*#__PURE__*/return y.createElement(c.StylesProvider,{value:t},/*#__PURE__*/y.createElement(Qe,b({mb:"4"},e),r))},exports.FormValue=_,exports.InputField=q,exports.NativeSelectField=$,exports.NextButton=vt,exports.NumberInputField=B,exports.ObjectField=Ce,exports.PasswordInputFIeld=M,exports.PinField=W,exports.PrevButton=ft,exports.RadioField=z,exports.SelectField=H,exports.StepForm=dt,exports.StepFormProvider=at,exports.SubmitButton=Ve,exports.SwitchField=U,exports.TextareaField=T,exports.registerFieldType=j,exports.useArrayField=oe,exports.useArrayFieldAddButton=ce,exports.useArrayFieldContext=ne,exports.useArrayFieldRemoveButton=ue,exports.useArrayFieldRow=se,exports.useArrayFieldRowContext=ie,exports.useFormStep=ot,exports.useStepForm=it,exports.useStepFormContext=lt,exports.withControlledInput=P,exports.withUncontrolledInput=L,Object.keys(h).forEach(function(e){"default"===e||exports.hasOwnProperty(e)||Object.defineProperty(exports,e,{enumerable:!0,get:function(){return h[e]}})});
         
     | 
| 
       2 
2 
     | 
    
         
             
            //# sourceMappingURL=index.js.map
         
     | 
    
        package/dist/index.js.map
    CHANGED
    
    | 
         @@ -1 +1 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            {"version":3,"file":"index.js","sources":["../src/field.tsx","../src/resolvers/yup.ts","../src/layout.tsx","../src/utils.ts","../src/use-array-field.tsx","../src/array-field.tsx","../src/object-field.tsx","../src/fields.tsx","../src/form.tsx","../src/submit-button.tsx","../src/auto-form.tsx","../src/display-field.tsx","../src/display-if.tsx"],"sourcesContent":["import * as React from 'react'\nimport {\n  useFormContext,\n  FormState,\n  Controller,\n  get,\n  RegisterOptions,\n  FieldValues,\n  FieldPath,\n} from 'react-hook-form'\n\nimport {\n  forwardRef,\n  Box,\n  FormControl,\n  FormControlProps,\n  FormLabel,\n  FormHelperText,\n  FormErrorMessage,\n  Input,\n  Textarea,\n  Checkbox,\n  Switch,\n  useMergeRefs,\n} from '@chakra-ui/react'\n\nimport { NumberInput } from '@saas-ui/number-input'\nimport { PasswordInput } from '@saas-ui/password-input'\nimport { RadioInput } from '@saas-ui/radio'\nimport { PinInput } from '@saas-ui/pin-input'\nimport { Select, NativeSelect } from '@saas-ui/select'\n\nexport interface Option {\n  value: string\n  label?: string\n  [key: string]: unknown\n}\n\nexport type FieldRules = Pick<\n  RegisterOptions,\n  'required' | 'min' | 'max' | 'maxLength' | 'minLength' | 'pattern'\n>\n\nexport type FieldTypes =\n  | 'text'\n  | 'number'\n  | 'password'\n  | 'textarea'\n  | 'select'\n  | 'native-select'\n  | 'checkbox'\n  | 'radio'\n  | 'switch'\n  | 'pin'\n  | string\n\nexport interface FieldProps<\n  TFieldValues extends FieldValues = FieldValues,\n  TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>\n> extends Omit<FormControlProps, 'label' | 'type'> {\n  /**\n   * The field name\n   */\n  name: TName\n  /**\n   * The field label\n   */\n  label?: string\n  /**\n   * Hide the field label\n   */\n  hideLabel?: boolean\n  /**\n   * Field help text\n   */\n  help?: string\n  /**\n   * React hook form rules\n   */\n  rules?: Omit<\n    RegisterOptions<TFieldValues, TName>,\n    'valueAsNumber' | 'valueAsDate' | 'setValueAs' | 'disabled'\n  >\n  /**\n   * Options used for selects and radio fields\n   */\n  options?: Option[]\n  /**\n   * The field type\n   * Build-in types:\n   * - text\n   * - number\n   * - password\n   * - textarea\n   * - select\n   * - native-select\n   * - checkbox\n   * - radio\n   * - switch\n   * - pin\n   *\n   * Will default to a text field if there is no matching type.\n   * @default 'text'\n   */\n  type?: FieldTypes\n  /**\n   * The input placeholder\n   */\n  placeholder?: string\n}\n\nconst inputTypes: Record<FieldTypes, any> = {}\n\nconst defaultInputType = 'text'\n\nconst getInput = (type: string) => {\n  return inputTypes[type] || inputTypes[defaultInputType]\n}\n\nconst getError = (name: string, formState: FormState<{ [x: string]: any }>) => {\n  return get(formState.errors, name)\n}\n\nconst isTouched = (\n  name: string,\n  formState: FormState<{ [x: string]: any }>\n) => {\n  return get(formState.touchedFields, name)\n}\n\nexport const BaseField: React.FC<FieldProps> = (props) => {\n  const { name, label, help, variant, hideLabel, children, ...controlProps } =\n    props\n\n  const { formState } = useFormContext()\n\n  const error = getError(name, formState)\n\n  return (\n    <FormControl variant={variant} {...controlProps} isInvalid={!!error}>\n      {label && !hideLabel ? (\n        <FormLabel variant={variant}>{label}</FormLabel>\n      ) : null}\n      <Box>\n        {children}\n        {help && !error?.message ? (\n          <FormHelperText>{help}</FormHelperText>\n        ) : null}\n        {error?.message && (\n          <FormErrorMessage>{error?.message}</FormErrorMessage>\n        )}\n      </Box>\n    </FormControl>\n  )\n}\nexport const Field = forwardRef(\n  <TFieldValues extends FieldValues = FieldValues>(\n    props: FieldProps<TFieldValues> & {\n      [key: string]: unknown // Make sure attributes of custom components work. Need to change this to a global typedef at some point.\n    },\n    ref: React.ForwardedRef<typeof FormControl>\n  ) => {\n    const { type = defaultInputType } = props\n    const InputComponent = getInput(type)\n\n    return <InputComponent ref={ref} {...props} />\n  }\n) as <TFieldValues extends FieldValues>(\n  props: FieldProps<TFieldValues> & {\n    [key: string]: unknown\n  } & {\n    ref?: React.ForwardedRef<typeof FormControl>\n  }\n) => React.ReactElement\n\ninterface CreateFieldProps {\n  displayName: string\n  hideLabel?: boolean\n  BaseField: React.FC<any>\n}\n\nconst createField = (\n  InputComponent: React.FC<any>,\n  { displayName, hideLabel, BaseField }: CreateFieldProps\n) => {\n  const Field = forwardRef<FieldProps, typeof FormControl>((props, ref) => {\n    const {\n      name,\n      label,\n      help,\n      isDisabled,\n      isInvalid,\n      isReadOnly,\n      isRequired,\n      rules,\n      variant,\n      ...inputProps\n    } = props\n\n    const inputRules = {\n      required: isRequired,\n      ...rules,\n    }\n\n    return (\n      <BaseField\n        name={name}\n        label={label}\n        help={help}\n        hideLabel={hideLabel}\n        isDisabled={isDisabled}\n        isInvalid={isInvalid}\n        isReadOnly={isReadOnly}\n        isRequired={isRequired}\n        variant={variant}\n      >\n        <InputComponent\n          ref={ref}\n          name={name}\n          label={label}\n          rules={inputRules}\n          {...inputProps}\n        />\n      </BaseField>\n    )\n  })\n  Field.displayName = displayName\n\n  return Field\n}\n\nexport const withControlledInput = (InputComponent: any) => {\n  return forwardRef<FieldProps, typeof InputComponent>(\n    ({ name, rules, ...inputProps }, ref) => {\n      const { control } = useFormContext()\n\n      return (\n        <Controller\n          name={name}\n          control={control}\n          rules={rules}\n          render={({ field: { ref: _ref, ...field } }) => (\n            <InputComponent\n              {...field}\n              {...inputProps}\n              ref={useMergeRefs(ref, _ref)}\n            />\n          )}\n        />\n      )\n    }\n  )\n}\n\nexport const withUncontrolledInput = (InputComponent: any) => {\n  return forwardRef<FieldProps, typeof InputComponent>(\n    ({ name, rules, ...inputProps }, ref) => {\n      const { register } = useFormContext()\n\n      const { ref: _ref, ...field } = register(name, rules)\n\n      return (\n        <InputComponent\n          {...field}\n          {...inputProps}\n          ref={useMergeRefs(ref, _ref)}\n        />\n      )\n    }\n  )\n}\n\nexport interface RegisterFieldTypeOptions {\n  isControlled?: boolean\n  hideLabel?: boolean\n  BaseField?: React.FC<any>\n}\n\n/**\n * Register a new field type\n * @param type The name for this field in kebab-case, eg `email` or `array-field`\n * @param component The React component\n * @param options\n * @param options.isControlled Set this to true if this is a controlled field.\n * @param options.hideLabel Hide the field label, for example for checkbox or switch field.\n */\nexport const registerFieldType = (\n  type: string,\n  component: React.FC<any>,\n  options?: RegisterFieldTypeOptions\n) => {\n  let InputComponent\n  if (options?.isControlled) {\n    InputComponent = withControlledInput(component)\n  } else {\n    InputComponent = withUncontrolledInput(component)\n  }\n\n  const Field = createField(InputComponent, {\n    displayName: `${type\n      .split('-')\n      .map((part) => part.charAt(0).toUpperCase() + part.slice(1))\n      .join('')}Field`,\n    hideLabel: options?.hideLabel,\n    BaseField: options?.BaseField || BaseField,\n  })\n\n  inputTypes[type] = Field\n\n  return Field\n}\n\n// @todo Consider not registering all fields by default to lower the package size and computations.\n// Not all types may be required in a project.\nexport const InputField = registerFieldType('text', Input)\nexport const NumberInputField = registerFieldType('number', NumberInput, {\n  isControlled: true,\n})\nexport const PasswordInputFIeld = registerFieldType('password', PasswordInput)\nexport const TextareaField = registerFieldType('textarea', Textarea)\nexport const SwitchField = registerFieldType(\n  'switch',\n  forwardRef(({ label, ...props }: { label?: string }, ref) => {\n    return (\n      <Switch ref={ref} {...props}>\n        {label}\n      </Switch>\n    )\n  }),\n  {\n    isControlled: true,\n    hideLabel: true,\n  }\n)\nexport const SelectField = registerFieldType('select', Select, {\n  isControlled: true,\n})\nexport const CheckboxField = registerFieldType(\n  'checkbox',\n  forwardRef(({ label, ...props }: { label?: string }, ref) => {\n    return (\n      <Checkbox ref={ref} {...props}>\n        {label}\n      </Checkbox>\n    )\n  }),\n  {\n    hideLabel: true,\n  }\n)\nexport const RadioField = registerFieldType('radio', RadioInput, {\n  isControlled: true,\n})\nexport const PinField = registerFieldType('pin', PinInput, {\n  isControlled: true,\n})\nexport const NativeSelectField = registerFieldType(\n  'native-select',\n  NativeSelect,\n  { isControlled: true }\n)\n","import { SchemaOf, AnySchema, reach } from 'yup'\nexport { yupResolver } from '@hookform/resolvers/yup'\n\nimport { FieldProps } from '../field'\n\n// @TODO get proper typings for the schema fields\n\nconst getType = (field: any) => {\n  if (field.spec.meta?.type) {\n    return field.spec.meta.type\n  }\n\n  switch (field.type) {\n    case 'array':\n      return 'array'\n    case 'object':\n      return 'object'\n    case 'number':\n      return 'number'\n    case 'date':\n      return 'date'\n    case 'string':\n    default:\n      return 'text'\n  }\n}\n\ntype Options = {\n  min?: number\n  max?: number\n}\n\nconst getArrayOption = (field: any, name: string) => {\n  for (const test of field.tests) {\n    if (test.OPTIONS?.params[name]) return test.OPTIONS.params[name]\n  }\n}\n\n/**\n * A helper function to render forms automatically based on a Yup schema\n *\n * @param schema The Yup schema\n * @returns {FieldProps[]}\n */\nexport const getFieldsFromSchema = (\n  schema: SchemaOf<AnySchema>\n): FieldProps[] => {\n  const fields = []\n\n  let schemaFields: Record<string, any> = {}\n  if (schema.type === 'array') {\n    /* @ts-ignore this is actually valid */\n    schemaFields = schema.innerType.fields\n  } else {\n    schemaFields = schema.fields\n  }\n\n  for (const name in schemaFields) {\n    const field = schemaFields[name]\n\n    const options: Options = {}\n    if (field.type === 'array') {\n      options.min = getArrayOption(field, 'min')\n      options.max = getArrayOption(field, 'max')\n    }\n\n    fields.push({\n      name,\n      label: field.spec.label || name,\n      type: getType(field),\n      ...options,\n    })\n  }\n  return fields\n}\n\nexport const getNestedSchema = (schema: SchemaOf<AnySchema>, path: string) => {\n  return reach(schema, path)\n}\n","import * as React from 'react'\n\nimport { chakra, SimpleGrid, SimpleGridProps, useTheme } from '@chakra-ui/react'\n\nexport type FormLayoutProps = SimpleGridProps\n\ninterface FormLayoutItemProps {\n  children: React.ReactNode\n}\n\nconst FormLayoutItem: React.FC<FormLayoutItemProps> = ({ children }) => {\n  return <chakra.div>{children}</chakra.div>\n}\n\n/**\n * FormLayout\n *\n * Renders form items in a `SimpleGrid`\n * @see https://chakra-ui.com/docs/layout/simple-grid\n */\nexport const FormLayout = ({ children, ...props }: FormLayoutProps) => {\n  const theme = useTheme()\n\n  const defaultProps = theme.components?.FormLayout?.defaultProps ?? {\n    spacing: 4,\n  }\n\n  const gridProps = {\n    ...defaultProps,\n    ...props,\n  }\n\n  return (\n    <SimpleGrid {...gridProps}>\n      {React.Children.map(children, (child) => {\n        if (React.isValidElement(child)) {\n          return <FormLayoutItem>{child}</FormLayoutItem>\n        }\n        return child\n      })}\n    </SimpleGrid>\n  )\n}\n","import * as React from 'react'\n\nexport const mapNestedFields = (name: string, children: React.ReactNode) => {\n  return React.Children.map(children, (child) => {\n    if (React.isValidElement(child) && child.props.name) {\n      return React.cloneElement(child, {\n        ...child.props,\n        name: `${name}.${child.props.name}`,\n      })\n    }\n    return child\n  })\n}\n","import * as React from 'react'\nimport {\n  useFieldArray,\n  useFormContext,\n  UseFieldArrayReturn,\n} from 'react-hook-form'\n\nimport { createContext } from '@chakra-ui/react-utils'\n\nexport interface UseArrayFieldReturn extends UseFieldArrayReturn {\n  /**\n   * The array field name\n   */\n  name: string\n  /**\n   * The default value for new items\n   */\n  defaultValue: Record<string, any>\n  /**\n   * Min amount of items\n   */\n  min?: number\n  /**\n   * Max amount of items\n   */\n  max?: number\n}\n\nexport const [ArrayFieldProvider, useArrayFieldContext] =\n  createContext<UseArrayFieldReturn>({\n    name: 'ArrayFieldContext',\n  })\n\nexport interface UseArrayFieldRowReturn {\n  /**\n   * Name of the array field including the index, eg 'field.0'\n   */\n  name: string\n  /**\n   * The field index\n   */\n  index: number\n  /**\n   * Remove this array item\n   */\n  remove: () => void\n  /**\n   * True if this is the first item\n   */\n  isFirst: boolean\n  /**\n   * True if this is the last item\n   */\n  isLast: boolean\n}\n\nexport const [ArrayFieldRowProvider, useArrayFieldRowContext] =\n  createContext<UseArrayFieldRowReturn>({\n    name: 'ArrayFieldRowContext',\n  })\n\nexport interface ArrayFieldOptions {\n  /**\n   * The field name\n   */\n  name: string\n  /**\n   * Default value for new values in the array\n   */\n  defaultValue?: Record<string, any>\n  /**\n   * Default key name for rows, change this if your data uses 'id'\n   * @default \"id\"\n   */\n  keyName?: string\n  min?: number\n  max?: number\n}\n\nexport const useArrayField = ({\n  name,\n  defaultValue = {},\n  keyName,\n  min,\n  max,\n}: ArrayFieldOptions) => {\n  const { control } = useFormContext()\n  const context = useFieldArray({\n    control,\n    name,\n    keyName,\n  })\n\n  return {\n    ...context,\n    name,\n    defaultValue,\n    min,\n    max,\n  }\n}\n\nexport interface UseArrayFieldRowProps {\n  index: number\n}\n\nexport const useArrayFieldRow = ({ index }: UseArrayFieldRowProps) => {\n  const { clearErrors } = useFormContext()\n  const { name, remove, fields } = useArrayFieldContext()\n\n  React.useEffect(() => {\n    // reset errors, to make sure min/max errors reset correctly\n    clearErrors(name)\n  }, [])\n\n  return {\n    index,\n    isFirst: index === 0,\n    isLast: index === fields.length - 1,\n    name: `${name}.${index}`,\n    remove: React.useCallback(() => {\n      clearErrors(name)\n      remove(index)\n    }, [index]),\n  }\n}\n\nexport const useArrayFieldRemoveButton = () => {\n  const { isFirst, remove } = useArrayFieldRowContext()\n  const { min, fields } = useArrayFieldContext()\n\n  const isDisabled = isFirst && !!(min && fields.length <= min)\n\n  return {\n    onClick: () => remove(),\n    isDisabled,\n  }\n}\n\nexport const useArrayFieldAddButton = () => {\n  const { append, defaultValue, max, fields } = useArrayFieldContext()\n\n  const isDisabled = !!(max && fields.length >= max)\n\n  return {\n    onClick: () =>\n      append(defaultValue, {\n        shouldFocus: false,\n      }),\n    isDisabled,\n  }\n}\n","import * as React from 'react'\n\nimport { chakra, ResponsiveValue } from '@chakra-ui/system'\n\nimport { AddIcon, MinusIcon } from '@chakra-ui/icons'\nimport { IconButton, ButtonProps } from '@saas-ui/button'\n\nimport { FormLayout } from './layout'\nimport { BaseField, FieldProps } from './field'\n\nimport { mapNestedFields } from './utils'\n\nimport {\n  useArrayField,\n  useArrayFieldRow,\n  useArrayFieldContext,\n  ArrayFieldProvider,\n  ArrayFieldOptions,\n  ArrayFieldRowProvider,\n  useArrayFieldRowContext,\n  useArrayFieldRemoveButton,\n  useArrayFieldAddButton,\n} from './use-array-field'\n\ninterface ArrayField {\n  id: string\n  [key: string]: unknown\n}\n\ninterface ArrayFieldRowProps {\n  /**\n   * Amount of field columns\n   */\n  columns?: ResponsiveValue<number>\n  /**\n   * Spacing between fields\n   */\n  spacing?: ResponsiveValue<string | number>\n  /**\n   * The array index\n   */\n  index: number\n}\n\nexport const ArrayFieldRow: React.FC<ArrayFieldRowProps> = ({\n  children,\n  columns,\n  spacing,\n  index,\n}) => {\n  return (\n    <ArrayFieldRowContainer index={index}>\n      <ArrayFieldRowFields columns={columns} spacing={spacing}>\n        {children}\n      </ArrayFieldRowFields>\n      <ArrayFieldRemoveButton />\n    </ArrayFieldRowContainer>\n  )\n}\n\nexport interface ArrayFieldRowFieldsProps {\n  /**\n   * Amount of field columns\n   */\n  columns?: ResponsiveValue<number>\n  /**\n   * Spacing between fields\n   */\n  spacing?: ResponsiveValue<string | number>\n}\n\nexport const ArrayFieldRowFields: React.FC<ArrayFieldRowFieldsProps> = ({\n  children,\n  columns,\n  spacing,\n  ...layoutProps\n}) => {\n  const { name } = useArrayFieldRowContext()\n  return (\n    <FormLayout\n      flex=\"1\"\n      columns={columns}\n      gridGap={spacing}\n      mr=\"2\"\n      {...layoutProps}\n    >\n      {mapNestedFields(name, children)}\n    </FormLayout>\n  )\n}\n\nexport const ArrayFieldRowContainer: React.FC<ArrayFieldRowProps> = ({\n  children,\n  index,\n}) => {\n  const context = useArrayFieldRow({ index })\n\n  const styles = {\n    display: 'flex',\n    flexDirection: 'row',\n    alignItems: 'flex-end',\n    width: '100%',\n    mb: 4,\n  }\n\n  return (\n    <ArrayFieldRowProvider value={context}>\n      <chakra.div __css={styles}>{children}</chakra.div>\n    </ArrayFieldRowProvider>\n  )\n}\n\nexport const ArrayFieldRemoveButton: React.FC<ButtonProps> = (props) => {\n  return (\n    <IconButton\n      icon={<MinusIcon />}\n      aria-label=\"Remove row\"\n      {...useArrayFieldRemoveButton()}\n      {...props}\n    />\n  )\n}\n\nexport const ArrayFieldAddButton: React.FC<ButtonProps> = (props) => {\n  return (\n    <IconButton\n      icon={<AddIcon />}\n      aria-label=\"Add row\"\n      float=\"right\"\n      {...useArrayFieldAddButton()}\n      {...props}\n    />\n  )\n}\n\nexport interface ArrayFieldProps\n  extends ArrayFieldOptions,\n    Omit<FieldProps, 'defaultValue'> {}\n\nexport const ArrayField: React.FC<ArrayFieldProps> = (props) => {\n  const { children, ...containerProps } = props\n\n  return (\n    <ArrayFieldContainer {...containerProps}>\n      <ArrayFieldRows>\n        {(fields: ArrayField[]) => (\n          <>\n            {fields.map(({ id }, index: number) => (\n              <ArrayFieldRow key={id} index={index}>\n                {children}\n              </ArrayFieldRow>\n            ))}\n          </>\n        )}\n      </ArrayFieldRows>\n      <ArrayFieldAddButton />\n    </ArrayFieldContainer>\n  )\n}\n\nexport interface ArrayFieldRowsProps {\n  children: (fields: ArrayField[]) => React.ReactElement | null\n}\n\nexport const ArrayFieldRows = ({\n  children,\n}: ArrayFieldRowsProps): React.ReactElement | null => {\n  const { fields } = useArrayFieldContext()\n  return children(fields)\n}\n\nexport const ArrayFieldContainer: React.FC<ArrayFieldProps> = ({\n  name,\n  defaultValue,\n  keyName,\n  min,\n  max,\n  children,\n  ...fieldProps\n}) => {\n  const context = useArrayField({\n    name,\n    defaultValue,\n    keyName,\n    min,\n    max,\n  })\n\n  return (\n    <ArrayFieldProvider value={context}>\n      <BaseField name={name} {...fieldProps}>\n        {children}\n      </BaseField>\n    </ArrayFieldProvider>\n  )\n}\n","import * as React from 'react'\nimport {\n  FormControl,\n  FormLabel,\n  FormLabelProps,\n  ResponsiveValue,\n  useStyles,\n} from '@chakra-ui/react'\n\nimport { FormLayout } from './layout'\nimport { FieldProps } from './field'\n\nimport { mapNestedFields } from './utils'\n\nexport interface ObjectFieldProps extends FieldProps {\n  name: string\n  children: React.ReactNode\n  columns?: ResponsiveValue<number>\n  spacing?: ResponsiveValue<string | number>\n}\n\nexport const FormLegend = (props: FormLabelProps) => {\n  const styles = useStyles()\n  return <FormLabel as=\"legend\" sx={styles.legend} {...props} />\n}\n\nexport const ObjectField: React.FC<ObjectFieldProps> = (props) => {\n  const { name, label, hideLabel, children, columns, spacing, ...fieldProps } =\n    props\n\n  return (\n    <FormControl name={name} as=\"fieldset\" {...fieldProps}>\n      <FormLegend display={hideLabel ? 'none' : 'block'}>{label}</FormLegend>\n      <FormLayout columns={columns} gridGap={spacing}>\n        {mapNestedFields(name, children)}\n      </FormLayout>\n    </FormControl>\n  )\n}\n","import * as React from 'react'\nimport { getFieldsFromSchema, getNestedSchema } from './resolvers/yup'\n\nimport { FormLayout } from './layout'\nimport { Field, FieldProps } from './field'\n\nimport { ArrayField } from './array-field'\nimport { ObjectField } from './object-field'\n\nexport interface FieldsProps {\n  schema: any\n}\n\nconst getNestedFields = (schema: any, name: string) => {\n  return getFieldsFromSchema(getNestedSchema(schema, name)).map(\n    ({ name, type, ...nestedFieldProps }: FieldProps): React.ReactNode => (\n      <Field key={name} name={name} type={type} {...nestedFieldProps} />\n    )\n  )\n}\n\nexport const Fields: React.FC<FieldsProps> = ({ schema, ...props }) => {\n  return (\n    <FormLayout {...props}>\n      {getFieldsFromSchema(schema).map(\n        ({\n          name,\n          type,\n          defaultValue,\n          ...fieldProps\n        }: FieldProps): React.ReactNode => {\n          if (type === 'array') {\n            return (\n              <ArrayField name={name} {...fieldProps}>\n                {getNestedFields(schema, name)}\n              </ArrayField>\n            )\n          } else if (type === 'object') {\n            return (\n              <ObjectField name={name} {...fieldProps}>\n                {getNestedFields(schema, name)}\n              </ObjectField>\n            )\n          }\n\n          return <Field key={name} name={name} type={type} {...fieldProps} />\n        }\n      )}\n    </FormLayout>\n  )\n}\n","import * as React from 'react'\n\nimport { chakra, HTMLChakraProps, forwardRef } from '@chakra-ui/react'\n\nimport {\n  useForm,\n  FormProvider,\n  UseFormProps,\n  UseFormReturn,\n  FieldValues,\n  SubmitHandler,\n  SubmitErrorHandler,\n} from 'react-hook-form'\n\nimport { yupResolver } from './resolvers/yup'\n\nexport type { UseFormReturn }\n\ninterface FormOptions<TFieldValues extends FieldValues = FieldValues> {\n  /**\n   * The form schema, currently supports Yup schema only.\n   */\n  schema?: any\n  /**\n   * The submit handler.\n   */\n  onSubmit: SubmitHandler<TFieldValues>\n  /**\n   * Triggers when there are validation errors.\n   */\n  onError?: SubmitErrorHandler<TFieldValues>\n  /**\n   * Ref on the HTMLFormElement.\n   */\n  formRef?: React.MutableRefObject<HTMLFormElement>\n}\n\nexport interface FormProps<TFieldValues extends FieldValues = FieldValues>\n  extends UseFormProps<TFieldValues>,\n    Omit<HTMLChakraProps<'form'>, 'onSubmit' | 'onError'>,\n    FormOptions<TFieldValues> {}\n\n/**\n * @todo Figure out how to pass down FieldValues to all Field components,\n * if at all possible.\n */\nexport const Form = forwardRef(\n  <TFieldValues extends FieldValues = FieldValues>(\n    props: FormProps<TFieldValues>,\n    ref: React.ForwardedRef<UseFormReturn<TFieldValues>>\n  ) => {\n    const {\n      mode = 'all',\n      resolver,\n      reValidateMode,\n      shouldFocusError,\n      shouldUnregister,\n      shouldUseNativeValidation,\n      criteriaMode,\n      delayError,\n      schema,\n      defaultValues,\n      onSubmit,\n      onError,\n      formRef,\n      children,\n      ...rest\n    } = props\n\n    const form = {\n      mode,\n      resolver,\n      defaultValues,\n      reValidateMode,\n      shouldFocusError,\n      shouldUnregister,\n      shouldUseNativeValidation,\n      criteriaMode,\n      delayError,\n    }\n\n    // @todo remove yup dependency and just use resolver prop?\n    if (schema) {\n      form.resolver = yupResolver(schema)\n    }\n\n    const methods = useForm<TFieldValues>(form)\n    const { handleSubmit } = methods\n\n    // This exposes the useForm api through the forwareded ref\n    React.useImperativeHandle(ref, () => methods, [ref, methods])\n\n    return (\n      <FormProvider {...methods}>\n        <chakra.form\n          ref={formRef}\n          onSubmit={handleSubmit(onSubmit, onError)}\n          {...rest}\n        >\n          {children}\n        </chakra.form>\n      </FormProvider>\n    )\n  }\n) as <TFieldValues extends FieldValues>(\n  props: FormProps<TFieldValues> & {\n    ref?: React.ForwardedRef<UseFormReturn<TFieldValues>>\n  }\n) => React.ReactElement\n","import * as React from 'react'\n\nimport { useFormContext } from 'react-hook-form'\n\nimport { Button, ButtonProps } from '@saas-ui/button'\n\nimport { forwardRef } from '@chakra-ui/system'\n\nexport interface SubmitButtonProps extends ButtonProps {\n  /**\n   * Disable the submit button if the form is untouched.\n   *\n   * Change the default behavior by updating\n   * `SubmitButton.defaultProps.disableIfUntouched`\n   */\n  disableIfUntouched?: boolean\n  /**\n   * Disable the submit button if the form is invalid.\n   *\n   * Change the default behavior by updating\n   * `SubmitButton.defaultProps.disableIfInvalid`\n   */\n  disableIfInvalid?: boolean\n}\n\nexport const SubmitButton = forwardRef<SubmitButtonProps, 'button'>(\n  (props, ref) => {\n    const { children, disableIfUntouched, disableIfInvalid, ...rest } = props\n    const { formState } = useFormContext()\n\n    const isDisabled =\n      (disableIfUntouched && !formState.isDirty) ||\n      (disableIfInvalid && !formState.isValid)\n\n    return (\n      <Button\n        type=\"submit\"\n        isLoading={formState.isSubmitting}\n        isPrimary\n        ref={ref}\n        isDisabled={isDisabled}\n        {...rest}\n      >\n        {children}\n      </Button>\n    )\n  }\n)\n\nSubmitButton.defaultProps = {\n  label: 'Submit',\n  disableIfUntouched: false,\n  disableIfInvalid: false,\n}\n","import * as React from 'react'\nimport { FieldValues, UseFormReturn } from 'react-hook-form'\nimport { forwardRef } from '@chakra-ui/react'\n\nimport { Form, FormProps } from './form'\n\nimport { FormLayout } from './layout'\nimport { Fields } from './fields'\nimport { SubmitButton } from './submit-button'\n\ninterface AutoFormOptions {\n  schema: any\n  submitLabel?: false | string\n}\n\nexport interface AutoFormProps<TFieldValues extends FieldValues>\n  extends Omit<FormProps<TFieldValues>, 'schema'>,\n    AutoFormOptions {}\n\nexport const AutoForm = forwardRef(\n  <TFieldValues extends FieldValues = FieldValues>(\n    props: AutoFormProps<TFieldValues>,\n    ref: React.ForwardedRef<UseFormReturn<TFieldValues>>\n  ) => {\n    const { schema, submitLabel = 'Submit', ...rest } = props\n    return (\n      <Form {...rest} schema={schema} ref={ref}>\n        <FormLayout>\n          {<Fields schema={schema} />}\n          {submitLabel && <SubmitButton label={submitLabel} />}\n        </FormLayout>\n      </Form>\n    )\n  }\n) as <TFieldValues extends FieldValues>(\n  props: AutoFormProps<TFieldValues> & {\n    ref?: React.ForwardedRef<UseFormReturn<TFieldValues>>\n  }\n) => React.ReactElement\n","import * as React from 'react'\nimport { useFormContext } from 'react-hook-form'\n\nimport {\n  Text,\n  FormControl,\n  FormControlProps,\n  FormLabel,\n} from '@chakra-ui/react'\n\nimport { FieldProps } from './field'\n\nexport interface DisplayFieldProps\n  extends FormControlProps,\n    Omit<FieldProps, 'type' | 'label'> {}\n\nexport const DisplayField: React.FC<DisplayFieldProps> = ({\n  name,\n  label,\n  placeholder,\n  ...props\n}) => {\n  const { getValues } = useFormContext()\n\n  return (\n    <FormControl {...props}>\n      {label ? <FormLabel htmlFor={name}>{label}</FormLabel> : null}\n      <Text fontSize=\"md\">{getValues(name)}</Text>\n    </FormControl>\n  )\n}\n","import * as React from 'react'\nimport {\n  useFormContext,\n  useWatch,\n  FieldValues,\n  UseFormReturn,\n} from 'react-hook-form'\n\nexport interface DisplayIfProps<TFieldValues> {\n  children: React.ReactElement\n  name: string\n  defaultValue?: unknown\n  isDisabled?: boolean\n  isExact?: boolean\n  condition?: (value: unknown, context: UseFormReturn<TFieldValues>) => boolean\n}\n\nexport const DisplayIf = <TFieldValues extends FieldValues = FieldValues>({\n  children,\n  name,\n  defaultValue,\n  isDisabled,\n  isExact,\n  condition = (value) => !!value,\n}: DisplayIfProps<TFieldValues>) => {\n  const value = useWatch({\n    name,\n    defaultValue,\n    disabled: isDisabled,\n    exact: isExact,\n  })\n  const context = useFormContext<TFieldValues>()\n  return condition(value, context) ? children : null\n}\n"],"names":["inputTypes","BaseField","props","name","label","help","variant","hideLabel","children","controlProps","error","formState","get","errors","getError","useFormContext","React","FormControl","isInvalid","FormLabel","Box","message","FormHelperText","FormErrorMessage","Field","forwardRef","ref","type","withControlledInput","InputComponent","rules","inputProps","Controller","control","render","field","_ref","useMergeRefs","withUncontrolledInput","register","registerFieldType","component","options","displayName","isDisabled","isReadOnly","isRequired","inputRules","required","createField","isControlled","split","map","part","charAt","toUpperCase","slice","join","InputField","Input","NumberInputField","NumberInput","PasswordInputFIeld","PasswordInput","TextareaField","Textarea","SwitchField","Switch","SelectField","Select","CheckboxField","Checkbox","RadioField","RadioInput","PinField","PinInput","NativeSelectField","NativeSelect","getType","spec","meta","_field$spec$meta","getArrayOption","tests","test","OPTIONS","_test$OPTIONS","params","getFieldsFromSchema","schema","schemaFields","fields","innerType","min","max","push","FormLayoutItem","chakra","div","FormLayout","gridProps","useTheme","components","_theme$components","_theme$components$For2","defaultProps","spacing","SimpleGrid","Children","child","isValidElement","mapNestedFields","cloneElement","createContext","ArrayFieldProvider","useArrayFieldContext","ArrayFieldRowProvider","useArrayFieldRowContext","useArrayField","defaultValue","keyName","useFieldArray","useArrayFieldRow","index","clearErrors","remove","useEffect","isFirst","isLast","length","useCallback","useArrayFieldRemoveButton","onClick","useArrayFieldAddButton","append","shouldFocus","ArrayFieldRow","ArrayFieldRowContainer","ArrayFieldRowFields","columns","ArrayFieldRemoveButton","layoutProps","flex","gridGap","mr","context","value","__css","display","flexDirection","alignItems","width","mb","IconButton","icon","MinusIcon","ArrayFieldAddButton","AddIcon","float","ArrayField","containerProps","ArrayFieldContainer","ArrayFieldRows","key","id","fieldProps","FormLegend","styles","useStyles","as","sx","legend","ObjectField","getNestedFields","path","reach","getNestedSchema","nestedFieldProps","Fields","Form","mode","resolver","reValidateMode","shouldFocusError","shouldUnregister","shouldUseNativeValidation","criteriaMode","delayError","defaultValues","onSubmit","onError","formRef","rest","form","yupResolver","methods","useForm","handleSubmit","useImperativeHandle","FormProvider","SubmitButton","disableIfUntouched","disableIfInvalid","Button","isLoading","isSubmitting","isPrimary","isDirty","isValid","AutoForm","submitLabel","getValues","htmlFor","Text","fontSize","condition","useWatch","disabled","exact","isExact"],"mappings":"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"}
         
     | 
| 
      
 1 
     | 
    
         
            +
            {"version":3,"file":"index.js","sources":["../src/display-field.tsx","../src/field.tsx","../src/resolvers/yup.ts","../src/layout.tsx","../src/utils.ts","../src/use-array-field.tsx","../src/array-field.tsx","../src/object-field.tsx","../src/fields.tsx","../src/form.tsx","../src/submit-button.tsx","../src/auto-form.tsx","../../saas-ui-stepper/dist/index.modern.js","../src/use-step-form.tsx","../src/step-form.tsx","../src/display-if.tsx"],"sourcesContent":["import * as React from 'react'\nimport { useFormContext } from 'react-hook-form'\n\nimport {\n  Text,\n  FormControl,\n  FormControlProps,\n  FormLabel,\n} from '@chakra-ui/react'\n\nimport { FieldProps } from './field'\n\nexport interface DisplayFieldProps\n  extends FormControlProps,\n    Omit<FieldProps, 'type' | 'label'> {}\n\nexport const DisplayField: React.FC<DisplayFieldProps> = ({\n  name,\n  label,\n  placeholder,\n  ...props\n}) => {\n  return (\n    <FormControl {...props}>\n      {label ? <FormLabel htmlFor={name}>{label}</FormLabel> : null}\n      <Text fontSize=\"md\">\n        <FormValue name={name} />\n      </Text>\n    </FormControl>\n  )\n}\n\nexport const FormValue: React.FC<{ name: string }> = ({ name }) => {\n  const { getValues } = useFormContext()\n  return getValues(name) || null\n}\n","import * as React from 'react'\nimport {\n  useFormContext,\n  FormState,\n  Controller,\n  get,\n  RegisterOptions,\n  FieldValues,\n  FieldPath,\n} from 'react-hook-form'\n\nimport {\n  forwardRef,\n  Box,\n  FormControl,\n  FormControlProps,\n  FormLabel,\n  FormHelperText,\n  FormErrorMessage,\n  Input,\n  Textarea,\n  Checkbox,\n  Switch,\n  useMergeRefs,\n} from '@chakra-ui/react'\n\nimport { NumberInput } from '@saas-ui/number-input'\nimport { PasswordInput } from '@saas-ui/password-input'\nimport { RadioInput } from '@saas-ui/radio'\nimport { PinInput } from '@saas-ui/pin-input'\nimport { Select, NativeSelect } from '@saas-ui/select'\nimport { FocusableElement } from '@chakra-ui/utils'\n\nexport interface Option {\n  value: string\n  label?: string\n  [key: string]: unknown\n}\n\nexport type FieldRules = Pick<\n  RegisterOptions,\n  'required' | 'min' | 'max' | 'maxLength' | 'minLength' | 'pattern'\n>\n\nexport type FieldTypes =\n  | 'text'\n  | 'number'\n  | 'password'\n  | 'textarea'\n  | 'select'\n  | 'native-select'\n  | 'checkbox'\n  | 'radio'\n  | 'switch'\n  | 'pin'\n  | string\n\nexport interface FieldProps<\n  TFieldValues extends FieldValues = FieldValues,\n  TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>\n> extends Omit<FormControlProps, 'label' | 'type'> {\n  /**\n   * The field name\n   */\n  name: TName\n  /**\n   * The field label\n   */\n  label?: string\n  /**\n   * Hide the field label\n   */\n  hideLabel?: boolean\n  /**\n   * Field help text\n   */\n  help?: string\n  /**\n   * React hook form rules\n   */\n  rules?: Omit<\n    RegisterOptions<TFieldValues, TName>,\n    'valueAsNumber' | 'valueAsDate' | 'setValueAs' | 'disabled'\n  >\n  /**\n   * Options used for selects and radio fields\n   */\n  options?: Option[]\n  /**\n   * The field type\n   * Build-in types:\n   * - text\n   * - number\n   * - password\n   * - textarea\n   * - select\n   * - native-select\n   * - checkbox\n   * - radio\n   * - switch\n   * - pin\n   *\n   * Will default to a text field if there is no matching type.\n   * @default 'text'\n   */\n  type?: FieldTypes\n  /**\n   * The input placeholder\n   */\n  placeholder?: string\n}\n\nconst inputTypes: Record<FieldTypes, any> = {}\n\nconst defaultInputType = 'text'\n\nconst getInput = (type: string) => {\n  return inputTypes[type] || inputTypes[defaultInputType]\n}\n\nconst getError = (name: string, formState: FormState<{ [x: string]: any }>) => {\n  return get(formState.errors, name)\n}\n\nconst isTouched = (\n  name: string,\n  formState: FormState<{ [x: string]: any }>\n) => {\n  return get(formState.touchedFields, name)\n}\n\nexport const BaseField: React.FC<FieldProps> = (props) => {\n  const { name, label, help, variant, hideLabel, children, ...controlProps } =\n    props\n\n  const { formState } = useFormContext()\n\n  const error = getError(name, formState)\n\n  return (\n    <FormControl variant={variant} {...controlProps} isInvalid={!!error}>\n      {label && !hideLabel ? (\n        <FormLabel variant={variant}>{label}</FormLabel>\n      ) : null}\n      <Box>\n        {children}\n        {help && !error?.message ? (\n          <FormHelperText>{help}</FormHelperText>\n        ) : null}\n        {error?.message && (\n          <FormErrorMessage>{error?.message}</FormErrorMessage>\n        )}\n      </Box>\n    </FormControl>\n  )\n}\nexport const Field = forwardRef(\n  <TFieldValues extends FieldValues = FieldValues>(\n    props: FieldProps<TFieldValues> & {\n      [key: string]: unknown // Make sure attributes of custom components work. Need to change this to a global typedef at some point.\n    },\n    ref: React.ForwardedRef<FocusableElement>\n  ) => {\n    const { type = defaultInputType } = props\n    const InputComponent = getInput(type)\n\n    return <InputComponent ref={ref} {...props} />\n  }\n) as <TFieldValues extends FieldValues>(\n  props: FieldProps<TFieldValues> & {\n    [key: string]: unknown\n  } & {\n    ref?: React.ForwardedRef<FocusableElement>\n  }\n) => React.ReactElement\n\ninterface CreateFieldProps {\n  displayName: string\n  hideLabel?: boolean\n  BaseField: React.FC<any>\n}\n\nconst createField = (\n  InputComponent: React.FC<any>,\n  { displayName, hideLabel, BaseField }: CreateFieldProps\n) => {\n  const Field = forwardRef<FieldProps, typeof FormControl>((props, ref) => {\n    const {\n      name,\n      label,\n      help,\n      isDisabled,\n      isInvalid,\n      isReadOnly,\n      isRequired,\n      rules,\n      variant,\n      ...inputProps\n    } = props\n\n    const inputRules = {\n      required: isRequired,\n      ...rules,\n    }\n\n    return (\n      <BaseField\n        name={name}\n        label={label}\n        help={help}\n        hideLabel={hideLabel}\n        isDisabled={isDisabled}\n        isInvalid={isInvalid}\n        isReadOnly={isReadOnly}\n        isRequired={isRequired}\n        variant={variant}\n      >\n        <InputComponent\n          ref={ref}\n          name={name}\n          label={label}\n          rules={inputRules}\n          {...inputProps}\n        />\n      </BaseField>\n    )\n  })\n  Field.displayName = displayName\n\n  return Field\n}\n\nexport const withControlledInput = (InputComponent: any) => {\n  return forwardRef<FieldProps, typeof InputComponent>(\n    ({ name, rules, ...inputProps }, ref) => {\n      const { control } = useFormContext()\n\n      return (\n        <Controller\n          name={name}\n          control={control}\n          rules={rules}\n          render={({ field: { ref: _ref, ...field } }) => (\n            <InputComponent\n              {...field}\n              {...inputProps}\n              ref={useMergeRefs(ref, _ref)}\n            />\n          )}\n        />\n      )\n    }\n  )\n}\n\nexport const withUncontrolledInput = (InputComponent: any) => {\n  return forwardRef<FieldProps, typeof InputComponent>(\n    ({ name, rules, ...inputProps }, ref) => {\n      const { register } = useFormContext()\n\n      const { ref: _ref, ...field } = register(name, rules)\n\n      return (\n        <InputComponent\n          {...field}\n          {...inputProps}\n          ref={useMergeRefs(ref, _ref)}\n        />\n      )\n    }\n  )\n}\n\nexport interface RegisterFieldTypeOptions {\n  isControlled?: boolean\n  hideLabel?: boolean\n  BaseField?: React.FC<any>\n}\n\n/**\n * Register a new field type\n * @param type The name for this field in kebab-case, eg `email` or `array-field`\n * @param component The React component\n * @param options\n * @param options.isControlled Set this to true if this is a controlled field.\n * @param options.hideLabel Hide the field label, for example for checkbox or switch field.\n */\nexport const registerFieldType = (\n  type: string,\n  component: React.FC<any>,\n  options?: RegisterFieldTypeOptions\n) => {\n  let InputComponent\n  if (options?.isControlled) {\n    InputComponent = withControlledInput(component)\n  } else {\n    InputComponent = withUncontrolledInput(component)\n  }\n\n  const Field = createField(InputComponent, {\n    displayName: `${type\n      .split('-')\n      .map((part) => part.charAt(0).toUpperCase() + part.slice(1))\n      .join('')}Field`,\n    hideLabel: options?.hideLabel,\n    BaseField: options?.BaseField || BaseField,\n  })\n\n  inputTypes[type] = Field\n\n  return Field\n}\n\n// @todo Consider not registering all fields by default to lower the package size and computations.\n// Not all types may be required in a project.\nexport const InputField = registerFieldType('text', Input)\nexport const NumberInputField = registerFieldType('number', NumberInput, {\n  isControlled: true,\n})\nexport const PasswordInputFIeld = registerFieldType('password', PasswordInput)\nexport const TextareaField = registerFieldType('textarea', Textarea)\nexport const SwitchField = registerFieldType(\n  'switch',\n  forwardRef(({ label, ...props }: { label?: string }, ref) => {\n    return (\n      <Switch ref={ref} {...props}>\n        {label}\n      </Switch>\n    )\n  }),\n  {\n    isControlled: true,\n    hideLabel: true,\n  }\n)\nexport const SelectField = registerFieldType('select', Select, {\n  isControlled: true,\n})\nexport const CheckboxField = registerFieldType(\n  'checkbox',\n  forwardRef(({ label, ...props }: { label?: string }, ref) => {\n    return (\n      <Checkbox ref={ref} {...props}>\n        {label}\n      </Checkbox>\n    )\n  }),\n  {\n    hideLabel: true,\n  }\n)\nexport const RadioField = registerFieldType('radio', RadioInput, {\n  isControlled: true,\n})\nexport const PinField = registerFieldType('pin', PinInput, {\n  isControlled: true,\n})\nexport const NativeSelectField = registerFieldType(\n  'native-select',\n  NativeSelect,\n  { isControlled: true }\n)\n","import { SchemaOf, AnySchema, reach } from 'yup'\nexport { yupResolver } from '@hookform/resolvers/yup'\n\nimport { FieldProps } from '../field'\n\n// @TODO get proper typings for the schema fields\n\nconst getType = (field: any) => {\n  if (field.spec.meta?.type) {\n    return field.spec.meta.type\n  }\n\n  switch (field.type) {\n    case 'array':\n      return 'array'\n    case 'object':\n      return 'object'\n    case 'number':\n      return 'number'\n    case 'date':\n      return 'date'\n    case 'string':\n    default:\n      return 'text'\n  }\n}\n\ntype Options = {\n  min?: number\n  max?: number\n}\n\nconst getArrayOption = (field: any, name: string) => {\n  for (const test of field.tests) {\n    if (test.OPTIONS?.params[name]) return test.OPTIONS.params[name]\n  }\n}\n\n/**\n * A helper function to render forms automatically based on a Yup schema\n *\n * @param schema The Yup schema\n * @returns {FieldProps[]}\n */\nexport const getFieldsFromSchema = (\n  schema: SchemaOf<AnySchema>\n): FieldProps[] => {\n  const fields = []\n\n  let schemaFields: Record<string, any> = {}\n  if (schema.type === 'array') {\n    /* @ts-ignore this is actually valid */\n    schemaFields = schema.innerType.fields\n  } else {\n    schemaFields = schema.fields\n  }\n\n  for (const name in schemaFields) {\n    const field = schemaFields[name]\n\n    const options: Options = {}\n    if (field.type === 'array') {\n      options.min = getArrayOption(field, 'min')\n      options.max = getArrayOption(field, 'max')\n    }\n\n    fields.push({\n      name,\n      label: field.spec.label || name,\n      type: getType(field),\n      ...options,\n    })\n  }\n  return fields\n}\n\nexport const getNestedSchema = (schema: SchemaOf<AnySchema>, path: string) => {\n  return reach(schema, path)\n}\n","import * as React from 'react'\n\nimport { chakra, SimpleGrid, SimpleGridProps, useTheme } from '@chakra-ui/react'\n\nexport type FormLayoutProps = SimpleGridProps\n\ninterface FormLayoutItemProps {\n  children: React.ReactNode\n}\n\nconst FormLayoutItem: React.FC<FormLayoutItemProps> = ({ children }) => {\n  return <chakra.div>{children}</chakra.div>\n}\n\n/**\n * FormLayout\n *\n * Renders form items in a `SimpleGrid`\n * @see https://chakra-ui.com/docs/layout/simple-grid\n */\nexport const FormLayout = ({ children, ...props }: FormLayoutProps) => {\n  const theme = useTheme()\n\n  const defaultProps = theme.components?.FormLayout?.defaultProps ?? {\n    spacing: 4,\n  }\n\n  const gridProps = {\n    ...defaultProps,\n    ...props,\n  }\n\n  return (\n    <SimpleGrid {...gridProps}>\n      {React.Children.map(children, (child) => {\n        if (React.isValidElement(child)) {\n          return <FormLayoutItem>{child}</FormLayoutItem>\n        }\n        return child\n      })}\n    </SimpleGrid>\n  )\n}\n","import * as React from 'react'\n\nexport const mapNestedFields = (name: string, children: React.ReactNode) => {\n  return React.Children.map(children, (child) => {\n    if (React.isValidElement(child) && child.props.name) {\n      return React.cloneElement(child, {\n        ...child.props,\n        name: `${name}.${child.props.name}`,\n      })\n    }\n    return child\n  })\n}\n","import * as React from 'react'\nimport {\n  useFieldArray,\n  useFormContext,\n  UseFieldArrayReturn,\n} from 'react-hook-form'\n\nimport { createContext } from '@chakra-ui/react-utils'\n\nexport interface UseArrayFieldReturn extends UseFieldArrayReturn {\n  /**\n   * The array field name\n   */\n  name: string\n  /**\n   * The default value for new items\n   */\n  defaultValue: Record<string, any>\n  /**\n   * Min amount of items\n   */\n  min?: number\n  /**\n   * Max amount of items\n   */\n  max?: number\n}\n\nexport const [ArrayFieldProvider, useArrayFieldContext] =\n  createContext<UseArrayFieldReturn>({\n    name: 'ArrayFieldContext',\n  })\n\nexport interface UseArrayFieldRowReturn {\n  /**\n   * Name of the array field including the index, eg 'field.0'\n   */\n  name: string\n  /**\n   * The field index\n   */\n  index: number\n  /**\n   * Remove this array item\n   */\n  remove: () => void\n  /**\n   * True if this is the first item\n   */\n  isFirst: boolean\n  /**\n   * True if this is the last item\n   */\n  isLast: boolean\n}\n\nexport const [ArrayFieldRowProvider, useArrayFieldRowContext] =\n  createContext<UseArrayFieldRowReturn>({\n    name: 'ArrayFieldRowContext',\n  })\n\nexport interface ArrayFieldOptions {\n  /**\n   * The field name\n   */\n  name: string\n  /**\n   * Default value for new values in the array\n   */\n  defaultValue?: Record<string, any>\n  /**\n   * Default key name for rows, change this if your data uses a different 'id' field\n   * @default \"id\"\n   */\n  keyName?: string\n  min?: number\n  max?: number\n}\n\nexport const useArrayField = ({\n  name,\n  defaultValue = {},\n  keyName,\n  min,\n  max,\n}: ArrayFieldOptions) => {\n  const { control } = useFormContext()\n  const context = useFieldArray({\n    control,\n    name,\n    keyName,\n  })\n\n  return {\n    ...context,\n    name,\n    defaultValue,\n    min,\n    max,\n  }\n}\n\nexport interface UseArrayFieldRowProps {\n  index: number\n}\n\nexport const useArrayFieldRow = ({ index }: UseArrayFieldRowProps) => {\n  const { clearErrors } = useFormContext()\n  const { name, remove, fields } = useArrayFieldContext()\n\n  React.useEffect(() => {\n    // reset errors, to make sure min/max errors reset correctly\n    clearErrors(name)\n  }, [])\n\n  return {\n    index,\n    isFirst: index === 0,\n    isLast: index === fields.length - 1,\n    name: `${name}.${index}`,\n    remove: React.useCallback(() => {\n      clearErrors(name)\n      remove(index)\n    }, [index]),\n  }\n}\n\nexport const useArrayFieldRemoveButton = () => {\n  const { isFirst, remove } = useArrayFieldRowContext()\n  const { min, fields } = useArrayFieldContext()\n\n  const isDisabled = isFirst && !!(min && fields.length <= min)\n\n  return {\n    onClick: () => remove(),\n    isDisabled,\n  }\n}\n\nexport const useArrayFieldAddButton = () => {\n  const { append, defaultValue, max, fields } = useArrayFieldContext()\n\n  const isDisabled = !!(max && fields.length >= max)\n\n  return {\n    onClick: () =>\n      append(defaultValue, {\n        shouldFocus: false,\n      }),\n    isDisabled,\n  }\n}\n","import * as React from 'react'\n\nimport { chakra, ResponsiveValue } from '@chakra-ui/system'\n\nimport { AddIcon, MinusIcon } from '@chakra-ui/icons'\nimport { IconButton, ButtonProps } from '@saas-ui/button'\n\nimport { FormLayout } from './layout'\nimport { BaseField, FieldProps } from './field'\n\nimport { mapNestedFields } from './utils'\n\nimport {\n  useArrayField,\n  useArrayFieldRow,\n  useArrayFieldContext,\n  ArrayFieldProvider,\n  ArrayFieldOptions,\n  ArrayFieldRowProvider,\n  useArrayFieldRowContext,\n  useArrayFieldRemoveButton,\n  useArrayFieldAddButton,\n  UseArrayFieldReturn,\n} from './use-array-field'\n\ninterface ArrayField {\n  id: string\n  [key: string]: unknown\n}\n\ninterface ArrayFieldRowProps {\n  /**\n   * Amount of field columns\n   */\n  columns?: ResponsiveValue<number>\n  /**\n   * Spacing between fields\n   */\n  spacing?: ResponsiveValue<string | number>\n  /**\n   * The array index\n   */\n  index: number\n}\n\nexport const ArrayFieldRow: React.FC<ArrayFieldRowProps> = ({\n  children,\n  columns,\n  spacing,\n  index,\n}) => {\n  return (\n    <ArrayFieldRowContainer index={index}>\n      <ArrayFieldRowFields columns={columns} spacing={spacing}>\n        {children}\n      </ArrayFieldRowFields>\n      <ArrayFieldRemoveButton />\n    </ArrayFieldRowContainer>\n  )\n}\n\nexport interface ArrayFieldRowFieldsProps {\n  /**\n   * Amount of field columns\n   */\n  columns?: ResponsiveValue<number>\n  /**\n   * Spacing between fields\n   */\n  spacing?: ResponsiveValue<string | number>\n}\n\nexport const ArrayFieldRowFields: React.FC<ArrayFieldRowFieldsProps> = ({\n  children,\n  columns,\n  spacing,\n  ...layoutProps\n}) => {\n  const { name } = useArrayFieldRowContext()\n  return (\n    <FormLayout\n      flex=\"1\"\n      columns={columns}\n      gridGap={spacing}\n      mr=\"2\"\n      {...layoutProps}\n    >\n      {mapNestedFields(name, children)}\n    </FormLayout>\n  )\n}\n\nexport const ArrayFieldRowContainer: React.FC<ArrayFieldRowProps> = ({\n  children,\n  index,\n}) => {\n  const context = useArrayFieldRow({ index })\n\n  const styles = {\n    display: 'flex',\n    flexDirection: 'row',\n    alignItems: 'flex-end',\n    width: '100%',\n    mb: 4,\n  }\n\n  return (\n    <ArrayFieldRowProvider value={context}>\n      <chakra.div __css={styles}>{children}</chakra.div>\n    </ArrayFieldRowProvider>\n  )\n}\n\nexport const ArrayFieldRemoveButton: React.FC<ButtonProps> = (props) => {\n  return (\n    <IconButton\n      icon={<MinusIcon />}\n      aria-label=\"Remove row\"\n      {...useArrayFieldRemoveButton()}\n      {...props}\n    />\n  )\n}\n\nexport const ArrayFieldAddButton: React.FC<ButtonProps> = (props) => {\n  return (\n    <IconButton\n      icon={<AddIcon />}\n      aria-label=\"Add row\"\n      float=\"right\"\n      {...useArrayFieldAddButton()}\n      {...props}\n    />\n  )\n}\n\nexport interface ArrayFieldProps\n  extends ArrayFieldOptions,\n    Omit<FieldProps, 'defaultValue'> {}\n\nexport const ArrayField = React.forwardRef(\n  (props: ArrayFieldProps, ref: React.ForwardedRef<UseArrayFieldReturn>) => {\n    const { children, ...containerProps } = props\n\n    return (\n      <ArrayFieldContainer ref={ref} {...containerProps}>\n        <ArrayFieldRows>\n          {(fields: ArrayField[]) => (\n            <>\n              {fields.map(({ id }, index: number) => (\n                <ArrayFieldRow key={id} index={index}>\n                  {children}\n                </ArrayFieldRow>\n              ))}\n            </>\n          )}\n        </ArrayFieldRows>\n        <ArrayFieldAddButton />\n      </ArrayFieldContainer>\n    )\n  }\n)\n\nexport interface ArrayFieldRowsProps {\n  children: (fields: ArrayField[]) => React.ReactElement | null\n}\n\nexport const ArrayFieldRows = ({\n  children,\n}: ArrayFieldRowsProps): React.ReactElement | null => {\n  const { fields } = useArrayFieldContext()\n  return children(fields)\n}\n\nexport const ArrayFieldContainer = React.forwardRef(\n  (\n    {\n      name,\n      defaultValue,\n      keyName,\n      min,\n      max,\n      children,\n      ...fieldProps\n    }: ArrayFieldProps,\n    ref: React.ForwardedRef<UseArrayFieldReturn>\n  ) => {\n    const context = useArrayField({\n      name,\n      defaultValue,\n      keyName,\n      min,\n      max,\n    })\n\n    // This exposes the useArrayField api through the forwarded ref\n    React.useImperativeHandle(ref, () => context, [ref, context])\n\n    return (\n      <ArrayFieldProvider value={context}>\n        <BaseField name={name} {...fieldProps}>\n          {children}\n        </BaseField>\n      </ArrayFieldProvider>\n    )\n  }\n)\n","import * as React from 'react'\nimport {\n  FormControl,\n  FormLabel,\n  FormLabelProps,\n  ResponsiveValue,\n  useStyles,\n} from '@chakra-ui/react'\n\nimport { FormLayout } from './layout'\nimport { FieldProps } from './field'\n\nimport { mapNestedFields } from './utils'\n\nexport interface ObjectFieldProps extends FieldProps {\n  name: string\n  children: React.ReactNode\n  columns?: ResponsiveValue<number>\n  spacing?: ResponsiveValue<string | number>\n}\n\nexport const FormLegend = (props: FormLabelProps) => {\n  const styles = useStyles()\n  return <FormLabel as=\"legend\" sx={styles.legend} {...props} />\n}\n\nexport const ObjectField: React.FC<ObjectFieldProps> = (props) => {\n  const { name, label, hideLabel, children, columns, spacing, ...fieldProps } =\n    props\n\n  return (\n    <FormControl name={name} as=\"fieldset\" {...fieldProps}>\n      <FormLegend display={hideLabel ? 'none' : 'block'}>{label}</FormLegend>\n      <FormLayout columns={columns} gridGap={spacing}>\n        {mapNestedFields(name, children)}\n      </FormLayout>\n    </FormControl>\n  )\n}\n","import * as React from 'react'\nimport { getFieldsFromSchema, getNestedSchema } from './resolvers/yup'\n\nimport { FormLayout } from './layout'\nimport { Field, FieldProps } from './field'\n\nimport { ArrayField } from './array-field'\nimport { ObjectField } from './object-field'\n\nexport interface FieldsProps {\n  schema: any\n}\n\nconst getNestedFields = (schema: any, name: string) => {\n  return getFieldsFromSchema(getNestedSchema(schema, name)).map(\n    ({ name, type, ...nestedFieldProps }: FieldProps): React.ReactNode => (\n      <Field key={name} name={name} type={type} {...nestedFieldProps} />\n    )\n  )\n}\n\nexport const Fields: React.FC<FieldsProps> = ({ schema, ...props }) => {\n  return (\n    <FormLayout {...props}>\n      {getFieldsFromSchema(schema).map(\n        ({\n          name,\n          type,\n          defaultValue,\n          ...fieldProps\n        }: FieldProps): React.ReactNode => {\n          if (type === 'array') {\n            return (\n              <ArrayField name={name} {...fieldProps}>\n                {getNestedFields(schema, name)}\n              </ArrayField>\n            )\n          } else if (type === 'object') {\n            return (\n              <ObjectField name={name} {...fieldProps}>\n                {getNestedFields(schema, name)}\n              </ObjectField>\n            )\n          }\n\n          return <Field key={name} name={name} type={type} {...fieldProps} />\n        }\n      )}\n    </FormLayout>\n  )\n}\n","import * as React from 'react'\n\nimport { chakra, HTMLChakraProps, forwardRef } from '@chakra-ui/react'\n\nimport {\n  useForm,\n  FormProvider,\n  UseFormProps,\n  UseFormReturn,\n  FieldValues,\n  SubmitHandler,\n  SubmitErrorHandler,\n} from 'react-hook-form'\n\nimport { yupResolver } from './resolvers/yup'\n\nexport type { UseFormReturn, FieldValues }\n\ninterface FormOptions<TFieldValues extends FieldValues = FieldValues> {\n  /**\n   * The form schema, currently supports Yup schema only.\n   */\n  schema?: any\n  /**\n   * The submit handler.\n   */\n  onSubmit: SubmitHandler<TFieldValues>\n  /**\n   * Triggers when there are validation errors.\n   */\n  onError?: SubmitErrorHandler<TFieldValues>\n  /**\n   * Ref on the HTMLFormElement.\n   */\n  formRef?: React.MutableRefObject<HTMLFormElement>\n}\n\nexport interface FormProps<TFieldValues extends FieldValues = FieldValues>\n  extends UseFormProps<TFieldValues>,\n    Omit<HTMLChakraProps<'form'>, 'onSubmit' | 'onError'>,\n    FormOptions<TFieldValues> {}\n\n/**\n * @todo Figure out how to pass down FieldValues to all Field components,\n * if at all possible.\n */\nexport const Form = forwardRef(\n  <TFieldValues extends FieldValues = FieldValues>(\n    props: FormProps<TFieldValues>,\n    ref: React.ForwardedRef<UseFormReturn<TFieldValues>>\n  ) => {\n    const {\n      mode = 'all',\n      resolver,\n      reValidateMode,\n      shouldFocusError,\n      shouldUnregister,\n      shouldUseNativeValidation,\n      criteriaMode,\n      delayError,\n      schema,\n      defaultValues,\n      onSubmit,\n      onError,\n      formRef,\n      children,\n      ...rest\n    } = props\n\n    const form = {\n      mode,\n      resolver,\n      defaultValues,\n      reValidateMode,\n      shouldFocusError,\n      shouldUnregister,\n      shouldUseNativeValidation,\n      criteriaMode,\n      delayError,\n    }\n\n    // @todo remove yup dependency and just use resolver prop?\n    if (schema) {\n      form.resolver = yupResolver(schema)\n    }\n\n    const methods = useForm<TFieldValues>(form)\n    const { handleSubmit } = methods\n\n    // This exposes the useForm api through the forwarded ref\n    React.useImperativeHandle(ref, () => methods, [ref, methods])\n\n    return (\n      <FormProvider {...methods}>\n        <chakra.form\n          ref={formRef}\n          onSubmit={handleSubmit(onSubmit, onError)}\n          {...rest}\n        >\n          {children}\n        </chakra.form>\n      </FormProvider>\n    )\n  }\n) as <TFieldValues extends FieldValues>(\n  props: FormProps<TFieldValues> & {\n    ref?: React.ForwardedRef<UseFormReturn<TFieldValues>>\n  }\n) => React.ReactElement\n","import * as React from 'react'\n\nimport { useFormContext } from 'react-hook-form'\n\nimport { Button, ButtonProps } from '@saas-ui/button'\n\nimport { forwardRef } from '@chakra-ui/system'\n\nexport interface SubmitButtonProps extends ButtonProps {\n  /**\n   * Disable the submit button if the form is untouched.\n   *\n   * Change the default behavior by updating\n   * `SubmitButton.defaultProps.disableIfUntouched`\n   */\n  disableIfUntouched?: boolean\n  /**\n   * Disable the submit button if the form is invalid.\n   *\n   * Change the default behavior by updating\n   * `SubmitButton.defaultProps.disableIfInvalid`\n   */\n  disableIfInvalid?: boolean\n}\n\nexport const SubmitButton = forwardRef<SubmitButtonProps, 'button'>(\n  (props, ref) => {\n    const { children, disableIfUntouched, disableIfInvalid, ...rest } = props\n    const { formState } = useFormContext()\n\n    const isDisabled =\n      (disableIfUntouched && !formState.isDirty) ||\n      (disableIfInvalid && !formState.isValid)\n\n    return (\n      <Button\n        type=\"submit\"\n        isLoading={formState.isSubmitting}\n        isPrimary\n        ref={ref}\n        isDisabled={isDisabled}\n        {...rest}\n      >\n        {children}\n      </Button>\n    )\n  }\n)\n\nSubmitButton.defaultProps = {\n  label: 'Submit',\n  disableIfUntouched: false,\n  disableIfInvalid: false,\n}\n","import * as React from 'react'\nimport { FieldValues, UseFormReturn } from 'react-hook-form'\nimport { forwardRef } from '@chakra-ui/react'\n\nimport { Form, FormProps } from './form'\n\nimport { FormLayout } from './layout'\nimport { Fields } from './fields'\nimport { SubmitButton } from './submit-button'\n\ninterface AutoFormOptions {\n  schema: any\n  submitLabel?: false | string\n}\n\nexport interface AutoFormProps<TFieldValues extends FieldValues>\n  extends Omit<FormProps<TFieldValues>, 'schema'>,\n    AutoFormOptions {}\n\nexport const AutoForm = forwardRef(\n  <TFieldValues extends FieldValues = FieldValues>(\n    props: AutoFormProps<TFieldValues>,\n    ref: React.ForwardedRef<UseFormReturn<TFieldValues>>\n  ) => {\n    const { schema, submitLabel = 'Submit', ...rest } = props\n    return (\n      <Form {...rest} schema={schema} ref={ref}>\n        <FormLayout>\n          {<Fields schema={schema} />}\n          {submitLabel && <SubmitButton label={submitLabel} />}\n        </FormLayout>\n      </Form>\n    )\n  }\n) as <TFieldValues extends FieldValues>(\n  props: AutoFormProps<TFieldValues> & {\n    ref?: React.ForwardedRef<UseFormReturn<TFieldValues>>\n  }\n) => React.ReactElement\n","import*as e from\"react\";import{forwardRef as t,useMultiStyleConfig as s,omitThemingProps as r,StylesProvider as n,chakra as a,useStyles as i}from\"@chakra-ui/system\";import{Icon as c,CheckIcon as p}from\"@chakra-ui/icons\";import{Collapse as l}from\"@saas-ui/collapse\";import{getChildrenOfType as o,getChildOfType as m}from\"@saas-ui/react-utils\";import{cx as u,__DEV__ as d}from\"@chakra-ui/utils\";import{createContext as f}from\"@chakra-ui/react-utils\";function v(){return v=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var s=arguments[t];for(var r in s)Object.prototype.hasOwnProperty.call(s,r)&&(e[r]=s[r])}return e},v.apply(this,arguments)}function S(e,t){if(null==e)return{};var s,r,n={},a=Object.keys(e);for(r=0;r<a.length;r++)t.indexOf(s=a[r])>=0||(n[s]=e[s]);return n}const[_,N]=f({name:\"StepperContext\",errorMessage:\"useStepperContext: `context` is undefined. Seems you forgot to wrap stepper components in `<Stepper />`\"});function h(t){const{step:s}=t,[r,n]=e.useState(-1),a=e.useRef([]),[,i]=e.useState(Date.now()),c=e.useCallback(e=>{const t=[...a.current];-1===t.indexOf(e)&&t.push(e),a.current=t,i(Date.now())},[a,i]),p=e=>{const t=a.current.indexOf(e);-1!==t&&n(t)};return e.useLayoutEffect(()=>{\"string\"==typeof s?p(s):\"number\"==typeof s?n(s):-1===r&&n(0)},[s]),{stepsRef:a,activeStep:a.current[r],activeIndex:r,isFirstStep:0===r,isLastStep:r===a.current.length-1,isCompleted:r>=a.current.length,setIndex:n,setStep:p,nextStep:()=>{n(r+1)},prevStep:()=>{n(r-1)},registerStep:c,unregisterStep:e=>{a.current=a.current.slice(a.current.indexOf(e),1)}}}function y(t){const{name:s,isActive:r,isCompleted:n}=t,{registerStep:a,unregisterStep:i,activeStep:c}=N();return e.useEffect(()=>{if(s)return a(s),()=>{i(s)}},[]),{isActive:s?c===s:r,isCompleted:n}}function x({label:e=\"Back\"}={}){const{isFirstStep:t,prevStep:s}=N();return{isDisabled:t,onClick:s,label:e}}function C({label:e=\"Next\",submitLabel:t=\"Submit\"}={}){const{isLastStep:s,isCompleted:r,nextStep:n}=N();return{isDisabled:r,onClick:n,label:s?t:e}}const E=[\"children\",\"orientation\"],g=[\"children\",\"orientation\",\"stepComponent\"],b=[\"children\",\"isOpen\"],k=[\"icon\",\"isActive\",\"isCompleted\",\"className\"],A=[\"title\",\"icon\",\"isActive\",\"isCompleted\"],O=[\"isActive\"],D=t((t,i)=>{const c=s(\"Stepper\",t),p=r(t),{children:l,orientation:o}=p,m=S(p,E),d=h(t),f=v({display:\"flex\",flexDirection:\"column\"},c.container);/*#__PURE__*/return e.createElement(n,{value:c},/*#__PURE__*/e.createElement(_,{value:d},/*#__PURE__*/e.createElement(a.div,v({ref:i,__css:f},m,{className:u(\"saas-stepper__container\",t.className)}),/*#__PURE__*/e.createElement(I,{orientation:o},l))))});d&&(D.displayName=\"Stepper\");const I=t=>{var s,r;const{children:n,orientation:c,stepComponent:p}=t,l=S(t,g),d=i(),{activeIndex:f}=N(),_=v({display:\"flex\",flexDirection:\"row\",alignItems:\"center\"},d.steps),h=\"vertical\"===c,y=p||L,x=o(n,y),C=x.reduce((t,s,r,n)=>(t.push(/*#__PURE__*/e.createElement(y,v({key:r},s.props,{icon:s.props.icon||r+1,isActive:f===r,isCompleted:s.props.isCompleted||f>r}))),\"vertical\"===c&&t.push(/*#__PURE__*/e.createElement(w,{key:`content-${r}`,isOpen:f===r},s.props.children)),r<n.length-1&&t.push(/*#__PURE__*/e.createElement(F,{key:`separator-${r}`,isActive:r<f})),t),[]),E=m(n,T),b=f>=x.length?E:h?null:/*#__PURE__*/e.createElement(w,null,null==(s=x[f])||null==(r=s.props)?void 0:r.children);/*#__PURE__*/return e.createElement(e.Fragment,null,/*#__PURE__*/e.createElement(a.div,v({__css:_},l,{className:u(\"saas-stepper__steps\",t.className)}),C),b)};d&&(I.displayName=\"StepperSteps\");const w=t=>{const{children:s,isOpen:r=!0}=t,n=S(t,b),c=i();/*#__PURE__*/return e.createElement(a.div,v({__css:c.content},n,{className:u(\"saas-stepper__content\",t.className)}),/*#__PURE__*/e.createElement(l,{in:r},s))};d&&(w.displayName=\"StepperContent\");const j=t=>{const{icon:s,isCompleted:r,className:n}=t,l=S(t,k),o=v({display:\"flex\",alignItems:\"center\",justifyContent:\"center\",borderRadius:\"full\",fontSize:\"1em\",me:2},i().icon);let m;return m=r?/*#__PURE__*/e.createElement(c,{as:p}):s,/*#__PURE__*/e.createElement(a.div,v({__css:o},l,{className:u(\"saas-stepper__icon\",n)}),m)};d&&(j.displayName=\"StepperIcon\");const L=t=>{const{title:s,icon:r,isActive:n,isCompleted:c}=t,p=S(t,A),l=y(t),o=v({display:\"flex\",alignItems:\"center\",flexDirection:\"row\"},i().step);/*#__PURE__*/return e.createElement(a.div,v({__css:o,\"data-active\":l.isActive,\"data-completed\":l.isCompleted},p,{className:u(\"saas-stepper__step\",t.className)}),/*#__PURE__*/e.createElement(j,{icon:r,isActive:n,isCompleted:c}),s&&/*#__PURE__*/e.createElement(R,null,s))};d&&(L.displayName=\"StepperStep\");const F=t=>{const{isActive:s}=t,r=S(t,O),n=v({flex:1,borderTopWidth:\"1px\",mx:2},i().separator);/*#__PURE__*/return e.createElement(a.div,v({\"data-active\":s},r,{className:u(\"saas-stepper__separator\",t.className),__css:n}))};d&&(F.displayName=\"StepperSeparator\");const R=t=>{const s=i();/*#__PURE__*/return e.createElement(a.p,v({},t,{__css:s.title,className:u(\"saas-stepper__title\",t.className)}))};d&&(R.displayName=\"StepperStepTitle\");const T=t=>{const s=i();/*#__PURE__*/return e.createElement(a.div,v({__css:s.completed},t,{className:u(\"saas-stepper__completed\",t.className)}))};d&&(T.displayName=\"StepperCompleted\");export{D as Stepper,T as StepperCompleted,w as StepperContent,j as StepperIcon,_ as StepperProvider,F as StepperSeparator,L as StepperStep,R as StepperStepTitle,I as StepperSteps,C as useNext,x as usePrev,y as useStep,h as useStepper,N as useStepperContext};\n//# sourceMappingURL=index.modern.js.map\n","import * as React from 'react'\nimport { FieldValues, SubmitHandler } from 'react-hook-form'\nimport { createContext } from '@chakra-ui/react-utils'\nimport {\n  useStepper,\n  useStep,\n  UseStepperProps,\n  UseStepperReturn,\n} from '@saas-ui/stepper'\n\nexport interface StepState {\n  name: string\n  schema?: any\n  isActive?: boolean\n  isCompleted?: boolean\n}\n\nexport interface StepFormContext extends UseStepperReturn {\n  updateStep(state: StepState): void\n  steps: Record<string, StepState>\n}\n\nexport const [StepFormProvider, useStepFormContext] =\n  createContext<StepFormContext>({\n    name: 'StepFormContext',\n    errorMessage:\n      'useStepFormContext: `context` is undefined. Seems you forgot to wrap step form components in `<StepForm />`',\n  })\n\nimport { FormProps } from './form'\n\nexport interface UseStepFormProps<\n  TFieldValues extends FieldValues = FieldValues\n> extends UseStepperProps,\n    FormProps<TFieldValues> {}\n\nexport function useStepForm<TFieldValues extends FieldValues = FieldValues>(\n  props: UseStepFormProps<TFieldValues>\n) {\n  const stepper = useStepper(props)\n\n  const { activeStep, isLastStep, nextStep } = stepper\n\n  const [steps, updateSteps] = React.useState({})\n\n  const onSubmitStep: SubmitHandler<TFieldValues> = React.useCallback(\n    async (data) => {\n      if (isLastStep) {\n        return props\n          .onSubmit?.(data)\n          .then(() => {\n            const step = steps[activeStep]\n            updateStep({\n              ...step,\n              isCompleted: true,\n            })\n          })\n          .then(nextStep) // Show completed step\n      }\n\n      nextStep()\n    },\n    [activeStep, isLastStep]\n  )\n\n  const getFormProps = React.useCallback(\n    (props) => {\n      const step = steps[activeStep]\n      return {\n        onSubmit: onSubmitStep,\n        schema: step?.schema,\n      }\n    },\n    [steps, onSubmitStep, activeStep]\n  )\n\n  const updateStep = React.useCallback(\n    (step) => {\n      updateSteps((steps) => {\n        return {\n          ...steps,\n          [step.name]: step,\n        }\n      })\n    },\n    [steps]\n  )\n\n  return {\n    getFormProps,\n    updateStep,\n    steps,\n    ...stepper,\n  }\n}\n\nexport type UseStepFormReturn = ReturnType<typeof useStepForm>\n\nexport interface UseFormStepProps {\n  name: string\n  schema?: any\n}\n\nexport function useFormStep(props: UseFormStepProps): StepState {\n  const { name, schema } = props\n  const step = useStep({ name })\n\n  const { steps, updateStep } = useStepFormContext()\n\n  React.useEffect(() => {\n    updateStep({ name, schema })\n  }, [name, schema])\n\n  return {\n    ...step,\n    ...(steps[name] || { name, schema }),\n  }\n}\n","import * as React from 'react'\n\nimport { FieldValues, UseFormReturn } from 'react-hook-form'\n\nimport {\n  chakra,\n  HTMLChakraProps,\n  useMultiStyleConfig,\n  StylesProvider,\n} from '@chakra-ui/system'\n\nimport { callAllHandlers, runIfFn, cx, __DEV__ } from '@chakra-ui/utils'\n\nimport {\n  StepperProvider,\n  StepperSteps,\n  StepperStepsProps,\n  StepperStep,\n  useStepperContext,\n} from '@saas-ui/stepper'\nimport { Button, ButtonProps } from '@saas-ui/button'\n\nimport { Form, FormProps } from './form'\nimport { SubmitButton } from './submit-button'\n\nimport {\n  useStepForm,\n  useFormStep,\n  StepFormProvider,\n  UseStepFormProps,\n} from './use-step-form'\n\nexport interface StepFormProps<TFieldValues extends FieldValues = FieldValues>\n  extends UseStepFormProps<TFieldValues>,\n    FormProps<TFieldValues> {}\n\nexport const StepForm = React.forwardRef(\n  <TFieldValues extends FieldValues = FieldValues>(\n    props: StepFormProps<TFieldValues>,\n    ref: React.ForwardedRef<UseFormReturn<TFieldValues>>\n  ) => {\n    const { children, onSubmit, ...rest } = props\n\n    const stepper = useStepForm<TFieldValues>(props)\n\n    const { getFormProps, ...ctx } = stepper\n\n    const context = React.useMemo(() => ctx, [ctx])\n\n    return (\n      <StepperProvider value={context}>\n        <StepFormProvider value={context}>\n          <Form ref={ref} {...rest} {...getFormProps(props)}>\n            {runIfFn(children, stepper)}\n          </Form>\n        </StepFormProvider>\n      </StepperProvider>\n    )\n  }\n) as <TFieldValues extends FieldValues>(\n  props: FormProps<TFieldValues> & {\n    ref?: React.ForwardedRef<UseFormReturn<TFieldValues>>\n  }\n) => React.ReactElement\n\nexport interface FormStepOptions {\n  /**\n   * The step name\n   */\n  name: string\n  /**\n   * Schema\n   */\n  schema?: any\n}\n\nexport const FormStepper: React.FC<StepperStepsProps> = (props) => {\n  const styles = useMultiStyleConfig('Stepper', props)\n\n  const { children } = props\n\n  const elements = React.Children.map(children, (child) => {\n    if (React.isValidElement(child) && child?.type === FormStep) {\n      const { isCompleted } = useFormStep(child.props) // Register this step\n      return (\n        <StepperStep\n          name={child.props.name}\n          title={child.props.title}\n          isCompleted={isCompleted}\n        >\n          {child.props.children}\n        </StepperStep>\n      )\n    }\n    return child\n  })\n\n  return (\n    <StylesProvider value={styles}>\n      <StepperSteps mb=\"4\" {...props}>\n        {elements}\n      </StepperSteps>\n    </StylesProvider>\n  )\n}\n\nexport interface FormStepProps\n  extends FormStepOptions,\n    HTMLChakraProps<'div'> {}\n\nexport const FormStep: React.FC<FormStepProps> = (props) => {\n  const { name, schema, children, className, ...rest } = props\n  const step = useFormStep({ name, schema })\n\n  const { isActive } = step\n\n  return isActive ? (\n    <chakra.div {...rest} className={cx('saas-form__step', className)}>\n      {children}\n    </chakra.div>\n  ) : null\n}\n\nif (__DEV__) {\n  FormStep.displayName = 'FormStep'\n}\n\nexport const PrevButton: React.FC<ButtonProps> = (props) => {\n  const { isFirstStep, isCompleted, prevStep } = useStepperContext()\n\n  return (\n    <Button\n      isDisabled={isFirstStep || isCompleted}\n      label=\"Back\"\n      {...props}\n      className={cx('saas-form__prev-button', props.className)}\n      onClick={callAllHandlers(props.onClick, prevStep)}\n    />\n  )\n}\n\nif (__DEV__) {\n  PrevButton.displayName = 'PrevButton'\n}\n\nexport interface NextButtonProps extends ButtonProps {\n  submitLabel?: string\n}\n\nexport const NextButton: React.FC<NextButtonProps> = (props) => {\n  const { label = 'Next', submitLabel = 'Complete', ...rest } = props\n  const { isLastStep, isCompleted } = useStepperContext()\n\n  return (\n    <SubmitButton\n      isDisabled={isCompleted}\n      label={isLastStep || isCompleted ? submitLabel : label}\n      {...rest}\n      className={cx('saas-form__next-button', props.className)}\n    />\n  )\n}\n\nif (__DEV__) {\n  NextButton.displayName = 'NextButton'\n}\n","import * as React from 'react'\nimport {\n  useFormContext,\n  useWatch,\n  FieldValues,\n  UseFormReturn,\n} from 'react-hook-form'\n\nexport interface DisplayIfProps<TFieldValues> {\n  children: React.ReactElement\n  name: string\n  defaultValue?: unknown\n  isDisabled?: boolean\n  isExact?: boolean\n  condition?: (value: unknown, context: UseFormReturn<TFieldValues>) => boolean\n}\n\nexport const DisplayIf = <TFieldValues extends FieldValues = FieldValues>({\n  children,\n  name,\n  defaultValue,\n  isDisabled,\n  isExact,\n  condition = (value) => !!value,\n}: DisplayIfProps<TFieldValues>) => {\n  const value = useWatch({\n    name,\n    defaultValue,\n    disabled: isDisabled,\n    exact: isExact,\n  })\n  const context = useFormContext<TFieldValues>()\n  return condition(value, context) ? children : null\n}\n"],"names":["FormValue","name","getValues","useFormContext","inputTypes","BaseField","props","label","help","variant","hideLabel","children","controlProps","error","formState","get","errors","getError","React","FormControl","isInvalid","FormLabel","Box","message","FormHelperText","FormErrorMessage","Field","forwardRef","ref","type","withControlledInput","InputComponent","rules","inputProps","Controller","control","render","field","_ref","useMergeRefs","withUncontrolledInput","register","registerFieldType","component","options","displayName","isDisabled","isReadOnly","isRequired","inputRules","required","createField","isControlled","split","map","part","charAt","toUpperCase","slice","join","InputField","Input","NumberInputField","NumberInput","PasswordInputFIeld","PasswordInput","TextareaField","Textarea","SwitchField","Switch","SelectField","Select","CheckboxField","Checkbox","RadioField","RadioInput","PinField","PinInput","NativeSelectField","NativeSelect","getType","spec","meta","_field$spec$meta","getArrayOption","tests","test","OPTIONS","_test$OPTIONS","params","getFieldsFromSchema","schema","schemaFields","fields","innerType","min","max","push","FormLayoutItem","chakra","div","FormLayout","gridProps","useTheme","components","_theme$components","_theme$components$For2","defaultProps","spacing","SimpleGrid","Children","child","isValidElement","mapNestedFields","cloneElement","createContext","ArrayFieldProvider","useArrayFieldContext","ArrayFieldRowProvider","useArrayFieldRowContext","useArrayField","defaultValue","keyName","useFieldArray","useArrayFieldRow","index","clearErrors","remove","useEffect","isFirst","isLast","length","useCallback","useArrayFieldRemoveButton","onClick","useArrayFieldAddButton","append","shouldFocus","ArrayFieldRow","ArrayFieldRowContainer","ArrayFieldRowFields","columns","ArrayFieldRemoveButton","layoutProps","flex","gridGap","mr","context","value","__css","display","flexDirection","alignItems","width","mb","IconButton","icon","MinusIcon","ArrayFieldAddButton","AddIcon","float","ArrayField","containerProps","ArrayFieldContainer","ArrayFieldRows","key","id","fieldProps","useImperativeHandle","FormLegend","styles","useStyles","as","sx","legend","ObjectField","getNestedFields","path","reach","getNestedSchema","nestedFieldProps","Fields","Form","mode","resolver","reValidateMode","shouldFocusError","shouldUnregister","shouldUseNativeValidation","criteriaMode","delayError","defaultValues","onSubmit","onError","formRef","rest","form","yupResolver","methods","useForm","handleSubmit","FormProvider","SubmitButton","disableIfUntouched","disableIfInvalid","Button","isLoading","isSubmitting","isPrimary","isDirty","isValid","AutoForm","submitLabel","errorMessage","StepperProvider","useStepperContext","useStepper","step","useState","activeIndex","setIndex","stepsRef","useRef","onUpdate","Date","now","registerStep","newSteps","current","indexOf","setStep","i","useLayoutEffect","activeStep","isFirstStep","isLastStep","isCompleted","nextStep","prevStep","unregisterStep","useStep","isActive","StepFormProvider","useStepFormContext","useStepForm","stepper","steps","updateSteps","onSubmitStep","data","then","updateStep","getFormProps","useFormStep","StepForm","ctx","useMemo","runIfFn","FormStep","className","cx","__DEV__","PrevButton","callAllHandlers","NextButton","htmlFor","Text","fontSize","condition","useWatch","disabled","exact","isExact","useMultiStyleConfig","elements","StepperStep","title","StylesProvider","StepperSteps"],"mappings":"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"}
         
     | 
    
        package/dist/index.modern.js
    CHANGED
    
    | 
         @@ -1,2 +1,2 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            import*as e from"react";import{useFormContext as r,get as l,Controller as a,useFieldArray as t,useForm as n,FormProvider as i,useWatch as s}from"react-hook-form";import{FormControl as m,FormLabel as o,Text as c,forwardRef as u,Switch as d,Checkbox as p,Box as f,FormHelperText as h,FormErrorMessage as b,useMergeRefs as E,Input as y,Textarea as v,useTheme as x,SimpleGrid as g,chakra as V,useStyles as k}from"@chakra-ui/react";import{NumberInput as I}from"@saas-ui/number-input";import{PasswordInput as C}from"@saas-ui/password-input";import{RadioInput as F}from"@saas-ui/radio";import{PinInput as L}from"@saas-ui/pin-input";import{Select as N,NativeSelect as O}from"@saas-ui/select";import{reach as S}from"yup";import{yupResolver as w}from"@hookform/resolvers/yup";import{chakra as R,forwardRef as U}from"@chakra-ui/system";import{MinusIcon as D,AddIcon as j}from"@chakra-ui/icons";import{IconButton as M,Button as P}from"@saas-ui/button";import{createContext as $}from"@chakra-ui/react-utils";export*from"@saas-ui/input-right-button";function q(){return q=Object.assign||function(e){for(var r=1;r<arguments.length;r++){var l=arguments[r];for(var a in l)Object.prototype.hasOwnProperty.call(l,a)&&(e[a]=l[a])}return e},q.apply(this,arguments)}function A(e,r){if(null==e)return{};var l,a,t={},n=Object.keys(e);for(a=0;a<n.length;a++)r.indexOf(l=n[a])>=0||(t[l]=e[l]);return t}const B=["name","label","placeholder"],T=l=>{let{name:a,label:t}=l,n=A(l,B);const{getValues:i}=r();/*#__PURE__*/return e.createElement(m,n,t?/*#__PURE__*/e.createElement(o,{htmlFor:a},t):null,/*#__PURE__*/e.createElement(c,{fontSize:"md"},i(a)))},G=["name","label","help","variant","hideLabel","children"],_=["name","label","help","isDisabled","isInvalid","isReadOnly","isRequired","rules","variant"],z=["name","rules"],H=["ref"],J=["name","rules"],K=["ref"],Q=["label"],W=["label"],X={},Y="text",Z=a=>{const{name:t,label:n,help:i,variant:s,hideLabel:c,children:u}=a,d=A(a,G),{formState:p}=r(),E=((e,r)=>l(r.errors,e))(t,p);/*#__PURE__*/return e.createElement(m,q({variant:s},d,{isInvalid:!!E}),n&&!c?/*#__PURE__*/e.createElement(o,{variant:s},n):null,/*#__PURE__*/e.createElement(f,null,u,!i||null!=E&&E.message?null:/*#__PURE__*/e.createElement(h,null,i),(null==E?void 0:E.message)&&/*#__PURE__*/e.createElement(b,null,null==E?void 0:E.message)))},ee=u((r,l)=>{const{type:a=Y}=r,t=(e=>X[e]||X[Y])(a);/*#__PURE__*/return e.createElement(t,q({ref:l},r))}),re=l=>u((t,n)=>{let{name:i,rules:s}=t,m=A(t,z);const{control:o}=r();/*#__PURE__*/return e.createElement(a,{name:i,control:o,rules:s,render:r=>{let{field:{ref:a}}=r,t=A(r.field,H);/*#__PURE__*/return e.createElement(l,q({},t,m,{ref:E(n,a)}))}})}),le=l=>u((a,t)=>{let{name:n,rules:i}=a,s=A(a,J);const{register:m}=r(),o=m(n,i),{ref:c}=o,u=A(o,K);/*#__PURE__*/return e.createElement(l,q({},u,s,{ref:E(t,c)}))}),ae=(r,l,a)=>{let t;t=null!=a&&a.isControlled?re(l):le(l);const n=((r,{displayName:l,hideLabel:a,BaseField:t})=>{const n=u((l,n)=>{const{name:i,label:s,help:m,isDisabled:o,isInvalid:c,isReadOnly:u,isRequired:d,rules:p,variant:f}=l,h=A(l,_),b=q({required:d},p);/*#__PURE__*/return e.createElement(t,{name:i,label:s,help:m,hideLabel:a,isDisabled:o,isInvalid:c,isReadOnly:u,isRequired:d,variant:f},/*#__PURE__*/e.createElement(r,q({ref:n,name:i,label:s,rules:b},h)))});return n.displayName=l,n})(t,{displayName:`${r.split("-").map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join("")}Field`,hideLabel:null==a?void 0:a.hideLabel,BaseField:(null==a?void 0:a.BaseField)||Z});return X[r]=n,n},te=ae("text",y),ne=ae("number",I,{isControlled:!0}),ie=ae("password",C),se=ae("textarea",v),me=ae("switch",u((r,l)=>{let{label:a}=r,t=A(r,Q);/*#__PURE__*/return e.createElement(d,q({ref:l},t),a)}),{isControlled:!0,hideLabel:!0}),oe=ae("select",N,{isControlled:!0}),ce=ae("checkbox",u((r,l)=>{let{label:a}=r,t=A(r,W);/*#__PURE__*/return e.createElement(p,q({ref:l},t),a)}),{hideLabel:!0}),ue=ae("radio",F,{isControlled:!0}),de=ae("pin",L,{isControlled:!0}),pe=ae("native-select",O,{isControlled:!0}),fe=e=>{var r;if(null!=(r=e.spec.meta)&&r.type)return e.spec.meta.type;switch(e.type){case"array":return"array";case"object":return"object";case"number":return"number";case"date":return"date";default:return"text"}},he=(e,r)=>{for(const a of e.tests){var l;if(null!=(l=a.OPTIONS)&&l.params[r])return a.OPTIONS.params[r]}},be=e=>{const r=[];let l={};l="array"===e.type?e.innerType.fields:e.fields;for(const e in l){const a=l[e],t={};"array"===a.type&&(t.min=he(a,"min"),t.max=he(a,"max")),r.push(q({name:e,label:a.spec.label||e,type:fe(a)},t))}return r},Ee=["children"],ye=({children:r})=>/*#__PURE__*/e.createElement(V.div,null,r),ve=r=>{var l,a,t;let{children:n}=r,i=A(r,Ee);const s=q({},null!=(l=null==(a=x().components)||null==(t=a.FormLayout)?void 0:t.defaultProps)?l:{spacing:4},i);/*#__PURE__*/return e.createElement(g,s,e.Children.map(n,r=>e.isValidElement(r)?/*#__PURE__*/e.createElement(ye,null,r):r))},xe=(r,l)=>e.Children.map(l,l=>e.isValidElement(l)&&l.props.name?e.cloneElement(l,q({},l.props,{name:`${r}.${l.props.name}`})):l),[ge,Ve]=$({name:"ArrayFieldContext"}),[ke,Ie]=$({name:"ArrayFieldRowContext"}),Ce=({name:e,defaultValue:l={},keyName:a,min:n,max:i})=>{const{control:s}=r();return q({},t({control:s,name:e,keyName:a}),{name:e,defaultValue:l,min:n,max:i})},Fe=({index:l})=>{const{clearErrors:a}=r(),{name:t,remove:n,fields:i}=Ve();return e.useEffect(()=>{a(t)},[]),{index:l,isFirst:0===l,isLast:l===i.length-1,name:`${t}.${l}`,remove:e.useCallback(()=>{a(t),n(l)},[l])}},Le=()=>{const{isFirst:e,remove:r}=Ie(),{min:l,fields:a}=Ve();return{onClick:()=>r(),isDisabled:e&&!!(l&&a.length<=l)}},Ne=()=>{const{append:e,defaultValue:r,max:l,fields:a}=Ve();return{onClick:()=>e(r,{shouldFocus:!1}),isDisabled:!!(l&&a.length>=l)}},Oe=["children","columns","spacing"],Se=["children"],we=["name","defaultValue","keyName","min","max","children"],Re=({children:r,columns:l,spacing:a,index:t})=>/*#__PURE__*/e.createElement(De,{index:t},/*#__PURE__*/e.createElement(Ue,{columns:l,spacing:a},r),/*#__PURE__*/e.createElement(je,null)),Ue=r=>{let{children:l,columns:a,spacing:t}=r,n=A(r,Oe);const{name:i}=Ie();/*#__PURE__*/return e.createElement(ve,q({flex:"1",columns:a,gridGap:t,mr:"2"},n),xe(i,l))},De=({children:r,index:l})=>{const a=Fe({index:l});/*#__PURE__*/return e.createElement(ke,{value:a},/*#__PURE__*/e.createElement(R.div,{__css:{display:"flex",flexDirection:"row",alignItems:"flex-end",width:"100%",mb:4}},r))},je=r=>/*#__PURE__*/e.createElement(M,q({icon:/*#__PURE__*/e.createElement(D,null),"aria-label":"Remove row"},Le(),r)),Me=r=>/*#__PURE__*/e.createElement(M,q({icon:/*#__PURE__*/e.createElement(j,null),"aria-label":"Add row",float:"right"},Ne(),r)),Pe=r=>{const{children:l}=r,a=A(r,Se);/*#__PURE__*/return e.createElement(qe,a,/*#__PURE__*/e.createElement($e,null,r=>/*#__PURE__*/e.createElement(e.Fragment,null,r.map(({id:r},a)=>/*#__PURE__*/e.createElement(Re,{key:r,index:a},l)))),/*#__PURE__*/e.createElement(Me,null))},$e=({children:e})=>{const{fields:r}=Ve();return e(r)},qe=r=>{let{name:l,defaultValue:a,keyName:t,min:n,max:i,children:s}=r,m=A(r,we);const o=Ce({name:l,defaultValue:a,keyName:t,min:n,max:i});/*#__PURE__*/return e.createElement(ge,{value:o},/*#__PURE__*/e.createElement(Z,q({name:l},m),s))},Ae=["name","label","hideLabel","children","columns","spacing"],Be=r=>{const l=k();/*#__PURE__*/return e.createElement(o,q({as:"legend",sx:l.legend},r))},Te=r=>{const{name:l,label:a,hideLabel:t,children:n,columns:i,spacing:s}=r,o=A(r,Ae);/*#__PURE__*/return e.createElement(m,q({name:l,as:"fieldset"},o),/*#__PURE__*/e.createElement(Be,{display:t?"none":"block"},a),/*#__PURE__*/e.createElement(ve,{columns:i,gridGap:s},xe(l,n)))},Ge=["name","type"],_e=["schema"],ze=["name","type","defaultValue"],He=(r,l)=>be(((e,r)=>S(e,r))(r,l)).map(r=>{let{name:l,type:a}=r,t=A(r,Ge);/*#__PURE__*/return e.createElement(ee,q({key:l,name:l,type:a},t))}),Je=r=>{let{schema:l}=r,a=A(r,_e);/*#__PURE__*/return e.createElement(ve,a,be(l).map(r=>{let{name:a,type:t}=r,n=A(r,ze);return"array"===t?/*#__PURE__*/e.createElement(Pe,q({name:a},n),He(l,a)):"object"===t?/*#__PURE__*/e.createElement(Te,q({name:a},n),He(l,a)):/*#__PURE__*/e.createElement(ee,q({key:a,name:a,type:t},n))}))},Ke=["mode","resolver","reValidateMode","shouldFocusError","shouldUnregister","shouldUseNativeValidation","criteriaMode","delayError","schema","defaultValues","onSubmit","onError","formRef","children"],Qe=u((r,l)=>{const{mode:a="all",resolver:t,reValidateMode:s,shouldFocusError:m,shouldUnregister:o,shouldUseNativeValidation:c,criteriaMode:u,delayError:d,schema:p,defaultValues:f,onSubmit:h,onError:b,formRef:E,children:y}=r,v=A(r,Ke),x={mode:a,resolver:t,defaultValues:f,reValidateMode:s,shouldFocusError:m,shouldUnregister:o,shouldUseNativeValidation:c,criteriaMode:u,delayError:d};p&&(x.resolver=w(p));const g=n(x),{handleSubmit:k}=g;return e.useImperativeHandle(l,()=>g,[l,g]),/*#__PURE__*/e.createElement(i,g,/*#__PURE__*/e.createElement(V.form,q({ref:E,onSubmit:k(h,b)},v),y))}),We=["children","disableIfUntouched","disableIfInvalid"],Xe=U((l,a)=>{const{children:t,disableIfUntouched:n,disableIfInvalid:i}=l,s=A(l,We),{formState:m}=r();/*#__PURE__*/return e.createElement(P,q({type:"submit",isLoading:m.isSubmitting,isPrimary:!0,ref:a,isDisabled:n&&!m.isDirty||i&&!m.isValid},s),t)});Xe.defaultProps={label:"Submit",disableIfUntouched:!1,disableIfInvalid:!1};const Ye=["schema","submitLabel"],Ze=u((r,l)=>{const{schema:a,submitLabel:t="Submit"}=r,n=A(r,Ye);/*#__PURE__*/return e.createElement(Qe,q({},n,{schema:a,ref:l}),/*#__PURE__*/e.createElement(ve,null,/*#__PURE__*/e.createElement(Je,{schema:a}),t&&/*#__PURE__*/e.createElement(Xe,{label:t})))}),er=({children:e,name:l,defaultValue:a,isDisabled:t,isExact:n,condition:i=(e=>!!e)})=>i(s({name:l,defaultValue:a,disabled:t,exact:n}),r())?e:null;export{Pe as ArrayField,Me as ArrayFieldAddButton,qe as ArrayFieldContainer,ge as ArrayFieldProvider,je as ArrayFieldRemoveButton,Re as ArrayFieldRow,De as ArrayFieldRowContainer,Ue as ArrayFieldRowFields,ke as ArrayFieldRowProvider,$e as ArrayFieldRows,Ze as AutoForm,Z as BaseField,ce as CheckboxField,T as DisplayField,er as DisplayIf,ee as Field,Je as Fields,Qe as Form,ve as FormLayout,Be as FormLegend,te as InputField,pe as NativeSelectField,ne as NumberInputField,Te as ObjectField,ie as PasswordInputFIeld,de as PinField,ue as RadioField,oe as SelectField,Xe as SubmitButton,me as SwitchField,se as TextareaField,ae as registerFieldType,Ce as useArrayField,Ne as useArrayFieldAddButton,Ve as useArrayFieldContext,Le as useArrayFieldRemoveButton,Fe as useArrayFieldRow,Ie as useArrayFieldRowContext,re as withControlledInput,le as withUncontrolledInput};
         
     | 
| 
      
 1 
     | 
    
         
            +
            import*as e from"react";import{useFormContext as t,get as r,Controller as n,useFieldArray as a,useForm as l,FormProvider as s,useWatch as i}from"react-hook-form";import{FormControl as o,FormLabel as c,Text as m,forwardRef as u,Switch as p,Checkbox as d,Box as f,FormHelperText as h,FormErrorMessage as E,useMergeRefs as b,Input as v,Textarea as y,useTheme as S,SimpleGrid as x,chakra as g,useStyles as N,Collapse as C}from"@chakra-ui/react";import{NumberInput as _}from"@saas-ui/number-input";import{PasswordInput as k}from"@saas-ui/password-input";import{RadioInput as F}from"@saas-ui/radio";import{PinInput as I}from"@saas-ui/pin-input";import{Select as O,NativeSelect as V}from"@saas-ui/select";import{reach as w}from"yup";import{yupResolver as L}from"@hookform/resolvers/yup";import{chakra as R,forwardRef as A,useMultiStyleConfig as D,omitThemingProps as j,StylesProvider as P,useStyles as U}from"@chakra-ui/system";import{MinusIcon as M,AddIcon as $,Icon as B,CheckIcon as T}from"@chakra-ui/icons";import{IconButton as q,Button as z}from"@saas-ui/button";import{createContext as G}from"@chakra-ui/react-utils";import{cx as H,__DEV__ as W,runIfFn as J,callAllHandlers as K}from"@chakra-ui/utils";import{getChildrenOfType as Q,getChildOfType as X}from"@saas-ui/react-utils";export*from"@saas-ui/input-right-button";function Y(){return Y=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},Y.apply(this,arguments)}function Z(e,t){if(null==e)return{};var r,n,a={},l=Object.keys(e);for(n=0;n<l.length;n++)t.indexOf(r=l[n])>=0||(a[r]=e[r]);return a}const ee=["name","label","placeholder"],te=t=>{let{name:r,label:n}=t,a=Z(t,ee);/*#__PURE__*/return e.createElement(o,a,n?/*#__PURE__*/e.createElement(c,{htmlFor:r},n):null,/*#__PURE__*/e.createElement(m,{fontSize:"md"},/*#__PURE__*/e.createElement(re,{name:r})))},re=({name:e})=>{const{getValues:r}=t();return r(e)||null},ne=["name","label","help","variant","hideLabel","children"],ae=["name","label","help","isDisabled","isInvalid","isReadOnly","isRequired","rules","variant"],le=["name","rules"],se=["ref"],ie=["name","rules"],oe=["ref"],ce=["label"],me=["label"],ue={},pe="text",de=n=>{const{name:a,label:l,help:s,variant:i,hideLabel:m,children:u}=n,p=Z(n,ne),{formState:d}=t(),b=((e,t)=>r(t.errors,e))(a,d);/*#__PURE__*/return e.createElement(o,Y({variant:i},p,{isInvalid:!!b}),l&&!m?/*#__PURE__*/e.createElement(c,{variant:i},l):null,/*#__PURE__*/e.createElement(f,null,u,!s||null!=b&&b.message?null:/*#__PURE__*/e.createElement(h,null,s),(null==b?void 0:b.message)&&/*#__PURE__*/e.createElement(E,null,null==b?void 0:b.message)))},fe=u((t,r)=>{const{type:n=pe}=t,a=(e=>ue[e]||ue[pe])(n);/*#__PURE__*/return e.createElement(a,Y({ref:r},t))}),he=r=>u((a,l)=>{let{name:s,rules:i}=a,o=Z(a,le);const{control:c}=t();/*#__PURE__*/return e.createElement(n,{name:s,control:c,rules:i,render:t=>{let{field:{ref:n}}=t,a=Z(t.field,se);/*#__PURE__*/return e.createElement(r,Y({},a,o,{ref:b(l,n)}))}})}),Ee=r=>u((n,a)=>{let{name:l,rules:s}=n,i=Z(n,ie);const{register:o}=t(),c=o(l,s),{ref:m}=c,u=Z(c,oe);/*#__PURE__*/return e.createElement(r,Y({},u,i,{ref:b(a,m)}))}),be=(t,r,n)=>{let a;a=null!=n&&n.isControlled?he(r):Ee(r);const l=((t,{displayName:r,hideLabel:n,BaseField:a})=>{const l=u((r,l)=>{const{name:s,label:i,help:o,isDisabled:c,isInvalid:m,isReadOnly:u,isRequired:p,rules:d,variant:f}=r,h=Z(r,ae),E=Y({required:p},d);/*#__PURE__*/return e.createElement(a,{name:s,label:i,help:o,hideLabel:n,isDisabled:c,isInvalid:m,isReadOnly:u,isRequired:p,variant:f},/*#__PURE__*/e.createElement(t,Y({ref:l,name:s,label:i,rules:E},h)))});return l.displayName=r,l})(a,{displayName:`${t.split("-").map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join("")}Field`,hideLabel:null==n?void 0:n.hideLabel,BaseField:(null==n?void 0:n.BaseField)||de});return ue[t]=l,l},ve=be("text",v),ye=be("number",_,{isControlled:!0}),Se=be("password",k),xe=be("textarea",y),ge=be("switch",u((t,r)=>{let{label:n}=t,a=Z(t,ce);/*#__PURE__*/return e.createElement(p,Y({ref:r},a),n)}),{isControlled:!0,hideLabel:!0}),Ne=be("select",O,{isControlled:!0}),Ce=be("checkbox",u((t,r)=>{let{label:n}=t,a=Z(t,me);/*#__PURE__*/return e.createElement(d,Y({ref:r},a),n)}),{hideLabel:!0}),_e=be("radio",F,{isControlled:!0}),ke=be("pin",I,{isControlled:!0}),Fe=be("native-select",V,{isControlled:!0}),Ie=e=>{var t;if(null!=(t=e.spec.meta)&&t.type)return e.spec.meta.type;switch(e.type){case"array":return"array";case"object":return"object";case"number":return"number";case"date":return"date";default:return"text"}},Oe=(e,t)=>{for(const n of e.tests){var r;if(null!=(r=n.OPTIONS)&&r.params[t])return n.OPTIONS.params[t]}},Ve=e=>{const t=[];let r={};r="array"===e.type?e.innerType.fields:e.fields;for(const e in r){const n=r[e],a={};"array"===n.type&&(a.min=Oe(n,"min"),a.max=Oe(n,"max")),t.push(Y({name:e,label:n.spec.label||e,type:Ie(n)},a))}return t},we=["children"],Le=({children:t})=>/*#__PURE__*/e.createElement(g.div,null,t),Re=t=>{var r,n,a;let{children:l}=t,s=Z(t,we);const i=Y({},null!=(r=null==(n=S().components)||null==(a=n.FormLayout)?void 0:a.defaultProps)?r:{spacing:4},s);/*#__PURE__*/return e.createElement(x,i,e.Children.map(l,t=>e.isValidElement(t)?/*#__PURE__*/e.createElement(Le,null,t):t))},Ae=(t,r)=>e.Children.map(r,r=>e.isValidElement(r)&&r.props.name?e.cloneElement(r,Y({},r.props,{name:`${t}.${r.props.name}`})):r),[De,je]=G({name:"ArrayFieldContext"}),[Pe,Ue]=G({name:"ArrayFieldRowContext"}),Me=({name:e,defaultValue:r={},keyName:n,min:l,max:s})=>{const{control:i}=t();return Y({},a({control:i,name:e,keyName:n}),{name:e,defaultValue:r,min:l,max:s})},$e=({index:r})=>{const{clearErrors:n}=t(),{name:a,remove:l,fields:s}=je();return e.useEffect(()=>{n(a)},[]),{index:r,isFirst:0===r,isLast:r===s.length-1,name:`${a}.${r}`,remove:e.useCallback(()=>{n(a),l(r)},[r])}},Be=()=>{const{isFirst:e,remove:t}=Ue(),{min:r,fields:n}=je();return{onClick:()=>t(),isDisabled:e&&!!(r&&n.length<=r)}},Te=()=>{const{append:e,defaultValue:t,max:r,fields:n}=je();return{onClick:()=>e(t,{shouldFocus:!1}),isDisabled:!!(r&&n.length>=r)}},qe=["children","columns","spacing"],ze=["children"],Ge=["name","defaultValue","keyName","min","max","children"],He=({children:t,columns:r,spacing:n,index:a})=>/*#__PURE__*/e.createElement(Je,{index:a},/*#__PURE__*/e.createElement(We,{columns:r,spacing:n},t),/*#__PURE__*/e.createElement(Ke,null)),We=t=>{let{children:r,columns:n,spacing:a}=t,l=Z(t,qe);const{name:s}=Ue();/*#__PURE__*/return e.createElement(Re,Y({flex:"1",columns:n,gridGap:a,mr:"2"},l),Ae(s,r))},Je=({children:t,index:r})=>{const n=$e({index:r});/*#__PURE__*/return e.createElement(Pe,{value:n},/*#__PURE__*/e.createElement(R.div,{__css:{display:"flex",flexDirection:"row",alignItems:"flex-end",width:"100%",mb:4}},t))},Ke=t=>/*#__PURE__*/e.createElement(q,Y({icon:/*#__PURE__*/e.createElement(M,null),"aria-label":"Remove row"},Be(),t)),Qe=t=>/*#__PURE__*/e.createElement(q,Y({icon:/*#__PURE__*/e.createElement($,null),"aria-label":"Add row",float:"right"},Te(),t)),Xe=e.forwardRef((t,r)=>{const{children:n}=t,a=Z(t,ze);/*#__PURE__*/return e.createElement(Ze,Y({ref:r},a),/*#__PURE__*/e.createElement(Ye,null,t=>/*#__PURE__*/e.createElement(e.Fragment,null,t.map(({id:t},r)=>/*#__PURE__*/e.createElement(He,{key:t,index:r},n)))),/*#__PURE__*/e.createElement(Qe,null))}),Ye=({children:e})=>{const{fields:t}=je();return e(t)},Ze=e.forwardRef((t,r)=>{let{name:n,defaultValue:a,keyName:l,min:s,max:i,children:o}=t,c=Z(t,Ge);const m=Me({name:n,defaultValue:a,keyName:l,min:s,max:i});return e.useImperativeHandle(r,()=>m,[r,m]),/*#__PURE__*/e.createElement(De,{value:m},/*#__PURE__*/e.createElement(de,Y({name:n},c),o))}),et=["name","label","hideLabel","children","columns","spacing"],tt=t=>{const r=N();/*#__PURE__*/return e.createElement(c,Y({as:"legend",sx:r.legend},t))},rt=t=>{const{name:r,label:n,hideLabel:a,children:l,columns:s,spacing:i}=t,c=Z(t,et);/*#__PURE__*/return e.createElement(o,Y({name:r,as:"fieldset"},c),/*#__PURE__*/e.createElement(tt,{display:a?"none":"block"},n),/*#__PURE__*/e.createElement(Re,{columns:s,gridGap:i},Ae(r,l)))},nt=["name","type"],at=["schema"],lt=["name","type","defaultValue"],st=(t,r)=>Ve(((e,t)=>w(e,t))(t,r)).map(t=>{let{name:r,type:n}=t,a=Z(t,nt);/*#__PURE__*/return e.createElement(fe,Y({key:r,name:r,type:n},a))}),it=t=>{let{schema:r}=t,n=Z(t,at);/*#__PURE__*/return e.createElement(Re,n,Ve(r).map(t=>{let{name:n,type:a}=t,l=Z(t,lt);return"array"===a?/*#__PURE__*/e.createElement(Xe,Y({name:n},l),st(r,n)):"object"===a?/*#__PURE__*/e.createElement(rt,Y({name:n},l),st(r,n)):/*#__PURE__*/e.createElement(fe,Y({key:n,name:n,type:a},l))}))},ot=["mode","resolver","reValidateMode","shouldFocusError","shouldUnregister","shouldUseNativeValidation","criteriaMode","delayError","schema","defaultValues","onSubmit","onError","formRef","children"],ct=u((t,r)=>{const{mode:n="all",resolver:a,reValidateMode:i,shouldFocusError:o,shouldUnregister:c,shouldUseNativeValidation:m,criteriaMode:u,delayError:p,schema:d,defaultValues:f,onSubmit:h,onError:E,formRef:b,children:v}=t,y=Z(t,ot),S={mode:n,resolver:a,defaultValues:f,reValidateMode:i,shouldFocusError:o,shouldUnregister:c,shouldUseNativeValidation:m,criteriaMode:u,delayError:p};d&&(S.resolver=L(d));const x=l(S),{handleSubmit:N}=x;return e.useImperativeHandle(r,()=>x,[r,x]),/*#__PURE__*/e.createElement(s,x,/*#__PURE__*/e.createElement(g.form,Y({ref:b,onSubmit:N(h,E)},y),v))}),mt=["children","disableIfUntouched","disableIfInvalid"],ut=A((r,n)=>{const{children:a,disableIfUntouched:l,disableIfInvalid:s}=r,i=Z(r,mt),{formState:o}=t();/*#__PURE__*/return e.createElement(z,Y({type:"submit",isLoading:o.isSubmitting,isPrimary:!0,ref:n,isDisabled:l&&!o.isDirty||s&&!o.isValid},i),a)});ut.defaultProps={label:"Submit",disableIfUntouched:!1,disableIfInvalid:!1};const pt=["schema","submitLabel"],dt=u((t,r)=>{const{schema:n,submitLabel:a="Submit"}=t,l=Z(t,pt);/*#__PURE__*/return e.createElement(ct,Y({},l,{schema:n,ref:r}),/*#__PURE__*/e.createElement(Re,null,/*#__PURE__*/e.createElement(it,{schema:n}),a&&/*#__PURE__*/e.createElement(ut,{label:a})))}),ft=({children:e,name:r,defaultValue:n,isDisabled:a,isExact:l,condition:s=(e=>!!e)})=>s(i({name:r,defaultValue:n,disabled:a,exact:l}),t())?e:null;function ht(){return ht=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},ht.apply(this,arguments)}function Et(e,t){if(null==e)return{};var r,n,a={},l=Object.keys(e);for(n=0;n<l.length;n++)t.indexOf(r=l[n])>=0||(a[r]=e[r]);return a}const[bt,vt]=G({name:"StepperContext",errorMessage:"useStepperContext: `context` is undefined. Seems you forgot to wrap stepper components in `<Stepper />`"});function yt(t){const{step:r}=t,[n,a]=e.useState(-1),l=e.useRef([]),[,s]=e.useState(Date.now()),i=e.useCallback(e=>{const t=[...l.current];-1===t.indexOf(e)&&t.push(e),l.current=t,s(Date.now())},[l,s]),o=e=>{const t=l.current.indexOf(e);-1!==t&&a(t)};return e.useLayoutEffect(()=>{"string"==typeof r?o(r):"number"==typeof r?a(r):-1===n&&a(0)},[r]),{stepsRef:l,activeStep:l.current[n],activeIndex:n,isFirstStep:0===n,isLastStep:n===l.current.length-1,isCompleted:n>=l.current.length,setIndex:a,setStep:o,nextStep:()=>{a(n+1)},prevStep:()=>{a(n-1)},registerStep:i,unregisterStep:e=>{l.current=l.current.slice(l.current.indexOf(e),1)}}}function St(t){const{name:r,isActive:n,isCompleted:a}=t,{registerStep:l,unregisterStep:s,activeStep:i}=vt();return e.useEffect(()=>{if(r)return l(r),()=>{s(r)}},[]),{isActive:r?i===r:n,isCompleted:a}}const xt=["children","orientation"],gt=["children","orientation","stepComponent"],Nt=["children","isOpen"],Ct=["icon","isActive","isCompleted","className"],_t=["title","icon","isActive","isCompleted"],kt=["isActive"],Ft=A((t,r)=>{const n=D("Stepper",t),a=j(t),{children:l,orientation:s}=a,i=Et(a,xt),o=yt(t),c=ht({display:"flex",flexDirection:"column"},n.container);return e.createElement(P,{value:n},/*#__PURE__*/e.createElement(bt,{value:o},/*#__PURE__*/e.createElement(R.div,ht({ref:r,__css:c},i,{className:H("saas-stepper__container",t.className)}),/*#__PURE__*/e.createElement(It,{orientation:s},l))))});W&&(Ft.displayName="Stepper");const It=t=>{var r,n;const{children:a,orientation:l,stepComponent:s}=t,i=Et(t,gt),o=U(),{activeIndex:c}=vt(),m=ht({display:"flex",flexDirection:"row",alignItems:"center"},o.steps),u="vertical"===l,p=s||wt,d=Q(a,p),f=d.reduce((t,r,n,a)=>(t.push(/*#__PURE__*/e.createElement(p,ht({key:n},r.props,{icon:r.props.icon||n+1,isActive:c===n,isCompleted:r.props.isCompleted||c>n}))),"vertical"===l&&t.push(/*#__PURE__*/e.createElement(Ot,{key:`content-${n}`,isOpen:c===n},r.props.children)),n<a.length-1&&t.push(/*#__PURE__*/e.createElement(Lt,{key:`separator-${n}`,isActive:n<c})),t),[]),h=X(a,At),E=c>=d.length?h:u?null:/*#__PURE__*/e.createElement(Ot,null,null==(r=d[c])||null==(n=r.props)?void 0:n.children);return e.createElement(e.Fragment,null,/*#__PURE__*/e.createElement(R.div,ht({__css:m},i,{className:H("saas-stepper__steps",t.className)}),f),E)};W&&(It.displayName="StepperSteps");const Ot=t=>{const{children:r,isOpen:n=!0}=t,a=Et(t,Nt),l=U();return e.createElement(R.div,ht({__css:l.content},a,{className:H("saas-stepper__content",t.className)}),/*#__PURE__*/e.createElement(C,{in:n},r))};W&&(Ot.displayName="StepperContent");const Vt=t=>{const{icon:r,isCompleted:n,className:a}=t,l=Et(t,Ct),s=ht({display:"flex",alignItems:"center",justifyContent:"center",borderRadius:"full",fontSize:"1em",me:2},U().icon);let i;return i=n?/*#__PURE__*/e.createElement(B,{as:T}):r,/*#__PURE__*/e.createElement(R.div,ht({__css:s},l,{className:H("saas-stepper__icon",a)}),i)};W&&(Vt.displayName="StepperIcon");const wt=t=>{const{title:r,icon:n,isActive:a,isCompleted:l}=t,s=Et(t,_t),i=St(t),o=ht({display:"flex",alignItems:"center",flexDirection:"row"},U().step);return e.createElement(R.div,ht({__css:o,"data-active":i.isActive,"data-completed":i.isCompleted},s,{className:H("saas-stepper__step",t.className)}),/*#__PURE__*/e.createElement(Vt,{icon:n,isActive:a,isCompleted:l}),r&&/*#__PURE__*/e.createElement(Rt,null,r))};W&&(wt.displayName="StepperStep");const Lt=t=>{const{isActive:r}=t,n=Et(t,kt),a=ht({flex:1,borderTopWidth:"1px",mx:2},U().separator);return e.createElement(R.div,ht({"data-active":r},n,{className:H("saas-stepper__separator",t.className),__css:a}))};W&&(Lt.displayName="StepperSeparator");const Rt=t=>{const r=U();return e.createElement(R.p,ht({},t,{__css:r.title,className:H("saas-stepper__title",t.className)}))};W&&(Rt.displayName="StepperStepTitle");const At=t=>{const r=U();return e.createElement(R.div,ht({__css:r.completed},t,{className:H("saas-stepper__completed",t.className)}))};W&&(At.displayName="StepperCompleted");const[Dt,jt]=G({name:"StepFormContext",errorMessage:"useStepFormContext: `context` is undefined. Seems you forgot to wrap step form components in `<StepForm />`"});function Pt(t){const r=yt(t),{activeStep:n,isLastStep:a,nextStep:l}=r,[s,i]=e.useState({}),o=e.useCallback(async e=>{if(a)return null==t.onSubmit?void 0:t.onSubmit(e).then(()=>{m(Y({},s[n],{isCompleted:!0}))}).then(l);l()},[n,a]),c=e.useCallback(e=>{const t=s[n];return{onSubmit:o,schema:null==t?void 0:t.schema}},[s,o,n]),m=e.useCallback(e=>{i(t=>Y({},t,{[e.name]:e}))},[s]);return Y({getFormProps:c,updateStep:m,steps:s},r)}function Ut(t){const{name:r,schema:n}=t,a=St({name:r}),{steps:l,updateStep:s}=jt();return e.useEffect(()=>{s({name:r,schema:n})},[r,n]),Y({},a,l[r]||{name:r,schema:n})}const Mt=["children","onSubmit"],$t=["getFormProps"],Bt=["name","schema","children","className"],Tt=["label","submitLabel"],qt=e.forwardRef((t,r)=>{const{children:n}=t,a=Z(t,Mt),l=Pt(t),{getFormProps:s}=l,i=Z(l,$t),o=e.useMemo(()=>i,[i]);/*#__PURE__*/return e.createElement(bt,{value:o},/*#__PURE__*/e.createElement(Dt,{value:o},/*#__PURE__*/e.createElement(ct,Y({ref:r},a,s(t)),J(n,l))))}),zt=t=>{const r=D("Stepper",t),{children:n}=t,a=e.Children.map(n,t=>{if(e.isValidElement(t)&&(null==t?void 0:t.type)===Gt){const{isCompleted:r}=Ut(t.props);/*#__PURE__*/return e.createElement(wt,{name:t.props.name,title:t.props.title,isCompleted:r},t.props.children)}return t});/*#__PURE__*/return e.createElement(P,{value:r},/*#__PURE__*/e.createElement(It,Y({mb:"4"},t),a))},Gt=t=>{const{name:r,schema:n,children:a,className:l}=t,s=Z(t,Bt),i=Ut({name:r,schema:n}),{isActive:o}=i;return o?/*#__PURE__*/e.createElement(R.div,Y({},s,{className:H("saas-form__step",l)}),a):null};W&&(Gt.displayName="FormStep");const Ht=t=>{const{isFirstStep:r,isCompleted:n,prevStep:a}=vt();/*#__PURE__*/return e.createElement(z,Y({isDisabled:r||n,label:"Back"},t,{className:H("saas-form__prev-button",t.className),onClick:K(t.onClick,a)}))};W&&(Ht.displayName="PrevButton");const Wt=t=>{const{label:r="Next",submitLabel:n="Complete"}=t,a=Z(t,Tt),{isLastStep:l,isCompleted:s}=vt();/*#__PURE__*/return e.createElement(ut,Y({isDisabled:s,label:l||s?n:r},a,{className:H("saas-form__next-button",t.className)}))};W&&(Wt.displayName="NextButton");export{Xe as ArrayField,Qe as ArrayFieldAddButton,Ze as ArrayFieldContainer,De as ArrayFieldProvider,Ke as ArrayFieldRemoveButton,He as ArrayFieldRow,Je as ArrayFieldRowContainer,We as ArrayFieldRowFields,Pe as ArrayFieldRowProvider,Ye as ArrayFieldRows,dt as AutoForm,de as BaseField,Ce as CheckboxField,te as DisplayField,ft as DisplayIf,fe as Field,it as Fields,ct as Form,Re as FormLayout,tt as FormLegend,Gt as FormStep,zt as FormStepper,re as FormValue,ve as InputField,Fe as NativeSelectField,Wt as NextButton,ye as NumberInputField,rt as ObjectField,Se as PasswordInputFIeld,ke as PinField,Ht as PrevButton,_e as RadioField,Ne as SelectField,qt as StepForm,Dt as StepFormProvider,ut as SubmitButton,ge as SwitchField,xe as TextareaField,be as registerFieldType,Me as useArrayField,Te as useArrayFieldAddButton,je as useArrayFieldContext,Be as useArrayFieldRemoveButton,$e as useArrayFieldRow,Ue as useArrayFieldRowContext,Ut as useFormStep,Pt as useStepForm,jt as useStepFormContext,he as withControlledInput,Ee as withUncontrolledInput};
         
     | 
| 
       2 
2 
     | 
    
         
             
            //# sourceMappingURL=index.modern.js.map
         
     |