vega-illustrations
v1.1.8
Published
This repository is your one-stop shop for generating React illustration components directly from your Figma designs. It automates the process of exporting SVGs, converting them into customizable React components, and bundling them for easy use in your pr
Readme
vega-illustrations
This repository is your one-stop shop for generating React illustration components directly from your Figma designs. It automates the process of exporting SVGs, converting them into customizable React components, and bundling them for easy use in your projects.
Features
- Figma Integration: Seamlessly connects to your Figma design files to extract illustrations.
- React Component Generation: Transforms SVGs into reusable React components using SVGR.
- TypeScript Support: Generates TypeScript type definitions for a better development experience.
- SVG Optimization: Optimizes SVGs with SVGO to reduce file size and improve performance.
- Color Customization: Converts all illustration colors to
currentColorfor dynamic styling.
Prerequisites
- Node.js and Yarn: Ensure you have Node.js and Yarn installed on your system.
- Figma Personal Access Token: Obtain a personal access token from your Figma account settings.
- Figma File ID: Locate the unique ID of your Figma file containing the illustrations.
Setup
- Clone the repository:
git clone <repository-url>- Install dependencies:
yarn install- Set up environment variables:
- Create a
.envfile in the project's root directory. - Add your Figma credentials:
- https://www.figma.com/developers/api
FILE_ID=<your-figma-file-id>
FIGMA_TOKEN=<your-figma-personal-access-token>Usage
- Export illustrations and Components:
yarn exportThis command will:
- Fetch SVGs from the "Illustration" page in your Figma file.
- Optimize the SVGs using SVGO.
- Convert SVGs into React components (
.tsxfiles) and place them in thesrc/outputdirectory. - Run the post-export script to clean up the generated index.ts file, removing duplicates and file extensions from import statements. (only works at one pointed file at a time)
- Bundle Components (Optional):
- If you want to bundle all React components into a single file:
npm run buildThis will create a dist/index.js file containing all your bundled illustration components.
- Use in Your Project:
- Install the
vega-illustrationspackage in your main project:
yarn add vega-illustrations
# or
npm install vega-illustrations- Import and use your illustration components:
import { IllustrationName } from 'vega-illustrations';
// In your component:
<IllustrationName /> Important Notes:
- Ensure the
@svgr/plugin-jsxplugin is installed (yarn add -D @svgr/plugin-jsx) for React component generation. - Customize the
figma.config.jsif your Figma setup or desired output structure is different. - Consider adding automated tests and documentation to improve maintainability.
With scripts that replace its illustrations hex values with theme colors.
How it works
We have a script that maps all hex values to twc color variables. For example, #007B63 turns into fill="hsl(var(--twc-illustration-foreground-brand))".
--twc-illustration-foreground-brand is set as different colors for dark/light mode in the packages/vega-core/src/themeConfig/themes.ts file:
