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
yarnornpm installinside of the repository to install all dependencies - Start the project by running
yarn startornpm start - To sync graphics, run
yarn figmagic:graphicsornpm run figmagic:graphics - To sync elements, run
yarn figmagic:elementsornpm run figmagic:elements - To sync all of it, run
yarn figmagic:syncornpm run figmagic:sync - Start Storybook with
yarn storybookornpm 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
.envin the root of your project (such as in this one, if you want to get started right away) - Clone Figmagic, install it with
yarn setupornpm setup - Run the command
figmagicin your project directory - To run local Figmagic with arguments, it could be done like
npm run figmagic -- --debug -f emto set debug mode and grabbing fonts inemunits
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.
