UNPKG

@freshworks/crayons

Version:
69 lines (65 loc) 3.83 kB
import { attachShadow, h, proxyCustomElement } from '@stencil/core/internal/client'; const avatarCss = ":host{font-family:var(--fw-font-family, -apple-system, blinkmacsystemfont, \"Segoe UI\", roboto, oxygen, ubuntu, cantarell, \"Open Sans\", \"Helvetica Neue\", sans-serif);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-box-sizing:border-box;box-sizing:border-box}:host{display:inline-block;--size:3rem}.avatar{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;font-size:calc(var(--size) * 0.5);font-weight:400;overflow:hidden;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;vertical-align:middle}.avatar__initials{line-height:1;font-weight:600;font-size:32px;text-align:center;text-transform:uppercase}.avatar__image{position:absolute;top:0;left:0;width:100%;height:100%;-o-object-fit:cover;object-fit:cover}.avatar--dark{background-color:#527fa5;color:#fff}.avatar--dark--initials{border:2px solid rgba(18, 52, 77, 0.16)}.avatar--light{background-color:#dff0ff;color:#12344d}.avatar--light--initials{border:2px solid #bedbf5}.avatar--circle{border-radius:50%}.avatar--rounded{border-radius:4px}.avatar--square{border-radius:0}.avatar--xxlarge{width:96px;height:96px}.avatar--xxlarge .avatar__initials{font-size:32px}.avatar--xlarge{width:72px;height:72px}.avatar--xlarge .avatar__initials{font-size:24px}.avatar--large{width:56px;height:56px}.avatar--large .avatar__initials{font-size:20px}.avatar--medium{width:40px;height:40px}.avatar--medium .avatar__initials{font-size:16px}.avatar--small{width:32px;height:32px}.avatar--small .avatar__initials{font-size:14px}.avatar--xsmall{width:24px;height:24px}.avatar--xsmall .avatar__initials{font-size:12px}.avatar--xxsmall{width:20px;height:20px}.avatar--xxsmall .avatar__initials{font-size:10px}"; let Avatar = class extends HTMLElement { constructor() { super(); this.__registerHost(); attachShadow(this); this.shape = 'circle'; this.name = ''; this.size = 'large'; this.mode = 'dark'; } /** * Function to get the initials to display inside the avatar * @returns initials from either initials prop or from name prop */ getInitials() { let initials = ''; if (this.initials) { initials = this.initials; } else if (this.name.trim().length > 0) { const nameParts = this.name.trim().split(' '); if (nameParts.length === 1) { initials = nameParts.shift().charAt(0); } else if (nameParts.length > 1) { initials = nameParts.shift().charAt(0) + nameParts.pop().charAt(0); } } return initials; } render() { let strBaseClassName = `avatar avatar--${this.shape} avatar--${this.size} avatar--${this.mode} `; if (!this.image) { strBaseClassName += ` avatar--${this.mode}--initials`; } return (h("div", { class: strBaseClassName, "aria-label": this.alt }, this.image ? (h("img", { part: 'image', class: 'avatar__image', src: this.image, alt: this.alt })) : (h("div", { part: 'initials', class: 'avatar__initials' }, this.getInitials())))); } static get style() { return avatarCss; } }; Avatar = /*@__PURE__*/ proxyCustomElement(Avatar, [1, "fw-avatar", { "image": [1], "alt": [1], "initials": [1], "shape": [1], "name": [1], "size": [1], "mode": [1] }]); function defineCustomElement() { const components = ["fw-avatar"]; components.forEach(tagName => { switch (tagName) { case "fw-avatar": if (!customElements.get(tagName)) { customElements.define(tagName, Avatar); } break; } }); } export { Avatar as A, defineCustomElement as d };