cambio-image
delta-components/cambio-imageFreeComponent
delta-components publishes no description for this item.
Live preview
live · rendered by the registry
Rendered by delta-components on their own page — this is the component running, not a screenshot of it.Install it
npx shadcn@latest add https://deltacomponents.dev/r/cambio-image.jsonSource
1"use client"23import { useEffect, useRef, useState } from "react"4import { Cambio } from "cambio"5import { Maximize2, X } from "lucide-react"6import { createPortal } from "react-dom"78import { cn } from "@/lib/utils"910function CloseIcon() {11 return (12 <svg13 viewBox="0 0 24 24"14 fill="none"15 stroke="currentColor"16 strokeWidth="2"17 strokeLinecap="round"18 strokeLinejoin="round"19 className="size-4"20 aria-hidden="true"21 >22 <path d="M18 6 6 18" />23 <path d="m6 6 12 12" />24 </svg>25 )26}2728const closeButtonClasses = cn(29 "inline-flex size-9 items-center justify-center rounded-full",30 "bg-secondary text-secondary-foreground shadow-xs transition-colors",31 "hover:bg-secondary/80 active:bg-secondary/70",32 "focus-visible:ring-ring focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-none",33 "disabled:pointer-events-none disabled:opacity-50",34 "cursor-pointer"35)3637type MotionPreset = "snappy" | "smooth" | "bouncy" | "reduced"3839interface CambioImageProps {40 src: string41 alt: string42 width: number43 height: number44 loading?: "lazy" | "eager"45 index?: number46 motion?:47 | MotionPreset48 | {49 trigger?: MotionPreset50 popup?: MotionPreset51 backdrop?: MotionPreset52 }53 dismissible?: boolean54 className?: string55 draggable?: boolean56 enableInitialAnimation?: boolean57 dismissOnImageClick?: boolean58 dismissOnScroll?: boolean59 showExpandIcon?: boolean60 iconsOnlyMode?: boolean61 /**62 * Renders a close button when the image is focused. On desktop the button63 * sits in the top-right of the image; on mobile it floats at the viewport's64 * top-right (outside the image).65 *66 * When enabled, `draggable` is coerced to `false` so mobile users can pinch67 * to zoom the focused image.68 */69 controls?: boolean70}7172export function CambioImage({73 src,74 alt,75 width,76 height,77 loading = "lazy",78 index = 0,79 motion = "snappy",80 dismissible = true,81 className,82 draggable = false,83 enableInitialAnimation = true,84 dismissOnImageClick = false,85 dismissOnScroll = false,86 showExpandIcon = false,87 iconsOnlyMode = false,88 controls = false,89}: CambioImageProps) {90 const effectiveDraggable = controls ? false : draggable91 const [isVisible, setIsVisible] = useState(false)92 const [open, setOpen] = useState(false)93 const [isHovered, setIsHovered] = useState(false)94 const [mounted, setMounted] = useState(false)95 const ref = useRef<HTMLDivElement>(null)9697// … truncated
What it pulls in
npm packages
Files it writes
More from delta-components
All 93 items| Component | Registry | Kind | Access | Installs | Command |
|---|---|---|---|---|---|
| admonitionadmonition | delta-components | Components | Free | 1 dep | |
| card-deckcard-deck | delta-components | Components | Free | 3 deps | |
| chatchat | delta-components | Components | Free | 3 deps | |
| code-blockcode-block | delta-components | Components | Free | 3 deps | |
| code-block-iconscode-block-icons | delta-components | Components | Free | no deps | |
| copy-buttoncopy-button | delta-components | Components | Free | 1 dep | |
| input-otpinput-otp | delta-components | Components | Free | 1 dep | |
| mapbox-pointermapbox-pointer | delta-components | Components | Free | no deps |
