import { AKElement } from "@goauthentik/app/elements/Base"; import { PFSize } from "@goauthentik/app/elements/Spinner"; import { msg } from "@lit/localize"; import { CSSResult, TemplateResult, css, html } from "lit"; import { customElement, property } from "lit/decorators.js"; import { ifDefined } from "lit/directives/if-defined.js"; import PFFAIcons from "@patternfly/patternfly/base/patternfly-fa-icons.css"; import PFAvatar from "@patternfly/patternfly/components/Avatar/avatar.css"; import { Application } from "@goauthentik/api"; @customElement("ak-app-icon") export class AppIcon extends AKElement { @property({ attribute: false }) app?: Application; @property() size?: PFSize; static get styles(): CSSResult[] { return [ PFFAIcons, PFAvatar, css` :host { max-height: calc(var(--icon-height) + var(--icon-border) + var(--icon-border)); } :host([size="pf-m-lg"]) { --icon-height: 4rem; --icon-border: 0.25rem; } :host([size="pf-m-md"]) { --icon-height: 2rem; --icon-border: 0.125rem; } :host([size="pf-m-sm"]) { --icon-height: 1rem; --icon-border: 0.125rem; } .pf-c-avatar { --pf-c-avatar--BorderRadius: 0; --pf-c-avatar--Height: calc( var(--icon-height) + var(--icon-border) + var(--icon-border) ); --pf-c-avatar--Width: calc( var(--icon-height) + var(--icon-border) + var(--icon-border) ); } .icon { font-size: var(--icon-height); color: var(--ak-global--Color--100); padding: var(--icon-border); max-height: calc(var(--icon-height) + var(--icon-border) + var(--icon-border)); line-height: calc(var(--icon-height) + var(--icon-border) + var(--icon-border)); filter: drop-shadow(5px 5px 5px rgba(128, 128, 128, 0.25)); } div { height: calc(var(--icon-height) + var(--icon-border) + var(--icon-border)); } `, ]; } render(): TemplateResult { if (!this.app) { return html`