Files
pyre/apps/web/src/components/Hero.tsx
RogueWave d159ad5196 feat(web+infra): polished front page, app at /, tracker at /status
- apps/web: redesigned landing (Hero/Scanner/HowItWorks/Features/Footer),
  honest live-vs-coming-soon badges, same-origin /api/scan, ember theme.
- ecosystem.config.cjs: runnable — pyre-api/worker via `node --import tsx`,
  pyre-web via `next start`, fork mode, env wired. pm2 web+api verified online
  (api /health 200, scan 200, web 200).
- infra/nginx/feedthepyre.com.conf: app at / (proxy :3000), API at /api
  (proxy :4000, prefix preserved), dev tracker at /status (static).
- scripts/deploy-web.sh: sudo cutover (install vhost, nginx -t, reload,
  certbot --nginx --keep-until-expiring).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-31 03:24:58 +00:00

39 lines
1.2 KiB
TypeScript

"use client";
import { WalletMultiButton } from "@solana/wallet-adapter-react-ui";
/**
* Landing hero: wordmark, tagline, value prop, trust line, and the primary
* wallet call-to-action. Wording rules apply — this is a scan/preview only.
*/
export function Hero({ connected }: { connected: boolean }) {
return (
<header className="hero">
<div className="hero__glow" aria-hidden="true" />
<p className="hero__eyebrow">Solana wallet cleanup ritual</p>
<h1 className="hero__title">PYRE</h1>
<p className="hero__tagline">
Burn the dead. Feed the PYRE. Claim the Spawn.
</p>
<p className="hero__value">
Clean dead Solana token accounts and reclaim the SOL rent trapped in
them.
</p>
<p className="hero__trust">
PYRE returns your rent. The scraps feed the fire.
</p>
<div className="hero__cta">
<WalletMultiButton />
<a className="hero__secondary" href="#scanner">
{connected ? "Go to scanner" : "See how it works"}
</a>
</div>
<p className="hero__note">
Read-only scan. Nothing is signed you stay in control of your wallet.
</p>
</header>
);
}