Skip to main content
The hooks in the rest of this section give you the logic and leave the markup to you. If you would rather not build login and password-reset screens by hand, @kerne/react/ui ships them. They read your tenant’s auth settings at runtime. Turn magic link on in your dashboard and the button appears — no code change, no release.
Everything lives under the /ui subpath so an app that only uses hooks does not ship the screens.

One component for the whole sign-in journey

<AuthFlow> covers sign-in, sign-up, forgot/reset password, magic-link landings, email verification and account activation. Moving between them is internal, so you do not wire any navigation:
It picks the right step on its own. A user arriving from an emailed reset link lands on the password form; everyone else lands on sign-in.
If you route each step yourself, pass step and onStepChange to drive it from your router — or import the individual screens (LoginForm, RegisterForm, ResetPasswordForm…) and mount one per route.

What it renders

The account screen

<UserProfile> is a tabbed account manager — profile, security, billing:
Drop tabs you do not need. A free product has no billing to show:
See Account screens for the individual blocks.

Selling a plan

<PricingTable> is a different job from the account screen above - not “manage your subscription,” but the page that sells one, built from your live catalog:
See <PricingTable> for composing your own layout instead of the grid shortcut.

Everything exported

Sign-in journey — AuthFlow, LoginForm, RegisterForm, MagicLinkCallback, ForgotPasswordForm, ResetPasswordForm, VerifyEmailForm, ActivateAccountForm Account — UserProfile, ProfileSection, SecuritySection, BillingSection, ChangePasswordForm Billing — SubscriptionCard, UsageMeters, CheckoutResult, UpgradePrompt, PricingTable Elsewhere — WaitlistForm, UserButton, SignOutButton

Next

Account screens

The profile, billing and usage blocks.

Pricing page

Plan cards, the label toggle, and composing your own layout.

Styling & language

Match your brand, and translate the copy.