Merge branch 'main' into admin-info

This commit is contained in:
Sam Becker 2025-02-10 19:52:21 -06:00
commit 650320504f
5 changed files with 30 additions and 32 deletions

View File

@ -49,7 +49,7 @@ export default function AdminUploadsTable({
aspectRatio={3.0 / 2.0} aspectRatio={3.0 / 2.0}
className={clsx( className={clsx(
'rounded-[3px] overflow-hidden', 'rounded-[3px] overflow-hidden',
'border-subtle', 'border-main',
)} )}
/> />
</div> </div>

View File

@ -21,32 +21,27 @@ export default function useImageZoomControls(
useMetaThemeColor({ colorLight }); useMetaThemeColor({ colorLight });
const open = useCallback(() => { const open = useCallback(() =>
viewerRef.current?.show(); viewerRef.current?.show(), []);
}, [viewerRef]);
const close = useCallback(() => { const close = useCallback(() =>
viewerRef.current?.hide(); viewerRef.current?.hide(), []);
}, [viewerRef]);
const zoomTo = useCallback((zoomLevel = 1) => { const zoomTo = useCallback((zoomLevel = 1) =>
viewerRef.current?.zoomTo(zoomLevel); viewerRef.current?.zoomTo(zoomLevel), []);
}, [viewerRef]);
const reset = useCallback(() => { const reset = useCallback(() => {
setZoomLevel(1); setZoomLevel(1);
viewerRef.current?.reset(); viewerRef.current?.reset();
}, [viewerRef]); }, []);
// On 'F' keydown, toggle fullscreen // On 'F' keydown, toggle fullscreen
const handleKeyDown = useCallback(() => { const handleKeyDown = useCallback(() => {
if (shouldExpandOnFKeydown) { if (shouldExpandOnFKeydown) { open(); }
viewerRef.current?.show(); }, [shouldExpandOnFKeydown, open]);
}
}, [shouldExpandOnFKeydown]);
useKeydownHandler(handleKeyDown, ['F']); useKeydownHandler(handleKeyDown, ['F']);
useEffect(() => { const initialize = useCallback(() => {
if (imageRef.current && isEnabled) { if (imageRef.current && isEnabled) {
viewerRef.current = new Viewer(imageRef.current, { viewerRef.current = new Viewer(imageRef.current, {
navbar: false, navbar: false,
@ -61,6 +56,7 @@ export default function useImageZoomControls(
(target as any).viewer.viewer as HTMLDivElement; (target as any).viewer.viewer as HTMLDivElement;
}, },
url: (image: HTMLImageElement) => { url: (image: HTMLImageElement) => {
// Addresses Safari bug where images don't load
image.loading = 'eager'; image.loading = 'eager';
return image.src; return image.src;
}, },
@ -69,9 +65,8 @@ export default function useImageZoomControls(
setColorLight('#000'); setColorLight('#000');
}, },
hide: () => { hide: () => {
setTimeout(() => { // Optimizes Safari status bar animation
setColorLight(undefined); setTimeout(() => setColorLight(undefined), 300);
}, 300);
}, },
hidden: () => { hidden: () => {
setShouldRespondToKeyboardCommands?.(true); setShouldRespondToKeyboardCommands?.(true);
@ -80,20 +75,26 @@ export default function useImageZoomControls(
setZoomLevel(ratio); setZoomLevel(ratio);
}, },
}); });
return () => {
viewerRef.current?.destroy();
viewerRef.current = null;
};
} }
}, [ }, [
imageRef, imageRef,
isEnabled, isEnabled,
zoomTo,
setShouldRespondToKeyboardCommands, setShouldRespondToKeyboardCommands,
]); ]);
const cleanUp = useCallback(() => {
viewerRef.current?.destroy();
viewerRef.current = null;
}, []);
useEffect(() => {
initialize();
return cleanUp;
}, [initialize, cleanUp]);
return { return {
initialize,
cleanUp,
open, open,
close, close,
reset, reset,

View File

@ -25,7 +25,7 @@ export default function PhotoLightbox({
return ( return (
<div className={clsx( <div className={clsx(
'border dark:border-gray-800 p-1.5 lg:p-2 rounded-md', 'border-main p-1.5 lg:p-2 rounded-md',
'bg-gray-50 dark:bg-gray-950', 'bg-gray-50 dark:bg-gray-950',
)}> )}>
<PhotoGrid <PhotoGrid

View File

@ -43,7 +43,7 @@ export default function PhotoSmall({
selected && 'brightness-50', selected && 'brightness-50',
'min-w-[50px]', 'min-w-[50px]',
'rounded-[3px] overflow-hidden', 'rounded-[3px] overflow-hidden',
'border-subtle', 'border-main',
)} )}
prefetch={prefetch} prefetch={prefetch}
> >

View File

@ -121,11 +121,8 @@
} }
/* Border */ /* Border */
@utility border-main { @utility border-main {
@apply border-gray-200 dark:border-gray-700
}
@utility border-subtle {
@apply @apply
border border-gray-200 dark:border-gray-800 border border-gray-200 dark:border-gray-700
} }
/* Background */ /* Background */
@utility bg-main { @utility bg-main {
@ -304,7 +301,7 @@
@layer components { @layer components {
.component-surface { .component-surface {
@apply @apply
bg-content border border-main bg-content border-main
rounded-lg rounded-lg
} }
} }