mirror of
https://github.com/pbakaus/impeccable.git
synced 2026-09-19 01:26:29 +03:00
Squash of the ten commits reviewed on PR #626, plus the last review round's connection-aware roll call, before the rebase onto the Rust engine: the generate command reference and router row, the overlay's agent-target handling (roll call, leases, replay, rescue), the Node-era live-server routes and live-generate CLI, the hook stand-down, the pricing cards e2e fixture, and the unit, contract, e2e, and skill-behavior tests. The server, CLI, hook, and pin halves are ported to the engine crates in the commits that follow. AI-assisted: implemented and tested with Claude Code under maintainer direction. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
31 lines
1.1 KiB
React
31 lines
1.1 KiB
React
const TIERS = [
|
|
{ id: 'starter', name: 'Starter', price: '$19/mo', blurb: 'For a single project and one seat.' },
|
|
{ id: 'studio', name: 'Studio', price: '$49/mo', blurb: 'For small teams shipping every week.' },
|
|
{ id: 'atelier', name: 'Atelier', price: '$120/mo', blurb: 'For agencies running many brands.' },
|
|
];
|
|
|
|
export default function App() {
|
|
return (
|
|
<main className="page">
|
|
<section className="hero">
|
|
<h1 className="hero-heading">A tall hero keeps the pricing far below the fold.</h1>
|
|
<p className="hero-hook">
|
|
The agent-target scenario must scroll the pricing section into view on its own.
|
|
</p>
|
|
</section>
|
|
<section className="pricing" id="pricing">
|
|
<h2 className="pricing-title">Simple pricing</h2>
|
|
<div className="pricing-grid">
|
|
{TIERS.map((tier) => (
|
|
<article key={tier.id} className="pricing-card">
|
|
<h3>{tier.name}</h3>
|
|
<p className="tier-price">{tier.price}</p>
|
|
<p>{tier.blurb}</p>
|
|
</article>
|
|
))}
|
|
</div>
|
|
</section>
|
|
</main>
|
|
);
|
|
}
|