Surveys that look like your application.
Bring your own components. Kajay lets your design system supply the common controls it already owns — buttons, inputs, textareas, checkboxes and radios — while specialized survey controls keep Kajay’s accessible defaults.
One map, and the survey is yours
Kajay routes five high-impact primitives through a small component map: Button, Input, Textarea, Checkbox and Radio. Supply as many or as few as you like; omitted primitives and specialized controls retain Kajay’s working defaults.
import { KAJAY_SURVEY_COMPONENTS } from '@/kajay/surveyComponents'
<Survey model={survey} components={KAJAY_SURVEY_COMPONENTS} />The same composition seam dresses the designer, so the tool your customers build in looks like the product it lives in.
Everything you would expect
Every question type
Text in a dozen input types, choices, ratings, ranking, matrices, repeating panels, file upload, signatures and computed values.
Logic that holds
An expression language with a real parser and a dependency graph behind it — conditional visibility, computed values, triggers and validation all on one engine.
Validation
Built-in and custom validators, asynchronous checks against your own server, and errors placed where the mistake is.
Localization
Every user-facing string translatable, the library’s own words replaceable, and right-to-left handled as layout rather than as a stylesheet.
Accessible by default
Keyboard-operable throughout, labelled and announced, and swept with axe in real Chromium on every commit.
A definition you own
Plain JSON that round-trips losslessly — parse, serialize, parse, unchanged — with a committed schema and a versioned contract another runtime can implement.
And a designer you can put in your product
A drag-and-drop canvas, a property grid generated from the type registry, a visual logic editor, a JSON view, translations and theming — as one component, or as pieces you arrange yourself. Restrict which question types it offers, rename every word it says, and give it your components.