{# ========================================================= FOOTER WhileResume — thème Sociala (v2) - Fond #F9FAFD - 5 colonnes : Brand+Stores | Outils | Entreprises | Blog | Suivez-nous - Favicon en petit à côté du copyright - Responsive : 1 col mobile → 2 cols sm → 5 cols lg - Compatible theme-dark Sociala ========================================================= #}<style> /* ---------- Footer WhileResume ---------- */ .whr-footer { margin-top: 32px; padding: 36px 24px 24px; background: #F9FAFD; border-radius: 16px; color: #2c2c46; } .theme-dark .whr-footer { background: #2a2a3c; color: #e9e9ef; } /* Stores (en haut de la col d'action) */ .whr-footer .whr-stores { display: flex; flex-direction: column; gap: 8px; margin-bottom: 18px; } .whr-footer .whr-store-link { display: inline-flex; align-items: center; gap: 10px; padding: 8px 14px; background: #111; color: #fff !important; border-radius: 10px; font-size: 12px; font-weight: 600; text-decoration: none !important; line-height: 1.2; transition: transform .15s ease, background .2s ease; max-width: 170px; } .whr-footer .whr-store-link:hover { background: #2c2c46; transform: translateY(-1px); } .whr-footer .whr-store-link small { display: block; font-weight: 400; font-size: 10px; opacity: .7; } .whr-footer .whr-store-link strong { font-size: 13px; display: block; } /* Colonnes de liens */ .whr-footer .whr-foot-col h4 { font-size: 13px; font-weight: 700; margin: 0 0 14px 0; color: inherit; text-transform: uppercase; letter-spacing: .3px; } .whr-footer .whr-foot-col ul, .whr-footer .whr-foot-col p { list-style: none; padding: 0; margin: 0; font-size: 13px; } .whr-footer .whr-foot-col ul li { margin-bottom: 10px; } .whr-footer .whr-foot-col a { color: inherit; opacity: .75; text-decoration: none; transition: opacity .2s ease, color .2s ease; } .whr-footer .whr-foot-col a:hover { opacity: 1; color: var(--theme-color, #6C3AED); } /* Liens d'action de la col 1 (avec icônes) */ .whr-footer .whr-foot-action-links { list-style: none; padding: 0; margin: 0; } .whr-footer .whr-foot-action-links li { margin-bottom: 8px; } .whr-footer .whr-foot-action-links a { display: inline-flex; align-items: center; gap: 8px; font-size: 13px; color: inherit; opacity: .75; text-decoration: none; transition: opacity .2s ease, color .2s ease; } .whr-footer .whr-foot-action-links a:hover { opacity: 1; color: var(--theme-color, #6C3AED); } .whr-footer .whr-foot-action-links a i { font-size: 14px; opacity: .7; width: 16px; text-align: center; } /* Réseaux sociaux dans la 5e colonne */ .whr-footer .whr-foot-social { display: flex; flex-wrap: wrap; gap: 8px; list-style: none; padding: 0; margin: 0; } .whr-footer .whr-foot-social a { width: 36px; height: 36px; border-radius: 10px; background: #fff; display: inline-flex; align-items: center; justify-content: center; color: #2c2c46; text-decoration: none !important; transition: background .2s ease, color .2s ease, transform .15s ease; box-shadow: 0 1px 2px rgba(0,0,0,.04); } .whr-footer .whr-foot-social a:hover { background: var(--theme-color, #6C3AED); color: #fff; transform: translateY(-2px); } .theme-dark .whr-footer .whr-foot-social a { background: #34344a; color: #fff; box-shadow: none; } .whr-footer .whr-foot-social i { font-size: 16px; } /* Grille principale : 1 col → 2 cols → 5 cols */ .whr-footer .whr-foot-grid { display: grid; gap: 28px; grid-template-columns: 1fr; } @media (min-width: 576px) { .whr-footer .whr-foot-grid { grid-template-columns: 1fr 1fr; } } @media (min-width: 992px) { .whr-footer .whr-foot-grid { grid-template-columns: repeat(5, 1fr); gap: 32px; } } /* Bottom bar */ .whr-footer .whr-foot-bottom { margin-top: 32px; padding-top: 20px; border-top: 1px solid rgba(0,0,0,.08); display: flex; flex-direction: column; gap: 14px; align-items: center; text-align: center; } .theme-dark .whr-footer .whr-foot-bottom { border-top-color: rgba(255,255,255,.1); } @media (min-width: 768px) { .whr-footer .whr-foot-bottom { flex-direction: row; justify-content: space-between; text-align: left; } } .whr-footer .whr-foot-copy { display: inline-flex; align-items: center; gap: 8px; font-size: 12px; opacity: .7; margin: 0; } .whr-footer .whr-foot-copy img.whr-favicon { width: 18px; height: 18px; border-radius: 4px; flex-shrink: 0; } .whr-footer .whr-foot-legal { display: flex; flex-wrap: wrap; gap: 6px 16px; justify-content: center; font-size: 12px; } .whr-footer .whr-foot-legal a { color: inherit; opacity: .75; text-decoration: none; } .whr-footer .whr-foot-legal a:hover { opacity: 1; } .whr-footer .whr-foot-legal .whr-admin-link { color: #e74c3c !important; opacity: 1; } /* Sociala : footer dans .middle-sidebar-left */ .middle-sidebar-left .whr-footer { width: 100%; } /* Padding réduit sur mobile */ @media (max-width: 575.98px) { .whr-footer { padding: 24px 18px 20px; } }</style><footer class="whr-footer" role="contentinfo"> {# === Grille principale 5 colonnes === #} <div class="whr-foot-grid"> {# --- Col 1 : Stores + liens d'action (varie selon connexion) --- #} {% if app.request.locale == 'fr' %} {% set _ios = ios_fr %} {% set _android = android_fr %} {% else %} {% set _ios = ios_us %} {% set _android = android_us %} {% endif %} <div class="whr-foot-col whr-foot-col-action"> {% if connectUser %} <h4>{{ 'layout.footer.my_account'|trans({}, 'whr-public')|default('Mon compte') }}</h4> {% else %} <h4>{{ 'layout.footer.start_here'|trans({}, 'whr-public')|default('Commencer ici') }}</h4> {% endif %} {# Stores en haut #} <div class="whr-stores"> {% if _ios %} <a href="{{ _ios }}" class="whr-store-link" target="_blank" rel="noopener" aria-label="App Store"> <svg width="18" height="18" viewBox="0 0 24 24" fill="#fff" aria-hidden="true"> <path d="M18.71 19.5C17.88 20.74 17 21.95 15.66 21.97C14.32 22 13.89 21.18 12.37 21.18C10.84 21.18 10.37 21.95 9.09997 22C7.78997 22.05 6.79997 20.68 5.95997 19.47C4.24997 17 2.93997 12.45 4.69997 9.39C5.56997 7.87 7.12997 6.91 8.81997 6.88C10.1 6.86 11.32 7.75 12.11 7.75C12.89 7.75 14.37 6.68 15.92 6.84C16.57 6.87 18.39 7.1 19.56 8.82C19.47 8.88 17.39 10.1 17.41 12.63C17.44 15.65 20.06 16.66 20.09 16.67C20.06 16.74 19.67 18.11 18.71 19.5ZM13 3.5C13.73 2.67 14.94 2.04 15.94 2C16.07 3.17 15.6 4.35 14.9 5.19C14.21 6.04 13.07 6.7 11.95 6.61C11.8 5.46 12.36 4.26 13 3.5Z"/> </svg> <span> <small>{{ 'layout.download_on'|trans({}, 'whr-public')|default('Télécharger sur') }}</small> <strong>App Store</strong> </span> </a> {% endif %} {% if _android %} <a href="{{ _android }}" class="whr-store-link" target="_blank" rel="noopener" aria-label="Google Play"> <svg width="18" height="18" viewBox="0 0 512 512" aria-hidden="true"> <path style="fill:#3A9BC8;" d="M225.656,256.052L14.016,485.451l-6.442,7.052c-4.005-5.919-6.704-12.972-7.313-20.806C0.087,470.305,0,468.91,0,467.518V44.499c0-9.488,2.873-18.02,7.574-24.987L225.656,256.052z"/> <path style="fill:#9BCD83;" d="M320.811,152.8l-95.155,103.253L7.574,19.512C19.936,1.405,45.183-6.342,66.6,6.02L320.811,152.8z"/> <path style="fill:#EEB84C;" d="M455.056,257.27c-0.348,14.453-7.748,28.904-22.113,37.174l-112.132,64.771l-95.155-103.163L320.811,152.8l70.518,40.745l41.614,24.026C448.178,226.366,455.579,241.861,455.056,257.27z"/> <path style="fill:#B43F70;" d="M7.591,492.492c12.368,18.116,37.599,25.838,58.976,13.496L320.775,359.22l-95.156-103.209L7.591,492.492z"/> </svg> <span> <small>{{ 'layout.available_on'|trans({}, 'whr-public')|default('Disponible sur') }}</small> <strong>Google Play</strong> </span> </a> {% endif %} </div> {# Liens texte en dessous des stores #} <ul class="whr-foot-action-links"> {% if connectUser %} {# === Connecté : Profil / Paramètres / Déconnexion === #} {% if isCandidateUser %} <li> <a href="{% if app.request.locale == 'en' %}{{ path('cvs_gestion_candidates_profile_profile') }}{% else %}{{ path('locale_cvs_gestion_candidates_profile_profile', {'_locale': app.request.locale}) }}{% endif %}"> <i class="feather-user"></i> {{ 'layout.footer.my_profile'|trans({}, 'whr-public')|default('Mon profil') }} </a> </li> {% else %} <li> <a href="{% if app.request.locale == 'en' %}{{ path('cvs_gestion_enterprises_profile_profile') }}{% else %}{{ path('locale_cvs_gestion_enterprises_profile_profile', {'_locale': app.request.locale}) }}{% endif %}"> <i class="feather-user"></i> {{ 'layout.footer.my_profile'|trans({}, 'whr-public')|default('Mon profil') }} </a> </li> <li> <a href="{% if app.request.locale == 'en' %}{{ path('cvs_gestion_enterprises_settings') }}{% else %}{{ path('locale_cvs_gestion_enterprises_settings', {'_locale': app.request.locale}) }}{% endif %}"> <i class="feather-settings"></i> {{ 'layout.footer.settings'|trans({}, 'whr-public')|default('Paramètres') }} </a> </li> {% endif %} <li> <a href="{{ path('app_logout') }}"> <i class="feather-log-out"></i> {{ 'layout.footer.logout'|trans({}, 'whr-public')|default('Déconnexion') }} </a> </li> {% else %} {# === Non connecté : Inscription candidat / Créateur de CV / Inscription pro === #} <li> <a href="#"> <i class="feather-user-plus"></i> {{ 'layout.footer.candidate_signup'|trans({}, 'whr-public')|default('Inscription candidat') }} </a> </li> <li> <a href="#"> <i class="feather-file-text"></i> {{ 'layout.footer.cv_builder'|trans({}, 'whr-public')|default('Créateur de CV') }} </a> </li> <li> <a href="#"> <i class="feather-briefcase"></i> {{ 'layout.footer.pro_signup'|trans({}, 'whr-public')|default('Inscription professionnel') }} </a> </li> {% endif %} </ul> </div> {# --- Col 2 : Outils --- #} <div class="whr-foot-col"> <h4>{{ "Outils"|translateLocale(arrayTranslate) }}</h4> {% if app.request.locale == 'fr' %} {{ footer_html_col1_fr|raw }} {% else %} {{ footer_html_col1_en|raw }} {% endif %} </div> {# --- Col 3 : Entreprises --- #} <div class="whr-foot-col"> <h4>{{ "Entreprises"|translateLocale(arrayTranslate) }}</h4> {% if app.request.locale == 'fr' %} {{ footer_html_col2_fr|raw }} {% else %} {{ footer_html_col2_en|raw }} {% endif %} </div> {# --- Col 4 : Blog --- #} <div class="whr-foot-col"> <h4>{{ "Blog"|translateLocale(arrayTranslate) }}</h4> {% if app.request.locale == 'fr' %} {{ footer_html_col3_fr|raw }} {% else %} {{ footer_html_col3_en|raw }} {% endif %} </div> {# --- Col 5 : Suivez-nous --- #} <div class="whr-foot-col"> <h4>{{ 'layout.follow_us'|trans({}, 'whr-public')|default('Suivez-nous') }}</h4> <ul class="whr-foot-social"> {% if facebook %} <li><a href="{{ facebook }}" target="_blank" rel="noopener" aria-label="Facebook"><i class="feather-facebook"></i></a></li> {% endif %} {% if twitter %} <li><a href="{{ twitter }}" target="_blank" rel="noopener" aria-label="X / Twitter"><i class="feather-twitter"></i></a></li> {% endif %} {% if instagram %} <li><a href="{{ instagram }}" target="_blank" rel="noopener" aria-label="Instagram"><i class="feather-instagram"></i></a></li> {% endif %} {% if linkedin %} <li><a href="{{ linkedin }}" target="_blank" rel="noopener" aria-label="LinkedIn"><i class="feather-linkedin"></i></a></li> {% endif %} {% if youtube %} <li><a href="{{ youtube }}" target="_blank" rel="noopener" aria-label="YouTube"><i class="feather-youtube"></i></a></li> {% endif %} </ul> </div> </div> {# === Bas de footer : copyright (avec favicon) + legal === #} <div class="whr-foot-bottom"> <p class="whr-foot-copy"> {% if favicon %} <img src="{{ favicon }}" alt="" class="whr-favicon" /> {% endif %} <span>© {{ "now"|date('Y') }} {{ websitename }}. {{ 'layout.rights_reserved'|trans({}, 'whr-public')|default('Tous droits réservés.') }}</span> </p> <div class="whr-foot-legal"> {% set menuFooter = getMenuWebsiteLocaleArray(app.request.locale, "footer", connectUser) %} {% if menuFooter is not empty %} {% for m in menuFooter %} <a href="{{ m.link }}" aria-label="{{ m.title }}" title="{{ m.title }}" {% if m.targetBlank == 1 %}target="_blank" rel="noreferrer"{% endif %}> {{ m.title }} </a> {% endfor %} {% endif %} {% if app.user is not null %} {% if is_granted("ROLE_SUPER_ADMIN") %} <a href="{{ path('backoffice_dashboard') }}" class="whr-admin-link" title="Administration"> <i class="feather-settings"></i> Administration </a> {% endif %} {% endif %} </div> </div></footer>