Pour tout problème contactez-nous par mail : support@froggit.fr | La FAQ :grey_question: | Rejoignez-nous sur le Chat :speech_balloon:

Skip to content
Snippets Groups Projects
Commit efd61c86 authored by Léon Amirkhanian's avatar Léon Amirkhanian
Browse files

corrected privacy policy

parent c18d0ccb
No related branches found
No related tags found
No related merge requests found
Pipeline #53475 passed
......@@ -57,6 +57,104 @@ function ClientLogo({ name, logo }: { name: string; logo: string }) {
);
}
function ServiceCard({ icon: Icon, title, description, image, imagePosition = 'right' }: {
icon: React.ElementType;
title: string;
description: string;
image: string;
imagePosition?: 'left' | 'right';
}) {
return (
<div className="flex flex-col md:flex-row items-center gap-8 mb-16">
<div className={`w-full md:w-1/2 order-2 ${imagePosition === 'right' ? 'md:order-1' : 'md:order-2'}`}>
<div className="bg-slate-800/50 backdrop-blur-sm p-6 rounded-lg shadow-lg hover:shadow-indigo-500/10 hover:shadow-2xl transition-all duration-300 border border-slate-700/50 h-full">
<Icon className="w-12 h-12 text-indigo-400 mb-4" />
<h3 className="text-xl font-semibold mb-2 text-white">{title}</h3>
<p className="text-slate-300">{description}</p>
</div>
</div>
<div className={`w-full md:w-1/2 order-1 ${imagePosition === 'right' ? 'md:order-2' : 'md:order-1'}`}>
<img
src={image}
alt={title}
className="rounded-lg shadow-lg w-full h-64 object-cover"
/>
</div>
</div>
);
}
function PrivacyPolicy({ isOpen, onClose }: { isOpen: boolean; onClose: () => void }) {
if (!isOpen) return null;
return (
<div className="fixed inset-0 z-50 flex items-center justify-center p-4">
<div
className="absolute inset-0 bg-black/60 backdrop-blur-sm"
onClick={onClose}
/>
<div className="bg-slate-900 w-full max-w-2xl rounded-lg shadow-xl relative z-10 p-6 max-h-[80vh] overflow-y-auto">
<button
onClick={onClose}
className="absolute top-4 right-4 p-2 hover:bg-gray-100/10 rounded-lg transition-colors text-white"
>
<X className="w-6 h-6" />
</button>
<h2 className="text-2xl font-bold mb-4 text-white">Politique de Confidentialité</h2>
<div className="prose prose-invert">
<p className="text-slate-300 mb-4">
Dernière mise à jour : {new Date().toLocaleDateString()}
</p>
<h3 className="text-xl font-semibold mb-2 text-white">1. Collecte des Informations</h3>
<p className="text-slate-300 mb-4">
Nous collectons les informations que vous nous fournissez directement lorsque vous utilisez nos services, notamment :
</p>
<ul className="list-disc pl-6 mb-4 text-slate-300">
<li>Informations de contact (nom, email, téléphone)</li>
<li>Informations de rendez-vous via Cal.com</li>
<li>Communications par email</li>
</ul>
<h3 className="text-xl font-semibold mb-2 text-white">2. Utilisation des Informations</h3>
<p className="text-slate-300 mb-4">
Nous utilisons les informations collectées pour :
</p>
<ul className="list-disc pl-6 mb-4 text-slate-300">
<li>Fournir et améliorer nos services</li>
<li>Communiquer avec vous concernant nos services</li>
<li>Personnaliser votre expérience</li>
</ul>
<h3 className="text-xl font-semibold mb-2 text-white">3. Protection des Données</h3>
<p className="text-slate-300 mb-4">
Nous prenons la sécurité de vos données très au sérieux et mettons en œuvre des mesures de sécurité appropriées pour protéger vos informations.
</p>
<h3 className="text-xl font-semibold mb-2 text-white">4. Vos Droits</h3>
<p className="text-slate-300 mb-4">
Conformément au RGPD, vous disposez des droits suivants :
</p>
<ul className="list-disc pl-6 mb-4 text-slate-300">
<li>Droit d'accès à vos données</li>
<li>Droit de rectification</li>
<li>Droit à l'effacement</li>
<li>Droit à la portabilité des données</li>
</ul>
<h3 className="text-xl font-semibold mb-2 text-white">5. Contact</h3>
<p className="text-slate-300">
Pour toute question concernant cette politique de confidentialité, veuillez nous contacter à :
<br />
<a href="mailto:contact@lenix.io" className="text-indigo-400 hover:text-indigo-300">
contact@lenix.io
</a>
</p>
</div>
</div>
</div>
);
}
function Navbar({ onScheduleClick }: { onScheduleClick: (e: React.MouseEvent) => void }) {
const [isMenuOpen, setIsMenuOpen] = useState(false);
......@@ -69,12 +167,6 @@ function Navbar({ onScheduleClick }: { onScheduleClick: (e: React.MouseEvent) =>
setIsMenuOpen(false);
};
const handleScheduleClick = (e: React.MouseEvent) => {
e.preventDefault();
onScheduleClick(e);
setIsMenuOpen(false);
};
return (
<nav className="fixed top-4 left-0 right-0 z-40 mx-4">
<div className="container mx-auto">
......@@ -90,7 +182,7 @@ function Navbar({ onScheduleClick }: { onScheduleClick: (e: React.MouseEvent) =>
<a href="#clients" onClick={(e) => scrollToSection(e, 'clients')} className="text-slate-300 hover:text-white transition-colors">Nos Clients</a>
<div className="relative">
<button
onClick={handleScheduleClick}
onClick={onScheduleClick}
className="bg-indigo-600 text-white px-6 py-2 rounded-full hover:bg-indigo-700 transition-colors flex items-center shadow-lg shadow-indigo-500/20"
>
Prendre RDV <Calendar className="ml-2 w-5 h-5" />
......@@ -117,7 +209,7 @@ function Navbar({ onScheduleClick }: { onScheduleClick: (e: React.MouseEvent) =>
<a href="#clients" onClick={(e) => scrollToSection(e, 'clients')} className="text-slate-300 hover:text-white transition-colors py-2">Nos Clients</a>
<div className="relative">
<button
onClick={handleScheduleClick}
onClick={onScheduleClick}
className="bg-indigo-600 text-white px-6 py-3 rounded-lg hover:bg-indigo-700 transition-colors flex items-center justify-center shadow-lg shadow-indigo-500/20 w-full"
>
Prendre RDV <Calendar className="ml-2 w-5 h-5" />
......@@ -328,6 +420,9 @@ function App() {
<div>
<h3 className="text-xl font-semibold mb-4 text-indigo-400">Contact</h3>
<div className="space-y-2">
<a href="tel:+33123456789" className="flex items-center hover:text-indigo-400 transition-colors">
<Phone className="w-5 h-5 mr-2" /> +33 1 23 45 67 89
</a>
<a href="mailto:contact@lenix.io" className="flex items-center hover:text-indigo-400 transition-colors">
<Mail className="w-5 h-5 mr-2" /> contact@lenix.io
</a>
......@@ -372,33 +467,9 @@ function App() {
</div>
</div>
</footer>
</div>
);
}
function ServiceCard({ icon: Icon, title, description, image, imagePosition = 'right' }: {
icon: React.ElementType;
title: string;
description: string;
image: string;
imagePosition?: 'left' | 'right';
}) {
return (
<div className="flex flex-col md:flex-row items-center gap-8 mb-16">
<div className={`w-full md:w-1/2 order-2 ${imagePosition === 'right' ? 'md:order-1' : 'md:order-2'}`}>
<div className="bg-slate-800/50 backdrop-blur-sm p-6 rounded-lg shadow-lg hover:shadow-indigo-500/10 hover:shadow-2xl transition-all duration-300 border border-slate-700/50 h-full">
<Icon className="w-12 h-12 text-indigo-400 mb-4" />
<h3 className="text-xl font-semibold mb-2 text-white">{title}</h3>
<p className="text-slate-300">{description}</p>
</div>
</div>
<div className={`w-full md:w-1/2 order-1 ${imagePosition === 'right' ? 'md:order-2' : 'md:order-1'}`}>
<img
src={image}
alt={title}
className="rounded-lg shadow-lg w-full h-64 object-cover"
/>
</div>
{/* Privacy Policy Modal */}
<PrivacyPolicy isOpen={isPrivacyOpen} onClose={() => setIsPrivacyOpen(false)} />
</div>
);
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment