tfrere's picture
tfrere HF Staff
chore: rename brand to "Reachy Mini Vibe Coding Apps"
ed2309d
Raw
History Blame Contribute Delete
1.57 kB
import { HfLogo } from "./HfLogo";
import reachyHackerUrl from "../assets/reachy-hacker.png";
interface SignInScreenProps {
onSignIn: () => void;
isSigningIn: boolean;
error: string | null;
hasClientId: boolean;
}
export function SignInScreen({
onSignIn,
isSigningIn,
error,
hasClientId,
}: SignInScreenProps) {
return (
<div className="signin-screen">
<div className="signin-hero" aria-hidden="true">
<img src={reachyHackerUrl} alt="" />
</div>
<h1 className="signin-title">Reachy Mini - Vibe Coding Apps</h1>
<p className="signin-subtitle">
<strong>Vibe-code</strong> browser-based apps for your Reachy Mini.
Describe what you want, preview it <strong>live</strong>, and ship it
as a <strong>Hugging Face Space</strong> in one click.
</p>
<button
type="button"
className="signin-button"
onClick={onSignIn}
disabled={isSigningIn || !hasClientId}
>
<HfLogo size={22} />
<span>
{isSigningIn ? "Redirecting…" : "Sign in with Hugging Face"}
</span>
</button>
{!hasClientId && (
<p className="signin-hint">
No OAuth client ID detected. On a Hugging Face Space this is injected
automatically via the Docker entrypoint. For local dev, create an
OAuth app and set <code>VITE_HF_OAUTH_CLIENT_ID</code> in{" "}
<code>frontend/.env.local</code>.
</p>
)}
{error && <div className="signin-error">{error}</div>}
</div>
);
}