{{-- Static styles live in public/css/views/filament/pages/subscription-required.css. DYNAMIC values kept inline: plan grid column count, plan card border highlight, feature-check icon color, payment-button gateway-position colors. --}}
{{-- Status banner --}}

{{ __('filament/subscription_required.current_status_prefix') }} {{ $statusLabel }}

{{ $this->getSubheading() }}

{{-- Plan cards — grid column count is dynamic --}} @if($plans && count($plans) > 0)
@foreach($plans as $key => $plan) {{-- plan card border is dynamic (highlights recommended plan) --}}
@if($plan['highlight'] ?? false) @endif

{{ $plan['name'] }}

{{ $plan['description'] }}

@php // Translator-first interval label so non-English locales render // "/month" "/year" etc. instead of the raw slug stored in // config/plans.php. Falls through to the raw value for any // tenant-custom interval ("quarter", etc.) we haven't shipped a key for. $intervalSlug = $plan['interval'] ?? 'month'; $intervalKey = 'filament/subscription_required.interval_' . $intervalSlug; $intervalTrans = __($intervalKey); $intervalLabel = (is_string($intervalTrans) && $intervalTrans !== $intervalKey) ? $intervalTrans : $intervalSlug; @endphp
{{ \App\Support\Currency::format((float) ($plan['price'] ?? 0), $plan['currency'] ?? \App\Support\Currency::default()) }} {{ __('filament/subscription_required.price_per_interval', ['interval' => $intervalLabel]) }}
    @php $limits = $plan['limits'] ?? []; $features = $plan['features'] ?? []; @endphp
  • {{ $limits['max_seats'] === -1 ? __('filament/subscription_required.seats_unlimited') : __('filament/subscription_required.seats_count', ['count' => $limits['max_seats']]) }}
  • {{ $limits['max_leads'] === -1 ? __('filament/subscription_required.leads_unlimited') : __('filament/subscription_required.leads_count', ['count' => number_format($limits['max_leads'])]) }}
  • {{ $limits['max_forms'] === -1 ? __('filament/subscription_required.forms_unlimited') : __('filament/subscription_required.forms_count', ['count' => $limits['max_forms']]) }}
  • {{-- icon fill is dynamic (green when enabled, grey when not) --}}
  • {{ __('filament/subscription_required.feature_integrations') }}
  • {{ __('filament/subscription_required.feature_api_access') }}
  • {{ __('filament/subscription_required.feature_custom_domain') }}
@php $gateways = app(\App\Billing\PaymentGatewayManager::class)->enabled(); @endphp @if(count($gateways))
@foreach($gateways as $gid => $gw) {{-- button colors vary by gateway loop position + plan highlight (dynamic) --}} {{ __('filament/subscription_required.pay_with_label', ['gateway' => $gw->label()]) }} @endforeach
@else {{-- Sales-CTA background varies with plan highlight (dynamic). Mailto subject routes through __() so non-English locales get a localised "Upgrade to " subject line. --}} {{ __('filament/subscription_required.contact_sales_btn', ['plan' => $plan['name']]) }} @endif
@endforeach
@endif {{-- Logout option --}}
{{ __('filament/subscription_required.switch_accounts_label') }}
@csrf