Token types overview
DAES implements the token types of the DTCG 2025.10 specification. This page is the matrix; each type has its own page with the exact value format, accepted input, and Figma behaviour.
A type is described by three independent capabilities:
- Author — can you create and edit it in the token dialog?
- Export — does it round-trip through JSON, sync, and folder export?
- Apply — can you push its value onto a Figma layer?
A type can export perfectly and still not be applicable, because Figma has no matching property.
Basic types
| Type | $type | Author | Apply | Status |
|---|---|---|---|---|
| Color | color | ✅ | Fill, stroke, shadow colour, gradient stop | Stable |
| Dimension | dimension | ✅ | Size, radius, spacing, border width, type metrics, effects | Stable |
| Number | number | ✅ | Opacity, rotation, layout grow, plus all dimension targets | Stable |
| Font family | fontFamily | ✅ | Text node font | Partial |
| Font weight | fontWeight | ✅ | Text node font style | Partial |
| Duration | duration | ✅ | — | Partial |
| Cubic Bézier | cubicBezier | ✅ | — | Partial |
| Stroke style | strokeStyle | ✅ | Dash pattern and cap | Partial |
Composite types
| Type | $type | Author | Apply | Status |
|---|---|---|---|---|
| Border | border | ✅ | Stroke paint, weight, dash pattern | Partial |
| Shadow | shadow | ✅ | Drop and inner shadow effects, multi-layer | Stable |
| Typography | typography | ✅ | Font, size, line height, letter spacing, + Figma extras | Stable |
| Transition | transition | ✅ | — | Partial |
| Gradient | gradient | ❌ | — | Planned |
Import-only types
These three exist so that arbitrary JSON survives a round trip. They cannot be created in the token dialog.
| Type | $type | Author | Apply | Status |
|---|---|---|---|---|
| Text, file, other | text, file, other | ❌ import only | Text content, hyperlink, plugin data | Partial |
Reading the status column
| Badge | Meaning |
|---|---|
| Stable | Works end to end as documented |
| Partial | Authoring and export work, but a documented capability is missing or behaves incorrectly. The type’s page states exactly which |
| Planned | Not implemented. Values may exist in JSON but nothing in the plugin understands them |
Types not implemented
The DTCG specification also defines types that DAES does not model at all:
boolean and link have no representation. There is no fontStyle, opacity,
or zIndex type — use number for opacity and a typography token for style.
What the type controls
Choosing a type is not cosmetic. It determines:
| Input UI | Each type gets its own value field — a colour picker, a unit-aware dimension field, a multi-layer shadow builder |
| Validation | The value is parsed and checked on submit. Invalid input blocks the save with a message |
| Storage shape | Values are stored as DTCG objects, not strings — 16px becomes { "value": 16, "unit": "px" } |
| Display | The tile shows a formatted value: hex for colours, CSS box-shadow syntax for shadows |
| Apply targets | Which Figma properties the token can be pushed onto |
Changing a token’s type after creation re-runs conversion against the new type, so a value that does not fit will be rejected.