import { ChevronLeft, ChevronRight, ImageOff, Loader2, Plus, RefreshCw, Search, Upload, X } from "lucide-react"; import { useEffect, useMemo, useState } from "react"; import { createPortal } from "react-dom"; import { api, errorMessage } from "../api"; import { ActionButton } from "../components/ActionButton"; import { Alert, Badge, EmptyRow, Metric, PageFrame, QueryPanel } from "../components/ui"; import { GIF_CATALOG_CATEGORIES, type GifCatalogRow } from "../types"; type GifPageSize = 10 | 20 | 50 | 100 | "all"; // One list-row preview cell. The backend always stores a plain H.264 MP4 (see // files.Service.AdminUploadGifMaterial), so this is just a small looping //