import { ImagesIcon, PlusIcon } from "lucide-react"; import { useState } from "react"; import Lightbox from "yet-another-react-lightbox"; import "yet-another-react-lightbox/styles.css"; import { Message } from "./ChatWindow"; type Image = { url: string; img_src: string; title: string; }; const SearchImages = ({ query, chat_history }: { query: string; chat_history: Message[] }) => { const [images, setImages] = useState(null); const [loading, setLoading] = useState(false); const [open, setOpen] = useState(false); // eslint-disable-next-line @typescript-eslint/no-explicit-any const [slides, setSlides] = useState([]); return ( <> {!loading && images === null && ( )} {loading && (
{Array.from({ length: 4 }).map((_, index) => (
))}
)} {images !== null && images.length > 0 && ( <>
{images.length > 4 ? images.slice(0, 3).map((image, index) => ( { setOpen(true); setSlides([slides[index], ...slides.slice(0, index), ...slides.slice(index + 1)]); }} key={index} src={image.img_src} alt={image.title} className="h-full w-full aspect-video object-cover rounded-lg transition duration-200 active:scale-95 hover:scale-[1.02] cursor-zoom-in" /> )) : images.map((image, index) => ( { setOpen(true); setSlides([slides[index], ...slides.slice(0, index), ...slides.slice(index + 1)]); }} key={index} src={image.img_src} alt={image.title} className="h-full w-full aspect-video object-cover rounded-lg transition duration-200 active:scale-95 hover:scale-[1.02] cursor-zoom-in" /> ))} {images.length > 4 && ( )}
setOpen(false)} slides={slides} /> )} ); }; export default SearchImages;