lonja-forms-and-controlslisted
Install: claude install-skill zakariaf/CatchLaw
# Lonja Forms and Controls
A control in CATCHLAW is not a widget that collects data; it is **an instrument printed on the
page** — a ruled entry line, a stamped cell, a numbered key — operated at 05:40 with wet hands, a
live fish in the bin and ten seconds. This skill owns the Lonja *values* and the *physical-context*
rules for search fields, toggles, segmented pickers, steppers and the numeric keypad. It owns
nothing about form mechanics.
Read the reference for the task at hand:
- `references/control-anatomy.md` — control inventory, ground and rule weights, state matrix, glove
and sunlight re-encoding, banned Material defaults.
- `references/search-field-and-keypad.md` — search field anatomy, script and diacritic handling,
keypad layout, keypad-before-calibration contract, unit and hint copy.
Run `scripts/check_lonja_controls.sh` before a PR.
`Form`, `GlobalKey<FormState>`, sync-vs-async validators, `FocusNode` traversal, `TextInputFormatter`
policy and controller disposal are owned entirely by `forms-and-input` and are NEVER restated here;
this skill governs only what a control looks like, how big it is, and what it is allowed to say.
## Non-negotiable rules
1. **Every control is a ruled line or a ruled cell — never a pill.** Corners are `BorderRadius.zero`
and the side is `1.5` logical pixels of `ink` `#16201C`; the largest radius the system tolerates
anywhere is `2`. `scripts/check_lonja_controls.sh` fails any `BorderRadius.circular(` above `2`.
**WHY:*