/** * @license * Copyright 2019 Google LLC * SPDX-License-Identifier: BSD-3-Clause */ import {LitElement, html, css} from 'lit'; import {customElement, property} from 'lit/decorators.js'; /** * An example element. * * @fires count-changed - Indicates when the count changes * @slot - This element has a slot * @csspart button - The button */ @customElement('iu-button') export class Button extends LitElement { static override styles = css` a, button{ position: relative; display: inline-flex; align-items: center; background: var(--iu-color-grey-100); padding: 0.375rem 0.75rem; color: var(--iu-color-black); text-decoration: none; border: 0; font: var(--iu-f-sm); } a:hover, button:hover{ background: var(--iu-color-black); color: var(--iu-color-white); } a:not(.icon-none), button:not(.icon-none){ padding: 0.375rem 0.75rem 0.375rem 2.5rem; } .icon-download::before{ content: ''; background-image: url("data:image/svg+xml,%3Csvg fill='none' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 37 37'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='m24.852 19.834-6.354 6.353-6.354-6.353.708-.708 5.146 5.147V9.5h1v14.773l5.146-5.147.708.708ZM27 28H10v-1h17v1Z' fill='%23000'/%3E%3C/svg%3E"); width: 2.25rem; aspect-ratio: 1/1; background-repat: no-repeat; background-position: center center; position: absolute; top: 0; left: 0; } .icon-download:hover::before{ background-image: url("data:image/svg+xml,%3Csvg fill='none' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 37 37'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='m24.852 19.834-6.354 6.353-6.354-6.353.708-.708 5.146 5.147V9.5h1v14.773l5.146-5.147.708.708ZM27 28H10v-1h17v1Z' fill='%23fff'/%3E%3C/svg%3E"); } `; @property({ type: String }) tag: string = 'a'; @property({ type: String }) href: string = '#'; @property({ type: String }) text: string = ''; @property({ type: String }) icon: string = 'none'; override render() { if (this.tag === 'a'){ return html` <a href="${this.href}" class="icon-${this.icon}">${this.text}</a> `; } else { return html` <button class="icon-${this.icon}">${this.text}</button> `; } } } declare global { interface HTMLElementTagNameMap { 'iu-button': Button; } }