From 36476514579a791f1ff300edceebf792939edddc Mon Sep 17 00:00:00 2001
From: lseidel <ls250@hdm-stuttgart.de>
Date: Tue, 16 Jan 2024 23:37:03 +0100
Subject: [PATCH] 16.01.2024 - fixing Landingpage components, adding
 responsiveness to the Landingpage added needed SVG and IMG,rewrite some
 Components #12

---
 sth-frontend/src/assets/svg/hero-pattern.svg  |  8 +++
 sth-frontend/src/assets/svg/menu.svg          |  3 +
 sth-frontend/src/assets/svg/signup.svg        |  3 +
 .../src/features/landingpage/Landingpage.jsx  |  3 +-
 .../landingpage/components/Features.jsx       |  7 +--
 .../landingpage/components/Footer.jsx         | 22 ++++---
 .../landingpage/components/Header.jsx         | 61 +++++++++++--------
 .../features/landingpage/components/Modes.jsx | 18 +++---
 .../landingpage/components/Navbar.jsx         | 52 +++++++++++++---
 .../landingpage/components/Partner.jsx        |  9 ++-
 sth-frontend/tailwind.config.js               | 12 ++++
 11 files changed, 134 insertions(+), 64 deletions(-)
 create mode 100644 sth-frontend/src/assets/svg/hero-pattern.svg
 create mode 100644 sth-frontend/src/assets/svg/menu.svg
 create mode 100644 sth-frontend/src/assets/svg/signup.svg

diff --git a/sth-frontend/src/assets/svg/hero-pattern.svg b/sth-frontend/src/assets/svg/hero-pattern.svg
new file mode 100644
index 0000000..4eca240
--- /dev/null
+++ b/sth-frontend/src/assets/svg/hero-pattern.svg
@@ -0,0 +1,8 @@
+<svg
+        width="1065"
+        height="600"
+        viewBox="0 0 1065 600"
+        fill="none"
+        xmlns="http://www.w3.org/2000/svg">
+    <path d="M0 0H1065L975 471L0 600V0Z" fill="#916CFA"></path>
+</svg>
\ No newline at end of file
diff --git a/sth-frontend/src/assets/svg/menu.svg b/sth-frontend/src/assets/svg/menu.svg
new file mode 100644
index 0000000..c19705c
--- /dev/null
+++ b/sth-frontend/src/assets/svg/menu.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="#D9D9D9" class="w-6 h-6">
+    <path stroke-linecap="round" stroke-linejoin="round" d="M3.75 6.75h16.5M3.75 12h16.5m-16.5 5.25h16.5" />
+</svg>
diff --git a/sth-frontend/src/assets/svg/signup.svg b/sth-frontend/src/assets/svg/signup.svg
new file mode 100644
index 0000000..c8f46b7
--- /dev/null
+++ b/sth-frontend/src/assets/svg/signup.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" fill="#D9D9D9" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="w-6 h-6">
+    <path stroke-linecap="round" stroke-linejoin="round" d="M12.75 15l3-3m0 0l-3-3m3 3h-7.5M21 12a9 9 0 11-18 0 9 9 0 0118 0z" />
+</svg>
diff --git a/sth-frontend/src/features/landingpage/Landingpage.jsx b/sth-frontend/src/features/landingpage/Landingpage.jsx
index ec6875a..8d7f8bb 100644
--- a/sth-frontend/src/features/landingpage/Landingpage.jsx
+++ b/sth-frontend/src/features/landingpage/Landingpage.jsx
@@ -3,7 +3,7 @@ import { Features, Footer, Header, Modes, Navbar, Partner } from './components'
 
 const Landingpage = () => {
   return (
-      <div className='bg-darkGray -z-50'>
+      <div className='bg-darkGray scroll-smooth'>
           <Navbar/>
           <Header/>
           <Modes/>
@@ -11,6 +11,7 @@ const Landingpage = () => {
           <Partner/>
           <Footer/>
       </div>
+
   )
 }
 
diff --git a/sth-frontend/src/features/landingpage/components/Features.jsx b/sth-frontend/src/features/landingpage/components/Features.jsx
index 914f0d2..ceb6ccf 100644
--- a/sth-frontend/src/features/landingpage/components/Features.jsx
+++ b/sth-frontend/src/features/landingpage/components/Features.jsx
@@ -4,7 +4,7 @@ import stars from "../../../assets/svg/stars.svg"
 import tournament from "../../../assets/svg/tournament.svg"
 
 const Highlights = ({imgSrc, imgAlt, desc}) => (
-    <div className='flex flex-col items-center w-[345px] h-[250px] bg-lightGray rounded-2xl'>
+    <div className='flex flex-col items-center max-w-[345px] min-h-[250px] bg-lightGray rounded-2xl'>
         <img src={imgSrc} alt={imgAlt} className='w-[70px] h-[70px]'/>
         <div className='text-darkGray text-center font-outfit font-medium text-2xl'>
             {desc}
@@ -14,8 +14,7 @@ const Highlights = ({imgSrc, imgAlt, desc}) => (
 
 const Features = () => {
     return (
-
-            <div className='flex flex-col items-center gap-10 w-[1065px] h-[450px] ml-[15%] mt-10 bg-deepPurple'>
+            <div className='flex flex-col items-center gap-10 max-w-[1065px] min-h-[450px] ms-auto me-auto bg-deepPurple'>
                 <div className='flex justify-center text-darkGray font-Outfit-ExtraBold font-bold text-7xl uppercase'>
                     How it works
                 </div>
@@ -27,8 +26,6 @@ const Features = () => {
                                 desc='Bring on your Winner of the Tournament and give out MVP Medals for the best Players'/>
                 </div>
             </div>
-
-
     )
 }
 
diff --git a/sth-frontend/src/features/landingpage/components/Footer.jsx b/sth-frontend/src/features/landingpage/components/Footer.jsx
index d298fc4..f420ced 100644
--- a/sth-frontend/src/features/landingpage/components/Footer.jsx
+++ b/sth-frontend/src/features/landingpage/components/Footer.jsx
@@ -7,6 +7,7 @@ const DATAINFO = ['Infos', 'Demo', 'Stuff', 'Options', 'Types']
 const DATAPRICE = ['Pricing', 'Features', 'Extras', 'Options', 'Specials']
 const DATALEGAL = ['Tournament', 'MVP', 'Extras', 'Options', 'Types']
 const DATASUPPORT = ['Tournament', 'MVP', 'Extras', 'Options', 'Types']
+const DATAIMPRESSUM = ['Hub', 'Info', 'Price', 'Legal', 'Support']
 
 const InfoBox = ({infoCategory, arrName}) => {
 
@@ -15,9 +16,9 @@ const InfoBox = ({infoCategory, arrName}) => {
     ))
 
     return (
-        <div className='flex flex-col gap-4 text-[16px] font-bold'>
+        <div className='flex flex-col gap-4 text-[16px] font-bold max-md:flex-row max-md:items-center max-md:flex-wrap'>
             {infoCategory}
-            <div className='gap-10 py-2 font-normal text-[14px]'>
+            <div className='gap-10 py-2 font-normal text-[14px] max-md:flex max-md:flex-wrap '>
                 {list}
             </div>
         </div>
@@ -26,25 +27,28 @@ const InfoBox = ({infoCategory, arrName}) => {
 
 const Footer = () => {
     return (
-        <div className='w-[1065px] h-[325px] bg-deepPurple ml-[15%] mt-10 pt-10'>
-            <div className='flex'>
+        <div className='max-w-[1065px] min-h-[325px] bg-deepPurple ms-auto me-auto pt-10'>
+            <div className='flex justify-around max-md:flex-col max-md:items-center '>
                 <div className='flex justify-start ml-[5%] text-2xl'>
                     TJONE
                 </div>
-                <div className='flex justify-end w-[960px] h-[175px] mr-[5%] text-darkGray gap-10'>
+                <div className='flex justify-end w-[960px] h-[175px] mr-[5%] text-darkGray gap-10 max-md:hidden'>
                     <InfoBox infoCategory='Hub' arrName={DATAHUB}/>
                     <InfoBox infoCategory='Info' arrName={DATAINFO}/>
                     <InfoBox infoCategory='Price' arrName={DATAPRICE}/>
                     <InfoBox infoCategory='Legal' arrName={DATALEGAL}/>
                     <InfoBox infoCategory='Support' arrName={DATASUPPORT}/>
                 </div>
+                <div className='hidden max-md:flex max-md:justify-end'>
+                    <InfoBox infoCategory='Impressum' arrName={DATAIMPRESSUM}/>
+                </div>
             </div>
-            <div className='flex items-center w-[960px] ml-[5%] mt-10 border-t-2 border-darkGray'>
-                <div className='flex gap-[418px]'>
-                    <div className='flex justify-start'>
+            <div className='flex items-center max-w-[960px] ml-[5%] mt-10 border-t-2 border-darkGray'>
+                <div className='flex justify-between w-screen gap-2 max-md:flex-col max-md:justify-center max-md:items-center'>
+                    <div className='flex min-w-fit'>
                         @ 2023 TJONE. All rights reserved.
                     </div>
-                    <div className='flex items-center justify-end gap-4'>
+                    <div className='flex items-center gap-4 min-w-fit'>
                         <div>
                             Terms
                         </div>
diff --git a/sth-frontend/src/features/landingpage/components/Header.jsx b/sth-frontend/src/features/landingpage/components/Header.jsx
index 0b87efb..cfe8fb3 100644
--- a/sth-frontend/src/features/landingpage/components/Header.jsx
+++ b/sth-frontend/src/features/landingpage/components/Header.jsx
@@ -1,41 +1,48 @@
 import React from "react";
+import picture from '../../../assets/images/jed-villejo-pumko2FFxY0-unsplash.jpg'
+import signup from '../../../assets/svg/signup.svg'
 
 const Header = () => {
     return (
-        <div className='flex gap-5 pl-4 w-[1065px] h-[600px] ml-[15%]'>
-            <div>
-                <div className='flex justify-center py-2'>
-                    <svg
-                        className='w-1065 h-600 absolute left-1/2 transform -translate-x-1/2 top-1616 overflow-visible z-0'
-                        width="1065"
-                        height="600"
-                        viewBox="0 0 1065 600"
-                        fill="none"
-                        xmlns="http://www.w3.org/2000/svg">
-                        <path d="M0 0H1065L975 471L0 600V0Z" fill="#916CFA"></path>
-                    </svg>
-                    <div className='flex flex-col gap-2.5 max-w-2xl'>
-                        <div
-                            className='z-10 relative text-darkGray text-left font-Outfit-ExtraBold font-sans text-6xl leading-tight font-extrabold uppercase'>
+        <div className='ms-auto me-auto flex justify-center max-lg:mb-40'>
+            {/*<div style={{background: 'linear-gradient(to right, #6246EA, #916CFA)'}}>*/}
+            <svg
+                className='max-w-1065 min-h-600 absolute max-lg:hidden'
+                width="1065"
+                height="600"
+                viewBox="0 0 1065 600"
+                fill="none"
+                xmlns="http://www.w3.org/2000/svg">
+                <path d="M0 0H1065L975 471L0 600V0Z" fill="#916CFA"></path>
+            </svg>
+            <div className='bg-darkGray max-lg:bg-deepPurple flex justify-center max-w-[1065px] min-h-[600px] ms-auto me-auto'>
+                <div className='flex justify-center py-2 max-lg:flex-wrap'>
+                    <div className='flex flex-col gap-2.5 z-10'>
+                        <h1
+                            className='pt-10 pl-10 text-darkGray text-left font-Outfit-ExtraBold font-sans text-6xl leading-tight font-extrabold uppercase'>
                             Launch your Tournament
-                        </div>
-                        <div
-                            className='z-10 relative text-teal-300 text-left font-Outfit-Bold font-sans text-xl leading-tight font-bold uppercase'>
+                        </h1>
+                        <p
+                            className='pl-10 text-teal-300 text-left font-Outfit-Bold font-sans text-xl leading-tight font-bold uppercase'>
                             Let the Games begin
-                        </div>
-                        <div className='z-10 relative text-lightGray text-left font-Outfit-Regular font-sans text-2xl '>
+                        </p>
+                        <p className='py-5 pl-10 text-wrap text-lightGray text-left font-Outfit-Regular font-sans text-2xl'>
                             Lorem ipsum Beschreibung oder so kann dahin aber muss ich noch überlegen ob
                             das Sinn macht aber hier als Placeholder
+                        </p>
+                        <div className='flex items-center h-10 pl-10'>
+                            <input type='email' placeholder='Enter your E-Mail'
+                                   className='rounded-l-2xl border-2 w-2/3 h-10 text-darkGray'/>
+                            <button className='rounded-r-2xl border-2 border-l-0 px-4 py-2 bg-darkGray'>
+                                <img src={signup} alt='Register' className='w-5 h-5'/>
+                            </button>
                         </div>
-                        <button className='w-40 z-10 relative rounded-3xl border-2 px-12 py-2 text-lightGray'>
-                            Create
-                        </button>
-                        <img src='' alt='Group'/>
                     </div>
+                        <img
+                            src={picture} alt='Picture of People'
+                            className='w-72 h-fit object-contain z-10 pt-10 relative max-lg:hidden'
+                        />
                 </div>
-                <div className='flex flex-row gap-2.5 w-2xl'>
-                </div>
-                <div className='z-10 relative bg-deepPurple rounded-full w-64 h-64 filter blur-[250px] left-1/2'></div>
             </div>
         </div>
     )
diff --git a/sth-frontend/src/features/landingpage/components/Modes.jsx b/sth-frontend/src/features/landingpage/components/Modes.jsx
index d715ee1..29bb1b6 100644
--- a/sth-frontend/src/features/landingpage/components/Modes.jsx
+++ b/sth-frontend/src/features/landingpage/components/Modes.jsx
@@ -2,8 +2,8 @@ import React from "react";
 
 const Modes = () => {
     return (
-        <div>
-            <div className='flex gap-10 justify-around items-center w-[1065px] h-[540px] ml-[15%] mt-10'>
+        <div className='max-w-[1065x] max-h-[540px] max-[1024px]:max-h-[540px] max-[1024px]:mb-40'>
+            <div className='flex gap-10 justify-around items-center bg-darkGray max-w-[1065px] min-h-[540px] ms-auto me-auto max-[1024px]:flex-col max-[1024px]:max-h-[540px]'>
                 <div className='flex gap-5'>
                     <div className='bg-lightGray h-[370px] w-[75px]'>
                         Card 1
@@ -19,18 +19,18 @@ const Modes = () => {
                     </div>
                 </div>
                 <div className='flex flex-col w-[525px] h-[370px] gap-10'>
-                    <div className='text-lightGray font-Outfit-ExtraBold font-bold text-7xl uppercase '>
+                    <h2 className='text-lightGray font-Outfit-ExtraBold font-bold text-7xl uppercase '>
                         Everything <br/> is possible
-                    </div>
-                    <div className='text-lightGray font-Outfit-Regular font-medium text-xl max-w-md'>
+                    </h2>
+                    <p className='text-lightGray font-Outfit-Regular font-medium text-xl max-w-md'>
                         Create any Type of Tournament possible. With our new Tournament Engine
                         everything is in the Hand of you. Grab your Friends and lets GAME
-                    </div>
+                    </p>
                 </div>
             </div>
-            {/*<div className='h-1'>*/}
-            {/*    <div className='z-10 relative left-3/4 bg-deepPurple rounded-full w-[496px] h-[485px] filter blur-[250px]'></div>*/}
-            {/*</div>*/}
+            <div className='flex justify-end mr-[5%] transform: -translate-y-96'>
+                <div className='bg-deepPurple rounded-[50%] w-[496px] h-[485px] filter blur-[250px] opacity-40 animate-spin-slow'></div>
+            </div>
         </div>
     )
 }
diff --git a/sth-frontend/src/features/landingpage/components/Navbar.jsx b/sth-frontend/src/features/landingpage/components/Navbar.jsx
index be6f708..79971a1 100644
--- a/sth-frontend/src/features/landingpage/components/Navbar.jsx
+++ b/sth-frontend/src/features/landingpage/components/Navbar.jsx
@@ -1,12 +1,18 @@
 import React, {useState} from "react";
 import {Link} from "react-router-dom";
+import menu from '../../../assets/svg/menu.svg'
 
 const Navbar = () => {
     const [darkMode, setDarkMode] = useState(true)
+    const [showMenu, setShowMenu] =useState(false)
 
     const toggleDarkMode = () => {
         setDarkMode(!darkMode)
     };
+    
+    const toggleMenu = () => {
+      setShowMenu(!showMenu)
+    }
 
     const backgroundColorClasses = darkMode ? 'bg-darkGray': 'bg-lightGray';
     const textClass = darkMode ? 'text-lightGray': 'text-darkGray';
@@ -17,21 +23,50 @@ const Navbar = () => {
         <div className={`${backgroundColorClasses} fixed top-0 z-50`}>
             <nav className={`flex ${textClass} gap-3 items-center justify-center`}>
                 <div className='flex flex-row gap-5 items-center justify-center flex-shrink-0 w-screen relative'>
+                    <button onClick={toggleMenu} className='hidden max-[1024px]:flex'>
+                        <img src={menu} alt='Menu' className='w-6 h-6'/>
+                    </button>
+                    {showMenu && (
+                        <div className="lg:hidden absolute top-16 left-0 right-0 bg-lightGray text-darkGray">
+                            <ul className="flex flex-col items-start justify-start w-full px-4 py-2">
+                                <li className="hover:underline hover:underline-offset-4 hover:decoration-2">
+                                    <Link to="/landingpage">
+                                        Home
+                                    </Link>
+                                </li>
+                                <li className="hover:underline hover:underline-offset-4 hover:decoration-2">
+                                    <Link to="/landingpage">
+                                        Tournaments
+                                    </Link>
+                                </li>
+                                <li className="hover:underline hover:underline-offset-4 hover:decoration-2">
+                                    <Link to="/landingpage">
+                                        Support
+                                    </Link>
+                                </li>
+                                <li className="hover:underline hover:underline-offset-4 hover:decoration-2">
+                                    <Link to="/landingpage">
+                                        Options
+                                    </Link>
+                                </li>
+                            </ul>
+                        </div>
+                    )}
                     <div
                         className='flex flex-row flex-shrink-0 gap-0 items-center justify-start relative p-2.5 text-5xl'>TJ1
                     </div>
-                    <div className='flex flex-col items-start justify-start flex-shrink-0 relative gap-2.5 p-2.5'>
+                    <div className='flex flex-col items-start justify-start flex-shrink-0 relative gap-2.5 p-2.5 max-[1024px]:hidden'>
                         <ul className='flex flex-row items-start justify-start flex-shrink-0 w-1/3 relative px-4 gap-8 text-xl'>
-                            <li>
+                            <li className='hover:underline hover:underline-offset-4 hover:decoration-2'>
                                 <Link to="/landingpage">Home</Link>
                             </li>
-                            <li>
+                            <li className='hover:underline hover:underline-offset-4 hover:decoration-2'>
                                 <Link to="/landingpage">Tournaments</Link>
                             </li>
-                            <li>
+                            <li className='hover:underline hover:underline-offset-4 hover:decoration-2'>
                                 <Link to="/landingpage">Support</Link>
                             </li>
-                            <li>
+                            <li className='hover:underline hover:underline-offset-4 hover:decoration-2'>
                                 <Link to="/landingpage">Options</Link>
                             </li>
                         </ul>
@@ -40,10 +75,11 @@ const Navbar = () => {
                         {moonOrSunIcon}
                     </div>
                     <div className='flex flex-row items-center justify-start flex-shrink-0 relative gap-5'>
-                        <button className='rounded-3xl border-2 px-12 py-2 bg-lightGray text-darkGray'>
-                            Create
+                        <button
+                            className='w-40 rounded-3xl border-2 border-lightGray px-12 py-2 bg-lightGray text-darkGray hover:bg-darkGray hover:text-lightGray bg-[#C2C2C2] hover: border-[#C2C2C2]'>
+                            Register
                         </button>
-                        <button className='rounded-3xl border-2 px-12 py-2'>
+                        <button className='w-40 rounded-3xl border-2 px-12 py-2 hover:bg-deepPurple'>
                             Login
                         </button>
                     </div>
diff --git a/sth-frontend/src/features/landingpage/components/Partner.jsx b/sth-frontend/src/features/landingpage/components/Partner.jsx
index 0dfabdc..398e1ef 100644
--- a/sth-frontend/src/features/landingpage/components/Partner.jsx
+++ b/sth-frontend/src/features/landingpage/components/Partner.jsx
@@ -9,22 +9,21 @@ import hdmStuttgart from "../../../assets/svg/HdM Stuttgart.svg"
 
 
 const PartnerImage = ({imgSrc, altText, itemName}) => (
-    <div className='flex items-center justify-center gap-2 w-[165px] h-[24px]'>
+    <div className='flex items-center justify-center gap-2 max-w-[165px] min-h-[24px]'>
         <img src={imgSrc} alt={altText} className='w-6 h-6'/>
         <div className='text-xs text-Outfit-Medium font-medium'>{itemName}</div>
     </div>
 )
 
-
 const Partner = () => {
     return (
-        <div className='w-[1065px] h-[285px] ml-[15%]'>
-            <div className='flex flex-col items-center gap-9 w-[1065px] h-[285px]'>
+        <div className='max-w-[1065px] max-h-[285px] ms-auto me-auto bg-darkGray'>
+            <div className='flex flex-col items-center gap-9'>
                 <div className='flex justify-center text-lightGray text-7xl text-Outfit-ExtraBold font-bold mt-5'>
                     Our Partner
                 </div>
                 <div className='flex flex-col gap-9 text-lightGray mb-5'>
-                    <div className='flex flex-row justify-evenly w-[800px]'>
+                    <div className='flex flex-row justify-between gap-40 flex-wrap max-lg:gap-4'>
                         <PartnerImage imgSrc={LeagueOfLegends} altText='Legaue of Legends'
                                       itemName='Legaue of Legends'/>
                         <PartnerImage imgSrc={beerpongLeague} altText='Beerpong League' itemName='Beerpong League'/>
diff --git a/sth-frontend/tailwind.config.js b/sth-frontend/tailwind.config.js
index a9f5281..46cbb2d 100644
--- a/sth-frontend/tailwind.config.js
+++ b/sth-frontend/tailwind.config.js
@@ -11,6 +11,18 @@ module.exports = {
         'deepPurple': '#916CFA',
         'lightGray': '#D9D9D9',
       },
+      keyframes: {
+        'spin-slow': {
+          '0%, 100%': { backgroundColor: '#916CFA' },
+          '50%': { backgroundColor: '#916CFA', opacity: '80%' },
+        },
+      },
+      animation: {
+        'spin-slow': 'spin-slow 8s linear infinite',
+      },
+      backgroundImage: {
+        'hero-pattern': "url('/assets/svg/hero-pattern.svg')"
+      }
     },
   },
   plugins: [],
-- 
GitLab