fix(frontend): use next/image to serve login page images

re #1207
This commit is contained in:
sct
2021-03-17 23:35:36 +00:00
parent d226fc79b8
commit cbf45196b0
2 changed files with 25 additions and 2 deletions

View File

@@ -4,11 +4,13 @@ import React, {
HTMLAttributes, HTMLAttributes,
ForwardRefRenderFunction, ForwardRefRenderFunction,
} from 'react'; } from 'react';
import Image from 'next/image';
interface ImageFaderProps extends HTMLAttributes<HTMLDivElement> { interface ImageFaderProps extends HTMLAttributes<HTMLDivElement> {
backgroundImages: string[]; backgroundImages: string[];
rotationSpeed?: number; rotationSpeed?: number;
isDarker?: boolean; isDarker?: boolean;
useImage?: boolean;
} }
const DEFAULT_ROTATION_SPEED = 6000; const DEFAULT_ROTATION_SPEED = 6000;
@@ -18,6 +20,7 @@ const ImageFader: ForwardRefRenderFunction<HTMLDivElement, ImageFaderProps> = (
backgroundImages, backgroundImages,
rotationSpeed = DEFAULT_ROTATION_SPEED, rotationSpeed = DEFAULT_ROTATION_SPEED,
isDarker, isDarker,
useImage,
...props ...props
}, },
ref ref
@@ -52,10 +55,29 @@ const ImageFader: ForwardRefRenderFunction<HTMLDivElement, ImageFaderProps> = (
i === activeIndex ? 'opacity-100' : 'opacity-0' i === activeIndex ? 'opacity-100' : 'opacity-0'
}`} }`}
style={{ style={{
backgroundImage: `${gradient}, url(${imageUrl})`, backgroundImage: !useImage
? `${gradient}, url(${imageUrl})`
: undefined,
}} }}
{...props} {...props}
/> >
{useImage && (
<>
<Image
className="absolute inset-0 w-full h-full"
alt=""
src={imageUrl}
layout="fill"
objectFit="cover"
quality={100}
/>
<div
className="absolute inset-0"
style={{ backgroundImage: gradient }}
/>
</>
)}
</div>
))} ))}
</div> </div>
); );

View File

@@ -63,6 +63,7 @@ const Login: React.FC = () => {
<div className="relative flex flex-col min-h-screen bg-gray-900 py-14"> <div className="relative flex flex-col min-h-screen bg-gray-900 py-14">
<PageTitle title={intl.formatMessage(messages.signin)} /> <PageTitle title={intl.formatMessage(messages.signin)} />
<ImageFader <ImageFader
useImage
backgroundImages={[ backgroundImages={[
'/images/rotate1.jpg', '/images/rotate1.jpg',
'/images/rotate2.jpg', '/images/rotate2.jpg',