Prakhar Singh commited on
Commit
b418a95
·
1 Parent(s): 10e2cf8

Auth page added

Browse files
Frontend/index.html CHANGED
@@ -4,7 +4,7 @@
4
  <meta charset="UTF-8" />
5
  <link rel="icon" type="image/svg+xml" href="/vite.svg" />
6
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
7
- <title>Prep-AI</title>
8
  </head>
9
  <body>
10
  <div id="root"></div>
 
4
  <meta charset="UTF-8" />
5
  <link rel="icon" type="image/svg+xml" href="/vite.svg" />
6
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
7
+ <title>package</title>
8
  </head>
9
  <body>
10
  <div id="root"></div>
Frontend/src/components/AuthModal.tsx DELETED
@@ -1,43 +0,0 @@
1
- // src/components/AuthModal.tsx
2
-
3
- import React from 'react';
4
- import { X } from 'lucide-react';
5
-
6
- interface AuthModalProps {
7
- isOpen: boolean;
8
- onClose: () => void;
9
- children: React.ReactNode;
10
- }
11
-
12
- const AuthModal: React.FC<AuthModalProps> = ({ isOpen, onClose, children }) => {
13
- if (!isOpen) return null;
14
-
15
- return (
16
- // Backdrop/Overlay: Fixed position, full screen, dark, and translucent
17
- <div
18
- className="fixed inset-0 z-[100] bg-black bg-opacity-80 backdrop-blur-sm flex items-center justify-center p-4 transition-opacity duration-300"
19
- onClick={onClose} // Close the modal when clicking outside
20
- >
21
- {/* Modal Content Container: Prevent closing when clicking on the form itself */}
22
- <div
23
- className="relative w-full max-w-md bg-slate-900 border border-blue-500/30 rounded-xl shadow-2xl animate-fade-in-up"
24
- onClick={(e) => e.stopPropagation()}
25
- >
26
- {/* Close Button */}
27
- <button
28
- className="absolute top-4 right-4 p-2 text-gray-400 hover:text-blue-400 transition-colors z-10"
29
- onClick={onClose}
30
- >
31
- <X className="w-6 h-6" />
32
- </button>
33
-
34
- {/* Children (SignIn or SignUp content) */}
35
- <div className="p-8 pt-10">
36
- {children}
37
- </div>
38
- </div>
39
- </div>
40
- );
41
- };
42
-
43
- export default AuthModal;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Frontend/src/components/auth/SignIn.tsx DELETED
@@ -1,83 +0,0 @@
1
- import React from 'react';
2
- import { Mail, Lock, LogIn, Chrome, X } from 'lucide-react';
3
-
4
- // Added onClose prop to handle form-internal links/closing
5
- interface SignInProps {
6
- onClose: () => void;
7
- onSwitchToSignUp: () => void;
8
- }
9
-
10
- const SignIn: React.FC<SignInProps> = ({ onClose, onSwitchToSignUp }) => {
11
- return (
12
- // Note: The outer 'div' styling has been removed, as the modal wrapper provides the background and padding.
13
- // The inner container's styling is now applied by the AuthModal.tsx parent.
14
- <>
15
- <h2 className="text-3xl font-bold mb-8 text-center text-white">
16
- Welcome Back
17
- </h2>
18
-
19
- {/* --- Sign In Form --- */}
20
- <form className="space-y-5">
21
- {/* Email Input */}
22
- <div>
23
- <label htmlFor="email" className="block text-sm font-medium mb-1 text-gray-300">Email Address</label>
24
- <div className="relative">
25
- <Mail className="w-5 h-5 absolute left-3 top-1/2 transform -translate-y-1/2 text-blue-400" />
26
- <input
27
- id="email"
28
- type="email"
29
- placeholder="you@example.com"
30
- className="w-full pl-10 pr-4 py-3 border rounded-lg focus:outline-none focus:ring-2 bg-slate-800 border-slate-700 text-white focus:ring-blue-500 transition-colors"
31
- />
32
- </div>
33
- </div>
34
-
35
- {/* Password Input */}
36
- <div>
37
- <label htmlFor="password" className="block text-sm font-medium mb-1 text-gray-300">Password</label>
38
- <div className="relative">
39
- <Lock className="w-5 h-5 absolute left-3 top-1/2 transform -translate-y-1/2 text-blue-400" />
40
- <input
41
- id="password"
42
- type="password"
43
- placeholder="••••••••"
44
- className="w-full pl-10 pr-4 py-3 border rounded-lg focus:outline-none focus:ring-2 bg-slate-800 border-slate-700 text-white focus:ring-blue-500 transition-colors"
45
- />
46
- </div>
47
- </div>
48
-
49
- {/* Sign In Button */}
50
- <button
51
- type="submit"
52
- className="w-full px-5 py-3 rounded-lg bg-gradient-to-r from-blue-500 to-gray-500 hover:from-blue-600 hover:to-blue-500 transition shadow-lg shadow-blue-500/50 text-lg font-semibold flex items-center justify-center gap-2 mt-6 text-white"
53
- >
54
- <LogIn className="w-5 h-5" />
55
- Sign In
56
- </button>
57
- </form>
58
-
59
- <div className="flex items-center my-6">
60
- <div className="flex-grow border-t border-slate-700"></div>
61
- <span className="flex-shrink mx-4 text-sm text-gray-400">OR</span>
62
- <div className="flex-grow border-t border-slate-700"></div>
63
- </div>
64
-
65
- {/* --- Social Sign In --- */}
66
- <button
67
- className="w-full px-5 py-3 rounded-lg border-2 border-blue-400 text-blue-400 hover:bg-blue-400/10 transition-all font-semibold flex items-center justify-center gap-3 bg-slate-900"
68
- >
69
- <Chrome className="w-5 h-5" />
70
- Sign In with Google
71
- </button>
72
-
73
- <p className="mt-8 text-center text-sm text-gray-400">
74
- Don't have an account?
75
- <button type="button" onClick={onSwitchToSignUp} className="ml-2 font-medium text-blue-400 hover:text-blue-300 transition-colors">
76
- Sign Up
77
- </button>
78
- </p>
79
- </>
80
- );
81
- };
82
-
83
- export default SignIn;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Frontend/src/components/auth/SignUp.tsx DELETED
@@ -1,109 +0,0 @@
1
- import React from 'react';
2
- import { User, Mail, Lock, UserPlus, Chrome, X } from 'lucide-react';
3
-
4
- // Added onClose prop to handle form-internal links/closing
5
- interface SignUpProps {
6
- onClose: () => void;
7
- onSwitchToSignIn: () => void;
8
- }
9
-
10
- const SignUp: React.FC<SignUpProps> = ({ onClose, onSwitchToSignIn }) => {
11
- return (
12
- // Note: The outer 'div' styling has been removed, as the modal wrapper provides the background and padding.
13
- <>
14
- <h2 className="text-3xl font-bold mb-8 text-center text-white">
15
- Create Your Account
16
- </h2>
17
- {/* --- Sign Up Form --- */}
18
- <form className="space-y-5">
19
- {/* Name Input */}
20
- <div>
21
- <label htmlFor="name" className="block text-sm font-medium mb-1 text-gray-300">Full Name</label>
22
- <div className="relative">
23
- <User className="w-5 h-5 absolute left-3 top-1/2 transform -translate-y-1/2 text-blue-400" />
24
- <input
25
- id="name"
26
- type="text"
27
- placeholder="John Doe"
28
- className="w-full pl-10 pr-4 py-3 border rounded-lg focus:outline-none focus:ring-2 bg-slate-800 border-slate-700 text-white focus:ring-blue-500 transition-colors"
29
- />
30
- </div>
31
- </div>
32
-
33
- {/* Email Input */}
34
- <div>
35
- <label htmlFor="email" className="block text-sm font-medium mb-1 text-gray-300">Email Address</label>
36
- <div className="relative">
37
- <Mail className="w-5 h-5 absolute left-3 top-1/2 transform -translate-y-1/2 text-blue-400" />
38
- <input
39
- id="email"
40
- type="email"
41
- placeholder="you@example.com"
42
- className="w-full pl-10 pr-4 py-3 border rounded-lg focus:outline-none focus:ring-2 bg-slate-800 border-slate-700 text-white focus:ring-blue-500 transition-colors"
43
- />
44
- </div>
45
- </div>
46
-
47
- {/* Password Input */}
48
- <div>
49
- <label htmlFor="password" className="block text-sm font-medium mb-1 text-gray-300">Password</label>
50
- <div className="relative">
51
- <Lock className="w-5 h-5 absolute left-3 top-1/2 transform -translate-y-1/2 text-blue-400" />
52
- <input
53
- id="password"
54
- type="password"
55
- placeholder="••••••••"
56
- className="w-full pl-10 pr-4 py-3 border rounded-lg focus:outline-none focus:ring-2 bg-slate-800 border-slate-700 text-white focus:ring-blue-500 transition-colors"
57
- />
58
- </div>
59
- </div>
60
-
61
- {/* Confirm Password Input */}
62
- <div>
63
- <label htmlFor="confirm-password" className="block text-sm font-medium mb-1 text-gray-300">Confirm Password</label>
64
- <div className="relative">
65
- <Lock className="w-5 h-5 absolute left-3 top-1/2 transform -translate-y-1/2 text-blue-400" />
66
- <input
67
- id="confirm-password"
68
- type="password"
69
- placeholder="••••••••"
70
- className="w-full pl-10 pr-4 py-3 border rounded-lg focus:outline-none focus:ring-2 bg-slate-800 border-slate-700 text-white focus:ring-blue-500 transition-colors"
71
- />
72
- </div>
73
- </div>
74
-
75
- {/* Sign Up Button */}
76
- <button
77
- type="submit"
78
- className="w-full px-5 py-3 rounded-lg bg-gradient-to-r from-blue-500 to-gray-500 hover:from-blue-600 hover:to-blue-500 transition shadow-lg shadow-blue-500/50 text-lg font-semibold flex items-center justify-center gap-2 mt-6 text-white"
79
- >
80
- <UserPlus className="w-5 h-5" />
81
- Sign Up
82
- </button>
83
- </form>
84
-
85
- <div className="flex items-center my-6">
86
- <div className="flex-grow border-t border-slate-700"></div>
87
- <span className="flex-shrink mx-4 text-sm text-gray-400">OR</span>
88
- <div className="flex-grow border-t border-slate-700"></div>
89
- </div>
90
-
91
- {/* --- Social Sign Up --- */}
92
- <button
93
- className="w-full px-5 py-3 rounded-lg border-2 border-blue-400 text-blue-400 hover:bg-blue-400/10 transition-all font-semibold flex items-center justify-center gap-3 bg-slate-900"
94
- >
95
- <Chrome className="w-5 h-5" />
96
- Sign Up with Google
97
- </button>
98
-
99
- <p className="mt-8 text-center text-sm text-gray-400">
100
- Already have an account?
101
- <button type="button" onClick={onSwitchToSignIn} className="ml-2 font-medium text-blue-400 hover:text-blue-300 transition-colors">
102
- Sign In
103
- </button>
104
- </p>
105
- </>
106
- );
107
- };
108
-
109
- export default SignUp;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Frontend/src/pages/home.tsx CHANGED
@@ -1,359 +1,322 @@
1
  import React, { useState, useEffect } from 'react';
2
  import { Sparkles, Zap, Target, Clock, Award, ChevronRight, Menu, X } from 'lucide-react';
3
- import AuthModal from '../components/AuthModal';
4
- import SignIn from '../components/auth/signIn';
5
- import SignUp from '../components/auth/signup';
6
 
7
  interface Feature {
8
-   icon: React.ReactNode;
9
-   title: string;
10
-   description: string;
11
  }
12
 
13
  interface Step {
14
-   step: string;
15
-   title: string;
16
-   desc: string;
17
  }
18
 
19
  const AIInterviewPlatform: React.FC = () => {
20
-   const [isMenuOpen, setIsMenuOpen] = useState<boolean>(false);
21
-   const [scrolled, setScrolled] = useState<boolean>(false);
22
 
23
-   const [modalType, setModalType] = useState<'none' | 'signIn' | 'signUp'>('none');
24
-
25
-     // Handlers for opening/closing modals, now with mobile menu closing logic
26
-     const openSignInModal = () => {
27
- setModalType('signIn');
28
- setIsMenuOpen(false); // Close mobile menu when opening modal
29
- };
30
-     const openSignUpModal = () => {
31
- setModalType('signUp');
32
- setIsMenuOpen(false); // Close mobile menu when opening modal
33
  };
34
-     const closeModal = () => setModalType('none');
 
 
35
 
36
-   useEffect(() => {
37
-     const handleScroll = (): void => {
38
-       setScrolled(window.scrollY > 50);
39
-     };
40
-     window.addEventListener('scroll', handleScroll);
41
-     return () => window.removeEventListener('scroll', handleScroll);
42
-   }, []);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
43
 
44
-   const features: Feature[] = [
45
-     {
46
-       icon: <Sparkles className="w-8 h-8" />,
47
-       title: "AI-Powered Questions",
48
-       description: "Dynamic questions adapted to your skill level and role"
49
-     },
50
-     {
51
-       icon: <Zap className="w-8 h-8" />,
52
-       title: "Instant Feedback",
53
-       description: "Get real-time analysis and improvement suggestions"
54
-     },
55
-     {
56
-       icon: <Target className="w-8 h-8" />,
57
-       title: "Role-Specific Prep",
58
-       description: "Tailored scenarios for your target position"
59
-     },
60
-     {
61
-       icon: <Clock className="w-8 h-8" />,
62
-       title: "Practice Anytime",
63
-       description: "24/7 access to unlimited mock interviews"
64
-     },
65
-     {
66
-       icon: <Award className="w-8 h-8" />,
67
-       title: "Performance Analytics",
68
-       description: "Track your progress with detailed insights"
69
-     }
70
-   ];
71
 
72
-   const steps: Step[] = [
73
-     { step: "01", title: "Choose Your Role", desc: "Select the job position you're preparing for" },
74
-     { step: "02", title: "Practice Interview", desc: "Answer AI-generated questions in real-time" },
75
-     { step: "03", title: "Get Feedback", desc: "Receive detailed analysis and improvement tips" }
76
-   ];
77
-
78
-   return (
79
  <div className="w-full min-h-screen bg-gradient-to-br from-blue-900 to-gray-400 from-blue-900 text-white **overflow-x-hidden**">
80
-       {/* Navigation Bar */}
81
-       <nav className={`fixed top-0 left-0 right-0 w-full z-50 transition-all duration-300 ${scrolled ? 'bg-slate-900/95 backdrop-blur-md shadow-xl' : 'bg-slate-900/80 backdrop-blur-sm'}`}>
82
-         <div className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
83
-           <div className="flex justify-between items-center h-20">
84
-             {/* Logo */}
85
-             <div className="flex items-center space-x-3">
86
-               <div className="bg-gradient-to-br from-blue-500 to-gray-400 p-2 rounded-lg">
87
-                 <Sparkles className="w-6 h-6 text-white" />
88
-               </div>
89
  <span className="text-2xl font-bold bg-gradient-to-r from-blue-500 to-gray-400 bg-clip-text text-transparent">
90
-                 InterviewAI
91
-               </span>
92
-             </div>
93
-                        
94
-             {/* Desktop Navigation */}
95
-             <div className="hidden lg:flex items-center space-x-8">
96
-               <a href="#home" className="text-gray-200 hover:text-blue-400 transition-colors font-medium">
97
-                 Home
98
-               </a>
99
-               <a href="#about" className="text-gray-200 hover:text-blue-400 transition-colors font-medium">
100
-                 About
101
-               </a>
102
-               <a href="#features" className="text-gray-200 hover:text-blue-400 transition-colors font-medium">
103
-                 Features
104
-               </a>
105
-               <a href="#how-it-works" className="text-gray-200 hover:text-blue-400 transition-colors font-medium">
106
-                 How It Works
107
-               </a>
108
-               <button onClick={openSignInModal} className="px-6 py-2.5 rounded-lg border-2 border-blue-400 text-blue-400 hover:bg-blue-400/10 transition-all font-medium">
109
-                 Sign In
110
-               </button>
111
-               <button onClick={openSignUpModal} className="px-6 py-2.5 rounded-lg bg-gradient-to-r from-blue-500 to-blue-500 hover:from-blue-600 hover:to-blue-900 transition-all shadow-lg shadow-blue-500/30 font-medium">
112
-                 Sign Up
113
-               </button>
114
-             </div>
115
-             {/* Mobile Menu Button */}
116
-             <button
117
-               className="lg:hidden p-2 rounded-lg hover:bg-white/10 transition-colors"
118
-               onClick={() => setIsMenuOpen(!isMenuOpen)}
119
-             >
120
-               {isMenuOpen ? <X className="w-6 h-6" /> : <Menu className="w-6 h-6" />}
121
-             </button>
122
-           </div>
123
-         </div>
124
-         {/* Mobile Menu (FIXED) */}
125
-         {isMenuOpen && (
126
-           <div className="lg:hidden border-t border-white/10 bg-slate-900/98 backdrop-blur-md">
127
-             <div className="px-4 py-4 space-y-3 max-w-7xl mx-auto">
128
-               <a
129
-                 href="#home"
130
-                 className="block py-3 px-4 rounded-lg text-gray-200 hover:bg-blue-500/10 hover:text-blue-400 transition-all font-medium"
131
-                 onClick={() => setIsMenuOpen(false)}
132
-               >
133
-                 Home
134
-               </a>
135
-               <a
136
-                 href="#about"
137
-                 className="block py-3 px-4 rounded-lg text-gray-200 hover:bg-blue-500/10 hover:text-blue-400 transition-all font-medium"
138
-                 onClick={() => setIsMenuOpen(false)}
139
-               >
140
-                 About
141
-               </a>
142
-               <a
143
-                 href="#features"
144
-                 className="block py-3 px-4 rounded-lg text-gray-200 hover:bg-blue-500/10 hover:text-blue-400 transition-all font-medium"
145
-                 onClick={() => setIsMenuOpen(false)}
146
-               >
147
-                 Features
148
-               </a>
149
-               <a
150
-                 href="#how-it-works"
151
-                 className="block py-3 px-4 rounded-lg text-gray-200 hover:bg-blue-500/10 hover:text-blue-400 transition-all font-medium"
152
-                 onClick={() => setIsMenuOpen(false)}
153
-               >
154
-                 How It Works
155
-               </a>
156
- {/* FIX: Added onClick={openSignInModal} */}
157
-               <button
158
- onClick={openSignInModal}
159
- className="w-full py-3 rounded-lg border-2 border-blue-400 text-blue-400 hover:bg-blue-400/10 transition-all font-medium"
160
- >
161
-                 Sign In
162
-               </button>
163
- {/* FIX: Added onClick={openSignUpModal} and updated gradient to match desktop style closer */}
164
-               <button
165
- onClick={openSignUpModal}
166
- className="w-full py-3 rounded-lg bg-gradient-to-r from-blue-500 to-blue-500 hover:from-blue-600 hover:to-blue-900 transition-all font-medium"
167
- >
168
-                 Sign Up
169
-               </button>
170
-             </div>
171
-           </div>
172
-         )}
173
-       </nav>
174
-       <AuthModal isOpen={modalType === 'signIn'} onClose={closeModal}>
175
-                 <SignIn
176
-                     onClose={closeModal}
177
-                     onSwitchToSignUp={openSignUpModal}
178
-                 />
179
-             </AuthModal>
180
-
181
-             <AuthModal isOpen={modalType === 'signUp'} onClose={closeModal}>
182
-                 <SignUp
183
-                     onClose={closeModal}
184
-                     onSwitchToSignIn={openSignInModal}
185
-                 />
186
-       </AuthModal>
187
-       {/* Hero Section */}
188
-       <section id="home" className="min-h-screen flex items-center pt-20 pb-20 px-4 sm:px-6 lg:px-8 bg-black">
189
-         <div className="max-w-7xl mx-auto text-center">
190
-           <div className="inline-block mb-4 px-4 py-2 bg-blue-500/20 rounded-full border border-blue-500/50">
191
-             <span className="text-sm font-semibold text-blue-300">✨ AI-Powered Interview Practice</span>
192
-           </div>
193
-                    
194
-           <h1 className="text-5xl sm:text-6xl lg:text-7xl font-bold mb-6 leading-tight">
195
-             Master Your Next
196
-             <span className="block bg-gradient-to-r from-blue-500 via-gray-400 to-blue-500 bg-clip-text text-transparent">
197
-               Interview with AI
198
-             </span>
199
-           </h1>
200
-                    
201
-           <p className="text-xl text-gray-300 mb-10 max-w-3xl mx-auto">
202
-             Practice with our intelligent AI interviewer, get instant feedback, and land your dream job with confidence.
203
-           </p>
204
-                    
205
-           <div className="flex flex-col sm:flex-row gap-4 justify-center items-center">
206
-             <button className="px-8 py-4 rounded-lg bg-gradient-to-r from-blue-500 to-gray-500 hover:from-blue-600 hover:to-blue-500 transition shadow-lg shadow-blue-500/50 flex items-center gap-2 text-lg font-semibold">
207
-               Start Free Trial
208
-               <ChevronRight className="w-5 h-5" />
209
-             </button>
210
-             <button className="px-8 py-4 rounded-lg border-2 border-blue-400 hover:bg-blue-400/10 transition text-lg font-semibold">
211
-               Watch Demo
212
-             </button>
213
-           </div>
214
-           {/* Stats */}
215
-           <div className="mt-20 grid grid-cols-1 sm:grid-cols-3 gap-8 max-w-4xl mx-auto">
216
-             <div className="bg-white/5 backdrop-blur-sm rounded-xl p-6 border border-white/10">
217
-               <div className="text-4xl font-bold text-blue-600 mb-2">50K+</div>
218
-               <div className="text-gray-400">Successful Interviews</div>
219
-             </div>
220
-             <div className="bg-white/5 backdrop-blur-sm rounded-xl p-6 border border-white/10">
221
-               <div className="text-4xl font-bold text-blue-600 mb-2">95%</div>
222
-               <div className="text-gray-400">Success Rate</div>
223
-             </div>
224
-             <div className="bg-white/5 backdrop-blur-sm rounded-xl p-6 border border-white/10">
225
-               <div className="text-4xl font-bold text-blue-600 mb-2">24/7</div>
226
-               <div className="text-gray-400">AI Availability</div>
227
-             </div>
228
-           </div>
229
-         </div>
230
-       </section>
231
-       {/* About Section */}
232
-       <section id="about" className="py-20 px-4 sm:px-6 lg:px-8 bg-black/40">
233
-         <div className="max-w-6xl mx-auto">
234
-           <div className="grid grid-cols-1 lg:grid-cols-2 gap-12 items-center">
235
-             <div>
236
-               <h2 className="text-4xl sm:text-5xl font-bold mb-6">
237
-                 About InterviewAI
238
-               </h2>
239
-               <p className="text-lg text-gray-300 mb-6">
240
-                 We're revolutionizing interview preparation with cutting-edge AI technology. Our platform helps candidates practice, learn, and succeed in their job interviews.
241
-               </p>
242
-               <p className="text-lg text-gray-300 mb-6">
243
-                 Founded by industry experts and powered by advanced machine learning, InterviewAI provides personalized interview experiences that adapt to your unique needs and goals.
244
-               </p>
245
-               <div className="space-y-4">
246
-                 <div className="flex items-center gap-3">
247
-                   <div className="w-2 h-2 bg-blue-400 rounded-full"></div>
248
-                   <span className="text-gray-300">Advanced AI interview simulations</span>
249
-                 </div>
250
-                 <div className="flex items-center gap-3">
251
-                   <div className="w-2 h-2 bg-blue-600 rounded-full"></div>
252
-                   <span className="text-gray-300">Personalized feedback and coaching</span>
253
-                 </div>
254
-                 <div className="flex items-center gap-3">
255
-                   <div className="w-2 h-2 bg-blue-400 rounded-full"></div>
256
-                   <span className="text-gray-300">Industry-leading success rates</span>
257
-                 </div>
258
-               </div>
259
-             </div>
260
-             <div className="bg-gradient-to-br from-blue-900/50 to-gray-900/50 rounded-2xl p-8 border border-gray-200/30">
261
-               <div className="space-y-6">
262
-                 <div className="bg-white/5 backdrop-blur-sm rounded-lg p-6">
263
-                   <div className="text-3xl font-bold text-blue-400 mb-2">2020</div>
264
-                   <div className="text-gray-400">Founded</div>
265
-                 </div>
266
-                 <div className="bg-white/5 backdrop-blur-sm rounded-lg p-6">
267
-                   <div className="text-3xl font-bold text-blue-500 mb-2">50K+</div>
268
-                   <div className="text-gray-400">Happy Users</div>
269
-                 </div>
270
-                 <div className="bg-white/5 backdrop-blur-sm rounded-lg p-6">
271
-                   <div className="text-3xl font-bold text-blue-400 mb-2">500+</div>
272
-                   <div className="text-gray-400">Companies Trust Us</div>
273
-                 </div>
274
-               </div>
275
-             </div>
276
-           </div>
277
-         </div>
278
-       </section>
279
-       {/* Features Section */}
280
-       <section id="features" className="py-20 px-4 sm:px-6 lg:px-8 bg-black">
281
-         <div className="max-w-7xl mx-auto">
282
-           <div className="text-center mb-16">
283
-             <h2 className="text-4xl sm:text-5xl font-bold mb-4">
284
-               Why Choose InterviewAI?
285
-             </h2>
286
-             <p className="text-xl text-gray-400">
287
-               Everything you need to ace your next interview
288
-             </p>
289
-           </div>
290
-           <div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8">
291
-             {features.map((feature: Feature, index: number) => (
292
-               <div
293
-                 key={index}
294
-                 className="bg-gradient-to-br from-blue-900/50 to-gray-900/50 backdrop-blur-sm rounded-xl p-8 border border-blue-500/20 hover:border-gray-500/50 transition-all duration-300 hover:transform hover:scale-105"
295
-               >
296
-                 <div className="bg-gradient-to-br from-blue-500 to-gray-400 w-16 h-16 rounded-lg flex items-center justify-center mb-4 shadow-lg shadow-blue-500/50">
297
-                   {feature.icon}
298
-                 </div>
299
-                 <h3 className="text-xl font-bold mb-3">{feature.title}</h3>
300
-                 <p className="text-gray-400">{feature.description}</p>
301
-               </div>
302
-             ))}
303
-           </div>
304
-         </div>
305
-       </section>
306
-       {/* How It Works */}
307
-       <section id="how-it-works" className="py-20 px-4 sm:px-6 lg:px-8 bg-black/40">
308
-         <div className="max-w-7xl mx-auto">
309
-           <div className="text-center mb-16">
310
-             <h2 className="text-4xl sm:text-5xl font-bold mb-4">
311
-               How It Works
312
-             </h2>
313
-             <p className="text-xl text-gray-400">
314
-               Get started in three simple steps
315
-             </p>
316
-           </div>
317
-           <div className="grid grid-cols-1 md:grid-cols-3 gap-8">
318
-             {steps.map((item: Step, index: number) => (
319
-               <div key={index} className="relative text-center">
320
-                 <div className="text-7xl font-bold text-blue-500/20 mb-4">{item.step}</div>
321
-                 <h3 className="text-2xl font-bold mb-3">{item.title}</h3>
322
-                 <p className="text-gray-400">{item.desc}</p>
323
-                 {index < 2 && (
324
-                   <ChevronRight className="hidden md:block absolute top-12 -right-12 w-8 h-8 text-blue-500/50" />
325
-                 )}
326
-               </div>
327
-             ))}
328
-           </div>
329
-         </div>
330
-       </section>
331
-       {/* CTA Section */}
332
-       <section className="py-20 px-4 sm:px-6 lg:px-8 bg-gradient-to-r from-gray-900/50 to-blue-700/50">
333
-         <div className="max-w-4xl mx-auto text-center">
334
-           <h2 className="text-4xl sm:text-5xl font-bold mb-6">
335
-             Ready to Ace Your Interview?
336
-           </h2>
337
-           <p className="text-xl text-gray-300 mb-10">
338
-             Join thousands of successful candidates who prepared with InterviewAI
339
-           </p>
340
-           <button className="px-10 py-5 rounded-lg bg-gradient-to-r from-blue-400 to-blue-700 hover:from-blue-600 hover:to-blue-900 transition shadow-lg shadow-blue-500/50 text-lg font-semibold">
341
-             Start Your Free Trial Today
342
-           </button>
343
-         </div>
344
-       </section>
345
-       {/* Footer */}
346
-       <footer className="py-12 px-4 sm:px-6 lg:px-8 bg-black">
347
-         <div className="max-w-7xl mx-auto text-center text-gray-400">
348
-           <div className="flex items-center justify-center space-x-2 mb-4">
349
-             <Sparkles className="w-6 h-6 text-blue-400" />
350
-             <span className="text-xl font-bold text-white">InterviewAI</span>
351
-           </div>
352
-           <p>&copy; 2025 InterviewAI. All rights reserved.</p>
353
-         </div>
354
-       </footer>
355
-     </div>
356
-   );
357
  };
358
 
359
  export default AIInterviewPlatform;
 
1
  import React, { useState, useEffect } from 'react';
2
  import { Sparkles, Zap, Target, Clock, Award, ChevronRight, Menu, X } from 'lucide-react';
 
 
 
3
 
4
  interface Feature {
5
+ icon: React.ReactNode;
6
+ title: string;
7
+ description: string;
8
  }
9
 
10
  interface Step {
11
+ step: string;
12
+ title: string;
13
+ desc: string;
14
  }
15
 
16
  const AIInterviewPlatform: React.FC = () => {
17
+ const [isMenuOpen, setIsMenuOpen] = useState<boolean>(false);
18
+ const [scrolled, setScrolled] = useState<boolean>(false);
19
 
20
+ useEffect(() => {
21
+ const handleScroll = (): void => {
22
+ setScrolled(window.scrollY > 50);
 
 
 
 
 
 
 
23
  };
24
+ window.addEventListener('scroll', handleScroll);
25
+ return () => window.removeEventListener('scroll', handleScroll);
26
+ }, []);
27
 
28
+ const features: Feature[] = [
29
+ {
30
+ icon: <Sparkles className="w-8 h-8" />,
31
+ title: "AI-Powered Questions",
32
+ description: "Dynamic questions adapted to your skill level and role"
33
+ },
34
+ {
35
+ icon: <Zap className="w-8 h-8" />,
36
+ title: "Instant Feedback",
37
+ description: "Get real-time analysis and improvement suggestions"
38
+ },
39
+ {
40
+ icon: <Target className="w-8 h-8" />,
41
+ title: "Role-Specific Prep",
42
+ description: "Tailored scenarios for your target position"
43
+ },
44
+ {
45
+ icon: <Clock className="w-8 h-8" />,
46
+ title: "Practice Anytime",
47
+ description: "24/7 access to unlimited mock interviews"
48
+ },
49
+ {
50
+ icon: <Award className="w-8 h-8" />,
51
+ title: "Performance Analytics",
52
+ description: "Track your progress with detailed insights"
53
+ }
54
+ ];
55
 
56
+ const steps: Step[] = [
57
+ { step: "01", title: "Choose Your Role", desc: "Select the job position you're preparing for" },
58
+ { step: "02", title: "Practice Interview", desc: "Answer AI-generated questions in real-time" },
59
+ { step: "03", title: "Get Feedback", desc: "Receive detailed analysis and improvement tips" }
60
+ ];
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
61
 
62
+ return (
 
 
 
 
 
 
63
  <div className="w-full min-h-screen bg-gradient-to-br from-blue-900 to-gray-400 from-blue-900 text-white **overflow-x-hidden**">
64
+ {/* Navigation Bar */}
65
+ <nav className={`fixed top-0 left-0 right-0 w-full z-50 transition-all duration-300 ${scrolled ? 'bg-slate-900/95 backdrop-blur-md shadow-xl' : 'bg-slate-900/80 backdrop-blur-sm'}`}>
66
+ <div className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
67
+ <div className="flex justify-between items-center h-20">
68
+ {/* Logo */}
69
+ <div className="flex items-center space-x-3">
70
+ <div className="bg-gradient-to-br from-blue-500 to-gray-400 p-2 rounded-lg">
71
+ <Sparkles className="w-6 h-6 text-white" />
72
+ </div>
73
  <span className="text-2xl font-bold bg-gradient-to-r from-blue-500 to-gray-400 bg-clip-text text-transparent">
74
+ InterviewAI
75
+ </span>
76
+ </div>
77
+
78
+ {/* Desktop Navigation */}
79
+ <div className="hidden lg:flex items-center space-x-8">
80
+ <a href="#home" className="text-gray-200 hover:text-blue-400 transition-colors font-medium">
81
+ Home
82
+ </a>
83
+ <a href="#about" className="text-gray-200 hover:text-blue-400 transition-colors font-medium">
84
+ About
85
+ </a>
86
+ <a href="#features" className="text-gray-200 hover:text-blue-400 transition-colors font-medium">
87
+ Features
88
+ </a>
89
+ <a href="#how-it-works" className="text-gray-200 hover:text-blue-400 transition-colors font-medium">
90
+ How It Works
91
+ </a>
92
+ <button className="px-6 py-2.5 rounded-lg border-2 border-blue-400 text-blue-400 hover:bg-blue-400/10 transition-all font-medium">
93
+ Sign In
94
+ </button>
95
+ <button className="px-6 py-2.5 rounded-lg bg-gradient-to-r from-blue-500 to-blue-500 hover:from-blue-600 hover:to-blue-900 transition-all shadow-lg shadow-blue-500/30 font-medium">
96
+ Sign Up
97
+ </button>
98
+ </div>
99
+ {/* Mobile Menu Button */}
100
+ <button
101
+ className="lg:hidden p-2 rounded-lg hover:bg-white/10 transition-colors"
102
+ onClick={() => setIsMenuOpen(!isMenuOpen)}
103
+ >
104
+ {isMenuOpen ? <X className="w-6 h-6" /> : <Menu className="w-6 h-6" />}
105
+ </button>
106
+ </div>
107
+ </div>
108
+ {/* Mobile Menu */}
109
+ {isMenuOpen && (
110
+ <div className="lg:hidden border-t border-white/10 bg-slate-900/98 backdrop-blur-md">
111
+ <div className="px-4 py-4 space-y-3 max-w-7xl mx-auto">
112
+ <a
113
+ href="#home"
114
+ className="block py-3 px-4 rounded-lg text-gray-200 hover:bg-blue-500/10 hover:text-blue-400 transition-all font-medium"
115
+ onClick={() => setIsMenuOpen(false)}
116
+ >
117
+ Home
118
+ </a>
119
+ <a
120
+ href="#about"
121
+ className="block py-3 px-4 rounded-lg text-gray-200 hover:bg-blue-500/10 hover:text-blue-400 transition-all font-medium"
122
+ onClick={() => setIsMenuOpen(false)}
123
+ >
124
+ About
125
+ </a>
126
+ <a
127
+ href="#features"
128
+ className="block py-3 px-4 rounded-lg text-gray-200 hover:bg-blue-500/10 hover:text-blue-400 transition-all font-medium"
129
+ onClick={() => setIsMenuOpen(false)}
130
+ >
131
+ Features
132
+ </a>
133
+ <a
134
+ href="#how-it-works"
135
+ className="block py-3 px-4 rounded-lg text-gray-200 hover:bg-blue-500/10 hover:text-blue-400 transition-all font-medium"
136
+ onClick={() => setIsMenuOpen(false)}
137
+ >
138
+ How It Works
139
+ </a>
140
+ <button className="w-full py-3 rounded-lg border-2 border-blue-400 text-blue-400 hover:bg-blue-400/10 transition-all font-medium">
141
+ Sign In
142
+ </button>
143
+ <button className="w-full py-3 rounded-lg bg-gradient-to-r from-blue-500 to-gray-500 hover:from-blue-600 hover:to-gray-600 transition-all font-medium">
144
+ Sign Up
145
+ </button>
146
+ </div>
147
+ </div>
148
+ )}
149
+ </nav>
150
+ {/* Hero Section */}
151
+ <section id="home" className="min-h-screen flex items-center pt-20 pb-20 px-4 sm:px-6 lg:px-8 bg-black">
152
+ <div className="max-w-7xl mx-auto text-center">
153
+ <div className="inline-block mb-4 px-4 py-2 bg-blue-500/20 rounded-full border border-blue-500/50">
154
+ <span className="text-sm font-semibold text-blue-300">✨ AI-Powered Interview Practice</span>
155
+ </div>
156
+
157
+ <h1 className="text-5xl sm:text-6xl lg:text-7xl font-bold mb-6 leading-tight">
158
+ Master Your Next
159
+ <span className="block bg-gradient-to-r from-blue-500 via-gray-400 to-blue-500 bg-clip-text text-transparent">
160
+ Interview with AI
161
+ </span>
162
+ </h1>
163
+
164
+ <p className="text-xl text-gray-300 mb-10 max-w-3xl mx-auto">
165
+ Practice with our intelligent AI interviewer, get instant feedback, and land your dream job with confidence.
166
+ </p>
167
+
168
+ <div className="flex flex-col sm:flex-row gap-4 justify-center items-center">
169
+ <button className="px-8 py-4 rounded-lg bg-gradient-to-r from-blue-500 to-gray-500 hover:from-blue-600 hover:to-blue-500 transition shadow-lg shadow-blue-500/50 flex items-center gap-2 text-lg font-semibold">
170
+ Start Free Trial
171
+ <ChevronRight className="w-5 h-5" />
172
+ </button>
173
+ <button className="px-8 py-4 rounded-lg border-2 border-blue-400 hover:bg-blue-400/10 transition text-lg font-semibold">
174
+ Watch Demo
175
+ </button>
176
+ </div>
177
+ {/* Stats */}
178
+ <div className="mt-20 grid grid-cols-1 sm:grid-cols-3 gap-8 max-w-4xl mx-auto">
179
+ <div className="bg-white/5 backdrop-blur-sm rounded-xl p-6 border border-white/10">
180
+ <div className="text-4xl font-bold text-blue-600 mb-2">50K+</div>
181
+ <div className="text-gray-400">Successful Interviews</div>
182
+ </div>
183
+ <div className="bg-white/5 backdrop-blur-sm rounded-xl p-6 border border-white/10">
184
+ <div className="text-4xl font-bold text-blue-600 mb-2">95%</div>
185
+ <div className="text-gray-400">Success Rate</div>
186
+ </div>
187
+ <div className="bg-white/5 backdrop-blur-sm rounded-xl p-6 border border-white/10">
188
+ <div className="text-4xl font-bold text-blue-600 mb-2">24/7</div>
189
+ <div className="text-gray-400">AI Availability</div>
190
+ </div>
191
+ </div>
192
+ </div>
193
+ </section>
194
+ {/* About Section */}
195
+ <section id="about" className="py-20 px-4 sm:px-6 lg:px-8 bg-black/40">
196
+ <div className="max-w-6xl mx-auto">
197
+ <div className="grid grid-cols-1 lg:grid-cols-2 gap-12 items-center">
198
+ <div>
199
+ <h2 className="text-4xl sm:text-5xl font-bold mb-6">
200
+ About InterviewAI
201
+ </h2>
202
+ <p className="text-lg text-gray-300 mb-6">
203
+ We're revolutionizing interview preparation with cutting-edge AI technology. Our platform helps candidates practice, learn, and succeed in their job interviews.
204
+ </p>
205
+ <p className="text-lg text-gray-300 mb-6">
206
+ Founded by industry experts and powered by advanced machine learning, InterviewAI provides personalized interview experiences that adapt to your unique needs and goals.
207
+ </p>
208
+ <div className="space-y-4">
209
+ <div className="flex items-center gap-3">
210
+ <div className="w-2 h-2 bg-blue-400 rounded-full"></div>
211
+ <span className="text-gray-300">Advanced AI interview simulations</span>
212
+ </div>
213
+ <div className="flex items-center gap-3">
214
+ <div className="w-2 h-2 bg-blue-600 rounded-full"></div>
215
+ <span className="text-gray-300">Personalized feedback and coaching</span>
216
+ </div>
217
+ <div className="flex items-center gap-3">
218
+ <div className="w-2 h-2 bg-blue-400 rounded-full"></div>
219
+ <span className="text-gray-300">Industry-leading success rates</span>
220
+ </div>
221
+ </div>
222
+ </div>
223
+ <div className="bg-gradient-to-br from-blue-900/50 to-gray-900/50 rounded-2xl p-8 border border-gray-200/30">
224
+ <div className="space-y-6">
225
+ <div className="bg-white/5 backdrop-blur-sm rounded-lg p-6">
226
+ <div className="text-3xl font-bold text-blue-400 mb-2">2020</div>
227
+ <div className="text-gray-400">Founded</div>
228
+ </div>
229
+ <div className="bg-white/5 backdrop-blur-sm rounded-lg p-6">
230
+ <div className="text-3xl font-bold text-blue-500 mb-2">50K+</div>
231
+ <div className="text-gray-400">Happy Users</div>
232
+ </div>
233
+ <div className="bg-white/5 backdrop-blur-sm rounded-lg p-6">
234
+ <div className="text-3xl font-bold text-blue-400 mb-2">500+</div>
235
+ <div className="text-gray-400">Companies Trust Us</div>
236
+ </div>
237
+ </div>
238
+ </div>
239
+ </div>
240
+ </div>
241
+ </section>
242
+ {/* Features Section */}
243
+ <section id="features" className="py-20 px-4 sm:px-6 lg:px-8 bg-black">
244
+ <div className="max-w-7xl mx-auto">
245
+ <div className="text-center mb-16">
246
+ <h2 className="text-4xl sm:text-5xl font-bold mb-4">
247
+ Why Choose InterviewAI?
248
+ </h2>
249
+ <p className="text-xl text-gray-400">
250
+ Everything you need to ace your next interview
251
+ </p>
252
+ </div>
253
+ <div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8">
254
+ {features.map((feature: Feature, index: number) => (
255
+ <div
256
+ key={index}
257
+ className="bg-gradient-to-br from-blue-900/50 to-gray-900/50 backdrop-blur-sm rounded-xl p-8 border border-blue-500/20 hover:border-gray-500/50 transition-all duration-300 hover:transform hover:scale-105"
258
+ >
259
+ <div className="bg-gradient-to-br from-blue-500 to-gray-400 w-16 h-16 rounded-lg flex items-center justify-center mb-4 shadow-lg shadow-blue-500/50">
260
+ {feature.icon}
261
+ </div>
262
+ <h3 className="text-xl font-bold mb-3">{feature.title}</h3>
263
+ <p className="text-gray-400">{feature.description}</p>
264
+ </div>
265
+ ))}
266
+ </div>
267
+ </div>
268
+ </section>
269
+ {/* How It Works */}
270
+ <section id="how-it-works" className="py-20 px-4 sm:px-6 lg:px-8 bg-black/40">
271
+ <div className="max-w-7xl mx-auto">
272
+ <div className="text-center mb-16">
273
+ <h2 className="text-4xl sm:text-5xl font-bold mb-4">
274
+ How It Works
275
+ </h2>
276
+ <p className="text-xl text-gray-400">
277
+ Get started in three simple steps
278
+ </p>
279
+ </div>
280
+ <div className="grid grid-cols-1 md:grid-cols-3 gap-8">
281
+ {steps.map((item: Step, index: number) => (
282
+ <div key={index} className="relative text-center">
283
+ <div className="text-7xl font-bold text-blue-500/20 mb-4">{item.step}</div>
284
+ <h3 className="text-2xl font-bold mb-3">{item.title}</h3>
285
+ <p className="text-gray-400">{item.desc}</p>
286
+ {index < 2 && (
287
+ <ChevronRight className="hidden md:block absolute top-12 -right-12 w-8 h-8 text-blue-500/50" />
288
+ )}
289
+ </div>
290
+ ))}
291
+ </div>
292
+ </div>
293
+ </section>
294
+ {/* CTA Section */}
295
+ <section className="py-20 px-4 sm:px-6 lg:px-8 bg-gradient-to-r from-gray-900/50 to-blue-700/50">
296
+ <div className="max-w-4xl mx-auto text-center">
297
+ <h2 className="text-4xl sm:text-5xl font-bold mb-6">
298
+ Ready to Ace Your Interview?
299
+ </h2>
300
+ <p className="text-xl text-gray-300 mb-10">
301
+ Join thousands of successful candidates who prepared with InterviewAI
302
+ </p>
303
+ <button className="px-10 py-5 rounded-lg bg-gradient-to-r from-blue-400 to-blue-700 hover:from-blue-600 hover:to-blue-900 transition shadow-lg shadow-blue-500/50 text-lg font-semibold">
304
+ Start Your Free Trial Today
305
+ </button>
306
+ </div>
307
+ </section>
308
+ {/* Footer */}
309
+ <footer className="py-12 px-4 sm:px-6 lg:px-8 bg-black">
310
+ <div className="max-w-7xl mx-auto text-center text-gray-400">
311
+ <div className="flex items-center justify-center space-x-2 mb-4">
312
+ <Sparkles className="w-6 h-6 text-blue-400" />
313
+ <span className="text-xl font-bold text-white">InterviewAI</span>
314
+ </div>
315
+ <p>&copy; 2025 InterviewAI. All rights reserved.</p>
316
+ </div>
317
+ </footer>
318
+ </div>
319
+ );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
320
  };
321
 
322
  export default AIInterviewPlatform;