Skip to content

Commit 4d08c4f

Browse files
committed
refactor: ParallaxImage lazy loading
1 parent 4f873ad commit 4d08c4f

File tree

3 files changed

+27
-1
lines changed

3 files changed

+27
-1
lines changed

src/components/Image/ParallaxImage.tsx renamed to src/components/Image/ParallaxImage/client.tsx

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ import { ImageProps as NextImageProps } from "next/image"
55

66
import { Image } from "@/components/Image"
77

8+
import { cn } from "@/lib/utils/cn"
9+
810
import { useEventListener } from "@/hooks/useEventListener"
911
import { usePrefersReducedMotion } from "@/hooks/usePrefersReducedMotion"
1012

@@ -28,7 +30,14 @@ const ParallaxImage = ({ src, alt, className }: ParallaxImageProps) => {
2830
}
2931
const style = prefersReducedMotion ? {} : transform
3032

31-
return <Image src={src} alt={alt} className={className} style={style} />
33+
return (
34+
<Image
35+
src={src}
36+
alt={alt}
37+
className={cn("animate-fade-in", className)}
38+
style={style}
39+
/>
40+
)
3241
}
3342

3443
export default ParallaxImage
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import { Spinner } from "@/components/ui/spinner"
2+
3+
const Loading = () => (
4+
<div className="absolute inset-0 grid animate-pulse-light place-items-center">
5+
<Spinner className="text-6xl text-accent-b" />
6+
</div>
7+
)
8+
9+
export default Loading
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
import dynamic from "next/dynamic"
2+
3+
import Loading from "./loading"
4+
5+
export default dynamic(() => import("./client"), {
6+
ssr: false,
7+
loading: Loading,
8+
})

0 commit comments

Comments
 (0)