Blueprint is a React-based UI toolkit for the web.
It is optimized for building complex, data-dense web interfaces for desktop applications. If you rely heavily on mobile interactions and are looking for a mobile-first UI toolkit, this may not be for you.
Read the introductory blog post ▸
Support question? We use the blueprintjs tag on Stack Overflow ▸
This repository contains multiple projects in the packages/ directory that fall into 3 categories:
These are the component libraries we publish to NPM.
– Core styles & components.
– Components for interacting with dates and times.
– Documentation theme for Documentalist data.
– Scalable interactive table component.
– Incubator and staging area for new components still under initial development.
These are hosted on GitHub Pages as static web applications:
docs-app– Documentation site at blueprintjs.com/docslanding-app– Landnig page at blueprintjs.com
These are used as development playground environments:
table-dev-app– demo page that supports manual testing of all table features
These private 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. In the future, we might publish these packages to allow other Blueprint projects to use this infrastructure outside this monorepo.
karma-build-scriptsnode-build-scriptstslint-configwebpack-build-scripts
Lerna manages inter-package dependencies in this monorepo.
Builds are orchestrated via lerna run and NPM scripts.
Prerequisites: Node.js v8+, Yarn v1.0+
After cloning this repo, run:
yarnto install all dependencies.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 develop:
- If there were package dependency changes, run
yarnat the root.- This command is very quick if there are no new things to install.
- Run
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 (docs-app,landing-app, etc.) or run tests
- This command is quicker than
Each library has its own dev script which you can run to watch changes to that package and run the docs application with webpack-dev-server: yarn dev:core, yarn dev:datetime, etc.
- One exception is
table—since it has its own dev application, thedev:tablescript doesn't run the docs site.- Run the table dev application using
yarn devin the packages/table-dev-app folder.
- Run the table dev application using
- You may also choose to watch changes across all packages by running
yarn dev:allfrom the root directory.
- Edit the
package.jsonwhere you wish to change dependencies. - Run
yarnat the root to update lockfiles. - Commit the result.
Much 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), you'll need to run yarn compile from the docs-data package to see it reflected in the application.
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/core to see those changes reflected before
running any of the dev scripts.
Looking for places to contribute to the codebase? Check out the "help wanted" label.
Read about our contribution guidelines and development practices to give your PR its best chance at getting merged.
This project is made available under the Apache-2.0 License.