UNPKG

@dabapps/roe

Version:

A collection of React components, styles, mixins, and atomic CSS classes to aid with the development of web applications.

277 lines (261 loc) 5.74 kB
/* global __dirname */ /* eslint-disable @typescript-eslint/no-var-requires */ const ForkTsCheckerWebpackPlugin = require('fork-ts-checker-webpack-plugin'); const fs = require('fs'); // eslint-disable-next-line import/no-extraneous-dependencies const path = require('path'); const introduction = [ { name: 'About', content: 'docs/introduction/about.md', }, { name: 'Development status', content: 'docs/introduction/development-status.md', }, { name: 'Installation', content: 'docs/introduction/installation.md', }, { name: 'Getting started', content: 'docs/introduction/getting-started.md', }, { name: 'Contributing', content: 'docs/introduction/contributing.md', }, ]; const components = [ { name: 'App', components: 'src/ts/components/app/**/*.tsx', }, { name: 'Navigation', components: 'src/ts/components/navigation/**/*.tsx', }, { name: 'Content', components: 'src/ts/components/content/**/*.tsx', }, { name: 'Grid', components: 'src/ts/components/grid/**/*.tsx', }, { name: 'Tabs', components: 'src/ts/components/tabs/**/*.tsx', }, { name: 'Tables', components: 'src/ts/components/tables/**/*.tsx', }, { name: 'Modals', components: 'src/ts/components/modals/**/*.tsx', }, { name: 'Forms', components: 'src/ts/components/forms/**/*.tsx', }, { name: 'Prototyping', components: 'src/ts/components/prototyping/**/*.tsx', }, { name: 'Banners', components: 'src/ts/components/banners/**/*.tsx', }, { name: 'Pagination', components: 'src/ts/components/pagination/**/*.tsx', }, { name: 'Misc', components: 'src/ts/components/misc/**/*.tsx', }, { name: 'Precomposed', components: 'src/ts/components/precomposed/*.tsx', }, ]; const less = [ { name: 'Atomic float classes', content: 'src/less/float.examples.md', }, { name: 'Atomic padding & margin classes', content: 'src/less/padding-and-margin.examples.md', }, { name: 'Atomic display classes', content: 'src/less/display.examples.md', }, { name: 'Atomic position classes', content: 'src/less/position.examples.md', }, { name: 'Atomic text classes', content: 'src/less/text.examples.md', }, { name: 'Atomic text align classes', content: 'src/less/text-align.examples.md', }, { name: 'Variables', content: 'src/less/variables.examples.md', }, ]; function getExampleFilename(componentPath) { return componentPath.replace(/\.tsx?$/, '.examples.md'); } function updateExample(props, exampleFilePath) { const { settings, lang } = props; if (settings && typeof settings.file === 'string') { const filepath = path.resolve(path.dirname(exampleFilePath), settings.file); if (lang === 'less') { settings.static = true; } delete settings.file; return { content: fs.readFileSync(filepath, 'utf8'), settings: settings, lang: lang, }; } return props; } const webpackConfig = { resolve: { extensions: ['.ts', '.tsx', '.js'], }, module: { rules: [ { test: /\.tsx?$/, loader: 'ts-loader', exclude: /node_modules/, options: { // disable type checker - we will use it in fork plugin transpileOnly: true, }, }, { test: /\.(?:less|css)$/, use: [ { loader: 'style-loader', }, { loader: 'css-loader', }, { loader: 'less-loader', options: { paths: [path.resolve(__dirname, 'node_modules')], // lessOptions: { // strictMath: true, // }, }, }, ], }, ], }, plugins: [ new ForkTsCheckerWebpackPlugin({ typescript: { configFile: path.resolve(__dirname, 'tsconfig.docs.json'), }, }), ], }; const reactDocGenTypescriptConfig = { propFilter: function(prop /*, component*/) { if ( prop.description && (!prop.parent || !prop.parent.fileName.endsWith('react/index.d.ts')) ) { return true; } return false; }, }; module.exports = { require: [path.join(__dirname, 'docs/less/index.less')], title: "Roe - DabApps' Project Development Kit", components: 'src/ts/components/**/*.{ts,tsx}', moduleAliases: { '@dabapps/roe': path.resolve(__dirname, 'src/ts/index.ts'), }, ignore: [], propsParser: require('react-docgen-typescript').withCustomConfig( './tsconfig.json', reactDocGenTypescriptConfig ).parse, webpackConfig: webpackConfig, getExampleFilename: getExampleFilename, updateExample: updateExample, assetsDir: path.join(__dirname, 'docs/static/'), template: { favicon: 'images/roe-favicon.png', }, styleguideComponents: { Logo: path.join(__dirname, 'docs/components/logo'), }, sections: [ { name: 'Introduction', content: 'docs/introduction/description.md', sections: introduction, }, { name: 'Components', sections: components, }, { name: 'Less', sections: less, }, ], styles: { /* Component: { class: { property: 'value' } }, */ Markdown: { pre: { overflow: 'auto', }, }, Pre: { pre: { overflow: 'auto', }, }, Code: { code: { border: 'none', margin: 0, padding: 0, }, }, Type: { type: { whiteSpace: 'normal', }, }, }, theme: { color: { linkHover: '#EF592B', }, }, };