From c5f74f134d13295164ab3b6fee4d378339fede88 Mon Sep 17 00:00:00 2001 From: "Edward Tirado Jr." Date: Wed, 25 Feb 2026 17:33:37 -0600 Subject: [PATCH] implemented individual list functionality --- app/components/common/card.vue | 18 ++ app/components/forms/auth/login-form.vue | 8 + app/components/forms/create-list-form.vue | 7 +- app/components/header.vue | 3 - app/components/list-settings.vue | 16 +- app/components/movie-list.vue | 215 +++++++++++++++--- app/components/panels/movie-details.vue | 100 +++++++- app/components/panels/movie-search.vue | 95 ++++++++ app/components/slideout-panel.vue | 27 ++- app/composables/$api.ts | 5 + app/composables/useApiData.ts | 5 + app/composables/useAuth.ts | 5 +- app/layouts/auth.vue | 15 ++ app/layouts/default.vue | 6 + app/middleware/auth.global.ts | 9 + app/pages/auth/login.vue | 5 +- app/pages/lists/[id].vue | 84 ++++--- app/pages/lists/index.vue | 42 +++- app/types/list.ts | 9 - app/types/movie-critic-score.ts | 5 + ...ist-settings.ts => movie-list-settings.ts} | 2 +- app/types/movie-list.ts | 11 + app/types/movie-search-results.ts | 8 + app/types/movie.ts | 1 + 24 files changed, 592 insertions(+), 109 deletions(-) create mode 100644 app/components/common/card.vue create mode 100644 app/components/panels/movie-search.vue create mode 100644 app/layouts/auth.vue create mode 100644 app/middleware/auth.global.ts delete mode 100644 app/types/list.ts create mode 100644 app/types/movie-critic-score.ts rename app/types/{list-settings.ts => movie-list-settings.ts} (85%) create mode 100644 app/types/movie-list.ts create mode 100644 app/types/movie-search-results.ts diff --git a/app/components/common/card.vue b/app/components/common/card.vue new file mode 100644 index 0000000..d00eeae --- /dev/null +++ b/app/components/common/card.vue @@ -0,0 +1,18 @@ + + + + + \ No newline at end of file diff --git a/app/components/forms/auth/login-form.vue b/app/components/forms/auth/login-form.vue index 5632403..b25f8ab 100644 --- a/app/components/forms/auth/login-form.vue +++ b/app/components/forms/auth/login-form.vue @@ -23,6 +23,14 @@ const handleLogin = () => login(email.value, password.value) \ No newline at end of file diff --git a/app/components/panels/movie-details.vue b/app/components/panels/movie-details.vue index 066d32b..320162e 100644 --- a/app/components/panels/movie-details.vue +++ b/app/components/panels/movie-details.vue @@ -1,37 +1,127 @@ \ No newline at end of file diff --git a/app/components/slideout-panel.vue b/app/components/slideout-panel.vue index 439cb37..105f2e5 100644 --- a/app/components/slideout-panel.vue +++ b/app/components/slideout-panel.vue @@ -9,16 +9,18 @@ const emit = defineEmits<{ diff --git a/app/layouts/default.vue b/app/layouts/default.vue index d2b618b..a4d279a 100644 --- a/app/layouts/default.vue +++ b/app/layouts/default.vue @@ -16,4 +16,10 @@ max-width: 1280px; } +@media (max-width: 740px) { + .container { + padding: 0.5rem; + } +} + \ No newline at end of file diff --git a/app/middleware/auth.global.ts b/app/middleware/auth.global.ts new file mode 100644 index 0000000..3212b86 --- /dev/null +++ b/app/middleware/auth.global.ts @@ -0,0 +1,9 @@ +export default defineNuxtRouteMiddleware((to) => { + const publicRoutes = ['/auth/login'] + if (publicRoutes.includes(to.path)) return + + const xsrfToken = useCookie('XSRF-TOKEN') + if (!xsrfToken.value) { + return navigateTo('/auth/login') + } +}) diff --git a/app/pages/auth/login.vue b/app/pages/auth/login.vue index 576b08c..6f800ce 100644 --- a/app/pages/auth/login.vue +++ b/app/pages/auth/login.vue @@ -1,6 +1,9 @@