5 Themes ยท Vanilla JS ยท Zero Dependencies

The Professional
Multi-Step Form Wizard

A complete, production-ready multi-step form solution. Real-time validation, conditional fields, file uploads, 5 animated transitions, dark mode โ€” all in one lightweight bundle.

๐Ÿš€ View Live Demos ๐Ÿ“– Quick Start
5
Themes
5
Transitions
0
Dependencies
~18KB
Gzipped

5 Ready-to-Use Variations

Each demo is a different real-world use case with its own theme, transition, and field types.

๐Ÿ“
Classic Blue
Slide Transition
Classic 4 Steps
Account registration form. Personal info, credentials, document upload, and review step with conditional company field.
File Upload Conditional Fields Password Match Auto-save
๐Ÿ’ผ
Ocean Teal
Fade Transition
Ocean 4 Steps
Job application form. Basic info, work experience with conditional team-lead field, resume upload, and review.
CV Upload Radio Cards Conditional Step Cover Letter
๐Ÿ›’
Slate Pro
Scale Transition
Slate 3 Steps
E-commerce checkout. Shipping details, payment method with conditional card/PayPal fields, and order summary.
Payment Switch Order Summary Promo Code Address Form
๐Ÿš€
Emerald
Flip Transition
Emerald 4 Steps
SaaS onboarding survey. Role selection, team size, preferences with checkboxes, and summary review.
Role Picker Checkboxes Conditional Role Survey Style
๐ŸŽŸ๏ธ
Sunset
Zoom Transition
Sunset 4 Steps
Event booking system. Ticket selection with conditional group field, attendee info, payment, and confirmation.
Ticket Types Badge Upload Bank/Card Switch Session Picker

Everything You Need

A complete form wizard solution โ€” no jQuery, no React, no build step required.

๐Ÿ“Š
Progress Bar + Step Indicators
Animated progress bar with percentage, step counter, and clickable completed-step indicators.
โœ…
Real-Time Validation
Validates as you type โ€” required, email, phone, min/max, pattern, match, URL, date, and custom rules.
๐Ÿ‘๏ธ
Conditional Fields
Show/hide fields based on other field values using data-show-if โ€” no JavaScript needed.
๐ŸŽฌ
5 Animated Transitions
Slide, Fade, Scale, Flip, and Zoom โ€” each with configurable duration via data-duration.
๐Ÿ“‹
Summary / Review Step
Auto-generated summary of all entered data on the final step โ€” no extra code needed.
๐Ÿ“
File Upload + Preview
Drag & drop file upload with instant image preview, file size display, and remove button.
๐ŸŒ™
Dark / Light Mode
Built-in dark mode toggle per wizard. Add class="wz-dark" or use the toggle button.
๐Ÿ’พ
Auto-Save to localStorage
Automatically saves form progress. User can close tab and return โ€” data is still there.
โŒจ๏ธ
Keyboard Navigation
Enter to go next, Arrow keys to navigate, Escape to close. Fully accessible with ARIA attributes.
๐Ÿ“ฑ
Fully Responsive
Mobile-first design. Stacked layout on small screens, full grid on desktop. Tested from 320px.
๐ŸŽฏ
Radio Cards
Visual card-style radio buttons for beautiful option selection โ€” perfect for plans, roles, ticket types.
๐Ÿ”Œ
JavaScript API
Full API: next(), prev(), reset(), getData(), toggleDark() and lifecycle callbacks.

Up in 60 Seconds

Include two files and add data-wizard to your form element โ€” that's it.

HTML Setup
JS API
Validation Rules
<!-- 1. Include CSS and JS -->
<link rel="stylesheet" href="css/wizard.css">
<script src="js/wizard.js"></script>

<!-- 2. Add data-wizard to your wrapper -->
<div id="myForm"
     data-wizard
     data-transition="slide"
     data-theme="ocean"
     data-auto-save="true">

  <!-- Header with progress -->
  <div class="wz-header">
    <div class="wz-progress"><div class="wz-progress-fill"></div></div>
    <div class="wz-nav"></div>
  </div>

  <!-- Steps -->
  <div class="wz-body"><div class="wz-steps">

    <div class="wz-step" data-label="Step 1" data-icon="๐Ÿ‘ค">
      <div class="wz-field">
        <label class="wz-label">Name</label>
        <input class="wz-field__input" name="name"
               data-validate="required|minlen:2">
        <div class="wz-error"></div>
      </div>

      <!-- Conditional field -->
      <div data-show-if="type:==:business">
        <input class="wz-field__input" name="company">
      </div>
    </div>

    <div class="wz-step" data-label="Confirm" data-icon="โœ…">
      <div class="wz-summary"></div>
    </div>

  </div></div>

  <!-- Navigation buttons -->
  <div class="wz-footer">
    <button class="wz-btn wz-btn-prev" data-wz="prev">โ† Back</button>
    <button class="wz-btn wz-btn-next" data-wz="next">Continue โ†’</button>
    <button class="wz-btn wz-btn-submit" data-wz="submit">โœ“ Submit</button>
  </div>
</div>

<!-- 3. Auto-initialized via data-wizard attribute -->
<!-- OR manually: -->
<script>
  const wz = new MultiStepWizard('myForm', {
    transition:   'slide',
    duration:     380,
    darkMode:     false,
    autoSave:     true,
    onStepChange: (step) => console.log('Step:', step),
    onComplete:   (data, files) => console.log(data, files),
  });
</script>

5 Professional Themes

Switch themes with a single data-theme attribute. Mix and match with any transition.

Theme data-theme Primary Color Best For
Classic Blue
default#2563EBRegistration, General
Ocean Teal
ocean#0D9488HR, Recruitment
Slate Pro
slate#475569Checkout, Finance
Emerald
emerald#059669SaaS, Onboarding
Sunset
sunset#DC2626Events, Booking
Ready to Use

Start Building Today

Pure HTML, CSS, and JavaScript. No build tools, no npm install, no framework needed. Just copy the two files and go.

๐Ÿš€ View Live Demos ๐Ÿ“– Read the Docs

โœ“ MIT License  ยท  โœ“ No attribution required  ยท  โœ“ Commercial use OK