Overview & Release Notes
The Form Explainer module provides interactive, mood-aware, step-by-step guidance for complex forms. It supports dynamic images, JSON-driven configuration, mood/aura styling, and flexible layout within the AmbientPixels grid system. This V1 release introduces mood/aura-driven UI, a modular architecture, and custom tooltips.
What's Next (Upcoming v0.2)
- Further "dialing in" of animations and timing for a smoother user experience.
- Packaging the component as a fully independent, deployable module for wider use.
Live Demo
Component Breakdown
- Image Container: The left column holds the form image, which serves as the backdrop for the interactive overlays.
- Field Stack: The right column displays a list of all form fields, driven by your JSON configuration.
- Three-Part Text: Each step shows a Title, Description, and a custom Tooltip on hover.
- Whisper Panel: Displays "Nova's Thought" for the active step, providing contextual AI insights.
- Automated Tour: The module automatically cycles through each step, highlighting the corresponding field and overlay.
- Responsive Design: The layout adapts seamlessly from a two-column view on desktops to a single-column stack on mobile devices.
Implementation Guide
To use the Form Explainer module, include the following markup in your page. The script will automatically initialize any element with the class form-explainer-container.
<!-- The container requires data attributes to specify the JSON path and image -->
<div id="form-explainer-container"
class="form-explainer-container"
data-json-path="/data/form-explainer-map.json"
data-image-path="/images/your-form-screenshot.png"
data-step-duration="3000">
<!-- Module will auto-initialize and render here -->
</div>
<!-- Ensure the script is included -->
<script src="/js/form-explainer.js" defer></script>
Make sure to load the required CSS (form-explainer.css) and provide a valid JSON configuration file.
JSON Configuration (form-explainer-map.json)
The module is driven entirely by a JSON file, which is an array of objects. Each object defines a step in the tour. Each step can also include mood and aura fields for mood-aware UI. Below is a detailed breakdown of the keys for each step object:
| Key | Type | Description |
|---|---|---|
key |
String | A unique identifier for the step. Used for internal mapping and data attributes. |
title |
String | The main heading displayed for the step in the right-hand column. |
description |
String | The sub-heading text displayed below the title. Provides brief context. |
tooltip |
String | The text that appears in the custom tooltip when the user hovers over the step item. |
novaThought |
String | The detailed AI insight that appears in the whisper panel below the screenshot. |
left, top |
Number (Float) | The X and Y coordinates for the top-left corner of the overlay. Values are percentages (0.0 to 1.0) of the image container's dimensions. |
width, height |
Number (Float) | The width and height of the overlay. Values are percentages (0.0 to 1.0) of the image container's dimensions. |
Example JSON Entry
[
{
"key": "title",
"title": "1. Form Title",
"description": "The main heading of the form.",
"tooltip": "Clearly states the purpose of the form.",
"left": 0.04, "top": 0.03, "width": 0.92, "height": 0.08,
"novaThought": "A good title sets the right expectation. Users scan this first to confirm they're in the right place."
},
{
"key": "description",
"title": "2. Form Description",
"description": "Provides context and instructions.",
"tooltip": "A brief summary of what the user needs to do.",
"left": 0.04, "top": 0.12, "width": 0.92, "height": 0.09,
"novaThought": "The description is an emotional anchor—it reassures users they'll get the help they need."
}
// ... more steps, each with optional "mood" and "aura" fields
]
Styling & Customization
- Customize appearance via
/css/form-explainer.cssand global theme tokens (e.g.,--aura-primary,--mood-highlight). - The component is built with Flexbox and is fully responsive.
- For advanced use, extend the module with custom JS and additional config options in
/js/form-explainer.js.