Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

1,078 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

bestax

npm version npm downloads create-bestax bundle size TypeScript Coverage Bulma License: MIT Socket Badge OpenSSF Scorecard npm provenance Security policy

TypeScript-first React component library for the Bulma v1 CSS framework β€” 80+ fully typed components β€” plus a project scaffolder and AI agent tooling.

πŸ“‹ At a glance

Library @allxsmith/bestax-bulma β€” npm install @allxsmith/bestax-bulma
Scaffolder create-bestax β€” npm create bestax@latest my-app
Requires React ^18 || ^19 (+ react-dom). Bulma v1 is the library's only runtime dependency β€” installed automatically
Styles import '@allxsmith/bestax-bulma/bestax.css'; β€” Bulma v1 + the bestax extras (more flavors)
Icons (optional) Font Awesome, Material Design Icons, Ionicons, Material Icons, Material Symbols β€” all optional peer dependencies
Docs bestax.io Β· Storybook
LLM docs llms.txt (curated index) Β· llms-full.txt (complete docs, one file)
Agent Skills npx skills add https://github.com/allxsmith/bestax --skill bestax-layout-scaffold (all four skills)
Community Discord Β· Stack Overflow bestax Β· Issues

If you are an AI agent or LLM: fetch https://bestax.io/llms.txt for a curated index of the full documentation, or https://bestax.io/llms-full.txt for the complete docs in a single file, before answering questions about or writing code with this library. Every page on bestax.io is also available as raw markdown β€” see the LLMs guide.

Full documentation, guides, and API reference: πŸ‘‰ https://bestax.io β€” the docs site is always the most complete and up-to-date resource.


πŸš€ Quick start

New project

Scaffold a Vite app with everything wired up (CSS flavor, icon library, optional AI skills + CLAUDE.md):

npm create bestax@latest my-app
# or: pnpm create bestax my-app

Useful flags: -t vite|vite-ts (template), -b complete|prefixed|no-helpers|no-helpers-prefixed|no-dark-mode (CSS flavor), -i fontawesome|mdi|ionicons|material-icons|material-symbols|none (icons), --skills (install the Agent Skills into .claude/skills), -y (accept defaults). See the create-bestax README.

Existing project

npm install @allxsmith/bestax-bulma
# or: pnpm add @allxsmith/bestax-bulma

Import the bundled CSS once (Bulma v1 + the bestax extras), then use components:

import '@allxsmith/bestax-bulma/bestax.css';
import { Button } from '@allxsmith/bestax-bulma';

function App() {
  return (
    <Button color="primary" onClick={() => alert('Clicked!')}>
      Click Me
    </Button>
  );
}

Prefer stock Bulma? import 'bulma/css/bulma.min.css'; works too β€” you'll just miss the bestax-only components' styles (add @allxsmith/bestax-bulma/extras.css for those).

Theming, dark mode, and configuration are one wrapper away:

import { Theme, ConfigProvider } from '@allxsmith/bestax-bulma';

function Root() {
  return (
    <Theme isRoot colorMode="system">
      {/* colorMode: 'light' | 'dark' | 'system' */}
      <ConfigProvider iconLibrary="fa">
        <App />
      </ConfigProvider>
    </Theme>
  );
}

Installation guide Β· Configuration


πŸ“¦ What's in this repo

Path Package What it is
bulma-ui/ @allxsmith/bestax-bulma The component library
create-bestax/ create-bestax Project scaffolder β€” npm create bestax@latest
bestax-migrate/ bestax-migrate Codemods for migrating existing apps from other React Bulma libraries
bestax-mcp/ bestax-mcp MCP server β€” component props, examples and skills for AI coding agents
docs/ β€” Docusaurus source of bestax.io
skills/ β€” Agent Skills for coding agents (also bundled into create-bestax)

The published packages are versioned and released independently.


🧩 Components

80+ components covering all of Bulma v1, plus bestax extras (Carousel, Dialog, Sidebar, Steps, date/time pickers, and more):

  • Elements β€” Button, Table, Tag, Title, Icon, Image, Notification, Progress, Skeleton, Content, Delete, and typed HTML wrappers (Paragraph, Span, Figure, lists, …)
  • Components β€” Navbar, Modal, Card, Dropdown, Menu, Message, Pagination, Panel, Tabs, Breadcrumb, Toast, Tooltip, Steps, Sidebar, Carousel, Collapse, Dialog, Loading
  • Form β€” Field/Control, Input, Select, TextArea, Checkbox(es), Radio(s), Switch, Slider, Rate, File, Numberinput, Autocomplete, Taginput, and DateInput / TimeInput / DateTimeInput pickers
  • Layout β€” Container, Section, Hero, Level, Media, Footer
  • Columns & Grid β€” classic 12-column flexbox columns and the Bulma v1 CSS Grid
  • Helpers β€” Theme, ConfigProvider, useBulmaClasses, classNames

Migrating from v2? Snackbar was merged into Toast in v3 β€” see the migration guides.


🎨 Styling and theming

Pick one CSS flavor (all shipped with the library β€” matching create-bestax -b):

Import What you get
@allxsmith/bestax-bulma/bestax.css Default. Bulma v1 + bestax extras
@allxsmith/bestax-bulma/versions/bestax-prefixed.css All classes prefixed bestax- β€” pair with <ConfigProvider classPrefix="bestax-">
@allxsmith/bestax-bulma/versions/bestax-no-helpers.css Without Bulma helper classes
@allxsmith/bestax-bulma/versions/bestax-no-helpers-prefixed.css Prefixed, without helpers
@allxsmith/bestax-bulma/versions/bestax-no-dark-mode.css Without dark-mode styles
@allxsmith/bestax-bulma/extras.css bestax extras only β€” for use alongside stock bulma/css/bulma.min.css
@allxsmith/bestax-bulma/scss/* Raw SCSS for full customization
  • Dark mode: <Theme colorMode="dark"> (or "system" to follow the OS) β€” docs
  • Brand colors, fonts, radius: the Theme component overrides Bulma's --bulma-* CSS variables (globally with isRoot, or scoped to a subtree). Default primary color is #1e6b99
  • Class prefixing & icon defaults: ConfigProvider sets classPrefix and iconLibrary for a whole tree
  • CSS variables reference: docs

πŸ€– For AI Tools

Building with an AI agent (Claude Code, Cursor, Copilot)? bestax-bulma ships LLM-optimized docs:

  • πŸ“˜ LLMs guide β€” how to use the library with AI tools

  • πŸ“„ llms.txt β€” curated index Β· llms-full.txt β€” the full docs in one file Β· every docs page is also served as raw markdown

  • πŸ”Œ MCP server β€” let the agent query the library instead of reading it: props (including compound parts), ~900 examples, --bulma-* variables, and the skills as prompts. Offline, and pinned to the version you have installed.

    claude mcp add bestax -- npx -y bestax-mcp
  • 🧩 Agent Skills β€” teach your agent the bestax way:

    Skill Use it when…
    bestax-layout-scaffold Turning a high-level request (dashboard, landing page, …) into a responsive page
    bestax-form Building forms β€” Field/Control composition and the full input inventory
    bestax-theming Customizing colors, fonts, dark mode via Theme and --bulma-* variables
    bestax-custom-component Building a new custom component beyond stock Bulma, the bestax way
    npx skills add https://github.com/allxsmith/bestax --skill bestax-layout-scaffold

    New projects get the skills automatically with npm create bestax@latest my-app --skills (plus a generated CLAUDE.md).


⭐ Why bestax-bulma?

  • Built for Bulma v1.x β€” most other React Bulma libraries are stuck on Bulma 0.9.4
  • 100% TypeScript β€” every component and prop fully typed
  • One runtime dependency: Bulma β€” it ships with the library; clean install, fewer security concerns
  • Lightweight β€” see the live bundlephobia badge; tree-shakeable ESM + CJS
  • 99% test coverage β€” enforced in CI by the jest config, not just claimed
  • Active developer support β€” issues, questions, and PRs get fast responses

πŸ”’ Hardened by default

Supply-chain security here is a standing constraint on how the project is built, not a checklist we filled in once:

  • Signed provenance on every release β€” each tarball carries a sigstore attestation linking it to the exact commit and CI run that produced it. Check it yourself with npm audit signatures, or on the package page's Provenance section.
  • npm OIDC trusted publishing β€” releases authenticate with short-lived, per-run tokens. There is no long-lived NPM_TOKEN in this repo to steal.
  • Signed release commits β€” release commits and tags are GPG-signed, and main rejects unsigned commits outright.
  • Socket.dev scans every PR β€” dependency changes are checked for malware, install scripts, obfuscated code, and privilege escalation before they can reach main.
  • Every GitHub Action pinned to a full commit SHA β€” no movable tags, so a compromised action release can't roll silently into the pipeline.
  • Install scripts blocked by default β€” dependency install/postinstall scripts don't run unless explicitly allow-listed one at a time, each with a written rationale (pnpm-workspace.yaml).
  • 3-day dependency cooldown β€” freshly published versions won't install. This is the main defense against account-takeover worms, which are usually yanked within hours.
  • Frozen lockfile + audit gate β€” CI installs exactly what the reviewed lockfile resolves and fails on high-severity advisories.
  • CodeQL, Dependency Review, and Dependabot β€” static analysis over both the source and the workflow files, PR-level advisory blocking, and weekly grouped dependency updates.
  • Layered AI review before merge β€” every PR gets a CodeRabbit review plus an independent adversarial Claude review that deliberately runs a different model from the one writing AI-authored changes. On top of that, main requires green CI, one approving review, and a human merge. AI agents are structurally barred from editing the workflows, release config, or supply-chain settings that gate them.
  • Inbound issues and PRs are security-triaged β€” a read-only AI pass flags code crafted to harm whoever runs it, prompt injection aimed at our own automation, and social engineering. Flagged items are labeled and refused by every AI entry point until a human clears them. It fails closed, so an inconclusive scan flags rather than passes, and the model session itself has no write tools β€” a separate deterministic step applies the label, so the AI never posts or acts on anything.

Full detail: SECURITY.md Β· Security guide


πŸ’¬ Community


Contributing

Want to contribute or run the project locally? See CONTRIBUTING.md. In short:

corepack enable && pnpm install --frozen-lockfile
pnpm all   # build, typecheck, test + coverage, lint β€” the pre-PR gate

This is a pnpm + Turborepo monorepo; contributor-facing AI context lives in CLAUDE.md (mirrored for other tools in AGENTS.md).


πŸ™ Attribution

bestax-bulma is built on top of the incredible Bulma CSS framework, Β© Jeremy Thomas and licensed under the MIT License. Some example content and documentation is adapted from the Bulma website (CC BY-NC-SA 4.0), Β© Jeremy Thomas.

If you find Bulma useful, please consider sponsoring Jeremy Thomas to support its continued development.

We are not affiliated with Bulma or Jeremy Thomas in any way β€” we're just big fans of the Bulma framework!


License

MIT Β© Alex Smith

About

A fully-typed React component library for the Bulma CSS framework. Build modern UIs quickly with reusable, accessible, and customizable Bulma-based React components.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

11 stars

Watchers

1 watching

Forks

Releases

Sponsor this project

Packages

Used by

Contributors

Languages