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.
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.
- – Design system color variables.
- – Core styles & components.
- – Timezone-aware components for interacting with dates and times.
- – Components for generating and displaying icons.
- – Theme for monaco-editor (
- – Components for selecting items from a list.
- – Scalable interactive table component.
These are hosted on GitHub Pages as static web applications:
docs-app– Documentation site at blueprintjs.com/docs
landing-app– Landing page at blueprintjs.com
These are used as development playground environments:
demo-app– demo page that shows many components all on the same page in light and dark themes
table-dev-app– demo page that supports manual testing of all table features
These 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.
- – Documentation theme for Documentalist data.
- – ESLint configuration used in this repo and recommended for Blueprint-related projects
- – implementations for custom ESLint rules which enforce best practices for Blueprint usage
- – Karma test runner configuration
- – various utility scripts for linting, working with CSS variables, and building icons
- – implementations for custom stylelint rules which enforce best practices for Blueprint usage
- – various utility functions used in Blueprint test suites
- – TSLint configuration used in this repo and recommended for Blueprint-related projects (should be installed by
@blueprintjs/eslint-config, not directly)
- – Webpack build configuration
Lerna manages inter-package dependencies in this monorepo.
Builds are orchestrated via
lerna run and NPM scripts.
Prerequisites: Node.js v18+ (see version specified in
.nvmrc), Yarn v1.22 (see version specified in
First, ensure you have
nvm (Node Version Manager) installed.
After cloning this repo, run:
nvm useto use the supported Node version for Blueprint development.
corepack enableto activate Yarn as the Node package manager.
yarnto install all dependencies for the monorepo.
- If running on Windows:
npm install -g windows-build-toolsto install build tools globally
bashis your configured script-shell by running:
npm config set script-shell "C:\\Program Files\\git\\bin\\bash.exe"
yarn verifyto ensure you have all the build tooling working properly.
If you were previously in a working state and have just pulled new code from
- If there were package dependency changes, run
yarnat the root.
- This command is very quick if there are no new things to install.
yarn compileto get the latest built versions of the library packages in this repo.
- This command is quicker than
yarn verifysince it doesn't build the application packages (
landing-app, etc.) or run tests
- This command is quicker than
There are a few ways to run development scripts, here they are listed from simplest to more advanced usage:
yarn devfrom the root directory to watch changes across all packages and run the docs application with webpack-dev-server.
- Alternately, most libraries have a dev script to run the docs app and watch changes to only that package:
- Lastly, if you want to control exaclty which dev scripts are run and view the console output in the cleanest way,
we recommend opening separate terminal windows or splits and running local package dev tasks in each one. This is
the recommended workflow for frequent contributors and advanced developers. For example, to test changes in the core
and icons packages, you would run the following in separate terminals:
cd packages/core && yarn dev
cd packages/icons && yarn dev
cd packages/docs-app && yarn dev
Much of Blueprint's documentation lives inside source code as JSDoc comments in
.tsx files and KSS markup in
files. This documentation is extracted and converted into static JSON data using
If you are updating documentation sources (not the docs UI code which lives in
packages/docs-app or the docs theme
packages/docs-theme), you'll need to run
yarn compile from
packages/docs-data to see changes reflected in the
application. For simplicity, an alias script
yarn 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
yarn 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.