# 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 Components](theme_components.png) ## 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)