Skip to main content
Version: 1.0.3

Dynamic Form

A highly flexible and intelligent form component that dynamically shows or hides fields based on user selections. Perfect for complex forms with conditional logic, multi-section layouts, and real-time validation. Features include conditional field rendering, section organization, real-time validation, multiple themes, and comprehensive debugging tools.

Registration Form

Complete your registration information below - watch fields appear based on your selections

Personal Information

Tell us about yourself

Account Type

Choose your account type

Account Security

Secure your account

Subscribe to Newsletter

8 of 11 fields visible

Installation

ignix add component dynamicform

Examples

Basic Usage

import { DynamicForm } from '@ignix-ui/dynamic-form';

const fields = [
{ id: '1', name: 'name', label: 'Name', type: 'text', required: true },
{
id: '2',
name: 'role',
label: 'Role',
type: 'select',
options: [{ value: 'admin', label: 'Admin' }, { value: 'user', label: 'User' }]
}
];

export default function MyForm() {
return (
<DynamicForm fields={fields} onSubmit={console.log}>
<DynamicForm.Header title="Registration" />
<DynamicForm.Content />
<DynamicForm.Navigation />
</DynamicForm>
);
}

Features

  • Conditional Rendering: Dynamically show/hide fields based on logic.
  • Section Organization: Group fields into collapsible sections.
  • Real-time Validation: Instant feedback on user input.
  • Multiple Themes: 10+ visual variants including vibrant and glass.
  • Debug Mode: Built-in panel for state inspection.
  • Compound Components: Flexible layout composition.
  • Responsive Design: Optimized for all screen sizes.
  • Accessibility: Full ARIA and keyboard support.

Props

DynamicForm Props

PropTypeDefaultDescription
fieldsDynamicFormField[]RequiredField configurations.
initialDataFormValues{}Pre-populated data.
onSubmit(data: FormValues) => Promise<void> | voidSubmission callback.
onCancel() => voidCancel callback.
onChange(data: FormValues, visibleFields: string[]) => voidChange callback.
variant"default" | "vibrant" | "pastel" | "neon" | "earthy" | "ocean" | "sunset" | "forest" | "galaxy" | "candy""default"Theme variant.
cardVariant"default" | "glass" | "border" | "elevated" | "neon" | "vibrant""default"Card style.
inputVariantstring"default"Input variant.
buttonVariantstring"default"Button variant.
buttonAnimationVariantstringButton animation.
submitButtonLabelstring"Submit"Submit label.
cancelButtonLabelstring"Cancel"Cancel label.
isLoadingbooleanfalseLoading state.
isSubmittingbooleanfalseSubmitting state.
showCancelButtonbooleantrueShow cancel.
animateFieldChangesbooleantrueAnimate visibility.
animationIntensity'subtle' | 'moderate' | 'high''moderate'Animation level.
showSuccessNotificationbooleantrueSuccess toast.
successNotificationDurationnumber3000Toast duration.
successNotificationMessagestring'✨ Form submitted successfully!'Success message.
theme'light' | 'dark' | 'system''system'Theme mode.
colorScheme'default' | 'vibrant' | 'pastel' | 'neon' | 'earthy' | 'ocean' | 'sunset' | 'forest''default'Color scheme.
debugbooleanfalseDebug panel.
classNamestringExtra classes.
containerClassNamestringInner classes.

DynamicHeader Props

PropTypeDefaultDescription
titlestring | React.ReactNodeHeader title.
descriptionstringDescription text.
iconReact.ReactNodeHeader icon.
childrenReact.ReactNodeCustom content.
classNamestringExtra classes.
titleClassNamestringTitle classes.
descriptionClassNamestringDescription classes.
iconClassNamestringIcon classes.
containerClassNamestringContainer classes.
titleVariantTypographyVariants'h4'Title style.
titleWeight'light' | 'normal' | 'medium' | 'semibold' | 'bold''bold'Title weight.
titleColorTypographyColorOptions'default'Title color.
descriptionVariant'body' | 'body-small' | 'caption' | 'muted''muted'Description style.
iconSizenumber24Icon size.
animatedbooleantrueAnimate mount.
gradientbooleanfalseGradient title.

DynamicContent Props

PropTypeDefaultDescription
childrenReact.ReactNodeRequiredFields/sections.
classNamestringContainer classes.
animateChangesbooleantrueAnimate fields.
cardVariantCardVariant"default"Card style.
showFieldCountbooleantrueShow field count.

DynamicField Props

PropTypeDefaultDescription
fieldDynamicFormFieldRequiredField config.
classNamestringExtra classes.
showLabelbooleantrueShow label.
animationVariant'fade' | 'slide' | 'scale' | 'rotate''fade'Field animation.

DynamicSection Props

PropTypeDefaultDescription
titlestringSection title.
descriptionstringSection desc.
childrenReact.ReactNodeRequiredSection fields.
classNamestringExtra classes.
conditionCondition | Condition[]Visibility logic.
defaultCollapsedbooleanfalseInitial state.
collapsiblebooleanfalseAllow toggle.
showWhenEmptybooleanfalseShow if empty.
gradientbooleanfalseGradient bg.
iconReact.ElementTypeSection icon.

DynamicNavigation Props

PropTypeDefaultDescription
submitButtonLabelstring"Submit"Submit label.
cancelButtonLabelstring"Cancel"Cancel label.
showCancelButtonbooleantrueShow cancel.
onCancel() => voidCancel callback.
classNamestringExtra classes.
position'bottom' | 'sticky''bottom'Bar position.
animatedbooleantrueAnimate nav.
childrenReact.ReactNodeCustom UI.

DynamicNotification Props

PropTypeDefaultDescription
type'success' | 'error' | 'info' | 'warning' | 'magic'RequiredToast type.
messagestringRequiredToast message.
onClose() => voidRequiredClose callback.
durationnumber3000Auto-close.
classNamestringExtra classes.
iconReact.ElementTypeCustom icon.

DynamicDebugger Props

PropTypeDefaultDescription
classNamestringDebugger classes.

ThemeToggle Props

PropTypeDefaultDescription
classNamestringToggle classes.