Skip to content

Commit 0e18a47

Browse files
Major changes in JAF (#268)
* fix: Added Max size for pdf and allowed file size * Update JobDetails.tsx * fix: added checks and errors for marks and cpi * Update JobDetails.tsx * fix: added rupee symbol before stipends * fix: past dates cant be selected for offer letter and joining date * feat: Currency dropdown menu with custom currency * fix: All currency selections are in sync (same) * Update JobDetails.tsx * fix: add accommodation and PPO confirmation to salary card * extended to placements * Improvements * Major improvements * change * JAF Update * Update * handle rate limit error --------- Co-authored-by: yasharyasaxena <yasharya16032006@gmail.com> Co-authored-by: Yash Arya Saxena <105877652+yasharyasaxena@users.noreply.github.com>
1 parent 13fe18a commit 0e18a47

29 files changed

Lines changed: 4316 additions & 1618 deletions

File tree

public/images/iiti.png

348 KB
Loading

src/app/(authroutes)/layout.tsx

Lines changed: 39 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,55 @@
11
import "../globals.css";
22
import { Providers } from "@/store/provider";
33
import { Suspense } from "react";
4+
import { GraduationCap, CheckCircle } from "lucide-react";
5+
import Image from "next/image";
46

57
interface Props {
68
children: React.ReactNode;
79
}
810

911
const AuthLayout = async ({ children }: Props) => {
1012
return (
11-
<div className="flex-auto flex h-[92vh] ">
13+
<div className="min-h-screen bg-gray-50">
1214
<Providers>
13-
<div className="flex-auto flex h-[92vh] ">
14-
{/* sidebar and main content share this space */}
15-
<Suspense fallback={<>Loading...</>}></Suspense>
16-
<Providers>
17-
<div className="w-screen min-h-screen h-max bg-[url(/portal/images/iiti_bg.JPG)] bg-cover bg-fixed bg-center bg-no-repeat absolute">
18-
<div className="w-full min-h-full h-max bg-gradient-to-b from-black/40 to-black/90 bg-opacity-50 absolute">
19-
{children}
15+
<div className="min-h-screen flex">
16+
{/* Left side - Brand/Info section - Fixed */}
17+
<div className="hidden lg:flex lg:w-[560px] lg:flex-col lg:justify-center lg:px-12 bg-gradient-to-br from-slate-800 to-slate-800 lg:fixed lg:top-0 lg:left-0 lg:h-screen lg:z-10">
18+
19+
<div className="space-y-12 opacity-80">
20+
{/* Logo/Brand Section */}
21+
<div className="text-center space-y-4">
22+
<div className="flex justify-center">
23+
<Image
24+
src="/portal/images/iiti.png"
25+
alt="IIT Indore Logo"
26+
width={140}
27+
height={140}
28+
/>
29+
</div>
30+
<div>
31+
<h1 className="text-4xl font-bold text-white mb-2">
32+
Training & Placement Cell
33+
</h1>
34+
<div className="flex items-center justify-center gap-2 text-slate-300">
35+
<GraduationCap className="h-5 w-5" />
36+
<p className="text-lg font-medium">Indian Institute of Technology, Indore</p>
37+
</div>
38+
</div>
2039
</div>
40+
41+
42+
</div>
43+
</div>
44+
45+
{/* Right side - Form section - Scrollable */}
46+
<div className="flex-1 flex flex-col justify-center px-8 py-12 lg:px-12 xl:px-16 bg-white lg:ml-[560px]">
47+
<div className="sm:mx-auto sm:w-full sm:max-w-lg lg:max-w-xl xl:max-w-2xl">
48+
<Suspense fallback={<div className="animate-pulse bg-gray-200 h-64 rounded-lg"></div>}>
49+
{children}
50+
</Suspense>
2151
</div>
22-
</Providers>
52+
</div>
2353
</div>
2454
</Providers>
2555
</div>

src/app/(authroutes)/recruiter/signin/page.tsx

Lines changed: 80 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,44 +1,107 @@
11
"use client";
22

33
import { useState } from "react";
4-
import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card";
4+
import { Card, CardContent, CardHeader } from "@/components/ui/card";
55
import { Input } from "@/components/ui/input";
66
import { LoginWithEmail } from "@/components/loginForms/loginWithEmail";
77
import { Button } from "@/components/ui/button";
8+
import { Label } from "@/components/ui/label";
89
import Link from "next/link";
10+
import { Mail, Building2, ArrowRight } from "lucide-react";
11+
912
const LoginForm = () => {
1013
const [email, setEmail] = useState<string>("");
1114

1215
return (
13-
<div className="min-h-screen flex items-center justify-center">
14-
<Card className="w-full max-w-md backdrop-blur-lg bg-white/30 shadow-xl">
15-
<CardHeader>
16-
<CardTitle className="text-2xl font-bold text-center text-gray-800">
17-
Login
18-
</CardTitle>
16+
<div className="w-full">
17+
18+
19+
{/* Form Card */}
20+
<Card className="shadow-lg border-0 bg-white">
21+
<CardHeader className="pb-4">
22+
<div className="text-center mb-8">
23+
<div className="flex justify-center mb-4">
24+
<div className="p-3 bg-slate-100 rounded-full">
25+
<Building2 className="h-8 w-8 text-slate-700" />
26+
</div>
27+
</div>
28+
<h2 className="text-3xl font-bold text-gray-900 mb-2">
29+
Recruiter Sign In
30+
</h2>
31+
<p className="text-gray-600">
32+
Access your recruitment dashboard
33+
</p>
34+
</div>
1935
</CardHeader>
20-
<CardContent>
21-
<div className="space-y-4">
22-
<div>
36+
<CardContent className="space-y-6">
37+
<div className="space-y-2">
38+
<Label htmlFor="email" className="text-sm font-medium text-gray-700">
39+
Email Address
40+
</Label>
41+
<div className="relative">
42+
<Mail className="absolute left-3 top-1/2 transform -translate-y-1/2 h-4 w-4 text-gray-400" />
2343
<Input
2444
type="email"
2545
id="email"
26-
placeholder="email@domain.com"
27-
className="w-full bg-white/50 border-gray-300 focus:border-purple-500 focus:ring-purple-500"
46+
placeholder="recruiter@company.com"
47+
className="pl-10 h-12 border-gray-300 focus:border-slate-500 focus:ring-slate-500 rounded-lg"
2848
required
2949
value={email}
3050
onChange={(e) => setEmail(e.target.value)}
3151
/>
3252
</div>
33-
<div className="flex justify-center gap-3 items-center">
34-
<LoginWithEmail email={email} />
35-
<Link href={"/recruiter/signup/"}>
36-
<Button variant="outline">Sign Up</Button>
37-
</Link>
53+
</div>
54+
55+
<div className="space-y-4">
56+
<LoginWithEmail email={email} />
57+
58+
<div className="relative">
59+
<div className="absolute inset-0 flex items-center">
60+
<span className="w-full border-t border-gray-300" />
61+
</div>
62+
<div className="relative flex justify-center text-xs uppercase">
63+
<span className="bg-white px-2 text-gray-500">Or</span>
64+
</div>
65+
</div>
66+
67+
<Link href="/recruiter/signup/" className="block">
68+
<Button
69+
variant="outline"
70+
className="w-full h-12 border-gray-300 hover:bg-gray-50 text-gray-700 font-medium"
71+
>
72+
Create New Account
73+
<ArrowRight className="ml-2 h-4 w-4" />
74+
</Button>
75+
</Link>
76+
</div>
77+
78+
{/* Additional Info */}
79+
<div className="pt-4 border-t border-gray-200">
80+
<div className="text-center text-sm text-gray-600">
81+
<p>
82+
Need help?{" "}
83+
<a href="mailto:tpcwebteam@iiti.ac.in" className="text-slate-600 hover:text-slate-800 font-medium">
84+
Contact Support
85+
</a>
86+
</p>
3887
</div>
3988
</div>
4089
</CardContent>
4190
</Card>
91+
92+
{/* Footer */}
93+
<div className="mt-8 text-center text-sm text-gray-500">
94+
<p>
95+
By signing in, you agree to our{" "}
96+
<a href="#" className="text-slate-600 hover:text-slate-800">
97+
Terms of Service
98+
</a>{" "}
99+
and{" "}
100+
<a href="#" className="text-slate-600 hover:text-slate-800">
101+
Privacy Policy
102+
</a>
103+
</p>
104+
</div>
42105
</div>
43106
);
44107
};
Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,14 @@
11
import RecruiterSignup from "@/components/loginForms/recruiterSignup";
22
import React from "react";
3+
import { Building2 } from "lucide-react";
34

45
const Signup = () => {
5-
return <RecruiterSignup />;
6+
return (
7+
<div className="w-full">
8+
9+
<RecruiterSignup />
10+
</div>
11+
);
612
};
713

814
export default Signup;

src/components/Admin/Job/Salaries.tsx

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -342,12 +342,12 @@ const Salaries = ({
342342
{editMode ? (
343343
<input
344344
type="text"
345-
name="accomodation"
346-
value={formData.salaries[index].accomodation}
347-
onChange={(e) => handleChange(e, index, "accomodation")}
345+
name="accommodation"
346+
value={formData.salaries[index].accommodation}
347+
onChange={(e) => handleChange(e, index, "accommodation")}
348348
/>
349349
) : (
350-
<div>{salary.accomodation}</div>
350+
<div>{salary.accommodation}</div>
351351
)}
352352
</div>
353353

@@ -356,12 +356,12 @@ const Salaries = ({
356356
{editMode ? (
357357
<input
358358
type="text"
359-
name="tenetativeCTC"
360-
value={formData.salaries[index].tenetativeCTC}
361-
onChange={(e) => handleChange(e, index, "tenetativeCTC")}
359+
name="tentativeCTC"
360+
value={formData.salaries[index].tentativeCTC}
361+
onChange={(e) => handleChange(e, index, "tentativeCTC")}
362362
/>
363363
) : (
364-
<div>{salary.tenetativeCTC}</div>
364+
<div>{salary.tentativeCTC}</div>
365365
)}
366366
</div>
367367
</div>

src/components/Calendar/CalenderComponent/SidebarCalendar.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import Labels from "./Labels";
33

44
export default function SidebarCalendar() {
55
return (
6-
<aside className="border p-5 w-52">
6+
<aside className="border border-slate-600 bg-slate-800 p-5 w-52">
77
<Labels />
88
</aside>
99
);

0 commit comments

Comments
 (0)