{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "plan-badge",
  "title": "Plan Badge",
  "description": "Subscription tier indicator for pricing, billing, and account summaries.",
  "dependencies": [
    "@vllnt/ui@^0.3.0"
  ],
  "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 = ({\n  className,\n  label,\n  ref: reference,\n  state = \"current\",\n  tier,\n  ...props\n}: PlanBadgeProps & { ref?: React.Ref<HTMLSpanElement> }) => {\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\nPlanBadge.displayName = \"PlanBadge\";\n",
      "type": "registry:component"
    }
  ],
  "type": "registry:component",
  "version": "0.3.0",
  "stability": "stable"
}
