/** * @license * Copyright 2019 Google LLC * SPDX-License-Identifier: BSD-3-Clause */ import {LitElement, html, css, unsafeCSS} from 'lit'; import {customElement, property} from 'lit/decorators.js'; import { breakpoints } from '../../breakpoints'; @customElement('iu-link') export class Link extends LitElement { static override styles = css` :host{ display: block; --iu-comp-bg: transparent; --iu-comp-color: var(--iu-color-black); --iu-comp-bg-hover: var(--iu-color-black); --iu-comp-color-hover: var(--iu-color-white); --iu-comp-border-color: var(--iu-color-grey-200); --iu-comp-border-color-hover: var(--iu-color-grey-500); // margin-bottom: var(--iu-spacing-3); } @media ${unsafeCSS(breakpoints.md)} { :host{ // margin-bottom: var(--iu-spacing-6); } } a{ background: var(--iu-comp-bg); color: var(--iu-comp-color); font: var(--iu-f-2); text-decoration: none; border-top: 1px solid var(--iu-comp-border-color); position: relative; display: flex; } a.size-2{ font: var(--iu-f-lg); } a:hover{ background: var(--iu-comp-bg-hover); color: var(--iu-comp-color-hover); } svg{ width: 2.25rem; height: 2.25rem; margin-right: var(--iu-spacing-0); flex-shrink: 0; } .size-2 svg{ width: 3.125rem; height: 3.125rem; margin-right: var(--iu-spacing-1); } a > span{ padding-top: 0.375rem; padding-bottom: 0.375rem; // padding-right: 1.25rem; } a span span{ display: inline-block; font: var(--iu-f-0); color: var(--iu-color-grey-300); transform: translateY(-0.875rem); } iu-container{ margin-bottom: 0; } `; @property() href?: string; @property() text?: string; @property() label?: string; @property() target?: string = "_self"; @property({type: Number}) size = 1; @property({type: Boolean, reflect: true}) nested?: boolean = false; override render() { return html` <iu-container ?nested=${this.nested}> <a href="${this.href}" class="size-${this.size}" target="${this.target}"> ${this.label ? html` <svg fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 50 50"><path d="m21.082 16.215 12.257.471m0 0 .47 12.257m-.47-12.257L15.66 34.364" stroke="currentColor" stroke-width="2"/></svg>` : html` <svg fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 50 50"><path d="M28.667 16 37 25m0 0-8.333 9M37 25H12" stroke="currentColor" stroke-width="2"/></svg>` } <span> ${this.text} ${this.label && html`<span>${this.label}</span>`} </span> </a> </iu-container> `; } } declare global { interface HTMLElementTagNameMap { 'iu-link': Link; } }