'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 (
Message envoyé ! {submitResult.message}

Prochaines étapes :

  • • Un expert DocV vous contactera sous 24h
  • • Analyse de votre projet et de vos besoins
  • • Proposition de solution personnalisée
  • • Planification d'une démonstration si demandée

Contact direct : contact@docv.fr

) } return (
{/* Header */}
DocV By 4NK Retour à l'accueil
{/* Hero */}

Contactez-nous pour votre projet

Discutons de votre projet de souveraineté numérique. Nos experts vous accompagnent dans la mise en œuvre de solutions DocV adaptées à vos besoins.

{/* Message d'erreur */} {submitResult && !submitResult.success && (

{submitResult.message}

)}
{/* Informations Contact */} Vos informations Renseignez vos coordonnées pour que nous puissions vous recontacter
setFormData(prev => ({ ...prev, nom: e.target.value }))} placeholder="Votre nom" required />
setFormData(prev => ({ ...prev, prenom: e.target.value }))} placeholder="Votre prénom" required />
setFormData(prev => ({ ...prev, email: e.target.value }))} placeholder="votre.email@entreprise.com" required />
setFormData(prev => ({ ...prev, telephone: e.target.value }))} placeholder="01 23 45 67 89" />
setFormData(prev => ({ ...prev, entreprise: e.target.value }))} placeholder="Nom de votre entreprise" />
setFormData(prev => ({ ...prev, fonction: e.target.value }))} placeholder="Votre fonction" />
{/* Type de projet */} Votre projet Décrivez-nous votre projet et vos besoins
setFormData(prev => ({ ...prev, typeProjet: value }))} >
{/* Services souhaités */} Services souhaités Sélectionnez les services qui vous intéressent
handleServiceChange('ged-souveraine', checked as boolean)} />
handleServiceChange('integration-marque-blanche', checked as boolean)} />
handleServiceChange('solutions-open-source', checked as boolean)} />
handleServiceChange('formation', checked as boolean)} />
handleServiceChange('audit', checked as boolean)} />
{/* Description détaillée */} Description du projet