Skip to content
Render React components to Figma
TypeScript JavaScript
Branch: master
Clone or download
ilyalesik Merge pull request #71 from HVish/master
Implemented blendMixin, closes: #27
1
Latest commit 08ec8fe Oct 15, 2019

README.md

React Figma

All Contributors npm version CircleCI Join the community on Spectrum

Render React components to Figma.

Example of code:

import * as React from 'react';
import { Page, Rectangle, Text } from 'react-figma';

export const App = () => {
    return (
        <Page name="New page">
            <Rectangle style={{ width: 200, height: 100, backgroundColor: '#dd55aa' }} />
            <Text characters="text" style={{ color: '#ffffff' }} />
        </Page>
    );
};

⚠️ Warning!️ Project is not production ready and currently at alpha version. API can be changed.

Installation

Using boilerplate

You can use react-figma-boilerplate for creating own projects.

From scratch

Install it with yarn:

yarn add react-figma yoga-layout

Or with npm:

npm i react-figma yoga-layout --save

Usage

Configure main thread

import * as React from 'react';
import { render, subscribeOnMessages } from 'react-figma';
import { App } from './App';

figma.showUI(__html__, { visible: false });

figma.ui.onmessage = message => {
    subscribeOnMessages(message);
};

render(<App />);

Configure ui thread

import * as yoga from 'yoga-layout';
import { uiWorker } from 'react-figma';

onmessage = event => {
    uiWorker({ yoga })(event);
};

Import components

import * as React from 'react';
import { Page, Rectangle, Text } from 'react-figma';

export const App = () => {
    return (
        <Page name="New page">
            <Rectangle style={{ width: 200, height: 100, backgroundColor: '#dd55aa' }} />
            <Text characters="text" style={{ color: '#ffffff' }} />
        </Page>
    );
};

Examples

Roadmap

  • Adding components:
    • Group
    • Line
    • Ellipse
    • Etc.
  • Improving existing components:
    • Adding support of all figma properties.
    • Improving style prop support.
    • Adding support of all yoga-layout properties.
  • react-primitives support.
  • HMR support.
  • styled-components support.

Become a Contributor 🎖

Whether you're helping us implement features, fix bugs or improve the docs, we'd love to have you as part of the community!

Reasons to be a contributor

  • You pump your knowledge about:
    • React. Best way to figure out how React works - implementing custom renderer. In the project we operate with most advanced concepts: Reconciliation, Hooks etc.
    • Figma Plugins creation.
    • Yoga Layout
    • RxJS
  • Take a place at the contributors list. 😉

How to Contribute

Check out our Contributing Guide for ideas on contributing and setup steps for getting repository up and running on your local machine.

Contributors

Thanks goes to these wonderful people (emoji key):

Ilya Lesik
Ilya Lesik

💻
Losev Yaroslav
Losev Yaroslav

💻
Vishnu Singh
Vishnu Singh

💻
corrina
corrina

💻

This project follows the all-contributors specification. Contributions of any kind welcome!

You can’t perform that action at this time.