CLAUDE.md@bulma-ui/src/elements · git:20261012.582aff0 · 2026-10-12 · sha256 5ec2aefd65f8bbc9

CLAUDE.md@bulma-ui/src/elements git:20261012.582aff0A

Immutable. This exact content never changes and is served at /api/v1/blob/5ec2aefd65f8bbc9.

# elements/ — simple building blocks

Bulma's _elements_: single-purpose components that render (mostly) one HTML element with Bulma
classes — Button, Box, Icon, Tag, Title, and friends (the generated
`skills/bestax-custom-component/references/component-catalog.md` is the authoritative list).

**Belongs here?** One element, one Bulma concept, no subcomponents. An element may keep a
little state of its own, the kind a native control keeps (a toggle's pressed flag that a caller
can take over), but nothing that coordinates several parts. Interactive multi-part widgets
(dropdowns, modals, …) go in `../components/`; page structure in `../layout/`; anything with a
`Field`/`Control` role in `../form/`.

Layout is flat: `Foo.tsx` + `Foo.stories.tsx`, with tests in `__tests__/Foo.test.tsx`.
Follow the anatomy rule in `bulma-ui/CLAUDE.md` (test + story + docs page + export + catalog).

Notes:

- Also home to plain semantic-HTML wrappers (Paragraph, Span, Strong, the Table family) that
  exist so helper props work on ordinary markup.
- Everything here is styled by stock Bulma — no SCSS, except extras like `LinkButton`
  (partial in `../scss/elements/`).
- `Icon` supports multiple icon libraries via the `library` prop (default `fa`); prefix handling
  has known sharp edges (#189) — don't change `name`/`icon` semantics casually.