{"version":3,"sources":["../src/components/Grid/index.tsx","../src/components/Form/index.tsx","../src/hooks/useForm.ts","../src/contexts/FormContext.tsx","../src/modules/Form/index.tsx","../src/modules/FormDialog/index.tsx","../src/hooks/useDebounce.ts","../src/utils/validators.ts"],"names":["useMemo","jsx","jsxs","useState","useCallback","ZodError","createContext","useContext","forwardRef","useImperativeHandle","errors","useEffect","z"],"mappings":"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","file":"index.cjs","sourcesContent":["import React, { useMemo } from \"react\"\nimport type { CSSProperties, ReactNode } from \"react\"\n\nexport interface GridRowProps {\n  children: ReactNode\n  gap?: number | string\n  columns?: number | string\n  responsive?: {\n    xs?: number | string // < 576px\n    sm?: number | string // >= 576px\n    md?: number | string // >= 768px\n    lg?: number | string // >= 992px\n    xl?: number | string // >= 1200px\n    xxl?: number | string // >= 1400px\n  }\n  align?: \"start\" | \"center\" | \"end\" | \"stretch\"\n  justify?:\n    | \"start\"\n    | \"center\"\n    | \"end\"\n    | \"space-between\"\n    | \"space-around\"\n    | \"space-evenly\"\n  wrap?: boolean\n  className?: string\n  style?: CSSProperties\n}\n\nconst getColumnTemplate = (cols: number | string): string => {\n  if (typeof cols === \"number\") {\n    return `repeat(${cols}, 1fr)`\n  }\n  return cols\n}\n\nexport const GridRow: React.FC<GridRowProps> = ({\n  children,\n  gap = \"1rem\",\n  columns = 12,\n  responsive,\n  align = \"stretch\",\n  justify = \"start\",\n  wrap = true,\n  className = \"\",\n  style = {},\n}) => {\n  // Memoize styles to prevent recalculation\n  const gridStyles = useMemo(() => {\n    const baseStyles: CSSProperties = {\n      display: \"grid\",\n      gridTemplateColumns: getColumnTemplate(columns),\n      gap: typeof gap === \"number\" ? `${gap}px` : gap,\n      alignItems: align,\n      justifyContent: justify,\n      ...style,\n    }\n\n    // Add CSS custom properties for responsive grid\n    if (responsive) {\n      return {\n        ...baseStyles,\n        gridTemplateColumns: `var(--grid-columns, ${getColumnTemplate(\n          columns\n        )})`,\n        \"--grid-xs\": responsive.xs\n          ? getColumnTemplate(responsive.xs)\n          : getColumnTemplate(columns),\n        \"--grid-sm\": responsive.sm\n          ? getColumnTemplate(responsive.sm)\n          : getColumnTemplate(columns),\n        \"--grid-md\": responsive.md\n          ? getColumnTemplate(responsive.md)\n          : getColumnTemplate(columns),\n        \"--grid-lg\": responsive.lg\n          ? getColumnTemplate(responsive.lg)\n          : getColumnTemplate(columns),\n        \"--grid-xl\": responsive.xl\n          ? getColumnTemplate(responsive.xl)\n          : getColumnTemplate(columns),\n        \"--grid-xxl\": responsive.xxl\n          ? getColumnTemplate(responsive.xxl)\n          : getColumnTemplate(columns),\n      } as CSSProperties\n    }\n\n    return baseStyles\n  }, [columns, gap, align, justify, responsive, style])\n\n  // Use data attribute for responsive behavior instead of dynamic classes\n  return (\n    <div\n      className={`grid-row ${className}`}\n      style={gridStyles}\n      data-responsive={responsive ? \"true\" : undefined}\n    >\n      {children}\n    </div>\n  )\n}\n\nexport interface GridColProps {\n  children: ReactNode\n  span?: number | string\n  responsive?: {\n    xs?: number | string\n    sm?: number | string\n    md?: number | string\n    lg?: number | string\n    xl?: number | string\n    xxl?: number | string\n  }\n  className?: string\n  style?: CSSProperties\n}\n\nconst getColSpan = (spanValue: number | string): number | string => {\n  return spanValue\n}\n\nexport const GridCol: React.FC<GridColProps> = ({\n  children,\n  span = 1,\n  responsive,\n  className = \"\",\n  style = {},\n}) => {\n  // Memoize styles to prevent recalculation\n  const colStyles = useMemo(() => {\n    const baseStyles: CSSProperties = {\n      gridColumn: `span ${getColSpan(span)}`,\n      ...style,\n    }\n\n    // Add CSS custom properties for responsive column spans\n    if (responsive) {\n      return {\n        ...baseStyles,\n        gridColumn: `var(--col-span, span ${getColSpan(span)})`,\n        \"--col-xs\": responsive.xs\n          ? `span ${getColSpan(responsive.xs)}`\n          : `span ${getColSpan(span)}`,\n        \"--col-sm\": responsive.sm\n          ? `span ${getColSpan(responsive.sm)}`\n          : `span ${getColSpan(span)}`,\n        \"--col-md\": responsive.md\n          ? `span ${getColSpan(responsive.md)}`\n          : `span ${getColSpan(span)}`,\n        \"--col-lg\": responsive.lg\n          ? `span ${getColSpan(responsive.lg)}`\n          : `span ${getColSpan(span)}`,\n        \"--col-xl\": responsive.xl\n          ? `span ${getColSpan(responsive.xl)}`\n          : `span ${getColSpan(span)}`,\n        \"--col-xxl\": responsive.xxl\n          ? `span ${getColSpan(responsive.xxl)}`\n          : `span ${getColSpan(span)}`,\n      } as CSSProperties\n    }\n\n    return baseStyles\n  }, [span, responsive, style])\n\n  return (\n    <div\n      className={`grid-col ${className}`}\n      style={colStyles}\n      data-responsive={responsive ? \"true\" : undefined}\n    >\n      {children}\n    </div>\n  )\n}\n\nexport default GridRow\n","import React from \"react\"\nimport type { ReactNode, CSSProperties } from \"react\"\nimport GridRow, { GridCol } from \"../Grid\"\n\nexport interface FormProps {\n  form: FormState[]\n  className?: string\n  style?: CSSProperties\n}\n\nexport interface FormItems {\n  item: boolean\n  xs: number\n  sm?: number\n  md?: number\n  lg?: number\n  xl?: number\n  hide?: boolean\n  itemnode: ReactNode\n}\n\nexport interface FormSections {\n  item?: boolean\n  xs?: number\n  container?: boolean\n  spacing?: number | string\n  hide?: boolean\n  columns?: number\n  items: FormItems[]\n  style?: CSSProperties\n  line?: boolean\n  title?: string\n  className?: string\n}\n\nexport interface FormState {\n  section: FormSections\n}\n\nexport const Form: React.FC<FormProps> = ({\n  form,\n  className = \"\",\n  style = {},\n}) => {\n  return (\n    <div className={`form-container ${className}`} style={style}>\n      {form.map((formState, sectionIndex) => {\n        const { section } = formState\n\n        // Skip if section is hidden\n        if (section.hide) return null\n\n        return (\n          <div key={sectionIndex} className=\"form-section\">\n            {/* Section Title */}\n            {section.title && (\n              <div\n                className=\"form-section-title\"\n                style={{ marginBottom: \"1rem\" }}\n              >\n                <h3>{section.title}</h3>\n                {section.line && (\n                  <hr\n                    style={{\n                      border: \"none\",\n                      borderTop: \"1px solid #e0e0e0\",\n                      margin: \"0.5rem 0\",\n                    }}\n                  />\n                )}\n              </div>\n            )}\n\n            {/* Section Content */}\n            {section.container ? (\n              <GridRow\n                columns={section.columns || 12}\n                gap={section.spacing || \"1rem\"}\n                style={section.style}\n                className={section.className}\n              >\n                {section.items.map((item, itemIndex) => {\n                  // Skip if item is hidden\n                  if (item.hide) return null\n\n                  return (\n                    <GridCol\n                      key={itemIndex}\n                      span={12}\n                      responsive={{\n                        xs: item.xs,\n                        sm: item.sm,\n                        md: item.md,\n                        lg: item.lg,\n                        xl: item.xl,\n                      }}\n                    >\n                      {item.itemnode}\n                    </GridCol>\n                  )\n                })}\n              </GridRow>\n            ) : (\n              // Non-container section - render items directly\n              <div className=\"form-section-items\" style={section.style}>\n                {section.items.map((item, itemIndex) => {\n                  if (item.hide) return null\n                  return (\n                    <div key={itemIndex} className=\"form-item\">\n                      {item.itemnode}\n                    </div>\n                  )\n                })}\n              </div>\n            )}\n          </div>\n        )\n      })}\n    </div>\n  )\n}\n\nexport default Form\n","import { useState, useCallback } from \"react\"\nimport type { ReactNode } from \"react\"\nimport { ZodError, type ZodType } from \"zod\"\nimport type { FormState } from \"../components/Form\"\n\nexport type HandleFormChange = (\n  key: string,\n  value: any,\n  index?: number,\n  arrName?: any\n) => void\nexport type HandleFormSelect = (key: string, value: any) => void\nexport type HandleChangeMultiSelect = (key: string, value: any) => void\nexport type HandleFormAdd = (key: string, value: any) => void\nexport type HandleFormSubmit = (cb: () => void) => void\nexport type HandleFormReset = () => void\n\nexport interface UseForm<T> {\n  handleChange: HandleFormChange\n  handleAdd?: HandleFormAdd\n  handleSelect: HandleFormSelect\n  handleChangeMultiSelect?: HandleChangeMultiSelect\n  handleSubmit: HandleFormSubmit\n  handleReset?: HandleFormReset\n  errors: Record<string, string>\n  values: T\n  setValues?: React.Dispatch<React.SetStateAction<T>>\n  selectedOption?: Record<string, any[]>\n  readonly?: boolean\n  isValid: boolean\n  isDirty: boolean\n  validateField?: (fieldName: string) => Promise<boolean>\n  validateAsync?: (\n    fieldName: string,\n    validator: (value: any) => Promise<boolean | string>\n  ) => Promise<boolean>\n  clearFieldError?: (fieldName: string) => void\n  touchedFields?: Set<string>\n  markFieldTouched?: (fieldName: string) => void\n}\n\nexport interface UseFormHook<T> {\n  handleChange: HandleFormChange\n  handleAdd?: HandleFormAdd\n  handleSelect: HandleFormSelect\n  handleChangeMultiSelect: HandleChangeMultiSelect\n  handleReset: HandleFormReset\n  values: T\n  setValues: React.Dispatch<React.SetStateAction<T>>\n  setErrors: React.Dispatch<Record<string, string>>\n  handleSubmit: HandleFormSubmit\n  errors: Record<string, string>\n  isValid: boolean\n  isDirty: boolean\n  validate: () => boolean\n  validateField: (fieldName: string) => Promise<boolean>\n  validateAsync: (\n    fieldName: string,\n    validator: (value: any) => Promise<boolean | string>\n  ) => Promise<boolean>\n  clearFieldError: (fieldName: string) => void\n  touchedFields: Set<string>\n  markFieldTouched: (fieldName: string) => void\n}\n\nexport type HandleForm<T = any> = (args: UseForm<T>) => FormState[]\nexport type HandleCustomForm = (args: UseForm<any>) => ReactNode\n\n/**\n * Extract errors from Zod validation error\n */\nconst extractErrors = (error: ZodError) =>\n  error.issues.reduce(\n    (accumulator: Record<string, any>, issue) => ({\n      ...accumulator,\n      [issue.path.join(\".\")]: issue.message,\n    }),\n    {}\n  )\n\n/**\n * Custom hook for form state management with Zod validation\n * @param initialState - Initial form values\n * @param validateSchema - Zod validation schema\n */\nexport const useForm = <T extends Record<string, any>>(\n  initialState: T,\n  validateSchema?: ZodType<T>\n): UseFormHook<T> => {\n  const [values, setValues] = useState<T>(initialState)\n  const [errors, setErrors] = useState<Record<string, string>>({})\n  const [isDirty, setIsDirty] = useState(false)\n  const [touchedFields, setTouchedFields] = useState<Set<string>>(new Set())\n\n  /**\n   * Update form values with support for nested arrays\n   */\n  const updateValues = useCallback(\n    (name: string, value: any, index?: number, arrName?: any) => {\n      setIsDirty(true)\n      setValues((prevInput: T) => {\n        // Handle array updates\n        if (typeof index === \"number\" && index >= 0) {\n          const newArr = [...(prevInput[name] as any[])]\n          newArr[index] = { ...newArr[index], [arrName]: value }\n          return { ...prevInput, [name]: newArr }\n        }\n\n        // Skip update if value hasn't changed\n        if (prevInput[name] === value) {\n          return prevInput\n        }\n\n        return { ...prevInput, [name]: value }\n      })\n\n      // Clear error for the field being updated\n      setErrors((prev) => {\n        const newErrors = { ...prev }\n        delete newErrors[name]\n        return newErrors\n      })\n    },\n    []\n  )\n\n  /**\n   * Handle form field changes\n   */\n  const handleChange = useCallback<HandleFormChange>(\n    (key: string, value: any, index?: number, arrName?: any) => {\n      updateValues(key, value, index, arrName)\n    },\n    [updateValues]\n  )\n\n  /**\n   * Handle multi-select field changes\n   */\n  const handleChangeMultiSelect = useCallback<HandleChangeMultiSelect>(\n    (name, value) => {\n      setIsDirty(true)\n      setValues((prevInput: T) => {\n        const newValue = typeof value === \"string\" ? value.split(\",\") : value\n\n        if (prevInput[name] === newValue) {\n          return prevInput\n        }\n\n        return { ...prevInput, [name]: newValue }\n      })\n\n      // Clear error for the field\n      setErrors((prev) => {\n        const newErrors = { ...prev }\n        delete newErrors[name]\n        return newErrors\n      })\n    },\n    []\n  )\n\n  /**\n   * Handle select field changes\n   */\n  const handleSelect = useCallback<HandleFormSelect>(\n    (name: string, value: any) => {\n      updateValues(name, value)\n    },\n    [updateValues]\n  )\n\n  /**\n   * Add or update form values\n   */\n  const handleAdd = useCallback<HandleFormAdd>((name, value) => {\n    setIsDirty(true)\n    setValues((prevInput: T) => {\n      return { ...prevInput, [name]: value }\n    })\n  }, [])\n\n  /**\n   * Reset form to initial state\n   */\n  const handleReset = useCallback<HandleFormReset>(() => {\n    setValues(initialState)\n    setErrors({})\n    setIsDirty(false)\n    setTouchedFields(new Set())\n  }, [initialState])\n\n  /**\n   * Mark a field as touched\n   */\n  const markFieldTouched = useCallback((fieldName: string) => {\n    setTouchedFields((prev) => new Set(prev).add(fieldName))\n  }, [])\n\n  /**\n   * Clear error for a specific field\n   */\n  const clearFieldError = useCallback((fieldName: string) => {\n    setErrors((prev) => {\n      const newErrors = { ...prev }\n      delete newErrors[fieldName]\n      return newErrors\n    })\n  }, [])\n\n  /**\n   * Validate a single field using Zod schema\n   */\n  const validateField = useCallback(\n    async (fieldName: string): Promise<boolean> => {\n      if (!validateSchema) {\n        clearFieldError(fieldName)\n        return true\n      }\n\n      try {\n        // Check if the schema has a shape property (object schema)\n        const schemaShape = (validateSchema as any).shape\n\n        if (schemaShape && schemaShape[fieldName]) {\n          // Validate single field\n          await schemaShape[fieldName].parseAsync(values[fieldName])\n          clearFieldError(fieldName)\n          return true\n        } else {\n          // If field not in schema or schema doesn't have shape, validate entire form\n          // and extract error for this field\n          try {\n            await validateSchema.parseAsync(values)\n            clearFieldError(fieldName)\n            return true\n          } catch (error) {\n            if (error instanceof ZodError) {\n              const fieldErrors = extractErrors(error)\n              if (fieldErrors[fieldName]) {\n                setErrors((prev) => ({\n                  ...prev,\n                  [fieldName]: fieldErrors[fieldName],\n                }))\n                return false\n              }\n              clearFieldError(fieldName)\n              return true\n            }\n          }\n        }\n        return true\n      } catch (error) {\n        if (error instanceof ZodError) {\n          const fieldError = error.issues[0]?.message || \"Invalid value\"\n          setErrors((prev) => ({\n            ...prev,\n            [fieldName]: fieldError,\n          }))\n          return false\n        }\n        return false\n      }\n    },\n    [validateSchema, values, clearFieldError]\n  )\n\n  /**\n   * Validate a field with a custom async validator\n   * @param fieldName - Name of the field to validate\n   * @param validator - Async function that returns true if valid, or error message string if invalid\n   */\n  const validateAsync = useCallback(\n    async (\n      fieldName: string,\n      validator: (value: any) => Promise<boolean | string>\n    ): Promise<boolean> => {\n      try {\n        const result = await validator(values[fieldName])\n\n        if (result === true) {\n          clearFieldError(fieldName)\n          return true\n        } else if (typeof result === \"string\") {\n          setErrors((prev) => ({\n            ...prev,\n            [fieldName]: result,\n          }))\n          return false\n        }\n        return true\n      } catch (error) {\n        const errorMessage =\n          error instanceof Error ? error.message : \"Validation failed\"\n        setErrors((prev) => ({\n          ...prev,\n          [fieldName]: errorMessage,\n        }))\n        return false\n      }\n    },\n    [values, clearFieldError]\n  )\n\n  /**\n   * Validate form values using Zod schema\n   */\n  const validate = useCallback((): boolean => {\n    if (!validateSchema) {\n      setErrors({})\n      return true\n    }\n\n    try {\n      validateSchema.parse(values)\n      setErrors({})\n      return true\n    } catch (error) {\n      if (error instanceof ZodError) {\n        const validationErrors = extractErrors(error)\n        setErrors(validationErrors)\n        return false\n      }\n      return false\n    }\n  }, [validateSchema, values])\n\n  /**\n   * Handle form submission with validation\n   */\n  const handleSubmit = useCallback<HandleFormSubmit>(\n    (cb) => {\n      if (validate()) {\n        cb()\n      }\n    },\n    [validate]\n  )\n\n  // Check if form is valid\n  const isValid = Object.keys(errors).length === 0\n\n  return {\n    handleChange,\n    handleAdd,\n    handleSelect,\n    handleChangeMultiSelect,\n    handleReset,\n    values,\n    setValues,\n    setErrors,\n    handleSubmit,\n    errors,\n    isValid,\n    isDirty,\n    validate,\n    validateField,\n    validateAsync,\n    clearFieldError,\n    touchedFields,\n    markFieldTouched,\n  }\n}\n","import React, { createContext, useContext } from \"react\"\nimport type { ReactNode } from \"react\"\nimport type {\n  HandleFormChange,\n  HandleFormSelect,\n  HandleChangeMultiSelect,\n  HandleFormAdd,\n  HandleFormSubmit,\n  HandleFormReset,\n} from \"../hooks/useForm\"\n\nexport interface FormContextValue<T = any> {\n  values: T\n  errors: Record<string, string>\n  handleChange: HandleFormChange\n  handleSelect: HandleFormSelect\n  handleChangeMultiSelect: HandleChangeMultiSelect\n  handleAdd?: HandleFormAdd\n  handleSubmit: HandleFormSubmit\n  handleReset: HandleFormReset\n  setValues: React.Dispatch<React.SetStateAction<T>>\n  setErrors: React.Dispatch<Record<string, string>>\n  isValid: boolean\n  isDirty: boolean\n  validate: () => boolean\n  validateField?: (fieldName: string) => Promise<boolean>\n  validateAsync?: (\n    fieldName: string,\n    validator: (value: any) => Promise<boolean | string>\n  ) => Promise<boolean>\n  clearFieldError?: (fieldName: string) => void\n  touchedFields?: Set<string>\n  markFieldTouched?: (fieldName: string) => void\n}\n\nconst FormContext = createContext<FormContextValue | null>(null)\n\nexport interface FormProviderProps<T = any> {\n  children: ReactNode\n  value: FormContextValue<T>\n}\n\nexport const FormProvider = <T extends any = any>({\n  children,\n  value,\n}: FormProviderProps<T>) => {\n  return <FormContext.Provider value={value}>{children}</FormContext.Provider>\n}\n\n/**\n * Hook to access form context\n * Must be used within a FormProvider\n */\nexport function useFormContext<T = any>(): FormContextValue<T> {\n  const context = useContext(FormContext)\n\n  if (!context) {\n    throw new Error(\n      \"useFormContext must be used within a FormProvider. \" +\n        \"Wrap your component with <FormProvider> or use the FormModule/FormDialog components.\"\n    )\n  }\n\n  return context as FormContextValue<T>\n}\n\n/**\n * Hook to safely access form context (returns null if not in provider)\n */\nexport function useSafeFormContext<T = any>(): FormContextValue<T> | null {\n  return useContext(FormContext) as FormContextValue<T> | null\n}\n","import React, { forwardRef, useImperativeHandle } from \"react\"\nimport type { ReactNode, CSSProperties } from \"react\"\nimport type { ZodType } from \"zod\"\nimport { Form as FormComponent } from \"../../components/Form\"\nimport { useForm } from \"../../hooks/useForm\"\nimport type { HandleForm } from \"../../hooks/useForm\"\nimport { FormProvider } from \"../../contexts/FormContext\"\n\nexport interface FormModuleProps<T = any> {\n  handleForm: HandleForm<T>\n  validate?: ZodType<T>\n  formStyle?: CSSProperties\n  className?: string\n  children?: ReactNode\n  onSubmit?: (data: T) => void\n  submitButtonText?: string\n  submitButtonStyle?: CSSProperties\n  submitButtonClassName?: string\n  onReset?: () => void\n  resetButtonText?: string\n  resetButtonStyle?: CSSProperties\n  resetButtonClassName?: string\n  initialValues?: T\n  showButtons?: boolean\n}\n\nexport interface FormModuleRef<T = any> {\n  setValues: (data: T) => void\n  getValues: () => T\n  reset: () => void\n  validate: () => boolean\n  setErrors: (errors: Record<string, string>) => void\n}\n\nconst FormModule = forwardRef<FormModuleRef, FormModuleProps>(\n  (\n    {\n      handleForm,\n      validate,\n      formStyle,\n      className = \"\",\n      onSubmit,\n      submitButtonText = \"Submit\",\n      submitButtonStyle = {},\n      submitButtonClassName = \"\",\n      onReset,\n      resetButtonText = \"Reset\",\n      resetButtonStyle = {},\n      resetButtonClassName = \"\",\n      initialValues = {} as any,\n      showButtons = true,\n      children,\n    },\n    ref\n  ) => {\n    const formHook = useForm(initialValues, validate)\n\n    const {\n      handleChange,\n      handleSelect,\n      values,\n      errors,\n      handleChangeMultiSelect,\n      handleSubmit,\n      handleReset,\n      setValues,\n      setErrors,\n      validate: validateForm,\n      isValid,\n      isDirty,\n    } = formHook\n\n    const form = handleForm({\n      handleChange,\n      handleSelect,\n      values,\n      errors,\n      handleChangeMultiSelect,\n      handleSubmit,\n      handleReset,\n      setValues,\n      isValid,\n      isDirty,\n    })\n\n    useImperativeHandle(ref, () => ({\n      setValues: (data: any) => setValues(data),\n      getValues: () => values,\n      reset: handleReset,\n      validate: validateForm,\n      setErrors: (errors: Record<string, string>) => setErrors(errors),\n    }))\n\n    return (\n      <FormProvider value={formHook}>\n        <div className={`form-module ${className}`}>\n          <FormComponent form={form} style={formStyle} />\n\n          {showButtons && (\n            <div\n              className=\"form-module-actions\"\n              style={{ display: \"flex\", gap: \"1rem\", marginTop: \"1rem\" }}\n            >\n              {submitButtonText && onSubmit && (\n                <button\n                  type=\"button\"\n                  className={`form-submit-button ${submitButtonClassName}`}\n                  onClick={() => handleSubmit(() => onSubmit(values))}\n                  style={{\n                    padding: \"0.5rem 1rem\",\n                    backgroundColor: \"#007bff\",\n                    color: \"white\",\n                    border: \"none\",\n                    borderRadius: \"4px\",\n                    cursor: \"pointer\",\n                    fontSize: \"1rem\",\n                    fontWeight: 500,\n                    transition: \"background-color 0.2s\",\n                    ...submitButtonStyle,\n                  }}\n                >\n                  {submitButtonText}\n                </button>\n              )}\n\n              {resetButtonText && (\n                <button\n                  type=\"button\"\n                  className={`form-reset-button ${resetButtonClassName}`}\n                  onClick={() => {\n                    handleReset()\n                    if (onReset) onReset()\n                  }}\n                  style={{\n                    padding: \"0.5rem 1rem\",\n                    backgroundColor: \"#6c757d\",\n                    color: \"white\",\n                    border: \"none\",\n                    borderRadius: \"4px\",\n                    cursor: \"pointer\",\n                    fontSize: \"1rem\",\n                    fontWeight: 500,\n                    transition: \"background-color 0.2s\",\n                    ...resetButtonStyle,\n                  }}\n                >\n                  {resetButtonText}\n                </button>\n              )}\n            </div>\n          )}\n\n          {children}\n        </div>\n      </FormProvider>\n    )\n  }\n)\n\nFormModule.displayName = \"FormModule\"\nexport default FormModule\n","import React, { forwardRef, useImperativeHandle, useState } from \"react\"\nimport type { ReactNode, CSSProperties } from \"react\"\nimport type { ZodType } from \"zod\"\nimport { Form } from \"../../components/Form\"\nimport { useForm } from \"../../hooks/useForm\"\nimport type { HandleForm } from \"../../hooks/useForm\"\nimport { FormProvider } from \"../../contexts/FormContext\"\n\nexport interface FormDialogConfig {\n  title?: ReactNode\n  showCloseButton?: boolean\n  showCancelButton?: boolean\n  showSubmitButton?: boolean\n  maxWidth?: string | number\n  readonly?: boolean\n  customButtons?: Array<{\n    label: string\n    variant?: \"primary\" | \"secondary\" | \"danger\"\n    action: (values: any) => void\n  }>\n}\n\nexport interface FormDialogProps<T = any> {\n  onSubmit?: (data: T, actionType?: string) => void\n  onClose?: () => void\n  handleForm: HandleForm<T>\n  validate?: ZodType<T>\n  formStyle?: CSSProperties\n  dialogStyle?: CSSProperties\n  overlayStyle?: CSSProperties\n  closeOnBackdropClick?: boolean\n  fullScreen?: boolean\n  dialogName?: string\n  children?: ReactNode\n  submitButtonText?: string\n  cancelButtonText?: string\n}\n\nexport interface FormDialogRef<T = any> {\n  open: (config: FormDialogConfig, initialValues?: T) => void\n  close: () => void\n  setValues: (data: T) => void\n  getValues: () => T\n}\n\nconst FormDialog = forwardRef<FormDialogRef, FormDialogProps>(\n  (\n    {\n      onSubmit,\n      onClose,\n      handleForm,\n      validate,\n      formStyle,\n      dialogStyle = {},\n      overlayStyle = {},\n      closeOnBackdropClick = true,\n      fullScreen = false,\n      dialogName,\n      children,\n      submitButtonText = \"Submit\",\n      cancelButtonText = \"Cancel\",\n    },\n    ref\n  ) => {\n    const [isOpen, setIsOpen] = useState(false)\n    const [config, setConfig] = useState<FormDialogConfig>({\n      title: \"\",\n      showCloseButton: true,\n      showCancelButton: true,\n      showSubmitButton: true,\n      readonly: false,\n    })\n\n    const formHook = useForm({} as any, validate)\n\n    const {\n      handleChange,\n      handleSelect,\n      values,\n      setValues,\n      errors,\n      handleChangeMultiSelect,\n      handleSubmit,\n      handleReset,\n      setErrors,\n      isValid,\n      isDirty,\n    } = formHook\n\n    const form = handleForm({\n      handleChange,\n      handleSelect,\n      values,\n      errors,\n      handleChangeMultiSelect,\n      handleSubmit,\n      handleReset,\n      setValues,\n      readonly: config.readonly,\n      isValid,\n      isDirty,\n    })\n\n    useImperativeHandle(ref, () => ({\n      open(configure: FormDialogConfig, initialValues: any = {}) {\n        setValues(initialValues)\n        setConfig({ ...config, ...configure })\n        setIsOpen(true)\n      },\n      close() {\n        setIsOpen(false)\n        setValues({} as any)\n        setErrors({})\n      },\n      setValues: (data: any) => setValues(data),\n      getValues: () => values,\n    }))\n\n    const handleClose = () => {\n      setIsOpen(false)\n      setValues({} as any)\n      setErrors({})\n      if (onClose) onClose()\n    }\n\n    const handleBackdropClick = () => {\n      if (closeOnBackdropClick) {\n        handleClose()\n      }\n    }\n\n    if (!isOpen) return null\n\n    return (\n      <FormProvider value={formHook}>\n        <div\n          className=\"form-dialog-overlay\"\n          style={{\n            position: \"fixed\",\n            top: 0,\n            left: 0,\n            right: 0,\n            bottom: 0,\n            backgroundColor: \"rgba(0, 0, 0, 0.5)\",\n            display: \"flex\",\n            alignItems: \"center\",\n            justifyContent: \"center\",\n            zIndex: 1000,\n            ...overlayStyle,\n          }}\n          onClick={handleBackdropClick}\n        >\n          <div\n            className={`form-dialog ${dialogName || \"\"}`}\n            style={{\n              backgroundColor: \"white\",\n              borderRadius: \"8px\",\n              padding: \"1.5rem\",\n              maxWidth: fullScreen ? \"100%\" : config.maxWidth || \"600px\",\n              width: fullScreen ? \"100%\" : \"90%\",\n              maxHeight: fullScreen ? \"100%\" : \"90vh\",\n              overflowY: \"auto\",\n              position: \"relative\",\n              ...dialogStyle,\n            }}\n            onClick={(e) => e.stopPropagation()}\n          >\n            {/* Dialog Header */}\n            <div\n              className=\"form-dialog-header\"\n              style={{\n                display: \"flex\",\n                justifyContent: \"space-between\",\n                alignItems: \"center\",\n                marginBottom: \"1.5rem\",\n                borderBottom: \"1px solid #e0e0e0\",\n                paddingBottom: \"1rem\",\n              }}\n            >\n              <h2 style={{ margin: 0, fontSize: \"1.5rem\" }}>{config.title}</h2>\n              {config.showCloseButton && (\n                <button\n                  onClick={handleClose}\n                  style={{\n                    background: \"none\",\n                    border: \"none\",\n                    fontSize: \"1.5rem\",\n                    cursor: \"pointer\",\n                    color: \"#666\",\n                  }}\n                >\n                  ×\n                </button>\n              )}\n            </div>\n\n            {/* Dialog Content */}\n            <div className=\"form-dialog-content\">\n              <Form form={form} style={formStyle} />\n            </div>\n\n            {/* Dialog Footer */}\n            <div\n              className=\"form-dialog-footer\"\n              style={{\n                display: \"flex\",\n                justifyContent: \"flex-end\",\n                gap: \"0.75rem\",\n                marginTop: \"1.5rem\",\n                paddingTop: \"1rem\",\n                borderTop: \"1px solid #e0e0e0\",\n              }}\n            >\n              {config.customButtons?.map((button, index) => (\n                <button\n                  key={index}\n                  type=\"button\"\n                  onClick={() => button.action(values)}\n                  style={{\n                    padding: \"0.5rem 1rem\",\n                    border: \"none\",\n                    borderRadius: \"4px\",\n                    cursor: \"pointer\",\n                    fontSize: \"1rem\",\n                    backgroundColor:\n                      button.variant === \"danger\"\n                        ? \"#dc3545\"\n                        : button.variant === \"secondary\"\n                        ? \"#6c757d\"\n                        : \"#007bff\",\n                    color: \"white\",\n                  }}\n                >\n                  {button.label}\n                </button>\n              ))}\n\n              {config.showCancelButton && (\n                <button\n                  type=\"button\"\n                  onClick={handleClose}\n                  style={{\n                    padding: \"0.5rem 1rem\",\n                    backgroundColor: \"#6c757d\",\n                    color: \"white\",\n                    border: \"none\",\n                    borderRadius: \"4px\",\n                    cursor: \"pointer\",\n                    fontSize: \"1rem\",\n                  }}\n                >\n                  {cancelButtonText}\n                </button>\n              )}\n\n              {config.showSubmitButton && onSubmit && (\n                <button\n                  type=\"button\"\n                  onClick={() => handleSubmit(() => onSubmit(values))}\n                  style={{\n                    padding: \"0.5rem 1rem\",\n                    backgroundColor: \"#007bff\",\n                    color: \"white\",\n                    border: \"none\",\n                    borderRadius: \"4px\",\n                    cursor: \"pointer\",\n                    fontSize: \"1rem\",\n                  }}\n                >\n                  {submitButtonText}\n                </button>\n              )}\n            </div>\n\n            {children}\n          </div>\n        </div>\n      </FormProvider>\n    )\n  }\n)\n\nFormDialog.displayName = \"FormDialog\"\nexport default FormDialog\n","import { useEffect, useState } from 'react'\n\nexport const useDebounce = (val: string, delay: number) => {\n\tconst [value, setValue] = useState<string>('')\n\n\tuseEffect(() => {\n\t\tconst handler = setTimeout(() => {\n\t\t\tsetValue(val)\n\t\t}, delay)\n\t\treturn () => {\n\t\t\tclearTimeout(handler)\n\t\t}\n\t}, [val, delay])\n\n\treturn value\n}\n","import { z } from \"zod\"\n\n/**\n * Common validation schemas for reuse\n */\n\nexport const validators = {\n  // String validators\n  email: z.email(\"Invalid email address\"),\n  url: z.url(\"Invalid URL\"),\n  uuid: z.uuid(\"Invalid UUID\"),\n\n  // Common string patterns\n  username: z\n    .string()\n    .min(3, \"Username must be at least 3 characters\")\n    .max(20, \"Username must be less than 20 characters\")\n    .regex(\n      /^[a-zA-Z0-9_]+$/,\n      \"Username can only contain letters, numbers, and underscores\"\n    ),\n\n  password: z\n    .string()\n    .min(8, \"Password must be at least 8 characters\")\n    .regex(/[A-Z]/, \"Password must contain at least one uppercase letter\")\n    .regex(/[a-z]/, \"Password must contain at least one lowercase letter\")\n    .regex(/[0-9]/, \"Password must contain at least one number\"),\n\n  strongPassword: z\n    .string()\n    .min(12, \"Password must be at least 12 characters\")\n    .regex(/[A-Z]/, \"Password must contain at least one uppercase letter\")\n    .regex(/[a-z]/, \"Password must contain at least one lowercase letter\")\n    .regex(/[0-9]/, \"Password must contain at least one number\")\n    .regex(\n      /[^a-zA-Z0-9]/,\n      \"Password must contain at least one special character\"\n    ),\n\n  phone: z.string().regex(/^[\\d\\s\\-\\+\\(\\)]+$/, \"Invalid phone number format\"),\n\n  // Number validators\n  positiveNumber: z.number().positive(\"Must be a positive number\"),\n  age: z.number().min(0, \"Age must be 0 or greater\").max(150, \"Invalid age\"),\n  percentage: z\n    .number()\n    .min(0, \"Must be at least 0\")\n    .max(100, \"Must be at most 100\"),\n\n  // Date validators\n  futureDate: z.date().refine((date) => date > new Date(), {\n    message: \"Date must be in the future\",\n  }),\n  pastDate: z.date().refine((date) => date < new Date(), {\n    message: \"Date must be in the past\",\n  }),\n\n  // Array validators\n  nonEmptyArray: z.array(z.any()).min(1, \"At least one item is required\"),\n}\n\n/**\n * Helper function to create a password confirmation schema\n */\nexport function createPasswordConfirmationSchema() {\n  return z\n    .object({\n      password: validators.password,\n      confirmPassword: z.string(),\n    })\n    .refine((data) => data.password === data.confirmPassword, {\n      message: \"Passwords don't match\",\n      path: [\"confirmPassword\"],\n    })\n}\n\n/**\n * Helper function to create a date range schema\n */\nexport function createDateRangeSchema() {\n  return z\n    .object({\n      startDate: z.date(),\n      endDate: z.date(),\n    })\n    .refine((data) => data.endDate > data.startDate, {\n      message: \"End date must be after start date\",\n      path: [\"endDate\"],\n    })\n}\n\n/**\n * Helper function to create a file upload schema\n */\nexport function createFileSchema(options?: {\n  maxSize?: number // in bytes\n  allowedTypes?: string[]\n}) {\n  const { maxSize = 5 * 1024 * 1024, allowedTypes = [] } = options || {}\n\n  return z\n    .instanceof(File)\n    .refine((file) => file.size <= maxSize, {\n      message: `File size must be less than ${maxSize / (1024 * 1024)}MB`,\n    })\n    .refine(\n      (file) => allowedTypes.length === 0 || allowedTypes.includes(file.type),\n      {\n        message: `File type must be one of: ${allowedTypes.join(\", \")}`,\n      }\n    )\n}\n\n/**\n * Utility to transform empty strings to undefined\n * Useful for optional fields that might be empty strings\n */\nexport const emptyStringToUndefined = z\n  .string()\n  .transform((val) => (val === \"\" ? undefined : val))\n\n/**\n * Utility to transform string to number\n */\nexport const stringToNumber = z\n  .string()\n  .transform((val) => (val === \"\" ? undefined : Number(val)))\n  .pipe(z.number().optional())\n\n/**\n * Common schema patterns\n */\nexport const schemaPatterns = {\n  // User registration\n  userRegistration: z\n    .object({\n      username: validators.username,\n      email: validators.email,\n      password: validators.password,\n      confirmPassword: z.string(),\n      agreeToTerms: z.boolean().refine((val) => val === true, {\n        message: \"You must agree to the terms\",\n      }),\n    })\n    .refine((data) => data.password === data.confirmPassword, {\n      message: \"Passwords don't match\",\n      path: [\"confirmPassword\"],\n    }),\n\n  // User login\n  userLogin: z.object({\n    email: validators.email,\n    password: z.string().min(1, \"Password is required\"),\n    rememberMe: z.boolean().optional(),\n  }),\n\n  // Contact form\n  contactForm: z.object({\n    name: z.string().min(1, \"Name is required\"),\n    email: validators.email,\n    subject: z.string().min(1, \"Subject is required\"),\n    message: z.string().min(10, \"Message must be at least 10 characters\"),\n  }),\n\n  // Address\n  address: z.object({\n    street: z.string().min(1, \"Street is required\"),\n    city: z.string().min(1, \"City is required\"),\n    state: z.string().min(1, \"State is required\"),\n    zipCode: z.string().regex(/^\\d{5}(-\\d{4})?$/, \"Invalid ZIP code\"),\n    country: z.string().min(1, \"Country is required\"),\n  }),\n}\n\n/**\n * Example usage:\n *\n * import { validators, schemaPatterns } from 'reactive-form-forge/validators'\n *\n * const mySchema = z.object({\n *   email: validators.email,\n *   password: validators.strongPassword,\n *   age: validators.age,\n * })\n *\n * // Or use a pre-built pattern\n * const loginSchema = schemaPatterns.userLogin\n */\n"]}