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