import { DeesElement, customElement, html, property, css, cssManager, type TemplateResult, } from '@design.estate/dees-element'; import type { TSgProtocol } from '../interfaces.js'; declare global { interface HTMLElementTagNameMap { 'sg-protocol-badge': SgProtocolBadge; } } const protocolColors: Record = { npm: '#cb3837', oci: '#2496ed', maven: '#c71a36', cargo: '#dea584', composer: '#885630', pypi: '#3775a9', rubygems: '#e9573f', }; @customElement('sg-protocol-badge') export class SgProtocolBadge extends DeesElement { public static demo = () => html`
`; public static demoGroups = ['Shared']; @property({ type: String }) accessor protocol: TSgProtocol = 'npm'; public static styles = [ cssManager.defaultStyles, css` :host { display: inline-block; } .badge { display: inline-flex; align-items: center; padding: 2px 8px; font-size: 11px; font-weight: 600; font-family: 'JetBrains Mono', monospace; text-transform: uppercase; letter-spacing: 0.05em; color: #fff; } `, ]; public render(): TemplateResult { const color = protocolColors[this.protocol] || '#666'; return html` ${this.protocol} `; } }