function InfosPratiques() {
const w = useW();
const isMobile = w < 600;
const [tab, setTab] = React.useState('pharmacies');
const tabs = [
{ id: 'pharmacies', label: '🏥 Pharmacies' },
{ id: 'sante', label: '🩺 Santé' },
{ id: 'securite', label: '🚔 Sécurité' },
{ id: 'hotels', label: '🏨 Hôtels' },
{ id: 'restaurants', label: '🍽 Restaurants' },
{ id: 'commerces', label: '🛒 Commerces' },
];
const pharmacies = [
{ nom: 'Pharmacie de la Gare', garde: true },
{ nom: 'Grande Pharmacie du Sud-Ouest', garde: false },
{ nom: 'Pharmacie de la Mairie de Soubré', garde: false },
{ nom: "Pharmacie de l'Immaculée", garde: false },
{ nom: 'Pharmacie du Sud Ouest', tel: '27 34 72 32 19', mobile: '07 08 72 81 74', mail: 'gbohoussou@hotmail.com', garde: false },
{ nom: 'Pharmacie de la Mosquée', tel: '07 07 89 95 83', mobile: '07 67 25 98 65', mail: 'phciedmosque18@gmail.com', garde: false },
];
const hotels = [
{ nom: 'MARINA', mobile: '07 18 62 66 55', mail: 'mohamedmoghnieh@gmail.com' },
{ nom: 'BERGE RIVE', mobile: '05 76 15 71 71', mail: 'bergerivehotel@gmail.com' },
{ nom: 'COMPLEXE HOTELIER ANOUAZE', tel: '27 34 72 26 58', mobile: '07 47 14 60 41', whatsapp: '07 58 06 09 23', mail: 'hotelanouaze@gmail.com' },
];
const commerces = [
{ nom: 'NUMER ONE', mobile: '07 06 70 00 00' },
{ nom: 'SUPER MARCHE MARINA', mobile: '07 13 39 34 97' },
{ nom: 'SUPER MARCHE BON PRIX', mobile: '07 87 30 11 50' },
];
const restaurants = [{ nom: 'MARINA', mobile: '07 00 24 88 86' }];
const sante = [
{ nom: 'PHARMACIE DE LA MOSQUEE', tel: '07 07 89 95 83', mobile: '07 67 25 98 65', whatsapp: '07 67 25 98 65', mail: 'phciedmosque18@gmail.com' },
{ nom: 'PHARMACIE SUD-OUEST', tel: '27 34 72 32 19', mobile: '07 08 72 81 74', whatsapp: '07 08 72 81 74', mail: 'gbohoussou@hotmail.com' },
];
const ContactTable = ({ rows }) => (
isMobile ? (
{rows.map((r, i) => (
{r.nom}
{r.tel &&
📞 {r.tel}
}
{r.mobile &&
📱 {r.mobile}
}
{r.whatsapp &&
💬 {r.whatsapp}
}
{r.mail &&
✉ {r.mail} }
))}
) : (
{['Service', 'Téléphone', 'Mobile', 'WhatsApp', 'Email'].map(h => (
{h}
))}
{rows.map((r, i) => (
{r.nom}
{r.tel || '—'}
{r.mobile || '—'}
{r.whatsapp || '—'}
{r.mail ? {r.mail} : '—'}
))}
)
);
const pharmacyGrid = isMobile ? '1fr 1fr' : w < 960 ? '1fr 1fr' : 'repeat(3, 1fr)';
return (
{tabs.map(t => (
setTab(t.id)} style={{ padding: isMobile ? '12px 12px' : '14px 18px', background: 'none', border: 'none', whiteSpace: 'nowrap', borderBottom: tab === t.id ? '3px solid #e07020' : '3px solid transparent', color: tab === t.id ? '#0f3219' : '#666', fontWeight: tab === t.id ? 700 : 400, fontSize: isMobile ? 12 : 13, cursor: 'pointer', fontFamily: "'Source Sans 3', sans-serif" }}>{t.label}
))}
{tab === 'pharmacies' && (
🏥
Pharmacie de garde actuellement
Pharmacie de la Gare
Appeler →
Liste des pharmacies
{pharmacies.map((p, i) => (
{p.garde &&
DE GARDE
}
{p.nom}
{p.mobile &&
{p.mobile}
}
{p.mail &&
{p.mail} }
))}
)}
{tab === 'sante' && (
Contacts Santé )}
{tab === 'securite' && (
🚔
Les contacts des services de sécurité seront disponibles prochainement.
En cas d'urgence : 110 (Police) — 111 (Gendarmerie)
)}
{tab === 'hotels' && (
Établissements Hôteliers )}
{tab === 'restaurants' && (
Restaurants )}
{tab === 'commerces' && (
Établissements Commerciaux )}
);
}
function Actualites() {
const w = useW();
const isMobile = w < 700;
const articles = [
{ date: '03 Mai 2025', titre: 'Remise de clés de trois salles de classe à EPP Djoutoubo', cat: 'Éducation', img: 'assets/image2.jpg', resume: "Le Sénateur-Maire TRAORÉ Lassina a procédé à la remise officielle des clés de trois nouvelles salles de classe à l'École Primaire Publique de Djoutoubo, renforçant l'infrastructure éducative de la commune." },
{ date: '15 Avril 2025', titre: 'Le Sénateur-Maire reçoit le prix du Meilleur Maire', cat: 'Distinction', img: 'assets/image5.png', resume: "La commune de Soubré est à l'honneur : TRAORÉ Lassina a été distingué Meilleur Maire de Côte d'Ivoire, récompensant son action exemplaire au service des citoyens." },
{ date: '02 Avril 2025', titre: 'Inauguration de nouvelles infrastructures communales', cat: 'Infrastructure', img: 'assets/image2.jpg', resume: "La Mairie de Soubré a procédé à l'inauguration de nouvelles infrastructures dans plusieurs quartiers, améliorant les conditions de vie des habitants." },
{ date: '20 Mars 2025', titre: 'Lancement du programme Emploi pour Tous', cat: 'Emploi', img: 'assets/image1.png', resume: "La Mairie de Soubré lance une nouvelle session de son programme « Emploi pour Tous », visant à favoriser l'insertion professionnelle des jeunes de la commune." },
];
return (
{articles.map((a, i) => (
{ e.currentTarget.style.transform = 'translateY(-4px)'; e.currentTarget.style.boxShadow = '0 12px 32px rgba(0,0,0,0.1)'; }}
onMouseLeave={e => { e.currentTarget.style.transform = ''; e.currentTarget.style.boxShadow = '0 2px 8px rgba(0,0,0,0.05)'; }}>
{a.cat}
{a.date}
{a.titre}
{a.resume}
))}
);
}
function Galerie() {
const w = useW();
const isMobile = w < 600;
const imgs = ['assets/image1.png','assets/image2.jpg','assets/image3.jpg','assets/image5.png','assets/image7.jpeg','assets/image17.jpg','assets/image11.jpg','assets/image13.jpg'];
const [lightbox, setLightbox] = React.useState(null);
return (
{imgs.map((src, i) => (
setLightbox(i)} style={{ breakInside: 'avoid', marginBottom: 12, cursor: 'pointer', borderRadius: 8, overflow: 'hidden' }}>
e.target.style.transform = 'scale(1.04)'}
onMouseLeave={e => e.target.style.transform = ''} />
))}
{lightbox !== null && (
setLightbox(null)} style={{ position: 'fixed', inset: 0, background: 'rgba(0,0,0,0.92)', zIndex: 9999, display: 'flex', alignItems: 'center', justifyContent: 'center', padding: 16, cursor: 'zoom-out' }}>
{ e.stopPropagation(); setLightbox(l => (l - 1 + imgs.length) % imgs.length); }}
style={{ position: 'absolute', left: 12, top: '50%', transform: 'translateY(-50%)', background: 'rgba(255,255,255,0.15)', border: 'none', color: '#fff', fontSize: 28, width: 44, height: 44, borderRadius: '50%', cursor: 'pointer' }}>‹
{ e.stopPropagation(); setLightbox(l => (l + 1) % imgs.length); }}
style={{ position: 'absolute', right: 12, top: '50%', transform: 'translateY(-50%)', background: 'rgba(255,255,255,0.15)', border: 'none', color: '#fff', fontSize: 28, width: 44, height: 44, borderRadius: '50%', cursor: 'pointer' }}>›
)}
);
}
function Contact() {
const w = useW();
const isMobile = w < 700;
const [form, setForm] = React.useState({ nom: '', tel: '', email: '', sujet: '', message: '' });
const [sent, setSent] = React.useState(false);
return (
Coordonnées
{[
{ icon: '📞', label: 'Téléphone', lines: ['22 52 73 59 93 / 93 930'] },
{ icon: '📱', label: 'Mobile / WhatsApp', lines: ['05 04 98 76 72'] },
{ icon: '✉️', label: 'Email', lines: ['mairiedesoubre1@gmail.com'] },
{ icon: '🌐', label: 'Site web', lines: ['www.mairiesoubre.net'] },
].map((c, i) => (
{c.icon}
{c.label}
{c.lines.map((l, j) =>
{l}
)}
))}
Secrétariat Général
Lundi — Vendredi 7h30–12h30 / 14h30–17h30
Envoyez-nous un message
{sent ? (
✓
Message envoyé avec succès !
Merci de nous avoir contactés. Notre équipe vous répondra dans les plus brefs délais.
) : (
{[{ label: 'Nom et Prénoms', key: 'nom', type: 'text', placeholder: 'Votre nom complet', req: true },
{ label: 'Téléphone', key: 'tel', type: 'tel', placeholder: 'Votre numéro', req: true }].map(f => (
{f.label}{f.req && * }
setForm({ ...form, [f.key]: e.target.value })} style={{ width: '100%', padding: '11px 14px', border: '1.5px solid #ddd', borderRadius: 6, fontSize: 14, boxSizing: 'border-box', fontFamily: "'Source Sans 3', sans-serif" }} />
))}
{[{ label: 'Adresse e-mail', key: 'email', type: 'email', placeholder: 'votre@email.com' }].map(f => (
{f.label}
setForm({ ...form, [f.key]: e.target.value })} style={{ width: '100%', padding: '11px 14px', border: '1.5px solid #ddd', borderRadius: 6, fontSize: 14, boxSizing: 'border-box', fontFamily: "'Source Sans 3', sans-serif" }} />
))}
Sujet
setForm({ ...form, sujet: e.target.value })} style={{ width: '100%', padding: '11px 14px', border: '1.5px solid #ddd', borderRadius: 6, fontSize: 14, boxSizing: 'border-box', fontFamily: "'Source Sans 3', sans-serif", background: '#fff' }}>
Sélectionner un sujet...
Renseignement général État civil Services techniques Plainte / Réclamation Partenariat Autre
Message *
{ if (form.nom && form.tel && form.message) setSent(true); else alert('Veuillez remplir les champs obligatoires (*)'); }} style={{ background: '#0f3219', color: '#fff', border: 'none', padding: '13px 28px', borderRadius: 6, fontSize: 14, fontWeight: 700, cursor: 'pointer', fontFamily: "'Source Sans 3', sans-serif" }}>Envoyer le message
)}
);
}
Object.assign(window, { InfosPratiques, Actualites, Galerie, Contact });