CLAUDE.md@bulma-ui/src/components · git:20260907.c3442d4 · 2026-09-07 · sha256 58b31a924fde46e4
CLAUDE.md@bulma-ui/src/components git:20260907.c3442d4A
Immutable. This exact content never changes and is served at /api/v1/blob/58b31a924fde46e4.
# components/ — composite & interactive widgets
Bulma's _components_ (Card, Modal, Navbar, Dropdown, …) **plus the bestax extras** — components
beyond stock Bulma (Carousel, Dialog, Toast, …). The generated
`skills/bestax-custom-component/references/component-catalog.md` is the authoritative inventory.
**Belongs here?** Multi-part or stateful UI chrome. Single-element primitives go in
`../elements/`; page scaffolding in `../layout/`; inputs in `../form/`.
Conventions:
- Multi-part components use the compound pattern — `Card.Header`, `Navbar.Item`, `Modal.Card` —
statics attached via `withSubComponents` (`../helpers/withSubComponents.ts`, mutates the
base, never wraps), exported from the same file. Each compound family ships the
compound artifacts listed under Conventions in `bulma-ui/CLAUDE.md`: identity tests in a
`describe('Compound components')` block, a dot-path render test, a `CompoundUsage` story,
and a `### Compound (dot-notation) usage` docs example.
- **Stock Bulma components ship no CSS.** Extras pair with a partial in `../scss/components/`
following the pattern in `../scss/CLAUDE.md` — and a stock component can still have an
extending partial (Tabs gains vertical mode from `_tabs.scss`), so check
`../scss/components/_index.scss` before assuming.
- A new extra (not in the Bulma spec) needs an issue discussion first — see "Component Scope"
in `CONTRIBUTING.md`.
- Some components are polymorphic (`Navbar.Item`/`Menu.Item` accept `as`); keep polymorphism
consistent when adding interactive items (#188 tracks widening `Button`).
Follow the anatomy rule in `bulma-ui/CLAUDE.md` (test + story + docs page + export + catalog).