@saas-ui/forms 2.0.5 → 2.1.0
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 +11 -0
 - package/dist/ajv/index.js +42 -14
 - package/dist/ajv/index.js.map +1 -1
 - package/dist/ajv/index.mjs +14 -6
 - package/dist/ajv/index.mjs.map +1 -1
 - package/dist/index.d.ts +5 -4
 - package/dist/index.js +539 -322
 - package/dist/index.js.map +1 -1
 - package/dist/index.mjs +481 -165
 - package/dist/index.mjs.map +1 -1
 - package/dist/yup/index.d.ts +2 -2
 - package/dist/yup/index.js +120 -82
 - package/dist/yup/index.js.map +1 -1
 - package/dist/yup/index.mjs +132 -38
 - package/dist/yup/index.mjs.map +1 -1
 - package/dist/zod/index.d.ts +2 -2
 - package/dist/zod/index.js +116 -83
 - package/dist/zod/index.js.map +1 -1
 - package/dist/zod/index.mjs +124 -35
 - package/dist/zod/index.mjs.map +1 -1
 - package/package.json +7 -7
 
    
        package/dist/yup/index.js
    CHANGED
    
    | 
         @@ -1,37 +1,10 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            'use  
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
            var  
     | 
| 
       4 
     | 
    
         
            -
            var yup = require('@hookform/resolvers/yup');
         
     | 
| 
       5 
     | 
    
         
            -
            var forms = require('@saas-ui/forms');
         
     | 
| 
       6 
     | 
    
         
            -
            var React = require('react');
         
     | 
| 
       7 
     | 
    
         
            -
            var react = require('@chakra-ui/react');
         
     | 
| 
       8 
     | 
    
         
            -
            var jsxRuntime = require('react/jsx-runtime');
         
     | 
| 
       9 
     | 
    
         
            -
            var utils_star = require('@chakra-ui/utils');
         
     | 
| 
       10 
     | 
    
         
            -
             
     | 
| 
       11 
     | 
    
         
            -
            function _interopNamespace(e) {
         
     | 
| 
       12 
     | 
    
         
            -
              if (e && e.__esModule) return e;
         
     | 
| 
       13 
     | 
    
         
            -
              var n = Object.create(null);
         
     | 
| 
       14 
     | 
    
         
            -
              if (e) {
         
     | 
| 
       15 
     | 
    
         
            -
                Object.keys(e).forEach(function (k) {
         
     | 
| 
       16 
     | 
    
         
            -
                  if (k !== 'default') {
         
     | 
| 
       17 
     | 
    
         
            -
                    var d = Object.getOwnPropertyDescriptor(e, k);
         
     | 
| 
       18 
     | 
    
         
            -
                    Object.defineProperty(n, k, d.get ? d : {
         
     | 
| 
       19 
     | 
    
         
            -
                      enumerable: true,
         
     | 
| 
       20 
     | 
    
         
            -
                      get: function () { return e[k]; }
         
     | 
| 
       21 
     | 
    
         
            -
                    });
         
     | 
| 
       22 
     | 
    
         
            -
                  }
         
     | 
| 
       23 
     | 
    
         
            -
                });
         
     | 
| 
       24 
     | 
    
         
            -
              }
         
     | 
| 
       25 
     | 
    
         
            -
              n.default = e;
         
     | 
| 
       26 
     | 
    
         
            -
              return Object.freeze(n);
         
     | 
| 
       27 
     | 
    
         
            -
            }
         
     | 
| 
       28 
     | 
    
         
            -
             
     | 
| 
       29 
     | 
    
         
            -
            var React__namespace = /*#__PURE__*/_interopNamespace(React);
         
     | 
| 
       30 
     | 
    
         
            -
            var utils_star__namespace = /*#__PURE__*/_interopNamespace(utils_star);
         
     | 
| 
       31 
     | 
    
         
            -
             
     | 
| 
      
 1 
     | 
    
         
            +
            'use client'
         
     | 
| 
      
 2 
     | 
    
         
            +
            "use strict";
         
     | 
| 
      
 3 
     | 
    
         
            +
            var __create = Object.create;
         
     | 
| 
       32 
4 
     | 
    
         
             
            var __defProp = Object.defineProperty;
         
     | 
| 
       33 
5 
     | 
    
         
             
            var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
         
     | 
| 
       34 
6 
     | 
    
         
             
            var __getOwnPropNames = Object.getOwnPropertyNames;
         
     | 
| 
      
 7 
     | 
    
         
            +
            var __getProtoOf = Object.getPrototypeOf;
         
     | 
| 
       35 
8 
     | 
    
         
             
            var __hasOwnProp = Object.prototype.hasOwnProperty;
         
     | 
| 
       36 
9 
     | 
    
         
             
            var __export = (target, all) => {
         
     | 
| 
       37 
10 
     | 
    
         
             
              for (var name in all)
         
     | 
| 
         @@ -46,6 +19,35 @@ var __copyProps = (to, from, except, desc) => { 
     | 
|
| 
       46 
19 
     | 
    
         
             
              return to;
         
     | 
| 
       47 
20 
     | 
    
         
             
            };
         
     | 
| 
       48 
21 
     | 
    
         
             
            var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
         
     | 
| 
      
 22 
     | 
    
         
            +
            var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
         
     | 
| 
      
 23 
     | 
    
         
            +
              // If the importer is in node compatibility mode or this is not an ESM
         
     | 
| 
      
 24 
     | 
    
         
            +
              // file that has been converted to a CommonJS file using a Babel-
         
     | 
| 
      
 25 
     | 
    
         
            +
              // compatible transform (i.e. "__esModule" has not been set), then set
         
     | 
| 
      
 26 
     | 
    
         
            +
              // "default" to the CommonJS "module.exports" for node compatibility.
         
     | 
| 
      
 27 
     | 
    
         
            +
              isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
         
     | 
| 
      
 28 
     | 
    
         
            +
              mod
         
     | 
| 
      
 29 
     | 
    
         
            +
            ));
         
     | 
| 
      
 30 
     | 
    
         
            +
            var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
         
     | 
| 
      
 31 
     | 
    
         
            +
             
     | 
| 
      
 32 
     | 
    
         
            +
            // yup/src/index.ts
         
     | 
| 
      
 33 
     | 
    
         
            +
            var src_exports = {};
         
     | 
| 
      
 34 
     | 
    
         
            +
            __export(src_exports, {
         
     | 
| 
      
 35 
     | 
    
         
            +
              Form: () => Form3,
         
     | 
| 
      
 36 
     | 
    
         
            +
              FormDialog: () => FormDialog2,
         
     | 
| 
      
 37 
     | 
    
         
            +
              StepForm: () => StepForm,
         
     | 
| 
      
 38 
     | 
    
         
            +
              createYupForm: () => createYupForm,
         
     | 
| 
      
 39 
     | 
    
         
            +
              createYupFormDialog: () => createYupFormDialog,
         
     | 
| 
      
 40 
     | 
    
         
            +
              createYupStepForm: () => createYupStepForm,
         
     | 
| 
      
 41 
     | 
    
         
            +
              getFieldsFromSchema: () => getFieldsFromSchema,
         
     | 
| 
      
 42 
     | 
    
         
            +
              getNestedSchema: () => getNestedSchema,
         
     | 
| 
      
 43 
     | 
    
         
            +
              yupFieldResolver: () => yupFieldResolver,
         
     | 
| 
      
 44 
     | 
    
         
            +
              yupResolver: () => import_yup2.yupResolver
         
     | 
| 
      
 45 
     | 
    
         
            +
            });
         
     | 
| 
      
 46 
     | 
    
         
            +
            module.exports = __toCommonJS(src_exports);
         
     | 
| 
      
 47 
     | 
    
         
            +
             
     | 
| 
      
 48 
     | 
    
         
            +
            // yup/src/yup-resolver.ts
         
     | 
| 
      
 49 
     | 
    
         
            +
            var import_yup = require("yup");
         
     | 
| 
      
 50 
     | 
    
         
            +
            var import_yup2 = require("@hookform/resolvers/yup");
         
     | 
| 
       49 
51 
     | 
    
         
             
            var getType = (field) => {
         
     | 
| 
       50 
52 
     | 
    
         
             
              var _a;
         
     | 
| 
       51 
53 
     | 
    
         
             
              if ((_a = field.spec.meta) == null ? void 0 : _a.type) {
         
     | 
| 
         @@ -97,7 +99,7 @@ var getFieldsFromSchema = (schema) => { 
     | 
|
| 
       97 
99 
     | 
    
         
             
              return fields;
         
     | 
| 
       98 
100 
     | 
    
         
             
            };
         
     | 
| 
       99 
101 
     | 
    
         
             
            var getNestedSchema = (schema, path) => {
         
     | 
| 
       100 
     | 
    
         
            -
              return  
     | 
| 
      
 102 
     | 
    
         
            +
              return (0, import_yup.reach)(schema, path);
         
     | 
| 
       101 
103 
     | 
    
         
             
            };
         
     | 
| 
       102 
104 
     | 
    
         
             
            var yupFieldResolver = (schema) => {
         
     | 
| 
       103 
105 
     | 
    
         
             
              return {
         
     | 
| 
         @@ -109,9 +111,16 @@ var yupFieldResolver = (schema) => { 
     | 
|
| 
       109 
111 
     | 
    
         
             
                }
         
     | 
| 
       110 
112 
     | 
    
         
             
              };
         
     | 
| 
       111 
113 
     | 
    
         
             
            };
         
     | 
| 
      
 114 
     | 
    
         
            +
             
     | 
| 
      
 115 
     | 
    
         
            +
            // yup/src/create-yup-form.ts
         
     | 
| 
      
 116 
     | 
    
         
            +
            var import_forms = require("@saas-ui/forms");
         
     | 
| 
       112 
117 
     | 
    
         
             
            var createYupForm = (options) => {
         
     | 
| 
       113 
     | 
    
         
            -
              const YupForm =  
     | 
| 
       114 
     | 
    
         
            -
                resolver: (schema) =>  
     | 
| 
      
 118 
     | 
    
         
            +
              const YupForm = (0, import_forms.createForm)({
         
     | 
| 
      
 119 
     | 
    
         
            +
                resolver: (schema) => (0, import_yup2.yupResolver)(
         
     | 
| 
      
 120 
     | 
    
         
            +
                  schema,
         
     | 
| 
      
 121 
     | 
    
         
            +
                  options == null ? void 0 : options.schemaOptions,
         
     | 
| 
      
 122 
     | 
    
         
            +
                  options == null ? void 0 : options.resolverOptions
         
     | 
| 
      
 123 
     | 
    
         
            +
                ),
         
     | 
| 
       115 
124 
     | 
    
         
             
                fieldResolver: yupFieldResolver,
         
     | 
| 
       116 
125 
     | 
    
         
             
                ...options
         
     | 
| 
       117 
126 
     | 
    
         
             
              });
         
     | 
| 
         @@ -119,9 +128,16 @@ var createYupForm = (options) => { 
     | 
|
| 
       119 
128 
     | 
    
         
             
              YupForm.id = "YupForm";
         
     | 
| 
       120 
129 
     | 
    
         
             
              return YupForm;
         
     | 
| 
       121 
130 
     | 
    
         
             
            };
         
     | 
| 
      
 131 
     | 
    
         
            +
             
     | 
| 
      
 132 
     | 
    
         
            +
            // yup/src/create-yup-step-form.ts
         
     | 
| 
      
 133 
     | 
    
         
            +
            var import_forms2 = require("@saas-ui/forms");
         
     | 
| 
       122 
134 
     | 
    
         
             
            var createYupStepForm = (options) => {
         
     | 
| 
       123 
     | 
    
         
            -
              const YupStepForm =  
     | 
| 
       124 
     | 
    
         
            -
                resolver: (schema) =>  
     | 
| 
      
 135 
     | 
    
         
            +
              const YupStepForm = (0, import_forms2.createStepForm)({
         
     | 
| 
      
 136 
     | 
    
         
            +
                resolver: (schema) => (0, import_yup2.yupResolver)(
         
     | 
| 
      
 137 
     | 
    
         
            +
                  schema,
         
     | 
| 
      
 138 
     | 
    
         
            +
                  options == null ? void 0 : options.schemaOptions,
         
     | 
| 
      
 139 
     | 
    
         
            +
                  options == null ? void 0 : options.resolverOptions
         
     | 
| 
      
 140 
     | 
    
         
            +
                ),
         
     | 
| 
       125 
141 
     | 
    
         
             
                fieldResolver: yupFieldResolver,
         
     | 
| 
       126 
142 
     | 
    
         
             
                ...options
         
     | 
| 
       127 
143 
     | 
    
         
             
              });
         
     | 
| 
         @@ -130,6 +146,20 @@ var createYupStepForm = (options) => { 
     | 
|
| 
       130 
146 
     | 
    
         
             
              return YupStepForm;
         
     | 
| 
       131 
147 
     | 
    
         
             
            };
         
     | 
| 
       132 
148 
     | 
    
         | 
| 
      
 149 
     | 
    
         
            +
            // ../saas-ui-modals/dist/index.mjs
         
     | 
| 
      
 150 
     | 
    
         
            +
            var React3 = __toESM(require("react"), 1);
         
     | 
| 
      
 151 
     | 
    
         
            +
            var import_react2 = require("@chakra-ui/react");
         
     | 
| 
      
 152 
     | 
    
         
            +
            var import_jsx_runtime = require("react/jsx-runtime");
         
     | 
| 
      
 153 
     | 
    
         
            +
            var import_react3 = require("@chakra-ui/react");
         
     | 
| 
      
 154 
     | 
    
         
            +
            var import_utils = require("@chakra-ui/utils");
         
     | 
| 
      
 155 
     | 
    
         
            +
            var import_jsx_runtime2 = require("react/jsx-runtime");
         
     | 
| 
      
 156 
     | 
    
         
            +
            var import_react4 = require("@chakra-ui/react");
         
     | 
| 
      
 157 
     | 
    
         
            +
            var import_utils2 = require("@chakra-ui/utils");
         
     | 
| 
      
 158 
     | 
    
         
            +
            var import_jsx_runtime3 = require("react/jsx-runtime");
         
     | 
| 
      
 159 
     | 
    
         
            +
            var import_react5 = require("@chakra-ui/react");
         
     | 
| 
      
 160 
     | 
    
         
            +
            var import_jsx_runtime4 = require("react/jsx-runtime");
         
     | 
| 
      
 161 
     | 
    
         
            +
            var import_react6 = require("@chakra-ui/react");
         
     | 
| 
      
 162 
     | 
    
         
            +
             
     | 
| 
       133 
163 
     | 
    
         
             
            // ../saas-ui-react-utils/dist/index.mjs
         
     | 
| 
       134 
164 
     | 
    
         
             
            var dist_exports = {};
         
     | 
| 
       135 
165 
     | 
    
         
             
            __export(dist_exports, {
         
     | 
| 
         @@ -137,14 +167,17 @@ __export(dist_exports, { 
     | 
|
| 
       137 
167 
     | 
    
         
             
              getChildrenOfType: () => getChildrenOfType,
         
     | 
| 
       138 
168 
     | 
    
         
             
              useResponsiveValue: () => useResponsiveValue
         
     | 
| 
       139 
169 
     | 
    
         
             
            });
         
     | 
| 
       140 
     | 
    
         
            -
             
     | 
| 
      
 170 
     | 
    
         
            +
            var React = __toESM(require("react"), 1);
         
     | 
| 
      
 171 
     | 
    
         
            +
            var React2 = __toESM(require("react"), 1);
         
     | 
| 
      
 172 
     | 
    
         
            +
            var import_react = require("@chakra-ui/react");
         
     | 
| 
      
 173 
     | 
    
         
            +
            __reExport(dist_exports, require("@chakra-ui/utils"));
         
     | 
| 
       141 
174 
     | 
    
         
             
            function getChildOfType(children, type) {
         
     | 
| 
       142 
     | 
    
         
            -
              return  
     | 
| 
      
 175 
     | 
    
         
            +
              return React.Children.toArray(children).find(
         
     | 
| 
       143 
176 
     | 
    
         
             
                (item) => item.type === type
         
     | 
| 
       144 
177 
     | 
    
         
             
              );
         
     | 
| 
       145 
178 
     | 
    
         
             
            }
         
     | 
| 
       146 
179 
     | 
    
         
             
            function getChildrenOfType(children, type) {
         
     | 
| 
       147 
     | 
    
         
            -
              return  
     | 
| 
      
 180 
     | 
    
         
            +
              return React2.Children.toArray(children).filter(
         
     | 
| 
       148 
181 
     | 
    
         
             
                (item) => Array.isArray(type) ? type.some((component) => component === item.type) : item.type === type
         
     | 
| 
       149 
182 
     | 
    
         
             
              );
         
     | 
| 
       150 
183 
     | 
    
         
             
            }
         
     | 
| 
         @@ -159,10 +192,17 @@ var normalize = (variant, toArray) => { 
     | 
|
| 
       159 
192 
     | 
    
         
             
            };
         
     | 
| 
       160 
193 
     | 
    
         
             
            var useResponsiveValue = (value, options) => {
         
     | 
| 
       161 
194 
     | 
    
         
             
              var _a;
         
     | 
| 
       162 
     | 
    
         
            -
              const theme =  
     | 
| 
      
 195 
     | 
    
         
            +
              const theme = (0, import_react.useTheme)();
         
     | 
| 
       163 
196 
     | 
    
         
             
              const normalized = normalize(value, (_a = theme.__breakpoints) == null ? void 0 : _a.toArrayValue);
         
     | 
| 
       164 
     | 
    
         
            -
              return  
     | 
| 
      
 197 
     | 
    
         
            +
              return (0, import_react.useBreakpointValue)(normalized, options);
         
     | 
| 
       165 
198 
     | 
    
         
             
            };
         
     | 
| 
      
 199 
     | 
    
         
            +
             
     | 
| 
      
 200 
     | 
    
         
            +
            // ../saas-ui-modals/dist/index.mjs
         
     | 
| 
      
 201 
     | 
    
         
            +
            var import_forms3 = require("@saas-ui/forms");
         
     | 
| 
      
 202 
     | 
    
         
            +
            var import_jsx_runtime5 = require("react/jsx-runtime");
         
     | 
| 
      
 203 
     | 
    
         
            +
            var React22 = __toESM(require("react"), 1);
         
     | 
| 
      
 204 
     | 
    
         
            +
            var import_jsx_runtime6 = require("react/jsx-runtime");
         
     | 
| 
      
 205 
     | 
    
         
            +
            var import_jsx_runtime7 = require("react/jsx-runtime");
         
     | 
| 
       166 
206 
     | 
    
         
             
            var BaseModal = (props) => {
         
     | 
| 
       167 
207 
     | 
    
         
             
              const {
         
     | 
| 
       168 
208 
     | 
    
         
             
                title,
         
     | 
| 
         @@ -177,21 +217,21 @@ var BaseModal = (props) => { 
     | 
|
| 
       177 
217 
     | 
    
         
             
                footerProps,
         
     | 
| 
       178 
218 
     | 
    
         
             
                ...rest
         
     | 
| 
       179 
219 
     | 
    
         
             
              } = props;
         
     | 
| 
       180 
     | 
    
         
            -
              return /* @__PURE__ */  
     | 
| 
       181 
     | 
    
         
            -
                !hideOverlay && /* @__PURE__ */  
     | 
| 
       182 
     | 
    
         
            -
                /* @__PURE__ */  
     | 
| 
       183 
     | 
    
         
            -
                  title && /* @__PURE__ */  
     | 
| 
       184 
     | 
    
         
            -
                  !hideCloseButton && /* @__PURE__ */  
     | 
| 
       185 
     | 
    
         
            -
                   
     | 
| 
      
 220 
     | 
    
         
            +
              return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(import_react4.Modal, { isOpen, onClose, ...rest, children: [
         
     | 
| 
      
 221 
     | 
    
         
            +
                !hideOverlay && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_react4.ModalOverlay, {}),
         
     | 
| 
      
 222 
     | 
    
         
            +
                /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(import_react4.ModalContent, { ...contentProps, children: [
         
     | 
| 
      
 223 
     | 
    
         
            +
                  title && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_react4.ModalHeader, { ...headerProps, children: title }),
         
     | 
| 
      
 224 
     | 
    
         
            +
                  !hideCloseButton && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_react4.ModalCloseButton, {}),
         
     | 
| 
      
 225 
     | 
    
         
            +
                  (0, import_utils2.runIfFn)(children, {
         
     | 
| 
       186 
226 
     | 
    
         
             
                    isOpen,
         
     | 
| 
       187 
227 
     | 
    
         
             
                    onClose
         
     | 
| 
       188 
228 
     | 
    
         
             
                  }),
         
     | 
| 
       189 
     | 
    
         
            -
                  footer && /* @__PURE__ */  
     | 
| 
      
 229 
     | 
    
         
            +
                  footer && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_react4.ModalFooter, { ...footerProps, children: footer })
         
     | 
| 
       190 
230 
     | 
    
         
             
                ] })
         
     | 
| 
       191 
231 
     | 
    
         
             
              ] });
         
     | 
| 
       192 
232 
     | 
    
         
             
            };
         
     | 
| 
       193 
     | 
    
         
            -
            var [StylesProvider] =  
     | 
| 
       194 
     | 
    
         
            -
             
     | 
| 
      
 233 
     | 
    
         
            +
            var [StylesProvider] = (0, import_react5.createStylesContext)("SuiMenuDialog");
         
     | 
| 
      
 234 
     | 
    
         
            +
            var MenuDialogList = (0, import_react5.forwardRef)(
         
     | 
| 
       195 
235 
     | 
    
         
             
              (props, forwardedRef) => {
         
     | 
| 
       196 
236 
     | 
    
         
             
                const {
         
     | 
| 
       197 
237 
     | 
    
         
             
                  rootProps,
         
     | 
| 
         @@ -203,11 +243,11 @@ react.forwardRef( 
     | 
|
| 
       203 
243 
     | 
    
         
             
                  isCentered: isCenteredProp,
         
     | 
| 
       204 
244 
     | 
    
         
             
                  ...rest
         
     | 
| 
       205 
245 
     | 
    
         
             
                } = props;
         
     | 
| 
       206 
     | 
    
         
            -
                const { isOpen, onClose, menuRef } =  
     | 
| 
       207 
     | 
    
         
            -
                const { ref, ...ownProps } =  
     | 
| 
       208 
     | 
    
         
            -
                const styles =  
     | 
| 
       209 
     | 
    
         
            -
                const isCentered =  
     | 
| 
       210 
     | 
    
         
            -
                return /* @__PURE__ */  
     | 
| 
      
 246 
     | 
    
         
            +
                const { isOpen, onClose, menuRef } = (0, import_react5.useMenuContext)();
         
     | 
| 
      
 247 
     | 
    
         
            +
                const { ref, ...ownProps } = (0, import_react5.useMenuList)(rest, forwardedRef);
         
     | 
| 
      
 248 
     | 
    
         
            +
                const styles = (0, import_react5.useMultiStyleConfig)("Menu", props);
         
     | 
| 
      
 249 
     | 
    
         
            +
                const isCentered = (0, import_react5.useBreakpointValue)({ base: true, md: false });
         
     | 
| 
      
 250 
     | 
    
         
            +
                return /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(
         
     | 
| 
       211 
251 
     | 
    
         
             
                  BaseModal,
         
     | 
| 
       212 
252 
     | 
    
         
             
                  {
         
     | 
| 
       213 
253 
     | 
    
         
             
                    isOpen,
         
     | 
| 
         @@ -219,8 +259,8 @@ react.forwardRef( 
     | 
|
| 
       219 
259 
     | 
    
         
             
                    isCentered: isCenteredProp != null ? isCenteredProp : isCentered,
         
     | 
| 
       220 
260 
     | 
    
         
             
                    contentProps: { mx: 4 },
         
     | 
| 
       221 
261 
     | 
    
         
             
                    children: [
         
     | 
| 
       222 
     | 
    
         
            -
                      /* @__PURE__ */  
     | 
| 
       223 
     | 
    
         
            -
                         
     | 
| 
      
 262 
     | 
    
         
            +
                      /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(StylesProvider, { value: styles, children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
         
     | 
| 
      
 263 
     | 
    
         
            +
                        import_react5.chakra.div,
         
     | 
| 
       224 
264 
     | 
    
         
             
                        {
         
     | 
| 
       225 
265 
     | 
    
         
             
                          ...ownProps,
         
     | 
| 
       226 
266 
     | 
    
         
             
                          ref,
         
     | 
| 
         @@ -241,7 +281,7 @@ react.forwardRef( 
     | 
|
| 
       241 
281 
     | 
    
         
             
                          }
         
     | 
| 
       242 
282 
     | 
    
         
             
                        }
         
     | 
| 
       243 
283 
     | 
    
         
             
                      ) }),
         
     | 
| 
       244 
     | 
    
         
            -
                      footer && /* @__PURE__ */  
     | 
| 
      
 284 
     | 
    
         
            +
                      footer && /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_react5.ModalFooter, { children: footer })
         
     | 
| 
       245 
285 
     | 
    
         
             
                    ]
         
     | 
| 
       246 
286 
     | 
    
         
             
                  }
         
     | 
| 
       247 
287 
     | 
    
         
             
                );
         
     | 
| 
         @@ -289,16 +329,16 @@ var useFormProps = (props) => { 
     | 
|
| 
       289 
329 
     | 
    
         
             
              return { modalProps, formProps, fields };
         
     | 
| 
       290 
330 
     | 
    
         
             
            };
         
     | 
| 
       291 
331 
     | 
    
         
             
            function createFormDialog(Form22) {
         
     | 
| 
       292 
     | 
    
         
            -
              const Dialog =  
     | 
| 
      
 332 
     | 
    
         
            +
              const Dialog = (0, import_react6.forwardRef)((props, ref) => {
         
     | 
| 
       293 
333 
     | 
    
         
             
                const { isOpen, onClose, footer, children, ...rest } = props;
         
     | 
| 
       294 
334 
     | 
    
         
             
                const { modalProps, formProps, fields } = useFormProps(rest);
         
     | 
| 
       295 
     | 
    
         
            -
                return /* @__PURE__ */  
     | 
| 
      
 335 
     | 
    
         
            +
                return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(BaseModal, { ...modalProps, isOpen, onClose, children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(Form22, { ref, ...formProps, children: (form) => {
         
     | 
| 
       296 
336 
     | 
    
         
             
                  var _a, _b;
         
     | 
| 
       297 
     | 
    
         
            -
                  return /* @__PURE__ */  
     | 
| 
       298 
     | 
    
         
            -
                    /* @__PURE__ */  
     | 
| 
       299 
     | 
    
         
            -
                    footer || /* @__PURE__ */  
     | 
| 
       300 
     | 
    
         
            -
                      /* @__PURE__ */  
     | 
| 
       301 
     | 
    
         
            -
                         
     | 
| 
      
 337 
     | 
    
         
            +
                  return /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(import_jsx_runtime5.Fragment, { children: [
         
     | 
| 
      
 338 
     | 
    
         
            +
                    /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_react6.ModalBody, { children: (0, dist_exports.runIfFn)(children, form) || /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_forms3.AutoFields, {}) }),
         
     | 
| 
      
 339 
     | 
    
         
            +
                    footer || /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(import_react6.ModalFooter, { children: [
         
     | 
| 
      
 340 
     | 
    
         
            +
                      /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
         
     | 
| 
      
 341 
     | 
    
         
            +
                        import_react6.Button,
         
     | 
| 
       302 
342 
     | 
    
         
             
                        {
         
     | 
| 
       303 
343 
     | 
    
         
             
                          variant: "ghost",
         
     | 
| 
       304 
344 
     | 
    
         
             
                          mr: 3,
         
     | 
| 
         @@ -307,7 +347,7 @@ function createFormDialog(Form22) { 
     | 
|
| 
       307 
347 
     | 
    
         
             
                          children: (_b = (_a = fields == null ? void 0 : fields.cancel) == null ? void 0 : _a.children) != null ? _b : "Cancel"
         
     | 
| 
       308 
348 
     | 
    
         
             
                        }
         
     | 
| 
       309 
349 
     | 
    
         
             
                      ),
         
     | 
| 
       310 
     | 
    
         
            -
                      /* @__PURE__ */  
     | 
| 
      
 350 
     | 
    
         
            +
                      /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_forms3.SubmitButton, { ...fields == null ? void 0 : fields.submit })
         
     | 
| 
       311 
351 
     | 
    
         
             
                    ] })
         
     | 
| 
       312 
352 
     | 
    
         
             
                  ] });
         
     | 
| 
       313 
353 
     | 
    
         
             
                } }) });
         
     | 
| 
         @@ -316,8 +356,8 @@ function createFormDialog(Form22) { 
     | 
|
| 
       316 
356 
     | 
    
         
             
              Dialog.id = Form22.id;
         
     | 
| 
       317 
357 
     | 
    
         
             
              return Dialog;
         
     | 
| 
       318 
358 
     | 
    
         
             
            }
         
     | 
| 
       319 
     | 
    
         
            -
            createFormDialog( 
     | 
| 
       320 
     | 
    
         
            -
             
     | 
| 
      
 359 
     | 
    
         
            +
            var FormDialog = createFormDialog(import_forms3.Form);
         
     | 
| 
      
 360 
     | 
    
         
            +
            var ModalsContext = React22.createContext(null);
         
     | 
| 
       321 
361 
     | 
    
         | 
| 
       322 
362 
     | 
    
         
             
            // yup/src/create-yup-dialog.ts
         
     | 
| 
       323 
363 
     | 
    
         
             
            function createYupFormDialog(Form4) {
         
     | 
| 
         @@ -328,19 +368,17 @@ function createYupFormDialog(Form4) { 
     | 
|
| 
       328 
368 
     | 
    
         
             
            var Form3 = createYupForm();
         
     | 
| 
       329 
369 
     | 
    
         
             
            var StepForm = createYupStepForm();
         
     | 
| 
       330 
370 
     | 
    
         
             
            var FormDialog2 = createYupFormDialog(Form3);
         
     | 
| 
       331 
     | 
    
         
            -
             
     | 
| 
       332 
     | 
    
         
            -
             
     | 
| 
       333 
     | 
    
         
            -
               
     | 
| 
       334 
     | 
    
         
            -
               
     | 
| 
      
 371 
     | 
    
         
            +
            // Annotate the CommonJS export names for ESM import in node:
         
     | 
| 
      
 372 
     | 
    
         
            +
            0 && (module.exports = {
         
     | 
| 
      
 373 
     | 
    
         
            +
              Form,
         
     | 
| 
      
 374 
     | 
    
         
            +
              FormDialog,
         
     | 
| 
      
 375 
     | 
    
         
            +
              StepForm,
         
     | 
| 
      
 376 
     | 
    
         
            +
              createYupForm,
         
     | 
| 
      
 377 
     | 
    
         
            +
              createYupFormDialog,
         
     | 
| 
      
 378 
     | 
    
         
            +
              createYupStepForm,
         
     | 
| 
      
 379 
     | 
    
         
            +
              getFieldsFromSchema,
         
     | 
| 
      
 380 
     | 
    
         
            +
              getNestedSchema,
         
     | 
| 
      
 381 
     | 
    
         
            +
              yupFieldResolver,
         
     | 
| 
      
 382 
     | 
    
         
            +
              yupResolver
         
     | 
| 
       335 
383 
     | 
    
         
             
            });
         
     | 
| 
       336 
     | 
    
         
            -
            exports.Form = Form3;
         
     | 
| 
       337 
     | 
    
         
            -
            exports.FormDialog = FormDialog2;
         
     | 
| 
       338 
     | 
    
         
            -
            exports.StepForm = StepForm;
         
     | 
| 
       339 
     | 
    
         
            -
            exports.createYupForm = createYupForm;
         
     | 
| 
       340 
     | 
    
         
            -
            exports.createYupFormDialog = createYupFormDialog;
         
     | 
| 
       341 
     | 
    
         
            -
            exports.createYupStepForm = createYupStepForm;
         
     | 
| 
       342 
     | 
    
         
            -
            exports.getFieldsFromSchema = getFieldsFromSchema;
         
     | 
| 
       343 
     | 
    
         
            -
            exports.getNestedSchema = getNestedSchema;
         
     | 
| 
       344 
     | 
    
         
            -
            exports.yupFieldResolver = yupFieldResolver;
         
     | 
| 
       345 
     | 
    
         
            -
            //# sourceMappingURL=out.js.map
         
     | 
| 
       346 
384 
     | 
    
         
             
            //# sourceMappingURL=index.js.map
         
     | 
    
        package/dist/yup/index.js.map
    CHANGED
    
    | 
         @@ -1 +1 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            {"version":3,"sources":["../../yup/src/yup-resolver.ts","../../yup/src/create-yup-form.ts","../../yup/src/create-yup-step-form.ts","../../../saas-ui-modals/src/dialog.tsx","../../../saas-ui-react-utils/src/get-child-of-type.ts","../../../saas-ui-react-utils/src/get-children-of-type.ts","../../../saas-ui-react-utils/src/use-responsive-value.ts","../../../saas-ui-modals/src/drawer.tsx","../../../saas-ui-modals/src/modal.tsx","../../../saas-ui-modals/src/menu.tsx","../../../saas-ui-modals/src/form.tsx","../../yup/src/create-yup-dialog.ts","../../yup/src/index.ts"],"names":["useBreakpointValue","Form","runIfFn","jsx","ModalFooter","Form2","ModalBody","Button","FormDialog"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA,SAAS,aAAa;AACtB,SAAS,mBAAmB;AAa5B,IAAM,UAAU,CAAC,UAAe;AAdhC;AAeE,OAAI,WAAM,KAAK,SAAX,mBAAiB,MAAM;AACzB,WAAO,MAAM,KAAK,KAAK;AAAA,EACzB;AAEA,UAAQ,MAAM,MAAM;AAAA,IAClB,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AAAA,IACL;AACE,aAAO;AAAA,EACX;AACF;AAEA,IAAM,iBAAiB,CAAC,OAAY,SAAiB;AAlCrD;AAmCE,aAAW,QAAQ,MAAM,OAAO;AAC9B,SAAI,UAAK,YAAL,mBAAc,OAAO;AAAO,aAAO,KAAK,QAAQ,OAAO,IAAI;AAAA,EACjE;AACF;AAQO,IAAM,sBAAsB,CAAC,WAA0C;AAC5E,QAAM,SAAS,CAAC;AAEhB,MAAI,eAAoC,CAAC;AACzC,MAAI,OAAO,SAAS,SAAS;AAE3B,mBAAe,OAAO,UAAU;AAAA,EAClC,OAAO;AACL,mBAAe,OAAO;AAAA,EACxB;AAEA,aAAW,QAAQ,cAAc;AAC/B,UAAM,QAAQ,aAAa,IAAI;AAE/B,UAAM,UAAmB,CAAC;AAC1B,QAAI,MAAM,SAAS,SAAS;AAC1B,cAAQ,MAAM,eAAe,OAAO,KAAK;AACzC,cAAQ,MAAM,eAAe,OAAO,KAAK;AAAA,IAC3C;AAEA,WAAO,KAAK;AAAA,MACV;AAAA,MACA,OAAO,MAAM,KAAK,SAAS;AAAA,MAC3B,MAAM,QAAQ,KAAK;AAAA,MACnB,GAAG;AAAA,IACL,CAAC;AAAA,EACH;AACA,SAAO;AACT;AAEO,IAAM,kBAAkB,CAAC,QAAyB,SAAiB;AACxE,SAAO,MAAM,QAAQ,IAAI;AAC3B;AAEO,IAAM,mBAAqC,CAAC,WAA4B;AAC7E,SAAO;AAAA,IACL,YAAY;AACV,aAAO,oBAAoB,MAAM;AAAA,IACnC;AAAA,IACA,gBAAgB,MAAc;AAC5B,aAAO,oBAAoB,gBAAgB,QAAQ,IAAI,CAAC;AAAA,IAC1D;AAAA,EACF;AACF;;;ACzFA;AAAA,EACE;AAAA,OAKK;AAoCA,IAAM,gBAAgB,CAC3B,YACG;AACH,QAAM,UAAU,WAAW;AAAA,IACzB,UAAU,CAAC,WACT,YAAY,QAAQ,mCAAS,eAAe,mCAAS,eAAe;AAAA,IACtE,eAAe;AAAA,IACf,GAAG;AAAA,EACL,CAAC;AAED,UAAQ,cAAc;AACtB,UAAQ,KAAK;AAEb,SAAO;AACT;;;ACxDA;AAAA,EAEE;AAAA,OAKK;AAgDA,IAAM,oBAAoB,CAC/B,YACG;AACH,QAAM,cAAc,eAA8B;AAAA,IAChD,UAAU,CAAC,WACT,YAAY,QAAQ,mCAAS,eAAe,mCAAS,eAAe;AAAA,IACtE,eAAe;AAAA,IACf,GAAG;AAAA,EACL,CAAC;AAED,cAAY,cAAc;AAC1B,cAAY,KAAK;AAEjB,SAAO;AACT;;;;ACrEA,SAAA,qBAAuB,YAAA,gBAAA,aAAA,qBAAA,sBAAAA,qBAAA,QAAA,aAAA,aAAA,oBAAA,oBAAA,mBAAA,iBAAA,mBAAA,aAAA,QAAA,UAAA,UAAA,eAAA,eAAA,cAAA,mBAAA,cAAA,YAAA,SAAA,SAAA,cAAA,cAAA,aAAA,kBAAA,WAAA,YAAA;AAEvB,SAAA,MAAA,KAAA,gBAAA;AAAA,SACE,eAAA;;;;;;;;;ACIK;;AAPP,SAAA,UAAY,0BAAW;AAOhB,4BAAS;AAKY,SAC1B,eAAA,UAAA,MAAA;AACF,SAAA,eAAA,QAAA,QAAA,EAAA;;;ACdA;AAOO,SAAS,kBACd,UACA,MACA;AACA,SAAc,eAAA,QAAS,QAAQ,EAAQ;IACrC,CAAC,SACC,MAAM,QAAQ,IAAI,IACd,KAAK,KAAK,CAAC,cAAc,cAAc,KAAK,IAAI,IAChD,KAAK,SAAS;EACtB;AACF;;;ACjBA,WAAA;WAGE,OAAA,YAAA;AACA,WAAA,WAAA,OAAA,SAAA,QAAA,OAAA;AAAA,MAAA,WACK;AAED,WAAA,CAAA,OAAa;AACjB,SAAI,CAAA;AAAwB;AAAO,IAAA,qBACnB,CAAA,OAAY,YAAA;AAAU,MAAA;AACtC,QAAI,QAAA,SAAW;AAAM,QAAA,aAAe,UAAA,QAAA,KAAA,MAAA,kBAAA,OAAA,SAAA,GAAA,YAAA;AACpC,SAAO,mBAAC,YAAA,OAAA;AACV;;;AHRE,SACA,YAAA,cAAA,QAAAC,aAAA;AImEoC,IAChC,YAAA,CAAA,UAAC;AACE,QAAA;IAA+C;IACR;IACrB;IACjB;IACA;IACD;IACiD;IACpD;IAGN;IASa;IACX,GAAA;EACA,IAAA;AAGyB,SACjB,qBAAA,SAAA,EAAA,QAAA,SAAA,GAAA,MAAA,UAAA;IACA,CAAA,eAAA,oBAAA,cAAA,CAAA,CAAA;IAGN,qBAAA,cAAA,EAAA,GAAA,cAAA,UAAA;MAEJ,SAAA,oBAAA,aAAA,EAAA,GAAA,aAAA,UAAA,MAAA,CAAA;;;QCvGA;QACE;MACA,CAAA;MACA,UAAA,oBAAA,aAAA,EAAA,GAAA,aAAA,UAAA,OAAA,CAAA;IACA,EAAA,CAAA;EACA,EAAA,CAAA;AAAA;AAmDE,IACA,CAAA,cAAA,IAAA,oBAAA,eAAA;AAemD,IAAA,iBAC7C;EAAqC,CAAA,OACtCC,iBAAkB;AAAA,UACjB;MAAA;MAEF;MACC;MAAgD;MAErD;MAEJ,eAAA;MAEa,YAAmC;MAC9C,GAAM;IACN,IAAA;AAIQ,UAAA,EAAA,QAAA,SAAA,QAAA,IAAA,eAAA;AACA,UAAA,EAAA,KAAA,GAAA,SAAA,IAAA,YAAA,MAAA,YAAA;AACD,UAEL,SAAA,oBAAA,QAAA,KAAA;AAEJ,UAAA,aAAAF,oBAAA,EAAA,MAAA,MAAA,IAAA,MAAA,CAAA;;;MChGA;QACE;QACA;QACA,iBAAA,mBAAA;QACA;QACA;QACA;QACA,YAAA,kBAAA,OAAA,iBAAA;QACA,cAAA,EAAA,IAAA,EAAA;QAEA,UAAA;UACK,oBAAA,gBAAA,EAAA,OAAA,QAAA,UAAA;YAiBH,OAAAG;YAbG;cASM,GAAwC;cAC3C;cAGN,OAAA;gBAAC,SAAA;gBAAA,WAAA;;gBAEU,WAAM;;gBAIb,GAAA,OAAA;gBACF,WAAA;gBACI,QAAA;gBAAA,OAAA;;kBAGV,GAAA,OAAA,KAAA,SAAA,CAAA;kBASa,WAAiB;gBACpB;cACA;YACJ;UACA,EAAA,CAAA;UACA,UAAA,oBAAA,aAAA,EAAA,UAAA,OAAA,CAAA;QACA;MACA;IAAA;EACe;AACH;AACT,IACL,eAAI,CAAA,UAAA;AAEJ,QAAA;IAEA;IAEA;IAEA;IAEA;IACE;IAAC;IAAA;IACC;IACA;IACoC;IACpC;IACA,mBACA;IAAA;IAC8B;IACR;IAGtB,aAAA;IACE;IAAQ,GAAA;EAAP,IAAA;AACK,QAAA,YACJ;IAAA;IACO;IACI;IACE;IAAA;IACA;IAAA;IACD;IACC;IACH;IACD;IAAA;IAEqB;IACf;IACb;IACF;EAAA;AAEJ,SAAA,EACC,YAAU,WAAA,OAACC;AAAoB;AAAA,SAAA,iBAAAC,QAAA;AAAA,QAClC,SAAA,WAAA,CAAA,OAAA,QAAA;AAEJ,UAAA,EAAA,QAAA,SAAA,QAAA,UAAA,GAAA,KAAA,IAAA;AACF,UAAA,EAAA,YAAA,WAAA,OAAA,IAAA,aAAA,IAAA;;;ACxGA,aAAA,qBAAA,UAAA,EAAA,UAAA;QACEC,oBAAAA,WAAAA,EAAAA,cAAAA,aAAAA,SAAAA,UAAAA,IAAAA,KAAAA,oBAAAA,YAAAA,CAAAA,CAAAA,EAAAA,CAAAA;QACA,UAAAF,qBAAAA,aAAAA,EAAAA,UAAAA;UACAG;YACA;YAEK;cACE,SAAAL;cAET,IAAA;cACE,SAAA;cACA,GAAA,UAAA,OAAA,SAAA,OAAA;cACA,WAAA,MAAA,KAAA,UAAA,OAAA,SAAA,OAAA,WAAA,OAAA,SAAA,GAAA,aAAA,OAAA,KAAA;YAOK;UAsJK;UArGU,oBAA2B,cAAA,EAAA,GAAA,UAAA,OAAA,SAAA,OAAA,OAAA,CAAA;QACzC,EAAA,CAAA;MACJ,EAAA,CAAA;IACA,EAAA,CAAA,EAAA,CAAA;EAAA,CAAA;AACA,SACA,cAAA,GAAAG,OAAA,eAAAA,OAAA;AAAA,SACA,KAAAA,OAAA;AAAA,SACA;AAAA;AACA,IACA,aAAA,iBAAAJ,KAAA;AAUG,IACL,gBAAI,qBAAA,IAAA;;;ACnFC,SAAS,oBAIdA,OAA0D;AAC1D,SAAO,iBAAiBA,KAAI;AAK9B;;;ACPO,IAAMA,QAAO,cAAc;AAE3B,IAAM,WAAW,kBAAkB;AAEnC,IAAMO,cAAa,oBAAoBP,KAAI","sourcesContent":["import { reach } from 'yup'\nimport { yupResolver } from '@hookform/resolvers/yup'\n\nimport { FieldProps, GetFieldResolver } from '@saas-ui/forms'\nimport { AnyObjectSchema } from './types'\n\nexport { yupResolver }\n\nexport type Options = {\n  min?: number\n  max?: number\n}\n\n// @TODO get proper typings for the schema fields\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\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 = (schema: AnyObjectSchema): 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: AnyObjectSchema, path: string) => {\n  return reach(schema, path) as AnyObjectSchema\n}\n\nexport const yupFieldResolver: GetFieldResolver = (schema: AnyObjectSchema) => {\n  return {\n    getFields() {\n      return getFieldsFromSchema(schema)\n    },\n    getNestedFields(name: string) {\n      return getFieldsFromSchema(getNestedSchema(schema, name))\n    },\n  }\n}\n","import {\n  createForm,\n  CreateFormProps,\n  FormProps,\n  WithFields,\n  FieldValues,\n} from '@saas-ui/forms'\nimport { yupFieldResolver, yupResolver } from './yup-resolver'\nimport { InferType } from 'yup'\nimport React from 'react'\nimport { AnyObjectSchema } from './types'\n\ntype ResolverArgs = Parameters<typeof yupResolver>\n\nexport interface CreateYupFormProps<FieldDefs>\n  extends CreateFormProps<FieldDefs> {\n  schemaOptions?: ResolverArgs[1]\n  resolverOptions?: ResolverArgs[2]\n}\n\nexport type YupFormType<\n  FieldDefs,\n  ExtraProps = object,\n  ExtraOverrides = object,\n  Type extends 'yup' = 'yup'\n> = (<\n  TSchema extends AnyObjectSchema = AnyObjectSchema,\n  TFieldValues extends InferType<TSchema> = InferType<TSchema>, // placeholder\n  TContext extends object = object\n>(\n  props: WithFields<\n    FormProps<TFieldValues, TContext, TSchema>,\n    FieldDefs,\n    ExtraOverrides\n  > & {\n    ref?: React.ForwardedRef<HTMLFormElement>\n  } & ExtraProps\n) => React.ReactElement) & {\n  displayName?: string\n  id?: 'YupForm'\n}\n\nexport const createYupForm = <FieldDefs>(\n  options?: CreateYupFormProps<FieldDefs>\n) => {\n  const YupForm = createForm({\n    resolver: (schema: any) =>\n      yupResolver(schema, options?.schemaOptions, options?.resolverOptions),\n    fieldResolver: yupFieldResolver,\n    ...options,\n  })\n\n  YupForm.displayName = 'YupForm'\n  YupForm.id = 'YupForm'\n\n  return YupForm as YupFormType<FieldDefs>\n}\n","import {\n  CreateStepFormProps,\n  createStepForm,\n  StepsOptions,\n  UseStepFormProps,\n  Form,\n  WithStepFields,\n} from '@saas-ui/forms'\nimport { yupFieldResolver, yupResolver } from './yup-resolver'\nimport { InferType, object, string } from 'yup'\nimport React from 'react'\nimport { AnyObjectSchema } from './types'\n\ntype ResolverArgs = Parameters<typeof yupResolver>\n\nexport interface CreateYupFormProps<FieldDefs>\n  extends CreateStepFormProps<FieldDefs> {\n  schemaOptions?: ResolverArgs[1]\n  resolverOptions?: ResolverArgs[2]\n}\n\ntype InferStepType<T extends Required<StepsOptions<AnyObjectSchema>>> =\n  T extends [infer Step, ...infer Rest]\n    ? Step extends { schema: AnyObjectSchema }\n      ? InferType<Step['schema']> &\n          (Rest extends Required<StepsOptions<AnyObjectSchema>>\n            ? InferStepType<Rest>\n            : object)\n      : object\n    : object\n\ntype YupStepFormType<\n  FieldDefs,\n  ExtraProps = object,\n  ExtraOverrides = object\n> = (<\n  TSteps extends Required<StepsOptions<AnyObjectSchema>> = Required<\n    StepsOptions<AnyObjectSchema>\n  >,\n  TFieldValues extends InferStepType<TSteps> = InferStepType<TSteps>,\n  TContext extends object = object\n>(\n  props: WithStepFields<\n    UseStepFormProps<TSteps, TFieldValues, TContext>,\n    FieldDefs,\n    ExtraOverrides\n  > & {\n    steps: TSteps\n    ref?: React.ForwardedRef<HTMLFormElement>\n  } & ExtraProps\n) => React.ReactElement) & {\n  displayName?: string\n  id?: string\n}\n\nexport const createYupStepForm = <FieldDefs>(\n  options?: CreateYupFormProps<FieldDefs>\n) => {\n  const YupStepForm = createStepForm<any, any, any>({\n    resolver: (schema: any) =>\n      yupResolver(schema, options?.schemaOptions, options?.resolverOptions),\n    fieldResolver: yupFieldResolver,\n    ...options,\n  })\n\n  YupStepForm.displayName = 'YupStepForm'\n  YupStepForm.id = 'YupStepForm'\n\n  return YupStepForm as YupStepFormType<FieldDefs>\n}\n","import * as React from 'react'\n\nimport {\n  AlertDialog,\n  AlertDialogBody,\n  AlertDialogFooter,\n  AlertDialogHeader,\n  AlertDialogContent,\n  AlertDialogOverlay,\n  AlertDialogProps,\n  ButtonGroup,\n  ButtonGroupProps,\n  Button,\n  ButtonProps,\n} from '@chakra-ui/react'\n\nexport interface ConfirmDialogProps\n  extends Omit<AlertDialogProps, 'leastDestructiveRef'> {\n  /**\n   * The dialog title\n   */\n  title?: React.ReactNode\n  /**\n   * The cancel button label\n   */\n  cancelLabel?: React.ReactNode\n  /**\n   * The confirm button label\n   */\n  confirmLabel?: React.ReactNode\n  /**\n   * The cancel button props\n   */\n  cancelProps?: ButtonProps\n  /**\n   * The confirm button props\n   */\n  confirmProps?: ButtonProps\n  /**\n   * The button group props\n   */\n  buttonGroupProps?: ButtonGroupProps\n  /**\n   * Close the dialog on cancel\n   * @default true\n   */\n  closeOnCancel?: boolean\n  /**\n   * Close the dialog on confirm\n   * @default true\n   */\n  closeOnConfirm?: boolean\n  /**\n   * Defines which button gets initial focus\n   * https://www.w3.org/TR/wai-aria-practices/#alertdialog\n   */\n  leastDestructiveFocus?: 'cancel' | 'confirm'\n  /**\n   * Function that's called when cancel is clicked\n   */\n  onCancel?: () => void\n  /**\n   * Function that's called when confirm is clicked.\n   */\n  onConfirm?: () => Promise<void> | void\n}\n\nexport const ConfirmDialog: React.FC<ConfirmDialogProps> = (props) => {\n  const {\n    title,\n    cancelLabel = 'Cancel',\n    confirmLabel = 'Confirm',\n    cancelProps,\n    confirmProps,\n    buttonGroupProps,\n    isOpen,\n    closeOnCancel = true,\n    closeOnConfirm = true,\n    leastDestructiveFocus = 'cancel',\n    onClose,\n    onCancel,\n    onConfirm,\n    children,\n    ...rest\n  } = props\n\n  const cancelRef = React.useRef(null)\n  const confirmRef = React.useRef(null)\n  const [isLoading, setIsLoading] = React.useState(false)\n\n  const handleConfirm = async () => {\n    try {\n      const result = onConfirm?.()\n      if (typeof result?.then === 'function') {\n        setIsLoading(true)\n        await result\n      }\n\n      closeOnConfirm && onClose()\n      /* eslint-disable no-useless-catch */\n    } catch (e: any) {\n      throw e\n    } finally {\n      setIsLoading(false)\n    }\n    /* eslint-enable */\n  }\n  console.log(isLoading)\n  return (\n    <AlertDialog\n      isOpen={isOpen}\n      onClose={onClose}\n      {...rest}\n      leastDestructiveRef={\n        leastDestructiveFocus === 'cancel' ? cancelRef : confirmRef\n      }\n    >\n      <AlertDialogOverlay>\n        <AlertDialogContent>\n          <AlertDialogHeader>{title}</AlertDialogHeader>\n\n          <AlertDialogBody>{children}</AlertDialogBody>\n\n          <AlertDialogFooter>\n            <ButtonGroup {...buttonGroupProps}>\n              <Button\n                ref={cancelRef}\n                {...cancelProps}\n                onClick={() => {\n                  onCancel?.()\n\n                  closeOnCancel && onClose()\n                }}\n              >\n                {cancelProps?.children || cancelLabel}\n              </Button>\n              <Button\n                ref={confirmRef}\n                isLoading={isLoading}\n                {...confirmProps}\n                onClick={handleConfirm}\n              >\n                {confirmProps?.children || confirmLabel}\n              </Button>\n            </ButtonGroup>\n          </AlertDialogFooter>\n        </AlertDialogContent>\n      </AlertDialogOverlay>\n    </AlertDialog>\n  )\n}\n","import * as React from 'react'\n\n/**\n * Get the first child of a specific type.\n * @param children The children\n * @param type The component type\n */\nexport function getChildOfType(\n  children: React.ReactNode,\n  type: React.JSXElementConstructor<any>\n) {\n  return (React.Children.toArray(children) as React.ReactElement[]).find(\n    (item) => item.type === type\n  )\n}\n","import * as React from 'react'\n\n/**\n * Get all children of a specific type.\n * @param children The children\n * @param type The component type\n */\nexport function getChildrenOfType(\n  children: React.ReactNode,\n  type: React.JSXElementConstructor<any> | React.JSXElementConstructor<any>[]\n) {\n  return (React.Children.toArray(children) as React.ReactElement[]).filter(\n    (item) =>\n      Array.isArray(type)\n        ? type.some((component) => component === item.type)\n        : item.type === type\n  )\n}\n","import {\n  ResponsiveValue,\n  UseBreakpointOptions,\n  useTheme,\n  useBreakpointValue,\n} from '@chakra-ui/react'\n\nconst normalize = (variant: any, toArray?: (value: any) => any) => {\n  if (Array.isArray(variant)) return variant\n  else if (typeof variant === 'object') return toArray?.(variant)\n  if (variant != null) return [variant]\n  return []\n}\n\nexport const useResponsiveValue = (\n  value: ResponsiveValue<any>,\n  options?: UseBreakpointOptions\n) => {\n  const theme = useTheme()\n  const normalized = normalize(value, theme.__breakpoints?.toArrayValue)\n  return useBreakpointValue(normalized, options)\n}\n","import * as React from 'react'\n\nimport {\n  Drawer as ChakraDrawer,\n  DrawerOverlay,\n  DrawerContent,\n  DrawerHeader,\n  DrawerFooter,\n  DrawerBody,\n  DrawerCloseButton,\n  DrawerProps as ChakraDrawerProps,\n  ModalHeaderProps,\n  ModalContentProps,\n  ModalFooterProps,\n} from '@chakra-ui/react'\nimport { MaybeRenderProp } from '@chakra-ui/react-utils'\nimport { runIfFn } from '@chakra-ui/utils'\n\nexport interface BaseDrawerProps extends Omit<ChakraDrawerProps, 'children'> {\n  /**\n   * The drawer title\n   */\n  title: React.ReactNode\n  /**\n   * The modal children\n   */\n  children: MaybeRenderProp<{\n    isOpen: boolean\n    onClose: () => void\n  }>\n  /**\n   * The modal footer\n   */\n  footer?: React.ReactNode\n  /**\n   * Hide the close button\n   */\n  hideCloseButton?: boolean\n  /**\n   * Hide the overflow\n   */\n  hideOverlay?: boolean\n  /**\n   * Props for the modal header\n   */\n  headerProps?: ModalHeaderProps\n  /**\n   * Props for the modal content\n   */\n  contentProps?: ModalContentProps\n  /**\n   * Props for the modal footer\n   */\n  footerProps?: ModalFooterProps\n}\n\nexport const BaseDrawer: React.FC<BaseDrawerProps> = (props) => {\n  const {\n    title,\n    children,\n    footer,\n    isOpen,\n    onClose,\n    hideCloseButton,\n    hideOverlay,\n    headerProps,\n    contentProps,\n    footerProps,\n    ...rest\n  } = props\n  return (\n    <ChakraDrawer isOpen={isOpen} onClose={onClose} {...rest}>\n      {!hideOverlay && <DrawerOverlay />}\n      <DrawerContent {...contentProps}>\n        {title && <DrawerHeader {...headerProps}>{title}</DrawerHeader>}\n        {!hideCloseButton && <DrawerCloseButton />}\n        {runIfFn(children, {\n          isOpen,\n          onClose,\n        })}\n        {footer && <DrawerFooter {...footerProps}>{footer}</DrawerFooter>}\n      </DrawerContent>\n    </ChakraDrawer>\n  )\n}\n\nexport interface DrawerProps extends BaseDrawerProps {\n  /**\n   * Drawer footer content, wrapped with `DrawerFooter`\n   */\n  footer?: React.ReactNode\n}\n\nexport const Drawer: React.FC<DrawerProps> = (props) => {\n  const { children, isOpen, onClose, ...rest } = props\n  return (\n    <BaseDrawer isOpen={isOpen} onClose={onClose} {...rest}>\n      <DrawerBody>\n        {runIfFn(children, {\n          isOpen,\n          onClose,\n        })}\n      </DrawerBody>\n    </BaseDrawer>\n  )\n}\n","import * as React from 'react'\n\nimport {\n  Modal as ChakraModal,\n  ModalOverlay,\n  ModalContent,\n  ModalHeader,\n  ModalFooter,\n  ModalBody,\n  ModalCloseButton,\n  ModalProps as ChakraModalProps,\n  ModalContentProps,\n  ModalHeaderProps,\n  ModalFooterProps,\n} from '@chakra-ui/react'\nimport { MaybeRenderProp } from '@chakra-ui/react-utils'\nimport { runIfFn } from '@chakra-ui/utils'\n\nexport interface BaseModalProps extends Omit<ChakraModalProps, 'children'> {\n  /**\n   * The modal title\n   */\n  title?: React.ReactNode\n  /**\n   * The modal children\n   */\n  children: MaybeRenderProp<{\n    isOpen: boolean\n    onClose: () => void\n  }>\n  /**\n   * The modal footer\n   */\n  footer?: React.ReactNode\n  /**\n   * Hide the close button\n   */\n  hideCloseButton?: boolean\n  /**\n   * Hide the overlay\n   */\n  hideOverlay?: boolean\n  /**\n   * Props for the modal header\n   */\n  headerProps?: ModalHeaderProps\n  /**\n   * Props for the modal content\n   */\n  contentProps?: ModalContentProps\n  /**\n   * Props for the modal footer\n   */\n  footerProps?: ModalFooterProps\n}\n\nexport const BaseModal: React.FC<BaseModalProps> = (props) => {\n  const {\n    title,\n    footer,\n    children,\n    isOpen,\n    onClose,\n    hideCloseButton,\n    hideOverlay,\n    headerProps,\n    contentProps,\n    footerProps,\n    ...rest\n  } = props\n  return (\n    <ChakraModal isOpen={isOpen} onClose={onClose} {...rest}>\n      {!hideOverlay && <ModalOverlay />}\n      <ModalContent {...contentProps}>\n        {title && <ModalHeader {...headerProps}>{title}</ModalHeader>}\n        {!hideCloseButton && <ModalCloseButton />}\n        {runIfFn(children, {\n          isOpen,\n          onClose,\n        })}\n        {footer && <ModalFooter {...footerProps}>{footer}</ModalFooter>}\n      </ModalContent>\n    </ChakraModal>\n  )\n}\n\nexport const Modal: React.FC<BaseModalProps> = (props) => {\n  const { children, isOpen, onClose, ...rest } = props\n  return (\n    <BaseModal {...rest} isOpen={isOpen} onClose={onClose}>\n      <ModalBody>\n        {runIfFn(children, {\n          isOpen,\n          onClose,\n        })}\n      </ModalBody>\n    </BaseModal>\n  )\n}\n","import * as React from 'react'\n\nimport {\n  ModalFooter,\n  chakra,\n  forwardRef,\n  useMenuContext,\n  useMenuList,\n  createStylesContext,\n  useMultiStyleConfig,\n  Menu,\n  MenuListProps,\n  useBreakpointValue,\n} from '@chakra-ui/react'\n\nimport { BaseModal, BaseModalProps } from './modal'\n\nconst [StylesProvider] = createStylesContext('SuiMenuDialog')\n\nexport interface MenuDialogProps extends BaseModalProps {\n  /**\n   * The modal footer, wrapped with `ModalFooter`\n   */\n  footer?: React.ReactNode\n}\n\nexport const MenuDialog: React.FC<MenuDialogProps> = (props) => {\n  const { onClose, onCloseComplete, ...rest } = props\n\n  return (\n    <Menu\n      variant=\"dialog\"\n      onClose={() => {\n        onClose?.()\n        // Not supported in Menu, so we call it here instead\n        // @todo Refactor this in v2?\n        onCloseComplete?.()\n      }}\n      {...rest}\n    />\n  )\n}\n\nexport interface MenuDialogListProps\n  extends Omit<\n      BaseModalProps,\n      'isOpen' | 'onClose' | 'children' | 'scrollBehavior'\n    >,\n    Omit<MenuListProps, 'title'> {}\n\nexport const MenuDialogList = forwardRef<MenuDialogListProps, 'div'>(\n  (props, forwardedRef) => {\n    const {\n      rootProps,\n      title,\n      footer,\n      initialFocusRef,\n      hideCloseButton,\n      motionPreset = 'slideInBottom',\n      isCentered: isCenteredProp,\n      ...rest\n    } = props\n\n    const { isOpen, onClose, menuRef } = useMenuContext()\n\n    const { ref, ...ownProps } = useMenuList(rest, forwardedRef)\n\n    const styles = useMultiStyleConfig('Menu', props)\n\n    const isCentered = useBreakpointValue({ base: true, md: false })\n\n    return (\n      <BaseModal\n        isOpen={isOpen}\n        onClose={onClose}\n        initialFocusRef={initialFocusRef || menuRef}\n        title={title}\n        hideCloseButton={hideCloseButton}\n        motionPreset={motionPreset}\n        isCentered={isCenteredProp ?? isCentered}\n        contentProps={{ mx: 4 }}\n      >\n        {/* We forward the styles again, otherwise the modal styles will be picked up */}\n        <StylesProvider value={styles}>\n          <chakra.div\n            {...ownProps}\n            ref={ref as React.Ref<HTMLDivElement>}\n            __css={{\n              outline: 0,\n              maxHeight: '80vh', // can override this in theme\n              overflowY: 'auto', // can override this in theme\n              ...styles.list,\n              boxShadow: 'none',\n              border: 0,\n              _dark: {\n                /* @ts-expect-error */\n                ...(styles.list._dark || {}),\n                boxShadow: 'none',\n              },\n            }}\n          />\n        </StylesProvider>\n        {footer && <ModalFooter>{footer}</ModalFooter>}\n      </BaseModal>\n    )\n  }\n)\n","import * as React from 'react'\n\nimport {\n  ModalBody,\n  ModalFooter,\n  Button,\n  forwardRef,\n  ButtonProps,\n} from '@chakra-ui/react'\nimport { runIfFn } from '@saas-ui/react-utils'\n\nimport {\n  Form,\n  AutoFields,\n  SubmitButton,\n  FormProps,\n  FieldValues,\n  FieldResolver,\n  FieldProps,\n  FormType,\n  DefaultFieldOverrides,\n} from '@saas-ui/forms'\n\nimport { BaseModal, BaseModalProps } from './modal'\n\nexport type FormDialogFieldOverrides = DefaultFieldOverrides & {\n  cancel?: ButtonProps\n}\n\nexport interface FormDialogProps<\n  TSchema = any,\n  TFieldValues extends FieldValues = FieldValues,\n  TContext extends object = object,\n  TFieldTypes = FieldProps<TFieldValues>\n> extends Omit<BaseModalProps, 'children'>,\n    Pick<\n      FormProps<TSchema, TFieldValues, TContext, TFieldTypes>,\n      | 'schema'\n      | 'defaultValues'\n      | 'values'\n      | 'context'\n      | 'onChange'\n      | 'onSubmit'\n      | 'onError'\n      | 'resolver'\n      | 'mode'\n      | 'reValidateMode'\n      | 'shouldFocusError'\n      | 'shouldUnregister'\n      | 'shouldUseNativeValidation'\n      | 'criteriaMode'\n      | 'delayError'\n      | 'resetOptions'\n      | 'children'\n    > {\n  /**\n   * The modal footer, will be wrapped with `ModalFooter`.\n   * Defaults to a cancel and submit button.\n   */\n  footer?: React.ReactNode\n  /**\n   * A schema field resolver used to auto generate form fields.\n   */\n  fieldResolver?: FieldResolver\n  /**\n   * Field overrides\n   */\n  fields?: FormDialogFieldOverrides\n}\n\nconst useFormProps = (props: FormDialogProps) => {\n  const {\n    schema,\n    resolver,\n    fieldResolver,\n    defaultValues,\n    values,\n    context,\n    onChange,\n    onSubmit,\n    onError,\n    mode,\n    reValidateMode,\n    shouldFocusError = true,\n    shouldUnregister,\n    shouldUseNativeValidation,\n    criteriaMode,\n    delayError = 100,\n    fields,\n    ...modalProps\n  } = props\n\n  const formProps = {\n    schema,\n    resolver,\n    defaultValues,\n    values,\n    context,\n    onChange,\n    onSubmit,\n    onError,\n    mode,\n    reValidateMode,\n    shouldFocusError,\n    shouldUnregister,\n    shouldUseNativeValidation,\n    criteriaMode,\n    delayError,\n    fields,\n  }\n\n  return { modalProps, formProps, fields }\n}\n\n/**\n * @todo make this dynamic to support other schema types\n */\ntype MergeDialogProps<T> = T extends FormType<\n  infer FieldDefs,\n  infer ExtraProps,\n  infer ExtraOverrides\n>\n  ? FormType<\n      FieldDefs,\n      ExtraProps & Omit<BaseModalProps, 'children'>,\n      ExtraOverrides & FormDialogFieldOverrides\n    >\n  : never\n\ntype IsSchemaType<T, Schema, FieldDefs> = T extends DefaultFormType<FieldDefs>\n  ? T extends (\n      props: FormProps<infer TSchema, infer TFieldValues, infer TContext>\n    ) => any\n    ? Schema extends TSchema\n      ? true\n      : false\n    : false\n  : false\n\nexport type DefaultFormType<\n  FieldDefs = any,\n  ExtraProps = object,\n  ExtraOverrides = FormDialogFieldOverrides\n> = (<\n  TSchema = unknown,\n  TFieldValues extends Record<string, any> = any,\n  TContext extends object = object\n>(\n  props: any\n) => React.ReactElement) & {\n  displayName?: string\n  id?: string\n}\n\nexport function createFormDialog<\n  FieldDefs = any,\n  ExtraProps = object,\n  ExtraOverrides = FormDialogFieldOverrides,\n  TFormType extends DefaultFormType<\n    FieldDefs,\n    ExtraProps,\n    ExtraOverrides\n  > = DefaultFormType<FieldDefs, ExtraProps, ExtraOverrides>\n>(Form: TFormType) {\n  const Dialog = forwardRef<any, 'div'>((props, ref) => {\n    const { isOpen, onClose, footer, children, ...rest } = props\n    const { modalProps, formProps, fields } = useFormProps(rest)\n    return (\n      <BaseModal {...modalProps} isOpen={isOpen} onClose={onClose}>\n        <Form ref={ref} {...(formProps as any)}>\n          {(form: any) => (\n            <>\n              <ModalBody>{runIfFn(children, form) || <AutoFields />}</ModalBody>\n\n              {footer || (\n                <ModalFooter>\n                  <Button\n                    variant=\"ghost\"\n                    mr={3}\n                    onClick={onClose}\n                    {...fields?.cancel}\n                  >\n                    {fields?.cancel?.children ?? 'Cancel'}\n                  </Button>\n                  <SubmitButton {...fields?.submit} />\n                </ModalFooter>\n              )}\n            </>\n          )}\n        </Form>\n      </BaseModal>\n    )\n  }) as MergeDialogProps<TFormType>\n\n  Dialog.displayName = `${Form.displayName || Form.name}Dialog`\n  Dialog.id = Form.id\n\n  return Dialog\n}\n\n/**\n * Can be used to quickly request information from people without leaving the current page.\n *\n * @see Docs https://saas-ui.dev/docs/components/overlay/form-dialog\n */\nexport const FormDialog = createFormDialog(Form)\n","import {\n  BaseModalProps,\n  FormDialogFieldOverrides,\n  createFormDialog,\n} from '@saas-ui/modals'\nimport { YupFormType } from './create-yup-form'\n\nexport function createYupFormDialog<\n  FieldDefs = any,\n  ExtraProps = object,\n  ExtraOverrides = object\n>(Form: YupFormType<FieldDefs, ExtraProps, ExtraOverrides>) {\n  return createFormDialog(Form) as unknown as YupFormType<\n    FieldDefs,\n    ExtraProps & Omit<BaseModalProps, 'children'>,\n    ExtraOverrides & FormDialogFieldOverrides\n  >\n}\n","export * from './yup-resolver'\nexport { createYupForm, type YupFormType } from './create-yup-form'\nexport { createYupStepForm } from './create-yup-step-form'\nexport { createYupFormDialog } from './create-yup-dialog'\nexport type { AnyObjectSchema } from './types'\n\nimport { createYupForm } from './create-yup-form'\nimport { createYupStepForm } from './create-yup-step-form'\nimport { createYupFormDialog } from './create-yup-dialog'\n\nexport const Form = createYupForm()\n\nexport const StepForm = createYupStepForm()\n\nexport const FormDialog = createYupFormDialog(Form)\n"]}
         
     | 
| 
      
 1 
     | 
    
         
            +
            {"version":3,"sources":["../../yup/src/index.ts","../../yup/src/yup-resolver.ts","../../yup/src/create-yup-form.ts","../../yup/src/create-yup-step-form.ts","../../../saas-ui-modals/src/dialog.tsx","../../../saas-ui-modals/src/drawer.tsx","../../../saas-ui-modals/src/modal.tsx","../../../saas-ui-modals/src/menu.tsx","../../../saas-ui-modals/src/form.tsx","../../../saas-ui-modals/src/provider.tsx","../../../saas-ui-modals/src/default-modals.ts","../../../saas-ui-modals/src/create-modals.tsx","../../../saas-ui-react-utils/src/get-child-of-type.ts","../../../saas-ui-react-utils/src/get-children-of-type.ts","../../../saas-ui-react-utils/src/use-responsive-value.ts","../../../saas-ui-react-utils/src/index.ts","../../yup/src/create-yup-dialog.ts"],"sourcesContent":["export * from './yup-resolver'\nexport { createYupForm, type YupFormType } from './create-yup-form'\nexport { createYupStepForm } from './create-yup-step-form'\nexport { createYupFormDialog } from './create-yup-dialog'\nexport type { AnyObjectSchema } from './types'\n\nimport { createYupForm } from './create-yup-form'\nimport { createYupStepForm } from './create-yup-step-form'\nimport { createYupFormDialog } from './create-yup-dialog'\n\nexport const Form = createYupForm()\n\nexport const StepForm = createYupStepForm()\n\nexport const FormDialog = createYupFormDialog(Form)\n","import { reach } from 'yup'\nimport { yupResolver } from '@hookform/resolvers/yup'\n\nimport { FieldProps, GetFieldResolver } from '@saas-ui/forms'\nimport { AnyObjectSchema } from './types'\n\nexport { yupResolver }\n\nexport type Options = {\n  min?: number\n  max?: number\n}\n\n// @TODO get proper typings for the schema fields\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\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 = (schema: AnyObjectSchema): 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: AnyObjectSchema, path: string) => {\n  return reach(schema, path) as AnyObjectSchema\n}\n\nexport const yupFieldResolver: GetFieldResolver = (schema: AnyObjectSchema) => {\n  return {\n    getFields() {\n      return getFieldsFromSchema(schema)\n    },\n    getNestedFields(name: string) {\n      return getFieldsFromSchema(getNestedSchema(schema, name))\n    },\n  }\n}\n","import {\n  createForm,\n  CreateFormProps,\n  FormProps,\n  WithFields,\n  FieldValues,\n} from '@saas-ui/forms'\nimport { yupFieldResolver, yupResolver } from './yup-resolver'\nimport { InferType } from 'yup'\nimport React from 'react'\nimport { AnyObjectSchema } from './types'\n\ntype ResolverArgs = Parameters<typeof yupResolver>\n\nexport interface CreateYupFormProps<FieldDefs>\n  extends CreateFormProps<FieldDefs> {\n  schemaOptions?: ResolverArgs[1]\n  resolverOptions?: ResolverArgs[2]\n}\n\nexport type YupFormType<\n  FieldDefs,\n  ExtraProps = object,\n  ExtraOverrides = object,\n  Type extends 'yup' = 'yup'\n> = (<\n  TSchema extends AnyObjectSchema = AnyObjectSchema,\n  TFieldValues extends InferType<TSchema> = InferType<TSchema>, // placeholder\n  TContext extends object = object\n>(\n  props: WithFields<\n    FormProps<TFieldValues, TContext, TSchema>,\n    FieldDefs,\n    ExtraOverrides\n  > & {\n    ref?: React.ForwardedRef<HTMLFormElement>\n  } & ExtraProps\n) => React.ReactElement) & {\n  displayName?: string\n  id?: 'YupForm'\n}\n\nexport const createYupForm = <FieldDefs>(\n  options?: CreateYupFormProps<FieldDefs>\n) => {\n  const YupForm = createForm({\n    resolver: (schema: any) =>\n      yupResolver(\n        schema,\n        options?.schemaOptions,\n        options?.resolverOptions\n      ) as any,\n    fieldResolver: yupFieldResolver,\n    ...options,\n  })\n\n  YupForm.displayName = 'YupForm'\n  YupForm.id = 'YupForm'\n\n  return YupForm as YupFormType<FieldDefs>\n}\n","import {\n  CreateStepFormProps,\n  createStepForm,\n  StepsOptions,\n  UseStepFormProps,\n  Form,\n  WithStepFields,\n} from '@saas-ui/forms'\nimport { yupFieldResolver, yupResolver } from './yup-resolver'\nimport { InferType, object, string } from 'yup'\nimport React from 'react'\nimport { AnyObjectSchema } from './types'\n\ntype ResolverArgs = Parameters<typeof yupResolver>\n\nexport interface CreateYupFormProps<FieldDefs>\n  extends CreateStepFormProps<FieldDefs> {\n  schemaOptions?: ResolverArgs[1]\n  resolverOptions?: ResolverArgs[2]\n}\n\ntype InferStepType<T extends Required<StepsOptions<AnyObjectSchema>>> =\n  T extends [infer Step, ...infer Rest]\n    ? Step extends { schema: AnyObjectSchema }\n      ? InferType<Step['schema']> &\n          (Rest extends Required<StepsOptions<AnyObjectSchema>>\n            ? InferStepType<Rest>\n            : object)\n      : object\n    : object\n\ntype YupStepFormType<\n  FieldDefs,\n  ExtraProps = object,\n  ExtraOverrides = object\n> = (<\n  TSteps extends Required<StepsOptions<AnyObjectSchema>> = Required<\n    StepsOptions<AnyObjectSchema>\n  >,\n  TFieldValues extends InferStepType<TSteps> = InferStepType<TSteps>,\n  TContext extends object = object\n>(\n  props: WithStepFields<\n    UseStepFormProps<TSteps, TFieldValues, TContext>,\n    FieldDefs,\n    ExtraOverrides\n  > & {\n    steps: TSteps\n    ref?: React.ForwardedRef<HTMLFormElement>\n  } & ExtraProps\n) => React.ReactElement) & {\n  displayName?: string\n  id?: string\n}\n\nexport const createYupStepForm = <FieldDefs>(\n  options?: CreateYupFormProps<FieldDefs>\n) => {\n  const YupStepForm = createStepForm<any, any, any>({\n    resolver: (schema: any) =>\n      yupResolver(\n        schema,\n        options?.schemaOptions,\n        options?.resolverOptions\n      ) as any,\n    fieldResolver: yupFieldResolver,\n    ...options,\n  })\n\n  YupStepForm.displayName = 'YupStepForm'\n  YupStepForm.id = 'YupStepForm'\n\n  return YupStepForm as YupStepFormType<FieldDefs>\n}\n","import * as React from 'react'\n\nimport {\n  AlertDialog,\n  AlertDialogBody,\n  AlertDialogFooter,\n  AlertDialogHeader,\n  AlertDialogContent,\n  AlertDialogOverlay,\n  AlertDialogProps,\n  ButtonGroup,\n  ButtonGroupProps,\n  Button,\n  ButtonProps,\n} from '@chakra-ui/react'\n\nexport interface ConfirmDialogProps\n  extends Omit<AlertDialogProps, 'leastDestructiveRef'> {\n  /**\n   * The dialog title\n   */\n  title?: React.ReactNode\n  /**\n   * The cancel button label\n   */\n  cancelLabel?: React.ReactNode\n  /**\n   * The confirm button label\n   */\n  confirmLabel?: React.ReactNode\n  /**\n   * The cancel button props\n   */\n  cancelProps?: ButtonProps\n  /**\n   * The confirm button props\n   */\n  confirmProps?: ButtonProps\n  /**\n   * The button group props\n   */\n  buttonGroupProps?: ButtonGroupProps\n  /**\n   * Close the dialog on cancel\n   * @default true\n   */\n  closeOnCancel?: boolean\n  /**\n   * Close the dialog on confirm\n   * @default true\n   */\n  closeOnConfirm?: boolean\n  /**\n   * Defines which button gets initial focus\n   * https://www.w3.org/TR/wai-aria-practices/#alertdialog\n   */\n  leastDestructiveFocus?: 'cancel' | 'confirm'\n  /**\n   * Function that's called when cancel is clicked\n   */\n  onCancel?: () => void\n  /**\n   * Function that's called when confirm is clicked.\n   */\n  onConfirm?: () => Promise<void> | void\n}\n\nexport const ConfirmDialog: React.FC<ConfirmDialogProps> = (props) => {\n  const {\n    title,\n    cancelLabel = 'Cancel',\n    confirmLabel = 'Confirm',\n    cancelProps,\n    confirmProps,\n    buttonGroupProps,\n    isOpen,\n    closeOnCancel = true,\n    closeOnConfirm = true,\n    leastDestructiveFocus = 'cancel',\n    onClose,\n    onCancel,\n    onConfirm,\n    children,\n    ...rest\n  } = props\n\n  const cancelRef = React.useRef(null)\n  const confirmRef = React.useRef(null)\n  const [isLoading, setIsLoading] = React.useState(false)\n\n  const handleConfirm = async () => {\n    try {\n      const result = onConfirm?.()\n      if (typeof result?.then === 'function') {\n        setIsLoading(true)\n        await result\n      }\n\n      closeOnConfirm && onClose()\n      /* eslint-disable no-useless-catch */\n    } catch (e: any) {\n      throw e\n    } finally {\n      setIsLoading(false)\n    }\n    /* eslint-enable */\n  }\n  console.log(isLoading)\n  return (\n    <AlertDialog\n      isOpen={isOpen}\n      onClose={onClose}\n      {...rest}\n      leastDestructiveRef={\n        leastDestructiveFocus === 'cancel' ? cancelRef : confirmRef\n      }\n    >\n      <AlertDialogOverlay>\n        <AlertDialogContent>\n          <AlertDialogHeader>{title}</AlertDialogHeader>\n\n          <AlertDialogBody>{children}</AlertDialogBody>\n\n          <AlertDialogFooter>\n            <ButtonGroup {...buttonGroupProps}>\n              <Button\n                ref={cancelRef}\n                {...cancelProps}\n                onClick={() => {\n                  onCancel?.()\n\n                  closeOnCancel && onClose()\n                }}\n              >\n                {cancelProps?.children || cancelLabel}\n              </Button>\n              <Button\n                ref={confirmRef}\n                isLoading={isLoading}\n                {...confirmProps}\n                onClick={handleConfirm}\n              >\n                {confirmProps?.children || confirmLabel}\n              </Button>\n            </ButtonGroup>\n          </AlertDialogFooter>\n        </AlertDialogContent>\n      </AlertDialogOverlay>\n    </AlertDialog>\n  )\n}\n","import * as React from 'react'\n\nimport {\n  Drawer as ChakraDrawer,\n  DrawerOverlay,\n  DrawerContent,\n  DrawerHeader,\n  DrawerFooter,\n  DrawerBody,\n  DrawerCloseButton,\n  DrawerProps as ChakraDrawerProps,\n  ModalHeaderProps,\n  ModalContentProps,\n  ModalFooterProps,\n} from '@chakra-ui/react'\nimport { MaybeRenderProp } from '@chakra-ui/react-utils'\nimport { runIfFn } from '@chakra-ui/utils'\n\nexport interface BaseDrawerProps extends Omit<ChakraDrawerProps, 'children'> {\n  /**\n   * The drawer title\n   */\n  title: React.ReactNode\n  /**\n   * The modal children\n   */\n  children: MaybeRenderProp<{\n    isOpen: boolean\n    onClose: () => void\n  }>\n  /**\n   * The modal footer\n   */\n  footer?: React.ReactNode\n  /**\n   * Hide the close button\n   */\n  hideCloseButton?: boolean\n  /**\n   * Hide the overflow\n   */\n  hideOverlay?: boolean\n  /**\n   * Props for the modal header\n   */\n  headerProps?: ModalHeaderProps\n  /**\n   * Props for the modal content\n   */\n  contentProps?: ModalContentProps\n  /**\n   * Props for the modal footer\n   */\n  footerProps?: ModalFooterProps\n}\n\nexport const BaseDrawer: React.FC<BaseDrawerProps> = (props) => {\n  const {\n    title,\n    children,\n    footer,\n    isOpen,\n    onClose,\n    hideCloseButton,\n    hideOverlay,\n    headerProps,\n    contentProps,\n    footerProps,\n    ...rest\n  } = props\n  return (\n    <ChakraDrawer isOpen={isOpen} onClose={onClose} {...rest}>\n      {!hideOverlay && <DrawerOverlay />}\n      <DrawerContent {...contentProps}>\n        {title && <DrawerHeader {...headerProps}>{title}</DrawerHeader>}\n        {!hideCloseButton && <DrawerCloseButton />}\n        {runIfFn(children, {\n          isOpen,\n          onClose,\n        })}\n        {footer && <DrawerFooter {...footerProps}>{footer}</DrawerFooter>}\n      </DrawerContent>\n    </ChakraDrawer>\n  )\n}\n\nexport interface DrawerProps extends BaseDrawerProps {\n  /**\n   * Drawer footer content, wrapped with `DrawerFooter`\n   */\n  footer?: React.ReactNode\n}\n\nexport const Drawer: React.FC<DrawerProps> = (props) => {\n  const { children, isOpen, onClose, ...rest } = props\n  return (\n    <BaseDrawer isOpen={isOpen} onClose={onClose} {...rest}>\n      <DrawerBody>\n        {runIfFn(children, {\n          isOpen,\n          onClose,\n        })}\n      </DrawerBody>\n    </BaseDrawer>\n  )\n}\n","import * as React from 'react'\n\nimport {\n  Modal as ChakraModal,\n  ModalOverlay,\n  ModalContent,\n  ModalHeader,\n  ModalFooter,\n  ModalBody,\n  ModalCloseButton,\n  ModalProps as ChakraModalProps,\n  ModalContentProps,\n  ModalHeaderProps,\n  ModalFooterProps,\n} from '@chakra-ui/react'\nimport { MaybeRenderProp } from '@chakra-ui/react-utils'\nimport { runIfFn } from '@chakra-ui/utils'\n\nexport interface BaseModalProps extends Omit<ChakraModalProps, 'children'> {\n  /**\n   * The modal title\n   */\n  title?: React.ReactNode\n  /**\n   * The modal children\n   */\n  children: MaybeRenderProp<{\n    isOpen: boolean\n    onClose: () => void\n  }>\n  /**\n   * The modal footer\n   */\n  footer?: React.ReactNode\n  /**\n   * Hide the close button\n   */\n  hideCloseButton?: boolean\n  /**\n   * Hide the overlay\n   */\n  hideOverlay?: boolean\n  /**\n   * Props for the modal header\n   */\n  headerProps?: ModalHeaderProps\n  /**\n   * Props for the modal content\n   */\n  contentProps?: ModalContentProps\n  /**\n   * Props for the modal footer\n   */\n  footerProps?: ModalFooterProps\n}\n\nexport const BaseModal: React.FC<BaseModalProps> = (props) => {\n  const {\n    title,\n    footer,\n    children,\n    isOpen,\n    onClose,\n    hideCloseButton,\n    hideOverlay,\n    headerProps,\n    contentProps,\n    footerProps,\n    ...rest\n  } = props\n  return (\n    <ChakraModal isOpen={isOpen} onClose={onClose} {...rest}>\n      {!hideOverlay && <ModalOverlay />}\n      <ModalContent {...contentProps}>\n        {title && <ModalHeader {...headerProps}>{title}</ModalHeader>}\n        {!hideCloseButton && <ModalCloseButton />}\n        {runIfFn(children, {\n          isOpen,\n          onClose,\n        })}\n        {footer && <ModalFooter {...footerProps}>{footer}</ModalFooter>}\n      </ModalContent>\n    </ChakraModal>\n  )\n}\n\nexport const Modal: React.FC<BaseModalProps> = (props) => {\n  const { children, isOpen, onClose, ...rest } = props\n  return (\n    <BaseModal {...rest} isOpen={isOpen} onClose={onClose}>\n      <ModalBody>\n        {runIfFn(children, {\n          isOpen,\n          onClose,\n        })}\n      </ModalBody>\n    </BaseModal>\n  )\n}\n","import * as React from 'react'\n\nimport {\n  ModalFooter,\n  chakra,\n  forwardRef,\n  useMenuContext,\n  useMenuList,\n  createStylesContext,\n  useMultiStyleConfig,\n  Menu,\n  MenuListProps,\n  useBreakpointValue,\n} from '@chakra-ui/react'\n\nimport { BaseModal, BaseModalProps } from './modal'\n\nconst [StylesProvider] = createStylesContext('SuiMenuDialog')\n\nexport interface MenuDialogProps extends BaseModalProps {\n  /**\n   * The modal footer, wrapped with `ModalFooter`\n   */\n  footer?: React.ReactNode\n}\n\nexport const MenuDialog: React.FC<MenuDialogProps> = (props) => {\n  const { onClose, onCloseComplete, ...rest } = props\n\n  return (\n    <Menu\n      variant=\"dialog\"\n      onClose={() => {\n        onClose?.()\n        // Not supported in Menu, so we call it here instead\n        // @todo Refactor this in v2?\n        onCloseComplete?.()\n      }}\n      {...rest}\n    />\n  )\n}\n\nexport interface MenuDialogListProps\n  extends Omit<\n      BaseModalProps,\n      'isOpen' | 'onClose' | 'children' | 'scrollBehavior'\n    >,\n    Omit<MenuListProps, 'title'> {}\n\nexport const MenuDialogList = forwardRef<MenuDialogListProps, 'div'>(\n  (props, forwardedRef) => {\n    const {\n      rootProps,\n      title,\n      footer,\n      initialFocusRef,\n      hideCloseButton,\n      motionPreset = 'slideInBottom',\n      isCentered: isCenteredProp,\n      ...rest\n    } = props\n\n    const { isOpen, onClose, menuRef } = useMenuContext()\n\n    const { ref, ...ownProps } = useMenuList(rest, forwardedRef)\n\n    const styles = useMultiStyleConfig('Menu', props)\n\n    const isCentered = useBreakpointValue({ base: true, md: false })\n\n    return (\n      <BaseModal\n        isOpen={isOpen}\n        onClose={onClose}\n        initialFocusRef={initialFocusRef || menuRef}\n        title={title}\n        hideCloseButton={hideCloseButton}\n        motionPreset={motionPreset}\n        isCentered={isCenteredProp ?? isCentered}\n        contentProps={{ mx: 4 }}\n      >\n        {/* We forward the styles again, otherwise the modal styles will be picked up */}\n        <StylesProvider value={styles}>\n          <chakra.div\n            {...ownProps}\n            ref={ref as React.Ref<HTMLDivElement>}\n            __css={{\n              outline: 0,\n              maxHeight: '80vh', // can override this in theme\n              overflowY: 'auto', // can override this in theme\n              ...styles.list,\n              boxShadow: 'none',\n              border: 0,\n              _dark: {\n                /* @ts-expect-error */\n                ...(styles.list._dark || {}),\n                boxShadow: 'none',\n              },\n            }}\n          />\n        </StylesProvider>\n        {footer && <ModalFooter>{footer}</ModalFooter>}\n      </BaseModal>\n    )\n  }\n)\n","import * as React from 'react'\n\nimport {\n  ModalBody,\n  ModalFooter,\n  Button,\n  forwardRef,\n  ButtonProps,\n} from '@chakra-ui/react'\nimport { runIfFn } from '@saas-ui/react-utils'\n\nimport {\n  Form,\n  AutoFields,\n  SubmitButton,\n  FormProps,\n  FieldValues,\n  FieldResolver,\n  FieldProps,\n  FormType,\n  DefaultFieldOverrides,\n} from '@saas-ui/forms'\n\nimport { BaseModal, BaseModalProps } from './modal'\n\nexport type FormDialogFieldOverrides = DefaultFieldOverrides & {\n  cancel?: ButtonProps\n}\n\nexport interface FormDialogProps<\n  TSchema = any,\n  TFieldValues extends FieldValues = FieldValues,\n  TContext extends object = object,\n  TFieldTypes = FieldProps<TFieldValues>\n> extends Omit<BaseModalProps, 'children'>,\n    Pick<\n      FormProps<TSchema, TFieldValues, TContext, TFieldTypes>,\n      | 'schema'\n      | 'defaultValues'\n      | 'values'\n      | 'context'\n      | 'onChange'\n      | 'onSubmit'\n      | 'onError'\n      | 'resolver'\n      | 'mode'\n      | 'reValidateMode'\n      | 'shouldFocusError'\n      | 'shouldUnregister'\n      | 'shouldUseNativeValidation'\n      | 'criteriaMode'\n      | 'delayError'\n      | 'resetOptions'\n      | 'children'\n    > {\n  /**\n   * The modal footer, will be wrapped with `ModalFooter`.\n   * Defaults to a cancel and submit button.\n   */\n  footer?: React.ReactNode\n  /**\n   * A schema field resolver used to auto generate form fields.\n   */\n  fieldResolver?: FieldResolver\n  /**\n   * Field overrides\n   */\n  fields?: FormDialogFieldOverrides\n}\n\nconst useFormProps = (props: FormDialogProps) => {\n  const {\n    schema,\n    resolver,\n    fieldResolver,\n    defaultValues,\n    values,\n    context,\n    onChange,\n    onSubmit,\n    onError,\n    mode,\n    reValidateMode,\n    shouldFocusError = true,\n    shouldUnregister,\n    shouldUseNativeValidation,\n    criteriaMode,\n    delayError = 100,\n    fields,\n    ...modalProps\n  } = props\n\n  const formProps = {\n    schema,\n    resolver,\n    defaultValues,\n    values,\n    context,\n    onChange,\n    onSubmit,\n    onError,\n    mode,\n    reValidateMode,\n    shouldFocusError,\n    shouldUnregister,\n    shouldUseNativeValidation,\n    criteriaMode,\n    delayError,\n    fields,\n  }\n\n  return { modalProps, formProps, fields }\n}\n\n/**\n * @todo make this dynamic to support other schema types\n */\ntype MergeDialogProps<T> = T extends FormType<\n  infer FieldDefs,\n  infer ExtraProps,\n  infer ExtraOverrides\n>\n  ? FormType<\n      FieldDefs,\n      ExtraProps & Omit<BaseModalProps, 'children'>,\n      ExtraOverrides & FormDialogFieldOverrides\n    >\n  : never\n\ntype IsSchemaType<T, Schema, FieldDefs> = T extends DefaultFormType<FieldDefs>\n  ? T extends (\n      props: FormProps<infer TSchema, infer TFieldValues, infer TContext>\n    ) => any\n    ? Schema extends TSchema\n      ? true\n      : false\n    : false\n  : false\n\nexport type DefaultFormType<\n  FieldDefs = any,\n  ExtraProps = object,\n  ExtraOverrides = FormDialogFieldOverrides\n> = (<\n  TSchema = unknown,\n  TFieldValues extends Record<string, any> = any,\n  TContext extends object = object\n>(\n  props: any\n) => React.ReactElement) & {\n  displayName?: string\n  id?: string\n}\n\nexport function createFormDialog<\n  FieldDefs = any,\n  ExtraProps = object,\n  ExtraOverrides = FormDialogFieldOverrides,\n  TFormType extends DefaultFormType<\n    FieldDefs,\n    ExtraProps,\n    ExtraOverrides\n  > = DefaultFormType<FieldDefs, ExtraProps, ExtraOverrides>\n>(Form: TFormType) {\n  const Dialog = forwardRef<any, 'div'>((props, ref) => {\n    const { isOpen, onClose, footer, children, ...rest } = props\n    const { modalProps, formProps, fields } = useFormProps(rest)\n    return (\n      <BaseModal {...modalProps} isOpen={isOpen} onClose={onClose}>\n        <Form ref={ref} {...(formProps as any)}>\n          {(form: any) => (\n            <>\n              <ModalBody>{runIfFn(children, form) || <AutoFields />}</ModalBody>\n\n              {footer || (\n                <ModalFooter>\n                  <Button\n                    variant=\"ghost\"\n                    mr={3}\n                    onClick={onClose}\n                    {...fields?.cancel}\n                  >\n                    {fields?.cancel?.children ?? 'Cancel'}\n                  </Button>\n                  <SubmitButton {...fields?.submit} />\n                </ModalFooter>\n              )}\n            </>\n          )}\n        </Form>\n      </BaseModal>\n    )\n  }) as MergeDialogProps<TFormType>\n\n  Dialog.displayName = `${Form.displayName || Form.name}Dialog`\n  Dialog.id = Form.id\n\n  return Dialog\n}\n\n/**\n * Can be used to quickly request information from people without leaving the current page.\n *\n * @see Docs https://saas-ui.dev/docs/components/overlay/form-dialog\n */\nexport const FormDialog = createFormDialog(Form)\n","import * as React from 'react'\n\nimport { BaseModalProps } from './modal'\nimport { DrawerProps } from './drawer'\nimport { ConfirmDialogProps } from './dialog'\nimport { MenuDialogProps } from './menu'\nimport { FormDialogProps } from './form'\nimport { defaultModals } from './default-modals'\nimport { FieldValues, FormType } from '@saas-ui/forms'\nimport { FormDialogHandler, FormHandler } from './types'\n\nexport interface ModalsContextValue<\n  TModals extends Record<string, React.FC<any>> = Record<string, React.FC<any>>,\n  TTypes extends Extract<keyof TModals, string> = Extract<keyof TModals, string>\n> {\n  open: <T extends OpenOptions<TTypes>>(\n    componentOrOptions: T extends {\n      component: infer TComponent extends React.FC<any>\n    }\n      ? WithModalOptions<React.ComponentPropsWithRef<TComponent>>\n      : T extends {\n          type: infer TType extends keyof TModals\n        }\n      ? WithModalOptions<React.ComponentPropsWithRef<TModals[TType]>>\n      : T,\n    options?: T extends React.FC<any>\n      ? WithModalOptions<React.ComponentPropsWithRef<T>>\n      : never\n  ) => ModalId\n  drawer: (options: DrawerOptions) => ModalId\n  alert: (options: ConfirmDialogOptions) => ModalId\n  confirm: (options: ConfirmDialogOptions) => ModalId\n  menu: (options: MenuDialogOptions) => ModalId\n  form: FormDialogHandler<TModals['form']>\n  close: (id: ModalId) => void\n  closeAll: () => void\n}\n\nexport const ModalsContext = React.createContext<ModalsContextValue<\n  typeof defaultModals\n> | null>(null)\n\nexport interface ModalsProviderProps<\n  TModals extends Record<string, React.FC<any>> = Record<string, React.FC<any>>\n> {\n  children: React.ReactNode\n  modals?: TModals\n}\n\nexport type ModalId = string | number\n\ntype WithModalOptions<T> = Omit<T, 'isOpen' | 'onClose'> & ModalOptions\n\ninterface ModalOptions\n  extends Omit<BaseModalProps, 'isOpen' | 'onClose' | 'children'> {\n  onClose?: (args: { force?: boolean }) => Promise<boolean | undefined> | void\n  [key: string]: any\n}\n\nexport interface DrawerOptions\n  extends ModalOptions,\n    Omit<DrawerProps, 'onClose' | 'isOpen' | 'children' | 'title' | 'size'> {}\n\nexport interface ConfirmDialogOptions\n  extends ModalOptions,\n    Omit<ConfirmDialogProps, 'onClose' | 'isOpen' | 'children'> {}\n\nexport interface MenuDialogOptions\n  extends ModalOptions,\n    Omit<MenuDialogProps, 'onClose' | 'isOpen' | 'children'> {}\n\nexport interface FormDialogOptions\n  extends ModalOptions,\n    Omit<FormDialogProps, 'onClose' | 'isOpen' | 'children'> {}\n\nexport interface OpenOptions<TModalTypes extends string> extends ModalOptions {\n  type?: TModalTypes\n  scope?: ModalScopes\n}\n\nexport type ModalScopes = 'modal' | 'alert'\n\nexport interface ModalConfig<\n  TModalOptions extends ModalOptions = ModalOptions,\n  TModalTypes extends string = string\n> {\n  /**\n   * The modal id, autogenerated when not set.\n   * Can be used to close modals.\n   */\n  id?: ModalId | null\n  /**\n   * The modal props\n   */\n  props?: TModalOptions | null\n  /**\n   * The modal scope\n   * Modals can only have one level per scope.\n   * The default scopes are 'modal' and 'alert', alerts can be openend above modals.\n   */\n  scope?: ModalScopes | string\n  /**\n   * The modal type to open.\n   * Build in types are 'modal', 'drawer', 'alert', 'confirm'\n   *\n   * Custom types can be configured using the `modals` prop of `ModalProvider`\n   */\n  type?: TModalTypes\n  /**\n   * Render a custom modal component.\n   * This will ignore the `type` param.\n   */\n  component?: React.FC<BaseModalProps>\n  /**\n   * Whether the modal is open or not.\n   * This is used internally to keep track of the modal state.\n   */\n  isOpen?: boolean\n}\n\nconst initialModalState: ModalConfig = {\n  id: null,\n  props: null,\n  type: 'modal',\n}\n\nexport function ModalsProvider({ children, modals }: ModalsProviderProps) {\n  // Note that updating the Set doesn't trigger a re-render,\n  // use in conjuction with setActiveModals\n  const _instances = React.useMemo(() => new Set<ModalConfig>(), [])\n\n  const [activeModals, setActiveModals] = React.useState<\n    Record<string, ModalConfig>\n  >({\n    modal: initialModalState,\n  })\n\n  const getModalComponent = React.useMemo(() => {\n    const _modals: Record<string, React.FC<any>> = {\n      ...defaultModals,\n      ...modals,\n    }\n\n    return (type = 'modal') => {\n      const component = _modals[type] || _modals.modal\n\n      return component\n    }\n  }, [modals])\n\n  const setActiveModal = (modal: ModalConfig, scope?: string) => {\n    if (!scope) {\n      return setActiveModals({\n        modal,\n      })\n    }\n    setActiveModals((prevState) => ({\n      ...prevState,\n      [scope]: modal,\n    }))\n  }\n\n  const open = <T extends OpenOptions<any>>(\n    componentOrOptions: any,\n    options?: T extends React.FC<any>\n      ? WithModalOptions<React.ComponentPropsWithRef<T>>\n      : never\n  ): ModalId => {\n    let _options: ModalOptions\n    if (typeof componentOrOptions === 'function') {\n      _options = {\n        component: componentOrOptions,\n        ...options,\n      } as unknown as T\n    } else {\n      _options = componentOrOptions\n    }\n\n    const {\n      id = _instances.size + 1,\n      type = 'modal',\n      scope = 'modal',\n      component,\n      ...props\n    } = _options\n\n    const modal: ModalConfig<T> = {\n      id,\n      props: props as T,\n      type,\n      scope,\n      component,\n      isOpen: true,\n    }\n\n    _instances.add(modal)\n    setActiveModal(modal, scope)\n\n    return id\n  }\n\n  const drawer = (options: DrawerOptions) => {\n    return open<DrawerOptions>({\n      ...options,\n      type: 'drawer',\n    })\n  }\n\n  const alert = (options: ConfirmDialogOptions) => {\n    return open({\n      ...options,\n      scope: 'alert',\n      type: 'alert',\n      cancelProps: {\n        display: 'none',\n      },\n      confirmProps: {\n        label: 'OK',\n      },\n      leastDestructiveFocus: 'confirm',\n    })\n  }\n\n  const confirm = (options: ConfirmDialogOptions) => {\n    return open<ConfirmDialogOptions>({\n      ...options,\n      scope: 'alert',\n      type: 'confirm',\n    })\n  }\n\n  const menu = (options: MenuDialogOptions) => {\n    return open<MenuDialogOptions>({\n      ...options,\n      type: 'menu',\n    })\n  }\n\n  const form = (options: any) => {\n    return open({\n      ...options,\n      type: 'form',\n    })\n  }\n\n  const close = async (id?: ModalId | null, force?: boolean) => {\n    const modals = [...Array.from(_instances)]\n    const modal = modals.filter((modal) => modal.id === id)[0]\n\n    if (!modal) {\n      return\n    }\n\n    const shouldClose = await modal.props?.onClose?.({ force })\n    if (shouldClose === false) {\n      return\n    }\n\n    const scoped = modals.filter(({ scope }) => scope === modal.scope)\n\n    if (scoped.length === 1) {\n      setActiveModal(\n        {\n          ...modal,\n          isOpen: false,\n        },\n        modal.scope\n      )\n    } else if (scoped.length > 1) {\n      setActiveModal(scoped[scoped.length - 2], modal.scope)\n    } else {\n      setActiveModal(\n        {\n          id: null,\n          props: null,\n          type: modal.type, // Keep type same as last modal type to make sure the animation isn't interrupted\n        },\n        modal.scope\n      )\n    }\n\n    closeComplete(id)\n  }\n\n  const closeComplete = (id?: ModalId | null) => {\n    const modals = [...Array.from(_instances)]\n    const modal = modals.filter((modal) => modal.id === id)[0]\n\n    _instances.delete(modal)\n\n    const scoped = modals.filter(({ scope }) => scope === modal.scope)\n\n    if (scoped.length === 1) {\n      setActiveModal(initialModalState, modal.scope)\n    }\n  }\n\n  const closeAll = () => {\n    _instances.forEach((modal) => modal.props?.onClose?.({ force: true }))\n    _instances.clear()\n\n    setActiveModal(initialModalState)\n  }\n\n  const context = {\n    open,\n    drawer,\n    alert,\n    confirm,\n    menu,\n    form,\n    close,\n    closeAll,\n  }\n\n  const content = React.useMemo(\n    () =>\n      Object.entries(activeModals).map(([scope, config]) => {\n        const Component = config.component || getModalComponent(config.type)\n\n        const { title, body, children, ...props } = config.props || {}\n\n        return (\n          <Component\n            key={scope}\n            title={title}\n            children={body || children}\n            {...props}\n            isOpen={!!config.isOpen}\n            onClose={() => close(config.id)}\n            onCloseComplete={() => closeComplete(config.id)}\n          />\n        )\n      }),\n    [activeModals]\n  )\n\n  return (\n    <ModalsContext.Provider value={context}>\n      {content}\n      {children}\n    </ModalsContext.Provider>\n  )\n}\n\nexport const useModalsContext = () => React.useContext(ModalsContext)\n\nexport const useModals = () => {\n  const modals = useModalsContext()\n\n  if (!modals) {\n    throw new Error('useModals must be used within a ModalsProvider')\n  }\n\n  return modals\n}\n","import { ConfirmDialog } from './dialog'\nimport { MenuDialog } from './menu'\nimport { FormDialog } from './form'\nimport { Drawer } from './drawer'\nimport { Modal } from './modal'\n\nexport const defaultModals = {\n  alert: ConfirmDialog,\n  confirm: ConfirmDialog,\n  drawer: Drawer,\n  modal: Modal,\n  menu: MenuDialog,\n  form: FormDialog,\n}\n","import { defaultModals } from './default-modals'\nimport {\n  ModalsContextValue,\n  ModalsProvider,\n  ModalsProviderProps,\n  useModals,\n} from './provider'\n\nexport interface CreateModalsOptions<\n  TModalDefs extends Record<string, React.FC<any>>\n> {\n  modals: TModalDefs\n}\n\nexport const createModals = <TModalDefs extends Record<string, React.FC<any>>>(\n  options: CreateModalsOptions<TModalDefs>\n) => {\n  const modals = {\n    ...defaultModals,\n    ...options.modals,\n  }\n  const Provider = (props: Omit<ModalsProviderProps, 'modals'>) => {\n    return <ModalsProvider children={props.children} modals={modals} />\n  }\n\n  return {\n    ModalsProvider: Provider,\n    useModals: useModals as () => ModalsContextValue<typeof modals>,\n  }\n}\n","import * as React from 'react'\n\n/**\n * Get the first child of a specific type.\n * @param children The children\n * @param type The component type\n */\nexport function getChildOfType(\n  children: React.ReactNode,\n  type: React.JSXElementConstructor<any>\n) {\n  return (React.Children.toArray(children) as React.ReactElement[]).find(\n    (item) => item.type === type\n  )\n}\n","import * as React from 'react'\n\n/**\n * Get all children of a specific type.\n * @param children The children\n * @param type The component type\n */\nexport function getChildrenOfType(\n  children: React.ReactNode,\n  type: React.JSXElementConstructor<any> | React.JSXElementConstructor<any>[]\n) {\n  return (React.Children.toArray(children) as React.ReactElement[]).filter(\n    (item) =>\n      Array.isArray(type)\n        ? type.some((component) => component === item.type)\n        : item.type === type\n  )\n}\n","import {\n  ResponsiveValue,\n  UseBreakpointOptions,\n  useTheme,\n  useBreakpointValue,\n} from '@chakra-ui/react'\n\nconst normalize = (variant: any, toArray?: (value: any) => any) => {\n  if (Array.isArray(variant)) return variant\n  else if (typeof variant === 'object') return toArray?.(variant)\n  if (variant != null) return [variant]\n  return []\n}\n\nexport const useResponsiveValue = (\n  value: ResponsiveValue<any>,\n  options?: UseBreakpointOptions\n) => {\n  const theme = useTheme()\n  const normalized = normalize(value, theme.__breakpoints?.toArrayValue)\n  return useBreakpointValue(normalized, options)\n}\n","export * from './get-child-of-type'\nexport * from './get-children-of-type'\nexport * from './use-responsive-value'\n\nexport * from '@chakra-ui/utils'\n","import {\n  BaseModalProps,\n  FormDialogFieldOverrides,\n  createFormDialog,\n} from '@saas-ui/modals'\nimport { YupFormType } from './create-yup-form'\n\nexport function createYupFormDialog<\n  FieldDefs = any,\n  ExtraProps = object,\n  ExtraOverrides = object\n>(Form: YupFormType<FieldDefs, ExtraProps, ExtraOverrides>) {\n  return createFormDialog(Form) as unknown as YupFormType<\n    FieldDefs,\n    ExtraProps & Omit<BaseModalProps, 'children'>,\n    ExtraOverrides & FormDialogFieldOverrides\n  >\n}\n"],"mappings":"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","names":["Form","FormDialog","import_yup","import_forms","React","import_react","import_jsx_runtime","import_utils","import_forms","import_jsx_runtime","React2","jsxs","ChakraModal","jsx","runIfFn","jsxs","jsx","ModalFooter","Form","forwardRef","ModalBody","runIfFn","Button","Form","Form","FormDialog"]}
         
     |