@@ -11,11 +11,14 @@ import { BrandIconTile, SimIconTile } from '@/app/(landing)/comparisons/componen
1111import { ComparisonCards } from '@/app/(landing)/comparisons/components/comparison-cards'
1212import { ComparisonLinkRow } from '@/app/(landing)/comparisons/components/comparison-link-row'
1313import { ComparisonTable } from '@/app/(landing)/comparisons/components/comparison-table'
14+ import { GlanceTable } from '@/app/(landing)/comparisons/components/glance-table'
1415import { MigrationSection } from '@/app/(landing)/comparisons/components/migration-section'
1516import { ProseText } from '@/app/(landing)/comparisons/components/prose-text'
17+ import { QuestionSections } from '@/app/(landing)/comparisons/components/question-sections'
1618import { getLibraryPostsForCompetitor } from '@/app/(landing)/comparisons/library-links'
1719import {
1820 ALL_COMPETITORS ,
21+ betterThanQuestion ,
1922 buildBottomLine ,
2023 buildComparisonFaqs ,
2124 getCompetitorBySlug ,
@@ -117,6 +120,17 @@ export default async function ComparisonProviderPage({
117120 Math . max ( SIM_LATEST_VERIFIED . getTime ( ) , getLatestVerifiedDate ( competitor ) . getTime ( ) )
118121 )
119122
123+ const verifiedDate = (
124+ < time dateTime = { latestVerified . toISOString ( ) . slice ( 0 , 10 ) } >
125+ { latestVerified . toLocaleDateString ( 'en-US' , {
126+ month : 'long' ,
127+ day : 'numeric' ,
128+ year : 'numeric' ,
129+ timeZone : 'UTC' ,
130+ } ) }
131+ </ time >
132+ )
133+
120134 const productComparisonJsonLd = {
121135 '@context' : 'https://schema.org' ,
122136 '@type' : 'ItemList' ,
@@ -186,26 +200,41 @@ export default async function ComparisonProviderPage({
186200 >
187201 Sim vs { competitor . name }
188202 </ h1 >
189- { competitor . leadAnswer ? (
190- < p className = 'max-w-[720px] text-[var(--text-body)] text-sm leading-[150%] tracking-[0.02em] lg:text-base' >
191- < ProseText prose = { competitor . leadAnswer } />
192- </ p >
193- ) : null }
194- < p className = 'max-w-[720px] text-[var(--text-muted)] text-sm leading-[150%] tracking-[0.02em] lg:text-base' >
195- Sim is the open-source AI workspace where teams build, deploy, and manage AI agents
196- visually, conversationally, or with code. Here is how Sim compares to{ ' ' }
197- { competitor . name } on platform architecture, AI capabilities, integrations, pricing,
198- security, and support. Every fact below is sourced and dated, last verified{ ' ' }
199- < time dateTime = { latestVerified . toISOString ( ) . slice ( 0 , 10 ) } >
200- { latestVerified . toLocaleDateString ( 'en-US' , {
201- month : 'long' ,
202- day : 'numeric' ,
203- year : 'numeric' ,
204- timeZone : 'UTC' ,
205- } ) }
206- </ time >
207- .
208- </ p >
203+ { competitor . leadQuestion && competitor . leadAnswer ? (
204+ < section
205+ id = 'lead-question'
206+ aria-labelledby = 'lead-question-heading'
207+ className = 'flex flex-col gap-3'
208+ >
209+ < h2
210+ id = 'lead-question-heading'
211+ className = 'max-w-[720px] text-balance text-[var(--text-primary)] text-xl leading-[120%] tracking-[-0.02em] lg:text-2xl'
212+ >
213+ { competitor . leadQuestion }
214+ </ h2 >
215+ < p className = 'max-w-[720px] text-[var(--text-body)] text-sm leading-[150%] tracking-[0.02em] lg:text-base' >
216+ < ProseText prose = { competitor . leadAnswer } />
217+ </ p >
218+ < p className = 'max-w-[720px] text-[var(--text-muted)] text-sm leading-[150%] tracking-[0.02em] lg:text-base' >
219+ Every fact below is sourced and dated, last verified { verifiedDate } .
220+ </ p >
221+ </ section >
222+ ) : (
223+ < >
224+ { competitor . leadAnswer ? (
225+ < p className = 'max-w-[720px] text-[var(--text-body)] text-sm leading-[150%] tracking-[0.02em] lg:text-base' >
226+ < ProseText prose = { competitor . leadAnswer } />
227+ </ p >
228+ ) : null }
229+ < p className = 'max-w-[720px] text-[var(--text-muted)] text-sm leading-[150%] tracking-[0.02em] lg:text-base' >
230+ Sim is the open-source AI workspace where teams build, deploy, and manage AI
231+ agents visually, conversationally, or with code. Here is how Sim compares to{ ' ' }
232+ { competitor . name } on platform architecture, AI capabilities, integrations,
233+ pricing, security, and support. Every fact below is sourced and dated, last
234+ verified { verifiedDate } .
235+ </ p >
236+ </ >
237+ ) }
209238 < p className = 'sr-only' >
210239 Sim is an open-source AI workspace for building, deploying, and managing AI agents.
211240 This page compares Sim to { competitor . name } across platform architecture, AI
@@ -232,7 +261,7 @@ export default async function ComparisonProviderPage({
232261 id = 'better-than-heading'
233262 className = 'mb-4 text-[var(--text-primary)] text-xl leading-[100%] tracking-[-0.02em] lg:text-2xl'
234263 >
235- Is Sim better than { competitor . name } ?
264+ { betterThanQuestion ( competitor ) }
236265 </ h2 >
237266 < p className = 'max-w-[720px] text-[var(--text-body)] text-small leading-[150%]' >
238267 < ProseText prose = { competitor . betterThanAnswer } />
@@ -241,6 +270,9 @@ export default async function ComparisonProviderPage({
241270 < div className = 'h-px w-full bg-[var(--border)]' />
242271 </ >
243272 ) : null }
273+ { competitor . questions ?. intro ? (
274+ < QuestionSections questions = { competitor . questions . intro } idPrefix = 'intro-question' />
275+ ) : null }
244276 < div className = 'grid grid-cols-1 sm:grid-cols-2' >
245277 < section
246278 aria-labelledby = 'what-is-sim-heading'
@@ -280,6 +312,19 @@ export default async function ComparisonProviderPage({
280312
281313 < div className = 'h-px w-full bg-[var(--border)]' />
282314
315+ { competitor . glance ? (
316+ < >
317+ < GlanceTable rows = { competitor . glance } competitorName = { competitor . name } />
318+ < div className = 'h-px w-full bg-[var(--border)]' />
319+ </ >
320+ ) : null }
321+ { competitor . questions ?. glance ? (
322+ < QuestionSections
323+ questions = { competitor . questions . glance }
324+ idPrefix = 'glance-question'
325+ />
326+ ) : null }
327+
283328 < section aria-labelledby = 'comparison-table-heading' className = 'px-6 pt-10 pb-4' >
284329 < h2
285330 id = 'comparison-table-heading'
@@ -351,6 +396,13 @@ export default async function ComparisonProviderPage({
351396
352397 < div className = 'h-px w-full bg-[var(--border)]' />
353398
399+ { competitor . questions ?. closing ? (
400+ < QuestionSections
401+ questions = { competitor . questions . closing }
402+ idPrefix = 'closing-question'
403+ />
404+ ) : null }
405+
354406 < section aria-labelledby = 'bottom-line-heading' className = 'px-6 py-10' >
355407 < h2
356408 id = 'bottom-line-heading'
@@ -406,17 +458,19 @@ export default async function ComparisonProviderPage({
406458 </ ul >
407459 </ section >
408460
409- < section aria-labelledby = 'faq-heading' className = 'px-6 py-10' >
410- < h2
411- id = 'faq-heading'
412- className = 'mb-4 text-[var(--text-primary)] text-xl leading-[100%] tracking-[-0.02em] lg:text-2xl'
413- >
414- Frequently asked questions
415- </ h2 >
416- < div >
417- < LandingFAQ faqs = { faqs } />
418- </ div >
419- </ section >
461+ { competitor . questions ? null : (
462+ < section aria-labelledby = 'faq-heading' className = 'px-6 py-10' >
463+ < h2
464+ id = 'faq-heading'
465+ className = 'mb-4 text-[var(--text-primary)] text-xl leading-[100%] tracking-[-0.02em] lg:text-2xl'
466+ >
467+ Frequently asked questions
468+ </ h2 >
469+ < div >
470+ < LandingFAQ faqs = { faqs } />
471+ </ div >
472+ </ section >
473+ ) }
420474 </ div >
421475 </ div >
422476
0 commit comments