Mission 03 · Core system

Components, Variants and Component Properties

Build reusable UI without detachment, duplicated screens, or variant explosion.

3 hr mission time5 quiz questions+100 XP on clear
LVL 3
  • Button (Main Component)edit here → propagates below
    • Instance — “Save” (Review screen)auto-updates
    • Instance — “Cancel” (Review screen)auto-updates
    • Instance — “Continue” (Setup screen)auto-updates
One main component, three instances
Briefing

Your mission objective

Know what “cleared” looks like before opening Figma.

By the end, you can…

  • Distinguish main components from instances.
  • Model state and size with variants.
  • Expose text, Boolean, and instance-swap properties.
  • Design a visible focus state and communicate state beyond colour.

Bring with you

  • Auto Layout fluency
  • Day 2 component candidates
Intel

Decode the system

Understand the production logic before following steps.

A component is a maintained source of truth; an instance is a contextual use of that source. The value is not the diamond icon itself but the update path it creates. If a change to padding or focus treatment must be repeated across screens, the system is already paying a maintenance penalty.

Variants describe a bounded set of meaningful options such as size, hierarchy, and interaction state. Properties expose what an instance owner should change without detaching: label text, optional icon visibility, or which icon instance is used. The best API is small and legible. Hundreds of combinations usually signal that separate responsibilities have been forced into one component.

Detach only when the instance truly stops belonging to the system. Normal content changes, icon choices, or state changes are not reasons to detach. Test the component by placing instances in real contexts and changing the main component. If the update propagates without destroying intentional overrides, the architecture is doing useful work.

Interactive states are an accessibility surface, not just a hover flourish. A keyboard user never sees hover — they see focus. If your variant set stops at default/hover/pressed/disabled, you have designed for a mouse only. Add a Focus variant with a visible outline or ring distinct from hover, and design disabled so it reads as disabled without relying on colour alone (add reduced opacity plus a cursor or label cue). Loading and error variants matter wherever a component can genuinely be waiting or wrong — a submit button, a data card — not on every component by default.

01Main

Maintained source of structure and defaults.

02Instance

Contextual use with controlled overrides.

03Variant

A finite option such as size or state.

04Property

A safe control exposed to the instance user.

Build phase

Build the recovery interface component set

Follow once, then explain each structural choice.

  1. 01

    Create a button main component with label and optional leading icon.

  2. 02

    Add primary, secondary, and tertiary hierarchy variants.

  3. 03

    Add small, medium, and large size variants.

  4. 04

    Add default, hover, pressed, focus, and disabled state variants — focus needs its own visible outline, not a copy of hover.

  5. 05

    Make the disabled state readable without colour alone: lower contrast plus a clear label or cursor cue, and note what would re-enable it.

  6. 06

    Expose the label as text and icon visibility as Boolean.

  7. 07

    Expose the icon as an instance-swap property.

  8. 08

    Apply the same decisions to an input, status badge, alert, and navigation item — add loading and error variants only where that component can genuinely be waiting or wrong.

Practice canvas

Cloud Recovery Operations Platform

Build this fictional SaaS project in your own Figma file. No proprietary source file or private embed is required.

Framewise doesn’t yet have a duplicable starter file or a completed reference outcome for this mission — that’s on the roadmap, not something we’re pretending exists. The link below opens a genuinely blank Figma file, not a prepared course file.

Create a new Figma file
Chaos test

Try to break the build

A layout is not responsive until real variation tries to break it.

1

Change the main button radius once.

2

Use a 32-character label.

3

Swap the leading icon.

4

Remove optional alert copy.

5

Tab through your instances in prototype preview and confirm focus is visible on every one.

Solo challenge

Build without the guide

Remove tutorial dependence and work from the outcome.

Build a toast notification with optional icon, editable title, message, status variant, and dismiss control.

Independent timebox35:00
MISSION QUIZUP TO +40 XP
Checkpoint

Check your understanding

Five fast retrieval rounds. Land 80% to clear the checkpoint.

01You need to change normal instance copy. What should you do?
02Optional leading icon visibility is best exposed as:
03Which should usually be a variant?
04What does a successful main-component edit prove?
05Variant explosion usually suggests:
Verify

Pass criteria

Self-certify observable results, not effort.

Debrief

Lock in the learning

Write two short answers in your own notes.

  1. 01

    Which option belongs as a property rather than a variant?

  2. 02

    Where could one component be split into two clearer responsibilities?

Mission reward · +100 XP

Ready to claim the reward?

Score 80% in the mission quiz and check off all 7 build criteria to claim the reward.