--- name: implementing-figma-designs description: Implements Figma designs 1:1 using OneKey component library (还原设计稿). allowed-tools: Read, Grep, Glob, Bash, Write, Edit --- # 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: 1. **Use mock data** - Hardcode data that matches the design exactly 2. **Skip i18n** - Use plain strings directly from the design, no `intl.formatMessage` 3. **Skip API calls** - No need to fetch real data at this stage 4. **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 ```text 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 ```text 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 1. **Read the source** to understand props and structure: ```text Read: packages/components/src/{category}/{ComponentName}/index.tsx ``` 2. **Read the demo** for usage examples: ```text Glob: packages/kit/src/views/Developer/pages/Gallery/Components/stories/*{ComponentName}*.tsx ``` ## Quick Reference ### All imports from `@onekeyhq/components` ```tsx 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: ```tsx Regular text Medium weight text Small heading ``` ### Common Patterns **Layout with Stack:** ```tsx {/* Vertical */} {/* Horizontal */} {/* Default vertical */} ``` **Mock Data:** ```tsx const mockItems = [ { name: 'Bitcoin', symbol: 'BTC', value: '$21,432.50' }, { name: 'Ethereum', symbol: 'ETH', value: '$5,892.30' }, ]; ``` **Button Actions:** ```tsx ``` ## Workflow 1. Analyze the Figma design using Figma MCP 2. Identify which components are needed 3. **Look up each component** - read source and demo on-demand 4. Create mock data matching the design 5. Implement the UI with hardcoded values