dynamic-formik-form 1.0.3 → 1.0.4

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/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/context/FormContext.tsx","../src/adapters/default.adapter.tsx","../src/adapters/mui.adapter.tsx","../src/adapters/bootstrap.adapter.tsx","../src/adapters/antd.adapter.tsx","../src/icons/default.icons.tsx","../src/utils/formik.utils.ts","../src/components/fields/EmptyField.tsx","../src/components/shared/FieldWrapper.tsx","../src/components/shared/IconRenderer.tsx","../src/components/shared/FieldLabel.tsx","../src/utils/field.utils.ts","../src/components/shared/FieldError.tsx","../src/components/fields/TextField.tsx","../src/components/shared/FieldDescription.tsx","../src/components/fields/LinkField.tsx","../src/components/fields/ComponentField.tsx","../src/components/fields/CustomField.tsx","../src/components/fields/InputField.tsx","../src/components/fields/TextareaField.tsx","../src/components/fields/CheckboxField.tsx","../src/components/fields/RadioField.tsx","../src/components/fields/DropdownField.tsx","../src/components/fields/ToggleField.tsx","../src/components/fields/FileUploadField.tsx","../src/components/fields/SingleSelectField.tsx","../src/components/fields/MultiSelectField.tsx","../src/components/fields/AsyncSelectField.tsx","../src/components/fields/DatePickerField.tsx","../src/components/fields/DateTimePickerField.tsx","../src/components/fields/DeleteField.tsx","../src/components/fields/CounterField.tsx","../src/hooks/useTranslation.ts","../src/components/fields/FieldArrayField.tsx","../src/components/fields/AttributeField.tsx","../src/components/fields/EditableDivField.tsx","../src/components/DynamicForm.tsx","../src/icons/mui.icons.tsx","../src/icons/bootstrap.icons.tsx","../src/icons/antd.icons.tsx","../src/utils/validation.utils.ts"],"names":["createContext","jsx","useContext","jsxs","TextField","React","Fragment","useState","useCallback","label","valuesArray","useRef","useEffect","fieldValue"],"mappings":"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","file":"index.js","sourcesContent":["import React, { createContext, useContext, ReactNode } from 'react';\nimport { FormikProps } from 'formik';\nimport { UILibraryConfig } from '../types/ui-library.types';\n\n/**\n * Form context that provides:\n * - UI library adapter\n * - Icon library\n * - Formik instance\n */\ninterface FormContextValue {\n uiLibrary: UILibraryConfig;\n formik: FormikProps<Record<string, unknown>>;\n}\n\nconst FormContext = createContext<FormContextValue | null>(null);\n\ninterface FormProviderProps {\n children: ReactNode;\n uiLibrary: UILibraryConfig;\n formik: FormikProps<Record<string, unknown>>;\n}\n\nexport const FormProvider: React.FC<FormProviderProps> = ({\n children,\n uiLibrary,\n formik,\n}) => {\n return (\n <FormContext.Provider value={{ uiLibrary, formik }}>\n {children}\n </FormContext.Provider>\n );\n};\n\nexport const useFormContext = (): FormContextValue => {\n const context = useContext(FormContext);\n if (!context) {\n throw new Error('useFormContext must be used within FormProvider');\n }\n return context;\n};\n\n","import React, { ComponentType, ReactNode } from 'react';\nimport { UILibraryAdapter } from '../types/ui-library.types';\n\n/**\n * Default HTML adapter - uses native HTML elements\n * This is a fallback when no UI library is provided\n */\nexport const defaultAdapter: UILibraryAdapter = {\n Input: ({ className, disabled, error, ...props }) => (\n <input\n className={`${className || ''} ${error ? 'error' : ''}`}\n disabled={disabled}\n {...props}\n />\n ),\n\n Textarea: ({ className, disabled, error, ...props }) => (\n <textarea\n className={`${className || ''} ${error ? 'error' : ''}`}\n disabled={disabled}\n {...props}\n />\n ),\n\n Select: ({ className, disabled, error, children, ...props }) => (\n <select\n className={`${className || ''} ${error ? 'error' : ''}`}\n disabled={disabled}\n {...props}\n >\n {children}\n </select>\n ),\n\n Checkbox: ({ className, disabled, label, ...props }) => (\n <label className={className}>\n <input type=\"checkbox\" disabled={disabled} {...props} />\n {label}\n </label>\n ),\n\n Radio: ({ className, disabled, label, ...props }) => (\n <label className={className}>\n <input type=\"radio\" disabled={disabled} {...props} />\n {label}\n </label>\n ),\n\n Switch: ({ className, disabled, ...props }) => (\n <input\n type=\"checkbox\"\n className={`switch ${className || ''}`}\n disabled={disabled}\n {...props}\n />\n ),\n\n Button: ({ className, disabled, children, ...props }) => (\n <button className={className} disabled={disabled} {...props}>\n {children}\n </button>\n ),\n\n FormControl: ({ className, children }) => (\n <div className={`form-control ${className || ''}`}>{children}</div>\n ),\n\n FormHelperText: ({ className, children }) => (\n <small className={`form-helper-text ${className || ''}`}>{children}</small>\n ),\n\n Label: ({ className, htmlFor, children }) => (\n <label className={className} htmlFor={htmlFor}>\n {children}\n </label>\n ),\n\n Box: ({ className, children, ...props }) => (\n <div className={className} {...props}>\n {children}\n </div>\n ),\n\n Paper: ({ className, children }) => (\n <div className={`paper ${className || ''}`}>{children}</div>\n ),\n\n Popover: ({ open, anchorEl, onClose, children, anchorOrigin }) => {\n if (!open || !anchorEl) return null;\n \n const rect = anchorEl.getBoundingClientRect();\n const style: React.CSSProperties = {\n position: 'fixed',\n top: `${rect.bottom}px`,\n left: `${rect.left}px`,\n zIndex: 1000,\n };\n\n return (\n <div className=\"popover\" style={style} onClick={onClose}>\n {children}\n </div>\n );\n },\n\n MenuItem: ({ className, onClick, children }) => (\n <div className={`menu-item ${className || ''}`} onClick={onClick}>\n {children}\n </div>\n ),\n\n Typography: ({ className, variant, children }) => (\n <div className={`typography typography-${variant || 'body1'} ${className || ''}`}>\n {children}\n </div>\n ),\n\n IconButton: ({ className, size, onClick, children, ...props }) => (\n <button\n type=\"button\"\n className={`icon-button icon-button-${size || 'medium'} ${className || ''}`}\n onClick={onClick}\n {...props}\n >\n {children}\n </button>\n ),\n};\n\n","/**\n * Material-UI Adapter Example\n * \n * This is an example adapter showing how to integrate Material-UI components.\n * Users need to install @mui/material and @mui/x-date-pickers as peer dependencies.\n * \n * Usage:\n * import { muiAdapter } from 'dynamic-formik-form/adapters/mui';\n * import { muiIcons } from 'dynamic-formik-form/icons/mui';\n * \n * <DynamicForm\n * uiLibrary={{ adapter: muiAdapter, icons: muiIcons, name: 'mui' }}\n * ...\n * />\n */\n\nimport React, { ComponentType } from 'react';\nimport { UILibraryAdapter } from '../types/ui-library.types';\n\n// These would be imported from @mui/material in actual usage\n// For now, we'll create type-safe stubs that show the pattern\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype MUIComponent = ComponentType<any>;\n\n/**\n * Material-UI Adapter\n * \n * NOTE: This is a template. In actual usage, you would:\n * 1. Install @mui/material, @mui/x-date-pickers as peer dependencies\n * 2. Import actual MUI components\n * 3. Map them to the adapter interface\n */\nexport const createMUIAdapter = (\n // These would be the actual MUI imports\n Box: MUIComponent,\n Button: MUIComponent,\n Checkbox: MUIComponent,\n FormControl: MUIComponent,\n FormControlLabel: MUIComponent,\n FormHelperText: MUIComponent,\n IconButton: MUIComponent,\n MenuItem: MUIComponent,\n Paper: MUIComponent,\n Popover: MUIComponent,\n Radio: MUIComponent,\n RadioGroup: MUIComponent,\n Switch: MUIComponent,\n TextField: MUIComponent,\n Typography: MUIComponent,\n DatePicker?: MUIComponent,\n DateTimePicker?: MUIComponent\n): UILibraryAdapter => {\n return {\n Input: ({ className, disabled, error, type, ...props }) => {\n // Exclude error from props to avoid React warnings\n const { error: _, ...restProps } = props as { error?: boolean; [key: string]: unknown };\n return (\n <TextField\n {...restProps}\n type={type}\n disabled={disabled}\n error={!!error}\n className={className}\n fullWidth\n variant=\"outlined\"\n />\n );\n },\n\n Textarea: ({ className, disabled, error, rows, ...props }) => {\n // Exclude error from props to avoid React warnings\n const { error: _, ...restProps } = props as { error?: boolean; [key: string]: unknown };\n return (\n <TextField\n {...restProps}\n multiline\n rows={rows || 4}\n disabled={disabled}\n error={!!error}\n className={className}\n fullWidth\n variant=\"outlined\"\n />\n );\n },\n\n Select: ({ className, disabled, error, children, ...props }) => {\n // Exclude error from props to avoid React warnings\n const { error: _, ...restProps } = props as { error?: boolean; [key: string]: unknown };\n return (\n <TextField\n {...restProps}\n select\n disabled={disabled}\n error={!!error}\n className={className}\n fullWidth\n variant=\"outlined\"\n >\n {children}\n </TextField>\n );\n },\n\n Checkbox: ({ className, disabled, label, ...props }) => (\n <FormControlLabel\n control={\n <Checkbox\n {...props}\n disabled={disabled}\n className={className}\n color=\"primary\"\n />\n }\n label={label}\n />\n ),\n\n Radio: ({ className, disabled, label, ...props }) => (\n <FormControlLabel\n control={\n <Radio\n {...props}\n disabled={disabled}\n className={className}\n color=\"primary\"\n />\n }\n label={label}\n />\n ),\n\n Switch: ({ className, disabled, ...props }) => (\n <Switch\n {...props}\n disabled={disabled}\n className={className}\n color=\"primary\"\n />\n ),\n\n Button: ({ className, disabled, children, variant, ...props }) => (\n <Button\n {...props}\n disabled={disabled}\n className={className}\n variant={variant || 'contained'}\n color=\"primary\"\n >\n {children}\n </Button>\n ),\n\n FormControl: ({ className, required, error, children }) => (\n <FormControl\n className={className}\n required={required}\n error={!!error}\n fullWidth\n >\n {children}\n </FormControl>\n ),\n\n FormHelperText: ({ className, children }) => (\n <FormHelperText className={className}>{children}</FormHelperText>\n ),\n\n Label: ({ className, htmlFor, children }) => (\n <Typography\n component=\"label\"\n htmlFor={htmlFor}\n className={className}\n variant=\"body2\"\n fontWeight=\"medium\"\n >\n {children}\n </Typography>\n ),\n\n Box: ({ className, sx, children, ...props }) => (\n <Box className={className} sx={sx} {...props}>\n {children}\n </Box>\n ),\n\n Paper: ({ className, elevation, children }) => (\n <Paper className={className} elevation={elevation || 3}>\n {children}\n </Paper>\n ),\n\n Popover: ({ open, anchorEl, onClose, anchorOrigin, children }) => (\n <Popover\n open={open}\n anchorEl={anchorEl}\n onClose={onClose}\n anchorOrigin={\n anchorOrigin || { vertical: 'bottom', horizontal: 'left' }\n }\n >\n {children}\n </Popover>\n ),\n\n MenuItem: ({ className, onClick, children }) => (\n <MenuItem className={className} onClick={onClick}>\n {children}\n </MenuItem>\n ),\n\n Typography: ({ className, variant, color, children }) => (\n <Typography className={className} variant={variant} color={color}>\n {children}\n </Typography>\n ),\n\n IconButton: ({ className, size, onClick, children, ...props }) => (\n <IconButton\n className={className}\n size={size}\n onClick={onClick}\n {...props}\n >\n {children}\n </IconButton>\n ),\n\n DatePicker: DatePicker\n ? ({ value, onChange, format, disabled, ...props }) => (\n <DatePicker\n value={value}\n onChange={onChange}\n format={format}\n disabled={disabled}\n {...props}\n />\n )\n : undefined,\n\n DateTimePicker: DateTimePicker\n ? ({ value, onChange, format, disabled, views, ...props }) => (\n <DateTimePicker\n value={value}\n onChange={onChange}\n format={format}\n disabled={disabled}\n views={views}\n {...props}\n />\n )\n : undefined,\n\n TextField: TextField\n ? ({ inputRef, inputProps, label, id, error, helperText, ...props }) => {\n // Exclude error from props to avoid React warnings\n const { error: _, ...restProps } = props as { error?: boolean; [key: string]: unknown };\n return (\n <TextField\n inputRef={inputRef}\n inputProps={inputProps}\n label={label}\n id={id}\n error={!!error}\n helperText={helperText}\n {...restProps}\n fullWidth\n variant=\"outlined\"\n />\n );\n }\n : undefined,\n };\n};\n\n/**\n * Example usage instructions:\n * \n * import {\n * Box,\n * Button,\n * Checkbox,\n * FormControl,\n * FormControlLabel,\n * FormHelperText,\n * IconButton,\n * MenuItem,\n * Paper,\n * Popover,\n * Radio,\n * RadioGroup,\n * Switch,\n * TextField,\n * Typography,\n * } from '@mui/material';\n * import { DatePicker, DateTimePicker } from '@mui/x-date-pickers';\n * \n * import { createMUIAdapter } from 'dynamic-formik-form/adapters/mui';\n * \n * export const muiAdapter = createMUIAdapter(\n * Box,\n * Button,\n * Checkbox,\n * FormControl,\n * FormControlLabel,\n * FormHelperText,\n * IconButton,\n * MenuItem,\n * Paper,\n * Popover,\n * Radio,\n * RadioGroup,\n * Switch,\n * TextField,\n * Typography,\n * DatePicker,\n * DateTimePicker\n * );\n */\n\n","/**\n * Bootstrap React Adapter Example\n * \n * This is an example adapter showing how to integrate Bootstrap React components.\n * Users need to install react-bootstrap or reactstrap as peer dependencies.\n * \n * Usage:\n * import { bootstrapAdapter } from 'dynamic-formik-form/adapters/bootstrap';\n * import { bootstrapIcons } from 'dynamic-formik-form/icons/bootstrap';\n * \n * <DynamicForm\n * uiLibrary={{ adapter: bootstrapAdapter, icons: bootstrapIcons, name: 'bootstrap' }}\n * ...\n * />\n */\n\nimport React, { ComponentType, ReactNode } from 'react';\nimport { UILibraryAdapter } from '../types/ui-library.types';\n\ntype BootstrapComponent = ComponentType<any>;\n\n/**\n * Bootstrap Adapter\n * \n * NOTE: This is a template. In actual usage, you would:\n * 1. Install react-bootstrap or reactstrap as peer dependencies\n * 2. Import actual Bootstrap components\n * 3. Map them to the adapter interface\n */\nexport const createBootstrapAdapter = (\n // These would be the actual Bootstrap imports\n Form: BootstrapComponent,\n FormControl: BootstrapComponent,\n FormLabel: BootstrapComponent,\n FormText: BootstrapComponent,\n FormCheck: BootstrapComponent,\n FormSelect: BootstrapComponent,\n ButtonComponent: BootstrapComponent,\n InputGroup: BootstrapComponent,\n OverlayTrigger: BootstrapComponent,\n Popover: BootstrapComponent,\n ListGroup: BootstrapComponent,\n ListGroupItem: BootstrapComponent\n): UILibraryAdapter => {\n return {\n Input: ({ className, disabled, error, type, ...props }) => (\n <FormControl\n {...props}\n type={type}\n disabled={disabled}\n isInvalid={!!error}\n className={className}\n />\n ),\n\n Textarea: ({ className, disabled, error, rows, ...props }) => (\n <FormControl\n {...props}\n as=\"textarea\"\n rows={rows || 4}\n disabled={disabled}\n isInvalid={!!error}\n className={className}\n />\n ),\n\n Select: ({ className, disabled, error, children, ...props }) => (\n <FormSelect\n {...props}\n disabled={disabled}\n isInvalid={!!error}\n className={className}\n >\n {children}\n </FormSelect>\n ),\n\n Checkbox: ({ className, disabled, label, ...props }) => (\n <FormCheck\n {...props}\n type=\"checkbox\"\n disabled={disabled}\n className={className}\n label={label}\n />\n ),\n\n Radio: ({ className, disabled, label, ...props }) => (\n <FormCheck\n {...props}\n type=\"radio\"\n disabled={disabled}\n className={className}\n label={label}\n />\n ),\n\n Switch: ({ className, disabled, ...props }) => (\n <FormCheck\n {...props}\n type=\"switch\"\n disabled={disabled}\n className={className}\n />\n ),\n\n Button: ({ className, disabled, children, variant, ...props }) => (\n <ButtonComponent\n {...props}\n disabled={disabled}\n className={className}\n variant={variant || 'primary'}\n >\n {children}\n </ButtonComponent>\n ),\n\n FormControl: ({ className, required, error, children }) => (\n <Form className={className}>\n {children}\n </Form>\n ),\n\n FormHelperText: ({ className, children }) => (\n <FormText className={className}>{children}</FormText>\n ),\n\n Label: ({ className, htmlFor, children }) => (\n <FormLabel htmlFor={htmlFor} className={className}>\n {children}\n </FormLabel>\n ),\n\n Box: ({ className, children, ...props }) => (\n <div className={className} {...props}>\n {children}\n </div>\n ),\n\n Paper: ({ className, children }) => (\n <div className={`card ${className || ''}`}>{children}</div>\n ),\n\n Popover: ({ open, anchorEl, onClose, children, anchorOrigin }) => {\n if (!open || !anchorEl) return null;\n\n // Simple popover implementation - users should provide proper Bootstrap Popover\n const rect = anchorEl.getBoundingClientRect();\n const style: React.CSSProperties = {\n position: 'fixed',\n top: `${rect.bottom}px`,\n left: `${rect.left}px`,\n zIndex: 1000,\n backgroundColor: 'white',\n border: '1px solid #ccc',\n borderRadius: '4px',\n padding: '8px',\n boxShadow: '0 2px 8px rgba(0,0,0,0.15)',\n };\n\n return (\n <div style={style} onClick={onClose}>\n {children}\n </div>\n );\n },\n\n MenuItem: ({ className, onClick, children }) => (\n <ListGroupItem\n className={className}\n onClick={onClick}\n action\n >\n {children}\n </ListGroupItem>\n ),\n\n Typography: ({ className, variant, children }) => {\n const Tag = variant === 'h6' ? 'h6' : variant === 'subtitle2' ? 'h6' : 'p';\n return (\n <Tag className={className}>\n {children}\n </Tag>\n );\n },\n\n IconButton: ({ className, size, onClick, children }) => (\n <ButtonComponent\n variant=\"link\"\n className={`${className || ''} p-0`}\n onClick={onClick}\n size={size}\n >\n {children}\n </ButtonComponent>\n ),\n };\n};\n\n/**\n * Example usage instructions:\n * \n * import {\n * Form,\n * FormControl,\n * FormLabel,\n * FormText,\n * FormCheck,\n * FormSelect,\n * Button,\n * InputGroup,\n * OverlayTrigger,\n * Popover,\n * ListGroup,\n * ListGroupItem,\n * } from 'react-bootstrap';\n * \n * import { createBootstrapAdapter } from 'dynamic-formik-form/adapters/bootstrap';\n * \n * export const bootstrapAdapter = createBootstrapAdapter(\n * Form,\n * FormControl,\n * FormLabel,\n * FormText,\n * FormCheck,\n * FormSelect,\n * Button,\n * InputGroup,\n * OverlayTrigger,\n * Popover,\n * ListGroup,\n * ListGroupItem\n * );\n */\n\n","/**\n * Ant Design Adapter\n * \n * This adapter integrates Ant Design components with dynamic-formik-form.\n * Users need to install antd as a peer dependency.\n * \n * Usage:\n * import { createAntDesignAdapter } from 'dynamic-formik-form';\n * import { Input, Button, Form, ... } from 'antd';\n * \n * const antdAdapter = createAntDesignAdapter(\n * Input, Button, Checkbox, Radio, Switch, Select, Form, Typography, Popover, DatePicker\n * );\n * \n * <DynamicForm\n * uiLibrary={{ adapter: antdAdapter, icons: antdIcons, name: 'antd' }}\n * ...\n * />\n */\n\nimport React, { ComponentType, ReactNode } from 'react';\nimport { UILibraryAdapter } from '../types/ui-library.types';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype AntDComponent = ComponentType<any>;\n\n/**\n * Ant Design Adapter Factory\n * \n * Creates an adapter for Ant Design components.\n * Users pass their Ant Design component imports to this factory function.\n */\nexport const createAntDesignAdapter = (\n // Ant Design component imports\n Input: AntDComponent,\n Button: AntDComponent,\n Checkbox: AntDComponent,\n Radio: AntDComponent,\n Switch: AntDComponent,\n Select: AntDComponent,\n Form: AntDComponent,\n Typography: AntDComponent,\n Popover: AntDComponent,\n DatePicker?: AntDComponent,\n DateTimePicker?: AntDComponent,\n Space?: AntDComponent,\n Card?: AntDComponent\n): UILibraryAdapter => {\n // Ant Design Input has TextArea as a property\n const TextArea = (Input as any).TextArea || Input;\n const { TextArea: AntDTextArea } = Input as any;\n const actualTextArea = AntDTextArea || TextArea;\n \n const { Text: TypographyText } = Typography as any;\n const { Group: RadioGroup } = Radio as any;\n const SpaceComponent = Space || (({ children, ...props }: any) => <div {...props}>{children}</div>);\n const CardComponent = Card || (({ children, className }: any) => <div className={`ant-card ${className || ''}`}>{children}</div>);\n\n return {\n Input: ({ className, disabled, error, type, ...props }) => (\n <Input\n {...props}\n type={type}\n disabled={disabled}\n status={error ? 'error' : undefined}\n className={className}\n />\n ),\n\n Textarea: ({ className, disabled, error, rows, ...props }) => (\n <TextArea\n {...props}\n rows={rows || 4}\n disabled={disabled}\n status={error ? 'error' : undefined}\n className={className}\n />\n ),\n\n Select: ({ className, disabled, error, children, ...props }) => (\n <Select\n {...props}\n disabled={disabled}\n status={error ? 'error' : undefined}\n className={className}\n >\n {children}\n </Select>\n ),\n\n Checkbox: ({ className, disabled, label, ...props }) => (\n <Checkbox\n {...props}\n disabled={disabled}\n className={className}\n >\n {label}\n </Checkbox>\n ),\n\n Radio: ({ className, disabled, label, ...props }) => (\n <Radio\n {...props}\n disabled={disabled}\n className={className}\n >\n {label}\n </Radio>\n ),\n\n Switch: ({ className, disabled, ...props }) => (\n <Switch\n {...props}\n disabled={disabled}\n className={className}\n />\n ),\n\n Button: ({ className, disabled, children, variant, type, onClick, ...props }) => (\n <Button\n {...props}\n disabled={disabled}\n type={variant === 'primary' ? 'primary' : variant === 'secondary' ? 'default' : variant || 'default'}\n htmlType={type}\n onClick={onClick}\n className={className}\n >\n {children}\n </Button>\n ),\n\n FormControl: ({ className, children }) => {\n const FormComponent = Form as any;\n const FormItem = FormComponent.Item || FormComponent;\n return (\n <FormItem className={className}>\n {children}\n </FormItem>\n );\n },\n\n FormHelperText: ({ className, children }) => (\n <TypographyText type=\"secondary\" className={className}>\n {children}\n </TypographyText>\n ),\n\n Label: ({ className, htmlFor, children }) => (\n <label className={className} htmlFor={htmlFor}>\n {children}\n </label>\n ),\n\n Box: ({ className, children, ...props }) => (\n <SpaceComponent className={className} {...props}>\n {children}\n </SpaceComponent>\n ),\n\n Paper: ({ className, children }) => (\n <CardComponent className={className}>\n {children}\n </CardComponent>\n ),\n\n Popover: ({ open, anchorEl, onClose, children, anchorOrigin, ...props }) => {\n if (!open) return null;\n \n return (\n <Popover\n open={open}\n onOpenChange={(visible: boolean) => !visible && onClose()}\n placement={anchorOrigin?.vertical === 'bottom' ? 'bottom' : 'top'}\n {...props}\n >\n {children}\n </Popover>\n );\n },\n\n MenuItem: ({ className, onClick, children }) => (\n <div className={`ant-menu-item ${className || ''}`} onClick={onClick}>\n {children}\n </div>\n ),\n\n Typography: ({ className, variant, children, ...props }) => {\n const TypographyComponent = Typography as any;\n return (\n <TypographyComponent className={className} {...props}>\n {children}\n </TypographyComponent>\n );\n },\n\n IconButton: ({ className, size, onClick, children, ...props }) => (\n <Button\n type=\"text\"\n size={size}\n onClick={onClick}\n className={className}\n icon={children}\n {...props}\n />\n ),\n\n DatePicker: DatePicker\n ? ({ value, onChange, format, disabled, ...props }) => (\n <DatePicker\n value={value}\n onChange={onChange}\n format={format}\n disabled={disabled}\n {...props}\n />\n )\n : undefined,\n\n DateTimePicker: DateTimePicker\n ? ({ value, onChange, format, disabled, views, ...props }) => (\n <DateTimePicker\n value={value}\n onChange={onChange}\n format={format}\n disabled={disabled}\n showTime={true}\n {...props}\n />\n )\n : undefined,\n };\n};\n\n","import React from 'react';\nimport { IconLibrary } from '../types/ui-library.types';\n\n/**\n * Default icon components using simple SVG icons\n * Users can replace these with their preferred icon library\n */\nconst DefaultInfoIcon: React.FC<{ className?: string; size?: string | number }> = ({\n className,\n size = 16,\n}) => (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n className={className}\n >\n <path d=\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-6h2v6zm0-8h-2V7h2v2z\" />\n </svg>\n);\n\nconst DefaultVisibilityIcon: React.FC<{\n className?: string;\n size?: string | number;\n}> = ({ className, size = 16 }) => (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n className={className}\n >\n <path d=\"M12 4.5C7 4.5 2.73 7.61 1 12c1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5zM12 17c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5zm0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3z\" />\n </svg>\n);\n\nconst DefaultVisibilityOffIcon: React.FC<{\n className?: string;\n size?: string | number;\n}> = ({ className, size = 16 }) => (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n className={className}\n >\n <path d=\"M12 7c2.76 0 5 2.24 5 5 0 .65-.13 1.26-.36 1.83l2.92 2.92c1.51-1.26 2.7-2.89 3.43-4.75-1.73-4.39-6-7.5-11-7.5-1.4 0-2.74.25-3.98.7l2.16 2.16C10.74 7.13 11.35 7 12 7zM2 4.27l2.28 2.28.46.46C3.08 8.3 1.78 10.02 1 12c1.73 4.39 6 7.5 11 7.5 1.55 0 3.03-.3 4.38-.84l.42.42L19.73 22 21 20.73 3.27 3 2 4.27zM7.53 9.8l1.55 1.55c-.05.21-.08.43-.08.65 0 1.66 1.34 3 3 3 .22 0 .44-.03.65-.08l1.55 1.55c-.67.33-1.41.53-2.2.53-2.76 0-5-2.24-5-5 0-.79.2-1.53.53-2.2zm4.31-.78l3.15 3.15.02-.16c0-1.66-1.34-3-3-3l-.17.01z\" />\n </svg>\n);\n\nconst DefaultCopyIcon: React.FC<{ className?: string; size?: string | number }> = ({\n className,\n size = 16,\n}) => (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n className={className}\n >\n <path d=\"M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12V1zm3 4H8c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm0 16H8V7h11v14z\" />\n </svg>\n);\n\nconst DefaultAddIcon: React.FC<{ className?: string; size?: string | number }> = ({\n className,\n size = 16,\n}) => (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n className={className}\n >\n <path d=\"M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z\" />\n </svg>\n);\n\nconst DefaultDeleteIcon: React.FC<{ className?: string; size?: string | number }> = ({\n className,\n size = 16,\n}) => (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n className={className}\n >\n <path d=\"M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zM19 4h-3.5l-1-1h-5l-1 1H5v2h14V4z\" />\n </svg>\n);\n\nexport const defaultIcons: IconLibrary = {\n Info: DefaultInfoIcon,\n Visibility: DefaultVisibilityIcon,\n VisibilityOff: DefaultVisibilityOffIcon,\n Copy: DefaultCopyIcon,\n Add: DefaultAddIcon,\n Delete: DefaultDeleteIcon,\n};\n\n","/**\n * Formik utility functions extracted from production code\n * These handle nested property access, error extraction, etc.\n */\n\n/**\n * Get nested property from object using dot notation or bracket notation\n * Supports paths like \"user.name\" or \"users[0].name\"\n */\nexport const getNestedProperty = (\n obj: Record<string, unknown> | undefined | null,\n path: string | undefined | null\n): unknown => {\n if (!path || !obj) {\n return undefined;\n }\n\n // Handle both dot notation and bracket notation\n // Split by dots, brackets, and handle array indices\n const keys = path.split(/[.[\\]]+/).filter(Boolean);\n\n return keys.reduce((acc: unknown, key: string) => {\n if (acc && typeof acc === 'object' && key in acc) {\n return (acc as Record<string, unknown>)[key];\n }\n return undefined;\n }, obj);\n};\n\n/**\n * Alternative nested property getter (simpler version)\n * Only supports dot notation\n */\nexport const getNestedValueNew = (\n obj: Record<string, unknown> | undefined | null,\n path: string\n): unknown => {\n if (!obj || !path) {\n return undefined;\n }\n\n return path\n .split('.')\n .reduce(\n (acc: unknown, key: string) =>\n acc && typeof acc === 'object' && key in acc\n ? (acc as Record<string, unknown>)[key]\n : undefined,\n obj\n );\n};\n\n/**\n * Extract field value from Formik values using nested path\n */\nexport const getFieldValue = (\n formik: { values: Record<string, unknown> },\n name: string\n): unknown => {\n if (!name) return null;\n\n if (name.includes('.')) {\n if (name.includes('[')) {\n // Array notation like \"users[0].name\"\n return getNestedProperty(formik.values, name);\n }\n // Dot notation like \"user.name\"\n return name\n .split('.')\n .reduce(\n (acc: unknown, key: string) =>\n acc && typeof acc === 'object' && key in acc\n ? (acc as Record<string, unknown>)[key]\n : '',\n formik.values\n );\n }\n\n return formik.values[name];\n};\n\n/**\n * Extract field error from Formik errors using nested path\n */\nexport const getFieldError = (\n formik: { errors: Record<string, unknown> },\n name: string\n): string | undefined => {\n if (!name) return undefined;\n\n if (name.includes('.')) {\n if (name.includes('[')) {\n return getNestedProperty(formik.errors, name) as string | undefined;\n }\n return name\n .split('.')\n .reduce(\n (acc: unknown, key: string) =>\n acc && typeof acc === 'object' && key in acc\n ? (acc as Record<string, unknown>)[key]\n : '',\n formik.errors\n ) as string | undefined;\n }\n\n return formik.errors[name] as string | undefined;\n};\n\n/**\n * Extract field touched state from Formik touched using nested path\n */\nexport const getFieldTouched = (\n formik: { touched: Record<string, unknown> },\n name: string\n): boolean => {\n if (!name) return false;\n\n if (name.includes('.')) {\n if (name.includes('[')) {\n return !!getNestedProperty(formik.touched, name);\n }\n return !!name\n .split('.')\n .reduce(\n (acc: unknown, key: string) =>\n acc && typeof acc === 'object' && key in acc\n ? (acc as Record<string, unknown>)[key]\n : false,\n formik.touched\n );\n }\n\n return !!formik.touched[name];\n};\n\n","import React from 'react';\nimport { useFormContext } from '../../context/FormContext';\nimport { getFieldValue } from '../../utils/formik.utils';\nimport { BaseFieldConfig } from '../../types/field.types';\n\ninterface EmptyFieldProps extends BaseFieldConfig {\n type: 'emptyField';\n}\n\n/**\n * EmptyField Component\n * Renders a hidden input field (useful for form state management)\n */\nexport const EmptyField: React.FC<EmptyFieldProps> = ({\n name,\n customHandleChange,\n formik: formikProp,\n}) => {\n const { uiLibrary, formik } = useFormContext();\n const { adapter } = uiLibrary;\n const Input = adapter.Input;\n const activeFormik = formikProp || formik;\n\n const fieldValue = getFieldValue(activeFormik, name) || '';\n\n return (\n <Input\n id={name}\n type=\"hidden\"\n name={name}\n className=\"d-none\"\n value={fieldValue as string}\n onChange={(event) => {\n if (customHandleChange) {\n customHandleChange(event, 'emptyField');\n } else {\n activeFormik.handleChange(event);\n }\n }}\n onBlur={activeFormik.handleBlur}\n />\n );\n};\n\n","import React, { ReactNode } from 'react';\n\ninterface FieldWrapperProps {\n children: ReactNode;\n className?: string;\n customClass?: string;\n isChild?: boolean;\n noIndent?: boolean;\n hidden?: boolean;\n index?: number | string;\n}\n\n/**\n * FieldWrapper component\n * Provides consistent styling and layout for field components\n */\nexport const FieldWrapper: React.FC<FieldWrapperProps> = ({\n children,\n className,\n customClass,\n isChild,\n noIndent,\n hidden,\n index,\n}) => {\n if (hidden) {\n return <div className=\"d-none\">{children}</div>;\n }\n\n const wrapperClasses = [\n customClass || 'mb-4',\n isChild && !noIndent ? 'ps-5' : '',\n className || '',\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <div className={wrapperClasses} key={index}>\n {children}\n </div>\n );\n};\n\n","import React from 'react';\nimport { IconComponent } from '../../types/ui-library.types';\n\ninterface IconRendererProps {\n Icon?: IconComponent;\n size?: string | number;\n className?: string;\n}\n\n/**\n * IconRenderer component\n * Safely renders icon components with proper typing\n */\nexport const IconRenderer: React.FC<IconRendererProps> = ({\n Icon,\n size = 16,\n className,\n}) => {\n if (!Icon) return null;\n \n // Render icon as a component\n return React.createElement(Icon, { size, className });\n};\n\n","import React from 'react';\nimport { useFormContext } from '../../context/FormContext';\nimport { formatString } from '../../utils/field.utils';\nimport { IconRenderer } from './IconRenderer';\n\ninterface FieldLabelProps {\n name: string;\n label?: string;\n required?: boolean;\n showOptional?: boolean;\n info?: string;\n htmlFor?: string;\n className?: string;\n customLabelClass?: string;\n}\n\n/**\n * FieldLabel component\n * Renders label with required indicator, optional text, and info tooltip\n */\nexport const FieldLabel: React.FC<FieldLabelProps> = ({\n name,\n label,\n required,\n showOptional,\n info,\n htmlFor,\n className,\n customLabelClass,\n}) => {\n const { uiLibrary } = useFormContext();\n const { adapter, icons } = uiLibrary;\n const Label = adapter.Label;\n const IconButton = adapter.IconButton;\n\n if (!label) return null;\n\n const InfoIcon = icons?.Info;\n\n return (\n <Label\n htmlFor={htmlFor || name}\n className={`${customLabelClass || className || ''}`}\n >\n <span>{label}</span>\n {required && <span className=\"text-danger\"> *</span>}\n {showOptional && (\n <span className=\"text-12 ps-1 text-body-tertiary\"> (Optional)</span>\n )}\n {info && InfoIcon && (\n <IconButton\n size=\"small\"\n className=\"p-0\"\n aria-label=\"show info\"\n tabIndex={-1}\n >\n <IconRenderer Icon={InfoIcon} size={16} />\n </IconButton>\n )}\n </Label>\n );\n};\n\n","/**\n * Field utility functions\n */\n\n/**\n * Format string for use in data-testid attributes\n * Converts camelCase, snake_case, and spaces to kebab-case\n */\nexport const formatString = (\n inputStr: string | undefined | null,\n ignoreChar = false\n): string => {\n if (!inputStr) return '';\n\n let result = inputStr.replace(/_/g, '-').toLowerCase();\n result = result.replace(/\\s+/g, '-');\n result = result.replace(/([a-z])([A-Z])/g, '$1-$2');\n \n if (!ignoreChar) {\n result = result.replace(/\\//g, '-');\n }\n \n return result;\n};\n\n/**\n * Convert camelCase to kebab-case\n */\nexport const camelToKebabCase = (str: string): string => {\n return str.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();\n};\n\n/**\n * Sanitize label for CSS class names\n */\nexport const sanitizeLabelForCSS = (label: string | undefined | null): string => {\n return label?.replace(/\\s+/g, '_') || '';\n};\n\n/**\n * Check if value is blank (null, undefined, or empty string)\n */\nexport const isBlank = (value: unknown): boolean => {\n return value === null || value === undefined || value === '';\n};\n\n/**\n * Check if value is not blank\n */\nexport const isNotBlank = (value: unknown): boolean => {\n return !isBlank(value);\n};\n\n","import React from 'react';\nimport { formatString } from '../../utils/field.utils';\n\ninterface FieldErrorProps {\n name: string;\n error?: string;\n touched?: boolean;\n showCustomError?: boolean;\n dataTestId?: string;\n className?: string;\n}\n\n/**\n * FieldError component\n * Displays validation error messages\n */\nexport const FieldError: React.FC<FieldErrorProps> = ({\n name,\n error,\n touched,\n showCustomError,\n dataTestId,\n className,\n}) => {\n if (!showCustomError && (!error || !touched)) {\n return null;\n }\n\n return (\n <small\n id=\"error\"\n data-testid={dataTestId || `${formatString(name)}-error`}\n className={className || 'd-flex text-danger mt-1 text-12'}\n >\n {error}\n </small>\n );\n};\n\n","import React from 'react';\nimport { useFormContext } from '../../context/FormContext';\nimport { getFieldValue, getFieldError, getFieldTouched } from '../../utils/formik.utils';\nimport { FieldWrapper } from '../shared/FieldWrapper';\nimport { FieldLabel } from '../shared/FieldLabel';\nimport { FieldError } from '../shared/FieldError';\nimport { BaseFieldConfig } from '../../types/field.types';\n\ninterface TextFieldProps extends BaseFieldConfig {\n type: 'text';\n error?: string;\n}\n\n/**\n * TextField Component\n * Displays read-only text (not an input field)\n */\nexport const TextField: React.FC<TextFieldProps> = ({\n name,\n label,\n required,\n customClass,\n isChild,\n noIndent,\n hidden,\n dataTestId,\n showCustomError,\n error: customError,\n index,\n formik: formikProp,\n}) => {\n const { formik } = useFormContext();\n const activeFormik = formikProp || formik;\n\n const fieldValue = getFieldValue(activeFormik, name);\n const fieldError = getFieldError(activeFormik, name);\n const fieldTouched = getFieldTouched(activeFormik, name);\n\n // Handle group heading logic from production code\n const isGroupHeading =\n typeof name === 'string' && name.endsWith('__heading');\n const groupKeyForHeading = isGroupHeading ? name.split('__')[0] : null;\n const groupLevelError = groupKeyForHeading\n ? getFieldError(activeFormik, groupKeyForHeading)\n : null;\n const resolvedTextError = showCustomError && customError ? customError : (groupLevelError || fieldError);\n const showErrorNow =\n !!resolvedTextError && (fieldTouched || activeFormik.submitCount > 0 || showCustomError);\n\n return (\n <FieldWrapper\n customClass={customClass}\n isChild={isChild}\n noIndent={noIndent}\n hidden={hidden}\n index={index}\n >\n {label && (\n <FieldLabel\n name={name}\n label={label}\n required={required}\n />\n )}\n <div>\n <p onClick={() => {}}>{fieldValue as string}</p>\n </div>\n {(showCustomError || showErrorNow) && (\n <FieldError\n name={name}\n error={resolvedTextError}\n touched={fieldTouched}\n showCustomError={showCustomError}\n dataTestId={dataTestId}\n />\n )}\n </FieldWrapper>\n );\n};\n\n","import React from 'react';\nimport { useFormContext } from '../../context/FormContext';\n\ninterface FieldDescriptionProps {\n desc?: string;\n className?: string;\n customDescClass?: string;\n}\n\n/**\n * FieldDescription component\n * Renders field description/helper text\n */\nexport const FieldDescription: React.FC<FieldDescriptionProps> = ({\n desc,\n className,\n customDescClass,\n}) => {\n const { uiLibrary } = useFormContext();\n const { adapter } = uiLibrary;\n const FormHelperText = adapter.FormHelperText;\n\n if (!desc) return null;\n\n return (\n <FormHelperText className={customDescClass || className || ''}>\n {desc}\n </FormHelperText>\n );\n};\n\n","import React from 'react';\nimport { useFormContext } from '../../context/FormContext';\nimport { FieldWrapper } from '../shared/FieldWrapper';\nimport { FieldLabel } from '../shared/FieldLabel';\nimport { FieldDescription } from '../shared/FieldDescription';\nimport { formatString } from '../../utils/field.utils';\nimport { BaseFieldConfig } from '../../types/field.types';\n\ninterface LinkFieldProps extends BaseFieldConfig {\n type: 'link';\n onClickLink?: () => void;\n}\n\n/**\n * LinkField Component\n * Renders a clickable link/button field\n */\nexport const LinkField: React.FC<LinkFieldProps> = ({\n name,\n label,\n desc,\n required,\n customClass,\n customComponentClass,\n isChild,\n noIndent,\n hidden,\n onClickLink,\n component,\n targetType,\n index,\n}) => {\n const handleClick = () => {\n if (onClickLink) {\n onClickLink();\n }\n };\n\n return (\n <>\n <FieldWrapper\n customClass={customClass}\n isChild={isChild}\n noIndent={noIndent}\n hidden={hidden}\n index={index}\n >\n {label && (\n <a\n href={targetType === 'blank' ? '#' : undefined}\n target={targetType === 'blank' ? '_blank' : undefined}\n onClick={(e) => {\n e.preventDefault();\n handleClick();\n }}\n style={{ cursor: 'pointer' }}\n >\n {label}\n {required && <span className=\"text-danger\"> *</span>}\n </a>\n )}\n {desc && <FieldDescription desc={desc} />}\n </FieldWrapper>\n {component && (\n <div className={customComponentClass || 'mb-1 mx-1'}>{component}</div>\n )}\n </>\n );\n};\n\n","import React from 'react';\nimport { FieldWrapper } from '../shared/FieldWrapper';\nimport { BaseFieldConfig } from '../../types/field.types';\n\ninterface ComponentFieldProps extends BaseFieldConfig {\n type: 'component';\n component?: React.ReactNode;\n blockComponent?: React.ReactNode;\n}\n\n/**\n * ComponentField Component\n * Wrapper for custom components\n */\nexport const ComponentField: React.FC<ComponentFieldProps> = ({\n customClass,\n isChild,\n noIndent,\n component,\n blockComponent,\n index,\n}) => {\n return (\n <>\n {component && (\n <FieldWrapper\n customClass={customClass}\n isChild={isChild}\n noIndent={noIndent}\n index={index}\n >\n {component}\n </FieldWrapper>\n )}\n {blockComponent && (\n <FieldWrapper\n customClass={customClass}\n isChild={isChild}\n noIndent={noIndent}\n index={index}\n >\n {blockComponent}\n </FieldWrapper>\n )}\n </>\n );\n};\n\n","import React from 'react';\nimport { useFormContext } from '../../context/FormContext';\nimport { FieldWrapper } from '../shared/FieldWrapper';\nimport { FieldLabel } from '../shared/FieldLabel';\nimport { FieldDescription } from '../shared/FieldDescription';\nimport { BaseFieldConfig } from '../../types/field.types';\n\ninterface CustomFieldProps extends BaseFieldConfig {\n type: 'custom';\n component?: React.ReactNode;\n}\n\n/**\n * CustomField Component\n * Custom field wrapper with label and description\n */\nexport const CustomField: React.FC<CustomFieldProps> = ({\n name,\n label,\n desc,\n required,\n customClass,\n isChild,\n noIndent,\n hidden,\n component,\n index,\n}) => {\n return (\n <FieldWrapper\n customClass={customClass}\n isChild={isChild}\n noIndent={noIndent}\n hidden={hidden}\n index={index}\n >\n {label && (\n <FieldLabel\n name={name}\n label={label}\n required={required}\n />\n )}\n {desc && <FieldDescription desc={desc} />}\n <div>{component}</div>\n </FieldWrapper>\n );\n};\n\n","import React, { useState, useCallback } from 'react';\nimport { useFormContext } from '../../context/FormContext';\nimport { getFieldValue, getFieldError, getFieldTouched } from '../../utils/formik.utils';\nimport { FieldWrapper } from '../shared/FieldWrapper';\nimport { FieldLabel } from '../shared/FieldLabel';\nimport { FieldDescription } from '../shared/FieldDescription';\nimport { FieldError } from '../shared/FieldError';\nimport { IconRenderer } from '../shared/IconRenderer';\nimport { formatString } from '../../utils/field.utils';\nimport { InputFieldConfig } from '../../types/field.types';\n\n/**\n * InputField Component\n * Renders text input fields with various types (text, email, password, etc.)\n */\nexport const InputField: React.FC<InputFieldConfig> = ({\n name,\n type,\n label,\n placeholder,\n desc,\n info,\n required,\n disabled,\n hidden,\n readonly,\n fieldType = 'text',\n autocomplete,\n customClass,\n customLabelClass,\n dataTestId,\n isVisibleEnable,\n isCopyEnable,\n customIcon,\n customHandleChange,\n customFormChange,\n component,\n blockComponent,\n showCustomError,\n ref: inputRef,\n onBlur,\n isChild,\n noIndent,\n index,\n formik: formikProp,\n}) => {\n const { uiLibrary, formik } = useFormContext();\n const { adapter, icons } = uiLibrary;\n const Input = adapter.Input;\n const IconButton = adapter.IconButton;\n const activeFormik = formikProp || formik;\n\n const [showField, setShowField] = useState<Record<string, boolean>>({});\n\n const fieldValue = getFieldValue(activeFormik, name);\n const fieldError = getFieldError(activeFormik, name);\n const fieldTouched = getFieldTouched(activeFormik, name);\n\n const showFieldHandler = useCallback((fieldName: string) => {\n setShowField((prev) => ({\n ...prev,\n [fieldName]: !prev[fieldName],\n }));\n }, []);\n\n const handleCopy = useCallback(() => {\n if (typeof window !== 'undefined' && document) {\n const input = document.getElementById(name) as HTMLInputElement;\n if (input) {\n input.select();\n document.execCommand('copy');\n }\n }\n }, [name]);\n\n const VisibilityIcon = icons?.Visibility;\n const VisibilityOffIcon = icons?.VisibilityOff;\n const CopyIcon = icons?.Copy;\n\n const inputType =\n fieldType === 'password'\n ? !showField[name]\n ? 'password'\n : 'text'\n : fieldType;\n\n return (\n <FieldWrapper\n customClass={customClass}\n isChild={isChild}\n noIndent={noIndent}\n hidden={hidden}\n index={index}\n >\n {label && (\n <FieldLabel\n name={name}\n label={label}\n required={required}\n info={info}\n customLabelClass={customLabelClass}\n />\n )}\n {desc && <FieldDescription desc={desc} />}\n <div\n className={`input-group ${\n isCopyEnable || isVisibleEnable ? '' : 'rounded'\n }`}\n >\n <Input\n className={`form-control font-14 ${\n isCopyEnable || isVisibleEnable || customIcon\n ? 'border border-end-0'\n : 'rounded'\n } ${fieldError && fieldTouched ? 'border-danger' : ''}`}\n id={name}\n data-testid={dataTestId || `${formatString(name)}-input`}\n ref={inputRef}\n autoComplete={\n autocomplete || fieldType === 'password'\n ? 'new-password'\n : 'off'\n }\n type={inputType}\n disabled={disabled || false}\n name={name}\n placeholder={placeholder}\n value={(fieldValue as string) || ''}\n onChange={(event) => {\n if (customHandleChange) {\n customHandleChange(event, type);\n } else if (customFormChange) {\n customFormChange(event, type);\n } else {\n activeFormik.handleChange(event);\n }\n }}\n onBlur={onBlur || activeFormik.handleBlur}\n readOnly={readonly || false}\n error={!!(fieldError && fieldTouched)}\n />\n {customIcon && (\n <div\n className={`z-0 bg-transparent btn btn-outline-secondary border-0 border-top border-bottom px-3 ${\n !isCopyEnable && !isVisibleEnable\n ? 'border-end rounded-end'\n : ''\n } ${fieldError && fieldTouched ? 'border-danger' : ''}`}\n style={{ cursor: 'default' }}\n >\n {customIcon}\n </div>\n )}\n {isVisibleEnable && VisibilityIcon && VisibilityOffIcon && (\n <button\n className={`z-0 btn btn-outline-secondary border-0 rounded-0 border-top border-bottom ${\n !isCopyEnable ? 'border-end rounded-end' : ''\n } ${fieldError && fieldTouched ? 'border-danger' : ''}`}\n type=\"button\"\n data-testid={`${formatString(name)}-visible-btn`}\n onClick={() => showFieldHandler(name)}\n >\n {!showField[name] ? (\n <IconRenderer Icon={VisibilityOffIcon} size={16} />\n ) : (\n <IconRenderer Icon={VisibilityIcon} size={16} />\n )}\n </button>\n )}\n {isCopyEnable && CopyIcon && (\n <button\n className={`z-0 btn btn-outline-secondary border border-start-0 border-end rounded-end ${\n fieldError && fieldTouched ? 'border-danger' : ''\n }`}\n type=\"button\"\n data-testid={`${formatString(name)}-copy-btn`}\n aria-label=\"copy\"\n onClick={handleCopy}\n >\n <IconRenderer Icon={CopyIcon} size={16} />\n </button>\n )}\n {component && <div>{component}</div>}\n </div>\n {blockComponent && <div>{blockComponent}</div>}\n {(showCustomError || (fieldError && fieldTouched)) && (\n <FieldError\n name={name}\n error={fieldError}\n touched={fieldTouched}\n showCustomError={showCustomError}\n dataTestId={dataTestId}\n />\n )}\n </FieldWrapper>\n );\n};\n\n","import React from 'react';\nimport { useFormContext } from '../../context/FormContext';\nimport { getFieldValue, getFieldError, getFieldTouched } from '../../utils/formik.utils';\nimport { FieldWrapper } from '../shared/FieldWrapper';\nimport { FieldLabel } from '../shared/FieldLabel';\nimport { FieldDescription } from '../shared/FieldDescription';\nimport { FieldError } from '../shared/FieldError';\nimport { formatString } from '../../utils/field.utils';\nimport { TextareaFieldConfig } from '../../types/field.types';\n\n/**\n * TextareaField Component\n * Renders a textarea input field\n */\nexport const TextareaField: React.FC<TextareaFieldConfig> = ({\n name,\n type,\n label,\n placeholder,\n desc,\n required,\n customClass,\n customComponentClass,\n isChild,\n noIndent,\n hidden,\n readonly,\n rows = 4,\n dataTestId,\n customHandleChange,\n customFormChange,\n component,\n formik: formikProp,\n}) => {\n const { uiLibrary, formik } = useFormContext();\n const { adapter } = uiLibrary;\n const Textarea = adapter.Textarea;\n const activeFormik = formikProp || formik;\n\n const fieldValue = getFieldValue(activeFormik, name);\n const fieldError = getFieldError(activeFormik, name);\n const fieldTouched = getFieldTouched(activeFormik, name);\n\n return (\n <>\n <FieldWrapper\n customClass={customClass}\n isChild={isChild}\n noIndent={noIndent}\n hidden={hidden}\n >\n {label && (\n <FieldLabel\n name={name}\n label={label}\n required={required}\n />\n )}\n {desc && <FieldDescription desc={desc} />}\n <div>\n <Textarea\n id={name}\n className={`form-control text-14 ${\n required && fieldError && fieldTouched\n ? 'border-danger'\n : ''\n }`}\n name={name}\n data-testid={dataTestId || `${formatString(name)}-text-box`}\n placeholder={placeholder}\n rows={rows}\n value={(fieldValue as string) || ''}\n autoComplete=\"off\"\n onChange={(event) => {\n if (customHandleChange) {\n customHandleChange(event, type);\n } else if (customFormChange) {\n customFormChange(event, type);\n } else {\n activeFormik.handleChange(event);\n }\n }}\n onBlur={activeFormik.handleBlur}\n readOnly={readonly || false}\n disabled={readonly || false}\n error={!!(required && fieldError && fieldTouched)}\n />\n </div>\n {required && fieldError && fieldTouched && (\n <FieldError\n name={name}\n error={fieldError}\n touched={fieldTouched}\n dataTestId={dataTestId}\n />\n )}\n </FieldWrapper>\n {component && (\n <div className={customComponentClass || 'mb-1 mx-1'}>{component}</div>\n )}\n </>\n );\n};\n\n","import React from 'react';\nimport { useFormContext } from '../../context/FormContext';\nimport { getFieldValue, getFieldError, getFieldTouched } from '../../utils/formik.utils';\nimport { FieldWrapper } from '../shared/FieldWrapper';\nimport { FieldLabel } from '../shared/FieldLabel';\nimport { FieldDescription } from '../shared/FieldDescription';\nimport { FieldError } from '../shared/FieldError';\nimport { IconRenderer } from '../shared/IconRenderer';\nimport { formatString } from '../../utils/field.utils';\nimport { CheckboxFieldConfig } from '../../types/field.types';\n\n/**\n * CheckboxField Component\n * Renders a checkbox input field\n */\nexport const CheckboxField: React.FC<CheckboxFieldConfig> = ({\n name,\n type,\n label,\n desc,\n info,\n required,\n disabled,\n customClass,\n customComponentClass,\n isChild,\n noIndent,\n hidden,\n dataTestId,\n showCustomError,\n customHandleChange,\n customFormChange,\n component,\n child,\n formik: formikProp,\n}) => {\n const { uiLibrary, formik } = useFormContext();\n const { adapter, icons } = uiLibrary;\n const Checkbox = adapter.Checkbox;\n const FormHelperText = adapter.FormHelperText;\n const IconButton = adapter.IconButton;\n const activeFormik = formikProp || formik;\n\n const fieldValue = getFieldValue(activeFormik, name);\n const fieldError = getFieldError(activeFormik, name);\n const fieldTouched = getFieldTouched(activeFormik, name);\n const InfoIcon = icons?.Info;\n\n const setFieldValuesRecursive = (childFields: typeof child) => {\n if (childFields) {\n childFields.forEach((c) => {\n activeFormik.setFieldValue(c.name, '');\n activeFormik.setFieldTouched(c.name, false);\n });\n }\n };\n\n return (\n <>\n <FieldWrapper\n customClass={customClass}\n isChild={isChild}\n noIndent={noIndent}\n hidden={hidden}\n >\n <Checkbox\n id={name}\n name={name}\n data-testid={dataTestId || `${formatString(name)}-check-box`}\n checked={!!fieldValue}\n disabled={disabled || false}\n onChange={(event) => {\n if (customHandleChange) {\n customHandleChange(event, type);\n } else if (customFormChange) {\n customFormChange(event, type);\n } else {\n activeFormik.handleChange(event);\n }\n if (!event.target.checked) {\n setFieldValuesRecursive(child);\n }\n }}\n label={\n <div className=\"d-flex flex-column align-items-start\">\n <p className=\"text-14 text-dark fw-medium align-items-center\">\n {label}\n {required && <span className=\"text-danger\"> *</span>}\n {info && InfoIcon && (\n <IconButton\n size=\"small\"\n className=\"p-0\"\n aria-label=\"show info\"\n tabIndex={-1}\n >\n <IconRenderer Icon={InfoIcon} size={16} />\n </IconButton>\n )}\n </p>\n </div>\n }\n error={!!(fieldError && fieldTouched)}\n />\n {desc && (\n <FormHelperText className=\"text-black-50 mt-0 mb-1\">\n {desc}\n </FormHelperText>\n )}\n {(showCustomError || (fieldError && fieldTouched)) && (\n <FieldError\n name={name}\n error={fieldError}\n touched={fieldTouched}\n showCustomError={showCustomError}\n dataTestId={dataTestId}\n />\n )}\n {component && (\n <div className={customComponentClass || 'mb-1 mx-1'}>\n {component}\n </div>\n )}\n </FieldWrapper>\n {child &&\n child.map((c, childIndex) => {\n return (\n fieldValue &&\n // This would need to be handled by DynamicForm orchestrator\n // For now, we'll just render the child if value is truthy\n null\n );\n })}\n </>\n );\n};\n\n","import React from 'react';\nimport { useFormContext } from '../../context/FormContext';\nimport { getFieldValue, getFieldError, getFieldTouched } from '../../utils/formik.utils';\nimport { FieldWrapper } from '../shared/FieldWrapper';\nimport { FieldLabel } from '../shared/FieldLabel';\nimport { FieldDescription } from '../shared/FieldDescription';\nimport { FieldError } from '../shared/FieldError';\nimport { formatString } from '../../utils/field.utils';\nimport { RadioFieldConfig } from '../../types/field.types';\n\n/**\n * RadioField Component\n * Renders a radio button group\n */\nexport const RadioField: React.FC<RadioFieldConfig> = ({\n name,\n type,\n label,\n desc,\n required,\n disabled,\n customClass,\n customComponentClass,\n isChild,\n noIndent,\n hidden,\n values = {},\n dataTestId,\n customHandleChange,\n customFormChange,\n component,\n child,\n formik: formikProp,\n}) => {\n const { uiLibrary, formik } = useFormContext();\n const { adapter } = uiLibrary;\n const Radio = adapter.Radio;\n const FormHelperText = adapter.FormHelperText;\n const activeFormik = formikProp || formik;\n\n const fieldValue = getFieldValue(activeFormik, name);\n const fieldError = getFieldError(activeFormik, name);\n const fieldTouched = getFieldTouched(activeFormik, name);\n\n return (\n <>\n <FieldWrapper\n customClass={customClass}\n isChild={isChild}\n noIndent={noIndent}\n hidden={hidden}\n >\n {label && (\n <FieldLabel\n name={name}\n label={label}\n required={required}\n />\n )}\n <div\n id={name}\n data-testid={dataTestId || `${formatString(name)}-btn`}\n role=\"radiogroup\"\n >\n {Object.entries(values).map(([key, value], index) => (\n <Radio\n key={key}\n name={name}\n value={key}\n checked={fieldValue === key || fieldValue === value}\n disabled={disabled || false}\n onChange={(event) => {\n if (customHandleChange) {\n customHandleChange(event, type);\n } else if (customFormChange) {\n customFormChange(event, type);\n } else {\n activeFormik.handleChange(event);\n }\n if (!event.target.checked && child) {\n child.forEach((c) => {\n activeFormik.setFieldValue(c.name, '');\n });\n }\n }}\n label={<p className=\"font-14 text-secondary m-0\">{value}</p>}\n />\n ))}\n </div>\n {desc && (\n <FormHelperText className=\"text-black-50 mb-1\">{desc}</FormHelperText>\n )}\n {fieldError && fieldTouched && (\n <FieldError\n name={name}\n error={fieldError}\n touched={fieldTouched}\n dataTestId={dataTestId}\n />\n )}\n {component && (\n <div className={customComponentClass || 'mb-1 mx-1'}>{component}</div>\n )}\n </FieldWrapper>\n {child &&\n child.map((c, i) => {\n // Child rendering logic would be handled by DynamicForm orchestrator\n return null;\n })}\n </>\n );\n};\n\n","import React from 'react';\nimport { useFormContext } from '../../context/FormContext';\nimport { getFieldValue, getFieldError, getFieldTouched } from '../../utils/formik.utils';\nimport { FieldWrapper } from '../shared/FieldWrapper';\nimport { FieldLabel } from '../shared/FieldLabel';\nimport { FieldDescription } from '../shared/FieldDescription';\nimport { FieldError } from '../shared/FieldError';\nimport { formatString } from '../../utils/field.utils';\nimport { SelectFieldConfig } from '../../types/field.types';\n\n/**\n * DropdownField Component\n * Renders a native HTML select dropdown\n */\nexport const DropdownField: React.FC<SelectFieldConfig & { type: 'dropdown' }> = ({\n name,\n type,\n label,\n desc,\n info,\n required,\n disabled,\n customClass,\n isChild,\n noIndent,\n hidden,\n values = {},\n headerKey,\n dataTestId,\n isCopyEnable,\n resetChild = true,\n ignoreChar,\n customHandleChange,\n customFormChange,\n component,\n child,\n setFieldValuesRecursive,\n formik: formikProp,\n index,\n}) => {\n const { uiLibrary, formik } = useFormContext();\n const { adapter } = uiLibrary;\n const Select = adapter.Select;\n const FormControl = adapter.FormControl;\n const activeFormik = formikProp || formik;\n\n const fieldValue = getFieldValue(activeFormik, name);\n const fieldError = getFieldError(activeFormik, name);\n const fieldTouched = getFieldTouched(activeFormik, name);\n\n const handleSetFieldValuesRecursive = (childFields: typeof child, parentValue?: string) => {\n if (childFields && setFieldValuesRecursive) {\n setFieldValuesRecursive(childFields, parentValue);\n }\n };\n\n // Handle values as object or array\n const options = Array.isArray(values)\n ? values\n : Object.entries(values).map(([key, value]) => ({\n value: key,\n label: value || key,\n }));\n\n // Sort options - empty string first\n const sortedOptions = [...options].sort((a, b) => {\n if (a.value === '') return -1;\n return 0;\n });\n\n return (\n <>\n <FieldWrapper\n customClass={customClass}\n isChild={isChild}\n noIndent={noIndent}\n hidden={hidden}\n index={index}\n >\n <FormControl\n className=\"w-100\"\n required={required}\n error={!!(fieldTouched && fieldError)}\n >\n {label && (\n <FieldLabel\n name={name}\n label={label}\n required={required}\n info={info}\n />\n )}\n {desc && <FieldDescription desc={desc} />}\n <Select\n className={`form-select text-14 ${\n isCopyEnable ? 'border border-end-0' : ''\n } ${fieldError && fieldTouched ? 'border-danger' : ''}`}\n id={name}\n name={name}\n data-testid={dataTestId || `${formatString(name)}-dropdown`}\n disabled={disabled || false}\n value={(fieldValue as string) || ''}\n onChange={(event) => {\n if (customHandleChange) {\n customHandleChange(event, type, typeof index === 'number' ? index : undefined);\n } else if (customFormChange) {\n customFormChange(event, type);\n } else {\n activeFormik.handleChange(event);\n }\n if (resetChild) {\n handleSetFieldValuesRecursive(child, event.target.value);\n }\n }}\n onBlur={activeFormik.handleBlur}\n error={!!(fieldError && fieldTouched)}\n >\n {headerKey && <option>{headerKey}</option>}\n {sortedOptions.map((option, i) => (\n <option\n key={i}\n data-testid={`${formatString(String(option.value), ignoreChar)}-option`}\n value={option.value}\n >\n {option.label}\n </option>\n ))}\n </Select>\n {(fieldError && fieldTouched) && (\n <FieldError\n name={name}\n error={fieldError}\n touched={fieldTouched}\n dataTestId={dataTestId}\n />\n )}\n </FormControl>\n </FieldWrapper>\n {child &&\n child.map((childField, childIndex) => {\n // Child rendering would be handled by DynamicForm orchestrator\n // based on fieldValue === childField.hiddenlabel\n return null;\n })}\n {component && (\n <div className=\"mb-1 mx-1\">{component}</div>\n )}\n </>\n );\n};\n\n","import React from 'react';\nimport { useFormContext } from '../../context/FormContext';\nimport { getFieldValue, getFieldError, getFieldTouched } from '../../utils/formik.utils';\nimport { FieldError } from '../shared/FieldError';\nimport { FieldLabel } from '../shared/FieldLabel';\nimport { formatString } from '../../utils/field.utils';\nimport { BaseFieldConfig } from '../../types/field.types';\n\ninterface ToggleFieldProps extends BaseFieldConfig {\n type: 'toggle';\n}\n\n/**\n * ToggleField Component\n * Renders a switch/toggle component\n */\nexport const ToggleField: React.FC<ToggleFieldProps> = ({\n name,\n type,\n label,\n required,\n disabled,\n customClass,\n isChild,\n noIndent,\n dataTestId,\n customHandleChange,\n customFormChange,\n formik: formikProp,\n}) => {\n const { uiLibrary, formik } = useFormContext();\n const { adapter } = uiLibrary;\n const Switch = adapter.Switch;\n const activeFormik = formikProp || formik;\n\n const fieldValue = getFieldValue(activeFormik, name);\n const fieldError = getFieldError(activeFormik, name);\n const fieldTouched = getFieldTouched(activeFormik, name);\n\n return (\n <div\n className={`d-flex gap-2 align-items-center ${\n isChild && !noIndent ? 'ps-5' : ''\n }`}\n >\n <Switch\n id={name}\n name={name}\n data-testid={dataTestId || `${formatString(name)}-check-box`}\n disabled={disabled || false}\n checked={!!fieldValue}\n onChange={(event) => {\n const newValue = event.target.checked;\n if (customHandleChange) {\n customHandleChange(event, type);\n } else if (customFormChange) {\n customFormChange(event, type);\n } else {\n activeFormik.setFieldValue(name, newValue);\n }\n }}\n />\n {label && (\n <FieldLabel\n name={name}\n label={label}\n required={required}\n htmlFor={name}\n />\n )}\n {fieldError && fieldTouched && (\n <FieldError\n name={name}\n error={fieldError}\n touched={fieldTouched}\n dataTestId={dataTestId}\n />\n )}\n </div>\n );\n};\n\n","import React from 'react';\nimport { useFormContext } from '../../context/FormContext';\nimport { getFieldValue, getFieldError, getFieldTouched } from '../../utils/formik.utils';\nimport { FieldWrapper } from '../shared/FieldWrapper';\nimport { FieldLabel } from '../shared/FieldLabel';\nimport { FieldDescription } from '../shared/FieldDescription';\nimport { FieldError } from '../shared/FieldError';\nimport { IconRenderer } from '../shared/IconRenderer';\nimport { formatString } from '../../utils/field.utils';\nimport { FileUploadFieldConfig } from '../../types/field.types';\n\n/**\n * FileUploadField Component\n * Renders a file upload input field\n */\nexport const FileUploadField: React.FC<FileUploadFieldConfig> = ({\n name,\n type,\n label,\n info,\n required,\n customClass,\n customComponentClass,\n isChild,\n noIndent,\n dataTestId,\n customHandleChange,\n customFormChange,\n component,\n ref: inputRef,\n formik: formikProp,\n index,\n}) => {\n const { uiLibrary, formik } = useFormContext();\n const { adapter, icons } = uiLibrary;\n const Input = adapter.Input;\n const Button = adapter.Button;\n const IconButton = adapter.IconButton;\n const activeFormik = formikProp || formik;\n\n const fieldValue = getFieldValue(activeFormik, name);\n const fieldError = getFieldError(activeFormik, name);\n const fieldTouched = getFieldTouched(activeFormik, name);\n const InfoIcon = icons?.Info;\n const DeleteIcon = icons?.Delete;\n\n const handleRemoveFile = () => {\n activeFormik.setFieldValue(name, null);\n };\n\n const fileValue = fieldValue as File | string | null;\n const fileName =\n fileValue instanceof File\n ? fileValue.name\n : typeof fileValue === 'string'\n ? fileValue.split('/').pop()\n : null;\n\n return (\n <>\n <FieldWrapper\n customClass={customClass}\n isChild={isChild}\n noIndent={noIndent}\n index={index}\n >\n {label && (\n <FieldLabel\n name={name}\n label={label}\n required={required}\n info={info}\n />\n )}\n {!fileValue && (\n <input\n className={`form-control ${\n required && fieldError && fieldTouched\n ? 'border-danger'\n : ''\n }`}\n type=\"file\"\n id={name}\n name={name}\n data-testid={dataTestId || `${formatString(name)}-file`}\n ref={inputRef as React.Ref<HTMLInputElement>}\n onChange={(event) => {\n if (customHandleChange) {\n customHandleChange(event, type);\n } else if (customFormChange) {\n customFormChange(event, type);\n } else {\n activeFormik.handleChange(event);\n }\n if (event.currentTarget.files?.[0]) {\n activeFormik.setFieldValue(name, event.currentTarget.files[0]);\n }\n }}\n onBlur={activeFormik.handleBlur}\n />\n )}\n {required && fieldError && fieldTouched && (\n <FieldError\n name={name}\n error={fieldError}\n touched={fieldTouched}\n dataTestId={dataTestId}\n />\n )}\n\n {fileValue && (\n <>\n <div className=\"d-flex justify-content-between align-items-center\">\n <div>\n File: {fileName}\n </div>\n <Button\n variant=\"text\"\n data-testid={`${formatString(name)}-remove-btn`}\n className=\"text-14 text-capitalize p-1 text-danger gap-1 col-3\"\n onClick={handleRemoveFile}\n >\n {DeleteIcon && <IconRenderer Icon={DeleteIcon} size={16} />} Remove File\n </Button>\n </div>\n {fieldError && (\n <FieldError\n name={name}\n error={fieldError}\n touched={fieldTouched}\n dataTestId={dataTestId}\n />\n )}\n </>\n )}\n </FieldWrapper>\n {component && (\n <div className={customComponentClass || 'mb-1 mx-1'}>\n {component}\n </div>\n )}\n </>\n );\n};\n\n","import React from 'react';\nimport { useFormContext } from '../../context/FormContext';\nimport { getFieldValue, getFieldError, getFieldTouched } from '../../utils/formik.utils';\nimport { FieldWrapper } from '../shared/FieldWrapper';\nimport { FieldLabel } from '../shared/FieldLabel';\nimport { FieldDescription } from '../shared/FieldDescription';\nimport { FieldError } from '../shared/FieldError';\nimport { formatString } from '../../utils/field.utils';\nimport { SelectFieldConfig } from '../../types/field.types';\n\n/**\n * SingleSelectField Component\n * Renders a single-select dropdown using react-select\n * \n * NOTE: This requires react-select as a peer dependency\n * Users must install: npm install react-select\n */\nexport const SingleSelectField: React.FC<SelectFieldConfig & { type: 'singleSelect' }> = ({\n name,\n type,\n label,\n desc,\n info,\n required,\n disabled,\n customClass,\n customComponentClass,\n isChild,\n noIndent,\n hidden,\n values = [],\n isSearchable,\n isMulti = false,\n optionsLabel,\n dataTestId,\n customHandleChange,\n customFormChange,\n component,\n child,\n setFieldValuesRecursive,\n formik: formikProp,\n index,\n}) => {\n const { uiLibrary, formik } = useFormContext();\n const { adapter } = uiLibrary;\n const FormControl = adapter.FormControl;\n const activeFormik = formikProp || formik;\n\n const fieldValue = getFieldValue(activeFormik, name);\n const fieldError = getFieldError(activeFormik, name);\n const fieldTouched = getFieldTouched(activeFormik, name);\n\n // Convert values to react-select format if needed\n const options = Array.isArray(values)\n ? values\n : Object.entries(values).map(([value, label]) => ({\n value,\n label: String(label),\n }));\n\n // Find selected option\n const selectedOption = fieldValue\n ? options.find((opt) => opt.value === fieldValue)\n : null;\n\n // Handle react-select change event\n const handleSelectChange = (selected: { value: string | number; label: string } | null) => {\n const event = {\n target: {\n name,\n value: selected ? selected.value : '',\n },\n } as React.ChangeEvent<HTMLSelectElement>;\n\n if (customHandleChange) {\n customHandleChange(event, type);\n } else if (customFormChange) {\n customFormChange(event, type);\n } else {\n activeFormik.handleChange(event);\n }\n\n if (child && setFieldValuesRecursive) {\n setFieldValuesRecursive(child);\n }\n };\n\n // For now, we'll use the native Select adapter\n // In production, this would use react-select's Select component\n // Users would need to provide a react-select adapter or use the default\n const Select = adapter.Select;\n\n return (\n <>\n <FieldWrapper\n customClass={customClass}\n isChild={isChild}\n noIndent={noIndent}\n hidden={hidden}\n index={index}\n >\n <FormControl\n className=\"w-100\"\n required={required}\n error={!!(fieldTouched && fieldError)}\n >\n {label && (\n <FieldLabel\n name={name}\n label={label}\n required={required}\n info={info}\n />\n )}\n {desc && <FieldDescription desc={desc} />}\n <div data-testid={dataTestId || `${formatString(name)}-single-select`}>\n <Select\n className={`text-14 ${isMulti ? '' : ''} ${\n fieldError && fieldTouched ? 'border-danger' : ''\n }`}\n name={name}\n disabled={disabled || false}\n value={selectedOption ? String(selectedOption.value) : ''}\n onChange={(event) => {\n const selected = options.find(\n (opt) => String(opt.value) === event.target.value\n );\n handleSelectChange(selected || null);\n }}\n onBlur={activeFormik.handleBlur}\n error={!!(fieldError && fieldTouched)}\n >\n {options.map((option) => (\n <option key={option.value} value={String(option.value)}>\n {option.label}\n </option>\n ))}\n </Select>\n </div>\n {fieldError && fieldTouched && (\n <FieldError\n name={name}\n error={fieldError}\n touched={fieldTouched}\n dataTestId={dataTestId}\n />\n )}\n </FormControl>\n </FieldWrapper>\n {child &&\n child.map((childField, childIndex) => {\n // Child rendering would be handled by DynamicForm orchestrator\n // based on fieldValue === childField.hiddenlabel\n return null;\n })}\n {component && (\n <div className={customComponentClass || 'mb-1 mx-1'}>{component}</div>\n )}\n </>\n );\n};\n\n","import React from 'react';\nimport { useFormContext } from '../../context/FormContext';\nimport { getFieldValue, getFieldError, getFieldTouched } from '../../utils/formik.utils';\nimport { FieldWrapper } from '../shared/FieldWrapper';\nimport { FieldLabel } from '../shared/FieldLabel';\nimport { FieldDescription } from '../shared/FieldDescription';\nimport { FieldError } from '../shared/FieldError';\nimport { formatString } from '../../utils/field.utils';\nimport { SelectFieldConfig } from '../../types/field.types';\n\n/**\n * MultiSelectField Component\n * Renders a multi-select dropdown using react-select\n * \n * NOTE: This requires react-select as a peer dependency\n */\nexport const MultiSelectField: React.FC<SelectFieldConfig & { type: 'multiSelect' }> = ({\n name,\n type,\n label,\n desc,\n info,\n required,\n customClass,\n customDescClass,\n customComponentClass,\n isChild,\n noIndent,\n hidden,\n values = [],\n dataTestId,\n customHandleChange,\n component,\n blockComponent,\n formik: formikProp,\n index,\n}) => {\n const { uiLibrary, formik } = useFormContext();\n const { adapter } = uiLibrary;\n const FormControl = adapter.FormControl;\n const activeFormik = formikProp || formik;\n\n const fieldValue = getFieldValue(activeFormik, name);\n const fieldError = getFieldError(activeFormik, name);\n const fieldTouched = getFieldTouched(activeFormik, name);\n\n // Convert values to array format if needed\n const options = Array.isArray(values)\n ? values\n : Object.entries(values).map(([value, label]) => ({\n value,\n label: String(label),\n }));\n\n // Handle multi-select value (array)\n const selectedValues = Array.isArray(fieldValue) ? fieldValue : [];\n\n const handleChange = (event: React.ChangeEvent<HTMLSelectElement>) => {\n const selectedOptions = Array.from(event.target.selectedOptions, (option) =>\n option.value\n );\n\n const syntheticEvent = {\n target: {\n name,\n value: selectedOptions,\n },\n } as unknown as React.ChangeEvent<HTMLSelectElement>;\n\n if (customHandleChange) {\n customHandleChange(syntheticEvent, 'multiSelect');\n } else {\n activeFormik.setFieldValue(name, selectedOptions);\n }\n };\n\n const Select = adapter.Select;\n\n return (\n <>\n <FieldWrapper\n customClass={customClass}\n isChild={isChild}\n noIndent={noIndent}\n hidden={hidden}\n index={index}\n data-testid={dataTestId || `${formatString(name)}-multi-select`}\n >\n {blockComponent && <div>{blockComponent}</div>}\n <FormControl className=\"w-100\" required={required}>\n {label && (\n <FieldLabel\n name={name}\n label={label}\n required={required}\n info={info}\n />\n )}\n {desc && (\n <FieldDescription desc={desc} customDescClass={customDescClass} />\n )}\n <div data-testid={dataTestId || `${formatString(name)}-select`}>\n <select\n name={name}\n multiple\n value={selectedValues.map(String)}\n onChange={handleChange}\n onBlur={activeFormik.handleBlur}\n className={`form-select text-14 ${fieldError && fieldTouched ? 'border-danger' : ''}`}\n >\n {options.map((option) => (\n <option key={option.value} value={String(option.value)}>\n {option.label}\n </option>\n ))}\n </select>\n </div>\n {fieldError && fieldTouched && (\n <FieldError\n name={name}\n error={fieldError}\n touched={fieldTouched}\n dataTestId={dataTestId}\n />\n )}\n </FormControl>\n </FieldWrapper>\n {component && (\n <div className={customComponentClass || 'mb-1 mx-1'}>{component}</div>\n )}\n </>\n );\n};\n\n","import React, { useState } from 'react';\nimport { useFormContext } from '../../context/FormContext';\nimport { getFieldValue, getFieldError, getFieldTouched } from '../../utils/formik.utils';\nimport { FieldWrapper } from '../shared/FieldWrapper';\nimport { FieldLabel } from '../shared/FieldLabel';\nimport { FieldDescription } from '../shared/FieldDescription';\nimport { FieldError } from '../shared/FieldError';\nimport { formatString } from '../../utils/field.utils';\nimport { SelectFieldConfig } from '../../types/field.types';\n\n/**\n * AsyncSelectField Component\n * Renders an async-loading select dropdown using react-select/async\n * \n * NOTE: This requires react-select as a peer dependency\n */\nexport const AsyncSelectField: React.FC<SelectFieldConfig & { type: 'asyncSelect' }> = ({\n name,\n type,\n label,\n desc,\n info,\n required,\n disabled,\n customClass,\n customComponentClass,\n isChild,\n noIndent,\n hidden,\n values = [],\n isMulti = false,\n loaderCall,\n dataTestId,\n customHandleChange,\n customFormChange,\n component,\n child,\n setFieldValuesRecursive,\n formik: formikProp,\n index,\n}) => {\n const { uiLibrary, formik } = useFormContext();\n const { adapter } = uiLibrary;\n const FormControl = adapter.FormControl;\n const activeFormik = formikProp || formik;\n\n const [asyncLoading, setAsyncLoading] = useState(false);\n\n const fieldValue = getFieldValue(activeFormik, name);\n const fieldError = getFieldError(activeFormik, name);\n const fieldTouched = getFieldTouched(activeFormik, name);\n\n const loadAsyncSelectOptions = async (inputValue: string) => {\n if (!loaderCall) return [];\n setAsyncLoading(true);\n const { apps, error } = await loaderCall(inputValue);\n setAsyncLoading(false);\n if (error || !apps) {\n return [];\n }\n return apps;\n };\n\n const handleChange = (event: React.ChangeEvent<HTMLSelectElement>) => {\n if (customHandleChange) {\n customHandleChange(event, type);\n } else if (customFormChange) {\n customFormChange(event, type);\n } else {\n activeFormik.handleChange(event);\n }\n\n if (child && setFieldValuesRecursive) {\n setFieldValuesRecursive(child);\n }\n };\n\n const Select = adapter.Select;\n\n return (\n <>\n <FieldWrapper\n customClass={customClass}\n isChild={isChild}\n noIndent={noIndent}\n hidden={hidden}\n index={index}\n data-testid={dataTestId || `${formatString(name)}-async-select`}\n >\n <FormControl\n className=\"w-100\"\n required={required}\n error={!!(fieldTouched && fieldError)}\n >\n {label && (\n <FieldLabel\n name={name}\n label={label}\n required={required}\n info={info}\n />\n )}\n {desc && <FieldDescription desc={desc} />}\n <div\n data-testid={dataTestId || `${formatString(name)}-async-select`}\n >\n <Select\n name={name}\n disabled={disabled}\n value={fieldValue ? String(fieldValue) : ''}\n onChange={handleChange}\n onBlur={activeFormik.handleBlur}\n error={!!(fieldError && fieldTouched)}\n >\n {asyncLoading && <option>Loading...</option>}\n {!asyncLoading &&\n values &&\n (Array.isArray(values)\n ? values\n : Object.entries(values).map(([value, label]) => ({\n value,\n label: String(label),\n }))\n ).map((option: { value: string | number; label: string }) => (\n <option key={option.value} value={String(option.value)}>\n {option.label}\n </option>\n ))}\n </Select>\n </div>\n {fieldError && fieldTouched && (\n <FieldError\n name={name}\n error={fieldError}\n touched={fieldTouched}\n dataTestId={dataTestId}\n />\n )}\n </FormControl>\n </FieldWrapper>\n {child &&\n child.map((childField, childIndex) => {\n // Child rendering would be handled by DynamicForm orchestrator\n return null;\n })}\n {component && (\n <div className={customComponentClass || 'mb-1 mx-1'}>{component}</div>\n )}\n </>\n );\n};\n\n","import React from 'react';\nimport { useFormContext } from '../../context/FormContext';\nimport { getFieldValue, getFieldError, getFieldTouched } from '../../utils/formik.utils';\nimport { FieldWrapper } from '../shared/FieldWrapper';\nimport { FieldLabel } from '../shared/FieldLabel';\nimport { FieldError } from '../shared/FieldError';\nimport { formatString } from '../../utils/field.utils';\nimport { DatePickerFieldConfig } from '../../types/field.types';\n\n/**\n * DatePickerField Component\n * Renders a date picker component\n * \n * NOTE: This requires a date picker library (e.g., @mui/x-date-pickers, react-datepicker)\n * Users must provide a DatePicker component in their UI adapter\n */\nexport const DatePickerField: React.FC<DatePickerFieldConfig & { type: 'datePicker' }> = ({\n name,\n type,\n label,\n info,\n required,\n disabled,\n customClass,\n isChild,\n noIndent,\n hidden,\n dateFormat = 'DD/MM/YYYY',\n dataTestId,\n component,\n formik: formikProp,\n index,\n}) => {\n const { uiLibrary, formik } = useFormContext();\n const { adapter } = uiLibrary;\n const activeFormik = formikProp || formik;\n\n const fieldValue = getFieldValue(activeFormik, name);\n const fieldError = getFieldError(activeFormik, name);\n const fieldTouched = getFieldTouched(activeFormik, name);\n\n // If DatePicker is not available in adapter, fallback to text input\n const DatePicker = adapter.DatePicker;\n const Input = adapter.Input;\n\n const handleDateChange = (date: unknown) => {\n // Format date based on dateFormat\n let formattedDate = '';\n if (date) {\n if (typeof date === 'string') {\n formattedDate = date;\n } else if (date instanceof Date) {\n // Simple formatting - users should use a proper date library\n const day = String(date.getDate()).padStart(2, '0');\n const month = String(date.getMonth() + 1).padStart(2, '0');\n const year = date.getFullYear();\n formattedDate = `${day}/${month}/${year}`;\n }\n }\n activeFormik.setFieldValue(name, formattedDate);\n };\n\n if (!DatePicker) {\n // Fallback to text input if DatePicker not available\n return (\n <FieldWrapper\n customClass={customClass}\n isChild={isChild}\n noIndent={noIndent}\n hidden={hidden}\n index={index}\n >\n {label && (\n <FieldLabel\n name={name}\n label={label}\n required={required}\n info={info}\n />\n )}\n <div className=\"col-xs-12 col-md-5 col-sm-9 px-0\">\n <Input\n type=\"date\"\n name={name}\n data-testid={dataTestId || `${formatString(name)}-date-picker`}\n value={(fieldValue as string) || ''}\n onChange={(event) => activeFormik.handleChange(event)}\n onBlur={activeFormik.handleBlur}\n disabled={disabled || false}\n error={!!(fieldError && fieldTouched)}\n />\n </div>\n {fieldError && fieldTouched && (\n <FieldError\n name={name}\n error={fieldError}\n touched={fieldTouched}\n dataTestId={dataTestId}\n />\n )}\n {component && <div className=\"mt-3\">{component}</div>}\n </FieldWrapper>\n );\n }\n\n return (\n <FieldWrapper\n customClass={customClass}\n isChild={isChild}\n noIndent={noIndent}\n hidden={hidden}\n index={index}\n >\n {label && (\n <FieldLabel\n name={name}\n label={label}\n required={required}\n info={info}\n />\n )}\n <div className=\"col-xs-12 col-md-5 col-sm-9 px-0\">\n <DatePicker\n value={fieldValue || null}\n onChange={handleDateChange}\n format={dateFormat}\n disabled={disabled}\n data-testid={dataTestId || `${formatString(name)}-date-picker`}\n />\n </div>\n {fieldError && fieldTouched && (\n <FieldError\n name={name}\n error={fieldError}\n touched={fieldTouched}\n dataTestId={dataTestId}\n />\n )}\n {component && <div className=\"mt-3\">{component}</div>}\n </FieldWrapper>\n );\n};\n\n","import React from 'react';\nimport { useFormContext } from '../../context/FormContext';\nimport { getFieldValue, getFieldError, getFieldTouched } from '../../utils/formik.utils';\nimport { FieldWrapper } from '../shared/FieldWrapper';\nimport { FieldLabel } from '../shared/FieldLabel';\nimport { FieldDescription } from '../shared/FieldDescription';\nimport { FieldError } from '../shared/FieldError';\nimport { formatString } from '../../utils/field.utils';\nimport { DatePickerFieldConfig } from '../../types/field.types';\n\n/**\n * DateTimePickerField Component\n * Renders a date-time picker component\n * \n * NOTE: This requires a date-time picker library (e.g., @mui/x-date-pickers)\n * Users must provide a DateTimePicker component in their UI adapter\n */\nexport const DateTimePickerField: React.FC<DatePickerFieldConfig & { type: 'dateTimePicker' }> = ({\n name,\n type,\n label,\n desc,\n info,\n required,\n disabled,\n customClass,\n customComponentClass,\n isChild,\n noIndent,\n hidden,\n views,\n disablePast,\n dataTestId,\n customHandleChange,\n customFormChange,\n component,\n child,\n formik: formikProp,\n index,\n}) => {\n const { uiLibrary, formik } = useFormContext();\n const { adapter } = uiLibrary;\n const FormControl = adapter.FormControl;\n const activeFormik = formikProp || formik;\n\n const fieldValue = getFieldValue(activeFormik, name);\n const fieldError = getFieldError(activeFormik, name);\n const fieldTouched = getFieldTouched(activeFormik, name);\n\n const DateTimePicker = adapter.DateTimePicker;\n const Input = adapter.Input;\n\n const handleDateTimeChange = (date: unknown) => {\n const event = {\n name,\n value: date,\n };\n\n if (customHandleChange) {\n customHandleChange(event as any, type);\n } else if (customFormChange) {\n customFormChange(event as any, type);\n } else {\n activeFormik.handleChange(event as any);\n }\n };\n\n // Determine format based on views\n const format =\n Array.isArray(views) &&\n views.length === 2 &&\n views[0] === 'day' &&\n views[1] === 'hours'\n ? 'DD/MM/YYYY HH:mm:ss'\n : 'DD/MM/YYYY HH:mm';\n\n if (!DateTimePicker) {\n // Fallback to datetime-local input\n return (\n <FieldWrapper\n customClass={customClass}\n isChild={isChild}\n noIndent={noIndent}\n hidden={hidden}\n index={index}\n >\n <FormControl\n className=\"w-100\"\n required={required}\n error={!!(fieldTouched && fieldError)}\n >\n {label && (\n <FieldLabel\n name={name}\n label={label}\n required={required}\n info={info}\n />\n )}\n {desc && <FieldDescription desc={desc} />}\n <Input\n type=\"datetime-local\"\n name={name}\n data-testid={dataTestId || `${formatString(name)}-date-time-picker`}\n value={(fieldValue as string) || ''}\n onChange={(event) => activeFormik.handleChange(event)}\n onBlur={activeFormik.handleBlur}\n disabled={disabled || false}\n error={!!(fieldError && fieldTouched)}\n />\n {fieldError && fieldTouched && (\n <FieldError\n name={name}\n error={fieldError}\n touched={fieldTouched}\n dataTestId={dataTestId}\n />\n )}\n </FormControl>\n </FieldWrapper>\n );\n }\n\n return (\n <>\n <FieldWrapper\n customClass={customClass}\n isChild={isChild}\n noIndent={noIndent}\n hidden={hidden}\n index={index}\n >\n <FormControl\n className=\"w-100\"\n required={required}\n error={!!(fieldTouched && fieldError)}\n >\n {label && (\n <FieldLabel\n name={name}\n label={label}\n required={required}\n info={info}\n />\n )}\n {desc && <FieldDescription desc={desc} />}\n <DateTimePicker\n value={fieldValue || null}\n onChange={handleDateTimeChange}\n format={format}\n disabled={disabled}\n views={views}\n disablePast={disablePast}\n data-testid={dataTestId || `${formatString(name)}-date-time-picker`}\n />\n {fieldError && fieldTouched && (\n <FieldError\n name={name}\n error={fieldError}\n touched={fieldTouched}\n dataTestId={dataTestId}\n />\n )}\n </FormControl>\n </FieldWrapper>\n {child &&\n child.map((childField, childIndex) => {\n // Child rendering would be handled by DynamicForm orchestrator\n return null;\n })}\n {component && (\n <div className={customComponentClass || 'mb-1 mx-1'}>{component}</div>\n )}\n </>\n );\n};\n\n","import React from 'react';\nimport { useFormContext } from '../../context/FormContext';\nimport { IconRenderer } from '../shared/IconRenderer';\nimport { formatString } from '../../utils/field.utils';\nimport { BaseFieldConfig } from '../../types/field.types';\n\ninterface DeleteFieldProps extends BaseFieldConfig {\n type: 'delete';\n handleDeleteAttribute?: (name: string) => void;\n}\n\n/**\n * DeleteField Component\n * Renders a delete button/icon\n */\nexport const DeleteField: React.FC<DeleteFieldProps> = ({\n name,\n type,\n handleDeleteAttribute,\n index,\n}) => {\n const { uiLibrary } = useFormContext();\n const { adapter, icons } = uiLibrary;\n const IconButton = adapter.IconButton;\n const DeleteIcon = icons?.Delete;\n\n const handleClick = () => {\n if (handleDeleteAttribute) {\n handleDeleteAttribute(name);\n }\n };\n\n return (\n <div className=\"col-1\" key={index}>\n {DeleteIcon && IconButton ? (\n <IconButton\n role=\"button\"\n data-testid={`${formatString(name)}-delete-btn`}\n onClick={handleClick}\n className=\"text-danger fs-4 mt-3\"\n >\n <IconRenderer Icon={DeleteIcon} size={20} />\n </IconButton>\n ) : (\n <button\n type=\"button\"\n data-testid={`${formatString(name)}-delete-btn`}\n onClick={handleClick}\n className=\"text-danger fs-4 mt-3\"\n >\n ×\n </button>\n )}\n </div>\n );\n};\n\n","import React from 'react';\nimport { useFormContext } from '../../context/FormContext';\nimport { getFieldValue, getFieldError, getFieldTouched } from '../../utils/formik.utils';\nimport { FieldWrapper } from '../shared/FieldWrapper';\nimport { FieldLabel } from '../shared/FieldLabel';\nimport { FieldDescription } from '../shared/FieldDescription';\nimport { FieldError } from '../shared/FieldError';\nimport { formatString } from '../../utils/field.utils';\nimport { CounterFieldConfig } from '../../types/field.types';\n\n/**\n * CounterField Component\n * Renders a counter component with increment/decrement buttons\n * \n * NOTE: This is a simplified version. Users can provide a custom Counter component\n * via the component prop or extend the adapter\n */\nexport const CounterField: React.FC<CounterFieldConfig> = ({\n name,\n type,\n label,\n desc,\n info,\n required,\n customClass,\n customComponentClass,\n isChild,\n noIndent,\n hidden,\n min,\n max,\n suffix,\n dataTestId,\n customHandleChange,\n customFormChange,\n component,\n child,\n formik: formikProp,\n index,\n}) => {\n const { uiLibrary, formik } = useFormContext();\n const { adapter } = uiLibrary;\n const FormControl = adapter.FormControl;\n const Button = adapter.Button;\n const Input = adapter.Input;\n const activeFormik = formikProp || formik;\n\n const fieldValue = getFieldValue(activeFormik, name);\n const numericValue = Number(fieldValue) || 0;\n const fieldError = getFieldError(activeFormik, name);\n const fieldTouched = getFieldTouched(activeFormik, name);\n\n const handleIncrement = () => {\n const newValue = max !== undefined ? Math.min(numericValue + 1, max) : numericValue + 1;\n const event = {\n name,\n value: newValue,\n };\n if (customHandleChange) {\n customHandleChange(event as any, type);\n } else if (customFormChange) {\n customFormChange(event as any, type);\n } else {\n activeFormik.handleChange(event as any);\n }\n };\n\n const handleDecrement = () => {\n const newValue = min !== undefined ? Math.max(numericValue - 1, min) : numericValue - 1;\n const event = {\n name,\n value: newValue,\n };\n if (customHandleChange) {\n customHandleChange(event as any, type);\n } else if (customFormChange) {\n customFormChange(event as any, type);\n } else {\n activeFormik.handleChange(event as any);\n }\n };\n\n const handleInputChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n const value = Number(event.target.value);\n if (isNaN(value)) return;\n\n let newValue = value;\n if (min !== undefined && value < min) newValue = min;\n if (max !== undefined && value > max) newValue = max;\n\n const syntheticEvent = {\n target: {\n name,\n value: newValue,\n },\n } as unknown as React.ChangeEvent<HTMLInputElement>;\n\n if (customHandleChange) {\n customHandleChange(syntheticEvent, type);\n } else if (customFormChange) {\n customFormChange(syntheticEvent, type);\n } else {\n activeFormik.handleChange(syntheticEvent);\n }\n };\n\n return (\n <>\n <FieldWrapper\n customClass={customClass}\n isChild={isChild}\n noIndent={noIndent}\n hidden={hidden}\n index={index}\n >\n <FormControl\n className=\"w-100\"\n required={required}\n error={!!(fieldTouched && fieldError)}\n >\n {label && (\n <FieldLabel\n name={name}\n label={label}\n required={required}\n info={info}\n />\n )}\n {desc && <FieldDescription desc={desc} />}\n <div className=\"d-flex align-items-center gap-2\">\n <Button\n type=\"button\"\n onClick={handleDecrement}\n disabled={min !== undefined && numericValue <= min}\n >\n −\n </Button>\n <Input\n type=\"number\"\n name={name}\n data-testid={dataTestId || `${formatString(name)}-counter`}\n value={numericValue}\n onChange={handleInputChange}\n onBlur={activeFormik.handleBlur}\n min={min}\n max={max}\n className=\"text-center\"\n style={{ width: '80px' }}\n error={!!(fieldError && fieldTouched)}\n />\n {suffix && <span>{suffix}</span>}\n <Button\n type=\"button\"\n onClick={handleIncrement}\n disabled={max !== undefined && numericValue >= max}\n >\n +\n </Button>\n </div>\n {fieldError && fieldTouched && (\n <FieldError\n name={name}\n error={fieldError}\n touched={fieldTouched}\n dataTestId={dataTestId}\n />\n )}\n </FormControl>\n </FieldWrapper>\n {child &&\n child.map((childField, childIndex) => {\n // Child rendering would be handled by DynamicForm orchestrator\n return null;\n })}\n {component && (\n <div className={customComponentClass || 'mb-1 mx-1'}>{component}</div>\n )}\n </>\n );\n};\n\n","/**\n * Translation hook\n * \n * This is a simple fallback. Users should provide their own translation hook\n * (e.g., from react-i18next) if they need internationalization.\n */\n\nexport const useTranslation = () => {\n return {\n t: (key: string) => {\n // Simple key mapping - users should replace this with their translation library\n const translations: Record<string, string> = {\n 'COMMON:add': 'Add',\n 'COMMON:choose_attribute': 'Choose Attribute',\n 'COMMON:attribute_mapping.no_attributes_added':\n 'No attributes added',\n };\n return translations[key] || key;\n },\n };\n};\n\n","import React from 'react';\nimport { useFormContext } from '../../context/FormContext';\nimport { getFieldValue, getFieldError, getFieldTouched } from '../../utils/formik.utils';\nimport { FieldWrapper } from '../shared/FieldWrapper';\nimport { FieldLabel } from '../shared/FieldLabel';\nimport { FieldDescription } from '../shared/FieldDescription';\nimport { IconRenderer } from '../shared/IconRenderer';\nimport { formatString } from '../../utils/field.utils';\nimport { FieldArrayConfig } from '../../types/field.types';\nimport { useTranslation } from '../../hooks/useTranslation';\n\n/**\n * FieldArrayField Component\n * Renders dynamic array fields (key-value pairs or simple arrays)\n */\nexport const FieldArrayField: React.FC<FieldArrayConfig> = ({\n name,\n type,\n label,\n desc,\n info,\n required,\n showOptional,\n customClass,\n customComponentClass,\n isButtonVisible = true,\n buttonLabel,\n properties,\n component,\n formik: formikProp,\n index,\n}) => {\n const { uiLibrary, formik } = useFormContext();\n const { adapter, icons } = uiLibrary;\n const Input = adapter.Input;\n const Button = adapter.Button;\n const IconButton = adapter.IconButton;\n const activeFormik = formikProp || formik;\n const { t } = useTranslation();\n\n const fieldValue = getFieldValue(activeFormik, name);\n const arrayValue = Array.isArray(fieldValue) ? fieldValue : [];\n const AddIcon = icons?.Add;\n const DeleteIcon = icons?.Delete;\n\n const deleteRow = (indexToDelete: number) => {\n const updatedArray = arrayValue.filter((_, i) => i !== indexToDelete);\n activeFormik.setFieldValue(name, updatedArray);\n };\n\n const addRow = () => {\n if (properties?.isKeyValue) {\n activeFormik.setFieldValue(name, [...arrayValue, { key: '', value: '' }]);\n } else {\n activeFormik.setFieldValue(name, [...arrayValue, '']);\n }\n };\n\n const isKeyValue = properties?.isKeyValue || false;\n\n return (\n <FieldWrapper customClass={customClass} index={index}>\n {label && (\n <FieldLabel\n name={name}\n label={label}\n required={required}\n showOptional={showOptional}\n info={info}\n />\n )}\n {desc && <FieldDescription desc={desc} />}\n {component && (\n <div className={customComponentClass || 'mb-2'}>{component}</div>\n )}\n\n {isKeyValue ? (\n <>\n {arrayValue.map((item: { key?: string; value?: string }, itemIndex: number) => (\n <div key={itemIndex} className=\"d-flex mb-2 gap-2\">\n <div className=\"col\">\n <Input\n name={`${name}[${itemIndex}].key`}\n data-testid={\n formatString(name) + '-key-field'\n }\n className={`form-control font-14 ${\n (activeFormik.touched[name] as unknown as Record<string, unknown>)?.[itemIndex] &&\n (activeFormik.errors[name] as unknown as Record<string, Record<string, string>>)?.[itemIndex]?.key\n ? 'border-danger'\n : ''\n }`}\n value={item.key || ''}\n onChange={(event) => {\n const newValue = [...arrayValue];\n newValue[itemIndex] = {\n ...newValue[itemIndex],\n key: event.target.value,\n };\n activeFormik.setFieldValue(name, newValue);\n }}\n onBlur={activeFormik.handleBlur}\n placeholder={properties?.keyPlaceholder || 'Enter key'}\n autoComplete=\"off\"\n />\n {(() => {\n const errorKey = (activeFormik.errors[name] as unknown as Record<string, Record<string, string>>)?.[itemIndex]?.key;\n const isTouched = (activeFormik.touched[name] as unknown as Record<string, unknown>)?.[itemIndex];\n return isTouched && errorKey ? (\n <small\n data-testid={`${formatString(name)}-key-error`}\n className=\"d-flex text-danger mt-1 text-12\"\n >\n {String(errorKey)}\n </small>\n ) : null;\n })()}\n </div>\n <div className=\"col\">\n <Input\n name={`${name}[${itemIndex}].value`}\n data-testid={formatString(name) + '-value-field'}\n className={`form-control font-14 ${\n (activeFormik.touched[name] as unknown as Record<string, unknown>)?.[itemIndex] &&\n (activeFormik.errors[name] as unknown as Record<string, Record<string, string>>)?.[itemIndex]?.value\n ? 'border-danger'\n : ''\n }`}\n value={item.value || ''}\n onChange={(event) => {\n const newValue = [...arrayValue];\n newValue[itemIndex] = {\n ...newValue[itemIndex],\n value: event.target.value,\n };\n activeFormik.setFieldValue(name, newValue);\n }}\n onBlur={activeFormik.handleBlur}\n placeholder={\n properties?.valuePlaceholder || 'Enter value'\n }\n autoComplete=\"off\"\n />\n {(() => {\n const errorValue = (activeFormik.errors[name] as unknown as Record<string, Record<string, string>>)?.[itemIndex]?.value;\n const isTouched = (activeFormik.touched[name] as unknown as Record<string, unknown>)?.[itemIndex];\n return isTouched && errorValue ? (\n <small\n data-testid={`${formatString(name)}-value-error`}\n className=\"d-flex text-danger mt-1 text-12\"\n >\n {String(errorValue)}\n </small>\n ) : null;\n })()}\n </div>\n {arrayValue.length !== 1 && (\n <div>\n {IconButton && DeleteIcon ? (\n <IconButton\n size=\"small\"\n data-testid={`${formatString(name)}-del-btn`}\n onClick={() => deleteRow(itemIndex)}\n >\n <IconRenderer Icon={DeleteIcon} size={20} className=\"text-danger\" />\n </IconButton>\n ) : (\n <button\n type=\"button\"\n data-testid={`${formatString(name)}-del-btn`}\n onClick={() => deleteRow(itemIndex)}\n >\n ×\n </button>\n )}\n </div>\n )}\n </div>\n ))}\n {isButtonVisible && (\n <div>\n <Button\n variant=\"text\"\n className=\"text-primary text-capitalize text-start\"\n startIcon={AddIcon ? <IconRenderer Icon={AddIcon} size={16} /> : '+'}\n data-testid={`${formatString(name)}-add-btn`}\n onClick={addRow}\n >\n {buttonLabel || t('COMMON:add')}\n </Button>\n </div>\n )}\n </>\n ) : (\n <>\n {arrayValue.map((item: string, itemIndex: number) => (\n <div key={itemIndex} className=\"d-flex mb-2\">\n <div className=\"col\">\n <Input\n name={`${name}[${itemIndex}]`}\n data-testid={formatString(name) + '-field'}\n className={`form-control font-14 ${\n (activeFormik.touched[name] as unknown as unknown[])?.[itemIndex] &&\n (activeFormik.errors[name] as unknown as unknown[])?.[itemIndex]\n ? 'border-danger'\n : ''\n }`}\n value={item}\n onChange={(event) => {\n const newValue = [...arrayValue];\n newValue[itemIndex] = event.target.value;\n activeFormik.setFieldValue(name, newValue);\n }}\n onBlur={activeFormik.handleBlur}\n autoComplete=\"off\"\n />\n {(() => {\n const error = (activeFormik.errors[name] as unknown as unknown[])?.[itemIndex];\n const isTouched = (activeFormik.touched[name] as unknown as unknown[])?.[itemIndex];\n return isTouched && error ? (\n <small\n data-testid={`${formatString(name)}-error`}\n className=\"d-flex text-danger mt-1 text-12\"\n >\n {String(error)}\n </small>\n ) : null;\n })()}\n </div>\n {arrayValue.length !== 1 && (\n <div>\n {IconButton && DeleteIcon ? (\n <IconButton\n size=\"small\"\n data-testid={`${formatString(name)}-del-btn`}\n onClick={() => deleteRow(itemIndex)}\n >\n <IconRenderer Icon={DeleteIcon} size={20} className=\"text-danger\" />\n </IconButton>\n ) : (\n <button\n type=\"button\"\n data-testid={`${formatString(name)}-del-btn`}\n onClick={() => deleteRow(itemIndex)}\n >\n ×\n </button>\n )}\n </div>\n )}\n </div>\n ))}\n {isButtonVisible && (\n <div>\n <Button\n variant=\"text\"\n className=\"text-primary text-capitalize text-start\"\n startIcon={AddIcon ? <IconRenderer Icon={AddIcon} size={16} /> : '+'}\n data-testid={`${formatString(name)}-add-btn`}\n onClick={addRow}\n >\n {buttonLabel || t('COMMON:add')}\n </Button>\n </div>\n )}\n </>\n )}\n </FieldWrapper>\n );\n};\n\n","import React from 'react';\nimport { useFormContext } from '../../context/FormContext';\nimport { getNestedValueNew, getNestedProperty, getFieldValue } from '../../utils/formik.utils';\nimport { FieldWrapper } from '../shared/FieldWrapper';\nimport { FieldLabel } from '../shared/FieldLabel';\nimport { FieldDescription } from '../shared/FieldDescription';\nimport { IconRenderer } from '../shared/IconRenderer';\nimport { formatString } from '../../utils/field.utils';\nimport { AttributeFieldConfig, FieldConfig } from '../../types/field.types';\nimport { useTranslation } from '../../hooks/useTranslation';\n\n// Import field components for rendering properties\nimport { InputField } from './InputField';\nimport { DropdownField } from './DropdownField';\nimport { CheckboxField } from './CheckboxField';\nimport { RadioField } from './RadioField';\nimport { TextareaField } from './TextareaField';\nimport { FileUploadField } from './FileUploadField';\nimport { MultiSelectField } from './MultiSelectField';\nimport { SingleSelectField } from './SingleSelectField';\nimport { ComponentField } from './ComponentField';\nimport { LinkField } from './LinkField';\n\n/**\n * Field component mapping for AttributeField properties\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst PROPERTY_FIELD_MAP: Record<string, React.ComponentType<any>> = {\n inputfield: InputField,\n dropdown: DropdownField,\n checkbox: CheckboxField,\n radiobtn: RadioField,\n textarea: TextareaField,\n fileupload: FileUploadField,\n multiSelect: MultiSelectField,\n singleSelect: SingleSelectField,\n component: ComponentField,\n link: LinkField,\n};\n\n/**\n * AttributeField Component\n * Renders complex nested attribute mapping fields\n */\nexport const AttributeField: React.FC<AttributeFieldConfig & {\n setFieldValuesRecursive?: (child: FieldConfig[], parentValue?: string) => void;\n customFormChange?: (event: any, type: string) => void;\n}> = ({\n name,\n type,\n label,\n desc,\n required,\n customClass,\n customAttrClass,\n showIllustration = true,\n showAddNewFieldBtn = true,\n addNewFieldBtnLabel,\n properties = [],\n addNewField = {},\n component,\n formik: formikProp,\n minimumValuePresent = false,\n index,\n setFieldValuesRecursive,\n customFormChange,\n}) => {\n const { uiLibrary, formik } = useFormContext();\n const { adapter, icons } = uiLibrary;\n const Button = adapter.Button;\n const IconButton = adapter.IconButton;\n const activeFormik = formikProp || formik;\n const { t } = useTranslation();\n\n const AddIcon = icons?.Add;\n const DeleteIcon = icons?.Delete;\n\n const attributeValues = getNestedValueNew(activeFormik.values, name);\n const attributeValuesAlt = getNestedProperty(activeFormik.values, name);\n const valuesArray = Array.isArray(attributeValues)\n ? attributeValues\n : Array.isArray(attributeValuesAlt)\n ? attributeValuesAlt\n : [];\n\n const deleteRow = (indexToDelete: number) => {\n const currentValues = getNestedProperty(activeFormik.values, name);\n const valuesArray = Array.isArray(currentValues) ? currentValues : [];\n const updatedArray = valuesArray.filter((_, i) => i !== indexToDelete);\n activeFormik.setFieldValue(name, updatedArray);\n };\n\n const addNewAttribute = () => {\n const currentValues = getNestedProperty(activeFormik.values, name);\n const valuesArray = Array.isArray(currentValues) ? currentValues : [];\n activeFormik.setFieldValue(name, [...valuesArray, addNewField]);\n };\n\n const hasNoAttributes =\n valuesArray.length === 0 ||\n (typeof valuesArray === 'object' && Object.keys(valuesArray).length === 0);\n\n /**\n * Render a property field within AttributeField\n */\n const renderPropertyField = (property: FieldConfig, propIndex: number) => {\n const PropertyComponent = PROPERTY_FIELD_MAP[property.type];\n if (!PropertyComponent) {\n console.warn(`Unknown property type in AttributeField: ${property.type}`);\n return null;\n }\n\n const propertyProps = {\n ...property,\n formik: activeFormik,\n index: propIndex,\n setFieldValuesRecursive,\n customFormChange,\n };\n\n return <PropertyComponent key={propIndex} {...propertyProps} />;\n };\n\n return (\n <FieldWrapper customClass={customClass} index={index}>\n {label && (\n <FieldLabel\n name={name}\n label={label}\n required={required}\n />\n )}\n {desc && <FieldDescription desc={desc} />}\n {component && <div className=\"mt-3\">{component}</div>}\n\n {showIllustration && hasNoAttributes ? (\n <div className=\"d-flex flex-column justify-content-center align-items-center gap-4 pt-4\">\n {/* Placeholder for illustration image */}\n <div\n data-testid=\"no-attr-img\"\n style={{\n width: '200px',\n height: '200px',\n backgroundColor: '#f0f0f0',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n }}\n >\n No Image\n </div>\n <h6 data-testid=\"no-attr-text\" className=\"mb-4\">\n {t('COMMON:attribute_mapping.no_attributes_added')}\n </h6>\n </div>\n ) : (\n valuesArray.map((item: Record<string, unknown>, itemIndex: number) => {\n // Transform properties with nested names\n const transformedProperties = properties.map((property) => ({\n ...property,\n name: `${name}[${itemIndex}].${property.name}`,\n child: property.child?.map((childItem) => ({\n ...childItem,\n name: `${name}[${itemIndex}].${childItem.name}`,\n })),\n }));\n\n return (\n <div\n key={itemIndex}\n className={customAttrClass || 'd-flex flex-row gap-3 mb-3'}\n >\n {/* Render properties as fields */}\n {transformedProperties.map((property, propIndex) => {\n return (\n <React.Fragment key={propIndex}>\n {renderPropertyField(property, propIndex)}\n </React.Fragment>\n );\n })}\n\n {(minimumValuePresent\n ? valuesArray.length > 1\n : true) && (\n <div className=\"col-1 mt-4 pt-1\">\n <div className={minimumValuePresent ? 'mt-0' : ''}>\n {IconButton && DeleteIcon ? (\n <IconButton\n size=\"small\"\n onClick={() => deleteRow(itemIndex)}\n data-testid={`${formatString(name)}-delete-icon`}\n >\n <IconRenderer Icon={DeleteIcon} size={20} className=\"text-danger\" />\n </IconButton>\n ) : (\n <button\n type=\"button\"\n onClick={() => deleteRow(itemIndex)}\n data-testid={`${formatString(name)}-delete-icon`}\n >\n ×\n </button>\n )}\n </div>\n </div>\n )}\n </div>\n );\n })\n )}\n\n {showAddNewFieldBtn && (\n <div\n className={\n valuesArray.length\n ? ''\n : `d-flex ${\n showIllustration\n ? 'justify-content-center'\n : 'justify-content-start'\n } align-items-center`\n }\n >\n <Button\n variant=\"text\"\n className=\"text-primary text-capitalize text-start\"\n startIcon={AddIcon ? <IconRenderer Icon={AddIcon} size={16} /> : '+'}\n data-testid=\"add-attr-btn\"\n onClick={addNewAttribute}\n >\n {addNewFieldBtnLabel ?? 'Add'}\n </Button>\n </div>\n )}\n </FieldWrapper>\n );\n};\n","import React, { useState, useRef, useEffect, useCallback } from 'react';\nimport { useFormContext } from '../../context/FormContext';\nimport { getFieldValue, getFieldError, getFieldTouched, getNestedProperty } from '../../utils/formik.utils';\nimport { FieldWrapper } from '../shared/FieldWrapper';\nimport { FieldLabel } from '../shared/FieldLabel';\nimport { FieldDescription } from '../shared/FieldDescription';\nimport { FieldError } from '../shared/FieldError';\nimport { IconRenderer } from '../shared/IconRenderer';\nimport { formatString } from '../../utils/field.utils';\nimport { EditableDivFieldConfig } from '../../types/field.types';\nimport { useTranslation } from '../../hooks/useTranslation';\n\n/**\n * EditableDivField Component\n * Renders a contentEditable div with field insertion capabilities\n * \n * This is a complex component that allows users to insert field references\n * (like {{fieldName}}) into editable text content\n */\nexport const EditableDivField: React.FC<EditableDivFieldConfig> = ({\n name,\n type,\n label,\n placeholder,\n desc,\n info,\n required,\n readonly,\n customClass,\n isCopyEnable,\n isVisibleEnable,\n dataTestId,\n availableFields = [],\n customHandleChange,\n customFormChange,\n component,\n showCustomError,\n formik: formikProp,\n index,\n}) => {\n const { uiLibrary, formik } = useFormContext();\n const { adapter, icons } = uiLibrary;\n const Box = adapter.Box;\n const Popover = adapter.Popover;\n const Paper = adapter.Paper;\n const MenuItem = adapter.MenuItem;\n const Typography = adapter.Typography;\n const IconButton = adapter.IconButton;\n const activeFormik = formikProp || formik;\n const { t } = useTranslation();\n\n const [showPlaceholder, setShowPlaceholder] = useState<Record<string, boolean>>({});\n const [anchorElEditableDiv, setAnchorElEditableDiv] = useState<HTMLElement | null>(null);\n const [activeSpan, setActiveSpan] = useState<HTMLElement | null>(null);\n const [prevKey, setPrevKey] = useState('');\n const [isTyping, setIsTyping] = useState(false);\n const editorRefEditableDiv = useRef<HTMLDivElement>(null);\n const fieldTimeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const isFieldFocusedRef = useRef(false);\n\n const fieldValue = getFieldValue(activeFormik, name);\n const fieldError = getFieldError(activeFormik, name);\n const fieldTouched = getFieldTouched(activeFormik, name);\n const CopyIcon = icons?.Copy;\n const VisibilityIcon = icons?.Visibility;\n const VisibilityOffIcon = icons?.VisibilityOff;\n\n const checkPlaceholderVisibility = useCallback((content: string, fieldName: string) => {\n const isEmpty = !content || content.trim() === '' || content === '\\u200B';\n setShowPlaceholder((prev) => ({\n ...prev,\n [fieldName]: isEmpty,\n }));\n }, []);\n\n const setCursorToEnd = useCallback(() => {\n if (editorRefEditableDiv.current) {\n const editor = editorRefEditableDiv.current;\n if (editor.childNodes.length > 0) {\n const range = document.createRange();\n const selection = window.getSelection();\n if (selection) {\n range.selectNodeContents(editor);\n range.collapse(false);\n selection.removeAllRanges();\n selection.addRange(range);\n }\n editor.focus();\n } else {\n editor.focus();\n }\n }\n }, []);\n\n const setEditorContentWithSpans = useCallback((expression: string, fields: typeof availableFields) => {\n if (!editorRefEditableDiv.current) return;\n const editor = editorRefEditableDiv.current;\n editor.innerHTML = '';\n const parts = expression.split(/(\\{\\{[^}]+\\}\\}|\\$\\{[^}]+\\})/);\n\n parts.forEach((part) => {\n let key: string | null = null;\n if (part.startsWith('{{') && part.endsWith('}}')) {\n key = part.slice(2, -2);\n }\n\n if (key) {\n const field = fields.find((f) => f.key === key);\n if (field) {\n const span = document.createElement('span');\n span.className = 'field-span';\n span.contentEditable = 'false';\n span.style.cursor = 'pointer';\n span.innerText = `{{${field.key}}}`;\n editor.appendChild(span);\n } else {\n editor.appendChild(document.createTextNode(part));\n }\n } else if (part) {\n editor.appendChild(document.createTextNode(part));\n }\n });\n }, [availableFields]);\n\n const handleKeyDown = useCallback((e: React.KeyboardEvent) => {\n if (e.key === '{' && prevKey === '{') {\n e.preventDefault();\n return;\n }\n\n if (e.key === 'Backspace') {\n const sel = window.getSelection();\n if (sel && sel.rangeCount > 0) {\n const range = sel.getRangeAt(0);\n const { startContainer, startOffset } = range;\n\n if (\n startContainer.nodeType === Node.TEXT_NODE &&\n startOffset === 0 &&\n startContainer.previousSibling &&\n (startContainer.previousSibling as Element).classList?.contains('field-span')\n ) {\n e.preventDefault();\n const prevSibling = startContainer.previousSibling;\n if (prevSibling.parentNode) {\n prevSibling.parentNode.removeChild(prevSibling);\n }\n return;\n }\n\n if (\n startContainer.nodeType === Node.ELEMENT_NODE &&\n (startContainer as Element).classList?.contains('field-span')\n ) {\n e.preventDefault();\n if (startContainer.parentNode) {\n startContainer.parentNode.removeChild(startContainer);\n }\n }\n }\n }\n }, [prevKey]);\n\n const handleKeyUp = useCallback((e: React.KeyboardEvent) => {\n const currentKey = e.key;\n if (currentKey === '{' && prevKey === '{' && !e.defaultPrevented) {\n const selection = window.getSelection();\n if (selection && selection.rangeCount > 0) {\n const range = selection.getRangeAt(0);\n const { startContainer, startOffset } = range;\n\n if (startContainer.nodeType === Node.TEXT_NODE) {\n const textContent = startContainer.textContent || '';\n const beforeCursor = textContent.substring(0, startOffset);\n if (beforeCursor.endsWith('{')) {\n if (editorRefEditableDiv.current) {\n setAnchorElEditableDiv(editorRefEditableDiv.current);\n }\n }\n }\n }\n }\n setPrevKey(currentKey);\n }, [prevKey]);\n\n const handleFieldSelect = useCallback((item: { key: string; label: string }) => {\n if (!editorRefEditableDiv.current) return;\n\n const newSpan = document.createElement('span');\n newSpan.className = 'field-span';\n newSpan.contentEditable = 'false';\n newSpan.style.cursor = 'pointer';\n newSpan.innerText = `{{${item.key}}}`;\n\n if (activeSpan) {\n activeSpan.replaceWith(newSpan);\n const spaceNode = document.createTextNode('\\u200B');\n newSpan.after(spaceNode);\n\n if (spaceNode.parentNode) {\n const range = document.createRange();\n range.setStartAfter(spaceNode);\n range.setEndAfter(spaceNode);\n const sel = window.getSelection();\n if (sel) {\n sel.removeAllRanges();\n sel.addRange(range);\n }\n }\n setActiveSpan(null);\n } else {\n const selection = window.getSelection();\n if (selection && selection.rangeCount > 0) {\n const range = selection.getRangeAt(0);\n range.deleteContents();\n range.insertNode(newSpan);\n const spaceNode = document.createTextNode('\\u200B');\n newSpan.after(spaceNode);\n\n const newRange = document.createRange();\n newRange.setStartAfter(spaceNode);\n newRange.setEndAfter(spaceNode);\n const sel = window.getSelection();\n if (sel) {\n sel.removeAllRanges();\n sel.addRange(newRange);\n }\n }\n }\n\n const content = editorRefEditableDiv.current.innerText;\n if (customHandleChange) {\n customHandleChange(\n { target: { name, value: content } } as any,\n 'editablediv'\n );\n } else if (customFormChange) {\n customFormChange(\n { target: { name, value: content } } as any,\n 'editablediv'\n );\n } else {\n activeFormik.setFieldValue(name, content);\n }\n\n setAnchorElEditableDiv(null);\n setTimeout(() => {\n setCursorToEnd();\n }, 0);\n }, [activeSpan, name, customHandleChange, customFormChange, activeFormik, setCursorToEnd]);\n\n useEffect(() => {\n if (editorRefEditableDiv.current && activeFormik.values && !isTyping && availableFields.length > 0) {\n const fieldValue = getNestedProperty(activeFormik.values, name);\n checkPlaceholderVisibility(String(fieldValue || ''), name);\n setTimeout(() => {\n setEditorContentWithSpans(String(fieldValue || ''), availableFields);\n }, 0);\n }\n }, [activeFormik.values, name, isTyping, availableFields, checkPlaceholderVisibility, setEditorContentWithSpans]);\n\n useEffect(() => {\n return () => {\n if (fieldTimeoutRef.current) {\n clearTimeout(fieldTimeoutRef.current);\n }\n };\n }, []);\n\n return (\n <FieldWrapper customClass={customClass} index={index}>\n {label && (\n <FieldLabel\n name={name}\n label={label}\n required={required}\n info={info}\n />\n )}\n {desc && <FieldDescription desc={desc} />}\n <div className={`input-group ${isCopyEnable || isVisibleEnable ? '' : 'rounded'}`}>\n <div className=\"d-flex w-100 flex-wrap\">\n <Box className=\"w-100 d-flex flex-column align-items-start position-relative\">\n <Box\n contentEditable={!readonly}\n ref={editorRefEditableDiv}\n id={name}\n onKeyDown={handleKeyDown}\n onKeyUp={handleKeyUp}\n onInput={(event: React.FormEvent<HTMLDivElement>) => {\n const content = (event.target as HTMLElement).innerText;\n setIsTyping(true);\n checkPlaceholderVisibility(content, name);\n\n if (fieldTimeoutRef.current) {\n clearTimeout(fieldTimeoutRef.current);\n }\n\n if (isFieldFocusedRef.current) {\n fieldTimeoutRef.current = setTimeout(() => {\n setIsTyping(false);\n }, 9000);\n }\n\n if (customHandleChange) {\n customHandleChange(\n { target: { name, value: content } } as any,\n type\n );\n } else if (customFormChange) {\n customFormChange(\n { target: { name, value: content } } as any,\n type\n );\n } else {\n activeFormik.setFieldValue(name, content);\n }\n }}\n onPaste={(e: React.ClipboardEvent<HTMLDivElement>) => {\n e.preventDefault();\n const text = (e.clipboardData || (window as Window & { clipboardData?: DataTransfer }).clipboardData)?.getData('text/plain') || '';\n const selection = window.getSelection();\n if (selection && selection.rangeCount > 0) {\n const range = selection.getRangeAt(0);\n range.deleteContents();\n range.insertNode(document.createTextNode(text));\n range.collapse(false);\n selection.removeAllRanges();\n selection.addRange(range);\n }\n const editor = e.target as HTMLElement;\n const content = editor.innerText;\n checkPlaceholderVisibility(content, name);\n\n if (availableFields.length > 0) {\n setTimeout(() => {\n setEditorContentWithSpans(content, availableFields);\n setCursorToEnd();\n }, 0);\n }\n\n if (customHandleChange) {\n customHandleChange(\n { target: { name, value: content } } as any,\n type\n );\n } else if (customFormChange) {\n customFormChange(\n { target: { name, value: content } } as any,\n type\n );\n } else {\n activeFormik.setFieldValue(name, content);\n }\n }}\n onClick={(e: React.MouseEvent<HTMLDivElement>) => {\n const target = e.target as HTMLElement;\n if (target.classList?.contains('field-span')) {\n setActiveSpan(target);\n setAnchorElEditableDiv(target);\n setIsTyping(true);\n }\n }}\n suppressContentEditableWarning\n data-testid={dataTestId || `${formatString(name)}-editable-div`}\n className={`form-control ${\n isCopyEnable || isVisibleEnable\n ? 'border border-end-0'\n : 'rounded'\n } ${fieldError && fieldTouched ? 'border-danger' : ''}`}\n style={{\n borderRadius: '8px',\n border: '1px solid #dee2e6',\n padding: '6px 12px',\n display: 'inline-block',\n flexGrow: 1,\n minHeight: '37px',\n }}\n onFocus={() => {\n isFieldFocusedRef.current = true;\n setIsTyping(true);\n const content = editorRefEditableDiv.current?.innerText || '';\n checkPlaceholderVisibility(content, name);\n }}\n onBlur={(event: React.FocusEvent<HTMLDivElement>) => {\n isFieldFocusedRef.current = false;\n if (fieldTimeoutRef.current) {\n clearTimeout(fieldTimeoutRef.current);\n fieldTimeoutRef.current = null;\n }\n const content = (event.target as HTMLElement).innerText;\n checkPlaceholderVisibility(content, name);\n activeFormik.setFieldValue(name, content);\n // Create synthetic event for Formik\n const syntheticEvent = {\n ...event,\n target: { name, value: content },\n } as unknown as React.FocusEvent<HTMLInputElement>;\n activeFormik.handleBlur(syntheticEvent);\n }}\n readOnly={readonly || false}\n />\n {showPlaceholder[name] && placeholder && (\n <Box\n sx={{\n position: 'absolute',\n top: '8px',\n left: '12px',\n color: '#acadaf',\n pointerEvents: 'none',\n fontSize: '14px',\n zIndex: 1,\n }}\n >\n {placeholder}\n </Box>\n )}\n </Box>\n <Popover\n open={Boolean(anchorElEditableDiv)}\n anchorEl={anchorElEditableDiv}\n onClose={() => setAnchorElEditableDiv(null)}\n anchorOrigin={{ vertical: 'bottom', horizontal: 'left' }}\n data-testid={`${formatString(name)}-attribute-popover`}\n >\n <Paper\n elevation={3}\n className=\"attribute-popover\"\n >\n <Box\n style={{\n padding: '12px 16px',\n backgroundColor: '#f8f9fa',\n borderBottom: '1px solid #e0e0e0',\n }}\n >\n <Typography variant=\"subtitle2\" color=\"text.secondary\">\n {t('COMMON:choose_attribute')}\n </Typography>\n </Box>\n {availableFields.map((item) => (\n <MenuItem\n key={item.key}\n data-testid={`${formatString(name)}-attribute-${item.key}`}\n onClick={() => handleFieldSelect(item)}\n className=\"d-flex justify-content-between align-items-center\"\n >\n <Typography>{item.label}</Typography>\n <Typography color=\"text.secondary\" className=\"text-12\">\n {item.key}\n </Typography>\n </MenuItem>\n ))}\n </Paper>\n </Popover>\n </div>\n {isVisibleEnable && VisibilityIcon && VisibilityOffIcon && (\n <button\n className={`z-0 btn btn-outline-secondary border-0 rounded-0 border-top border-bottom ${\n !isCopyEnable ? 'border-end rounded-end' : ''\n } ${fieldError && fieldTouched ? 'border-danger' : ''}`}\n type=\"button\"\n data-testid={`${formatString(name)}-visible-btn`}\n onClick={() => {}}\n >\n <IconRenderer Icon={VisibilityIcon} size={16} />\n </button>\n )}\n {isCopyEnable && CopyIcon && (\n <button\n className={`z-0 btn btn-outline-secondary border border-start-0 border-end rounded-end ${\n fieldError && fieldTouched ? 'border-danger' : ''\n }`}\n type=\"button\"\n data-testid={`${formatString(name)}-copy-btn`}\n aria-label=\"copy\"\n onClick={() => {\n if (editorRefEditableDiv.current) {\n const text = editorRefEditableDiv.current.innerText;\n navigator.clipboard.writeText(text);\n }\n }}\n >\n <IconRenderer Icon={CopyIcon} size={16} />\n </button>\n )}\n {component && <div>{component}</div>}\n </div>\n {(showCustomError || (fieldError && fieldTouched)) && (\n <FieldError\n name={name}\n error={fieldError}\n touched={fieldTouched}\n showCustomError={showCustomError}\n dataTestId={dataTestId}\n />\n )}\n </FieldWrapper>\n );\n};\n\n","import React, { useState, useEffect, useCallback } from 'react';\nimport { FormikProps } from 'formik';\nimport { DynamicFormProps, FieldConfig } from '../types/field.types';\nimport { FormProvider } from '../context/FormContext';\nimport { defaultAdapter } from '../adapters';\nimport { defaultIcons } from '../icons/default.icons';\nimport { getFieldValue, getNestedProperty } from '../utils/formik.utils';\n\n// Import all field components\nimport { EmptyField } from './fields/EmptyField';\nimport { TextField } from './fields/TextField';\nimport { LinkField } from './fields/LinkField';\nimport { ComponentField } from './fields/ComponentField';\nimport { CustomField } from './fields/CustomField';\nimport { InputField } from './fields/InputField';\nimport { TextareaField } from './fields/TextareaField';\nimport { CheckboxField } from './fields/CheckboxField';\nimport { RadioField } from './fields/RadioField';\nimport { DropdownField } from './fields/DropdownField';\nimport { ToggleField } from './fields/ToggleField';\nimport { FileUploadField } from './fields/FileUploadField';\nimport { SingleSelectField } from './fields/SingleSelectField';\nimport { MultiSelectField } from './fields/MultiSelectField';\nimport { AsyncSelectField } from './fields/AsyncSelectField';\nimport { DatePickerField } from './fields/DatePickerField';\nimport { DateTimePickerField } from './fields/DateTimePickerField';\nimport { DeleteField } from './fields/DeleteField';\nimport { CounterField } from './fields/CounterField';\nimport { FieldArrayField } from './fields/FieldArrayField';\nimport { AttributeField } from './fields/AttributeField';\nimport { EditableDivField } from './fields/EditableDivField';\n\n/**\n * Field component mapping\n * Maps field types to their corresponding components\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst FIELD_COMPONENT_MAP: Record<string, React.ComponentType<any>> = {\n emptyField: EmptyField,\n text: TextField,\n link: LinkField,\n component: ComponentField,\n custom: CustomField,\n inputfield: InputField,\n textarea: TextareaField,\n checkbox: CheckboxField,\n radiobtn: RadioField,\n dropdown: DropdownField,\n toggle: ToggleField,\n fileupload: FileUploadField,\n singleSelect: SingleSelectField,\n multiSelect: MultiSelectField,\n asyncSelect: AsyncSelectField,\n datePicker: DatePickerField,\n dateTimePicker: DateTimePickerField,\n delete: DeleteField,\n counter: CounterField,\n fieldArray: FieldArrayField,\n attribute: AttributeField,\n editablediv: EditableDivField,\n};\n\n/**\n * DynamicForm Component\n * \n * Orchestrator component that renders fields dynamically based on configuration.\n * Supports conditional field rendering, child fields, and all production features.\n */\nexport const DynamicForm = <T extends Record<string, unknown>>({\n fields,\n formik,\n firstInitialValues,\n fieldCount,\n attributeFields,\n customFormChange,\n RadiusTab = false,\n uiLibrary,\n}: DynamicFormProps<T> & {\n formik: FormikProps<T>;\n uiLibrary?: {\n adapter: typeof defaultAdapter;\n icons?: typeof defaultIcons;\n name: string;\n };\n}) => {\n const [formFields, setFormFields] = useState<FieldConfig[]>([]);\n\n // Use provided UI library or default\n const activeUILibrary = uiLibrary || {\n adapter: defaultAdapter,\n icons: defaultIcons,\n name: 'default',\n };\n\n // Filter out false values (conditional fields)\n useEffect(() => {\n const newFormFields = fields?.filter((item) => item !== false) as FieldConfig[];\n setFormFields(newFormFields);\n }, [fields]);\n\n /**\n * Recursively set field values for child fields\n */\n const setFieldValuesRecursive = useCallback(\n (child: FieldConfig[] | undefined, parentValue: string | null = null) => {\n if (!child) return;\n\n child.forEach((c) => {\n if (RadiusTab) {\n if (!c.hidden || parentValue === c.hiddenlabel) {\n // Check if field has values property (for select fields)\n const hasValues = 'values' in c && c.values;\n const fieldValue =\n hasValues && typeof c.values === 'object' && !Array.isArray(c.values) && Object.keys(c.values).length > 0\n ? Object.keys(c.values as Record<string, unknown>)[0]\n : firstInitialValues\n ? getNestedProperty(firstInitialValues as Record<string, unknown>, c.name)\n : '';\n\n formik.setFieldValue(c.name, fieldValue);\n }\n } else {\n const value = firstInitialValues\n ? getNestedProperty(firstInitialValues as Record<string, unknown>, c.name)\n : undefined;\n formik.setFieldValue(c.name, value === undefined ? '' : value);\n formik.setFieldTouched(c.name, false);\n }\n\n if (c.child) {\n setFieldValuesRecursive(c.child, parentValue);\n }\n });\n },\n [formik, firstInitialValues, RadiusTab]\n );\n\n /**\n * Render a single field component\n */\n const renderField = (\n field: FieldConfig,\n index: number | string,\n isChild = false\n ): React.ReactNode => {\n if (!field) return null;\n\n // Check if field should be hidden\n if (field.shouldHide && field.shouldHide({ \n formik: formik as FormikProps<Record<string, unknown>>, \n name: field.name, \n index: typeof index === 'number' ? index : undefined \n })) {\n return null;\n }\n\n // Get the component for this field type\n const FieldComponent = FIELD_COMPONENT_MAP[field.type];\n if (!FieldComponent) {\n console.warn(`Unknown field type: ${field.type}`);\n return null;\n }\n\n // Prepare props for the field component\n const fieldProps = {\n ...field,\n formik,\n index,\n isChild,\n setFieldValuesRecursive,\n customFormChange,\n };\n\n // Render the field component\n const fieldElement = <FieldComponent key={`${field.name}-${index}`} {...fieldProps} />;\n\n // Handle child fields for conditional rendering\n if (field.child && field.child.length > 0) {\n const fieldValue = getFieldValue(formik, field.name);\n const valuePath = getNestedProperty(formik.values, field.name);\n\n return (\n <React.Fragment key={`${field.name}-${index}`}>\n {fieldElement}\n {field.child.map((childField, childIndex) => {\n // Check if child should be shown based on hiddenlabel or targetType\n const shouldShowChild =\n fieldValue === childField.hiddenlabel ||\n valuePath === childField.hiddenlabel ||\n (field.type === 'checkbox' && fieldValue) ||\n (field.type === 'radiobtn' &&\n (fieldValue === childField.targetType || \n String(fieldValue) === String(childField.targetType))) ||\n (field.type === 'attribute' && true); // Attribute children are always shown\n\n if (shouldShowChild) {\n return renderField(\n childField,\n `child-${childField.name}-${childIndex}`,\n true\n );\n }\n return null;\n })}\n </React.Fragment>\n );\n }\n\n // AttributeField handles its own properties rendering internally\n // No need to render properties here as AttributeField component does it\n\n return fieldElement;\n };\n\n /**\n * Group fields into rows (for attributeFields layout)\n */\n const groupFormFieldsIntoRows = () => {\n if (!fieldCount) return [];\n const rows = [];\n for (let i = 0; i < fieldCount; i += 1) {\n const startIdx = i * 3;\n const endIdx = startIdx + 3;\n const rowFields = formFields.slice(startIdx, endIdx);\n rows.push(rowFields);\n }\n return rows;\n };\n\n // Render fields\n if (attributeFields !== undefined) {\n // Grouped layout for attribute fields\n return (\n <FormProvider uiLibrary={activeUILibrary} formik={formik as FormikProps<Record<string, unknown>>}>\n <div className=\"row\">\n {groupFormFieldsIntoRows().map((rowFields, rowIndex) => (\n <div key={rowIndex} className=\"row\">\n {rowFields.map((fieldValue, index) => {\n const uniqueKey = `${fieldValue?.label || fieldValue?.name}-${index}`;\n return (\n <React.Fragment key={uniqueKey}>\n {renderField(fieldValue, uniqueKey)}\n </React.Fragment>\n );\n })}\n </div>\n ))}\n </div>\n </FormProvider>\n );\n }\n\n // Standard layout\n return (\n <FormProvider uiLibrary={activeUILibrary} formik={formik as FormikProps<Record<string, unknown>>}>\n <div className=\"row mx-0\">\n {formFields.map((fieldValue, index) => {\n const uniqueKey = `${fieldValue?.label || fieldValue?.name}-${index}`;\n return renderField(fieldValue, uniqueKey);\n })}\n </div>\n </FormProvider>\n );\n};\n","/**\n * Material-UI Icons Example\n * \n * This shows how to use Material-UI icons with the library.\n * Users need to install @mui/icons-material as a peer dependency.\n * \n * Usage:\n * import { muiIcons } from 'dynamic-formik-form/icons/mui';\n * \n * <DynamicForm\n * uiLibrary={{ adapter: muiAdapter, icons: muiIcons, name: 'mui' }}\n * ...\n * />\n */\n\nimport { IconLibrary } from '../types/ui-library.types';\n\n/**\n * Material-UI Icons\n * \n * NOTE: This is a template. In actual usage, you would:\n * 1. Install @mui/icons-material as a peer dependency\n * 2. Import actual MUI icons\n * 3. Export them as IconLibrary\n * \n * Example:\n * import {\n * Info as InfoIcon,\n * Visibility as VisibilityIcon,\n * VisibilityOff as VisibilityOffIcon,\n * ContentCopy as CopyIcon,\n * AddCircleOutline as AddIcon,\n * DeleteOutline as DeleteIcon,\n * } from '@mui/icons-material';\n * \n * export const muiIcons: IconLibrary = {\n * Info: InfoIcon,\n * Visibility: VisibilityIcon,\n * VisibilityOff: VisibilityOffIcon,\n * Copy: CopyIcon,\n * Add: AddIcon,\n * Delete: DeleteIcon,\n * };\n */\n\n// Placeholder - users should replace with actual MUI icons\nexport const createMUIIcons = (\n Info: React.ComponentType<any>,\n Visibility: React.ComponentType<any>,\n VisibilityOff: React.ComponentType<any>,\n Copy: React.ComponentType<any>,\n Add: React.ComponentType<any>,\n Delete: React.ComponentType<any>\n): IconLibrary => {\n return {\n Info,\n Visibility,\n VisibilityOff,\n Copy,\n Add,\n Delete,\n };\n};\n\n","/**\n * Bootstrap Icons Example\n * \n * This shows how to use Bootstrap Icons with the library.\n * Users can use react-bootstrap-icons or bootstrap-icons package.\n * \n * Usage:\n * import { bootstrapIcons } from 'dynamic-formik-form/icons/bootstrap';\n * \n * <DynamicForm\n * uiLibrary={{ adapter: bootstrapAdapter, icons: bootstrapIcons, name: 'bootstrap' }}\n * ...\n * />\n */\n\nimport { IconLibrary } from '../types/ui-library.types';\n\n/**\n * Bootstrap Icons\n * \n * NOTE: This is a template. In actual usage, you would:\n * 1. Install react-bootstrap-icons or bootstrap-icons as a peer dependency\n * 2. Import actual Bootstrap icons\n * 3. Export them as IconLibrary\n * \n * Example with react-bootstrap-icons:\n * import {\n * InfoCircle as InfoIcon,\n * Eye as VisibilityIcon,\n * EyeSlash as VisibilityOffIcon,\n * Clipboard as CopyIcon,\n * PlusCircle as AddIcon,\n * Trash as DeleteIcon,\n * } from 'react-bootstrap-icons';\n * \n * export const bootstrapIcons: IconLibrary = {\n * Info: InfoIcon,\n * Visibility: VisibilityIcon,\n * VisibilityOff: VisibilityOffIcon,\n * Copy: CopyIcon,\n * Add: AddIcon,\n * Delete: DeleteIcon,\n * };\n */\n\n// Placeholder - users should replace with actual Bootstrap icons\nexport const createBootstrapIcons = (\n Info: React.ComponentType<any>,\n Visibility: React.ComponentType<any>,\n VisibilityOff: React.ComponentType<any>,\n Copy: React.ComponentType<any>,\n Add: React.ComponentType<any>,\n Delete: React.ComponentType<any>\n): IconLibrary => {\n return {\n Info,\n Visibility,\n VisibilityOff,\n Copy,\n Add,\n Delete,\n };\n};\n\n","/**\n * Ant Design Icons\n * \n * This shows how to use Ant Design Icons with the library.\n * Users can use @ant-design/icons package.\n * \n * Usage:\n * import { createAntDesignIcons } from 'dynamic-formik-form';\n * import {\n * InfoCircleOutlined as InfoIcon,\n * EyeOutlined as VisibilityIcon,\n * EyeInvisibleOutlined as VisibilityOffIcon,\n * CopyOutlined as CopyIcon,\n * PlusCircleOutlined as AddIcon,\n * DeleteOutlined as DeleteIcon,\n * } from '@ant-design/icons';\n * \n * const antdIcons = createAntDesignIcons(\n * InfoIcon,\n * VisibilityIcon,\n * VisibilityOffIcon,\n * CopyIcon,\n * AddIcon,\n * DeleteIcon\n * );\n */\n\nimport React from 'react';\nimport { IconLibrary } from '../types/ui-library.types';\n\n/**\n * Ant Design Icons Factory\n * \n * Creates an icon library configuration for Ant Design icons.\n * Users pass their @ant-design/icons imports to this factory function.\n */\nexport const createAntDesignIcons = (\n Info: React.ComponentType<any>,\n Visibility: React.ComponentType<any>,\n VisibilityOff: React.ComponentType<any>,\n Copy: React.ComponentType<any>,\n Add: React.ComponentType<any>,\n Delete: React.ComponentType<any>\n): IconLibrary => {\n return {\n Info,\n Visibility,\n VisibilityOff,\n Copy,\n Add,\n Delete,\n };\n};\n\n","/**\n * Validation utility functions\n */\n\n/**\n * Validate email address\n */\nexport const validateEmail = (email: string | undefined | null): boolean => {\n if (!email) return false;\n\n const value = email.trim().toLowerCase();\n const strictRegex =\n /^[a-z0-9]+([._-]?[a-z0-9]+)*@[a-z0-9]+([.-]?[a-z0-9]+)*\\.[a-z]{2,}$/;\n\n return strictRegex.test(value);\n};\n\n/**\n * Validate URL\n */\nexport const isValidUrl = (url: string | undefined | null): boolean => {\n if (!url) return false;\n\n try {\n const urlObj = new URL(url);\n return urlObj.protocol === 'http:' || urlObj.protocol === 'https:';\n } catch {\n return false;\n }\n};\n\n/**\n * Check if username is valid\n */\nexport const checkValidUsername = (\n username: string,\n minLength: number,\n maxLength: number\n): boolean => {\n const regex = new RegExp(`^[a-zA-Z0-9-_\\\\.]{${minLength},${maxLength}}$`);\n return regex.test(String(username));\n};\n\n"]}
1
+ {"version":3,"sources":["../src/context/FormContext.tsx","../src/adapters/default.adapter.tsx","../src/adapters/mui.adapter.tsx","../src/adapters/bootstrap.adapter.tsx","../src/adapters/antd.adapter.tsx","../src/icons/default.icons.tsx","../src/utils/formik.utils.ts","../src/components/fields/EmptyField.tsx","../src/components/shared/FieldWrapper.tsx","../src/components/shared/IconRenderer.tsx","../src/components/shared/FieldLabel.tsx","../src/utils/field.utils.ts","../src/components/shared/FieldError.tsx","../src/components/fields/TextField.tsx","../src/components/shared/FieldDescription.tsx","../src/components/fields/LinkField.tsx","../src/components/fields/ComponentField.tsx","../src/components/fields/CustomField.tsx","../src/components/fields/InputField.tsx","../src/components/fields/TextareaField.tsx","../src/components/fields/CheckboxField.tsx","../src/components/fields/RadioField.tsx","../src/components/fields/DropdownField.tsx","../src/components/fields/ToggleField.tsx","../src/components/fields/FileUploadField.tsx","../src/components/fields/SingleSelectField.tsx","../src/components/fields/MultiSelectField.tsx","../src/components/fields/AsyncSelectField.tsx","../src/components/fields/DatePickerField.tsx","../src/components/fields/DateTimePickerField.tsx","../src/components/fields/DeleteField.tsx","../src/components/fields/CounterField.tsx","../src/hooks/useTranslation.ts","../src/components/fields/FieldArrayField.tsx","../src/components/fields/AttributeField.tsx","../src/components/fields/EditableDivField.tsx","../src/components/DynamicForm.tsx","../src/icons/mui.icons.tsx","../src/icons/bootstrap.icons.tsx","../src/icons/antd.icons.tsx","../src/utils/validation.utils.ts"],"names":["createContext","jsx","useContext","jsxs","TextField","React","Fragment","useState","useCallback","label","valuesArray","useRef","useEffect","fieldValue"],"mappings":"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","file":"index.js","sourcesContent":["import React, { createContext, useContext, ReactNode } from 'react';\nimport { FormikProps } from 'formik';\nimport { UILibraryConfig } from '../types/ui-library.types';\n\n/**\n * Form context that provides:\n * - UI library adapter\n * - Icon library\n * - Formik instance\n */\ninterface FormContextValue {\n uiLibrary: UILibraryConfig;\n formik: FormikProps<Record<string, unknown>>;\n}\n\nconst FormContext = createContext<FormContextValue | null>(null);\n\ninterface FormProviderProps {\n children: ReactNode;\n uiLibrary: UILibraryConfig;\n formik: FormikProps<Record<string, unknown>>;\n}\n\nexport const FormProvider: React.FC<FormProviderProps> = ({\n children,\n uiLibrary,\n formik,\n}) => {\n return (\n <FormContext.Provider value={{ uiLibrary, formik }}>\n {children}\n </FormContext.Provider>\n );\n};\n\nexport const useFormContext = (): FormContextValue => {\n const context = useContext(FormContext);\n if (!context) {\n throw new Error('useFormContext must be used within FormProvider');\n }\n return context;\n};\n\n","import React, { ComponentType, ReactNode } from 'react';\nimport { UILibraryAdapter } from '../types/ui-library.types';\n\n/**\n * Default HTML adapter - uses native HTML elements\n * This is a fallback when no UI library is provided\n */\nexport const defaultAdapter: UILibraryAdapter = {\n Input: ({ className, disabled, error, ...props }) => (\n <input\n className={`${className || ''} ${error ? 'error' : ''}`}\n disabled={disabled}\n {...props}\n />\n ),\n\n Textarea: ({ className, disabled, error, ...props }) => (\n <textarea\n className={`${className || ''} ${error ? 'error' : ''}`}\n disabled={disabled}\n {...props}\n />\n ),\n\n Select: ({ className, disabled, error, children, ...props }) => (\n <select\n className={`${className || ''} ${error ? 'error' : ''}`}\n disabled={disabled}\n {...props}\n >\n {children}\n </select>\n ),\n\n Checkbox: ({ className, disabled, label, ...props }) => (\n <label className={className}>\n <input type=\"checkbox\" disabled={disabled} {...props} />\n {label}\n </label>\n ),\n\n Radio: ({ className, disabled, label, ...props }) => (\n <label className={className}>\n <input type=\"radio\" disabled={disabled} {...props} />\n {label}\n </label>\n ),\n\n Switch: ({ className, disabled, ...props }) => (\n <input\n type=\"checkbox\"\n className={`switch ${className || ''}`}\n disabled={disabled}\n {...props}\n />\n ),\n\n Button: ({ className, disabled, children, ...props }) => (\n <button className={className} disabled={disabled} {...props}>\n {children}\n </button>\n ),\n\n FormControl: ({ className, children }) => (\n <div className={`form-control ${className || ''}`}>{children}</div>\n ),\n\n FormHelperText: ({ className, children }) => (\n <small className={`form-helper-text ${className || ''}`}>{children}</small>\n ),\n\n Label: ({ className, htmlFor, children }) => (\n <label className={className} htmlFor={htmlFor}>\n {children}\n </label>\n ),\n\n Box: ({ className, children, ...props }) => (\n <div className={className} {...props}>\n {children}\n </div>\n ),\n\n Paper: ({ className, children }) => (\n <div className={`paper ${className || ''}`}>{children}</div>\n ),\n\n Popover: ({ open, anchorEl, onClose, children, anchorOrigin }) => {\n if (!open || !anchorEl) return null;\n \n const rect = anchorEl.getBoundingClientRect();\n const style: React.CSSProperties = {\n position: 'fixed',\n top: `${rect.bottom}px`,\n left: `${rect.left}px`,\n zIndex: 1000,\n };\n\n return (\n <div className=\"popover\" style={style} onClick={onClose}>\n {children}\n </div>\n );\n },\n\n MenuItem: ({ className, onClick, children }) => (\n <div className={`menu-item ${className || ''}`} onClick={onClick}>\n {children}\n </div>\n ),\n\n Typography: ({ className, variant, children }) => (\n <div className={`typography typography-${variant || 'body1'} ${className || ''}`}>\n {children}\n </div>\n ),\n\n IconButton: ({ className, size, onClick, children, ...props }) => (\n <button\n type=\"button\"\n className={`icon-button icon-button-${size || 'medium'} ${className || ''}`}\n onClick={onClick}\n {...props}\n >\n {children}\n </button>\n ),\n};\n\n","/**\n * Material-UI Adapter Example\n * \n * This is an example adapter showing how to integrate Material-UI components.\n * Users need to install @mui/material and @mui/x-date-pickers as peer dependencies.\n * \n * Usage:\n * import { muiAdapter } from 'dynamic-formik-form/adapters/mui';\n * import { muiIcons } from 'dynamic-formik-form/icons/mui';\n * \n * <DynamicForm\n * uiLibrary={{ adapter: muiAdapter, icons: muiIcons, name: 'mui' }}\n * ...\n * />\n */\n\nimport React, { ComponentType } from 'react';\nimport { UILibraryAdapter } from '../types/ui-library.types';\n\n// These would be imported from @mui/material in actual usage\n// For now, we'll create type-safe stubs that show the pattern\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype MUIComponent = ComponentType<any>;\n\n/**\n * Material-UI Adapter\n * \n * NOTE: This is a template. In actual usage, you would:\n * 1. Install @mui/material, @mui/x-date-pickers as peer dependencies\n * 2. Import actual MUI components\n * 3. Map them to the adapter interface\n */\nexport const createMUIAdapter = (\n // These would be the actual MUI imports\n Box: MUIComponent,\n Button: MUIComponent,\n Checkbox: MUIComponent,\n FormControl: MUIComponent,\n FormControlLabel: MUIComponent,\n FormHelperText: MUIComponent,\n IconButton: MUIComponent,\n MenuItem: MUIComponent,\n Paper: MUIComponent,\n Popover: MUIComponent,\n Radio: MUIComponent,\n RadioGroup: MUIComponent,\n Switch: MUIComponent,\n TextField: MUIComponent,\n Typography: MUIComponent,\n DatePicker?: MUIComponent,\n DateTimePicker?: MUIComponent\n): UILibraryAdapter => {\n // Helper to filter out MUI-specific props that shouldn't be passed to native elements\n const filterMUIProps = (props: Record<string, unknown>) => {\n const filtered = { ...props };\n delete filtered.error;\n delete filtered.fullWidth;\n delete filtered.select;\n delete filtered.multiline;\n delete filtered.variant;\n return filtered;\n };\n\n return {\n Input: ({ className, disabled, error, type, ...props }) => {\n const filteredProps = filterMUIProps(props as Record<string, unknown>);\n return (\n <TextField\n {...filteredProps}\n type={type}\n disabled={disabled}\n {...(error ? { error: true } : {})}\n className={className}\n fullWidth\n variant=\"outlined\"\n />\n );\n },\n\n Textarea: ({ className, disabled, error, rows, ...props }) => {\n const filteredProps = filterMUIProps(props as Record<string, unknown>);\n return (\n <TextField\n {...filteredProps}\n multiline\n rows={rows || 4}\n disabled={disabled}\n {...(error ? { error: true } : {})}\n className={className}\n fullWidth\n variant=\"outlined\"\n />\n );\n },\n\n Select: ({ className, disabled, error, children, ...props }) => {\n const filteredProps = filterMUIProps(props as Record<string, unknown>);\n return (\n <TextField\n {...filteredProps}\n select\n disabled={disabled}\n {...(error ? { error: true } : {})}\n className={className}\n fullWidth\n variant=\"outlined\"\n >\n {children}\n </TextField>\n );\n },\n\n Checkbox: ({ className, disabled, label, ...props }) => (\n <FormControlLabel\n control={\n <Checkbox\n {...props}\n disabled={disabled}\n className={className}\n color=\"primary\"\n />\n }\n label={label}\n />\n ),\n\n Radio: ({ className, disabled, label, ...props }) => (\n <FormControlLabel\n control={\n <Radio\n {...props}\n disabled={disabled}\n className={className}\n color=\"primary\"\n />\n }\n label={label}\n />\n ),\n\n Switch: ({ className, disabled, ...props }) => (\n <Switch\n {...props}\n disabled={disabled}\n className={className}\n color=\"primary\"\n />\n ),\n\n Button: ({ className, disabled, children, variant, ...props }) => (\n <Button\n {...props}\n disabled={disabled}\n className={className}\n variant={variant || 'contained'}\n color=\"primary\"\n >\n {children}\n </Button>\n ),\n\n FormControl: ({ className, required, error, children }) => (\n <FormControl\n className={className}\n required={required}\n {...(error ? { error: true } : {})}\n fullWidth\n >\n {children}\n </FormControl>\n ),\n\n FormHelperText: ({ className, children }) => (\n <FormHelperText className={className}>{children}</FormHelperText>\n ),\n\n Label: ({ className, htmlFor, children }) => (\n <Typography\n component=\"label\"\n htmlFor={htmlFor}\n className={className}\n variant=\"body2\"\n fontWeight=\"medium\"\n >\n {children}\n </Typography>\n ),\n\n Box: ({ className, sx, children, ...props }) => (\n <Box className={className} sx={sx} {...props}>\n {children}\n </Box>\n ),\n\n Paper: ({ className, elevation, children }) => (\n <Paper className={className} elevation={elevation || 3}>\n {children}\n </Paper>\n ),\n\n Popover: ({ open, anchorEl, onClose, anchorOrigin, children }) => (\n <Popover\n open={open}\n anchorEl={anchorEl}\n onClose={onClose}\n anchorOrigin={\n anchorOrigin || { vertical: 'bottom', horizontal: 'left' }\n }\n >\n {children}\n </Popover>\n ),\n\n MenuItem: ({ className, onClick, children }) => (\n <MenuItem className={className} onClick={onClick}>\n {children}\n </MenuItem>\n ),\n\n Typography: ({ className, variant, color, children }) => (\n <Typography className={className} variant={variant} color={color}>\n {children}\n </Typography>\n ),\n\n IconButton: ({ className, size, onClick, children, ...props }) => (\n <IconButton\n className={className}\n size={size}\n onClick={onClick}\n {...props}\n >\n {children}\n </IconButton>\n ),\n\n DatePicker: DatePicker\n ? ({ value, onChange, format, disabled, ...props }) => (\n <DatePicker\n value={value}\n onChange={onChange}\n format={format}\n disabled={disabled}\n {...props}\n />\n )\n : undefined,\n\n DateTimePicker: DateTimePicker\n ? ({ value, onChange, format, disabled, views, ...props }) => (\n <DateTimePicker\n value={value}\n onChange={onChange}\n format={format}\n disabled={disabled}\n views={views}\n {...props}\n />\n )\n : undefined,\n\n TextField: TextField\n ? ({ inputRef, inputProps, label, id, error, helperText, ...props }) => {\n const filteredProps = filterMUIProps(props as Record<string, unknown>);\n return (\n <TextField\n inputRef={inputRef}\n inputProps={inputProps}\n label={label}\n id={id}\n {...(error ? { error: true } : {})}\n helperText={helperText}\n {...filteredProps}\n fullWidth\n variant=\"outlined\"\n />\n );\n }\n : undefined,\n };\n};\n\n/**\n * Example usage instructions:\n * \n * import {\n * Box,\n * Button,\n * Checkbox,\n * FormControl,\n * FormControlLabel,\n * FormHelperText,\n * IconButton,\n * MenuItem,\n * Paper,\n * Popover,\n * Radio,\n * RadioGroup,\n * Switch,\n * TextField,\n * Typography,\n * } from '@mui/material';\n * import { DatePicker, DateTimePicker } from '@mui/x-date-pickers';\n * \n * import { createMUIAdapter } from 'dynamic-formik-form/adapters/mui';\n * \n * export const muiAdapter = createMUIAdapter(\n * Box,\n * Button,\n * Checkbox,\n * FormControl,\n * FormControlLabel,\n * FormHelperText,\n * IconButton,\n * MenuItem,\n * Paper,\n * Popover,\n * Radio,\n * RadioGroup,\n * Switch,\n * TextField,\n * Typography,\n * DatePicker,\n * DateTimePicker\n * );\n */\n\n","/**\n * Bootstrap React Adapter Example\n * \n * This is an example adapter showing how to integrate Bootstrap React components.\n * Users need to install react-bootstrap or reactstrap as peer dependencies.\n * \n * Usage:\n * import { bootstrapAdapter } from 'dynamic-formik-form/adapters/bootstrap';\n * import { bootstrapIcons } from 'dynamic-formik-form/icons/bootstrap';\n * \n * <DynamicForm\n * uiLibrary={{ adapter: bootstrapAdapter, icons: bootstrapIcons, name: 'bootstrap' }}\n * ...\n * />\n */\n\nimport React, { ComponentType, ReactNode } from 'react';\nimport { UILibraryAdapter } from '../types/ui-library.types';\n\ntype BootstrapComponent = ComponentType<any>;\n\n/**\n * Bootstrap Adapter\n * \n * NOTE: This is a template. In actual usage, you would:\n * 1. Install react-bootstrap or reactstrap as peer dependencies\n * 2. Import actual Bootstrap components\n * 3. Map them to the adapter interface\n */\nexport const createBootstrapAdapter = (\n // These would be the actual Bootstrap imports\n Form: BootstrapComponent,\n FormControl: BootstrapComponent,\n FormLabel: BootstrapComponent,\n FormText: BootstrapComponent,\n FormCheck: BootstrapComponent,\n FormSelect: BootstrapComponent,\n ButtonComponent: BootstrapComponent,\n InputGroup: BootstrapComponent,\n OverlayTrigger: BootstrapComponent,\n Popover: BootstrapComponent,\n ListGroup: BootstrapComponent,\n ListGroupItem: BootstrapComponent\n): UILibraryAdapter => {\n return {\n Input: ({ className, disabled, error, type, ...props }) => (\n <FormControl\n {...props}\n type={type}\n disabled={disabled}\n isInvalid={!!error}\n className={className}\n />\n ),\n\n Textarea: ({ className, disabled, error, rows, ...props }) => (\n <FormControl\n {...props}\n as=\"textarea\"\n rows={rows || 4}\n disabled={disabled}\n isInvalid={!!error}\n className={className}\n />\n ),\n\n Select: ({ className, disabled, error, children, ...props }) => (\n <FormSelect\n {...props}\n disabled={disabled}\n isInvalid={!!error}\n className={className}\n >\n {children}\n </FormSelect>\n ),\n\n Checkbox: ({ className, disabled, label, ...props }) => (\n <FormCheck\n {...props}\n type=\"checkbox\"\n disabled={disabled}\n className={className}\n label={label}\n />\n ),\n\n Radio: ({ className, disabled, label, ...props }) => (\n <FormCheck\n {...props}\n type=\"radio\"\n disabled={disabled}\n className={className}\n label={label}\n />\n ),\n\n Switch: ({ className, disabled, ...props }) => (\n <FormCheck\n {...props}\n type=\"switch\"\n disabled={disabled}\n className={className}\n />\n ),\n\n Button: ({ className, disabled, children, variant, ...props }) => (\n <ButtonComponent\n {...props}\n disabled={disabled}\n className={className}\n variant={variant || 'primary'}\n >\n {children}\n </ButtonComponent>\n ),\n\n FormControl: ({ className, required, error, children }) => (\n <Form className={className}>\n {children}\n </Form>\n ),\n\n FormHelperText: ({ className, children }) => (\n <FormText className={className}>{children}</FormText>\n ),\n\n Label: ({ className, htmlFor, children }) => (\n <FormLabel htmlFor={htmlFor} className={className}>\n {children}\n </FormLabel>\n ),\n\n Box: ({ className, children, ...props }) => (\n <div className={className} {...props}>\n {children}\n </div>\n ),\n\n Paper: ({ className, children }) => (\n <div className={`card ${className || ''}`}>{children}</div>\n ),\n\n Popover: ({ open, anchorEl, onClose, children, anchorOrigin }) => {\n if (!open || !anchorEl) return null;\n\n // Simple popover implementation - users should provide proper Bootstrap Popover\n const rect = anchorEl.getBoundingClientRect();\n const style: React.CSSProperties = {\n position: 'fixed',\n top: `${rect.bottom}px`,\n left: `${rect.left}px`,\n zIndex: 1000,\n backgroundColor: 'white',\n border: '1px solid #ccc',\n borderRadius: '4px',\n padding: '8px',\n boxShadow: '0 2px 8px rgba(0,0,0,0.15)',\n };\n\n return (\n <div style={style} onClick={onClose}>\n {children}\n </div>\n );\n },\n\n MenuItem: ({ className, onClick, children }) => (\n <ListGroupItem\n className={className}\n onClick={onClick}\n action\n >\n {children}\n </ListGroupItem>\n ),\n\n Typography: ({ className, variant, children }) => {\n const Tag = variant === 'h6' ? 'h6' : variant === 'subtitle2' ? 'h6' : 'p';\n return (\n <Tag className={className}>\n {children}\n </Tag>\n );\n },\n\n IconButton: ({ className, size, onClick, children }) => (\n <ButtonComponent\n variant=\"link\"\n className={`${className || ''} p-0`}\n onClick={onClick}\n size={size}\n >\n {children}\n </ButtonComponent>\n ),\n };\n};\n\n/**\n * Example usage instructions:\n * \n * import {\n * Form,\n * FormControl,\n * FormLabel,\n * FormText,\n * FormCheck,\n * FormSelect,\n * Button,\n * InputGroup,\n * OverlayTrigger,\n * Popover,\n * ListGroup,\n * ListGroupItem,\n * } from 'react-bootstrap';\n * \n * import { createBootstrapAdapter } from 'dynamic-formik-form/adapters/bootstrap';\n * \n * export const bootstrapAdapter = createBootstrapAdapter(\n * Form,\n * FormControl,\n * FormLabel,\n * FormText,\n * FormCheck,\n * FormSelect,\n * Button,\n * InputGroup,\n * OverlayTrigger,\n * Popover,\n * ListGroup,\n * ListGroupItem\n * );\n */\n\n","/**\n * Ant Design Adapter\n * \n * This adapter integrates Ant Design components with dynamic-formik-form.\n * Users need to install antd as a peer dependency.\n * \n * Usage:\n * import { createAntDesignAdapter } from 'dynamic-formik-form';\n * import { Input, Button, Form, ... } from 'antd';\n * \n * const antdAdapter = createAntDesignAdapter(\n * Input, Button, Checkbox, Radio, Switch, Select, Form, Typography, Popover, DatePicker\n * );\n * \n * <DynamicForm\n * uiLibrary={{ adapter: antdAdapter, icons: antdIcons, name: 'antd' }}\n * ...\n * />\n */\n\nimport React, { ComponentType, ReactNode } from 'react';\nimport { UILibraryAdapter } from '../types/ui-library.types';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype AntDComponent = ComponentType<any>;\n\n/**\n * Ant Design Adapter Factory\n * \n * Creates an adapter for Ant Design components.\n * Users pass their Ant Design component imports to this factory function.\n */\nexport const createAntDesignAdapter = (\n // Ant Design component imports\n Input: AntDComponent,\n Button: AntDComponent,\n Checkbox: AntDComponent,\n Radio: AntDComponent,\n Switch: AntDComponent,\n Select: AntDComponent,\n Form: AntDComponent,\n Typography: AntDComponent,\n Popover: AntDComponent,\n DatePicker?: AntDComponent,\n DateTimePicker?: AntDComponent,\n Space?: AntDComponent,\n Card?: AntDComponent\n): UILibraryAdapter => {\n // Ant Design Input has TextArea as a property\n const TextArea = (Input as any).TextArea || Input;\n const { TextArea: AntDTextArea } = Input as any;\n const actualTextArea = AntDTextArea || TextArea;\n \n const { Text: TypographyText } = Typography as any;\n const { Group: RadioGroup } = Radio as any;\n const SpaceComponent = Space || (({ children, ...props }: any) => <div {...props}>{children}</div>);\n const CardComponent = Card || (({ children, className }: any) => <div className={`ant-card ${className || ''}`}>{children}</div>);\n\n return {\n Input: ({ className, disabled, error, type, ...props }) => (\n <Input\n {...props}\n type={type}\n disabled={disabled}\n status={error ? 'error' : undefined}\n className={className}\n />\n ),\n\n Textarea: ({ className, disabled, error, rows, ...props }) => (\n <TextArea\n {...props}\n rows={rows || 4}\n disabled={disabled}\n status={error ? 'error' : undefined}\n className={className}\n />\n ),\n\n Select: ({ className, disabled, error, children, ...props }) => (\n <Select\n {...props}\n disabled={disabled}\n status={error ? 'error' : undefined}\n className={className}\n >\n {children}\n </Select>\n ),\n\n Checkbox: ({ className, disabled, label, ...props }) => (\n <Checkbox\n {...props}\n disabled={disabled}\n className={className}\n >\n {label}\n </Checkbox>\n ),\n\n Radio: ({ className, disabled, label, ...props }) => (\n <Radio\n {...props}\n disabled={disabled}\n className={className}\n >\n {label}\n </Radio>\n ),\n\n Switch: ({ className, disabled, ...props }) => (\n <Switch\n {...props}\n disabled={disabled}\n className={className}\n />\n ),\n\n Button: ({ className, disabled, children, variant, type, onClick, ...props }) => (\n <Button\n {...props}\n disabled={disabled}\n type={variant === 'primary' ? 'primary' : variant === 'secondary' ? 'default' : variant || 'default'}\n htmlType={type}\n onClick={onClick}\n className={className}\n >\n {children}\n </Button>\n ),\n\n FormControl: ({ className, children }) => {\n const FormComponent = Form as any;\n const FormItem = FormComponent.Item || FormComponent;\n return (\n <FormItem className={className}>\n {children}\n </FormItem>\n );\n },\n\n FormHelperText: ({ className, children }) => (\n <TypographyText type=\"secondary\" className={className}>\n {children}\n </TypographyText>\n ),\n\n Label: ({ className, htmlFor, children }) => (\n <label className={className} htmlFor={htmlFor}>\n {children}\n </label>\n ),\n\n Box: ({ className, children, ...props }) => (\n <SpaceComponent className={className} {...props}>\n {children}\n </SpaceComponent>\n ),\n\n Paper: ({ className, children }) => (\n <CardComponent className={className}>\n {children}\n </CardComponent>\n ),\n\n Popover: ({ open, anchorEl, onClose, children, anchorOrigin, ...props }) => {\n if (!open) return null;\n \n return (\n <Popover\n open={open}\n onOpenChange={(visible: boolean) => !visible && onClose()}\n placement={anchorOrigin?.vertical === 'bottom' ? 'bottom' : 'top'}\n {...props}\n >\n {children}\n </Popover>\n );\n },\n\n MenuItem: ({ className, onClick, children }) => (\n <div className={`ant-menu-item ${className || ''}`} onClick={onClick}>\n {children}\n </div>\n ),\n\n Typography: ({ className, variant, children, ...props }) => {\n const TypographyComponent = Typography as any;\n return (\n <TypographyComponent className={className} {...props}>\n {children}\n </TypographyComponent>\n );\n },\n\n IconButton: ({ className, size, onClick, children, ...props }) => (\n <Button\n type=\"text\"\n size={size}\n onClick={onClick}\n className={className}\n icon={children}\n {...props}\n />\n ),\n\n DatePicker: DatePicker\n ? ({ value, onChange, format, disabled, ...props }) => (\n <DatePicker\n value={value}\n onChange={onChange}\n format={format}\n disabled={disabled}\n {...props}\n />\n )\n : undefined,\n\n DateTimePicker: DateTimePicker\n ? ({ value, onChange, format, disabled, views, ...props }) => (\n <DateTimePicker\n value={value}\n onChange={onChange}\n format={format}\n disabled={disabled}\n showTime={true}\n {...props}\n />\n )\n : undefined,\n };\n};\n\n","import React from 'react';\nimport { IconLibrary } from '../types/ui-library.types';\n\n/**\n * Default icon components using simple SVG icons\n * Users can replace these with their preferred icon library\n */\nconst DefaultInfoIcon: React.FC<{ className?: string; size?: string | number }> = ({\n className,\n size = 16,\n}) => (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n className={className}\n >\n <path d=\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-6h2v6zm0-8h-2V7h2v2z\" />\n </svg>\n);\n\nconst DefaultVisibilityIcon: React.FC<{\n className?: string;\n size?: string | number;\n}> = ({ className, size = 16 }) => (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n className={className}\n >\n <path d=\"M12 4.5C7 4.5 2.73 7.61 1 12c1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5zM12 17c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5zm0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3z\" />\n </svg>\n);\n\nconst DefaultVisibilityOffIcon: React.FC<{\n className?: string;\n size?: string | number;\n}> = ({ className, size = 16 }) => (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n className={className}\n >\n <path d=\"M12 7c2.76 0 5 2.24 5 5 0 .65-.13 1.26-.36 1.83l2.92 2.92c1.51-1.26 2.7-2.89 3.43-4.75-1.73-4.39-6-7.5-11-7.5-1.4 0-2.74.25-3.98.7l2.16 2.16C10.74 7.13 11.35 7 12 7zM2 4.27l2.28 2.28.46.46C3.08 8.3 1.78 10.02 1 12c1.73 4.39 6 7.5 11 7.5 1.55 0 3.03-.3 4.38-.84l.42.42L19.73 22 21 20.73 3.27 3 2 4.27zM7.53 9.8l1.55 1.55c-.05.21-.08.43-.08.65 0 1.66 1.34 3 3 3 .22 0 .44-.03.65-.08l1.55 1.55c-.67.33-1.41.53-2.2.53-2.76 0-5-2.24-5-5 0-.79.2-1.53.53-2.2zm4.31-.78l3.15 3.15.02-.16c0-1.66-1.34-3-3-3l-.17.01z\" />\n </svg>\n);\n\nconst DefaultCopyIcon: React.FC<{ className?: string; size?: string | number }> = ({\n className,\n size = 16,\n}) => (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n className={className}\n >\n <path d=\"M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12V1zm3 4H8c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm0 16H8V7h11v14z\" />\n </svg>\n);\n\nconst DefaultAddIcon: React.FC<{ className?: string; size?: string | number }> = ({\n className,\n size = 16,\n}) => (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n className={className}\n >\n <path d=\"M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z\" />\n </svg>\n);\n\nconst DefaultDeleteIcon: React.FC<{ className?: string; size?: string | number }> = ({\n className,\n size = 16,\n}) => (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n className={className}\n >\n <path d=\"M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zM19 4h-3.5l-1-1h-5l-1 1H5v2h14V4z\" />\n </svg>\n);\n\nexport const defaultIcons: IconLibrary = {\n Info: DefaultInfoIcon,\n Visibility: DefaultVisibilityIcon,\n VisibilityOff: DefaultVisibilityOffIcon,\n Copy: DefaultCopyIcon,\n Add: DefaultAddIcon,\n Delete: DefaultDeleteIcon,\n};\n\n","/**\n * Formik utility functions extracted from production code\n * These handle nested property access, error extraction, etc.\n */\n\n/**\n * Get nested property from object using dot notation or bracket notation\n * Supports paths like \"user.name\" or \"users[0].name\"\n */\nexport const getNestedProperty = (\n obj: Record<string, unknown> | undefined | null,\n path: string | undefined | null\n): unknown => {\n if (!path || !obj) {\n return undefined;\n }\n\n // Handle both dot notation and bracket notation\n // Split by dots, brackets, and handle array indices\n const keys = path.split(/[.[\\]]+/).filter(Boolean);\n\n return keys.reduce((acc: unknown, key: string) => {\n if (acc && typeof acc === 'object' && key in acc) {\n return (acc as Record<string, unknown>)[key];\n }\n return undefined;\n }, obj);\n};\n\n/**\n * Alternative nested property getter (simpler version)\n * Only supports dot notation\n */\nexport const getNestedValueNew = (\n obj: Record<string, unknown> | undefined | null,\n path: string\n): unknown => {\n if (!obj || !path) {\n return undefined;\n }\n\n return path\n .split('.')\n .reduce(\n (acc: unknown, key: string) =>\n acc && typeof acc === 'object' && key in acc\n ? (acc as Record<string, unknown>)[key]\n : undefined,\n obj\n );\n};\n\n/**\n * Extract field value from Formik values using nested path\n */\nexport const getFieldValue = (\n formik: { values: Record<string, unknown> },\n name: string\n): unknown => {\n if (!name) return null;\n\n if (name.includes('.')) {\n if (name.includes('[')) {\n // Array notation like \"users[0].name\"\n return getNestedProperty(formik.values, name);\n }\n // Dot notation like \"user.name\"\n return name\n .split('.')\n .reduce(\n (acc: unknown, key: string) =>\n acc && typeof acc === 'object' && key in acc\n ? (acc as Record<string, unknown>)[key]\n : '',\n formik.values\n );\n }\n\n return formik.values[name];\n};\n\n/**\n * Extract field error from Formik errors using nested path\n */\nexport const getFieldError = (\n formik: { errors: Record<string, unknown> },\n name: string\n): string | undefined => {\n if (!name) return undefined;\n\n if (name.includes('.')) {\n if (name.includes('[')) {\n return getNestedProperty(formik.errors, name) as string | undefined;\n }\n return name\n .split('.')\n .reduce(\n (acc: unknown, key: string) =>\n acc && typeof acc === 'object' && key in acc\n ? (acc as Record<string, unknown>)[key]\n : '',\n formik.errors\n ) as string | undefined;\n }\n\n return formik.errors[name] as string | undefined;\n};\n\n/**\n * Extract field touched state from Formik touched using nested path\n */\nexport const getFieldTouched = (\n formik: { touched: Record<string, unknown> },\n name: string\n): boolean => {\n if (!name) return false;\n\n if (name.includes('.')) {\n if (name.includes('[')) {\n return !!getNestedProperty(formik.touched, name);\n }\n return !!name\n .split('.')\n .reduce(\n (acc: unknown, key: string) =>\n acc && typeof acc === 'object' && key in acc\n ? (acc as Record<string, unknown>)[key]\n : false,\n formik.touched\n );\n }\n\n return !!formik.touched[name];\n};\n\n","import React from 'react';\nimport { useFormContext } from '../../context/FormContext';\nimport { getFieldValue } from '../../utils/formik.utils';\nimport { BaseFieldConfig } from '../../types/field.types';\n\ninterface EmptyFieldProps extends BaseFieldConfig {\n type: 'emptyField';\n}\n\n/**\n * EmptyField Component\n * Renders a hidden input field (useful for form state management)\n */\nexport const EmptyField: React.FC<EmptyFieldProps> = ({\n name,\n customHandleChange,\n formik: formikProp,\n}) => {\n const { uiLibrary, formik } = useFormContext();\n const { adapter } = uiLibrary;\n const Input = adapter.Input;\n const activeFormik = formikProp || formik;\n\n const fieldValue = getFieldValue(activeFormik, name) || '';\n\n return (\n <Input\n id={name}\n type=\"hidden\"\n name={name}\n className=\"d-none\"\n value={fieldValue as string}\n onChange={(event) => {\n if (customHandleChange) {\n customHandleChange(event, 'emptyField');\n } else {\n activeFormik.handleChange(event);\n }\n }}\n onBlur={activeFormik.handleBlur}\n />\n );\n};\n\n","import React, { ReactNode } from 'react';\n\ninterface FieldWrapperProps {\n children: ReactNode;\n className?: string;\n customClass?: string;\n isChild?: boolean;\n noIndent?: boolean;\n hidden?: boolean;\n index?: number | string;\n}\n\n/**\n * FieldWrapper component\n * Provides consistent styling and layout for field components\n */\nexport const FieldWrapper: React.FC<FieldWrapperProps> = ({\n children,\n className,\n customClass,\n isChild,\n noIndent,\n hidden,\n index,\n}) => {\n if (hidden) {\n return <div className=\"d-none\">{children}</div>;\n }\n\n const wrapperClasses = [\n customClass || 'mb-4',\n isChild && !noIndent ? 'ps-5' : '',\n className || '',\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <div className={wrapperClasses} key={index}>\n {children}\n </div>\n );\n};\n\n","import React from 'react';\nimport { IconComponent } from '../../types/ui-library.types';\n\ninterface IconRendererProps {\n Icon?: IconComponent;\n size?: string | number;\n className?: string;\n}\n\n/**\n * IconRenderer component\n * Safely renders icon components with proper typing\n */\nexport const IconRenderer: React.FC<IconRendererProps> = ({\n Icon,\n size = 16,\n className,\n}) => {\n if (!Icon) return null;\n \n // Render icon as a component\n return React.createElement(Icon, { size, className });\n};\n\n","import React from 'react';\nimport { useFormContext } from '../../context/FormContext';\nimport { formatString } from '../../utils/field.utils';\nimport { IconRenderer } from './IconRenderer';\n\ninterface FieldLabelProps {\n name: string;\n label?: string;\n required?: boolean;\n showOptional?: boolean;\n info?: string;\n htmlFor?: string;\n className?: string;\n customLabelClass?: string;\n}\n\n/**\n * FieldLabel component\n * Renders label with required indicator, optional text, and info tooltip\n */\nexport const FieldLabel: React.FC<FieldLabelProps> = ({\n name,\n label,\n required,\n showOptional,\n info,\n htmlFor,\n className,\n customLabelClass,\n}) => {\n const { uiLibrary } = useFormContext();\n const { adapter, icons } = uiLibrary;\n const Label = adapter.Label;\n const IconButton = adapter.IconButton;\n\n if (!label) return null;\n\n const InfoIcon = icons?.Info;\n\n return (\n <Label\n htmlFor={htmlFor || name}\n className={`${customLabelClass || className || ''}`}\n >\n <span>{label}</span>\n {required && <span className=\"text-danger\"> *</span>}\n {showOptional && (\n <span className=\"text-12 ps-1 text-body-tertiary\"> (Optional)</span>\n )}\n {info && InfoIcon && (\n <IconButton\n size=\"small\"\n className=\"p-0\"\n aria-label=\"show info\"\n tabIndex={-1}\n >\n <IconRenderer Icon={InfoIcon} size={16} />\n </IconButton>\n )}\n </Label>\n );\n};\n\n","/**\n * Field utility functions\n */\n\n/**\n * Format string for use in data-testid attributes\n * Converts camelCase, snake_case, and spaces to kebab-case\n */\nexport const formatString = (\n inputStr: string | undefined | null,\n ignoreChar = false\n): string => {\n if (!inputStr) return '';\n\n let result = inputStr.replace(/_/g, '-').toLowerCase();\n result = result.replace(/\\s+/g, '-');\n result = result.replace(/([a-z])([A-Z])/g, '$1-$2');\n \n if (!ignoreChar) {\n result = result.replace(/\\//g, '-');\n }\n \n return result;\n};\n\n/**\n * Convert camelCase to kebab-case\n */\nexport const camelToKebabCase = (str: string): string => {\n return str.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();\n};\n\n/**\n * Sanitize label for CSS class names\n */\nexport const sanitizeLabelForCSS = (label: string | undefined | null): string => {\n return label?.replace(/\\s+/g, '_') || '';\n};\n\n/**\n * Check if value is blank (null, undefined, or empty string)\n */\nexport const isBlank = (value: unknown): boolean => {\n return value === null || value === undefined || value === '';\n};\n\n/**\n * Check if value is not blank\n */\nexport const isNotBlank = (value: unknown): boolean => {\n return !isBlank(value);\n};\n\n","import React from 'react';\nimport { formatString } from '../../utils/field.utils';\n\ninterface FieldErrorProps {\n name: string;\n error?: string;\n touched?: boolean;\n showCustomError?: boolean;\n dataTestId?: string;\n className?: string;\n}\n\n/**\n * FieldError component\n * Displays validation error messages\n */\nexport const FieldError: React.FC<FieldErrorProps> = ({\n name,\n error,\n touched,\n showCustomError,\n dataTestId,\n className,\n}) => {\n if (!showCustomError && (!error || !touched)) {\n return null;\n }\n\n return (\n <small\n id=\"error\"\n data-testid={dataTestId || `${formatString(name)}-error`}\n className={className || 'd-flex text-danger mt-1 text-12'}\n >\n {error}\n </small>\n );\n};\n\n","import React from 'react';\nimport { useFormContext } from '../../context/FormContext';\nimport { getFieldValue, getFieldError, getFieldTouched } from '../../utils/formik.utils';\nimport { FieldWrapper } from '../shared/FieldWrapper';\nimport { FieldLabel } from '../shared/FieldLabel';\nimport { FieldError } from '../shared/FieldError';\nimport { BaseFieldConfig } from '../../types/field.types';\n\ninterface TextFieldProps extends BaseFieldConfig {\n type: 'text';\n error?: string;\n}\n\n/**\n * TextField Component\n * Displays read-only text (not an input field)\n */\nexport const TextField: React.FC<TextFieldProps> = ({\n name,\n label,\n required,\n customClass,\n isChild,\n noIndent,\n hidden,\n dataTestId,\n showCustomError,\n error: customError,\n index,\n formik: formikProp,\n}) => {\n const { formik } = useFormContext();\n const activeFormik = formikProp || formik;\n\n const fieldValue = getFieldValue(activeFormik, name);\n const fieldError = getFieldError(activeFormik, name);\n const fieldTouched = getFieldTouched(activeFormik, name);\n\n // Handle group heading logic from production code\n const isGroupHeading =\n typeof name === 'string' && name.endsWith('__heading');\n const groupKeyForHeading = isGroupHeading ? name.split('__')[0] : null;\n const groupLevelError = groupKeyForHeading\n ? getFieldError(activeFormik, groupKeyForHeading)\n : null;\n const resolvedTextError = showCustomError && customError ? customError : (groupLevelError || fieldError);\n const showErrorNow =\n !!resolvedTextError && (fieldTouched || activeFormik.submitCount > 0 || showCustomError);\n\n return (\n <FieldWrapper\n customClass={customClass}\n isChild={isChild}\n noIndent={noIndent}\n hidden={hidden}\n index={index}\n >\n {label && (\n <FieldLabel\n name={name}\n label={label}\n required={required}\n />\n )}\n <div>\n <p onClick={() => {}}>{fieldValue as string}</p>\n </div>\n {(showCustomError || showErrorNow) && (\n <FieldError\n name={name}\n error={resolvedTextError}\n touched={fieldTouched}\n showCustomError={showCustomError}\n dataTestId={dataTestId}\n />\n )}\n </FieldWrapper>\n );\n};\n\n","import React from 'react';\nimport { useFormContext } from '../../context/FormContext';\n\ninterface FieldDescriptionProps {\n desc?: string;\n className?: string;\n customDescClass?: string;\n}\n\n/**\n * FieldDescription component\n * Renders field description/helper text\n */\nexport const FieldDescription: React.FC<FieldDescriptionProps> = ({\n desc,\n className,\n customDescClass,\n}) => {\n const { uiLibrary } = useFormContext();\n const { adapter } = uiLibrary;\n const FormHelperText = adapter.FormHelperText;\n\n if (!desc) return null;\n\n return (\n <FormHelperText className={customDescClass || className || ''}>\n {desc}\n </FormHelperText>\n );\n};\n\n","import React from 'react';\nimport { useFormContext } from '../../context/FormContext';\nimport { FieldWrapper } from '../shared/FieldWrapper';\nimport { FieldLabel } from '../shared/FieldLabel';\nimport { FieldDescription } from '../shared/FieldDescription';\nimport { formatString } from '../../utils/field.utils';\nimport { BaseFieldConfig } from '../../types/field.types';\n\ninterface LinkFieldProps extends BaseFieldConfig {\n type: 'link';\n onClickLink?: () => void;\n}\n\n/**\n * LinkField Component\n * Renders a clickable link/button field\n */\nexport const LinkField: React.FC<LinkFieldProps> = ({\n name,\n label,\n desc,\n required,\n customClass,\n customComponentClass,\n isChild,\n noIndent,\n hidden,\n onClickLink,\n component,\n targetType,\n index,\n}) => {\n const handleClick = () => {\n if (onClickLink) {\n onClickLink();\n }\n };\n\n return (\n <>\n <FieldWrapper\n customClass={customClass}\n isChild={isChild}\n noIndent={noIndent}\n hidden={hidden}\n index={index}\n >\n {label && (\n <a\n href={targetType === 'blank' ? '#' : undefined}\n target={targetType === 'blank' ? '_blank' : undefined}\n onClick={(e) => {\n e.preventDefault();\n handleClick();\n }}\n style={{ cursor: 'pointer' }}\n >\n {label}\n {required && <span className=\"text-danger\"> *</span>}\n </a>\n )}\n {desc && <FieldDescription desc={desc} />}\n </FieldWrapper>\n {component && (\n <div className={customComponentClass || 'mb-1 mx-1'}>{component}</div>\n )}\n </>\n );\n};\n\n","import React from 'react';\nimport { FieldWrapper } from '../shared/FieldWrapper';\nimport { BaseFieldConfig } from '../../types/field.types';\n\ninterface ComponentFieldProps extends BaseFieldConfig {\n type: 'component';\n component?: React.ReactNode;\n blockComponent?: React.ReactNode;\n}\n\n/**\n * ComponentField Component\n * Wrapper for custom components\n */\nexport const ComponentField: React.FC<ComponentFieldProps> = ({\n customClass,\n isChild,\n noIndent,\n component,\n blockComponent,\n index,\n}) => {\n return (\n <>\n {component && (\n <FieldWrapper\n customClass={customClass}\n isChild={isChild}\n noIndent={noIndent}\n index={index}\n >\n {component}\n </FieldWrapper>\n )}\n {blockComponent && (\n <FieldWrapper\n customClass={customClass}\n isChild={isChild}\n noIndent={noIndent}\n index={index}\n >\n {blockComponent}\n </FieldWrapper>\n )}\n </>\n );\n};\n\n","import React from 'react';\nimport { useFormContext } from '../../context/FormContext';\nimport { FieldWrapper } from '../shared/FieldWrapper';\nimport { FieldLabel } from '../shared/FieldLabel';\nimport { FieldDescription } from '../shared/FieldDescription';\nimport { BaseFieldConfig } from '../../types/field.types';\n\ninterface CustomFieldProps extends BaseFieldConfig {\n type: 'custom';\n component?: React.ReactNode;\n}\n\n/**\n * CustomField Component\n * Custom field wrapper with label and description\n */\nexport const CustomField: React.FC<CustomFieldProps> = ({\n name,\n label,\n desc,\n required,\n customClass,\n isChild,\n noIndent,\n hidden,\n component,\n index,\n}) => {\n return (\n <FieldWrapper\n customClass={customClass}\n isChild={isChild}\n noIndent={noIndent}\n hidden={hidden}\n index={index}\n >\n {label && (\n <FieldLabel\n name={name}\n label={label}\n required={required}\n />\n )}\n {desc && <FieldDescription desc={desc} />}\n <div>{component}</div>\n </FieldWrapper>\n );\n};\n\n","import React, { useState, useCallback } from 'react';\nimport { useFormContext } from '../../context/FormContext';\nimport { getFieldValue, getFieldError, getFieldTouched } from '../../utils/formik.utils';\nimport { FieldWrapper } from '../shared/FieldWrapper';\nimport { FieldLabel } from '../shared/FieldLabel';\nimport { FieldDescription } from '../shared/FieldDescription';\nimport { FieldError } from '../shared/FieldError';\nimport { IconRenderer } from '../shared/IconRenderer';\nimport { formatString } from '../../utils/field.utils';\nimport { InputFieldConfig } from '../../types/field.types';\n\n/**\n * InputField Component\n * Renders text input fields with various types (text, email, password, etc.)\n */\nexport const InputField: React.FC<InputFieldConfig> = ({\n name,\n type,\n label,\n placeholder,\n desc,\n info,\n required,\n disabled,\n hidden,\n readonly,\n fieldType = 'text',\n autocomplete,\n customClass,\n customLabelClass,\n dataTestId,\n isVisibleEnable,\n isCopyEnable,\n customIcon,\n customHandleChange,\n customFormChange,\n component,\n blockComponent,\n showCustomError,\n ref: inputRef,\n onBlur,\n isChild,\n noIndent,\n index,\n formik: formikProp,\n}) => {\n const { uiLibrary, formik } = useFormContext();\n const { adapter, icons } = uiLibrary;\n const Input = adapter.Input;\n const IconButton = adapter.IconButton;\n const activeFormik = formikProp || formik;\n\n const [showField, setShowField] = useState<Record<string, boolean>>({});\n\n const fieldValue = getFieldValue(activeFormik, name);\n const fieldError = getFieldError(activeFormik, name);\n const fieldTouched = getFieldTouched(activeFormik, name);\n\n const showFieldHandler = useCallback((fieldName: string) => {\n setShowField((prev) => ({\n ...prev,\n [fieldName]: !prev[fieldName],\n }));\n }, []);\n\n const handleCopy = useCallback(() => {\n if (typeof window !== 'undefined' && document) {\n const input = document.getElementById(name) as HTMLInputElement;\n if (input) {\n input.select();\n document.execCommand('copy');\n }\n }\n }, [name]);\n\n const VisibilityIcon = icons?.Visibility;\n const VisibilityOffIcon = icons?.VisibilityOff;\n const CopyIcon = icons?.Copy;\n\n const inputType =\n fieldType === 'password'\n ? !showField[name]\n ? 'password'\n : 'text'\n : fieldType;\n\n return (\n <FieldWrapper\n customClass={customClass}\n isChild={isChild}\n noIndent={noIndent}\n hidden={hidden}\n index={index}\n >\n {label && (\n <FieldLabel\n name={name}\n label={label}\n required={required}\n info={info}\n customLabelClass={customLabelClass}\n />\n )}\n {desc && <FieldDescription desc={desc} />}\n <div\n className={`input-group ${\n isCopyEnable || isVisibleEnable ? '' : 'rounded'\n }`}\n >\n <Input\n className={`form-control font-14 ${\n isCopyEnable || isVisibleEnable || customIcon\n ? 'border border-end-0'\n : 'rounded'\n } ${fieldError && fieldTouched ? 'border-danger' : ''}`}\n id={name}\n data-testid={dataTestId || `${formatString(name)}-input`}\n ref={inputRef}\n autoComplete={\n autocomplete || fieldType === 'password'\n ? 'new-password'\n : 'off'\n }\n type={inputType}\n disabled={disabled || false}\n name={name}\n placeholder={placeholder}\n value={(fieldValue as string) || ''}\n onChange={(event) => {\n if (customHandleChange) {\n customHandleChange(event, type);\n } else if (customFormChange) {\n customFormChange(event, type);\n } else {\n activeFormik.handleChange(event);\n }\n }}\n onBlur={onBlur || activeFormik.handleBlur}\n readOnly={readonly || false}\n error={!!(fieldError && fieldTouched)}\n />\n {customIcon && (\n <div\n className={`z-0 bg-transparent btn btn-outline-secondary border-0 border-top border-bottom px-3 ${\n !isCopyEnable && !isVisibleEnable\n ? 'border-end rounded-end'\n : ''\n } ${fieldError && fieldTouched ? 'border-danger' : ''}`}\n style={{ cursor: 'default' }}\n >\n {customIcon}\n </div>\n )}\n {isVisibleEnable && VisibilityIcon && VisibilityOffIcon && (\n <button\n className={`z-0 btn btn-outline-secondary border-0 rounded-0 border-top border-bottom ${\n !isCopyEnable ? 'border-end rounded-end' : ''\n } ${fieldError && fieldTouched ? 'border-danger' : ''}`}\n type=\"button\"\n data-testid={`${formatString(name)}-visible-btn`}\n onClick={() => showFieldHandler(name)}\n >\n {!showField[name] ? (\n <IconRenderer Icon={VisibilityOffIcon} size={16} />\n ) : (\n <IconRenderer Icon={VisibilityIcon} size={16} />\n )}\n </button>\n )}\n {isCopyEnable && CopyIcon && (\n <button\n className={`z-0 btn btn-outline-secondary border border-start-0 border-end rounded-end ${\n fieldError && fieldTouched ? 'border-danger' : ''\n }`}\n type=\"button\"\n data-testid={`${formatString(name)}-copy-btn`}\n aria-label=\"copy\"\n onClick={handleCopy}\n >\n <IconRenderer Icon={CopyIcon} size={16} />\n </button>\n )}\n {component && <div>{component}</div>}\n </div>\n {blockComponent && <div>{blockComponent}</div>}\n {(showCustomError || (fieldError && fieldTouched)) && (\n <FieldError\n name={name}\n error={fieldError}\n touched={fieldTouched}\n showCustomError={showCustomError}\n dataTestId={dataTestId}\n />\n )}\n </FieldWrapper>\n );\n};\n\n","import React from 'react';\nimport { useFormContext } from '../../context/FormContext';\nimport { getFieldValue, getFieldError, getFieldTouched } from '../../utils/formik.utils';\nimport { FieldWrapper } from '../shared/FieldWrapper';\nimport { FieldLabel } from '../shared/FieldLabel';\nimport { FieldDescription } from '../shared/FieldDescription';\nimport { FieldError } from '../shared/FieldError';\nimport { formatString } from '../../utils/field.utils';\nimport { TextareaFieldConfig } from '../../types/field.types';\n\n/**\n * TextareaField Component\n * Renders a textarea input field\n */\nexport const TextareaField: React.FC<TextareaFieldConfig> = ({\n name,\n type,\n label,\n placeholder,\n desc,\n required,\n customClass,\n customComponentClass,\n isChild,\n noIndent,\n hidden,\n readonly,\n rows = 4,\n dataTestId,\n customHandleChange,\n customFormChange,\n component,\n formik: formikProp,\n}) => {\n const { uiLibrary, formik } = useFormContext();\n const { adapter } = uiLibrary;\n const Textarea = adapter.Textarea;\n const activeFormik = formikProp || formik;\n\n const fieldValue = getFieldValue(activeFormik, name);\n const fieldError = getFieldError(activeFormik, name);\n const fieldTouched = getFieldTouched(activeFormik, name);\n\n return (\n <>\n <FieldWrapper\n customClass={customClass}\n isChild={isChild}\n noIndent={noIndent}\n hidden={hidden}\n >\n {label && (\n <FieldLabel\n name={name}\n label={label}\n required={required}\n />\n )}\n {desc && <FieldDescription desc={desc} />}\n <div>\n <Textarea\n id={name}\n className={`form-control text-14 ${\n required && fieldError && fieldTouched\n ? 'border-danger'\n : ''\n }`}\n name={name}\n data-testid={dataTestId || `${formatString(name)}-text-box`}\n placeholder={placeholder}\n rows={rows}\n value={(fieldValue as string) || ''}\n autoComplete=\"off\"\n onChange={(event) => {\n if (customHandleChange) {\n customHandleChange(event, type);\n } else if (customFormChange) {\n customFormChange(event, type);\n } else {\n activeFormik.handleChange(event);\n }\n }}\n onBlur={activeFormik.handleBlur}\n readOnly={readonly || false}\n disabled={readonly || false}\n error={!!(required && fieldError && fieldTouched)}\n />\n </div>\n {required && fieldError && fieldTouched && (\n <FieldError\n name={name}\n error={fieldError}\n touched={fieldTouched}\n dataTestId={dataTestId}\n />\n )}\n </FieldWrapper>\n {component && (\n <div className={customComponentClass || 'mb-1 mx-1'}>{component}</div>\n )}\n </>\n );\n};\n\n","import React from 'react';\nimport { useFormContext } from '../../context/FormContext';\nimport { getFieldValue, getFieldError, getFieldTouched } from '../../utils/formik.utils';\nimport { FieldWrapper } from '../shared/FieldWrapper';\nimport { FieldLabel } from '../shared/FieldLabel';\nimport { FieldDescription } from '../shared/FieldDescription';\nimport { FieldError } from '../shared/FieldError';\nimport { IconRenderer } from '../shared/IconRenderer';\nimport { formatString } from '../../utils/field.utils';\nimport { CheckboxFieldConfig } from '../../types/field.types';\n\n/**\n * CheckboxField Component\n * Renders a checkbox input field\n */\nexport const CheckboxField: React.FC<CheckboxFieldConfig> = ({\n name,\n type,\n label,\n desc,\n info,\n required,\n disabled,\n customClass,\n customComponentClass,\n isChild,\n noIndent,\n hidden,\n dataTestId,\n showCustomError,\n customHandleChange,\n customFormChange,\n component,\n child,\n formik: formikProp,\n}) => {\n const { uiLibrary, formik } = useFormContext();\n const { adapter, icons } = uiLibrary;\n const Checkbox = adapter.Checkbox;\n const FormHelperText = adapter.FormHelperText;\n const IconButton = adapter.IconButton;\n const activeFormik = formikProp || formik;\n\n const fieldValue = getFieldValue(activeFormik, name);\n const fieldError = getFieldError(activeFormik, name);\n const fieldTouched = getFieldTouched(activeFormik, name);\n const InfoIcon = icons?.Info;\n\n const setFieldValuesRecursive = (childFields: typeof child) => {\n if (childFields) {\n childFields.forEach((c) => {\n activeFormik.setFieldValue(c.name, '');\n activeFormik.setFieldTouched(c.name, false);\n });\n }\n };\n\n return (\n <>\n <FieldWrapper\n customClass={customClass}\n isChild={isChild}\n noIndent={noIndent}\n hidden={hidden}\n >\n <Checkbox\n id={name}\n name={name}\n data-testid={dataTestId || `${formatString(name)}-check-box`}\n checked={!!fieldValue}\n disabled={disabled || false}\n onChange={(event) => {\n if (customHandleChange) {\n customHandleChange(event, type);\n } else if (customFormChange) {\n customFormChange(event, type);\n } else {\n activeFormik.handleChange(event);\n }\n if (!event.target.checked) {\n setFieldValuesRecursive(child);\n }\n }}\n label={\n <div className=\"d-flex flex-column align-items-start\">\n <p className=\"text-14 text-dark fw-medium align-items-center\">\n {label}\n {required && <span className=\"text-danger\"> *</span>}\n {info && InfoIcon && (\n <IconButton\n size=\"small\"\n className=\"p-0\"\n aria-label=\"show info\"\n tabIndex={-1}\n >\n <IconRenderer Icon={InfoIcon} size={16} />\n </IconButton>\n )}\n </p>\n </div>\n }\n error={!!(fieldError && fieldTouched)}\n />\n {desc && (\n <FormHelperText className=\"text-black-50 mt-0 mb-1\">\n {desc}\n </FormHelperText>\n )}\n {(showCustomError || (fieldError && fieldTouched)) && (\n <FieldError\n name={name}\n error={fieldError}\n touched={fieldTouched}\n showCustomError={showCustomError}\n dataTestId={dataTestId}\n />\n )}\n {component && (\n <div className={customComponentClass || 'mb-1 mx-1'}>\n {component}\n </div>\n )}\n </FieldWrapper>\n {child &&\n child.map((c, childIndex) => {\n return (\n fieldValue &&\n // This would need to be handled by DynamicForm orchestrator\n // For now, we'll just render the child if value is truthy\n null\n );\n })}\n </>\n );\n};\n\n","import React from 'react';\nimport { useFormContext } from '../../context/FormContext';\nimport { getFieldValue, getFieldError, getFieldTouched } from '../../utils/formik.utils';\nimport { FieldWrapper } from '../shared/FieldWrapper';\nimport { FieldLabel } from '../shared/FieldLabel';\nimport { FieldDescription } from '../shared/FieldDescription';\nimport { FieldError } from '../shared/FieldError';\nimport { formatString } from '../../utils/field.utils';\nimport { RadioFieldConfig } from '../../types/field.types';\n\n/**\n * RadioField Component\n * Renders a radio button group\n */\nexport const RadioField: React.FC<RadioFieldConfig> = ({\n name,\n type,\n label,\n desc,\n required,\n disabled,\n customClass,\n customComponentClass,\n isChild,\n noIndent,\n hidden,\n values = {},\n dataTestId,\n customHandleChange,\n customFormChange,\n component,\n child,\n formik: formikProp,\n}) => {\n const { uiLibrary, formik } = useFormContext();\n const { adapter } = uiLibrary;\n const Radio = adapter.Radio;\n const FormHelperText = adapter.FormHelperText;\n const activeFormik = formikProp || formik;\n\n const fieldValue = getFieldValue(activeFormik, name);\n const fieldError = getFieldError(activeFormik, name);\n const fieldTouched = getFieldTouched(activeFormik, name);\n\n return (\n <>\n <FieldWrapper\n customClass={customClass}\n isChild={isChild}\n noIndent={noIndent}\n hidden={hidden}\n >\n {label && (\n <FieldLabel\n name={name}\n label={label}\n required={required}\n />\n )}\n <div\n id={name}\n data-testid={dataTestId || `${formatString(name)}-btn`}\n role=\"radiogroup\"\n >\n {Object.entries(values).map(([key, value], index) => (\n <Radio\n key={key}\n name={name}\n value={key}\n checked={fieldValue === key || fieldValue === value}\n disabled={disabled || false}\n onChange={(event) => {\n if (customHandleChange) {\n customHandleChange(event, type);\n } else if (customFormChange) {\n customFormChange(event, type);\n } else {\n activeFormik.handleChange(event);\n }\n if (!event.target.checked && child) {\n child.forEach((c) => {\n activeFormik.setFieldValue(c.name, '');\n });\n }\n }}\n label={<p className=\"font-14 text-secondary m-0\">{value}</p>}\n />\n ))}\n </div>\n {desc && (\n <FormHelperText className=\"text-black-50 mb-1\">{desc}</FormHelperText>\n )}\n {fieldError && fieldTouched && (\n <FieldError\n name={name}\n error={fieldError}\n touched={fieldTouched}\n dataTestId={dataTestId}\n />\n )}\n {component && (\n <div className={customComponentClass || 'mb-1 mx-1'}>{component}</div>\n )}\n </FieldWrapper>\n {child &&\n child.map((c, i) => {\n // Child rendering logic would be handled by DynamicForm orchestrator\n return null;\n })}\n </>\n );\n};\n\n","import React from 'react';\nimport { useFormContext } from '../../context/FormContext';\nimport { getFieldValue, getFieldError, getFieldTouched } from '../../utils/formik.utils';\nimport { FieldWrapper } from '../shared/FieldWrapper';\nimport { FieldLabel } from '../shared/FieldLabel';\nimport { FieldDescription } from '../shared/FieldDescription';\nimport { FieldError } from '../shared/FieldError';\nimport { formatString } from '../../utils/field.utils';\nimport { SelectFieldConfig } from '../../types/field.types';\n\n/**\n * DropdownField Component\n * Renders a native HTML select dropdown\n */\nexport const DropdownField: React.FC<SelectFieldConfig & { type: 'dropdown' }> = ({\n name,\n type,\n label,\n desc,\n info,\n required,\n disabled,\n customClass,\n isChild,\n noIndent,\n hidden,\n values = {},\n headerKey,\n dataTestId,\n isCopyEnable,\n resetChild = true,\n ignoreChar,\n customHandleChange,\n customFormChange,\n component,\n child,\n setFieldValuesRecursive,\n formik: formikProp,\n index,\n}) => {\n const { uiLibrary, formik } = useFormContext();\n const { adapter } = uiLibrary;\n const Select = adapter.Select;\n const FormControl = adapter.FormControl;\n const activeFormik = formikProp || formik;\n\n const fieldValue = getFieldValue(activeFormik, name);\n const fieldError = getFieldError(activeFormik, name);\n const fieldTouched = getFieldTouched(activeFormik, name);\n\n const handleSetFieldValuesRecursive = (childFields: typeof child, parentValue?: string) => {\n if (childFields && setFieldValuesRecursive) {\n setFieldValuesRecursive(childFields, parentValue);\n }\n };\n\n // Handle values as object or array\n const options = Array.isArray(values)\n ? values\n : Object.entries(values).map(([key, value]) => ({\n value: key,\n label: value || key,\n }));\n\n // Sort options - empty string first\n const sortedOptions = [...options].sort((a, b) => {\n if (a.value === '') return -1;\n return 0;\n });\n\n return (\n <>\n <FieldWrapper\n customClass={customClass}\n isChild={isChild}\n noIndent={noIndent}\n hidden={hidden}\n index={index}\n >\n <FormControl\n className=\"w-100\"\n required={required}\n error={!!(fieldTouched && fieldError)}\n >\n {label && (\n <FieldLabel\n name={name}\n label={label}\n required={required}\n info={info}\n />\n )}\n {desc && <FieldDescription desc={desc} />}\n <Select\n className={`form-select text-14 ${\n isCopyEnable ? 'border border-end-0' : ''\n } ${fieldError && fieldTouched ? 'border-danger' : ''}`}\n id={name}\n name={name}\n data-testid={dataTestId || `${formatString(name)}-dropdown`}\n disabled={disabled || false}\n value={(fieldValue as string) || ''}\n onChange={(event) => {\n if (customHandleChange) {\n customHandleChange(event, type, typeof index === 'number' ? index : undefined);\n } else if (customFormChange) {\n customFormChange(event, type);\n } else {\n activeFormik.handleChange(event);\n }\n if (resetChild) {\n handleSetFieldValuesRecursive(child, event.target.value);\n }\n }}\n onBlur={activeFormik.handleBlur}\n error={!!(fieldError && fieldTouched)}\n >\n {headerKey && <option>{headerKey}</option>}\n {sortedOptions.map((option, i) => (\n <option\n key={i}\n data-testid={`${formatString(String(option.value), ignoreChar)}-option`}\n value={option.value}\n >\n {option.label}\n </option>\n ))}\n </Select>\n {(fieldError && fieldTouched) && (\n <FieldError\n name={name}\n error={fieldError}\n touched={fieldTouched}\n dataTestId={dataTestId}\n />\n )}\n </FormControl>\n </FieldWrapper>\n {child &&\n child.map((childField, childIndex) => {\n // Child rendering would be handled by DynamicForm orchestrator\n // based on fieldValue === childField.hiddenlabel\n return null;\n })}\n {component && (\n <div className=\"mb-1 mx-1\">{component}</div>\n )}\n </>\n );\n};\n\n","import React from 'react';\nimport { useFormContext } from '../../context/FormContext';\nimport { getFieldValue, getFieldError, getFieldTouched } from '../../utils/formik.utils';\nimport { FieldError } from '../shared/FieldError';\nimport { FieldLabel } from '../shared/FieldLabel';\nimport { formatString } from '../../utils/field.utils';\nimport { BaseFieldConfig } from '../../types/field.types';\n\ninterface ToggleFieldProps extends BaseFieldConfig {\n type: 'toggle';\n}\n\n/**\n * ToggleField Component\n * Renders a switch/toggle component\n */\nexport const ToggleField: React.FC<ToggleFieldProps> = ({\n name,\n type,\n label,\n required,\n disabled,\n customClass,\n isChild,\n noIndent,\n dataTestId,\n customHandleChange,\n customFormChange,\n formik: formikProp,\n}) => {\n const { uiLibrary, formik } = useFormContext();\n const { adapter } = uiLibrary;\n const Switch = adapter.Switch;\n const activeFormik = formikProp || formik;\n\n const fieldValue = getFieldValue(activeFormik, name);\n const fieldError = getFieldError(activeFormik, name);\n const fieldTouched = getFieldTouched(activeFormik, name);\n\n return (\n <div\n className={`d-flex gap-2 align-items-center ${\n isChild && !noIndent ? 'ps-5' : ''\n }`}\n >\n <Switch\n id={name}\n name={name}\n data-testid={dataTestId || `${formatString(name)}-check-box`}\n disabled={disabled || false}\n checked={!!fieldValue}\n onChange={(event) => {\n const newValue = event.target.checked;\n if (customHandleChange) {\n customHandleChange(event, type);\n } else if (customFormChange) {\n customFormChange(event, type);\n } else {\n activeFormik.setFieldValue(name, newValue);\n }\n }}\n />\n {label && (\n <FieldLabel\n name={name}\n label={label}\n required={required}\n htmlFor={name}\n />\n )}\n {fieldError && fieldTouched && (\n <FieldError\n name={name}\n error={fieldError}\n touched={fieldTouched}\n dataTestId={dataTestId}\n />\n )}\n </div>\n );\n};\n\n","import React from 'react';\nimport { useFormContext } from '../../context/FormContext';\nimport { getFieldValue, getFieldError, getFieldTouched } from '../../utils/formik.utils';\nimport { FieldWrapper } from '../shared/FieldWrapper';\nimport { FieldLabel } from '../shared/FieldLabel';\nimport { FieldDescription } from '../shared/FieldDescription';\nimport { FieldError } from '../shared/FieldError';\nimport { IconRenderer } from '../shared/IconRenderer';\nimport { formatString } from '../../utils/field.utils';\nimport { FileUploadFieldConfig } from '../../types/field.types';\n\n/**\n * FileUploadField Component\n * Renders a file upload input field\n */\nexport const FileUploadField: React.FC<FileUploadFieldConfig> = ({\n name,\n type,\n label,\n info,\n required,\n customClass,\n customComponentClass,\n isChild,\n noIndent,\n dataTestId,\n customHandleChange,\n customFormChange,\n component,\n ref: inputRef,\n formik: formikProp,\n index,\n}) => {\n const { uiLibrary, formik } = useFormContext();\n const { adapter, icons } = uiLibrary;\n const Input = adapter.Input;\n const Button = adapter.Button;\n const IconButton = adapter.IconButton;\n const activeFormik = formikProp || formik;\n\n const fieldValue = getFieldValue(activeFormik, name);\n const fieldError = getFieldError(activeFormik, name);\n const fieldTouched = getFieldTouched(activeFormik, name);\n const InfoIcon = icons?.Info;\n const DeleteIcon = icons?.Delete;\n\n const handleRemoveFile = () => {\n activeFormik.setFieldValue(name, null);\n };\n\n const fileValue = fieldValue as File | string | null;\n const fileName =\n fileValue instanceof File\n ? fileValue.name\n : typeof fileValue === 'string'\n ? fileValue.split('/').pop()\n : null;\n\n return (\n <>\n <FieldWrapper\n customClass={customClass}\n isChild={isChild}\n noIndent={noIndent}\n index={index}\n >\n {label && (\n <FieldLabel\n name={name}\n label={label}\n required={required}\n info={info}\n />\n )}\n {!fileValue && (\n <input\n className={`form-control ${\n required && fieldError && fieldTouched\n ? 'border-danger'\n : ''\n }`}\n type=\"file\"\n id={name}\n name={name}\n data-testid={dataTestId || `${formatString(name)}-file`}\n ref={inputRef as React.Ref<HTMLInputElement>}\n onChange={(event) => {\n if (customHandleChange) {\n customHandleChange(event, type);\n } else if (customFormChange) {\n customFormChange(event, type);\n } else {\n activeFormik.handleChange(event);\n }\n if (event.currentTarget.files?.[0]) {\n activeFormik.setFieldValue(name, event.currentTarget.files[0]);\n }\n }}\n onBlur={activeFormik.handleBlur}\n />\n )}\n {required && fieldError && fieldTouched && (\n <FieldError\n name={name}\n error={fieldError}\n touched={fieldTouched}\n dataTestId={dataTestId}\n />\n )}\n\n {fileValue && (\n <>\n <div className=\"d-flex justify-content-between align-items-center\">\n <div>\n File: {fileName}\n </div>\n <Button\n variant=\"text\"\n data-testid={`${formatString(name)}-remove-btn`}\n className=\"text-14 text-capitalize p-1 text-danger gap-1 col-3\"\n onClick={handleRemoveFile}\n >\n {DeleteIcon && <IconRenderer Icon={DeleteIcon} size={16} />} Remove File\n </Button>\n </div>\n {fieldError && (\n <FieldError\n name={name}\n error={fieldError}\n touched={fieldTouched}\n dataTestId={dataTestId}\n />\n )}\n </>\n )}\n </FieldWrapper>\n {component && (\n <div className={customComponentClass || 'mb-1 mx-1'}>\n {component}\n </div>\n )}\n </>\n );\n};\n\n","import React from 'react';\nimport { useFormContext } from '../../context/FormContext';\nimport { getFieldValue, getFieldError, getFieldTouched } from '../../utils/formik.utils';\nimport { FieldWrapper } from '../shared/FieldWrapper';\nimport { FieldLabel } from '../shared/FieldLabel';\nimport { FieldDescription } from '../shared/FieldDescription';\nimport { FieldError } from '../shared/FieldError';\nimport { formatString } from '../../utils/field.utils';\nimport { SelectFieldConfig } from '../../types/field.types';\n\n/**\n * SingleSelectField Component\n * Renders a single-select dropdown using react-select\n * \n * NOTE: This requires react-select as a peer dependency\n * Users must install: npm install react-select\n */\nexport const SingleSelectField: React.FC<SelectFieldConfig & { type: 'singleSelect' }> = ({\n name,\n type,\n label,\n desc,\n info,\n required,\n disabled,\n customClass,\n customComponentClass,\n isChild,\n noIndent,\n hidden,\n values = [],\n isSearchable,\n isMulti = false,\n optionsLabel,\n dataTestId,\n customHandleChange,\n customFormChange,\n component,\n child,\n setFieldValuesRecursive,\n formik: formikProp,\n index,\n}) => {\n const { uiLibrary, formik } = useFormContext();\n const { adapter } = uiLibrary;\n const FormControl = adapter.FormControl;\n const activeFormik = formikProp || formik;\n\n const fieldValue = getFieldValue(activeFormik, name);\n const fieldError = getFieldError(activeFormik, name);\n const fieldTouched = getFieldTouched(activeFormik, name);\n\n // Convert values to react-select format if needed\n const options = Array.isArray(values)\n ? values\n : Object.entries(values).map(([value, label]) => ({\n value,\n label: String(label),\n }));\n\n // Find selected option\n const selectedOption = fieldValue\n ? options.find((opt) => opt.value === fieldValue)\n : null;\n\n // Handle react-select change event\n const handleSelectChange = (selected: { value: string | number; label: string } | null) => {\n const event = {\n target: {\n name,\n value: selected ? selected.value : '',\n },\n } as React.ChangeEvent<HTMLSelectElement>;\n\n if (customHandleChange) {\n customHandleChange(event, type);\n } else if (customFormChange) {\n customFormChange(event, type);\n } else {\n activeFormik.handleChange(event);\n }\n\n if (child && setFieldValuesRecursive) {\n setFieldValuesRecursive(child);\n }\n };\n\n // For now, we'll use the native Select adapter\n // In production, this would use react-select's Select component\n // Users would need to provide a react-select adapter or use the default\n const Select = adapter.Select;\n\n return (\n <>\n <FieldWrapper\n customClass={customClass}\n isChild={isChild}\n noIndent={noIndent}\n hidden={hidden}\n index={index}\n >\n <FormControl\n className=\"w-100\"\n required={required}\n error={!!(fieldTouched && fieldError)}\n >\n {label && (\n <FieldLabel\n name={name}\n label={label}\n required={required}\n info={info}\n />\n )}\n {desc && <FieldDescription desc={desc} />}\n <div data-testid={dataTestId || `${formatString(name)}-single-select`}>\n <Select\n className={`text-14 ${isMulti ? '' : ''} ${\n fieldError && fieldTouched ? 'border-danger' : ''\n }`}\n name={name}\n disabled={disabled || false}\n value={selectedOption ? String(selectedOption.value) : ''}\n onChange={(event) => {\n const selected = options.find(\n (opt) => String(opt.value) === event.target.value\n );\n handleSelectChange(selected || null);\n }}\n onBlur={activeFormik.handleBlur}\n error={!!(fieldError && fieldTouched)}\n >\n {options.map((option) => (\n <option key={option.value} value={String(option.value)}>\n {option.label}\n </option>\n ))}\n </Select>\n </div>\n {fieldError && fieldTouched && (\n <FieldError\n name={name}\n error={fieldError}\n touched={fieldTouched}\n dataTestId={dataTestId}\n />\n )}\n </FormControl>\n </FieldWrapper>\n {child &&\n child.map((childField, childIndex) => {\n // Child rendering would be handled by DynamicForm orchestrator\n // based on fieldValue === childField.hiddenlabel\n return null;\n })}\n {component && (\n <div className={customComponentClass || 'mb-1 mx-1'}>{component}</div>\n )}\n </>\n );\n};\n\n","import React from 'react';\nimport { useFormContext } from '../../context/FormContext';\nimport { getFieldValue, getFieldError, getFieldTouched } from '../../utils/formik.utils';\nimport { FieldWrapper } from '../shared/FieldWrapper';\nimport { FieldLabel } from '../shared/FieldLabel';\nimport { FieldDescription } from '../shared/FieldDescription';\nimport { FieldError } from '../shared/FieldError';\nimport { formatString } from '../../utils/field.utils';\nimport { SelectFieldConfig } from '../../types/field.types';\n\n/**\n * MultiSelectField Component\n * Renders a multi-select dropdown using react-select\n * \n * NOTE: This requires react-select as a peer dependency\n */\nexport const MultiSelectField: React.FC<SelectFieldConfig & { type: 'multiSelect' }> = ({\n name,\n type,\n label,\n desc,\n info,\n required,\n customClass,\n customDescClass,\n customComponentClass,\n isChild,\n noIndent,\n hidden,\n values = [],\n dataTestId,\n customHandleChange,\n component,\n blockComponent,\n formik: formikProp,\n index,\n}) => {\n const { uiLibrary, formik } = useFormContext();\n const { adapter } = uiLibrary;\n const FormControl = adapter.FormControl;\n const activeFormik = formikProp || formik;\n\n const fieldValue = getFieldValue(activeFormik, name);\n const fieldError = getFieldError(activeFormik, name);\n const fieldTouched = getFieldTouched(activeFormik, name);\n\n // Convert values to array format if needed\n const options = Array.isArray(values)\n ? values\n : Object.entries(values).map(([value, label]) => ({\n value,\n label: String(label),\n }));\n\n // Handle multi-select value (array)\n const selectedValues = Array.isArray(fieldValue) ? fieldValue : [];\n\n const handleChange = (event: React.ChangeEvent<HTMLSelectElement>) => {\n const selectedOptions = Array.from(event.target.selectedOptions, (option) =>\n option.value\n );\n\n const syntheticEvent = {\n target: {\n name,\n value: selectedOptions,\n },\n } as unknown as React.ChangeEvent<HTMLSelectElement>;\n\n if (customHandleChange) {\n customHandleChange(syntheticEvent, 'multiSelect');\n } else {\n activeFormik.setFieldValue(name, selectedOptions);\n }\n };\n\n const Select = adapter.Select;\n\n return (\n <>\n <FieldWrapper\n customClass={customClass}\n isChild={isChild}\n noIndent={noIndent}\n hidden={hidden}\n index={index}\n data-testid={dataTestId || `${formatString(name)}-multi-select`}\n >\n {blockComponent && <div>{blockComponent}</div>}\n <FormControl className=\"w-100\" required={required}>\n {label && (\n <FieldLabel\n name={name}\n label={label}\n required={required}\n info={info}\n />\n )}\n {desc && (\n <FieldDescription desc={desc} customDescClass={customDescClass} />\n )}\n <div data-testid={dataTestId || `${formatString(name)}-select`}>\n <select\n name={name}\n multiple\n value={selectedValues.map(String)}\n onChange={handleChange}\n onBlur={activeFormik.handleBlur}\n className={`form-select text-14 ${fieldError && fieldTouched ? 'border-danger' : ''}`}\n >\n {options.map((option) => (\n <option key={option.value} value={String(option.value)}>\n {option.label}\n </option>\n ))}\n </select>\n </div>\n {fieldError && fieldTouched && (\n <FieldError\n name={name}\n error={fieldError}\n touched={fieldTouched}\n dataTestId={dataTestId}\n />\n )}\n </FormControl>\n </FieldWrapper>\n {component && (\n <div className={customComponentClass || 'mb-1 mx-1'}>{component}</div>\n )}\n </>\n );\n};\n\n","import React, { useState } from 'react';\nimport { useFormContext } from '../../context/FormContext';\nimport { getFieldValue, getFieldError, getFieldTouched } from '../../utils/formik.utils';\nimport { FieldWrapper } from '../shared/FieldWrapper';\nimport { FieldLabel } from '../shared/FieldLabel';\nimport { FieldDescription } from '../shared/FieldDescription';\nimport { FieldError } from '../shared/FieldError';\nimport { formatString } from '../../utils/field.utils';\nimport { SelectFieldConfig } from '../../types/field.types';\n\n/**\n * AsyncSelectField Component\n * Renders an async-loading select dropdown using react-select/async\n * \n * NOTE: This requires react-select as a peer dependency\n */\nexport const AsyncSelectField: React.FC<SelectFieldConfig & { type: 'asyncSelect' }> = ({\n name,\n type,\n label,\n desc,\n info,\n required,\n disabled,\n customClass,\n customComponentClass,\n isChild,\n noIndent,\n hidden,\n values = [],\n isMulti = false,\n loaderCall,\n dataTestId,\n customHandleChange,\n customFormChange,\n component,\n child,\n setFieldValuesRecursive,\n formik: formikProp,\n index,\n}) => {\n const { uiLibrary, formik } = useFormContext();\n const { adapter } = uiLibrary;\n const FormControl = adapter.FormControl;\n const activeFormik = formikProp || formik;\n\n const [asyncLoading, setAsyncLoading] = useState(false);\n\n const fieldValue = getFieldValue(activeFormik, name);\n const fieldError = getFieldError(activeFormik, name);\n const fieldTouched = getFieldTouched(activeFormik, name);\n\n const loadAsyncSelectOptions = async (inputValue: string) => {\n if (!loaderCall) return [];\n setAsyncLoading(true);\n const { apps, error } = await loaderCall(inputValue);\n setAsyncLoading(false);\n if (error || !apps) {\n return [];\n }\n return apps;\n };\n\n const handleChange = (event: React.ChangeEvent<HTMLSelectElement>) => {\n if (customHandleChange) {\n customHandleChange(event, type);\n } else if (customFormChange) {\n customFormChange(event, type);\n } else {\n activeFormik.handleChange(event);\n }\n\n if (child && setFieldValuesRecursive) {\n setFieldValuesRecursive(child);\n }\n };\n\n const Select = adapter.Select;\n\n return (\n <>\n <FieldWrapper\n customClass={customClass}\n isChild={isChild}\n noIndent={noIndent}\n hidden={hidden}\n index={index}\n data-testid={dataTestId || `${formatString(name)}-async-select`}\n >\n <FormControl\n className=\"w-100\"\n required={required}\n error={!!(fieldTouched && fieldError)}\n >\n {label && (\n <FieldLabel\n name={name}\n label={label}\n required={required}\n info={info}\n />\n )}\n {desc && <FieldDescription desc={desc} />}\n <div\n data-testid={dataTestId || `${formatString(name)}-async-select`}\n >\n <Select\n name={name}\n disabled={disabled}\n value={fieldValue ? String(fieldValue) : ''}\n onChange={handleChange}\n onBlur={activeFormik.handleBlur}\n error={!!(fieldError && fieldTouched)}\n >\n {asyncLoading && <option>Loading...</option>}\n {!asyncLoading &&\n values &&\n (Array.isArray(values)\n ? values\n : Object.entries(values).map(([value, label]) => ({\n value,\n label: String(label),\n }))\n ).map((option: { value: string | number; label: string }) => (\n <option key={option.value} value={String(option.value)}>\n {option.label}\n </option>\n ))}\n </Select>\n </div>\n {fieldError && fieldTouched && (\n <FieldError\n name={name}\n error={fieldError}\n touched={fieldTouched}\n dataTestId={dataTestId}\n />\n )}\n </FormControl>\n </FieldWrapper>\n {child &&\n child.map((childField, childIndex) => {\n // Child rendering would be handled by DynamicForm orchestrator\n return null;\n })}\n {component && (\n <div className={customComponentClass || 'mb-1 mx-1'}>{component}</div>\n )}\n </>\n );\n};\n\n","import React from 'react';\nimport { useFormContext } from '../../context/FormContext';\nimport { getFieldValue, getFieldError, getFieldTouched } from '../../utils/formik.utils';\nimport { FieldWrapper } from '../shared/FieldWrapper';\nimport { FieldLabel } from '../shared/FieldLabel';\nimport { FieldError } from '../shared/FieldError';\nimport { formatString } from '../../utils/field.utils';\nimport { DatePickerFieldConfig } from '../../types/field.types';\n\n/**\n * DatePickerField Component\n * Renders a date picker component\n * \n * NOTE: This requires a date picker library (e.g., @mui/x-date-pickers, react-datepicker)\n * Users must provide a DatePicker component in their UI adapter\n */\nexport const DatePickerField: React.FC<DatePickerFieldConfig & { type: 'datePicker' }> = ({\n name,\n type,\n label,\n info,\n required,\n disabled,\n customClass,\n isChild,\n noIndent,\n hidden,\n dateFormat = 'DD/MM/YYYY',\n dataTestId,\n component,\n formik: formikProp,\n index,\n}) => {\n const { uiLibrary, formik } = useFormContext();\n const { adapter } = uiLibrary;\n const activeFormik = formikProp || formik;\n\n const fieldValue = getFieldValue(activeFormik, name);\n const fieldError = getFieldError(activeFormik, name);\n const fieldTouched = getFieldTouched(activeFormik, name);\n\n // If DatePicker is not available in adapter, fallback to text input\n const DatePicker = adapter.DatePicker;\n const Input = adapter.Input;\n\n const handleDateChange = (date: unknown) => {\n // Format date based on dateFormat\n let formattedDate = '';\n if (date) {\n if (typeof date === 'string') {\n formattedDate = date;\n } else if (date instanceof Date) {\n // Simple formatting - users should use a proper date library\n const day = String(date.getDate()).padStart(2, '0');\n const month = String(date.getMonth() + 1).padStart(2, '0');\n const year = date.getFullYear();\n formattedDate = `${day}/${month}/${year}`;\n }\n }\n activeFormik.setFieldValue(name, formattedDate);\n };\n\n if (!DatePicker) {\n // Fallback to text input if DatePicker not available\n return (\n <FieldWrapper\n customClass={customClass}\n isChild={isChild}\n noIndent={noIndent}\n hidden={hidden}\n index={index}\n >\n {label && (\n <FieldLabel\n name={name}\n label={label}\n required={required}\n info={info}\n />\n )}\n <div className=\"col-xs-12 col-md-5 col-sm-9 px-0\">\n <Input\n type=\"date\"\n name={name}\n data-testid={dataTestId || `${formatString(name)}-date-picker`}\n value={(fieldValue as string) || ''}\n onChange={(event) => activeFormik.handleChange(event)}\n onBlur={activeFormik.handleBlur}\n disabled={disabled || false}\n error={!!(fieldError && fieldTouched)}\n />\n </div>\n {fieldError && fieldTouched && (\n <FieldError\n name={name}\n error={fieldError}\n touched={fieldTouched}\n dataTestId={dataTestId}\n />\n )}\n {component && <div className=\"mt-3\">{component}</div>}\n </FieldWrapper>\n );\n }\n\n return (\n <FieldWrapper\n customClass={customClass}\n isChild={isChild}\n noIndent={noIndent}\n hidden={hidden}\n index={index}\n >\n {label && (\n <FieldLabel\n name={name}\n label={label}\n required={required}\n info={info}\n />\n )}\n <div className=\"col-xs-12 col-md-5 col-sm-9 px-0\">\n <DatePicker\n value={fieldValue || null}\n onChange={handleDateChange}\n format={dateFormat}\n disabled={disabled}\n data-testid={dataTestId || `${formatString(name)}-date-picker`}\n />\n </div>\n {fieldError && fieldTouched && (\n <FieldError\n name={name}\n error={fieldError}\n touched={fieldTouched}\n dataTestId={dataTestId}\n />\n )}\n {component && <div className=\"mt-3\">{component}</div>}\n </FieldWrapper>\n );\n};\n\n","import React from 'react';\nimport { useFormContext } from '../../context/FormContext';\nimport { getFieldValue, getFieldError, getFieldTouched } from '../../utils/formik.utils';\nimport { FieldWrapper } from '../shared/FieldWrapper';\nimport { FieldLabel } from '../shared/FieldLabel';\nimport { FieldDescription } from '../shared/FieldDescription';\nimport { FieldError } from '../shared/FieldError';\nimport { formatString } from '../../utils/field.utils';\nimport { DatePickerFieldConfig } from '../../types/field.types';\n\n/**\n * DateTimePickerField Component\n * Renders a date-time picker component\n * \n * NOTE: This requires a date-time picker library (e.g., @mui/x-date-pickers)\n * Users must provide a DateTimePicker component in their UI adapter\n */\nexport const DateTimePickerField: React.FC<DatePickerFieldConfig & { type: 'dateTimePicker' }> = ({\n name,\n type,\n label,\n desc,\n info,\n required,\n disabled,\n customClass,\n customComponentClass,\n isChild,\n noIndent,\n hidden,\n views,\n disablePast,\n dataTestId,\n customHandleChange,\n customFormChange,\n component,\n child,\n formik: formikProp,\n index,\n}) => {\n const { uiLibrary, formik } = useFormContext();\n const { adapter } = uiLibrary;\n const FormControl = adapter.FormControl;\n const activeFormik = formikProp || formik;\n\n const fieldValue = getFieldValue(activeFormik, name);\n const fieldError = getFieldError(activeFormik, name);\n const fieldTouched = getFieldTouched(activeFormik, name);\n\n const DateTimePicker = adapter.DateTimePicker;\n const Input = adapter.Input;\n\n const handleDateTimeChange = (date: unknown) => {\n const event = {\n name,\n value: date,\n };\n\n if (customHandleChange) {\n customHandleChange(event as any, type);\n } else if (customFormChange) {\n customFormChange(event as any, type);\n } else {\n activeFormik.handleChange(event as any);\n }\n };\n\n // Determine format based on views\n const format =\n Array.isArray(views) &&\n views.length === 2 &&\n views[0] === 'day' &&\n views[1] === 'hours'\n ? 'DD/MM/YYYY HH:mm:ss'\n : 'DD/MM/YYYY HH:mm';\n\n if (!DateTimePicker) {\n // Fallback to datetime-local input\n return (\n <FieldWrapper\n customClass={customClass}\n isChild={isChild}\n noIndent={noIndent}\n hidden={hidden}\n index={index}\n >\n <FormControl\n className=\"w-100\"\n required={required}\n error={!!(fieldTouched && fieldError)}\n >\n {label && (\n <FieldLabel\n name={name}\n label={label}\n required={required}\n info={info}\n />\n )}\n {desc && <FieldDescription desc={desc} />}\n <Input\n type=\"datetime-local\"\n name={name}\n data-testid={dataTestId || `${formatString(name)}-date-time-picker`}\n value={(fieldValue as string) || ''}\n onChange={(event) => activeFormik.handleChange(event)}\n onBlur={activeFormik.handleBlur}\n disabled={disabled || false}\n error={!!(fieldError && fieldTouched)}\n />\n {fieldError && fieldTouched && (\n <FieldError\n name={name}\n error={fieldError}\n touched={fieldTouched}\n dataTestId={dataTestId}\n />\n )}\n </FormControl>\n </FieldWrapper>\n );\n }\n\n return (\n <>\n <FieldWrapper\n customClass={customClass}\n isChild={isChild}\n noIndent={noIndent}\n hidden={hidden}\n index={index}\n >\n <FormControl\n className=\"w-100\"\n required={required}\n error={!!(fieldTouched && fieldError)}\n >\n {label && (\n <FieldLabel\n name={name}\n label={label}\n required={required}\n info={info}\n />\n )}\n {desc && <FieldDescription desc={desc} />}\n <DateTimePicker\n value={fieldValue || null}\n onChange={handleDateTimeChange}\n format={format}\n disabled={disabled}\n views={views}\n disablePast={disablePast}\n data-testid={dataTestId || `${formatString(name)}-date-time-picker`}\n />\n {fieldError && fieldTouched && (\n <FieldError\n name={name}\n error={fieldError}\n touched={fieldTouched}\n dataTestId={dataTestId}\n />\n )}\n </FormControl>\n </FieldWrapper>\n {child &&\n child.map((childField, childIndex) => {\n // Child rendering would be handled by DynamicForm orchestrator\n return null;\n })}\n {component && (\n <div className={customComponentClass || 'mb-1 mx-1'}>{component}</div>\n )}\n </>\n );\n};\n\n","import React from 'react';\nimport { useFormContext } from '../../context/FormContext';\nimport { IconRenderer } from '../shared/IconRenderer';\nimport { formatString } from '../../utils/field.utils';\nimport { BaseFieldConfig } from '../../types/field.types';\n\ninterface DeleteFieldProps extends BaseFieldConfig {\n type: 'delete';\n handleDeleteAttribute?: (name: string) => void;\n}\n\n/**\n * DeleteField Component\n * Renders a delete button/icon\n */\nexport const DeleteField: React.FC<DeleteFieldProps> = ({\n name,\n type,\n handleDeleteAttribute,\n index,\n}) => {\n const { uiLibrary } = useFormContext();\n const { adapter, icons } = uiLibrary;\n const IconButton = adapter.IconButton;\n const DeleteIcon = icons?.Delete;\n\n const handleClick = () => {\n if (handleDeleteAttribute) {\n handleDeleteAttribute(name);\n }\n };\n\n return (\n <div className=\"col-1\" key={index}>\n {DeleteIcon && IconButton ? (\n <IconButton\n role=\"button\"\n data-testid={`${formatString(name)}-delete-btn`}\n onClick={handleClick}\n className=\"text-danger fs-4 mt-3\"\n >\n <IconRenderer Icon={DeleteIcon} size={20} />\n </IconButton>\n ) : (\n <button\n type=\"button\"\n data-testid={`${formatString(name)}-delete-btn`}\n onClick={handleClick}\n className=\"text-danger fs-4 mt-3\"\n >\n ×\n </button>\n )}\n </div>\n );\n};\n\n","import React from 'react';\nimport { useFormContext } from '../../context/FormContext';\nimport { getFieldValue, getFieldError, getFieldTouched } from '../../utils/formik.utils';\nimport { FieldWrapper } from '../shared/FieldWrapper';\nimport { FieldLabel } from '../shared/FieldLabel';\nimport { FieldDescription } from '../shared/FieldDescription';\nimport { FieldError } from '../shared/FieldError';\nimport { formatString } from '../../utils/field.utils';\nimport { CounterFieldConfig } from '../../types/field.types';\n\n/**\n * CounterField Component\n * Renders a counter component with increment/decrement buttons\n * \n * NOTE: This is a simplified version. Users can provide a custom Counter component\n * via the component prop or extend the adapter\n */\nexport const CounterField: React.FC<CounterFieldConfig> = ({\n name,\n type,\n label,\n desc,\n info,\n required,\n customClass,\n customComponentClass,\n isChild,\n noIndent,\n hidden,\n min,\n max,\n suffix,\n dataTestId,\n customHandleChange,\n customFormChange,\n component,\n child,\n formik: formikProp,\n index,\n}) => {\n const { uiLibrary, formik } = useFormContext();\n const { adapter } = uiLibrary;\n const FormControl = adapter.FormControl;\n const Button = adapter.Button;\n const Input = adapter.Input;\n const activeFormik = formikProp || formik;\n\n const fieldValue = getFieldValue(activeFormik, name);\n const numericValue = Number(fieldValue) || 0;\n const fieldError = getFieldError(activeFormik, name);\n const fieldTouched = getFieldTouched(activeFormik, name);\n\n const handleIncrement = () => {\n const newValue = max !== undefined ? Math.min(numericValue + 1, max) : numericValue + 1;\n const event = {\n name,\n value: newValue,\n };\n if (customHandleChange) {\n customHandleChange(event as any, type);\n } else if (customFormChange) {\n customFormChange(event as any, type);\n } else {\n activeFormik.handleChange(event as any);\n }\n };\n\n const handleDecrement = () => {\n const newValue = min !== undefined ? Math.max(numericValue - 1, min) : numericValue - 1;\n const event = {\n name,\n value: newValue,\n };\n if (customHandleChange) {\n customHandleChange(event as any, type);\n } else if (customFormChange) {\n customFormChange(event as any, type);\n } else {\n activeFormik.handleChange(event as any);\n }\n };\n\n const handleInputChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n const value = Number(event.target.value);\n if (isNaN(value)) return;\n\n let newValue = value;\n if (min !== undefined && value < min) newValue = min;\n if (max !== undefined && value > max) newValue = max;\n\n const syntheticEvent = {\n target: {\n name,\n value: newValue,\n },\n } as unknown as React.ChangeEvent<HTMLInputElement>;\n\n if (customHandleChange) {\n customHandleChange(syntheticEvent, type);\n } else if (customFormChange) {\n customFormChange(syntheticEvent, type);\n } else {\n activeFormik.handleChange(syntheticEvent);\n }\n };\n\n return (\n <>\n <FieldWrapper\n customClass={customClass}\n isChild={isChild}\n noIndent={noIndent}\n hidden={hidden}\n index={index}\n >\n <FormControl\n className=\"w-100\"\n required={required}\n error={!!(fieldTouched && fieldError)}\n >\n {label && (\n <FieldLabel\n name={name}\n label={label}\n required={required}\n info={info}\n />\n )}\n {desc && <FieldDescription desc={desc} />}\n <div className=\"d-flex align-items-center gap-2\">\n <Button\n type=\"button\"\n onClick={handleDecrement}\n disabled={min !== undefined && numericValue <= min}\n >\n −\n </Button>\n <Input\n type=\"number\"\n name={name}\n data-testid={dataTestId || `${formatString(name)}-counter`}\n value={numericValue}\n onChange={handleInputChange}\n onBlur={activeFormik.handleBlur}\n min={min}\n max={max}\n className=\"text-center\"\n style={{ width: '80px' }}\n error={!!(fieldError && fieldTouched)}\n />\n {suffix && <span>{suffix}</span>}\n <Button\n type=\"button\"\n onClick={handleIncrement}\n disabled={max !== undefined && numericValue >= max}\n >\n +\n </Button>\n </div>\n {fieldError && fieldTouched && (\n <FieldError\n name={name}\n error={fieldError}\n touched={fieldTouched}\n dataTestId={dataTestId}\n />\n )}\n </FormControl>\n </FieldWrapper>\n {child &&\n child.map((childField, childIndex) => {\n // Child rendering would be handled by DynamicForm orchestrator\n return null;\n })}\n {component && (\n <div className={customComponentClass || 'mb-1 mx-1'}>{component}</div>\n )}\n </>\n );\n};\n\n","/**\n * Translation hook\n * \n * This is a simple fallback. Users should provide their own translation hook\n * (e.g., from react-i18next) if they need internationalization.\n */\n\nexport const useTranslation = () => {\n return {\n t: (key: string) => {\n // Simple key mapping - users should replace this with their translation library\n const translations: Record<string, string> = {\n 'COMMON:add': 'Add',\n 'COMMON:choose_attribute': 'Choose Attribute',\n 'COMMON:attribute_mapping.no_attributes_added':\n 'No attributes added',\n };\n return translations[key] || key;\n },\n };\n};\n\n","import React from 'react';\nimport { useFormContext } from '../../context/FormContext';\nimport { getFieldValue, getFieldError, getFieldTouched } from '../../utils/formik.utils';\nimport { FieldWrapper } from '../shared/FieldWrapper';\nimport { FieldLabel } from '../shared/FieldLabel';\nimport { FieldDescription } from '../shared/FieldDescription';\nimport { IconRenderer } from '../shared/IconRenderer';\nimport { formatString } from '../../utils/field.utils';\nimport { FieldArrayConfig } from '../../types/field.types';\nimport { useTranslation } from '../../hooks/useTranslation';\n\n/**\n * FieldArrayField Component\n * Renders dynamic array fields (key-value pairs or simple arrays)\n */\nexport const FieldArrayField: React.FC<FieldArrayConfig> = ({\n name,\n type,\n label,\n desc,\n info,\n required,\n showOptional,\n customClass,\n customComponentClass,\n isButtonVisible = true,\n buttonLabel,\n properties,\n component,\n formik: formikProp,\n index,\n}) => {\n const { uiLibrary, formik } = useFormContext();\n const { adapter, icons } = uiLibrary;\n const Input = adapter.Input;\n const Button = adapter.Button;\n const IconButton = adapter.IconButton;\n const activeFormik = formikProp || formik;\n const { t } = useTranslation();\n\n const fieldValue = getFieldValue(activeFormik, name);\n const arrayValue = Array.isArray(fieldValue) ? fieldValue : [];\n const AddIcon = icons?.Add;\n const DeleteIcon = icons?.Delete;\n\n const deleteRow = (indexToDelete: number) => {\n const updatedArray = arrayValue.filter((_, i) => i !== indexToDelete);\n activeFormik.setFieldValue(name, updatedArray);\n };\n\n const addRow = () => {\n if (properties?.isKeyValue) {\n activeFormik.setFieldValue(name, [...arrayValue, { key: '', value: '' }]);\n } else {\n activeFormik.setFieldValue(name, [...arrayValue, '']);\n }\n };\n\n const isKeyValue = properties?.isKeyValue || false;\n\n return (\n <FieldWrapper customClass={customClass} index={index}>\n {label && (\n <FieldLabel\n name={name}\n label={label}\n required={required}\n showOptional={showOptional}\n info={info}\n />\n )}\n {desc && <FieldDescription desc={desc} />}\n {component && (\n <div className={customComponentClass || 'mb-2'}>{component}</div>\n )}\n\n {isKeyValue ? (\n <>\n {arrayValue.map((item: { key?: string; value?: string }, itemIndex: number) => (\n <div key={itemIndex} className=\"d-flex mb-2 gap-2\">\n <div className=\"col\">\n <Input\n name={`${name}[${itemIndex}].key`}\n data-testid={\n formatString(name) + '-key-field'\n }\n className={`form-control font-14 ${\n (activeFormik.touched[name] as unknown as Record<string, unknown>)?.[itemIndex] &&\n (activeFormik.errors[name] as unknown as Record<string, Record<string, string>>)?.[itemIndex]?.key\n ? 'border-danger'\n : ''\n }`}\n value={item.key || ''}\n onChange={(event) => {\n const newValue = [...arrayValue];\n newValue[itemIndex] = {\n ...newValue[itemIndex],\n key: event.target.value,\n };\n activeFormik.setFieldValue(name, newValue);\n }}\n onBlur={activeFormik.handleBlur}\n placeholder={properties?.keyPlaceholder || 'Enter key'}\n autoComplete=\"off\"\n />\n {(() => {\n const errorKey = (activeFormik.errors[name] as unknown as Record<string, Record<string, string>>)?.[itemIndex]?.key;\n const isTouched = (activeFormik.touched[name] as unknown as Record<string, unknown>)?.[itemIndex];\n return isTouched && errorKey ? (\n <small\n data-testid={`${formatString(name)}-key-error`}\n className=\"d-flex text-danger mt-1 text-12\"\n >\n {String(errorKey)}\n </small>\n ) : null;\n })()}\n </div>\n <div className=\"col\">\n <Input\n name={`${name}[${itemIndex}].value`}\n data-testid={formatString(name) + '-value-field'}\n className={`form-control font-14 ${\n (activeFormik.touched[name] as unknown as Record<string, unknown>)?.[itemIndex] &&\n (activeFormik.errors[name] as unknown as Record<string, Record<string, string>>)?.[itemIndex]?.value\n ? 'border-danger'\n : ''\n }`}\n value={item.value || ''}\n onChange={(event) => {\n const newValue = [...arrayValue];\n newValue[itemIndex] = {\n ...newValue[itemIndex],\n value: event.target.value,\n };\n activeFormik.setFieldValue(name, newValue);\n }}\n onBlur={activeFormik.handleBlur}\n placeholder={\n properties?.valuePlaceholder || 'Enter value'\n }\n autoComplete=\"off\"\n />\n {(() => {\n const errorValue = (activeFormik.errors[name] as unknown as Record<string, Record<string, string>>)?.[itemIndex]?.value;\n const isTouched = (activeFormik.touched[name] as unknown as Record<string, unknown>)?.[itemIndex];\n return isTouched && errorValue ? (\n <small\n data-testid={`${formatString(name)}-value-error`}\n className=\"d-flex text-danger mt-1 text-12\"\n >\n {String(errorValue)}\n </small>\n ) : null;\n })()}\n </div>\n {arrayValue.length !== 1 && (\n <div>\n {IconButton && DeleteIcon ? (\n <IconButton\n size=\"small\"\n data-testid={`${formatString(name)}-del-btn`}\n onClick={() => deleteRow(itemIndex)}\n >\n <IconRenderer Icon={DeleteIcon} size={20} className=\"text-danger\" />\n </IconButton>\n ) : (\n <button\n type=\"button\"\n data-testid={`${formatString(name)}-del-btn`}\n onClick={() => deleteRow(itemIndex)}\n >\n ×\n </button>\n )}\n </div>\n )}\n </div>\n ))}\n {isButtonVisible && (\n <div>\n <Button\n variant=\"text\"\n className=\"text-primary text-capitalize text-start\"\n startIcon={AddIcon ? <IconRenderer Icon={AddIcon} size={16} /> : '+'}\n data-testid={`${formatString(name)}-add-btn`}\n onClick={addRow}\n >\n {buttonLabel || t('COMMON:add')}\n </Button>\n </div>\n )}\n </>\n ) : (\n <>\n {arrayValue.map((item: string, itemIndex: number) => (\n <div key={itemIndex} className=\"d-flex mb-2\">\n <div className=\"col\">\n <Input\n name={`${name}[${itemIndex}]`}\n data-testid={formatString(name) + '-field'}\n className={`form-control font-14 ${\n (activeFormik.touched[name] as unknown as unknown[])?.[itemIndex] &&\n (activeFormik.errors[name] as unknown as unknown[])?.[itemIndex]\n ? 'border-danger'\n : ''\n }`}\n value={item}\n onChange={(event) => {\n const newValue = [...arrayValue];\n newValue[itemIndex] = event.target.value;\n activeFormik.setFieldValue(name, newValue);\n }}\n onBlur={activeFormik.handleBlur}\n autoComplete=\"off\"\n />\n {(() => {\n const error = (activeFormik.errors[name] as unknown as unknown[])?.[itemIndex];\n const isTouched = (activeFormik.touched[name] as unknown as unknown[])?.[itemIndex];\n return isTouched && error ? (\n <small\n data-testid={`${formatString(name)}-error`}\n className=\"d-flex text-danger mt-1 text-12\"\n >\n {String(error)}\n </small>\n ) : null;\n })()}\n </div>\n {arrayValue.length !== 1 && (\n <div>\n {IconButton && DeleteIcon ? (\n <IconButton\n size=\"small\"\n data-testid={`${formatString(name)}-del-btn`}\n onClick={() => deleteRow(itemIndex)}\n >\n <IconRenderer Icon={DeleteIcon} size={20} className=\"text-danger\" />\n </IconButton>\n ) : (\n <button\n type=\"button\"\n data-testid={`${formatString(name)}-del-btn`}\n onClick={() => deleteRow(itemIndex)}\n >\n ×\n </button>\n )}\n </div>\n )}\n </div>\n ))}\n {isButtonVisible && (\n <div>\n <Button\n variant=\"text\"\n className=\"text-primary text-capitalize text-start\"\n startIcon={AddIcon ? <IconRenderer Icon={AddIcon} size={16} /> : '+'}\n data-testid={`${formatString(name)}-add-btn`}\n onClick={addRow}\n >\n {buttonLabel || t('COMMON:add')}\n </Button>\n </div>\n )}\n </>\n )}\n </FieldWrapper>\n );\n};\n\n","import React from 'react';\nimport { useFormContext } from '../../context/FormContext';\nimport { getNestedValueNew, getNestedProperty, getFieldValue } from '../../utils/formik.utils';\nimport { FieldWrapper } from '../shared/FieldWrapper';\nimport { FieldLabel } from '../shared/FieldLabel';\nimport { FieldDescription } from '../shared/FieldDescription';\nimport { IconRenderer } from '../shared/IconRenderer';\nimport { formatString } from '../../utils/field.utils';\nimport { AttributeFieldConfig, FieldConfig } from '../../types/field.types';\nimport { useTranslation } from '../../hooks/useTranslation';\n\n// Import field components for rendering properties\nimport { InputField } from './InputField';\nimport { DropdownField } from './DropdownField';\nimport { CheckboxField } from './CheckboxField';\nimport { RadioField } from './RadioField';\nimport { TextareaField } from './TextareaField';\nimport { FileUploadField } from './FileUploadField';\nimport { MultiSelectField } from './MultiSelectField';\nimport { SingleSelectField } from './SingleSelectField';\nimport { ComponentField } from './ComponentField';\nimport { LinkField } from './LinkField';\n\n/**\n * Field component mapping for AttributeField properties\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst PROPERTY_FIELD_MAP: Record<string, React.ComponentType<any>> = {\n inputfield: InputField,\n dropdown: DropdownField,\n checkbox: CheckboxField,\n radiobtn: RadioField,\n textarea: TextareaField,\n fileupload: FileUploadField,\n multiSelect: MultiSelectField,\n singleSelect: SingleSelectField,\n component: ComponentField,\n link: LinkField,\n};\n\n/**\n * AttributeField Component\n * Renders complex nested attribute mapping fields\n */\nexport const AttributeField: React.FC<AttributeFieldConfig & {\n setFieldValuesRecursive?: (child: FieldConfig[], parentValue?: string) => void;\n customFormChange?: (event: any, type: string) => void;\n}> = ({\n name,\n type,\n label,\n desc,\n required,\n customClass,\n customAttrClass,\n showIllustration = true,\n showAddNewFieldBtn = true,\n addNewFieldBtnLabel,\n properties = [],\n addNewField = {},\n component,\n formik: formikProp,\n minimumValuePresent = false,\n index,\n setFieldValuesRecursive,\n customFormChange,\n}) => {\n const { uiLibrary, formik } = useFormContext();\n const { adapter, icons } = uiLibrary;\n const Button = adapter.Button;\n const IconButton = adapter.IconButton;\n const activeFormik = formikProp || formik;\n const { t } = useTranslation();\n\n const AddIcon = icons?.Add;\n const DeleteIcon = icons?.Delete;\n\n const attributeValues = getNestedValueNew(activeFormik.values, name);\n const attributeValuesAlt = getNestedProperty(activeFormik.values, name);\n const valuesArray = Array.isArray(attributeValues)\n ? attributeValues\n : Array.isArray(attributeValuesAlt)\n ? attributeValuesAlt\n : [];\n\n const deleteRow = (indexToDelete: number) => {\n const currentValues = getNestedProperty(activeFormik.values, name);\n const valuesArray = Array.isArray(currentValues) ? currentValues : [];\n const updatedArray = valuesArray.filter((_, i) => i !== indexToDelete);\n activeFormik.setFieldValue(name, updatedArray);\n };\n\n const addNewAttribute = () => {\n const currentValues = getNestedProperty(activeFormik.values, name);\n const valuesArray = Array.isArray(currentValues) ? currentValues : [];\n activeFormik.setFieldValue(name, [...valuesArray, addNewField]);\n };\n\n const hasNoAttributes =\n valuesArray.length === 0 ||\n (typeof valuesArray === 'object' && Object.keys(valuesArray).length === 0);\n\n /**\n * Render a property field within AttributeField\n */\n const renderPropertyField = (property: FieldConfig, propIndex: number) => {\n const PropertyComponent = PROPERTY_FIELD_MAP[property.type];\n if (!PropertyComponent) {\n console.warn(`Unknown property type in AttributeField: ${property.type}`);\n return null;\n }\n\n const propertyProps = {\n ...property,\n formik: activeFormik,\n index: propIndex,\n setFieldValuesRecursive,\n customFormChange,\n };\n\n return <PropertyComponent key={propIndex} {...propertyProps} />;\n };\n\n return (\n <FieldWrapper customClass={customClass} index={index}>\n {label && (\n <FieldLabel\n name={name}\n label={label}\n required={required}\n />\n )}\n {desc && <FieldDescription desc={desc} />}\n {component && <div className=\"mt-3\">{component}</div>}\n\n {showIllustration && hasNoAttributes ? (\n <div className=\"d-flex flex-column justify-content-center align-items-center gap-4 pt-4\">\n {/* Placeholder for illustration image */}\n <div\n data-testid=\"no-attr-img\"\n style={{\n width: '200px',\n height: '200px',\n backgroundColor: '#f0f0f0',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n }}\n >\n No Image\n </div>\n <h6 data-testid=\"no-attr-text\" className=\"mb-4\">\n {t('COMMON:attribute_mapping.no_attributes_added')}\n </h6>\n </div>\n ) : (\n valuesArray.map((item: Record<string, unknown>, itemIndex: number) => {\n // Transform properties with nested names\n const transformedProperties = properties.map((property) => ({\n ...property,\n name: `${name}[${itemIndex}].${property.name}`,\n child: property.child?.map((childItem) => ({\n ...childItem,\n name: `${name}[${itemIndex}].${childItem.name}`,\n })),\n }));\n\n return (\n <div\n key={itemIndex}\n className={customAttrClass || 'd-flex flex-row gap-3 mb-3'}\n >\n {/* Render properties as fields */}\n {transformedProperties.map((property, propIndex) => {\n return (\n <React.Fragment key={propIndex}>\n {renderPropertyField(property, propIndex)}\n </React.Fragment>\n );\n })}\n\n {(minimumValuePresent\n ? valuesArray.length > 1\n : true) && (\n <div className=\"col-1 mt-4 pt-1\">\n <div className={minimumValuePresent ? 'mt-0' : ''}>\n {IconButton && DeleteIcon ? (\n <IconButton\n size=\"small\"\n onClick={() => deleteRow(itemIndex)}\n data-testid={`${formatString(name)}-delete-icon`}\n >\n <IconRenderer Icon={DeleteIcon} size={20} className=\"text-danger\" />\n </IconButton>\n ) : (\n <button\n type=\"button\"\n onClick={() => deleteRow(itemIndex)}\n data-testid={`${formatString(name)}-delete-icon`}\n >\n ×\n </button>\n )}\n </div>\n </div>\n )}\n </div>\n );\n })\n )}\n\n {showAddNewFieldBtn && (\n <div\n className={\n valuesArray.length\n ? ''\n : `d-flex ${\n showIllustration\n ? 'justify-content-center'\n : 'justify-content-start'\n } align-items-center`\n }\n >\n <Button\n variant=\"text\"\n className=\"text-primary text-capitalize text-start\"\n startIcon={AddIcon ? <IconRenderer Icon={AddIcon} size={16} /> : '+'}\n data-testid=\"add-attr-btn\"\n onClick={addNewAttribute}\n >\n {addNewFieldBtnLabel ?? 'Add'}\n </Button>\n </div>\n )}\n </FieldWrapper>\n );\n};\n","import React, { useState, useRef, useEffect, useCallback } from 'react';\nimport { useFormContext } from '../../context/FormContext';\nimport { getFieldValue, getFieldError, getFieldTouched, getNestedProperty } from '../../utils/formik.utils';\nimport { FieldWrapper } from '../shared/FieldWrapper';\nimport { FieldLabel } from '../shared/FieldLabel';\nimport { FieldDescription } from '../shared/FieldDescription';\nimport { FieldError } from '../shared/FieldError';\nimport { IconRenderer } from '../shared/IconRenderer';\nimport { formatString } from '../../utils/field.utils';\nimport { EditableDivFieldConfig } from '../../types/field.types';\nimport { useTranslation } from '../../hooks/useTranslation';\n\n/**\n * EditableDivField Component\n * Renders a contentEditable div with field insertion capabilities\n * \n * This is a complex component that allows users to insert field references\n * (like {{fieldName}}) into editable text content\n */\nexport const EditableDivField: React.FC<EditableDivFieldConfig> = ({\n name,\n type,\n label,\n placeholder,\n desc,\n info,\n required,\n readonly,\n customClass,\n isCopyEnable,\n isVisibleEnable,\n dataTestId,\n availableFields = [],\n customHandleChange,\n customFormChange,\n component,\n showCustomError,\n formik: formikProp,\n index,\n}) => {\n const { uiLibrary, formik } = useFormContext();\n const { adapter, icons } = uiLibrary;\n const Box = adapter.Box;\n const Popover = adapter.Popover;\n const Paper = adapter.Paper;\n const MenuItem = adapter.MenuItem;\n const Typography = adapter.Typography;\n const IconButton = adapter.IconButton;\n const activeFormik = formikProp || formik;\n const { t } = useTranslation();\n\n const [showPlaceholder, setShowPlaceholder] = useState<Record<string, boolean>>({});\n const [anchorElEditableDiv, setAnchorElEditableDiv] = useState<HTMLElement | null>(null);\n const [activeSpan, setActiveSpan] = useState<HTMLElement | null>(null);\n const [prevKey, setPrevKey] = useState('');\n const [isTyping, setIsTyping] = useState(false);\n const editorRefEditableDiv = useRef<HTMLDivElement>(null);\n const fieldTimeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const isFieldFocusedRef = useRef(false);\n\n const fieldValue = getFieldValue(activeFormik, name);\n const fieldError = getFieldError(activeFormik, name);\n const fieldTouched = getFieldTouched(activeFormik, name);\n const CopyIcon = icons?.Copy;\n const VisibilityIcon = icons?.Visibility;\n const VisibilityOffIcon = icons?.VisibilityOff;\n\n const checkPlaceholderVisibility = useCallback((content: string, fieldName: string) => {\n const isEmpty = !content || content.trim() === '' || content === '\\u200B';\n setShowPlaceholder((prev) => ({\n ...prev,\n [fieldName]: isEmpty,\n }));\n }, []);\n\n const setCursorToEnd = useCallback(() => {\n if (editorRefEditableDiv.current) {\n const editor = editorRefEditableDiv.current;\n if (editor.childNodes.length > 0) {\n const range = document.createRange();\n const selection = window.getSelection();\n if (selection) {\n range.selectNodeContents(editor);\n range.collapse(false);\n selection.removeAllRanges();\n selection.addRange(range);\n }\n editor.focus();\n } else {\n editor.focus();\n }\n }\n }, []);\n\n const setEditorContentWithSpans = useCallback((expression: string, fields: typeof availableFields) => {\n if (!editorRefEditableDiv.current) return;\n const editor = editorRefEditableDiv.current;\n editor.innerHTML = '';\n const parts = expression.split(/(\\{\\{[^}]+\\}\\}|\\$\\{[^}]+\\})/);\n\n parts.forEach((part) => {\n let key: string | null = null;\n if (part.startsWith('{{') && part.endsWith('}}')) {\n key = part.slice(2, -2);\n }\n\n if (key) {\n const field = fields.find((f) => f.key === key);\n if (field) {\n const span = document.createElement('span');\n span.className = 'field-span';\n span.contentEditable = 'false';\n span.style.cursor = 'pointer';\n span.innerText = `{{${field.key}}}`;\n editor.appendChild(span);\n } else {\n editor.appendChild(document.createTextNode(part));\n }\n } else if (part) {\n editor.appendChild(document.createTextNode(part));\n }\n });\n }, [availableFields]);\n\n const handleKeyDown = useCallback((e: React.KeyboardEvent) => {\n if (e.key === '{' && prevKey === '{') {\n e.preventDefault();\n return;\n }\n\n if (e.key === 'Backspace') {\n const sel = window.getSelection();\n if (sel && sel.rangeCount > 0) {\n const range = sel.getRangeAt(0);\n const { startContainer, startOffset } = range;\n\n if (\n startContainer.nodeType === Node.TEXT_NODE &&\n startOffset === 0 &&\n startContainer.previousSibling &&\n (startContainer.previousSibling as Element).classList?.contains('field-span')\n ) {\n e.preventDefault();\n const prevSibling = startContainer.previousSibling;\n if (prevSibling.parentNode) {\n prevSibling.parentNode.removeChild(prevSibling);\n }\n return;\n }\n\n if (\n startContainer.nodeType === Node.ELEMENT_NODE &&\n (startContainer as Element).classList?.contains('field-span')\n ) {\n e.preventDefault();\n if (startContainer.parentNode) {\n startContainer.parentNode.removeChild(startContainer);\n }\n }\n }\n }\n }, [prevKey]);\n\n const handleKeyUp = useCallback((e: React.KeyboardEvent) => {\n const currentKey = e.key;\n if (currentKey === '{' && prevKey === '{' && !e.defaultPrevented) {\n const selection = window.getSelection();\n if (selection && selection.rangeCount > 0) {\n const range = selection.getRangeAt(0);\n const { startContainer, startOffset } = range;\n\n if (startContainer.nodeType === Node.TEXT_NODE) {\n const textContent = startContainer.textContent || '';\n const beforeCursor = textContent.substring(0, startOffset);\n if (beforeCursor.endsWith('{')) {\n if (editorRefEditableDiv.current) {\n setAnchorElEditableDiv(editorRefEditableDiv.current);\n }\n }\n }\n }\n }\n setPrevKey(currentKey);\n }, [prevKey]);\n\n const handleFieldSelect = useCallback((item: { key: string; label: string }) => {\n if (!editorRefEditableDiv.current) return;\n\n const newSpan = document.createElement('span');\n newSpan.className = 'field-span';\n newSpan.contentEditable = 'false';\n newSpan.style.cursor = 'pointer';\n newSpan.innerText = `{{${item.key}}}`;\n\n if (activeSpan) {\n activeSpan.replaceWith(newSpan);\n const spaceNode = document.createTextNode('\\u200B');\n newSpan.after(spaceNode);\n\n if (spaceNode.parentNode) {\n const range = document.createRange();\n range.setStartAfter(spaceNode);\n range.setEndAfter(spaceNode);\n const sel = window.getSelection();\n if (sel) {\n sel.removeAllRanges();\n sel.addRange(range);\n }\n }\n setActiveSpan(null);\n } else {\n const selection = window.getSelection();\n if (selection && selection.rangeCount > 0) {\n const range = selection.getRangeAt(0);\n range.deleteContents();\n range.insertNode(newSpan);\n const spaceNode = document.createTextNode('\\u200B');\n newSpan.after(spaceNode);\n\n const newRange = document.createRange();\n newRange.setStartAfter(spaceNode);\n newRange.setEndAfter(spaceNode);\n const sel = window.getSelection();\n if (sel) {\n sel.removeAllRanges();\n sel.addRange(newRange);\n }\n }\n }\n\n const content = editorRefEditableDiv.current.innerText;\n if (customHandleChange) {\n customHandleChange(\n { target: { name, value: content } } as any,\n 'editablediv'\n );\n } else if (customFormChange) {\n customFormChange(\n { target: { name, value: content } } as any,\n 'editablediv'\n );\n } else {\n activeFormik.setFieldValue(name, content);\n }\n\n setAnchorElEditableDiv(null);\n setTimeout(() => {\n setCursorToEnd();\n }, 0);\n }, [activeSpan, name, customHandleChange, customFormChange, activeFormik, setCursorToEnd]);\n\n useEffect(() => {\n if (editorRefEditableDiv.current && activeFormik.values && !isTyping && availableFields.length > 0) {\n const fieldValue = getNestedProperty(activeFormik.values, name);\n checkPlaceholderVisibility(String(fieldValue || ''), name);\n setTimeout(() => {\n setEditorContentWithSpans(String(fieldValue || ''), availableFields);\n }, 0);\n }\n }, [activeFormik.values, name, isTyping, availableFields, checkPlaceholderVisibility, setEditorContentWithSpans]);\n\n useEffect(() => {\n return () => {\n if (fieldTimeoutRef.current) {\n clearTimeout(fieldTimeoutRef.current);\n }\n };\n }, []);\n\n return (\n <FieldWrapper customClass={customClass} index={index}>\n {label && (\n <FieldLabel\n name={name}\n label={label}\n required={required}\n info={info}\n />\n )}\n {desc && <FieldDescription desc={desc} />}\n <div className={`input-group ${isCopyEnable || isVisibleEnable ? '' : 'rounded'}`}>\n <div className=\"d-flex w-100 flex-wrap\">\n <Box className=\"w-100 d-flex flex-column align-items-start position-relative\">\n <Box\n contentEditable={!readonly}\n ref={editorRefEditableDiv}\n id={name}\n onKeyDown={handleKeyDown}\n onKeyUp={handleKeyUp}\n onInput={(event: React.FormEvent<HTMLDivElement>) => {\n const content = (event.target as HTMLElement).innerText;\n setIsTyping(true);\n checkPlaceholderVisibility(content, name);\n\n if (fieldTimeoutRef.current) {\n clearTimeout(fieldTimeoutRef.current);\n }\n\n if (isFieldFocusedRef.current) {\n fieldTimeoutRef.current = setTimeout(() => {\n setIsTyping(false);\n }, 9000);\n }\n\n if (customHandleChange) {\n customHandleChange(\n { target: { name, value: content } } as any,\n type\n );\n } else if (customFormChange) {\n customFormChange(\n { target: { name, value: content } } as any,\n type\n );\n } else {\n activeFormik.setFieldValue(name, content);\n }\n }}\n onPaste={(e: React.ClipboardEvent<HTMLDivElement>) => {\n e.preventDefault();\n const text = (e.clipboardData || (window as Window & { clipboardData?: DataTransfer }).clipboardData)?.getData('text/plain') || '';\n const selection = window.getSelection();\n if (selection && selection.rangeCount > 0) {\n const range = selection.getRangeAt(0);\n range.deleteContents();\n range.insertNode(document.createTextNode(text));\n range.collapse(false);\n selection.removeAllRanges();\n selection.addRange(range);\n }\n const editor = e.target as HTMLElement;\n const content = editor.innerText;\n checkPlaceholderVisibility(content, name);\n\n if (availableFields.length > 0) {\n setTimeout(() => {\n setEditorContentWithSpans(content, availableFields);\n setCursorToEnd();\n }, 0);\n }\n\n if (customHandleChange) {\n customHandleChange(\n { target: { name, value: content } } as any,\n type\n );\n } else if (customFormChange) {\n customFormChange(\n { target: { name, value: content } } as any,\n type\n );\n } else {\n activeFormik.setFieldValue(name, content);\n }\n }}\n onClick={(e: React.MouseEvent<HTMLDivElement>) => {\n const target = e.target as HTMLElement;\n if (target.classList?.contains('field-span')) {\n setActiveSpan(target);\n setAnchorElEditableDiv(target);\n setIsTyping(true);\n }\n }}\n suppressContentEditableWarning\n data-testid={dataTestId || `${formatString(name)}-editable-div`}\n className={`form-control ${\n isCopyEnable || isVisibleEnable\n ? 'border border-end-0'\n : 'rounded'\n } ${fieldError && fieldTouched ? 'border-danger' : ''}`}\n style={{\n borderRadius: '8px',\n border: '1px solid #dee2e6',\n padding: '6px 12px',\n display: 'inline-block',\n flexGrow: 1,\n minHeight: '37px',\n }}\n onFocus={() => {\n isFieldFocusedRef.current = true;\n setIsTyping(true);\n const content = editorRefEditableDiv.current?.innerText || '';\n checkPlaceholderVisibility(content, name);\n }}\n onBlur={(event: React.FocusEvent<HTMLDivElement>) => {\n isFieldFocusedRef.current = false;\n if (fieldTimeoutRef.current) {\n clearTimeout(fieldTimeoutRef.current);\n fieldTimeoutRef.current = null;\n }\n const content = (event.target as HTMLElement).innerText;\n checkPlaceholderVisibility(content, name);\n activeFormik.setFieldValue(name, content);\n // Create synthetic event for Formik\n const syntheticEvent = {\n ...event,\n target: { name, value: content },\n } as unknown as React.FocusEvent<HTMLInputElement>;\n activeFormik.handleBlur(syntheticEvent);\n }}\n readOnly={readonly || false}\n />\n {showPlaceholder[name] && placeholder && (\n <Box\n sx={{\n position: 'absolute',\n top: '8px',\n left: '12px',\n color: '#acadaf',\n pointerEvents: 'none',\n fontSize: '14px',\n zIndex: 1,\n }}\n >\n {placeholder}\n </Box>\n )}\n </Box>\n <Popover\n open={Boolean(anchorElEditableDiv)}\n anchorEl={anchorElEditableDiv}\n onClose={() => setAnchorElEditableDiv(null)}\n anchorOrigin={{ vertical: 'bottom', horizontal: 'left' }}\n data-testid={`${formatString(name)}-attribute-popover`}\n >\n <Paper\n elevation={3}\n className=\"attribute-popover\"\n >\n <Box\n style={{\n padding: '12px 16px',\n backgroundColor: '#f8f9fa',\n borderBottom: '1px solid #e0e0e0',\n }}\n >\n <Typography variant=\"subtitle2\" color=\"text.secondary\">\n {t('COMMON:choose_attribute')}\n </Typography>\n </Box>\n {availableFields.map((item) => (\n <MenuItem\n key={item.key}\n data-testid={`${formatString(name)}-attribute-${item.key}`}\n onClick={() => handleFieldSelect(item)}\n className=\"d-flex justify-content-between align-items-center\"\n >\n <Typography>{item.label}</Typography>\n <Typography color=\"text.secondary\" className=\"text-12\">\n {item.key}\n </Typography>\n </MenuItem>\n ))}\n </Paper>\n </Popover>\n </div>\n {isVisibleEnable && VisibilityIcon && VisibilityOffIcon && (\n <button\n className={`z-0 btn btn-outline-secondary border-0 rounded-0 border-top border-bottom ${\n !isCopyEnable ? 'border-end rounded-end' : ''\n } ${fieldError && fieldTouched ? 'border-danger' : ''}`}\n type=\"button\"\n data-testid={`${formatString(name)}-visible-btn`}\n onClick={() => {}}\n >\n <IconRenderer Icon={VisibilityIcon} size={16} />\n </button>\n )}\n {isCopyEnable && CopyIcon && (\n <button\n className={`z-0 btn btn-outline-secondary border border-start-0 border-end rounded-end ${\n fieldError && fieldTouched ? 'border-danger' : ''\n }`}\n type=\"button\"\n data-testid={`${formatString(name)}-copy-btn`}\n aria-label=\"copy\"\n onClick={() => {\n if (editorRefEditableDiv.current) {\n const text = editorRefEditableDiv.current.innerText;\n navigator.clipboard.writeText(text);\n }\n }}\n >\n <IconRenderer Icon={CopyIcon} size={16} />\n </button>\n )}\n {component && <div>{component}</div>}\n </div>\n {(showCustomError || (fieldError && fieldTouched)) && (\n <FieldError\n name={name}\n error={fieldError}\n touched={fieldTouched}\n showCustomError={showCustomError}\n dataTestId={dataTestId}\n />\n )}\n </FieldWrapper>\n );\n};\n\n","import React, { useState, useEffect, useCallback } from 'react';\nimport { FormikProps } from 'formik';\nimport { DynamicFormProps, FieldConfig } from '../types/field.types';\nimport { FormProvider } from '../context/FormContext';\nimport { defaultAdapter } from '../adapters';\nimport { defaultIcons } from '../icons/default.icons';\nimport { getFieldValue, getNestedProperty } from '../utils/formik.utils';\n\n// Import all field components\nimport { EmptyField } from './fields/EmptyField';\nimport { TextField } from './fields/TextField';\nimport { LinkField } from './fields/LinkField';\nimport { ComponentField } from './fields/ComponentField';\nimport { CustomField } from './fields/CustomField';\nimport { InputField } from './fields/InputField';\nimport { TextareaField } from './fields/TextareaField';\nimport { CheckboxField } from './fields/CheckboxField';\nimport { RadioField } from './fields/RadioField';\nimport { DropdownField } from './fields/DropdownField';\nimport { ToggleField } from './fields/ToggleField';\nimport { FileUploadField } from './fields/FileUploadField';\nimport { SingleSelectField } from './fields/SingleSelectField';\nimport { MultiSelectField } from './fields/MultiSelectField';\nimport { AsyncSelectField } from './fields/AsyncSelectField';\nimport { DatePickerField } from './fields/DatePickerField';\nimport { DateTimePickerField } from './fields/DateTimePickerField';\nimport { DeleteField } from './fields/DeleteField';\nimport { CounterField } from './fields/CounterField';\nimport { FieldArrayField } from './fields/FieldArrayField';\nimport { AttributeField } from './fields/AttributeField';\nimport { EditableDivField } from './fields/EditableDivField';\n\n/**\n * Field component mapping\n * Maps field types to their corresponding components\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst FIELD_COMPONENT_MAP: Record<string, React.ComponentType<any>> = {\n emptyField: EmptyField,\n text: TextField,\n link: LinkField,\n component: ComponentField,\n custom: CustomField,\n inputfield: InputField,\n textarea: TextareaField,\n checkbox: CheckboxField,\n radiobtn: RadioField,\n dropdown: DropdownField,\n toggle: ToggleField,\n fileupload: FileUploadField,\n singleSelect: SingleSelectField,\n multiSelect: MultiSelectField,\n asyncSelect: AsyncSelectField,\n datePicker: DatePickerField,\n dateTimePicker: DateTimePickerField,\n delete: DeleteField,\n counter: CounterField,\n fieldArray: FieldArrayField,\n attribute: AttributeField,\n editablediv: EditableDivField,\n};\n\n/**\n * DynamicForm Component\n * \n * Orchestrator component that renders fields dynamically based on configuration.\n * Supports conditional field rendering, child fields, and all production features.\n */\nexport const DynamicForm = <T extends Record<string, unknown>>({\n fields,\n formik,\n firstInitialValues,\n fieldCount,\n attributeFields,\n customFormChange,\n RadiusTab = false,\n uiLibrary,\n}: DynamicFormProps<T> & {\n formik: FormikProps<T>;\n uiLibrary?: {\n adapter: typeof defaultAdapter;\n icons?: typeof defaultIcons;\n name: string;\n };\n}) => {\n const [formFields, setFormFields] = useState<FieldConfig[]>([]);\n\n // Use provided UI library or default\n const activeUILibrary = uiLibrary || {\n adapter: defaultAdapter,\n icons: defaultIcons,\n name: 'default',\n };\n\n // Filter out false values (conditional fields)\n useEffect(() => {\n const newFormFields = fields?.filter((item) => item !== false) as FieldConfig[];\n setFormFields(newFormFields);\n }, [fields]);\n\n /**\n * Recursively set field values for child fields\n */\n const setFieldValuesRecursive = useCallback(\n (child: FieldConfig[] | undefined, parentValue: string | null = null) => {\n if (!child) return;\n\n child.forEach((c) => {\n if (RadiusTab) {\n if (!c.hidden || parentValue === c.hiddenlabel) {\n // Check if field has values property (for select fields)\n const hasValues = 'values' in c && c.values;\n const fieldValue =\n hasValues && typeof c.values === 'object' && !Array.isArray(c.values) && Object.keys(c.values).length > 0\n ? Object.keys(c.values as Record<string, unknown>)[0]\n : firstInitialValues\n ? getNestedProperty(firstInitialValues as Record<string, unknown>, c.name)\n : '';\n\n formik.setFieldValue(c.name, fieldValue);\n }\n } else {\n const value = firstInitialValues\n ? getNestedProperty(firstInitialValues as Record<string, unknown>, c.name)\n : undefined;\n formik.setFieldValue(c.name, value === undefined ? '' : value);\n formik.setFieldTouched(c.name, false);\n }\n\n if (c.child) {\n setFieldValuesRecursive(c.child, parentValue);\n }\n });\n },\n [formik, firstInitialValues, RadiusTab]\n );\n\n /**\n * Render a single field component\n */\n const renderField = (\n field: FieldConfig,\n index: number | string,\n isChild = false\n ): React.ReactNode => {\n if (!field) return null;\n\n // Check if field should be hidden\n if (field.shouldHide && field.shouldHide({ \n formik: formik as FormikProps<Record<string, unknown>>, \n name: field.name, \n index: typeof index === 'number' ? index : undefined \n })) {\n return null;\n }\n\n // Get the component for this field type\n const FieldComponent = FIELD_COMPONENT_MAP[field.type];\n if (!FieldComponent) {\n console.warn(`Unknown field type: ${field.type}`);\n return null;\n }\n\n // Prepare props for the field component\n const fieldProps = {\n ...field,\n formik,\n index,\n isChild,\n setFieldValuesRecursive,\n customFormChange,\n };\n\n // Render the field component\n const fieldElement = <FieldComponent key={`${field.name}-${index}`} {...fieldProps} />;\n\n // Handle child fields for conditional rendering\n if (field.child && field.child.length > 0) {\n const fieldValue = getFieldValue(formik, field.name);\n const valuePath = getNestedProperty(formik.values, field.name);\n\n return (\n <React.Fragment key={`${field.name}-${index}`}>\n {fieldElement}\n {field.child.map((childField, childIndex) => {\n // Check if child should be shown based on hiddenlabel or targetType\n const shouldShowChild =\n fieldValue === childField.hiddenlabel ||\n valuePath === childField.hiddenlabel ||\n (field.type === 'checkbox' && fieldValue) ||\n (field.type === 'radiobtn' &&\n (fieldValue === childField.targetType || \n String(fieldValue) === String(childField.targetType))) ||\n (field.type === 'attribute' && true); // Attribute children are always shown\n\n if (shouldShowChild) {\n return renderField(\n childField,\n `child-${childField.name}-${childIndex}`,\n true\n );\n }\n return null;\n })}\n </React.Fragment>\n );\n }\n\n // AttributeField handles its own properties rendering internally\n // No need to render properties here as AttributeField component does it\n\n return fieldElement;\n };\n\n /**\n * Group fields into rows (for attributeFields layout)\n */\n const groupFormFieldsIntoRows = () => {\n if (!fieldCount) return [];\n const rows = [];\n for (let i = 0; i < fieldCount; i += 1) {\n const startIdx = i * 3;\n const endIdx = startIdx + 3;\n const rowFields = formFields.slice(startIdx, endIdx);\n rows.push(rowFields);\n }\n return rows;\n };\n\n // Render fields\n if (attributeFields !== undefined) {\n // Grouped layout for attribute fields\n return (\n <FormProvider uiLibrary={activeUILibrary} formik={formik as FormikProps<Record<string, unknown>>}>\n <div className=\"row\">\n {groupFormFieldsIntoRows().map((rowFields, rowIndex) => (\n <div key={rowIndex} className=\"row\">\n {rowFields.map((fieldValue, index) => {\n const uniqueKey = `${fieldValue?.label || fieldValue?.name}-${index}`;\n return (\n <React.Fragment key={uniqueKey}>\n {renderField(fieldValue, uniqueKey)}\n </React.Fragment>\n );\n })}\n </div>\n ))}\n </div>\n </FormProvider>\n );\n }\n\n // Standard layout\n return (\n <FormProvider uiLibrary={activeUILibrary} formik={formik as FormikProps<Record<string, unknown>>}>\n <div className=\"row mx-0\">\n {formFields.map((fieldValue, index) => {\n const uniqueKey = `${fieldValue?.label || fieldValue?.name}-${index}`;\n return renderField(fieldValue, uniqueKey);\n })}\n </div>\n </FormProvider>\n );\n};\n","/**\n * Material-UI Icons Example\n * \n * This shows how to use Material-UI icons with the library.\n * Users need to install @mui/icons-material as a peer dependency.\n * \n * Usage:\n * import { muiIcons } from 'dynamic-formik-form/icons/mui';\n * \n * <DynamicForm\n * uiLibrary={{ adapter: muiAdapter, icons: muiIcons, name: 'mui' }}\n * ...\n * />\n */\n\nimport { IconLibrary } from '../types/ui-library.types';\n\n/**\n * Material-UI Icons\n * \n * NOTE: This is a template. In actual usage, you would:\n * 1. Install @mui/icons-material as a peer dependency\n * 2. Import actual MUI icons\n * 3. Export them as IconLibrary\n * \n * Example:\n * import {\n * Info as InfoIcon,\n * Visibility as VisibilityIcon,\n * VisibilityOff as VisibilityOffIcon,\n * ContentCopy as CopyIcon,\n * AddCircleOutline as AddIcon,\n * DeleteOutline as DeleteIcon,\n * } from '@mui/icons-material';\n * \n * export const muiIcons: IconLibrary = {\n * Info: InfoIcon,\n * Visibility: VisibilityIcon,\n * VisibilityOff: VisibilityOffIcon,\n * Copy: CopyIcon,\n * Add: AddIcon,\n * Delete: DeleteIcon,\n * };\n */\n\n// Placeholder - users should replace with actual MUI icons\nexport const createMUIIcons = (\n Info: React.ComponentType<any>,\n Visibility: React.ComponentType<any>,\n VisibilityOff: React.ComponentType<any>,\n Copy: React.ComponentType<any>,\n Add: React.ComponentType<any>,\n Delete: React.ComponentType<any>\n): IconLibrary => {\n return {\n Info,\n Visibility,\n VisibilityOff,\n Copy,\n Add,\n Delete,\n };\n};\n\n","/**\n * Bootstrap Icons Example\n * \n * This shows how to use Bootstrap Icons with the library.\n * Users can use react-bootstrap-icons or bootstrap-icons package.\n * \n * Usage:\n * import { bootstrapIcons } from 'dynamic-formik-form/icons/bootstrap';\n * \n * <DynamicForm\n * uiLibrary={{ adapter: bootstrapAdapter, icons: bootstrapIcons, name: 'bootstrap' }}\n * ...\n * />\n */\n\nimport { IconLibrary } from '../types/ui-library.types';\n\n/**\n * Bootstrap Icons\n * \n * NOTE: This is a template. In actual usage, you would:\n * 1. Install react-bootstrap-icons or bootstrap-icons as a peer dependency\n * 2. Import actual Bootstrap icons\n * 3. Export them as IconLibrary\n * \n * Example with react-bootstrap-icons:\n * import {\n * InfoCircle as InfoIcon,\n * Eye as VisibilityIcon,\n * EyeSlash as VisibilityOffIcon,\n * Clipboard as CopyIcon,\n * PlusCircle as AddIcon,\n * Trash as DeleteIcon,\n * } from 'react-bootstrap-icons';\n * \n * export const bootstrapIcons: IconLibrary = {\n * Info: InfoIcon,\n * Visibility: VisibilityIcon,\n * VisibilityOff: VisibilityOffIcon,\n * Copy: CopyIcon,\n * Add: AddIcon,\n * Delete: DeleteIcon,\n * };\n */\n\n// Placeholder - users should replace with actual Bootstrap icons\nexport const createBootstrapIcons = (\n Info: React.ComponentType<any>,\n Visibility: React.ComponentType<any>,\n VisibilityOff: React.ComponentType<any>,\n Copy: React.ComponentType<any>,\n Add: React.ComponentType<any>,\n Delete: React.ComponentType<any>\n): IconLibrary => {\n return {\n Info,\n Visibility,\n VisibilityOff,\n Copy,\n Add,\n Delete,\n };\n};\n\n","/**\n * Ant Design Icons\n * \n * This shows how to use Ant Design Icons with the library.\n * Users can use @ant-design/icons package.\n * \n * Usage:\n * import { createAntDesignIcons } from 'dynamic-formik-form';\n * import {\n * InfoCircleOutlined as InfoIcon,\n * EyeOutlined as VisibilityIcon,\n * EyeInvisibleOutlined as VisibilityOffIcon,\n * CopyOutlined as CopyIcon,\n * PlusCircleOutlined as AddIcon,\n * DeleteOutlined as DeleteIcon,\n * } from '@ant-design/icons';\n * \n * const antdIcons = createAntDesignIcons(\n * InfoIcon,\n * VisibilityIcon,\n * VisibilityOffIcon,\n * CopyIcon,\n * AddIcon,\n * DeleteIcon\n * );\n */\n\nimport React from 'react';\nimport { IconLibrary } from '../types/ui-library.types';\n\n/**\n * Ant Design Icons Factory\n * \n * Creates an icon library configuration for Ant Design icons.\n * Users pass their @ant-design/icons imports to this factory function.\n */\nexport const createAntDesignIcons = (\n Info: React.ComponentType<any>,\n Visibility: React.ComponentType<any>,\n VisibilityOff: React.ComponentType<any>,\n Copy: React.ComponentType<any>,\n Add: React.ComponentType<any>,\n Delete: React.ComponentType<any>\n): IconLibrary => {\n return {\n Info,\n Visibility,\n VisibilityOff,\n Copy,\n Add,\n Delete,\n };\n};\n\n","/**\n * Validation utility functions\n */\n\n/**\n * Validate email address\n */\nexport const validateEmail = (email: string | undefined | null): boolean => {\n if (!email) return false;\n\n const value = email.trim().toLowerCase();\n const strictRegex =\n /^[a-z0-9]+([._-]?[a-z0-9]+)*@[a-z0-9]+([.-]?[a-z0-9]+)*\\.[a-z]{2,}$/;\n\n return strictRegex.test(value);\n};\n\n/**\n * Validate URL\n */\nexport const isValidUrl = (url: string | undefined | null): boolean => {\n if (!url) return false;\n\n try {\n const urlObj = new URL(url);\n return urlObj.protocol === 'http:' || urlObj.protocol === 'https:';\n } catch {\n return false;\n }\n};\n\n/**\n * Check if username is valid\n */\nexport const checkValidUsername = (\n username: string,\n minLength: number,\n maxLength: number\n): boolean => {\n const regex = new RegExp(`^[a-zA-Z0-9-_\\\\.]{${minLength},${maxLength}}$`);\n return regex.test(String(username));\n};\n\n"]}