Hover Card
blode-ui/hover-cardFreeComponent
A popup card that appears when hovering over a trigger element.
Install it
npx shadcn@latest add https://raw.githubusercontent.com/mblode/blode-ui/main/public/r/hover-card.jsonSource
1"use client";23import { PreviewCard as HoverCardPrimitive } from "@base-ui/react/preview-card";4import * as React from "react";56import { cn } from "@/lib/utils";78const HoverCard = ({ ...props }: React.ComponentProps<typeof HoverCardPrimitive.Root>) => (9 <HoverCardPrimitive.Root data-slot="hover-card" {...props} />10);1112const HoverCardTrigger = ({13 asChild = false,14 children,15 ...props16}: React.ComponentProps<typeof HoverCardPrimitive.Trigger> & {17 asChild?: boolean;18}) => {19 const render =20 asChild && React.isValidElement(children) ? (children as React.ReactElement) : undefined;2122 return (23 <HoverCardPrimitive.Trigger data-slot="hover-card-trigger" render={render} {...props}>24 {asChild ? null : children}25 </HoverCardPrimitive.Trigger>26 );27};2829const HoverCardContent = ({30 asChild = false,31 children,32 className,33 align = "center",34 alignOffset = 0,35 side = "bottom",36 sideOffset = 4,37 ...props38}: React.ComponentProps<typeof HoverCardPrimitive.Popup> &39 Pick<40 React.ComponentProps<typeof HoverCardPrimitive.Positioner>,41 "align" | "alignOffset" | "side" | "sideOffset"42 > & {43 asChild?: boolean;44 }) => {45 const render =46 asChild && React.isValidElement(children) ? (children as React.ReactElement) : undefined;4748 return (49 <HoverCardPrimitive.Portal data-slot="hover-card-portal">50 <HoverCardPrimitive.Positioner51 align={align}52 alignOffset={alignOffset}53 className="isolate z-50"54 side={side}55 sideOffset={sideOffset}56 >57 <HoverCardPrimitive.Popup58 className={cn(59 "data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 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 z-50 w-72 origin-(--transform-origin) rounded-md border bg-popover p-4 text-popover-foreground shadow-soft outline-hidden data-closed:animate-out data-open:animate-in",60 className,61 )}62 data-slot="hover-card-content"63 render={render}64 {...props}65 >66 {asChild ? null : children}67 </HoverCardPrimitive.Popup>68 </HoverCardPrimitive.Positioner>69 </HoverCardPrimitive.Portal>70 );71};7273export { HoverCard, HoverCardTrigger, HoverCardContent };
What it pulls in
npm packages
Files it writes
More from blode/ui
All 85 items| Component | Registry | Kind | Access | Installs | Command |
|---|---|---|---|---|---|
| Accordionaccordion | blode/ui | Components | Free | 2 deps | |
| Alertalert | blode/ui | Components | Free | no deps | |
| Alert Dialogalert-dialog | blode/ui | Components | Free | 1 dep | |
| Ask User Questionsask-user-questions | blode/ui | Components | Free | 1 dep | |
| Aspect Ratioaspect-ratio | blode/ui | Components | Free | 1 dep | |
| Attachmentattachment | blode/ui | Components | Free | 1 dep | |
| Autocompleteautocomplete | blode/ui | Components | Free | 1 dep | |
| Avataravatar | blode/ui | Components | Free | 1 dep |
