@props([ /** Show the section's own kicker + headline. Pass false to embed inside a page that already has its own. */ 'showHeader' => true, /** * Plans: each is ['name', 'tagline', 'price', 'period', 'overage', 'cta_label', 'cta_href', * 'highlighted' (bool), 'volume' (array), 'features' (array of ['label', 'included' bool]), * 'support' (array), 'plan_num' (string)]. * If null, the prototype's Starter / Pro / Scale shape ships so the * component renders out of the box on the public landing surface. * For the auth dashboard /pricing page, pass real $packages data instead. */ 'plans' => null, ]) @php // Hardcoded prototype tiers — used only as a fallback when no plans were // passed AND the admin hasn't created any packages yet. $__fcDefaults = [ [ 'plan_num' => fc('pricing-strip.tier1_num', 'Plan · 01'), 'name' => fc('pricing-strip.tier1_name', 'Starter'), 'badge' => fc('pricing-strip.tier1_badge', 'free'), 'tagline' => fc( 'pricing-strip.tier1_tagline', __('Founders testing the waters. Live in 4 minutes — no card required.'), ), 'price' => fc('pricing-strip.tier1_price', '$0'), 'period' => fc('pricing-strip.tier1_period', __('/month · forever')), 'overage' => fc('pricing-strip.tier1_overage', __('+ $0.005 / msg after 1k')), 'cta_label' => fc('pricing-strip.tier1_cta_label', __('Start free →')), 'cta_href' => Route::has('register') ? route('register') : url('/'), 'highlighted' => false, 'volume' => [ ['label' => fc('pricing-strip.tier1_volume1', __('1 connected device')), 'included' => true], ['label' => fc('pricing-strip.tier1_volume2', __('1,000 conversations / mo')), 'included' => true], ['label' => fc('pricing-strip.tier1_volume3', __('2 agent seats')), 'included' => true], ], 'features' => [ ['label' => fc('pricing-strip.tier1_feature1', __('10 templates · basic flows')), 'included' => true], ['label' => fc('pricing-strip.tier1_feature2', __('Shared inbox · 1 channel')), 'included' => true], ['label' => fc('pricing-strip.tier1_feature3', __('Webhooks · public API')), 'included' => true], ['label' => fc('pricing-strip.tier1_feature4', __('AI Copilot')), 'included' => false], ['label' => fc('pricing-strip.tier1_feature5', __('A/B variants')), 'included' => false], ], 'support' => [ ['label' => fc('pricing-strip.tier1_support1', __('Community · docs')), 'included' => true], ['label' => fc('pricing-strip.tier1_support2', __('Email & chat')), 'included' => false], ], ], [ 'plan_num' => fc('pricing-strip.tier2_num', 'Plan · 02'), 'name' => fc('pricing-strip.tier2_name', 'Pro'), 'badge' => fc('pricing-strip.tier2_badge', __('Most picked')), 'tagline' => fc( 'pricing-strip.tier2_tagline', __('Teams growing on WhatsApp. Everything unlocked, one bill.'), ), 'price' => fc('pricing-strip.tier2_price', '$49'), 'period' => fc('pricing-strip.tier2_period', __('/month')), 'overage' => fc('pricing-strip.tier2_overage', __('+ $0.003 / msg after 10k')), 'cta_label' => fc('pricing-strip.tier2_cta_label', __('Start 14-day trial →')), 'cta_href' => Route::has('register') ? route('register') : url('/'), 'highlighted' => true, 'volume' => [ ['label' => fc('pricing-strip.tier2_volume1', __('3 connected devices')), 'included' => true], ['label' => fc('pricing-strip.tier2_volume2', __('Unlimited conversations')), 'included' => true], ['label' => fc('pricing-strip.tier2_volume3', __('Unlimited agent seats')), 'included' => true], ], 'features' => [ ['label' => fc('pricing-strip.tier2_feature1', __('Unlimited templates · flows')), 'included' => true], [ 'label' => fc('pricing-strip.tier2_feature2', __('AI Copilot · all integrations')), 'included' => true, ], ['label' => fc('pricing-strip.tier2_feature3', __('A/B variants · auto-winner')), 'included' => true], ['label' => fc('pricing-strip.tier2_feature4', __('Multi-channel inbox')), 'included' => true], ['label' => fc('pricing-strip.tier2_feature5', __('Payments · 10 gateways')), 'included' => true], ], 'support' => [ ['label' => fc('pricing-strip.tier2_support1', __('Email + chat · 4h SLA')), 'included' => true], ['label' => fc('pricing-strip.tier2_support2', __('Onboarding · white-glove')), 'included' => true], ], ], [ 'plan_num' => fc('pricing-strip.tier3_num', 'Plan · 03'), 'name' => fc('pricing-strip.tier3_name', 'Scale'), 'badge' => fc('pricing-strip.tier3_badge', __('custom')), 'tagline' => fc( 'pricing-strip.tier3_tagline', __('High-volume teams. Regulated industries. Custom contracts.'), ), 'price' => fc('pricing-strip.tier3_price', '$299'), 'period' => fc('pricing-strip.tier3_period', __('/month · from')), 'overage' => fc('pricing-strip.tier3_overage', __('volume discount available')), 'cta_label' => fc('pricing-strip.tier3_cta_label', __('Talk to sales →')), 'cta_href' => '#', 'highlighted' => false, 'volume' => [ ['label' => fc('pricing-strip.tier3_volume1', __('Unlimited devices')), 'included' => true], ['label' => fc('pricing-strip.tier3_volume2', __('Unlimited everything')), 'included' => true], ['label' => fc('pricing-strip.tier3_volume3', __('Custom rate limits')), 'included' => true], ], 'features' => [ ['label' => fc('pricing-strip.tier3_feature1', __('SAML SSO · SCIM')), 'included' => true], ['label' => fc('pricing-strip.tier3_feature2', __('7-year audit retention')), 'included' => true], ['label' => fc('pricing-strip.tier3_feature3', __('EU · US · IN data residency')), 'included' => true], ['label' => fc('pricing-strip.tier3_feature4', __('Custom DPA · MSA')), 'included' => true], ['label' => fc('pricing-strip.tier3_feature5', __('HIPAA · PCI · GDPR')), 'included' => true], ], 'support' => [ ['label' => fc('pricing-strip.tier3_support1', __('Dedicated CSM · Slack')), 'included' => true], ['label' => fc('pricing-strip.tier3_support2', __('99.95% uptime SLA')), 'included' => true], ], ], ]; // Real, admin-managed plans drive the cards. Only fall back to the // prototype tiers when no $plans prop was passed and there are no packages. if ($plans === null) { $__dbCards = \App\Models\Package::publicPricingCards(); $plans = count($__dbCards) ? $__dbCards : $__fcDefaults; } @endphp
@if ($showHeader)
10
{{ fc('pricing-strip.eyebrow_text', __('Pricing')) }}
{{ fc('pricing-strip.label', __('Pay for conversations, not seats')) }}
{{ fc('pricing-strip.meta1', __('14-day free trial')) }}· {{ fc('pricing-strip.meta2', __('no credit card')) }}· {{ fc('pricing-strip.meta3', __('cancel anytime')) }}

{!! fc( 'pricing-strip.headline', __('Simple, honest,') . '
' . __('and') . ' ' . __('flat.') . '', ) !!}

@endif {{-- editorial tall pricing cards --}}
@foreach ($plans as $plan) @php $hl = $plan['highlighted'] ?? false; @endphp
@if ($hl)
@endif
{{-- header --}}
— {{ $plan['plan_num'] }}
@if ($hl) {{ $plan['badge'] }} @else {{ $plan['badge'] }} @endif

{{ $plan['name'] }}

{{ $plan['tagline'] }}

{{-- price --}}
{{ $plan['price'] }} {{ $plan['period'] }}
@if (!empty($plan['overage']))
{{ $plan['overage'] }}
@endif
{{-- categorized features --}}
@foreach (['volume' => __('Volume'), 'features' => __('Features'), 'support' => __('Support')] as $key => $heading) @if (!empty($plan[$key]))
{{ $heading }}
    @foreach ($plan[$key] as $row) @if ($row['included'])
  • {{ $row['label'] }}
  • @else
  • {{ $row['label'] }}
  • @endif @endforeach
@endif @endforeach
{{-- cta --}} {{ $plan['cta_label'] }}
@endforeach
@if ($showHeader)
{{ fc('pricing-strip.honest_label_text', __('Honest about pricing')) }}
{!! fc( 'pricing-strip.honest1', '' . __('Pay for messages') . '
' . __('Not per seat. Ever.') . '', ) !!}
{!! fc( 'pricing-strip.honest2', '' . __('One invoice') . '
' . __('All 12 products bundled.') . '', ) !!}
{!! fc( 'pricing-strip.honest3', '' . __('Annual = 20% off') . '
' . __('Pay yearly, save 2.4 months.') . '', ) !!}
{!! fc( 'pricing-strip.honest4', '' . __('Migration · free') . '
' . __('We move you off AiSensy / Wati.') . '', ) !!}
@endif