var/cache/dev/twig/e8/e8c171ab5360487ed9a0cd5eb0a37e01.php line 285

Open in your IDE?
  1. <?php
  2. use Twig\Environment;
  3. use Twig\Error\LoaderError;
  4. use Twig\Error\RuntimeError;
  5. use Twig\Extension\CoreExtension;
  6. use Twig\Extension\SandboxExtension;
  7. use Twig\Markup;
  8. use Twig\Sandbox\SecurityError;
  9. use Twig\Sandbox\SecurityNotAllowedTagError;
  10. use Twig\Sandbox\SecurityNotAllowedFilterError;
  11. use Twig\Sandbox\SecurityNotAllowedFunctionError;
  12. use Twig\Source;
  13. use Twig\Template;
  14. use Twig\TemplateWrapper;
  15. /* base.html.twig */
  16. class __TwigTemplate_33fd4160c2a7993a9c3773ec31de7d8b extends Template
  17. {
  18.     private Source $source;
  19.     /**
  20.      * @var array<string, Template>
  21.      */
  22.     private array $macros = [];
  23.     public function __construct(Environment $env)
  24.     {
  25.         parent::__construct($env);
  26.         $this->source $this->getSourceContext();
  27.         $this->parent false;
  28.         $this->blocks = [
  29.             'title' => [$this'block_title'],
  30.             'meta' => [$this'block_meta'],
  31.             'stylesheets' => [$this'block_stylesheets'],
  32.             'body' => [$this'block_body'],
  33.             'javascripts' => [$this'block_javascripts'],
  34.         ];
  35.     }
  36.     protected function doDisplay(array $context, array $blocks = []): iterable
  37.     {
  38.         $macros $this->macros;
  39.         $__internal_5a27a8ba21ca79b61932376b2fa922d2 $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  40.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "template""base.html.twig"));
  41.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  42.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "template""base.html.twig"));
  43.         // line 1
  44.         yield "<!DOCTYPE html>
  45. <html lang=\"fr\">
  46.     <head>
  47.         <meta charset=\"UTF-8\">
  48.         <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">
  49.         <title>";
  50.         // line 6
  51.         yield from $this->unwrap()->yieldBlock('title'$context$blocks);
  52.         yield "</title>
  53.         ";
  54.         // line 7
  55.         yield from $this->unwrap()->yieldBlock('meta'$context$blocks);
  56.         // line 8
  57.         yield "        <link rel=\"icon\" href=\"data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 128 128%22><text y=%221.2em%22 font-size=%2296%22>🛠️</text></svg>\">
  58.         <!-- Tailwind CSS avec configuration dark mode -->
  59.         <script src=\"https://cdn.tailwindcss.com\"></script>
  60.         <script>
  61.             tailwind.config = {
  62.                 darkMode: 'class',
  63.                 theme: {
  64.                     extend: {
  65.                         colors: {
  66.                             primary: {\"50\":\"#eff6ff\",\"100\":\"#dbeafe\",\"200\":\"#bfdbfe\",\"300\":\"#93c5fd\",\"400\":\"#60a5fa\",\"500\":\"#3b82f6\",\"600\":\"#2563eb\",\"700\":\"#1d4ed8\",\"800\":\"#1e40af\",\"900\":\"#1e3a8a\",\"950\":\"#172554\"}
  67.                         }
  68.                     }
  69.                 }
  70.             }
  71.         </script>
  72.         <!-- Flowbite CSS & JS -->
  73.         <link href=\"https://cdnjs.cloudflare.com/ajax/libs/flowbite/1.6.5/flowbite.min.css\" rel=\"stylesheet\" />
  74.         <script src=\"https://cdnjs.cloudflare.com/ajax/libs/flowbite/1.6.5/flowbite.min.js\"></script>
  75.         <script>document.documentElement.classList.add('js')</script>
  76.         ";
  77.         // line 30
  78.         yield from $this->unwrap()->yieldBlock('stylesheets'$context$blocks);
  79.         // line 33
  80.         yield "
  81.         <!-- Styles personnalisés pour préserver le gradient -->
  82.         <style>
  83.             .text-gradient {
  84.                 background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
  85.                 -webkit-background-clip: text;
  86.                 -webkit-text-fill-color: transparent;
  87.                 background-clip: text;
  88.             }
  89.         </style>
  90.         <!-- Script pour le dark theme (doit être en premier pour éviter le flash) -->
  91.         <script>
  92.             // Vérifier le thème sauvegardé ou utiliser la préférence système
  93.             if (localStorage.getItem('color-theme') === 'dark' || (!('color-theme' in localStorage) && window.matchMedia('(prefers-color-scheme: dark)').matches)) {
  94.                 document.documentElement.classList.add('dark');
  95.             } else {
  96.                 document.documentElement.classList.remove('dark');
  97.             }
  98.         </script>
  99.     </head>
  100.     <body class=\"bg-gray-50 dark:bg-gray-900 min-h-screen\">
  101.         <!-- Bouton Dark Theme (toujours visible) -->
  102.         <div class=\"fixed bottom-4 right-4 z-50\">
  103.             <button id=\"theme-toggle\" type=\"button\" class=\"text-gray-500 dark:text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-700 focus:outline-none focus:ring-4 focus:ring-gray-200 dark:focus:ring-gray-700 rounded-lg text-sm p-2.5 bg-white dark:bg-gray-800 shadow-lg\">
  104.                 <!-- Icône lune (mode dark) -->
  105.                 <svg id=\"theme-toggle-dark-icon\" class=\"hidden w-5 h-5\" fill=\"currentColor\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\">
  106.                     <path d=\"M17.293 13.293A8 8 0 016.707 2.707a8.001 8.001 0 1010.586 10.586z\"></path>
  107.                 </svg>
  108.                 <!-- Icône soleil (mode light) -->
  109.                 <svg id=\"theme-toggle-light-icon\" class=\"hidden w-5 h-5\" fill=\"currentColor\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\">
  110.                     <path d=\"M10 2a1 1 0 011 1v1a1 1 0 11-2 0V3a1 1 0 011-1zm4 8a4 4 0 11-8 0 4 4 0 018 0zm-.464 4.95l.707.707a1 1 0 001.414-1.414l-.707-.707a1 1 0 00-1.414 1.414zm2.12-10.607a1 1 0 010 1.414l-.706.707a1 1 0 11-1.414-1.414l.707-.707a1 1 0 011.414 0zM17 11a1 1 0 100-2h-1a1 1 0 100 2h1zm-7 4a1 1 0 011 1v1a1 1 0 11-2 0v-1a1 1 0 011-1zM5.05 6.464A1 1 0 106.465 5.05l-.708-.707a1 1 0 00-1.414 1.414l.707.707zm1.414 8.486l-.707.707a1 1 0 01-1.414-1.414l.707-.707a1 1 0 011.414 1.414zM4 11a1 1 0 100-2H3a1 1 0 000 2h1z\" fill-rule=\"evenodd\" clip-rule=\"evenodd\"></path>
  111.                 </svg>
  112.             </button>
  113.         </div>
  114.         <!-- Header -->
  115.         ";
  116.         // line 69
  117.         yield from $this->load("header.html.twig"69)->unwrap()->yield($context);
  118.         // line 70
  119.         yield "    ";
  120.         // line 71
  121.         yield "    ";
  122.         yield from $this->load("_flashes.html.twig"71)->unwrap()->yield($context);
  123.         // line 72
  124.         yield "        ";
  125.         if ((CoreExtension::getAttribute($this->env$this->source, (isset($context["app"]) || array_key_exists("app"$context) ? $context["app"] : (function () { throw new RuntimeError('Variable "app" does not exist.'72$this->source); })()), "user", [], "any"falsefalsefalse72) && (CoreExtension::getAttribute($this->env$this->sourceCoreExtension::getAttribute($this->env$this->source, (isset($context["app"]) || array_key_exists("app"$context) ? $context["app"] : (function () { throw new RuntimeError('Variable "app" does not exist.'72$this->source); })()), "user", [], "any"falsefalsefalse72), "isVerified", [], "any"falsefalsefalse72) == false))) {
  126.             // line 73
  127.             yield "        <div id=\"alert-4\" class=\"flex items-center ring-1 ring-yellow-500 p-4 mb-4 text-yellow-800 rounded-lg bg-yellow-50 dark:bg-gray-800 dark:text-yellow-300 fixed top-20 right-2 z-50\" role=\"alert\">
  128.             <svg class=\"shrink-0 w-4 h-4\" aria-hidden=\"true\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"currentColor\" viewBox=\"0 0 20 20\">
  129.                 <path d=\"M10 .5a9.5 9.5 0 1 0 9.5 9.5A9.51 9.51 0 0 0 10 .5ZM9.5 4a1.5 1.5 0 1 1 0 3 1.5 1.5 0 0 1 0-3ZM12 15H8a1 1 0 0 1 0-2h1v-3H8a1 1 0 0 1 0-2h2a1 1 0 0 1 1 1v4h1a1 1 0 0 1 0 2Z\"/>
  130.             </svg>
  131.             <span class=\"sr-only\">Info</span>
  132.             <div class=\"ms-3 text-sm font-medium\">
  133.                  <strong>Bonjour, ";
  134.             // line 79
  135.             yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->sourceCoreExtension::getAttribute($this->env$this->source, (isset($context["app"]) || array_key_exists("app"$context) ? $context["app"] : (function () { throw new RuntimeError('Variable "app" does not exist.'79$this->source); })()), "user", [], "any"falsefalsefalse79), "prenom", [], "any"falsefalsefalse79), "html"nulltrue);
  136.             yield "</strong>, <br> votre compte n'est pas encore activé. <br> Un lien d'activation vous a été envoyé par mail.<br>
  137.                 <a href=\"";
  138.             // line 80
  139.             yield $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("resend_verif");
  140.             yield "\" target=\"_blank\">Pas de lien ? <span class=\"font-semibold underline hover:no-underline\">Renvoyez le lien d'activation.</span></a>
  141.             </div>
  142.             <button type=\"button\" class=\"ms-auto -mx-1.5 -my-1.5 bg-yellow-50 text-yellow-500 rounded-lg focus:ring-2 focus:ring-yellow-400 p-1.5 hover:bg-yellow-200 inline-flex items-center justify-center h-8 w-8 dark:bg-gray-800 dark:text-yellow-300 dark:hover:bg-gray-700\" data-dismiss-target=\"#alert-4\" aria-label=\"Close\">
  143.                 <span class=\"sr-only\">Close</span>
  144.                 <svg class=\"w-3 h-3\" aria-hidden=\"true\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 14 14\">
  145.                 <path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"m1 1 6 6m0 0 6 6M7 7l6-6M7 7l-6 6\"/>
  146.                 </svg>
  147.             </button>
  148.         </div>
  149.         ";
  150.         }
  151.         // line 90
  152.         yield "
  153.         ";
  154.         // line 91
  155.         yield from $this->unwrap()->yieldBlock('body'$context$blocks);
  156.         // line 92
  157.         yield "
  158.         <!-- Footer -->
  159.         ";
  160.         // line 94
  161.         yield from $this->load("footer.html.twig"94)->unwrap()->yield($context);
  162.         // line 95
  163.         yield "        ";
  164.         yield from $this->unwrap()->yieldBlock('javascripts'$context$blocks);
  165.         // line 98
  166.         yield "        <!-- Flowbite JS -->
  167.         <script src=\"https://cdn.jsdelivr.net/npm/flowbite@3.1.2/dist/flowbite.min.js\"></script>
  168.     ";
  169.         // line 102
  170.         yield "
  171.         <!-- Script pour le fonctionnement du dark theme -->
  172.         <script>
  173.             var themeToggleDarkIcon = document.getElementById('theme-toggle-dark-icon');
  174.             var themeToggleLightIcon = document.getElementById('theme-toggle-light-icon');
  175.             // Changer les icônes selon le thème actuel
  176.             if (localStorage.getItem('color-theme') === 'dark' || (!('color-theme' in localStorage) && window.matchMedia('(prefers-color-scheme: dark)').matches)) {
  177.                 themeToggleLightIcon.classList.remove('hidden');
  178.             } else {
  179.                 themeToggleDarkIcon.classList.remove('hidden');
  180.             }
  181.             var themeToggleBtn = document.getElementById('theme-toggle');
  182.             themeToggleBtn.addEventListener('click', function() {
  183.                 // Basculer les icônes
  184.                 themeToggleDarkIcon.classList.toggle('hidden');
  185.                 themeToggleLightIcon.classList.toggle('hidden');
  186.                 // Si défini dans localStorage
  187.                 if (localStorage.getItem('color-theme')) {
  188.                     if (localStorage.getItem('color-theme') === 'light') {
  189.                         document.documentElement.classList.add('dark');
  190.                         localStorage.setItem('color-theme', 'dark');
  191.                     } else {
  192.                         document.documentElement.classList.remove('dark');
  193.                         localStorage.setItem('color-theme', 'light');
  194.                     }
  195.                 } else {
  196.                     if (document.documentElement.classList.contains('dark')) {
  197.                         document.documentElement.classList.remove('dark');
  198.                         localStorage.setItem('color-theme', 'light');
  199.                     } else {
  200.                         document.documentElement.classList.add('dark');
  201.                         localStorage.setItem('color-theme', 'dark');
  202.                     }
  203.                 }
  204.             });
  205.         </script>
  206.     </body>
  207. </html>
  208. ";
  209.         
  210.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
  211.         
  212.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
  213.         yield from [];
  214.     }
  215.     // line 6
  216.     /**
  217.      * @return iterable<null|scalar|\Stringable>
  218.      */
  219.     public function block_title(array $context, array $blocks = []): iterable
  220.     {
  221.         $macros $this->macros;
  222.         $__internal_5a27a8ba21ca79b61932376b2fa922d2 $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  223.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""title"));
  224.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  225.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""title"));
  226.         yield "MatchMeuble";
  227.         
  228.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
  229.         
  230.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
  231.         yield from [];
  232.     }
  233.     // line 7
  234.     /**
  235.      * @return iterable<null|scalar|\Stringable>
  236.      */
  237.     public function block_meta(array $context, array $blocks = []): iterable
  238.     {
  239.         $macros $this->macros;
  240.         $__internal_5a27a8ba21ca79b61932376b2fa922d2 $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  241.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""meta"));
  242.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  243.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""meta"));
  244.         
  245.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
  246.         
  247.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
  248.         yield from [];
  249.     }
  250.     // line 30
  251.     /**
  252.      * @return iterable<null|scalar|\Stringable>
  253.      */
  254.     public function block_stylesheets(array $context, array $blocks = []): iterable
  255.     {
  256.         $macros $this->macros;
  257.         $__internal_5a27a8ba21ca79b61932376b2fa922d2 $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  258.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""stylesheets"));
  259.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  260.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""stylesheets"));
  261.         // line 31
  262.         yield "            ";
  263.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->env->getFunction('encore_entry_link_tags')->getCallable()("app"), "html"nulltrue);
  264.         yield "
  265.         ";
  266.         
  267.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
  268.         
  269.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
  270.         yield from [];
  271.     }
  272.     // line 91
  273.     /**
  274.      * @return iterable<null|scalar|\Stringable>
  275.      */
  276.     public function block_body(array $context, array $blocks = []): iterable
  277.     {
  278.         $macros $this->macros;
  279.         $__internal_5a27a8ba21ca79b61932376b2fa922d2 $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  280.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""body"));
  281.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  282.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""body"));
  283.         
  284.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
  285.         
  286.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
  287.         yield from [];
  288.     }
  289.     // line 95
  290.     /**
  291.      * @return iterable<null|scalar|\Stringable>
  292.      */
  293.     public function block_javascripts(array $context, array $blocks = []): iterable
  294.     {
  295.         $macros $this->macros;
  296.         $__internal_5a27a8ba21ca79b61932376b2fa922d2 $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  297.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""javascripts"));
  298.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  299.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""javascripts"));
  300.         // line 96
  301.         yield "            ";
  302.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->env->getFunction('encore_entry_script_tags')->getCallable()("app"), "html"nulltrue);
  303.         yield "
  304.         ";
  305.         
  306.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
  307.         
  308.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
  309.         yield from [];
  310.     }
  311.     /**
  312.      * @codeCoverageIgnore
  313.      */
  314.     public function getTemplateName(): string
  315.     {
  316.         return "base.html.twig";
  317.     }
  318.     /**
  319.      * @codeCoverageIgnore
  320.      */
  321.     public function isTraitable(): bool
  322.     {
  323.         return false;
  324.     }
  325.     /**
  326.      * @codeCoverageIgnore
  327.      */
  328.     public function getDebugInfo(): array
  329.     {
  330.         return array (  344 => 96,  331 => 95,  309 => 91,  295 => 31,  282 => 30,  260 => 7,  237 => 6,  184 => 102,  179 => 98,  176 => 95,  174 => 94,  170 => 92,  168 => 91,  165 => 90,  152 => 80,  148 => 79,  140 => 73,  137 => 72,  134 => 71,  132 => 70,  130 => 69,  92 => 33,  90 => 30,  66 => 8,  64 => 7,  60 => 6,  53 => 1,);
  331.     }
  332.     public function getSourceContext(): Source
  333.     {
  334.         return new Source("<!DOCTYPE html>
  335. <html lang=\"fr\">
  336.     <head>
  337.         <meta charset=\"UTF-8\">
  338.         <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">
  339.         <title>{% block title %}MatchMeuble{% endblock %}</title>
  340.         {% block meta %}{% endblock %}
  341.         <link rel=\"icon\" href=\"data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 128 128%22><text y=%221.2em%22 font-size=%2296%22>🛠️</text></svg>\">
  342.         <!-- Tailwind CSS avec configuration dark mode -->
  343.         <script src=\"https://cdn.tailwindcss.com\"></script>
  344.         <script>
  345.             tailwind.config = {
  346.                 darkMode: 'class',
  347.                 theme: {
  348.                     extend: {
  349.                         colors: {
  350.                             primary: {\"50\":\"#eff6ff\",\"100\":\"#dbeafe\",\"200\":\"#bfdbfe\",\"300\":\"#93c5fd\",\"400\":\"#60a5fa\",\"500\":\"#3b82f6\",\"600\":\"#2563eb\",\"700\":\"#1d4ed8\",\"800\":\"#1e40af\",\"900\":\"#1e3a8a\",\"950\":\"#172554\"}
  351.                         }
  352.                     }
  353.                 }
  354.             }
  355.         </script>
  356.         <!-- Flowbite CSS & JS -->
  357.         <link href=\"https://cdnjs.cloudflare.com/ajax/libs/flowbite/1.6.5/flowbite.min.css\" rel=\"stylesheet\" />
  358.         <script src=\"https://cdnjs.cloudflare.com/ajax/libs/flowbite/1.6.5/flowbite.min.js\"></script>
  359.         <script>document.documentElement.classList.add('js')</script>
  360.         {% block stylesheets %}
  361.             {{ encore_entry_link_tags('app') }}
  362.         {% endblock %}
  363.         <!-- Styles personnalisés pour préserver le gradient -->
  364.         <style>
  365.             .text-gradient {
  366.                 background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
  367.                 -webkit-background-clip: text;
  368.                 -webkit-text-fill-color: transparent;
  369.                 background-clip: text;
  370.             }
  371.         </style>
  372.         <!-- Script pour le dark theme (doit être en premier pour éviter le flash) -->
  373.         <script>
  374.             // Vérifier le thème sauvegardé ou utiliser la préférence système
  375.             if (localStorage.getItem('color-theme') === 'dark' || (!('color-theme' in localStorage) && window.matchMedia('(prefers-color-scheme: dark)').matches)) {
  376.                 document.documentElement.classList.add('dark');
  377.             } else {
  378.                 document.documentElement.classList.remove('dark');
  379.             }
  380.         </script>
  381.     </head>
  382.     <body class=\"bg-gray-50 dark:bg-gray-900 min-h-screen\">
  383.         <!-- Bouton Dark Theme (toujours visible) -->
  384.         <div class=\"fixed bottom-4 right-4 z-50\">
  385.             <button id=\"theme-toggle\" type=\"button\" class=\"text-gray-500 dark:text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-700 focus:outline-none focus:ring-4 focus:ring-gray-200 dark:focus:ring-gray-700 rounded-lg text-sm p-2.5 bg-white dark:bg-gray-800 shadow-lg\">
  386.                 <!-- Icône lune (mode dark) -->
  387.                 <svg id=\"theme-toggle-dark-icon\" class=\"hidden w-5 h-5\" fill=\"currentColor\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\">
  388.                     <path d=\"M17.293 13.293A8 8 0 016.707 2.707a8.001 8.001 0 1010.586 10.586z\"></path>
  389.                 </svg>
  390.                 <!-- Icône soleil (mode light) -->
  391.                 <svg id=\"theme-toggle-light-icon\" class=\"hidden w-5 h-5\" fill=\"currentColor\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\">
  392.                     <path d=\"M10 2a1 1 0 011 1v1a1 1 0 11-2 0V3a1 1 0 011-1zm4 8a4 4 0 11-8 0 4 4 0 018 0zm-.464 4.95l.707.707a1 1 0 001.414-1.414l-.707-.707a1 1 0 00-1.414 1.414zm2.12-10.607a1 1 0 010 1.414l-.706.707a1 1 0 11-1.414-1.414l.707-.707a1 1 0 011.414 0zM17 11a1 1 0 100-2h-1a1 1 0 100 2h1zm-7 4a1 1 0 011 1v1a1 1 0 11-2 0v-1a1 1 0 011-1zM5.05 6.464A1 1 0 106.465 5.05l-.708-.707a1 1 0 00-1.414 1.414l.707.707zm1.414 8.486l-.707.707a1 1 0 01-1.414-1.414l.707-.707a1 1 0 011.414 1.414zM4 11a1 1 0 100-2H3a1 1 0 000 2h1z\" fill-rule=\"evenodd\" clip-rule=\"evenodd\"></path>
  393.                 </svg>
  394.             </button>
  395.         </div>
  396.         <!-- Header -->
  397.         {% include 'header.html.twig' %}
  398.     {# Flashes (Flowbite unified) #}
  399.     {% include '_flashes.html.twig' %}
  400.         {% if app.user and app.user.isVerified == false %}
  401.         <div id=\"alert-4\" class=\"flex items-center ring-1 ring-yellow-500 p-4 mb-4 text-yellow-800 rounded-lg bg-yellow-50 dark:bg-gray-800 dark:text-yellow-300 fixed top-20 right-2 z-50\" role=\"alert\">
  402.             <svg class=\"shrink-0 w-4 h-4\" aria-hidden=\"true\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"currentColor\" viewBox=\"0 0 20 20\">
  403.                 <path d=\"M10 .5a9.5 9.5 0 1 0 9.5 9.5A9.51 9.51 0 0 0 10 .5ZM9.5 4a1.5 1.5 0 1 1 0 3 1.5 1.5 0 0 1 0-3ZM12 15H8a1 1 0 0 1 0-2h1v-3H8a1 1 0 0 1 0-2h2a1 1 0 0 1 1 1v4h1a1 1 0 0 1 0 2Z\"/>
  404.             </svg>
  405.             <span class=\"sr-only\">Info</span>
  406.             <div class=\"ms-3 text-sm font-medium\">
  407.                  <strong>Bonjour, {{app.user.prenom}}</strong>, <br> votre compte n'est pas encore activé. <br> Un lien d'activation vous a été envoyé par mail.<br>
  408.                 <a href=\"{{path('resend_verif')}}\" target=\"_blank\">Pas de lien ? <span class=\"font-semibold underline hover:no-underline\">Renvoyez le lien d'activation.</span></a>
  409.             </div>
  410.             <button type=\"button\" class=\"ms-auto -mx-1.5 -my-1.5 bg-yellow-50 text-yellow-500 rounded-lg focus:ring-2 focus:ring-yellow-400 p-1.5 hover:bg-yellow-200 inline-flex items-center justify-center h-8 w-8 dark:bg-gray-800 dark:text-yellow-300 dark:hover:bg-gray-700\" data-dismiss-target=\"#alert-4\" aria-label=\"Close\">
  411.                 <span class=\"sr-only\">Close</span>
  412.                 <svg class=\"w-3 h-3\" aria-hidden=\"true\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 14 14\">
  413.                 <path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"m1 1 6 6m0 0 6 6M7 7l6-6M7 7l-6 6\"/>
  414.                 </svg>
  415.             </button>
  416.         </div>
  417.         {% endif %}
  418.         {% block body %}{% endblock %}
  419.         <!-- Footer -->
  420.         {% include 'footer.html.twig' %}
  421.         {% block javascripts %}
  422.             {{ encore_entry_script_tags('app') }}
  423.         {% endblock %}
  424.         <!-- Flowbite JS -->
  425.         <script src=\"https://cdn.jsdelivr.net/npm/flowbite@3.1.2/dist/flowbite.min.js\"></script>
  426.     {# Removed taos: causes runtime errors on some DOM mutations (className not always a string) #}
  427.         <!-- Script pour le fonctionnement du dark theme -->
  428.         <script>
  429.             var themeToggleDarkIcon = document.getElementById('theme-toggle-dark-icon');
  430.             var themeToggleLightIcon = document.getElementById('theme-toggle-light-icon');
  431.             // Changer les icônes selon le thème actuel
  432.             if (localStorage.getItem('color-theme') === 'dark' || (!('color-theme' in localStorage) && window.matchMedia('(prefers-color-scheme: dark)').matches)) {
  433.                 themeToggleLightIcon.classList.remove('hidden');
  434.             } else {
  435.                 themeToggleDarkIcon.classList.remove('hidden');
  436.             }
  437.             var themeToggleBtn = document.getElementById('theme-toggle');
  438.             themeToggleBtn.addEventListener('click', function() {
  439.                 // Basculer les icônes
  440.                 themeToggleDarkIcon.classList.toggle('hidden');
  441.                 themeToggleLightIcon.classList.toggle('hidden');
  442.                 // Si défini dans localStorage
  443.                 if (localStorage.getItem('color-theme')) {
  444.                     if (localStorage.getItem('color-theme') === 'light') {
  445.                         document.documentElement.classList.add('dark');
  446.                         localStorage.setItem('color-theme', 'dark');
  447.                     } else {
  448.                         document.documentElement.classList.remove('dark');
  449.                         localStorage.setItem('color-theme', 'light');
  450.                     }
  451.                 } else {
  452.                     if (document.documentElement.classList.contains('dark')) {
  453.                         document.documentElement.classList.remove('dark');
  454.                         localStorage.setItem('color-theme', 'light');
  455.                     } else {
  456.                         document.documentElement.classList.add('dark');
  457.                         localStorage.setItem('color-theme', 'dark');
  458.                     }
  459.                 }
  460.             });
  461.         </script>
  462.     </body>
  463. </html>
  464. ""base.html.twig""/home/u956140113/domains/sassify.fr/public_html/match-meuble/templates/base.html.twig");
  465.     }
  466. }