crucıble

Auth

A split-screen sign-in / create-account template: a branded left panel (logo, an oversized value line, checkmarked highlights, and a soft WebGL gradient mesh) beside a centered card that toggles between Sign in and Create account. Labeled email + password fields with a reveal toggle, a genuine validating submit (email format + minimum length, a pending state, and an aria-live error slot), an OAuth / SSO row of generic providers, plus forgot-password and switch-mode links. One signature accent knob; the WebGL surface freezes and every reveal pins its resting pose under reduced motion; the brand panel hides below lg where a compact brand header sits above the full-width card.

oglpro

Installation

CLI

npx shadcn@latest add @crucible/auth

Manual — install dependencies, then copy the source

npm install motion ogl

Props

PropTypeDefaultDescription
brandstring"Northlight"Product / company name, shown in both the brand panel and the card header.
logoReact.ReactNodea monogramInline logo mark (a 1em-scalable SVG using currentColor).
taglinestringThe oversized value line on the brand panel.
kickerstring"Welcome back"Short kicker above the tagline.
highlightsAuthHighlight[]Checkmarked value points listed beneath the tagline.
quote{ text: string; attribution: string }A short attributed quote shown at the foot of the brand panel.
defaultModeAuthMode"signin"Which pane the card opens on.
providersAuthProvider[]OAuth / SSO providers. Pass [] to hide the row entirely.
onSubmit(payload: AuthSubmitPayload) => void | Promise<void>Genuine submit handler. Receives the typed values (after built-in email / password validation passes). May return a promise — the button shows a pending state until it settles, and a thrown error surfaces in the error slot.
onProvider(providerId: string) => voidFires when an OAuth provider button is pressed.
forgotHrefstring"#""Forgot password" link target.
termsHrefstring"#"Terms-of-service link target.
privacyHrefstring"#"Privacy-policy link target.
accentstring"#6366f1"The single signature accent used for the primary button, links, focus rings, and the brand glow.
Also accepts all props of Omit<React.ComponentPropsWithoutRef<"div">, "children" | "onSubmit">they pass through to the underlying element.

Honors prefers-reduced-motion with a designed static fallback, pauses offscreen and on hidden tabs, and passes className through.