{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "badge",
  "title": "Badge",
  "description": "Compact label for status, counts, or categories. 9 themes × 3 variants × 3 sizes × 2 shapes.",
  "dependencies": ["class-variance-authority"],
  "registryDependencies": [
    "https://indiacn.in/r/theme.json",
    "https://indiacn.in/r/typography.json"
  ],
  "files": [
    {
      "path": "components/ui/badge.tsx",
      "content": "import { cva, type VariantProps } from 'class-variance-authority';\nimport { ComponentProps } from 'react';\n\nimport { Label2 } from '@/components/ui/typography';\nimport { cn } from '@/lib/utils';\n\n/* UX4G badge: padding 0.35em 0.61em, font-size 0.75em, font-weight 400, border-radius 0.375rem */\nconst BADGE_VARIANTS = cva(\n  'inline-flex items-center justify-center whitespace-nowrap align-baseline text-center text-[0.75em] leading-none transition-colors focus:outline-none',\n  {\n    variants: {\n      theme: {\n        primary:\n          'text-primary [--badge-bg:var(--color-primary)] [--badge-bg-tonal:var(--color-primary-100)] [--badge-border-color:var(--color-primary)] [--badge-text-color:var(--color-primary)]',\n        secondary:\n          'text-secondary [--badge-bg:var(--color-secondary)] [--badge-bg-tonal:var(--color-secondary-100)] [--badge-border-color:var(--color-secondary)] [--badge-text-color:var(--color-secondary)]',\n        success:\n          'text-success [--badge-bg:var(--color-success)] [--badge-bg-tonal:var(--color-success-100)] [--badge-border-color:var(--color-success)] [--badge-text-color:var(--color-success)]',\n        danger:\n          'text-danger [--badge-bg:var(--color-danger)] [--badge-bg-tonal:var(--color-danger-100)] [--badge-border-color:var(--color-danger)] [--badge-text-color:var(--color-danger)]',\n        warning:\n          'text-warning [--badge-bg:var(--color-warning)] [--badge-bg-tonal:var(--color-warning-100)] [--badge-border-color:var(--color-warning)] [--badge-text-color:var(--color-warning)]',\n        info: 'text-info [--badge-bg:var(--color-info)] [--badge-bg-tonal:var(--color-info-100)] [--badge-border-color:var(--color-info)] [--badge-text-color:var(--color-info)]',\n        neutral:\n          'text-neutral [--badge-bg:var(--color-neutral)] [--badge-bg-tonal:var(--color-neutral-100)] [--badge-border-color:var(--color-neutral)] [--badge-text-color:var(--color-neutral)]',\n        light:\n          'text-neutral [--badge-bg:var(--color-neutral-50)] [--badge-bg-tonal:var(--color-neutral-50)] [--badge-border-color:var(--color-neutral-200)] [--badge-text-color:var(--color-neutral)]',\n        dark: 'text-neutral-0 [--badge-bg:var(--color-neutral)] [--badge-bg-tonal:var(--color-neutral-900)] [--badge-border-color:var(--color-neutral)] [--badge-text-color:var(--color-neutral-0)]',\n      },\n      variant: {\n        filled: 'bg-(--badge-bg) text-neutral-0 border border-transparent',\n        outlined: 'bg-transparent border border-(--badge-border-color) text-(--badge-text-color)',\n        tonal: 'bg-(--badge-bg-tonal) text-(--badge-text-color) border border-transparent',\n      },\n      size: {\n        sm: 'px-[0.4em] py-[0.2em]',\n        md: 'px-[0.61em] py-[0.35em]',\n        lg: 'px-[0.8em] py-[0.45em]',\n      },\n      shape: {\n        default: 'rounded-[0.375rem]',\n        pill: 'rounded-full',\n      },\n    },\n    compoundVariants: [\n      { theme: 'light', variant: 'filled', className: 'text-neutral' },\n      { theme: 'dark', variant: 'filled', className: 'text-neutral-0' },\n    ],\n    defaultVariants: {\n      theme: 'primary',\n      variant: 'filled',\n      size: 'md',\n      shape: 'default',\n    },\n  },\n);\n\ninterface IBadgeProps\n  extends Omit<ComponentProps<'span'>, 'color'>,\n    VariantProps<typeof BADGE_VARIANTS> {}\n\n/**\n * A compact badge component for displaying status, counts, or category labels.\n * Matches the UX4G 2.0 Badge specification.\n *\n * Supports:\n * - Visual variants: filled, outlined, tonal\n * - Theme colors: primary, secondary, success, danger, warning, info, neutral, light, dark\n * - Sizes: sm, md, lg\n * - Shapes: default (rounded), pill (fully rounded)\n */\nfunction Badge({ className, variant, theme, size, children, shape, ...props }: IBadgeProps) {\n  return (\n    <Label2 className={cn(BADGE_VARIANTS({ variant, theme, size, shape, className }))} {...props}>\n      {children}\n    </Label2>\n  );\n}\n\nexport { Badge, BADGE_VARIANTS };\n",
      "type": "registry:ui"
    }
  ],
  "type": "registry:ui"
}
