Ring UI — JetBrains Web UI components
This collection of UI components aims to provide all the necessary building blocks for web-based products built inside JetBrains, as well as third-party plugins developed for JetBrains' products.
Try now
- Try the codesandbox, based on
create-react-app
tooling, to see and try the UI components - Check out list of examples for each component
Installation
npm install @jetbrains/ring-ui
Quick start
The easiest way is to import necessary components as ES modules:
// You need to import RingUI styles once
import '@jetbrains/ring-ui/dist/style.css';
import alertService from '@jetbrains/ring-ui/dist/alert-service/alert-service';
import Button from '@jetbrains/ring-ui/dist/button/button';
...
export const Demo = () => {
return (
<Button onClick={() => alertService.successMessage('Hello world')}>
Click me
</Button>
);
};
The bundle size will depend on the amount of components you imported.
Generating app (deprecated)
- Install Yeoman and Ring UI generator:
npm install -g yo@next-4 @jetbrains/generator-ring-ui
- Go to the root directory of your project (create one if necessary), run
yo @jetbrains/ring-ui
and enter the name of the project. Then runnpm install
to install all the necessary npm dependencies. - Your project is ready to be developed. The following commands are available:
-
npm start
to run a local development server -
npm test
to launch karma tests -
npm run lint
to lint your code -
npm run build
to build a production bundle -
npm run create-component
to create a new component template with styles and tests
Building Ring UI from source via Webpack
In case you have complex build, and you want to compile RingUI sources together with your sources in a same build process, you can use the following configuration:
-
Install Ring UI with
npm install @jetbrains/ring-ui --save-exact
-
If you are building your app with webpack, make sure to
import
ring-ui components where needed. Otherwise, create an entry point (for example,/app/app__components.tpl.js
) andimport
the components there.import React from 'react'; import ReactDOM from 'react-dom'; import LoaderInline from '@jetbrains/ring-ui/components/loader-inline/loader-inline'; ReactDOM.render(<LoaderInline/>, document.getElementById('container'));
-
Create
webpack.config.js
with the following contents (example):const ringConfig = require('@jetbrains/ring-ui/webpack.config').config; const webpackConfig = { entry: 'src/entry.js', // your entry point for webpack output: { path: 'path/to/dist', filename: '[name].js' }, module: { rules: [ ...ringConfig.module.rules, <Your rules here> ] } }; module.exports = webpackConfig;
Contributing
See CONTRIBUTING.md