'use client'; import { clsx } from 'clsx/lite'; import SiteGrid from '@/components/SiteGrid'; import AdminPhotosTable from '@/admin/AdminPhotosTable'; import AdminPhotosTableInfinite from '@/admin/AdminPhotosTableInfinite'; import PathLoaderButton from '@/components/primitives/PathLoaderButton'; import { PATH_ADMIN_OUTDATED } from '@/app/paths'; import { Photo } from '@/photo'; import { StorageListResponse } from '@/platforms/storage'; import { LiaBroomSolid } from 'react-icons/lia'; import AdminUploadsTable from './AdminUploadsTable'; import { Timezone } from '@/utility/timezone'; import { useAppState } from '@/state/AppState'; import PhotoUploadWithStatus from '@/photo/PhotoUploadWithStatus'; export default function AdminPhotosClient({ photos, photosCount, photosCountOutdated, blobPhotoUrls, shouldResize, hasAiTextGeneration, onLastUpload, infiniteScrollInitial, infiniteScrollMultiple, timezone, }: { photos: Photo[] photosCount: number photosCountOutdated: number blobPhotoUrls: StorageListResponse shouldResize: boolean hasAiTextGeneration: boolean onLastUpload: () => Promise infiniteScrollInitial: number infiniteScrollMultiple: number timezone: Timezone }) { const { uploadState: { isUploading } } = useAppState(); return (
{photosCountOutdated > 0 && } title={`${photosCountOutdated} Outdated Photos`} className={clsx( 'text-blue-600 dark:text-blue-400', 'border border-blue-200 dark:border-blue-800/60', 'active:bg-blue-50 dark:active:bg-blue-950/50', 'disabled:bg-blue-50 dark:disabled:bg-blue-950/50', isUploading && 'hidden md:inline-flex', )} spinnerColor="text" spinnerClassName="text-blue-200 dark:text-blue-600/40" hideTextOnMobile={false} > {photosCountOutdated} }
{blobPhotoUrls.length > 0 &&
Photo Blobs ({blobPhotoUrls.length})
} {/* Use custom spacing to address gap/space-y compatibility quirks */}
{photosCount > photos.length && }
} /> ); }