README.md
Blueprint is a React-based UI toolkit for the web.
It is optimized for building complex, data-dense web interfaces for desktop applications which run in modern browsers. This is not a mobile-first UI toolkit.
Read the introductory blog post ▸
Read frequently asked questions (FAQ) on the wiki ▸
Blueprint's change log and migration guides for major versions live on the repo's Github wiki.
This repository contains multiple projects in the packages/ directory that fall into 3 categories:
These are the component libraries we publish to NPM.
These are hosted on GitHub Pages as static web applications:
docs-app – Documentation site at blueprintjs.com/docslanding-app – Landing page at blueprintjs.comThese are used as development playground environments:
demo-app – demo page that shows many components all on the same page in light and dark themestable-dev-app – demo page that supports manual testing of all table featuresThese packages define development dependencies and contain build configuration. They adhere to the standard NPM package layout, which allows us to keep clear API boundaries for build configuration and isolate groups of devDependencies. They are published to NPM in order to allow other Blueprint-related projects to use this infrastructure outside this monorepo.
Looking for places to contribute to the codebase? First read the contribution guidelines, then check out the "help wanted" label.
pnpm manages third-party and inter-package dependencies in this monorepo. Builds are orchestrated via Nx's task runner and NPM scripts. Lerna-Lite is used to prepare releases.
Prerequisites: Node.js v24.11+ (see version specified in .nvmrc), pnpm v10.x (see version specified in package.json)
First, ensure you have nvm (Node Version Manager) installed.
After cloning this repo, run:
nvm use to use the supported Node version for Blueprint development.corepack enable to activate pnpm as the Node package manager.pnpm install to install all dependencies for the monorepo.
npm install -g windows-build-tools to install build tools globally
Ensure bash is your configured script-shell by running:
npm config set script-shell "C:\\Program Files\\git\\bin\\bash.exe"
(reset this by running npm config delete script-shell)
pnpm verify to ensure you have all the build tooling working properly.
pnpm dev:demo to start the demo app and verify your setup is working.If you were previously in a working state and have just pulled new code from develop:
pnpm install at the root.
pnpm compile to get the latest built versions of the library packages in this repo.
pnpm verify since it doesn't build the application packages (docs-app,landing-app, etc.) or run testsThere are a few ways to run development scripts, here they are listed from simplest to more advanced usage:
pnpm dev from the root directory to watch changes across all packages and run the docs application with webpack-dev-server.pnpm dev:corepnpm dev:docspnpm dev:datetimepnpm dev:demopnpm dev:selectpnpm dev:tablecd packages/core && pnpm devcd packages/icons && pnpm devcd packages/docs-app && pnpm devMuch of Blueprint's documentation lives inside source code as JSDoc comments in .tsx files and KSS markup in .scss files. This documentation is extracted and converted into static JSON data using documentalist. If you are updating documentation sources (not the docs UI code which lives in packages/docs-app or the docs theme in packages/docs-theme), you'll need to run pnpm compile from packages/docs-data to see changes reflected in the application. For simplicity, an alias script pnpm docs-data exists in the root to minimize directory hopping.
The One-time setup and Incorporating upstream changes steps should produce the generated source code in this repo used to build the icons documentation. This is sufficient for most development workflows.
If you are updating icons or adding new ones, you'll need to run pnpm compile in packages/icons to see those changes reflected before running any of the dev scripts.
This project is made available under the Apache 2.0 License.