import * as React from 'react'
import { pathToFileURL } from 'url'
import { Box, Link, supportsHyperlinks, Text } from '@anthropic/ink'
import { getStoredImagePath } from '../../utils/imageStore.js'
import { MessageResponse } from '../MessageResponse.js'
type Props = {
imageId?: number
addMargin?: boolean
}
/**
* Renders an image attachment in user messages.
* Shows as a clickable link if the image is stored and terminal supports hyperlinks.
* Uses MessageResponse styling to appear connected to the message above,
* unless addMargin is true (image starts a new user turn without text).
*/
export function UserImageMessage({
imageId,
addMargin,
}: Props): React.ReactNode {
const label = imageId ? `[Image #${imageId}]` : '[Image]'
const imagePath = imageId ? getStoredImagePath(imageId) : null
const content =
imagePath && supportsHyperlinks() ? (
{label}
) : (
{label}
)
// When this image starts a new user turn (no text before it),
// show with margin instead of the connected line style
if (addMargin) {
return {content}
}
return {content}
}