{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "badge",
  "type": "registry:ui",
  "dependencies": [
    "class-variance-authority"
  ],
  "registryDependencies": [
    "https://ui.getlyse.com/r/lyse-tokens.json"
  ],
  "files": [
    {
      "path": "registry/new-york/ui/badge/badge.tsx",
      "content": "import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\nimport \"./badge.css\"\n\nconst badgeVariants = cva(\n  \"inline-flex items-center justify-center overflow-hidden whitespace-nowrap rounded-full [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n  {\n    variants: {\n      variant: {\n        brand: \"badge-brand\",\n        neutral: \"badge-neutral\",\n        success: \"badge-success\",\n        danger: \"badge-danger\",\n        warning: \"badge-warning\",\n      },\n      size: {\n        sm: \"min-w-5 gap-[var(--layout-gap-xs)] px-[var(--layout-padding-sm)] py-[var(--layout-padding-2xs)] text-content-caption [&_svg]:size-3 [&_.badge-dot]:size-1.5\",\n        md: \"min-w-6 gap-[var(--layout-gap-sm)] px-[var(--layout-padding-md)] py-[var(--layout-padding-xs)] text-content-caption [&_svg]:size-3 [&_.badge-dot]:size-1.5\",\n        lg: \"min-w-7 gap-[var(--layout-gap-sm)] px-[var(--layout-padding-lg)] py-[var(--layout-padding-xs)] text-content-note [&_svg]:size-3.5 [&_.badge-dot]:size-2\",\n      },\n      type: {\n        fill: \"\",\n        light: \"badge-light\",\n        dash: \"badge-dash\",\n      },\n    },\n    defaultVariants: {\n      variant: \"neutral\",\n      size: \"md\",\n      type: \"fill\",\n    },\n  }\n)\n\nfunction BadgeDot({ className }: { className?: string }) {\n  return <span className={cn(\"badge-dot shrink-0\", className)} />\n}\n\nfunction Badge({\n  className,\n  variant,\n  size,\n  type,\n  isFilled = false,\n  children,\n  ...props\n}: React.ComponentProps<\"span\"> &\n  VariantProps<typeof badgeVariants> & {\n    isFilled?: boolean\n  }) {\n  return (\n    <span\n      data-slot=\"badge\"\n      className={cn(\n        badgeVariants({ variant, size, type, className }),\n        isFilled && \"badge-filled\"\n      )}\n      {...props}\n    >\n      {children}\n    </span>\n  )\n}\n\nexport { Badge, BadgeDot, badgeVariants }\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/new-york/ui/badge/badge.css",
      "content": "/* ================================================================\n * BADGE — Variant & Type Styles\n * Structure (flex, min-w, gap, padding, radius) lives in badge.tsx via cva.\n * Theming (colors, borders, dot) lives here via tokens.\n * ================================================================ */\n\n/* --------------------------------\n * Variant tokens\n * Each variant sets scoped custom properties.\n * -------------------------------- */\n\n.badge-brand {\n  --badge-overlay: var(--overlay-brand-default);\n  --badge-bg: var(--background-brand-strong-default);\n  --badge-text: var(--text-brand-moderate);\n  --badge-text-filled: var(--text-fixed);\n  --badge-border: var(--border-brand-lighter);\n}\n\n.badge-neutral {\n  --badge-overlay: var(--overlay-neutral-default);\n  --badge-bg: var(--background-neutral-strong-default);\n  --badge-text: var(--text-base-moderate);\n  --badge-text-filled: var(--text-inverse);\n  --badge-border: var(--border-neutral-lighter);\n}\n\n.badge-success {\n  --badge-overlay: var(--overlay-success-default);\n  --badge-bg: var(--background-success-strong-default);\n  --badge-text: var(--text-success-moderate);\n  --badge-text-filled: var(--text-fixed);\n  --badge-border: var(--border-success-lighter);\n}\n\n.badge-danger {\n  --badge-overlay: var(--overlay-danger-default);\n  --badge-bg: var(--background-danger-strong-default);\n  --badge-text: var(--text-danger-moderate);\n  --badge-text-filled: var(--text-fixed);\n  --badge-border: var(--border-danger-lighter);\n}\n\n.badge-warning {\n  --badge-overlay: var(--overlay-warning-default);\n  --badge-bg: var(--background-warning-strong-default);\n  --badge-text: var(--text-warning-moderate);\n  --badge-text-filled: var(--text-fixed);\n  --badge-border: var(--border-warning-lighter);\n}\n\n/* --------------------------------\n * Default state (non-filled)\n * -------------------------------- */\n.badge-brand,\n.badge-neutral,\n.badge-success,\n.badge-danger,\n.badge-warning {\n  background: var(--badge-overlay);\n  color: var(--badge-text);\n}\n\n/* --------------------------------\n * Filled state\n * -------------------------------- */\n.badge-filled {\n  background: var(--badge-bg);\n  color: var(--badge-text-filled);\n}\n\n/* --------------------------------\n * Type — light (solid border)\n * -------------------------------- */\n.badge-light {\n  border: var(--layout-border-thin) solid var(--badge-border);\n}\n\n/* --------------------------------\n * Type — dash (dashed border)\n * -------------------------------- */\n.badge-dash {\n  border: var(--layout-border-thin) dashed var(--badge-border);\n}\n\n/* --------------------------------\n * Dot\n * -------------------------------- */\n.badge-dot {\n  border-radius: var(--layout-radius-full);\n  background: var(--badge-bg);\n}\n\n.badge-filled .badge-dot {\n  background: var(--badge-text-filled);\n}\n",
      "type": "registry:ui"
    }
  ]
}