UI
A design system for Next.js applications, using Sass as the CSS preprocessor.
![Coverage Status](https://coveralls.io/repos/github/anephenix/ui/badge.svg?branch=master)
Installation
npm i @anephenix/ui --save
Dependencies
- Node.js (12)
- React (Version 16)
- Sass Lang (recommend installing @zeit/next-sass if using with Next.js)
Setup
In order to use Anephenix's React UI within your applications, you will need to do 2 things:
1 - Adjust your Webpack configuration in order to load the react components and compile them with sass as the CSS preprocessor.
2 - Wrap your React app in a higher-order-component in order to inherit the theme for the design system.
Step 1
Make sure that the next.config.js file for your Next.js app has this code:
const path = require('path');
const withSass = require('@zeit/next-sass');
const applyWebpackConfig = (test = /\.jsx/) => {
return (config, options) => {
config.module.rules.push({
test,
use: [options.defaultLoaders.babel]
});
return config;
};
};
module.exports = withSass({
sassLoaderOptions: {
sassOptions: {
includePaths: [path.resolve('node_modules')]
}
},
webpack: applyWebpackConfig()
});
The sassLoader options configuration allows next-sass to compile the CSS from files that are sourced from the node_modules folder.
The applyWebpackConfig
function ensures that you can load the React components from the node_modules folder.
By default, applyWebpackConfig
will look for .jsx files in the @anephenix/ui npm package.
Step 2
In your pages/_app.js file, wrap the page components with a <Theme>
component, like in the example below:
import App from 'next/app';
import React from 'react';
import Head from 'next/head';
import { Theme } from '@anephenix/ui';
class MyApp extends App {
render() {
const { Component, pageProps } = this.props;
return (
<>
<Head>
<meta
name="viewport"
content="initial-scale=1.0, width=device-width"
/>
<title>My App</title>
</Head>
<Theme>
<Component {...pageProps} />
</Theme>
</>
);
}
}
export default MyApp;
The <Theme>
component is a higher order component that ensure that the Sass files are loaded that apply global styling rules for the design system.
Usage
To be fleshed out.
tests
npm t
License and credits
©2020 Anephenix OÜ. UI is licenced under the MIT Licence.