feat: revamp homepage layout to support dynamic landing and portal designs, enhancing user engagement with new sections for hero content, quick actions, services, features, testimonials, and a call-to-action
This commit is contained in:
@@ -1,12 +1,54 @@
|
||||
<div class="min-h-screen">
|
||||
<!-- Homepage-specific custom HTML -->
|
||||
@if(theme('custom_homepage_html'))
|
||||
<div class="custom-homepage-content">
|
||||
{!! theme('custom_homepage_html') !!}
|
||||
</div>
|
||||
@endif
|
||||
<!-- Hero Section -->
|
||||
<div class="relative overflow-hidden">
|
||||
@if(theme('homepage_layout', 'landing') === 'landing')
|
||||
<!-- Landing Page Layout -->
|
||||
|
||||
<!-- Custom HTML Section -->
|
||||
@if(theme('custom_homepage_html'))
|
||||
<div class="custom-homepage-content">
|
||||
{!! theme('custom_homepage_html') !!}
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<section class="relative isolate overflow-hidden bg-gradient-to-b from-background-primary via-background to-background-secondary/50 pt-18 pb-32 px-8">
|
||||
@if(theme('background_image_url'))
|
||||
<div class="background-image-layer"
|
||||
style="position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
min-height: 100%;
|
||||
background-image: url('{{ theme('background_image_url') }}');
|
||||
background-size: cover;
|
||||
background-position: center;
|
||||
background-repeat: no-repeat;
|
||||
background-attachment: scroll;
|
||||
opacity: {{ theme('background_image_opacity', 30) / 100 }};
|
||||
filter: blur({{ theme('background_image_blur', 5) }}px);
|
||||
z-index: -2;
|
||||
pointer-events: none;
|
||||
-webkit-mask-image: linear-gradient(to bottom, rgba(0,0,0,1) 0%, rgba(0,0,0,0) 75%);
|
||||
mask-image: linear-gradient(to bottom, rgba(0,0,0,1) 0%, rgba(0,0,0,0) 75%);
|
||||
-webkit-mask-repeat: no-repeat;
|
||||
mask-repeat: no-repeat;
|
||||
-webkit-mask-position: center;
|
||||
mask-position: center;">
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<svg class="absolute inset-0 -z-10 h-full w-full stroke-primary/15 [mask-image:radial-gradient(100%_100%_at_top_right,white,transparent)]" aria-hidden="true">
|
||||
<defs>
|
||||
<pattern id="grid-pattern" width="80" height="80" x="50%" y="-1" patternUnits="userSpaceOnUse">
|
||||
<path d="M.5 80V.5H80" fill="none" />
|
||||
</pattern>
|
||||
</defs>
|
||||
<rect width="100%" height="100%" strokeWidth="0" fill="url(#grid-pattern)" />
|
||||
</svg>
|
||||
|
||||
<div class="mt-20 container mx-auto px-4 lg:px-8">
|
||||
<div class="max-w-7xl lg:grid lg:grid-cols-12 lg:gap-x-8 lg:px-0">
|
||||
<div class="lg:col-span-7 lg:px-0 lg:pt-4">
|
||||
<!-- Hero Section -->
|
||||
<div class="relative overflow-hidden">
|
||||
<div class="container mx-auto px-4 py-20 md:py-24 relative z-10">
|
||||
<div class="text-center max-w-5xl mx-auto">
|
||||
<!-- Hero Badge -->
|
||||
@@ -543,7 +585,305 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="mt-16 mb-8">
|
||||
@else
|
||||
<!-- Portal Page Layout -->
|
||||
|
||||
<!-- Custom HTML Section -->
|
||||
@if(theme('custom_homepage_html'))
|
||||
<div class="custom-homepage-content">
|
||||
{!! theme('custom_homepage_html') !!}
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<!-- Compact Hero Section -->
|
||||
<section class="mt-20 relative py-16 border-b border-neutral">
|
||||
<div class="container mx-auto px-4">
|
||||
<div class="max-w-4xl mx-auto text-center">
|
||||
<div class="inline-flex items-center gap-2 bg-primary/10 border border-primary/20 rounded-full px-4 py-2 mb-6">
|
||||
<span class="relative flex h-2 w-2">
|
||||
<span class="animate-ping absolute inline-flex h-full w-full rounded-full bg-primary opacity-75"></span>
|
||||
<span class="relative inline-flex rounded-full h-2 w-2 bg-primary"></span>
|
||||
</span>
|
||||
<span class="text-sm font-semibold text-primary">{{ theme('homepage_hero_badge', '🚀 Welcome!') }}</span>
|
||||
</div>
|
||||
|
||||
<h1 class="text-4xl md:text-5xl font-bold text-color-base mb-4">
|
||||
{{ theme('homepage_hero_title1', 'The Best') }}
|
||||
<span class="bg-gradient-to-r from-primary to-secondary bg-clip-text text-transparent">
|
||||
{{ theme('homepage_hero_title2', 'Hosting') }}
|
||||
</span>
|
||||
</h1>
|
||||
|
||||
<p class="text-lg text-color-muted mb-8">
|
||||
{!! \Illuminate\Support\Str::markdown(theme('homepage_hero_desc', 'Experience next-gen game hosting with blazing-fast SSD performance, enterprise-grade security, and 24/7 expert support.')) !!}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Quick Actions Portal -->
|
||||
<section class="py-12 bg-background">
|
||||
<div class="container mx-auto px-4">
|
||||
<div class="grid grid-cols-2 md:grid-cols-4 gap-4">
|
||||
<!-- Buy Server -->
|
||||
<a href="{{ theme('buy_server_link', '#services') }}" class="group p-6 rounded-xl bg-gradient-to-br from-primary to-primary/80 text-white hover:shadow-xl hover:scale-105 transition-all duration-300">
|
||||
<div class="w-12 h-12 rounded-lg bg-white/20 flex items-center justify-center mb-4">
|
||||
<x-ri-server-fill class="h-6 w-6" />
|
||||
</div>
|
||||
<h3 class="font-bold text-lg mb-1">{{ theme('buy_server_title', 'Buy Server') }}</h3>
|
||||
<p class="text-sm text-white/80">{{ theme('buy_server_subtitle', 'Get started') }}</p>
|
||||
</a>
|
||||
|
||||
<!-- Help/Support -->
|
||||
<a href="{{ theme('help_link', '#') }}" target="_blank" class="group p-6 rounded-xl bg-gradient-to-br from-purple-500 to-purple-600 text-white hover:shadow-xl hover:scale-105 transition-all duration-300">
|
||||
<div class="w-12 h-12 rounded-lg bg-white/20 flex items-center justify-center mb-4">
|
||||
<x-ri-customer-service-line class="h-6 w-6" />
|
||||
</div>
|
||||
<h3 class="font-bold text-lg mb-1">{{ theme('help_title', 'Support') }}</h3>
|
||||
<p class="text-sm text-white/80">{{ theme('help_subtitle', '24/7 Help') }}</p>
|
||||
</a>
|
||||
|
||||
<!-- Login/Dashboard -->
|
||||
@guest
|
||||
<a href="{{ route('login') }}" class="group p-6 rounded-xl bg-gradient-to-br from-blue-500 to-blue-600 text-white hover:shadow-xl hover:scale-105 transition-all duration-300">
|
||||
<div class="w-12 h-12 rounded-lg bg-white/20 flex items-center justify-center mb-4">
|
||||
<x-ri-login-box-line class="h-6 w-6" />
|
||||
</div>
|
||||
<h3 class="font-bold text-lg mb-1">{{ theme('login_title', 'Login') }}</h3>
|
||||
<p class="text-sm text-white/80">{{ theme('login_subtitle', 'Access Panel') }}</p>
|
||||
</a>
|
||||
@else
|
||||
<a href="{{ route('dashboard') }}" class="group p-6 rounded-xl bg-gradient-to-br from-blue-500 to-blue-600 text-white hover:shadow-xl hover:scale-105 transition-all duration-300">
|
||||
<div class="w-12 h-12 rounded-lg bg-white/20 flex items-center justify-center mb-4">
|
||||
<x-ri-dashboard-fill class="h-6 w-6" />
|
||||
</div>
|
||||
<h3 class="font-bold text-lg mb-1">{{ theme('dashboard_title', 'Dashboard') }}</h3>
|
||||
<p class="text-sm text-white/80">{{ theme('dashboard_subtitle', 'Manage') }}</p>
|
||||
</a>
|
||||
@endguest
|
||||
|
||||
<!-- Documentation -->
|
||||
<a href="{{ theme('docs_link', '#') }}" target="_blank" class="group p-6 rounded-xl bg-gradient-to-br from-emerald-500 to-emerald-600 text-white hover:shadow-xl hover:scale-105 transition-all duration-300">
|
||||
<div class="w-12 h-12 rounded-lg bg-white/20 flex items-center justify-center mb-4">
|
||||
<x-ri-book-open-line class="h-6 w-6" />
|
||||
</div>
|
||||
<h3 class="font-bold text-lg mb-1">{{ theme('docs_title', 'Docs') }}</h3>
|
||||
<p class="text-sm text-white/80">{{ theme('docs_subtitle', 'Learn more') }}</p>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Stats Compact -->
|
||||
<section class="py-12 bg-background-secondary/50">
|
||||
<div class="container mx-auto px-4">
|
||||
<div class="grid grid-cols-2 md:grid-cols-4 gap-6">
|
||||
<div class="text-center">
|
||||
<div class="text-3xl font-bold text-success mb-1">99.9%</div>
|
||||
<div class="text-sm text-color-muted">{{ theme('stats_uptime_title', 'Uptime') }}</div>
|
||||
</div>
|
||||
<div class="text-center">
|
||||
<div class="text-3xl font-bold text-primary mb-1">24/7</div>
|
||||
<div class="text-sm text-color-muted">{{ theme('stats_support_title', 'Support') }}</div>
|
||||
</div>
|
||||
<div class="text-center">
|
||||
<div class="text-3xl font-bold text-purple-500 mb-1">{{ number_format(\App\Models\User::count()) }}+</div>
|
||||
<div class="text-sm text-color-muted">{{ theme('stats_users_title', 'Users') }}</div>
|
||||
</div>
|
||||
<div class="text-center">
|
||||
<div class="text-3xl font-bold text-orange-500 mb-1">{{ number_format(\App\Models\Service::where('status', 'active')->count()) }}+</div>
|
||||
<div class="text-sm text-color-muted">{{ theme('stats_servers_title', 'Servers') }}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Services Grid (Portal Style) -->
|
||||
<section id="services" class="py-16 bg-background">
|
||||
<div class="container mx-auto px-4">
|
||||
<div class="mb-12">
|
||||
<h2 class="text-3xl font-bold text-color-base mb-2">
|
||||
{{ theme('services_title', 'Our Services') }}
|
||||
</h2>
|
||||
<p class="text-color-muted">
|
||||
{{ theme('services_subtitle', 'Select a service to get started') }}
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="grid md:grid-cols-2 lg:grid-cols-4 gap-6">
|
||||
@foreach ($categories as $category)
|
||||
<a href="{{ route('category.show', ['category' => $category->slug]) }}" wire:navigate class="group block p-6 rounded-xl bg-background-secondary border border-neutral hover:border-primary/50 hover:shadow-lg transition-all duration-300">
|
||||
@if ($category->image)
|
||||
<div class="w-16 h-16 rounded-lg overflow-hidden mb-4">
|
||||
<img src="{{ Storage::url($category->image) }}" alt="{{ $category->name }}" class="w-full h-full object-cover">
|
||||
</div>
|
||||
@else
|
||||
<div class="w-16 h-16 rounded-lg bg-primary/10 flex items-center justify-center mb-4">
|
||||
<x-ri-server-line class="h-8 w-8 text-primary" />
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<h3 class="text-lg font-bold text-color-base mb-2 group-hover:text-primary transition-colors">
|
||||
{{ $category->name }}
|
||||
</h3>
|
||||
|
||||
@if(theme('show_category_description', true))
|
||||
<div class="prose dark:prose-invert prose-sm text-color-muted mb-3 line-clamp-2">
|
||||
{!! $category->description !!}
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<div class="flex items-center text-primary text-sm font-semibold">
|
||||
<span>{{ __('common.button.view_all') }}</span>
|
||||
<x-ri-arrow-right-line class="h-4 w-4 ml-1 group-hover:translate-x-1 transition-transform" />
|
||||
</div>
|
||||
</a>
|
||||
@endforeach
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Features Compact Grid -->
|
||||
<section class="py-16 bg-background-secondary/30">
|
||||
<div class="container mx-auto px-4">
|
||||
<div class="mb-12">
|
||||
<h2 class="text-3xl font-bold text-color-base mb-2">
|
||||
{{ theme('features_title', 'Why Choose Us') }}
|
||||
</h2>
|
||||
<p class="text-color-muted">
|
||||
{{ theme('features_subtitle', 'Premium features included') }}
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="grid md:grid-cols-2 lg:grid-cols-3 gap-6">
|
||||
<div class="flex gap-4 p-6 rounded-xl bg-background border border-neutral">
|
||||
<div class="w-10 h-10 rounded-lg bg-primary/10 flex items-center justify-center flex-shrink-0">
|
||||
<x-ri-shield-check-line class="h-5 w-5 text-primary" />
|
||||
</div>
|
||||
<div>
|
||||
<h3 class="font-bold text-color-base mb-1">{{ theme('feature_1_title', 'Secure') }}</h3>
|
||||
<p class="text-sm text-color-muted">{{ theme('feature_1_desc', 'Advanced security') }}</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="flex gap-4 p-6 rounded-xl bg-background border border-neutral">
|
||||
<div class="w-10 h-10 rounded-lg bg-secondary/10 flex items-center justify-center flex-shrink-0">
|
||||
<x-ri-flashlight-line class="h-5 w-5 text-secondary" />
|
||||
</div>
|
||||
<div>
|
||||
<h3 class="font-bold text-color-base mb-1">{{ theme('feature_3_title', 'Fast Setup') }}</h3>
|
||||
<p class="text-sm text-color-muted">{{ theme('feature_3_desc', 'Quick deployment') }}</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="flex gap-4 p-6 rounded-xl bg-background border border-neutral">
|
||||
<div class="w-10 h-10 rounded-lg bg-warning/10 flex items-center justify-center flex-shrink-0">
|
||||
<x-ri-cpu-line class="h-5 w-5 text-warning" />
|
||||
</div>
|
||||
<div>
|
||||
<h3 class="font-bold text-color-base mb-1">{{ theme('feature_4_title', 'Performance') }}</h3>
|
||||
<p class="text-sm text-color-muted">{{ theme('feature_4_desc', 'High-speed servers') }}</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="flex gap-4 p-6 rounded-xl bg-background border border-neutral">
|
||||
<div class="w-10 h-10 rounded-lg bg-info/10 flex items-center justify-center flex-shrink-0">
|
||||
<x-ri-global-line class="h-5 w-5 text-info" />
|
||||
</div>
|
||||
<div>
|
||||
<h3 class="font-bold text-color-base mb-1">{{ theme('feature_5_title', 'Global') }}</h3>
|
||||
<p class="text-sm text-color-muted">{{ theme('feature_5_desc', 'Worldwide coverage') }}</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="flex gap-4 p-6 rounded-xl bg-background border border-neutral">
|
||||
<div class="w-10 h-10 rounded-lg bg-success/10 flex items-center justify-center flex-shrink-0">
|
||||
<x-ri-customer-service-line class="h-5 w-5 text-success" />
|
||||
</div>
|
||||
<div>
|
||||
<h3 class="font-bold text-color-base mb-1">24/7 Support</h3>
|
||||
<p class="text-sm text-color-muted">Always available</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="flex gap-4 p-6 rounded-xl bg-background border border-neutral">
|
||||
<div class="w-10 h-10 rounded-lg bg-error/10 flex items-center justify-center flex-shrink-0">
|
||||
<x-ri-line-chart-line class="h-5 w-5 text-error" />
|
||||
</div>
|
||||
<div>
|
||||
<h3 class="font-bold text-color-base mb-1">{{ theme('feature_6_title', 'Smart') }}</h3>
|
||||
<p class="text-sm text-color-muted">{{ theme('feature_6_desc', 'AI optimization') }}</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Testimonials Compact -->
|
||||
<section class="py-16 bg-background">
|
||||
<div class="container mx-auto px-4">
|
||||
<div class="mb-12">
|
||||
<h2 class="text-3xl font-bold text-color-base mb-2">
|
||||
{{ theme('testimonials_title', 'Testimonials') }}
|
||||
</h2>
|
||||
<p class="text-color-muted">
|
||||
{{ theme('testimonials_subtitle', 'What our customers say') }}
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="grid md:grid-cols-3 gap-6">
|
||||
@for ($i = 1; $i <= 3; $i++)
|
||||
<div class="p-6 rounded-xl bg-background-secondary border border-neutral">
|
||||
<div class="flex items-center gap-3 mb-4">
|
||||
<div class="w-10 h-10 rounded-full bg-gradient-to-br from-primary to-primary/60 flex items-center justify-center text-white font-bold text-sm">
|
||||
{{ substr(theme("testimonial_{$i}_name", 'User'), 0, 1) }}
|
||||
</div>
|
||||
<div>
|
||||
<h4 class="font-semibold text-color-base text-sm">{{ theme("testimonial_{$i}_name", 'Customer') }}</h4>
|
||||
<p class="text-xs text-color-muted">{{ theme("testimonial_{$i}_role", 'Role') }}</p>
|
||||
</div>
|
||||
</div>
|
||||
<p class="text-sm text-color-muted italic mb-3">"{{ theme("testimonial_{$i}_quote", 'Great service!') }}"</p>
|
||||
<div class="flex gap-1">
|
||||
@for ($j = 0; $j < 5; $j++)
|
||||
<x-ri-star-fill class="h-3 w-3 text-warning" />
|
||||
@endfor
|
||||
</div>
|
||||
</div>
|
||||
@endfor
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- CTA Compact -->
|
||||
<section class="py-16 bg-gradient-to-r from-primary/10 to-secondary/10">
|
||||
<div class="container mx-auto px-4">
|
||||
<div class="max-w-xl mx-auto text-center">
|
||||
<h2 class="text-3xl font-bold mb-4">
|
||||
<span class="bg-gradient-to-r from-primary to-secondary bg-clip-text text-transparent">
|
||||
{{ theme('cta_title', 'Ready to Start?') }}
|
||||
</span>
|
||||
</h2>
|
||||
<p class="text-color-muted mb-8">
|
||||
{{ theme('cta_subtitle', 'Host your Minecraft server with us today and experience unparalleled performance and support.') }}
|
||||
</p>
|
||||
<div class="flex gap-4 justify-center">
|
||||
<a href="#services" class="inline-flex items-center gap-2 rounded-xl bg-primary px-6 py-3 text-sm font-semibold text-white hover:bg-primary/90 transition-all">
|
||||
<span>{{ theme('cta_primary_text', 'Get Started') }}</span>
|
||||
<x-ri-arrow-right-line class="h-4 w-4" />
|
||||
</a>
|
||||
<a href="{{ theme('help_link', '#') }}" class="inline-flex items-center gap-2 rounded-xl bg-background-secondary border border-neutral px-6 py-3 text-sm font-semibold text-color-base hover:border-primary/50 transition-all">
|
||||
<span>{{ theme('cta_secondary_text', 'Learn More') }}</span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
@endif
|
||||
|
||||
<!-- Hook Section -->
|
||||
<div class="container mx-auto my-12 px-10">
|
||||
{!! hook('pages.home') !!}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user