import { html, nothing, type TemplateResult } from 'lit';
import type { NuiType } from '../../types/nui-type.js';
import type { BadgeSeverity, BadgeSize } from './types.js';
export interface NuiBadgeViewState {
value: string;
severity: BadgeSeverity | '';
size: BadgeSize | '';
nuiType: NuiType;
badgeClass: string;
lightDomHasContent: boolean;
}
export function resolveSeverity(
state: Pick,
): BadgeSeverity | 'primary' {
if (state.severity) {
return state.severity;
}
return 'primary';
}
export function isBadgeDot(
state: Pick,
): boolean {
return !state.value && !state.lightDomHasContent;
}
export function isBadgeCircle(value: string): boolean {
return value.length === 1;
}
export function getBadgeClass(badgeClass: string): string {
return ['nui-badge', badgeClass].filter(Boolean).join(' ');
}
export function renderBadge(state: NuiBadgeViewState): TemplateResult {
const severity = resolveSeverity(state);
const showSeverity = Boolean(state.severity);
const dot = isBadgeDot(state);
const circle = !dot && isBadgeCircle(state.value);
return html`
${state.value || nothing}
`;
}