KDS
Utilities

Image

Render de imagem gerada pelo modelo — base64 + mediaType, sem mais.

Overview

Image é um wrapper minimalista sobre <img> que aceita o formato Experimental_GeneratedImage da AI SDK — base64 + mediaType + uint8Array. Renderiza inline com radius e object-cover por default.

Use quando o modelo (DALL-E, Stable Diffusion, Gemini Image, etc) retorna uma imagem como parte da resposta.

Preview
Imagem 10×10 base64 renderizada.
Imagem azul gerada

Anatomy

<Image base64 mediaType uint8Array alt />

Usage

import { Image } from "@kalvner/kds/ai/image";

const generatedImage = await generateImage({ prompt: "..." });
// generatedImage: { base64, mediaType, uint8Array }

<Image
  base64={generatedImage.base64}
  mediaType={generatedImage.mediaType}
  uint8Array={generatedImage.uint8Array}
  alt="Imagem gerada do prompt"
/>

Props

PropTipoDefaultDescrição
base64stringBase64 da imagem (sem data: prefix).
mediaTypestringMIME type (image/png, image/jpeg, ...).
uint8ArrayUint8ArrayBytes (não usado no render — está no tipo da AI SDK).
altstringAlt text — sempre forneça.
classNamestring'h-auto max-w-full overflow-hidden rounded-md'Override.

Aceita ComponentProps<"img"> (todos os atributos HTML válidos).

Subcomponents

Componente único — sem subcomponentes.

States

Sem estados próprios. Loading/error states do <img> HTML são herdados — você pode adicionar via CSS:

<Image
  base64={data}
  mediaType="image/png"
  className="aspect-square bg-muted [&[loading]]:opacity-50"
  alt="..."
/>

Composition

Em Message

<Message from="assistant">
  <MessageContent>
    <Image base64={img.base64} mediaType={img.mediaType} alt="Logo gerada" />
  </MessageContent>
</Message>

Em Artifact

<Artifact>
  <ArtifactHeader>
    <ArtifactTitle>logo.png</ArtifactTitle>
  </ArtifactHeader>
  <ArtifactContent>
    <Image base64={img.base64} mediaType={img.mediaType} alt="Logo" />
  </ArtifactContent>
</Artifact>

When to use

  • Imagem gerada por modelo (DALL-E, etc).
  • Imagem retornada como base64 de qualquer fonte.

When not to use

  • Imagem por URL — use <img> direto ou <Image> do Next.js.
  • Avatar de user — use Avatar.

Best practices

  • Sempre forneça alt. Imagens geradas têm contexto que o user precisa entender mesmo sem ver.
  • Prefira PNG/WebP. JPEG perde qualidade em imagens com texto.
  • Lazy load se em lista. Adicione loading="lazy" no className/props.

Accessibility

ConcernComportamento
Alt textObrigatório — passe sempre.
DecorativeUse alt="" se decorativa (raro pra gen images).

On this page