From 75221e9650b289499e411ec934dd32e9797587eb Mon Sep 17 00:00:00 2001
From: Kushagra Gour <chinchang457@gmail.com>
Date: Fri, 22 Mar 2024 03:24:37 +0530
Subject: [PATCH] convert footer to fn component

---
 src/components/Footer.jsx | 84 +++++++++++++++++++--------------------
 1 file changed, 40 insertions(+), 44 deletions(-)

diff --git a/src/components/Footer.jsx b/src/components/Footer.jsx
index dc4ac83..d51decc 100644
--- a/src/components/Footer.jsx
+++ b/src/components/Footer.jsx
@@ -1,59 +1,55 @@
-import { Component } from 'preact';
 import { Button } from './common';
 import { Trans, t } from '@lingui/macro';
 import { I18n } from '@lingui/react';
 import { ProBadge } from './ProBadge';
 import { HStack } from './Stack';
-import { useState } from 'preact/hooks';
+import { useEffect, useState } from 'preact/hooks';
 
-class JS13K extends Component {
-	constructor(props) {
-		super(props);
-		const compoDate = new Date('August 13 2018 11:00 GMT');
-		var now = new Date();
-		var daysLeft;
+import React, { useState } from 'react';
+
+const JS13K = props => {
+	const [daysLeft, setDaysLeft] = useState(0);
+
+	useEffect(() => {
+		const compoDate = new Date('August 13 2024 11:00 GMT');
+		const now = new Date();
 		if (+compoDate > +now) {
-			daysLeft = Math.floor((compoDate - now) / 1000 / 3600 / 24);
+			const _daysLeft = Math.floor((compoDate - now) / 1000 / 3600 / 24);
+			setDaysLeft(_daysLeft);
 		}
-		this.setState({
-			daysLeft
-		});
-	}
+	}, []);
 
-	render() {
-		const codeSizeInKb = this.props.codeSize
-			? (this.props.codeSize / 1024).toFixed(2)
-			: 0;
-		return (
+	const codeSizeInKb = props.codeSize ? (props.codeSize / 1024).toFixed(2) : 0;
+
+	return (
+		<div
+			role="button"
+			className="flex flex-v-center"
+			tabIndex="0"
+			onClick={props.onClick}
+			onBlur={props.onBlur}
+		>
+			<img src="assets/js13kgames.png" alt="JS13K Games logo" height="24" />{' '}
+			<div className="footer__js13k-days-left">{daysLeft} days to go</div>
 			<div
-				role="button"
-				class="flex flex-v-center"
-				tabIndex="0"
-				onClick={this.props.onClick}
-				onBlur={this.props.onBlur}
+				className="footer__js13k-code-size"
+				style={{
+					color: codeSizeInKb > 10 ? 'crimson' : 'limegreen'
+				}}
 			>
-				<img src="assets/js13kgames.png" alt="JS13K Games logo" height="24" />{' '}
-				<div class="footer__js13k-days-left">
-					{this.state.daysLeft} days to go
-				</div>
-				<div
-					class="footer__js13k-code-size"
-					style={{
-						color: codeSizeInKb > 10 ? 'crimson' : 'limegreen'
-					}}
-				>
-					{codeSizeInKb} KB/ 13KB
-				</div>
-				<span
-					class="caret"
-					style={`transition:0.3s ease; transform-origin: center 2px; ${
-						this.props.isOpen ? 'transform:rotate(180deg);' : ''
-					}`}
-				/>
+				{codeSizeInKb} KB/ 13KB
 			</div>
-		);
-	}
-}
+			<span
+				className="caret"
+				style={{
+					transition: '0.3s ease',
+					transformOrigin: 'center 2px',
+					transform: props.isOpen ? 'rotate(180deg)' : ''
+				}}
+			/>
+		</div>
+	);
+};
 
 export const Footer = props => {
 	const [isKeyboardShortcutsModalOpen, setIsKeyboardShortcutsModalOpen] =