import { FASTElement, Observable, html, css } from '@microsoft/fast-element'; type BadgeVariant = 'note' | 'tip' | 'caution' | 'danger' | 'default'; /** * * Inline color-coded chip. Use `text` attribute or slot content. * */ export class LitroBadge extends FASTElement { variant: BadgeVariant = 'default'; text = ''; } Observable.defineProperty(LitroBadge.prototype, 'variant'); Observable.defineProperty(LitroBadge.prototype, 'text'); const template = html` ${x => x.text || html``} `; const styles = css` :host { display: inline-flex; } .badge { display: inline-flex; align-items: center; padding: 0.15em 0.55em; border-radius: 9999px; font-size: var(--sl-text-xs, 0.75rem); font-weight: 600; line-height: 1.5; text-transform: uppercase; letter-spacing: 0.04em; } .badge.note { background-color: color-mix(in srgb, var(--sl-color-note, #1d4ed8) 15%, transparent); color: var(--sl-color-note, #1d4ed8); } .badge.tip { background-color: color-mix(in srgb, var(--sl-color-tip, #15803d) 15%, transparent); color: var(--sl-color-tip, #15803d); } .badge.caution { background-color: color-mix(in srgb, var(--sl-color-caution, #b45309) 15%, transparent); color: var(--sl-color-caution, #b45309); } .badge.danger { background-color: color-mix(in srgb, var(--sl-color-danger, #b91c1c) 15%, transparent); color: var(--sl-color-danger, #b91c1c); } .badge.default { background-color: var(--sl-color-accent-low, #ede9fe); color: var(--sl-color-accent-high, #5b21b6); } `; LitroBadge.define({ name: 'litro-badge', template, styles }); export default LitroBadge;