Skip to content

Commit

Permalink
refactor: Footer image and hero screen size
Browse files Browse the repository at this point in the history
  • Loading branch information
WasathTheekshana committed May 11, 2024
1 parent 947e7e9 commit 12f3639
Show file tree
Hide file tree
Showing 6 changed files with 215 additions and 76 deletions.
Binary file added public/assets/footerAssets/brick-gradient.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
162 changes: 135 additions & 27 deletions src/app/(client)/(pages)/underdev/_components/countdown.tsx
Original file line number Diff line number Diff line change
@@ -1,24 +1,56 @@
import React, { useState, useEffect } from 'react';
import React, { useState, useEffect } from "react";

const Countdown = () => {
// Screen size state
const [isSmallScreen, setIsSmallScreen] = useState(false);

useEffect(() => {
const checkScreenSize = () => {
setIsSmallScreen(window.innerWidth < 632);
};

// Check if window is defined (i.e., we're in a browser)
if (typeof window !== "undefined") {
// Set initial state
checkScreenSize();
// Add event listener
window.addEventListener("resize", checkScreenSize);
}

return () => {
// Remove event listener
if (typeof window !== "undefined") {
window.removeEventListener("resize", checkScreenSize);
}
};
}, []);

const calculateTimeLeft = () => {
const eventDate = new Date('2024-05-22T09:00:00').getTime();
const eventDate = new Date("2024-05-22T09:00:00").getTime();
const currentTime = new Date().getTime();
const difference = eventDate - currentTime;

if (difference > 0) {
return {
days: String(Math.floor(difference / (1000 * 60 * 60 * 24))).padStart(2, '0'),
hours: String(Math.floor((difference / (1000 * 60 * 60)) % 24)).padStart(2, '0'),
minutes: String(Math.floor((difference / (1000 * 60)) % 60)).padStart(2, '0'),
seconds: String(Math.floor((difference / 1000) % 60)).padStart(2, '0')
days: String(Math.floor(difference / (1000 * 60 * 60 * 24))).padStart(
2,
"0"
),
hours: String(
Math.floor((difference / (1000 * 60 * 60)) % 24)
).padStart(2, "0"),
minutes: String(Math.floor((difference / (1000 * 60)) % 60)).padStart(
2,
"0"
),
seconds: String(Math.floor((difference / 1000) % 60)).padStart(2, "0"),
};
} else {
return {
days: '00',
hours: '00',
minutes: '00',
seconds: '00'
days: "00",
hours: "00",
minutes: "00",
seconds: "00",
};
}
};
Expand All @@ -37,40 +69,116 @@ const Countdown = () => {
}, []); // Ensure useEffect runs only once

return (
<div className="countdown justify-center flex mt-10 mb-10">
<div className="countdown justify-center flex my-6 md:my-10">
<div className="countdown-item-wrapper relative flex flex-col items-center mr-6">
<div className="countdown-item relative">
<img src="/assets/tile.png" alt="Tile" className="w-16 h-16 sm:w-24 sm:h-24 object-cover" />
<div className="absolute top-1/2 left-1/2 transform -translate-x-1/2 -translate-y-1/2 text-amber-100 text-3xl sm:text-5xl md:text-6xl text-center mt-4">
<span style={{ position: 'relative', bottom: '-0.1rem' }}>{timeLeft.days}</span>
<div className="text-amber-100 text-xs sm:text-lg md:text-xl mb-10 shadow-lg" style={{ position: 'relative', top: '-0.4rem' }}>Days</div>
<img
src="/assets/tile.png"
alt="Tile"
className="w-16 h-16 sm:w-32 sm:h-32 object-cover"
/>
<div className="absolute top-1/2 left-1/2 transform -translate-x-1/2 -translate-y-1/2 text-amber-100 text-3xl sm:text-5xl md:text-7xl text-center mt-4">
<span
style={{
position: "relative",
bottom: "-0.1rem",
textShadow: isSmallScreen
? "3px 3px #78350F"
: "6px 6px #78350F",
}}
>
{timeLeft.days}
</span>
<div
className="text-amber-100 text-xs sm:text-lg md:text-xl mb-10 shadow-lg"
style={{ position: "relative", top: "-0.4rem" }}
>
Days
</div>
</div>
</div>
</div>
<div className="countdown-item-wrapper relative flex flex-col items-center mr-6">
<div className="countdown-item relative">
<img src="/assets/tile.png" alt="Tile" className="w-16 h-16 sm:w-24 sm:h-24 object-cover" />
<div className="absolute top-1/2 left-1/2 transform -translate-x-1/2 -translate-y-1/2 text-amber-100 text-3xl sm:text-5xl md:text-6xl text-center mt-4">
<span style={{ position: 'relative', bottom: '-0.1rem' }}>{timeLeft.hours}</span>
<div className="text-amber-100 text-xs sm:text-lg md:text-xl mb-10 shadow-lg" style={{ position: 'relative', top: '-0.4rem' }}>Hours</div>
<img
src="/assets/tile.png"
alt="Tile"
className="w-16 h-16 sm:w-32 sm:h-32 object-cover"
/>
<div className="absolute top-1/2 left-1/2 transform -translate-x-1/2 -translate-y-1/2 text-amber-100 text-3xl sm:text-5xl md:text-7xl text-center mt-4">
<span
style={{
position: "relative",
bottom: "-0.1rem",
textShadow: isSmallScreen
? "3px 3px #78350F"
: "6px 6px #78350F",
}}
>
{timeLeft.hours}
</span>
<div
className="text-amber-100 text-xs sm:text-lg md:text-xl mb-10 shadow-lg"
style={{ position: "relative", top: "-0.4rem" }}
>
Hours
</div>
</div>
</div>
</div>
<div className="countdown-item-wrapper relative flex flex-col items-center mr-6">
<div className="countdown-item relative">
<img src="/assets/tile.png" alt="Tile" className="w-16 h-16 sm:w-24 sm:h-24 object-cover" />
<div className="absolute top-1/2 left-1/2 transform -translate-x-1/2 -translate-y-1/2 text-amber-100 text-3xl sm:text-5xl md:text-6xl text-center mt-4">
<span style={{ position: 'relative', bottom: '-0.1rem' }}>{timeLeft.minutes}</span>
<div className="text-amber-100 text-xs sm:text-lg md:text-xl mb-10 shadow-lg" style={{ position: 'relative', top: '-0.4rem' }}>Minutes</div>
<img
src="/assets/tile.png"
alt="Tile"
className="w-16 h-16 sm:w-32 sm:h-32 object-cover"
/>
<div className="absolute top-1/2 left-1/2 transform -translate-x-1/2 -translate-y-1/2 text-amber-100 text-3xl sm:text-5xl md:text-7xl text-center mt-4">
<span
style={{
position: "relative",
bottom: "-0.1rem",
textShadow: isSmallScreen
? "3px 3px #78350F"
: "6px 6px #78350F",
}}
>
{timeLeft.minutes}
</span>
<div
className="text-amber-100 text-xs sm:text-lg md:text-xl mb-10 shadow-lg"
style={{ position: "relative", top: "-0.4rem" }}
>
Minutes
</div>
</div>
</div>
</div>
<div className="countdown-item-wrapper relative flex flex-col items-center">
<div className="countdown-item relative">
<img src="/assets/tile.png" alt="Tile" className="w-16 h-16 sm:w-24 sm:h-24 object-cover" />
<div className="absolute top-1/2 left-1/2 transform -translate-x-1/2 -translate-y-1/2 text-amber-100 text-3xl sm:text-5xl md:text-6xl text-center mt-4">
<span style={{ position: 'relative', bottom: '-0.1rem' }}>{timeLeft.seconds}</span>
<div className="text-amber-100 text-xs sm:text-lg md:text-lg mb-10 shadow-lg" style={{ position: 'relative', top: '-0.4rem' }}>Seconds</div>
<img
src="/assets/tile.png"
alt="Tile"
className="w-16 h-16 sm:w-32 sm:h-32 object-cover"
/>
<div className="absolute top-1/2 left-1/2 transform -translate-x-1/2 -translate-y-1/2 text-amber-100 text-3xl sm:text-5xl md:text-7xl text-center mt-4">
<span
style={{
position: "relative",
bottom: "-0.1rem",
textShadow: isSmallScreen
? "3px 3px #78350F"
: "6px 6px #78350F",
}}
>
{timeLeft.seconds}
</span>
<div
className="text-amber-100 text-xs sm:text-lg md:text-lg mb-10 shadow-lg"
style={{ position: "relative", top: "-0.4rem" }}
>
Seconds
</div>
</div>
</div>
</div>
Expand Down
2 changes: 2 additions & 0 deletions src/app/layout.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import "@/styles/globals.css";
import { ReduxProvider } from "@/store/provider";
import { Toaster } from "@/components/ui/toaster";
import { jetbrains, thalehfatFont } from "@/styles/fonts";
import Footer from "@/components/layout/Footer";

export const metadata: Metadata = {
title: "Techie Sleuths '24🔎",
Expand All @@ -21,6 +22,7 @@ export default function RootLayout({
>
<ReduxProvider>
{children}
<Footer />
<Toaster />
</ReduxProvider>
</body>
Expand Down
12 changes: 4 additions & 8 deletions src/app/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,16 +4,12 @@ import ExampleForm from "@/components/forms/ExampleForm";
import EventDetails from "@/components/landing/eventDetails";
import HeroSection from "@/components/landing/hero";

export default function Home() {
export default function Home() {
return (
<div>
<div className="flex flex-col h-screen justify-center items-center gap-10">
<ExampleForm />
<ExampleCard />
</div>
<HeroSection />
<EventDetails />
<div className="hidden md:block">
<HeroSection />
<EventDetails />
<div className="hidden md:block">
<RegisterNowCard />
</div>
</div>
Expand Down
112 changes: 73 additions & 39 deletions src/components/landing/hero.tsx
Original file line number Diff line number Diff line change
@@ -1,45 +1,79 @@
'use client'
import { createContext } from 'react'
"use client";

import { Button } from "@/components/ui/button";
import Image from "next/image";
import Countdown from '@/app/(client)/(pages)/underdev/_components/countdown';
import Countdown from "@/app/(client)/(pages)/underdev/_components/countdown";
import { useEffect, useState } from "react";

export default function HeroSection() {
return (
<div className="w-full min-h-full relative">
<div className="absolute inset-0 bg-slate-900">
<Image
alt="Mountains"
src="/assets/bg-img.webp"
layout="fill"
objectFit="cover"
/>
</div>
<div className="relative z-10 hero-section flex justify-center items-center flex-col">
<div className="logo mt-10 mb-5 sm:mt-20 sm:mb-10 md:w-500 md:h-500">
<Image
alt="Logo"
src="/assets/logo (with year) 1.png"
width={300}
height={300}
/>
</div>
<Countdown/>

<h1 className="text-black font-bold mb-4 text-center text-2xl md:text-3xl" style={{ textShadow: "2px 2px 0 #fff, -2px -2px 0 #fff, 2px -2px 0 #fff, -2px 2px 0 #fff" }}>
most awaited puzzle solving game.<br/> this time, <span className="text-blue-500">it’s different!</span>
</h1>

<div className="flex min-h-full items-center sm:flex-row sm:items-center gap-3 mb-10">
<Button variant="default" size="lg">COMMING SOON !!!</Button>
<Image
alt="Logo"
src="/assets/question-box.png"
width={45}
height={45}
/>
</div>
</div>
const [isSmallScreen, setIsSmallScreen] = useState(false);

useEffect(() => {
const checkScreenSize = () => {
setIsSmallScreen(window.innerWidth < 632);
};

// Check if window is defined (i.e., we're in a browser)
if (typeof window !== "undefined") {
// Set initial state
checkScreenSize();
// Add event listener
window.addEventListener("resize", checkScreenSize);
}

return () => {
// Remove event listener
if (typeof window !== "undefined") {
window.removeEventListener("resize", checkScreenSize);
}
};
}, []);

return (
<div className="w-full min-h-screen relative">
<div className="absolute inset-0 bg-slate-900">
<Image
alt="Mountains"
src="/assets/bg-img.webp"
layout="fill"
objectFit="cover"
/>
</div>
<div className="relative min-h-screen z-10 hero-section flex justify-center items-center flex-col">
<div className="logo mt-10 mb-5 sm:mt-20 sm:mb-10 md:w-500 md:h-500">
<Image
alt="Logo"
src="/assets/logo (with year) 1.png"
width={isSmallScreen ? 300 : 400}
height={isSmallScreen ? 300 : 400}
/>
</div>
<Countdown />

<h1
className="text-black font-bold mb-4 text-center text-2xl md:text-3xl"
style={{
textShadow:
"2px 2px 0 #fff, -2px -2px 0 #fff, 2px -2px 0 #fff, -2px 2px 0 #fff",
}}
>
most awaited puzzle solving game.
<br /> this time,{" "}
<span className="text-blue-500">it&apos;s different!</span>
</h1>

<div className="flex min-h-full items-center sm:flex-row sm:items-center gap-3 mb-10">
<Button variant="default" size="lg">
COMMING SOON !!!
</Button>
<Image
alt="Logo"
src="/assets/question-box.png"
width={45}
height={45}
/>
</div>
);
</div>
</div>
);
}
3 changes: 1 addition & 2 deletions src/components/layout/Footer.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
"use client";

import { Button } from "@/components/ui/button";
import { Link } from "lucide-react";
import Image from "next/image";
import Container from "./Container";
import socialMediaData from "@/data/footer/footerData";
Expand All @@ -10,7 +9,7 @@ import footerbg from "../../../public/assets/footerAssets/footer_bg.png";
const Footer = () => {
return (
<div className="w-full h-auto overflow-hidden">
<div className="bg-[#A66224] w-full h-[40px] md:h-[100px] lg:h-[130px] xl:h-[180px] bg-[url('/assets/footerAssets/brick_floor2.png')] bg-contain bg-repeat-x bg-center">
<div className="bg-[#A66224] w-full h-[40px] md:h-[100px] lg:h-[130px] xl:h-[170px] bg-[url('/assets/footerAssets/brick-gradient.png')] bg-contain bg-repeat-x bg-center">
{/* <Image
alt="Footer Background Image"
src="/assets/footerAssets/brick_floor2.png"
Expand Down

0 comments on commit 12f3639

Please sign in to comment.