{% extends 'baseFront.html.twig' %}
{% block title %}Hello HomeController!{% endblock %}
{% block body %}
<style>
/* ========================================
BEANSTALK - Style inspiré d'Addixo
======================================== */
/* Variables CSS */
:root {
/* Couleurs principales - Style Addixo */
--primary-blue: #003d7a;
--primary-blue-dark: #002855;
--primary-blue-light: #0066cc;
--secondary-blue: #2563eb;
--accent-green: #10b981;
--accent-orange: #f59e0b;
/* Couleurs neutres */
--text-primary: #1a1a1a;
--text-secondary: #4a4a4a;
--text-light: #6b7280;
--bg-white: #ffffff;
--bg-light: #f8f9fa;
--bg-gray: #f3f4f6;
--border-color: #e5e7eb;
/* Typographie */
--font-primary: 'Roboto', sans-serif;
--font-secondary: 'Open Sans', sans-serif;
/* Espacements */
--spacing-xs: 0.5rem;
--spacing-sm: 1rem;
--spacing-md: 1.5rem;
--spacing-lg: 2rem;
--spacing-xl: 3rem;
--spacing-xxl: 5rem;
/* Transitions */
--transition: all 0.3s ease;
--transition-fast: all 0.2s ease;
/* Ombres */
--shadow-sm: 0 2px 4px rgba(0,0,0,0.05);
--shadow-md: 0 4px 8px rgba(0,0,0,0.1);
--shadow-lg: 0 10px 20px rgba(0,0,0,0.15);
--shadow-xl: 0 20px 40px rgba(0,0,0,0.2);
}
/* Reset et Base */
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
html {
scroll-behavior: smooth;
}
body {
font-family: var(--font-secondary);
font-size: 16px;
color: var(--text-primary);
background-color: var(--bg-white);
overflow-x: hidden;
}
/* Typography */
h1, h2, h3, h4, h5, h6 {
font-family: var(--font-primary);
font-weight: 700;
line-height: 1.2;
margin-bottom: 1rem;
}
h1 { font-size: 3rem; }
h2 { font-size: 2.5rem; }
h3 { font-size: 1.875rem; }
p {
margin-bottom: 1rem;
color: var(--text-secondary);
}
a {
text-decoration: none;
color: inherit;
transition: var(--transition);
}
/* Contact Form */
.contact-form-wrapper {
background: white;
padding: 2rem;
border-radius: 8px;
box-shadow: var(--shadow-md);
}
.form-header {
margin-bottom: 2rem;
}
.form-header h3 {
color: #6b7280;
margin-bottom: 0.5rem;
}
.form-header p {
color: var(--text-light);
font-size: 0.9rem;
}
.form-row {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 1rem;
margin-bottom: 1rem;
}
.form-group {
margin-bottom: 1rem;
}
.form-group label {
display: block;
margin-bottom: 0.5rem;
color: var(--text-primary);
font-weight: 500;
}
.form-group input,
.form-group select,
.form-group textarea {
width: 100%;
padding: 0.75rem;
border: 1px solid var(--border-color);
border-radius: 4px;
font-family: inherit;
transition: var(--transition);
background: white;
}
.form-group select {
cursor: pointer;
appearance: none;
background-image: url("data:image/svg+xml;charset=UTF-8,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='6 9 12 15 18 9'%3e%3c/polyline%3e%3c/svg%3e");
background-repeat: no-repeat;
background-position: right 0.75rem center;
background-size: 1.5em 1.5em;
padding-right: 2.5rem;
}
.form-group select optgroup {
font-weight: 600;
color: var(--primary-blue);
}
.form-group select option {
padding: 0.5rem;
color: var(--text-primary);
}
.form-group textarea {
resize: vertical;
min-height: 120px;
}
.form-group input:focus,
.form-group select:focus,
.form-group textarea:focus {
outline: none;
border-color: var(--primary-blue);
box-shadow: 0 0 0 3px rgba(0, 61, 122, 0.1);
}
.checkbox-group {
display: flex;
align-items: start;
gap: 0.5rem;
}
.checkbox-group input[type="checkbox"] {
width: auto;
margin-top: 0.25rem;
}
.checkbox-group label {
margin-bottom: 0;
}
.checkbox-group a {
color: var(--primary-blue);
text-decoration: underline;
}
.btn-submit {
width: 100%;
padding: 1rem;
background: #6b7280;
color: white;
border: none;
border-radius: 4px;
font-size: 1rem;
font-weight: 600;
cursor: pointer;
transition: var(--transition);
display: flex;
align-items: center;
justify-content: center;
gap: 0.5rem;
}
.btn-submit:hover {
background: #6b7280;
transform: translateY(-2px);
}
/* Footer */
.footer {
background: var(--text-primary);
color: white;
padding: 3rem 0 1rem;
}
.footer-top {
display: grid;
grid-template-columns: 2fr 1fr 1fr 1fr 1fr;
gap: 2rem;
margin-bottom: 2rem;
}
.footer-column h4 {
margin-bottom: 1rem;
color: white;
}
.footer-logo {
margin-bottom: 1rem;
}
.footer-logo .logo-text {
font-family: var(--font-primary);
font-size: 1.5rem;
font-weight: 900;
color: white;
letter-spacing: 1px;
line-height: 1;
}
.footer-logo .logo-tagline {
font-size: 0.65rem;
color: rgba(255, 255, 255, 0.7);
text-transform: uppercase;
letter-spacing: 2px;
margin-top: 2px;
line-height: 1;
}
.footer-description {
color: rgba(255, 255, 255, 0.7);
font-size: 0.9rem;
margin-bottom: 1rem;
}
.footer-social {
display: flex;
gap: 0.5rem;
}
.footer-social a {
width: 35px;
height: 35px;
background: rgba(255, 255, 255, 0.1);
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
transition: var(--transition);
}
.footer-social a:hover {
background: var(--primary-blue);
}
.footer-links {
list-style: none;
}
.footer-links li {
margin-bottom: 0.5rem;
}
.footer-links a {
color: rgba(255, 255, 255, 0.7);
font-size: 0.9rem;
transition: var(--transition);
}
.footer-links a:hover {
color: white;
padding-left: 5px;
}
.footer-bottom {
padding-top: 2rem;
border-top: 1px solid rgba(255, 255, 255, 0.1);
}
.footer-bottom-content {
display: flex;
justify-content: space-between;
align-items: center;
}
.copyright {
color: rgba(255, 255, 255, 0.7);
font-size: 0.9rem;
}
.footer-legal {
display: flex;
gap: 1.5rem;
}
.footer-legal a {
color: rgba(255, 255, 255, 0.7);
font-size: 0.9rem;
}
.footer-legal a:hover {
color: white;
}
/* Back to Top */
.back-to-top {
position: fixed;
bottom: 30px;
right: 30px;
width: 50px;
height: 50px;
background: var(--primary-blue);
color: white;
border: none;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
cursor: pointer;
font-size: 1.2rem;
opacity: 0;
visibility: hidden;
transition: var(--transition);
box-shadow: var(--shadow-lg);
}
.back-to-top.visible {
opacity: 1;
visibility: visible;
}
.back-to-top:hover {
background: var(--primary-blue-dark);
transform: translateY(-5px);
}
/* Mobile Sidebar */
.mobile-sidebar {
position: fixed;
top: 0;
left: -320px;
width: 320px;
height: 100vh;
background: white;
z-index: 2000;
transition: left 0.3s ease;
overflow-y: auto;
box-shadow: 2px 0 20px rgba(0, 0, 0, 0.1);
}
.mobile-sidebar.active {
left: 0;
}
.mobile-overlay {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: rgba(0, 0, 0, 0.5);
z-index: 1999;
opacity: 0;
visibility: hidden;
transition: all 0.3s ease;
}
.mobile-overlay.active {
opacity: 1;
visibility: visible;
}
.sidebar-header {
display: flex;
justify-content: space-between;
align-items: center;
padding: 1.5rem;
border-bottom: 1px solid var(--border-color);
}
.sidebar-logo .logo-text {
font-family: var(--font-primary);
font-size: 1.5rem;
font-weight: 900;
color: var(--primary-blue);
letter-spacing: 1px;
}
.sidebar-logo .logo-tagline {
font-size: 0.65rem;
color: var(--text-light);
text-transform: uppercase;
letter-spacing: 2px;
margin-top: 2px;
}
.sidebar-close {
background: none;
border: none;
font-size: 1.5rem;
color: var(--text-primary);
cursor: pointer;
padding: 0.5rem;
transition: var(--transition);
}
.sidebar-close:hover {
color: var(--primary-blue);
transform: rotate(90deg);
}
.sidebar-nav {
padding: 1.5rem 0;
}
.sidebar-menu {
list-style: none;
padding: 0;
margin: 0;
}
.sidebar-menu > li {
border-bottom: 1px solid var(--border-color);
}
.sidebar-link {
display: flex;
justify-content: space-between;
align-items: center;
padding: 1rem 1.5rem;
color: var(--text-primary);
font-size: 1rem;
font-weight: 500;
transition: var(--transition);
}
.sidebar-link:hover {
color: var(--primary-blue);
background: var(--bg-light);
padding-left: 2rem;
}
.sidebar-dropdown .dropdown-toggle i {
transition: var(--transition);
}
.sidebar-dropdown.active .dropdown-toggle i {
transform: rotate(180deg);
}
.sidebar-submenu {
list-style: none;
padding: 0;
background: var(--bg-gray);
display: none;
}
.sidebar-dropdown.active .sidebar-submenu {
display: block;
}
.sidebar-submenu li {
border-bottom: 1px solid var(--border-color);
}
.sidebar-submenu li:last-child {
border-bottom: none;
}
.sidebar-submenu a {
display: block;
padding: 0.75rem 1.5rem 0.75rem 3rem;
color: var(--text-secondary);
font-size: 0.9rem;
transition: var(--transition);
}
.sidebar-submenu a:hover {
color: var(--primary-blue);
background: white;
padding-left: 3.5rem;
}
.sidebar-cta {
padding: 1.5rem;
margin-top: 1rem;
}
.btn-sidebar-cta {
display: block;
width: 100%;
padding: 0.75rem;
background: var(--primary-blue);
color: white;
text-align: center;
border-radius: 4px;
font-weight: 600;
transition: var(--transition);
}
.btn-sidebar-cta:hover {
background: var(--primary-blue-dark);
transform: translateY(-2px);
}
/* Hide main nav on mobile when sidebar is used */
@media (max-width: 768px) {
.main-nav {
display: none !important;
}
body.sidebar-open {
overflow: hidden;
}
}
/* Responsive */
@media (max-width: 768px) {
.mobile-menu-toggle {
display: flex;
}
.btn-header {
display: none;
}
h1 { font-size: 2rem; }
h2 { font-size: 1.75rem; }
h3 { font-size: 1.5rem; }
.slide-title {
font-size: 2rem;
}
.slide-description {
font-size: 1rem;
}
.slide-buttons {
flex-direction: column;
align-items: center;
}
.products-grid,
.news-grid {
grid-template-columns: 1fr;
}
.service-row,
.service-row.reverse {
grid-template-columns: 1fr;
direction: ltr;
}
.contact-wrapper {
grid-template-columns: 1fr;
}
.form-row {
grid-template-columns: 1fr;
}
.footer-top {
grid-template-columns: 1fr;
text-align: center;
}
.footer-bottom-content {
flex-direction: column;
gap: 1rem;
text-align: center;
}
.footer-legal {
flex-wrap: wrap;
justify-content: center;
}
.footer-social {
justify-content: center;
}
}
@media (max-width: 480px) {
.container {
padding: 0 15px;
}
section {
padding: 3rem 0;
}
}
</style>
<main>
<div class="container px-1 ">
<h1>Contact </h1>
</div>
<!-- Contact information -->
<div class="row">
<div class="col-lg-2"></div>
<div class="col-lg-8">
<div class="row mt-5">
<div class="col-md-12 mx-auto">
<div class="card border-info mb-3">
<div class="card-header text-center">Contact us</div>
<div class="card-body text-center text-info">
<form name="contactForm" id='contact_form_contact' class="form-border" method="post" enctype="multipart/form-data">
<div class="form-header">
<h3>Send us a message</h3>
<p>Our organizing team will respond within 24 business hours.</p>
</div>
<div class="form-row">
<div class="form-group" style="text-align: left;">
<label>First Name *</label>
<input type="text" name="prenom" id="prenom" placeholder="First Name" required>
</div>
<div class="form-group"style="text-align: left;">
<label>Last Name *</label>
<input type="text" name="nom" id="nom" placeholder="Last Name" required>
</div>
</div>
<div class="form-row">
<div class="form-group" style="text-align: left;">
<label>Professional email *</label>
<input type="email" name="email" id="email" placeholder="l.firstname@company.com" required>
</div>
<div class="form-group" style="text-align: left;">
<label>Phone</label>
<input type="tel" name="tel" id="tel" placeholder="+33 6 12 34 56 78">
</div>
</div>
<div class="form-row">
<div class="form-group" style="text-align: left;">
<label>Company/Organization *</label>
<input type="text" name="entreprise" id="entreprise" placeholder="Name of your company/organization" required>
</div>
<div class="form-group" style="text-align: left;">
<label>Function/Position</label>
<input type="text" name="poste" id="poste" placeholder="HR Director, CTO, etc.">
</div>
</div>
<div class="form-group" style="text-align: left;">
<label>Message *</label>
<textarea name="message" id="message" rows="5" placeholder="Your message..." required></textarea>
</div>
<div class="form-group checkbox-group">
<input type="checkbox" id="newsletter" name="newsletter">
<label for="newsletter">I would like to receive news from RFMI</label>
</div>
<!-- reCAPTCHA v3
<div id="captcha" class="g-recaptcha" data-sitekey="6LdaTAksAAAAAG8ngUY4zva_9J1FOEgXaYSnwkx1"
data-callback="recaptchaCallback"></div>
<br>-->
<button type="submit" class="btn-submit" id='send_message' onclick="addContact()">
Send message <i class="fas fa-paper-plane"></i>
</button>
<!-- <button type="submit" class="btn-submit" id='send_message' disabled onclick="addContact()">
Envoyer le message <i class="fas fa-paper-plane"></i>
</button>-->
</form>
</div>
</div>
</div>
</div>
</div>
</div>
<script>
function addContact() {
event.preventDefault(); // Empêche la soumission classique du formulaire
// Vérifiez si tous les champs requis sont remplis
const nom = document.getElementById('nom').value.trim();
const prenom = document.getElementById('prenom').value.trim();
const email = document.getElementById('email').value.trim();
// const titre = document.getElementById('titre').value.trim();
const message = document.getElementById('message').value.trim();
const tel = document.getElementById('tel').value.trim();
const entreprise = document.getElementById('entreprise').value.trim();
const poste = document.getElementById('poste').value.trim();
//const sujet = document.getElementById('sujet').value.trim();
var formData = new FormData(document.getElementById('contact_form_contact'));
fetch("{{ path('app_contact_new') }}", {
method: "POST",
body: formData
})
.then(response => response.json())
.then(data => {
console.log("Success:", data);
if (data.success) {
document.getElementById('contact_form_contact').reset();
Swal.fire({
title: 'Merci pour votre message !',
text: 'Nous vous répondrons dans les plus brefs délais.',
icon: 'success',
confirmButtonText: 'OK'
});
} else {
console.log("Success:", data);
Swal.fire('Erreur!', 'Un problème est survenu lors de l\'envoi.', 'error');
}
})
.catch((error) => {
console.error('Error:', error);
Swal.fire('Erreur!', 'Un problème est survenu lors de l\'envoi.', 'error');
});
}
</script>
<script src="https://cdn.jsdelivr.net/npm/swiper@10/swiper-bundle.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/aos/2.3.4/aos.js"></script>
<script src="https://cdn.jsdelivr.net/npm/sweetalert2@11"></script>
</div>
</main>
{% endblock %}