import type { CSSResultGroup, HTMLTemplateResult } from 'lit'; import TerraElement from '../../internal/terra-element.js'; /** * @summary Icons are symbols that can be used to represent various options within an application. * @documentation https://terra-ui.netlify.app/components/icon * @status stable * @since 1.0 * * @event terra-load - Emitted when the icon has loaded. * @event terra-error - Emitted when the icon fails to load due to an error. * * @csspart svg - The internal SVG element. */ export default class TerraIcon extends TerraElement { #private; static styles: CSSResultGroup; svg: SVGElement | HTMLTemplateResult | null; /** The name of the icon to draw. Available names depend on the icon library being used. */ name?: string; /** * An external URL of an SVG file. Be sure you trust the content you are including, as it will be executed as code and * can result in XSS attacks. */ src?: string; /** * An alternate description to use for assistive devices. If omitted, the icon will be considered presentational and * ignored by assistive devices. */ label: string; /** The name of a registered custom icon library. */ library: 'default' | 'heroicons' | string; /** The CSS color to assign to the SVG. */ color: string | null; /** The CSS font-size to assign to the SVG. */ fontSize: string | null; connectedCallback(): void; firstUpdated(): void; disconnectedCallback(): void; handleLabelChange(): void; setIcon(): Promise; render(): SVGElement | HTMLTemplateResult | null; }