We use cookies to enhance your experience on the site
CodeWorlds
Back to collections
Guide41 min read

Figma

Figma is a UI/UX design tool with real-time collaboration, Auto Layout, components and Dev Mode for developers.

Figma - Kompletny Przewodnik po NarzΔ™dziu do Projektowania UI/UX

Czym jest Figma?

Figma to wiodące narzędzie do projektowania interfejsów użytkownika (UI) i doświadczeń użytkownika (UX), które zrewolucjonizowało sposób pracy zespołów projektowych i deweloperskich. W przeciwieństwie do tradycyjnych narzędzi jak Sketch czy Adobe XD, Figma działa całkowicie w przeglądarce, co umożliwia natychmiastową współpracę w czasie rzeczywistym - wielu użytkowników może pracować nad tym samym projektem jednocześnie, podobnie jak w Google Docs.

Figma została założona w 2012 roku przez Dylana Fielda i Evana Wallace'a, a w 2022 roku Figma została przejęta przez Adobe za 20 miliardów dolarów (choć transakcja została później anulowana). Obecnie Figma jest używana przez miliony designerów i deweloperów na całym świecie, w firmach takich jak Google, Microsoft, Uber, Airbnb, Twitter i Spotify.

Dlaczego Figma?

Kluczowe zalety Figmy

  1. Praca w przeglΔ…darce - Zero instalacji, dostΔ™p z kaΕΌdego urzΔ…dzenia
  2. Real-time collaboration - WspΓ³Ε‚praca w czasie rzeczywistym jak w Google Docs
  3. Auto Layout - Responsywne ukΕ‚adanie elementΓ³w jak w CSS Flexbox/Grid
  4. Components & Variants - Budowanie skalowalnych design systemΓ³w
  5. Dev Mode - Dedykowany tryb dla developerΓ³w z eksportem kodu
  6. Prototyping - Interaktywne prototypy bez kodowania
  7. FigJam - Whiteboard do brainstormingu i planowania
  8. Plugin ecosystem - TysiΔ…ce wtyczek rozszerzajΔ…cych funkcjonalnoΕ›Δ‡

Figma vs Sketch vs Adobe XD

CechaFigmaSketchAdobe XD
PlatformaWeb + DesktopmacOS onlyDesktop
WspΓ³Ε‚pracaReal-timeWymaga CloudOgraniczona
CenaFree tier + Pro$12/moSubskrypcja CC
Auto Layoutβœ… Zaawansowanyβœ… Basicβœ… Basic
Dev Modeβœ… Natywny❌ Pluginyβœ… Basic
Prototypingβœ… Wbudowanyβœ… Wbudowanyβœ… Wbudowany
PopularnoΕ›Δ‡πŸ₯‡ NajpopularniejszyπŸ₯ˆ MalejΔ…caπŸ₯‰ Niszowy

Podstawy Figmy

Interfejs uΕΌytkownika

Code
TEXT
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Toolbar (narzΔ™dzia)                                              β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚          β”‚                                         β”‚            β”‚
β”‚  Layers  β”‚              Canvas                     β”‚  Design    β”‚
β”‚  Panel   β”‚         (obszar roboczy)                β”‚  Panel     β”‚
β”‚          β”‚                                         β”‚            β”‚
β”‚  - Pages β”‚    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”         β”‚  - Fill    β”‚
β”‚  - Framesβ”‚    β”‚                         β”‚         β”‚  - Stroke  β”‚
β”‚  - Groupsβ”‚    β”‚        TwΓ³j design      β”‚         β”‚  - Effects β”‚
β”‚  - Shapesβ”‚    β”‚                         β”‚         β”‚  - Layout  β”‚
β”‚          β”‚    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜         β”‚            β”‚
β”‚          β”‚                                         β”‚            β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ Assets / Plugins / Libraries                                     β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Podstawowe elementy

Frame - GΕ‚Γ³wny kontener dla designΓ³w (jak <div> w HTML):

Code
TEXT
Frame = Artboard + Auto Layout + Constraints
- Może mieć określone wymiary (Desktop: 1440px, Mobile: 390px)
- Może być responsywny z Auto Layout
- Może mieć clipowanie zawartości

Shapes - Podstawowe ksztaΕ‚ty:

  • Rectangle (R)
  • Ellipse (O)
  • Line (L)
  • Polygon
  • Star
  • Arrow

Text - Warstwa tekstowa (T):

  • ObsΕ‚uguje Google Fonts
  • Style tekstu (heading, body, caption)
  • Variable fonts

Groups vs Frames:

Code
TEXT
Groups (Ctrl/Cmd + G):
- Proste grupowanie
- Brak wΕ‚asnych wΕ‚aΕ›ciwoΕ›ci
- Dobre do organizacji

Frames (Ctrl/Cmd + Alt + G):
- Kontener z wΕ‚asnymi wΕ‚aΕ›ciwoΕ›ciami
- Auto Layout
- Constraints
- Clipping
- UΕΌywaj zawsze gdy moΕΌliwe

SkrΓ³ty klawiszowe (must-know)

Code
TEXT
NAVIGATION:
Space + drag     - Pan canvas
Ctrl/Cmd + +/-   - Zoom in/out
Shift + 1        - Zoom to fit
Shift + 2        - Zoom to selection
Ctrl/Cmd + \     - Toggle UI

SELECTION:
Ctrl/Cmd + A     - Select all
Ctrl/Cmd + click - Deep select
Hold Alt + hover - Measure distances

EDITING:
Ctrl/Cmd + D     - Duplicate
Ctrl/Cmd + G     - Group
Ctrl/Cmd + Alt+G - Frame selection
Ctrl/Cmd + R     - Rename
Ctrl/Cmd + [/]   - Send backward/forward

ALIGNMENT:
Alt + A          - Align left
Alt + D          - Align right
Alt + W          - Align top
Alt + S          - Align bottom
Alt + H          - Align center horizontal
Alt + V          - Align center vertical

COMPONENTS:
Ctrl/Cmd + Alt+K - Create component
Ctrl/Cmd + Alt+B - Detach instance

Auto Layout - Responsywne ukΕ‚ady

Auto Layout to jedna z najpotężniejszych funkcji Figmy, działająca podobnie do CSS Flexbox. Pozwala tworzyć responsywne układy, które automatycznie dostosowują się do zawartości.

Podstawy Auto Layout

Code
TEXT
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  Auto Layout Frame                                      β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”               β”‚
β”‚  β”‚ Item β”‚  β”‚ Item β”‚  β”‚ Item β”‚  β”‚ Item β”‚               β”‚
β”‚  β”‚  1   β”‚  β”‚  2   β”‚  β”‚  3   β”‚  β”‚  4   β”‚               β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”˜               β”‚
β”‚                                                         β”‚
β”‚  Direction: Horizontal (β†’)                             β”‚
β”‚  Gap: 16px                                             β”‚
β”‚  Padding: 24px                                         β”‚
β”‚  Alignment: Center                                     β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

WΕ‚aΕ›ciwoΕ›ci Auto Layout

Code
TEXT
DIRECTION (kierunek):
- Horizontal (β†’) - elementy obok siebie
- Vertical (↓) - elementy pod sobΔ…
- Wrap - zawijanie (jak flex-wrap)

GAP (odstΔ™py miΔ™dzy elementami):
- Fixed gap: 16px - staΕ‚y odstΔ™p
- Auto: space-between zachowanie

PADDING (wewnΔ™trzne marginesy):
- Uniform: 16px wszystkie strony
- Independent: 16px 24px 16px 24px (T R B L)

ALIGNMENT:
- Primary axis (main): start/center/end/space-between
- Counter axis (cross): start/center/end/baseline

SIZING:
- Fixed: 200px - staΕ‚a szerokoΕ›Δ‡
- Hug: dopasuj do zawartoΕ›ci
- Fill: wypeΕ‚nij dostΔ™pnΔ… przestrzeΕ„

PrzykΕ‚ad: Responsywny przycisk

Code
TEXT
Button (Auto Layout Frame):
β”œβ”€β”€ Direction: Horizontal
β”œβ”€β”€ Gap: 8px
β”œβ”€β”€ Padding: 12px 24px
β”œβ”€β”€ Alignment: Center/Center
β”‚
β”œβ”€β”€ Icon (16x16)
β”‚   └── Fill container: ❌
β”‚   └── Fixed size: βœ…
β”‚
└── Label ("Click me")
    └── Hug contents: βœ…

Rezultat: Przycisk, ktΓ³ry automatycznie roΕ›nie/maleje
z zawartoΕ›ciΔ…, zachowujΔ…c padding i gap.

Advanced Auto Layout patterns

Card z dynamicznΔ… zawartoΕ›ciΔ…:

Code
TEXT
Card Frame (Vertical Auto Layout):
β”œβ”€β”€ Padding: 24px
β”œβ”€β”€ Gap: 16px
β”‚
β”œβ”€β”€ Header (Horizontal Auto Layout)
β”‚   β”œβ”€β”€ Title (Fill) - rozciΔ…ga siΔ™
β”‚   └── Badge (Hug) - staΕ‚y rozmiar
β”‚
β”œβ”€β”€ Content (Text, Hug)
β”‚
└── Actions (Horizontal Auto Layout, Space Between)
    β”œβ”€β”€ Secondary Button (Hug)
    └── Primary Button (Hug)

Responsywna nawigacja:

Code
TEXT
Navbar (Horizontal Auto Layout):
β”œβ”€β”€ Padding: 0 24px
β”œβ”€β”€ Min Width: Fill container
β”‚
β”œβ”€β”€ Logo (Fixed 120px)
β”‚
β”œβ”€β”€ Nav Links (Horizontal, Fill)
β”‚   β”œβ”€β”€ Gap: 32px
β”‚   β”œβ”€β”€ Alignment: Center
β”‚   └── Links: Home, Products, About, Contact
β”‚
└── CTA Button (Hug)

Constraints vs Auto Layout

Code
TEXT
Constraints (uΕΌywaj gdy):
- Elementy majΔ… absolutne pozycjonowanie
- Floating buttons, overlays
- Background images

Auto Layout (uΕΌywaj gdy):
- Lista elementΓ³w
- Formularze
- Cards
- Buttons
- Komponenty UI

Kombinacja:
Frame z Constraints
└── Auto Layout dla zawartoΕ›ci
    └── Items z Fill/Hug

Components & Variants

Components to wielokrotnie uΕΌywalne elementy designu - odpowiednik komponentΓ³w React w Ε›wiecie projektowania.

Tworzenie komponentΓ³w

Code
TEXT
1. Zaprojektuj element (np. Button)
2. Zaznacz frame
3. Ctrl/Cmd + Alt + K (Create Component)
4. Komponent pojawi siΔ™ w Assets panel

Main Component (z ikonΔ… 4 rombΓ³w):
└── ΕΉrΓ³dΕ‚o prawdy - edycja wpΕ‚ywa na wszystkie instancje

Instance (z ikonΔ… 1 rombu):
└── Kopia komponentu - moΕΌna nadpisaΔ‡ wΕ‚aΕ›ciwoΕ›ci

Variants - warianty komponentΓ³w

Variants pozwalają grupować różne stany/wersje komponentu w jednym miejscu.

Code
TEXT
Button Component
β”‚
β”œβ”€β”€ Variant: Size
β”‚   β”œβ”€β”€ Small (height: 32px, padding: 8px 16px)
β”‚   β”œβ”€β”€ Medium (height: 40px, padding: 12px 24px)
β”‚   └── Large (height: 48px, padding: 16px 32px)
β”‚
β”œβ”€β”€ Variant: Style
β”‚   β”œβ”€β”€ Primary (bg: blue, text: white)
β”‚   β”œβ”€β”€ Secondary (bg: gray, text: dark)
β”‚   └── Ghost (bg: transparent, border: gray)
β”‚
└── Variant: State
    β”œβ”€β”€ Default
    β”œβ”€β”€ Hover
    β”œβ”€β”€ Pressed
    β”œβ”€β”€ Disabled
    └── Loading

PrzykΕ‚ad: Button z wariantami

Code
TEXT
Step 1: StwΓ³rz bazowy button
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚      Click me           β”‚ ← Main Component
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Step 2: Dodaj warianty (Component β†’ Add variant)
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Button Component Set                                 β”‚
β”‚                                                      β”‚
β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”        β”‚
β”‚ β”‚  Primary  β”‚  β”‚ Secondary β”‚  β”‚   Ghost   β”‚ Style  β”‚
β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜        β”‚
β”‚                                                      β”‚
β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”        β”‚
β”‚ β”‚   Small   β”‚  β”‚  Medium   β”‚  β”‚   Large   β”‚ Size   β”‚
β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜        β”‚
β”‚                                                      β”‚
β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”        β”‚
β”‚ β”‚  Default  β”‚  β”‚   Hover   β”‚  β”‚ Disabled  β”‚ State  β”‚
β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜        β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Step 3: Zdefiniuj wΕ‚aΕ›ciwoΕ›ci kaΕΌdego wariantu
W Design Panel ustaw:
- Size=Small, Style=Primary, State=Default
- Size=Medium, Style=Secondary, State=Hover
- etc.

Component Properties

Nowoczesny sposΓ³b na konfiguracjΔ™ komponentΓ³w bez tworzenia osobnych wariantΓ³w:

Code
TEXT
Button Component Properties:
β”‚
β”œβ”€β”€ Text Property: "label"
β”‚   └── Pozwala edytowaΔ‡ tekst instancji
β”‚
β”œβ”€β”€ Boolean Property: "showIcon"
β”‚   └── PokaΕΌ/ukryj ikonΔ™
β”‚
β”œβ”€β”€ Instance Swap Property: "icon"
β”‚   └── ZamieΕ„ ikonΔ™ na innΔ… z biblioteki
β”‚
└── Variant Property: "size", "style", "state"
    └── Wybierz wariant z listy

UΕΌycie w instancji:
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Properties Panel                     β”‚
β”‚                                      β”‚
β”‚ label: "Submit"        [text field]  β”‚
β”‚ showIcon: β˜‘οΈ           [checkbox]    β”‚
β”‚ icon: [arrow-right]    [dropdown]    β”‚
β”‚ size: Medium           [dropdown]    β”‚
β”‚ style: Primary         [dropdown]    β”‚
β”‚ state: Default         [dropdown]    β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Design Tokens i Style

Color Styles

Code
TEXT
Colors (definiuj w Local Styles):
β”‚
β”œβ”€β”€ Primary
β”‚   β”œβ”€β”€ primary-500: #6366F1 (gΕ‚Γ³wny)
β”‚   β”œβ”€β”€ primary-600: #4F46E5 (hover)
β”‚   β”œβ”€β”€ primary-400: #818CF8 (light)
β”‚   └── primary-50: #EEF2FF (background)
β”‚
β”œβ”€β”€ Neutral
β”‚   β”œβ”€β”€ gray-900: #111827 (text)
β”‚   β”œβ”€β”€ gray-500: #6B7280 (secondary)
β”‚   β”œβ”€β”€ gray-200: #E5E7EB (border)
β”‚   └── gray-50: #F9FAFB (background)
β”‚
β”œβ”€β”€ Semantic
β”‚   β”œβ”€β”€ success: #10B981
β”‚   β”œβ”€β”€ warning: #F59E0B
β”‚   β”œβ”€β”€ error: #EF4444
β”‚   └── info: #3B82F6
β”‚
└── Surface
    β”œβ”€β”€ background: #FFFFFF
    β”œβ”€β”€ surface: #F9FAFB
    └── overlay: rgba(0,0,0,0.5)

Text Styles

Code
TEXT
Typography (definiuj w Local Styles):
β”‚
β”œβ”€β”€ Display
β”‚   β”œβ”€β”€ display-2xl: 72px/90px, Bold
β”‚   └── display-xl: 60px/72px, Bold
β”‚
β”œβ”€β”€ Headings
β”‚   β”œβ”€β”€ heading-1: 48px/60px, Semibold
β”‚   β”œβ”€β”€ heading-2: 36px/44px, Semibold
β”‚   β”œβ”€β”€ heading-3: 30px/38px, Semibold
β”‚   └── heading-4: 24px/32px, Semibold
β”‚
β”œβ”€β”€ Body
β”‚   β”œβ”€β”€ body-lg: 18px/28px, Regular
β”‚   β”œβ”€β”€ body-md: 16px/24px, Regular
β”‚   └── body-sm: 14px/20px, Regular
β”‚
β”œβ”€β”€ Labels
β”‚   β”œβ”€β”€ label-lg: 14px/20px, Medium
β”‚   β”œβ”€β”€ label-md: 12px/16px, Medium
β”‚   └── label-sm: 11px/16px, Medium
β”‚
└── Code
    └── code-md: 14px/20px, Mono, Regular

Effect Styles

Code
TEXT
Effects (shadows, blurs):
β”‚
β”œβ”€β”€ Shadows
β”‚   β”œβ”€β”€ shadow-sm: 0 1px 2px rgba(0,0,0,0.05)
β”‚   β”œβ”€β”€ shadow-md: 0 4px 6px rgba(0,0,0,0.1)
β”‚   β”œβ”€β”€ shadow-lg: 0 10px 15px rgba(0,0,0,0.1)
β”‚   └── shadow-xl: 0 20px 25px rgba(0,0,0,0.15)
β”‚
└── Blurs
    β”œβ”€β”€ blur-sm: 4px
    β”œβ”€β”€ blur-md: 8px
    └── blur-lg: 16px

Variables (nowa funkcja)

Variables to nowoczesna alternatywa dla Styles, wspierajΔ…ca:

  • Dark mode
  • Responsive breakpoints
  • Aliasing
Code
TEXT
Variables Collections:
β”‚
β”œβ”€β”€ Primitives (raw values)
β”‚   β”œβ”€β”€ blue-500: #6366F1
β”‚   β”œβ”€β”€ gray-900: #111827
β”‚   └── spacing-4: 16px
β”‚
└── Semantic (aliases)
    β”œβ”€β”€ color-primary: {blue-500}
    β”œβ”€β”€ color-text: {gray-900}
    └── spacing-md: {spacing-4}

Modes:
β”œβ”€β”€ Light Mode
β”‚   └── color-background: #FFFFFF
β”‚
└── Dark Mode
    └── color-background: #1F2937

Dev Mode - Figma dla DeveloperΓ³w

Dev Mode to dedykowany tryb dla programistΓ³w, ktΓ³ry uΕ‚atwia przekΕ‚adanie designΓ³w na kod.

WΕ‚Δ…czanie Dev Mode

Code
TEXT
1. Kliknij przeΕ‚Δ…cznik "<>" w prawym gΓ³rnym rogu
2. Lub uΕΌyj Shift + D
3. Interfejs zmieni siΔ™ na widok developerski

Funkcje Dev Mode

Inspekcja wΕ‚aΕ›ciwoΕ›ci:

Code
CSS
/* Figma automatycznie generuje CSS */
.button {
  display: flex;
  padding: 12px 24px;
  justify-content: center;
  align-items: center;
  gap: 8px;

  border-radius: 8px;
  background: #6366F1;

  /* Typography */
  color: #FFF;
  font-family: Inter;
  font-size: 14px;
  font-weight: 500;
  line-height: 20px;
}

Export do rΓ³ΕΌnych formatΓ³w:

Code
TEXT
CSS:
.element {
  width: 200px;
  height: 48px;
  background: #6366F1;
  border-radius: 8px;
}

iOS (SwiftUI):
Rectangle()
  .frame(width: 200, height: 48)
  .background(Color(hex: "6366F1"))
  .cornerRadius(8)

Android (Compose):
Box(
  modifier = Modifier
    .size(width = 200.dp, height = 48.dp)
    .background(Color(0xFF6366F1))
    .clip(RoundedCornerShape(8.dp))
)

Pomiar odlegΕ‚oΕ›ci:

Code
TEXT
W Dev Mode:
- NajedΕΊ na element β†’ pokaΕΌe wymiary
- NajedΕΊ miΔ™dzy elementami β†’ pokaΕΌe spacing
- Alt + hover β†’ szczegΓ³Ε‚owe pomiary

Code snippets i integracje

Code
TypeScript
// Figma może generować snippets dla frameworków

// React + Tailwind:
<button className="flex items-center gap-2 px-6 py-3
  bg-indigo-500 hover:bg-indigo-600
  text-white font-medium rounded-lg">
  <IconPlus className="w-4 h-4" />
  Add item
</button>

// React + styled-components:
const Button = styled.button`
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 12px 24px;
  background: #6366F1;
  color: white;
  font-weight: 500;
  border-radius: 8px;

  &:hover {
    background: #4F46E5;
  }
`;

VS Code Extension

Code
TEXT
Figma for VS Code:
1. Zainstaluj rozszerzenie "Figma for VS Code"
2. PoΕ‚Δ…cz z kontem Figma
3. PrzeglΔ…daj pliki Figma bezpoΕ›rednio w VS Code
4. Kopiuj wartoΕ›ci bez przeΕ‚Δ…czania okien
5. Generuj kod z designΓ³w

Prototyping

Figma umoΕΌliwia tworzenie interaktywnych prototypΓ³w bez pisania kodu.

Podstawy prototypowania

Code
TEXT
1. PrzejdΕΊ do trybu Prototype (prawy panel)
2. Zaznacz element ΕΊrΓ³dΕ‚owy (np. Button)
3. PrzeciΔ…gnij connector do frame docelowego
4. Skonfiguruj interakcjΔ™

Interaction:
β”œβ”€β”€ Trigger: On click / On hover / On drag / While pressing
β”œβ”€β”€ Action: Navigate to / Open overlay / Swap variant / Scroll to
└── Animation: Instant / Dissolve / Move in / Push / Slide

Smart Animate

Code
TEXT
Smart Animate automatycznie animuje rΓ³ΕΌnice miΔ™dzy frames:

Frame 1: Card (collapsed)
β”œβ”€β”€ Thumbnail (100x100)
β”œβ”€β”€ Title
└── Height: 150px

Frame 2: Card (expanded)
β”œβ”€β”€ Thumbnail (100x100)
β”œβ”€β”€ Title
β”œβ”€β”€ Description
β”œβ”€β”€ Actions
└── Height: 300px

Smart Animate interpoluje:
- Height: 150px β†’ 300px
- Opacity nowych elementΓ³w: 0 β†’ 1
- Pozycje elementΓ³w

Interactive Components

Code
TEXT
Button Component (with interactions):
β”‚
β”œβ”€β”€ Default State
β”‚   └── On hover β†’ Hover State (Smart Animate)
β”‚
β”œβ”€β”€ Hover State
β”‚   β”œβ”€β”€ On mouse leave β†’ Default State
β”‚   └── On click β†’ Pressed State
β”‚
β”œβ”€β”€ Pressed State
β”‚   └── After delay (100ms) β†’ Default State
β”‚
└── Disabled State
    └── No interactions

Overflow scrolling

Code
TEXT
Scrollable Frame:
β”œβ”€β”€ Width: 375px (fixed)
β”œβ”€β”€ Height: 667px (fixed)
β”œβ”€β”€ Overflow: Scroll vertically
β”‚
└── Content Frame
    β”œβ”€β”€ Width: Fill container
    β”œβ”€β”€ Height: Hug (1500px of content)
    └── Auto Layout: Vertical

Overlay prototypes

Code
TEXT
Modal Overlay:
β”‚
β”œβ”€β”€ Trigger Frame (Button "Open Modal")
β”‚   └── On click β†’ Open overlay
β”‚
β”œβ”€β”€ Overlay (Modal Frame)
β”‚   β”œβ”€β”€ Position: Center
β”‚   β”œβ”€β”€ Background: #000 50% opacity
β”‚   └── Close on clicking outside: βœ…
β”‚
└── Close Button
    └── On click β†’ Close overlay

FigJam - Whiteboarding

FigJam to narzΔ™dzie do wizualnej wspΓ³Ε‚pracy, brainstormingu i planowania.

Zastosowania FigJam

Code
TEXT
1. Brainstorming
   - Sticky notes z pomysΕ‚ami
   - GΕ‚osowanie (stamps)
   - Grupowanie i kategoryzacja

2. User Flow Diagrams
   - Shapes (circles, rectangles)
   - Connectors (arrows)
   - Swimlanes

3. Planning
   - Kanban boards
   - Timelines
   - Mind maps

4. Retrospektywy
   - What went well / What to improve
   - Action items
   - Team discussions

FigJam Templates

Code
TEXT
Available templates:
β”œβ”€β”€ Brainstorming
β”‚   β”œβ”€β”€ Mind Map
β”‚   β”œβ”€β”€ Affinity Diagram
β”‚   └── Crazy 8s
β”‚
β”œβ”€β”€ Meetings
β”‚   β”œβ”€β”€ Daily Standup
β”‚   β”œβ”€β”€ Sprint Retrospective
β”‚   └── Team Sync
β”‚
β”œβ”€β”€ Strategy
β”‚   β”œβ”€β”€ SWOT Analysis
β”‚   β”œβ”€β”€ Business Model Canvas
β”‚   └── User Journey Map
β”‚
└── Agile
    β”œβ”€β”€ Sprint Planning
    β”œβ”€β”€ Kanban Board
    └── Story Mapping

Plugins i integracje

Must-have plugins

Code
TEXT
Design:
β”œβ”€β”€ Iconify - miliony ikon (Material, Feather, etc.)
β”œβ”€β”€ Unsplash - darmowe zdjΔ™cia stockowe
β”œβ”€β”€ Remove BG - usuwanie tΕ‚a ze zdjΔ™Δ‡
β”œβ”€β”€ Blush - ilustracje customizable
└── Content Reel - avatary, nazwy, lorem ipsum

Development:
β”œβ”€β”€ Figma to Code - eksport do React/Vue/HTML
β”œβ”€β”€ Tailwind CSS - klasy Tailwind z designΓ³w
β”œβ”€β”€ Anima - eksport do React/Vue z interakcjami
└── Storybook Connect - sync z Storybook

Productivity:
β”œβ”€β”€ Autoflow - automatyczne flow diagrams
β”œβ”€β”€ Similayer - znajdΕΊ podobne warstwy
β”œβ”€β”€ Rename It - batch renaming layers
└── Instance Finder - znajdΕΊ uΕΌycia komponentΓ³w

Accessibility:
β”œβ”€β”€ Stark - kontrast, color blindness check
β”œβ”€β”€ A11y - accessibility annotations
└── Color Blind - symulacja Ε›lepoty barw

Instalacja pluginΓ³w

Code
TEXT
1. Menu β†’ Plugins β†’ Browse plugins in Community
2. Wyszukaj plugin
3. Kliknij "Install"
4. UΕΌyj przez Menu β†’ Plugins β†’ [Nazwa]
   lub Ctrl/Cmd + / (Quick Actions)

Figma API

Code
JavaScript
// Figma REST API - dostΔ™p do plikΓ³w i komentarzy

// Pobierz plik Figma
const response = await fetch(
  `https://api.figma.com/v1/files/${fileKey}`,
  {
    headers: {
      'X-Figma-Token': process.env.FIGMA_TOKEN
    }
  }
);

const file = await response.json();
console.log(file.name);
console.log(file.document.children); // Pages

// Pobierz obrazy z pliku
const imagesResponse = await fetch(
  `https://api.figma.com/v1/images/${fileKey}?ids=${nodeIds}&format=png&scale=2`,
  {
    headers: {
      'X-Figma-Token': process.env.FIGMA_TOKEN
    }
  }
);

const images = await imagesResponse.json();
// images.images = { nodeId: imageUrl, ... }

Figma Plugin Development

TSfigma-plugin/code.ts
TypeScript
// figma-plugin/code.ts

// GΕ‚Γ³wny kod pluginu
figma.showUI(__html__, { width: 300, height: 400 });

// NasΕ‚uchuj wiadomoΕ›ci z UI
figma.ui.onmessage = async (msg) => {
  if (msg.type === 'create-rectangle') {
    const rect = figma.createRectangle();
    rect.x = 0;
    rect.y = 0;
    rect.resize(msg.width, msg.height);
    rect.fills = [{ type: 'SOLID', color: { r: 1, g: 0.5, b: 0 } }];

    figma.currentPage.appendChild(rect);
    figma.currentPage.selection = [rect];
    figma.viewport.scrollAndZoomIntoView([rect]);
  }

  figma.closePlugin();
};

// UI pluginu (ui.html)
// <script>
//   document.getElementById('create').onclick = () => {
//     parent.postMessage({
//       pluginMessage: { type: 'create-rectangle', width: 100, height: 100 }
//     }, '*');
//   };
// </script>

Design Systems w Figmie

Struktura Design System

Code
TEXT
Design System Library:
β”‚
β”œβ”€β”€ πŸ“ Foundations
β”‚   β”œβ”€β”€ Colors (variables)
β”‚   β”œβ”€β”€ Typography (text styles)
β”‚   β”œβ”€β”€ Spacing (variables)
β”‚   β”œβ”€β”€ Shadows (effect styles)
β”‚   └── Iconography
β”‚
β”œβ”€β”€ πŸ“ Primitives
β”‚   β”œβ”€β”€ Button
β”‚   β”œβ”€β”€ Input
β”‚   β”œβ”€β”€ Checkbox
β”‚   β”œβ”€β”€ Radio
β”‚   β”œβ”€β”€ Select
β”‚   β”œβ”€β”€ Toggle
β”‚   └── Badge
β”‚
β”œβ”€β”€ πŸ“ Components
β”‚   β”œβ”€β”€ Card
β”‚   β”œβ”€β”€ Modal
β”‚   β”œβ”€β”€ Dropdown
β”‚   β”œβ”€β”€ Tabs
β”‚   β”œβ”€β”€ Toast
β”‚   └── Tooltip
β”‚
β”œβ”€β”€ πŸ“ Patterns
β”‚   β”œβ”€β”€ Navigation
β”‚   β”œβ”€β”€ Forms
β”‚   β”œβ”€β”€ Tables
β”‚   β”œβ”€β”€ Empty States
β”‚   └── Error States
β”‚
└── πŸ“ Templates
    β”œβ”€β”€ Dashboard
    β”œβ”€β”€ Settings
    β”œβ”€β”€ Profile
    └── Landing Page

Publikowanie biblioteki

Code
TEXT
1. Team Library:
   - File β†’ Publish Library
   - Wybierz komponenty do publikacji
   - Dodaj opisy i przykΕ‚ady

2. UΕΌywanie biblioteki:
   - Assets panel β†’ Team library
   - PrzeciΔ…gnij komponenty na canvas
   - Aktualizacje automatyczne

3. Wersjonowanie:
   - Publikuj z opisem zmian
   - UΕΌytkownicy widzΔ… "Updates available"
   - MogΔ… preview i accept changes

Dokumentacja komponentΓ³w

Code
TEXT
Component Page struktura:
β”‚
β”œβ”€β”€ Title & Description
β”‚   └── Co robi komponent
β”‚
β”œβ”€β”€ Anatomy
β”‚   └── Diagram czΔ™Ε›ci skΕ‚adowych
β”‚
β”œβ”€β”€ Variants Showcase
β”‚   └── Wszystkie warianty obok siebie
β”‚
β”œβ”€β”€ Usage Guidelines
β”‚   β”œβ”€β”€ βœ… Do (dobre przykΕ‚ady)
β”‚   └── ❌ Don't (zΕ‚e przykΕ‚ady)
β”‚
β”œβ”€β”€ Properties Reference
β”‚   └── Tabela wszystkich wΕ‚aΕ›ciwoΕ›ci
β”‚
└── Related Components
    └── Linki do powiΔ…zanych

Collaboration i Workflow

Tryby wspΓ³Ε‚pracy

Code
TEXT
1. Editor (Full Access):
   - Może edytować wszystko
   - Może publikować zmiany
   - Może zarządzać członkami

2. Viewer (Can View):
   - Może oglądać i komentować
   - Może kopiować elementy
   - Nie może edytować

3. Viewer-Restricted:
   - Tylko oglΔ…danie
   - Bez kopiowania
   - Bez eksportu

Comments i Feedback

Code
TEXT
Komentarze:
- Kliknij C lub ikonΔ™ komentarza
- Kliknij w miejsce na canvas
- Napisz komentarz
- @mention czΕ‚onkΓ³w zespoΕ‚u

Organizacja:
- Resolved/Unresolved
- Filter by author
- Filter by date
- Export comments

Branching (w planach Team/Enterprise)

Code
TEXT
Main File (source of truth)
β”‚
β”œβ”€β”€ Branch: Feature A
β”‚   └── Eksperymentalne zmiany
β”‚
β”œβ”€β”€ Branch: Feature B
β”‚   └── Nowy design
β”‚
└── Merge back to Main
    └── Po review i aprobacie

Version History

Code
TEXT
1. File β†’ Show Version History
2. PrzeglΔ…daj poprzednie wersje
3. Nazwij waΕΌne wersje (milestones)
4. PrzywrΓ³Δ‡ poprzedniΔ… wersjΔ™
5. Duplikuj wersjΔ™ jako nowy plik

Handoff - przekazanie developerom

Przygotowanie designu do handoff

Code
TEXT
Checklist przed handoff:
β–‘ Wszystkie elementy sΔ… w komponentach
β–‘ UΕΌywasz Auto Layout
β–‘ Kolory sΔ… w stylach/variables
β–‘ Typografia w stylach
β–‘ Nazwy warstw sΔ… sensowne
β–‘ Variants pokrywajΔ… wszystkie stany
β–‘ Spacing jest konsystentny
β–‘ Assets sΔ… wyeksportowane (1x, 2x, 3x)
β–‘ Prototyp dziaΕ‚a
β–‘ Dev Mode jest wΕ‚Δ…czony

Eksport assets

Code
TEXT
Eksport ustawienia:
β”œβ”€β”€ Format: PNG / SVG / JPG / PDF
β”œβ”€β”€ Scale: 1x, 2x, 3x (dla retina)
β”œβ”€β”€ Suffix: @2x, @3x
└── Include "id" attribute (SVG)

Bulk export:
1. Zaznacz warstwy
2. UΕΌyj Slice tool lub Export settings
3. Export selection (Ctrl/Cmd + Shift + E)

SVG dla ikon:
- Outline strokes przed exportem
- Flatten groups
- Remove unnecessary groups

Inspect Panel (Dev Mode)

Code
TEXT
Properties:
β”œβ”€β”€ Layout (x, y, width, height)
β”œβ”€β”€ Fill (colors, gradients)
β”œβ”€β”€ Stroke (border)
β”œβ”€β”€ Effects (shadows, blur)
└── Typography (font, size, weight)

Code:
β”œβ”€β”€ CSS
β”œβ”€β”€ iOS (Swift)
└── Android (XML)

Assets:
β”œβ”€β”€ Export button
└── Format selection

Best Practices

Organizacja plikΓ³w

Code
TEXT
Project Structure:
β”‚
β”œβ”€β”€ πŸ“„ Cover
β”‚   └── Thumbnail dla pliku
β”‚
β”œβ”€β”€ πŸ“„ Index / TOC
β”‚   └── Linki do wszystkich stron
β”‚
β”œβ”€β”€ πŸ“„ Foundations
β”‚   └── Colors, Typography, Spacing
β”‚
β”œβ”€β”€ πŸ“„ Components
β”‚   └── Wszystkie komponenty z dokumentacjΔ…
β”‚
β”œβ”€β”€ πŸ“„ Feature A
β”‚   β”œβ”€β”€ Wireframes
β”‚   β”œβ”€β”€ High-fidelity
β”‚   └── Prototypes
β”‚
β”œβ”€β”€ πŸ“„ Feature B
β”‚   └── ...
β”‚
└── πŸ“„ Archive
    └── Stare wersje

Naming conventions

Code
TEXT
Layers:
β”œβ”€β”€ Frames: PascalCase (Card, NavBar, Modal)
β”œβ”€β”€ Components: PascalCase (Button, Input)
β”œβ”€β”€ Variants: property=value (Size=Large)
└── Instances: lowercase (icon, label)

Pages:
β”œβ”€β”€ πŸ“„ Cover
β”œβ”€β”€ πŸ“„ 🎨 Design System
β”œβ”€β”€ πŸ“„ πŸ“± Mobile App
β”œβ”€β”€ πŸ“„ πŸ’» Web App
└── πŸ“„ πŸ“¦ Archive

Groups/Sections:
β”œβ”€β”€ Header
β”œβ”€β”€ Hero
β”œβ”€β”€ Features
β”œβ”€β”€ Testimonials
└── Footer

Performance

Code
TEXT
Optymalizacja dla duΕΌych plikΓ³w:
β”‚
β”œβ”€β”€ Limit components na stronΔ™
β”œβ”€β”€ Unikaj ogromnych bitmap
β”œβ”€β”€ UΕΌywaj vector gdzie moΕΌliwe
β”œβ”€β”€ Archiwizuj stare wersje
β”œβ”€β”€ Podziel duΕΌe projekty na pliki
└── UΕΌywaj External Libraries

Cennik Figmy

Plany

Code
TEXT
Free:
β”œβ”€β”€ Cena: $0
β”œβ”€β”€ 3 projekty Figma
β”œβ”€β”€ 3 projekty FigJam
β”œβ”€β”€ Unlimited viewers
β”œβ”€β”€ 30-day version history
└── Mobile app

Professional:
β”œβ”€β”€ Cena: $15/editor/miesiΔ…c (rozliczenie roczne)
β”œβ”€β”€ Unlimited projekty
β”œβ”€β”€ Unlimited version history
β”œβ”€β”€ Shared libraries
β”œβ”€β”€ Dev Mode
β”œβ”€β”€ Private projects
└── Advanced prototyping

Organization:
β”œβ”€β”€ Cena: $45/editor/miesiΔ…c
β”œβ”€β”€ Wszystko z Professional
β”œβ”€β”€ Design System Analytics
β”œβ”€β”€ Centralized libraries
β”œβ”€β”€ SSO
β”œβ”€β”€ Private plugins
└── Org-wide libraries

Enterprise:
β”œβ”€β”€ Cena: Custom
β”œβ”€β”€ Wszystko z Organization
β”œβ”€β”€ Dedicated support
β”œβ”€β”€ Advanced security
β”œβ”€β”€ Guest access controls
└── REST API

FAQ - CzΔ™sto zadawane pytania

Czy Figma jest lepsza od Sketch?

Dla wiΔ™kszoΕ›ci zespoΕ‚Γ³w tak. Figma oferuje:

  • Real-time collaboration (Sketch wymaga Cloud)
  • DziaΕ‚a na kaΕΌdym systemie (Sketch tylko macOS)
  • Darmowy tier wystarczajΔ…cy dla wielu
  • Lepszy Dev Mode i handoff
  • Aktywniej rozwijana

Sketch może być lepszy jeśli:

  • Pracujesz solo na Mac
  • Potrzebujesz specyficznych pluginΓ³w Sketch
  • Masz istniejΔ…cy workflow ze Sketch

Czy Figma jest darmowa?

Tak, Free tier oferuje:

  • 3 projekty Figma
  • 3 projekty FigJam
  • Unlimited viewers
  • Podstawowe funkcje

To wystarcza dla maΕ‚ych projektΓ³w i nauki. Dla zespoΕ‚Γ³w i wiΔ™kszych projektΓ³w potrzebujesz Professional ($15/editor/mo).

Jak exportować z Figmy do kodu?

  1. Dev Mode - wbudowany w FigmΔ™, CSS/iOS/Android
  2. Plugins:
    • Figma to Code (React/Vue/HTML)
    • Anima (peΕ‚ne interakcje)
    • Locofy (no-code export)
  3. API - pobierz JSON i generuj kod

Jak robić responsywne designy?

  1. UΕΌywaj Auto Layout wszΔ™dzie
  2. Stosuj Fill/Hug zamiast fixed sizes
  3. TwΓ³rz frames dla rΓ³ΕΌnych breakpoints:
    • Mobile: 375px
    • Tablet: 768px
    • Desktop: 1440px
  4. UΕΌywaj Constraints dla absolutnie pozycjonowanych elementΓ³w

Jak organizować Design System?

  1. Foundations - colors, typography, spacing jako variables/styles
  2. Primitives - Button, Input, Checkbox jako components
  3. Components - Card, Modal, Table z variants
  4. Patterns - Forms, Navigation, Empty States
  5. Publikuj jako Team Library

Jak współpracować z developerami?

  1. Dev Mode - wΕ‚Δ…cz i udostΔ™pnij link
  2. Comments - oznaczaj @developer przy pytaniach
  3. Handoff checklist - upewnij siΔ™, ΕΌe design jest kompletny
  4. Naming - sensowne nazwy warstw
  5. Documentation - opisuj zachowania w komentarzach

Podsumowanie

Figma to obecnie najpopularniejsze i najbardziej wszechstronne narzΔ™dzie do projektowania UI/UX, oferujΔ…ce:

  • WspΓ³Ε‚pracΔ™ w czasie rzeczywistym - Praca zespoΕ‚owa bez konfliktΓ³w
  • Auto Layout - Responsywne ukΕ‚ady jak w CSS Flexbox
  • Components & Variants - Skalowalne design systemy
  • Dev Mode - Dedykowany tryb dla developerΓ³w
  • Prototyping - Interaktywne prototypy bez kodowania
  • FigJam - Whiteboarding i planowanie
  • Plugin ecosystem - RozszerzalnoΕ›Δ‡

NiezaleΕΌnie czy jesteΕ› designerem, developerem czy product managerem - Figma oferuje narzΔ™dzia do efektywnej wspΓ³Ε‚pracy i tworzenia doskonaΕ‚ych produktΓ³w cyfrowych.


Figma - a complete guide to the UI/UX design tool

What is Figma?

Figma is the leading tool for designing user interfaces (UI) and user experiences (UX) that has revolutionized the way design and development teams work. Unlike traditional tools like Sketch or Adobe XD, Figma runs entirely in the browser, enabling instant real-time collaboration - multiple users can work on the same project simultaneously, much like Google Docs.

Figma was founded in 2012 by Dylan Field and Evan Wallace, and in 2022 Figma was acquired by Adobe for 20 billion dollars (although the deal was later called off). Today Figma is used by millions of designers and developers around the world, at companies like Google, Microsoft, Uber, Airbnb, Twitter, and Spotify.

Why Figma?

Key advantages of Figma

  1. Browser-based - Zero installation, access from any device
  2. Real-time collaboration - Work together in real time like in Google Docs
  3. Auto Layout - Responsive element arrangement like CSS Flexbox/Grid
  4. Components & Variants - Building scalable design systems
  5. Dev Mode - Dedicated mode for developers with code export
  6. Prototyping - Interactive prototypes without coding
  7. FigJam - Whiteboard for brainstorming and planning
  8. Plugin ecosystem - Thousands of plugins extending functionality

Figma vs Sketch vs Adobe XD

FeatureFigmaSketchAdobe XD
PlatformWeb + DesktopmacOS onlyDesktop
CollaborationReal-timeRequires CloudLimited
PriceFree tier + Pro$12/moCC Subscription
Auto Layoutβœ… Advancedβœ… Basicβœ… Basic
Dev Modeβœ… Native❌ Pluginsβœ… Basic
Prototypingβœ… Built-inβœ… Built-inβœ… Built-in
PopularityπŸ₯‡ Most popularπŸ₯ˆ DecliningπŸ₯‰ Niche

Figma basics

User interface

Code
TEXT
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Toolbar (tools)                                                  β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚          β”‚                                         β”‚            β”‚
β”‚  Layers  β”‚              Canvas                     β”‚  Design    β”‚
β”‚  Panel   β”‚         (working area)                  β”‚  Panel     β”‚
β”‚          β”‚                                         β”‚            β”‚
β”‚  - Pages β”‚    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”         β”‚  - Fill    β”‚
β”‚  - Framesβ”‚    β”‚                         β”‚         β”‚  - Stroke  β”‚
β”‚  - Groupsβ”‚    β”‚       Your design       β”‚         β”‚  - Effects β”‚
β”‚  - Shapesβ”‚    β”‚                         β”‚         β”‚  - Layout  β”‚
β”‚          β”‚    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜         β”‚            β”‚
β”‚          β”‚                                         β”‚            β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ Assets / Plugins / Libraries                                     β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Basic elements

Frame - The main container for designs (like <div> in HTML):

Code
TEXT
Frame = Artboard + Auto Layout + Constraints
- Can have specific dimensions (Desktop: 1440px, Mobile: 390px)
- Can be responsive with Auto Layout
- Can clip its contents

Shapes - Basic shapes:

  • Rectangle (R)
  • Ellipse (O)
  • Line (L)
  • Polygon
  • Star
  • Arrow

Text - Text layer (T):

  • Supports Google Fonts
  • Text styles (heading, body, caption)
  • Variable fonts

Groups vs Frames:

Code
TEXT
Groups (Ctrl/Cmd + G):
- Simple grouping
- No properties of their own
- Good for organization

Frames (Ctrl/Cmd + Alt + G):
- Container with its own properties
- Auto Layout
- Constraints
- Clipping
- Use whenever possible

Keyboard shortcuts (must-know)

Code
TEXT
NAVIGATION:
Space + drag     - Pan canvas
Ctrl/Cmd + +/-   - Zoom in/out
Shift + 1        - Zoom to fit
Shift + 2        - Zoom to selection
Ctrl/Cmd + \     - Toggle UI

SELECTION:
Ctrl/Cmd + A     - Select all
Ctrl/Cmd + click - Deep select
Hold Alt + hover - Measure distances

EDITING:
Ctrl/Cmd + D     - Duplicate
Ctrl/Cmd + G     - Group
Ctrl/Cmd + Alt+G - Frame selection
Ctrl/Cmd + R     - Rename
Ctrl/Cmd + [/]   - Send backward/forward

ALIGNMENT:
Alt + A          - Align left
Alt + D          - Align right
Alt + W          - Align top
Alt + S          - Align bottom
Alt + H          - Align center horizontal
Alt + V          - Align center vertical

COMPONENTS:
Ctrl/Cmd + Alt+K - Create component
Ctrl/Cmd + Alt+B - Detach instance

Auto Layout - responsive layouts

Auto Layout is one of Figma's most powerful features, working similarly to CSS Flexbox. It lets you create responsive layouts that automatically adapt to their content.

Auto Layout basics

Code
TEXT
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  Auto Layout Frame                                      β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”               β”‚
β”‚  β”‚ Item β”‚  β”‚ Item β”‚  β”‚ Item β”‚  β”‚ Item β”‚               β”‚
β”‚  β”‚  1   β”‚  β”‚  2   β”‚  β”‚  3   β”‚  β”‚  4   β”‚               β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”˜               β”‚
β”‚                                                         β”‚
β”‚  Direction: Horizontal (β†’)                             β”‚
β”‚  Gap: 16px                                             β”‚
β”‚  Padding: 24px                                         β”‚
β”‚  Alignment: Center                                     β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Auto Layout properties

Code
TEXT
DIRECTION:
- Horizontal (β†’) - elements side by side
- Vertical (↓) - elements stacked
- Wrap - wrapping (like flex-wrap)

GAP (spacing between elements):
- Fixed gap: 16px - constant spacing
- Auto: space-between behavior

PADDING (internal margins):
- Uniform: 16px all sides
- Independent: 16px 24px 16px 24px (T R B L)

ALIGNMENT:
- Primary axis (main): start/center/end/space-between
- Counter axis (cross): start/center/end/baseline

SIZING:
- Fixed: 200px - fixed width
- Hug: fit to contents
- Fill: fill available space

Example: responsive button

Code
TEXT
Button (Auto Layout Frame):
β”œβ”€β”€ Direction: Horizontal
β”œβ”€β”€ Gap: 8px
β”œβ”€β”€ Padding: 12px 24px
β”œβ”€β”€ Alignment: Center/Center
β”‚
β”œβ”€β”€ Icon (16x16)
β”‚   └── Fill container: ❌
β”‚   └── Fixed size: βœ…
β”‚
└── Label ("Click me")
    └── Hug contents: βœ…

Result: A button that automatically grows/shrinks
with its content, maintaining padding and gap.

Advanced Auto Layout patterns

Card with dynamic content:

Code
TEXT
Card Frame (Vertical Auto Layout):
β”œβ”€β”€ Padding: 24px
β”œβ”€β”€ Gap: 16px
β”‚
β”œβ”€β”€ Header (Horizontal Auto Layout)
β”‚   β”œβ”€β”€ Title (Fill) - stretches
β”‚   └── Badge (Hug) - fixed size
β”‚
β”œβ”€β”€ Content (Text, Hug)
β”‚
└── Actions (Horizontal Auto Layout, Space Between)
    β”œβ”€β”€ Secondary Button (Hug)
    └── Primary Button (Hug)

Responsive navigation:

Code
TEXT
Navbar (Horizontal Auto Layout):
β”œβ”€β”€ Padding: 0 24px
β”œβ”€β”€ Min Width: Fill container
β”‚
β”œβ”€β”€ Logo (Fixed 120px)
β”‚
β”œβ”€β”€ Nav Links (Horizontal, Fill)
β”‚   β”œβ”€β”€ Gap: 32px
β”‚   β”œβ”€β”€ Alignment: Center
β”‚   └── Links: Home, Products, About, Contact
β”‚
└── CTA Button (Hug)

Constraints vs Auto Layout

Code
TEXT
Constraints (use when):
- Elements have absolute positioning
- Floating buttons, overlays
- Background images

Auto Layout (use when):
- List of elements
- Forms
- Cards
- Buttons
- UI components

Combination:
Frame with Constraints
└── Auto Layout for content
    └── Items with Fill/Hug

Components & Variants

Components are reusable design elements - the equivalent of React components in the design world.

Creating components

Code
TEXT
1. Design an element (e.g. Button)
2. Select the frame
3. Ctrl/Cmd + Alt + K (Create Component)
4. The component will appear in the Assets panel

Main Component (with 4-diamond icon):
└── Source of truth - editing affects all instances

Instance (with 1-diamond icon):
└── A copy of the component - you can override properties

Variants - component variants

Variants let you group different states/versions of a component in one place.

Code
TEXT
Button Component
β”‚
β”œβ”€β”€ Variant: Size
β”‚   β”œβ”€β”€ Small (height: 32px, padding: 8px 16px)
β”‚   β”œβ”€β”€ Medium (height: 40px, padding: 12px 24px)
β”‚   └── Large (height: 48px, padding: 16px 32px)
β”‚
β”œβ”€β”€ Variant: Style
β”‚   β”œβ”€β”€ Primary (bg: blue, text: white)
β”‚   β”œβ”€β”€ Secondary (bg: gray, text: dark)
β”‚   └── Ghost (bg: transparent, border: gray)
β”‚
└── Variant: State
    β”œβ”€β”€ Default
    β”œβ”€β”€ Hover
    β”œβ”€β”€ Pressed
    β”œβ”€β”€ Disabled
    └── Loading

Example: button with variants

Code
TEXT
Step 1: Create the base button
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚      Click me           β”‚ ← Main Component
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Step 2: Add variants (Component β†’ Add variant)
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Button Component Set                                 β”‚
β”‚                                                      β”‚
β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”        β”‚
β”‚ β”‚  Primary  β”‚  β”‚ Secondary β”‚  β”‚   Ghost   β”‚ Style  β”‚
β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜        β”‚
β”‚                                                      β”‚
β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”        β”‚
β”‚ β”‚   Small   β”‚  β”‚  Medium   β”‚  β”‚   Large   β”‚ Size   β”‚
β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜        β”‚
β”‚                                                      β”‚
β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”        β”‚
β”‚ β”‚  Default  β”‚  β”‚   Hover   β”‚  β”‚ Disabled  β”‚ State  β”‚
β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜        β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Step 3: Define the properties of each variant
In the Design Panel set:
- Size=Small, Style=Primary, State=Default
- Size=Medium, Style=Secondary, State=Hover
- etc.

Component Properties

A modern way to configure components without creating separate variants:

Code
TEXT
Button Component Properties:
β”‚
β”œβ”€β”€ Text Property: "label"
β”‚   └── Allows editing the instance text
β”‚
β”œβ”€β”€ Boolean Property: "showIcon"
β”‚   └── Show/hide the icon
β”‚
β”œβ”€β”€ Instance Swap Property: "icon"
β”‚   └── Swap the icon for another from the library
β”‚
└── Variant Property: "size", "style", "state"
    └── Choose a variant from the list

Usage in an instance:
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Properties Panel                     β”‚
β”‚                                      β”‚
β”‚ label: "Submit"        [text field]  β”‚
β”‚ showIcon: β˜‘οΈ           [checkbox]    β”‚
β”‚ icon: [arrow-right]    [dropdown]    β”‚
β”‚ size: Medium           [dropdown]    β”‚
β”‚ style: Primary         [dropdown]    β”‚
β”‚ state: Default         [dropdown]    β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Design Tokens and Styles

Color Styles

Code
TEXT
Colors (define in Local Styles):
β”‚
β”œβ”€β”€ Primary
β”‚   β”œβ”€β”€ primary-500: #6366F1 (main)
β”‚   β”œβ”€β”€ primary-600: #4F46E5 (hover)
β”‚   β”œβ”€β”€ primary-400: #818CF8 (light)
β”‚   └── primary-50: #EEF2FF (background)
β”‚
β”œβ”€β”€ Neutral
β”‚   β”œβ”€β”€ gray-900: #111827 (text)
β”‚   β”œβ”€β”€ gray-500: #6B7280 (secondary)
β”‚   β”œβ”€β”€ gray-200: #E5E7EB (border)
β”‚   └── gray-50: #F9FAFB (background)
β”‚
β”œβ”€β”€ Semantic
β”‚   β”œβ”€β”€ success: #10B981
β”‚   β”œβ”€β”€ warning: #F59E0B
β”‚   β”œβ”€β”€ error: #EF4444
β”‚   └── info: #3B82F6
β”‚
└── Surface
    β”œβ”€β”€ background: #FFFFFF
    β”œβ”€β”€ surface: #F9FAFB
    └── overlay: rgba(0,0,0,0.5)

Text Styles

Code
TEXT
Typography (define in Local Styles):
β”‚
β”œβ”€β”€ Display
β”‚   β”œβ”€β”€ display-2xl: 72px/90px, Bold
β”‚   └── display-xl: 60px/72px, Bold
β”‚
β”œβ”€β”€ Headings
β”‚   β”œβ”€β”€ heading-1: 48px/60px, Semibold
β”‚   β”œβ”€β”€ heading-2: 36px/44px, Semibold
β”‚   β”œβ”€β”€ heading-3: 30px/38px, Semibold
β”‚   └── heading-4: 24px/32px, Semibold
β”‚
β”œβ”€β”€ Body
β”‚   β”œβ”€β”€ body-lg: 18px/28px, Regular
β”‚   β”œβ”€β”€ body-md: 16px/24px, Regular
β”‚   └── body-sm: 14px/20px, Regular
β”‚
β”œβ”€β”€ Labels
β”‚   β”œβ”€β”€ label-lg: 14px/20px, Medium
β”‚   β”œβ”€β”€ label-md: 12px/16px, Medium
β”‚   └── label-sm: 11px/16px, Medium
β”‚
└── Code
    └── code-md: 14px/20px, Mono, Regular

Effect Styles

Code
TEXT
Effects (shadows, blurs):
β”‚
β”œβ”€β”€ Shadows
β”‚   β”œβ”€β”€ shadow-sm: 0 1px 2px rgba(0,0,0,0.05)
β”‚   β”œβ”€β”€ shadow-md: 0 4px 6px rgba(0,0,0,0.1)
β”‚   β”œβ”€β”€ shadow-lg: 0 10px 15px rgba(0,0,0,0.1)
β”‚   └── shadow-xl: 0 20px 25px rgba(0,0,0,0.15)
β”‚
└── Blurs
    β”œβ”€β”€ blur-sm: 4px
    β”œβ”€β”€ blur-md: 8px
    └── blur-lg: 16px

Variables (new feature)

Variables are a modern alternative to Styles, supporting:

  • Dark mode
  • Responsive breakpoints
  • Aliasing
Code
TEXT
Variables Collections:
β”‚
β”œβ”€β”€ Primitives (raw values)
β”‚   β”œβ”€β”€ blue-500: #6366F1
β”‚   β”œβ”€β”€ gray-900: #111827
β”‚   └── spacing-4: 16px
β”‚
└── Semantic (aliases)
    β”œβ”€β”€ color-primary: {blue-500}
    β”œβ”€β”€ color-text: {gray-900}
    └── spacing-md: {spacing-4}

Modes:
β”œβ”€β”€ Light Mode
β”‚   └── color-background: #FFFFFF
β”‚
└── Dark Mode
    └── color-background: #1F2937

Dev Mode - Figma for developers

Dev Mode is a dedicated mode for programmers that makes it easier to translate designs into code.

Enabling Dev Mode

Code
TEXT
1. Click the "<>" toggle in the top-right corner
2. Or use Shift + D
3. The interface will switch to the developer view

Dev Mode features

Property inspection:

Code
CSS
/* Figma automatically generates CSS */
.button {
  display: flex;
  padding: 12px 24px;
  justify-content: center;
  align-items: center;
  gap: 8px;

  border-radius: 8px;
  background: #6366F1;

  /* Typography */
  color: #FFF;
  font-family: Inter;
  font-size: 14px;
  font-weight: 500;
  line-height: 20px;
}

Export to various formats:

Code
TEXT
CSS:
.element {
  width: 200px;
  height: 48px;
  background: #6366F1;
  border-radius: 8px;
}

iOS (SwiftUI):
Rectangle()
  .frame(width: 200, height: 48)
  .background(Color(hex: "6366F1"))
  .cornerRadius(8)

Android (Compose):
Box(
  modifier = Modifier
    .size(width = 200.dp, height = 48.dp)
    .background(Color(0xFF6366F1))
    .clip(RoundedCornerShape(8.dp))
)

Measuring distances:

Code
TEXT
In Dev Mode:
- Hover over an element β†’ shows dimensions
- Hover between elements β†’ shows spacing
- Alt + hover β†’ detailed measurements

Code snippets and integrations

Code
TypeScript
// Figma can generate snippets for frameworks

// React + Tailwind:
<button className="flex items-center gap-2 px-6 py-3
  bg-indigo-500 hover:bg-indigo-600
  text-white font-medium rounded-lg">
  <IconPlus className="w-4 h-4" />
  Add item
</button>

// React + styled-components:
const Button = styled.button`
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 12px 24px;
  background: #6366F1;
  color: white;
  font-weight: 500;
  border-radius: 8px;

  &:hover {
    background: #4F46E5;
  }
`;

VS Code Extension

Code
TEXT
Figma for VS Code:
1. Install the "Figma for VS Code" extension
2. Connect to your Figma account
3. Browse Figma files directly in VS Code
4. Copy values without switching windows
5. Generate code from designs

Prototyping

Figma enables creating interactive prototypes without writing any code.

Prototyping basics

Code
TEXT
1. Switch to the Prototype tab (right panel)
2. Select the source element (e.g. Button)
3. Drag the connector to the target frame
4. Configure the interaction

Interaction:
β”œβ”€β”€ Trigger: On click / On hover / On drag / While pressing
β”œβ”€β”€ Action: Navigate to / Open overlay / Swap variant / Scroll to
└── Animation: Instant / Dissolve / Move in / Push / Slide

Smart Animate

Code
TEXT
Smart Animate automatically animates differences between frames:

Frame 1: Card (collapsed)
β”œβ”€β”€ Thumbnail (100x100)
β”œβ”€β”€ Title
└── Height: 150px

Frame 2: Card (expanded)
β”œβ”€β”€ Thumbnail (100x100)
β”œβ”€β”€ Title
β”œβ”€β”€ Description
β”œβ”€β”€ Actions
└── Height: 300px

Smart Animate interpolates:
- Height: 150px β†’ 300px
- Opacity of new elements: 0 β†’ 1
- Element positions

Interactive Components

Code
TEXT
Button Component (with interactions):
β”‚
β”œβ”€β”€ Default State
β”‚   └── On hover β†’ Hover State (Smart Animate)
β”‚
β”œβ”€β”€ Hover State
β”‚   β”œβ”€β”€ On mouse leave β†’ Default State
β”‚   └── On click β†’ Pressed State
β”‚
β”œβ”€β”€ Pressed State
β”‚   └── After delay (100ms) β†’ Default State
β”‚
└── Disabled State
    └── No interactions

Overflow scrolling

Code
TEXT
Scrollable Frame:
β”œβ”€β”€ Width: 375px (fixed)
β”œβ”€β”€ Height: 667px (fixed)
β”œβ”€β”€ Overflow: Scroll vertically
β”‚
└── Content Frame
    β”œβ”€β”€ Width: Fill container
    β”œβ”€β”€ Height: Hug (1500px of content)
    └── Auto Layout: Vertical

Overlay prototypes

Code
TEXT
Modal Overlay:
β”‚
β”œβ”€β”€ Trigger Frame (Button "Open Modal")
β”‚   └── On click β†’ Open overlay
β”‚
β”œβ”€β”€ Overlay (Modal Frame)
β”‚   β”œβ”€β”€ Position: Center
β”‚   β”œβ”€β”€ Background: #000 50% opacity
β”‚   └── Close on clicking outside: βœ…
β”‚
└── Close Button
    └── On click β†’ Close overlay

FigJam - whiteboarding

FigJam is a tool for visual collaboration, brainstorming, and planning.

FigJam use cases

Code
TEXT
1. Brainstorming
   - Sticky notes with ideas
   - Voting (stamps)
   - Grouping and categorization

2. User Flow Diagrams
   - Shapes (circles, rectangles)
   - Connectors (arrows)
   - Swimlanes

3. Planning
   - Kanban boards
   - Timelines
   - Mind maps

4. Retrospectives
   - What went well / What to improve
   - Action items
   - Team discussions

FigJam Templates

Code
TEXT
Available templates:
β”œβ”€β”€ Brainstorming
β”‚   β”œβ”€β”€ Mind Map
β”‚   β”œβ”€β”€ Affinity Diagram
β”‚   └── Crazy 8s
β”‚
β”œβ”€β”€ Meetings
β”‚   β”œβ”€β”€ Daily Standup
β”‚   β”œβ”€β”€ Sprint Retrospective
β”‚   └── Team Sync
β”‚
β”œβ”€β”€ Strategy
β”‚   β”œβ”€β”€ SWOT Analysis
β”‚   β”œβ”€β”€ Business Model Canvas
β”‚   └── User Journey Map
β”‚
└── Agile
    β”œβ”€β”€ Sprint Planning
    β”œβ”€β”€ Kanban Board
    └── Story Mapping

Plugins and integrations

Must-have plugins

Code
TEXT
Design:
β”œβ”€β”€ Iconify - millions of icons (Material, Feather, etc.)
β”œβ”€β”€ Unsplash - free stock photos
β”œβ”€β”€ Remove BG - remove backgrounds from photos
β”œβ”€β”€ Blush - customizable illustrations
└── Content Reel - avatars, names, lorem ipsum

Development:
β”œβ”€β”€ Figma to Code - export to React/Vue/HTML
β”œβ”€β”€ Tailwind CSS - Tailwind classes from designs
β”œβ”€β”€ Anima - export to React/Vue with interactions
└── Storybook Connect - sync with Storybook

Productivity:
β”œβ”€β”€ Autoflow - automatic flow diagrams
β”œβ”€β”€ Similayer - find similar layers
β”œβ”€β”€ Rename It - batch renaming layers
└── Instance Finder - find component usage

Accessibility:
β”œβ”€β”€ Stark - contrast, color blindness check
β”œβ”€β”€ A11y - accessibility annotations
└── Color Blind - color blindness simulation

Installing plugins

Code
TEXT
1. Menu β†’ Plugins β†’ Browse plugins in Community
2. Search for a plugin
3. Click "Install"
4. Use via Menu β†’ Plugins β†’ [Name]
   or Ctrl/Cmd + / (Quick Actions)

Figma API

Code
JavaScript
// Figma REST API - access files and comments

// Fetch a Figma file
const response = await fetch(
  `https://api.figma.com/v1/files/${fileKey}`,
  {
    headers: {
      'X-Figma-Token': process.env.FIGMA_TOKEN
    }
  }
);

const file = await response.json();
console.log(file.name);
console.log(file.document.children); // Pages

// Fetch images from a file
const imagesResponse = await fetch(
  `https://api.figma.com/v1/images/${fileKey}?ids=${nodeIds}&format=png&scale=2`,
  {
    headers: {
      'X-Figma-Token': process.env.FIGMA_TOKEN
    }
  }
);

const images = await imagesResponse.json();
// images.images = { nodeId: imageUrl, ... }

Figma Plugin Development

TSfigma-plugin/code.ts
TypeScript
// figma-plugin/code.ts

// Main plugin code
figma.showUI(__html__, { width: 300, height: 400 });

// Listen for messages from UI
figma.ui.onmessage = async (msg) => {
  if (msg.type === 'create-rectangle') {
    const rect = figma.createRectangle();
    rect.x = 0;
    rect.y = 0;
    rect.resize(msg.width, msg.height);
    rect.fills = [{ type: 'SOLID', color: { r: 1, g: 0.5, b: 0 } }];

    figma.currentPage.appendChild(rect);
    figma.currentPage.selection = [rect];
    figma.viewport.scrollAndZoomIntoView([rect]);
  }

  figma.closePlugin();
};

// Plugin UI (ui.html)
// <script>
//   document.getElementById('create').onclick = () => {
//     parent.postMessage({
//       pluginMessage: { type: 'create-rectangle', width: 100, height: 100 }
//     }, '*');
//   };
// </script>

Design Systems in Figma

Design System structure

Code
TEXT
Design System Library:
β”‚
β”œβ”€β”€ πŸ“ Foundations
β”‚   β”œβ”€β”€ Colors (variables)
β”‚   β”œβ”€β”€ Typography (text styles)
β”‚   β”œβ”€β”€ Spacing (variables)
β”‚   β”œβ”€β”€ Shadows (effect styles)
β”‚   └── Iconography
β”‚
β”œβ”€β”€ πŸ“ Primitives
β”‚   β”œβ”€β”€ Button
β”‚   β”œβ”€β”€ Input
β”‚   β”œβ”€β”€ Checkbox
β”‚   β”œβ”€β”€ Radio
β”‚   β”œβ”€β”€ Select
β”‚   β”œβ”€β”€ Toggle
β”‚   └── Badge
β”‚
β”œβ”€β”€ πŸ“ Components
β”‚   β”œβ”€β”€ Card
β”‚   β”œβ”€β”€ Modal
β”‚   β”œβ”€β”€ Dropdown
β”‚   β”œβ”€β”€ Tabs
β”‚   β”œβ”€β”€ Toast
β”‚   └── Tooltip
β”‚
β”œβ”€β”€ πŸ“ Patterns
β”‚   β”œβ”€β”€ Navigation
β”‚   β”œβ”€β”€ Forms
β”‚   β”œβ”€β”€ Tables
β”‚   β”œβ”€β”€ Empty States
β”‚   └── Error States
β”‚
└── πŸ“ Templates
    β”œβ”€β”€ Dashboard
    β”œβ”€β”€ Settings
    β”œβ”€β”€ Profile
    └── Landing Page

Publishing a library

Code
TEXT
1. Team Library:
   - File β†’ Publish Library
   - Choose components to publish
   - Add descriptions and examples

2. Using the library:
   - Assets panel β†’ Team library
   - Drag components onto the canvas
   - Automatic updates

3. Versioning:
   - Publish with a change description
   - Users see "Updates available"
   - They can preview and accept changes

Component documentation

Code
TEXT
Component Page structure:
β”‚
β”œβ”€β”€ Title & Description
β”‚   └── What the component does
β”‚
β”œβ”€β”€ Anatomy
β”‚   └── Diagram of constituent parts
β”‚
β”œβ”€β”€ Variants Showcase
β”‚   └── All variants side by side
β”‚
β”œβ”€β”€ Usage Guidelines
β”‚   β”œβ”€β”€ βœ… Do (good examples)
β”‚   └── ❌ Don't (bad examples)
β”‚
β”œβ”€β”€ Properties Reference
β”‚   └── Table of all properties
β”‚
└── Related Components
    └── Links to related ones

Collaboration and Workflow

Collaboration modes

Code
TEXT
1. Editor (Full Access):
   - Can edit everything
   - Can publish changes
   - Can manage members

2. Viewer (Can View):
   - Can view and comment
   - Can copy elements
   - Cannot edit

3. Viewer-Restricted:
   - Viewing only
   - No copying
   - No exporting

Comments and Feedback

Code
TEXT
Comments:
- Click C or the comment icon
- Click a spot on the canvas
- Write your comment
- @mention team members

Organization:
- Resolved/Unresolved
- Filter by author
- Filter by date
- Export comments

Branching (available on Team/Enterprise plans)

Code
TEXT
Main File (source of truth)
β”‚
β”œβ”€β”€ Branch: Feature A
β”‚   └── Experimental changes
β”‚
β”œβ”€β”€ Branch: Feature B
β”‚   └── New design
β”‚
└── Merge back to Main
    └── After review and approval

Version History

Code
TEXT
1. File β†’ Show Version History
2. Browse previous versions
3. Name important versions (milestones)
4. Restore a previous version
5. Duplicate a version as a new file

Handoff - delivering to developers

Preparing a design for handoff

Code
TEXT
Handoff checklist:
β–‘ All elements are in components
β–‘ You are using Auto Layout
β–‘ Colors are in styles/variables
β–‘ Typography is in styles
β–‘ Layer names are meaningful
β–‘ Variants cover all states
β–‘ Spacing is consistent
β–‘ Assets are exported (1x, 2x, 3x)
β–‘ The prototype works
β–‘ Dev Mode is enabled

Exporting assets

Code
TEXT
Export settings:
β”œβ”€β”€ Format: PNG / SVG / JPG / PDF
β”œβ”€β”€ Scale: 1x, 2x, 3x (for retina)
β”œβ”€β”€ Suffix: @2x, @3x
└── Include "id" attribute (SVG)

Bulk export:
1. Select layers
2. Use the Slice tool or Export settings
3. Export selection (Ctrl/Cmd + Shift + E)

SVG for icons:
- Outline strokes before export
- Flatten groups
- Remove unnecessary groups

Inspect Panel (Dev Mode)

Code
TEXT
Properties:
β”œβ”€β”€ Layout (x, y, width, height)
β”œβ”€β”€ Fill (colors, gradients)
β”œβ”€β”€ Stroke (border)
β”œβ”€β”€ Effects (shadows, blur)
└── Typography (font, size, weight)

Code:
β”œβ”€β”€ CSS
β”œβ”€β”€ iOS (Swift)
└── Android (XML)

Assets:
β”œβ”€β”€ Export button
└── Format selection

Best Practices

File organization

Code
TEXT
Project Structure:
β”‚
β”œβ”€β”€ πŸ“„ Cover
β”‚   └── Thumbnail for the file
β”‚
β”œβ”€β”€ πŸ“„ Index / TOC
β”‚   └── Links to all pages
β”‚
β”œβ”€β”€ πŸ“„ Foundations
β”‚   └── Colors, Typography, Spacing
β”‚
β”œβ”€β”€ πŸ“„ Components
β”‚   └── All components with documentation
β”‚
β”œβ”€β”€ πŸ“„ Feature A
β”‚   β”œβ”€β”€ Wireframes
β”‚   β”œβ”€β”€ High-fidelity
β”‚   └── Prototypes
β”‚
β”œβ”€β”€ πŸ“„ Feature B
β”‚   └── ...
β”‚
└── πŸ“„ Archive
    └── Old versions

Naming conventions

Code
TEXT
Layers:
β”œβ”€β”€ Frames: PascalCase (Card, NavBar, Modal)
β”œβ”€β”€ Components: PascalCase (Button, Input)
β”œβ”€β”€ Variants: property=value (Size=Large)
└── Instances: lowercase (icon, label)

Pages:
β”œβ”€β”€ πŸ“„ Cover
β”œβ”€β”€ πŸ“„ 🎨 Design System
β”œβ”€β”€ πŸ“„ πŸ“± Mobile App
β”œβ”€β”€ πŸ“„ πŸ’» Web App
└── πŸ“„ πŸ“¦ Archive

Groups/Sections:
β”œβ”€β”€ Header
β”œβ”€β”€ Hero
β”œβ”€β”€ Features
β”œβ”€β”€ Testimonials
└── Footer

Performance

Code
TEXT
Optimization for large files:
β”‚
β”œβ”€β”€ Limit components per page
β”œβ”€β”€ Avoid huge bitmaps
β”œβ”€β”€ Use vectors where possible
β”œβ”€β”€ Archive old versions
β”œβ”€β”€ Split large projects into files
└── Use External Libraries

Figma pricing

Plans

Code
TEXT
Free:
β”œβ”€β”€ Price: $0
β”œβ”€β”€ 3 Figma projects
β”œβ”€β”€ 3 FigJam projects
β”œβ”€β”€ Unlimited viewers
β”œβ”€β”€ 30-day version history
└── Mobile app

Professional:
β”œβ”€β”€ Price: $15/editor/month (billed annually)
β”œβ”€β”€ Unlimited projects
β”œβ”€β”€ Unlimited version history
β”œβ”€β”€ Shared libraries
β”œβ”€β”€ Dev Mode
β”œβ”€β”€ Private projects
└── Advanced prototyping

Organization:
β”œβ”€β”€ Price: $45/editor/month
β”œβ”€β”€ Everything in Professional
β”œβ”€β”€ Design System Analytics
β”œβ”€β”€ Centralized libraries
β”œβ”€β”€ SSO
β”œβ”€β”€ Private plugins
└── Org-wide libraries

Enterprise:
β”œβ”€β”€ Price: Custom
β”œβ”€β”€ Everything in Organization
β”œβ”€β”€ Dedicated support
β”œβ”€β”€ Advanced security
β”œβ”€β”€ Guest access controls
└── REST API

FAQ - frequently asked questions

Is Figma better than Sketch?

For most teams, yes. Figma offers:

  • Real-time collaboration (Sketch requires Cloud)
  • Runs on any operating system (Sketch is macOS only)
  • A free tier that is sufficient for many users
  • Better Dev Mode and handoff
  • More actively developed

Sketch might be better if:

  • You work solo on a Mac
  • You need specific Sketch plugins
  • You have an existing Sketch workflow

Is Figma free?

Yes, the Free tier offers:

  • 3 Figma projects
  • 3 FigJam projects
  • Unlimited viewers
  • Basic features

This is enough for small projects and learning. For teams and larger projects you need Professional ($15/editor/mo).

How do you export from Figma to code?

  1. Dev Mode - built into Figma, CSS/iOS/Android
  2. Plugins:
    • Figma to Code (React/Vue/HTML)
    • Anima (full interactions)
    • Locofy (no-code export)
  3. API - fetch JSON and generate code

How do you create responsive designs?

  1. Use Auto Layout everywhere
  2. Use Fill/Hug instead of fixed sizes
  3. Create frames for different breakpoints:
    • Mobile: 375px
    • Tablet: 768px
    • Desktop: 1440px
  4. Use Constraints for absolutely positioned elements

How do you organize a Design System?

  1. Foundations - colors, typography, spacing as variables/styles
  2. Primitives - Button, Input, Checkbox as components
  3. Components - Card, Modal, Table with variants
  4. Patterns - Forms, Navigation, Empty States
  5. Publish as a Team Library

How do you collaborate with developers?

  1. Dev Mode - enable it and share the link
  2. Comments - tag @developer with questions
  3. Handoff checklist - make sure the design is complete
  4. Naming - meaningful layer names
  5. Documentation - describe behaviors in comments

Summary

Figma is currently the most popular and versatile UI/UX design tool, offering:

  • Real-time collaboration - Teamwork without conflicts
  • Auto Layout - Responsive layouts like CSS Flexbox
  • Components & Variants - Scalable design systems
  • Dev Mode - Dedicated mode for developers
  • Prototyping - Interactive prototypes without coding
  • FigJam - Whiteboarding and planning
  • Plugin ecosystem - Extensibility

Whether you are a designer, developer, or product manager - Figma provides the tools for effective collaboration and creating outstanding digital products.