khagu's picture
add all files for deployment
9215c5e
'use client'
import React from "react"
import { useState } from 'react'
import { Send } from 'lucide-react'
import { Button } from '@/components/ui/button'
export function ShareProblemSection() {
const [formData, setFormData] = useState({
name: '',
email: '',
problem: '',
})
const [isSubmitting, setIsSubmitting] = useState(false)
const [submitStatus, setSubmitStatus] = useState<'idle' | 'success' | 'error'>('idle')
const handleChange = (e: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>) => {
const { name, value } = e.target
setFormData(prev => ({
...prev,
[name]: value,
}))
}
const handleSubmit = async (e: React.FormEvent) => {
e.preventDefault()
setIsSubmitting(true)
try {
// Simulate form submission
await new Promise(resolve => setTimeout(resolve, 1000))
setSubmitStatus('success')
setFormData({ name: '', email: '', problem: '' })
setTimeout(() => setSubmitStatus('idle'), 3000)
} catch (error) {
setSubmitStatus('error')
setTimeout(() => setSubmitStatus('idle'), 3000)
} finally {
setIsSubmitting(false)
}
}
return (
<section className="py-12 sm:py-16 md:py-20 px-4 md:px-6 bg-gradient-to-b from-background via-muted/20 to-background" aria-labelledby="share-problem-heading">
<div className="container mx-auto max-w-3xl">
<div className="bg-card border border-border rounded-2xl sm:rounded-3xl p-5 sm:p-8 md:p-12 shadow-lg">
<div className="text-center mb-6 sm:mb-8">
<h2 id="share-problem-heading" className="text-2xl sm:text-3xl md:text-4xl lg:text-5xl font-bold text-foreground mb-3 sm:mb-4">
Share Your Problem
</h2>
<p className="text-sm sm:text-base md:text-lg text-muted-foreground px-2">
Have a challenge you'd like the community to help solve? Tell us about it and let's innovate together.
</p>
</div>
<form onSubmit={handleSubmit} className="space-y-4 sm:space-y-6">
{/* Name Field */}
<div>
<label htmlFor="name" className="block text-xs sm:text-sm font-semibold text-foreground mb-1.5 sm:mb-2">
Your Name
</label>
<input
type="text"
id="name"
name="name"
value={formData.name}
onChange={handleChange}
required
placeholder="Enter your full name"
className="w-full px-3 sm:px-4 py-2.5 sm:py-3 rounded-lg border border-border bg-background text-foreground placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-primary transition-all text-sm sm:text-base"
/>
</div>
{/* Email Field */}
<div>
<label htmlFor="email" className="block text-xs sm:text-sm font-semibold text-foreground mb-1.5 sm:mb-2">
Email Address
</label>
<input
type="email"
id="email"
name="email"
value={formData.email}
onChange={handleChange}
required
placeholder="your.email@example.com"
className="w-full px-3 sm:px-4 py-2.5 sm:py-3 rounded-lg border border-border bg-background text-foreground placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-primary transition-all text-sm sm:text-base"
/>
</div>
{/* Problem Field */}
<div>
<label htmlFor="problem" className="block text-xs sm:text-sm font-semibold text-foreground mb-1.5 sm:mb-2">
Describe Your Problem
</label>
<textarea
id="problem"
name="problem"
value={formData.problem}
onChange={handleChange}
required
placeholder="Tell us about the challenge you're facing. What problem are you trying to solve?"
rows={5}
className="w-full px-3 sm:px-4 py-2.5 sm:py-3 rounded-lg border border-border bg-background text-foreground placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-primary transition-all resize-none text-sm sm:text-base"
/>
</div>
{/* Submit Button and Status */}
<div className="flex flex-col gap-4">
<Button
type="submit"
disabled={isSubmitting || submitStatus === 'success'}
className="w-full bg-gradient-to-r from-primary to-secondary hover:opacity-90 disabled:opacity-50 text-white py-3 rounded-lg font-semibold flex items-center justify-center gap-2"
>
{isSubmitting ? (
<>
<span className="animate-spin inline-block w-4 h-4 border-2 border-white border-t-transparent rounded-full" />
Submitting...
</>
) : (
<>
<Send className="w-4 h-4" />
Share Problem with Community
</>
)}
</Button>
{submitStatus === 'success' && (
<div className="bg-green-50 dark:bg-green-950/50 border border-green-200 dark:border-green-800 text-green-700 dark:text-green-400 px-4 py-3 rounded-lg text-center text-sm">
Thank you! We've received your problem and will review it shortly.
</div>
)}
{submitStatus === 'error' && (
<div className="bg-red-50 dark:bg-red-950/50 border border-red-200 dark:border-red-800 text-red-700 dark:text-red-400 px-4 py-3 rounded-lg text-center text-sm">
Something went wrong. Please try again.
</div>
)}
</div>
</form>
</div>
</div>
</section>
)
}