@extends('front-end.layout') @section('title') {{ get_label('pricing_plans', 'Pricing Plans') }} @endsection @section('content')
pattern-lines
{{ get_label('pricing', 'Pricing') }}

{{ get_label('see_our_pricing', 'See our pricing') }}

{{ get_label('seePricingDesc', 'You have Free Unlimited Updates and Premium Support on each package.') }}

@if ($plans !== null)
@php // Check if there are plans with prices for each frequency or free plans $hasMonthlyPlans = $plans->where('monthly_price', '>', 0)->count() > 0 || $plans->where('plan_type', 'free')->count() > 0; $hasYearlyPlans = $plans->where('yearly_price', '>', 0)->count() > 0 || $plans->where('plan_type', 'free')->count() > 0; $hasLifetimePlans = $plans->where('lifetime_price', '>', 0)->count() > 0 || $plans->where('plan_type', 'free')->count() > 0; // Count how many tabs we have $tabCount = ($hasMonthlyPlans ? 1 : 0) + ($hasYearlyPlans ? 1 : 0) + ($hasLifetimePlans ? 1 : 0); // Set default active tab $activeTab = $hasMonthlyPlans ? 'monthly' : ($hasYearlyPlans ? 'yearly' : 'lifetime'); @endphp @if ($tabCount > 1)
@endif
@if ($hasMonthlyPlans)
@foreach ($plans->where('monthly_price', '>', 0)->merge($plans->where('plan_type', 'free'))->sortBy(function ($plan) { return $plan->plan_type === 'free' ? 0 : 1; })->unique('id') as $index => $plan) @php $gradientIndex = $index % 3; @endphp
{{ $plan->name }}

@if ($plan->monthly_discounted_price > 0 && $plan->monthly_discounted_price < $plan->monthly_price) {{ format_currency($plan->monthly_price) }} {{ format_currency($plan->monthly_discounted_price) }} / {{ get_label('monthly_price', 'Monthly Price') }} @else {{ format_currency($plan->monthly_price) }} / {{ get_label('monthly_price', 'Monthly Price') }} @endif

{{ $plan->description }}

@php $gradientIndex = $index % 3; @endphp @if ($plan->monthly_price == 0) {{ get_label('buy_now', 'Buy now') }} @else {{ get_label('buy_now', 'Buy now') }} @endif

  • {{ get_label('max_projects', 'Max Projects') }}: {!! $plan->max_projects == -1 ? 'Unlimited' : '' . $plan->max_projects . '' !!}
  • {{ get_label('max_clients', 'Max Clients') }}: {!! $plan->max_clients == -1 ? 'Unlimited' : '' . $plan->max_clients . '' !!}
  • {{ get_label('max_team_members', 'Max Team Members') }}: {!! $plan->max_team_members == -1 ? 'Unlimited' : '' . $plan->max_team_members . '' !!}
  • {{ get_label('max_workspaces', 'Max Workspaces') }}: {!! $plan->max_worksapces == -1 ? 'Unlimited' : '' . $plan->max_worksapces . '' !!}
  • @if ($plan->modules)
  • {{ get_label('modules', 'Modules') }}
      @php $modules = json_decode($plan->modules); $checkedModules = []; $uncheckedModules = []; foreach (config('taskify.modules') as $moduleName => $moduleData) { $included = in_array($moduleName, $modules); if ($included) { $checkedModules[] = [ 'name' => $moduleName, 'icon' => $moduleData['icon'], 'included' => true, ]; } else { $uncheckedModules[] = [ 'name' => $moduleName, 'icon' => $moduleData['icon'], 'included' => false, ]; } } $sortedModules = array_merge($checkedModules, $uncheckedModules); @endphp @foreach ($sortedModules as $module) @php $iconClass = $module['included'] ? 'fa-check' : 'fa-times text-danger'; $iconColorClass = $module['included'] ? "module-icon-included-monthly-{$gradientIndex}" : 'module-icon-excluded'; @endphp
    • {{ ucfirst($module['name']) }}
    • @endforeach
  • @endif
@endforeach
@endif @if ($hasYearlyPlans)
@foreach ($plans->where('yearly_price', '>', 0)->merge($plans->where('plan_type', 'free'))->sortBy(function ($plan) { return $plan->plan_type === 'free' ? 0 : 1; })->unique('id') as $index => $plan) @php $gradientIndex = $index % 3; @endphp
{{ $plan->name }}

@if ($plan->yearly_discounted_price > 0 && $plan->yearly_discounted_price < $plan->yearly_price) {{ format_currency($plan->yearly_price) }} {{ format_currency($plan->yearly_discounted_price) }} / {{ get_label('yearly_price', 'Yearly Price') }} @else {{ format_currency($plan->yearly_price) }} / {{ get_label('yearly_price', 'Yearly Price') }} @endif

{{ $plan->description }}

@php $gradientIndex = $index % 3; @endphp @if ($plan->monthly_price == 0) {{ get_label('buy_now', 'Buy now') }} @else {{ get_label('buy_now', 'Buy now') }} @endif

  • {{ get_label('max_projects', 'Max Projects') }}: {!! $plan->max_projects == -1 ? 'Unlimited' : '' . $plan->max_projects . '' !!}
  • {{ get_label('max_clients', 'Max Clients') }}: {!! $plan->max_clients == -1 ? 'Unlimited' : '' . $plan->max_clients . '' !!}
  • {{ get_label('max_team_members', 'Max Team Members') }}: {!! $plan->max_team_members == -1 ? 'Unlimited' : '' . $plan->max_team_members . '' !!}
  • {{ get_label('max_workspaces', 'Max Workspaces') }}: {!! $plan->max_worksapces == -1 ? 'Unlimited' : '' . $plan->max_worksapces . '' !!}
  • @if ($plan->modules)
  • {{ get_label('modules', 'Modules') }}
      @php $modules = json_decode($plan->modules); $checkedModules = []; $uncheckedModules = []; foreach (config('taskify.modules') as $moduleName => $moduleData) { $included = in_array($moduleName, $modules); if ($included) { $checkedModules[] = [ 'name' => $moduleName, 'icon' => $moduleData['icon'], 'included' => true, ]; } else { $uncheckedModules[] = [ 'name' => $moduleName, 'icon' => $moduleData['icon'], 'included' => false, ]; } } $sortedModules = array_merge($checkedModules, $uncheckedModules); @endphp @foreach ($sortedModules as $module) @php $iconClass = $module['included'] ? 'fa-check' : 'fa-times text-danger'; $iconColorClass = $module['included'] ? "module-icon-included-yearly-{$gradientIndex}" : 'module-icon-excluded'; @endphp
    • {{ ucfirst($module['name']) }}
    • @endforeach
  • @endif
@endforeach
@endif @if ($hasLifetimePlans)
@foreach ($plans->where('lifetime_price', '>', 0)->merge($plans->where('plan_type', 'free'))->sortBy(function ($plan) { return $plan->plan_type === 'free' ? 0 : 1; })->unique('id') as $index => $plan) @php $gradientIndex = $index % 3; @endphp
{{ $plan->name }}

@if ($plan->lifetime_discounted_price > 0 && $plan->lifetime_discounted_price < $plan->lifetime_price) {{ format_currency($plan->lifetime_price) }} {{ format_currency($plan->lifetime_discounted_price) }} / {{ get_label('lifetime_price', 'Lifetime Price') }} @else {{ format_currency($plan->lifetime_price) }} / {{ get_label('lifetime_price', 'Lifetime Price') }} @endif

{{ $plan->description }}

@php $gradientIndex = $index % 3; @endphp @if ($plan->monthly_price == 0) {{ get_label('buy_now', 'Buy now') }} @else {{ get_label('buy_now', 'Buy now') }} @endif

  • {{ get_label('max_projects', 'Max Projects') }}: {!! $plan->max_projects == -1 ? 'Unlimited' : '' . $plan->max_projects . '' !!}
  • {{ get_label('max_clients', 'Max Clients') }}: {!! $plan->max_clients == -1 ? 'Unlimited' : '' . $plan->max_clients . '' !!}
  • {{ get_label('max_team_members', 'Max Team Members') }}: {!! $plan->max_team_members == -1 ? 'Unlimited' : '' . $plan->max_team_members . '' !!}
  • {{ get_label('max_workspaces', 'Max Workspaces') }}: {!! $plan->max_worksapces == -1 ? 'Unlimited' : '' . $plan->max_worksapces . '' !!}
  • @if ($plan->modules)
  • {{ get_label('modules', 'Modules') }}
      @php $modules = json_decode($plan->modules); $checkedModules = []; $uncheckedModules = []; foreach (config('taskify.modules') as $moduleName => $moduleData) { $included = in_array($moduleName, $modules); if ($included) { $checkedModules[] = [ 'name' => $moduleName, 'icon' => $moduleData['icon'], 'included' => true, ]; } else { $uncheckedModules[] = [ 'name' => $moduleName, 'icon' => $moduleData['icon'], 'included' => false, ]; } } $sortedModules = array_merge($checkedModules, $uncheckedModules); @endphp @foreach ($sortedModules as $module) @php $iconClass = $module['included'] ? 'fa-check' : 'fa-times text-danger'; $iconColorClass = $module['included'] ? "module-icon-included-lifetime-{$gradientIndex}" : 'module-icon-excluded'; @endphp
    • {{ ucfirst($module['name']) }}
    • @endforeach
  • @endif
@endforeach
@endif @if (!$hasMonthlyPlans && !$hasYearlyPlans && !$hasLifetimePlans)
{{ get_label('no_plans_available', 'No Plans Available') }}
@endif
@else
{{ get_label('no_plans_available', 'No Plans Available') }}
@endif
@endsection