feat: enhance homepage layout with new sections for custom HTML, quick actions, services, features, testimonials, and a call-to-action, improving user engagement and overall experience

This commit is contained in:
2025-12-04 09:42:46 -05:00
parent 14af0a0c73
commit af4be87a2d

View File

@@ -10,8 +10,42 @@
@endif
<!-- Hero Section -->
<div class="relative overflow-hidden">
<div class="container mx-auto px-4 py-20 md:py-24 relative z-10">
<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 relative z-10">
<div class="text-center max-w-5xl mx-auto">
<!-- Hero Badge -->
<div class="inline-flex items-center gap-2 px-3 py-1.5 rounded-full border border-primary/30 bg-primary/10 text-primary text-xs font-semibold mb-6 animate-fade-in-up">
@@ -547,6 +581,304 @@
</div>
</div>
@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="mt-16 mb-8">
{!! hook('pages.home') !!}
</div>