Create the building blocks of your app with simple, open-source design system infrastructure.
Slack | Website | NPM Package | Docs
Mirrorful is simple, open-source design system infrastructure. Install Mirrorful to generate colors and other design tokens for your project. Then, import these tokens directly into your app.
- Start new projects with a source of truth
- Visually modify your theme
- Generate colors
- 🔜 Theme Templates
- 🔜 Lightweight Headless Component Library
- 🔜 Eslint rules
- 🔜 Propagate tokens across projects
- 🔜 Figma integration
And more...
Design systems are the building blocks of your app, but many projects don't adopt them until it's too late because they are hard to set up correctly. Mirrorful gets you set up for a basic design system in minutes while leaving flexibility down the line for customizations. Its lightweight and dead simple.
We're on a mission to help your project be as beautiful as possible. The bar for high quality design is getting higher. We want to help everyone add simple design tokens to new (and existing!) projects.
Simple design systems also speed up development — even early-stage projects! One report suggests its 47% faster to build a simple form using a design system. It's useful for engineers, designers, and especially your customers if there isn't a random color for each button in your app.
Mirrorful is a NPM package intended to be installed as dev dependency.
npm install mirrorful -D
or
yarn add mirrorful -D
The following commands will start a local editor at localhost:5050
.
yarn run mirrorful
or
npx mirrorful
After configuring your theme in the editor, you can export it to be used by your app.
We currently export to the following file types: .js
, .ts
, .css
, .scss
, .json
Using CSS Variables
Example:
.primary-button {
background-color: var(--color-primary);
}
.primary-button:hover {
background-color: var(--color-primary-hover);
}
Using Javascript Constants
Example:
<button backgroundColor={{ Tokens.primary.base }}>Click here</button>
We strive to be component library agnostic. Whether you're using Material UI, Chakra UI, Tailwind, Ant Design, or even your in-house library, Mirrorful hooks right in.
create-react-app
may warn that you are trying to import from outside the src
directory. We are working on a long-term solution, but for now, we would recommend making a copy of the .mirrorful
folder in your src
directory.
Check out our examples:
- Mirrorful 🤝 Tailwind CSS (and Next)
- Mirrorful 🤝 Chakra UI
- Mirrorful 🤝 Basic Create React App
- Mirrorful 🤝 Basic Nuxt 3 App
Looking for a specific example? Request one here!
- Slack - for live discussion with the community and the Mirrorful team.
- GitHub Discussions - for help with building and deeper conversations about features.
- GitHub Issues - for any bugs and errors you encounter using Mirrorful.
- Twitter - stay up to date with the latest product updates. Share your memes!
This repo is entirely MIT licensed.
We are working hard to make Mirrorful more extensive. Need any integrations or want a new feature? Feel free to create an issue or contribute directly to the repository. (The first draft of this README was made by a contributor!)
Mirrorful takes security issues very seriously. If you have any concerns about Mirrorful or believe you have uncovered a vulnerability, please get in touch via the e-mail address support@mirrorful.io. In the message, try to provide a description of the issue and ideally a way of reproducing it. The team will get back to you immediately.
There are a lot of new features coming very frequently. Star this repo to stay up to date.
Whether it's big or small, we love contributions. The maintainers of this repo have built open-source projects before and love it. Welcome!
Not sure where to get started? You can:
-
Book a free, non-pressure pairing sessions with one of our teammates!
-
Join our Slack and ask us any questions there.
No matter the PR, all the Github avatars of contributors will be added to the Mirrorful README with their permission.
Mirrorful is currently available in English, German 🇩🇪 and Swedish 🇸🇪. Help us translate our documentation and UI to your language!
You can find all the info in this issue.