{{-- Reseller plan catalogue (doctrine v2). A plan is a MEMBERSHIP: a price, a period, the modules it includes and whether the reseller may connect their own SMM provider. No consumption is metered, so no quota column exists. --}}
@if ($canManage) @endif
@forelse ($plans as $plan) @php $f = $plan->planFeatures(); $lines = $f->highlights(); $onCount = $f->enabledModuleCount(); $totalCount = count($optionalModules); @endphp @empty @endforelse
{{ __('Plan') }} {{ __('Price') }} {{ __('Billing') }} {{ __('Own providers') }} {{ __('Catalogue') }} {{ __('Domains') }} {{ __('Modules') }} {{ __('Subscribers') }} {{ __('Public') }} {{ __('Status') }} {{ __('Action') }}
{{ $plan->name }}
{{ $plan->slug }} @if ($lines !== [])
    @foreach (array_slice($lines, 0, 3) as $line)
  • · {{ $line }}
  • @endforeach @if (count($lines) > 3)
  • {{ __('+:n more', ['n' => count($lines) - 3]) }}
  • @endif
@endif
{{ money($plan->price, $plan->currency) }} {{ __(ucfirst($plan->billing_period)) }} @if ($plan->trial_days > 0) {{ trans_choice('{1} :count-day trial|[2,*] :count-day trial', $plan->trial_days, ['count' => $plan->trial_days]) }} @endif @if ($f->ownProviders()) {{ __('Included') }} @else {{ __('Catalogue only') }} @endif @if ($f->hasCatalogMarkup()) {{ __('+:pct%', ['pct' => rtrim(rtrim(\App\Support\Money::round($f->catalogMarkupPercent(), 2), '0'), '.')]) }} @else {{ __('At your price') }} @endif @php $planDomains = $f->maxCustomDomains(); @endphp @if ($planDomains === 0) {{ __('Subdomain only') }} @elseif ($planDomains < 0) {{ __('Unlimited') }} @else {{ $planDomains }} @endif {{ $onCount }}/{{ $totalCount }} @if ($onCount === $totalCount) {{ __('All') }} @endif {{ number_format($plan->subscriptions_count) }} @if ($plan->is_public) @else @endif {{-- The @if must wrap the whole tag, never sit inside its attribute list: Blade's component parser stops recognising :active as a prop, so it reached the browser verbatim and Alpine tried to evaluate "$plan->status" as JavaScript on every page load. --}} @if ($canManage) @else @endif @if ($canManage)
@endif
{{-- ══ Create / edit plan ══ --}}
{{-- Header --}}
@error('name')

{{ $message }}

@enderror
@error('slug')

{{ $message }}

@enderror
{{-- ══ Price & period ══ --}}

{{ __('Membership price') }}

{{ __('What the reseller pays to use the platform — hosting, domain and system.') }}

@error('price')

{{ $message }}

@enderror

{{ __('0 = free / comp tier.') }}

{{ __('Must equal the owner base currency.') }}

{{ __('How often the membership is charged.') }}

{{ __('Past-due → suspend.') }}

{{-- ══ Supply: what the tier pays for your catalogue, and its own ══ --}}

{{ __('Supply') }}

{{ __('Every plan sells your catalogue. What changes per tier is the price they buy it at, and whether they may bring a supplier of their own.') }}

@error('catalog_markup_percent')

{{ $message }}

@enderror

{{ __('Added on top of YOUR sale price before the reseller sees it. 0 = they buy at your price. They are never shown a markup — it simply is the price of the service for them, and they add their own margin on top.') }}

@error('max_custom_domains')

{{ $message }}

@enderror

{{ __('How many domains of their own this tier may point at their panel. 0 = your platform subdomain only. -1 = unlimited. Each one is a vhost and a certificate your hosting serves.') }}

{{-- ══ Modules ══ --}}

{{ __('Modules included') }}

{{ __('Everything is included by default. Untick anything this tier should not get — there are no usage limits either way.') }}

@foreach ($optionalModules as $key => $module) @endforeach

{{ __('Always included (every plan):') }}

@foreach ($coreModules as $key => $module) {{ __($module[1]) }} @endforeach
{{-- ══ Client panel designs ══ --}}

{{ __('Client panel designs') }}

{{ __('The portal skins a reseller on this tier may offer their own clients. All included by default — untick one to keep it for higher tiers.') }}

@foreach ($clientTemplateOptions as $key => $tpl) @endforeach
{{-- ══ Landing designs ══ --}}

{{ __('Landing designs') }}

{{ __('The public landing skins a reseller on this tier may choose from. All included by default — untick one to keep it for higher tiers.') }}

@foreach ($landingTemplateOptions as $key => $tpl) @endforeach
{{-- ══ Highlights ══ --}}

{{ __('Highlights') }}

{{ __('The bullet lines shown on the plan card. Describe what they get — never a quota.') }}

@foreach ($highlights as $i => $line)
@endforeach