import React, { useEffect, useRef, useState } from "https://esm.sh/react";
import { createRoot } from "https://esm.sh/react-dom/client";
function App() {
const [page, setPage] = useState("home");
const [showModal, setShowModal] = useState(false);
const [amount, setAmount] = useState("");
const [userEntry, setUserEntry] = useState(null);
const [leaderboard, setLeaderboard] = useState([
{ name: "Passenger #1", amount: 1000 },
{ name: "Passenger #2", amount: 950 },
{ name: "Passenger #3", amount: 900 },
{ name: "Passenger #4", amount: 850 },
{ name: "Passenger #5", amount: 800 },
{ name: "Passenger #6", amount: 750 },
{ name: "Passenger #7", amount: 700 },
{ name: "Passenger #8", amount: 650 },
{ name: "Passenger #9", amount: 600 },
{ name: "Passenger #10", amount: 550 },
]);
const [isFrozen, setIsFrozen] = useState(false);
const intervalRef = useRef(null);
useEffect(() => {
if (page === "leaderboard" && !isFrozen) {
const updateLeaderboard = () => {
setLeaderboard(prevLeaderboard => {
const newLeaderboard = prevLeaderboard
.filter(entry => entry.name !== "You")
.map(entry => ({
...entry,
amount: entry.amount + Math.floor(Math.random() * 100) - 50,
}));
if (userEntry) {
newLeaderboard.push(userEntry);
}
return newLeaderboard.sort((a, b) => b.amount - a.amount).slice(0, 10);
});
};
const startUpdatingLeaderboard = () => {
intervalRef.current = setInterval(() => {
updateLeaderboard();
}, Math.floor(Math.random() * 3000) + 1000);
};
startUpdatingLeaderboard();
}
return () => {
if (intervalRef.current) {
clearInterval(intervalRef.current);
}
};
}, [page, userEntry, isFrozen]);
const handleSubmit = (e) => {
e.preventDefault();
setUserEntry({ name: "You", amount: Number(amount) });
setAmount("");
setShowModal(false);
setPage("leaderboard");
};
const handleGoBack = () => {
setPage("home");
if (userEntry) {
setAmount(userEntry.amount.toString());
}
};
const toggleFreeze = () => {
setIsFrozen(prev => !prev);
};
const Logo = () => (
<img
src="https://utfs.io/f/561a343e-48b8-4628-abe5-845237ba375e-n3173f.png"
alt="Logo"
className="logo"
/>
);
if (page === "home") {
return (
<div className="container">
<Logo />
<div className="alert">
<h2>π¨ Attention Valued Customer! π¨</h2>
<p>Due to our commitment to maximizing value, we've strategically overbooked your flight. ππΌ</p>
<p>Please state your price for voluntary denial of service. Remember, loyalty is priceless! π°π</p>
</div>
<p>
As a token of our appreciation for your flexibility, enjoy our exclusive <br />"Stranded Traveler" package:
</p>
<p>ποΈ Lounge access</p>
<p>π₯€ A refreshing Coke Zero</p>