@algorithm-shift/design-system 1.2.52 → 1.2.53

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/client.mjs CHANGED
@@ -1,10 +1,15 @@
1
- import { cn } from './chunk-27YZ2WSP.mjs';
2
- import React2, { createContext, useMemo, useReducer, useContext } from 'react';
3
- import { zodResolver } from '@hookform/resolvers/zod';
4
- import { useForm, Controller } from 'react-hook-form';
5
- import { z } from 'zod';
6
- import { jsx } from 'react/jsx-runtime';
1
+ 'use client';
2
+ "use client";
3
+ import {
4
+ cn
5
+ } from "./chunk-27YZ2WSP.mjs";
7
6
 
7
+ // src/components/Form/Wrapper.tsx
8
+ import { useMemo } from "react";
9
+ import { zodResolver } from "@hookform/resolvers/zod";
10
+ import { useForm } from "react-hook-form";
11
+ import { z } from "zod";
12
+ import { jsx } from "react/jsx-runtime";
8
13
  function generateZodSchema(data) {
9
14
  const fields = data.reduce((acc, f) => {
10
15
  const name = f.name || "unnamed";
@@ -108,16 +113,23 @@ var FormWrapper = ({
108
113
  );
109
114
  };
110
115
  var Wrapper_default = FormWrapper;
116
+
117
+ // src/components/Form/Form.tsx
118
+ import React2, { useMemo as useMemo2 } from "react";
119
+ import { zodResolver as zodResolver2 } from "@hookform/resolvers/zod";
120
+ import { useForm as useForm2, Controller } from "react-hook-form";
121
+ import { z as z2 } from "zod";
122
+ import { jsx as jsx2 } from "react/jsx-runtime";
111
123
  function generateZodSchema2(data) {
112
124
  const fields = data.reduce((acc, f) => {
113
125
  const name = f.name || "unnamed";
114
126
  const message = f.message || `${name} is invalid`;
115
127
  const passwordLen = f.passwordLength;
116
- let fieldSchema = z.string({ message });
128
+ let fieldSchema = z2.string({ message });
117
129
  switch (f.type) {
118
130
  case "Text":
119
131
  case "Search":
120
- fieldSchema = z.string({ message });
132
+ fieldSchema = z2.string({ message });
121
133
  if (f?.min && f?.min !== "") fieldSchema = fieldSchema.min(f.min);
122
134
  else if (f.isRequired) fieldSchema = fieldSchema.min(1, { message: `${message}. Cannot be empty` });
123
135
  if (f?.max && f?.max !== "") fieldSchema = fieldSchema.max(f.max);
@@ -126,23 +138,23 @@ function generateZodSchema2(data) {
126
138
  if (f?.regex) fieldSchema = fieldSchema.regex(new RegExp(f.regex));
127
139
  break;
128
140
  case "Email":
129
- fieldSchema = z.email({ message });
141
+ fieldSchema = z2.email({ message });
130
142
  break;
131
143
  case "Password":
132
- fieldSchema = z.string({ message }).min(passwordLen, { message: `Password must be at least ${passwordLen} characters long` });
144
+ fieldSchema = z2.string({ message }).min(passwordLen, { message: `Password must be at least ${passwordLen} characters long` });
133
145
  break;
134
146
  case "Phone":
135
- fieldSchema = z.string().transform((val) => val.replace(/\D/g, "")).transform((val) => val.slice(-10)).refine((val) => {
147
+ fieldSchema = z2.string().transform((val) => val.replace(/\D/g, "")).transform((val) => val.slice(-10)).refine((val) => {
136
148
  return val.length === 10;
137
149
  }, {
138
150
  message: "Phone number must be 10 digits long"
139
151
  });
140
152
  break;
141
153
  case "DatePicker":
142
- fieldSchema = z.iso.date({ message });
154
+ fieldSchema = z2.iso.date({ message });
143
155
  break;
144
156
  case "FileInput":
145
- fieldSchema = z.instanceof(File, { message: "Please select a file" });
157
+ fieldSchema = z2.instanceof(File, { message: "Please select a file" });
146
158
  if (f?.maxSize) {
147
159
  fieldSchema = fieldSchema.refine(
148
160
  (file) => file.size <= f.maxSize,
@@ -157,24 +169,24 @@ function generateZodSchema2(data) {
157
169
  }
158
170
  break;
159
171
  case "Checkbox":
160
- fieldSchema = z.boolean({ message });
172
+ fieldSchema = z2.boolean({ message });
161
173
  break;
162
174
  case "Dropdown":
163
- fieldSchema = z.string({ message });
175
+ fieldSchema = z2.string({ message });
164
176
  break;
165
177
  case "NumberInput":
166
- fieldSchema = z.number({ message });
178
+ fieldSchema = z2.number({ message });
167
179
  if (f?.min !== void 0) fieldSchema = fieldSchema.min(f.min);
168
180
  if (f?.max !== void 0) fieldSchema = fieldSchema.max(f.max);
169
181
  break;
170
182
  default:
171
- fieldSchema = z.any();
183
+ fieldSchema = z2.any();
172
184
  }
173
185
  if (!f.isRequired) fieldSchema = fieldSchema.optional();
174
186
  acc[name] = fieldSchema;
175
187
  return acc;
176
188
  }, {});
177
- return z.object(fields);
189
+ return z2.object(fields);
178
190
  }
179
191
  var Form = ({
180
192
  validation,
@@ -183,7 +195,7 @@ var Form = ({
183
195
  onSubmit,
184
196
  onReset
185
197
  }) => {
186
- const schema = useMemo(() => {
198
+ const schema = useMemo2(() => {
187
199
  if (!validation || validation.length === 0) return null;
188
200
  return generateZodSchema2(validation);
189
201
  }, [validation]);
@@ -192,8 +204,8 @@ var Form = ({
192
204
  control,
193
205
  formState: { errors },
194
206
  reset
195
- } = useForm({
196
- resolver: schema ? zodResolver(schema) : void 0,
207
+ } = useForm2({
208
+ resolver: schema ? zodResolver2(schema) : void 0,
197
209
  defaultValues
198
210
  });
199
211
  const formSubmit = (data) => {
@@ -203,7 +215,7 @@ var Form = ({
203
215
  reset();
204
216
  if (onReset) onReset();
205
217
  };
206
- return /* @__PURE__ */ jsx(
218
+ return /* @__PURE__ */ jsx2(
207
219
  "form",
208
220
  {
209
221
  onSubmit: handleSubmit(formSubmit),
@@ -211,13 +223,13 @@ var Form = ({
211
223
  className: cn(
212
224
  "space-y-4 min-h-[100px] h-auto flex justify-between flex-col"
213
225
  ),
214
- children: /* @__PURE__ */ jsx("div", { className: "min-h-[50px]", children: React2.Children.map(children, (child) => {
226
+ children: /* @__PURE__ */ jsx2("div", { className: "min-h-[50px]", children: React2.Children.map(children, (child) => {
215
227
  const processChild = (child2) => {
216
228
  if (React2.isValidElement(child2)) {
217
229
  const node = child2.props?.node;
218
230
  if (node?.category === "Form Controls") {
219
231
  const name = node.properties?.name || "unnamed";
220
- return /* @__PURE__ */ jsx("div", { className: "flex flex-col", children: /* @__PURE__ */ jsx(
232
+ return /* @__PURE__ */ jsx2("div", { className: "flex flex-col", children: /* @__PURE__ */ jsx2(
221
233
  Controller,
222
234
  {
223
235
  name,
@@ -266,15 +278,23 @@ function stateReducer(state, action) {
266
278
  return state;
267
279
  }
268
280
  }
281
+
282
+ // src/components/StateManagment/StateContext.tsx
283
+ import { createContext, useContext, useReducer } from "react";
284
+ import { jsx as jsx3 } from "react/jsx-runtime";
269
285
  var StateContext = createContext(null);
270
286
  function StateProvider({ children, initialState = {} }) {
271
287
  const [state, dispatch] = useReducer(stateReducer, initialState);
272
- return /* @__PURE__ */ jsx(StateContext.Provider, { value: { state, dispatch }, children });
288
+ return /* @__PURE__ */ jsx3(StateContext.Provider, { value: { state, dispatch }, children });
273
289
  }
274
290
  function useAppState() {
275
291
  return useContext(StateContext);
276
292
  }
277
-
278
- export { Form_default as Form, Wrapper_default as FormWrapper, StateProvider, stateReducer, useAppState };
279
- //# sourceMappingURL=client.mjs.map
293
+ export {
294
+ Form_default as Form,
295
+ Wrapper_default as FormWrapper,
296
+ StateProvider,
297
+ stateReducer,
298
+ useAppState
299
+ };
280
300
  //# sourceMappingURL=client.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/Form/Wrapper.tsx","../src/components/Form/Form.tsx","../src/components/StateManagment/stateReducer.ts","../src/components/StateManagment/StateContext.tsx"],"names":["generateZodSchema","z","useMemo","useForm","zodResolver","jsx","React","child"],"mappings":"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","file":"client.mjs","sourcesContent":["'use client';\r\nimport React, { useMemo } from 'react';\r\n\r\nimport { zodResolver } from '@hookform/resolvers/zod';\r\nimport { useForm, UseFormReturn } from 'react-hook-form';\r\nimport { z } from 'zod';\r\n\r\nimport { cn } from '@/lib/utils';\r\n\r\ninterface FormWrapperProps<T extends z.ZodObject<any>> {\r\n validation?: any[];\r\n formName?: string;\r\n defaultValues?: Partial<z.infer<T>> | any;\r\n children?: React.ReactNode | ((form: UseFormReturn<z.infer<T>>) => React.ReactNode);\r\n onSubmit?: (data: z.infer<T>) => void;\r\n onReset?: () => void;\r\n}\r\n\r\nfunction generateZodSchema(data: any[]): z.ZodObject<any> {\r\n const fields = data.reduce((acc, f) => {\r\n const name = f.name || 'unnamed';\r\n const message = f.message || `${name} is invalid`;\r\n const passwordLen = f.passwordLength;\r\n\r\n let fieldSchema: any = z.string({ message });\r\n\r\n switch (f.type) {\r\n case 'Text':\r\n case 'Search':\r\n fieldSchema = z.string({ message });\r\n if (f?.min && f?.min !== '') fieldSchema = fieldSchema.min(f.min);\r\n else if (f.isRequired) fieldSchema = fieldSchema.min(1, { message: `${message}. Cannot be empty` });\r\n if (f?.max && f?.max !== '') fieldSchema = fieldSchema.max(f.max);\r\n if (f?.email) fieldSchema = fieldSchema.email();\r\n if (f?.url) fieldSchema = fieldSchema.url();\r\n if (f?.regex) fieldSchema = fieldSchema.regex(new RegExp(f.regex));\r\n break;\r\n case 'Email':\r\n fieldSchema = z.email({ message });\r\n break;\r\n case 'Password':\r\n fieldSchema = z.string({ message }).min(passwordLen, { message: `Password must be at least ${passwordLen} characters long` });\r\n break;\r\n case 'Phone':\r\n fieldSchema = z.string().transform(val => val.replace(/\\D/g, '')).transform(val => val.slice(-10)).refine(val => {\r\n return val.length === 10;\r\n }, {\r\n message: 'Phone number must be 10 digits long',\r\n });\r\n break;\r\n case 'DatePicker':\r\n fieldSchema = z.iso.date({ message });\r\n break;\r\n case 'FileInput':\r\n fieldSchema = z.instanceof(File, { message: 'Please select a file' });\r\n if (f?.maxSize) {\r\n fieldSchema = fieldSchema.refine(\r\n (file: File) => file.size <= f.maxSize,\r\n { message: `File size must be less than ${f.maxSize / 1024 / 1024}MB` }\r\n );\r\n }\r\n if (f?.acceptedTypes) {\r\n fieldSchema = fieldSchema.refine(\r\n (file: File) => f.acceptedTypes.includes(file.type),\r\n { message: `File type must be one of: ${f.acceptedTypes.join(', ')}` }\r\n );\r\n }\r\n break;\r\n case 'Checkbox':\r\n fieldSchema = z.boolean({ message });\r\n break;\r\n case 'Dropdown':\r\n fieldSchema = z.string({ message });\r\n break;\r\n case 'NumberInput':\r\n fieldSchema = z.number({ message });\r\n if (f?.min !== undefined) fieldSchema = fieldSchema.min(f.min);\r\n if (f?.max !== undefined) fieldSchema = fieldSchema.max(f.max);\r\n break;\r\n default:\r\n fieldSchema = z.any();\r\n }\r\n\r\n if (!f.isRequired) fieldSchema = fieldSchema.optional();\r\n\r\n acc[name] = fieldSchema;\r\n return acc;\r\n }, {} as Record<string, any>);\r\n return z.object(fields);\r\n}\r\n\r\nconst FormWrapper = <T extends z.ZodObject<any>>({\r\n validation,\r\n defaultValues,\r\n children,\r\n onSubmit,\r\n onReset,\r\n}: FormWrapperProps<T>) => {\r\n\r\n const schema = useMemo(() => {\r\n if (!validation || validation.length === 0) return null;\r\n return generateZodSchema(validation);\r\n }, [validation]);\r\n\r\n type FormData = z.infer<T>;\r\n\r\n const form = useForm<FormData>({\r\n resolver: schema ? zodResolver(schema) as any : undefined,\r\n defaultValues,\r\n });\r\n\r\n const formSubmit = (data: FormData) => {\r\n if (onSubmit) onSubmit(data);\r\n };\r\n\r\n const handleReset = () => {\r\n form.reset();\r\n if (onReset) onReset();\r\n };\r\n\r\n return (\r\n <form\r\n onSubmit={form.handleSubmit(formSubmit)}\r\n onReset={handleReset}\r\n className={cn(\r\n 'space-y-4 min-h-[100px] h-auto flex justify-between flex-col'\r\n )}\r\n >\r\n <div className='min-h-[50px]'>\r\n {typeof children === \"function\"\r\n ? (children as (form: UseFormReturn<FormData>) => React.ReactNode)(form)\r\n : children}\r\n </div>\r\n </form>\r\n );\r\n};\r\n\r\nexport default FormWrapper;","'use client';\r\nimport React, { useMemo } from 'react';\r\n\r\nimport { zodResolver } from '@hookform/resolvers/zod';\r\nimport { useForm, Controller } from 'react-hook-form';\r\nimport { z } from 'zod';\r\n\r\nimport { cn } from '@/lib/utils';\r\n\r\ninterface FormProps<T extends z.ZodObject<any>> {\r\n validation?: any[];\r\n formName?: string;\r\n defaultValues?: Partial<z.infer<T>> | any;\r\n children?: React.ReactNode;\r\n onSubmit?: (data: z.infer<T>) => void;\r\n onReset?: () => void;\r\n}\r\n\r\nfunction generateZodSchema(data: any[]): z.ZodObject<any> {\r\n const fields = data.reduce((acc, f) => {\r\n const name = f.name || 'unnamed';\r\n const message = f.message || `${name} is invalid`;\r\n const passwordLen = f.passwordLength;\r\n\r\n let fieldSchema: any = z.string({ message });\r\n\r\n switch (f.type) {\r\n case 'Text':\r\n case 'Search':\r\n fieldSchema = z.string({ message });\r\n if (f?.min && f?.min !== '') fieldSchema = fieldSchema.min(f.min);\r\n else if (f.isRequired) fieldSchema = fieldSchema.min(1, { message: `${message}. Cannot be empty` });\r\n if (f?.max && f?.max !== '') fieldSchema = fieldSchema.max(f.max);\r\n if (f?.email) fieldSchema = fieldSchema.email();\r\n if (f?.url) fieldSchema = fieldSchema.url();\r\n if (f?.regex) fieldSchema = fieldSchema.regex(new RegExp(f.regex));\r\n break;\r\n case 'Email':\r\n fieldSchema = z.email({ message });\r\n break;\r\n case 'Password':\r\n fieldSchema = z.string({ message }).min(passwordLen, { message: `Password must be at least ${passwordLen} characters long` });\r\n break;\r\n case 'Phone':\r\n fieldSchema = z.string().transform(val => val.replace(/\\D/g, '')).transform(val => val.slice(-10)).refine(val => {\r\n return val.length === 10;\r\n }, {\r\n message: 'Phone number must be 10 digits long',\r\n });\r\n break;\r\n case 'DatePicker':\r\n fieldSchema = z.iso.date({ message });\r\n break;\r\n case 'FileInput':\r\n fieldSchema = z.instanceof(File, { message: 'Please select a file' });\r\n if (f?.maxSize) {\r\n fieldSchema = fieldSchema.refine(\r\n (file: File) => file.size <= f.maxSize,\r\n { message: `File size must be less than ${f.maxSize / 1024 / 1024}MB` }\r\n );\r\n }\r\n if (f?.acceptedTypes) {\r\n fieldSchema = fieldSchema.refine(\r\n (file: File) => f.acceptedTypes.includes(file.type),\r\n { message: `File type must be one of: ${f.acceptedTypes.join(', ')}` }\r\n );\r\n }\r\n break;\r\n case 'Checkbox':\r\n fieldSchema = z.boolean({ message });\r\n break;\r\n case 'Dropdown':\r\n fieldSchema = z.string({ message });\r\n break;\r\n case 'NumberInput':\r\n fieldSchema = z.number({ message });\r\n if (f?.min !== undefined) fieldSchema = fieldSchema.min(f.min);\r\n if (f?.max !== undefined) fieldSchema = fieldSchema.max(f.max);\r\n break;\r\n default:\r\n fieldSchema = z.any();\r\n }\r\n\r\n if (!f.isRequired) fieldSchema = fieldSchema.optional();\r\n\r\n acc[name] = fieldSchema;\r\n return acc;\r\n }, {} as Record<string, any>);\r\n return z.object(fields);\r\n}\r\n\r\nconst Form = <T extends z.ZodObject<any>>({\r\n validation,\r\n defaultValues,\r\n children,\r\n onSubmit,\r\n onReset,\r\n}: FormProps<T>) => {\r\n\r\n const schema = useMemo(() => {\r\n if (!validation || validation.length === 0) return null;\r\n return generateZodSchema(validation);\r\n }, [validation]);\r\n\r\n type FormData = z.infer<T>;\r\n\r\n const {\r\n handleSubmit,\r\n control,\r\n formState: { errors },\r\n reset,\r\n } = useForm<FormData>({\r\n resolver: schema ? zodResolver(schema) as any : undefined,\r\n defaultValues,\r\n });\r\n\r\n const formSubmit = (data: FormData) => {\r\n if (onSubmit) onSubmit(data);\r\n };\r\n\r\n const handleReset = () => {\r\n reset();\r\n if (onReset) onReset();\r\n };\r\n\r\n return (\r\n <form\r\n onSubmit={handleSubmit(formSubmit)}\r\n onReset={handleReset}\r\n className={cn(\r\n 'space-y-4 min-h-[100px] h-auto flex justify-between flex-col'\r\n )}\r\n >\r\n <div className='min-h-[50px]'>\r\n {React.Children.map(children, child => {\r\n const processChild = (child: React.ReactNode): React.ReactNode => {\r\n if (React.isValidElement(child)) {\r\n const node = (child.props as any)?.node;\r\n\r\n if (node?.category === 'Form Controls') {\r\n const name = node.properties?.name || 'unnamed';\r\n return (\r\n <div key={node.id} className=\"flex flex-col\">\r\n <Controller\r\n name={name}\r\n control={control}\r\n render={({ field: controllerField }) => {\r\n const childElement = child as React.ReactElement<{ children?: React.ReactNode, input?: any }>;\r\n return React.cloneElement(childElement, {\r\n input: {\r\n ...controllerField,\r\n value: controllerField.value || '',\r\n hasFormContainer: true,\r\n validateOnMount: true,\r\n errorMessage: errors[name]?.message || null\r\n },\r\n children: undefined\r\n });\r\n }}\r\n />\r\n </div>\r\n );\r\n }\r\n\r\n // Recursively process children of this element\r\n if ((child as React.ReactElement<{ children?: React.ReactNode }>).props?.children) {\r\n const childElement = child as React.ReactElement<{ children?: React.ReactNode }>;\r\n return React.cloneElement(childElement, {\r\n children: React.Children.map(childElement.props.children, processChild),\r\n });\r\n }\r\n\r\n return React.cloneElement(child);\r\n }\r\n return child;\r\n };\r\n\r\n return processChild(child);\r\n })}\r\n </div>\r\n </form>\r\n );\r\n};\r\n\r\nexport default Form;","export type CanvasState = Record<string, any>;\r\n\r\nexport type CanvasAction =\r\n | { type: 'SET_STATE'; key: string; value: any }\r\n | { type: 'SET_MULTIPLE_STATES'; values: Record<string, any> };\r\n\r\nexport function stateReducer(state: CanvasState, action: CanvasAction): CanvasState {\r\n switch (action.type) {\r\n case 'SET_STATE':\r\n return { ...state, [action.key]: action.value };\r\n\r\n case 'SET_MULTIPLE_STATES':\r\n return { ...state, ...action.values };\r\n\r\n default:\r\n return state;\r\n }\r\n}\r\n","'use client';\r\nimport React, { createContext, useContext, useReducer } from 'react';\r\n\r\nimport { stateReducer, CanvasState } from './stateReducer';\r\n\r\nconst StateContext = createContext<any>(null);\r\n\r\nexport function StateProvider({ children, initialState = {} }: { children: React.ReactNode, initialState?: CanvasState }) {\r\n const [state, dispatch] = useReducer(stateReducer, initialState);\r\n return (\r\n <StateContext.Provider value={{ state, dispatch }}>\r\n {children}\r\n </StateContext.Provider>\r\n );\r\n}\r\n\r\nexport function useAppState() {\r\n return useContext(StateContext);\r\n}\r\n"]}
1
+ {"version":3,"sources":["../src/components/Form/Wrapper.tsx","../src/components/Form/Form.tsx","../src/components/StateManagment/stateReducer.ts","../src/components/StateManagment/StateContext.tsx"],"sourcesContent":["'use client';\r\nimport React, { useMemo } from 'react';\r\n\r\nimport { zodResolver } from '@hookform/resolvers/zod';\r\nimport { useForm, UseFormReturn } from 'react-hook-form';\r\nimport { z } from 'zod';\r\n\r\nimport { cn } from '@/lib/utils';\r\n\r\ninterface FormWrapperProps<T extends z.ZodObject<any>> {\r\n validation?: any[];\r\n formName?: string;\r\n defaultValues?: Partial<z.infer<T>> | any;\r\n children?: React.ReactNode | ((form: UseFormReturn<z.infer<T>>) => React.ReactNode);\r\n onSubmit?: (data: z.infer<T>) => void;\r\n onReset?: () => void;\r\n}\r\n\r\nfunction generateZodSchema(data: any[]): z.ZodObject<any> {\r\n const fields = data.reduce((acc, f) => {\r\n const name = f.name || 'unnamed';\r\n const message = f.message || `${name} is invalid`;\r\n const passwordLen = f.passwordLength;\r\n\r\n let fieldSchema: any = z.string({ message });\r\n\r\n switch (f.type) {\r\n case 'Text':\r\n case 'Search':\r\n fieldSchema = z.string({ message });\r\n if (f?.min && f?.min !== '') fieldSchema = fieldSchema.min(f.min);\r\n else if (f.isRequired) fieldSchema = fieldSchema.min(1, { message: `${message}. Cannot be empty` });\r\n if (f?.max && f?.max !== '') fieldSchema = fieldSchema.max(f.max);\r\n if (f?.email) fieldSchema = fieldSchema.email();\r\n if (f?.url) fieldSchema = fieldSchema.url();\r\n if (f?.regex) fieldSchema = fieldSchema.regex(new RegExp(f.regex));\r\n break;\r\n case 'Email':\r\n fieldSchema = z.email({ message });\r\n break;\r\n case 'Password':\r\n fieldSchema = z.string({ message }).min(passwordLen, { message: `Password must be at least ${passwordLen} characters long` });\r\n break;\r\n case 'Phone':\r\n fieldSchema = z.string().transform(val => val.replace(/\\D/g, '')).transform(val => val.slice(-10)).refine(val => {\r\n return val.length === 10;\r\n }, {\r\n message: 'Phone number must be 10 digits long',\r\n });\r\n break;\r\n case 'DatePicker':\r\n fieldSchema = z.iso.date({ message });\r\n break;\r\n case 'FileInput':\r\n fieldSchema = z.instanceof(File, { message: 'Please select a file' });\r\n if (f?.maxSize) {\r\n fieldSchema = fieldSchema.refine(\r\n (file: File) => file.size <= f.maxSize,\r\n { message: `File size must be less than ${f.maxSize / 1024 / 1024}MB` }\r\n );\r\n }\r\n if (f?.acceptedTypes) {\r\n fieldSchema = fieldSchema.refine(\r\n (file: File) => f.acceptedTypes.includes(file.type),\r\n { message: `File type must be one of: ${f.acceptedTypes.join(', ')}` }\r\n );\r\n }\r\n break;\r\n case 'Checkbox':\r\n fieldSchema = z.boolean({ message });\r\n break;\r\n case 'Dropdown':\r\n fieldSchema = z.string({ message });\r\n break;\r\n case 'NumberInput':\r\n fieldSchema = z.number({ message });\r\n if (f?.min !== undefined) fieldSchema = fieldSchema.min(f.min);\r\n if (f?.max !== undefined) fieldSchema = fieldSchema.max(f.max);\r\n break;\r\n default:\r\n fieldSchema = z.any();\r\n }\r\n\r\n if (!f.isRequired) fieldSchema = fieldSchema.optional();\r\n\r\n acc[name] = fieldSchema;\r\n return acc;\r\n }, {} as Record<string, any>);\r\n return z.object(fields);\r\n}\r\n\r\nconst FormWrapper = <T extends z.ZodObject<any>>({\r\n validation,\r\n defaultValues,\r\n children,\r\n onSubmit,\r\n onReset,\r\n}: FormWrapperProps<T>) => {\r\n\r\n const schema = useMemo(() => {\r\n if (!validation || validation.length === 0) return null;\r\n return generateZodSchema(validation);\r\n }, [validation]);\r\n\r\n type FormData = z.infer<T>;\r\n\r\n const form = useForm<FormData>({\r\n resolver: schema ? zodResolver(schema) as any : undefined,\r\n defaultValues,\r\n });\r\n\r\n const formSubmit = (data: FormData) => {\r\n if (onSubmit) onSubmit(data);\r\n };\r\n\r\n const handleReset = () => {\r\n form.reset();\r\n if (onReset) onReset();\r\n };\r\n\r\n return (\r\n <form\r\n onSubmit={form.handleSubmit(formSubmit)}\r\n onReset={handleReset}\r\n className={cn(\r\n 'space-y-4 min-h-[100px] h-auto flex justify-between flex-col'\r\n )}\r\n >\r\n <div className='min-h-[50px]'>\r\n {typeof children === \"function\"\r\n ? (children as (form: UseFormReturn<FormData>) => React.ReactNode)(form)\r\n : children}\r\n </div>\r\n </form>\r\n );\r\n};\r\n\r\nexport default FormWrapper;","'use client';\r\nimport React, { useMemo } from 'react';\r\n\r\nimport { zodResolver } from '@hookform/resolvers/zod';\r\nimport { useForm, Controller } from 'react-hook-form';\r\nimport { z } from 'zod';\r\n\r\nimport { cn } from '@/lib/utils';\r\n\r\ninterface FormProps<T extends z.ZodObject<any>> {\r\n validation?: any[];\r\n formName?: string;\r\n defaultValues?: Partial<z.infer<T>> | any;\r\n children?: React.ReactNode;\r\n onSubmit?: (data: z.infer<T>) => void;\r\n onReset?: () => void;\r\n}\r\n\r\nfunction generateZodSchema(data: any[]): z.ZodObject<any> {\r\n const fields = data.reduce((acc, f) => {\r\n const name = f.name || 'unnamed';\r\n const message = f.message || `${name} is invalid`;\r\n const passwordLen = f.passwordLength;\r\n\r\n let fieldSchema: any = z.string({ message });\r\n\r\n switch (f.type) {\r\n case 'Text':\r\n case 'Search':\r\n fieldSchema = z.string({ message });\r\n if (f?.min && f?.min !== '') fieldSchema = fieldSchema.min(f.min);\r\n else if (f.isRequired) fieldSchema = fieldSchema.min(1, { message: `${message}. Cannot be empty` });\r\n if (f?.max && f?.max !== '') fieldSchema = fieldSchema.max(f.max);\r\n if (f?.email) fieldSchema = fieldSchema.email();\r\n if (f?.url) fieldSchema = fieldSchema.url();\r\n if (f?.regex) fieldSchema = fieldSchema.regex(new RegExp(f.regex));\r\n break;\r\n case 'Email':\r\n fieldSchema = z.email({ message });\r\n break;\r\n case 'Password':\r\n fieldSchema = z.string({ message }).min(passwordLen, { message: `Password must be at least ${passwordLen} characters long` });\r\n break;\r\n case 'Phone':\r\n fieldSchema = z.string().transform(val => val.replace(/\\D/g, '')).transform(val => val.slice(-10)).refine(val => {\r\n return val.length === 10;\r\n }, {\r\n message: 'Phone number must be 10 digits long',\r\n });\r\n break;\r\n case 'DatePicker':\r\n fieldSchema = z.iso.date({ message });\r\n break;\r\n case 'FileInput':\r\n fieldSchema = z.instanceof(File, { message: 'Please select a file' });\r\n if (f?.maxSize) {\r\n fieldSchema = fieldSchema.refine(\r\n (file: File) => file.size <= f.maxSize,\r\n { message: `File size must be less than ${f.maxSize / 1024 / 1024}MB` }\r\n );\r\n }\r\n if (f?.acceptedTypes) {\r\n fieldSchema = fieldSchema.refine(\r\n (file: File) => f.acceptedTypes.includes(file.type),\r\n { message: `File type must be one of: ${f.acceptedTypes.join(', ')}` }\r\n );\r\n }\r\n break;\r\n case 'Checkbox':\r\n fieldSchema = z.boolean({ message });\r\n break;\r\n case 'Dropdown':\r\n fieldSchema = z.string({ message });\r\n break;\r\n case 'NumberInput':\r\n fieldSchema = z.number({ message });\r\n if (f?.min !== undefined) fieldSchema = fieldSchema.min(f.min);\r\n if (f?.max !== undefined) fieldSchema = fieldSchema.max(f.max);\r\n break;\r\n default:\r\n fieldSchema = z.any();\r\n }\r\n\r\n if (!f.isRequired) fieldSchema = fieldSchema.optional();\r\n\r\n acc[name] = fieldSchema;\r\n return acc;\r\n }, {} as Record<string, any>);\r\n return z.object(fields);\r\n}\r\n\r\nconst Form = <T extends z.ZodObject<any>>({\r\n validation,\r\n defaultValues,\r\n children,\r\n onSubmit,\r\n onReset,\r\n}: FormProps<T>) => {\r\n\r\n const schema = useMemo(() => {\r\n if (!validation || validation.length === 0) return null;\r\n return generateZodSchema(validation);\r\n }, [validation]);\r\n\r\n type FormData = z.infer<T>;\r\n\r\n const {\r\n handleSubmit,\r\n control,\r\n formState: { errors },\r\n reset,\r\n } = useForm<FormData>({\r\n resolver: schema ? zodResolver(schema) as any : undefined,\r\n defaultValues,\r\n });\r\n\r\n const formSubmit = (data: FormData) => {\r\n if (onSubmit) onSubmit(data);\r\n };\r\n\r\n const handleReset = () => {\r\n reset();\r\n if (onReset) onReset();\r\n };\r\n\r\n return (\r\n <form\r\n onSubmit={handleSubmit(formSubmit)}\r\n onReset={handleReset}\r\n className={cn(\r\n 'space-y-4 min-h-[100px] h-auto flex justify-between flex-col'\r\n )}\r\n >\r\n <div className='min-h-[50px]'>\r\n {React.Children.map(children, child => {\r\n const processChild = (child: React.ReactNode): React.ReactNode => {\r\n if (React.isValidElement(child)) {\r\n const node = (child.props as any)?.node;\r\n\r\n if (node?.category === 'Form Controls') {\r\n const name = node.properties?.name || 'unnamed';\r\n return (\r\n <div key={node.id} className=\"flex flex-col\">\r\n <Controller\r\n name={name}\r\n control={control}\r\n render={({ field: controllerField }) => {\r\n const childElement = child as React.ReactElement<{ children?: React.ReactNode, input?: any }>;\r\n return React.cloneElement(childElement, {\r\n input: {\r\n ...controllerField,\r\n value: controllerField.value || '',\r\n hasFormContainer: true,\r\n validateOnMount: true,\r\n errorMessage: errors[name]?.message || null\r\n },\r\n children: undefined\r\n });\r\n }}\r\n />\r\n </div>\r\n );\r\n }\r\n\r\n // Recursively process children of this element\r\n if ((child as React.ReactElement<{ children?: React.ReactNode }>).props?.children) {\r\n const childElement = child as React.ReactElement<{ children?: React.ReactNode }>;\r\n return React.cloneElement(childElement, {\r\n children: React.Children.map(childElement.props.children, processChild),\r\n });\r\n }\r\n\r\n return React.cloneElement(child);\r\n }\r\n return child;\r\n };\r\n\r\n return processChild(child);\r\n })}\r\n </div>\r\n </form>\r\n );\r\n};\r\n\r\nexport default Form;","export type CanvasState = Record<string, any>;\r\n\r\nexport type CanvasAction =\r\n | { type: 'SET_STATE'; key: string; value: any }\r\n | { type: 'SET_MULTIPLE_STATES'; values: Record<string, any> };\r\n\r\nexport function stateReducer(state: CanvasState, action: CanvasAction): CanvasState {\r\n switch (action.type) {\r\n case 'SET_STATE':\r\n return { ...state, [action.key]: action.value };\r\n\r\n case 'SET_MULTIPLE_STATES':\r\n return { ...state, ...action.values };\r\n\r\n default:\r\n return state;\r\n }\r\n}\r\n","'use client';\r\nimport React, { createContext, useContext, useReducer } from 'react';\r\n\r\nimport { stateReducer, CanvasState } from './stateReducer';\r\n\r\nconst StateContext = createContext<any>(null);\r\n\r\nexport function StateProvider({ children, initialState = {} }: { children: React.ReactNode, initialState?: CanvasState }) {\r\n const [state, dispatch] = useReducer(stateReducer, initialState);\r\n return (\r\n <StateContext.Provider value={{ state, dispatch }}>\r\n {children}\r\n </StateContext.Provider>\r\n );\r\n}\r\n\r\nexport function useAppState() {\r\n return useContext(StateContext);\r\n}\r\n"],"mappings":"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","names":["React","useMemo","zodResolver","useForm","z","jsx","generateZodSchema","z","useMemo","useForm","zodResolver","React","child","jsx"]}