blob: 99b18f2172368ae34cc0488ba629b4d46cb84958 [file] [log] [blame]
/*
* Written by the Home Assistant frontend authors, and copied here under the
* Apache 2.0 license
* (https://github.com/home-assistant/frontend/blob/dev/LICENSE.md).
*
* Slightly adapted.
*
* Original file:
* https://github.com/home-assistant/frontend/blob/4922e575f822c65d81fcde1225cfee5e338ac997/src/components/ha-svg-icon.ts
**/
import {css, CSSResultGroup, LitElement, svg, SVGTemplateResult} from 'lit';
import {customElement, property} from 'lit/decorators.js';
@customElement('ha-svg-icon')
export class HaSvgIcon extends LitElement {
@property() public path?: string;
@property() public viewBox?: string;
protected render(): SVGTemplateResult {
return svg`
<svg
viewBox=${this.viewBox || '0 0 24 24'}
preserveAspectRatio="xMidYMid meet"
focusable="false"
role="img"
aria-hidden="true"
>
<g>
${this.path ? svg`<path d=${this.path}></path>` : ''}
</g>
</svg>`;
}
static get styles(): CSSResultGroup {
return css`
:host {
display: var(--ha-icon-display, inline-flex);
align-items: center;
justify-content: center;
position: relative;
vertical-align: middle;
fill: currentcolor;
width: var(--mdc-icon-size, 24px);
height: var(--mdc-icon-size, 24px);
}
svg {
width: 100%;
height: 100%;
pointer-events: none;
display: block;
}
`;
}
}
declare global {
interface HTMLElementTagNameMap {
'ha-svg-icon': HaSvgIcon;
}
}