diff --git a/bun.lockb b/bun.lockb index d5d7ade2..dda70b11 100755 Binary files a/bun.lockb and b/bun.lockb differ diff --git a/src/app/harbor/signpost/countdown.tsx b/src/app/harbor/signpost/countdown.tsx new file mode 100644 index 00000000..1c573816 --- /dev/null +++ b/src/app/harbor/signpost/countdown.tsx @@ -0,0 +1,83 @@ +import { useState, useEffect } from 'react' +import JaggedCardSmall from '@/components/jagged-card-small' +import { Button } from '@/components/ui/button' +import Link from 'next/link' + +const dateEnd = new Date('2025-02-01T05:00:00Z').getTime() +const formatTime = (distance: number) => { + const hours = Math.floor(distance / (1000 * 60 * 60)) + const minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60)) + const seconds = Math.floor((distance % (1000 * 60)) / 1000) + + if (hours > 0) { + return `${String(hours).padStart(2, '0')}:${String(minutes).padStart(2, '0')}:${String(seconds).padStart(2, '0')}` + } else if (minutes > 0) { + return `${String(minutes).padStart(2, '0')}:${String(seconds).padStart(2, '0')}` + } else { + return `${String(seconds).padStart(2, '0')}` + } +} + +export default function Countdown() { + const [timeLeft, setTimeLeft] = useState('00:00:00') + + useEffect(() => { + const interval = setInterval(() => { + const now = new Date().getTime() + const distance = dateEnd - now + + if (distance < 0) { + clearInterval(interval) + setTimeLeft('00:00:00') + return + } + + setTimeLeft(formatTime(distance)) + }, 1000) + + return () => clearInterval(interval) + }, []) + + return dateEnd - new Date().getTime() > 100 * 60 * 60 * 1000 ? ( + <> + ) : ( + +
+

+ {dateEnd - new Date().getTime() > 0 ? ( + <>Time Remaining + ) : ( + <>Ended. + )} +

+

+ {dateEnd - new Date().getTime() > 0 ? ( + <>{timeLeft} + ) : ( + <>High Seas is over! + )} +

+
+ {dateEnd - new Date().getTime() > 0 ? ( + <> + Arrrrr, you'd better{' '} + + + {' '} + before the time runs out! + + ) : ( + <>Arrr, thank you all for competing, you were worthy pirates! + )} +
+
+
+ ) +} diff --git a/src/app/harbor/signpost/signpost.tsx b/src/app/harbor/signpost/signpost.tsx index 982da8e3..72541acd 100644 --- a/src/app/harbor/signpost/signpost.tsx +++ b/src/app/harbor/signpost/signpost.tsx @@ -13,7 +13,7 @@ import Referral from './referral' import pluralize from '../../../../lib/pluralize.js' import BestShips from './best-ships' import LeaderboardOptIn from './leaderboard' - +import Countdown from './countdown' export default function Signpost() { let wakaKey: string | null = null let hasHb: boolean | null = null @@ -91,6 +91,7 @@ export default function Signpost() {

+