From 502f0070481967b2b023b3ade36667ec8941ee8f Mon Sep 17 00:00:00 2001 From: Yoga Pangestu Date: Sun, 14 Jun 2026 01:57:03 +0700 Subject: [PATCH] feat: replace welcome page with new home page and add HomeController --- app/Http/Controllers/HomeController.php | 58 + resources/css/app.css | 2 + resources/js/components/LoginForm.vue | 9 +- resources/js/pages/Home.vue | 1425 +++++++++++++++++++++++ resources/js/pages/Welcome.vue | 413 ------- routes/web.php | 3 +- vite.config.ts | 2 +- 7 files changed, 1493 insertions(+), 419 deletions(-) create mode 100644 app/Http/Controllers/HomeController.php create mode 100644 resources/js/pages/Home.vue delete mode 100644 resources/js/pages/Welcome.vue diff --git a/app/Http/Controllers/HomeController.php b/app/Http/Controllers/HomeController.php new file mode 100644 index 0000000..97bbe62 --- /dev/null +++ b/app/Http/Controllers/HomeController.php @@ -0,0 +1,58 @@ +get(['id', 'name', 'slug']); + + $products = Product::where('is_active', true) + ->with([ + 'categories', + 'variants' => fn ($query) => $query + ->with(['prices' => fn ($query) => $query->orderBy('type'), 'media']) + ->orderBy('created_at'), + ]) + ->get(); + + $products = $products->map(function ($product) { + $product->variants->each(function ($variant) { + $variant->setAttribute('images', MediaPresenter::collection($variant, 'images')); + }); + + return $product; + }); + + $configuration = SystemConfiguration::instance(); + $logo = MediaPresenter::first($configuration, 'logo'); + $logoUrl = $logo['url'] ?? null; + + $settings = app(SystemSettings::class); + $socialSettings = app(SocialMediaSettings::class); + + return Inertia::render('Home', [ + 'categories' => $categories, + 'products' => $products, + 'appName' => $settings->app_name ?? 'DST Collection', + 'aboutApp' => $settings->about_app ?? '', + 'contactEmail' => $settings->email ?? '', + 'contactPhone' => $settings->phone ?? '', + 'contactAddress' => $settings->address ?? '', + 'logoUrl' => $logoUrl, + 'instagramUrl' => $socialSettings->instagram_url ?? null, + 'facebookUrl' => $socialSettings->facebook_url ?? null, + 'tiktokUrl' => $socialSettings->tiktok_url ?? null, + ]); + } +} diff --git a/resources/css/app.css b/resources/css/app.css index f438e1f..7b8d210 100644 --- a/resources/css/app.css +++ b/resources/css/app.css @@ -54,6 +54,8 @@ @theme inline { --radius-4xl: calc(var(--radius) * 2.6); --font-heading: var(--font-sans); + --font-serif: + 'Cormorant Garamond', Georgia, Cambria, 'Times New Roman', Times, serif; } :root { diff --git a/resources/js/components/LoginForm.vue b/resources/js/components/LoginForm.vue index 0587cbb..823314a 100644 --- a/resources/js/components/LoginForm.vue +++ b/resources/js/components/LoginForm.vue @@ -1,4 +1,9 @@ + + + + diff --git a/resources/js/pages/Welcome.vue b/resources/js/pages/Welcome.vue deleted file mode 100644 index 4bc1e52..0000000 --- a/resources/js/pages/Welcome.vue +++ /dev/null @@ -1,413 +0,0 @@ - - - diff --git a/routes/web.php b/routes/web.php index c7029ed..93a65f2 100644 --- a/routes/web.php +++ b/routes/web.php @@ -27,10 +27,11 @@ use App\Http\Controllers\Admin\System\SettingController; use App\Http\Controllers\Auth\LoginController; use App\Http\Controllers\Auth\LogoutController; +use App\Http\Controllers\HomeController; use App\Http\Controllers\PushSubscriptionController; use Illuminate\Support\Facades\Route; -Route::inertia('/', 'Welcome')->name('home'); +Route::get('/', [HomeController::class, 'index'])->name('home'); Route::middleware('guest')->group(function () { Route::get('/auth/login', [LoginController::class, 'index'])->name('login'); diff --git a/vite.config.ts b/vite.config.ts index 3b01ecf..4408dbf 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -40,7 +40,7 @@ export default defineConfig(({ mode }) => { plugins: [ laravel({ input: ['resources/css/app.css', 'resources/js/app.ts'], - refresh: true, + refresh: false, fonts: [ bunny('Instrument Sans', { weights: [400, 500, 600],