Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ A multi-project workspace for Figma plugins and design tools.

| Project | Folder | Status | Notes |
|---------|--------|--------|-------|
| Variables & Styles Extractor | [`variables-styles-extractor/`](variables-styles-extractor/) | Published v2.1.0 · first published 17 Jan 2026 | Figma plugin · [Community page](https://www.figma.com/community/plugin/1584331992332668732/variables-and-styles-extractor) |
| Variables & Styles Extractor | [`variables-styles-extractor/`](variables-styles-extractor/) | Published v2.1.2 · first published 17 Jan 2026 | Figma plugin · [Community page](https://www.figma.com/community/plugin/1584331992332668732/variables-and-styles-extractor) |

---

Expand Down
4 changes: 2 additions & 2 deletions variables-styles-extractor/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,11 @@
[![Figma Plugin](https://img.shields.io/badge/Figma-Plugin-ff69b4)](https://www.figma.com/community/plugin/1584331992332668732/variables-and-styles-extractor)
[![Source: MIT](https://img.shields.io/badge/Source-MIT-yellow.svg)](./LICENSE)
[![Distribution: CFRL](https://img.shields.io/badge/Figma%20Distribution-CFRL-blueviolet.svg)](https://www.figma.com/community-free-resource-license/)
[![Version](https://img.shields.io/badge/version-2.1.0-blue.svg)](./package.json)
[![Version](https://img.shields.io/badge/version-2.1.2-blue.svg)](./package.json)

**Move your design system anywhere. Export and import Figma variables and styles — selectively, safely, and in Tokens Studio–compatible JSON.**

> 🔍 **Status:** v2.1.0 published to Figma Community · v2.0.0 first published 17 January 2026
> 🔍 **Status:** v2.1.2 published to Figma Community · v2.0.0 first published 17 January 2026

Variables & Styles Extractor moves complete design systems between Figma files — every variable collection, mode, alias, and style — as clean, re-importable JSON. It runs **100% locally** (zero network access) and stays responsive on large design systems thanks to a batched processing engine with live progress and a real Cancel button.

Expand Down
2 changes: 1 addition & 1 deletion variables-styles-extractor/code.js

Large diffs are not rendered by default.

50 changes: 48 additions & 2 deletions variables-styles-extractor/docs/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,57 @@ All notable changes to this Figma plugin are documented here.

---

## [2.1.0] - Unreleased
## [2.1.2] - 2026-06-11

### 🔗 External Library Dependency Resolution & Import Reliability

Corrections release. Fixes imported variables that referenced external (team
library) collections collapsing to `0` when the library was not connected to
the target file, plus the detection and defaults around that workflow.

### Fixed

#### Alias re-linking on import
- **Variables referencing unconnected libraries no longer import as `0`.**
Alias resolution now matches by content, in order: exact `collection/path`
→ unique path match across all collections → loose collection-name match.
External refs re-link to same-named variables already present in the file
(e.g. tokens previously imported from another design system file), and only
genuinely ambiguous matches refuse to guess.
- **Collection-name matching collapses whitespace runs** — real-world files
contain pairs like `☀️ Mode` (library, one space) vs `☀️ Mode` (local, two
spaces) that previously failed to match.

#### Fallback value capture on export
- **Chained library aliases now export a real `$localValue`.** A library token
whose own value is another alias previously exported no fallback at all;
the chain is now resolved recursively (per mode).
- **Library-internal primitives resolve via the rendering engine.** When the
chain crosses into variables the Plugin API cannot fetch (e.g. unpublished
primitives inside the library file), the exporter asks Figma's own resolver
(`Variable.resolveForConsumer`) through a temporary hidden node pinned to
the exported mode — the measured value becomes the fallback. Applies to
both "preserve bindings" and "export as raw values" modes.

#### Import UX
- **Asset Sources card is content-aware.** Per-library status is now
`connected` / `matched by name to variables in this file` / `provided by
this import` / `partial` / `missing` — instead of the name-only
"not connected" warning that ignored satisfiable dependencies.
- **Import Behaviour defaults follow the dependency check.** External deps
already present in the file → **Smart Merge** (protects the dependency
variables from being wiped by Clean Import); deps not present → **Clean
Import**. A manual choice always wins; Simple mode follows the same rule.
- **Simple tab Import button spacing** — removed the phantom gap below the
button caused by the empty undo placeholder in its action row.

---

## [2.1.0] - 2026-06-10

### ✨ Simple Mode Redesign, Heavy-File Performance & Tokens Studio Export

**Status:** In development — pending final manual testing in Figma Desktop before release
**Status:** Published to Figma Community

### New Features

Expand Down
5 changes: 3 additions & 2 deletions variables-styles-extractor/package.json
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
{
"name": "variables-styles-extractor",
"version": "2.1.0",
"version": "2.1.2",
"description": "Export and import Figma variables and styles (color, text, effect, grid) with full variable binding support. Supports all color formats: Hex, RGB, CSS, HSL, HSB. Perfect for migrating design systems between files.",
"main": "code.js",
"scripts": {
"build": "tsc && terser code.js -o code.js --compress --mangle --keep-fnames",
"build:dev": "tsc",
"watch": "tsc --watch"
"watch": "tsc --watch",
"test": "node tests/alias-resolution.test.mjs"
},
"devDependencies": {
"@figma/plugin-typings": "^1.128.0",
Expand Down
Loading