Skip to content

Commit cc19e84

Browse files
committed
Add fetchPriority to ImageLoaded and use it in Hero
1 parent a09c97d commit cc19e84

File tree

3 files changed

+10
-4
lines changed

3 files changed

+10
-4
lines changed

src/app/conf/2025/components/image-loaded.tsx

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,14 @@ const _cache = new Map<string, HTMLImageElement>()
77

88
export interface ImageLoadedProps extends React.HTMLAttributes<HTMLDivElement> {
99
image: string | StaticImageData
10+
fetchPriority?: "high" | "low" | "auto"
1011
}
1112

12-
export function ImageLoaded({ image, ...rest }: ImageLoadedProps) {
13+
export function ImageLoaded({
14+
image,
15+
fetchPriority = "auto",
16+
...rest
17+
}: ImageLoadedProps) {
1318
const [loaded, setLoaded] = useState(false)
1419
const src = typeof image === "string" ? image : image.src
1520

@@ -27,10 +32,11 @@ export function ImageLoaded({ image, ...rest }: ImageLoadedProps) {
2732
} else {
2833
img = new Image()
2934
img.src = src
35+
img.fetchPriority = fetchPriority
3036
img.addEventListener("load", () => setLoaded(true))
3137
_cache.set(src, img)
3238
}
33-
}, [src])
39+
}, [src, fetchPriority])
3440

3541
return <div data-loaded={alreadyLoaded || loaded} {...rest} />
3642
}

src/components/index-page/hero.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ function HeroStripes() {
4444
<div className="pointer-events-none relative overflow-hidden max-lg:h-[210px]">
4545
<ImageLoaded
4646
image={logoBlurred}
47+
fetchPriority="high"
4748
className="relative h-full bg-gradient-to-b from-pri-base to-pri-lighter opacity-0 transition-opacity duration-[1.5s] [mask-position:center_12%] [mask-size:110%] data-[loaded=true]:opacity-100 dark:to-pri-base sm:[mask-size:auto_300%] lg:[mask-position:7%_7%] lg:[mask-size:200%]"
4849
style={{
4950
maskImage: `url(${logoBlurred.src})`,

src/components/index-page/proven-solution/index.tsx

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -103,11 +103,11 @@ function ProvenSolutionCard({
103103
}
104104

105105
function Stripes() {
106-
// todo: rotate to top right corner on mobile
107106
return (
108107
<ImageLoaded
109108
role="presentation"
110109
image={blurBean}
110+
fetchPriority="low"
111111
// eslint-disable-next-line tailwindcss/no-unnecessary-arbitrary-value
112112
className="pointer-events-none absolute inset-0 opacity-0 transition-[translate] duration-[400ms] ease-linear [mask-position:center_calc(100%+65vw)] [mask-size:200%] data-[loaded=true]:opacity-100 max-lg:rotate-[180deg] max-lg:scale-x-[-1] lg:[mask-position:center_500px] lg:[mask-size:150%] xl:translate-y-1/2 xl:[mask-position:center_top] xl:max-3xl:translate-y-[50%]"
113113
style={{
@@ -117,7 +117,6 @@ function Stripes() {
117117
WebkitMaskRepeat: "no-repeat",
118118
}}
119119
>
120-
{/* todo: ensure colors in dark mode are correct */}
121120
<StripesDecoration
122121
evenClassName="bg-[linear-gradient(180deg,hsl(var(--color-pri-light)/0.2)_20%,hsl(var(--color-pri-base))_150%)] dark:bg-[linear-gradient(180deg,hsl(var(--color-pri-base)/.9)_20%,hsl(var(--color-pri-darker))_150%)]"
123122
oddClassName="bg-[linear-gradient(180deg,hsl(var(--color-pri-light))_20%,hsl(var(--color-pri-lighter)/.9)_150%)] dark:bg-[linear-gradient(180deg,hsl(var(--color-pri-darker)/.9)_20%,hsl(var(--color-pri-base)/.8)_150%)]"

0 commit comments

Comments
 (0)