<?php
/**
 * Html Tag Class
 *
 * @package errigal
 * @since 1.1.0
 */

namespace Errigal\Constant;

defined( 'ABSPATH' ) || exit;

/**
 * This class is in charge of providing HTML tags.
 *
 * @since 1.1.0
 */
class Errigal_Html_Tag {
	/**
	 * Anchor element.
	 *
	 * @since 1.2.0
	 *
	 * @var string
	 */
	public const A = 'a';

	/**
	 * Image map area element.
	 *
	 * @since 1.2.0
	 *
	 * @var string
	 */
	public const AREA = 'area';

	/**
	 * Article contents element.
	 *
	 * @since 1.2.0
	 *
	 * @var string
	 */
	public const ARTICLE = 'article';

	/**
	 * Aside element.
	 *
	 * @since 1.2.0
	 *
	 * @var string
	 */
	public const ASIDE = 'aside';

	/**
	 * Bring attention to element.
	 *
	 * @since 1.2.0
	 *
	 * @var string
	 */
	public const B = 'b';

	/**
	 * Document base url element.
	 *
	 * @since 1.2.0
	 *
	 * @var string
	 */
	public const BASE = 'base';

	/**
	 * Document body element.
	 *
	 * @since 1.2.0
	 *
	 * @var string
	 */
	public const BODY = 'body';

	/**
	 * Line break element.
	 *
	 * @since 1.2.0
	 *
	 * @var string
	 */
	public const BR = 'br';

	/**
	 * Button element.
	 *
	 * @since 1.2.0
	 *
	 * @var string
	 */
	public const BUTTON = 'button';

	/**
	 * Table column element.
	 *
	 * @since 1.2.0
	 *
	 * @var string
	 */
	public const COL = 'col';

	/**
	 * Content division element.
	 *
	 * @since 1.2.0
	 *
	 * @var string
	 */
	public const DIV = 'div';

	/**
	 * Embed external content element.
	 *
	 * @since 1.2.0
	 *
	 * @var string
	 */
	public const EMBED = 'embed';

	/**
	 * Figure caption element.
	 *
	 * @since 1.2.0
	 *
	 * @var string
	 */
	public const FIGCAPTION = 'figcaption';

	/**
	 * Figure with optional caption element.
	 *
	 * @since 1.2.0
	 *
	 * @var string
	 */
	public const FIGURE = 'figure';

	/**
	 * Footer element.
	 *
	 * @since 1.2.0
	 *
	 * @var string
	 */
	public const FOOTER = 'footer';

	/**
	 * Form element.
	 *
	 * @since 1.2.0
	 *
	 * @var string
	 */
	public const FORM = 'form';

	/**
	 * HTML section heading element: Level 1.
	 *
	 * @since 1.1.0
	 *
	 * @var string
	 */
	public const H1 = 'h1';

	/**
	 * HTML section heading element: Level 2.
	 *
	 * @since 1.1.0
	 *
	 * @var string
	 */
	public const H2 = 'h2';

	/**
	 * HTML section heading element: Level 3.
	 *
	 * @since 1.1.0
	 *
	 * @var string
	 */
	public const H3 = 'h3';

	/**
	 * HTML section heading element: Level 4.
	 *
	 * @since 1.1.0
	 *
	 * @var string
	 */
	public const H4 = 'h4';

	/**
	 * HTML section heading element: Level 5.
	 *
	 * @since 1.1.0
	 *
	 * @var string
	 */
	public const H5 = 'h5';

	/**
	 * HTML section heading element: Level 6.
	 *
	 * @since 1.1.0
	 *
	 * @var string
	 */
	public const H6 = 'h6';

	/**
	 * Head element.
	 *
	 * @since 1.2.0
	 *
	 * @var string
	 */
	public const HEAD = 'head';

	/**
	 * Header element.
	 *
	 * @since 1.2.0
	 *
	 * @var string
	 */
	public const HEADER = 'header';

	/**
	 * HTML section heading elements.
	 *
	 * @since 1.1.0
	 *
	 * @var string[]
	 */
	public const HEADINGS = array(
		self::H1,
		self::H2,
		self::H3,
		self::H4,
		self::H5,
		self::H6,
	);

	/**
	 * Thematic break (horizontal rule) element.
	 *
	 * @since 1.2.0
	 *
	 * @var string
	 */
	public const HR = 'hr';

	/**
	 * HTML document root element.
	 *
	 * @since 1.2.0
	 *
	 * @var string
	 */
	public const HTML = 'html';

	/**
	 * Image embed element.
	 *
	 * @since 1.2.0
	 *
	 * @var string
	 */
	public const IMG = 'img';

	/**
	 * HTML input element.
	 *
	 * @since 1.2.0
	 *
	 * @var string
	 */
	public const INPUT = 'input';

	/**
	 * Label element.
	 *
	 * @since 1.2.0
	 *
	 * @var string
	 */
	public const LABEL = 'label';

	/**
	 * List item element.
	 *
	 * @since 1.2.0
	 *
	 * @var string
	 */
	public const LI = 'li';

	/**
	 * External resource link element.
	 *
	 * @since 1.2.0
	 *
	 * @var string
	 */
	public const LINK = 'link';

	/**
	 * Main element.
	 *
	 * @since 1.2.0
	 *
	 * @var string
	 */
	public const MAIN = 'main';

	/**
	 * Metadata element.
	 *
	 * @since 1.2.0
	 *
	 * @var string
	 */
	public const META = 'meta';

	/**
	 * Navigation section element.
	 *
	 * @since 1.2.0
	 *
	 * @var string
	 */
	public const NAV = 'nav';

	/**
	 * Ordered list element.
	 *
	 * @since 1.2.0
	 *
	 * @var string
	 */
	public const OL = 'ol';

	/**
	 * Paragraph element.
	 *
	 * @since 1.2.0
	 *
	 * @var string
	 */
	public const P = 'p';

	/**
	 * Generic section element.
	 *
	 * @since 1.2.0
	 *
	 * @var string
	 */
	public const SECTION = 'section';

	/**
	 * Media or image source element.
	 *
	 * @since 1.2.0
	 *
	 * @var string
	 */
	public const SOURCE = 'source';

	/**
	 * Content span element.
	 *
	 * @since 1.2.0
	 *
	 * @var string
	 */
	public const SPAN = 'span';

	/**
	 * Strong importance element.
	 *
	 * @since 1.2.0
	 *
	 * @var string
	 */
	public const STRONG = 'strong';

	/**
	 * Textarea element.
	 *
	 * @since 1.2.0
	 *
	 * @var string
	 */
	public const TEXTAREA = 'textarea';

	/**
	 * (Date) Time element.
	 *
	 * @since 1.2.0
	 *
	 * @var string
	 */
	public const TIME = 'time';

	/**
	 * Embed text track element.
	 *
	 * @since 1.2.0
	 *
	 * @var string
	 */
	public const TRACK = 'track';

	/**
	 * Unordered list element.
	 *
	 * @since 1.2.0
	 *
	 * @var string
	 */
	public const UL = 'ul';

	/**
	 * Line break opportunity element.
	 *
	 * @since 1.2.0
	 *
	 * @var string
	 */
	public const WBR = 'wbr';

	/**
	 * SVG element.
	 *
	 * @since 1.2.0
	 *
	 * @var string
	 */
	public const SVG = 'svg';

	/**
	 * SVG element: Path element.
	 *
	 * @since 1.2.0
	 *
	 * @var string
	 */
	public const PATH = 'path';

	/**
	 * SVG element: Rect element.
	 *
	 * @since 1.2.0
	 *
	 * @var string
	 */
	public const RECT = 'rect';
}
