1+ "use client"
2+ import React , { useState } from 'react' ;
3+ import {
4+ Users ,
5+ CheckCircle2 ,
6+ Video ,
7+ Star ,
8+ ChevronRight ,
9+ Search ,
10+ Github ,
11+ Linkedin ,
12+ Mail ,
13+ Twitter ,
14+ Instagram ,
15+ Filter
16+ } from 'lucide-react' ;
17+
18+
19+
20+ const experts = [
21+ {
22+ id : 1 ,
23+ name : "Sanya Gupta" ,
24+ title : "CI/CD Specialist" ,
25+ experience : "5+ Years of Expertise" ,
26+ price : 500 ,
27+ skills : [ "Docker" , "Jenkins" , "GitLab CI" ] ,
28+ image : "https://images.unsplash.com/photo-1573497019940-1c28c88b4f3e" ,
29+ rating : 4.9 ,
30+ social : {
31+ linkedin : "#" ,
32+ github : "#" ,
33+ email : "sanya@example.com" ,
34+ twitter : "#" ,
35+ instagram : "#"
36+ }
37+ } ,
38+ {
39+ id : 2 ,
40+ name : "Raj Patel" ,
41+ title : "Cloud Architecture Expert" ,
42+ experience : "7+ Years of Expertise" ,
43+ price : 300 ,
44+ skills : [ "AWS" , "Terraform" , "Kubernetes" ] ,
45+ image : "https://images.unsplash.com/photo-1556157382-97eda2d62296" ,
46+ rating : 5.0 ,
47+ social : {
48+ linkedin : "#" ,
49+ github : "#" ,
50+ email : "raj@example.com" ,
51+ twitter : "#" ,
52+ instagram : "#"
53+ }
54+ } ,
55+ {
56+ id : 3 ,
57+ name : "Lisa Chen" ,
58+ title : "DevSecOps Engineer" ,
59+ experience : "6+ Years of Expertise" ,
60+ price : 250 ,
61+ skills : [ "Security" , "Ansible" , "Vault" ] ,
62+ image : "https://images.unsplash.com/photo-1580489944761-15a19d654956" ,
63+ rating : 4.8 ,
64+ social : {
65+ linkedin : "#" ,
66+ github : "#" ,
67+ email : "lisa@example.com" ,
68+ twitter : "#" ,
69+ instagram : "#"
70+ }
71+ } ,
72+ {
73+ id : 4 ,
74+ name : "Alex Kumar" ,
75+ title : "SRE Specialist" ,
76+ experience : "4+ Years of Expertise" ,
77+ price : 200 ,
78+ skills : [ "Prometheus" , "Grafana" , "SLOs" ] ,
79+ image : "https://images.unsplash.com/photo-1507003211169-0a1dd7228f2d" ,
80+ rating : 4.9 ,
81+ social : {
82+ linkedin : "#" ,
83+ github : "#" ,
84+ email : "alex@example.com" ,
85+ twitter : "#" ,
86+ instagram : "#"
87+ }
88+ }
89+ ] ;
90+
91+ const skillCategories = [
92+ "All" ,
93+ "CI/CD" ,
94+ "Cloud Infrastructure" ,
95+ "Kubernetes" ,
96+ "DevSecOps" ,
97+ "SRE" ,
98+ "Automation"
99+ ] ;
100+
101+ function page ( ) {
102+ const [ selectedExpert , setSelectedExpert ] = useState ( null ) ;
103+ const [ showPayment , setShowPayment ] = useState ( false ) ;
104+ const [ searchTerm , setSearchTerm ] = useState ( "" ) ;
105+ const [ selectedSkill , setSelectedSkill ] = useState ( "All" ) ;
106+
107+ const handleConnect = ( expert ) => {
108+ setSelectedExpert ( expert ) ;
109+ setShowPayment ( true ) ;
110+ } ;
111+
112+ const filteredExperts = experts . filter ( expert => {
113+ console . log ( expert )
114+ const matchesSearch = expert . name . toLowerCase ( ) . includes ( searchTerm . toLowerCase ( ) ) ||
115+ expert . skills . some ( skill => skill . toLowerCase ( ) . includes ( searchTerm . toLowerCase ( ) ) ) ;
116+ const matchesSkill = selectedSkill === "All" || expert . skills . some ( skill => skill . includes ( selectedSkill ) ) ;
117+ return matchesSearch && matchesSkill ;
118+ } ) ;
119+
120+ return (
121+ < div className = "min-h-screen bg-gradient-to-br from-blue-500 via-teal-400 to-white" >
122+ { /* Hero Section */ }
123+ < section className = "px-6 py-20 pt-[10rem] text-center text-white relative overflow-hidden" >
124+ < div className = "max-w-4xl mx-auto relative z-10" >
125+ < h1 className = "text-5xl font-bold mb-6" >
126+ Find Your DevOps Expert – Solve Problems Faster
127+ </ h1 >
128+ < p className = "text-xl mb-8 opacity-90" >
129+ Connect with skilled professionals to streamline your DevOps tasks effortlessly
130+ </ p >
131+ < button
132+ onClick = { ( ) => document . getElementById ( 'experts' ) ?. scrollIntoView ( { behavior : 'smooth' } ) }
133+ className = "bg-white text-blue-600 px-8 py-3 rounded-full font-semibold hover:bg-opacity-90 transition-all"
134+ >
135+ Explore Experts < ChevronRight className = "inline ml-2" size = { 20 } />
136+ </ button >
137+ </ div >
138+ </ section >
139+
140+ { /* Expert Search and Filter */ }
141+ < section className = "px-6 py-16 bg-gray-50" >
142+ < div className = "max-w-6xl mx-auto" >
143+ < div className = "flex flex-col md:flex-row gap-4 mb-8" >
144+ < div className = "flex-1 relative" >
145+ < Search className = "absolute left-3 top-1/2 transform -translate-y-1/2 text-gray-400" size = { 20 } />
146+ < input
147+ type = "text"
148+ placeholder = "Search experts by name or skill..."
149+ value = { searchTerm }
150+ onChange = { ( e ) => setSearchTerm ( e . target . value ) }
151+ className = "w-full pl-10 pr-4 py-2 rounded-lg border border-gray-300 focus:ring-2 focus:ring-blue-500 focus:border-transparent"
152+ />
153+ </ div >
154+ < div className = "flex items-center gap-2" >
155+ < Filter size = { 20 } className = "text-gray-600" />
156+ < select
157+ value = { selectedSkill }
158+ onChange = { ( e ) => setSelectedSkill ( e . target . value ) }
159+ className = "px-4 py-2 rounded-lg border border-gray-300 focus:ring-2 focus:ring-blue-500 focus:border-transparent"
160+ >
161+ { skillCategories . map ( ( skill ) => (
162+ < option key = { skill } value = { skill } > { skill } </ option >
163+ ) ) }
164+ </ select >
165+ </ div >
166+ </ div >
167+ </ div >
168+ </ section >
169+
170+ { /* Expert Showcase */ }
171+ < section id = "experts" className = "px-6 py-16 bg-white" >
172+ < div className = "max-w-6xl mx-auto" >
173+ < h2 className = "text-3xl font-bold text-center mb-12" > Our DevOps Experts</ h2 >
174+ < div className = "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-8" >
175+ { filteredExperts . map ( ( expert ) => (
176+ < div key = { expert . id } className = "bg-white rounded-xl shadow-lg p-6 transform hover:scale-105 transition-all" >
177+ < img
178+ src = { expert . image }
179+ alt = { expert . name }
180+ className = "w-24 h-24 rounded-full mx-auto mb-4 object-cover"
181+ />
182+ < h3 className = "text-xl font-semibold text-center" > { expert . name } </ h3 >
183+ < p className = "text-blue-600 text-center mb-2" > { expert . title } </ p >
184+ < p className = "text-gray-600 text-center text-sm mb-4" > { expert . experience } </ p >
185+ < div className = "flex items-center justify-between mb-4" >
186+ < div className = "flex items-center" >
187+ < Star className = "text-yellow-400 fill-current" size = { 16 } />
188+ < span className = "ml-1 text-gray-700" > { expert . rating } </ span >
189+ </ div >
190+ < span className = "font-semibold" > ₹{ expert . price } </ span >
191+ </ div >
192+ { /* Social Media Links */ }
193+ < div className = "flex justify-center gap-3 mb-4" >
194+ < a href = { expert . social . linkedin } className = "text-gray-600 hover:text-blue-600" >
195+ < Linkedin size = { 18 } />
196+ </ a >
197+ < a href = { expert . social . github } className = "text-gray-600 hover:text-blue-600" >
198+ < Github size = { 18 } />
199+ </ a >
200+ < a href = { `mailto:${ expert . social . email } ` } className = "text-gray-600 hover:text-blue-600" >
201+ < Mail size = { 18 } />
202+ </ a >
203+ < a href = { expert . social . twitter } className = "text-gray-600 hover:text-blue-600" >
204+ < Twitter size = { 18 } />
205+ </ a >
206+ < a href = { expert . social . instagram } className = "text-gray-600 hover:text-blue-600" >
207+ < Instagram size = { 18 } />
208+ </ a >
209+ </ div >
210+ < button
211+ onClick = { ( ) => handleConnect ( expert ) }
212+ className = "w-full bg-blue-600 text-white py-2 rounded-lg hover:bg-blue-700 transition-colors"
213+ >
214+ Connect Now
215+ </ button >
216+ </ div >
217+ ) ) }
218+ </ div >
219+ </ div >
220+ </ section >
221+
222+ { /* How It Works */ }
223+ < section className = "px-6 py-16 bg-gray-50" >
224+ < div className = "max-w-4xl mx-auto" >
225+ < h2 className = "text-3xl font-bold text-center mb-12" > How It Works</ h2 >
226+ < div className = "grid grid-cols-1 md:grid-cols-3 gap-8" >
227+ < div className = "text-center" >
228+ < Users className = "w-16 h-16 mx-auto mb-4 text-blue-600" />
229+ < h3 className = "text-xl font-semibold mb-2" > Choose an Expert</ h3 >
230+ < p className = "text-gray-600" > Browse profiles and select the expert who fits your needs</ p >
231+ </ div >
232+ < div className = "text-center" >
233+ < CheckCircle2 className = "w-16 h-16 mx-auto mb-4 text-blue-600" />
234+ < h3 className = "text-xl font-semibold mb-2" > Make Payment</ h3 >
235+ < p className = "text-gray-600" > Complete secure payment to book your session</ p >
236+ </ div >
237+ < div className = "text-center" >
238+ < Video className = "w-16 h-16 mx-auto mb-4 text-blue-600" />
239+ < h3 className = "text-xl font-semibold mb-2" > Collaborate Easily</ h3 >
240+ < p className = "text-gray-600" > Get a Google Meet link for your live session</ p >
241+ </ div >
242+ </ div >
243+ </ div >
244+ </ section >
245+
246+ { /* Payment Modal */ }
247+ { showPayment && selectedExpert && (
248+ < div className = "fixed inset-0 bg-black bg-opacity-50 flex items-center justify-center p-4 z-50" >
249+ < div className = "bg-white rounded-xl p-6 max-w-md w-full" >
250+ < h3 className = "text-2xl font-bold mb-4" > Complete Your Booking</ h3 >
251+ < div className = "flex items-center mb-6" >
252+ < img
253+ src = { selectedExpert . image }
254+ alt = { selectedExpert . name }
255+ className = "w-16 h-16 rounded-full object-cover"
256+ />
257+ < div className = "ml-4" >
258+ < h4 className = "font-semibold" > { selectedExpert . name } </ h4 >
259+ < p className = "text-gray-600" > { selectedExpert . title } </ p >
260+ </ div >
261+ </ div >
262+ < div className = "border-t border-b py-4 mb-6" >
263+ < div className = "flex justify-between mb-2" >
264+ < span > Session Fee</ span >
265+ < span className = "font-semibold" > ₹{ selectedExpert . price } </ span >
266+ </ div >
267+ < p className = "text-sm text-gray-600" >
268+ After payment, you'll receive a Google Meet link for your session
269+ </ p >
270+ </ div >
271+ < div className = "flex gap-4" >
272+ < button
273+ onClick = { ( ) => setShowPayment ( false ) }
274+ className = "flex-1 px-4 py-2 border border-gray-300 rounded-lg hover:bg-gray-50"
275+ >
276+ Cancel
277+ </ button >
278+ < button
279+ className = "flex-1 px-4 py-2 bg-blue-600 text-white rounded-lg hover:bg-blue-700"
280+ >
281+ Pay ₹{ selectedExpert . price }
282+ </ button >
283+ </ div >
284+ </ div >
285+ </ div >
286+ ) }
287+
288+ { /* Footer */ }
289+ < footer className = "bg-gray-900 text-white px-6 py-12" >
290+ < div className = "max-w-4xl mx-auto text-center" >
291+ < h2 className = "text-2xl font-bold mb-4" >
292+ Simplifying DevOps Collaboration – One Expert at a Time
293+ </ h2 >
294+ < p className = "text-gray-400 mb-6" >
295+ Part of HelpOps-Hub | Contact: helpopshub@gmail.com
296+ </ p >
297+ < p className = "text-sm text-gray-500" >
298+ © 2024 helpops. All payments are secure and processed by trusted payment partners.
299+ </ p >
300+ </ div >
301+ </ footer >
302+ </ div >
303+ ) ;
304+ }
305+
306+ export default page ;
0 commit comments