{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "glass-tabs",
  "title": "Glass Tabs",
  "description": "Tabbed interface components with smooth transitions and glass morphism styling.",
  "dependencies": [
    "@radix-ui/react-tabs",
    "framer-motion"
  ],
  "files": [
    {
      "path": "registry/liquid-glass/glass-tabs.tsx",
      "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as TabsPrimitive from \"@radix-ui/react-tabs\"\nimport { motion, AnimatePresence } from \"framer-motion\"\nimport { cn } from \"@/lib/utils\"\n\nconst GlassTabs = TabsPrimitive.Root\n\nconst GlassTabsList = React.forwardRef<\n  React.ElementRef<typeof TabsPrimitive.List>,\n  React.ComponentPropsWithoutRef<typeof TabsPrimitive.List>\n>(({ className, ...props }, ref) => (\n  <div className=\"relative\">\n    <motion.div\n      className=\"absolute -inset-1 rounded-2xl bg-linear-to-r from-cyan-500/20 via-blue-500/20 to-purple-500/20 blur-lg\"\n      animate={{\n        opacity: [0.4, 0.6, 0.4],\n      }}\n      transition={{\n        duration: 3,\n        repeat: Number.POSITIVE_INFINITY,\n        ease: \"easeInOut\",\n      }}\n      aria-hidden=\"true\"\n    />\n    <TabsPrimitive.List\n      ref={ref}\n      className={cn(\n        \"relative inline-flex h-12 items-center justify-center gap-1 rounded-xl p-1\",\n        \"bg-white/10 backdrop-blur-xl border border-white/20\",\n        \"shadow-[0_4px_16px_rgba(0,0,0,0.2)]\",\n        className,\n      )}\n      aria-label=\"Tab navigation\"\n      {...props}\n    />\n  </div>\n))\nGlassTabsList.displayName = TabsPrimitive.List.displayName\n\nconst GlassTabsTrigger = React.forwardRef<\n  React.ElementRef<typeof TabsPrimitive.Trigger>,\n  React.ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger>\n>(({ className, ...props }, ref) => (\n  <TabsPrimitive.Trigger\n    ref={ref}\n    className={cn(\n      \"relative inline-flex items-center justify-center whitespace-nowrap rounded-lg px-4 py-2\",\n      \"text-sm font-medium text-white/60 transition-colors duration-200\",\n      \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-white/50 focus-visible:ring-offset-2 focus-visible:ring-offset-transparent\",\n      \"disabled:pointer-events-none disabled:opacity-50\",\n      \"hover:text-white/80 hover:bg-white/5\",\n      \"data-[state=active]:bg-white/20 data-[state=active]:text-white\",\n      \"data-[state=active]:shadow-[0_2px_8px_rgba(0,0,0,0.2)]\",\n      \"data-[state=active]:before:absolute data-[state=active]:before:inset-0\",\n      \"data-[state=active]:before:rounded-lg data-[state=active]:before:bg-gradient-to-b\",\n      \"data-[state=active]:before:from-white/20 data-[state=active]:before:to-transparent\",\n      \"data-[state=active]:before:pointer-events-none\",\n      className,\n    )}\n    {...props}\n  />\n))\nGlassTabsTrigger.displayName = TabsPrimitive.Trigger.displayName\n\nconst GlassTabsContent = React.forwardRef<\n  React.ElementRef<typeof TabsPrimitive.Content>,\n  React.ComponentPropsWithoutRef<typeof TabsPrimitive.Content>\n>(({ className, children, ...props }, ref) => (\n  <TabsPrimitive.Content\n    ref={ref}\n    className={cn(\"mt-4 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-white/50\", className)}\n    {...props}\n  >\n    <AnimatePresence mode=\"wait\">\n      <motion.div\n        key={props.value}\n        initial={{ opacity: 0, y: 10 }}\n        animate={{\n          opacity: 1,\n          y: 0,\n          transition: {\n            type: \"spring\",\n            visualDuration: 0.3,\n            bounce: 0.2,\n          },\n        }}\n        exit={{\n          opacity: 0,\n          y: -10,\n          transition: { duration: 0.15 },\n        }}\n      >\n        {children}\n      </motion.div>\n    </AnimatePresence>\n  </TabsPrimitive.Content>\n))\nGlassTabsContent.displayName = TabsPrimitive.Content.displayName\n\nexport { GlassTabs, GlassTabsList, GlassTabsTrigger, GlassTabsContent }\n",
      "type": "registry:ui"
    }
  ],
  "type": "registry:ui"
}