{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "oods-status-badge",
  "type": "registry:component",
  "title": "OODS Foundry StatusBadge",
  "description": "React adapter for OODS StatusBadge on shadcn/ui's Radix and Base UI bases. Status text and icons come from the OODS registry. Critical/danger uses destructive with solid bg-destructive and text-background in both themes; other tones use the team's default or secondary badge palette, without distinct status colours. compact and readOnly retain the OODS implementation's no-op behavior.",
  "dependencies": [
    "@oods/components-react@0.11.2",
    "@oods/component-contracts@0.11.2"
  ],
  "registryDependencies": [
    "badge"
  ],
  "files": [
    {
      "path": "components/oods/status-badge.tsx",
      "target": "components/oods/status-badge.tsx",
      "type": "registry:component",
      "content": "import * as React from 'react';\nimport type { StatusBadgeProps } from '@oods/components-react';\nimport { getStatusPresentation, resolveStatusIcon, statusIconMarkup } from '@oods/component-contracts';\nimport { Badge } from '@/registry/new-york-v4/ui/badge';\n\nexport const OodsStatusBadge = React.forwardRef<HTMLSpanElement, StatusBadgeProps>(function OodsStatusBadge(\n  { status, value, label, children, content, domain = 'subscription', tone, emphasis = 'subtle', variant,\n    showIcon = true, icon, iconPosition = 'start', title, field, statusField, domainField, readOnly, compact,\n    'aria-label': ariaLabel, className, ...props }, ref,\n) {\n  void [field, statusField, domainField, readOnly, compact];\n  const state = status ?? value ?? 'unknown';\n  const presentation = getStatusPresentation(domain, state);\n  const resolvedTone = tone && tone !== 'lifecycle' ? tone : presentation.tone;\n  const destructive = resolvedTone === 'critical' || resolvedTone === 'danger';\n  const solid = variant === 'solid' || emphasis === 'solid';\n  const name = resolveStatusIcon(presentation.iconName);\n  const mark = showIcon ? icon ?? (name ? <span aria-hidden=\"true\" dangerouslySetInnerHTML={{ __html: statusIconMarkup(name) }} /> : null) : null;\n  const destructiveClass = destructive ? 'bg-destructive text-background dark:bg-destructive [a]:hover:bg-destructive' : undefined;\n  return <Badge {...props} role={props.role ?? 'status'} ref={ref} className={[destructiveClass, className].filter(Boolean).join(' ')} variant={destructive ? 'destructive' : solid ? 'default' : 'secondary'}\n    data-oods-component={undefined} data-oods-adapter=\"StatusBadge\" data-status={state} data-domain={domain} data-tone={resolvedTone}\n    title={title ?? presentation.description} aria-label={ariaLabel ?? label ?? `Status: ${presentation.label}`}>\n    {iconPosition === 'start' ? mark : null}{children ?? content ?? presentation.label}{iconPosition === 'end' ? mark : null}\n  </Badge>;\n});\n"
    }
  ]
}
