var/cache/dev/twig/9c/9c05308c264e00aef56de7d91c1094e7.php line 54

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. /* auteurs/detail.html.twig */
  16. class __TwigTemplate_3dd1850b50cfcd43e03d6f556a7d9de1 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->blocks = [
  28. 'title' => [$this, 'block_title'],
  29. 'body' => [$this, 'block_body'],
  30. ];
  31. }
  32. protected function doGetParent(array $context): bool|string|Template|TemplateWrapper
  33. {
  34. // line 1
  35. return "base.html.twig";
  36. }
  37. protected function doDisplay(array $context, array $blocks = []): iterable
  38. {
  39. $macros = $this->macros;
  40. $__internal_5a27a8ba21ca79b61932376b2fa922d2 = $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  41. $__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "template", "auteurs/detail.html.twig"));
  42. $__internal_6f47bbe9983af81f1e7450e9a3e3768f = $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  43. $__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "template", "auteurs/detail.html.twig"));
  44. $this->parent = $this->loadTemplate("base.html.twig", "auteurs/detail.html.twig", 1);
  45. yield from $this->parent->unwrap()->yield($context, array_merge($this->blocks, $blocks));
  46. $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
  47. $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
  48. }
  49. // line 3
  50. /**
  51. * @return iterable<null|scalar|\Stringable>
  52. */
  53. public function block_title(array $context, array $blocks = []): iterable
  54. {
  55. $macros = $this->macros;
  56. $__internal_5a27a8ba21ca79b61932376b2fa922d2 = $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  57. $__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "title"));
  58. $__internal_6f47bbe9983af81f1e7450e9a3e3768f = $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  59. $__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "title"));
  60. yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env, $this->source, (isset($context["auteur"]) || array_key_exists("auteur", $context) ? $context["auteur"] : (function () { throw new RuntimeError('Variable "auteur" does not exist.', 3, $this->source); })()), "nomComplet", [], "any", false, false, false, 3), "html", null, true);
  61. yield " - BDD-Books";
  62. $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
  63. $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
  64. yield from [];
  65. }
  66. // line 5
  67. /**
  68. * @return iterable<null|scalar|\Stringable>
  69. */
  70. public function block_body(array $context, array $blocks = []): iterable
  71. {
  72. $macros = $this->macros;
  73. $__internal_5a27a8ba21ca79b61932376b2fa922d2 = $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  74. $__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "body"));
  75. $__internal_6f47bbe9983af81f1e7450e9a3e3768f = $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  76. $__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "body"));
  77. // line 6
  78. yield "<div class=\"container-fluid px-4\">
  79. <!-- En-tête -->
  80. <div class=\"card mb-4\">
  81. <div class=\"card-header\" style=\"background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);\">
  82. <div class=\"d-flex justify-content-between align-items-center\">
  83. <h5 class=\"mb-0 text-white\">
  84. <i class=\"fas fa-user\"></i> ";
  85. // line 12
  86. yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env, $this->source, (isset($context["auteur"]) || array_key_exists("auteur", $context) ? $context["auteur"] : (function () { throw new RuntimeError('Variable "auteur" does not exist.', 12, $this->source); })()), "nomComplet", [], "any", false, false, false, 12), "html", null, true);
  87. yield "
  88. </h5>
  89. <a href=\"";
  90. // line 14
  91. yield $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("liste_auteurs");
  92. yield "\" class=\"btn btn-light btn-sm\">
  93. <i class=\"fas fa-arrow-left\"></i> Retour aux auteurs
  94. </a>
  95. </div>
  96. </div>
  97. <div class=\"card-body\">
  98. <div class=\"d-flex align-items-center\">
  99. <div class=\"mr-4\">
  100. <span class=\"badge\" style=\"font-size: 2rem; width: 70px; height: 70px; display: flex; align-items: center; justify-content: center; border-radius: 50%; background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); color: white;\">
  101. ";
  102. // line 23
  103. yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env, $this->source, (isset($context["auteur"]) || array_key_exists("auteur", $context) ? $context["auteur"] : (function () { throw new RuntimeError('Variable "auteur" does not exist.', 23, $this->source); })()), "initiale", [], "any", false, false, false, 23), "html", null, true);
  104. yield "
  105. </span>
  106. </div>
  107. <div>
  108. <h3 class=\"mb-1\">";
  109. // line 27
  110. yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env, $this->source, (isset($context["auteur"]) || array_key_exists("auteur", $context) ? $context["auteur"] : (function () { throw new RuntimeError('Variable "auteur" does not exist.', 27, $this->source); })()), "nomComplet", [], "any", false, false, false, 27), "html", null, true);
  111. yield "</h3>
  112. <p class=\"text-muted mb-0\">
  113. <i class=\"fas fa-book\"></i> ";
  114. // line 29
  115. yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(Twig\Extension\CoreExtension::length($this->env->getCharset(), (isset($context["livres"]) || array_key_exists("livres", $context) ? $context["livres"] : (function () { throw new RuntimeError('Variable "livres" does not exist.', 29, $this->source); })())), "html", null, true);
  116. yield " livre(s) dans la bibliothèque
  117. </p>
  118. </div>
  119. </div>
  120. </div>
  121. </div>
  122. <!-- Liste des livres -->
  123. ";
  124. // line 37
  125. if ((Twig\Extension\CoreExtension::length($this->env->getCharset(), (isset($context["livres"]) || array_key_exists("livres", $context) ? $context["livres"] : (function () { throw new RuntimeError('Variable "livres" does not exist.', 37, $this->source); })())) > 0)) {
  126. // line 38
  127. yield " <!-- Grille de livres (même style que la recherche) -->
  128. <div class=\"row\">
  129. ";
  130. // line 40
  131. $context['_parent'] = $context;
  132. $context['_seq'] = CoreExtension::ensureTraversable((isset($context["livres"]) || array_key_exists("livres", $context) ? $context["livres"] : (function () { throw new RuntimeError('Variable "livres" does not exist.', 40, $this->source); })()));
  133. foreach ($context['_seq'] as $context["_key"] => $context["livre"]) {
  134. // line 41
  135. yield " <div class=\"col-6 col-md-4 col-lg-3 col-xl-2 mb-4\">
  136. <div class=\"card h-100 livre-card shadow-sm\">
  137. <!-- Image -->
  138. <div class=\"livre-cover-wrapper text-center p-2\" style=\"background: linear-gradient(135deg, #f5f7fa 0%, #e4e8ec 100%);\">
  139. ";
  140. // line 45
  141. if (CoreExtension::inFilter(CoreExtension::getAttribute($this->env, $this->source, $context["livre"], "id", [], "any", false, false, false, 45), Twig\Extension\CoreExtension::keys((isset($context["images"]) || array_key_exists("images", $context) ? $context["images"] : (function () { throw new RuntimeError('Variable "images" does not exist.', 45, $this->source); })())))) {
  142. // line 46
  143. yield " <img class=\"img-fluid\"
  144. alt=\"";
  145. // line 47
  146. yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env, $this->source, $context["livre"], "titre", [], "any", false, false, false, 47), "html", null, true);
  147. yield "\"
  148. src=\"data:image/png;base64,";
  149. // line 48
  150. yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env, $this->source, (isset($context["images"]) || array_key_exists("images", $context) ? $context["images"] : (function () { throw new RuntimeError('Variable "images" does not exist.', 48, $this->source); })()), CoreExtension::getAttribute($this->env, $this->source, $context["livre"], "id", [], "any", false, false, false, 48), [], "array", false, false, false, 48), "html", null, true);
  151. yield "\"
  152. style=\"max-height: 180px; object-fit: contain;\" />
  153. ";
  154. } else {
  155. // line 51
  156. yield " <div class=\"d-flex align-items-center justify-content-center\" style=\"height: 180px;\">
  157. <i class=\"fas fa-book fa-4x text-muted\"></i>
  158. </div>
  159. ";
  160. }
  161. // line 55
  162. yield " </div>
  163. <!-- Corps de la card -->
  164. <div class=\"card-body p-2\">
  165. <h6 class=\"card-title mb-1\">
  166. <a href=\"";
  167. // line 60
  168. yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("livreDetail", ["id" => CoreExtension::getAttribute($this->env, $this->source, $context["livre"], "id", [], "any", false, false, false, 60)]), "html", null, true);
  169. yield "\" class=\"text-dark text-decoration-none livre-titre\">
  170. ";
  171. // line 61
  172. yield (((Twig\Extension\CoreExtension::length($this->env->getCharset(), CoreExtension::getAttribute($this->env, $this->source, $context["livre"], "titre", [], "any", false, false, false, 61)) > 40)) ? ($this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape((Twig\Extension\CoreExtension::slice($this->env->getCharset(), CoreExtension::getAttribute($this->env, $this->source, $context["livre"], "titre", [], "any", false, false, false, 61), 0, 40) . "..."), "html", null, true)) : ($this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env, $this->source, $context["livre"], "titre", [], "any", false, false, false, 61), "html", null, true)));
  173. yield "
  174. </a>
  175. </h6>
  176. ";
  177. // line 65
  178. if ((CoreExtension::getAttribute($this->env, $this->source, $context["livre"], "tome", [], "any", false, false, false, 65) && (CoreExtension::getAttribute($this->env, $this->source, $context["livre"], "tome", [], "any", false, false, false, 65) > 0))) {
  179. // line 66
  180. yield " <span class=\"badge badge-secondary badge-sm mb-1\">Tome ";
  181. yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env, $this->source, $context["livre"], "tome", [], "any", false, false, false, 66), "html", null, true);
  182. yield "</span>
  183. ";
  184. }
  185. // line 68
  186. yield "
  187. <!-- Éditeur -->
  188. ";
  189. // line 70
  190. if (CoreExtension::getAttribute($this->env, $this->source, $context["livre"], "edition", [], "any", false, false, false, 70)) {
  191. // line 71
  192. yield " <p class=\"card-text small text-muted mb-1\">
  193. <i class=\"fas fa-building\"></i> ";
  194. // line 72
  195. yield (((Twig\Extension\CoreExtension::length($this->env->getCharset(), CoreExtension::getAttribute($this->env, $this->source, CoreExtension::getAttribute($this->env, $this->source, $context["livre"], "edition", [], "any", false, false, false, 72), "nom", [], "any", false, false, false, 72)) > 20)) ? ($this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape((Twig\Extension\CoreExtension::slice($this->env->getCharset(), CoreExtension::getAttribute($this->env, $this->source, CoreExtension::getAttribute($this->env, $this->source, $context["livre"], "edition", [], "any", false, false, false, 72), "nom", [], "any", false, false, false, 72), 0, 20) . "..."), "html", null, true)) : ($this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env, $this->source, CoreExtension::getAttribute($this->env, $this->source, $context["livre"], "edition", [], "any", false, false, false, 72), "nom", [], "any", false, false, false, 72), "html", null, true)));
  196. yield "
  197. </p>
  198. ";
  199. }
  200. // line 75
  201. yield "
  202. ";
  203. // line 76
  204. if (CoreExtension::getAttribute($this->env, $this->source, $context["livre"], "annee", [], "any", false, false, false, 76)) {
  205. // line 77
  206. yield " <p class=\"card-text small text-muted mb-1\">
  207. <i class=\"fas fa-calendar\"></i> ";
  208. // line 78
  209. yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env, $this->source, $context["livre"], "annee", [], "any", false, false, false, 78), "html", null, true);
  210. yield "
  211. </p>
  212. ";
  213. }
  214. // line 81
  215. yield " </div>
  216. <!-- Footer -->
  217. <div class=\"card-footer bg-white border-top-0 p-2 pt-0\">
  218. <div class=\"d-flex justify-content-between align-items-center\">
  219. <span class=\"badge badge-primary\">";
  220. // line 86
  221. yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Twig\Extension\CoreExtension']->formatNumber(CoreExtension::getAttribute($this->env, $this->source, $context["livre"], "prixBase", [], "any", false, false, false, 86), 2), "html", null, true);
  222. yield " €</span>
  223. <a href=\"";
  224. // line 87
  225. yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("livreDetail", ["id" => CoreExtension::getAttribute($this->env, $this->source, $context["livre"], "id", [], "any", false, false, false, 87)]), "html", null, true);
  226. yield "\" class=\"btn btn-sm btn-outline-primary\">
  227. <i class=\"fas fa-eye\"></i>
  228. </a>
  229. </div>
  230. </div>
  231. </div>
  232. </div>
  233. ";
  234. }
  235. $_parent = $context['_parent'];
  236. unset($context['_seq'], $context['_key'], $context['livre'], $context['_parent']);
  237. $context = array_intersect_key($context, $_parent) + $_parent;
  238. // line 95
  239. yield " </div>
  240. ";
  241. } else {
  242. // line 97
  243. yield " <div class=\"alert alert-info\">
  244. <i class=\"fas fa-info-circle\"></i> Aucun livre trouvé pour cet auteur.
  245. </div>
  246. ";
  247. }
  248. // line 101
  249. yield "</div>
  250. <style>
  251. .livre-card {
  252. transition: transform 0.2s, box-shadow 0.2s;
  253. border: 1px solid #e9ecef;
  254. }
  255. .livre-card:hover {
  256. transform: translateY(-5px);
  257. box-shadow: 0 8px 25px rgba(0,0,0,0.15) !important;
  258. }
  259. .livre-titre:hover {
  260. color: #667eea !important;
  261. }
  262. .livre-cover-wrapper {
  263. border-radius: 0.25rem 0.25rem 0 0;
  264. min-height: 180px;
  265. }
  266. </style>
  267. ";
  268. $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
  269. $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
  270. yield from [];
  271. }
  272. /**
  273. * @codeCoverageIgnore
  274. */
  275. public function getTemplateName(): string
  276. {
  277. return "auteurs/detail.html.twig";
  278. }
  279. /**
  280. * @codeCoverageIgnore
  281. */
  282. public function isTraitable(): bool
  283. {
  284. return false;
  285. }
  286. /**
  287. * @codeCoverageIgnore
  288. */
  289. public function getDebugInfo(): array
  290. {
  291. return array ( 276 => 101, 270 => 97, 266 => 95, 252 => 87, 248 => 86, 241 => 81, 235 => 78, 232 => 77, 230 => 76, 227 => 75, 221 => 72, 218 => 71, 216 => 70, 212 => 68, 206 => 66, 204 => 65, 197 => 61, 193 => 60, 186 => 55, 180 => 51, 174 => 48, 170 => 47, 167 => 46, 165 => 45, 159 => 41, 155 => 40, 151 => 38, 149 => 37, 138 => 29, 133 => 27, 126 => 23, 114 => 14, 109 => 12, 101 => 6, 88 => 5, 64 => 3, 41 => 1,);
  292. }
  293. public function getSourceContext(): Source
  294. {
  295. return new Source("{% extends 'base.html.twig' %}
  296. {% block title %}{{ auteur.nomComplet }} - BDD-Books{% endblock %}
  297. {% block body %}
  298. <div class=\"container-fluid px-4\">
  299. <!-- En-tête -->
  300. <div class=\"card mb-4\">
  301. <div class=\"card-header\" style=\"background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);\">
  302. <div class=\"d-flex justify-content-between align-items-center\">
  303. <h5 class=\"mb-0 text-white\">
  304. <i class=\"fas fa-user\"></i> {{ auteur.nomComplet }}
  305. </h5>
  306. <a href=\"{{ path('liste_auteurs') }}\" class=\"btn btn-light btn-sm\">
  307. <i class=\"fas fa-arrow-left\"></i> Retour aux auteurs
  308. </a>
  309. </div>
  310. </div>
  311. <div class=\"card-body\">
  312. <div class=\"d-flex align-items-center\">
  313. <div class=\"mr-4\">
  314. <span class=\"badge\" style=\"font-size: 2rem; width: 70px; height: 70px; display: flex; align-items: center; justify-content: center; border-radius: 50%; background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); color: white;\">
  315. {{ auteur.initiale }}
  316. </span>
  317. </div>
  318. <div>
  319. <h3 class=\"mb-1\">{{ auteur.nomComplet }}</h3>
  320. <p class=\"text-muted mb-0\">
  321. <i class=\"fas fa-book\"></i> {{ livres|length }} livre(s) dans la bibliothèque
  322. </p>
  323. </div>
  324. </div>
  325. </div>
  326. </div>
  327. <!-- Liste des livres -->
  328. {% if livres|length > 0 %}
  329. <!-- Grille de livres (même style que la recherche) -->
  330. <div class=\"row\">
  331. {% for livre in livres %}
  332. <div class=\"col-6 col-md-4 col-lg-3 col-xl-2 mb-4\">
  333. <div class=\"card h-100 livre-card shadow-sm\">
  334. <!-- Image -->
  335. <div class=\"livre-cover-wrapper text-center p-2\" style=\"background: linear-gradient(135deg, #f5f7fa 0%, #e4e8ec 100%);\">
  336. {% if livre.id in images|keys %}
  337. <img class=\"img-fluid\"
  338. alt=\"{{ livre.titre }}\"
  339. src=\"data:image/png;base64,{{ images[livre.id] }}\"
  340. style=\"max-height: 180px; object-fit: contain;\" />
  341. {% else %}
  342. <div class=\"d-flex align-items-center justify-content-center\" style=\"height: 180px;\">
  343. <i class=\"fas fa-book fa-4x text-muted\"></i>
  344. </div>
  345. {% endif %}
  346. </div>
  347. <!-- Corps de la card -->
  348. <div class=\"card-body p-2\">
  349. <h6 class=\"card-title mb-1\">
  350. <a href=\"{{ path('livreDetail', {'id': livre.id}) }}\" class=\"text-dark text-decoration-none livre-titre\">
  351. {{ livre.titre|length > 40 ? livre.titre|slice(0, 40) ~ '...' : livre.titre }}
  352. </a>
  353. </h6>
  354. {% if livre.tome and livre.tome > 0 %}
  355. <span class=\"badge badge-secondary badge-sm mb-1\">Tome {{ livre.tome }}</span>
  356. {% endif %}
  357. <!-- Éditeur -->
  358. {% if livre.edition %}
  359. <p class=\"card-text small text-muted mb-1\">
  360. <i class=\"fas fa-building\"></i> {{ livre.edition.nom|length > 20 ? livre.edition.nom|slice(0, 20) ~ '...' : livre.edition.nom }}
  361. </p>
  362. {% endif %}
  363. {% if livre.annee %}
  364. <p class=\"card-text small text-muted mb-1\">
  365. <i class=\"fas fa-calendar\"></i> {{ livre.annee }}
  366. </p>
  367. {% endif %}
  368. </div>
  369. <!-- Footer -->
  370. <div class=\"card-footer bg-white border-top-0 p-2 pt-0\">
  371. <div class=\"d-flex justify-content-between align-items-center\">
  372. <span class=\"badge badge-primary\">{{ livre.prixBase|number_format(2) }} €</span>
  373. <a href=\"{{ path('livreDetail', {'id': livre.id}) }}\" class=\"btn btn-sm btn-outline-primary\">
  374. <i class=\"fas fa-eye\"></i>
  375. </a>
  376. </div>
  377. </div>
  378. </div>
  379. </div>
  380. {% endfor %}
  381. </div>
  382. {% else %}
  383. <div class=\"alert alert-info\">
  384. <i class=\"fas fa-info-circle\"></i> Aucun livre trouvé pour cet auteur.
  385. </div>
  386. {% endif %}
  387. </div>
  388. <style>
  389. .livre-card {
  390. transition: transform 0.2s, box-shadow 0.2s;
  391. border: 1px solid #e9ecef;
  392. }
  393. .livre-card:hover {
  394. transform: translateY(-5px);
  395. box-shadow: 0 8px 25px rgba(0,0,0,0.15) !important;
  396. }
  397. .livre-titre:hover {
  398. color: #667eea !important;
  399. }
  400. .livre-cover-wrapper {
  401. border-radius: 0.25rem 0.25rem 0 0;
  402. min-height: 180px;
  403. }
  404. </style>
  405. {% endblock %}
  406. ", "auteurs/detail.html.twig", "/home/jla23/project/DEV/Bdd-Books-DEV/templates/auteurs/detail.html.twig");
  407. }
  408. }