{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "kill-tracker",
  "title": "Kill tracker",
  "description": "A masterwork/memento kill-tracker readout: a label on the left and the count tucked to the right, with an optional tracker icon.",
  "dependencies": [
    "@engram/core"
  ],
  "registryDependencies": [
    "@engram/bungie-image",
    "@engram/cn",
    "@engram/tokens"
  ],
  "files": [
    {
      "path": "src/components/kill-tracker.tsx",
      "content": "import type { ImageRef } from \"@engram/core\";\nimport type { HTMLAttributes } from \"react\";\nimport { cn } from \"../lib/cn.js\";\nimport { BungieImage } from \"./bungie-image.js\";\n\nexport interface KillTrackerProps\n  extends Omit<HTMLAttributes<HTMLDivElement>, \"color\"> {\n  /** What's being counted (e.g. \"Enemies Defeated\", \"Crucible Kills\"). */\n  label: string;\n  /** The running total. */\n  value: string | number;\n  /** Optional tracker/memento icon shown before the label. */\n  icon?: ImageRef;\n}\n\n/**\n * A masterwork/memento kill-tracker readout: a label on the left and the count\n * tucked to the right, with an optional tracker icon. The standalone form of the\n * tracker row inside {@link ItemPopup}; drop it under a tile or in a list.\n */\nexport function KillTracker({\n  label,\n  value,\n  icon,\n  className,\n  ...props\n}: KillTrackerProps) {\n  return (\n    <div\n      className={cn(\n        \"flex items-center gap-2 text-[13px] text-engram-muted\",\n        className,\n      )}\n      {...props}\n    >\n      {icon ? (\n        <BungieImage\n          src={icon}\n          alt=\"\"\n          aria-hidden\n          className=\"size-4 object-contain\"\n        />\n      ) : null}\n      <span>{label}</span>\n      <span className=\"ml-auto font-engram-display font-bold text-engram-fg tabular-nums\">\n        {typeof value === \"number\" ? value.toLocaleString() : value}\n      </span>\n    </div>\n  );\n}\n",
      "type": "registry:component",
      "target": "components/engram/kill-tracker.tsx"
    }
  ],
  "meta": {
    "level": "component"
  },
  "docs": "Extend without forking: edit the copied source, use `asChild` (Radix Slot) to change the rendered element, pass the typed `annotations` prop for curated data (verdict/tags/per-plug), or use slot / render-prop props for arbitrary content. Requires the @engram/tokens theme (--engram-* CSS variables).",
  "categories": [
    "crucible"
  ],
  "type": "registry:component"
}