| const express = require('express'); |
| const router = express.Router(); |
| const axios = require('axios'); |
| const fs = require('fs'); |
| const path = require('path'); |
|
|
| |
| const FIGMA_API_URL = 'https://api.figma.com/v1'; |
| const FIGMA_TOKEN = process.env.FIGMA_TOKEN; |
|
|
| router.post('/import', async (req, res) => { |
| try { |
| const { fileId, nodeIds } = req.body; |
| |
| |
| const response = await axios.get(`${FIGMA_API_URL}/files/${fileId}`, { |
| headers: { 'X-Figma-Token': FIGMA_TOKEN }, |
| params: { ids: nodeIds.join(',') } |
| }); |
|
|
| |
| const designData = processFigmaData(response.data); |
| |
| |
| const codeOutput = generateCode(designData); |
|
|
| res.json({ |
| success: true, |
| html: codeOutput.html, |
| css: codeOutput.css, |
| components: codeOutput.components |
| }); |
| } catch (error) { |
| console.error('Figma import error:', error); |
| res.status(500).json({ |
| success: false, |
| error: error.message |
| }); |
| } |
| }); |
|
|
| function processFigmaData(data) { |
| |
| |
| return { |
| colors: extractColors(data), |
| typography: extractTypography(data), |
| components: extractComponents(data), |
| layouts: extractLayouts(data) |
| }; |
| } |
|
|
| function generateCode(designData) { |
| |
| return { |
| html: generateHtml(designData.layouts), |
| css: generateCss(designData), |
| components: generateComponents(designData.components) |
| }; |
| } |
|
|
| |
|
|
| module.exports = router; |