Configuration Options

Configuration Options

IconSync provides various configuration options to customize how icons are fetched from Figma and how components are generated.

Complete Configuration Reference

Here's a complete reference of all available configuration options:

import { iconConfig } from "@iconsync/core";
 
export default iconConfig({
  // Figma API configuration
  figma: {
    token: process.env.FIGMA_TOKEN!, // Your Figma API token
    url: "https://www.figma.com/design/YOUR_FILE_ID/YOUR_FILE_NAME?node-id=YOUR_NODE_ID",
    // Alternatively, you can specify fileId and nodeId directly:
    // fileId: "YOUR_FILE_ID",
    // nodeId: "YOUR_NODE_ID",
  },
  
  // Icon fetching configuration
  fetch: {
    concurrentDownloads: 5, // Number of concurrent downloads
    // nodeTypes: ["COMPONENT", "COMPONENT_SET"], // Types of nodes to fetch
    // generateFileName: (node, parentNode) => node.name + "--" + parentNode.name, // Custom filename generator
    // sanitizeName: true, // Sanitize filenames
    // limit: 10, // Limit the number of icons to fetch
  },
  
  // Component generation configuration
  generator: {
    icon: true, // Generate icon components
    typescript: true, // Generate TypeScript files
    titleProp: true, // Add title prop to components
    dimensions: false, // Include width/height dimensions
    expandProps: "end", // Position of expanded props
    replaceAttrValues: {
      "#000000": "currentColor", // Replace specific colors
      "#fff": "currentColor",
    },
    outDir: "src/components/icons", // Output directory
    ext: "tsx", // File extension
    prettier: true, // Format with Prettier
    memo: false, // Use React.memo
    ref: false, // Forward refs
    filenameCase: "camel", // Filename case style: "pascal", "camel", "kebab", "snake"
  },
});

Color Replacement

The replaceAttrValues option in the generator configuration allows you to replace specific colors in your SVG icons with dynamic values like currentColor. This is useful for creating icons that inherit their color from CSS:

generator: {
  // ... other options
  replaceAttrValues: {
    "#000000": "currentColor",
    "#fff": "currentColor",
    "#3E7BFA": "currentColor",
  },
}

Filename Customization

You can customize how filenames are generated using the filenameCase option:

generator: {
  // ... other options
  filenameCase: "camel", // Options: "pascal", "camel", "kebab", "snake"
}

For example:

  • camel: myIconName
  • pascal: MyIconName
  • kebab: my-icon-name
  • snake: my_icon_name