{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "utils",
  "type": "registry:lib",
  "title": "Utils",
  "description": "cn(): joins class names and resolves Tailwind conflicts, aware of the Wibo theme.",
  "dependencies": [
    "clsx",
    "tailwind-merge"
  ],
  "files": [
    {
      "path": "src/lib/utils.ts",
      "type": "registry:lib",
      "content": "import { clsx, type ClassValue } from \"clsx\";\nimport { extendTailwindMerge } from \"tailwind-merge\";\n\n/**\n * tailwind-merge taught about the Wibo theme: the control label and display\n * font sizes and the named shadows would otherwise be read as colours and\n * merged away; the control radius, the glide easing and the named animations\n * would otherwise not replace their defaults.\n */\nconst twMerge = extendTailwindMerge({\n  extend: {\n    theme: {\n      text: [\"label\", \"display\", \"display-lg\"],\n      shadow: [\"card\", \"overlay\"],\n      radius: [\"control\"],\n      ease: [\"glide\"],\n      animate: [\n        \"fade-in\",\n        \"fade-out\",\n        \"scale-in\",\n        \"scale-out\",\n        \"slide-in-right\",\n        \"slide-out-right\",\n        \"slide-in-left\",\n        \"slide-out-left\",\n        \"slide-in-bottom\",\n        \"slide-out-bottom\",\n        \"slide-in-top\",\n        \"slide-out-top\",\n        \"pop-in\",\n        \"pop-out\",\n        \"dialog-in\",\n        \"dialog-out\",\n        \"toast-in\",\n        \"toast-out\",\n        \"content-in\",\n        \"skeleton-in\",\n        \"check-in\",\n      ],\n    },\n  },\n});\n\n/** Join class names and resolve Tailwind conflicts (last one wins). */\nexport function cn(...inputs: ClassValue[]): string {\n  return twMerge(clsx(inputs));\n}\n"
    }
  ]
}
