Image
prompt-kit/imageFreeComponent
A component for displaying images from base64 or Uint8Array data, with full accessibility and responsive styling. Perfect for AI-generated or user-uploaded images.
Live preview
live · rendered by the registry
Rendered by prompt-kit on their own page — this is the component running, not a screenshot of it.Install it
npx shadcn@latest add https://raw.githubusercontent.com/ibelick/prompt-kit/HEAD/public/c/image.jsonSource
1"use client"23import { cn } from "@/lib/utils"4import { useEffect, useState, type ImgHTMLAttributes } from "react"56export type GeneratedImageLike = {7 base64?: string8 uint8Array?: Uint8Array9 mediaType?: string10}1112export type ImageProps = GeneratedImageLike &13 Omit<ImgHTMLAttributes<HTMLImageElement>, "src"> & {14 alt: string15 }1617function getImageSrc({18 base64,19 mediaType,20}: Pick<GeneratedImageLike, "base64" | "mediaType">) {21 if (base64 && mediaType) {22 return `data:${mediaType};base64,${base64}`23 }24 return undefined25}2627export const Image = ({28 base64,29 uint8Array,30 mediaType = "image/png",31 className,32 alt,33 ...props34}: ImageProps) => {35 const [objectUrl, setObjectUrl] = useState<string | undefined>(undefined)3637 useEffect(() => {38 if (uint8Array && mediaType) {39 const blob = new Blob([uint8Array as BlobPart], { type: mediaType })40 const url = URL.createObjectURL(blob)41 setObjectUrl(url)42 return () => {43 URL.revokeObjectURL(url)44 }45 }46 setObjectUrl(undefined)47 return48 }, [uint8Array, mediaType])4950 const base64Src = getImageSrc({ base64, mediaType })51 const src = base64Src ?? objectUrl5253 if (!src) {54 return (55 <div56 aria-label={alt}57 role="img"58 className={cn(59 "h-auto max-w-full animate-pulse overflow-hidden rounded-md bg-gray-100 dark:bg-neutral-800",60 className61 )}62 {...props}63 />64 )65 }6667 return (68 <img69 src={src}70 alt={alt}71 className={cn("h-auto max-w-full overflow-hidden rounded-md", className)}72 role="img"73 {...props}74 />75 )76}
Files it writes
More from prompt-kit
All 23 items| Component | Registry | Kind | Access | Installs | Command |
|---|---|---|---|---|---|
| Chain Of Thoughtchain-of-thought | prompt-kit | Components | Free | 1 dep | |
| Chat Containerchat-container | prompt-kit | Components | Free | 1 dep | |
| Code Blockcode-block | prompt-kit | Components | Free | 1 dep | |
| Feedback Barfeedback-bar | prompt-kit | Components | Free | 1 dep | |
| File Uploadfile-upload | prompt-kit | Components | Free | no deps | |
| Jsx Previewjsx-preview | prompt-kit | Components | Free | 1 dep | |
| Loaderloader | prompt-kit | Components | Free | no deps | |
| Markdownmarkdown | prompt-kit | Components | Free | 5 deps · 2 files |
