FormsInteractive playground
Questionnaire
Sequential questions with structured answers.
Preparing the playground…
Text and Markdown example
Questionnaire · Example
1function Example() {
2 const [done, setDone] = useState(false);
3 return done ? <Alert><AlertTitle>Thank you!</AlertTitle><AlertDescription>Answers received in this demo.</AlertDescription></Alert> : <Questionnaire questions={[{id:"role",title:"What are you creating?",type:"single",options:[{label:"A website",value:"web"},{label:"An app",value:"app"}]},{id:"idea",title:"Tell us about your idea",type:"freeform",optional:true}]} onComplete={() => setDone(true)} />;
4}How to use it
Define a unique id per question and handle onComplete. Supports single, multiple and freeform; set optional for non-required questions.
Import
React / Next.js
1import { Questionnaire } from "@kivora/nextjs";Interactive examples run inside a component with "use client". The playground's Copy button includes the imports needed for the current example.
API reference 0.2.0
Types from the installed published version, including component properties and common HTML attributes. “Optional” does not imply a default value; omitting a property lets the component decide.
| Property | Type | Description |
|---|---|---|
questionsRequired | QuestionnaireQuestion[] | Questionnaire questions with unique identifiers. |
aria-label | string | Accessible name of the control. |
children | ReactNode | Content or child elements of the component. |
className | string | Additional CSS classes to customize the element. |
defaultAnswers | Record<string, QuestionnaireAnswer> | Initial answers by identifier. |
defaultChecked | boolean | Initial selection of the control. |
defaultValue | string | number | readonly string[] | Initial value when the component manages its own state. |
id | string | Element identifier; associates labels and descriptions. |
onChange | ChangeEventHandler<HTMLDivElement, Element> | Change event. Check the type: some controls return an object, others a DOM event. |
onClick | MouseEventHandler<HTMLDivElement> | Action performed when the element is activated. |
onComplete | ((answers: Record<string, QuestionnaireAnswer>) => void) | Callback when input or an operation is complete. |
onSubmit | SubmitEventHandler<HTMLDivElement> | Form submission event. |
role | AriaRole | Semantic role of the element. Keep the default role unless a change is justified. |
style | CSSProperties | React inline styles. |
tabIndex | number | Keyboard focus order and availability. |
title | string | Title or supplementary information. |
TypeScript definition
Review each component's properties and published declaration. Native and accessibility attributes are inherited from the element specified by its type.
Questionnaire16 properties
Questionnaire · TypeScript
1declare function Questionnaire({ className, defaultAnswers, onComplete, questions, ...props }: QuestionnaireProps): React.JSX.Element | null;API generated from @kivora/nextjs 0.2.0View package