Query mode

Query mode is where staged blocks live. Selecting a staged block opens its Inspector on the right, which shows the per-property diff against Figma and lets you resolve any conflicts before committing the import.

Screenshot of Query mode with several staged blocks in the list

The staged block list

Each incoming transfer appears as a staged block until you add it to the project. A block is laid out left-to-right with five visible elements:

  1. Status bar: coloured stripe on the left. Orange while any conflict or user-edit is unresolved; green when everything is resolved (or there is nothing to resolve).

  2. Transfer-type icon: Shape, Layout, Text, Image, Library Asset.

  3. Layer name: the Figma layer or component name (tags stripped).

  4. Add to project button: commits the block. Until clicked, nothing is written to the .kzproj.

  5. Delete button: dismisses the block without importing.

Clicking the block selects it and opens its Inspector to the right.

Inspector

The Inspector has two parts: a header card with transfer-type-specific information at the top, and a conflict / property body below. The Inspector content always follows the staged block that is currently selected in the list; it is not driven by the Kanzi Studio scene-tree selection.

Screenshot of the Inspector with the header card and property body

Inspector header

The header shows transfer-type-specific information:

  • Transfer type and status (“No Conflicts”, “2 Conflicts”).

  • Exposed properties and characteristics of the incoming block.

  • Estimated import time. Estimates are rough: the import time depends on hardware as well as on block content, and the underlying measurements are still being expanded. Use the number as an indicator, not as an exact value.

The exact content depends on the block type. Layout blocks list their child structure, Library Asset blocks list the detected assets.

When conflicts exist, the body lists every conflicting property; resolve them one by one. The bulk buttons (Replace all / Keep all / Keep user edits) also appear in this state.

Property body

The body is a flat list of rows, grouped under category sub-headers (FVC Variables, Properties).

Screenshot of the property body with a conflict row

Row types

Row

When it appears

Conflict

Incoming differs from current Kanzi value and current Kanzi differs from initial. Per-property Override / Keep toggle.

User-edit

Property was changed in Kanzi after the last import. The row shows Current (your edit) on the left and After Override (the incoming Figma value) on the right.

Variable-edit

A Figma variable’s value changed. Grouped under the FVC Variables sub-header. Same Override / Keep toggle.

Visual conventions:

  • An orange accent strip on the left of a header signals “needs attention” (Conflict or Edit headers).

  • Color swatches on COLOR-typed rows show the hex or RGB value.

  • Humanised property names: FillColor displays as “Fill Color”.

  • A header counter shows the remaining work: “User edits detected (2 of 5 unresolved)”.

  • Locked and active blocks dim other blocks (Opacity 0.4) during import to prevent accidental parallel transfers.

Bulk actions

When a block has two or more unresolved edits, three bulk buttons appear:

Button

Behaviour

Replace all

Take the new Figma value for every row

Keep all

Preserve every Kanzi-side value

Keep user edits

Smart default: Keep for UserOnly + Both edits, Replace for FigmaOnly

The third option preserves your work and accepts Figma updates only where no local edits exist.

Properties bound to a Figma variable are suppressed from the conflict UI. The StateManager binding overwrites the node value on every re-import, so a drift row in this case would be redundant.

How the diff works

On import the plugin records the imported value of every supported property in the metadata blob on the sentinel node. On the next transfer the plugin compares three values:

  • Incoming value (from Figma).

  • Initial value (the snapshot in the metadata blob).

  • Current value (the value in Kanzi right now).

A row appears when Incoming differs from Current and Current differs from Initial. If only one of those is true, no row is shown.

  • Override writes the Figma value to Kanzi.

  • Keep leaves the Kanzi value alone but advances the baseline so the same row does not re-fire next time.

Until you choose Override, the row reappears on every re-import. This prevents accidental loss of a local edit. Resolutions persist across Kanzi Studio sessions.

Warning

The diff covers the property and variable types that Kanzi Figma Importer explicitly tracks. Not every Figma change surfaces as a conflict row; the coverage of property types is still being expanded and benefits from more testing. If you expect a change to surface but it does not, file feedback via the Kanzi Support Portal.

Version chain

Every transfer of the same Figma asset adds an entry to a per-block version chain visible in the Inspector. For the full lifecycle, see Version chain.

See also

Clipboard mode

Library Assets (FVC pipeline)

Figma metadata node and re-imports

Kanzi Studio plugin overview

Library Asset transfer