spb/autoscholar
Public
1import Link from "next/link";2import type { ReactNode } from "react";34export function EmptyState({ title, children }: { title: string; children?: ReactNode }) {5 return (6 <div className="surface-muted px-6 py-12 text-center">7 <p className="title-3">{title}</p>8 {children && <div className="muted mt-2 text-sm">{children}</div>}9 </div>10 );11}1213/** EmptyResearchState — the library before the first paper passes every gate. Honest, no placeholders. */14export function EmptyResearchState({15 title = "No working papers have been released yet.",16 showPipeline = true,17}: {18 title?: string;19 showPipeline?: boolean;20}) {21 return (22 <div className="surface-muted paper-ruled relative overflow-hidden px-6 py-14 text-center sm:py-20">23 <div className="mx-auto max-w-md">24 <div25 aria-hidden="true"26 className="mx-auto mb-5 grid h-12 w-12 place-items-center rounded-full border text-lg"27 style={{28 borderColor: "var(--line-strong)",29 background: "var(--bg-elev)",30 fontFamily: "var(--font-serif)",31 }}32 >33 ∅34 </div>35 <p className="title-2">{title}</p>36 <p className="muted mt-3 text-sm leading-relaxed">37 A paper appears here only after a run has executed its research, passed an automated critical review38 and cleared every deterministic quality gate. Nothing is seeded, mocked or back-dated.39 </p>40 {showPipeline && (41 <Link href="/methodology" className="btn mt-6">42 How papers are produced43 </Link>44 )}45 </div>46 </div>47 );48}49