{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "plan-badge",
  "type": "registry:component",
  "title": "Plan Badge",
  "description": "Subscription tier indicator for pricing, billing, and account summaries.",
  "dependencies": [
    "@vllnt/ui@^0.2.1"
  ],
  "registryDependencies": [],
  "files": [
    {
      "path": "registry/default/plan-badge/plan-badge.tsx",
      "content": "import * as React from \"react\";\n\nimport { cn } from \"@vllnt/ui\";\nimport { badgeVariants } from \"@vllnt/ui\";\n\nexport type PlanBadgeTier = \"enterprise\" | \"free\" | \"growth\" | \"starter\";\n\nexport type PlanBadgeState = \"current\" | \"legacy\" | \"trial\";\n\nexport type PlanBadgeProps = Omit<\n  React.ComponentPropsWithoutRef<\"span\">,\n  \"children\"\n> & {\n  label?: string;\n  state?: PlanBadgeState;\n  tier: PlanBadgeTier;\n};\n\nfunction getPlanLabel(tier: PlanBadgeTier): string {\n  switch (tier) {\n    case \"enterprise\":\n      return \"Enterprise\";\n    case \"free\":\n      return \"Free\";\n    case \"growth\":\n      return \"Growth\";\n    case \"starter\":\n      return \"Starter\";\n  }\n}\n\nfunction getPlanClasses(tier: PlanBadgeTier, state: PlanBadgeState): string {\n  if (state === \"legacy\") {\n    return \"border-amber-500/30 bg-amber-500/10 text-amber-700 dark:text-amber-300\";\n  }\n\n  if (state === \"trial\") {\n    return \"border-sky-500/30 bg-sky-500/10 text-sky-700 dark:text-sky-300\";\n  }\n\n  switch (tier) {\n    case \"enterprise\":\n      return \"border-primary/30 bg-primary/10 text-primary\";\n    case \"free\":\n      return \"border-border bg-muted text-muted-foreground\";\n    case \"growth\":\n      return \"border-violet-500/30 bg-violet-500/10 text-violet-700 dark:text-violet-300\";\n    case \"starter\":\n      return \"border-emerald-500/30 bg-emerald-500/10 text-emerald-700 dark:text-emerald-300\";\n  }\n}\n\nexport const PlanBadge = React.forwardRef<HTMLSpanElement, PlanBadgeProps>(\n  ({ className, label, state = \"current\", tier, ...props }, reference) => {\n    return (\n      <span\n        className={cn(\n          badgeVariants({ variant: \"outline\" }),\n          \"gap-1.5 rounded-full px-2.5 py-1 text-[11px] font-medium tracking-[0.02em] shadow-none\",\n          getPlanClasses(tier, state),\n          className,\n        )}\n        ref={reference}\n        {...props}\n      >\n        <span aria-hidden=\"true\" className=\"size-1.5 rounded-full bg-current\" />\n        <span>{label ?? getPlanLabel(tier)}</span>\n        {state === \"trial\" ? (\n          <span className=\"text-current/80\">Trial</span>\n        ) : null}\n        {state === \"legacy\" ? (\n          <span className=\"text-current/80\">Legacy</span>\n        ) : null}\n      </span>\n    );\n  },\n);\n\nPlanBadge.displayName = \"PlanBadge\";\n",
      "type": "registry:component"
    }
  ],
  "version": "0.2.1",
  "stability": "stable"
}
