fix: shrink result thumbnails

This commit is contained in:
2026-05-19 20:52:34 +08:00
parent 1d7166ef8a
commit 4c9af4eb14

View File

@@ -9,6 +9,19 @@ export type ResultGridProps = {
onAction: (imageId: string, action: 'select' | 'reject' | 'reset') => void;
};
function cssRatioToNumber(ratio: string | undefined) {
if (!ratio) return 1;
const [w, h] = ratio.split('/').map(part => Number(part.trim()));
return w && h ? w / h : 1;
}
function thumbnailWidth(ratio: string | undefined) {
const value = cssRatioToNumber(ratio);
if (value > 1.35) return 'min(100%, 220px)';
if (value < 0.8) return 'min(100%, 92px)';
return 'min(100%, 156px)';
}
export default function ResultGrid({ images, onAction }: ResultGridProps) {
const [ratios, setRatios] = useState<Record<string, string>>({});
@@ -58,7 +71,7 @@ export default function ResultGrid({ images, onAction }: ResultGridProps) {
<div
key={img.id}
className={`tile group ${img.status === 'selected' ? 'tile-selected' : ''} ${img.status === 'rejected' ? 'tile-rejected' : ''}`}
style={{ aspectRatio: ratios[img.id] ?? '1 / 1' }}
style={{ aspectRatio: ratios[img.id] ?? '1 / 1', width: thumbnailWidth(ratios[img.id]), maxWidth: '100%' }}
>
<HoverImagePreview
src={img.url}