product updates

Anima introduces support of component variants3 min read

Reading Time: 4 minutesAnima is now the first design-to-code tool that produces clean component-variants code from design

Anima introduces support of component variants3 min read

Reading Time: 4 minutes

Component variants help developers deliver products faster, ease maintenance and keep consistency across websites and web apps.

We are happy to announce that Anima is now supporting component variants. Today we released the first phase for this feature. From now on, you can turn Figma components, Adobe XD components and Sketch Symbols into reusable React and Vue components with variants. There are many more surprises to come, so stay tuned 😉.

What are component variants?

In short, a component variant is a slightly different UI for the same component. Let’s take a look at it with this example:

Suppose you receive from the designer the following design:

An example for a component variant

An example for a component variant

Suppose that in the design, two buttons look slightly different. To facilitate development, maintenance, and consistency, we would like to have a single button component with two different variants. i.e., one variant is the “primary variant” while the other is the “regular variant”.

As a programmer, I would create a single component “button” that receives a parameter indicating the button’s variant that should be presented.

Controlling variants using a class name parameter

Up until today when using Anima, components variants were turned into multiple components. Until now, the above design would translate to:

Now, Anima detects the differences between these two variants and uses the same code to produce a single component.

More than ever, Anima generates a more efficient code, and for each variant, we only produce the minimal CSS delta required to create these different variants.

Anima generates code that is much cleaner and even easier to maintain and read.

How to create component variants?

Anima converts Figma-components, Adobe XD-components, and Sketch-symbols into React and Vue components (each design tool defines them in a slightly different way).

Below you can see an example of each of these design tools and their slight differences:

Create component variants with Figma, Adobe XD, or Sketch

Create component variants with Figma, Adobe XD, or Sketch

 

Figma

Adobe XD

Sketch

How are the components variants’ names determined?

The class name of a component’s variant is determined by the layer name of that component instance in the design file.

Naming component variants

Naming component variants

Suppose there is a component named “Button”, and there is an instance of this component called “primary,” like in the picture above. Then the variant will be as follows:

What does the first phase of component variants include?

Here is a list of component variants that the first phase supports and what is still in the pipeline:

Supported:

  • to support components’ variants that have a different layer structure. As an example, consider the following design:
Component variants with different layer structure

Component variants with different layer structure

Observe that A and B have the same layers structure and C has a different one. Anima will only consider A and B as the same component using variants, while C will be defined as a separate component. We are working on having Anima generate code for variants with a different layer structure, so that A, B and C are all variants of the same component.

  • automatically detect Adobe XD components, Figma components variants, and Sketch symbols
  • create reusable Vue and React components
  • minimal CSS delta to achieve component variants
  • use a class name parameter to specify the component variant.

On our roadmap:

  • animations when a component class name change
  • an option to define variants using other than class name parameter
  • different text styles between variants

there is much more to come, So stay tuned!

Want to try Anima out?

Start saving time and get HTML, Vue, and React code for designs in a matter of a click.

|

Lead Algorithms Engineer

A mastermind algorithmic who can plan pretty complex step-by-step processes. When not cracking logic code problems, enjoys carpentry and handiwork from his urban Tel-Aviv workshop.

Leave a comment

Your email address will not be published. Required fields are marked *