diff --git a/src/app/components/RemoveDoubleClick.tsx b/src/app/components/RemoveDoubleClick.tsx new file mode 100644 index 0000000..93fb8e8 --- /dev/null +++ b/src/app/components/RemoveDoubleClick.tsx @@ -0,0 +1,10 @@ +const RemoveDoubleClick = () => { + document.addEventListener("mousedown", (e) => { + if (e.detail > 1) { + e.preventDefault(); + } + }); + }; + + export default RemoveDoubleClick; + \ No newline at end of file diff --git a/src/app/components/SingleLineFooter.tsx b/src/app/components/SingleLineFooter.tsx new file mode 100644 index 0000000..c71e77c --- /dev/null +++ b/src/app/components/SingleLineFooter.tsx @@ -0,0 +1,18 @@ +import React from 'react'; + +const SingleLineFooter = () => ( + +); + +export default SingleLineFooter; diff --git a/src/app/globals.css b/src/app/globals.css index 405d662..d03995d 100644 --- a/src/app/globals.css +++ b/src/app/globals.css @@ -15,6 +15,11 @@ border-radius: 4px; } +.no-select { + user-select: none; +} + + @keyframes moveBackground { diff --git a/src/app/landing/MainLanding.tsx b/src/app/landing/MainLanding.tsx index 058279e..3f7daf6 100644 --- a/src/app/landing/MainLanding.tsx +++ b/src/app/landing/MainLanding.tsx @@ -1,3 +1,4 @@ +/* eslint-disable react/no-unescaped-entities */ "use client"; import LandingNav from "./components/LandingNav"; import HeroSection from "./components/HeroSection"; @@ -13,6 +14,7 @@ import HowItWorks from "./components/HowitWorks"; import AnimatedButton from "./components/Button2"; import { AnimatePresence } from "framer-motion"; import Footer from "./components/Footer"; +import RemoveDoubleClick from "../components/RemoveDoubleClick"; @@ -71,11 +73,12 @@ const images = [ export default function MainLanding() { - const [hovered, setHovered] = useState(false); + const [index, setIndex] = useState(0); useEffect(() => { + RemoveDoubleClick(); if (images.length <= 1) return; const interval = setInterval(() => { diff --git a/src/app/landing/components/Footer.tsx b/src/app/landing/components/Footer.tsx index 90455cf..cbd7d6d 100644 --- a/src/app/landing/components/Footer.tsx +++ b/src/app/landing/components/Footer.tsx @@ -40,7 +40,7 @@ const Footer = () => { diff --git a/src/app/sign-in/components/Checkbox.tsx b/src/app/sign-in/components/Checkbox.tsx new file mode 100644 index 0000000..61f17ec --- /dev/null +++ b/src/app/sign-in/components/Checkbox.tsx @@ -0,0 +1,78 @@ +import * as React from "react"; +import { motion, useMotionValue, useTransform } from "framer-motion"; + +const tickVariants = { + pressed: (isChecked: boolean) => ({ pathLength: isChecked ? 0.85 : 0.2 }), + checked: { pathLength: 1 }, + unchecked: { pathLength: 0 }, +}; + +const boxVariants = { + hover: { scale: 1.05, strokeWidth: 60 }, + pressed: { scale: 0.95, strokeWidth: 35 }, + checked: { stroke: "#2196F3" }, + unchecked: { stroke: "#ddd", strokeWidth: 50 }, +}; + +interface CheckboxProps { + checked: boolean; + onChange: () => void; +} + +export const Checkbox: React.FC = ({ checked, onChange }) => { + const pathLength = useMotionValue(0); + const opacity = useTransform(pathLength, [0.05, 0.15], [0, 1]); + + return ( + + ); +}; diff --git a/src/app/sign-in/page.tsx b/src/app/sign-in/page.tsx new file mode 100644 index 0000000..f4fc275 --- /dev/null +++ b/src/app/sign-in/page.tsx @@ -0,0 +1,99 @@ +"use client"; + + +import { useEffect, useState } from "react"; +import { motion } from "framer-motion"; +import { Checkbox } from "./components/Checkbox"; +import RemoveDoubleClick from "../components/RemoveDoubleClick"; +import SingleLineFooter from "../components/SingleLineFooter"; + +export default function SignInPage() { + const [isVisible, setIsVisible] = useState(false); + const [rememberMe, setRememberMe] = useState(false); + + useEffect(() => { + setIsVisible(true); + RemoveDoubleClick(); + }, []); + + const [showPassword, setShowPassword] = useState(false); + + return ( + +
+
Test Logo
+ +

+ Sign in +

+
+ +
+ + +
+
+ + setRememberMe(!rememberMe)} /> + +
+ +

+ By clicking Sign In, you agree to the + User Agreement, + Privacy Policy, and + Cookie Policy. +

+
+
+ or +
+
+

+ For Student Login +

+ +
+

+ New Employer? Sign Up Today +

+
+ + + + +
+ + ); +}