import * as React from 'react'; import { pathToFileURL } from 'url'; import { Link, supportsHyperlinks, Text } from '@anthropic/ink'; import { getStoredImagePath } from '../utils/imageStore.js'; import type { Theme } from '../utils/theme.js'; type Props = { imageId: number; backgroundColor?: keyof Theme; isSelected?: boolean; }; /** * Renders an image reference like [Image #1] as a clickable link. * When clicked, opens the stored image file in the default viewer. * * Falls back to styled text if: * - Terminal doesn't support hyperlinks * - Image file is not found in the store */ export function ClickableImageRef({ imageId, backgroundColor, isSelected = false }: Props): React.ReactNode { const imagePath = getStoredImagePath(imageId); const displayText = `[Image #${imageId}]`; // If we have a stored image and terminal supports hyperlinks, make it clickable if (imagePath && supportsHyperlinks()) { const fileUrl = pathToFileURL(imagePath).href; return ( {displayText} } > {displayText} ); } // Fallback: styled but not clickable return ( {displayText} ); }