From 8b9a2ae1312a569761f23b49d18062817d8b5ec1 Mon Sep 17 00:00:00 2001 From: GraphieDK <chamiv06@gmail.com> Date: Sat, 29 Mar 2025 14:04:38 +0100 Subject: [PATCH] Refactoring code --- Workly/src/components/Stats.tsx | 0 Workly/src/pages/Home/Home.Modules.css | 114 ------------------ Workly/src/pages/Home/Home.tsx | 82 +------------ .../pages/Home/components/Stats.Modules.css | 90 ++++++++++++++ Workly/src/pages/Home/components/Stats.tsx | 60 +++++++++ .../pages/Home/components/Trusted.Modules.css | 51 ++++++++ Workly/src/pages/Home/components/Trusted.tsx | 56 +++++++++ 7 files changed, 261 insertions(+), 192 deletions(-) delete mode 100644 Workly/src/components/Stats.tsx create mode 100644 Workly/src/pages/Home/components/Stats.Modules.css create mode 100644 Workly/src/pages/Home/components/Stats.tsx create mode 100644 Workly/src/pages/Home/components/Trusted.Modules.css create mode 100644 Workly/src/pages/Home/components/Trusted.tsx diff --git a/Workly/src/components/Stats.tsx b/Workly/src/components/Stats.tsx deleted file mode 100644 index e69de29..0000000 diff --git a/Workly/src/pages/Home/Home.Modules.css b/Workly/src/pages/Home/Home.Modules.css index bca6350..295d477 100644 --- a/Workly/src/pages/Home/Home.Modules.css +++ b/Workly/src/pages/Home/Home.Modules.css @@ -114,117 +114,3 @@ - - - -.TrustedCompanies -{ - margin-top: 2rem; - display: flex; - flex-direction: column; - align-items: center; -} - -.TrustedCompanies .Text { - color: black; -} - -.TrustedCompanies .Companies -{ - background-color: black; - width: 80%; - height: 3rem; - border-radius: 0.4rem; - display: flex; - justify-content: center; - overflow: hidden; - user-select: none; - align-items: center; - font-weight: bold; - font-size: 0.8rem; -} - - -.Companies ul { - list-style: none; - display: flex; - justify-content: space-between; - flex-shrink: 0; - gap: 2rem; - min-width: 100%; - animation: scroll 35s linear infinite; -} - -@keyframes scroll { - to { - transform: translateX(-100%); - } -} - -.Stats -{ - margin-top: 4rem; - width: 100%; - height: 45rem; - position: relative; -} - -.Stats .Members -{ - position: absolute; - margin: 5rem; - width: 85%; - color: black; - display: flex; - flex-direction: column; -} - -.Members .regular-text -{ - font-size: 2rem; - font-style: italic; - letter-spacing: 1rem; -} - -.Members .Container p { - font-size: 4rem; - letter-spacing: 0.2rem; -} - -.Members .Container { - margin-top: -0.5rem; - height: 4rem; - position: relative; -} - -.Container .Text -{ - position: absolute; - overflow: hidden; - height: 100%; - display: flex; - align-items: center; -} - - -.Members .Bar -{ - margin-top: 0.2rem; - height: 0.2rem; - border-radius: 0.4rem; - background-color: black; -} - - -.Stats img -{ - margin-top: -4.5rem; - position: absolute; - width: 50%; - margin-left: 50%; -} - -.Stats .Description -{ - width: 50%; -} \ No newline at end of file diff --git a/Workly/src/pages/Home/Home.tsx b/Workly/src/pages/Home/Home.tsx index 9733cae..3ab1f17 100644 --- a/Workly/src/pages/Home/Home.tsx +++ b/Workly/src/pages/Home/Home.tsx @@ -1,30 +1,15 @@ import "./home.modules.css"; -import { useEffect, useRef } from "react"; -import { useScroll, motion, useTransform, useMotionValueEvent } from "framer-motion"; import { useNavigate } from 'react-router-dom'; +import Trusted from "./components/Trusted"; +import Stats from "./components/Stats"; import icon2 from '../../assets/Icon2.png'; import icon1 from '../../assets/Icon1.png'; -import icon3 from '../../assets/Icon3.png'; -import { option, view } from "framer-motion/client"; const Home = () => { const navigate = useNavigate(); - const { scrollY } = useScroll(); - useMotionValueEvent(scrollY, "change", (val) => { - console.log(val); - }) - - const posY = useTransform(scrollY, [475, 620], ["0px", "-110px"]); - const posX = useTransform(scrollY, [200, 475], ["0px", "720px"]); - const fadeDown = useTransform(scrollY, [499, 550], ["0px", "50px"]); - const fadeUp = useTransform(scrollY, [499, 550], ["50px", "0px"]); - const opaDown = useTransform(scrollY, [499, 548], [1, 0]); - const opaUp = useTransform(scrollY, [499, 548], [0, 1]); - const opaImg = useTransform(scrollY, [200, 548], [0, 1]); - return ( <> @@ -48,67 +33,8 @@ const Home = () => { <img src={icon2} alt="Hire Icon" /> </div> </div> - <div className="TrustedCompanies"> - <div className="Text"> - <p>Trusted by over <span className="bold-text">500+</span> companies all over the world</p> - </div> - <div className="Companies"> - <ul> - <span className="Company">DANSKE BANK</span> - <span className="Company">SYSTEMATIC</span> - <span className="Company">UBER</span> - <span className="Company">MOBILEPAY</span> - <span className="Company">VERTICA</span> - <span className="Company">BANK DATA</span> - <span className="Company">XFLOW</span> - <span className="Company">DELEGATE</span> - <span className="Company">AFRY</span> - <span className="Company">NORMAL</span> - <span className="Company">SALLING GROUP</span> - </ul> - <ul aria-hidden="true"> - <span className="Company">DANSKE BANK</span> - <span className="Company">SYSTEMATIC</span> - <span className="Company">UBER</span> - <span className="Company">MOBILEPAY</span> - <span className="Company">VERTICA</span> - <span className="Company">BANK DATA</span> - <span className="Company">XFLOW</span> - <span className="Company">DELEGATE</span> - <span className="Company">AFRY</span> - <span className="Company">NORMAL</span> - <span className="Company">SALLING GROUP</span> - </ul> - <ul aria-hidden="true"> - <span className="Company">DANSKE BANK</span> - <span className="Company">SYSTEMATIC</span> - <span className="Company">UBER</span> - <span className="Company">MOBILEPAY</span> - <span className="Company">VERTICA</span> - <span className="Company">BANK DATA</span> - <span className="Company">XFLOW</span> - <span className="Company">DELEGATE</span> - <span className="Company">AFRY</span> - <span className="Company">NORMAL</span> - <span className="Company">SALLING GROUP</span> - </ul> - </div> - </div> - <div className="Stats"> - <div className="Members"> - <span className="regular-text">MORE THAN</span> - <div className="Container"> - <div className="Text"> - <motion.p style={{y: fadeDown, opacity: opaDown}}><span className="bold-text">500</span> ACTIVE<span className="bold-text"> APPLIERS</span></motion.p> - </div> - <div className="Text"> - <motion.p style={{y: fadeUp, opacity: opaUp}}><span className="bold-text">423</span><span className="bold-text"> RECRUITERS</span></motion.p> - </div> - </div> - <motion.div className="Bar" style={{y: posY, width: posX}}/> - </div> - <motion.img src={icon3} alt="Icon3" style={{opacity: opaImg}}/> - </div> + <Trusted /> + <Stats /> </> ); }; diff --git a/Workly/src/pages/Home/components/Stats.Modules.css b/Workly/src/pages/Home/components/Stats.Modules.css new file mode 100644 index 0000000..e9d6658 --- /dev/null +++ b/Workly/src/pages/Home/components/Stats.Modules.css @@ -0,0 +1,90 @@ +.Stats +{ + margin-top: 4rem; + width: 100%; + height: 45rem; + position: relative; +} + +.Stats .Members +{ + position: absolute; + margin: 5rem; + width: 85%; + color: black; + display: flex; + flex-direction: column; +} + +.Members .regular-text +{ + font-size: 2rem; + font-style: italic; + letter-spacing: 1rem; +} + +.Members .Container p { + font-size: 4rem; + letter-spacing: 0.2rem; +} + +.Members .Container { + margin-top: -0.5rem; + height: 4rem; + position: relative; +} + +.Container .Text +{ + position: absolute; + overflow: hidden; + height: 100%; + display: flex; + align-items: center; +} + + +.Members .Bar +{ + margin-top: 0.2rem; + height: 0.2rem; + border-radius: 0.4rem; + background-color: black; +} + + +.Stats img +{ + margin-top: -4.5rem; + position: absolute; + width: 50%; + margin-left: 50%; +} + +.Stats .Description +{ + width: 50%; + +} + + +.Members .Numbers +{ + margin-top: 2rem; + height: 12rem; + width: 100%; + display: flex; + gap: 4rem; + align-items: center; +} + +.Numbers .Number +{ + height: 10rem; + width: 10rem; + display: flex; + flex-direction: column; + outline: 1px solid black; + align-items: center; + position: relative; +} diff --git a/Workly/src/pages/Home/components/Stats.tsx b/Workly/src/pages/Home/components/Stats.tsx new file mode 100644 index 0000000..81346ea --- /dev/null +++ b/Workly/src/pages/Home/components/Stats.tsx @@ -0,0 +1,60 @@ +import { useScroll, motion, useTransform, useMotionValueEvent } from "framer-motion"; +import './Stats.Modules.css' +import icon3 from '../../../assets/Icon3.png'; + + + + + + +const Stats = () => { + const { scrollY } = useScroll(); + useMotionValueEvent(scrollY, "change", (val) => { + console.log(val); + }) + + const posY = useTransform(scrollY, [475, 620], ["0px", "-110px"]); + const posX = useTransform(scrollY, [200, 475], ["0px", "720px"]); + const fadeDown = useTransform(scrollY, [499, 550], ["0px", "50px"]); + const fadeUp = useTransform(scrollY, [499, 550], ["50px", "0px"]); + const opaDown = useTransform(scrollY, [499, 548], [1, 0]); + const opaUp = useTransform(scrollY, [499, 548], [0, 1]); + const opaImg = useTransform(scrollY, [200, 548], [0, 1]); + + return ( + <div className="Stats"> + <div className="Members"> + <span className="regular-text">MORE THAN</span> + <div className="Container"> + <div className="Text"> + <motion.p style={{y: fadeDown, opacity: opaDown}}><span className="bold-text">500</span> ACTIVE<span className="bold-text"> APPLIERS</span></motion.p> + </div> + <div className="Text"> + <motion.p style={{y: fadeUp, opacity: opaUp}}><span className="bold-text">423</span><span className="bold-text"> RECRUITERS</span></motion.p> + </div> + </div> + <motion.div className="Bar" style={{y: posY, width: posX}}/> + <div className="Description"> + <p>Workly connects over 500 job seekers with 423 recruiters, making hiring easier, faster and smarter.</p> + </div> + <div className="Numbers"> + <div className="Number"> + <div className="Icon"></div> + <p>100</p> + </div> + <div className="Number"> + <div className="Icon"></div> + <p>100</p> + </div> + <div className="Number"> + <div className="Icon"></div> + <p>100</p> + </div> + </div> + </div> + <motion.img src={icon3} alt="Icon3" style={{opacity: opaImg}}/> + </div> + ); +}; + +export default Stats; \ No newline at end of file diff --git a/Workly/src/pages/Home/components/Trusted.Modules.css b/Workly/src/pages/Home/components/Trusted.Modules.css new file mode 100644 index 0000000..9c36165 --- /dev/null +++ b/Workly/src/pages/Home/components/Trusted.Modules.css @@ -0,0 +1,51 @@ +.TrustedCompanies +{ + margin-top: 2rem; + display: flex; + flex-direction: column; + align-items: center; +} + +.TrustedCompanies .Text { + color: black; +} + +.TrustedCompanies .Companies +{ + background-color: black; + width: 80%; + height: 3rem; + border-radius: 0.4rem; +} + +.Companies .Container +{ + background-color: black; + -webkit-mask: linear-gradient(90deg, transparent, white 40%, white 60%, transparent); + mask: linear-gradient(90deg, transparent, white 40%, white 60%, transparent); + display: flex; + justify-content: center; + overflow: hidden; + user-select: none; + align-items: center; + font-weight: bold; + font-size: 0.8rem; + border-radius: 0.4rem; + width: 100%; +} + +.Container ul { + list-style: none; + display: flex; + justify-content: space-between; + flex-shrink: 0; + gap: 2rem; + min-width: 100%; + animation: scroll 35s linear infinite; +} + +@keyframes scroll { + to { + transform: translateX(-100%); + } +} \ No newline at end of file diff --git a/Workly/src/pages/Home/components/Trusted.tsx b/Workly/src/pages/Home/components/Trusted.tsx new file mode 100644 index 0000000..2b236ea --- /dev/null +++ b/Workly/src/pages/Home/components/Trusted.tsx @@ -0,0 +1,56 @@ +import "./Trusted.Modules.css" + +const Trusted = () => { + return ( + <div className="TrustedCompanies"> + <div className="Text"> + <p>Trusted by over <span className="bold-text">500+</span> companies all over the world</p> + </div> + <div className="Companies"> + <div className="Container"> + <ul> + <span className="Company">DANSKE BANK</span> + <span className="Company">SYSTEMATIC</span> + <span className="Company">UBER</span> + <span className="Company">MOBILEPAY</span> + <span className="Company">VERTICA</span> + <span className="Company">BANK DATA</span> + <span className="Company">XFLOW</span> + <span className="Company">DELEGATE</span> + <span className="Company">AFRY</span> + <span className="Company">NORMAL</span> + <span className="Company">SALLING GROUP</span> + </ul> + <ul aria-hidden="true"> + <span className="Company">DANSKE BANK</span> + <span className="Company">SYSTEMATIC</span> + <span className="Company">UBER</span> + <span className="Company">MOBILEPAY</span> + <span className="Company">VERTICA</span> + <span className="Company">BANK DATA</span> + <span className="Company">XFLOW</span> + <span className="Company">DELEGATE</span> + <span className="Company">AFRY</span> + <span className="Company">NORMAL</span> + <span className="Company">SALLING GROUP</span> + </ul> + <ul aria-hidden="true"> + <span className="Company">DANSKE BANK</span> + <span className="Company">SYSTEMATIC</span> + <span className="Company">UBER</span> + <span className="Company">MOBILEPAY</span> + <span className="Company">VERTICA</span> + <span className="Company">BANK DATA</span> + <span className="Company">XFLOW</span> + <span className="Company">DELEGATE</span> + <span className="Company">AFRY</span> + <span className="Company">NORMAL</span> + <span className="Company">SALLING GROUP</span> + </ul> + </div> + </div> + </div> + ); +}; + +export default Trusted; \ No newline at end of file -- GitLab