bestax-form
Build forms with @allxsmith/bestax-bulma — Field/Control/Label/Help composition, inputs, selects, checkboxes, radios, switches, and advanced controls…
Skill by allxsmith
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/allxsmith-bestax-form
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md and code. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/bestax-form
What's inside
- Skill name
bestax-form- Description
- Build forms with @allxsmith/bestax-bulma — Field/Control/Label/Help composition, inputs, selects, checkboxes, radios, switches, and advanced controls (Autocomplete, Combobox, Slider, Numberinput, PinInput, 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
- Instructions
- 318 lines in SKILL.md · view on GitHub
Files (3)
- SKILL.md
- api.md · references/
- patterns.md · references/
SKILL.md (first lines)
# 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 (`<Input label=… />`) 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 <label> you put in <Field.Label>
└── Control // wraps ONE input; adds icons + loading
├── InputBase / SelectBase / TextAreaBase // the raw styled element
└── <p class="help">…</p> // help / validation message
```
You rarely write all of this by hand. The convenience components (`Input`, `Select`,
`TextArea`, …) auto-wrap themselves in `Field` + `Control` when they aren't already inside one,
using context (`useInsideField` / `useInsideControl`) to detect their surroundings.
```tsx
// Convenience: one line, auto-wrapped in Field + Control.
<Input label="Email" type="email" placeholder="you@example.com" />
// Explicit composition: full control over layout.
<Field label="Email">
<Control iconLeftName="envelope" hasIconsLeft>
<InputBase type="email" placeholder="you@example.com" />
</Control>
</Field>
```
### Layout via Field
- `horizontal` — label and control side by side (wraps children in `Field.Body`; use
`Field.Label` / `Field.Body` directly for multi-control rows).
- `grouped` — `true | 'centered' | 'right' | 'multiline'`, controls in a row.
- `hasAddons` — `true | 'centered' | 'right'`, attached controls (input + button).
```tsx
<Field hasAddons>
<Control isExpanded>
<InputBase placeholder="Search" aria-label="Search" />
</Control>
<Control>
<Button color="primary">Go</Button>
</Control>
</Field>
```
A `grouped` or `hasAddons` Field names none of its controls, and a placeholder disappears once
the user types, so give each input in the row an `aria-label`, or a visible label on an outer
`Field` (`references/patterns.md`, "Grouped controls and addons").
### Sections via Fieldset
`Fieldset` groups several fields under one name: a native `<fieldset>` whose `legend` names the
group. `variant` is `default` (bordered), `filled` or `unstyled`. `disabled` disables every
control inside, the native ones and bestax's own widgets (`Rate`, the time wheels) alike, so it's
also how to switch a whole form off while it saves. `message` describes the group; each input
still carries its own error.
```tsx
<Fieldset legend="Shipping address" disabled={saving}>
<Input label="Street" name="street" />
<Input label="City" name="city" />
</Fieldset>
```
Prefer it to a hand-written `<fieldset disabled>`, which the browser applies to native controls
only: a `Rate` inside one keeps taking input while its value is dropped from the form.
## Component inventory
All import from `@allxsmith/bestax-bulma`. Convenience components auto-wrap Field+Control;
`*Base` components are the raw styled elements for explicit composition.
| Component | What it is |
| ------------------------------------------------------- | ------------------------------------------------------------------------- |
| `Field`, `Field.Label`, `Field.Body` | Field container + horizontal label/body parts. |
| `Control` | Wraps one input; left/right icons, `isLoading`, `isExpanded`, `size`. |
| `Fieldset` | A section named by its `legend`; `disabled` switches off all of it. |
| `Input` / `InputBase` | Text input (convenience / raw). |
| `Select` / `SelectBase` | Dropdown select. |
| `TextArea` / `TextAreaBase` | Multiline text. |
| `Checkbox` / `Checkboxes` | Single checkbox / managed group (array value). |
| `Radio` / `Radios` | Single radio / managed single-select group. |
| `CheckboxCard` / `RadioCard` | A checkbox or radio as a card with a title and a description. |
| `Switch` | Toggle switch (`isRounded`, `isThin`, `isOutlined`, RTL). |
| `File` | File upload input with label/message. |
| `Autocomplete` | Free text with suggestions it filters for you, + keyboard nav. |
| `Combobox` | A value from a list: `data` for a select, tags or groups, or parts. |
| `Slider` | Range slider; single/dual thumbs, steps, tooltips, vertical. |
| `Numberinput` | Numeric input with increment/decrement, min/max, step, stepper. |
| `PinInput` | A one-time code or PIN as a row of boxes, all in one real input. |
| `Rate` | Star rating; `max`, `precision` (half/quarter), custom icons, `disabled`. |
| `Taginput` | Tag/chip input; suggestions, confirm keys, closable tags. |
| `DateInput` / `TimeInput` / `DateTimeInput` (+ `*Base`) | Date / time / datetime pickers; month or year via `granularity`. |
| `DateRangeInput` (+ `*Base`) | Start and end date: `[Date \| null, Date \| null]`, one calendar. |From allxsmith/bestax, MIT.
More from allxsmith/bestax
- 0.641score
bestax-layout-scaffold
allxsmith
Scaffold a complete, responsive page layout with @allxsmith/bestax-bulma — app shells/dashboards, marketing/landing pages, centered auth/settings pages, and…
SkillAFreshness: A★ 13Claude Code +9 - 0.641score
bestax-custom-component
allxsmith
Build a custom React component in the bestax/Bulma style.
SkillAFreshness: A★ 13Claude Code +9 - 0.641score
bestax-icons
allxsmith
Use icons in an app built with @allxsmith/bestax-bulma — the Icon/IconText components and the five supported libraries (Font Awesome, Material Design Icons…
SkillAFreshness: A★ 13Claude Code +9 - 0.641score
bestax-theming
allxsmith
Customize colors, branding, dark mode, and visual tokens of an app built with @allxsmith/bestax-bulma.
SkillAFreshness: A★ 13Claude Code +9 - 0.641score
bestax-migrate
allxsmith
Migrate an existing React app to @allxsmith/bestax-bulma on Bulma v1, from raw Bulma CSS classes on plain JSX (className="button is-primary") or in static…
SkillAFreshness: A★ 13Claude Code +9 - 0.641score
bestax-optimize
allxsmith
Reduce the built CSS size of an app using @allxsmith/bestax-bulma — measure raw and gzip size, then apply the cheapest lever that fits (lighter prebuilt CSS…
SkillAFreshness: A★ 13Claude Code +9 - 0.567score
Bestax
allxsmith
Props, examples, CSS variables and Agent Skills for bestax-bulma React components (Bulma v1)
ConnectorAFreshness: ALocalRead-only★ 13Claude Code +5
Signals
- Stars
- 13
- Forks
- 1
- Open issues
- 32
- Last commit (this folder)
- Oct 24, 2026 (5 days ago)
- Last release
- Oct 24, 2026 (4 days ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/allxsmith/bestax
- Website
- bestax.io/
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from allxsmith
- 0.641score
bestax-layout-scaffold
allxsmith
Scaffold a complete, responsive page layout with @allxsmith/bestax-bulma — app shells/dashboards, marketing/landing pages, centered auth/settings pages, and…
SkillAFreshness: A★ 13Claude Code +9 - 0.641score
bestax-custom-component
allxsmith
Build a custom React component in the bestax/Bulma style.
SkillAFreshness: A★ 13Claude Code +9 - 0.641score
bestax-icons
allxsmith
Use icons in an app built with @allxsmith/bestax-bulma — the Icon/IconText components and the five supported libraries (Font Awesome, Material Design Icons…
SkillAFreshness: A★ 13Claude Code +9 - 0.641score
bestax-theming
allxsmith
Customize colors, branding, dark mode, and visual tokens of an app built with @allxsmith/bestax-bulma.
SkillAFreshness: A★ 13Claude Code +9 - 0.641score
bestax-migrate
allxsmith
Migrate an existing React app to @allxsmith/bestax-bulma on Bulma v1, from raw Bulma CSS classes on plain JSX (className="button is-primary") or in static…
SkillAFreshness: A★ 13Claude Code +9 - 0.641score
bestax-optimize
allxsmith
Reduce the built CSS size of an app using @allxsmith/bestax-bulma — measure raw and gzip size, then apply the cheapest lever that fits (lighter prebuilt CSS…
SkillAFreshness: A★ 13Claude Code +9
Cite this page
bestax-form skill. Agent Mart. https://agentmart.dev/skills/allxsmith-bestax-form (last updated 2026-10-24)