Commit
Trim landing page to the hero
commit
68cccce
1 changed file with +0 and −199
modified src/app/page.tsx +0 −199
| @@ -1,51 +1,10 @@ | ||
| 1 | -import { | |
| 2 | - ArrowRight, | |
| 3 | - CheckCircle2, | |
| 4 | - GitCompareArrows, | |
| 5 | - MessageCircleQuestion, | |
| 6 | - MessagesSquare, | |
| 7 | - Scale, | |
| 8 | - Sparkles, | |
| 9 | -} from 'lucide-react'; | |
| 10 | -import Link from 'next/link'; | |
| 11 | 1 | import { LandingBackground } from '@/components/landing-background'; |
| 12 | 2 | import { LandingHero } from '@/components/landing-hero'; |
| 13 | -import { Reveal } from '@/components/reveal'; | |
| 14 | -import { Button } from '@/components/ui/button'; | |
| 15 | 3 | import type { DebateResult } from '@/core/types'; |
| 16 | 4 | import { listDemoDebates, loadDebateResult } from '@/db/repositories'; |
| 17 | -import { QUESTION_EXAMPLES } from '@/lib/question-examples'; | |
| 18 | 5 | |
| 19 | 6 | export const dynamic = 'force-dynamic'; |
| 20 | 7 | |
| 21 | -const STEPS = [ | |
| 22 | - { | |
| 23 | - icon: MessageCircleQuestion, | |
| 24 | - title: 'Ask one clear question', | |
| 25 | - description: | |
| 26 | - 'Add your options, priorities, and limits. Roundtable chooses a balanced set of models for you.', | |
| 27 | - }, | |
| 28 | - { | |
| 29 | - icon: MessagesSquare, | |
| 30 | - title: 'Hear independent views', | |
| 31 | - description: | |
| 32 | - 'Each model answers on its own before seeing the others, so the first opinion cannot sway the room.', | |
| 33 | - }, | |
| 34 | - { | |
| 35 | - icon: Scale, | |
| 36 | - title: 'Get a checked verdict', | |
| 37 | - description: | |
| 38 | - 'They challenge weak points, revise their answers, and combine the strongest reasoning into one result.', | |
| 39 | - }, | |
| 40 | -]; | |
| 41 | - | |
| 42 | -const REASONS = [ | |
| 43 | - 'One clear recommendation comes first', | |
| 44 | - 'Remaining disagreements stay visible', | |
| 45 | - 'Every original opinion can be inspected', | |
| 46 | - 'Cost is estimated before anything runs', | |
| 47 | -]; | |
| 48 | - | |
| 49 | 8 | export default async function HomePage() { |
| 50 | 9 | let demo: DebateResult | null = null; |
| 51 | 10 | try { |
| @@ -59,164 +18,6 @@export default async function HomePage() { | ||
| 59 | 18 | <div className="overflow-hidden"> |
| 60 | 19 | <LandingBackground /> |
| 61 | 20 | <LandingHero result={demo} /> |
| 62 | - | |
| 63 | - <section className="container py-16 sm:py-24"> | |
| 64 | - <Reveal className="grid gap-8 lg:grid-cols-[0.7fr_1.3fr] lg:gap-16"> | |
| 65 | - <div> | |
| 66 | - <p className="text-xs font-bold uppercase tracking-[0.18em] text-primary"> | |
| 67 | - Made for real decisions | |
| 68 | - </p> | |
| 69 | - <h2 className="mt-3 max-w-md font-display text-3xl font-semibold tracking-[-0.035em] sm:text-4xl"> | |
| 70 | - Bring the messy question. | |
| 71 | - </h2> | |
| 72 | - <p className="mt-4 max-w-md leading-relaxed text-muted-foreground"> | |
| 73 | - Roundtable is most useful when there is no obvious answer, several tradeoffs matter, | |
| 74 | - and you want a recommendation you can inspect. | |
| 75 | - </p> | |
| 76 | - </div> | |
| 77 | - <div className="grid gap-3 sm:grid-cols-2"> | |
| 78 | - {QUESTION_EXAMPLES.map((example) => ( | |
| 79 | - <Link | |
| 80 | - key={example.category} | |
| 81 | - href={{ pathname: '/debate', query: { q: example.question } }} | |
| 82 | - className="group rounded-2xl border bg-card/70 p-5 transition-all hover:-translate-y-0.5 hover:border-primary/35 hover:bg-card hover:shadow-lg hover:shadow-primary/5 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring" | |
| 83 | - > | |
| 84 | - <div className="flex items-center justify-between"> | |
| 85 | - <span className="text-[11px] font-bold uppercase tracking-[0.15em] text-muted-foreground"> | |
| 86 | - {example.category} | |
| 87 | - </span> | |
| 88 | - <ArrowRight className="h-4 w-4 text-muted-foreground transition-transform group-hover:translate-x-0.5 group-hover:text-primary" /> | |
| 89 | - </div> | |
| 90 | - <h3 className="mt-6 font-display text-xl font-semibold tracking-tight"> | |
| 91 | - {example.short} | |
| 92 | - </h3> | |
| 93 | - <p className="mt-2 text-sm leading-relaxed text-muted-foreground"> | |
| 94 | - {example.question} | |
| 95 | - </p> | |
| 96 | - </Link> | |
| 97 | - ))} | |
| 98 | - </div> | |
| 99 | - </Reveal> | |
| 100 | - </section> | |
| 101 | - | |
| 102 | - <section className="border-y bg-card/45"> | |
| 103 | - <div className="container py-16 sm:py-24"> | |
| 104 | - <Reveal className="mx-auto max-w-2xl text-center"> | |
| 105 | - <p className="text-xs font-bold uppercase tracking-[0.18em] text-primary"> | |
| 106 | - How it works | |
| 107 | - </p> | |
| 108 | - <h2 className="mt-3 font-display text-3xl font-semibold tracking-[-0.035em] sm:text-4xl"> | |
| 109 | - More than three chat tabs. | |
| 110 | - </h2> | |
| 111 | - <p className="mt-4 text-muted-foreground"> | |
| 112 | - Roundtable keeps the opinions independent, then makes the models test one another | |
| 113 | - before you see the final answer. | |
| 114 | - </p> | |
| 115 | - </Reveal> | |
| 116 | - | |
| 117 | - <ol className="mx-auto mt-12 grid max-w-6xl gap-4 md:grid-cols-3"> | |
| 118 | - {STEPS.map((step, index) => ( | |
| 119 | - <Reveal key={step.title} delay={index * 90}> | |
| 120 | - <li className="relative h-full rounded-2xl border bg-background p-6"> | |
| 121 | - <div className="flex items-center justify-between"> | |
| 122 | - <span className="flex h-11 w-11 items-center justify-center rounded-xl bg-primary/10 text-primary"> | |
| 123 | - <step.icon className="h-5 w-5" /> | |
| 124 | - </span> | |
| 125 | - <span className="font-mono text-xs text-muted-foreground/60">0{index + 1}</span> | |
| 126 | - </div> | |
| 127 | - <h3 className="mt-8 font-display text-xl font-semibold tracking-tight"> | |
| 128 | - {step.title} | |
| 129 | - </h3> | |
| 130 | - <p className="mt-3 text-sm leading-relaxed text-muted-foreground"> | |
| 131 | - {step.description} | |
| 132 | - </p> | |
| 133 | - </li> | |
| 134 | - </Reveal> | |
| 135 | - ))} | |
| 136 | - </ol> | |
| 137 | - </div> | |
| 138 | - </section> | |
| 139 | - | |
| 140 | - <section className="container py-16 sm:py-24"> | |
| 141 | - <Reveal className="relative overflow-hidden rounded-[2rem] border bg-foreground px-6 py-10 text-background sm:px-10 sm:py-14 lg:px-14"> | |
| 142 | - <div className="absolute right-[-8%] top-[-40%] h-80 w-80 rounded-full bg-primary/40 blur-3xl" /> | |
| 143 | - <div className="relative grid items-center gap-10 lg:grid-cols-[1fr_0.85fr]"> | |
| 144 | - <div> | |
| 145 | - <span className="inline-flex items-center gap-2 text-xs font-bold uppercase tracking-[0.18em] text-background/60"> | |
| 146 | - <Sparkles className="h-3.5 w-3.5" /> | |
| 147 | - Clear without hiding the details | |
| 148 | - </span> | |
| 149 | - <h2 className="mt-4 max-w-xl font-display text-3xl font-semibold tracking-[-0.035em] sm:text-5xl"> | |
| 150 | - A verdict you can question, share, and act on. | |
| 151 | - </h2> | |
| 152 | - <p className="mt-5 max-w-xl leading-relaxed text-background/70"> | |
| 153 | - Most AI gives you a confident answer and asks you to trust it. Roundtable keeps the | |
| 154 | - reasoning, changes, and dissent attached to the result. | |
| 155 | - </p> | |
| 156 | - </div> | |
| 157 | - <ul className="grid gap-3 sm:grid-cols-2 lg:grid-cols-1"> | |
| 158 | - {REASONS.map((reason) => ( | |
| 159 | - <li | |
| 160 | - key={reason} | |
| 161 | - className="flex items-center gap-3 rounded-xl border border-background/15 bg-background/5 p-3.5 text-sm" | |
| 162 | - > | |
| 163 | - <CheckCircle2 className="h-4 w-4 shrink-0 text-emerald-400" /> | |
| 164 | - {reason} | |
| 165 | - </li> | |
| 166 | - ))} | |
| 167 | - </ul> | |
| 168 | - </div> | |
| 169 | - </Reveal> | |
| 170 | - </section> | |
| 171 | - | |
| 172 | - <section className="container pb-20 pt-6 text-center sm:pb-28 sm:pt-10"> | |
| 173 | - <Reveal className="mx-auto max-w-3xl"> | |
| 174 | - <p className="text-xs font-bold uppercase tracking-[0.18em] text-primary"> | |
| 175 | - Your next decision | |
| 176 | - </p> | |
| 177 | - <h2 className="mt-4 font-display text-4xl font-semibold leading-tight tracking-[-0.04em] sm:text-6xl"> | |
| 178 | - Put it on the table. | |
| 179 | - </h2> | |
| 180 | - <p className="mx-auto mt-5 max-w-xl text-lg leading-relaxed text-muted-foreground"> | |
| 181 | - Start with smart defaults, or open the controls when you want to choose every model and | |
| 182 | - rule yourself. | |
| 183 | - </p> | |
| 184 | - <div className="mt-8 flex flex-wrap items-center justify-center gap-3"> | |
| 185 | - <Button size="lg" asChild className="rounded-xl px-7"> | |
| 186 | - <Link href="/debate"> | |
| 187 | - Ask a question | |
| 188 | - <ArrowRight className="h-4 w-4" /> | |
| 189 | - </Link> | |
| 190 | - </Button> | |
| 191 | - <Button size="lg" variant="ghost" asChild> | |
| 192 | - <Link href="/demo">See example results</Link> | |
| 193 | - </Button> | |
| 194 | - </div> | |
| 195 | - </Reveal> | |
| 196 | - </section> | |
| 197 | - | |
| 198 | - <footer className="border-t"> | |
| 199 | - <div className="container flex flex-col items-center justify-between gap-5 py-9 text-sm text-muted-foreground sm:flex-row"> | |
| 200 | - <Link | |
| 201 | - href="/" | |
| 202 | - className="flex items-center gap-2 font-display font-semibold text-foreground" | |
| 203 | - > | |
| 204 | - <span className="flex h-7 w-7 items-center justify-center rounded-lg bg-primary text-primary-foreground"> | |
| 205 | - <GitCompareArrows className="h-4 w-4" /> | |
| 206 | - </span> | |
| 207 | - Roundtable | |
| 208 | - </Link> | |
| 209 | - <nav className="flex items-center gap-6"> | |
| 210 | - <Link href="/debate" className="transition-colors hover:text-foreground"> | |
| 211 | - Ask | |
| 212 | - </Link> | |
| 213 | - <Link href="/demo" className="transition-colors hover:text-foreground"> | |
| 214 | - Examples | |
| 215 | - </Link> | |
| 216 | - </nav> | |
| 217 | - <span className="text-xs">Several opinions. One clear verdict.</span> | |
| 218 | - </div> | |
| 219 | - </footer> | |
| 220 | 21 | </div> |
| 221 | 22 | ); |
| 222 | 23 | } |