physix-live / frontend /src /components /HeroIntro.tsx
Pratyush-01's picture
Upload folder using huggingface_hub
08f8699 verified
interface HeroStep {
index: string;
title: string;
body: string;
accent: string;
}
const STEPS: HeroStep[] = [
{
index: "01",
title: "Observe",
body: "We sample a noisy time series from a known physical system (free fall, pendulum, damped spring, …). The agent never sees the true equation.",
accent: "text-accentBlue",
},
{
index: "02",
title: "Hypothesise",
body: "Each turn the agent proposes an ODE in a small SymPy grammar (e.g. d2y/dt2 = -9.81 + 0.05 * vy**2).",
accent: "text-primary",
},
{
index: "03",
title: "Verify",
body: "We integrate the proposal forward and score it against the observation by per-step R². No LLM-as-judge in the reward loop.",
accent: "text-accentGreen",
},
];
export function HeroIntro(): JSX.Element {
return (
<section
aria-label="How PhysiX-Live works"
className="grid grid-cols-1 gap-3 md:grid-cols-3"
>
{STEPS.map((step) => (
<article
key={step.index}
className="panel flex flex-col gap-2"
>
<div className="flex items-baseline gap-3">
<span className={`font-mono text-sm font-semibold ${step.accent}`}>
{step.index}
</span>
<h3 className="text-base font-semibold text-textPrimary">
{step.title}
</h3>
</div>
<p className="text-sm leading-relaxed text-textMuted">{step.body}</p>
</article>
))}
</section>
);
}