Mosaic Design System
!WIP! :)
Features
Primary Deps
- React
- Tailwind CSS
- Font awesome for icons
- NX for repo management
Getting Started
Intall deps: yarn
Basic Usage
Just import and use. No context providers or wrapping components required.
import { Box, Button } from '@stoplight/mosaic';
const MyComponent = () => {
return (
<Box>
<Button appearance="primary" onClick={() => alert('hello')}>
Click Me
</Button>
</Box>
);
};
Playground
Visit http://localhost:4200
after starting. Most of the components in the left sidebar are semi-transparent - these
are placeholders for future work.
yarn start playground
yarn start playground-api
Building
All libraries: yarn build:libs
Specific lib: yarn build core --prod --with-deps
Built apps and libs are put in the dist
folder.
Bundle Size
Bundle size is important. Run yarn size-limit
after yarn build:libs
to check end user bundle size for the libraries.
Run yarn size-limit --why
to open webpack visualizer for the libraries.
Important Files
libs/core/src/componets/Icon/index.ts
: The icons that are bundled with the library. Other icons can be used by
loading font awesome in the consuming applicationlibs/core/src/theme.css
: Css variables for the built in themes (light, dark)libs/core/tailwind.config.js
: Primary tailwind config, important!libs/core/src/utils/*
: Utility functions that translate react props -> tailwind classes
Generating
See NX_README.md
for more details on nx commands.
New Library
Change --importPath
to the appropriate package name.
yarn nx g @nrwl/react:library --publishable --importPath @stoplight/mosaic --buildable
New App
Change the final argument to the appropriate app name.
yarn nx generate @nrwl/express:application playground-api