@php
use App\Services\PlanMapper;
$idPrefix = $idPrefix ?? 'dashv2';
$planName = $planName ?? '';
$planExpired = $planExpired ?? true;
$isMonthly = $isMonthly ?? true;
$monthsFree = pricing()->monthsFree('Reply');
$cardClass = 'relative flex w-full flex-col rounded-2xl border-[1.5px] border-line bg-white p-[22px] shadow-[0_1px_2px_rgba(11,21,38,.04)]';
$featuredClass = 'relative order-first flex w-full flex-col rounded-2xl border-[1.5px] border-brand-blue bg-white p-[22px] shadow-[0_8px_28px_rgba(36,86,230,.14)] sm:order-none';
$selectClass = 'w-full cursor-pointer rounded-[10px] border-[1.5px] border-line bg-white px-3 py-2.5 text-[13px] font-semibold text-ink';
$savingClass = 'mt-2 hidden text-[11.5px] font-semibold text-brand-green-deep';
$ctaArgs = fn (string $card, string $period) => [
'card' => $card,
'period' => $period,
'idPrefix' => $idPrefix,
'planName' => $planName,
'planExpired' => $planExpired,
'isMonthly' => $isMonthly,
];
$activeBadge = 'Active';
$checkGreen = 'mt-0.5 flex h-4 w-4 shrink-0 items-center justify-center rounded-full bg-brand-green-tint';
$checkBlue = 'mt-0.5 flex h-4 w-4 shrink-0 items-center justify-center rounded-full bg-brand-blue-tint';
$featLi = 'flex items-start gap-2.5 text-[12.5px] leading-snug text-ink-2';
$replyMonthlyTotal = (int) pricing()->amount('Reply', 'monthly') * 12;
$inviteMonthlyTotal = (int) pricing()->amount('InviteReply', 'monthly') * 12;
@endphp
{{-- Billing toggle --}}
{{-- ===================== Monthly ===================== --}}
{{-- Reply --}}
Reply
@if (PlanMapper::isPlan($planName, ['Pro Monthly', 'Pro Yearly', 'Reply', 'Pro Trial', 'Reply Trial']) && !$planExpired){!! $activeBadge !!}@endif
$
/month
No contract · cancel anytime
- Everything in Free, plus
- 500 AI replies a month
- Auto-reply to every new review
- Your signature on every reply
- Add team members
- Multi-branch from $23.90/branch
@include('dashboard.v2.pricing-plans-cta', $ctaArgs('reply', 'monthly'))
Replies only — invites stay on the free plan
{{-- Invite + Reply (featured) --}}
Covers all 0 appointments
Invite + Reply
@if (PlanMapper::isPlan($planName, ['Multi Pro Monthly', 'Multi Pro Yearly', 'Invite Reply', 'Multi Pro Trial', 'Invite Reply Trial']) && !$planExpired){!! $activeBadge !!}@endif
$
/month
No contract · cancel anytime
- Everything in Reply, plus
- 2,500 invites a month
- Auto-invite from your calendar
- Email invites with your logo
- Monthly insight report
- Multi-branch from $34/branch
@include('dashboard.v2.pricing-plans-cta', $ctaArgs('invite', 'monthly'))
No contract · cancel anytime
{{-- ===================== Yearly ===================== --}}
{{-- Reply --}}
Reply
@if (PlanMapper::isPlan($planName, ['Pro Monthly', 'Pro Yearly', 'Reply', 'Pro Trial', 'Reply Trial']) && !$planExpired){!! $activeBadge !!}@endif
$
/year
{{ $monthsFree }} months free — vs ${{ $replyMonthlyTotal }} monthly
- Everything in Free, plus
- 500 AI replies a month
- Auto-reply to every new review
- Your signature on every reply
- Add team members
- Multi-branch from $239/branch a year
@include('dashboard.v2.pricing-plans-cta', $ctaArgs('reply', 'yearly'))
Replies only — invites stay on the free plan
{{-- Invite + Reply (featured) --}}
Covers all 0 appointments
Invite + Reply
@if (PlanMapper::isPlan($planName, ['Multi Pro Monthly', 'Multi Pro Yearly', 'Invite Reply', 'Multi Pro Trial', 'Invite Reply Trial']) && !$planExpired){!! $activeBadge !!}@endif
$
/year
2 months free — vs ${{ $inviteMonthlyTotal }} monthly
- Everything in Reply, plus
- 2,500 invites a month
- Auto-invite from your calendar
- Email invites with your logo
- Monthly insight report
- Additional branches $590/year each
@include('dashboard.v2.pricing-plans-cta', $ctaArgs('invite', 'yearly'))
No contract · cancel anytime
· Extra businesses $34/mo each — $24.90 from your 10th