{
  "$schema": "https://ui.shadcn.com/schema/registry.json",
  "name": "Azemmur",
  "homepage": "https://azemmur.raouf.codes/",
  "items": [
    {
      "name": "index",
      "type": "registry:style",
      "dependencies": [
        "tw-animate-css",
        "class-variance-authority",
        "@tabler/icons-react"
      ],
      "registryDependencies": [
        "utils"
      ],
      "cssVars": {},
      "files": []
    },
    {
      "name": "components-blur-image",
      "type": "registry:ui",
      "title": "Blur Image",
      "description": "An image component that shows a low-quality blurred placeholder while loading.",
      "dependencies": [
        "class-variance-authority"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/components/azemmur/blur-image/index.tsx",
          "type": "registry:ui",
          "target": "components/azemmur/blur-image.tsx"
        }
      ]
    },
    {
      "name": "components-button",
      "type": "registry:ui",
      "title": "Button",
      "description": "A button component with a variety of styles and animations.",
      "dependencies": [
        "class-variance-authority"
      ],
      "registryDependencies": [
        "@azemmur/primitives-button"
      ],
      "files": [
        {
          "path": "registry/components/azemmur/button/index.tsx",
          "type": "registry:ui",
          "target": "components/azemmur/button.tsx"
        }
      ]
    },
    {
      "name": "components-floating-dock",
      "type": "registry:ui",
      "title": "Floating Dock",
      "description": "A macOS-style floating dock with magnetic hover animations and keyboard navigation.",
      "dependencies": [
        "motion",
        "class-variance-authority"
      ],
      "registryDependencies": [
        "@azemmur/components-button",
        "@azemmur/hooks-use-key-actions"
      ],
      "files": [
        {
          "path": "registry/components/azemmur/floating-dock/index.tsx",
          "type": "registry:ui",
          "target": "components/azemmur/floating-dock/index.tsx"
        },
        {
          "path": "registry/components/azemmur/floating-dock/dock-root.tsx",
          "type": "registry:ui",
          "target": "components/azemmur/floating-dock/dock-root.tsx"
        },
        {
          "path": "registry/components/azemmur/floating-dock/dock-context.tsx",
          "type": "registry:hook",
          "target": "components/azemmur/floating-dock/dock-context.tsx"
        },
        {
          "path": "registry/components/azemmur/floating-dock/dock-item.tsx",
          "type": "registry:ui",
          "target": "components/azemmur/floating-dock/dock-item.tsx"
        },
        {
          "path": "registry/components/azemmur/floating-dock/dock-separator.tsx",
          "type": "registry:ui",
          "target": "components/azemmur/floating-dock/dock-separator.tsx"
        },
        {
          "path": "registry/components/azemmur/floating-dock/dock-variants.ts",
          "type": "registry:ui",
          "target": "components/azemmur/floating-dock/dock-variants.ts"
        }
      ]
    },
    {
      "name": "components-speed-dial",
      "type": "registry:ui",
      "title": "Speed Dial",
      "description": "A floating action button that reveals a set of quick actions on click.",
      "dependencies": [
        "motion",
        "class-variance-authority"
      ],
      "registryDependencies": [
        "@azemmur/components-button",
        "@azemmur/hooks-use-key-actions"
      ],
      "files": [
        {
          "path": "registry/components/azemmur/speed-dial/index.tsx",
          "type": "registry:ui",
          "target": "components/azemmur/speed-dial/index.tsx"
        },
        {
          "path": "registry/components/azemmur/speed-dial/speed-dial-root.tsx",
          "type": "registry:ui",
          "target": "components/azemmur/speed-dial/speed-dial-root.tsx"
        },
        {
          "path": "registry/components/azemmur/speed-dial/speed-dial-context.tsx",
          "type": "registry:hook",
          "target": "components/azemmur/speed-dial/speed-dial-context.tsx"
        },
        {
          "path": "registry/components/azemmur/speed-dial/speed-dial-trigger.tsx",
          "type": "registry:ui",
          "target": "components/azemmur/speed-dial/speed-dial-trigger.tsx"
        },
        {
          "path": "registry/components/azemmur/speed-dial/speed-dial-menu.tsx",
          "type": "registry:ui",
          "target": "components/azemmur/speed-dial/speed-dial-menu.tsx"
        },
        {
          "path": "registry/components/azemmur/speed-dial/speed-dial-item.tsx",
          "type": "registry:ui",
          "target": "components/azemmur/speed-dial/speed-dial-item.tsx"
        },
        {
          "path": "registry/components/azemmur/speed-dial/speed-dial-variants.ts",
          "type": "registry:ui",
          "target": "components/azemmur/speed-dial/speed-dial-variants.ts"
        }
      ]
    },
    {
      "name": "components-tabs",
      "type": "registry:ui",
      "title": "Tabs",
      "description": "Animated tablist with accessible keyboard navigation and animated underline.",
      "dependencies": [
        "motion",
        "class-variance-authority"
      ],
      "registryDependencies": [
        "@azemmur/primitives-button"
      ],
      "files": [
        {
          "path": "registry/components/azemmur/tabs/index.tsx",
          "type": "registry:ui",
          "target": "components/azemmur/tabs/index.tsx"
        },
        {
          "path": "registry/components/azemmur/tabs/tabs-root.tsx",
          "type": "registry:ui",
          "target": "components/azemmur/tabs/tabs-root.tsx"
        },
        {
          "path": "registry/components/azemmur/tabs/tabs-context.tsx",
          "type": "registry:hook",
          "target": "components/azemmur/tabs/tabs-context.tsx"
        },
        {
          "path": "registry/components/azemmur/tabs/tabs-list.tsx",
          "type": "registry:ui",
          "target": "components/azemmur/tabs/tabs-list.tsx"
        },
        {
          "path": "registry/components/azemmur/tabs/tabs-trigger.tsx",
          "type": "registry:ui",
          "target": "components/azemmur/tabs/tabs-trigger.tsx"
        },
        {
          "path": "registry/components/azemmur/tabs/tabs-indicator.tsx",
          "type": "registry:ui",
          "target": "components/azemmur/tabs/tabs-indicator.tsx"
        },
        {
          "path": "registry/components/azemmur/tabs/tabs-content.tsx",
          "type": "registry:ui",
          "target": "components/azemmur/tabs/tabs-content.tsx"
        },
        {
          "path": "registry/components/azemmur/tabs/tabs-panel.tsx",
          "type": "registry:ui",
          "target": "components/azemmur/tabs/tabs-panel.tsx"
        },
        {
          "path": "registry/components/azemmur/tabs/tabs-variants.ts",
          "type": "registry:ui",
          "target": "components/azemmur/tabs/tabs-variants.ts"
        }
      ]
    },
    {
      "name": "components-theme-switch",
      "type": "registry:ui",
      "title": "Theme Switch",
      "description": "A small theme toggle button with motion animations.",
      "dependencies": [
        "class-variance-authority",
        "motion",
        "@tabler/icons-react",
        "next-themes"
      ],
      "registryDependencies": [
        "@azemmur/primitives-button"
      ],
      "files": [
        {
          "path": "registry/components/azemmur/theme-switch/index.tsx",
          "type": "registry:ui",
          "target": "components/azemmur/theme-switch.tsx"
        }
      ]
    },
    {
      "name": "components-timeline",
      "type": "registry:ui",
      "title": "Timeline",
      "description": "A flexible scroll-driven timeline with animated progress, configurable orientations, customizable pins, and optional external scroll-container control.",
      "dependencies": [
        "motion",
        "class-variance-authority"
      ],
      "registryDependencies": [
        "@azemmur/hooks-use-is-mobile",
        "@azemmur/hooks-use-merged-refs"
      ],
      "files": [
        {
          "path": "registry/components/azemmur/timeline/index.tsx",
          "type": "registry:ui",
          "target": "components/azemmur/timeline/index.tsx"
        },
        {
          "path": "registry/components/azemmur/timeline/timeline-root.tsx",
          "type": "registry:ui",
          "target": "components/azemmur/timeline/timeline-root.tsx"
        },
        {
          "path": "registry/components/azemmur/timeline/timeline-context.tsx",
          "type": "registry:ui",
          "target": "components/azemmur/timeline/timeline-context.tsx"
        },
        {
          "path": "registry/components/azemmur/timeline/timeline-header.tsx",
          "type": "registry:ui",
          "target": "components/azemmur/timeline/timeline-header.tsx"
        },
        {
          "path": "registry/components/azemmur/timeline/timeline-horizontal.tsx",
          "type": "registry:ui",
          "target": "components/azemmur/timeline/timeline-horizontal.tsx"
        },
        {
          "path": "registry/components/azemmur/timeline/timeline-item.tsx",
          "type": "registry:ui",
          "target": "components/azemmur/timeline/timeline-item.tsx"
        },
        {
          "path": "registry/components/azemmur/timeline/timeline-variants.ts",
          "type": "registry:ui",
          "target": "components/azemmur/timeline/timeline-variants.ts"
        },
        {
          "path": "registry/components/azemmur/timeline/timeline-vertical.tsx",
          "type": "registry:ui",
          "target": "components/azemmur/timeline/timeline-vertical.tsx"
        }
      ]
    },
    {
      "name": "primitives-button",
      "type": "registry:ui",
      "title": "Button",
      "description": "A simple button that animates on hover and tap.",
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "@azemmur/primitives-slot"
      ],
      "files": [
        {
          "path": "registry/components/primitives/button/index.tsx",
          "type": "registry:ui",
          "target": "components/azemmur/primitives/button.tsx"
        }
      ]
    },
    {
      "name": "primitives-slot",
      "type": "registry:ui",
      "title": "Animate Slot",
      "description": "A slot component that allows you to use motion components with any element.",
      "dependencies": [
        "motion"
      ],
      "files": [
        {
          "path": "registry/components/primitives/slot/index.tsx",
          "type": "registry:ui",
          "target": "components/azemmur/primitives/slot.tsx"
        }
      ]
    },
    {
      "name": "demo-components-blur-image",
      "type": "registry:ui",
      "title": "Blur Image Demo",
      "description": "Demo for the blur image component.",
      "dependencies": [],
      "registryDependencies": [
        "@azemmur/components-blur-image"
      ],
      "files": [
        {
          "path": "registry/demo/components/azemmur/blur-image/index.tsx",
          "type": "registry:ui",
          "target": "components/azemmur/demo/components/blur-image.tsx"
        }
      ],
      "meta": {
        "demoProps": {
          "BlurImage": {
            "src": {
              "value": "https://mir-s3-cdn-cf.behance.net/project_modules/disp/dae2cf242954131.6977de86013f2.png"
            },
            "width": {
              "value": 400
            },
            "height": {
              "value": 210
            },
            "intent": {
              "value": "primary",
              "options": {
                "primary": "primary",
                "accent": "accent",
                "secondary": "secondary",
                "success": "success",
                "info": "info",
                "warning": "warning",
                "error": "error",
                "neutral": "neutral"
              }
            },
            "visuals": {
              "value": "none",
              "options": {
                "solid": "solid",
                "dashed": "dashed",
                "dotted": "dotted",
                "none": "none"
              }
            },
            "shape": {
              "value": "rounded",
              "options": {
                "rounded": "rounded",
                "pill": "pill",
                "sharp": "sharp"
              }
            },
            "elevation": {
              "value": "none",
              "options": {
                "none": "none",
                "raised": "raised",
                "floating": "floating"
              }
            }
          }
        }
      }
    },
    {
      "name": "demo-components-button",
      "type": "registry:ui",
      "title": "Button Demo",
      "description": "Demo showing a button.",
      "dependencies": [
        "@tabler/icons-react"
      ],
      "registryDependencies": [
        "@azemmur/components-button"
      ],
      "files": [
        {
          "path": "registry/demo/components/azemmur/button/index.tsx",
          "type": "registry:ui",
          "target": "components/azemmur/demo/components/button.tsx"
        }
      ],
      "meta": {
        "demoProps": {
          "Button": {
            "intent": {
              "value": "primary",
              "options": {
                "primary": "primary",
                "accent": "accent",
                "secondary": "secondary",
                "success": "success",
                "info": "info",
                "warning": "warning",
                "error": "error"
              }
            },
            "styling": {
              "value": "solid",
              "options": {
                "solid": "solid",
                "outline": "outline",
                "ghost": "ghost",
                "link": "link"
              }
            },
            "size": {
              "value": "md",
              "options": {
                "sm": "sm",
                "md": "md",
                "lg": "lg",
                "icon-sm": "icon-sm",
                "icon-md": "icon-md",
                "icon-lg": "icon-lg"
              }
            },
            "shape": {
              "value": "rounded",
              "options": {
                "rounded": "rounded",
                "pill": "pill",
                "sharp": "sharp"
              }
            },
            "elevation": {
              "value": "raised",
              "options": {
                "raised": "raised",
                "floating": "floating"
              }
            }
          }
        }
      }
    },
    {
      "name": "demo-components-floating-dock",
      "type": "registry:ui",
      "title": "Floating Dock Demo",
      "description": "Demo for the Floating Dock component.",
      "dependencies": [
        "@tabler/icons-react"
      ],
      "registryDependencies": [
        "@azemmur/components-floating-dock"
      ],
      "files": [
        {
          "path": "registry/demo/components/azemmur/floating-dock/index.tsx",
          "type": "registry:ui",
          "target": "components/azemmur/demo/components/floating-dock.tsx"
        }
      ],
      "meta": {
        "demoProps": {
          "FloatingDock": {
            "orientation": {
              "value": "vertical",
              "options": {
                "vertical": "vertical",
                "horizontal": "horizontal"
              }
            },
            "size": {
              "value": "md",
              "options": {
                "sm": "sm",
                "md": "md",
                "lg": "lg"
              }
            },
            "intent": {
              "value": "primary",
              "options": {
                "primary": "primary",
                "accent": "accent",
                "secondary": "secondary",
                "success": "success",
                "info": "info",
                "warning": "warning",
                "error": "error"
              }
            },
            "styling": {
              "value": "solid",
              "options": {
                "solid": "solid",
                "outline": "outline",
                "ghost": "ghost",
                "link": "link"
              }
            },
            "shape": {
              "value": "pill",
              "options": {
                "rounded": "rounded",
                "pill": "pill",
                "sharp": "sharp"
              }
            },
            "elevation": {
              "value": "raised",
              "options": {
                "raised": "raised",
                "floating": "floating"
              }
            }
          }
        }
      }
    },
    {
      "name": "demo-components-speed-dial",
      "type": "registry:ui",
      "title": "Speed Dial Demo",
      "description": "Demo for the Speed Dial component.",
      "dependencies": [
        "@tabler/icons-react"
      ],
      "registryDependencies": [
        "@azemmur/components-speed-dial"
      ],
      "files": [
        {
          "path": "registry/demo/components/azemmur/speed-dial/index.tsx",
          "type": "registry:ui",
          "target": "components/azemmur/demo/components/speed-dial.tsx"
        }
      ],
      "meta": {
        "demoProps": {
          "SpeedDial": {
            "orientation": {
              "value": "vertical",
              "options": {
                "vertical": "vertical",
                "horizontal": "horizontal"
              }
            },
            "expansion": {
              "value": "reverse",
              "options": {
                "normal": "normal",
                "reverse": "reverse"
              }
            },
            "size": {
              "value": "md",
              "options": {
                "sm": "sm",
                "md": "md",
                "lg": "lg"
              }
            },
            "intent": {
              "value": "primary",
              "options": {
                "primary": "primary",
                "accent": "accent",
                "secondary": "secondary",
                "success": "success",
                "info": "info",
                "warning": "warning",
                "error": "error"
              }
            },
            "styling": {
              "value": "solid",
              "options": {
                "solid": "solid",
                "outline": "outline",
                "ghost": "ghost"
              }
            },
            "shape": {
              "value": "pill",
              "options": {
                "rounded": "rounded",
                "pill": "pill",
                "sharp": "sharp"
              }
            },
            "elevation": {
              "value": "raised",
              "options": {
                "raised": "raised",
                "floating": "floating"
              }
            }
          }
        }
      }
    },
    {
      "name": "demo-components-tabs",
      "type": "registry:ui",
      "title": "Tab Demo",
      "description": "Interactive demo for the Tab component",
      "dependencies": [
        "@tabler/icons-react"
      ],
      "registryDependencies": [
        "@azemmur/components-tabs"
      ],
      "files": [
        {
          "path": "registry/demo/components/azemmur/tabs/index.tsx",
          "type": "registry:ui",
          "target": "components/azemmur/demo/components/tabs.tsx"
        }
      ],
      "meta": {
        "demoProps": {
          "Tab": {
            "intent": {
              "value": "primary",
              "options": {
                "primary": "primary",
                "secondary": "secondary",
                "accent": "accent"
              }
            },
            "styling": {
              "value": "underline",
              "options": {
                "underline": "underline",
                "minimal": "minimal",
                "solid": "solid"
              }
            },
            "visuals": {
              "value": "classic",
              "options": {
                "filled": "filled",
                "subtle": "subtle",
                "classic": "classic",
                "outline": "outline",
                "levitate": "levitate"
              }
            },
            "size": {
              "value": "md",
              "options": {
                "sm": "sm",
                "md": "md",
                "lg": "lg"
              }
            },
            "shape": {
              "value": "rounded",
              "options": {
                "rounded": "rounded",
                "pill": "pill",
                "sharp": "sharp"
              }
            },
            "direction": {
              "value": "ltr",
              "options": {
                "ltr": "ltr",
                "rtl": "rtl"
              }
            }
          }
        }
      }
    },
    {
      "name": "demo-components-theme-switch",
      "type": "registry:ui",
      "title": "Theme Switch Demo",
      "description": "Demo for the ThemeSwitch component.",
      "registryDependencies": [
        "@azemmur/components-theme-switch"
      ],
      "files": [
        {
          "path": "registry/demo/components/azemmur/theme-switch/index.tsx",
          "type": "registry:ui",
          "target": "components/azemmur/demo/theme-switch.tsx"
        }
      ],
      "meta": {
        "demoProps": {
          "ThemeSwitch": {
            "size": {
              "value": "md",
              "options": {
                "sm": "sm",
                "md": "md",
                "lg": "lg"
              }
            },
            "styling": {
              "value": "ghost",
              "options": {
                "ghost": "ghost",
                "solid": "solid",
                "outline": "outline"
              }
            },
            "intent": {
              "value": "primary",
              "options": {
                "primary": "primary",
                "accent": "accent",
                "secondary": "secondary"
              }
            },
            "shape": {
              "value": "rounded",
              "options": {
                "rounded": "rounded",
                "sharp": "sharp",
                "pill": "pill"
              }
            },
            "elevation": {
              "value": "raised",
              "options": {
                "raised": "raised",
                "floating": "floating"
              }
            }
          }
        }
      }
    },
    {
      "name": "demo-components-timeline",
      "type": "registry:ui",
      "title": "Timeline Demo",
      "description": "Demo for the Timeline component.",
      "dependencies": [],
      "registryDependencies": [
        "@azemmur/components-timeline"
      ],
      "files": [
        {
          "path": "registry/demo/components/azemmur/timeline/index.tsx",
          "type": "registry:ui",
          "target": "components/azemmur/demo/components/timeline.tsx"
        }
      ],
      "meta": {
        "demoProps": {
          "Timeline": {
            "orientation": {
              "value": "horizontal",
              "options": {
                "horizontal": "horizontal",
                "vertical": "vertical"
              }
            },
            "intent": {
              "value": "primary",
              "options": {
                "primary": "primary",
                "accent": "accent",
                "secondary": "secondary",
                "success": "success",
                "info": "info",
                "warning": "warning",
                "error": "error"
              }
            },
            "size": {
              "value": "md",
              "options": {
                "sm": "sm",
                "md": "md",
                "lg": "lg"
              }
            },
            "gradient": {
              "value": "purple-blue",
              "options": {
                "purple-blue": "purple-blue",
                "orange-red": "orange-red",
                "green-teal": "green-teal",
                "rainbow": "rainbow",
                "none": "none"
              }
            },
            "visuals": {
              "value": "none",
              "options": {
                "card": "card",
                "bordered": "bordered",
                "solid": "solid",
                "dashed": "dashed",
                "dotted": "dotted",
                "none": "none"
              }
            },
            "shape": {
              "value": "circle",
              "options": {
                "circle": "circle",
                "ring": "ring",
                "dot": "dot",
                "square": "square",
                "diamond": "diamond"
              }
            },
            "direction": {
              "value": "ltr",
              "options": {
                "ltr": "ltr",
                "rtl": "rtl"
              }
            }
          }
        }
      }
    },
    {
      "name": "demo-primitives-button",
      "type": "registry:ui",
      "title": "Button Demo",
      "description": "Demo showing a button.",
      "registryDependencies": [
        "@azemmur/primitives-button"
      ],
      "files": [
        {
          "path": "registry/demo/components/primitives/button/index.tsx",
          "type": "registry:ui",
          "target": "components/demo/components/primitives/button.tsx"
        }
      ],
      "meta": {
        "demoProps": {
          "Button": {
            "hoverScale": {
              "value": 1.05,
              "min": 0,
              "max": 2,
              "step": 0.05
            },
            "tapScale": {
              "value": 0.95,
              "min": 0,
              "max": 2,
              "step": 0.05
            }
          }
        }
      }
    },
    {
      "name": "demo-layouts-floating-header",
      "type": "registry:ui",
      "dependencies": [],
      "registryDependencies": [
        "@azemmur/layouts-floating-header"
      ],
      "files": [
        {
          "path": "registry/demo/layouts/floating-header/index.tsx",
          "type": "registry:ui",
          "target": "components/azemmur/demo/layouts/floating-header.tsx"
        }
      ],
      "meta": {
        "demoProps": {
          "FloatingHeader": {
            "intent": {
              "value": "neutral",
              "options": {
                "primary": "primary",
                "accent": "accent",
                "secondary": "secondary",
                "success": "success",
                "warning": "warning",
                "error": "error",
                "info": "info",
                "neutral": "neutral"
              }
            },
            "styling": {
              "value": "glass",
              "options": {
                "solid": "solid",
                "outline": "outline",
                "glass": "glass"
              }
            },
            "size": {
              "value": "md",
              "options": {
                "sm": "sm",
                "md": "md",
                "lg": "lg"
              }
            },
            "shape": {
              "value": "rounded",
              "options": {
                "rounded": "rounded",
                "pill": "pill",
                "sharp": "sharp"
              }
            },
            "elevation": {
              "value": "raised",
              "options": {
                "raised": "raised",
                "floating": "floating"
              }
            },
            "targetWidth": {
              "value": 85,
              "max": 100,
              "min": 0,
              "step": 1,
              "unit": "%"
            }
          }
        }
      }
    },
    {
      "name": "demo-layouts-parallax-reveal-section",
      "type": "registry:ui",
      "dependencies": [],
      "registryDependencies": [
        "@azemmur/layouts-parallax-reveal-section"
      ],
      "files": [
        {
          "path": "registry/demo/layouts/parallax-reveal-section/index.tsx",
          "type": "registry:ui",
          "target": "components/azemmur/demo/layouts/parallax-reveal-section.tsx"
        }
      ],
      "meta": {
        "demoProps": {
          "ParallaxRevealSection": {
            "intent": {
              "value": "neutral",
              "options": {
                "neutral": "neutral",
                "primary": "primary",
                "accent": "accent",
                "secondary": "secondary",
                "success": "success",
                "info": "info",
                "warning": "warning",
                "error": "error"
              }
            },
            "shape": {
              "value": "rounded",
              "options": {
                "rounded": "rounded",
                "sharp": "sharp"
              }
            }
          }
        }
      }
    },
    {
      "name": "hooks-use-focus-trap",
      "type": "registry:hook",
      "title": "useFocusTrap",
      "description": "A hook to trap focus within a container element for accessibility.",
      "dependencies": [],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/hooks/use-focus-trap/index.ts",
          "type": "registry:hook",
          "target": "hooks/azemmur/use-focus-trap.ts"
        }
      ]
    },
    {
      "name": "hooks-use-is-mobile",
      "type": "registry:hook",
      "title": "useIsMobile",
      "description": "A hook to detect whether the current viewport is considered mobile.",
      "dependencies": [],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/hooks/use-is-mobile/index.ts",
          "type": "registry:hook",
          "target": "hooks/azemmur/use-is-mobile.ts"
        }
      ]
    },
    {
      "name": "hooks-use-key-actions",
      "type": "registry:hook",
      "title": "useKeyActions",
      "description": "A hook for handling keyboard actions with customizable key bindings and modifiers.",
      "dependencies": [],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/hooks/use-key-actions/index.ts",
          "type": "registry:hook",
          "target": "hooks/azemmur/use-key-actions.ts"
        }
      ]
    },
    {
      "name": "hooks-use-merged-refs",
      "type": "registry:hook",
      "title": "useMergeRefs",
      "description": "A hook for merging multiple refs into a single stable callback ref.",
      "dependencies": [],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/hooks/use-merged-refs/index.ts",
          "type": "registry:hook",
          "target": "hooks/azemmur/use-merged-refs.ts"
        }
      ]
    },
    {
      "name": "hooks-use-pinch-zoom",
      "type": "registry:hook",
      "title": "usePinchZoom",
      "description": "A hook to handle pinch-to-zoom gestures on touch devices.",
      "dependencies": [],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/hooks/use-pinch-zoom/index.ts",
          "type": "registry:hook",
          "target": "hooks/azemmur/use-pinch-zoom.ts"
        }
      ]
    },
    {
      "name": "layouts-floating-header",
      "type": "registry:ui",
      "title": "Floating Header",
      "description": "A scroll-driven floating header that morphs width, radius, and elevation as the user scrolls.",
      "dependencies": [
        "class-variance-authority",
        "motion"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/layouts/floating-header/index.tsx",
          "type": "registry:ui",
          "target": "layouts/azemmur/floating-header.tsx"
        }
      ]
    },
    {
      "name": "layouts-parallax-reveal-section",
      "type": "registry:ui",
      "title": "Parallax Reveal Section",
      "description": "A two-panel parallax layout where a sticky hero sits behind a reveal section that slides over it on scroll.",
      "dependencies": [
        "class-variance-authority"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/layouts/parallax-reveal-section/index.tsx",
          "type": "registry:ui",
          "target": "layouts/azemmur/parallax-reveal-section.tsx"
        }
      ]
    }
  ]
}