Form Kit

Build Packet 04. Every control and every state, proven here before the first module uses one. A form is a page and never a dialogue — ADR-0018.

← Component gallery Clients

1 · A record form, at full size

Twelve columns. A field declares its span, and the stylesheet decides what that means at each width — three columns above 1200 pixels, two down to 720, one below it. Narrow this window to watch it fold. Every control below is real: fill it in badly and press Save.

An empty box means the password is unchanged. We never show dots that are not a real password.

Pick from a list. An operator with no group can sign in and do nothing.

Type your own values. Each address is checked as you enter it, not at save time. Empty means no restriction.

Fields for filtering

The operator sees only the countries selected.

No changes yet

2 · Every control state

Default, focused by keyboard, failed, and disabled. A control the operator cannot use must look unusable, not merely refuse to respond.

Enter a valid email address

This is required

Choose at least one group

The box grows. It is not a 44 pixel control with a scrollbar — an operator must see every value without scrolling inside it.

3 · The keyboard, and the two-press rule

Tab into the box below, then press Backspace on the empty input. The last chip turns red — armed — and only a second press removes it. One press removing a token means a stray keystroke silently deletes an address nobody notices is gone.

Free mode · Enter and comma both commit · paste a comma-separated list to see each value commit as it arrives
Choice mode · ArrowDown or Enter opens the list · the list stays open while several are chosen

4 · One message, not six

Six failing fields produce one toast. Keyed messages replace each other rather than queueing, so nobody watches six errors play out over half a minute. Hover a toast to hold it; every toast carries a close control.

5 · Leaving with unsaved changes

Change anything in the form at the top of this page, then use this link. The dialogue offers Save, Discard, or staying put — and Enter chooses Save, because it is the primary button. That dialogue is a decision, which is why it is allowed to be a dialogue at all under ADR-0018.

6 · The switch field

A rule switched on or off — Build Packet 20, ADR-0051. The label sits above, like every other field, so a switch lines up with the text box beside it. The state is shown as a colour and a word. Tab to one to see its focus ring; Space toggles it. The grid's in-row switch on the Countries screen uses the same track and knob.

Enabled / Disabled — on
Enabled / Disabled — off
Yes / No
Disabled control

7 · Panel sections and the help tooltip

The standard for every form — ADR-0060. Each section is a panel with a header strip; the help trigger is a bare i. Rest the pointer on one, click it, tap it in mobile emulation, or Tab onto it — then Esc. The third hint is long, to show the bubble wrapping and staying on screen.

Example connection

Main trading server