Single choice
TypeSingleSelect. Collects one answer. Writes option.value to answers[field]; an empty selection is validated when Continue is pressed, while autoAdvance moves on after a tap. Options may use image, emoji or icon; selectedStyle controls auto/tint/outline/solid and selectionIndicator can hide the check marker. Selected colours use theme tokens and local appearance overrides.
Example
Example
Multiple choice
TypeMultiSelect. Collects several answers. Writes string[] of option.value to answers[field]; minSelected is validated when Continue is pressed and the inline error appears after the first press. Options may use image, emoji or icon; selectedStyle controls auto/tint/outline/solid and selectionIndicator can hide the check marker. Selected colours use theme tokens and local appearance overrides.
Example
Example
Rating scale
TypeRatingScale. Rates agreement with a statement. 3-7 numbered buttons write an integer 1..points to answers[field]; required, error “Please choose a rating” after Continue is pressed. autoAdvance (default) moves on after a tap, so omit the Button. Arrow keys move and select.
Example
Example
Swipe cards
TypeSwipeCards. Collects choices by swiping cards. Drag a card or tap the tick/cross buttons; writes string[] of ACCEPTED option.value to answers[field] (like MultiSelect; [] if all rejected). Never blocks Continue and auto-advances after the last card, so omit the Button. 2-10 cards, each ideally with an image.
Example
Example
Slider
TypeSlider. Captures a number on a slider. Writes the number to answers[field] as soon as it mounts (the start position counts as an answer) and the unit to <field>_unit; never blocks Continue. Big live value above a 48px-high track. Add a Button.
Example
Example
Number input
TypeNumberInput. Captures numbers with optional units. Writes a number to answers[field] (unset when empty/invalid) and the unit to <field>_unit; feet_inches mode stores total inches with unit “in”. Decimal keyboard, accepts ”,”. Errors (required, min, max) show inline only after Continue is pressed. Add a Button.
Example
Example
Text input
TypeTextInput. Captures a short text answer. Writes the typed string to answers[field]. required (default) blocks Continue on blank input, error shown inline after the first press. Add a Button. Set label unless a Heading names the field; browsers name an unlabelled input from its placeholder only.
Example
Example
Email input
TypeEmailInput. Collects email for checkout. Email keyboard + autofill; writes the trimmed address to answers.email by default, which checkout and receipts use. Malformed input blocks Continue (inline error after first press). consentText adds privacy print. Add a Button.
Example
Example
Date picker
TypeDatePicker. Captures a date from month/day/year selects (no calendar popup). Writes “YYYY-MM-DD” to answers[field] and the year to <field>_year only when the date is real (Feb 30 shows an error). Years run newest first between minYear and maxYear (defaults 1940-2012, adults). Add a Button.
Example
Example
File upload
TypeFileUpload. Collects a photo as an answer. Uploads an image (HEIC ok) and writes its public URL to answers[field]. States: empty tinted area (add a dashed border with appearance borderStyle), uploading spinner (blocks Continue), 4:3 preview with “Choose another photo”, inline error (too large / failed). onUpload next advances immediately, so omit the Button; stay waits for one.
Example
Example
Consent checkbox
TypeConsentCheckbox. Captures consent or an optional opt-in. Writes “yes” to answers[field] when ticked (cleared when unticked); defaultChecked controls the initial state, while required controls whether Continue is blocked until checked. Label links open a new tab without toggling. Add a Button.
Example
Example
Signature pledge
TypeSignaturePledge. Signs a pledge with a name. Pledge statement in quotes plus a typed-name signature line; writes the name to answers[field]; blank blocks with “Please sign to continue”. Has its own full-width button (do not add a Button) and cannot be used in checkoutSheet.
Example
Example