{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "hover-card",
  "title": "Hover Card",
  "description": "Hover Card from the Get IT Done design system.",
  "dependencies": [
    "@radix-ui/react-hover-card@^1.2.1"
  ],
  "registryDependencies": [
    "https://zero-design.itdone.de/r/labels-context.json",
    "https://zero-design.itdone.de/r/recipes.json",
    "https://zero-design.itdone.de/r/utils.json",
    "https://zero-design.itdone.de/r/theme.json"
  ],
  "files": [
    {
      "path": "registry/ui/hover-card.tsx",
      "content": "'use client';\n\nimport * as HoverCardPrimitive from '@radix-ui/react-hover-card';\nimport * as React from 'react';\n\nimport { overlayMotion, overlaySurface, overlaySurfaceZero } from '@/lib/recipes';\nimport { cn } from '@/lib/utils';\nimport { usePreset } from '@/components/ui/labels-context';\n\nconst HoverCard = HoverCardPrimitive.Root;\n\nconst HoverCardTrigger = HoverCardPrimitive.Trigger;\n\ninterface HoverCardContentProps extends React.ComponentPropsWithoutRef<typeof HoverCardPrimitive.Content> {\n  // Dims the page behind the card while it is open. The scrim lets pointer events through, so the card still closes when the pointer leaves.\n  backdrop?: boolean;\n}\n\nconst HoverCardContent = React.forwardRef<React.ElementRef<typeof HoverCardPrimitive.Content>, HoverCardContentProps>(\n  ({ className, align = 'center', sideOffset = 4, backdrop = false, ...props }, ref) => {\n    const zero = usePreset() === 'zero';\n    const content = (\n      <HoverCardPrimitive.Content\n        ref={ref}\n        align={align}\n        sideOffset={sideOffset}\n        className={cn(\n          'z-dropdown outline-none',\n          zero ? 'p-4 typography-ui' : 'p-2 !text-clamp-small !leading-clamp-small',\n          overlaySurface,\n          zero && overlaySurfaceZero,\n          overlayMotion,\n          'data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2',\n          className,\n        )}\n        {...props}\n      />\n    );\n    if (!backdrop) return content;\n    return (\n      <HoverCardPrimitive.Portal>\n        <div data-hover-card-layer=\"\">\n          <div\n            aria-hidden=\"true\"\n            data-hover-card-backdrop=\"\"\n            className={cn('pointer-events-none fixed inset-0 z-dialog animate-in fade-in-0 motion-reduce:animate-none', zero ? 'bg-overlay-scrim' : 'bg-overlay')}\n          />\n          {content}\n        </div>\n      </HoverCardPrimitive.Portal>\n    );\n  },\n);\nHoverCardContent.displayName = HoverCardPrimitive.Content.displayName;\n\nexport type { HoverCardContentProps };\nexport { HoverCard, HoverCardContent, HoverCardTrigger };\n",
      "type": "registry:ui"
    }
  ],
  "type": "registry:ui"
}