The aim of this library is to provide a toolbelt of components, that will allow us to compose sites together more quickly and consistently.
We are building this with a living style guide to showcase how to use the various components, using React Styleguidist.
The styleguide will be publicly available at https://everydayhero.github.io/constructicon
While developing, it is useful to serve the styleguide using yarn start
, which will hot reload changes as you develop.
One of the main challenges is providing the required flexibility.
The TraitsProvider
component allows us to set our own themes and defaults.
We can manage the look of most components via various props, and even have custom styles injected into them via the styles
prop.
A few breaking changes were introduced in 1.0.0
that need to be considered on the following components:
-
Changes from
styles
object (e.g.styles = { ... }
) to use nested keys, e.g.{ root: { ... }, outer: { ... } }
-
Removed nested
styles
object weirdness. So instead of:{ wrapper: { content: { ... }, overlay: { ... } }, container: { ... }, close: { ... } }
It is now:
{ content: { ... }, overlay: { ... }, container: { ... }, close: { ... } }
-
Change
styles.form
tostyles.root
for consistency. -
Change
styles.background
tostyles.root
for consistency.
Constructicon now uses Emotion as it's CSS in JS solution. There are a few small things you will need to do to ensure your CSS is compatible.
- Any child CSS selectors are required to be prefixed with an
&
e.g.'& > div'
,&:hover
- Define your keyframes in their own object and pass them into withStyles, which will then pass your computed keyframes back to your styles function e.g. see components/icon/styles.js
- If you are using your own renderDocument function, renderServerCSS is now a function that takes your server rendered string of HTML, and returns an updated HTML string with the required styles inlined in the markup
yarn
to install dependenciesyarn start
to generate and serve style guideyarn test
to run tests (linting and unit tests)yarn run test:lint
to run lintingyarn run test:unit
to run unit testsyarn run build
to build for productionyarn run build:styleguide
to build the styleguide
We are aiming to build from the ground up with tests where appropriate, using Mocha, Chai and Enzyme.
To execute the tests, simply run yarn test
.