/**
* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
*/
/**
* @module style/styleconfig
*/
/**
* The configuration of the style feature.
*
* ```ts
* ClassicEditor
*   .create( {
*     style: ... // Style feature config.
*   } )
*   .then( ... )
*   .catch( ... );
* ```
*
* See {@link module:core/editor/editorconfig~EditorConfig all editor options}.
*/
export interface StyleConfig {
	/**
	* The available style definitions.
	*
	* Style definitions are displayed in the `'style'` UI dropdown and get applied by the
	* {@link module:style/stylecommand~StyleCommand style command} to the content of the document.
	*
	* In the `'style'` UI dropdown, definitions are automatically grouped into two categories based on the of the `element` property:
	*
	* * **Block styles**: Can be applied to entire {@link module:html-support/dataschema~DataSchema#registerBlockElement block elements}
	* only (e.g. headings, paragraphs, divs).
	* * **Text styles**: Can by applied to any {@link module:html-support/dataschema~DataSchema#registerInlineElement text} in any element
	* in the document.
	*
	* An example configuration:
	*
	* ```ts
	* [
	*   // Definitions of block styles.
	*   {
	*     name: 'Red heading',
	*     element: 'h2',
	*     classes: [ 'red-heading' ]
	*   },
	*   {
	*     name: 'Vibrant code',
	*     element: 'pre',
	*     classes: [ 'vibrant-code' ]
	*   },
	*
	*   // Definitions of text (inline) styles.
	*   {
	*     name: 'Marker',
	*     element: 'span',
	*     classes: [ 'marker' ]
	*   },
	*
	*   // ...
	* ]
	* ```
	*
	* **Note**: Configuring style definitions will automatically configure the
	* {@glink features/html/general-html-support General HTML Support feature}. **You do not need to repeat the configuration in
	* {@link module:html-support/generalhtmlsupportconfig~GeneralHtmlSupportConfig}**.
	*/
	definitions?: Array<StyleDefinition>;
}
/**
* Style definition.
*
* An object describing a style definition. It contains the style `name`, `element` name and an array of CSS `classes`.
*
* ```ts
* // This style will create <h2 class="foo">...</h2> in the document data.
* {
*   name: 'Example style',
*   element: 'h2',
*   classes: [ 'foo' ]
* }
* ```
*/
export interface StyleDefinition {
	name: string;
	element: string;
	classes: Array<string>;
}
