@extends('marketing.layout') @section('title', __('marketing.light_page_title', ['app' => $appName])) @section('description', __('marketing.light_page_description')) @push('head') {{-- ?v= busts the browser + CDN cache automatically on every CSS edit. Without this, the asset() helper renders a stable URL with no version hash, so static-file caches happily serve a stale copy even after the file changed on disk — which was the symptom of "I pulled the latest commit but the page still looks like the previous version". filemtime() returns the unix timestamp the file was last modified, so the query string changes the moment the deploy lands. --}} @endpush @section('content') @php // All text fields resolve via LandingContent::t() so the current // locale's translation (if any) overrides English automatically. $heroEyebrow = $content->t('hero_eyebrow') ?: __('marketing.light.hero_eyebrow'); $heroHeadline = $content->t('hero_headline') ?: __('marketing.light.hero_headline'); $heroHighlight = $content->t('hero_headline_highlight') ?: __('marketing.light.hero_highlight'); $heroSubtext = $content->t('hero_subtext') ?: __('marketing.light.hero_subtext'); $heroCtaLabel = $content->t('hero_cta_label') ?: __('marketing.light.hero_cta', ['days' => $trialDays]); $heroNote = $content->t('hero_note') ?: __('marketing.light.hero_note'); $featuresHeadline = $content->t('features_headline') ?: __('marketing.light.features_headline'); $featuresSubtext = $content->t('features_subtext') ?: __('marketing.light_features_subtext'); $defaultFeatures = [ ['title' => __('marketing.light_feat1_title'), 'body' => __('marketing.light_feat1_body')], ['title' => __('marketing.light_feat2_title'), 'body' => __('marketing.light_feat2_body')], ['title' => __('marketing.light_feat3_title'), 'body' => __('marketing.light_feat3_body')], ['title' => __('marketing.light_feat4_title'), 'body' => __('marketing.light_feat4_body')], ['title' => __('marketing.light_feat5_title'), 'body' => __('marketing.light_feat5_body')], ['title' => __('marketing.light_feat6_title'), 'body' => __('marketing.light_feat6_body')], ['title' => __('marketing.modern_feat7_title'), 'body' => __('marketing.modern_feat7_body')], ['title' => __('marketing.light_feat8_title'), 'body' => __('marketing.light_feat8_body')], ['title' => __('marketing.light_feat9_title'), 'body' => __('marketing.light_feat9_body')], ]; $features = ! empty($content->features) ? $content->features : $defaultFeatures; $pricingHeadline = $content->t('pricing_headline') ?: __('marketing.light.pricing_headline'); $pricingSubtext = $content->t('pricing_subtext') ?: __('marketing.light_pricing_subtext'); $ctaHeadline = $content->t('cta_headline') ?: __('marketing.light.cta_headline'); $ctaSubtext = $content->t('cta_subtext') ?: __('marketing.light_cta_subtext'); @endphp {{-- ── Hero ─────────────────────────────────────────────────── --}}
{{ $heroEyebrow }}

{{ $heroHeadline }} {{ $heroHighlight }}

{{ $heroSubtext }}

{{ $heroNote }}

{{-- ── Features ──────────────────────────────────────────── --}}
{{ __('marketing.light_everything_included') }}

{{ $featuresHeadline }}

{{ $featuresSubtext }}

@foreach($features as $feature)

{{ $feature['title'] ?? '' }}

{{ $feature['body'] ?? '' }}

@endforeach
{{-- ── Stats ────────────────────────────────────────────── --}}
{{ __('marketing.light_stat1_n') }}
{{ __('marketing.light_stat1_l') }}
{{ __('marketing.light_stat2_n') }}
{{ __('marketing.light_stat2_l') }}
{{ __('marketing.light_stat3_l') }}
{{ __('marketing.light_stat4_n') }}
{{ __('marketing.light_stat4_l') }}
{{-- ── Pricing ──────────────────────────────────────────── --}} @if($plans && count($plans) > 0)
{{ __('marketing.light_transparent_pricing') }}

{{ $pricingHeadline }}

{{ $pricingSubtext }}

@foreach($plans as $key => $plan) @php $isPop = $plan['highlight'] ?? false; @endphp
@if($isPop)
{{ __('marketing.light_most_popular') }}
@endif

{{ $plan['name'] }}

{{ $plan['description'] ?? '' }}

@php // Translator-first interval label so "/month" respects tenant locale. $mdIntervalSlug = $plan['interval'] ?? 'month'; $mdKey = 'marketing.interval_' . $mdIntervalSlug; $mdTrans = __($mdKey); $mdIntervalLbl = (is_string($mdTrans) && $mdTrans !== $mdKey) ? $mdTrans : __('marketing.light_per_month'); @endphp
{{ \App\Support\Currency::format((float) $plan['price'], $plan['currency'] ?? \App\Support\Currency::default()) }} / {{ $mdIntervalLbl }}
    @foreach(array_slice($plan['features'] ?? [], 0, 6) as $feat => $on) @if($on) @php // Translator-first feature label so the marketing landing // respects locale. Reuses the billing_portal feature keys. $mkFeatKey = 'filament/billing_portal.feature_' . $feat; $mkFeatTrans = __($mkFeatKey); $mkFeatLabel = is_string($mkFeatTrans) && $mkFeatTrans !== $mkFeatKey ? $mkFeatTrans : ucwords(str_replace('_', ' ', (string) $feat)); @endphp
  • {{ $mkFeatLabel }}
  • @endif @endforeach
@if($canSignUp) @php $modernIsPaid = ((float) ($plan['price'] ?? 0)) > 0; @endphp {{ $modernIsPaid ? __('marketing.light_choose_plan') : __('marketing.light_start_trial') }} @else {{ __('marketing.light_signin') }} @endif
@endforeach
@endif {{-- ── Closing CTA ─────────────────────────────────────── --}}

{{ $ctaHeadline }}

{{ $ctaSubtext }}

@if($canSignUp) {{ __('marketing.light_cta_create') }} @else {{ __('marketing.light_signin') }} @endif
{{-- Footer removed: the marketing.layout already renders its own .foot below @yield('content'). Having both produced a duplicated footer. --}} @endsection