import React, { useState } from 'react'; import { Image, Modal, Pressable, Text, View } from 'react-native'; import { X } from 'lucide-react-native'; import { toolWidgetStyles } from './toolWidgetStyles'; export type ImageGridItem = { label?: string; url: string; }; /** * Grid + lightbox for media-producing tools (screenshots, generated images). * send_image intentionally keeps its richer dedicated gallery in ToolCallSummary. */ export function ImageGrid({ images }: { images: ImageGridItem[] }) { const [activeIndex, setActiveIndex] = useState(null); if (images.length === 0) return null; const active = activeIndex != null ? images[activeIndex] : null; const isSingle = images.length === 1; return ( {isSingle ? ( setActiveIndex(0)} imageStyle={toolWidgetStyles.imageGridSingleImage} tileStyle={toolWidgetStyles.imageGridSingle} /> ) : ( {images.map((image, index) => ( setActiveIndex(index)} tileStyle={toolWidgetStyles.imageGridTile} /> ))} )} setActiveIndex(null)} transparent visible={active !== null} > setActiveIndex(null)} style={toolWidgetStyles.imageLightboxBackdrop}> {active ? ( ) : null} setActiveIndex(null)} style={toolWidgetStyles.imageLightboxClose} > ); } function ImageCell({ image, imageStyle, onPress, tileStyle, }: { image: ImageGridItem; imageStyle: object; onPress: () => void; tileStyle: object; }) { return ( {image.label ? ( {image.label} ) : null} ); }