{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "status-dot",
  "title": "Status Dot",
  "author": "Ballmac <https://ui.ballmac.com>",
  "description": "A compact status indicator that always pairs its color with a visible label.",
  "registryDependencies": [
    "utils"
  ],
  "files": [
    {
      "path": "registry/ballmac/components/status-dot.tsx",
      "content": "// Ballmac UI: Status Dot. https://ui.ballmac.com/components/status-dot\nimport * as React from \"react\"\nimport { cn } from \"@/lib/utils\"\n\ntype StatusDotProps = React.ComponentProps<\"span\"> & {\n  /** Visible status text; color is never the only cue. */\n  label: string\n  /** Semantic status tone. */\n  status?: \"online\" | \"busy\" | \"away\" | \"offline\"\n  /** Gently pulse active statuses; stops for reduced motion. */\n  pulse?: boolean\n  /** Announce a changed status to assistive technology. */\n  announce?: boolean\n}\n\nfunction StatusDot({\n  className,\n  label,\n  status = \"online\",\n  pulse = false,\n  announce = false,\n  ...props\n}: StatusDotProps) {\n  return (\n    <span\n      data-slot=\"status-dot\"\n      role={announce ? \"status\" : undefined}\n      className={cn(\n        \"text-foreground inline-flex min-w-0 items-center gap-2 text-sm\",\n        className,\n      )}\n      {...props}\n    >\n      <span\n        aria-hidden=\"true\"\n        className={cn(\n          \"relative size-2.5 shrink-0 rounded-full\",\n          status === \"online\" && \"bg-chart-2\",\n          status === \"busy\" && \"bg-destructive\",\n          status === \"away\" && \"bg-chart-3\",\n          status === \"offline\" && \"bg-muted-foreground\",\n          pulse &&\n            status !== \"offline\" &&\n            \"after:absolute after:inset-0 after:animate-ping after:rounded-full after:bg-inherit after:opacity-20 motion-reduce:after:animate-none\",\n        )}\n      />\n      <span className=\"truncate\">{label}</span>\n    </span>\n  )\n}\n\nexport { StatusDot, type StatusDotProps }\n",
      "type": "registry:ui",
      "target": "@components/ballmac/status-dot.tsx"
    }
  ],
  "meta": {
    "schema": 1,
    "tier": "free",
    "tags": [
      "status",
      "presence",
      "online"
    ],
    "version": "1.0.0",
    "updated": "2026-09-30",
    "ai": {
      "summary": "A compact status indicator that always pairs its color with a visible label.",
      "whenToUse": [
        "Show presence or service state",
        "Label a live operational status"
      ],
      "whenNotToUse": [
        "Use badge for category labels"
      ],
      "composesWith": [
        "badge",
        "avatar"
      ],
      "a11y": [
        {
          "keys": "None",
          "action": "Status is expressed in visible text"
        }
      ],
      "customization": [
        "status: online | busy | away | offline",
        "Optional reduced-motion pulse"
      ]
    },
    "examples": [
      "status-dot-demo",
      "status-dot-states"
    ],
    "url": "https://ui.ballmac.com/components/status-dot"
  },
  "categories": [
    "feedback"
  ],
  "type": "registry:ui"
}