yarn add @dlghq/dialog-components
or
npm install --save @dlghq/dialog-components
import React from 'react';
import { render } from 'react-dom';
import { Avatar } from '@dlghq/dialog-components';
const container = document.getElementById('container');
render(
<Avatar
title="Hipster Partycat"
image="https://octodex.github.com/images/hipster-partycat.jpg"
/>,
container
);
We're not compiling JS & CSS code before publishing. You have to update or add webpack configuration to your build pipeline.
yarn add babel-loader postcss-loader css-loader style-loader svg-sprite-loader
yarn add @dlghq/babel-preset-dialog @dlghq/postcss-dialog
// webpack.config.js
const fs = require('fs');
const path = require('path');
function resolve(...paths) {
return fs.realpathSync(path.join(__dirname, ...paths));
}
const whitelist = [
resolve('src'), // your application code
resolve('node_modules/@dlghq/dialog-components/src'),
resolve('node_modules/@dlghq/markdown'),
resolve('node_modules/@dlghq/react-l10n'),
resolve('node_modules/@dlghq/dialog-types'),
resolve('node_modules/@dlghq/dialog-utils'),
resolve('node_modules/@dlghq/country-codes')
];
module.exports = {
module: {
rules: [
{
test: /\.js$/,
include: whitelist,
loader: 'babel-loader',
options: {
babelrc: false,
cacheDirectory: true,
presets: [
[
'@dlghq/dialog',
{
modules: false,
runtime: false
}
]
]
}
},
{
test: /\.css$/,
use: [
'style-loader',
{
loader: 'css-loader',
options: {
modules: false,
importLoaders: 1
}
},
{
loader: 'postcss-loader',
options: {
plugins() {
return require('@dlghq/postcss-dialog')();
}
}
}
],
include: [
resolve('node_modules/@dlghq/dialog-components/src/styles/global.css')
]
},
{
test: /\.css$/,
include: whitelist,
exclude: [
resolve('node_modules/@dlghq/dialog-components/src/styles/global.css')
],
use: [
'style-loader',
{
loader: 'css-loader',
options: {
modules: true,
importLoaders: 1,
localIdentName: '[name]__[local]'
}
},
{
loader: 'postcss-loader',
options: {
plugins() {
return require('@dlghq/postcss-dialog')();
}
}
}
]
},
{
test: /\.(jpg|png|svg|gif)$/,
exclude: resolve('node_modules/@dlghq/dialog-components/src/components/Icon/svg'),
loader: 'file-loader'
},
{
test: /\.svg$/,
include: resolve('node_modules/@dlghq/dialog-components/src/components/Icon/svg'),
loader: 'svg-sprite-loader'
}
]
}
};
For some complex components, like AuthForm
you should wrap your components tree
by @dlghq/react-l10n
Provider
component.
Before publishing we generate messages.json
bundle, which you should pass to Provider
.
import React from 'react';
import { render } from 'react-dom';
import { Provider } from '@dlghq/react-l10n';
import dialogMessages from '@dlghq/dialog-components/src/messages.json';
import appMessages from './messages';
const container = document.getElementById('container');
const messages = { ...dialogMessages, ...appMessages };
render(
<Provider messages={messages} locale={navigator.language}>
<App />
</Provider>,
container
);
NPM scripts:
npm start
start dev servernpm run create
create new componentnpm test
run testsnpm run lint
run lintersnpm run format
run formattersnpm run build
build librarynpm run docs
build docsnpm run release
build & publish to npm & publish to gh-pages