<!DOCTYPE html>
<html class="no-js" lang="fr">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="csrf-token" content="{{ csrf_token('front_api') }}">
{% set company = Globals.getCompany() %}
{% set companyName = company.name is iterable ? (company.name|first|default('')) : (company.name|default('')) %}
{% set companyLogo = company.logo is iterable ? (company.logo|first|default('')) : (company.logo|default('')) %}
{% set companyFooterLogo = company.footerLogo is iterable ? (company.footerLogo|first|default('')) : (company.footerLogo|default('')) %}
{% set companyAddress = company.address is iterable ? (company.address|first|default('')) : (company.address|default('')) %}
{% set companyPhone = company.phone is iterable ? (company.phone|first|default('')) : (company.phone|default('')) %}
{% set companyMail = company.mail is iterable ? (company.mail|first|default('')) : (company.mail|default('')) %}
{% set companyWebsite = company.website is iterable ? (company.website|first|default('')) : (company.website|default('')) %}
{% set companySocialLinks = company.socialLinks is iterable ? company.socialLinks : [] %}
{% set companyTitle = websiteSettingService.get('title', '') %}
{% set companyDescription = websiteSettingService.get('description', '') %}
{% set companyKeywords = websiteSettingService.get('keywords') is iterable ? (websiteSettingService.get('keywords')|first|default('')) : (websiteSettingService.get('keywords')|default('')) %}
{% set themeVars = websiteSettingService.get('themeVars') is iterable ? websiteSettingService.get('themeVars') : {} %}
<title>{% block title %} {{ companyTitle }} {% endblock %}</title>
{% block extra_head %}
<script>
window.webBaseUrl = '{{ absolute_url(asset('images/web'))|split('?')[0] }}';
window.imageBaseUrl = '{{ app.request.schemeAndHttpHost }}/images';
window.websiteSettings = {{ websiteSettings|json_encode|raw }};
window.CATALOG_FILTER_MAX_PRICE = Number(
(window.websiteSettings && window.websiteSettings.catalogFilterMaxPrice) || 999999
) || 999999;
window.APP_CLIENT = {{ app.user ? {
id: app.user.id,
firstName: app.user.firstName,
telephone: app.user.phone,
telephone2: app.user.secondPhone,
email: app.user.email,
country : app.user.country,
region : app.user.region,
adresse: app.user.adress,
isLogged: true
}|json_encode|raw : 'null' }};
</script>
{% endblock %}
<meta name="description"
content="{% block meta_description %}{{ seo_description|default('')|e }}{% endblock %}">
{% block meta %}
<meta name="keywords" content="{{ companyKeywords }}">
{#<meta name="description" content="{{ companyDescription }}">#}
<meta name="author" content="{{ companyName }}">
{# Facebook OG #}
<meta property="og:image" content="{{ asset(companyLogo) }}">
<meta property="og:url" content=""{{ companyWebsite }}">
<meta property="og:type" content="article">
<meta property="og:title" content="{{ companyTitle }}">
<meta property="og:description" content="{{ companyDescription }}">
{# Twitter OG #}
<meta name="twitter:title" content="{{ companyTitle }}">
<meta name="twitter:description" content="{{ companyDescription }}">
<meta name="twitter:image" content="{{ asset(companyLogo) }}">
<meta name="twitter:card" content="summary_large_image">
{% endblock %}
<script>
var BASE_URL="{{ app.request.schemeAndHttpHost ~ app.request.baseUrl }}";
// Filtres des tailles et couleurs
var taillesFilter = [];
var couleursFilter = [];
var CATEGORIES = {{ Globals.getCategories()|json_encode|raw }};
var CATEGORY_URL_TYPE = {{ Globals.getCategoryUrlType()|json_encode|raw }};
var MIXED_ASPECT_RATIO = {{ Globals.getMixedAspectRatio()|json_encode|raw }};
var TOP_SALES_PERIOD = {{ Globals.getTopSalesPeriod()|json_encode|raw }};
{# URLs images globales #}
window.IMG_PATHS = {
thumbSquare: '{{ IMG_THUMB_280 }}',
thumbPortrait: '{{ IMG_THUMB_300 }}',
web: '{{ IMG_WEB }}',
zoom: '{{ IMG_ZOOM }}'
};
</script>
{# Favicon #}
{# Template CSS #}
{% block stylesheets %}
<link rel="stylesheet" href="{{ asset('front/assets/css/base.css') }}">
<link rel="stylesheet" href="{{ asset('assets/bootstrap5/css/bootstrap.min.css') }}">
<link href="{{ asset('front/assets/toast/css/nice-toast-js.min.css') }}" rel="stylesheet" type="text/css" />
<link rel="icon" type="image/png" href="{{ asset('front/assets/imgs/theme/favicon.png')}}">
<link rel="shortcut icon" href="{{ asset('front/assets/imgs/theme/favicon.png') }}" type="image/x-icon">
<link rel="stylesheet" href="{{ asset('front/assets/css/main.css') }}">
<link rel="stylesheet" href="{{ asset('assets/css/front-theme.css') }}">
<link rel="stylesheet" href="{{ asset('front/assets/css/custom-style.css') }}">
<link rel="stylesheet" href="{{ asset('front/assets/css/filter-modal.css') }}">
{# UIcons Flaticon #}
<link rel="stylesheet" href="https://cdn-uicons.flaticon.com/uicons-regular-straight/css/uicons-regular-straight.css">
<link rel="stylesheet" href="https://cdn-uicons.flaticon.com/uicons-regular-rounded/css/uicons-regular-rounded.css">
<link rel="stylesheet" href="https://cdn-uicons.flaticon.com/uicons-solid-rounded/css/uicons-solid-rounded.css">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/sweetalert2@11/dist/sweetalert2.min.css">
<style>
:root {
--primary-color: {{ themeVars['--primary-color']|default('#2B2D2F') }};
--secondary-color: {{ themeVars['--secondary-color']|default('#3F444A') }};
--secondary-color-dark: {{ themeVars['--secondary-color-dark']|default('#1F2327') }};
--secondary-color-light: {{ themeVars['--secondary-color-light']|default('#E8E6E1') }};
--accent-color: {{ themeVars['--accent-color']|default('#C3A98B') }};
--text-color: {{ themeVars['--text-color']|default('#1F1F1F') }};
--text-muted: {{ themeVars['--text-muted']|default('#7A7A7A') }};
--danger-color: {{ themeVars['--danger-color']|default('#B23A3A') }};
--border-color: {{ themeVars['--border-color']|default('#E3E3E3') }};
--font-family-base: {{ themeVars['--font-family-base']|default('"Space Grotesk", "Inter", system-ui, sans-serif') }};
--font-family-heading: {{ themeVars['--font-family-heading']|default('"Poppins", "Inter", sans-serif') }};
--font-family-meta: {{ themeVars['--font-family-meta']|default('"IBM Plex Sans", "Inter", sans-serif') }};
--surface-color: {{ themeVars['--surface-color']|default('#FFFFFF') }};
--surface-muted: {{ themeVars['--surface-muted']|default('#F8F9FA') }};
--header-top-bg: {{ themeVars['--header-top-bg']|default('#000000') }};
--header-top-color: {{ themeVars['--header-top-color']|default('#FFFFFF') }};
--header-main-bg: {{ themeVars['--header-main-bg']|default(themeVars['--secondary-color-light']|default('#E8E6E1')) }};
--header-main-border: {{ themeVars['--header-main-border']|default(themeVars['--border-color']|default('#E3E3E3')) }};
--success-color: {{ themeVars['--success-color']|default('#16A34A') }};
--warning-color: {{ themeVars['--warning-color']|default('#F59E0B') }};
--rating-color: {{ themeVars['--rating-color']|default('#FFC107') }};
--danger-soft-bg: {{ themeVars['--danger-soft-bg']|default('#FBE9E9') }};
}
</style>
{% endblock %}
<script> !function(f,b,e,v,n,t,s) {if(f.fbq)return;n=f.fbq=function(){n.callMethod? n.callMethod.apply(n,arguments):n.queue.push(arguments)}; if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0'; n.queue=[];t=b.createElement(e);t.async=!0; t.src=v;s=b.getElementsByTagName(e)[0]; s.parentNode.insertBefore(t,s)}(window, document,'script', 'https://connect.facebook.net/en_US/fbevents.js'); fbq('init', '1239578710475196'); fbq('track', 'PageView'); </script>
</head>
<body>
{# Google tag (gtag.js) #}
<script async src="https://www.googletagmanager.com/gtag/js?id=G-4XS6978LX1"></script>
<script> window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'G-4XS6978LX1'); </script>
<header class="header-area site-header header-style-4 header-height-2">
{# BARRE 1 — INFOS UNIQUEMENT #}
{% set headerTop = websiteSettingService.get('headerTop', null) %}
{% if headerTop and headerTop.enabled %}
<div class="header-top text-white">
<div class="container text-center small">
{% if headerTop.mode == 'marquee' %}
<marquee behavior="scroll"
direction="left"
scrollamount="{{ headerTop.speed|default(4) }}">
{% for item in headerTop.messages %}
{{ item.text
|replace({
'{{ freeDeliveryAmount }}': FREE_DELIVERY_AMOUNT,
'{{ companyName }}': companyName
})
}}
{% if not loop.last %} – {% endif %}
{% endfor %}
</marquee>
{% endif %}
</div>
</div>
{% endif %}
{# BARRE 2 — LOGO + MENU + ACTIONS #}
{% set frontCategories = Globals.getCategories() %}
<div class="header-middle d-lg-block">
<div class="container">
<div class="d-flex align-items-center justify-content-between">
<div class="header-action-icon-2 d-lg-none mobile-nav-trigger-wrap">
<a href="#" class="burger-icon burger-icon-style-2" aria-label="Ouvrir le menu" role="button">
<span class="burger-icon-top"></span>
<span class="burger-icon-mid"></span>
<span class="burger-icon-bottom"></span>
</a>
</div>
{# Logo gauche (INCHANGÉ) #}
<div class="logo logo-width-1">
<a href="{{ path('home') }}">
<img src="{{ asset(companyLogo) }}" alt="{{ companyName }} logo">
</a>
</div>
{# Menu principal (INCHANGÉ) #}
<nav class="header-nav d-none d-lg-flex" aria-label="Navigation principale">
<ul class="main-nav">
<li>
<a class="{% if app.request.attributes.get('_route') == 'home' %}active{% endif %}"
href="{{ path('home') }}">
<span class="fi-rs-home"></span>
</a>
</li>
{% for entry in frontCategories %}
{% set activeSubs = entry.getSubCategories()|filter(c => c.isActive) %}
{% set hasSubs = activeSubs|length > 0 %}
<li class="has-submenu {{ hasSubs ? 'has-children' : '' }}">
<a href="{{ path('front_category', { id: entry.id, name: entry.name|slug }) }}">
{{ entry.name }}
{% if hasSubs %}
{% endif %}
</a>
{% if hasSubs %}
<ul class="submenu">
{% for subCategory in activeSubs %}
<li>
<a href="{{ path('front_category', { id: subCategory.id, name: subCategory.name|slug }) }}">
{{ subCategory.name }}
</a>
</li>
{% endfor %}
</ul>
{% endif %}
</li>
{% endfor %}
<li><a href="{{ path('front_products_new') }}">NOUVEAUTÉS</a></li>
<li><a href="{{ path('front_products_promo') }}">PROMOTIONS</a></li>
<li><a href="{{ path('pack_products') }}">NOS PACKS</a></li>
</ul>
</nav>
{# Actions droite #}
<div class="header-action-right app">
<div class="header-action-2">
{# Bouton recherche #}
<div class="header-action-icon-2 position-relative">
<button type="button"
class="search-trigger"
id="headerSearchTrigger"
aria-label="Ouvrir la recherche"
aria-expanded="false"
aria-controls="headerSearchBar">
<img class="svgSearch"
src="{{ asset('front/assets/imgs/theme/icons/icon-search.svg') }}"
alt="{{ companyName }}">
</button>
</div>
{# Barre de recherche (dropdown) #}
<div id="headerSearchBar" class="header-search-bar d-none" role="dialog" aria-label="Recherche">
<div class="header-search-inner">
<input type="search"
id="search"
class="form-control form-control-sm"
placeholder="Rechercher un produit..."
autocomplete="off">
<button type="button" id="button-search-desktop" class="btn btn-sm btn-primary">
Rechercher
</button>
</div>
<div id="headerSearchResults" class="header-search-results d-none" aria-live="polite">
<div class="hsr-grid">
<div class="hsr-products-col">
<div class="hsr-products-head">
<div class="hsr-title">Produits</div>
<div class="hsr-nav">
<button type="button" id="hsrPrev" class="hsr-nav-btn" aria-label="Précédent">‹</button>
<button type="button" id="hsrNext" class="hsr-nav-btn" aria-label="Suivant">›</button>
</div>
</div>
<div class="hsr-products-grid" id="hsrProducts"></div>
</div>
<div class="hsr-cats-col">
<div class="hsr-title">Suggestions</div>
<div class="hsr-suggest-block">
<div class="hsr-suggest-label">Catégories</div>
<div class="hsr-cats-list" id="hsrCategories"></div>
</div>
<div class="hsr-suggest-block">
<div class="hsr-suggest-label">Références</div>
<div class="hsr-cats-list" id="hsrReferences"></div>
</div>
</div>
</div>
<div class="hsr-footer">
<button type="button" class="btn btn-sm btn btn-secondary" id="hsrClose">Fermer</button>
<a href="#" class="btn btn-sm btn-primary" id="hsrViewAll">Voir tous les résultats</a>
</div>
</div>
</div>
{# Favoris #}
<div class="header-action-icon-2">
<a href="{{ path('front_wishlist') }}" id="wishlistLink">
<img class="svgInject"
src="{{ asset('front/assets/imgs/theme/icons/icon-heart.svg') }}"
alt="{{ companyName }}">
<span class="pro-count blue" id="wishlistCount">0</span>
</a>
</div>
{# Panier #}
{% verbatim %}
<div class="header-action-icon-2" id="app2" v-cloak>
<a class="mini-cart-icon" :href="route_cart">
<img :src="base_url+'/front/assets/imgs/theme/icons/icon-cart.svg'">
<span class="pro-count blue">{{ cart.length }}</span>
</a>
</div>
{% endverbatim %}
{# Connexion #}
{% if not app.user %}
<div class="header-action-icon-2">
<a href="{{ path('user_login') }}">
<i class="fi-rs-user"></i>
</a>
</div>
{% else %}
<div class="header-action-icon-2">
<a href="{{ path('user_account') }}">
<img src="{{ asset('front/assets/imgs/theme/icons/icon-user.png') }}" alt="user">
</a>
</div>
{% endif %}
</div>
</div>
</div>
</div>
</div>
<div class="mobile-header-active mobile-header-wrapper-style">
<div class="mobile-header-wrapper-inner">
<div class="mobile-header-top">
<div class="mobile-header-logo">
<a href="{{ path('home') }}">
<img src="{{ asset(companyLogo) }}" alt="{{ companyName }} logo">
</a>
</div>
<div class="mobile-menu-close close-style-wrap close-style-position-inherit">
<button class="close-style search-close" type="button" aria-label="Fermer le menu">
<i class="icon-top"></i>
<i class="icon-bottom"></i>
</button>
</div>
</div>
<div class="mobile-header-content-area">
<div class="mobile-search search-style-3 mobile-header-border">
<form action="{{ path('home') }}" method="get" onsubmit="return false;">
<input type="search" id="search-mobile" name="name" placeholder="Rechercher un produit..." autocomplete="off">
<button type="button" id="button-search-mobile"><i class="fi-rs-search"></i></button>
</form>
</div>
<div class="mobile-menu-wrap mobile-header-border">
<nav aria-label="Navigation mobile">
<ul class="mobile-menu">
<li><a href="{{ path('home') }}">Accueil</a></li>
{% for entry in frontCategories %}
{% set activeSubs = entry.getSubCategories()|filter(c => c.isActive) %}
{% set hasSubs = activeSubs|length > 0 %}
<li class="{{ hasSubs ? 'menu-item-has-children' : '' }}">
<a href="{{ path('front_category', { id: entry.id, name: entry.name|slug }) }}">
{{ entry.name }}
</a>
{% if hasSubs %}
<ul class="dropdown">
{% for subCategory in activeSubs %}
<li>
<a href="{{ path('front_category', { id: subCategory.id, name: subCategory.name|slug }) }}">
{{ subCategory.name }}
</a>
</li>
{% endfor %}
</ul>
{% endif %}
</li>
{% endfor %}
<li><a href="{{ path('front_products_new') }}">Nouveautés</a></li>
<li><a href="{{ path('front_products_promo') }}">Promotions</a></li>
<li><a href="{{ path('pack_products') }}">Nos packs</a></li>
<li><a href="{{ path('front_wishlist') }}">Mes favoris</a></li>
<li><a href="{{ path('cart_show') }}">Mon panier</a></li>
{% if app.user %}
<li><a href="{{ path('user_account') }}">Mon compte</a></li>
{% else %}
<li><a href="{{ path('user_login') }}">Connexion</a></li>
{% endif %}
</ul>
</nav>
</div>
</div>
</div>
</div>
<div id="notify-app">
<div class="modal fade" id="notifyModal" tabindex="-1" aria-labelledby="notifyModalLabel" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="notifyModalLabel">Prévenez-moi</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Fermer"></button>
</div>
<div class="modal-body">
<p class="text-muted">Recevez un email dès que cette taille sera à nouveau disponible.</p>
<div class="mb-3">
<label class="form-label">Adresse email</label>
<input type="email" class="form-control" v-model="notifyEmail" placeholder="email@exemple.com">
</div>
<p class="small text-secondary" v-if="notifyProduct">
Produit sélectionné : <strong v-text="notifyProduct.name"></strong>
</p>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary btn-sm" data-bs-dismiss="modal">Annuler</button>
<button type="button" class="btn btn-primary" @click="submitNotify">Prévenez-moi</button>
</div>
</div>
</div>
</div>
</div>
</header>
{# Modale Notification Produit ajouté au panier #}
<div id="cart-toast" class="cart-toast" aria-live="polite" aria-atomic="true">
<div class="cart-toast-content">
<img id="cart-toast-img" alt="">
<div class="cart-toast-text">
<div class="title" id="cart-toast-title"></div>
<div class="meta" id="cart-toast-meta"></div>
</div>
<button type="button" class="bs-close" aria-label="Fermer" onclick="CartToast.hide()">×</button>
</div>
</div>
{# Modale panier : confirmation ajout (panel) #}
<div class="modal fade" id="cartConfirmModal" tabindex="-1" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered modal-md modal-fullscreen-sm-down">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">Produit ajouté au panier</h5>
<button type="button" class="close ms-auto" data-bs-dismiss="modal" data-bs-dismiss="modal" aria-label="Fermer">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body d-flex align-items-start" style="gap:14px;">
<img id="cartConfirmImage" src="" alt="" style="width:96px;aspect-ratio:var(--product-aspect-ratio,1);object-fit:contain;">
<div class="flex-grow-1" style="font-size:14px;">
<div id="cartConfirmName" style="font-weight:600;"></div>
<div class="small text-muted mt-1">
<span class="me-1">Couleur :</span><span id="cartConfirmColor"></span>
</div>
<div class="small text-muted">
<span class="me-1">Taille :</span><span id="cartConfirmSize"></span>
</div>
<div class="small text-muted">
<span class="me-1">Référence :</span><span id="cartConfirmRef"></span>
</div>
<div class="small mt-2">
<span class="me-1">Quantité :</span><strong id="cartConfirmQty"></strong>
</div>
</div>
</div>
<div class="modal-footer">
<button class="btn btn-outline-dark btn-sm" data-bs-dismiss="modal">Continuer mes achats</button>
<a href="{{ path('cart_show') }}" class="btn btn-dark btn-sm">Voir mon panier</a>
</div>
</div>
</div>
</div>
{#Modale Commande rapide#}
{#
<div id="quickOrderPanel" class="quick-order-panel">
<div class="panel-header">
<h5>Commander rapidement</h5>
<button type="button" class="close-panel" @click="closeQuickOrderPanel">×</button>
</div>
<div class="panel-body">
<div class="panel-product d-flex" style="gap:14px;">
<img :src="quickOrder.img"
alt=""
style="width:96px;aspect-ratio:var(--product-aspect-ratio,1);object-fit:contain;">
<div>
<div style="font-weight:600;">${ produit.name }</div>
<div class="small text-muted">
${ selectedDeclinaison.couleur.name } · ${ selectedDeclinaison.taille }
</div>
</div>
</div>
<hr>
<div class="mb-3">
<label class="form-label">Nom & Prénom</label>
<input type="text" class="form-control" v-model="quickOrder.name">
</div>
<div class="mb-3">
<label class="form-label">Adresse complète</label>
<textarea class="form-control" rows="2" v-model="quickOrder.address"></textarea>
</div>
<div class="mb-3">
<label class="form-label">Téléphone</label>
<input type="tel" class="form-control" v-model="quickOrder.phone">
</div>
<div class="mb-3">
<label class="form-label">Remarques</label>
<textarea class="form-control" rows="2" v-model="quickOrder.note"></textarea>
</div>
</div>
<div class="panel-footer">
<button class="btn btn-outline-dark btn-sm" @click="closeQuickOrderPanel">
Annuler
</button>
<button class="btn btn-dark btn-sm" @click="submitQuickOrder">
Confirmer la commande
</button>
</div>
</div>
#}
{% block body %}{% endblock %}
{% block footer %}
<footer class="main bg-grey-9">
{#-- Section footer --#}
<section class="section-padding footer-mid">
<div class="container pt-15 pb-20">
<div class="row gy-4">
{# Bloc : Logo & description #}
<div class="col-lg-5 col-md-6">
<div class="widget-about font-md">
<div class="logo mb-20">
<a href="{{ path('home') }}">
<img src="{{ asset(companyFooterLogo) }}" alt="{{ companyName }} logo">
</a>
</div>
<h5 class="text-grey-4 fw-600 mb-10">
{{ companyName }} est une marque tunisienne spécialisée dans la vente de vêtements et chaussures en ligne.
</h5>
<p><strong>Adresse :</strong> {{ companyAddress }}</p>
<p><strong>Horaires :</strong> Toujours ouvert</p>
</div>
</div>
{# Bloc : Liens service client #}
<div class="col-lg-2 col-md-3">
<h5 class="widget-title">Service client</h5>
<ul class="footer-list">
<li><a href="{{ path('who_are_we') }}">Qui sommes-nous ?</a></li>
<li><a href="{{ path('delivery_information') }}">Informations de livraison</a></li>
<li><a href="{{ path('return_and_exchange') }}">Retour & échange</a></li>
<li><a href="{{ path('size_guide') }}">Guide des tailles</a></li>
<li><a href="{{ path('terms_of_sales') }}">Conditions générales de vente</a></li>
<li><a href="{{ path('terms') }}">Conditions d’utilisation</a></li>
<li><a href="{{ path('privacy_policy') }}">Politique de confidentialité</a></li>
<li><a href="{{ path('data_deletion') }}">Suppression des données</a></li>
<li><a href="{{ path('contact') }}">Contact</a></li>
</ul>
</div>
{# Bloc : Liens Mon compte #}
<div class="col-lg-2 col-md-3">
<h5 class="widget-title">Mon compte</h5>
<ul class="footer-list">
<li><a href="{{ path('cart_show') }}">Mon panier</a></li>
{% if not app.user %}
<li><a href="{{ path('user_login') }}">Connexion</a></li>
{% else %}
<li><a href="{{ path('user_account') }}">Mon profil</a></li>
<li><a href="{{ path('app_logout') }}">Déconnexion</a></li>
{% endif %}
</ul>
</div>
{# Bloc : Réseaux sociaux #}
<div class="col-lg-3 text-center text-lg-start">
<h5 class="widget-title mb-3">Suivez-nous sur les réseaux sociaux</h5>
<div class="mobile-social-icon d-flex gap-2 justify-content-lg-start justify-content-center">
{% if companySocialLinks %}
{% for key, socialLink in companySocialLinks %}
{% if socialLink is iterable %}
{% set link = socialLink.link|default('') %}
{% set linkLower = link|lower %}
{% set iconKey = '' %}
{% if 'facebook' in linkLower or 'fb.' in linkLower %}
{% set iconKey = 'facebook' %}
{% elseif 'instagram' in linkLower or 'insta' in linkLower %}
{% set iconKey = 'instagram' %}
{% elseif 'youtube' in linkLower or 'youtu' in linkLower %}
{% set iconKey = 'youtube' %}
{% elseif 'tiktok' in linkLower %}
{% set iconKey = 'tiktok' %}
{% elseif 'whatsapp' in linkLower or 'wa.me' in linkLower %}
{% set iconKey = 'whatsapp' %}
{% elseif 'telegram' in linkLower or 't.me' in linkLower %}
{% set iconKey = 'telegram' %}
{% elseif 'linkedin' in linkLower %}
{% set iconKey = 'linkedin' %}
{% elseif 'twitter' in linkLower or 'x.com' in linkLower %}
{% set iconKey = 'twitter' %}
{% elseif 'pinterest' in linkLower %}
{% set iconKey = 'pinterest' %}
{% elseif 'snapchat' in linkLower %}
{% set iconKey = 'snapchat' %}
{% elseif 'viber' in linkLower %}
{% set iconKey = 'viber' %}
{% elseif 'threads' in linkLower %}
{% set iconKey = 'threads' %}
{% endif %}
{% if iconKey and link %}
<a href="{{ link }}" target="_blank">
<img src="{{ asset('front/assets/imgs/theme/icons/icon-' ~ iconKey ~ '.svg') }}" alt="{{ iconKey|capitalize }}">
</a>
{% endif %}
{% else %}
{% set link = socialLink %}
{% set iconKey = key %}
{% if link %}
<a href="{{ link }}" target="_blank">
<img src="{{ asset('front/assets/imgs/theme/icons/icon-' ~ iconKey ~ '.svg') }}" alt="{{ iconKey|capitalize }}">
</a>
{% endif %}
{% endif %}
{% endfor %}
{% endif %}
</div>
</div>
</div>
</div>
</section>
<div class="container pb-20 wow fadeIn animated">
<div class="row">
<div class="col-12 mb-20">
<div class="footer-bottom"></div>
</div>
<div class="col-lg-6">
<p class="float-md-left font-sm text-muted mb-0">© {{ 'now' | date('Y') }}, <strong class="text-brand">{{ companyName }}</strong> </p>
</div>
<div class="col-lg-6">
<p class="text-lg-end text-start font-sm text-muted mb-0">
Designed by <a href="{{ path('home') }}" target="_blank">{{ companyName }}</a>. All rights reserved
</p>
</div>
</div>
</div>
</footer>
{% endblock %}
{% if app.request.attributes.get('_route') != 'cart_show' %}
{% verbatim %}
<div id="app2-mobile" class="mobile-cart-float-wrap" v-cloak>
<a v-if="cart.length" class="mobile-cart-float" :href="route_cart" aria-label="Ouvrir le panier">
<span class="mobile-cart-float__icon">
<img :src="base_url + '/front/assets/imgs/theme/icons/icon-cart.svg'" alt="">
<span class="mobile-cart-float__count">${ cart.length }</span>
</span>
<span class="mobile-cart-float__content">
<strong class="mobile-cart-float__title">Mon panier</strong>
<span class="mobile-cart-float__meta">${ Number(total || 0).toFixed(3) } TND</span>
<span class="mobile-cart-float__hint" v-if="freeDeliveryRemaining > 0">
Plus que ${ freeDeliveryRemaining.toFixed(3) } TND pour la livraison gratuite
</span>
<span class="mobile-cart-float__hint is-success" v-else-if="hasFreeDeliveryThreshold">
Livraison gratuite débloquée
</span>
</span>
<span class="mobile-cart-float__cta">Voir</span>
</a>
</div>
{% endverbatim %}
{% endif %}
{# Modal zoom #}
{% verbatim %}
<div id="zoom-app">
<div class="modal fade zoom-modal" id="imageZoomModal" tabindex="-1">
<div class="modal-dialog modal-xl modal-dialog-centered modal-fullscreen-lg-down">
<div class="modal-content zoom-modal-content">
<div class="modal-header zoom-modal-header">
<h6 class="modal-title text-truncate" v-text="zoomImageAlt || 'Aperçu image'"></h6>
<div class="zoom-controls">
<button class="zoom-btn" @click="zoomOut">−</button>
<button class="zoom-btn" @click="zoomIn">+</button>
<button class="zoom-btn" @click="zoomReset">⤢</button>
<button class="zoom-btn close-btn" data-bs-dismiss="modal">×</button>
</div>
</div>
<div class="modal-body zoom-modal-body">
<div class="zoom-stage"
@mousedown="startPan"
@mousemove="movePan"
@mouseup="endPan"
@mouseleave="endPan">
<img
class="zoom-image"
:src="zoomImageSrc"
:alt="zoomImageAlt"
draggable="false"
:style="{
transform: `translate(${zoomPanX}px, ${zoomPanY}px) scale(${zoomLevel})`
}">
</div>
</div>
</div>
</div>
</div>
</div>
{% endverbatim %}
{# Modal infos #}
{#
<div class="modal fade custom-modal" id="cotinueModal" tabindex="-1" aria-labelledby="onloadModalLabel"
aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<button type="button" class="bs-close" data-bs-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
<div class="modal-body">
<div style="padding: 35px;">
<div class="deal-top">
<h2 class="text-brand">Deal of the Day</h2>
<h5>Limited quantities.</h5>
</div>
<div class="deal-content">
<h6 class="product-title"><a href="shop-product-right.html">Summer Collection New Morden
Design</a></h6>
<div class="product-price"><span class="new-price">$139.00</span><span class="old-price">$160.99</span>
</div>
</div>
<div class="deal-bottom">
<p>Hurry Up! Offer End In:</p>
<div class="deals-countdown" data-countdown="2025/03/25 00:00:00"><span
class="countdown-section"><span class="countdown-amount hover-up">03</span><span
class="countdown-period"> days </span></span><span
class="countdown-section"><span class="countdown-amount hover-up">02</span><span
class="countdown-period"> hours </span></span><span
class="countdown-section"><span class="countdown-amount hover-up">43</span><span
class="countdown-period"> mins </span></span><span
class="countdown-section"><span class="countdown-amount hover-up">29</span><span
class="countdown-period"> sec </span></span></div>
<a href="#" class="btn hover-up">Shop Now <i
class="fi-rs-arrow-right"></i></a>
</div>
</div>
</div>
</div>
</div>
</div>#}
{# Preloader Start #}
<div id="preloader-active">
<div class="preloader d-flex align-items-center justify-content-center">
<div class="preloader-inner position-relative">
<div class="text-center">
<h5 class="mb-5">CHARGEMENT</h5>
<div class="loader">
<div class="bar bar1"></div>
<div class="bar bar2"></div>
<div class="bar bar3"></div>
</div>
</div>
</div>
</div>
</div>
{# Preloader loading #}
<div id="preloader-active-loading" style="opacity: 0.5;display: none;">
<div class="preloader d-flex align-items-center justify-content-center">
<div class="preloader-inner position-relative">
<div class="text-center">
<h5 class="mb-5">CHARGEMENT</h5>
<div class="loader">
<div class="bar bar1"></div>
<div class="bar bar2"></div>
<div class="bar bar3"></div>
</div>
</div>
</div>
</div>
</div>
{# MODALE PANIER — Confirmation ajout produit (panneau droit) #}
<div class="modal fade modal-cart-panel" id="cartConfirmModal" tabindex="-1"aria-hidden="true">
<div class="modal-dialog modal-dialog-end modal-fullscreen-sm-down">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">Ajouté au panier</h5>
<button type="button"
class="btn-close"
data-bs-dismiss="modal"
aria-label="Fermer"></button>
</div>
<div class="modal-body">
<div class="cart-confirm-item">
<img id="cartConfirmImage"
src=""
alt=""
class="cart-confirm-image">
<div class="cart-confirm-info">
<div class="cart-confirm-title"
id="cartConfirmName"></div>
<div class="cart-confirm-line">
<span class="label">Couleur :</span>
<span id="cartConfirmColor"></span>
</div>
<div class="cart-confirm-line">
<span class="label">Taille :</span>
<span id="cartConfirmSize"></span>
</div>
<div class="cart-confirm-line">
<span class="label">Référence :</span>
<span id="cartConfirmRef"></span>
</div>
<div class="cart-confirm-line">
<span class="label">Quantité :</span>
<strong id="cartConfirmQty"></strong>
</div>
</div>
</div>
</div>
<div class="modal-footer flex-column gap-2">
<button type="button"
class="btn btn-outline-dark w-100"
data-bs-dismiss="modal">
Continuer mes achats
</button>
<a href="{{ path('cart_show') }}"
class="btn btn-dark w-100">
Voir mon panier
</a>
</div>
</div>
</div>
</div>
{% if app.environment == 'production' %}
<div id="fb-root"></div>
{# Your Plugin de discussion code #}
<div id="fb-customer-chat" class="fb-customerchat"></div>
<script>
var chatbox = document.getElementById('fb-customer-chat');
chatbox.setAttribute("page_id", "1888322994731663");
chatbox.setAttribute("attribution", "biz_inbox");
</script>
{# Your SDK code #}
<script>
window.fbAsyncInit = function() {
FB.init({
xfbml : true,
version : 'v17.0'
});
};
(function(d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) return;
js = d.createElement(s); js.id = id;
js.src = 'https://connect.facebook.net/fr_FR/sdk/xfbml.customerchat.js';
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
</script>
{% endif %}
{# Vendor JS#}
{% block javascripts %}
<script src="{{ asset('front/assets/js/vendor/modernizr-3.6.0.min.js') }}"></script>
{#<script src="{{ asset('front/assets/js/vendor/jquery-3.6.0.min.js') }}"></script>#}
{#<script src="{{ asset('front/assets/js/vendor/jquery-migrate-3.3.0.min.js') }}"></script>#}
{#<script src="{{ asset('front/assets/js/vendor/bootstrap.bundle.min.js') }}"></script>#}
<script src="{{ asset('assets/jquery/jquery.min.js') }}"></script>
{# #SECTION: Bootstrap 5 – Bundle (Popper inclus) #}
<script src="{{ asset('assets/bootstrap5/js/bootstrap.bundle.min.js') }}"></script>
<script src="{{ asset('front/assets/js/plugins/slick.js') }}"></script>
<script src="{{ asset('front/assets/js/plugins/jquery.syotimer.min.js') }}"></script>
<script src="{{ asset('front/assets/js/plugins/wow.js') }}"></script>
<script src="{{ asset('front/assets/js/plugins/jquery-ui.js') }}"></script>
<script src="{{ asset('front/assets/js/plugins/perfect-scrollbar.js') }}"></script>
<script src="{{ asset('front/assets/js/plugins/magnific-popup.js') }}"></script>
<script src="{{ asset('front/assets/js/plugins/select2.min.js') }}"></script>
<script src="{{ asset('front/assets/js/plugins/waypoints.js') }}"></script>
<script src="{{ asset('front/assets/js/plugins/counterup.js') }}"></script>
<script src="{{ asset('front/assets/js/plugins/jquery.countdown.min.js') }}"></script>
<script src="{{ asset('front/assets/js/plugins/images-loaded.js') }}"></script>
<script src="{{ asset('front/assets/js/plugins/isotope.js') }}"></script>
<script src="{{ asset('front/assets/js/plugins/scrollup.js') }}"></script>
<script src="{{ asset('front/assets/js/plugins/jquery.vticker-min.js') }}"></script>
<script src="{{ asset('front/assets/js/plugins/jquery.theia.sticky.js') }}"></script>
<script src="{{ asset('front/assets/js/plugins/jquery.elevatezoom.js') }}"></script>
{# Template JS #}
<script src="{{ asset('./front/assets/js/main.js') }}"></script>
{# <script src="{{ asset('./front/assets/js/shop.js') }}"></script>#}
{# Include Plugin JS file #}
<script src="{{ asset('front/assets/toast/js/nice-toast-js.min.js') }}" type="text/javascript"></script>
<script src="{{ asset('front/assets/toast/toast.js') }}" type="text/javascript"></script>
<script src="{{ asset('bundles/fosjsrouting/js/router.min.js') }}"></script>
<script src="{{ path('fos_js_routing_js', { callback: 'fos.Router.setData' }) }}"></script>
<script>
{% if app.user and app.user.firstName %}
window.APP_USER_FIRST_NAME = {{ app.user.firstName|json_encode|raw }};
{% else %}
window.APP_USER_FIRST_NAME = null;
{% endif %}
window.APP_USER_ACCOUNT_ROUTE = {{ path('user_account')|json_encode|raw }};
window.APP_LOGOUT_ROUTE = {{ path('app_logout')|json_encode|raw }};
</script>
{# Vue JS #}
<script src="{{ asset('front/assets/vue/vue.min.js') }}"></script>
<script src="{{ asset('front/assets/vue/axios.min.js') }}"></script>
<script src="{{ asset('front/assets/vue/vue-the-mask.min.js') }}"></script>
<script src="{{ asset('front/assets/scripts/base.js') }}"></script>
<script src="{{ asset('front/assets/scripts/product/filter-modal.shared.js') }}"></script>
<script src="https://cdn.jsdelivr.net/npm/sweetalert2@11"></script>
{% endblock %}
</body>
</html>