{#snippet feature(present: boolean, label: string)}
{label}
{/snippet} {#snippet cardBody(plan: Plan, isPopular: boolean)} {#if isPopular && !selectable}
POPULAR
{/if}
{plan.name}
{priceLabel(plan.amount)}
/ mo
{memberLabel(plan.members)}
{@render feature(plan.blossom, "Media storage")} {@render feature(plan.livekit, "Video calls")}
{#if !selectable}
Get started
{/if} {/snippet}
{#each visiblePlans as plan (plan.id)} {@const isPopular = plan.id === "basic"} {#if selectable}
{@render cardBody(plan, isPopular)}
{:else}
{@render cardBody(plan, isPopular)}
{/if} {/each} {#if !selectable}
Custom
Let's talk
White-labeled app
Dedicated support
Custom feature development
Contact us
{/if}