'use client' import { useState } from 'react' import Link from "next/link" import { Button } from "@/components/ui/button" import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card" import { Input } from "@/components/ui/input" import { Label } from "@/components/ui/label" import { Badge } from "@/components/ui/badge" import { Textarea } from "@/components/ui/textarea" import { Checkbox } from "@/components/ui/checkbox" import { RadioGroup, RadioGroupItem } from "@/components/ui/radio-group" import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select" import { Shield, ArrowLeft, Mail, User, MessageSquare, CheckCircle, Lightbulb, Loader2 } from 'lucide-react' import { submitContactForm } from '@/app/actions/contact' export default function ContactPage() { const [formData, setFormData] = useState({ nom: '', prenom: '', email: '', telephone: '', entreprise: '', fonction: '', typeProjet: '', budget: '', delai: '', description: '', objectifs: '', contraintes: '', services: [] as string[], demo: false, accompagnement: false }) const [isSubmitting, setIsSubmitting] = useState(false) const [submitResult, setSubmitResult] = useState<{ success: boolean; message: string } | null>(null) const handleServiceChange = (service: string, checked: boolean) => { if (checked) { setFormData(prev => ({ ...prev, services: [...prev.services, service] })) } else { setFormData(prev => ({ ...prev, services: prev.services.filter(s => s !== service) })) } } const handleSubmit = async (e: React.FormEvent) => { e.preventDefault() // Validation côté client if (formData.description.trim().length < 10) { setSubmitResult({ success: false, message: 'La description doit contenir au moins 10 caractères.' }) return } setIsSubmitting(true) setSubmitResult(null) try { const formDataToSend = new FormData() // Ajout de tous les champs au FormData Object.entries(formData).forEach(([key, value]) => { if (key === 'services') { value.forEach((service: string) => formDataToSend.append('services', service)) } else if (typeof value === 'boolean') { formDataToSend.append(key, value.toString()) } else { formDataToSend.append(key, value) } }) const result = await submitContactForm(formDataToSend) setSubmitResult(result) if (result.success) { // Reset du formulaire en cas de succès setFormData({ nom: '', prenom: '', email: '', telephone: '', entreprise: '', fonction: '', typeProjet: '', budget: '', delai: '', description: '', objectifs: '', contraintes: '', services: [], demo: false, accompagnement: false }) } } catch (error) { setSubmitResult({ success: false, message: 'Une erreur inattendue est survenue. Veuillez réessayer.' }) } finally { setIsSubmitting(false) } } if (submitResult?.success) { return (
Contact direct : contact@docv.fr
Discutons de votre projet de souveraineté numérique. Nos experts vous accompagnent dans la mise en œuvre de solutions DocV adaptées à vos besoins.
{submitResult.message}