Implementing Figma Designs
This skill helps you implement Figma designs 1:1 using the project's component library.
Core Principles
Focus on UI First, Data Later
When implementing Figma designs, prioritize pixel-perfect UI over data integration:
- •Use mock data - Hardcode data that matches the design exactly
- •Skip i18n - Use plain strings directly from the design, no
intl.formatMessage - •Skip API calls - No need to fetch real data at this stage
- •Match the design - Focus on visual accuracy, spacing, colors, and layout
What NOT to do
- •Don't worry about where data comes from
- •Don't add translation keys (ETranslations)
- •Don't create API integration or hooks for fetching
- •Don't add complex state management
What TO do
- •Hardcode text exactly as shown in Figma
- •Create mock data arrays/objects that match the design
- •Focus on component structure and styling
- •Match spacing, colors, and typography from design
Component Lookup (On-Demand)
When you need to use a component, look up its source and demo:
Source Code Location Pattern
packages/components/src/{category}/{ComponentName}/
Categories:
- •
primitives/- Button, Icon, Image, Skeleton, Spinner, Stack, Heading, SizeableText - •
forms/- Input, TextArea, Select, Checkbox, Radio, Switch, Slider, Form, OTPInput - •
actions/- IconButton, ActionList, Alert, Toast, Popover, SegmentControl, Pagination, Tooltip - •
composite/- Dialog, Tabs, Banner, Carousel, Table, Stepper - •
content/- Badge, Progress, Empty, Divider, QRCode, Markdown, LottieView, LinearGradient, BlurView - •
layouts/- Page, ScrollView, ListView, SectionList, Accordion, Swiper, SearchBar
Demo Location Pattern
packages/kit/src/views/Developer/pages/Gallery/Components/stories/{ComponentName}.tsx
Note: Some demos have different names (e.g., AccordionGallery.tsx, NewTabsGallery.tsx)
How to Look Up a Component
- •
Read the source to understand props and structure:
textRead: packages/components/src/{category}/{ComponentName}/index.tsx - •
Read the demo for usage examples:
textGlob: packages/kit/src/views/Developer/pages/Gallery/Components/stories/*{ComponentName}*.tsx
Quick Reference
Component imports
import { Button, Stack, XStack, YStack, Icon, ... } from '@{scope}/components';
Spacing Tokens
- •
$1= 4px,$2= 8px,$3= 12px,$4= 16px - •
$5= 20px,$6= 24px,$8= 32px,$10= 40px
Color Tokens
- •Text:
$text,$textSubdued,$textDisabled - •Background:
$bg,$bgSubdued,$bgHover,$bgActive - •Border:
$border,$borderSubdued,$borderActive - •Icon:
$icon,$iconSubdued,$iconDisabled
Font Size Tokens
Headings (large to small):
- •
$headingXxl,$headingXl,$headingLg,$headingMd,$headingSm,$headingXs
Body text (large to small):
- •
$bodyLg,$bodyMd,$bodySm,$bodyXs
With medium weight (append Medium):
- •
$bodyLgMedium,$bodyMdMedium,$bodySmMedium,$bodyXsMedium
Usage with SizableText:
<SizableText size="$bodyMd">Regular text</SizableText> <SizableText size="$bodyMdMedium">Medium weight text</SizableText> <SizableText size="$headingSm">Small heading</SizableText>
Common Patterns
Layout with Stack:
<YStack gap="$4"> {/* Vertical */}
<XStack gap="$4"> {/* Horizontal */}
<Stack gap="$4"> {/* Default vertical */}
Mock Data:
const mockItems = [
{ name: 'Bitcoin', symbol: 'BTC', value: '$21,432.50' },
{ name: 'Ethereum', symbol: 'ETH', value: '$5,892.30' },
];
Button Actions:
<Button onPress={() => console.log('clicked')}>Action</Button>
Workflow
- •Analyze the Figma design using Figma MCP
- •Identify which components are needed
- •Look up each component - read source and demo on-demand
- •Create mock data matching the design
- •Implement the UI with hardcoded values