# Theme Builder

The Theme Builder provides a way to make stylistic changes that apply across your entire application, ensuring consistent styling throughout each user's web Journey.

Like most Builders, the layout of the Theme Builder maps comfortably onto the general structure of the Studio: to the immediate right of the Builder Bar, to the right of which is the Stage, to the right of which is the Inspector:&#x20;

![](https://3088276961-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FC6qMwMGWBgxnN70QsDuH%2Fuploads%2Fgit-blob-affe7a0b06ee0399dd46058ec2ec30eda80666fa%2Ftheme-builder-v182-0.png?alt=media)

## Tree

The Tree is where you'll find an expandable and collapsible breakdown of the many Variants that can be edited within Theme Builder. What you select in the Tree determines what is displayed in the Stage and Inspector.

The Tree is nested as follows:

* Theme
  * Web Controls
    * Variants

### Theme

At the top level of the Tree is the Theme. You can only ever have one Theme in the Theme Builder at once, though it can be useful to name Themes when [exporting them from and importing them to](../../styling/importing-and-exporting-themes) other applications, as this can help you keep track of precisely which theme you're working with at any given time.

Working at the Theme level of the Tree also allows you to set defaults that will impact the [Variants](https://github.com/airkit/airkit-docs/blob/master/docs/v18-2/styling-with-themes.md) of multiple [Web Controls](../../web-controls/web-controls-overview), such as the default color pallet and default fonts.

<details>

<summary>What is a Variant?</summary>

**Variants**

A Variant is a set of styling properties for a specific Web Control, similar to a class in CSS. If you're not familiar with CSS classes, you might compare Web Controls and Variants to dinnerware. Plates, cups, and forks are all like different web controls: they each have a particular function, and this is reflected in aspects of their appearance. However, not all plates look the same. A square red plate and a round blue plate are both capable of serving as plates and are simply styled differently. If you are deciding whether to set your table with your blue plates or your red plates, this is like choosing between different Variants of plates.

Every Web Control has associated Variants: cosmetic variations that appear differently but function identically. Variants can be edited in Theme Builder and then used as defaults when adding new Web Controls. For instance, within a single application, you might create two Variants of button: a rectangular one in red, and a round one in blue. Any changes made to existing Variants also apply retroactively: existing Web Controls previously styled according to the old default will immediately take the form specified by the new default. This allows for consistent branding throughout the entirety of each user's Journey, and it also makes it easy to see how different combinations of colors, fonts, and graphics look together.

</details>

Making stylistic changes at the Theme level makes it easier to maintain consistent styling throughout your app and makes it less cumbersome to modify individual elements. The following example shows how changing the default color palette impacts Variants of multiple Web Controls at once:

![](https://3088276961-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FC6qMwMGWBgxnN70QsDuH%2Fuploads%2Fgit-blob-01fb9b612c234f682459bf3c96d9a661ad020cf9%2Ftheme-builder-v182-1?alt=media).gif)

### Web Controls

Nested under the Theme is every [Web Control](../../web-controls/web-controls-overview) that you can [style](../../web-controls/web-controls-overview/common-style-properties-of-web-controls). Working at the Web Control level allows you to see all Variants of that Web Control side-by-side in the Stage.

The following example shows all of the different Variants of a [Button Web Control](../../web-controls/button-web-control). Note that all four Variants are displayed in the Stage, while the Inspector is left blank – there are no direct changes that can be made at the Web Control level:&#x20;

![](https://3088276961-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FC6qMwMGWBgxnN70QsDuH%2Fuploads%2Fgit-blob-d5c8526e6b29b84a0fb0785b01cdc9466ecefada%2Ftheme-builder-v182-2.png?alt=media)

### Variants

Nested under the Web Controls are all the different Variants of each. Working at the Variant level allows you make stylistic changes to that Variant and see the changes as you make them.

![](https://3088276961-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FC6qMwMGWBgxnN70QsDuH%2Fuploads%2Fgit-blob-01fb9b612c234f682459bf3c96d9a661ad020cf9%2Ftheme-builder-v182-3?alt=media).gif)

If you want to add another Variant to a Web control, you can either duplicate an existing Variant to use as a base, or you can click on the '+' icon at the Theme level and select which Web Control you want to add a Variant to. For a more detailed dive into how to add Variants to Web Controls, check out [Adding a Variant](https://docs.airkit.ai/?q=working-with-themes-and-control-variants).

### Stage

The Stage displays how Variants will appear to users. Any stylistic changes you make will be reflected by what is shown on the Stage, allowing you to see the results of your changes in real time.

The following example shows how the Stage reflects changes being made to the boarder of a Button Variant in the Inspector:

![](https://3088276961-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FC6qMwMGWBgxnN70QsDuH%2Fuploads%2Fgit-blob-01fb9b612c234f682459bf3c96d9a661ad020cf9%2Ftheme-builder-v182-4?alt=media).gif)

#### Inspector

The Inspector is where you define how Variants are styled. Exactly what styling options are available to you will depend on what you've selected in the Tree. Changes made in the Inspector will be immediately reflected in the Stage. You can also toggle over to the Web Flows Builder to see how your changes appear as part of your broader UI. (Remember: stylistic changes made to Variants apply immediately to all instances where that Variant was used in an app.)

The following example shows what it's like to toggle from the Web Flows Builder to the Theme Builder, make a style change – in this case, changing the font associated with the default _brandPrimaryFont_ – and then see that stylistic change reflected after toggling back to the Web Flows Builder:

![](https://3088276961-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FC6qMwMGWBgxnN70QsDuH%2Fuploads%2Fgit-blob-01fb9b612c234f682459bf3c96d9a661ad020cf9%2Ftheme-builder-v182-5?alt=media).gif)

For a deeper dive into the sort of stylistic changes that can be made in the Inspector, check out [Common Style Properties of Web Controls](../../web-controls/web-controls-overview/common-style-properties-of-web-controls).
