--- name: bestax-form description: Build forms with @allxsmith/bestax-bulma — Field/Control/Label/Help composition, inputs, selects, checkboxes, radios, switches, and advanced controls (Autocomplete, Slider, Numberinput, Rate, Taginput, File, date/time). There is no form/validation library; this skill shows the components and the validate-it-yourself error pattern. Use when building a form, wiring inputs to state, or showing validation/error state. license: MIT --- # Building forms with bestax-bulma This skill covers the form components in `@allxsmith/bestax-bulma` and how to compose them. **Important:** bestax-bulma ships **no form/validation library** — there is no integration with formik, react-hook-form, yup, or zod, and no `useForm`-style hook. You own your form state with plain React (`useState` / `useReducer` or any library you choose) and feed validation results back via each input's own `color`, `message`, and `messageColor` props on the convenience inputs (`Input`, `Select`, `TextArea`, …). Always put validation state on the **input**: `Field` has no `message`/`messageColor`, and although `FieldProps` types a `color`, `Field` discards it — it renders no class, so setting it looks right and does nothing. (`FieldLabel`/`FieldBody` do honor `color`, as the `has-text-*` helper.) See **Validation without a library** below. ## Use when - Building a form out of bestax inputs, selects, checkboxes, switches, or advanced controls. - Deciding between the convenience components (``) and explicit `Field` + `Control` + `*Base` composition. - Showing help text and error/success states on fields. To build a brand-new input component (not just use the existing ones), use the `bestax-custom-component` skill instead. ## Field / Control / Label / Help composition Bulma forms are a three-tier structure. bestax models it directly: ``` Field // container + layout (horizontal / grouped / hasAddons) ├── label // rendered from Field's `label` prop, or a