implementing-figma-designs
SKILL.md
Implementing Figma Designs
This skill helps you implement Figma designs 1:1 using the OneKey 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, SizeableTextforms/- Input, TextArea, Select, Checkbox, Radio, Switch, Slider, Form, OTPInputactions/- IconButton, ActionList, Alert, Toast, Popover, SegmentControl, Pagination, Tooltipcomposite/- Dialog, Tabs, Banner, Carousel, Table, Steppercontent/- Badge, Progress, Empty, Divider, QRCode, Markdown, LottieView, LinearGradient, BlurViewlayouts/- 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:
Read: packages/components/src/{category}/{ComponentName}/index.tsx -
Read the demo for usage examples:
Glob: packages/kit/src/views/Developer/pages/Gallery/Components/stories/*{ComponentName}*.tsx
Quick Reference
All imports from @onekeyhq/components
import { Button, Stack, XStack, YStack, Icon, ... } from '@onekeyhq/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
Weekly Installs
9
Repository
onekeyhq/app-monorepoFirst Seen
4 days ago
Installed on
claude-code8
opencode6
codex6
antigravity6
gemini-cli6
windsurf5