Unlock Your Full Potential
Choose the plan that fits your ambition. From hobbyists to enterprises, we have the right tools for you.
{{-- Premium Monthly/Yearly Toggle --}}
@php
// AUTO-FETCH: Ensure plans are available even if controller doesn't pass them
if (!isset($plans)) {
$plans = \App\Modules\CustomerSubscription\Models\CustomerPlan::where('is_active', true)->orderBy('price')->get();
}
$discount = (float) setting('yearly_subscription_discount', 20);
@endphp
@foreach($plans as $plan)
@php
$isHighlighted = (bool) $plan->highlight_plan;
@endphp
@if($plan->badge || $isHighlighted)
{{ $plan->badge ?: 'Most Popular' }}
@endif
{{ $plan->name }}
{{ $plan->short_description ?: ($isHighlighted ? 'Professional access' : 'Casual access') }}
${{ number_format($plan->price, 0) }}
/mo
@php
$yearlyPrice = $plan->price * 12 * (1 - ($discount / 100));
@endphp
${{ number_format($yearlyPrice / 12, 0) }}
/mo
Billed ${{ number_format($yearlyPrice, 0) }} Yearly
{{-- Specs Section --}}
Downloads
{{ $plan->unlimited_downloads ? 'Unlimited Access' : $plan->monthly_download_limit . ' Items / mo' }}
Security
{{ $plan->can_access_premium ? 'Premium Assets' : 'Standard Library' }}
Usage Limit
{{ $plan->daily_download_limit ?: 'No Daily' }} Cap Limit
{{-- High-End Comparison Perks (Smart Parser - Maximum Visibility) --}}
@php
// 1. Get the Master List from Settings (Using CORRECT Key)
$masterRaw = setting('global_subscription_features', '[]');
$masterFeatures = [];
if (!empty($masterRaw)) {
if (is_array($masterRaw)) {
$masterFeatures = $masterRaw;
} elseif (is_string($masterRaw)) {
// Try JSON (Controller saves it as JSON)
$decoded = json_decode($masterRaw, true);
if (is_array($decoded)) {
$masterFeatures = $decoded;
} else {
// Fallback split
$masterFeatures = preg_split('/[\n\r,]+/', $masterRaw, -1, PREG_SPLIT_NO_EMPTY);
}
}
}
// 2. Get this Plan's specific features
$planFeatures = $plan->features_list;
if (is_string($planFeatures)) {
$planFeatures = json_decode($planFeatures, true) ?? preg_split('/[\n\r,]+/', $planFeatures, -1, PREG_SPLIT_NO_EMPTY);
}
if (!is_array($planFeatures)) $planFeatures = [];
// Normalizing for comparison
$normalizedPlanFeatures = array_map(function($f) { return trim(strtolower($f)); }, $planFeatures);
$masterFeatures = array_map('trim', $masterFeatures);
@endphp
@if(!empty($masterFeatures))
@php
// Smart Sorting: Enabled at the top, Disabled at the bottom
$enabledList = [];
$disabledList = [];
foreach($masterFeatures as $feature) {
if (empty(trim($feature))) continue;
if (in_array(strtolower(trim($feature)), $normalizedPlanFeatures)) {
$enabledList[] = trim($feature);
} else {
$disabledList[] = trim($feature);
}
}
$sortedFeatures = array_merge($enabledList, $disabledList);
@endphp
Plan Privileges
@foreach($sortedFeatures as $feature)
@php
$isEnabled = in_array(strtolower($feature), $normalizedPlanFeatures);
@endphp
@if($isEnabled)
@else
@endif
{{ $feature }}
@endforeach
@endif
@endforeach