Import happens on a Theme’s Tokens tab, in the portal.
It is a two-step flow
1
Analyze
Upload the file. Livry detects the format, converts it, and shows you what it found — how many
tokens, what types, what it could not map, and what it is going to ignore.Nothing has been written at this point.
2
Commit
You confirm, and the converted document becomes your Theme’s draft.The commit re-derives the plan from the same bytes rather than trusting the browser’s copy of
it, so what you reviewed is what lands.
What each format costs you
Tokens Studio — one set is imported, the rest are reported
Tokens Studio — one set is imported, the rest are reported
A Studio export is usually a whole design system: a base set plus a set per theme. A Livry Theme
holds one token set.Merging them all would silently overlay light onto dark, so Livry imports one and tells you which
sets it did not take. Pick the base set; the theme sets are usually what you want as
Variants anyway.Studio’s type vocabulary predates DTCG and is finer-grained in places.
composition, textCase,
textDecoration and other have no DTCG equivalent and are reported rather than guessed at.Arithmetic in values ({spacing.base} * 2) is evaluated during conversion.Figma Variables — one mode is taken
Figma Variables — one mode is taken
Figma holds a value per mode: a collection with Light and Dark modes has two values for every
variable. A DTCG token holds one.The default mode is imported unless you name another, and every collection and mode found is
reported — so a half-imported design system explains itself rather than looking broken.Figma’s hierarchy lives inside each variable’s slash-separated
name, which becomes the DTCG
path.Style Dictionary — the straightforward one
Style Dictionary — the straightforward one
Structurally the same tree as DTCG with
value in place of $value. Types are inferred where
they are not declared.DTCG — exact, except for two features
DTCG — exact, except for two features
Round-trips faithfully. The exceptions are
$extends and $ref, which are preserved but never
applied — a document relying on either imports with tokens missing. See
Tokens.What to do about modes and themes
Light/dark and per-brand are different problems, and Livry solves only one of them.There is no import on the REST API. It is a two-step flow over an uploaded file, and the upload
endpoint is portal-scoped — shipping half the pair would give you an endpoint you could not reach.
See what the API does not do.
After importing
Two things are worth doing before you publish:- Check the types. Anything Livry had to infer is flagged. A colour stored as a string that
should have been a
colorwill still render, but it will not get a swatch in the editor and it will not convert cleanly. - Add aliases. An imported set is usually all literal values. Replacing derived colours with
{color.brand}aliases is what turns a 400-token theme into one a brand can rebrand by setting three values.