import Link from 'next/link';
import { ArrowRight, Github, MoveRight } from 'lucide-react';
import { CtaLink } from '@/components/marketing/cta-link';
import { FeatureComparisonTable } from '@/components/marketing/feature-comparison-table';
import { MarketingFooter } from '@/components/marketing/marketing-footer';
import { MarketingHeader } from '@/components/marketing/marketing-header';
import { PricingComparison } from '@/components/marketing/pricing-comparison';
import { ProductVisual } from '@/components/marketing/product-visual';
import type { ComparisonPageDefinition } from '@/lib/marketing/comparison-types';
import { getCompetitorName, comparisonPageMap } from '@/lib/marketing/comparison-pages';
import { seoConfig } from '@/lib/seo';
interface ComparisonPageProps {
page: ComparisonPageDefinition;
isLoggedIn: boolean;
}
export function ComparisonPage({ page, isLoggedIn }: ComparisonPageProps) {
const hostedCtaHref = isLoggedIn ? '/dashboard' : '/register';
const competitorName = getCompetitorName(page) ?? 'Alternatives';
const relatedSlugs = page.relatedSlugs.filter((slug) => slug in comparisonPageMap);
return (
{page.eyebrow}
{page.headline}
{page.subheadline}
No per-member or guest fees. One
$10/month hosted plan covers your whole team and every client reviewer link.
{page.solutionTitle}
{page.solutionNarrative}
Where OpenFrame fits best
{page.bestForOpenFrame.map((item) => (
- {item}
))}
Where {competitorName} may still fit
{page.bestForCompetitor.map((item) => (
- {item}
))}
OpenFrame advantages
{page.openframeWins.map((item) => (
{item}
))}
{competitorName} advantages
{page.competitorWins.map((item) => (
{item}
))}
Feature comparison
Honest tradeoffs based on official product, pricing, and help documentation. Verify
current plans before buying.
Pricing comparison
OpenFrame is $10/month flat with a 7-day free trial. You do not pay per team member,
collaborator, or guest reviewer. Self-hosting is free with Docker.
FAQ
{page.faq.map((item) => (
{item.question}
{item.answer}
))}
{relatedSlugs.length > 0 ? (
Related comparisons
{relatedSlugs.map((slug) => (
{slug.replaceAll('-', ' ')}
))}
) : null}
Start your free trial
Your first client review link takes minutes.
);
}