This repository is a demo of Figmagic. In this project you're going to see how a project running Webpack, React and Styled Components might use tokens. There are pre-compiled tokens available under /tokens
.
Figmagic Example Demo: On the left is a big Figma component assembled of a number of "Elements", Figmagic-compliant components that can be output into code. On the right is the React-composed version of those after just a few minutes of coding and closing elements correctly.
Note that this demo is not meant to fully style and do all of the things in the Figma document. I wanted to straddle a middle-of-the-road solution where I did the least work possible to get it working with React and style only a few of the most obvious and helpful elements, like setting disabled state on the button and checkbox.
Freshly pulled assets are under elements
, tokens
and graphics
. The modified elements are contained under src/elements
.
The Figmagic template design system is available at https://www.figma.com/community/file/821094451476848226. That's the file providing the tokens seen here.
- Run
yarn
ornpm install
inside of the repository to install all dependencies - Start the project by running
yarn start
ornpm start
- To sync graphics, run
yarn figmagic:graphics
ornpm run figmagic:graphics
- To sync elements, run
yarn figmagic:elements
ornpm run figmagic:elements
- To sync all of it, run
yarn figmagic:sync
ornpm run figmagic:sync
- Start Storybook with
yarn storybook
ornpm run storybook
- You will need to have a Figma file set up correctly (see above demo file)
- You will also need to have a Figma API key
- Set your URL and token in a file called
.env
in the root of your project (such as in this one, if you want to get started right away) - Clone Figmagic, install it with
yarn setup
ornpm setup
- Run the command
figmagic
in your project directory - To run local Figmagic with arguments, it could be done like
npm run figmagic -- --debug -f em
to set debug mode and grabbing fonts inem
units
Read more on the Figma developer site if you need any further information.
These changes should outline all of the (mostly minor) amendments done to a set of freshly-pulled elements:
- Remove texts from H1-H6 + Paragraph + Microcopy + Select
- Close input elements (Slider, Input, Checkbox)
- Add
className=”Normal”
to Button so it picks the Normal style - Add props and event handling for demo form functionality
- Add disabled styling to Checkbox and Button
- Write a component (DemoForm) that composes the individual elements as per the component in the template
- Minor changes due to the nature of Typescript.