@algorithm-shift/design-system 1.2.42 → 1.2.44
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/dist/chunk-JFDQZCMW.mjs +3130 -0
- package/dist/chunk-JFDQZCMW.mjs.map +1 -0
- package/dist/client.d.mts +26 -0
- package/dist/client.d.ts +26 -0
- package/dist/client.js +578 -0
- package/dist/client.js.map +1 -0
- package/dist/client.mjs +10 -0
- package/dist/client.mjs.map +1 -0
- package/dist/index.d.mts +4 -24
- package/dist/index.d.ts +4 -24
- package/dist/index.js +79 -195
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +46 -3200
- package/dist/index.mjs.map +1 -1
- package/package.json +19 -1
package/dist/client.d.ts
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { z } from 'zod';
|
|
4
|
+
import { UseFormReturn } from 'react-hook-form';
|
|
5
|
+
|
|
6
|
+
interface FormProps<T extends z.ZodObject<any>> {
|
|
7
|
+
validation?: any[];
|
|
8
|
+
formName?: string;
|
|
9
|
+
defaultValues?: Partial<z.infer<T>> | any;
|
|
10
|
+
children?: React.ReactNode;
|
|
11
|
+
onSubmit?: (data: z.infer<T>) => void;
|
|
12
|
+
onReset?: () => void;
|
|
13
|
+
}
|
|
14
|
+
declare const Form: <T extends z.ZodObject<any>>({ validation, defaultValues, children, onSubmit, onReset, }: FormProps<T>) => react_jsx_runtime.JSX.Element;
|
|
15
|
+
|
|
16
|
+
interface FormWrapperProps<T extends z.ZodObject<any>> {
|
|
17
|
+
validation?: any[];
|
|
18
|
+
formName?: string;
|
|
19
|
+
defaultValues?: Partial<z.infer<T>> | any;
|
|
20
|
+
children?: React.ReactNode | ((form: UseFormReturn<z.infer<T>>) => React.ReactNode);
|
|
21
|
+
onSubmit?: (data: z.infer<T>) => void;
|
|
22
|
+
onReset?: () => void;
|
|
23
|
+
}
|
|
24
|
+
declare const FormWrapper: <T extends z.ZodObject<any>>({ validation, defaultValues, children, onSubmit, onReset, }: FormWrapperProps<T>) => react_jsx_runtime.JSX.Element;
|
|
25
|
+
|
|
26
|
+
export { Form, FormWrapper };
|
package/dist/client.js
ADDED
|
@@ -0,0 +1,578 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
"use client";
|
|
3
|
+
var __create = Object.create;
|
|
4
|
+
var __defProp = Object.defineProperty;
|
|
5
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
6
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
7
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
8
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
9
|
+
var __export = (target, all) => {
|
|
10
|
+
for (var name in all)
|
|
11
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
12
|
+
};
|
|
13
|
+
var __copyProps = (to, from, except, desc) => {
|
|
14
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
15
|
+
for (let key of __getOwnPropNames(from))
|
|
16
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
17
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
18
|
+
}
|
|
19
|
+
return to;
|
|
20
|
+
};
|
|
21
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
22
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
23
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
24
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
25
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
26
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
27
|
+
mod
|
|
28
|
+
));
|
|
29
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
30
|
+
|
|
31
|
+
// src/client.ts
|
|
32
|
+
var client_exports = {};
|
|
33
|
+
__export(client_exports, {
|
|
34
|
+
Form: () => Form_default,
|
|
35
|
+
FormWrapper: () => Wrapper_default
|
|
36
|
+
});
|
|
37
|
+
module.exports = __toCommonJS(client_exports);
|
|
38
|
+
|
|
39
|
+
// src/components/Layout/Modal.tsx
|
|
40
|
+
var import_jsx_runtime = require("react/jsx-runtime");
|
|
41
|
+
|
|
42
|
+
// src/components/Layout/Flex.tsx
|
|
43
|
+
var import_jsx_runtime2 = require("react/jsx-runtime");
|
|
44
|
+
|
|
45
|
+
// src/components/Layout/Grid.tsx
|
|
46
|
+
var import_jsx_runtime3 = require("react/jsx-runtime");
|
|
47
|
+
|
|
48
|
+
// src/components/Layout/Container.tsx
|
|
49
|
+
var import_jsx_runtime4 = require("react/jsx-runtime");
|
|
50
|
+
|
|
51
|
+
// src/components/ui/button.tsx
|
|
52
|
+
var import_react_slot = require("@radix-ui/react-slot");
|
|
53
|
+
var import_class_variance_authority = require("class-variance-authority");
|
|
54
|
+
|
|
55
|
+
// src/lib/utils.ts
|
|
56
|
+
var import_clsx = require("clsx");
|
|
57
|
+
var import_tailwind_merge = require("tailwind-merge");
|
|
58
|
+
function cn(...inputs) {
|
|
59
|
+
return (0, import_tailwind_merge.twMerge)((0, import_clsx.clsx)(inputs));
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
// src/components/ui/button.tsx
|
|
63
|
+
var import_jsx_runtime5 = require("react/jsx-runtime");
|
|
64
|
+
var buttonVariants = (0, import_class_variance_authority.cva)(
|
|
65
|
+
"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",
|
|
66
|
+
{
|
|
67
|
+
variants: {
|
|
68
|
+
variant: {
|
|
69
|
+
default: "bg-primary text-primary-foreground shadow-xs hover:bg-primary/90",
|
|
70
|
+
destructive: "bg-destructive text-white shadow-xs hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",
|
|
71
|
+
outline: "border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50",
|
|
72
|
+
secondary: "bg-secondary text-secondary-foreground shadow-xs hover:bg-secondary/80",
|
|
73
|
+
ghost: "hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50",
|
|
74
|
+
link: "text-primary underline-offset-4 hover:underline"
|
|
75
|
+
},
|
|
76
|
+
size: {
|
|
77
|
+
default: "h-9 px-4 py-2 has-[>svg]:px-3",
|
|
78
|
+
sm: "h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5",
|
|
79
|
+
lg: "h-10 rounded-md px-6 has-[>svg]:px-4",
|
|
80
|
+
icon: "size-9"
|
|
81
|
+
}
|
|
82
|
+
},
|
|
83
|
+
defaultVariants: {
|
|
84
|
+
variant: "default",
|
|
85
|
+
size: "default"
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
);
|
|
89
|
+
|
|
90
|
+
// src/components/Basic/Button/Button.tsx
|
|
91
|
+
var import_jsx_runtime6 = require("react/jsx-runtime");
|
|
92
|
+
|
|
93
|
+
// src/components/Basic/Image/Image.tsx
|
|
94
|
+
var import_jsx_runtime7 = require("react/jsx-runtime");
|
|
95
|
+
|
|
96
|
+
// src/components/Basic/Shape/Shape.tsx
|
|
97
|
+
var import_jsx_runtime8 = require("react/jsx-runtime");
|
|
98
|
+
|
|
99
|
+
// src/components/Basic/Typography/Typography.tsx
|
|
100
|
+
var import_react = __toESM(require("react"));
|
|
101
|
+
|
|
102
|
+
// src/components/Basic/Breadcrumb/Breadcrumb.tsx
|
|
103
|
+
var import_jsx_runtime9 = require("react/jsx-runtime");
|
|
104
|
+
|
|
105
|
+
// src/components/ui/dropdown-menu.tsx
|
|
106
|
+
var DropdownMenuPrimitive = __toESM(require("@radix-ui/react-dropdown-menu"));
|
|
107
|
+
var import_jsx_runtime10 = require("react/jsx-runtime");
|
|
108
|
+
|
|
109
|
+
// src/components/Basic/ButtonGroup/ButtonGroup.tsx
|
|
110
|
+
var import_jsx_runtime11 = require("react/jsx-runtime");
|
|
111
|
+
|
|
112
|
+
// src/components/ui/input.tsx
|
|
113
|
+
var import_jsx_runtime12 = require("react/jsx-runtime");
|
|
114
|
+
|
|
115
|
+
// src/components/Inputs/TextInput/TextInput.tsx
|
|
116
|
+
var import_jsx_runtime13 = require("react/jsx-runtime");
|
|
117
|
+
|
|
118
|
+
// src/components/Inputs/NumberInput/NumberInput.tsx
|
|
119
|
+
var import_jsx_runtime14 = require("react/jsx-runtime");
|
|
120
|
+
|
|
121
|
+
// src/components/Inputs/EmailInput/EmailInput.tsx
|
|
122
|
+
var import_jsx_runtime15 = require("react/jsx-runtime");
|
|
123
|
+
|
|
124
|
+
// src/components/Inputs/PasswordInput/PasswordInput.tsx
|
|
125
|
+
var import_jsx_runtime16 = require("react/jsx-runtime");
|
|
126
|
+
|
|
127
|
+
// src/components/ui/textarea.tsx
|
|
128
|
+
var import_jsx_runtime17 = require("react/jsx-runtime");
|
|
129
|
+
|
|
130
|
+
// src/components/Inputs/Textarea/Textarea.tsx
|
|
131
|
+
var import_jsx_runtime18 = require("react/jsx-runtime");
|
|
132
|
+
|
|
133
|
+
// src/components/Inputs/UrlInput/UrlInput.tsx
|
|
134
|
+
var import_jsx_runtime19 = require("react/jsx-runtime");
|
|
135
|
+
|
|
136
|
+
// src/components/ui/checkbox.tsx
|
|
137
|
+
var CheckboxPrimitive = __toESM(require("@radix-ui/react-checkbox"));
|
|
138
|
+
var import_jsx_runtime20 = require("react/jsx-runtime");
|
|
139
|
+
|
|
140
|
+
// src/components/ui/label.tsx
|
|
141
|
+
var LabelPrimitive = __toESM(require("@radix-ui/react-label"));
|
|
142
|
+
var import_jsx_runtime21 = require("react/jsx-runtime");
|
|
143
|
+
|
|
144
|
+
// src/components/Inputs/Checkbox/Checkbox.tsx
|
|
145
|
+
var import_jsx_runtime22 = require("react/jsx-runtime");
|
|
146
|
+
|
|
147
|
+
// src/components/ui/radio-group.tsx
|
|
148
|
+
var RadioGroupPrimitive = __toESM(require("@radix-ui/react-radio-group"));
|
|
149
|
+
var import_jsx_runtime23 = require("react/jsx-runtime");
|
|
150
|
+
|
|
151
|
+
// src/components/Inputs/RadioInput/RadioInput.tsx
|
|
152
|
+
var import_jsx_runtime24 = require("react/jsx-runtime");
|
|
153
|
+
|
|
154
|
+
// src/components/Inputs/MultiCheckbox/MultiCheckbox.tsx
|
|
155
|
+
var import_react2 = require("react");
|
|
156
|
+
var import_jsx_runtime25 = require("react/jsx-runtime");
|
|
157
|
+
|
|
158
|
+
// src/components/Global/TinyMceEditor.tsx
|
|
159
|
+
var import_react3 = require("react");
|
|
160
|
+
var import_tinymce_react = require("@tinymce/tinymce-react");
|
|
161
|
+
var import_jsx_runtime26 = require("react/jsx-runtime");
|
|
162
|
+
|
|
163
|
+
// src/components/Inputs/RichText/RichText.tsx
|
|
164
|
+
var import_jsx_runtime27 = require("react/jsx-runtime");
|
|
165
|
+
|
|
166
|
+
// src/components/ui/select.tsx
|
|
167
|
+
var SelectPrimitive = __toESM(require("@radix-ui/react-select"));
|
|
168
|
+
var import_jsx_runtime28 = require("react/jsx-runtime");
|
|
169
|
+
|
|
170
|
+
// src/components/Inputs/Dropdown/Dropdown.tsx
|
|
171
|
+
var import_jsx_runtime29 = require("react/jsx-runtime");
|
|
172
|
+
|
|
173
|
+
// src/components/ui/switch.tsx
|
|
174
|
+
var SwitchPrimitive = __toESM(require("@radix-ui/react-switch"));
|
|
175
|
+
var import_jsx_runtime30 = require("react/jsx-runtime");
|
|
176
|
+
|
|
177
|
+
// src/components/Inputs/SwitchToggle/SwitchToggle.tsx
|
|
178
|
+
var import_jsx_runtime31 = require("react/jsx-runtime");
|
|
179
|
+
|
|
180
|
+
// src/components/Inputs/PhoneInput/PhoneInput.tsx
|
|
181
|
+
var import_react_international_phone = require("react-international-phone");
|
|
182
|
+
var import_style = require("react-international-phone/style.css");
|
|
183
|
+
var import_jsx_runtime32 = require("react/jsx-runtime");
|
|
184
|
+
|
|
185
|
+
// src/components/Inputs/SearchInput/SearchInput.tsx
|
|
186
|
+
var import_jsx_runtime33 = require("react/jsx-runtime");
|
|
187
|
+
|
|
188
|
+
// src/components/Inputs/FileInput/FileInput.tsx
|
|
189
|
+
var import_jsx_runtime34 = require("react/jsx-runtime");
|
|
190
|
+
|
|
191
|
+
// src/components/Inputs/DatePicker/DatePicker.tsx
|
|
192
|
+
var import_jsx_runtime35 = require("react/jsx-runtime");
|
|
193
|
+
|
|
194
|
+
// src/components/Inputs/DateRange/DateRange.tsx
|
|
195
|
+
var React3 = __toESM(require("react"));
|
|
196
|
+
var import_date_fns = require("date-fns");
|
|
197
|
+
|
|
198
|
+
// src/components/ui/calendar.tsx
|
|
199
|
+
var React2 = __toESM(require("react"));
|
|
200
|
+
var import_react_day_picker = require("react-day-picker");
|
|
201
|
+
var import_jsx_runtime36 = require("react/jsx-runtime");
|
|
202
|
+
|
|
203
|
+
// src/components/ui/popover.tsx
|
|
204
|
+
var PopoverPrimitive = __toESM(require("@radix-ui/react-popover"));
|
|
205
|
+
var import_jsx_runtime37 = require("react/jsx-runtime");
|
|
206
|
+
|
|
207
|
+
// src/components/Inputs/DateRange/DateRange.tsx
|
|
208
|
+
var import_jsx_runtime38 = require("react/jsx-runtime");
|
|
209
|
+
|
|
210
|
+
// src/components/Inputs/TextInputGroup/TextInputGroup.tsx
|
|
211
|
+
var import_jsx_runtime39 = require("react/jsx-runtime");
|
|
212
|
+
|
|
213
|
+
// src/components/ui/data-table.tsx
|
|
214
|
+
var import_react_table = require("@tanstack/react-table");
|
|
215
|
+
|
|
216
|
+
// src/components/ui/table.tsx
|
|
217
|
+
var import_jsx_runtime40 = require("react/jsx-runtime");
|
|
218
|
+
|
|
219
|
+
// src/components/ui/data-table.tsx
|
|
220
|
+
var import_jsx_runtime41 = require("react/jsx-runtime");
|
|
221
|
+
|
|
222
|
+
// src/components/ui/pagination.tsx
|
|
223
|
+
var import_jsx_runtime42 = require("react/jsx-runtime");
|
|
224
|
+
|
|
225
|
+
// src/components/DataDisplay/Pagination/Pagination.tsx
|
|
226
|
+
var import_jsx_runtime43 = require("react/jsx-runtime");
|
|
227
|
+
|
|
228
|
+
// src/components/DataDisplay/Table/Table.tsx
|
|
229
|
+
var import_react4 = require("react");
|
|
230
|
+
var import_jsx_runtime44 = require("react/jsx-runtime");
|
|
231
|
+
|
|
232
|
+
// src/components/Navigation/Tabs/Tabs.tsx
|
|
233
|
+
var import_jsx_runtime45 = require("react/jsx-runtime");
|
|
234
|
+
|
|
235
|
+
// src/components/Navigation/Stages/Stages.tsx
|
|
236
|
+
var import_react5 = __toESM(require("react"));
|
|
237
|
+
var import_jsx_runtime46 = require("react/jsx-runtime");
|
|
238
|
+
|
|
239
|
+
// src/components/Navigation/Spacer/Spacer.tsx
|
|
240
|
+
var import_jsx_runtime47 = require("react/jsx-runtime");
|
|
241
|
+
|
|
242
|
+
// src/components/Navigation/Profile/Profile.tsx
|
|
243
|
+
var import_jsx_runtime48 = require("react/jsx-runtime");
|
|
244
|
+
|
|
245
|
+
// src/components/Navigation/Notification/Notification.tsx
|
|
246
|
+
var import_jsx_runtime49 = require("react/jsx-runtime");
|
|
247
|
+
|
|
248
|
+
// src/components/Navigation/Logo/Logo.tsx
|
|
249
|
+
var import_jsx_runtime50 = require("react/jsx-runtime");
|
|
250
|
+
|
|
251
|
+
// src/components/ui/avatar.tsx
|
|
252
|
+
var React5 = __toESM(require("react"));
|
|
253
|
+
var AvatarPrimitive = __toESM(require("@radix-ui/react-avatar"));
|
|
254
|
+
var import_jsx_runtime51 = require("react/jsx-runtime");
|
|
255
|
+
var Avatar = React5.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(
|
|
256
|
+
AvatarPrimitive.Root,
|
|
257
|
+
{
|
|
258
|
+
ref,
|
|
259
|
+
className: cn(
|
|
260
|
+
"relative flex h-10 w-10 shrink-0 overflow-hidden rounded-full",
|
|
261
|
+
className
|
|
262
|
+
),
|
|
263
|
+
...props
|
|
264
|
+
}
|
|
265
|
+
));
|
|
266
|
+
Avatar.displayName = AvatarPrimitive.Root.displayName;
|
|
267
|
+
var AvatarImage = React5.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(
|
|
268
|
+
AvatarPrimitive.Image,
|
|
269
|
+
{
|
|
270
|
+
ref,
|
|
271
|
+
className: cn("aspect-square h-full w-full", className),
|
|
272
|
+
...props
|
|
273
|
+
}
|
|
274
|
+
));
|
|
275
|
+
AvatarImage.displayName = AvatarPrimitive.Image.displayName;
|
|
276
|
+
var AvatarFallback = React5.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(
|
|
277
|
+
AvatarPrimitive.Fallback,
|
|
278
|
+
{
|
|
279
|
+
ref,
|
|
280
|
+
className: cn(
|
|
281
|
+
"flex h-full w-full items-center justify-center rounded-full bg-muted",
|
|
282
|
+
className
|
|
283
|
+
),
|
|
284
|
+
...props
|
|
285
|
+
}
|
|
286
|
+
));
|
|
287
|
+
AvatarFallback.displayName = AvatarPrimitive.Fallback.displayName;
|
|
288
|
+
|
|
289
|
+
// src/components/Navigation/Navbar/Navbar.tsx
|
|
290
|
+
var import_jsx_runtime52 = require("react/jsx-runtime");
|
|
291
|
+
|
|
292
|
+
// src/components/Chart/BarChart.tsx
|
|
293
|
+
var import_recharts = require("recharts");
|
|
294
|
+
var import_jsx_runtime53 = require("react/jsx-runtime");
|
|
295
|
+
|
|
296
|
+
// src/components/Chart/PieChart.tsx
|
|
297
|
+
var import_recharts2 = require("recharts");
|
|
298
|
+
var import_jsx_runtime54 = require("react/jsx-runtime");
|
|
299
|
+
|
|
300
|
+
// src/components/Blocks/EmailComposer.tsx
|
|
301
|
+
var import_jsx_runtime55 = require("react/jsx-runtime");
|
|
302
|
+
|
|
303
|
+
// src/components/ui/sonner-toast.tsx
|
|
304
|
+
var import_sonner = require("sonner");
|
|
305
|
+
|
|
306
|
+
// src/components/StateManagment/StateContext.tsx
|
|
307
|
+
var import_react6 = require("react");
|
|
308
|
+
var import_jsx_runtime56 = require("react/jsx-runtime");
|
|
309
|
+
var StateContext = (0, import_react6.createContext)(null);
|
|
310
|
+
|
|
311
|
+
// src/components/Form/Form.tsx
|
|
312
|
+
var import_react7 = __toESM(require("react"));
|
|
313
|
+
var import_zod = require("@hookform/resolvers/zod");
|
|
314
|
+
var import_react_hook_form = require("react-hook-form");
|
|
315
|
+
var import_zod2 = require("zod");
|
|
316
|
+
var import_jsx_runtime57 = require("react/jsx-runtime");
|
|
317
|
+
function generateZodSchema(data) {
|
|
318
|
+
const fields = data.reduce((acc, f) => {
|
|
319
|
+
const name = f.name || "unnamed";
|
|
320
|
+
const message = f.message || `${name} is invalid`;
|
|
321
|
+
const passwordLen = f.passwordLength;
|
|
322
|
+
let fieldSchema = import_zod2.z.string({ message });
|
|
323
|
+
switch (f.type) {
|
|
324
|
+
case "Text":
|
|
325
|
+
case "Search":
|
|
326
|
+
fieldSchema = import_zod2.z.string({ message });
|
|
327
|
+
if (f?.min && f?.min !== "") fieldSchema = fieldSchema.min(f.min);
|
|
328
|
+
else if (f.isRequired) fieldSchema = fieldSchema.min(1, { message: `${message}. Cannot be empty` });
|
|
329
|
+
if (f?.max && f?.max !== "") fieldSchema = fieldSchema.max(f.max);
|
|
330
|
+
if (f?.email) fieldSchema = fieldSchema.email();
|
|
331
|
+
if (f?.url) fieldSchema = fieldSchema.url();
|
|
332
|
+
if (f?.regex) fieldSchema = fieldSchema.regex(new RegExp(f.regex));
|
|
333
|
+
break;
|
|
334
|
+
case "Email":
|
|
335
|
+
fieldSchema = import_zod2.z.email({ message });
|
|
336
|
+
break;
|
|
337
|
+
case "Password":
|
|
338
|
+
fieldSchema = import_zod2.z.string({ message }).min(passwordLen, { message: `Password must be at least ${passwordLen} characters long` });
|
|
339
|
+
break;
|
|
340
|
+
case "Phone":
|
|
341
|
+
fieldSchema = import_zod2.z.string().transform((val) => val.replace(/\D/g, "")).transform((val) => val.slice(-10)).refine((val) => {
|
|
342
|
+
return val.length === 10;
|
|
343
|
+
}, {
|
|
344
|
+
message: "Phone number must be 10 digits long"
|
|
345
|
+
});
|
|
346
|
+
break;
|
|
347
|
+
case "DatePicker":
|
|
348
|
+
fieldSchema = import_zod2.z.iso.date({ message });
|
|
349
|
+
break;
|
|
350
|
+
case "FileInput":
|
|
351
|
+
fieldSchema = import_zod2.z.instanceof(File, { message: "Please select a file" });
|
|
352
|
+
if (f?.maxSize) {
|
|
353
|
+
fieldSchema = fieldSchema.refine(
|
|
354
|
+
(file) => file.size <= f.maxSize,
|
|
355
|
+
{ message: `File size must be less than ${f.maxSize / 1024 / 1024}MB` }
|
|
356
|
+
);
|
|
357
|
+
}
|
|
358
|
+
if (f?.acceptedTypes) {
|
|
359
|
+
fieldSchema = fieldSchema.refine(
|
|
360
|
+
(file) => f.acceptedTypes.includes(file.type),
|
|
361
|
+
{ message: `File type must be one of: ${f.acceptedTypes.join(", ")}` }
|
|
362
|
+
);
|
|
363
|
+
}
|
|
364
|
+
break;
|
|
365
|
+
case "Checkbox":
|
|
366
|
+
fieldSchema = import_zod2.z.boolean({ message });
|
|
367
|
+
break;
|
|
368
|
+
case "Dropdown":
|
|
369
|
+
fieldSchema = import_zod2.z.string({ message });
|
|
370
|
+
break;
|
|
371
|
+
case "NumberInput":
|
|
372
|
+
fieldSchema = import_zod2.z.number({ message });
|
|
373
|
+
if (f?.min !== void 0) fieldSchema = fieldSchema.min(f.min);
|
|
374
|
+
if (f?.max !== void 0) fieldSchema = fieldSchema.max(f.max);
|
|
375
|
+
break;
|
|
376
|
+
default:
|
|
377
|
+
fieldSchema = import_zod2.z.any();
|
|
378
|
+
}
|
|
379
|
+
if (!f.isRequired) fieldSchema = fieldSchema.optional();
|
|
380
|
+
acc[name] = fieldSchema;
|
|
381
|
+
return acc;
|
|
382
|
+
}, {});
|
|
383
|
+
return import_zod2.z.object(fields);
|
|
384
|
+
}
|
|
385
|
+
var Form = ({
|
|
386
|
+
validation,
|
|
387
|
+
defaultValues,
|
|
388
|
+
children,
|
|
389
|
+
onSubmit,
|
|
390
|
+
onReset
|
|
391
|
+
}) => {
|
|
392
|
+
const schema = (0, import_react7.useMemo)(() => {
|
|
393
|
+
if (!validation || validation.length === 0) return null;
|
|
394
|
+
return generateZodSchema(validation);
|
|
395
|
+
}, [validation]);
|
|
396
|
+
const {
|
|
397
|
+
handleSubmit,
|
|
398
|
+
control,
|
|
399
|
+
formState: { errors },
|
|
400
|
+
reset
|
|
401
|
+
} = (0, import_react_hook_form.useForm)({
|
|
402
|
+
resolver: schema ? (0, import_zod.zodResolver)(schema) : void 0,
|
|
403
|
+
defaultValues
|
|
404
|
+
});
|
|
405
|
+
const formSubmit = (data) => {
|
|
406
|
+
if (onSubmit) onSubmit(data);
|
|
407
|
+
};
|
|
408
|
+
const handleReset = () => {
|
|
409
|
+
reset();
|
|
410
|
+
if (onReset) onReset();
|
|
411
|
+
};
|
|
412
|
+
return /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
|
|
413
|
+
"form",
|
|
414
|
+
{
|
|
415
|
+
onSubmit: handleSubmit(formSubmit),
|
|
416
|
+
onReset: handleReset,
|
|
417
|
+
className: cn(
|
|
418
|
+
"space-y-4 min-h-[100px] h-auto flex justify-between flex-col"
|
|
419
|
+
),
|
|
420
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime57.jsx)("div", { className: "min-h-[50px]", children: import_react7.default.Children.map(children, (child) => {
|
|
421
|
+
const processChild = (child2) => {
|
|
422
|
+
if (import_react7.default.isValidElement(child2)) {
|
|
423
|
+
const node = child2.props?.node;
|
|
424
|
+
if (node?.category === "Form Controls") {
|
|
425
|
+
const name = node.properties?.name || "unnamed";
|
|
426
|
+
return /* @__PURE__ */ (0, import_jsx_runtime57.jsx)("div", { className: "flex flex-col", children: /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
|
|
427
|
+
import_react_hook_form.Controller,
|
|
428
|
+
{
|
|
429
|
+
name,
|
|
430
|
+
control,
|
|
431
|
+
render: ({ field: controllerField }) => {
|
|
432
|
+
const childElement = child2;
|
|
433
|
+
return import_react7.default.cloneElement(childElement, {
|
|
434
|
+
input: {
|
|
435
|
+
...controllerField,
|
|
436
|
+
value: controllerField.value || "",
|
|
437
|
+
hasFormContainer: true,
|
|
438
|
+
validateOnMount: true,
|
|
439
|
+
errorMessage: errors[name]?.message || null
|
|
440
|
+
},
|
|
441
|
+
children: void 0
|
|
442
|
+
});
|
|
443
|
+
}
|
|
444
|
+
}
|
|
445
|
+
) }, node.id);
|
|
446
|
+
}
|
|
447
|
+
if (child2.props?.children) {
|
|
448
|
+
const childElement = child2;
|
|
449
|
+
return import_react7.default.cloneElement(childElement, {
|
|
450
|
+
children: import_react7.default.Children.map(childElement.props.children, processChild)
|
|
451
|
+
});
|
|
452
|
+
}
|
|
453
|
+
return import_react7.default.cloneElement(child2);
|
|
454
|
+
}
|
|
455
|
+
return child2;
|
|
456
|
+
};
|
|
457
|
+
return processChild(child);
|
|
458
|
+
}) })
|
|
459
|
+
}
|
|
460
|
+
);
|
|
461
|
+
};
|
|
462
|
+
var Form_default = Form;
|
|
463
|
+
|
|
464
|
+
// src/components/Form/Wrapper.tsx
|
|
465
|
+
var import_react8 = require("react");
|
|
466
|
+
var import_zod3 = require("@hookform/resolvers/zod");
|
|
467
|
+
var import_react_hook_form2 = require("react-hook-form");
|
|
468
|
+
var import_zod4 = require("zod");
|
|
469
|
+
var import_jsx_runtime58 = require("react/jsx-runtime");
|
|
470
|
+
function generateZodSchema2(data) {
|
|
471
|
+
const fields = data.reduce((acc, f) => {
|
|
472
|
+
const name = f.name || "unnamed";
|
|
473
|
+
const message = f.message || `${name} is invalid`;
|
|
474
|
+
const passwordLen = f.passwordLength;
|
|
475
|
+
let fieldSchema = import_zod4.z.string({ message });
|
|
476
|
+
switch (f.type) {
|
|
477
|
+
case "Text":
|
|
478
|
+
case "Search":
|
|
479
|
+
fieldSchema = import_zod4.z.string({ message });
|
|
480
|
+
if (f?.min && f?.min !== "") fieldSchema = fieldSchema.min(f.min);
|
|
481
|
+
else if (f.isRequired) fieldSchema = fieldSchema.min(1, { message: `${message}. Cannot be empty` });
|
|
482
|
+
if (f?.max && f?.max !== "") fieldSchema = fieldSchema.max(f.max);
|
|
483
|
+
if (f?.email) fieldSchema = fieldSchema.email();
|
|
484
|
+
if (f?.url) fieldSchema = fieldSchema.url();
|
|
485
|
+
if (f?.regex) fieldSchema = fieldSchema.regex(new RegExp(f.regex));
|
|
486
|
+
break;
|
|
487
|
+
case "Email":
|
|
488
|
+
fieldSchema = import_zod4.z.email({ message });
|
|
489
|
+
break;
|
|
490
|
+
case "Password":
|
|
491
|
+
fieldSchema = import_zod4.z.string({ message }).min(passwordLen, { message: `Password must be at least ${passwordLen} characters long` });
|
|
492
|
+
break;
|
|
493
|
+
case "Phone":
|
|
494
|
+
fieldSchema = import_zod4.z.string().transform((val) => val.replace(/\D/g, "")).transform((val) => val.slice(-10)).refine((val) => {
|
|
495
|
+
return val.length === 10;
|
|
496
|
+
}, {
|
|
497
|
+
message: "Phone number must be 10 digits long"
|
|
498
|
+
});
|
|
499
|
+
break;
|
|
500
|
+
case "DatePicker":
|
|
501
|
+
fieldSchema = import_zod4.z.iso.date({ message });
|
|
502
|
+
break;
|
|
503
|
+
case "FileInput":
|
|
504
|
+
fieldSchema = import_zod4.z.instanceof(File, { message: "Please select a file" });
|
|
505
|
+
if (f?.maxSize) {
|
|
506
|
+
fieldSchema = fieldSchema.refine(
|
|
507
|
+
(file) => file.size <= f.maxSize,
|
|
508
|
+
{ message: `File size must be less than ${f.maxSize / 1024 / 1024}MB` }
|
|
509
|
+
);
|
|
510
|
+
}
|
|
511
|
+
if (f?.acceptedTypes) {
|
|
512
|
+
fieldSchema = fieldSchema.refine(
|
|
513
|
+
(file) => f.acceptedTypes.includes(file.type),
|
|
514
|
+
{ message: `File type must be one of: ${f.acceptedTypes.join(", ")}` }
|
|
515
|
+
);
|
|
516
|
+
}
|
|
517
|
+
break;
|
|
518
|
+
case "Checkbox":
|
|
519
|
+
fieldSchema = import_zod4.z.boolean({ message });
|
|
520
|
+
break;
|
|
521
|
+
case "Dropdown":
|
|
522
|
+
fieldSchema = import_zod4.z.string({ message });
|
|
523
|
+
break;
|
|
524
|
+
case "NumberInput":
|
|
525
|
+
fieldSchema = import_zod4.z.number({ message });
|
|
526
|
+
if (f?.min !== void 0) fieldSchema = fieldSchema.min(f.min);
|
|
527
|
+
if (f?.max !== void 0) fieldSchema = fieldSchema.max(f.max);
|
|
528
|
+
break;
|
|
529
|
+
default:
|
|
530
|
+
fieldSchema = import_zod4.z.any();
|
|
531
|
+
}
|
|
532
|
+
if (!f.isRequired) fieldSchema = fieldSchema.optional();
|
|
533
|
+
acc[name] = fieldSchema;
|
|
534
|
+
return acc;
|
|
535
|
+
}, {});
|
|
536
|
+
return import_zod4.z.object(fields);
|
|
537
|
+
}
|
|
538
|
+
var FormWrapper = ({
|
|
539
|
+
validation,
|
|
540
|
+
defaultValues,
|
|
541
|
+
children,
|
|
542
|
+
onSubmit,
|
|
543
|
+
onReset
|
|
544
|
+
}) => {
|
|
545
|
+
const schema = (0, import_react8.useMemo)(() => {
|
|
546
|
+
if (!validation || validation.length === 0) return null;
|
|
547
|
+
return generateZodSchema2(validation);
|
|
548
|
+
}, [validation]);
|
|
549
|
+
const form = (0, import_react_hook_form2.useForm)({
|
|
550
|
+
resolver: schema ? (0, import_zod3.zodResolver)(schema) : void 0,
|
|
551
|
+
defaultValues
|
|
552
|
+
});
|
|
553
|
+
const formSubmit = (data) => {
|
|
554
|
+
if (onSubmit) onSubmit(data);
|
|
555
|
+
};
|
|
556
|
+
const handleReset = () => {
|
|
557
|
+
form.reset();
|
|
558
|
+
if (onReset) onReset();
|
|
559
|
+
};
|
|
560
|
+
return /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(
|
|
561
|
+
"form",
|
|
562
|
+
{
|
|
563
|
+
onSubmit: form.handleSubmit(formSubmit),
|
|
564
|
+
onReset: handleReset,
|
|
565
|
+
className: cn(
|
|
566
|
+
"space-y-4 min-h-[100px] h-auto flex justify-between flex-col"
|
|
567
|
+
),
|
|
568
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime58.jsx)("div", { className: "min-h-[50px]", children: typeof children === "function" ? children(form) : children })
|
|
569
|
+
}
|
|
570
|
+
);
|
|
571
|
+
};
|
|
572
|
+
var Wrapper_default = FormWrapper;
|
|
573
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
574
|
+
0 && (module.exports = {
|
|
575
|
+
Form,
|
|
576
|
+
FormWrapper
|
|
577
|
+
});
|
|
578
|
+
//# sourceMappingURL=client.js.map
|