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.
Each demo is a different real-world use case with its own theme, transition, and field types.
A complete form wizard solution โ no jQuery, no React, no build step required.
data-show-if โ no JavaScript needed.data-duration.class="wz-dark" or use the toggle button.next(), prev(), reset(), getData(), toggleDark() and lifecycle callbacks.Include two files and add data-wizard to your form element โ that's it.
<!-- 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>
Switch themes with a single data-theme attribute. Mix and match with any transition.
| Theme | data-theme | Primary Color | Best For |
|---|---|---|---|
Classic Blue | default | #2563EB | Registration, General |
Ocean Teal | ocean | #0D9488 | HR, Recruitment |
Slate Pro | slate | #475569 | Checkout, Finance |
Emerald | emerald | #059669 | SaaS, Onboarding |
Sunset | sunset | #DC2626 | Events, Booking |
Pure HTML, CSS, and JavaScript. No build tools, no npm install, no framework needed. Just copy the two files and go.
โ MIT License ยท โ No attribution required ยท โ Commercial use OK