Skip to content
  • There are no suggestions because the search field is empty.

Form inputs and controls | Genius

Reference guide for Form input components available in Genius Pages



This article describes the Form input and control components available in Betty Genius–generated Pages, with their options and use cases. Inputs are built on Material UI primitives, so validation, focus states, and helper text follow Material UI conventions.

Genius Pages only. The components described here belong to the Genius component set. They are not interchangeable with classic Pages components — even when the names look the same, the options and runtime behavior differ.

How inputs work in Genius Pages

When you drop an input component onto the page – either directly or inside a Form – a setup wizard appears to help you configure it, typically by asking which model property the input should bind to. The wizard runs every time you add an input.

Screen-Recording-2026-05-18-at-1

Most inputs share a common baseline of options:

  • Property — the model or page-variable property the input binds to.
  • Label — the visible label above the input.
  • Default value — pre-filled value at page load.
  • Placeholder — hint text shown when the input is empty (not present on Checkbox, Switch, Date, Date Time, Time, Radio, Select).
  • Helper text — small text under the input.
  • Required — True or False.
  • Disabled — True or False.
  • Display logic — show or hide the input.

The sections below focus on what makes each component different from this baseline. Where an option matches the baseline, it's not repeated.

Quick reference

Component Distinctive options
Autocomplete Data source, Data for options, No options text
Button Text, SVG path, SVG positioning, Disabled, Loading, Link to, Page, Open in
Checkbox Default value (True/False), no Placeholder
Date Format (YYYY-MM-DD), no Placeholder
Date Time Format (YYYY-MM-DD HH:mm), no Placeholder
Decimal Decimal separator (Comma/Point), Scale
Email  Email format validation
File Upload Asset property, Allowed file types, Max file size, Drop zone title, Drop zone subtitle
Number  Whole numbers only
Password Masked input
Phone Phone format
Price Currency symbol, Decimal separator
Radio Data source, no Placeholder
Select Data source, no Placeholder
Switch Default value (True/False), no Placeholder
Text Area Multi-line
Text Single-line
Time Format (HH:mm), no Placeholder
URL URL format validation

Autocomplete

A dropdown that lets users pick one option from a list. The list can come from a model, a collection variable, or a static list. Good for Belongs-to relations or long option lists where a Select would be too long to scroll through.

Distinctive options

  • Data source — Inherit, Collection, or Static.
    • Inherit — use the property's own option list (typical for List properties).
    • Collection — pull options from a collection page variable.
    • Static — define a fixed list of options inline.
  • Data for options — the page variable used as the option source when data source is Collection.
  • No options text — text shown in the dropdown when there are no matching options (default: "No options").

Note on search. The Genius Autocomplete doesn't filter the dropdown as the user types out of the box. To enable search, use the Autocomplete's searchValue inside the filter of the page variable that supplies the options — the list will then narrow down based on what the user types.

Example

On a “New synthesizer” Form, add an Autocomplete for the Brand (Belongs-to relation). Set Data source → Collection and point Data for options at a Brands page variable. By default the user opens the dropdown and picks from the full list of brands — they can’t filter by typing unless you add a filter on the Brands page variable like name contains Autocomplete.searchValue.


Button

Triggers a page action, navigates to a page, or submits a Form.

Options

  • Text — the label on the button (for example, "Click me").
  • SVG path — an SVG path string for the icon shown next to the text. Lets you use a custom icon in addition to the standard Material UI library.
  • SVG positioning — Start or End. Where the icon sits relative to the text.
  • Disabled — True or False.
  • Loading — True or False. While True, the Button shows a loading state and disables itself. Typically bound to the "Is loading" property of an action response, so the button reflects action progress automatically.
  • Link to — Internal page or External page. Used when the Button navigates instead of running an action.
  • Page — the target page when Link to is Internal page.
  • Open in — Current tab or New tab.
  • Display logic — show or hide the Button

Note: connecting a Button to a runtime action happens via the Run page action interaction (configured on the Interactions tab), not as an option here.

Example

A "Save" Button at the bottom of an Edit form. Wire its Loading option to the Update action's is_loading response so the button shows a spinner during the save and re-enables itself when the record is updated.


Checkbox

A boolean toggle rendered as a check box.

Distinctive options

  • Default value — True or False (instead of a free-text default).
  • No Placeholder option.

 

Example

On a settings form, a Checkbox input bound to user.email_notifications. Default value False so new users opt in deliberately.


Date

Picks a date. Use with Date properties.

Distinctive options

  • Format — the date display format (default: YYYY-MM-DD).
  • No Placeholder option.

Example

On a booking form, a Date input bound to booking.check_in_date with Format YYYY-MM-DD.


Date Time

Picks a date and a time. Use with Date time properties.

Distinctive options

  • Format — the date-time display format (default: YYYY-MM-DD HH:mm).
  • No Placeholder option.

Example

On an event form, a Date time input bound to event.starts_at so the user can pick both the day and the time of the event in one field.


Decimal

A numeric input that accepts decimals. Use with Decimal properties.

Distinctive options

  • Decimal separator — Comma or Point. Controls which character is shown and accepted as the decimal separator.
  • Scale — number of digits after the decimal separator (default: 2).

Example

On a measurement form, a Decimal input bound to sample.weight_kg with Scale 3 to capture grams precisely (for example, 1.250).


Email

A text input with email format validation. The Required and Disabled options behave the same as other inputs; the email check runs automatically on submit.

Example

On a sign-up form, an Email input bound to user.email with Required → True.


File Upload

Uploads a file from the user's device to the application's file storage. Has a larger set of options than other inputs because file handling involves both the file and its asset record.

Distinctive options

  • Asset property — the property on the asset model that stores the uploaded file.
  • Allowed file types — comma-separated list of file extensions (for example, .pdf,.docx).
  • Max file size (bytes) — maximum allowed upload size. Leave empty for no limit.
  • Drop zone title — text shown in the upload area (default: "Drop file here or click to upload").
  • Drop zone subtitle — secondary text below the title (for example, "Supported: PDF, DOCX").
  • No Placeholder or Helper text options.

    Note: You can configure Allowed file types (and other options) via an AI prompt, or set them manually in the option field using MIME types. For example, to allow all image formats, enter image/*

    Example

    On a job application form, a File upload bound to application.resume. Set Allowed file types to .pdf,.docx and Max file size to 5000000 (5 MB). Drop zone subtitle: "Supported: PDF, DOCX • Max 5 MB."


    Number

    A whole-number input. Use for fields that store quantities, counts, or any value without a decimal part.

    Example

    On an order form, a Number input bound to order_line.quantity.


    Password

    A masked text input. Typically used in login or registration flows.

    Example

    On a registration form, a Password input bound to user.password with Required → True and Helper text "At least 8 characters."


    Phone

    A text input formatted for phone numbers.

    Example

    On a contact form, a Phone input bound to contact.phone_number.


    Price

    A numeric input formatted as currency. Use with Price properties.

    Distinctive options

    • Currency symbol — the symbol shown before the value (default: $).
    • Decimal separator — Comma or Point.

      Example

      On a product form, a Price input bound to product.price with Currency symbol and Decimal separator → Comma for European pricing conventions.


      Radio

      Picks one option from a small visible set. Best for 2–5 options.

      Distinctive options

      • Data source — Inherit, Collection, or Static. Same behavior as on Autocomplete.
      • No Placeholder option.

      Example

      On a shipping form, a Radio input bound to order.shipping_method with three static options: Standard, Express, Overnight.


      Select

      A dropdown for picking one option. Best for short fixed lists; use Autocomplete for long lists.

      Distinctive options

      • Data source — Inherit, Collection, or Static. Same behavior as on Autocomplete.
      • No Placeholder option.

      Example

      On a synthesizer form, a Select input bound to synthesizer.type with static options: Analog, Digital, Modular, Hybrid.


      Switch

      A toggle alternative to a checkbox. Same boolean storage, different visual style — use the one that fits the visual context.

      Distinctive options

      • Default value — True or False.
      • No Placeholder option.

      Example

      On a settings page, a Switch input bound to user.dark_mode so the toggle reads naturally as on/off.


      Text Area

      A multi-line text input. Use for descriptions, comments, or long-form text.


      Example

      On a synthesizer listing form, a Text area input bound to synthesizer.description for the seller's notes.


      Text

      A single-line text input. The default for short free-form text.

      Example

      On a contact form, a Text input bound to contact.first_name.


      Time

      Picks a time. Use with Time properties.

      Distinctive options

      • Format — the time display format (default: HH:mm).
      • No Placeholder option.

      Example

      On a daily schedule form, a Time input bound to appointment.start_time with Format HH:mm.


      URL

      A text input with URL format validation. The URL check runs automatically on submit.

      Example

      On a profile form, a URL input bound to user.website so invalid URLs are caught before submission.