{{-- 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. --}}
| {{ __('Plan') }} | {{ __('Price') }} | {{ __('Billing') }} | {{ __('Own providers') }} | {{ __('Catalogue') }} | {{ __('Domains') }} | {{ __('Modules') }} | {{ __('Subscribers') }} | {{ __('Public') }} | {{ __('Status') }} | {{ __('Action') }} |
|---|---|---|---|---|---|---|---|---|---|---|
|
{{ $plan->name }}
{{ $plan->slug }}
@if ($lines !== [])
|
{{ 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)
|
@if ($canManage)
|
{{ $message }}
@enderror{{ $message }}
@enderror{{ __('What the reseller pays to use the platform — hosting, domain and system.') }}
{{ $message }}
@enderror{{ __('0 = free / comp tier.') }}
{{ __('Must equal the owner base currency.') }}
{{ __('How often the membership is charged.') }}
{{ __('Past-due → suspend.') }}
{{ __('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.') }}
{{ $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.') }}
{{ $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.') }}
{{ __('Everything is included by default. Untick anything this tier should not get — there are no usage limits either way.') }}
{{ __('Always included (every plan):') }}
{{ __('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.') }}
{{ __('The public landing skins a reseller on this tier may choose from. All included by default — untick one to keep it for higher tiers.') }}
{{ __('The bullet lines shown on the plan card. Describe what they get — never a quota.') }}