adstia-quiz-builder
v1.1.53
Published
A React component library for building interactive quiz applications
Readme
Adstia Quiz Builder
A React component library for building interactive quiz applications.
Installation
npm install adstia-quiz-builderUsage
import { useState } from "react";
import { QuizBuilder } from "adstia-quiz-builder";
import QuizJson from "./quizJson.json";
function QuizPage() {
const [quizData, setQuizData] = useState(null);
return (
<div className="App">
<QuizBuilder setQuizData={setQuizData} json={QuizJson} />
</div>
);
}Quiz Data Structure Example
Your quiz JSON should follow this structure:
{
quizName: "Quiz Name",
totalSteps: 8,
config: {
nextButtonText: "Next",
previousButtonText: "Previous",
submitButtonText: "Check My Eligibility",
prefillValues: true,
leadId: "YOUR_LEAD_ID_WITHOUT_DOMAIN_NAME"
},
quizJson: [
{
quizCardId: "0",
question: "What is your marital status?",
subText: "I wondering if you are married or single?",
nodes: [
{
nodeType: "dropdown", // or "options", "input", "zipcode", "dob", "email", "phone"
nodeName: "maritalStatus",
options: [
{ label: "Married", value: "married", next: "1" },
// ...other options
]
}
],
next: "1"
},
{
quizCardId: "1",
quizCardType: "start",
question: "What is your zip code?",
nodes: [
{
nodeType: "zipcode",
nodeName: "zipcode",
inputLabel: "Zip Code",
validation: {
required: true,
pattern: "^\\d+$",
minLength: 5,
maxLength: 5
}
}
],
next: "2"
},
// ...more quiz cards
{
quizCardId: "10",
quizCardType: "end",
nodes: [
{
nodeType: "congrats",
nodeName: "QUALIFIED",
redirectUrl: "/congrats",
openInNewTab: false,
redirectCurrentTab: true,
redirectCurrentTabUrl: "https://www.youtube.com/"
}
]
}
]
}Key Properties
quizName: Name of the quiztotalSteps: Total number of steps/cardsconfig: Quiz configuration (button texts, prefill, etc.)quizJson: Array of quiz cardsquizCardId,quizCardType,question,subText,nodes,next,progressnodes: Each node can be of typeinput,zipcode,dob,dropdown,options,email,phone, etc.- Validation and navigation handled via
validationandnextkeys - End cards can include redirect logic
Features
- Interactive quiz components (input, zipcode, options, dropdown, etc.)
- Real-time validation and error handling
- Next button disables automatically on error or required fields
- Easy to integrate with existing React applications
- Customizable and extensible
- Prefill feature: If
prefillValuesis enabled inquizConfig, previously entered values are automatically loaded from localStorage for supported nodes (input, zipcode, email, phone, dob). - Context API:
quizConfigis provided via React context for all quiz components. - setQuizData prop: Pass a setter to receive quiz results or state in your parent component.
Development
To build the package:
npm run buildTo develop locally and test in another app:
npm link
# In your test app:
npm link adstia-quiz-builderLicense
ISC
