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} }