diff --git a/resources/js/components/Header.vue b/resources/js/components/Header.vue index b1d5e8a..7d8e334 100644 --- a/resources/js/components/Header.vue +++ b/resources/js/components/Header.vue @@ -66,7 +66,7 @@ const handleClickOutside = (e: Event) => { // Support composedPath for shadow DOM correctness const path = (e as MouseEvent).composedPath?.(); - const clickedInside = path ? path.includes(dropdownRef.value) : dropdownRef.value.contains(e.target as Node); + const clickedInside = path ? path.includes(dropdownRef.value) : dropdownRef.value?.contains(e.target as Node); if (!clickedInside) { dropdownOpen.value = false; @@ -116,11 +116,9 @@ const initMobileMenu = (): void => { diff --git a/resources/js/components/dredgy/SectionTitle.vue b/resources/js/components/dredgy/SectionTitle.vue index 767c675..568842b 100644 --- a/resources/js/components/dredgy/SectionTitle.vue +++ b/resources/js/components/dredgy/SectionTitle.vue @@ -1,7 +1,7 @@ - {{ title }} + {{ title }} {{ gradient }} @@ -41,7 +41,7 @@ import GradientText from "@/components/dredgy/GradientText.vue"; const props = defineProps<{ - title: string + title?: string gradient?: string subtitle?: string }>() diff --git a/resources/js/layouts/AppLayout.vue b/resources/js/layouts/AppLayout.vue index 95f98f6..23df63e 100644 --- a/resources/js/layouts/AppLayout.vue +++ b/resources/js/layouts/AppLayout.vue @@ -81,6 +81,16 @@ withDefaults(defineProps(), { --transition-smooth: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); } + +.glass { + background-color: color-mix(in srgb, var(--card) 35%, transparent); + backdrop-filter: blur(5px); + -webkit-backdrop-filter: blur(5px); /* Safari */ + border: 1px solid rgba(255, 255, 255, 0.2); + background-clip: padding-box; +} + + /* Reset and Base Styles */ * { margin: 0; @@ -110,7 +120,7 @@ body::-webkit-scrollbar { } html{ - overflow:auto; + overflow:visible; } body { @@ -121,13 +131,25 @@ body { overflow-x: hidden; display:flex; flex-direction: column; - + min-height: 100svh; /* ensure the page fills the viewport height */ +} +html, body, #app { + min-height: 100svh; /* fill viewport */ + display: flex; + flex-direction: column; } + +/* Make main fill remaining space and arrange its children vertically */ main{ - margin-top: 5dvh; - min-height: 90dvh; - flex-direction: column; + display: flex; /* added */ + flex-direction: column; /* keep */ flex: 1; + gap: 2em;/* keep */ +} + +/* Push the Footer (last child in main) to the bottom if content is short */ +main > :last-child { + margin-top: auto; } diff --git a/resources/js/pages/TourDay.vue b/resources/js/pages/TourDay.vue new file mode 100644 index 0000000..81cbdbe --- /dev/null +++ b/resources/js/pages/TourDay.vue @@ -0,0 +1,137 @@ + + + + + + + + + + + + + + + + + + + No image available + + + + + + + + + + + + + + + diff --git a/resources/js/pages/TourNavigator.vue b/resources/js/pages/TourNavigator.vue deleted file mode 100644 index 50e307b..0000000 --- a/resources/js/pages/TourNavigator.vue +++ /dev/null @@ -1,25 +0,0 @@ - - - - - {{tour.short_description}} - - - - diff --git a/resources/js/pages/TourOverview.vue b/resources/js/pages/TourOverview.vue new file mode 100644 index 0000000..ea36e31 --- /dev/null +++ b/resources/js/pages/TourOverview.vue @@ -0,0 +1,36 @@ + + + + + + + + + + diff --git a/resources/js/pages/TourOverviewSection.vue b/resources/js/pages/TourOverviewSection.vue new file mode 100644 index 0000000..8f2085c --- /dev/null +++ b/resources/js/pages/TourOverviewSection.vue @@ -0,0 +1,97 @@ + + + + + + + + + + + + + + + + + About this Adventure + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/js/types/index.d.ts b/resources/js/types/index.d.ts index 06b2253..e2e7667 100644 --- a/resources/js/types/index.d.ts +++ b/resources/js/types/index.d.ts @@ -75,8 +75,11 @@ export interface Tour { price: number level: string short_description: string - countries: Country[] | null - tour_days: TourDay[] | null + long_description?: string + countries?: Country[] + tour_days?: TourDay[] + min_people?: number + max_people?: number } diff --git a/routes/web.php b/routes/web.php index d07c827..3b12073 100644 --- a/routes/web.php +++ b/routes/web.php @@ -16,8 +16,10 @@ Route::get('/about', function () { })->name('about'); Route::get('/adventures/{tour}', function ($tour) { - return Inertia::render('TourNavigator',[ - 'tour' => Tour::where('internal_name', $tour)->with('countries.continent')->first(), + return Inertia::render('TourOverview',[ + 'tour' => Tour::where('internal_name', $tour) + ->with('tour_days') + ->with('countries.continent')->first(), ]); })->name('tour');