Image Zoom
shadcncraft/image-zoomFreeComponent
Image zoom is a component that allows you to zoom in on an image.
Install it
npx shadcn@latest add https://shadcncraft.com/r/image-zoom.jsonSource
1"use client";23import Zoom, {4 Controlled,5 type ControlledProps,6 type UncontrolledProps,7} from "react-medium-image-zoom";89import { cn } from "@/lib/utils";1011const classDialog = cn(12 "[&::backdrop]:hidden",13 "[&[open]]:fixed [&[open]]:m-0 [&[open]]:h-dvh [&[open]]:max-h-none [&[open]]:w-dvw [&[open]]:max-w-none [&[open]]:overflow-hidden [&[open]]:border-0 [&[open]]:bg-transparent [&[open]]:p-0",14 "[&_[data-rmiz-modal-overlay]]:absolute [&_[data-rmiz-modal-overlay]]:inset-0 [&_[data-rmiz-modal-overlay]]:transition-all",15 '[&_[data-rmiz-modal-overlay="hidden"]]:bg-transparent',16 '[&_[data-rmiz-modal-overlay="visible"]]:bg-background/80 [&_[data-rmiz-modal-overlay="visible"]]:backdrop-blur-md',17 "[&_[data-rmiz-modal-content]]:relative [&_[data-rmiz-modal-content]]:size-full",18 "[&_[data-rmiz-modal-img]]:absolute [&_[data-rmiz-modal-img]]:origin-top-left [&_[data-rmiz-modal-img]]:cursor-zoom-out [&_[data-rmiz-modal-img]]:transition-transform",19 "motion-reduce:[&_[data-rmiz-modal-img]]:transition-none motion-reduce:[&_[data-rmiz-modal-overlay]]:transition-none"20);2122export type ImageZoomProps = UncontrolledProps & {23 className?: string;24 backdropClassName?: string;25};2627export const ImageZoom = ({ className, backdropClassName, ...props }: ImageZoomProps) => (28 <Wrapper className={className}>29 <Zoom classDialog={cn(classDialog, backdropClassName)} {...props} />30 </Wrapper>31);3233export type ImageZoomControlledProps = ControlledProps & {34 className?: string;35 backdropClassName?: string;36};3738export const ImageZoomControlled = ({39 className,40 backdropClassName,41 ...props42}: ImageZoomControlledProps) => (43 <Wrapper className={className}>44 <Controlled classDialog={cn(classDialog, backdropClassName)} {...props} />45 </Wrapper>46);4748const wrapperClasses = cn(49 "relative",50 // Ghost placeholder51 "[&_[data-rmiz-ghost]]:pointer-events-none [&_[data-rmiz-ghost]]:absolute",52 // Button base styles53 "[&_[data-rmiz-btn-zoom]]:m-0 [&_[data-rmiz-btn-zoom]]:size-10 [&_[data-rmiz-btn-zoom]]:touch-manipulation [&_[data-rmiz-btn-zoom]]:appearance-none [&_[data-rmiz-btn-zoom]]:rounded-[50%] [&_[data-rmiz-btn-zoom]]:border-none [&_[data-rmiz-btn-zoom]]:bg-foreground/70 [&_[data-rmiz-btn-zoom]]:p-2 [&_[data-rmiz-btn-zoom]]:text-background [&_[data-rmiz-btn-zoom]]:outline-offset-2",54// … truncated
What it pulls in
npm packages
Files it writes
More from shadcncraft
All 26 items| Component | Registry | Kind | Access | Installs | Command |
|---|---|---|---|---|---|
| Avatar Stackavatar-stack | shadcncraft | Components | Free | no deps | |
| Badgebadge | shadcncraft | Components | Free | no deps | |
| Featured Iconfeatured-icon | shadcncraft | Components | Free | no deps | |
| Marqueemarquee | shadcncraft | Components | Free | no deps | |
| Page Headingpage-heading | shadcncraft | Components | Free | no deps | |
| Placeholder Logoplaceholder-logo | shadcncraft | Components | Free | no deps | |
| Profile Cardprofile-card | shadcncraft | Components | Free | no deps | |
| Section Headingsection-heading | shadcncraft | Components | Free | no deps |
