/**
 * `<badge-ui>` — Inline pill-shaped badge — READ-ONLY status flag, count, or
notification dot. Text rendered via CSS `attr(text)`. Distinct from
<tag-ui>, which is INTERACTIVE / removable and fires a `remove`
event. Use badge-ui for status flags (Beta / New / Deprecated),
notification counts, and unread indicators; use tag-ui for filter
chips or user-managed labels.

 *
 * @see https://ui-kit.exe.xyz/site/components/badge
 *
 * Type declarations generated by scripts/build/dts-codegen.mjs from
 * the component's `.a2ui.json` sidecar(s). Edit the source `.yaml`,
 * run `npm run build:components`, then `npm run codegen:dts` to
 * regenerate; or hand-author this file fully if rich event types are
 * needed beyond what the yaml `events:` block can express.
 */

import { UIElement } from '../../core/element.js';

export class UIBadge extends UIElement {
  /** Optional leading icon (any registered name). Use icon="dot" for chart-legend / status-pip chips. Inherits the variant's foreground color so the dot matches the label. */
  icon: string;
  /** Badge size */
  size: 'xs' | 'sm' | 'md' | 'lg' | 'xl';
  /** Semantic status shorthand. Auto-maps to variant and sets text. `new` → success "New"; `updated` → info "Updated"; `deprecated` → warning "Deprecated"; `removed` → danger "Removed"; `beta` → accent "Beta". Use `variant` + `text` directly for custom chips. */
  status: 'new' | 'updated' | 'deprecated' | 'removed' | 'beta';
  /** Badge text content. Falls back to existing textContent. */
  text: string;
  /** Badge display text. Renderer routes this to the `text` attribute via CSS attr(text) on ::after. */
  textContent: string;
  /** Fill style — orthogonal to [variant]. Badge defaults to `muted`
(quiet metadata is the primitive's identity — counts, IDs, status
pills in dense rows). Three values:
  - `muted` (default) — tinted bg + scheme-paired text. Same as
    the existing family-variant rules.
  - `solid` — saturated bg + on-strong text. Use for hero badges
    where the badge IS the state (e.g. a single inline error). The
    existing `primary` variant is a shortcut for accent + solid.
  - `outline` — transparent bg + family-colored border + family-
    colored text. Lightest visual weight; good in dense data rows.
Vocabulary mirrors `<tag-ui>` (which defaults to solid, given its
different role as filter / autocomplete chip).
 */
  tone: 'muted' | 'solid' | 'outline';
  /** Semantic color variant. */
  variant: 'default' | 'accent' | 'info' | 'success' | 'warning' | 'danger' | 'primary' | 'muted' | 'neutral';
}
