diff --git a/components/NavBar.jsx b/components/NavBar.jsx index 8cd1666..eda045c 100644 --- a/components/NavBar.jsx +++ b/components/NavBar.jsx @@ -274,6 +274,15 @@ export default function NavBar() { Organizations + + About + +
{user !== null ? ( <> diff --git a/components/about.jsx b/components/about.jsx new file mode 100644 index 0000000..bc7a608 --- /dev/null +++ b/components/about.jsx @@ -0,0 +1,64 @@ +import React, { useEffect, useState } from "react"; +import NavBar from "@/components/NavBar"; // Import the NavBar +import { motion } from "framer-motion"; // Import framer-motion for animation effects + +export default function About() { + const [showContent, setShowContent] = useState(false); + + // A simple animation effect when the page loads + useEffect(() => { + setTimeout(() => { + setShowContent(true); + }, 200); + }, []); + + return ( + <> + +
+ +

+ About JobSewa +

+

+ JobSewa is a platform dedicated to bridging the gap between job + seekers and employers. Whether you're looking to post jobs, find + opportunities, or stay up-to-date with the latest industry trends, + we've got you covered. Our mission is to empower both employers and + job seekers by providing a seamless experience and fostering a + supportive community. +

+ +

+ Our Vision +

+

+ To build a future where job searching is effortless, effective, + and efficient for all. Our aim is to make meaningful connections + between talents and opportunities that help people achieve their + career goals. +

+

+ Our Mission +

+

+ We strive to create a job platform that prioritizes user + experience, provides transparency, and connects the right people + to the right jobs in a timely manner. +

+
+
+
+ + ); +} diff --git a/pages/_app.js b/pages/_app.js index 3594623..5b2c1f7 100644 --- a/pages/_app.js +++ b/pages/_app.js @@ -5,6 +5,8 @@ import { useEffect } from "react"; import { useRouter } from "next/router"; import Cookies from 'js-cookie'; import 'react-toastify/dist/ReactToastify.css'; +import '../styles/globals.css'; // Ensure this is imported to use globally + diff --git a/pages/auth/forget-password.jsx b/pages/auth/forget-password.jsx index 015c484..a51b1d9 100644 --- a/pages/auth/forget-password.jsx +++ b/pages/auth/forget-password.jsx @@ -38,7 +38,7 @@ export default function ForgetPassword() { } if (formData.password !== formData.confirmPassword) { - toast.error("Password and Confirm Password does not match"); + toast.error("Password and Confirm Password do not match"); } const res = await forget_password(formData); @@ -55,94 +55,97 @@ export default function ForgetPassword() { return ( <> -
+
-
-

- Change Password -

-
-
- - - setFormData({ ...formData, email: e.target.value }) - } - type="email" - name="email" - id="email" - className="bg-gray-50 border border-gray-300 text-gray-900 sm:text-sm rounded-lg focus:ring-indigo-600 focus:border-sky-700 block w-full p-2.5 " - placeholder="name@company.com" - required="" - /> - {error.email && ( -

{error.email}

- )} -
-
- - - setFormData({ ...formData, password: e.target.value }) - } - type="password" - name="password" - id="password" - placeholder="••••••••" - className="bg-gray-50 border border-gray-300 text-gray-900 sm:text-sm rounded-lg focus:ring-indigo-600 focus:border-sky-700 block w-full p-2.5 " - required="" - /> - {error.password && ( -

{error.password}

- )} -
-
- - - setFormData({ - ...formData, - confirmPassword: e.target.value, - }) - } - type="password" - name="confirm-password" - id="confirm-password" - placeholder="••••••••" - className="bg-gray-50 border border-gray-300 text-gray-900 sm:text-sm rounded-lg focus:ring-indigo-600 focus:border-sky-700 block w-full p-2.5 " - required="" - /> - {error.confirmPassword && ( -

- {error.confirmPassword} -

- )} -
- -
+
+ + + setFormData({ ...formData, email: e.target.value }) + } + type="email" + name="email" + id="email" + className="bg-gray-50 border border-gray-300 text-gray-900 sm:text-sm rounded-lg focus:ring-purple-500 focus:border-purple-700 block w-full p-2.5 transition-all duration-300 ease-in-out hover:shadow-glow hover:shadow-purple-500/50" + placeholder="name@company.com" + required + /> + {error.email && ( +

{error.email}

+ )} +
+
+ + + setFormData({ ...formData, password: e.target.value }) + } + type="password" + name="password" + id="password" + placeholder="••••••••" + className="bg-gray-50 border border-gray-300 text-gray-900 sm:text-sm rounded-lg focus:ring-purple-500 focus:border-purple-700 block w-full p-2.5 transition-all duration-300 ease-in-out hover:shadow-glow hover:shadow-purple-500/50" + required + /> + {error.password && ( +

{error.password}

+ )} +
+
+ + + setFormData({ + ...formData, + confirmPassword: e.target.value, + }) + } + type="password" + name="confirm-password" + id="confirm-password" + placeholder="••••••••" + className="bg-gray-50 border border-gray-300 text-gray-900 sm:text-sm rounded-lg focus:ring-purple-500 focus:border-purple-700 block w-full p-2.5 transition-all duration-300 ease-in-out hover:shadow-glow hover:shadow-purple-500/50" + required + /> + {error.confirmPassword && ( +

+ {error.confirmPassword} +

+ )} +
+ + +
diff --git a/pages/auth/globals.css b/pages/auth/globals.css new file mode 100644 index 0000000..89daf3a --- /dev/null +++ b/pages/auth/globals.css @@ -0,0 +1,21 @@ +/* styles/globals.css */ + +@keyframes futuristicGlow { + 0% { + box-shadow: 0 0 5px #0fa, 0 0 10px #0fa, 0 0 20px #0fa; + transform: scale(1); + } + 50% { + box-shadow: 0 0 20px #0fa, 0 0 40px #0fa, 0 0 60px #0fa; + transform: scale(1.1); + } + 100% { + box-shadow: 0 0 5px #0fa, 0 0 10px #0fa, 0 0 20px #0fa; + transform: scale(1); + } + } + + .animate-glow { + animation: futuristicGlow 0.6s ease-in-out; + } + \ No newline at end of file diff --git a/pages/auth/login.jsx b/pages/auth/login.jsx index 53fc8e7..942e210 100644 --- a/pages/auth/login.jsx +++ b/pages/auth/login.jsx @@ -11,12 +11,19 @@ import NavBar from "@/components/NavBar"; export default function Login() { const dispatch = useDispatch(); - const [formData, setFormData] = useState({ email: "", password: "" }); const [error, setError] = useState({ email: "", password: "" }); + const [isAnimating, setIsAnimating] = useState(false); // State to track animation const handleSubmit = async (e) => { e.preventDefault(); + + // Trigger the animation + setIsAnimating(true); + + // Reset the animation after 0.6s (duration of the animation) + setTimeout(() => setIsAnimating(false), 600); + if (!formData.email) { setError({ ...error, email: "Email Field is Required" }); return; @@ -54,11 +61,11 @@ export default function Login() { return ( <> -
-
-
+
+
+
-

+

Sign in to your account

@@ -80,7 +87,7 @@ export default function Login() { type="email" name="email" id="email" - className="bg-gray-50 border border-gray-300 text-gray-900 sm:text-sm rounded-lg focus:ring-indigo-600 focus:border-sky-700 block w-full p-2.5 " + className="bg-gray-900 border border-gray-700 text-white sm:text-sm rounded-lg focus:ring-cyan-500 focus:border-cyan-500 focus:outline-none transition-all duration-300 w-full p-2.5 neon-input" placeholder="name@company.com" required="" /> @@ -91,7 +98,7 @@ export default function Login() {
@@ -103,7 +110,7 @@ export default function Login() { name="password" id="password" placeholder="••••••••" - className="bg-gray-50 border border-gray-300 text-gray-900 sm:text-sm rounded-lg focus:ring-indigo-600 focus:border-sky-700 block w-full p-2.5" + className="bg-gray-900 border border-gray-700 text-white sm:text-sm rounded-lg focus:ring-cyan-500 focus:border-cyan-500 focus:outline-none transition-all duration-300 w-full p-2.5 neon-input" required="" /> {error.password && ( @@ -117,14 +124,14 @@ export default function Login() { id="remember" aria-describedby="remember" type="checkbox" - className="w-4 h-4 border border-gray-300 rounded bg-gray-50 focus:ring-3 focus:ring-indigo-300 dark:focus:ring-indigo-600 " + className="w-4 h-4 border border-gray-300 rounded bg-gray-900 focus:ring-3 focus:ring-cyan-500" required="" />
@@ -132,22 +139,24 @@ export default function Login() {
Forgot password?
-

+

Don’t have an account yet?{" "} Sign up @@ -158,6 +167,46 @@ export default function Login() {

+ + ); } diff --git a/pages/auth/register.jsx b/pages/auth/register.jsx index d64142b..e49ffa9 100644 --- a/pages/auth/register.jsx +++ b/pages/auth/register.jsx @@ -16,7 +16,7 @@ export default function Register() { } }, [router]); - const [formData, setFormData] = useState({ email: "", password: "" }); + const [formData, setFormData] = useState({ email: "", password: "", name: "" }); const [error, setError] = useState({ email: "", password: "", name: "" }); const handleSubmit = async (e) => { @@ -48,107 +48,107 @@ export default function Register() { return ( <> -
-
-
-
-

- Register your account -

- +
+

+ Register your account +

+ +
+ + + setFormData({ ...formData, name: e.target.value }) + } + type="text" + name="name" + id="name" + className="bg-transparent border border-gray-600 text-gray-300 sm:text-sm rounded-lg focus:ring-indigo-500 focus:border-indigo-500 block w-full p-2.5 transition duration-300 ease-in-out transform hover:scale-105" + placeholder="Enter your name" + /> + {error.name && ( +

{error.name}

+ )} +
- -

- Already have an account{" "} - - Sign In - -

- +
+ + + setFormData({ ...formData, email: e.target.value }) + } + type="email" + name="email" + id="email" + className="bg-transparent border border-gray-600 text-gray-300 sm:text-sm rounded-lg focus:ring-indigo-500 focus:border-indigo-500 block w-full p-2.5 transition duration-300 ease-in-out transform hover:scale-105" + placeholder="name@company.com" + /> + {error.email && ( +

{error.email}

+ )}
-
-
+
+ + + setFormData({ ...formData, password: e.target.value }) + } + type="password" + name="password" + id="password" + className="bg-transparent border border-gray-600 text-gray-300 sm:text-sm rounded-lg focus:ring-indigo-500 focus:border-indigo-500 block w-full p-2.5 transition duration-300 ease-in-out transform hover:scale-105" + placeholder="••••••••" + /> + {error.password && ( +

{error.password}

+ )} +
+ + + +

+ Already have an account?{" "} + + Sign In + +

+ +
+ + ); }