import './er-icon';
import { NavigationMixin } from '@littoral/literally/navigation/navigation.mixin';
import { LitElement, css, html, nothing } from 'lit';
import { customElement, property } from 'lit/decorators.js';
/**
* Chip element for displaying info in a stylized way.
*/
@customElement('er-chip')
export class ErChip extends NavigationMixin(LitElement) {
static styles = [
css`
:host {
display: inline-grid;
line-height: 1;
white-space: nowrap;
align-items: center;
background-color: var(
--er-chip-background-color,
var(--md-sys-color-surface)
);
border: 1px solid var(--er-chip-border-color, transparent);
border-radius: var(--er-chip-border-radius, var(--space-small));
color: var(--er-chip-color, var(--md-sys-color-on-surface));
font-family: var(--er-chip-font-family, var(--body-font-family));
font-optical-sizing: var(
--er-chip-font-optical-sizing,
var(--body-font-optical-sizing)
);
font-size: var(--er-chip-font-size, var(--er-sys-body-font-size-small));
font-weight: var(--er-chip-font-weight, var(--body-font-weight));
grid-gap: var(--space-small);
grid-template-columns: 1fr;
padding: var(--space-xsmall) var(--space-small);
}
:host(.align-self-center) {
align-self: center;
}
:host(.justify-self-center) {
justify-self: center;
}
:host(.justify-self-flex-end) {
justify-self: flex-end;
}
:host(.primary) {
--er-chip-background-color: var(--er-chip-theme-background-color);
--er-chip-color: var(--er-chip-theme-color);
}
:host(.secondary) {
--er-chip-border-color: var(--er-chip-theme-background-color);
--er-chip-color: var(--er-chip-theme-background-color);
}
:host(.secondary:hover) {
--er-chip-background-color: var(--md-sys-color-surface-variant);
}
:host(.tertiary) {
--er-chip-color: var(--er-chip-theme-color);
}
:host([icon-end]) {
grid-template-columns: auto min-content;
}
:host([icon-start]) {
grid-template-columns: min-content auto;
}
:host([icon-start][icon-end]) {
grid-template-columns: min-content auto min-content;
}
:host(.themePrimary) {
--er-chip-theme-background-color: var(--md-sys-color-primary);
--er-chip-theme-color: var(--md-sys-color-on-primary);
}
:host(.themeSecondary) {
--er-chip-theme-background-color: var(--md-sys-color-secondary);
--er-chip-theme-color: var(--md-sys-color-on-secondary);
}
:host(.themeTertiary) {
--er-chip-theme-background-color: var(--md-sys-color-tertiary);
--er-chip-theme-color: var(--md-sys-color-on-tertiary);
}
:host(.themeError) {
--er-chip-theme-background-color: var(--md-sys-color-error);
--er-chip-theme-color: var(--md-sys-color-on-error);
}
:host(.link:hover),
:host([path]:hover) {
cursor: pointer;
}
:host(.capitalize) {
text-transform: capitalize;
}
::slotted(*) {
text-wrap: nowrap;
white-space: nowrap;
}
`,
];
@property({ attribute: 'icon-start' })
iconStart?: string;
@property({ attribute: 'icon-end' })
iconEnd?: string;
render() {
return html`
${this.renderStartIcon()}
${this.renderEndIcon()}
`;
}
renderEndIcon() {
if (!this.iconEnd) {
return nothing;
}
return html` `;
}
renderStartIcon() {
if (!this.iconStart) {
return nothing;
}
return html` `;
}
}
declare global {
interface HTMLElementTagNameMap {
'er-chip': ErChip;
}
}