Bruno Predot

Ajout de la liste des premiers films.

@@ -4,7 +4,9 @@ import SearchBar from "~/components/SearchBar.vue"; @@ -4,7 +4,9 @@ import SearchBar from "~/components/SearchBar.vue";
4 import { ref } from "vue"; 4 import { ref } from "vue";
5 import { useTMDB } from "~/composables/tMDB"; 5 import { useTMDB } from "~/composables/tMDB";
6 import { Movie } from "~/models/movie"; 6 import { Movie } from "~/models/movie";
  7 +import { FilmIcon } from "lucide-vue-next";
7 import type { MovieInterface } from "~/interfaces/movie"; 8 import type { MovieInterface } from "~/interfaces/movie";
  9 +import { useDateFormat } from '@vueuse/core'
8 //#endregion 10 //#endregion
9 11
10 //#region --Declaration--. 12 //#region --Declaration--.
@@ -61,9 +63,36 @@ onMounted(() => { @@ -61,9 +63,36 @@ onMounted(() => {
61 <!-- Barre de recherche --> 63 <!-- Barre de recherche -->
62 <search-bar placeholder="Rechercher un film..." /> 64 <search-bar placeholder="Rechercher un film..." />
63 <!-- Loading Skeleton --> 65 <!-- Loading Skeleton -->
64 - <skeleton-movies-loader :is-initial-loading="isInitialLoading" :skeleton-number="20" /> 66 + <skeleton-movies-loader v-if="isInitialLoading" :is-initial-loading="isInitialLoading" :skeleton-number="20" />
65 <!-- Liste des films --> 67 <!-- Liste des films -->
66 - <!-- <pre>{{ movies }}</pre>--> 68 + <div v-else-if="movies.length > 0" class="grid grid-cols-1 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4 gap-6">
  69 + <div
  70 + v-for="movie in movies"
  71 + :key="movie.id"
  72 + class="bg-gray-800 rounded-lg overflow-hidden shadow-lg transition-transform duration-300 hover:scale-105 cursor-pointer"
  73 + >
  74 + <div class="relative pb-[150%]">
  75 + <img
  76 + v-if="movie.poster_path"
  77 + :src="`https://image.tmdb.org/t/p/w500${movie.poster_path}`"
  78 + :alt="movie.title"
  79 + class="absolute inset-0 w-full h-full object-cover"
  80 + >
  81 + <div v-else class="absolute inset-0 w-full h-full bg-gray-700 flex items-center justify-center">
  82 + <FilmIcon :size="48" class="text-gray-500" />
  83 + </div>
  84 + <div
  85 + class="absolute top-2 right-2 bg-primary text-white rounded-full w-10 h-10 flex items-center justify-center font-bold"
  86 + >
  87 + {{ movie.vote_average.toFixed(1) }}
  88 + </div>
  89 + </div>
  90 + <div class="p-4">
  91 + <h2 class="text-lg font-bold mb-1 line-clamp-1">{{ movie.title }}</h2>
  92 + <p class="text-sm text-gray-400">{{ useDateFormat(movie.release_date, 'DD-MM-YYYY') }}</p>
  93 + </div>
  94 + </div>
  95 + </div>
67 </section> 96 </section>
68 </template> 97 </template>
69 98