{
  "$schema": "https://ui.shadcn.com/schema/registry.json",
  "name": "glasscn",
  "homepage": "https://glasscn.vercel.app/",
  "items": [
    {
      "name": "utils",
      "type": "registry:lib",
      "title": "Utils",
      "dependencies": [
        "clsx",
        "tailwind-merge"
      ],
      "files": [
        {
          "path": "lib/utils.ts",
          "type": "registry:lib"
        }
      ]
    },
    {
      "name": "highlight-text",
      "type": "registry:component",
      "title": "Highlight Text",
      "description": "Inline text highlight with preset color variants and custom background class support.",
      "registryDependencies": [
        "@glasscn/utils"
      ],
      "files": [
        {
          "path": "components/ui/highlight-text.tsx",
          "type": "registry:component"
        }
      ],
      "cssVars": {
        "theme": {
          "--color-accent-green": "var(--accent-green)"
        },
        "light": {
          "--accent-green": "#c5f83a"
        },
        "dark": {
          "--accent-green": "#c5f83a"
        }
      }
    },
    {
      "name": "button",
      "type": "registry:ui",
      "title": "Button",
      "registryDependencies": [
        "@glasscn/utils"
      ],
      "dependencies": [
        "@base-ui/react",
        "class-variance-authority"
      ],
      "files": [
        {
          "path": "components/ui/button.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "badge",
      "type": "registry:ui",
      "title": "Badge",
      "registryDependencies": [
        "@glasscn/utils"
      ],
      "dependencies": [
        "@base-ui/react",
        "class-variance-authority"
      ],
      "files": [
        {
          "path": "components/ui/badge.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "avatar",
      "type": "registry:ui",
      "title": "Avatar",
      "registryDependencies": [
        "@glasscn/utils"
      ],
      "dependencies": [
        "@base-ui/react"
      ],
      "files": [
        {
          "path": "components/ui/avatar.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "checkbox",
      "type": "registry:ui",
      "title": "Checkbox",
      "registryDependencies": [
        "@glasscn/utils"
      ],
      "dependencies": [
        "@base-ui/react",
        "lucide-react"
      ],
      "files": [
        {
          "path": "components/ui/checkbox.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "input",
      "type": "registry:ui",
      "title": "Input",
      "registryDependencies": [
        "@glasscn/utils"
      ],
      "dependencies": [
        "@base-ui/react"
      ],
      "files": [
        {
          "path": "components/ui/input.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "textarea",
      "type": "registry:ui",
      "title": "Textarea",
      "registryDependencies": [
        "@glasscn/utils"
      ],
      "files": [
        {
          "path": "components/ui/textarea.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "input-group",
      "type": "registry:ui",
      "title": "Input Group",
      "registryDependencies": [
        "@glasscn/utils",
        "@glasscn/button",
        "@glasscn/input",
        "@glasscn/textarea"
      ],
      "dependencies": [
        "class-variance-authority"
      ],
      "files": [
        {
          "path": "components/ui/input-group.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "item",
      "type": "registry:ui",
      "title": "Item",
      "registryDependencies": [
        "@glasscn/utils",
        "@glasscn/separator"
      ],
      "dependencies": [
        "@base-ui/react",
        "class-variance-authority"
      ],
      "files": [
        {
          "path": "components/ui/item.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "combobox",
      "type": "registry:ui",
      "title": "Combobox",
      "registryDependencies": [
        "@glasscn/utils",
        "@glasscn/button",
        "@glasscn/input-group"
      ],
      "dependencies": [
        "@base-ui/react",
        "lucide-react"
      ],
      "files": [
        {
          "path": "components/ui/combobox.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "command",
      "type": "registry:ui",
      "title": "Command",
      "registryDependencies": [
        "@glasscn/utils",
        "@glasscn/dialog",
        "@glasscn/input-group"
      ],
      "dependencies": [
        "cmdk",
        "lucide-react"
      ],
      "files": [
        {
          "path": "components/ui/command.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "dropdown-menu",
      "type": "registry:ui",
      "title": "Dropdown Menu",
      "registryDependencies": [
        "@glasscn/utils"
      ],
      "dependencies": [
        "@base-ui/react",
        "lucide-react"
      ],
      "files": [
        {
          "path": "components/ui/dropdown-menu.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "select",
      "type": "registry:ui",
      "title": "Select",
      "registryDependencies": [
        "@glasscn/utils"
      ],
      "dependencies": [
        "@base-ui/react",
        "lucide-react"
      ],
      "files": [
        {
          "path": "components/ui/select.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "switch",
      "type": "registry:ui",
      "title": "Switch",
      "registryDependencies": [
        "@glasscn/utils"
      ],
      "dependencies": [
        "@base-ui/react"
      ],
      "files": [
        {
          "path": "components/ui/switch.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "progress",
      "type": "registry:ui",
      "title": "Progress",
      "registryDependencies": [
        "@glasscn/utils"
      ],
      "dependencies": [
        "@base-ui/react"
      ],
      "files": [
        {
          "path": "components/ui/progress.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "glass-button",
      "type": "registry:component",
      "title": "Glass Button",
      "registryDependencies": [
        "@glasscn/utils",
        "@glasscn/button",
        "@glasscn/glass-variants",
        "@glasscn/liquid-glass"
      ],
      "description": "Glass Button with five variants: clear, frosted, subtle, liquid, and liquid-refract",
      "files": [
        {
          "path": "components/ui/glasscn/glass-button.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "glass-badge",
      "type": "registry:component",
      "title": "Glass Badge",
      "registryDependencies": [
        "@glasscn/utils",
        "@glasscn/badge",
        "@glasscn/glass-variants",
        "@glasscn/liquid-glass"
      ],
      "description": "Glass Badge with five variants: clear, frosted, subtle, liquid, and liquid-refract",
      "files": [
        {
          "path": "components/ui/glasscn/glass-badge.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "glass-checkbox",
      "type": "registry:component",
      "title": "Glass Checkbox",
      "registryDependencies": [
        "@glasscn/utils",
        "@glasscn/checkbox",
        "@glasscn/glass-variants",
        "@glasscn/liquid-glass"
      ],
      "description": "Glass Checkbox with five variants: clear, frosted, subtle, liquid, and liquid-refract",
      "files": [
        {
          "path": "components/ui/glasscn/glass-checkbox.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "glass-command",
      "type": "registry:component",
      "title": "Glass Command",
      "registryDependencies": [
        "@glasscn/utils",
        "@glasscn/command",
        "@glasscn/glass-variants",
        "@glasscn/liquid-glass"
      ],
      "description": "Glass Command with five variants: clear, frosted, subtle, liquid, and liquid-refract",
      "files": [
        {
          "path": "components/ui/glasscn/glass-command.tsx",
          "type": "registry:component"
        }
      ],
      "cssVars": {
        "theme": {
          "--color-help-foreground": "var(--help-foreground)"
        },
        "light": {
          "--help-foreground": "oklch(0.38 0 0)"
        },
        "dark": {
          "--help-foreground": "oklch(0.82 0 0)"
        }
      }
    },
    {
      "name": "glass-dropdown-menu",
      "type": "registry:component",
      "title": "Glass Dropdown Menu",
      "registryDependencies": [
        "@glasscn/utils",
        "@glasscn/dropdown-menu",
        "@glasscn/glass-variants",
        "@glasscn/liquid-glass"
      ],
      "dependencies": [
        "@base-ui/react"
      ],
      "description": "Glass Dropdown Menu with five variants: clear, frosted, subtle, liquid, and liquid-refract",
      "files": [
        {
          "path": "components/ui/glasscn/glass-dropdown-menu.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "glass-combobox",
      "type": "registry:component",
      "title": "Glass Combobox",
      "registryDependencies": [
        "@glasscn/utils",
        "@glasscn/combobox",
        "@glasscn/glass-variants",
        "@glasscn/liquid-glass"
      ],
      "description": "Glass Combobox with five variants: clear, frosted, subtle, liquid, and liquid-refract",
      "files": [
        {
          "path": "components/ui/glasscn/glass-combobox.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "glass-select",
      "type": "registry:component",
      "title": "Glass Select",
      "registryDependencies": [
        "@glasscn/utils",
        "@glasscn/select",
        "@glasscn/glass-variants",
        "@glasscn/liquid-glass"
      ],
      "description": "Glass Select with five variants: clear, frosted, subtle, liquid, and liquid-refract",
      "files": [
        {
          "path": "components/ui/glasscn/glass-select.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "card",
      "type": "registry:ui",
      "title": "Card",
      "registryDependencies": [
        "@glasscn/utils"
      ],
      "files": [
        {
          "path": "components/ui/card.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "liquid-glass",
      "type": "registry:component",
      "title": "Liquid Glass",
      "description": "Low-level refractive glass wrapper used by liquid-refract components.",
      "registryDependencies": [
        "@glasscn/utils"
      ],
      "files": [
        {
          "path": "components/ui/glasscn/liquid-glass.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "glass-card",
      "type": "registry:component",
      "title": "Glass Card",
      "registryDependencies": [
        "@glasscn/utils",
        "@glasscn/card",
        "@glasscn/glass-variants",
        "@glasscn/liquid-glass"
      ],
      "description": "Glass Card with five variants: clear, frosted, subtle, liquid, and liquid-refract",
      "files": [
        {
          "path": "components/ui/glasscn/glass-card.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "glass-scrim-card",
      "type": "registry:component",
      "title": "Glass Scrim Card",
      "registryDependencies": [
        "@glasscn/utils",
        "@glasscn/card",
        "@glasscn/liquid-glass"
      ],
      "description": "Siri-style liquid-refract card with a black scrim that eases from one edge into clear glass",
      "files": [
        {
          "path": "components/ui/glasscn/glass-scrim-card.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "glance",
      "type": "registry:item",
      "title": "Glance",
      "description": "CSS-only hover shine. Add the glance class to any element and a diagonal highlight sweeps across it once per hover",
      "css": {
        "@utility glance": {
          "position": "relative",
          "overflow": "hidden",
          "&::after": {
            "content": "\"\"",
            "pointer-events": "none",
            "position": "absolute",
            "inset": "-50%",
            "z-index": "10",
            "transform": "translateX(-100%)",
            "background": "linear-gradient(var(--glance-angle, 120deg), transparent 40%, color-mix(in oklab, var(--glance-color, white) calc(var(--glance-opacity, 10%) * 0.6), transparent) 48%, color-mix(in oklab, var(--glance-color, white) var(--glance-opacity, 10%), transparent) 50%, color-mix(in oklab, var(--glance-color, white) calc(var(--glance-opacity, 10%) * 0.6), transparent) 52%, transparent 60%)"
          },
          "&:hover::after": {
            "transform": "translateX(100%)",
            "transition": "transform var(--glance-duration, 700ms) ease-out"
          },
          "@media (prefers-reduced-motion: reduce)": {
            "&::after": {
              "display": "none"
            }
          }
        },
        "@utility glance-color-*": {
          "--glance-color": "--value(--color-*, [color])"
        },
        "@utility glance-opacity-*": {
          "--glance-opacity": "calc(--value(number) * 1%)"
        },
        "@utility glance-duration-*": {
          "--glance-duration": "calc(--value(number) * 1ms)"
        },
        "@utility glance-angle-*": {
          "--glance-angle": "calc(--value(number) * 1deg)"
        }
      }
    },
    {
      "name": "glass-contact-pill",
      "type": "registry:component",
      "title": "Glass Contact Pill",
      "registryDependencies": [
        "@glasscn/utils",
        "@glasscn/avatar",
        "@glasscn/liquid-glass"
      ],
      "dependencies": [
        "lucide-react"
      ],
      "description": "Liquid-glass contact chip with an avatar (image or initials fallback) and name, for messaging apps",
      "files": [
        {
          "path": "components/ui/glasscn/glass-contact-pill.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "glass-icon",
      "type": "registry:component",
      "title": "Glass Icon",
      "registryDependencies": [
        "@glasscn/utils",
        "@glasscn/glass-variants",
        "@glasscn/liquid-glass"
      ],
      "dependencies": [
        "class-variance-authority"
      ],
      "description": "A circular glass chip that wraps any icon, iOS-control-center style. Preset sizes scale the circle and icon together so grids of icons stay uniform.",
      "files": [
        {
          "path": "components/ui/glasscn/glass-icon.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "calendar",
      "type": "registry:ui",
      "title": "Calendar",
      "registryDependencies": [
        "@glasscn/utils",
        "@glasscn/button"
      ],
      "dependencies": [
        "date-fns",
        "lucide-react",
        "react-day-picker"
      ],
      "files": [
        {
          "path": "components/ui/calendar.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "glass-calendar",
      "type": "registry:component",
      "title": "Glass Calendar",
      "registryDependencies": [
        "@glasscn/utils",
        "@glasscn/calendar",
        "@glasscn/glass-variants",
        "@glasscn/liquid-glass"
      ],
      "description": "Glass Calendar with five variants: clear, frosted, subtle, liquid, and liquid-refract",
      "files": [
        {
          "path": "components/ui/glasscn/glass-calendar.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "glass-variants",
      "type": "registry:lib",
      "title": "Glass Variants",
      "files": [
        {
          "path": "lib/glass-variants.ts",
          "type": "registry:lib"
        }
      ],
      "css": {
        "@keyframes liquid-drift": {
          "0%": {
            "background-position": "0% 0%, 100% 100%, 0% 0%"
          },
          "50%": {
            "background-position": "30% 20%, 70% 80%, 0% 0%"
          },
          "100%": {
            "background-position": "0% 0%, 100% 100%, 0% 0%"
          }
        }
      }
    },
    {
      "name": "wavy-border",
      "type": "registry:style",
      "title": "Wavy Border",
      "description": "A global CSS class that applies a small, even wavy border shape.",
      "css": {
        ".wavy-border": {
          "border-width": "medium",
          "border-color": "var(--color-foreground)",
          "border-shape": "shape(from 2% 2%, curve to 10% 1.5% with 4% 2% / 6% 1.5%, curve to 20% 1% with 14% 1.5% / 16% 1%, curve to 30% 1.5% with 24% 1% / 26% 1.5%, curve to 40% 1% with 34% 1.5% / 36% 1%, curve to 50% 1.5% with 44% 1% / 46% 1.5%, curve to 60% 1% with 54% 1.5% / 56% 1%, curve to 70% 1.5% with 64% 1% / 66% 1.5%, curve to 80% 1% with 74% 1.5% / 76% 1%, curve to 90% 1.5% with 84% 1% / 86% 1.5%, curve to 98% 2% with 94% 1.5% / 96.5% 2%, line to 98% 7%, curve to 98.5% 15% with 98% 9% / 98.5% 12%, curve to 99% 25% with 98.5% 18% / 99% 22%, curve to 98.5% 35% with 99% 28% / 98.5% 32%, curve to 99% 45% with 98.5% 38% / 99% 42%, curve to 98.5% 55% with 99% 48% / 98.5% 52%, curve to 99% 65% with 98.5% 58% / 99% 62%, curve to 98.5% 75% with 99% 68% / 98.5% 72%, curve to 99% 85% with 98.5% 78% / 99% 82%, curve to 98.5% 94% with 99% 88% / 98.5% 91%, line to 98% 98%, curve to 90% 98.5% with 96% 98% / 94% 98.5%, curve to 80% 99% with 86% 98.5% / 84% 99%, curve to 70% 98.5% with 76% 99% / 74% 98.5%, curve to 60% 99% with 66% 98.5% / 64% 99%, curve to 50% 98.5% with 56% 99% / 54% 98.5%, curve to 40% 99% with 46% 98.5% / 44% 99%, curve to 30% 98.5% with 36% 99% / 34% 98.5%, curve to 20% 99% with 26% 98.5% / 24% 99%, curve to 10% 98.5% with 16% 99% / 14% 98.5%, curve to 2% 98% with 6% 98.5% / 3.5% 98%, curve to 1.5% 90% with 2% 96% / 1.5% 94%, curve to 1% 80% with 1.5% 86% / 1% 84%, curve to 1.5% 70% with 1% 76% / 1.5% 74%, curve to 1% 60% with 1.5% 66% / 1% 64%, curve to 1.5% 50% with 1% 56% / 1.5% 54%, curve to 1% 40% with 1.5% 46% / 1% 44%, curve to 1.5% 30% with 1% 36% / 1.5% 34%, curve to 1% 20% with 1.5% 26% / 1% 24%, curve to 1.5% 10% with 1% 16% / 1.5% 14%, curve to 2% 2% with 1.5% 6% / 2% 3.5%, close)"
        }
      }
    },
    {
      "name": "sheet",
      "type": "registry:ui",
      "title": "Sheet",
      "registryDependencies": [
        "@glasscn/utils",
        "@glasscn/button"
      ],
      "dependencies": [
        "@base-ui/react",
        "lucide-react"
      ],
      "files": [
        {
          "path": "components/ui/sheet.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "separator",
      "type": "registry:ui",
      "title": "Separator",
      "registryDependencies": [
        "@glasscn/utils"
      ],
      "dependencies": [
        "@base-ui/react"
      ],
      "files": [
        {
          "path": "components/ui/separator.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "skeleton",
      "type": "registry:ui",
      "title": "Skeleton",
      "registryDependencies": [
        "@glasscn/utils"
      ],
      "files": [
        {
          "path": "components/ui/skeleton.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "button-group",
      "type": "registry:ui",
      "title": "Button Group",
      "registryDependencies": [
        "@glasscn/utils",
        "@glasscn/separator"
      ],
      "dependencies": [
        "@base-ui/react",
        "class-variance-authority"
      ],
      "files": [
        {
          "path": "components/ui/button-group.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "popover",
      "type": "registry:ui",
      "title": "Popover",
      "registryDependencies": [
        "@glasscn/utils"
      ],
      "dependencies": [
        "@base-ui/react"
      ],
      "files": [
        {
          "path": "components/ui/popover.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "radio-group",
      "type": "registry:ui",
      "title": "Radio Group",
      "registryDependencies": [
        "@glasscn/utils"
      ],
      "dependencies": [
        "@base-ui/react"
      ],
      "files": [
        {
          "path": "components/ui/radio-group.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "tooltip",
      "type": "registry:ui",
      "title": "Tooltip",
      "registryDependencies": [
        "@glasscn/utils"
      ],
      "dependencies": [
        "@base-ui/react"
      ],
      "files": [
        {
          "path": "components/ui/tooltip.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "sidebar",
      "type": "registry:ui",
      "title": "Sidebar",
      "registryDependencies": [
        "@glasscn/utils",
        "@glasscn/button",
        "@glasscn/input",
        "@glasscn/separator",
        "@glasscn/sheet",
        "@glasscn/skeleton",
        "@glasscn/tooltip"
      ],
      "dependencies": [
        "@base-ui/react",
        "class-variance-authority",
        "lucide-react"
      ],
      "files": [
        {
          "path": "components/ui/sidebar.tsx",
          "type": "registry:ui"
        },
        {
          "path": "hooks/use-mobile.ts",
          "type": "registry:hook"
        }
      ]
    },
    {
      "name": "glass-separator",
      "type": "registry:component",
      "title": "Glass Separator",
      "registryDependencies": [
        "@glasscn/utils",
        "@glasscn/separator",
        "@glasscn/glass-variants"
      ],
      "description": "Glass Separator with five variants: clear, frosted, subtle, liquid, and liquid-refract",
      "files": [
        {
          "path": "components/ui/glasscn/glass-separator.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "glass-sidebar",
      "type": "registry:component",
      "title": "Glass Sidebar",
      "registryDependencies": [
        "@glasscn/utils",
        "@glasscn/input",
        "@glasscn/sheet",
        "@glasscn/sidebar",
        "@glasscn/glass-variants",
        "@glasscn/glass-separator",
        "@glasscn/liquid-glass"
      ],
      "description": "Glass Sidebar with five variants: clear, frosted, subtle, liquid, and liquid-refract",
      "files": [
        {
          "path": "components/ui/glasscn/glass-sidebar.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "alert",
      "type": "registry:ui",
      "title": "Alert",
      "registryDependencies": [
        "@glasscn/utils"
      ],
      "dependencies": [
        "class-variance-authority"
      ],
      "files": [
        {
          "path": "components/ui/alert.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "alert-dialog",
      "type": "registry:ui",
      "title": "Alert Dialog",
      "registryDependencies": [
        "@glasscn/button",
        "@glasscn/utils"
      ],
      "dependencies": [
        "@base-ui/react"
      ],
      "files": [
        {
          "path": "components/ui/alert-dialog.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "dialog",
      "type": "registry:ui",
      "title": "Dialog",
      "registryDependencies": [
        "@glasscn/utils",
        "@glasscn/button"
      ],
      "dependencies": [
        "@base-ui/react",
        "lucide-react"
      ],
      "files": [
        {
          "path": "components/ui/dialog.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "glass-alert",
      "type": "registry:component",
      "title": "Glass Alert",
      "registryDependencies": [
        "@glasscn/utils",
        "@glasscn/alert",
        "@glasscn/glass-variants",
        "@glasscn/liquid-glass"
      ],
      "description": "Glass Alert with five variants: clear, frosted, subtle, liquid, and liquid-refract",
      "files": [
        {
          "path": "components/ui/glasscn/glass-alert.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "glass-alert-dialog",
      "type": "registry:component",
      "title": "Glass Alert Dialog",
      "registryDependencies": [
        "@glasscn/utils",
        "@glasscn/button",
        "@glasscn/glass-button",
        "@glasscn/alert-dialog",
        "@glasscn/glass-variants",
        "@glasscn/liquid-glass"
      ],
      "description": "Glass Alert Dialog with five variants: clear, frosted, subtle, liquid, and liquid-refract",
      "files": [
        {
          "path": "components/ui/glasscn/glass-alert-dialog.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "code-block-command",
      "type": "registry:ui",
      "title": "Code Block Command",
      "registryDependencies": [
        "@glasscn/utils",
        "@glasscn/button",
        "@glasscn/badge"
      ],
      "dependencies": [
        "lucide-react",
        "motion"
      ],
      "files": [
        {
          "path": "components/ui/code-block-command.tsx",
          "type": "registry:ui"
        },
        {
          "path": "components/ui/icons/package-manager-icons.tsx",
          "type": "registry:ui"
        },
        {
          "path": "components/custom/copy-button.tsx",
          "type": "registry:component"
        },
        {
          "path": "hooks/use-copy-to-clipboard.ts",
          "type": "registry:hook"
        },
        {
          "path": "lib/package-manager.ts",
          "type": "registry:lib"
        }
      ]
    },
    {
      "name": "glass-code-block-command",
      "type": "registry:component",
      "title": "Glass Code Block Command",
      "registryDependencies": [
        "@glasscn/utils",
        "@glasscn/code-block-command",
        "@glasscn/glass-badge",
        "@glasscn/glass-variants",
        "@glasscn/liquid-glass"
      ],
      "description": "Glass Code Block Command with five variants: clear, frosted, subtle, liquid, and liquid-refract",
      "files": [
        {
          "path": "components/ui/glasscn/glass-code-block-command.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "component-preview",
      "type": "registry:component",
      "title": "Component Preview",
      "registryDependencies": [
        "@glasscn/utils",
        "@glasscn/button",
        "@glasscn/card",
        "@glasscn/separator",
        "@glasscn/glass-button",
        "@glasscn/glass-card",
        "@glasscn/glass-variants"
      ],
      "dependencies": [
        "lucide-react",
        "motion",
        "shiki"
      ],
      "description": "A preview shell for component demos with switchable default and glass variants.",
      "files": [
        {
          "path": "components/component-preview-tabs.tsx",
          "type": "registry:component"
        },
        {
          "path": "components/glass-component-preview-tabs.tsx",
          "type": "registry:component"
        },
        {
          "path": "components/custom/copy-button.tsx",
          "type": "registry:component"
        },
        {
          "path": "hooks/use-copy-to-clipboard.ts",
          "type": "registry:hook"
        },
        {
          "path": "lib/highlight-code.ts",
          "type": "registry:lib"
        }
      ]
    },
    {
      "name": "glass-button-group",
      "type": "registry:component",
      "title": "Glass Button Group",
      "registryDependencies": [
        "@glasscn/utils",
        "@glasscn/button-group",
        "@glasscn/glass-variants",
        "@glasscn/liquid-glass"
      ],
      "description": "Glass Button Group with five variants: clear, frosted, subtle, liquid, and liquid-refract",
      "files": [
        {
          "path": "components/ui/glasscn/glass-button-group.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "glass-toggle-group",
      "type": "registry:component",
      "title": "Glass Toggle Group",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "@glasscn/utils",
        "@glasscn/radio-group",
        "@glasscn/liquid-glass"
      ],
      "description": "A segmented control with a sliding glass puck indicator supporting icons, text, or any React content.",
      "files": [
        {
          "path": "components/ui/glasscn/glass-toggle-group.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "glass-input",
      "type": "registry:component",
      "title": "Glass Input",
      "registryDependencies": [
        "@glasscn/utils",
        "@glasscn/input",
        "@glasscn/glass-variants",
        "@glasscn/liquid-glass"
      ],
      "description": "Glass Input with five variants: clear, frosted, subtle, liquid, and liquid-refract",
      "files": [
        {
          "path": "components/ui/glasscn/glass-input.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "glass-item",
      "type": "registry:component",
      "title": "Glass Item",
      "registryDependencies": [
        "@glasscn/utils",
        "@glasscn/item",
        "@glasscn/glass-variants",
        "@glasscn/liquid-glass"
      ],
      "description": "Glass Item with five variants: clear, frosted, subtle, liquid, and liquid-refract",
      "files": [
        {
          "path": "components/ui/glasscn/glass-item.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "glass-popover",
      "type": "registry:component",
      "title": "Glass Popover",
      "registryDependencies": [
        "@glasscn/utils",
        "@glasscn/popover",
        "@glasscn/glass-variants",
        "@glasscn/liquid-glass"
      ],
      "dependencies": [
        "@base-ui/react"
      ],
      "description": "Glass Popover with five variants: clear, frosted, subtle, liquid, and liquid-refract",
      "files": [
        {
          "path": "components/ui/glasscn/glass-popover.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "glass-progress",
      "type": "registry:component",
      "title": "Glass Progress",
      "registryDependencies": [
        "@glasscn/utils",
        "@glasscn/progress",
        "@glasscn/glass-variants",
        "@glasscn/liquid-glass"
      ],
      "dependencies": [
        "@base-ui/react"
      ],
      "description": "Glass Progress with five variants: clear, frosted, subtle, liquid, and liquid-refract",
      "files": [
        {
          "path": "components/ui/glasscn/glass-progress.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "glass-radio-group",
      "type": "registry:component",
      "title": "Glass Radio Group",
      "registryDependencies": [
        "@glasscn/utils",
        "@glasscn/radio-group",
        "@glasscn/glass-variants"
      ],
      "description": "Glass Radio Group with five variants: clear, frosted, subtle, liquid, and liquid-refract",
      "files": [
        {
          "path": "components/ui/glasscn/glass-radio-group.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "glass-skeleton",
      "type": "registry:component",
      "title": "Glass Skeleton",
      "registryDependencies": [
        "@glasscn/utils",
        "@glasscn/skeleton",
        "@glasscn/glass-variants",
        "@glasscn/liquid-glass"
      ],
      "description": "Glass Skeleton with five variants: clear, frosted, subtle, liquid, and liquid-refract",
      "files": [
        {
          "path": "components/ui/glasscn/glass-skeleton.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "liquid-text",
      "type": "registry:component",
      "title": "Liquid Text",
      "description": "Animated text filled with a liquid shader mask.",
      "dependencies": [
        "@paper-design/shaders-react"
      ],
      "files": [
        {
          "path": "components/ui/glasscn/liquid-text.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "liquid-watch",
      "type": "registry:component",
      "title": "Liquid Watch",
      "description": "Compact watch-style stacked time display built from liquid text inspired by Apple Watch.",
      "registryDependencies": [
        "@glasscn/utils",
        "@glasscn/liquid-text"
      ],
      "files": [
        {
          "path": "components/ui/glasscn/liquid-watch.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "liquid-switch",
      "type": "registry:component",
      "title": "Liquid Switch",
      "description": "A liquid-glass switch wrapper built on top of the default switch component.",
      "registryDependencies": [
        "@glasscn/utils",
        "@glasscn/switch"
      ],
      "dependencies": [
        "@paper-design/shaders-react",
        "class-variance-authority"
      ],
      "files": [
        {
          "path": "components/ui/glasscn/liquid-switch.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "liquid-badge",
      "type": "registry:component",
      "title": "Liquid Badge",
      "description": "A liquid-glass badge wrapper that keeps the base badge fill and applies the effect to the border.",
      "registryDependencies": [
        "@glasscn/utils",
        "@glasscn/badge"
      ],
      "dependencies": [
        "@paper-design/shaders-react",
        "class-variance-authority"
      ],
      "files": [
        {
          "path": "components/ui/glasscn/liquid-badge.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "preference",
      "type": "registry:component",
      "title": "Preference",
      "description": "A weighted preference bar with icon badges, hover tinting, and tooltip descriptions.",
      "registryDependencies": [
        "@glasscn/utils",
        "@glasscn/badge",
        "@glasscn/item",
        "@glasscn/tooltip"
      ],
      "files": [
        {
          "path": "components/ui/glasscn/preference.tsx",
          "type": "registry:component"
        }
      ]
    }
  ]
}
