diff --git a/app/Models/Tour.php b/app/Models/Tour.php index 9dd3952..ec6d6ef 100644 --- a/app/Models/Tour.php +++ b/app/Models/Tour.php @@ -7,7 +7,7 @@ use Illuminate\Database\Eloquent\Relations\BelongsToMany; class Tour extends Model { - protected $fillable = ['name', 'internal_name', 'short_description']; + protected $fillable = ['name', 'internal_name', 'short_description', 'long_description',]; public $timestamps = false; public function countries() diff --git a/database/migrations/2025_09_15_014700_create_tours_table.php b/database/migrations/2025_09_15_014700_create_tours_table.php index a6941ca..aebf2f6 100644 --- a/database/migrations/2025_09_15_014700_create_tours_table.php +++ b/database/migrations/2025_09_15_014700_create_tours_table.php @@ -16,6 +16,7 @@ return new class extends Migration $table->string('name'); $table->string('internal_name'); $table->string('short_description'); + $table->string('long_description');; $table->integer('length'); $table->integer('price'); $table->string('level'); diff --git a/database/seeders/TourSeeder.php b/database/seeders/TourSeeder.php index 9987a57..923edfa 100644 --- a/database/seeders/TourSeeder.php +++ b/database/seeders/TourSeeder.php @@ -13,9 +13,9 @@ class TourSeeder extends Seeder public function run(): void { \DB::table('tours')->insert([ - ['length' => 8, 'name' => "Cantonese Charm", 'short_description' => "Guangdong is known for it's big, global cities, but there is so much more to discover; including pristine natural beauty.", 'internal_name' => "cantonese_charm", 'level' => "Beginner", 'price' => 1000], - ['length' => 7, 'name' => "Fujianese Fantasy", 'short_description' => "Experience fresh seafood in Xiamen, and then move rurally for an authentic dive into Hakka culture", 'internal_name' => "fujianese_fantasy", 'level' => "Beginner", 'price' => 1200], - ['length' => 10, 'name' => "Hebei Harmony", 'short_description' => "The Great Wall, Great Food and ancient treasures in one of China's most underrated provinces.", 'internal_name' => "hebei_harmony", 'level' => "Moderate", 'price' => 1500], + ['length' => 8, 'name' => "Cantonese Charm", 'long_description' => 'Hebei is cool', 'short_description' => "Guangdong is known for it's big, global cities, but there is so much more to discover; including pristine natural beauty.", 'internal_name' => "cantonese_charm", 'level' => "Beginner", 'price' => 1000], + ['length' => 7, 'name' => "Fujianese Fantasy", 'long_description' => 'Hebei is cool', 'short_description' => "Experience fresh seafood in Xiamen, and then move rurally for an authentic dive into Hakka culture", 'internal_name' => "fujianese_fantasy", 'level' => "Beginner", 'price' => 1200], + ['length' => 10, 'name' => "Hebei Harmony", 'long_description' => 'Hebei is cool', 'short_description' => "The Great Wall, Great Food and ancient treasures in one of China's most underrated provinces.", 'internal_name' => "hebei_harmony", 'level' => "Moderate", 'price' => 1500], ]); diff --git a/resources/js/components/TourNavigator/TourOverviewActions.vue b/resources/js/components/TourNavigator/TourOverviewActions.vue new file mode 100644 index 0000000..0901c94 --- /dev/null +++ b/resources/js/components/TourNavigator/TourOverviewActions.vue @@ -0,0 +1,43 @@ + + + + + diff --git a/resources/js/components/TourNavigator/TourQuickFacts.vue b/resources/js/components/TourNavigator/TourQuickFacts.vue index b9cd11d..3830539 100644 --- a/resources/js/components/TourNavigator/TourQuickFacts.vue +++ b/resources/js/components/TourNavigator/TourQuickFacts.vue @@ -1,77 +1,159 @@ diff --git a/resources/js/components/dredgy/ButtonLink.vue b/resources/js/components/dredgy/ButtonLink.vue index 08740a0..7b43f22 100644 --- a/resources/js/components/dredgy/ButtonLink.vue +++ b/resources/js/components/dredgy/ButtonLink.vue @@ -7,7 +7,7 @@ defineProps({ diff --git a/resources/js/layouts/AppLayout.vue b/resources/js/layouts/AppLayout.vue index 23df63e..5f961ef 100644 --- a/resources/js/layouts/AppLayout.vue +++ b/resources/js/layouts/AppLayout.vue @@ -145,7 +145,10 @@ main{ display: flex; /* added */ flex-direction: column; /* keep */ flex: 1; - gap: 2em;/* keep */ +} + +main:not(:has(.no-gap)) { + gap: 2em; } /* Push the Footer (last child in main) to the bottom if content is short */ diff --git a/resources/js/pages/TourOverview.vue b/resources/js/pages/TourOverview.vue index ea36e31..aab7dc6 100644 --- a/resources/js/pages/TourOverview.vue +++ b/resources/js/pages/TourOverview.vue @@ -2,16 +2,16 @@ import { usePage } from "@inertiajs/vue3"; import AppLayout from "@/layouts/AppLayout.vue"; import TourOverviewSection from "./TourOverviewSection.vue"; -import type { Tour } from "@/types"; +import type {Tour, TourDay} from "@/types"; import TourQuickFacts from "@/components/TourNavigator/TourQuickFacts.vue"; import SectionTitle from "@/components/dredgy/SectionTitle.vue"; interface Properties { tour: Tour; - nextHref?: string | null; + tourDay: TourDay } -const { tour, nextHref } = usePage().props as unknown as Properties; +const { tour, tourDay} = usePage().props as unknown as Properties; defineOptions({ layout: AppLayout, @@ -19,18 +19,8 @@ defineOptions({ diff --git a/resources/js/pages/TourOverviewSection.vue b/resources/js/pages/TourOverviewSection.vue index 8f2085c..7162ac9 100644 --- a/resources/js/pages/TourOverviewSection.vue +++ b/resources/js/pages/TourOverviewSection.vue @@ -1,97 +1,300 @@