# Theme Structure
Overview of a theme plugin project structure and the most important elements.
Themes are components within [IntelliJ Platform plugins](plugin_structure.topic).
The theme plugins should be stand-alone and not combined with other plugin functionality.
Themes have several components:
* A required Theme description (JSON) file in the plugin project's resources folder.
* A required `themeProvider` declaration in the plugin's [plugin.xml](plugin_configuration_file.md) file, located in the plugin project's META-INF folder.
* An optional Editor Scheme description (XML) file derived from an exported IDE editor scheme.
This file is located in the plugin project's resources folder.
* An optional background image file, located in the plugin project's resources folder.
* Optional icon image files, located in the plugin project's resources folder.

## Theme Description File
The most important file in every theme project is the theme description file.
The content of the default file generated with the [Theme wizard](creating_theme_project.md) is a short set of key–value pairs:
```json
{
"name": "theme_basics",
"author": "",
"dark": false,
"editorScheme": "/theme_basics.xml",
"ui": {
}
}
```
* `name` key matches the first portion of the Theme description \$THEME_NAME\$.theme.json file name. The value of `name` is displayed in the [Theme](https://www.jetbrains.com/help/idea/settings-appearance.html) Settings dropdown when the theme's plugin is installed in the IDE.
* `author` - specifies the theme author (empty by default).
* `dark` - determines the base theme (_Light_ or _Darcula_) that is customized.
* `editorScheme` - specifies the editor scheme file that describes fonts and colors used in editors (see [](themes_extras.md#adding-a-custom-editor-scheme) for more details).
* `ui` - allows for overriding the base theme (_Light_ or _Darcula_) properties (see [](themes_customize.md#custom-ui-control-colors) for more details).
The wizard also creates a `themeProvider` declaration in the [``](plugin_configuration_file.md#idea-plugin__extensions) section of the plugin's plugin.xml file.
This declaration binds the theme description file to a theme provider extension using a generated unique `id`.
```xml
```
> Do not modify or re-use an existing value of the generated `id` attribute.
>
{style="warning"}
## Theme Customization
The following sections describe the theme customization possibilities in detail:
* [](themes_customize.md#customizing-icons)
* [](themes_customize.md#customizing-ui-controls)
* [](themes_extras.md#adding-a-custom-editor-scheme)
* [](themes_extras.md#adding-a-custom-background-image)