ImageGen

AI image generation component with full lifecycle support: idle, pending, generating, done, and error. Features shimmer placeholders, progress bars, blur-reveal transitions, and a toolbar for download and retry actions.

ImageGen — Live Demo
ImageGen — All 5 States

Import

tsx
import { ImageGen } from "@arc-lo/ui";

Basic usage

tsx
<ImageGen.Root
  state={state}
  src={imageSrc}
  alt="AI-generated image"
>
  <ImageGen.Placeholder />
  <ImageGen.Preview />
  <ImageGen.Progress progress={progress} />
  <ImageGen.ErrorFallback />
</ImageGen.Root>

With all parts

tsx
<ImageGen.Root
  state={state}
  src={imageSrc}
  alt="Generated landscape"
  aspectRatio="16/9"
  prompt="A serene mountain landscape at sunset"
  blurReveal
  onRetry={() => regenerate()}
  onDownload={() => saveImage()}
>
  <ImageGen.Placeholder />
  <ImageGen.Preview />
  <ImageGen.Overlay />
  <ImageGen.Progress progress={progress} />
  <ImageGen.ErrorFallback message="Generation failed. Please try again." />
  <ImageGen.Toolbar>
    <ImageGen.Download />
    <ImageGen.Retry />
  </ImageGen.Toolbar>
</ImageGen.Root>

States

StateDescriptionVisible parts
idleNo generation startedPlaceholder
pendingWaiting for generation to beginPlaceholder, Overlay, Progress
generatingImage is being generatedPreview (blurred), Overlay, Progress
doneGeneration completePreview (clear), Toolbar
errorGeneration failedErrorFallback

Props

Root
PropTypeDefaultDescription
stateImageGenStateCurrent generation state
srcstring | nullImage source URL
altstringAlt text for the generated image
aspectRatiostring"1/1"CSS aspect ratio for the image container
promptstringThe generation prompt (for context)
blurRevealbooleantrueAnimate blur-to-clear transition on completion
onRetry() => voidCalled when user clicks retry
onDownload() => voidCalled when user clicks download