File size: 818 Bytes
96bba34
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import { useEffect, useState } from "react";

const PHASES = ["day", "mid", "night"] as const;
const STEP_MS = 5 * 60 * 1000;

export default function DynamicBackdrop({ light }: { light: boolean }) {
  const [phase, setPhase] = useState(() => (light ? 0 : 2));

  useEffect(() => {
    setPhase(light ? 0 : 2);
  }, [light]);

  useEffect(() => {
    const id = setInterval(() => setPhase((current) => (current + 1) % PHASES.length), STEP_MS);
    return () => clearInterval(id);
  }, []);

  return (
    <div className="backdrop">
      {PHASES.map((name, index) => (
        <div
          key={name}
          className="backdrop__layer"
          style={{ backgroundImage: `url(/bg-${name}.jpg)`, opacity: index === phase ? 1 : 0 }}
        />
      ))}
      <div className="backdrop__veil" />
    </div>
  );
}