2025-07-11 16:54:37 +05:30
import React , { useState } from "react" ;
import { Navigation } from "../components/Navigation" ;
import { Footer } from "../components/Footer" ;
import { Button } from "../components/ui/button" ;
import { Badge } from "../components/ui/badge" ;
import { Card , CardContent } from "../components/ui/card" ;
import { Input } from "../components/ui/input" ;
import { Textarea } from "../components/ui/textarea" ;
import { Select , SelectContent , SelectItem , SelectTrigger , SelectValue } from "../components/ui/select" ;
import { Calendar , Clock , Video , Phone , MessageSquare , ArrowRight , CheckCircle , User , Mail , Building2 , Target , Users , Lightbulb , TrendingUp } from "lucide-react" ;
import { navigateTo } from "../App" ;
export const ScheduleDiscoveryCall = ( ) = > {
const [ selectedDate , setSelectedDate ] = useState ( "" ) ;
const [ selectedTime , setSelectedTime ] = useState ( "" ) ;
const [ selectedExpert , setSelectedExpert ] = useState ( "any" ) ;
const [ formData , setFormData ] = useState ( {
name : "" ,
email : "" ,
company : "" ,
phone : "" ,
callPurpose : "" ,
meetingType : "video"
} ) ;
const [ isSubmitting , setIsSubmitting ] = useState ( false ) ;
const timeSlots = [
"9:00 AM" , "9:30 AM" , "10:00 AM" , "10:30 AM" , "11:00 AM" , "11:30 AM" ,
"12:00 PM" , "12:30 PM" , "1:00 PM" , "1:30 PM" , "2:00 PM" , "2:30 PM" ,
"3:00 PM" , "3:30 PM" , "4:00 PM" , "4:30 PM" , "5:00 PM" , "5:30 PM"
] ;
const experts = [
{
id : "john-smith" ,
name : "John Smith" ,
title : "Senior Solutions Architect" ,
specialties : [ "Enterprise Software" , "Cloud Solutions" , "System Architecture" ] ,
image : "https://images.unsplash.com/photo-1472099645785-5658abf4ff4e?auto=format&fit=crop&w=300&q=80" ,
experience : "12+ years"
} ,
{
id : "sarah-chen" ,
name : "Sarah Chen" ,
title : "AI/ML Solutions Expert" ,
specialties : [ "Artificial Intelligence" , "Machine Learning" , "Data Science" ] ,
image : "https://images.unsplash.com/photo-1494790108755-2616b612b786?auto=format&fit=crop&w=300&q=80" ,
experience : "8+ years"
} ,
{
id : "michael-rodriguez" ,
name : "Michael Rodriguez" ,
title : "Mobile App Development Lead" ,
specialties : [ "iOS Development" , "Android Development" , "Cross-Platform" ] ,
image : "https://images.unsplash.com/photo-1507003211169-0a1dd7228f2d?auto=format&fit=crop&w=300&q=80" ,
experience : "10+ years"
} ,
{
id : "emma-johnson" ,
name : "Emma Johnson" ,
title : "UI/UX Design Director" ,
specialties : [ "User Experience" , "Design Strategy" , "Prototyping" ] ,
image : "https://images.unsplash.com/photo-1438761681033-6461ffad8d80?auto=format&fit=crop&w=300&q=80" ,
experience : "9+ years"
}
] ;
const callExpectations = [
{
icon : MessageSquare ,
title : "A friendly chat, not a sales pitch" ,
description : "Our experts focus on understanding your needs and providing valuable insights"
} ,
{
icon : Target ,
title : "Discussion about your project ideas, challenges, and goals" ,
description : "We'll explore your vision and identify potential solutions together"
} ,
{
icon : Lightbulb ,
title : "Expert insights and potential solutions" ,
description : "Get professional recommendations based on our industry experience"
} ,
{
icon : CheckCircle ,
title : "No obligation to proceed" ,
description : "This is a consultation to help you make informed decisions"
}
] ;
const availableDates = [
"2024-01-15" , "2024-01-16" , "2024-01-17" , "2024-01-18" , "2024-01-19" ,
"2024-01-22" , "2024-01-23" , "2024-01-24" , "2024-01-25" , "2024-01-26" ,
"2024-01-29" , "2024-01-30" , "2024-01-31" , "2024-02-01" , "2024-02-02"
] ;
const handleInputChange = ( field : string , value : string ) = > {
setFormData ( prev = > ( { . . . prev , [ field ] : value } ) ) ;
} ;
const handleSubmit = async ( e : React.FormEvent ) = > {
e . preventDefault ( ) ;
setIsSubmitting ( true ) ;
2025-07-24 19:00:07 +05:30
2025-07-11 16:54:37 +05:30
// Simulate booking submission
await new Promise ( resolve = > setTimeout ( resolve , 2000 ) ) ;
2025-07-24 19:00:07 +05:30
2025-07-11 16:54:37 +05:30
alert ( ` Great! Your discovery call has been scheduled for ${ selectedDate } at ${ selectedTime } . You'll receive a confirmation email shortly with meeting details. ` ) ;
2025-07-24 19:00:07 +05:30
2025-07-11 16:54:37 +05:30
// Reset form
setFormData ( {
name : "" , email : "" , company : "" , phone : "" , callPurpose : "" , meetingType : "video"
} ) ;
setSelectedDate ( "" ) ;
setSelectedTime ( "" ) ;
setSelectedExpert ( "any" ) ;
setIsSubmitting ( false ) ;
} ;
const selectedExpertData = selectedExpert && selectedExpert !== "any" ? experts . find ( expert = > expert . id === selectedExpert ) : null ;
return (
< div className = "dark min-h-screen bg-background" >
< Navigation / >
2025-07-24 19:00:07 +05:30
2025-07-11 16:54:37 +05:30
{ /* Hero Section */ }
< section className = "pt-24 pb-16 bg-background" >
< div className = "container mx-auto px-6 lg:px-8" >
< div className = "max-w-4xl mx-auto text-center" >
< div className = "flex items-center justify-center gap-2 mb-6" >
< Calendar className = "w-6 h-6 text-[#E5195E]" / >
< Badge variant = "outline" className = "border-[#E5195E]/20 text-[#E5195E]" >
Free Consultation
< / Badge >
< / div >
< h1 className = "text-4xl md:text-6xl font-bold mb-6 bg-gradient-to-r from-white via-white to-white/80 bg-clip-text text-transparent" >
Schedule a Discovery Call : Let ' s Connect & Explore Your Vision
< / h1 >
< p className = "text-lg text-muted-foreground mb-8 max-w-3xl mx-auto" >
Ready to explore possibilities and discuss your project in detail ? Book a free , no - obligation Discovery Call with one of WDI 's expert consultants. We' ll listen to your needs , answer your questions , and identify how our services can best align with your business objectives .
< / p >
< div className = "flex items-center justify-center gap-4 text-sm text-muted-foreground" >
< div className = "flex items-center gap-2" >
< Clock className = "w-4 h-4" / >
< span > 30 - 45 minutes < / span >
< / div >
< div className = "flex items-center gap-2" >
< Video className = "w-4 h-4" / >
< span > Video or Phone < / span >
< / div >
< div className = "flex items-center gap-2" >
< CheckCircle className = "w-4 h-4" / >
< span > No obligation < / span >
< / div >
< / div >
< / div >
< / div >
< / section >
{ /* Main Booking Section */ }
< section className = "py-16 bg-card/50" >
< div className = "container mx-auto px-6 lg:px-8" >
< div className = "grid lg:grid-cols-3 gap-12" >
2025-07-24 19:00:07 +05:30
2025-07-11 16:54:37 +05:30
{ /* Booking Form */ }
< div className = "lg:col-span-2" >
< Card className = "bg-background/50 border-white/10" >
< CardContent className = "p-8" >
< h2 className = "text-2xl font-bold text-white mb-6" > Book Your Discovery Call < / h2 >
2025-07-24 19:00:07 +05:30
2025-07-11 16:54:37 +05:30
< form onSubmit = { handleSubmit } className = "space-y-8" >
2025-07-24 19:00:07 +05:30
2025-07-11 16:54:37 +05:30
{ /* Contact Information */ }
< div >
< h3 className = "text-lg font-semibold text-white mb-4" > Contact Information < / h3 >
< div className = "grid md:grid-cols-2 gap-4" >
< div >
< label className = "block text-sm font-medium text-white mb-2" > Name * < / label >
< Input
required
value = { formData . name }
onChange = { ( e ) = > handleInputChange ( "name" , e . target . value ) }
placeholder = "Your full name"
className = "bg-card/50 border-white/10"
/ >
< / div >
2025-07-24 19:00:07 +05:30
2025-07-11 16:54:37 +05:30
< div >
< label className = "block text-sm font-medium text-white mb-2" > Email * < / label >
< Input
type = "email"
required
value = { formData . email }
onChange = { ( e ) = > handleInputChange ( "email" , e . target . value ) }
placeholder = "your.email@example.com"
className = "bg-card/50 border-white/10"
/ >
< / div >
2025-07-24 19:00:07 +05:30
2025-07-11 16:54:37 +05:30
< div >
< label className = "block text-sm font-medium text-white mb-2" > Company Name * < / label >
< Input
required
value = { formData . company }
onChange = { ( e ) = > handleInputChange ( "company" , e . target . value ) }
placeholder = "Your company name"
className = "bg-card/50 border-white/10"
/ >
< / div >
2025-07-24 19:00:07 +05:30
2025-07-11 16:54:37 +05:30
< div >
< label className = "block text-sm font-medium text-white mb-2" > Phone Number < / label >
< Input
type = "tel"
value = { formData . phone }
onChange = { ( e ) = > handleInputChange ( "phone" , e . target . value ) }
placeholder = "+1 (555) 123-4567"
className = "bg-card/50 border-white/10"
/ >
< / div >
< / div >
< / div >
{ /* Meeting Preferences */ }
< div >
< h3 className = "text-lg font-semibold text-white mb-4" > Meeting Preferences < / h3 >
< div className = "grid md:grid-cols-2 gap-4 mb-4" >
< div >
< label className = "block text-sm font-medium text-white mb-2" > Preferred Meeting Type * < / label >
< Select value = { formData . meetingType } onValueChange = { ( value ) = > handleInputChange ( "meetingType" , value ) } >
< SelectTrigger className = "bg-card/50 border-white/10 text-white" >
< SelectValue placeholder = "Select meeting type" className = "text-white" / >
< / SelectTrigger >
< SelectContent >
< SelectItem value = "video" > Video Call ( Preferred ) < / SelectItem >
< SelectItem value = "phone" > Phone Call < / SelectItem >
< SelectItem value = "in-person" > In - Person ( if local ) < / SelectItem >
< / SelectContent >
< / Select >
< / div >
2025-07-24 19:00:07 +05:30
2025-07-11 16:54:37 +05:30
< div >
< label className = "block text-sm font-medium text-white mb-2" > Preferred Expert < / label >
< Select value = { selectedExpert } onValueChange = { setSelectedExpert } >
< SelectTrigger className = "bg-card/50 border-white/10 text-white" >
< SelectValue placeholder = "Any available expert" className = "text-white" / >
< / SelectTrigger >
< SelectContent >
< SelectItem value = "any" > Any available expert < / SelectItem >
{ experts . map ( ( expert ) = > (
< SelectItem key = { expert . id } value = { expert . id } >
{ expert . name } - { expert . title }
< / SelectItem >
) ) }
< / SelectContent >
< / Select >
< / div >
< / div >
2025-07-24 19:00:07 +05:30
2025-07-11 16:54:37 +05:30
< div >
< label className = "block text-sm font-medium text-white mb-2" > Brief purpose of the call * < / label >
< Textarea
required
value = { formData . callPurpose }
onChange = { ( e ) = > handleInputChange ( "callPurpose" , e . target . value ) }
placeholder = "Tell us about your project, challenges, or what you'd like to discuss..."
rows = { 3 }
className = "bg-card/50 border-white/10"
/ >
< / div >
< / div >
{ /* Date Selection */ }
< div >
< h3 className = "text-lg font-semibold text-white mb-4" > Select Date & Time < / h3 >
< div className = "grid md:grid-cols-2 gap-4" >
< div >
< label className = "block text-sm font-medium text-white mb-2" > Preferred Date * < / label >
< Select value = { selectedDate } onValueChange = { setSelectedDate } >
< SelectTrigger className = "bg-card/50 border-white/10 text-white" >
< SelectValue placeholder = "Select a date" className = "text-white" / >
< / SelectTrigger >
< SelectContent >
{ availableDates . map ( ( date ) = > (
< SelectItem key = { date } value = { date } >
2025-07-24 19:00:07 +05:30
{ new Date ( date ) . toLocaleDateString ( 'en-US' , {
weekday : 'long' ,
year : 'numeric' ,
month : 'long' ,
day : 'numeric'
2025-07-11 16:54:37 +05:30
} ) }
< / SelectItem >
) ) }
< / SelectContent >
< / Select >
< / div >
2025-07-24 19:00:07 +05:30
2025-07-11 16:54:37 +05:30
< div >
< label className = "block text-sm font-medium text-white mb-2" > Preferred Time ( EST ) * < / label >
< Select value = { selectedTime } onValueChange = { setSelectedTime } >
< SelectTrigger className = "bg-card/50 border-white/10 text-white" >
< SelectValue placeholder = "Select a time" className = "text-white" / >
< / SelectTrigger >
< SelectContent >
{ timeSlots . map ( ( time ) = > (
< SelectItem key = { time } value = { time } >
{ time }
< / SelectItem >
) ) }
< / SelectContent >
< / Select >
< / div >
< / div >
< / div >
{ /* Submit Button */ }
< Button
type = "submit"
disabled = { ! selectedDate || ! selectedTime || isSubmitting }
className = "w-full bg-[#E5195E] hover:bg-[#E5195E]/90 text-white disabled:opacity-50"
>
{ isSubmitting ? "Booking Your Call..." : "Book Your Free Consultation Now" }
< / Button >
< / form >
< / CardContent >
< / Card >
< / div >
{ /* Sidebar Info */ }
< div className = "space-y-8" >
2025-07-24 19:00:07 +05:30
2025-07-11 16:54:37 +05:30
{ /* Selected Expert Info */ }
{ selectedExpertData && (
< Card className = "bg-background/50 border-white/10" >
< CardContent className = "p-6" >
< h3 className = "text-lg font-semibold text-white mb-4" > Your Expert Consultant < / h3 >
< div className = "flex items-start gap-4" >
2025-07-24 19:00:07 +05:30
< img
src = { selectedExpertData . image }
2025-07-11 16:54:37 +05:30
alt = { selectedExpertData . name }
className = "w-16 h-16 rounded-full object-cover"
/ >
< div className = "flex-1" >
< h4 className = "text-white font-medium" > { selectedExpertData . name } < / h4 >
< p className = "text-[#E5195E] text-sm mb-2" > { selectedExpertData . title } < / p >
< p className = "text-muted-foreground text-sm mb-2" > { selectedExpertData . experience } experience < / p >
< div className = "flex flex-wrap gap-1" >
{ selectedExpertData . specialties . map ( ( specialty , index ) = > (
< Badge key = { index } variant = "outline" className = "border-white/20 text-white/70 text-xs" >
{ specialty }
< / Badge >
) ) }
< / div >
< / div >
< / div >
< / CardContent >
< / Card >
) }
{ /* What to Expect */ }
< Card className = "bg-background/50 border-white/10" >
< CardContent className = "p-6" >
< h3 className = "text-lg font-semibold text-white mb-4" > What to Expect from Your Call < / h3 >
< div className = "space-y-4" >
{ callExpectations . map ( ( item , index ) = > {
const Icon = item . icon ;
return (
< div key = { index } className = "flex items-start gap-3" >
< div className = "w-8 h-8 rounded-lg bg-[#E5195E]/20 flex items-center justify-center flex-shrink-0" >
< Icon className = "w-4 h-4 text-[#E5195E]" / >
< / div >
< div >
< h4 className = "text-white font-medium text-sm mb-1" > { item . title } < / h4 >
< p className = "text-muted-foreground text-xs" > { item . description } < / p >
< / div >
< / div >
) ;
} ) }
< / div >
< / CardContent >
< / Card >
{ /* Alternative Contact */ }
< Card className = "bg-background/50 border-white/10" >
< CardContent className = "p-6" >
< h3 className = "text-lg font-semibold text-white mb-4" > Prefer Email ? < / h3 >
< p className = "text-muted-foreground text-sm mb-4" >
If scheduling isn ' t convenient , you can reach us directly via email .
< / p >
2025-07-24 19:00:07 +05:30
< a href = "mailto:ideas@wdipl.com" className = "block w-full" >
< Button variant = "outline" className = "w-full border-white/20 text-white hover:bg-white/10" >
< Mail className = "w-4 h-4 mr-2" / >
Send Email to ideas @wdipl . com
< / Button >
< / a >
2025-07-11 16:54:37 +05:30
< / CardContent >
< / Card >
< / div >
< / div >
< / div >
< / section >
{ /* Our Experts Section */ }
2025-07-24 19:00:07 +05:30
{ / * < s e c t i o n c l a s s N a m e = " p y - 1 6 b g - b a c k g r o u n d " >
2025-07-11 16:54:37 +05:30
< div className = "container mx-auto px-6 lg:px-8" >
< div className = "text-center mb-12" >
< h2 className = "text-3xl font-bold text-white mb-4" > Meet Our Expert Consultants < / h2 >
< p className = "text-muted-foreground max-w-2xl mx-auto" >
Our experienced consultants are ready to discuss your project and provide valuable insights based on years of industry experience .
< / p >
< / div >
< div className = "grid md:grid-cols-2 lg:grid-cols-4 gap-8" >
{ experts . map ( ( expert ) = > (
< Card key = { expert . id } className = "bg-card/50 border-white/10 hover:border-[#E5195E]/30 transition-all duration-300 text-center" >
< CardContent className = "p-6" >
< img
src = { expert . image }
alt = { expert . name }
className = "w-20 h-20 rounded-full object-cover mx-auto mb-4"
/ >
< h3 className = "text-white font-semibold mb-1" > { expert . name } < / h3 >
< p className = "text-[#E5195E] text-sm mb-2" > { expert . title } < / p >
< p className = "text-muted-foreground text-xs mb-3" > { expert . experience } experience < / p >
< div className = "flex flex-wrap gap-1 justify-center" >
{ expert . specialties . slice ( 0 , 2 ) . map ( ( specialty , index ) = > (
< Badge key = { index } variant = "outline" className = "border-white/20 text-white/70 text-xs" >
{ specialty }
< / Badge >
) ) }
< / div >
< / CardContent >
< / Card >
) ) }
< / div >
< / div >
2025-07-24 19:00:07 +05:30
< / section > * / }
2025-07-11 16:54:37 +05:30
{ /* Process Section */ }
< section className = "py-16 bg-card/50" >
< div className = "container mx-auto px-6 lg:px-8" >
< div className = "text-center mb-12" >
< h2 className = "text-3xl font-bold text-white mb-4" > How It Works < / h2 >
< p className = "text-muted-foreground" > Simple steps to get started with your discovery call < / p >
< / div >
2025-07-24 19:00:07 +05:30
2025-07-11 16:54:37 +05:30
< div className = "grid md:grid-cols-4 gap-8" >
{ [
{ step : 1 , title : "Book Your Call" , description : "Choose your preferred date, time, and expert" } ,
{ step : 2 , title : "Receive Confirmation" , description : "Get meeting details and calendar invite via email" } ,
{ step : 3 , title : "Join the Call" , description : "Connect with our expert at the scheduled time" } ,
{ step : 4 , title : "Explore Solutions" , description : "Discuss your needs and potential next steps" }
] . map ( ( item , index ) = > (
< div key = { index } className = "text-center" >
< div className = "w-12 h-12 rounded-full bg-[#E5195E] text-white font-bold text-lg flex items-center justify-center mx-auto mb-4" >
{ item . step }
< / div >
< h3 className = "text-white font-semibold mb-2" > { item . title } < / h3 >
< p className = "text-muted-foreground text-sm" > { item . description } < / p >
< / div >
) ) }
< / div >
< / div >
< / section >
{ /* CTA Section */ }
< section className = "py-16 bg-background" >
< div className = "container mx-auto px-6 lg:px-8" >
< div className = "max-w-4xl mx-auto text-center" >
< h2 className = "text-3xl font-bold text-white mb-6" >
Ready to Transform Your Ideas into Reality ?
< / h2 >
< p className = "text-lg text-muted-foreground mb-8" >
Don ' t wait ! Book your free discovery call today and take the first step toward bringing your vision to life .
< / p >
< div className = "flex flex-col sm:flex-row gap-4 justify-center" >
2025-07-24 19:00:07 +05:30
< Button size = "lg" className = "bg-[#E5195E] hover:bg-[#E5195E]/90 text-white"
onClick = { ( ) = > navigateTo ( "/start-a-project" ) }
>
2025-07-11 16:54:37 +05:30
Book Your Free Consultation Now
< ArrowRight className = "ml-2 w-4 h-4" / >
< / Button >
< Button size = "lg" variant = "outline" className = "border-white/20 text-white hover:bg-white/10" >
See Our Available Times
< / Button >
< / div >
< / div >
< / div >
< / section >
< Footer / >
< / div >
) ;
} ;