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> | void—Submission callback.
onCancel() => void—Cancel callback.
onChange(data: FormValues, visibleFields: string[]) => void—Change 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.
buttonAnimationVariantstring—Button 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.
classNamestring—Extra classes.
containerClassNamestring—Inner classes.

DynamicHeader Props​

PropTypeDefaultDescription
titlestring | React.ReactNode—Header title.
descriptionstring—Description text.
iconReact.ReactNode—Header icon.
childrenReact.ReactNode—Custom content.
classNamestring—Extra classes.
titleClassNamestring—Title classes.
descriptionClassNamestring—Description classes.
iconClassNamestring—Icon classes.
containerClassNamestring—Container 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.
classNamestring—Container classes.
animateChangesbooleantrueAnimate fields.
cardVariantCardVariant"default"Card style.
showFieldCountbooleantrueShow field count.

DynamicField Props​

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

DynamicSection Props​

PropTypeDefaultDescription
titlestring—Section title.
descriptionstring—Section desc.
childrenReact.ReactNodeRequiredSection fields.
classNamestring—Extra classes.
conditionCondition | Condition[]—Visibility logic.
defaultCollapsedbooleanfalseInitial state.
collapsiblebooleanfalseAllow toggle.
showWhenEmptybooleanfalseShow if empty.
gradientbooleanfalseGradient bg.
iconReact.ElementType—Section icon.

DynamicNavigation Props​

PropTypeDefaultDescription
submitButtonLabelstring"Submit"Submit label.
cancelButtonLabelstring"Cancel"Cancel label.
showCancelButtonbooleantrueShow cancel.
onCancel() => void—Cancel callback.
classNamestring—Extra classes.
position'bottom' | 'sticky''bottom'Bar position.
animatedbooleantrueAnimate nav.
childrenReact.ReactNode—Custom UI.

DynamicNotification Props​

PropTypeDefaultDescription
type'success' | 'error' | 'info' | 'warning' | 'magic'RequiredToast type.
messagestringRequiredToast message.
onClose() => voidRequiredClose callback.
durationnumber3000Auto-close.
classNamestring—Extra classes.
iconReact.ElementType—Custom icon.

DynamicDebugger Props​

PropTypeDefaultDescription
classNamestring—Debugger classes.

ThemeToggle Props​

PropTypeDefaultDescription
classNamestring—Toggle classes.